<!doctype linuxdoc system>
<article>
<title>Br&egrave;ve introduction aux syst&egrave;mes et processeurs Alpha</title>
<author>
  Neal Crook, Digital Equipment
  (Publication: <url url="mailto:davidm@azstarnet.com" name="David Mosberger">)
  (Adaptation Fran&ccedil;aise par Christophe Vallat (miodrag@mygale.org))
</author>
<date>V0.11, 6 Juin 1997

<abstract>
Ce document est un rapide aper&ccedil;u des processeurs et syst&egrave;mes Alpha existants.
Il y a un peu de parti pris, &agrave; cause de mon exp&eacute;rience personnelle. Bien que je
sois un employ&eacute; de Digital Equipment Corporation, il ne s'agit pas d'un d'un
document officiel de Digital et les opinions exprim&eacute;es sont les miennes, pas
celles de Digital.
</abstract>

<toc>

<sect>Qu'est-ce que Alpha ?

<p> &dquot;Alpha&dquot; est le nom donn&eacute; &agrave; l'architecture RISC 64 bits de Digital. Le projet Alpha commen&ccedil;a &agrave; Digital &agrave; la mi-1989, dans le but
de fournir une voie de migration haute-performance pour les clients VAX. Il ne s'agit pas de la premi&egrave;re architecture RISC produite
par Digital, mais ce fut la premi&egrave;re &agrave; &ecirc;tre mise sur le march&eacute;. Quand Digital a annonc&eacute; Alpha en mars 1992, elle a pris la d&eacute;cision
d'entrer sur le march&eacute; des composants &eacute;lectroniques en vendant des microprocesseurs Alpha.

<p> Alpha est parfois d&eacute;sign&eacute; par Alpha AXP, pour de vieilles et obscures raisons qu'il est inutile de pr&eacute;ciser. Il suffit de dire
que c'est exactement la m&ecirc;me chose.

<sect>Qu'est-ce que Digital Semiconductor ?

<p> <url url="http://www.digital.com/info/semiconductor/" name="Digital Semiconductor"> (DS) est la section commerciale de Digital
Equipment Corporation (Digital - nous n'aimons pas le sigle DEC) qui vend les composants &eacute;lectroniques. Parmi les produits de
Digital figurent les processeurs, les chipsets associ&eacute;s, les pontages PCI-PCI et les composants PCI pour la communication et le
multim&eacute;dia.

<sect>Processeurs Alpha

<p>Il y a actuellement 2 g&eacute;n&eacute;rations de base de processeur impl&eacute;mentant l'architecture Alpha :

<itemize>
<item> EV4
<item> EV5
</itemize>

<p>Les avis diff&eacute;rent quant au sens de &dquot;EV&dquot; (note : la vraie r&eacute;ponse est bien entendu &dquot;Electro Vlassic&dquot; <ref id="ref1" name="[1]">),
mais le chiffre repr&eacute;sente la premi&egrave;re g&eacute;n&eacute;ration de technologie CMOS de Digital avec laquelle le processeur a &eacute;t&eacute; con&ccedil;u. Ainsi, EV4
a &eacute;t&eacute; initialement con&ccedil;ue en CMOS4. Au fil du temps, un processeur tend a trouver une nouvelle jeunesse en &eacute;tant optiquement
r&eacute;tr&eacute;cie dans la nouvelle g&eacute;n&eacute;ration de CMOS. EV45 est donc la base EV4 con&ccedil;ue en CMOS5. Il y a une grande diff&eacute;rence entre r&eacute;tr&eacute;cir
une conception pour une technologie particuli&egrave;re et la reconcevoir pour cette technologie (mais je ne veux pas entrer dans les
d&eacute;tails). Il y a encore quelques variantes : la CMOS4S (r&eacute;tr&eacute;cissement optique de la CMOS4) et une CMOS5L.

<p>Les vrais technophiles seront curieux de savoir que CMOS4 est une gravure en 0,75 micron, CMOS5 est une gravure en 0,5 micron, et
CMOS6 est une gravure en 0,35 micron.

<p>Pour faire correspondre ces bases de processeur aux <em/puces/ nous avons:

<descrip>
<tag/21064-150,166/		EV4 (initialement), EV4S (maintenant)
<tag/21064-200/			EV4S
<tag/21064A-233,275,300/	EV45
<tag/21066/			LCA4S (base EV4, avec coprocesseur EV4)
<tag/21066A-233/		LCA45 (base EV4, mais avec coprocesseur EV45)
<tag/21164-233,300,333/		EV5
<tag/21164A-417/		EV56
<tag/21264/			<url name="EV6" url="http://www.mdronline.com/report/articles/21264/21264.html">
</descrip>

<p>La base EV4 est un noyau double-&eacute;coulement (il peut traiter 2 instructions processeur par cycle d'horloge) super-pipelin&eacute; avec
une unit&eacute; de calcul entier, une unit&eacute; de calcul flottant et pr&eacute;diction de branchement. Il a des bus de donn&eacute;es internes de 64 bits
et des caches de 8Ko &eacute;troitement coupl&eacute;s, un jeu de chaque pour les instructions, et pour les donn&eacute;es. Les caches sont en &eacute;criture
imm&eacute;diate (&dquot;write-through&dquot;).

<p>La base EV45 a quelques am&eacute;liorations par rapport &agrave; la base EV4 : l'unit&eacute; de calcul flottant est l&eacute;g&eacute;rement am&eacute;lior&eacute;e, et les
caches sont de 16Ko. (Note : Neal Crook a indiqu&eacute; dans un courrier s&eacute;par&eacute; que les modifications de l'unit&eacute; de calcul flottant
am&eacute;liorent les performances de la division. La FPU de l'EV4 prend 34 cycles pour une division en simple pr&eacute;cision et 63 cycles pour
une division en double-pr&eacute;cision (quelles que soient les donn&eacute;es). En comparaison, le FPU de l'EV45 prend g&eacute;n&eacute;ralement 19 cycles
(34 au pire) pour la simple pr&eacute;cision et 29 cycles (63 au pire) pour la double-pr&eacute;cision (en fonction des donn&eacute;es).)

<p>La base EV5 est un noyau quadruple-&eacute;coulement, &eacute;galement super-pipelin&eacute; etc etc. Il a des caches de 8 Ko &eacute;troitement coupl&eacute;s,
un de pour les instructions et un pour les donn&eacute;es. Ces caches sont en &eacute;criture imm&eacute;diate. Il dispose &eacute;galement d'un cache de
deuxi&egrave;me niveau de 96 Ko sur le processeur (le Scache) qui est associatif 3-morceaux et en &eacute;criture diff&eacute;r&eacute;e (&dquot;write back&dquot;).
Le gain de performance de l'EV4 &agrave; l'EV5 est sup&eacute;rieur au seul gain g&eacute;n&eacute;r&eacute; par l'augmentation de la fr&eacute;quence. En plus des caches
plus grands et du quadruple-&eacute;coulement, il y a aussi des am&eacute;liorations de sa microarchitecture pour r&eacute;duire les temps d'attente
producteur/consommateur dans certaines voies.

<p>La base EV56 est fondamentalement la m&ecirc;me microarchitecture que l'EV5, mais ajoute quelques nouvelles instructions pour la
lecture et l'&eacute;criture sur 8 et 16 bits (cf. section <ref id="byte ld/st" name="Les octets et leur multiples">). Elles sont
principalement destin&eacute;es aux pilotes de p&eacute;riph&eacute;riques. La base EV56 est r&eacute;alis&eacute;e en CMOS6, en 2,0 Volts.

<p>Le 21064 a &eacute;t&eacute; annonc&eacute; en mars 1992. Il utilise la base EV4, avec un bus de 128 bits. L'interface du bus supporte une
connexion 'facile' d'un cache externe de deuxi&egrave;me niveau, avec une taille de bloc de 256 bits (2 fois la taille du bus). La vitesse
de ce Bcache est enti&egrave;rement configurable logiciellement. Le 21064 peut aussi &ecirc;tre configur&eacute; pour utiliser un bus externe de 64 bits
(mais je crois qu'aucun syst&egrave;me n'utilise ce mode). Le 21064 n'impose aucune contrainte sur le Bcache, mais il est g&eacute;n&eacute;ralement
configur&eacute; en &eacute;criture diff&eacute;r&eacute;e. Le 21064 contient un syst&egrave;me permettant &agrave; du mat&eacute;riel s&eacute;par&eacute; de maintenir la coh&eacute;rence entre le
Bcache et le cache interne, mais c'est complexe.

<p>Le 21066 utilise la base EV4 et int&eacute;gre un contr&ocirc;leur de m&eacute;moire et un pontage de bus PCI. Pour &eacute;conomiser des broches, le
contr&ocirc;leur de m&eacute;moire a un bus de 64 bits (mais les caches internes ont une taille de bloc de 256 bits, comme le 21064, donc une
lecture de bloc prend 4 cycles du bus). Le contr&ocirc;leur de m&eacute;moire supporte le BCache et la DRAM externe. La vitesse du Bcache et de
la DRAM est enti&egrave;rement configurable logiciellement, et peut &ecirc;tre contr&ocirc;l&eacute; &agrave; la vitesse du processeur. La d&eacute;composition en 4 acc&egrave;s
pour remplir un bloc de cacte n'est pas si mauvais qu'on peut le penser parce que l'acc&egrave;s &agrave; la DRAM est fait en mode page.
Malheureusement, le contr&ocirc;leur de m&eacute;moire ne supporte ni les types de DRAM &eacute;sot&eacute;rique (SDRAM, EDO ou BEDO), ni les RAMs de cache
synchrone. L'interface du bus PCI est enti&egrave;rement compatible avec PCI 2.0 et tourne jusqu'&agrave; 33 MHz.

<p>Le 21164 a un bus de donn&eacute;es de 128 bits et supporte les lectures partielles, avec jusqu'&agrave; deux lectures en cours en m&ecirc;me temps
(ce qui permet une utilisation &agrave; 100&percnt; du bus de donn&eacute;es dans les meilleures conditions de r&ecirc;ve, i.e. il est possible th&eacute;oriquement
de transf&eacute;rer 128 bits de donn&eacute;es &agrave; chaque cycle du bus). Le 21164 supporte une connexion facile d'un cache de troisi&egrave;me niveau
(Bcache) et a tout le syst&egrave;me pour permettre &agrave; du mat&eacute;riel externe de maintenir la coh&eacute;rence de tous les caches. De cette fa&ccedil;on,
les conceptions de multiprocesseur sym&eacute;trique sont 'faciles'.

<p>Le 21164A a &eacute;t&eacute; annonc&eacute; en octobre 1995. Il utilise la base EV56. Son brochage est compatible avec celui du 21164, mais
n&eacute;cessite des lignes d'alimentation s&eacute;par&eacute;es ; toutes les broches qui &eacute;taient +3,3 Volts sur le 21164 ont &eacute;t&eacute; divis&eacute;es en deux
groupes ; un groupe fournit 2,0 Volts au coeur du processeur, l'autre fournissant 3,3 Volts aux unit&eacute;s d'entr&eacute;es/sorties. 
Contrairement aux anciennes conceptions, les broches du 21164A n'acceptent pas 5 Volts. Le r&eacute;sultat de ce changement est que les
syst&egrave;mes 21164 ne peuvent en g&eacute;n&eacute;ral pas &ecirc;tre mis &agrave; jour en 21164A (bien qu'il soit relativement simple de concevoir un syst&egrave;me
21164A qui puisse aussi accepter un 21164). Le 21164A dispose &eacute;galement de quelques nouvelles broches pour supporter les lectures et
&eacute;critures sur 8 et 16 bits. Il am&eacute;liore &eacute;galement le support du 21164 pour les SRAMs synchrones qui composent le Bcache.

<sect>Performances compar&eacute;es du 21064 et du 21066

<p>Le 21064 et le 21066 ont la m&ecirc;me base (EV4). Si le m&ecirc;me programme tourne sur un 21064 et un 21066, &agrave; la m&ecirc;me fr&eacute;quence, alors
la diff&eacute;rence de performance provient uniquement de la bande passante entre le Bcache et la m&eacute;moire. Du code qui tombe
principalement dans les caches <em/internes/ tournera aussi rapidement. Il y a 2 principaux tueurs de performances :

<enum>

<item> Du code qui &eacute;crit &eacute;norm&eacute;ment. Malgr&eacute; les buffers en &eacute;criture du 21064 et du 21066 pour &eacute;conomiser certains d&eacute;lais, du code
qui &eacute;crit &eacute;norm&eacute;ment sera &eacute;trangl&eacute; par la bande passante en &eacute;criture du bus syst&egrave;me. Cela est du au fait que les cache du processeur
sont en &eacute;criture imm&eacute;diate.

<item> Du code qui veut traiter les flottants en tant qu'entiers. L'architecture Alpha ne permet pas des transferts entre registres
entiers et registres flottants. Une telle conversion doit &ecirc;tre faite en m&eacute;moire (Et du coup, puisque les caches du processeur sont
en &eacute;criture imm&eacute;diate, via le Bcache). (Note : il semble que l'EV4 et l'EV45 peuvent effectuer la conversion via le premier cache
de donn&eacute;es (Dcache), &agrave; partir du moment ou la m&eacute;moire est cach&eacute;e. Dans ce cas, l'&eacute;criture faite par la s&eacute;quence de conversion
mettra &agrave; jour le Dcache et la lecture qui va suivre sera, dans certaines circonstances, capable de lire la valeur du Dcache,
&eacute;vitant un co&ucirc;teux transfert depuis le Bcache. En particulier, il semble meilleur d'ex&eacute;cuter les instructions stq/ldt ou stt/ldq
dos &agrave; dos, ce qui est plut&ocirc;t contraire &agrave; l'intuition.)

</enum>

<p>Si vous effectuez la m&ecirc;me comparaison entre un 21064A et un 21066A, il y a un facteur suppl&eacute;mentaire du aux diff&eacute;rentes tailles
des Icache et Dcache entre les deux processeurs.

<p>Maintenant, le 21164 r&eacute;soud ces deux probl&egrave;mes : il atteint des <em/bien/ meilleures bandes passantes du bus syst&egrave;me (malgr&eacute;
le m&ecirc;me nombre de broches de signal - oui, je <em/sais/ que c'est &agrave; peu pr&egrave;s deux fois plus qu'un 21064, mais les suppl&eacute;mentaires
sont l'alimentation et la masse ! (oui, r&eacute;ellement!!)) et il a des caches en &eacute;criture diff&eacute;r&eacute;e. Le seul probl&egrave;me restant est la
r&eacute;ponse &agrave; la question &dquot;combien il co&ucirc;te ?&dquot;

<sect>Quelques notes sur les fr&eacute;quences

<p>Tous les processeurs Alpha actuels utilisent des horloges &agrave; haute vitesse, parce que leur microarchitecture a &eacute;t&eacute; con&ccedil;ue comme
&dquot;en cycles courts&dquot;. Cependant, du coup, aucun des bus syst&egrave;mes n'a besoin de tourner &agrave; de telles vitesses  :

<itemize>

<item> sur les 21066(A), 21064(A) et 21164 la vitesse du cache externe (Bcache) est enti&egrave;rement programmable, &agrave; la r&eacute;solution de
l'horloge du processeur. Par exemple, pour un processeur &agrave; 275 MHz, le temps d'acc&egrave;s en lecture du Bcache peut &ecirc;tre contr&ocirc;l&eacute; avec
une r&eacute;solution de 3,6 ns.

<item> sur les 21066(A), la vitesse des DRAM est enti&egrave;rement programmable, &agrave; la r&eacute;solution de l'horloge du processeur (<em/pas/
celle du bus PCI).

<item> sur les 21064(A) et 21164(A), la fr&eacute;quence du bus syst&egrave;me est un sous-multiple de cele du processeur. La plupart des cartes
m&egrave;res 21064 utilisent une horloge du bus syst&egrave;me &agrave; 33 MHz.

<item> Le syst&egrave;mes &agrave; base de 21066 peuvent faire tourner le bus PCI &agrave; n'importe quelle fr&eacute;quence par rapport au processeur. En
g&eacute;n&eacute;ral, le bus PCI tourne &agrave; 33 MHz.

<item> Les syst&egrave;mes qui utilisent les chipset APECS (cf. section <ref id="Les chipsets">) ont toujours la fr&eacute;quence du bus
processeur &eacute;gale &agrave; celle du bus PCI. Cela signifie que les deux bus tendent &agrave; tourner soit &agrave; 25 MHz, soit &agrave; 33 MHz (puisque ce sont
les fr&eacute;quences qui sont sous-multiples de celle du processeur). Sur les syst&egrave;mes APEC, la vitesse du contr&ocirc;leur de DRAM est
programmable logiciellement en fonction de la fr&eacute;quence du bus processeur.

</itemize>

<bf/Note:/ quelqu'un a sugg&eacute;r&eacute; qu'il obtenait de mauvaises performances sur un syst&egrave;me 21066 parce que le contr&ocirc;leur de m&eacute;moire du
21066 ne tourne qu'&agrave; 33 MHz. En fait, ce sont soulement les syst&egrave;mes super-rapides 21064A qui ont des contr&ocirc;leurs de m&eacute;moire qui
tournent 'seulement' &agrave; 33 MHz.

<sect>Les chipset <label id="Les chipsets">

<p>DS vend deux chipsets de support processeur. Le chipset 2107x (d&eacute;nomm&eacute; APECS) supporte les 21064(A). Le chipset 2117x (d&eacute;nomm&eacute;
ALCOR) supporte les 21164. Il y aura aussi un chipset 2117xA (d&eacute;nomm&eacute; ALCOR 2) qui supportera le 21164A.

<p>Ces deux chipsets fournissent des contr&ocirc;leurs de m&eacute;moire et des pontages PCI pour leur processeur. APECS fournit un pontage
PCI de 32 bits, ALCOR fournit un pontage PCI de 64 bits qui (conform&eacute;ment &agrave; la sp&eacute;cification PCI) peut supporter des p&eacute;riph&eacute;riques
PCI aussi bien 32 bits que 64 bits.

<p>APECS consiste en 6 puces de 208 broches (4 registres de 32 bits (DECADE), 1 contr&ocirc;leur syst&egrave;me (COMANCHE), 1 contr&ocirc;leur PCI
(EPIC)). Il fournit un contr&ocirc;leur de DRAM (bus m&eacute;moire de 128 bits) et une interface PCI. Il effectue &eacute;galement tout le travail
de maintien de la coh&eacute;rence quand un p&eacute;riph&eacute;rique PCI effectue une op&eacute;ration DMA vers (ou depuis) la m&eacute;moire.

<p>ALCOR consiste en 5 puces (4 registres de 64 bits (Data Switch, DSW) 208 broches PQFP et 1 contr&ocirc;leur (Control, I/O Address,
CIA) - un bo&icirc;tier plastique de 383 broches). Il fournit un contr&ocirc;leur de DRAM (bus m&eacute;moire de 256 bits) et une interface PCI.
Il effectue &eacute;galement tout le travail de maintion de coh&eacute;rence quand un p&eacute;riph&eacute;rique PCI effectue une op&eacute;ration DMA vers (ou depuis)
la m&eacute;moire.

<p>Il n'existe pas de chipset supportant le 21066, puisque le contr&ocirc;leur de m&eacute;moire et le pontage PCI sont int&eacute;gr&eacute;s dans le
processeur.

<sect>Les syst&egrave;mes

<p>Le groupe applications de DS produit des exemples de conceptions utilisant les processeurs et leurs chipsets associ&eacute;s. Il s'agit
typiquement de cartes m&egrave;res de format PC-AT, avec toutes les fonctionnalit&eacute;s que vous trouverez typiquement sur une carte m&egrave;re
Pentium haut de gamme. Initialement, ces exemples de conception &eacute;taient destin&eacute;s &agrave; &ecirc;tre utilis&eacute;s comme point de d&eacute;part pour des
tierces parties pour concevoir des cartes m&egrave;res. Ces conceptions de premi&egrave;re g&eacute;n&eacute;ration furent nomm&eacute;es Evaluation Boards (EB).
Comme la quantit&eacute; de travail n&eacute;cessaire pour concevoir une carte m&egrave;re a augment&eacute; (&agrave; cause de la mont&eacute;e en fr&eacute;quence des processeurs
et pour respecter les r&eacute;gles sur l'&eacute;mission de fr&eacute;quences radio) l'accent a &eacute;t&eacute; mis sur la conception de cartes m&egrave;res utilisables
pour une production en masse.

<p>Les groupes syst&egrave;me de Digital ont produit plusieurs g&eacute;n&eacute;rations de machines &agrave; base de processeurs Alpha. Certains de ces
syst&egrave;mes utilisent des chipsets con&ccedil;ues par les groupes syst&egrave;me, d'autres utilisent les chipsets de DS. Dans certains cas, les
syst&egrave;mes utilisent une combinaison des deux.

<p>Plusieurs tierces parties ont construit des syst&egrave;mes &agrave; base de processeurs Alpha. Certaines de ces entreprises ont con&ccedil;u leurs
syst&egrave;mes &agrave; partir de z&eacute;ro, d'autres ont utilis&eacute; les chipsets de DS, ou ont copi&eacute;/modifi&eacute; les exemples de conception de DS, ou
simplement assemblent leurs syst&egrave;mes &agrave; partir des cartes fabriqu&eacute;es et v&eacute;rifi&eacute;es par DS.

<p>L'EB64 : Conception obsol&egrave;te utilisant un 21064 avec un contr&ocirc;leur de m&eacute;moire impl&eacute;ment&eacute; en logique programm&eacute;e. Entr&eacute;es/Sorties
r&eacute;alis&eacute;es par de la logique programm&eacute;e pour s'interfacer &agrave; un chipset de pontage 486&lt;-&gt;ISA. Ethernet, SuperI/O (2S, 1P, LD)
int&eacute;gr&eacute; sur la carte m&egrave;re, bus ISA. Taille PC-AT. Alimentation standard PC.

<p>L'EB64+ : Utilise un 21064 ou un 21064A, et un APECS. Bus ISA et PCI (3 emplacements ISA, 2 emplacements PCI, une paire sur un
emplacement partag&eacute;). Supporte des SIMMs de DRAM 36 bits. Le bus ISA est g&eacute;r&eacute; par un chipset de pontage Intel Saturn. Contr&ocirc;leur
SCSI (NCR 810 PCI), ethernet (Digital 21040), contr&ocirc;leur clavier et souris (PS/2), SuperI/O (2S, 1P, LD), m&eacute;moire CMOS et
horloge sur la carte m&egrave;re. ROM de d&eacute;marrage en EPROM. Taille PC-AT. Alimentation standard PC.

<p>L'EB66 : Utilise un 21066 ou un 21066A. Le sous-syst&egrave;me d'entr&eacute;es sorties est identique &agrave; celui de l'EB64+. Taille baby PC-AT.
Alimentation standard PC. Les sch&eacute;mas de l'EB66 furent publi&eacute;s dans des publicit&eacute;s vantant le 21066 comme &dquot;le premier
microprocesseur au monde avec PCI int&eacute;gr&eacute;&dquot; (pour les amateurs d'anecdotes : il y a deux versions de cette publicit&eacute; - j'ai dessin&eacute;
les circuits et &eacute;crit le boniment dans la premi&egrave;re version, et des am&eacute;ricains ont malmen&eacute; le boniment pour la deuxi&egrave;me version)

<p>L'EB164 : Utilise un 21164 et ALCOR. Bus ISA et PCI (3 emplacements ISA, 2 emplacements PCI 64 bits (dont un partag&eacute; avec un
emplacement ISA) et 2 emplacements PCI 32 bits). Emplacement SIMM pour le Bcache. Le sous-syst&egrave;me d'entr&eacute;es sorties fournit un
contr&ocirc;leur SuperI/O (2S, 1P, LD), un contr&ocirc;leur clavier et souris (PS/2), m&eacute;moire CMOS et horloge. ROM de d&eacute;marrage en m&eacute;moire
flash. Taille PC-AT. N&eacute;cessite une alimentation en 3,3 Volts.

<p>L'AlphaPC64 (aussi nomm&eacute;e Cabriolet) : d&eacute;riv&eacute; de l'EB64+ mais d&eacute;sormais en taille baby PC-AT avec une ROM de d&eacute;marrage en flash,
et plus de contr&ocirc;leur SCSI et ethernet sur la carte m&egrave;re. 3 emplacements ISA, 4 emplacements PCI (dont un partag&eacute; avec un
emplacement ISA), emplacement SIMM pour le Bcache. N&eacute;cessite une alimentation en 3,3 Volts.

<p>L'AXPpci33 (aussi nomm&eacute;e NoName), est bas&eacute;e sur l'EB66. Cette conception est produite par le groupe technique OEM de Digital
(TOEM). A base d'un processeur 21066 tournant &agrave; 166 MHz ou 233 MHz. Taille baby PC-AT, n&eacute;cessite une alimentation standard PC.
5 emplacements ISA et 3 emplacements PCI (dont un partag&eacute; avec un emplacement ISA). Il existe deux versions, avec un connecteur
soit PS/2, soit DIN pour le clavier.

<p>D'autres cartes m&egrave;res &agrave; base de 21066 : la plupart, sinon toutes, disponibles sur le march&eacute; sont bas&eacute;es sur l'EB66 - il n'y a pas
beaucoup d'options dans la conception d'un syst&egrave;me 21066, parce que tout le contr&ocirc;le est fait par les puces.

<p>Multia (aussi nomm&eacute; Universal Desktop Box) : il s'agit d'un syst&egrave;me bo&icirc;tier bureau tr&egrave;s compact &agrave; base de 21066. Il comporte
deux ports PCMCIA, une carte graphique 21030 (TGA), une carte ethernet 21040 et un contr&ocirc;leur SCSI NCR 810, ainsi qu'un lecteur de
disquettes, 2 port s&eacute;rie et un port parall&egrave;le. Ses capacit&eacute;s d'extension sont limit&eacute;es (un emplacement PCI) &agrave; cause de sa petite
taille (il y a en plus des restrictions sur l'utilisation de l'emplacement PCI, dont je ne me souviens plus). (Notez que des Multia
&agrave; base de 21066A ou de Pentium sont aussi disponibles).

<p>DEC PC 150 AXP (aussi nomm&eacute; Jensen) : c'est un tr&egrave;s vieux syst&egrave;me Digital - l'un des syst&egrave;mes Alpha de premi&egrave;re g&eacute;n&eacute;ration. Il
n'est mentionn&eacute; ici que parce qu'un certain nombre de ces syst&egrave;mes semblent &ecirc;tre disponibles sur le march&eacute; de l'occasion. Le Jensen
est un syst&egrave;me grande tour qui utilise un 21064 &agrave; 150 MHz (des versions plus r&eacute;centes utilis&egrave;rent des processeurs plus rapides mais
je ne suis pas s&ucirc;r des vitesses). Il utilisait de la logique programm&eacute;e pour interfacer le processeur &agrave; un pontage 486&lt;-&gt;EISA.

<p>D'autres syst&egrave;mes &agrave; base de 21064(A) : il existe encore 3 ou 4 autres conceptions de cartes m&egrave;re (sans compter les <em/syst&egrave;mes/
Digital) et tous ceux que je connais sont d&eacute;riv&eacute;s de l'EB64+. Parmi ceux-ci :

<itemize>

<item>EB64+ (certains vendeurs l'ont assembl&eacute; et vendu sans modifications); taille AT.

<item>Carte m&egrave;re Aspen Systems : d&eacute;riv&eacute;e de l'EB64+ ; taille baby AT.

<item>Carte serveur Aspen Systems : beaucoup d'emplacements PCI (inclut un pontage PCI).

<item>AlphaPC64 (aussi nomm&eacute;e Cabriolet), taile baby AT.

</itemize>

<p>D'autres syst&egrave;mes &agrave; base de 21164(A) : le seul que je connaisse qui ne soit pas un simple clone d'un EB164 est un syst&egrave;me
de DeskStation. Ce syst&egrave;me est construit avec un contr&ocirc;leur de m&eacute;moire et d'entr&eacute;es/sorties propri&eacute;taire de DeskStation. Je ne sais
pas quelle est leur attitude vis-&agrave;-vis de Linux.

<sect>Les octets et leur multiples<label id="byte ld/st">

<p>Quand l'architecture Alpha fut pr&eacute;sent&eacute;e, elle &eacute;tait unique par rapport aux autres architectures RISC en emp&ecirc;chant les lectures
et &eacute;critures sur 8 et 16 bits. Elle supportait les lectures et &eacute;critures sur 32 et 64 bits (mot long et quadruple mot, dans la
terminologie Digital). Les co-architectes (Dick Sites et Rich Witek) justifiaient ce choix par ces avantages :

<enum>
<item> Le support des octets dans le cache et le sous-syst&egrave;me m&eacute;moire tend &agrave; ralentir les acc&egrave;s pour les quantit&eacute;s de 32 et 64
bits.
<item> Le support des octets rend difficile la cr&eacute;ation d'un circuit de correction d'erreur haute-vitesse dans le cache et le
sous-syst&egrave;me m&eacute;moire.

</enum>

<p>L'Alpha compense par de puissantes instructions pour la manipulation des octets et des groupes d'octets dans les registres de
64 bits. Les tests de performances standard pour les op&eacute;rations sur les cha&icirc;nes de caract&egrave;res (par exemples, certains tests de
Byte) montrent que l'Alpha se comporte tr&egrave;s bien pour la manipulation des octets.

<p>L'absence de lectures et &eacute;critures sur octet a des r&eacute;percussions sur certains s&eacute;maphores logiciels et sur la conception des
sous-syst&egrave;mes d'entr&eacute;es/sorties. La solution de Digital au probl&egrave;me des entr&eacute;es/sorties est d'utiliser certaines lignes d'adresse
de bas niveau pour sp&eacute;cifier la taille des donn&eacute;es pendant les transferts de donn&eacute;es, et de les d&eacute;coder en masque d'octets. Cet
adressage d&eacute;nomm&eacute; &dquot;adressage clairsem&eacute;&dquot; g&acirc;che une partie de l'espace d'adressage et rend l'espace d'entr&eacute;es/sorties non contig&uuml;
(j'en dirais plus sur cet adressage clairsem&eacute; quand j'aurai fini par l'&eacute;crire). Notez que l'espace d'entr&eacute;es/sorties, dans ce
contexte, se r&eacute;f&egrave;re &agrave; toutes les ressources pr&eacute;sentes sur le bus PCI et comprend aussi bien l'espace m&eacute;moire PCI que l'espace
d'entr&eacute;es/sorties PCI.

<p>Avec l'apparition du 21164A, l'architecture Alpha a &eacute;t&eacute; &eacute;tendue pour inclure l'adressage des octets. L'ex&eacute;cution des nouvelles
instructions sur un processeur plus ancien d&eacute;clenchera une exception PALcode OPCDEC, pour que le PALcode puisse g&eacute;rer cet acc&egrave;s.
Cela aura une incidence sur les performances. Les ramifications de ceci font que l'utilisation de ces instructions devraient (&agrave;
mon humble avis) &ecirc;tre limit&eacute;e aux pilotes de p&eacute;riph&eacute;riques plut&ocirc;t qu'aux applications.

<p>Ces nouvelles possibilit&eacute; de lecture et &eacute;criture au niveau octet signifient que de futurs chipsets pourront supporter un espace
d'entr&eacute;es/sorties contig&uuml;.

<sect>Le PALcode

<p>Cet emplacement est destin&eacute; &agrave; une section expliquant le PALcode. Je l'&eacute;crirai s'il y a suffisemment d'int&eacute;r&ecirc;t.

<sect>Portabilit&eacute;

<p>La possibilit&eacute; de faire tourner Linux sur n'importe quelle machine Alpha est g&eacute;n&eacute;ralement limit&eacute;e par votre possibilit&eacute; d'obtenir
des informations sur les d&eacute;tails sanglants de ses arcanes. Puisque des portages de Linux existent pour les cartes m&egrave;res EB66, EB64+
et EB164, tous les syst&egrave;mes bas&eacute;s sur les 21066, 21064/APECS et 21164/ALCOR devraient pouvoir faire tourner Linux avec tr&egrave;s peu
voire aucune modification. La principale diff&eacute;rence entre toutes ces cartes m&egrave;res est la fa&ccedil;on dont elles diffusent les
interruptions. Il y a trois sources d'interruptions :

<itemize>
<item> p&eacute;riph&eacute;riques int&eacute;gr&eacute;s
<item> p&eacute;riph&eacute;riques PCI
<item> p&eacute;riph&eacute;riques ISA
</itemize>

<p>Tous les syst&egrave;mes utilisent un syst&egrave;me de pontage d'entr&eacute;es/sorties (SIO) Intel en tant que pontage entre les bus PCI et ISA
(le bus principal est PCI, le bus ISA est un bus secondaire utilis&eacute; pour supporter les p&eacute;riph&eacute;riques anciens ou basse vitesse).
Le SIO contient la traditionnelle paire de 8259 cha&icirc;n&eacute;s.

<p>Certains syst&egrave;mes (par exemple le NoName) diffusent leurs interruptions via le SIO vers le processeur. Certains syst&egrave;mes ont
un contr&ocirc;leur d'interruptions s&eacute;par&eacute; et diffusent toutes les interruptions PCI plus l'interruption SIO (sortie du 8259) via ce
contr&ocirc;leur, et toutes les interruptions ISA via le SIO.

<p>Les autres diff&eacute;rences entre ces syst&egrave;mes comprennent :

<itemize>
<item> de combien d'emplacements ils disposent
<item> quels sont les p&eacute;riph&eacute;riques PCI int&eacute;gr&eacute;s
<item> si la ROM de d&eacute;marrage est en m&eacute;moire flash ou en EPROM
</itemize>

<sect>Plus d'informations

<p>Toutes les conceptions de cartes d'&eacute;valuation et de cartes m&egrave;res de DS sont libres de droits et la documentation compl&egrave;te pour
une conception co&ucirc;te environ 50&dollar; (300FF). Cela comprend tous les sch&eacute;mas, les sources des parties programm&eacute;es, les feuilles
d'informations du processeur et du chipset. Les kits de documentation sont disponibles aupr&egrave;s des distributeurs de Digital
Semiconductor. Je ne sugg&egrave;re pas de vous pr&eacute;cipiter aller l'acheter, mais je veux faire remarquer que ces informations sont
disponibles.

<p>J'esp&egrave;re que cela vous a &eacute;t&eacute; utile. Les commentaires, mises &agrave; jour, suggestions d'extension sont &agrave; envoyer &agrave;
<url url="mailto:neal.crook@reo.mts.digital.com" name="Neal Crook">.

<sect>R&eacute;f&eacute;rences

<p><label id="ref1"><url url="http://www.research.digital.com/wrl/publications/abstracts/TN-13.html" name="[1]">
Bill Hamburgen, Jeff Mogul, Brian Reid, Alan Eustace, Richard Swan, Mary Jo Doherty, and Joel Bartlett.
  <em/Characterization of Organic Illumination Systems/.  DEC WRL, Technical Note 13, April 1989.

</article>
