1 NSI : Cours sur le CPU ( central control unit )
1) Architecture de Von Neumann
C’est l’architecture standard pour les ordinateurs ( desktop ou laptop ou mainframe ).
Le point fondamental est que les données et les programmes sont stockés dans
la même mémoire RAM. Cette mémoire est initialisée lors du démarrage de
l’ordinateur.
Les smartphones on une architecture différente car une partie des programmes sont en
ROM ( [Link]
architecture/).
Nous étudions cette année uniquement l’architecture de Von Neumann.
Sous sa forme la plus simple voici le schéma de cette architecture :
Le dispositif d’entrée sortie est figuré mais non spécifié.
• L’unité arithmétique et logique (ALU) réalise les calculs.
• L’unité de contrôle organise l’exécution des instructions.
• Les instructions sont lues dans l’unité de mémoire ( RAM ).
• Les résultats définitifs ou intermédiaires sont aussi enregistrés et lus dans la
RAM.
2)L’unité de contrôle central ( CPU )
C’est le « cerveau » de l’ordinateur. Il est composé des éléments suivants :
• L’unité arithmétique et logique ( ALU ) qui effectue les calculs binaires.
• Des registres plus ou moins spécialisés qui contiennent les données en cours de
traitement.
• L’unité de contrôle qui organise le déroulement du programmes.
• Une mémoire cache que nous n’étudierons pas dans ce cours.
a) L’ unité arithmétique et logique ( ALU )
Cette unité effectue des calculs. Elle ne gère pas l’exécution d’un programme.
Voici un exemple simplifié.
• Cette ALU est connectée en entrée à deux bus notés a et b .
• Elle est connectée en sortie à un bus noté c .
• Ce bus de sortie est connecté à un registre spécialisé généralement appelé
accumulateur ( ACC , non figuré sur le schéma.
• La taille de ces bus de données et donc des opérations effectuées dépend du
processeur : 8, 16, 32 ou 64 bits.
• Le résultat écrit sur le bus de sortie est contrôlée par un code d’opération ‘op’
qui est porté par un bus de contrôle.
• Dans l’exemple suivant il y a 7 opérations il faut donc 3 bits ( dont 1 inutile )
pour le code opération.
• Le code opération passe ici dans un décodeur 3x8 qui active en sortie le résultat
de l’opération correspondante. Par exemple le code 000 active l’additionneur .
• Notons que toutes les opérations sont effectuées en même temps, le code
opération active seulement la sortie souhaitée.
• En plus du résultat écrit sur l’accumulateur chaque opération met à jours des
bits appelés drapeaux ( flags ) qui indiquent
◦ la présence d’une retenue lors d’un calcul sélectionné par op (carry out ).
◦ Un résultat nul sur le bus de sortie (zero ) .
◦ L’égalité des bus d’entrée a et b (equal ).
◦ 1 si a est supérieur (ou égal?) à b ( ‘a’ larger ) .
• Liste des opérations calculées par cette ALU :
◦ Addition de a et b .
◦ Shift right (SHR ) sur a .
◦ Shift left (SHL ) sur a .
◦ NOT sur a .
◦ AND sur a et b .
◦ OR sur a et b .
◦ XOR sur a et b avec en plus comparaison de a et b .
b) Les registres
Ce sont des registres tels que décrits au paragraphe 2.d) mais ils sont câblés
directement dans le CPU à la différence de la RAM.
Ils servent à stocker temporairement les données sur lesquelles le programme calcule.
Ces données proviennent de la RAM ou bien d’un autre registre.
L’intérêt des registre est que leur accès est beaucoup plus rapide qu’avec la RAM.
Par conséquent les programmes doivent être écrits pour minimiser les
échanges entre les registres et la RAM.
Registres spécialisés :
• L’accumulateur ACC qui reçoit le résultat du calcul de l’ALU contrôlé par le
code opération.
• Le registre d’instruction (IR ou CIR ) qui contient le code de l’instruction en
cours d’exécution. Ce registre est très spécial ( voir unité de contrôle ).
• Le compteur programme ( PC ) ou registre d’adresse instruction ( IAR ) contient
l’adresse dans la RAM de la prochaine instruction à exécuter.
Registres généralistes : Il sont numéroté, dans l’exemple suivant de R0 à R4 .
c) L’unité de contrôle
C’est l’unité la plus complexe et nous n’entrerons pas dans les détails du
fonctionnement interne.
L’unité de contrôle a pour fonction d’exécuter le programme chargé en RAM.
Cette unité réalise une boucle infinie fetch, decode, execute ( traduit par « extraire,
décoder, exécuter » ).
• Fetch :
Le registre d’adresse mémoire MAR de la RAM est chargé avec l’adresse de la
prochaine instruction à exécuter, contenue dans un registre spécialisé PC (programm
counter ) ou IAR (instruction address register ) .
La valeur dans la RAM à l’adresse contenue dans le MAR est le code machine de la
prochaine instruction à exécuter. Cette valeur est recopiée dans un registre très
spécialisé appelé instruction register ( IR ) .
Enfin la valeur du PC (ou IAR ) est incrémentée pour repérer l’instruction suivante.
• Decode :
La valeur contenue dans IR est interprétée comme une instruction en langage machine.
Une partie du mot binaire (8, 16, 32 ou 64 bits ) est interprétée comme un code
d’opération, l’autre partie comme un ou des opérandes ( par exemple numéro d’un
registre ).
• Execute :
Un mécanisme utilisant un signal d’horloge décompose l’instruction en actions
élémentaires .
La valeur du PC (ou IAR ) peut être changée durant l’exécution.
• La boucle recommence avec la nouvelle valeur du PC (ou IAR ).
• Elle s’arrête seulement avec une instruction particulière (par exemple HALT ).
Schéma simplifié :
Nous n’irons pas plus loin dans l’étude de la section de contrôle.