vesrsion *

publicité
CHAPITRE 2:
Architectures conventionnelles
Processeurs RISC,CISC
M₫moires
Les march₫s des processeurs:
Actuellement il y a 3 types de march₫:
–
Le march₫ des processeurs g₫n₫raux est celui de la manipulation de donn₫es
comme le traitement de texte et la gestion des bases de donn₫es repr₫sent₫ par le
d₫placement A -> B et la condition Si A=B Alors...
–
Le march₫ du calcul au sens arithm₫tique du terme, utilis₫ en science, en ingeni₫rie
et en traitement du signal.
La conception et la fabrication:
La conception d'un processeur est un travail consid₫rable, le Pentium a ₫t₫ con₫u
par 300 ing₫nieurs, le PentiumPro par 500.
/
Le point mort, au delà duquel apparaissent les premiers b₫n₫fices, est ₫loign₫ : 3
à 4 millions d'unit₫s.
/
La premi₫re conception n'est pas tout. Un travail permanent est n₫cessaire pour
diminuer le taux de rebuts et augmenter la fr₫quence de fonctionnement.
/
La valeur du produit d₫croît tr₫s vite, le prix de vente est divis₫ par 10 en 2 à 3
ans.
/
Un processeur n'est pas tout, des composants nouveaux doivent l'accompagner sur
la carte.
/
Le concepteur n'est pas libre. Il doit conserver des compatibilit₫s. Le lancement
d'un nouveau jeu d'instructions semble si peu r₫aliste que les jeux anciens perdurent
pendant des dizaines d'ann₫es.
/
Un processeur actuel a des constituants :
·
·
·
·
·
le d?codeur d'instructions,
le s?quenceur,
l'unit? arithm?tique et logique,
les registres g?n?raux et particuliers,
l'horloge.
Mais il a aussi une structure (ou architecture) d?crite par les moyens de
fonctionnement :
·
les mod?les de m?moire, externe, virtuelle, interne, caches,
·
les processus de traitement, ordonnancement des instructions,
·
le jeu d'instructions qui est la partie visible par le programmeur.
Mod?le d'acc?s aux donn?es (1):
Les processeurs ont ?volu? sous la forme de familles plus ou moins ?toff?es plutôt que de
g?n?rations:
La premi?re famille avait un accumulateur unique (ann?es 1940)
Les suivants ont ?t? des variantes à un accumulateur et un ou des registres d'index (ann?es
1950).
Une s?paration a eu lieu dans les ann?es 1960 qui a produit :
La famille peu nombreuse des machines à piles (certaines limit?es à un seul langage
ALGOL). Le nom de machine-langage est donn? à des machines dont le seul langage
disponible est de niveau ?lev?.Disparition depuis le milieu des ann?es 1980.
Rem:Toute machine a un langage d'assemblage, cette cat?gorie n'est pas nomm?e.
/
/
La famille nombreuse des machines à plusieurs registres. Elles apparaissent avec les
circuits int?gr?s et la microprogrammation. Le plus bel exemple est la s?rie IBM 360
dont le jeu d'instructions a perdur? jusqu'à ce jour sans beaucoup de changements. Les
jeux d'instructions ont augment? en volume jusqu'à m?riter le nom CISC.
Mod?le d'acc?s aux donn?es (2):
/
Une famille peu repr?sent?e jusqu'aux ann?es 1980, celle des machines dites
lit-?crit (load-store) à grand nombre de registres. Le premier grand repr?sentant
est le CDC 6600. Ses repr?sentants actuels sont les machines RISC.
/
La famille peu nombreuse des machines microprogrammables : IMP de
National Semiconductors (1974), microprocesseurs en tranches AMD 2900,
bien d'autres encore.
Quant à l'architecture de Harvard ou de Aiken, propos?e par lui en 1947, s?pare
m?moire de programme et m?moire de donn?es en leur donnant des capacit?s d'acc?s
simultan?s. Non usit?e avant les ann?es 90 notament par le coût des m?moires.
Les grands courants actuels : CISC, RISC et VLIW.
Il existe aujourd'hui trois types de processeurs dont deux principaux nomm?s :
CISC pour "Complex Instruction Set Computer", RISC pour "Reduce Instruction Set
Computer", VLIW pour "Very long instruction word" (Crusoë de Transmeta)
La mesure de capacit? d'une unit? centrale peut, entre autres, ?tre caract?ris?e par trois facteurs
multiplicatifs :
. le nombre d'instructions à ex?cuter pour une m?me tâche, NI
. le nombre de cycles d'horloge par instruction, NH
. la dur?e du cycle d'horloge. DH
La plus grande rapidit? sera obtenue pour le produit NI x NH x DH minimal.
· DH est fix? par la technique,
· on peut diminuer NI en faisant ex?cuter des actions plus complexes par chaque
instruction, en contre partie, NH augmente, on tend vers le CISC.
· on peut diminuer NI en faisant ex?cuter plusieurs actions simultan?ment par
chaque instruction, NH augmente peu, on tend vers le VLIW.
· on peut diminuer NH en construisant des instructions ex?cutables en un seul cycle
d'horloge, elles apportent en plus une simplification du d?codeur et du
Diff?rences entre CISC et RISC (1):
Caract?res
CISC
Taille des instructions
RISC
tr?s diff?rentes
Dur?es d'ex?cution des instructions
Nombre de formats
tr?s diff?rentes
acc?s à la m?moire
grand
Modification implicite des codes de
condition par les instructions
Utilisation de la microprogrammation
Alignement des instructions et
multiples
des donn?es
Nombre de registres
m?me taille
petit
oui
non
presque toujours presque jamais
non, mises bout
à bout
les m?mes, sauf les
oui, sur des adresses
de leur longueur
petit, au plus 16
de 100
beaucoup, couramment plus
Diff?rences entre CISC et RISC (2):
Le NI d'un RISC est couramment 1,3 fois plus grand que celui d'un CISC.
Le format fixe des instructions d'un RISC induit un d?codage simple r?alisable par un
s?quenceur câbl? et non plus microprogramm?. Le s?quencement occupe 10 à 20% de la puce
au lieu de 50 à 60%.
Les seules instructions d'acc?s à la m?moire sont les LOAD et STORE directs ou par
indirection sur registres qui sont alors n?cessaires en grand nombre. En plus la notion de
fen?tre de registres, lin?aire ou circulaire, est utilis?e pour limiter le nombre d'acc?s à la
m?moire lors des passages de param?tres aux proc?dures.
L'?volution des CISC a ?t? lente.
Les premiers processeurs, constitu?s de lampes ?taient fabriqu?s avec un souci permanent
d'?conomie de composants qui a continu? à s'imposer pendant tout le temps des transistors
isol?s. Le nombre d'instructions ?tait faible, 44 dans l'IBM650 de 1953 et jamais plus de 80.
La situation a chang? à l'arriv?e les circuits int?gr?s.
"
"
La microprogrammation pouvait ?tre install?e puisqu'on disposait de deux jeux de
m?moires : les tores magn?tiques pour la m?moire centrale, relativement lents, les
composants ?lectroniques chers mais beaucoup plus rapides pour contenir des
microinstructions.
Le nombre de soudures a consid?rablement diminu?.
A partir des ann?es 1960, il ?tait possible d'augmenter le nombre d'instructions en termes
de codes d'op?rations. L'objectif ?tait de r?duire l'?cart entre le langage machine et les
langages dits ?volu?s. On estimait alors que le code ex?cutable devait ?tre le plus court
possible et le compilateur le plus simple possible
Le processeur CISC masque son architecture interne.
Il prend en charge une partie de la complexit? des programmes
L'origine du RISC tient à des id?es nouvelles et à des id?es anciennes qui sont revenues.
Une id?e revenue est l'instruction simple "lit-?crit" apparue dans le CDC6600 en 1965.
D?s 1976, on savait que le processeur utilise 20% de ses instructions pour 80% des besoins
(r?gle dite des 80-20 valable dans bien d'autres domaines). Ces instructions sont donc
responsables de la plus grande partie du temps de traitement.
Le processeur ?tait d?jà plus rapide que la m?moire. Il ?tait pr?f?rable d'avoir des
instructions complexes ?conomes de m?moire m?me si elles prenaient du temps pour ?tre
d?cod?es.
La premi?re r?alisation de machine RISC commence chez IBM en 1975 sous le num?ro
801. Dans ses objectifs figuraient l'acc?l?ration de l'ex?cution des instructions les plus
fr?quemment utilis?es. Il contenait 32 registres de 32 bits, sans virgule flottante et sans mode
superviseur s?par? et deux caches de Harvard.
Vers 1981, l'universit? de Berkeley lance les projets RISC I, puis RISC II. Les SPARC et
UltraSparc en sont issus. A Stanford, le projet MIPS est lanc?. Son premier descendant a ?t? le
MIPS R2000.
Un processeur est consid?r? comme de type RISC si :
1) il a un petit nombre d'instructions,
2) il fonctionne en lit-?crit,
3) les instructions ont toutes la m?me longueur,
4) le d?codage est câbl?,
5) le nombre de registres est grand,
6) les branchements sont retard?s,
7) le rythme de production est une instruction par cycle.
Le processeur RISC laisse visible son architecture interne.
Le programme prend en charge toute la complexit? des algorithmes.
Le VLIW est r?cent (1).
Cette technique naît avec les unit?s fonctionnelles multiples, par exemple deux unit?s enti?res, une
unit? flottante, un d?caleur, deux organes de lecture et un d'?criture. Puisque ces op?rations peuvent ?tre
ex?cut?es en m?me temps, autant grouper plusieurs instructions en un seul mot qui devient tr?s long,
d'où le nom de la technique. L'instruction longue commande plusieurs op?rations dans un m?me cycle.
Elle est charg?e à partir d'un cache d'instructions pour ?viter d'avoir un bus de m?moire exag?r?ment
large. Chaque unit? fonctionnelle est aliment?e en instructions par un pipeline particulier qui suit une
unit? de d?groupage et d?codage des champs de l'instruction tr?s longue.
Le premier VLIW a ?t? l'Advanced Flexible Processor de Control Data à mot d'instructions de 210 bits
en 1982.
Le VLIW est r?cent (2):
Ce fonctionnement exige que les instructions regroup?es en un mot long soient ind?pendantes
l'une de l'autre, c'est à dire qu'aucune n'utilise le r?sultat d'une autre, en d'autres termes, qu'il n'y ait
pas d?pendance des donn?es.
Les conflits sont pr?vus et r?gl?s par le compilateur.
Des processeurs tr?s r?cents nomm?s CRUSOE sont propos?s en plusieurs versions par la soci?t?
Transmeta. Ils sont constitu?s d'un micro noyau de type RISC, enrob? par un noyau de type VLIW.
Le fabricant annonce une diminution de la place affect?e à des caches et une diminution de la
dissipation.
Classification des diff?rents processeurs par les op?randes
La distinction entre CISC et RISC a un succ?s m?rit? mais elle n'est pas la seule pertinente.
Toujours en consid?rant le seul jeu de codes d'op?rations, on peut utiliser l'origine des op?randes
pour distinguer les processeurs.
Registre à registre, les deux ou trois op?randes sont dans des registres: SPARC, MIPS, HP-PA,
PowerPC, Alpha. Le processeur est simple, l'ex?cution rapide, le programme contient un grand nombre
d'instructions load/store. C'est la situation des RISC.
Registre à m?moire,un des op?randes est en m?moire : Motorola 68000, PDP-10, IBM 360. Le
programme contient moins d'instructions load/store, le code est plus compact. C'est d?jà du CISC.
M?moire à m?moire, les deux op?randes sont en m?moire : PDP-11, NS32x32, IBM 360(SS set).
Le code du programme est tr?s compact, le processeur est complexe. C'est toujours du CISC.
ARCHITECTURE INDUITE PAR LE JEU D'INSTRUCTIONS (1)
La pr?sentation des architectures à travers le jeu d'instructions (ISA ou instruction set architecture)
est la plus fr?quente dans les ouvrages et dans les enseignements. Le jeu d'instructions d?finit une
machine.
Pr?senter l'architecture d'un syst?me informatique mat?riel par le jeu d'instructions, c'est pr?senter
une machine ?mul?e sur celle que l'on voudrait connaître. Le premier grand exemple de machines
pr?sent?es via leur jeu d'instructions a ?t? la s?rie IBM 360. Ses r?alisations, du 360/20 au 360/91,
avaient toutes le m?me jeu d'instructions. Il existait donc UNE architecture 360. Les mod?les ?taient
diff?rents par la quantit? de câblage et par une quantit? sensiblement inverse de microprogrammation.
On a aujourd'hui deux grands exemples de telles architectures :
L'Intel x86. Sa mise en œuvre est tr?s diff?rente selon les fabricants Cyrix, AMD et Intel et chez
chacun d'eux selon le produit.
Le SPARC V8, d?fini par Sun Microsystems. Il a plusieurs autres r?alisations comme les
Cypress CY7C601 et Fujitsu MB86900/1A.
ARCHITECTURE INDUITE PAR LE JEU D'INSTRUCTIONS (2)
L'int?r?t majeur de cette fa?on de proc?der est de travailler sur un jeu d'instructions dont la dur?e
de vie est beaucoup plus grande que celle de telle ou telle r?alisation. Le jeu x86 date de 1979 avec des
ajouts. Le jeu IBM360 date de 1964.
L'inconv?nient pour nous est que l'on ne voit alors que le fonctionnement logiciel. Les composants
architecturaux, certains tr?s importants, ne sont plus visibles. Par exemple, le jeu x86 a ?t? r?alis? sans
puis avec un pipeline, sans puis avec un ou des caches, sans puis avec une pagination, etc.
Si l'on veut n?anmoins consid?rer le jeu d'instructions, on doit examiner ses cinq dimensions principales
le nombre d'op?randes explicites : 0, 1, 2, 3.
les modes d'acc?s à la m?moire ou comment l'adresse en m?moire est-elle sp?cifi?e.
où les donn?es sont elles charg?es : registres g?n?raux ou non, pile, etc.
les types et tailles des op?randes : octet, entier, etc. et la fa?on dont ils sont sp?cifi?s.
le jeu d'op?rations : addition, multiplication, etc.
Parmi les autres aspects, on doit examiner :
comment est d?fini le successeur de l'instruction et de la donn?e.
les codes de conditions.
le parall?lisme.
Etude abr?g? d'un CISC: Intel 80386
Cette organisation est dite « pipeline », car les informations, instructions ou donn?es, sont trait?es au
fil du d?placement qui leur est impos? d'unit? en unit?.
Ce pipeline est asynchrone, car, bien que le tout soit r?gi par une horloge de base, les temps de
traitement de chaque organe sont diff?rents et deux informations de m?me nature n'ont pas
n?cessairement le m?me temps de traitement (instructions CISC de complexit? et de longueurs
variables).
L'horloge fournit un rythme de base mais chaque organe ?volue s?par?ment des autres. Chacun doit
donc disposer de tampons d'entr?e et de sortie pour r?tablir une synchronisation de disponibilit?.
Dans les machines RISC, les pipelines sont synchrones.
On dit aussi qu'il y a anticipation, puisqu'une instruction commence à ?tre trait?e, sinon ex?cut?e
avant la fin de l'ex?cution des pr?c?dentes
PRÉRECHERCHE D'INSTRUCTION.
Re?oit : les limites de validit? des adresses, l'adresse du mot,
l'instruction.
Fait : les tests de limite d'adressage (par rapport au segment et à la
page).
un stockage de plusieurs octets de code.
Émet : l'adresse vers le bus, les codes vers le pr?d?codage.
PRÉDÉCODAGE D'INSTRUCTION.
Re?oit : les codes de la pr?recherche.
Fait : une premi?re transformation du code en adressage interm?diaire
un stockage de deux instructions d?cod?es.
Émet : les instructions d?cod?es vers la commande,
les valeurs de d?placement vers la segmentation.
COMMANDE ou SÉQUENCEUR ou PIPELINE
Re?oit : les instructions pr?d?cod?es, les drapeaux d'?tat fournis par
l'UAL.
Fait : le calcul des commandes ou celui de l'adresse de la
microinstruction à rechercher
puis le transcodage de la microinstruction en commandes.
Émet : les commandes de tous les organes via le bus interne,
les ordres d'op?ration et les op?randes imm?diats vers l'UAL.
UAL : UNITE ARITHMÉTIQUE ET LOGIQUE OU UNITÉS FONCTIONNELLES
Re?oit : les ordres et op?randes imm?diats de la COMMANDE,
les donn?es du bus externe.
Fait : les lectures et ?critures des registres,
les op?rations arithm?tiques et logiques.
Émet : les adresses sur bus internes vers la SEGMENTATION,
les drapeaux d'?tat,
les r?sultats des op?rations vers un bus interne.
SEGMENTATION
Re?oit : les adresses calcul?es dans l'UAL,
les indications de d?placement issues du d?codage.
Fait : les combinaisons-additions d'adresses,
entretient les registres descripteurs de segments.
Émet : les adresses calcul?es vers la pagination et la pr?recherche.
PAGINATION
Re?oit : les adresses dans les segments,
les adresses physiques.
Fait : les op?rations sur les adresses,
entretient la table des pages
Émet : les adresses physiques vers le bus et la pr?recherche
COMMANDE DU BUS
Re?oit : les adresses des donn?es à lire et à ?crire,
les adresses des instructions,
les signaux de la commande.
Fait : les multiplexages et d?multiplexages,
le codage des priorit?s sur les demandes.
Émet : les donn?es, les instructions, les commandes d'interruption.
Fonctions dans un processeur
COMMANDE CÂBLÉE OU MICROPROGRAMMÉE
On a vu les grandes divisions d'un processeur.
Dans sa partie centrale, on a distingu? la partie arithm?tique et logique proprement dite (UAL),
appel?e parfois "chemin de donn?es" et la partie de commande et non pas contrôle (control).
La partie UAL ou chemin de donn?es est constitu?e de registres, de chemins et de portes,
relativement faciles à d?finir.
La commande consiste en :
.l'interpr?tation des instructions,
.la fabrication des commandes ?l?mentaires d'activation des divers organes,
.l'?mission de ces microcommandes.
Pour cela, il faut que les organes soient commandables, mais cela ?tait d?jà suppos?.
Il faut de plus mod?liser le trio :
.entr?es, le contenu de l'instruction,
.variables d'?tat, l'?tat de l'UAL,
.variables de sorties, les microcommandes.
La voie de la commande câbl?e consiste à faire la synth?se de ce syst?me s?quentiel à la mani?re
des automaticiens, ?ventuellement en plusieurs ?tapes. Les outils de mod?lisation existent. La r?alisation
La voie de la commande microprogramm?e utilise l'invention de Maurice Wilkes (1951).
Elle consiste à ins?rer une machine extr?mement r?duite (micromachine). Ses entr?es sont les
instructions, ses sorties sont les commandes. Sa m?moire contient deux tables. La premi?re met en
correspondance les codes d'op?ration et les adresses de la deuxi?me table. La deuxi?me table contient
les commandes à ?mettre. Le processeur tr?s simple g?re ces adresses et ces donn?es. La technique est
nomm?e microprogrammation.
On ajoute le pr?fixe micro aux ?l?ments de cette machine r?duite : micromachine (parfois machine
à nombre fini d'?tats ou FSM finite state machine), microm?moire, microcontrôleur, microinstructions,
microcode, microprogramme.
La micromachine a eu plusieurs variantes de r?alisation. On les classe en trois groupes :
·
·
·
microprogrammation horizontale,
microprogrammation verticale,
microprogrammation diagonale.
Dans la microprogrammation horizontale, les microinstructions sont tr?s longues (plus de
100 bits). Les microcommandes à raison d'un ou plusieurs bits par signal sont log?es dans des champs
nombreux. Chaque microinstruction commande donc plusieurs organes.
Cette microprogrammation veut exploiter au mieux les capacit?s de fonctionnement simultan? des
organes du processeur.
Exemples : AMD 2900 et AMD29000, Vax 11/780.
Dans la microprogrammation verticale, les mots sont courts (16 bits par exemple). Ils ne
contiennent que des bits repr?sentant des signaux mutuellement exclusifs. Des descripteurs de champs
rep?rent la signification des bits. Ces microinstructions ressemblent à des instructions ordinaires du
langage d'assemblage : un code qui porte la signification des arguments, des arguments qui sont les
listes des signaux de commande.
Elles sont simples à concevoir et manipuler, beaucoup plus rapides à ex?cuter. Elles exploitent moins
bien les simultan?it?s possibles.
Exemples : Multi6 d'Intertechnique, Intel 80486.
La microprogrammation diagonale tente de combiner les deux pr?c?dentes. Les
microinstructions ont des longueurs moyennes de quelques dizaines de bits.
Une autre voie a ?t? explor?e, celle du nanocode. Le processeur est alors constitu? de trois
machines imbriqu?es. Le processeur visible, la micromachine command?e par des microinstructions
courtes (type vertical). Toutefois ces microinstructions ne contiennent pas les signaux de commande.
Ceux-ci sont stock?s dans une nanomachine sous la forme de nanoinstructions de type horizontal.
Exemple : Motorola 68000.
Exemple de la microinstruction du Vax 11/780 :
.Longueur 96 bits,
.Nombre de champs 30,
.Nombre de microinstructions pour r?aliser le jeu d'instructions : 4096,
.Taille de la m?moire de microinstructions 400K bits.
(Les modes d'adressage du Vax ?taient extraordinairement nombreux.)
D?tail de quatre champs :
Les performances de la microprogrammation sont li?es à celles de la micromachine. Dans les p?riodes
où l'on dispose de m?moires de petite taille nettement plus rapides que des m?moires de grande taille et
tenant compte des coûts respectifs, la microprogrammation est utilisable. Dans les p?riodes où ce n'est
pas le cas, la commande câbl?e l'emporte
Avantages et Inconv?nients de la microprogrammation.
A
Souplesse :
facilit? à commander des op?rations simultan?es, retours sur erreurs facilit?s.
On peut construire des jeux d'instructions libres et puissants, on peut construire des op?rations
complexes,
On peut construire plusieurs jeux d'instructions sur la m?me machine.
I
On peut construire des op?rations inutilement complexes,
L'ex?cution est lente à cause de l'acc?s à la micromachine, compar?e au d?codage direct.
Le concepteur est encourag? à faire compliqu? plutôt que simple en ?crivant des microprogrammes
longs. Des s?quences simples sont souvent plus rapides qu'une s?quence complexe.
LES MÉMOIRES
Les m?moires ?lectroniques ont :
une structure d'organisation en cellules, la cellule est l'unit? d'acc?s à la m?moire. Une structure
est r?sum?e en deux nombres :
· n nombre de cellules
· t taille de la cellule en bits.
un jeu de caract?ristiques temporelles :
· temps d'acc?s, temps n?cessaire pour acc?der à une valeur d'adresse donn?e.
· temps de transfert, une fois l'acc?s r?alis?, temps n?cessaire pour que la donn?e arrive
à destination,
· temps de cycle, temps total pendant lequel un banc de m?moire n'est pas accessible
suite à un acc?s.
une technique de fabrication :
RAM (Random Acces Memory) => SRAM et DRAM,SDRAM
La m?moire ROM, La m?moire PROM (programmable 1 fois)
La m?moire EPROM et EEPROM (peuvent ?tre reprogramm?es)
La m?moire FRAM (F pour flash)
Dans la RAM dynamique, la structure est parfaitement r?guli?re sous la forme d'un tableau de lignes et
colonnes. L'enregistrement d'un bit est fait par la charge d'un condensateur de capacit? tr?s faible, 30 à
50 femtofarads. Chacun est associ? à un transistor à effet de champ (MOSFET : metal-oxyde silicium
field effect transistor) qui lit ou ?crit cette charge. Le circuit est muni d'un registre tampon de
manipulation de ligne.
· D'une part, le condensateur se d?charge lentement. La charge doit ?tre reconstitu?e p?riodiquement
par l'op?ration dite de rafraîchissement qui consiste en une lecture syst?matique avant ?puisement de la
charge et une r?criture. Cette op?ration est faite avec une p?riodicit? de quelques millisecondes.
· D'autre part les op?rations de lecture et d'?criture portent sur une ligne enti?re. En lecture, la
ligne est lue, copi?e dans le tampon, le bit demand? en est extrait et la ligne est RÉCRITE car l'op?ration
de lecture a vid? les condensateurs de leur charge. En ?criture, la ligne est lue, copi?e dans un registre, le
bit est ins?r? et la ligne est RÉCRITE.
Le temps d'acc?s, parfois dit temps de latence, de l'affichage de l'adresse à la disponibilit? de la
donn?e sur le bus, va de 50 à 80 ns.
Le temps de cycle, de l'affichage d'une adresse à l'affichage utile de la suivante, est le temps d'acc?s
plus le temps de pr?charge, soit 100 à 160 ns.
Téléchargement