Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1184 connectés 

  FORUM HardWare.fr
  Hardware
  Carte mère

  Que fait le CPU en l'attente d'un read en RAM ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Que fait le CPU en l'attente d'un read en RAM ?

n°5118241
GSX-R
Posté le 20-10-2006 à 23:30:28  profilanswer
 

Bonsoir,
 
Que fait le CPU si une lecture en RAM prend plus que le temps d'un cycle d'horloge (la majorité des cas si hors cache L1 ou L2) en assembleur, il fait un nop ?
Sous la coupe d'un OS, il fait une interruption ?
 
Cdlt
GS

mood
Publicité
Posté le 20-10-2006 à 23:30:28  profilanswer
 

n°5118264
mrbebert
Posté le 20-10-2006 à 23:47:20  profilanswer
 

Généralement, oui, il attend [:proy]  
Avec le "out of order", il va peut être exécuter d'autres instructions (indépendantes de l'instruction en attente), mais le délai de réponse de la RAM étant relativement long, je pense qu'il va très vite être bloqué.
Avec l'hyper-threading, par contre, l'autre thread peut en profiter pleinement :)
 
Par contre, ca ne dépend pas de l'OS. Il n'y a pas de code assembleur NOP qui est envoyé au proc. C'est lui qui gère en interne.


Message édité par mrbebert le 20-10-2006 à 23:48:53
n°5118435
GSX-R
Posté le 21-10-2006 à 08:48:38  profilanswer
 

Avec un OS adapté moderne, je pense que même sans hyperthreading, ou sans processeur superscalaire, le cpu peut très bien envoyer une interruption (comme toutes les E/S asynchrones qui sont bloquantes) et provoquer un changement de thread, voir de contexte processus. L'accès à la RAM est forcemment asynchrone. Ca impliquerait un switch de thread à chaque accès en RAM (à l'exclusion des fameux caches biensûr) et ce sur au moins plusieurs threads. On parle d'un accès mémoire en RAM bien souvent 40 fois plus lent que l'accès au registre.
 
Apparemment l'essentiel serait donc dans le concept "out-of-order" dont tu parles. Je viens de survoler http://en.wikipedia.org/wiki/Out-of-order_execution. C'est vrai que brut de fonderie, c'est pas évident à imginer dans la structure d'un programme avec les dépendance plus le pipelining surtout dans la façon que peut se permettre le cpu de réagencer les instructions. Mais, tous les CPU n'en bénéficieraient pas pour économiser notamment de la surface de core. Notamment le Sparc de SUN ou encore l'itanium, rien que ça.
 
Accessoirement : les compteurs de cycles cpu consommés comme le gestionnaire de tâches de windows ou le vmstat de solaris, sait-on si le temps d'accès à la RAM est effectivement compté comme activité CPU ou Idle ou encore wio ?
 
Il me reste du boulot pour comprendre tous ces mécanismes.


Message édité par GSX-R le 21-10-2006 à 09:15:37
n°5119589
mrbebert
Posté le 21-10-2006 à 21:07:00  profilanswer
 

Le problème, c'est qu'un changement de contexte (mettre un autre thread en exécution), c'est couteux aussi. Alors si on change de contexte à chaque accès, je sais pas si on y gagnera vraiment [:figti]  
(surtout si la donnée qu'on attendait n'est plus dans le cache lorsque le thread revient)
 
C'est vrai que tous les procs n'ont pas le out-of-order. C'est très utile pour le x86, à cause de sa complexité. Sur ce point le principe de l'Itanium est très intéressant : l'idée d'Intel était que ce soit le compilateur qui fasse la recherche du meilleur ordonnancement des instructions, en économisant ainsi de la complexité au niveau du processeur :)  
 
Pour les compteurs, c'est du temps que le CPU passe dans le traitement de ce thread. Donc, je pense que c'est considéré comme activité CPU [:proy]  
(idle, c'est quand il n'y a aucun thread en cours d'exécution sur le processeur)

n°5120169
GSX-R
Posté le 22-10-2006 à 10:40:16  profilanswer
 

Il faudrait que je remette la main sur les valeurs de changement de contexte thread/processus.
 
Windows et Linux programmeraient des interruptions vers des changements de contexte uniquement dans le cadre d'I/O autres que l'accès à la RAM ?
 
Concernant l'itanium, j'ai lu quelques trucs mais pourquoi ne s'est-il pas encore "imposé" ?
Comment se fait-il qu'on continue sur PC avec du CISC (uniquement pour la compatibilité du code binaire) ?

n°5120888
mrbebert
Posté le 22-10-2006 à 16:33:28  profilanswer
 

Oui, la compatibilité.
Et puis, ca marche pas si mal que ca, en fait :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Hardware
  Carte mère

  Que fait le CPU en l'attente d'un read en RAM ?

 

Sujets relatifs
conseils pâte thermique CPUQuelle RAM DDR1 PC 4000 est la meilleure OCZ ou Corsair ?
HELP - j'ai besoin d'un avis sur ma RAMBarrette de RAM
Bon plan achat RAM (DDR - 2x1Go Dual - PC4000) du moment, une info ?[RESOLU] Compatibilité RAM ocz et Gb DS4
Compatibilité CPU et carte mère (Prescott)CPU type 939 ou AM2 ?
P5B DLX "CPU FAN ERROR"P2B DLX "CPU FAN ERROR "
Plus de sujets relatifs à : Que fait le CPU en l'attente d'un read en RAM ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR