Architecture et technologie des ordinateurs II Résumé Séquenceur CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse BUS SYSTÈME Registres Unité de Traitement Unité Flottante Contrôle Décodeur PC ALU CPU MÉMOIRE PRINCIPALE IO Cache Données Instructions G. Tempesti 1
Architecture et technologie des ordinateurs II Résumé Séquenceur CK Opcode Opérandes n BASCULES Fanions RAM Contrôle SLC Opérandes Instruction Adresse Adresse PC +1 CK + Offset Opcode SLC Condition Fanions G. Tempesti 2
Architecture et technologie des ordinateurs II Résumé PC+ adresse initiale Mémoire Séquenceur CK Opcode Opérandes IR Fanions RAM Contrôle SLC Opérandes MDR MAR PC MAR PC+ MDR M[MAR] IR+ MDR CK décodification de IR OUI contrôle? NON OUI saut? NON NON adresse? OUI chargement exécution PC+PC+ offset PC+PC+1 G. Tempesti 3
Architecture et technologie des ordinateurs II Complication #1 Comment peut fonctionner un processeur 8 ou 16 bits quand les instructions doivent coder tellement d'informations? ou Comment réaliser des instructions qui nécessitent plus d'opérandes que ne peut coder un seul mot mémoire? ou Comment exécuter des instructions qui nécessitent plusieurs coups d'horloge? Une solution possible: la microprogrammation. G. Tempesti 4
Décodage - Processeurs câblés Architecture et technologie des ordinateurs II Décodage - Processeurs câblés Mémoire Séquenceur CK Opcode Opérandes IR Fanions RAM Contrôle SLC Opérandes MDR MAR PC OPCODE O S W = E E E ADRESSE N L ALC SHC RRA RRB N WRA ...000 0 0 ØØØ ØØØ ØØØ ØØØ 0 ØØØ ...001 0 1 101 1ØØ ØØØ 000 1 001 ...011 0 0 111 1ØØ 000 ØØØ 1 010 ...010 0 0 101 1ØØ 000 000 1 011 ...100 0 0 001 1ØØ 001 010 1 100 ...101 0 0 101 1ØØ 011 100 1 011 ...111 1 0 101 1ØØ 011 000 0 ØØØ ...110 0 0 101 010 001 000 1 001 ...... ......................... RAM 2NxC G. Tempesti 5
Décodage - Microprogrammation Architecture et technologie des ordinateurs II Décodage - Microprogrammation Mémoire MDR MAR OPCODE ...000 Microinstruction 1 Microinstruction 2 ... Microinstruction N ...001 Microinstruction 1 ...011 Microinstruction 1 ...010 Microinstruction 1 ...... ......................... CK PC Séquenceur Microprogrammes Opcode Opérandes IR Opérandes Contrôle CK Fanions G. Tempesti 6
Décodage - Microprogrammation Architecture et technologie des ordinateurs II Décodage - Microprogrammation Mémoire MDR MAR OPCODE ...000 ...001 ...011 ......................... ...010 ......................... ...... ......................... CK PC Séquenceur S0 S1 S2 Sn Microprogrammes S0 S1 S2 S3 Sn Opcode Opérandes IR Opérandes Contrôle CK Fanions G. Tempesti 7
Architecture et technologie des ordinateurs II Exemple - Motorola 68000 Architecture 16 bits (extensions 32 bits) 12 modes d'adressage 16 fanions 8 registres de 16 (32) bits de large Exemple 1: addition (en BCD) des contenus de deux adresses stockées dans deux registres, avec pré-décrément des adresses abcd -(A1),-(A2) Exemple 2: soustraction d'un nombre immédiat (16 bits) au contenu d'une position mémoire (adresse 16 bits) subi.0 #0f0fH,2d52H Mémoire MDR MAR CK PC Séquenceur Microprogrammes Opcode Opérandes IR Opérandes Contrôle CK Fanions G. Tempesti 8
Exemple 1 - Codage de l'instruction Architecture et technologie des ordinateurs II Exemple 1 - Codage de l'instruction abcd -(A1),-(A2) Mémoire MDR MAR 1 mot de 16 bits est suffisant pour coder cette instruction: CK PC Séquenceur #1: 1100 010100 001001 Destination Source Microprogrammes Opcode Opérandes IR Opérandes Il faut remarquer que le contenu de la destination est écrasé par le résultat. On peut supposer que le processeur contient une seule ALU. Contrôle CK Fanions G. Tempesti 9
Exemple 1 - Décodage de l'instruction Architecture et technologie des ordinateurs II Exemple 1 - Décodage de l'instruction Mémoire abcd -(A1),-(A2) MDR MAR CK S0 S1 S2 PC Séquenceur A1A1-1 Microprogrammes A2A2-1 1100010100001001 IR Opérandes M[A1]M[A2]+M[A1] PC+PC+1 IR+M[PC+] Contrôle CK Fanions G. Tempesti 10
Exemple 2 - Codage de l'instruction Architecture et technologie des ordinateurs II Exemple 2 - Codage de l'instruction subi.0 #0f0fH,2d52H Mémoire MDR MAR 3 mots de 16 bits sont nécessaires pour coder cette instruction: CK PC Séquenceur #1: 0000 010001 111000 Taille des données Mode d'adressage Microprogrammes Opcode Opérandes IR Opérandes #2: 0000111100001111 Immédiat Contrôle #3: 0010110101010010 CK Fanions Adresse G. Tempesti 11
Exemple 2 - Décodage de l'instruction Architecture et technologie des ordinateurs II Exemple 2 - Décodage de l'instruction Mémoire subi.0 #0f0fH,2d52H MDR MAR CK S0 S1 S2 PC Séquenceur PC+PC+1 IR+M[PC+] A1IR PC+PC+1 IR+M[PC+] Microprogrammes 0000010001111000 IR Opérandes M[IR]M[IR]-A1 PC+PC+1 IR+M[PC+] Contrôle CK Fanions G. Tempesti 12
Architecture et technologie des ordinateurs II Complication #2 Existe-t-il des architectures alternatives pour l'unité de traitement permettant de réduire la complexité des instructions? La réponse est (évidemment) oui. Malheureusement, une telle réduction implique une perte de performance: si les instructions sont plus simples, il faut plus d'instructions pour une tâche donnée. On échange une complexité matérielle contre une complexité logicielle. G. Tempesti 13
Architecture "standard" - Structure Architecture et technologie des ordinateurs II Architecture "standard" - Structure OUTPORT INPORT OEN SEL 1 0 I0 I1 AL2 AL1 AL0 Z Z≠0 SH2 SH1 SH0 SHIFTER 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN 3 WA G. Tempesti 14
Architectures "standards" - Exemple Architecture et technologie des ordinateurs II Architectures "standards" - Exemple Langage de haut niveau: P := (Q*R + S*T)*(U + V) Compilation pour une architecture "standard": MULT Q,R : R Q*R MULT S,T : T S*T ADD T,R : R Q*R + S*T ADD U,V : V U + V MULT R,V : V (Q*R + S*T)*(U + V) MOVE V,P : P (Q*R + S*T)*(U + V) G. Tempesti 15
I - Architectures load/store Architecture et technologie des ordinateurs II I - Architectures load/store Une première possibilité a déjà été mentionnée. Il s'agit de limiter toute référence à la mémoire principale aux seules instructions de transfert de données (move, load, store). Par exemple, l'instruction: abcd -(As),-(Ad) peut être transformée en: dec As dec Ad move (As),Ax move (Ad),Ay abcd Ax,Ay move Ay,(Ad) Ce type d'architecture est appelé load/store (chargement-rangement). G. Tempesti 16
Architectures load/store - Structure Architecture et technologie des ordinateurs II Architectures load/store - Structure INPORT OUTPORT OEN I0 I1 AL2 AL1 AL0 Z Z≠0 SH2 SH1 SH0 SHIFTER SEL 1 0 3 RA 3 R0 R1 R2 R3 R4 R5 R6 R7 RB WEN 3 WA G. Tempesti 17
Architectures load/store - Exemple Architecture et technologie des ordinateurs II Architectures load/store - Exemple Langage de haut niveau: P := (Q*R + S*T)*(U + V) Compilation pour une architecture load/store: LOAD R1, Q LOAD R2, R MULT R1,R2 : R2 Q*R LOAD R1, S LOAD R3, T MULT R1,R3 : R3 S*T ADD R2,R3 : R3 Q*R + S*T LOAD R1, U LOAD R2, V ADD R1,R2 : R2 U+V MULT R2,R3 : R3 (Q*R + S*T)*(U+V) STORE R3,P : P (Q*R + S*T)*(U+V) G. Tempesti 18
II - Processeurs à accumulateur Architecture et technologie des ordinateurs II II - Processeurs à accumulateur Dans ce type d'architecture les résultats de toutes les opérations sont stockés dans un registre particulier (l'accumulateur) et toutes les variable sont stockées dans la mémoire principale. Par exemple, l'opération x y + z est réalisée par: load y : ACC y add z : ACC ACC + z store x : x ACC Chaque instruction doit donc contenir deux champs: l'opcode et l'adresse de l'opérande (l'accumulateur est toujours un opérande par défaut). Exemples: DEC PDP-8, Intel 8080, Motorola 6800. G. Tempesti 19
Processeurs à accumulateur - Structure Architecture et technologie des ordinateurs II Processeurs à accumulateur - Structure OUTPORT INPORT OEN I0 I1 AL2 AL1 AL0 Z Z≠0 SH2 SH1 SH0 SHIFTER SEL 0 1 Accumulateur G. Tempesti 20
Processeurs à accumulateur - Exemple Architecture et technologie des ordinateurs II Processeurs à accumulateur - Exemple Langage de haut niveau: P := (Q*R + S*T)*(U + V) Compilation pour une architecture à accumulateur: LOAD Q : ACC Q MULT R : ACC Q*R STORE P : P Q*R LOAD S : ACC S MULT T : ACC S*T ADD P : ACC Q*R + S*T STORE P : P Q*R + S*T LOAD U : ACC U ADD V : ACC U+V MULT P : ACC (Q*R + S*T)*(U+V) STORE P : P (Q*R + S*T)*(U+V) G. Tempesti 21
III - Processeurs à pile (stack) Architecture et technologie des ordinateurs II III - Processeurs à pile (stack) Dans ce type d'architecture les opérandes se trouvent toujours au sommet d'une pile (stack), typiquement dans la mémoire, et le résultat est ensuite toujours stocké au sommet de la pile. En conséquence, une instruction typique ne contient pas d'adresse d'opérande. Un registre dédié, le stack pointer (SP), pointe toujours le sommet de la pile. Par exemple, l'opération x y + z est réalisée par: push y : SP+ SP+1; M[SP+] y push z : SP+ SP+1; M[SP+] z add : SP+ SP-1; M[SP+] M[SP+] + M[SP] pop x : SP+ SP-1; x M[SP] Exemples: Burroughs B5000, HP 300. G. Tempesti 22
Processeurs à pile - Structure Architecture et technologie des ordinateurs II Processeurs à pile - Structure Adresse M[SP+] OUTPORT M[SP] INPORT PUSH POP +1 -1 I0 I1 AL2 AL1 AL0 0 1 Z Z≠0 + SH2 SH1 SH0 SHIFTER SP+ Stack Pointer SEL 0 1 SP G. Tempesti 23
Processeurs à pile - Exemple Architecture et technologie des ordinateurs II Processeurs à pile - Exemple Langage de haut niveau: P := (Q*R + S*T)*(U + V) Compilation pour une architecture à pile: PUSH Q : SP+ SP+1; M[SP+] Q PUSH R : SP+ SP+1; M[SP+] R MULT : SP+ SP-1; M[SP+] Q*R PUSH S : SP+ SP+1; M[SP+] S PUSH T : SP+ SP+1; M[SP+] T MULT : SP+ SP-1; M[SP+] S*T ADD : SP+ SP-1; M[SP+] Q*R + S*T PUSH U : SP+ SP+1; M[SP+] U PUSH V : SP+ SP+1; M[SP+] V ADD : SP+ SP-1; M[SP+] U+V MULT : SP+ SP-1; M[SP+] (Q*R + S*T)*(U+V) POP P : SP+ SP-1; P (Q*R + S*T)*(U+V) G. Tempesti 24