You are on page 1of 30

R DS

Titre XI

Architecture
1re partie

Serge Boada Janvier 2003 Version 2.1

Mise jour de ce manuel Je remercie tous les utilisateurs de ce manuel de mindiquer les erreurs quil comporte. De mme, si des informations semblent manquer ou sont incompltes, elles peuvent mtre transmises, cela permettra une mise jour rgulire de ce manuel.

Modification v2 : recopie de loriginal papier v2.1 : correction derreur sur les images et numrotation

Contact

Auteur: Serge Boada e-mail : serge.boada@heig-vd.ch

Coordonnes la HEIG-VD : Institut REDS HEIG-VD Haute Ecole d'Ingnierie et de Gestion du Canton de Vaud Route de Cheseaux 1 CH-1400 Yverdon-les-Bains Tl : +41 (0)24 / 55 76 330 Reconfigurable & embedded Internet : http://www.heig-vd.ch Digital Systems

R DS

Institut REDS Internet : http://www.reds.ch

Autres personnes contacter:

M. Messerli Etienne M. Yoan Graf M. Cdric Bardet

etienne.messerli@heig-vd.ch yoan.graf@heig-vd.ch cedric.bardet@heig-vd.ch

Tl direct +41 (0)24/55 76 302 Tl direct +41 (0)24/55 76 259 Tl direct +41 (0)24/55 76 251

Table des matires

Chapitre XI. 1re partie: Architecture .............................. 1


XI-1.Structure dun CPU.......................................................... 2 XI-2.La mmoire ....................................................................... 3 XI-3.Les entres/sorties............................................................. 8 XI-4.Autres entres/sorties; mthode de gestion .................. 12 XI-5.CPU et bus avec interruptions....................................... 14 XI-6.CPU et bus DMA ............................................................ 20 XI-7.Bus synchrones, semi-synchrones et asynchrones ....... 22 XI-8.Bus multiplexs ............................................................... 25

REDS - EIVD

Vesion du 24 juin 2008

II

Chapitre XI

1re partie: Architecture

Dans ce chapitre, nous allons parler dordinateurs, de miniordinateur, de microprocesseur... et la premire chose faire est dclairsir ces termes. En fait, tous les ordinateurs, quils soient maxi, mini, super-maxi, maxi-mini ou micro sont essentiellement semblables dans leur structure de base et leur but gnral. Si diffrence il y a, cest au niveau de leur puissance de travail, de leurs dimensions physiques et de leur prix, mais ce sont l des critres qui voluent trs rapidement avec le temps. Un ordinateur est un systme de traitement de linformation, gnralement digital et lectronique, donc un systme logique. Ce qui en fait plus spcifiquement un ordinateur est son universalit: il peut tre programm, de faon relativement simple, pour excuter toutes sortes de tches diffrentes mais relevant toujours du traitement de linformation (manipulation de donnes, calcul). On peut imaginer des ordinateurs ayant toutes sortes de structures mais nous nous contenterons dtudier celle dfinie en 1946 par John Von Neumann, alors minent mathmaticien Princeton, car cest celle quest de trs loin la plus utilise. Von Neumann avait imagin de stocker le programme (suite opratoire) en mmoire, alors quauparavant seuls quelques rsultats de calcul intermdiaires taient stocks, comme dans une calculette de bas de gamme
1

Chapitre XI, Architecture

Vesion du 24 juin 2008

actuelle. De plus, il proposa que la mmoire de lordinateur puisse tre utilise sans distinction pour le stockage des donnes et du programme. En premire approche, nous pouvons distinguer trois units fonctionnelles comme nous le montre la figure 1. En fait, nous pourrions parler de quatre units fonctionnelles car les lignes de communication, reprsentes ici par de grosses flches reliant les blocs, sont assez particulires et constituent un bus de communication. Nous reprendrons cette ide de bus plus tard.

Unit de traitement (CPU)

Mmoire programme et donnes

Entres et sorties

Figure XI- 1 : Units fonctionnelles dun CPU

Lunit de traitement, gnralement connue sous son sigle anglais CPU pour Central Processing Unit, est une machine squentielle complexe charge de lexcution des instructions constituant le programme stock en mmoire, y compris leur squencement. Lorsque le CPU est ralis laide dun petit nombre de circuits intgrs grande chelle (typiquement de 1 5 botiers), il est appel microprocesseur. Du moins, un des botiers qui le composent lest: celui qui effectue rellement le traitement de linformation, les autres, bien que souvent indispensables, soccupant de tche annexes ou partielles. Notre tche, dans ce chapitre, sera dtudier de faon assez dtaille larchitecture interne des trois blocs de la figure 1, en commenant par le CPU. Le rle, la composition et lutilisation dun bus de communication seront galement abords.

XI-1 Structure dun CPU


Le rle dun CPU est: daller chercher une instruction dans la mmoire (en fournissant ladresse de la cellule concerne et un signal de lecture) de dcoder cette instruction et de lexcuter de provoquer les transferts de donnes de ou vers la mmoire ou les entres/sorties sil y a lieu de calculer ladresse de la prochaine instruction et assurer ainsi le squencement du programme.
2

REDS - EIVD

Cours

Cest l un travail essentiellement squentiel et notre CPU sera donc une machine squentielle complexe. Comme telle, elle sera conue en sparant lunit de squencement de lunit dexcution. Attention: nous entendons par l le squencement du fonctionnement interne du CPU et non pas le squencement des instructions stockes dans lunit de mmoire, bien que celui-ci puisse galement faire lobjet dun module spar lintrieur du CPU. Lunit de squencement interne du CPU peut tre microprogramme ou cable. Lunit dexcution est bien videmment universelle.

CPU
Registre d'instructions Unit de traitement Squenceur

Mmoire de microprogramme

Compteur de programme

Mmoire de programme

Figure XI- 2 : Structure dun CPU

Dans le cas o le squenceur interne du CPU est microprogramm, nous avons deux niveaux de programmation: lexcution dune instruction externe se traduit par lexcution de plusieurs microinstructions internes. Ces deux niveaux apparaissent dans la figure 2 qui reprsente le CPU et la mmoire contenant le programme.

XI-2 La mmoire
La mmoire principale dun ordinateur (Main Memory), celle qui est directement atteignable par le CPU travers le bus, est une mmoire compose de circuits intgrs. Seule une ralisation avec des circuits semiconducteurs permet en effet datteindre des temps daccs compatibles avec les exigences dun CPU.
3

Chapitre XI, Architecture

Vesion du 24 juin 2008

Pour linstant, nous ne nous occuperons pas de la mmoire de masse telle que les disques souples ou rigides, magntiques ou optiques, car ce type de mmoire ne peut tre connect au bus dun ordinateur qu travers une platine lectomcanique commande par un circuit fort complexe qui est souvent luimme un systme processeur et travers un circuit de couplage (interface) assez complexe. Les mmoires semiconducteurs se divisent en deux catgories: les mmoires mortes ou mmoires la lecture seulement (ROM, Read Only Memory) et les mmoires vives ou lecture et criture (RWM, Read Write Memory). Nous avons dj dcrit la structure des ROM dans le chapitre II. Nous y avons galement mentionn brivement les diffrents types existant, savoir: ROM, PROM, EPROM, EEPROM.

Adress Bus Data Bus A15 A14 A13 A12 A0 M/IO A12 A0

Eprom 8kx8

Dcodeur d'adresses

A A A A A A A D7 A

D0

Eprom 8kx8

D0 A A A A A A A D7 A

RD

12 CE OE

& EN

12 CE OE

& EN

Figure XI- 3 : Rom de 8k x 16 bits connecte un bus

Dans un ordinateur il y a toujours une partie de la mmoire principale qui est ralise avec des ROM dun des quatre types pr-cits. Les ROM sont en effet non volatiles (linformation reste mmorise mme si le circuit nest pas sous tension) au contraire des RWM semiconducteur: elles pourront donc contenir un bout de programme commenant ladresse de dmarrage (dans notre CPU nous avons initialement mis le PC 0) qui nous permettra dassurer le contrle du CPU ds lenclenchement puis de transfrer de la mmoire de masse vers la mmoire principale lecture et criture, le programme que lon dsire excuter. Nous ne reviendrons pas ici sur la faon dassembler les circuits intgrs de ROM pour obtenir la largeur ou la profondeur de mmoire voulues (voir chapitre II, II). Contentons-nous dtudier, laide de la figure 9, comment une mmoire ROM de 8kx 16 bits commenant ladresse 0, par exemple, peut tre connecte au bus que nous avons dfini.

D15 D8

D7 D0

2764

2764

REDS - EIVD

Cours

Le dcodeur dadresse ralise la fonction dactivation CE (Chip Enable): (1) CE = M ( IO ) A 15 A 14 A 13 Ainsi notre mmoire rpondra bien aux adresses allant de 000 hexa 1FFF hexa. Mais elle ne forcera ses sorties sur le bus de donnes que lorsque lactivation du signal de lecture RD provoquera lactivation des sorties (Output Enable, OE). Pour obtenir une largeur de 16 bits avec des circuits intgrs qui nont que 8 bits de largeur, il suffit de mettre deux botiers en parallle. Les mmoires lecture seulement ne nous permettent pas de mmoriser des variables ni de charger facilement un nouveau programme partir de la mmoire de masse. Nous aurons donc toujours besoin dune partie de la mmoire ralise avec des RWM. Le sigle le plus connu dsignant les mmoires RWM semiconducteurs est RAM pour Random Access Memory ou mmoire accs alatoire. Cette dsignation les diffrenciait, lorigine, des mmoires accs squentiel, dont une pile est un exemple particulier: pour atteindre une information dans une pile, il faut dsempiler ce qui se trouve au-dessus, alors que dans une RAM toute information est accessible directement, il suffit davoir son adresse.

yi xi

DIk

D0kj xi

1D WR C1

Figure XI- 4 : Structure dune RAM statique

Nous devons encore distinguer deux types de RAM: les statiques et les dynamiques. Dans les RAM statiques, la cellule de mmorisation dun bit est un latch, alors que les RAM dynamiques, la mmorisation se fait laide dun condensateur. Malheureusement, cette cellule mmoire base sur un condensateur perd la mmoire assez rapidement: le condensateur se dcharge. Il faut donc rafrachir linformation priodiquement si on ne veut pas quelle disparaisse, et ceci demande une circuiterie supplmentaire. Lavantage des RAM dynamiques est que leurs cellules sont plus petites et consomment moins, donc on peut atteindre une intgration environ quatre fois suprieure celle des mmoires statiques: pour de grandes mmoires (suprieures 64 Kbytes) cest l un avantage qui compense les inconvnients du rafrachissement. Nous nous occuperons plus tard des mmoires dynamiques, nous contentant pour linstant dtudier les RAM statiques, plus simples utiliser et plus intressantes pour les petits systmes microprocesseur.
5

Chapitre XI, Architecture

Vesion du 24 juin 2008

A5

A0

Dcodeur de colonne
x0 y0 y1 y2 y63

Y X DI DO Wr x1

Y X DI DO Wr

..........

Y X DI DO Wr

Dcodeur de ligne

A6

Y X DI DO Wr x2

Matrice 32 x 64

8x pour une largeur de 8 bits

..........

..........

x31 Y X DI DO Wr DIk WR DOk0 Y X DI DO Wr Y X DI DO Wr

..........

RD

DOk1

..........

A10

DOk63 DOk

Multiplexeur de sortie
CS A5 A0

Figure XI- 5 : Une matrice de mmoire RAM

La figure 4 nous montre un schma de principe dune cellule RAM statique dun bit. xi et ji sont deux bits de slection de la cellule qui sont gnrs par les deux dcodeurs dadresse que nous voyons la figure 5. DIk et DOki sont respectivement le bit dentre et le bit de sortie de rang k. Pour une mmoire de 8 bits de large (organise en bytes), lindice k varie donc entre 0 et 7. WR est limpulsion qui provoque le mmorisation en ouvrant le latch qui constitue llment mmorisant de la cellule. La matrice de cellules mmoire pour un bit de rang k est montre la figure 5. Cette disposition matricielle est particulirement avantageuse au niveau du circuit intgr: la structure est rgulire, et le dcodage de la position dune cellule partir dun numro de ligne et dun numro de colonne permet de diminuer trs fortement le nombre de conducteurs passer entre les cellules (les lignes de slection sortant des dcodeurs: 96 pour les dcodeurs x-y dune mmoire de 2 Kbytes au lieu de 2048 avec un dcodeur linaire).

REDS - EIVD

Cours

Type

capacit [Kbits] 4 16 16 16 64 256

configuration 1k x4 2k x 8 4k x 4 16k x 1 8k x 8 32k x 8

cpmtaiblit p. p. EPROM non oui non non oui oui

NB. de pattes 18 24 20 20 28 28

i 2114 HM 6116 HM 6168 HM 6167 HM 6264 PD 43256

Tableau XI-1 : Exemple de RAM statiques du march

En lecture, toute une ligne de cellules est active pour un bit de sortie. La slection de la colonne est faite par le multiplexeur de sortie. Tout comme pour le CPU, il est intressant dconomiser des interconnections entre la mmoire et le reste du systme, en multiplexant lentre de donnes avec la sortie de donnes (DIk avec DOk). Cela se fait simplement en passant DOk travers une porte trois tats active par le signal de lecture RD, puis en connectant DIk. Nous obtenons ainsi un passage de donnes bidirectionnel, directement compatible avec le bus que nous avons dfini.

Figure XI- 6 : Exemple de symbole CEI de RAM statique

Il existe une grande varit de circuits intgrs de RAM statique et lvolution est trs rapide. Nous nous contenterons donc de mentionner un petit chantillonnage de circuits dans les diverses largeurs obtenables. Le tableau 1 liste ces quelques exemples de circuits qui portent les numros Hitachi (HM), Intel (i) ou NEC (PD), mais sont galement produits par dautre fabricants de semiconducteurs.
7

Chapitre XI, Architecture

Vesion du 24 juin 2008

La figure 6 nous montre deux exemples de symboles CEI pour les RAM statiques. On voit apparatre la connection entre lentre et la sortie. Les doubles flches sur les lignes de donnes indiquent quil sagit de lignes bidirectionnelles. Dans le symbole de la HM6116, la mention [PWR DWN] pour Power Down indique que la consommation du circuit est rduite lorsquil nest pas activ (la patte 18 doit tre 0 pour que le circuit soit actif). Nous ne reviendrons pas sur la faon dobtenir une mmoire RAM plus large ou plus profonde, puisquil ny a aucune diffrence avec les ROM, de ce point de vue-l. La connection au bus est galement similaire celle des ROM, sauf quil faut en plus connecter le signal dcriture WR. La figure 7 nous montre la connection dune mmoire RAM 8K x 16 notre bus. Nous reviendrons plus en dtail par la suite sur les problmes de couplage de mmoires sur un bus, tant du point de vue temporel que du point de vue lectrique.

Adress Bus Data Bus A15 A14 A13 A12 A0 M/IO

RAM 8k x 8

RAM 8k x 8

Dcodeur d'adresses

CS_L (chip select)

12 & [PWR DWN] G1 G2

12 [PWR DWN]

RD WR

1, 2 EN [READ] 1,2, C3 [WRITE] A, 3D 4 , z4

1, 2 EN [READ] 1,2, C3 [WRITE] , z4

Figure XI- 7 : Connection dune Ram un bus

XI-3 Les entres/sorties


Dans un systme microprocesseur, de rares exceptions prs, les entres/ sorties se font travers le bus, et sont donc multiplexes. Nous avons dj utilis des entres/sorties multiplexes dans le microsquenceur MISEQv2, avec exactement les mmes buts que maintenant: augmenter la flexibilit du syst8

D8 D15

D7 D0

HM 6264

A12 A0

HM 6264

REDS - EIVD

Cours

me, diminuer la complexit de lunit centrale et diminuer le nombre de lignes entrant ou sortant de celle-ci. Par contre, nous avons maintenant un bus de donnes bidirectionnel, travers lequel devront passer aussi bien les entres que les sorties. Le schma de la figure 8 nous montre le schma le plus simple dune entre de 16 bits (la largeur de notre bus de donnes), dite zro fil dasservissement.

Adress Bus Data Bus M/IO RD_L D8 D15 D7 D0

ALS 244
EN

ALS 244
EN EN

Dcodeur d'adresses

ALS 244
EN

ALS 244

Entres

Figure XI- 8 : Entre avec zro fils dasservissement

Les 74ALS244 sont des portes tampon (buffers) sortie trois tats. Elle permettent de connecter les 16 bits dentre sur le bus de donnes, au moment o ladresse de cette porte dentre est sur le bus dadresse et o les signaux de commande IO_L et RD_L sont actifs. La figure 9 nous montre le schma dune sortie zro fil dasservissement. Les latches ALS373 permettent de cueillir au vol les valeurs de sortie se trouvant sur le bus de donnes, au moment o ladresse de cette porte dentre est sur le bus dadresse et o les signaux de commande IO_L et WR_L sont actifs, et de les conserver jusqu ce que de nouvelles valeurs soient fournies par le CPU. Dans les cas les plus simples, des portes zro fil de commande suffisent. Mais, bien souvent, il est ncessaire dindiquer au priphrique (circuit connect au bus travers une entre/sortie) ou au CPU, que les donnes se trouvent la sortie, ou respectivement lentre, sont valables. Cest le cas, par exemple, lorsque linformation transmettre comporte plusieurs mots (de 16 bits dans notre cas) traits lun aprs lautre. Nous utiliserons alors une entre ou une sortie un fil dasservissement.

Chapitre XI, Architecture

Vesion du 24 juin 2008

Adress Bus Data Bus M/IO WR_L D8 D15 D0 D7

ALS 373
EN C1 1D

ALS 373
EN C1 1D

Dcodeur d'adresses

Sorties

Figure XI- 9 : Sortie avec zro fils dasservissement

Un simple dtecteur de flanc synchrone, partageant le mme signal dhorloge que le CPU et travaillant sur le deuxime flanc du signal dactivation de la sortie (cest la sortie du dcodeur dadresse dans le schma de la figure 9) peut nous fournir une impulsion de commande signalant au priphrique que lopration de sortie vient davoir lieu au niveau du CPU. Par exemple, le circuit de la figure 10 ajout celui de la figure 8 nous fournirait une sortie un fil dasservissement.

ALS74
Reset_L Dcodeur d'adresse (IO_L x WR_L) S C1 1D R OBFP_L (vers le priph.)

S CPU Clock C1 1D R

Figure XI- 10 : Circuit pour asservissement avec 1 fils

Limpulsion OBFP indique au priphrique que le registre tampon de sortie est plein (Output Buffer Full Pulse). Dans le cas dune entre, le priphrique fournit un signal dactivation appel gnralement strobe qui permet de mmoriser les donnes dans un latch (si ncessaire) et qui est lui-mme mmoris dans un flip-flop. Ce flip-flop fournit au CPU le signal IBF (Input Buffer Full) qui signal au processeur quune nouvelle donne peut tre lue. Nous reviendrons sous peu sur lutilisation qui peut tre faite de ce signal. IBF est remis zro par la lecture. La figure 11 nous montre une entre un fil dasservissement et mmorisation des donnes.

10

REDS - EIVD

Cours

Si nous avons signal au rcepteur quune nouvelle valeur dentre/sortie est prsente, nous ne nous sommes pas occups, pour linstant, de savoir si le rcepteur tait prt accepter une nouvelle valeur. Pour cela, nous pouvons galement concevoir des entres/sorties un fil de commande. Mais, sil faut pouvoir signaler larrive dune nouvelle valeur, aussi bien que la disponibilit du rcepteur, nous aboutissons une entre/sotie deux fils dasservissement.

Adress Bus Data Bus M/IO RD_L EN C1 EN C1 1D D8 D15 D7 D0

ALS 373

ALS 373

Dcodeur d'adresses

1D

STR_L (du priph.) S C1 1D R IBF_H (vers CPU)

Figure XI- 11 : Entre avec un fils dasservisement

La figure 12 nous montre le schma dun circuit qui, combin celui de la figure 9, fournirait une implmentation possible dune sortie deux fils dasservissement. Le signal OSTR (Output Strobe) permet au priphrique dchantillonner la nouvelle valeur de la sortie. OSTR nest activ que si le signal REC_RDY (Receiver Ready) est actif, indiquant que le rcepteur (le priphrique) est prt recevoir une nouvelle valeur. Le signal OBF envoy vers le CPU, permet celui-ci de ne pas effectuer de nouvelle sortie avant que la valeur prcdente nait t lue par le priphrique. Tout comme le signal IBF, nous reviendrons sur son utilisation dans le paragraphe suivant.

11

Chapitre XI, Architecture

Vesion du 24 juin 2008

ALS74 ALS74
Dcodeur d'adresse (IO_L x WR_L) S C1 1D R OBF_L (vers le CPU) REC_RDY_L (du priph.) S C1 1D R CPU Clock Reset_L S C1 1D R OBFP_L (vers le priph.)

Figure XI- 12 : Circuit pour asservissement avec 2 fils

XI-4 Autres entres/sorties; mthode de gestion


Dans le paragraphe prcdent, tous les exemples que nous avons donns concernent des entres/sorties digitales parallles et unidirectionnelles. Cest dire quil existe galement des entres/sorties analogiques, sries et/ou bidirectionnelles. Mais, en fait, la connection au bus se fera toujours travers des portes parallles. Par exemple, une sortie analogique nest rien dautre quune sortie parallle (sous-entendu digital) couple un convertisseur D/A, et une entre srie nest rien dautre quune entre parallle couple un convertisseur srie/parallle. Nous nous occuperons des convertisseurs dans un prochain chapitre. Pour linstant, contentons-nous de savoir quil nest plus gure ncessaire de les concevoir, puisquils sont obtenables sous forme intgre et quils incluent mme souvent une porte parallle, ce qui facilite leur couplage au bus. En ce qui concerne les portes digitales parallles bidirectionnelles, nous ne les tudierons pas en dtail ici. Il nous suffit de savoir quelles englobent la fois les caractristiques dune entre et dune sortie deux fils dasservissement (ce qui fait donc au total quatre fils), les lignes de donnes tant ltat haute impdance sauf lorsquun transfert est effectu entre lentre/sortie et le priphrique. Concevoir un tel circuit est dailleurs sans objet car il est obtenable sous forme intgre, ce qui est toujours plus conomique. Pour complter notre bus et notre CPU, et finir ainsi notre premier tour de la structure dun systme microprocesseur, il nous faut maintenant aborder les trois mthodes usuelles de gestion des entres/sorties, soit la scutation, linterruption et laccs direct en mmoire, appliques au transfert de donnes multimots. La scrutation consiste, pour le CPU, lire les signaux dtat tels que IBF dans la figure 11 et OBF dans la figure 12, pour dterminer sil doit initier une opration de transfert de ou vers lentre/sortie. Pour lire ces signaux dtat,

12

REDS - EIVD

Cours

le CPU va utiliser une porte dentre zro fil dasservissement. Ainsi, pour une sortie, le CPU va excuter un programme correspondant lorganigramme de la figure 13. Si le CPU na rien dautre faire que dattendre que la sortie soit lue par le priphrique pour lui envoyer une nouvelle valeur, cela se passe trs bien. Sil doit par contre soccuper dautre tche en attendant que la sortie libre, il va falloir tester rgulirement ltat de la sortie, ce qui compliquera ltablissement du programme, augmentera sa longueur et, surtout, ralentira le temps moyen de raction du CPU la libration de la sortie: si la sortie se libre juste aprs avoir t teste, il peut scouler un temps important avant quelle ne soit de nouveau teste.

Lire la porte d'tat de l'entre/sortie

Autres tches

Positionner un bit d'tat machine selon l'tat de la sortie (masquer)

Sortie prte ? O

Ecrire nouvelle valeur de sortie

Figure XI- 13 : Organigramme du programme excut par un CPU

De mme, sil faut soccuper quasi-simultanment de plusieurs entres/sorties fonctionnant de faon alatoire les une par rapport aux autres, le temps de raction dpendra linairement du nombre de ces entres/sorties, puisquil faudra les tester les unes aprs les autres. La gestion par interruption ne souffre pas de ces inconvnients. Elle consiste en effet interrompre le droulement du programme lorsquune entre/sortie doit tre servie, soccuper alors de lentre/sortie laide dun sous-programme, puis continuer le programme interrompu. Quel que soit le moment o lentre/sortie devient libre et quel que soit le nombre dentres/sorties ser-

13

Chapitre XI, Architecture

Vesion du 24 juin 2008

vir, le temps de raction de CPU reste pratiquement constant, du moins pour des interruptions dites vectorises. Nous allons tudier les interruptions plus en dtail dans le paragraphe suivant. Une interruption implique un changement de contexte, avec la perte de temps que cela suppose. Sil faut effectuer des oprations dentres/sorties une cadence leve, le changement de contexte, voir mme la simple lecture ou criture en mmoire de la valeur transmise, peut reprsenter une perte de temps inacceptable. Il faut alors recourir laccs direct en mmoire ou DMA (Direct Memory Access). Laccs direct en mmoire consiste charger un circuit spcialis assez complexe, appel contrleur de DMA, de faire le transfert entre non pas le CPU mais la mmoire et lentre/sortie. Pour ce faire, le contrleur de DMA sapproprie le bus le temps de faire une lecture ou une criture, temps pendant lequel le fonctionnement du CPU est suspendu (du moins en ce qui concerne ses accs au bus). Il ny a pas lieu deffectuer un changement de contexte, et le contrleur de DMA gre le pointeur de mmoire avec du matriel (hardware), ce qui rsulte en un gain de temps considrable. Malheureusement, la complexit dun contrleur de DMA en fait un circuit assez cher. Dans ce chapitre, nous allons voir comment fonctionne le DMA au niveau du CPU et du bus, puis nous tudierons un contrleur de DMA dans un prochain chapitre.

XI-5 CPU et bus avec interruptions


Dans lexercice VI.8.3, nous avons vu comment notre CPU peut prendre conscience dune demande dinterruption qui se prsente sous la forme dun signal dentre IRQ_L: il suffit de terminer le microprogramme de chaque instruction machine par un saut conditionnel registre/pipeline (CJRP), la condition portant bien sr sur lentre IRQ_L, aprs avoir pris soin dinitialiser le registre R du 2910 ladresse du microprogramme de traitement de la demande dinterruption. Il sera ainsi possible dinterrompre le CPU chaque instruction machine, plus exactement: la fin de lexcution de chaque instruction machine. Chaque programme en cours dexcution devrait pouvoir dcider sil accepte dtre interrompu ou non. En effet, certains bouts de programme travaillant avec des contraintes de temps prcises (par exemple, en rgulation automatique) pourraient tre totalement perturbs par une interruption intempestive. Il faut donc prvoir dans le CPU un flip-flop pouvant tre mis 1 et 0 par deux instructions EI (Enable Interrupt) et DI (Disable Interrupt). Ce flip-flop, connu sous le nom de flag dinterruption, masque les demandes dinterruption lorsquil est ltat 0 (diasable).

14

REDS - EIVD

Cours

Il y a cependant des cas o il faut imprativement interrompre le CPU, quelles quen soient les consquences. Cest le cas, par exemple, lorsque la tension dalimentation chute: il faut alors prendre des mesures durgence avant que le systme ne devienne incontrlable cause dune tension dalimentation insuffisante. Les microprocesseurs modernes ont donc tous une entre de demande dinterruption non masquable. Nous en ajouterons galement une notre CPU. Il est souvent ncessaire davoir plusieurs demandeurs dinterruption dans un systme. Mais, pour des raisons techniques (il faut limiter le nombre de pattes du botier) et de souplesse demploi, un CPU ne peut pas avoir autant dentres de demande dinterruption quil y a de demandeurs. Pourtant, chaque demande doit donner lieu lexcution dun programme spcifique au demandeur. Dans le cas o le CPU na quune seule entre de demande dinterruption masquable (ce qui est presque toujours le cas), il faudra dune part que cette ligne puisse tre active par tous les demandeurs, et dautre part que le CPU puisse dterminer lorigine de la demande pour excuter le programme correspondant. Le fait quil y ait plusieurs demandeurs pose galement le problme de la priorit: si plusieurs demandes sont dtectes simultanment par le CPU, dans quel ordre doivent-elles tre traites? Collecter toutes les demandes sur une mme ligne est assez simple. Il sagit de raliser une fonction OU de toutes les demandes, soit laide dune porte OU, soit de faon dcentralise avec un OU cbl laide de porte collecteur ouvert. La dtermination de lorigine dune demande peut tre obtenue par deux mthodes: la scrutation ou la vectorisation. La scrutation suppose que chaque demandeur dispose dun bit dindication de demande que le CPU peut aller lire. Lorsquune interruption est accepte, le CPU va excuter un programme dbutant une adresse fixe et qui a pour but de tester un un les bits dindication de demande puis de sauter au programme correspondant la premire demande active rencontre. La scrutation est lente lorsque le nombre de demandeurs est grand. Par contre, le problme de priorit est directement rsolu, puisque lordre dans lequel les demandeurs sont tests nous donne lordre de priorit dcroissant. La vectorisation est une mthode dans laquelle le CPU envoie un signal dacceptation dinterruption INTA_L (Interrupt Acknowledge), la suite de quoi un demandeur sidentifie en envoyant son vecteur spcifique. Ce vecteur peut tre une instruction (gnralement un appel un sous-programme), ou une adresse, voir une partie dune adresse seulement, et il est envoy travers le bus de donnes. En utilisant la vectorisation, le temps de rponse une interruption ne dpend pas du nombre de demandeurs potentiels et reste toujours infrieur celui obtenu par scrutation. Par contre, non seulement il faudra du matriel pour gnrer le vecteur, mais encore faudra-t-il rsoudre le problme des priorits.
15

Chapitre XI, Architecture

Vesion du 24 juin 2008

Le circuit ncessaire pour injecter un vecteur sur le bus de donnes nous est connu: il suffit dun tampon trois tats activ par le signal de slection de ce demandeur particulier (signal qui reste crer). La valeur du vecteur peut tre choisie laide dinterrupteur ou pralablement charge dans un latch du priphrique par le CPU. La figure 14 nous montre un circuit utilisant cette dernire possibilit avec un vecteur de 8 bits.

Adress Bus Data Bus M/IO WR_L EN_VECTj_L Wr_VECTj_H D0 D7

EN C1 1D

Dcodeur d'adresses

D7 D0

ALS 373

Vecteur n j

Figure XI- 14 : Circuit de vecteur

Selon que nous avons des interruptions un seul niveau ou multiniveaux (nested interrupts), le problme de la prioritisation se rsoudra plus ou moins simplement. Dans le cas dinterruptions un seul niveau, un sous-programme de traitement dune interruption x ne peut pas tre interrompu son tour par une demande dinterruption y, mme si celle-ci a une plus haute priorit. Le CPU facilite un tel comportement en mettant automatiquement ltat disable son flag dinterruption, aussitt quil accepte une interruption. Il ne pourra donc y avoir de nouvelle interruption que lorsquune instruction EI (Enable Interrupt) aura t excute. Si cela nest fait qu la fin du traitement dune interruption, juste avant le retour au programme principal, nous obtenons un systme un seul niveau dinterruption. Dans un tel cas, le seul problme de priorit qui se pose est celui des demandes simultanes. Dans un systme acceptant des interruptions multiniveaux, il est possible quune demande dinterruption de niveau y soit accepte alors que le traitement dune interruption de niveau x est en cour, condition que le niveau de priorit y soit suprieur au niveau x. Nous pouvons ainsi avoir une imbrication (nesting) de plusieurs interruptions de niveaux x,y,z croissants comme le montre la figure 15. Mais une demande de niveau w infrieur x doit tre bloque par le circuit de prioritisation jusqu ce que le traitement de linterruption de niveau x soit termin.

16

REDS - EIVD

Cours

Progr. princ.

S. P. x

S. P. y

S. P. z

IRQx

IRQy

IRQz

Figure XI- 15 : Cascade dIRQ

Etudions tout dabord des solutions adaptes aux systmes un seul niveau dinterruption. La premire mthode qui vienne lesprit utilise un encodeur de priorit tel que celui que nous avons dvelopp dans lexercice II.15.2. La figure 16 nous montre un exemple dun circuit de vectorisation pour 8 demandeurs dinterruption classes dans lordre de priorit croissant de I0 I7.

Address Bus Data Bus Control Bus D0 D7 WR_L IO_L

PRO_L

Dcodeur d'adresses
MASKWR_H

C1 1D

0/Z10 1/Z11 2/Z12 3Z13 4/Z14 5/Z15 6/Z16 7/Z17 V18 EN

10 11 12 13 14 15 16 17

1 18

.........

IRQ_L

HPRI/BIN

ALS 240
EN 1 2 4

I7_H

Vecteurs 20h 27h

EN V3 V4 V5 V6 V7

Figure XI- 16 : Circuit de vectorisation

Lencodage de priorit proprement dit est effectu par un circuit spcialis 74LS148. La notation HPRI/BIN (highest priority to binary) spcifie quil sagit dun convertisseur entre prioritaire binaire, plus connu sous le nom dencodeur de priorit. La relation v est une relation OU: ainsi, la sortie 18 rsulte, non seulement du OU des signaux 10 17, mais galement du OU avec lentre V18 (nous verrons lutilit de cette entre et de cette sortie sous peu). Le tampon trois tats 74ALS240 permet denvoyer sur le bus de donnes le vecteur de la demande dinterruption la plus prioritaire, ceci lorsque le signal dacceptation de linterruption INTA_L est actif. Le vecteur est compos de 8 bits: les trois bits de poids faible dsignent le numro du demandeur actif le
17

INTA_L

EN

I0_H

LS 148

D0 D7

ALS 373

Chapitre XI, Architecture

Vesion du 24 juin 2008

plus prioritaire parmi I0 I7, alors que les cinq autres bits peuvent tre choisis librement (en supposant que notre CPU accepte 256 vecteurs dinterruption). Nous avons ajout un latch de huit bits qui peut tre charg par le CPU. Les sorties de ce latch commandent des portes NAND qui permettent de masquer certaines demandes dinterruption et pas dautre, selon les besoins du programme. Linconvnient dun contrleur dinterruption (nous utiliserons ce vocable dsormais pour tout circuit soccupant du masquage, de la prioritisation et de la vectorisation dinterruption) tel que celui de la figure 16 est que toutes les demandes dinterruption doivent tre achemines vers lui. Comme les demandes peuvent provenir de plusieurs cartes du systme, le bus de liaison entre ces cartes devra comporter un nombre important de lignes de demande dinterruption, ce qui est coteux. Une chane de priorit (daisy chain) permet de dcentraliser le contrle des interruptions, donc damliorer la modularit et diminuer le nombre de liaisons inter-carte. Le principe est le suivant: Chaque circuit de contrle dun demandeur dinterruption dispose dune entre PRI (priority in) et dune sortie PRD (priority out). Tous les contrleurs sont connects en chane, la sortie PRD de lun tant relie lentre PRI du suivant, dans lordre de priorit dcroissante. Lentre PRI du demandeur le plus prioritaire (celui qui est au dbut de la chane) est mise ltat actif par cblage. La sortie PROj dun maillon de rang j nest active que si lentre PRIj est active et ce maillon ne demande pas dinterruption: PROj-H = (PRIjH)(Ij-L); ainsi, si un maillon dsire interrompre le processeur, il va automatiquement dsactiver les entres de priorit de tous les maillons de priorit infrieur. Lorsque le CPU accepte une interruption et gnre le signal INTA, le seul demandeur actif (qui a plac une demande dinterruption) dont lentre PRI est active va mettre son vecteur sur le bus. La figure 17 nous montre une implmentation dun maillon dune daisy chain dans un systme un seul niveau dinterruption. Dans cet exemple, nous navons pas prvu de masquage mais il suffirait dun flip-flop, plus exactement dune sortie un bit, et dune porte ET pour ajouter cette possibilit. Par contre, nous avons introduit un dtecteur de flanc suivi dun flip-flop de synchronisation. Le dtecteur de flanc permet au priphrique denvoyer sa demande au contrleur indiffremment sous forme dun tat ou dun flanc actif (impulsion courte). La synchronisation permet dempcher quune demande de plus haute priorit ne vienne brouiller les cartes (modifier ltat de la chane) au cours dun INTA, ce qui risquerait de perturber la lecture dun code opratoire (fetch).

18

REDS - EIVD

Cours

Control Bus IRQ_L INTA_L PRIj_L PROj_L EN_VECTj_L INTA_L PROj_L EN_VECTj_L En cours 1D C1 RESET_Ij_L R SYNC Flanc PULS_REQ_L 1D C1 R

Synchro. 1D C1 R RESET_Ij_L

Figure XI- 17 : Circuit Daisy Chain

La gnration du vecteur dinterruption nest pas reprsente dans la figure 17: il sagit du circuit reprsent dans la figure 14. Les signaux PRI et PRO qui apparaissent dans lencodeur de priorit 74ALS148 (voir figure 16) permettent bien sr de raliser une chane de priorit entre contrleur dinterruption encodeur. Pour obtenir un maillon huit vecteurs partir du contrleur de la figure 16, il suffirait dactiver les tampons 74ALS240 avec le signal: (2) PRO J H = ( P RI J H ) ( I J L ) (au lieu de INTA_L), et de gnrer IRQ_L partir de j_L mais travers un tampon non inverseur collecteur ouvert, aprs avoir mis une rsistance de pull-up sur j_L, sans oublier de relier PRI et PRO aux maillons voisins.

Control Bus SYNC PRIj_L IRQ_L

Flanc PULS_REQ_L 1D C1 R

Synchro. 1D C1 R

Figure XI- 18 : Circuit pour interruption multi-niveau

Dans le cas dinterruption imbrique, ou multiniveau, le programme de traitement de chaque interruption doit mettre le flag dinterruption enable ds le dpart, de faon laisser la voie libre une interruption plus prioritaire. Par

19

Chapitre XI, Architecture

Vesion du 24 juin 2008

contre, le contrleur dinterruption doit inhiber toute demande de priorit infrieure. La figure 18 nous montre une modification du circuit de la figure 17 en vue de ladopter des interruption multiniveaux. La demande dinterruption IRQ est dsactiv aussitt que cette interruption est accepte, ce qui est ncessaire pour mettre enable le flag dinterruption sans risquer dinterrompre de nouveau avec la mme demande. Par contre, le flip-flop en cours mmorise le fait que la demande vient dtre accepte et maintient dsactive la sortie PRO. Ce flip-flop, tout comme les flip-flops flanc et synchro de la figure 17 dailleurs, doit tre remis zro la fin du traitement de cette interruption, ce qui est gnralement fait travers une porte de sortie un bit. Nous nallons pas essayer dadapter le contrleur encodeur de la figure 16 au cas dinterruption multiniveau. Nous aboutirions en effet un circuit trs complexe, que lon peut dailleurs obtenir sour forme intgre (Am 2914, Intel 8259, etc), sans apprendre grand chose de nouveau quant aux principe. Terminons ce tour dhorizon de laspect matriel des interruptions en rcapitulant les nouveaux signaux de contrle que nous avons t amens dfinir: IRQ : demande dinterruption masquable (entre du CPU) NMI : demande dinterruption nom masquable et de plus haute priorit (entre du CPU) INTA : impulsion de lecture du vecteur dinterruption, gnre par le CPU lorsquil accepte une demande (sortie du CPU) SYNC : signal de synchronisation, pour le CPU que nous avons dvelopp, le signal dhorloge suffit (sortie CPU) PRI, PRO : entre et sortie de priorit dans un maillon dune daisy chain; ces signaux (deux par maillon) nont rien voir avec le CPU et ne sont pas busss puisquils sont spcifiques un maillon Pour complter notre CPU, nous sommes donc obligs dlargir dun bit notre mmoire de micoprogramme pour gnrer INTA, moins dutiliser les trois bits de contrle existant (RD, WR et M/IO) pour coder lopration ralise sur le bus: lecture mmoire, criture mmoire, lecture entre/sortie, criture sortie, lecture code opratoire, lecture vecteur dinterruption,... et dautres que nous verrons par la suite. Dans ce cas, un dcodeur est utilis en dehors du CPU de faon dcoder les signaux du bus de contrle.

XI-6 CPU et bus DMA


Jusquici, nous avons considr notre CPU comme le seul matre du bus, en ce sens quil dcide souvrainement des transactions qui vont avoir lieu. En fait, ainsi que nous lavons brivement mentionn au XI-4, il peut savrer ncessaire de grer certaines entres-sorties par accs direct la mmoire
20

REDS - EIVD

Cours

(DMA). Laccs direct la mmoire se faisant travers le bus, nous devons modifier notre CPU de faon ce quil soit possible de lui retirer la matrise du bus au profit du contrleur DMA. Sans vouloir tre exhaustif, nous tudierons la solution gnralement implmente dans les systmes microprocesseur comportant un ou plusieurs contrleurs de DMA. Normalement, cest le CPU qui a la matrise du bus, cest-dire quil impose ses signaux de contrle et dadresse, voir mme les signaux de donnes sil sagit dune opration dcriture. Lorsquun contrleur de DMA veut sapproprier le bus, il doit en faire la demande au CPU laide dun signal appel gnralement HOLD ou BUSREQ (bus request) ou DMAREQ (DMA request). Ce signal est test par le CPU de faon similaire une demande dinterruption, la fin de chaque micoprogramme (instruction machine). Mais au lieu daller lire un vecteur dinterruption, le CPU va simplement mettre ses sorties ltat haute impdance, sauf une sortie de quittance appele HOLDA ou BUSACK (bus acknoledge) ou DMAACK, et attendre passivement que la ligne HOLS soit dsactive avant de reprendre son travail comme si de rien ntait. La ligne de quittance HOLDA est ncessaire, bien quune demande de bus ne soit gnralement pas masquable, car il faut lasser au CPU le temps de ragir: il doit terminer linstruction en cours avant de sapercevoir de la demande et de passer ltat haute impdance.

Control Bus HOLD_L HOLDA_L PRIj_L PROj_L WR RD M/IO ACK0 CS

REQUEST

ACKNOW.

Adr Data
DMAReq0 Data Bus

Controleur de DMA

I/O

WR RD

Extrieur

Figure XI- 19 : Connection dun contrleur DMA sur un bus

Nous tudierons le contrleur de DMA dans le chapitre sur linterfaage. Pour linstant, nous nous contenterons de savoir que la connection dun contrleur

21

Chapitre XI, Architecture

Vesion du 24 juin 2008

de DMA au bus pour lequel il a t prvu, ne demande pas de circuiterie supplmentaire. Sil y a plusieurs entres/sorties en DMA dans un systme, la priorit est gnralement rgle laide dune chane de priorit (daisy chain) similaire celle utilise pour les interruptions un seul niveau. La figure 19 nous en montre un maillon. Pour quil permette le DMA, notre CPU devra donc comprendre une entre supplmentaire HOLD (ou BUSREQ ou DMAREQ) pour recevoir une demande, et une sortie supplmentaire HOLDA (ou BUSACK ou DMAACK) pour signifier son acceptation. Comme pour le INTA, le HOLDA peut tre obtenu par une combinaison des trois bits de programme dj existant savoir RD, WR et M/IO, puisque nous avons affaire des situations mutuellement exclusives: le CPU ne peut la fois accepter une demande de DMA ou une interruption et lire un code opratoire, par exemple.

XI-7 Bus synchrones, semi-synchrones et asynchrones


Dans les instructions que nous avons microprogrammes pour notre CPU, nous avons toujours mnag un temps correspondant deux priodes dhorloge entre lenvoi dune adresse et la conclusion dune lecture ou dune criture. Ceci tient compte du fait que le temps daccs de la mmoire est gnralement suprieur au temps de cycle du CPU. En procdent de cette manire nous obtenons des transferts dits synchrones : cest le CPU qui donne la cadence, et le temps allou pour un transfert ne peut tre vari quen variant la frquence de lhorloge ou en modifiant la microprogrammation. Cette rigidit fait que, la microprogrammation tant normalement inaccessible dans les microprocesseurs, la frquence dhorloge doit tre choisie en fonction du module de mmoire ou dentre/sortie le plus lent faisant partie du systme, limitant ainsi les performances de lensemble. Lorsquun CPU doit communiquer avec des mmoires et des entres/sorties ayant des temps daccs trs diffrents les uns des autres, il est intressant dutiliser un protocole de transfert qui adapte les temps de transfert aux possibilits des diffrents circuits. Cest le cas des protocoles asynchrones totalement ou partiellement entrelacs, dont les figures 20 (a) et (b) nous montre le principe. Dans un protocole asynchrone, linitiateur dun transfert (il sagit gnralement du CPU) active un signale de commande READ ou WRITE et attend la rponse de son interlocuteur sour la forme de lactivation dun signal de quittance, souvent appel DATACK (data acknowledge). Lorsque le CPU (le matre du bus) reoit la quittance, il termine le transfert et dsactive le READ ou le WRITE. Dans un protocole asynchrone partiellement entrelac, la conversation sarrte l, et la dsactivation de DATACK par linterlocuteur (esclave) a lieu aprs un temps indpendant du CPU. Par contre, dans un protocole totalement entrelac, la dsactivation du READ ou du WRITE par

22

REDS - EIVD

Cours

le matre indique lesclave que le transfert est termin et quil peut alors dsactiver DATACK; ce nest que lorsque DATACK sera inactif que le CPU pourra initier un autre cycle READ ou WRITE.

Read/Write (maitre) DATACK (esclave) (a) (b)

Figure XI- 20 : Chronogramme dun protocole asynchrone

Un protocole asynchrone partiellement entrelac (figure 20 (b)) impose de spcifier une dure maximum ne pas dpasser pour limpulsion DATACK, sous peine de voir un nouveau cycle READ ou WRITE commencer alors que limpulsion de quittance du prcdent nest pas termine (voir traitill dans la figure 20 (b)). Le protocole asynchrone totalement entrelac ne souffre pas dun tel inconvnient. Par contre, son plus grand nombre dchanges conversationnels le rend plus lent et plus gourmand en circuiterie. Le protocole de loin le plus utilis dans les microprocesseurs est de type semisynchrone. Dans ce protocole, au lieu de conclure un transfert dans un nombre de cycles dhorloge fixe comme dans un protocole synchrone, le CPU va tester un signal appel READY (prt) ou BUSY (occup) ou WAIT (attend) avant de terminer son impulsion READ ou WRITE. Si ce signal, gnr par linterlocuteur interpel, indique quil faut attendre (READY_H = 0 ou BUSY_H = 1 OU WAIT_L = 0), le CPU attend un cycle dhorloge complet puis reteste ce signal et ainsi de suite. Ainsi donc, si une mmoire ou une entre/sortie ne sont pas assez rapides pour effectuer des changes avec le CPU selon le protocole synchrone, elles peuvent lui demander dattendre un certain nombre (entier) de priodes dhorloge. Le protocole semi-synchrone permet donc de relier par un bus des lments ayant des temps de rponse trs divers. Comme seuls les lments trop lent pour travailler en synchrone doivent gnrer le signal WAIT (ou READY ou BUSY), le protocole semi-synchrone est plus conomique que les protocoles asynchrones, mme le partiellement entrelac. Par contre, vu que la demande dattendre doit arriver au CPU dans certain dlais (avant quil teste la ligne WAIT), le bus sera limit en longueur (le temps de propagation dun signal le long dune ligne est proportionnel la longueur de la ligne). De plus, lattente durant obligatoirement un nombre entier de cycles dhorloge, elle sera souvent suprieur au strict minimum.

23

Chapitre XI, Architecture

Vesion du 24 juin 2008

Clock Read/Write

Wait
Occup Occup Libre
Figure XI- 21 : Chronogramme dun protocole semi-synchrone

La figure 21 nous montre un change semi-synchrone avec deux cycles dattente. Le signal WAIT est gnr de faon synchrone, par exemple avec le circuit de la figure 22, plutt quavec un monostable.

Adress Bus Control Bus WR_L RD_L Clock Wait_L

ALS 164
SRG8 R

Dcodeur d'adresses
CS_L

C1 & 1D

vers RAM

Figure XI- 22 : Circuit permettant la gnration dun signal Wait synchrone

Ce schma nous montre comment gnrer une priode dattente la lecture et deux lcriture, par exemple pour une RAM. Lorsque ni READ ni WRITE ne sont actifs, le registre dcalages est remis zro. Aussitt que la RAM est active (CS_L devient actif) en lecture ou en criture, le signal WAIT devient actif. Il faut noter quil est gnr par une sortie collecteur ouvert pour pouvoir effectuer un OU cbl avec les signaux correspondants gnrs par les autres lments lents connects sur le bus. Alors que le signal WAIT est test sur le flanc montant de lhorloge, il reste actif, dans ce montage, jusquau flanc descendant du deuxime (en lecture) ou du troisime (en criture) coups dhorloge qui suit lapparition du READ ou du WRITE.

24

REDS - EIVD

Cours

Pour que notre CPU effectue ses transferts sur le bus selon ce protocole semisynchrone, il suffit de le doter dune entre supplmentaire, WAIT_L, tester cette entre dans les microprogrammes avant chaque transfert, et attendre quelle soit inactive. Souvent, ce travail supplmentaire ne demandera pas de microinstruction supplmentaire.

XI-8 Bus multiplexs


En intgrant un CPU en un seul botier, on se heurte un problme dencapsulage: le nombre de connections que ncessite le CPU, donc le nombre de pattes du botier, dpasse facilement la cinquantaine, ce qui rend le botier coteux. Pour diminuer le nombre de connections, il est possible de coder les signaux de commande. Nous avons dj prconis cette technique pour conomiser de la mmoire de microprogramme. Les signaux de commande sortant du CPU tant cods, il faudra alors utiliser un dcodeur externe. Une autre technique permettant de diminuer considrablement le nombre de connections du CPU est le multiplexage des adresses et/ou des donnes: les mmes lignes permettront de transmettre tantt des adresses, tantt des donnes, lorchestration tant faite bien sr par le CPU laide de signaux de commande.

Latch

CPU

ALE

C1

Bus d'adresse dmultiplex


Adress Bus

1D Adr. Data Data Bus

Figure XI- 23 : Exemple de bus multiplex

Dans le CPU que nous avons dvelopp, multiplexons les 16 bits de donnes, par exemple. Il suffit pour cela de commander de faon approprie les output enable des registres MAR et DOR, ce qui nintroduira que des changements minimes des nos microprogrammes. Mais il faudra bien pouvoir indiquer si cest une adresse ou une donne qui est sur le bus, et pour cela un signal de commande supplmentaire est ncessaire. Appelons-le ALE pour Address Latch Enable, et activons ce signal lorsque ladresse est prsente: il nous permettra alors de mmoriser ladresse dans un latch et deffectuer ainsi simplement le dmultiplexage, comme nous le montre la figure 23.

25

Chapitre XI, Architecture

Vesion du 24 juin 2008

26