Breve introduction aux systemes et processeurs Alpha
 Neal  Crook, Digital Equipment (Publication: David Mosberger
 <mailto:[email protected]>)  (Adaptation  Francaise   par
 Christophe Vallat ([email protected]))
 V0.11, 6 Juin 1997

 Ce  document  est  un  rapide apercu des processeurs et systemes Alpha
 existants.  Il y a un peu de parti pris, a  cause  de  mon  experience
 personnelle. Bien que je sois un employe de Digital Equipment Corpora-
 tion, il ne s'agit pas d'un d'un document officiel de Digital  et  les
 opinions exprimees sont les miennes, pas celles de Digital.

 11..  QQuu''eesstt--ccee qquuee AAllpphhaa ??

 "Alpha"  est le nom donne a l'architecture RISC 64 bits de Digital. Le
 projet Alpha commenca a Digital a 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 premiere architecture RISC produite par Digital, mais
 ce  fut la premiere a etre mise sur le marche. Quand Digital a annonce
 Alpha en mars 1992, elle a pris la decision d'entrer sur le marche des
 composants electroniques en vendant des microprocesseurs Alpha.

 Alpha  est parfois designe par Alpha AXP, pour de vieilles et obscures
 raisons qu'il est inutile de preciser. Il suffit  de  dire  que  c'est
 exactement la meme chose.

 22..  QQuu''eesstt--ccee qquuee DDiiggiittaall SSeemmiiccoonndduuccttoorr ??

 Digital   Semiconductor   <http://www.digital.com/info/semiconductor/>
 (DS) est la  section  commerciale  de  Digital  Equipment  Corporation
 (Digital  -  nous  n'aimons  pas le sigle DEC) qui vend les composants
 electroniques. Parmi les produits de Digital figurent les processeurs,
 les chipsets associes, les pontages PCI-PCI et les composants PCI pour
 la communication et le multimedia.

 33..  PPrroocceesssseeuurrss AAllpphhaa

 Il y a actuellement 2 generations de base de  processeur  implementant
 l'architecture Alpha :

 +o  EV4

 +o  EV5

 Les  avis different quant au sens de "EV" (note : la vraie reponse est
 bien entendu "Electro Vlassic" ``[1]''), mais le chiffre represente la
 premiere  generation  de  technologie CMOS de Digital avec laquelle le
 processeur a ete concu. Ainsi, EV4 a ete initialement concue en CMOS4.
 Au fil du temps, un processeur tend a trouver une nouvelle jeunesse en
 etant optiquement retrecie dans la nouvelle generation de  CMOS.  EV45
 est  donc  la  base  EV4 concue en CMOS5. Il y a une grande difference
 entre retrecir une conception pour une technologie particuliere et  la
 reconcevoir  pour  cette  technologie (mais je ne veux pas entrer dans
 les  details).  Il  y  a  encore  quelques  variantes  :   la   CMOS4S
 (retrecissement optique de la CMOS4) et une CMOS5L.

 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.

 Pour faire correspondre ces bases de processeur aux _p_u_c_e_s nous avons:

    2211006644--115500,,116666
       EV4 (initialement), EV4S (maintenant)

    2211006644--220000
       EV4S

    2211006644AA--223333,,227755,,330000
       EV45

    2211006666
       LCA4S (base EV4, avec coprocesseur EV4)

    2211006666AA--223333
       LCA45 (base EV4, mais avec coprocesseur EV45)

    2211116644--223333,,330000,,333333
       EV5

    2211116644AA--441177
       EV56

    2211226644
       EV6 <http://www.mdronline.com/report/articles/21264/21264.html>

 La  base  EV4  est  un  noyau  double-ecoulement  (il  peut  traiter 2
 instructions processeur par cycle d'horloge) super-pipeline  avec  une
 unite  de calcul entier, une unite de calcul flottant et prediction de
 branchement. Il a des bus de donnees internes de 64 bits et des caches
 de 8Ko etroitement couples, un jeu de chaque pour les instructions, et
 pour les donnees. Les  caches  sont  en  ecriture  immediate  ("write-
 through").

 La  base  EV45  a  quelques  ameliorations par rapport a la base EV4 :
 l'unite de calcul flottant est legerement  amelioree,  et  les  caches
 sont de 16Ko. (Note : Neal Crook a indique dans un courrier separe que
 les  modifications  de  l'unite  de  calcul  flottant  ameliorent  les
 performances  de la division. La FPU de l'EV4 prend 34 cycles pour une
 division en simple precision et 63 cycles pour une division en double-
 precision  (quelles que soient les donnees). En comparaison, le FPU de
 l'EV45 prend generalement 19  cycles  (34  au  pire)  pour  la  simple
 precision  et  29  cycles  (63  au  pire) pour la double-precision (en
 fonction des donnees).)

 La base  EV5  est  un  noyau  quadruple-ecoulement,  egalement  super-
 pipeline  etc  etc. Il a des caches de 8 Ko etroitement couples, un de
 pour les instructions et un pour  les  donnees.  Ces  caches  sont  en
 ecriture immediate. Il dispose egalement d'un cache de deuxieme niveau
 de 96 Ko sur le processeur (le Scache) qui est  associatif  3-morceaux
 et  en  ecriture  differee  ("write back").  Le gain de performance de
 l'EV4 a l'EV5 est superieur au seul gain genere par l'augmentation  de
 la  frequence.  En  plus  des  caches  plus  grands  et  du quadruple-
 ecoulement, il y a aussi des  ameliorations  de  sa  microarchitecture
 pour   reduire   les   temps  d'attente  producteur/consommateur  dans
 certaines voies.

 La base EV56 est fondamentalement la meme microarchitecture que l'EV5,
 mais  ajoute  quelques  nouvelles  instructions  pour  la  lecture  et
 l'ecriture sur 8  et  16  bits  (cf.  section  ``Les  octets  et  leur
 multiples'').  Elles  sont  principalement  destinees  aux  pilotes de
 peripheriques. La base EV56 est realisee en CMOS6, en 2,0 Volts.

 Le 21064 a ete annonce 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 deuxieme niveau, avec une taille de bloc de  256
 bits  (2  fois  la  taille  du  bus).  La  vitesse  de  ce  Bcache est
 entierement configurable logiciellement.  Le  21064  peut  aussi  etre
 configure  pour  utiliser  un  bus  externe  de 64 bits (mais je crois
 qu'aucun  systeme  n'utilise  ce  mode).  Le  21064  n'impose   aucune
 contrainte  sur  le  Bcache,  mais  il  est  generalement configure en
 ecriture differee. Le  21064  contient  un  systeme  permettant  a  du
 materiel  separe de maintenir la coherence entre le Bcache et le cache
 interne, mais c'est complexe.

 Le 21066 utilise la base EV4 et integre un controleur de memoire et un
 pontage  de  bus  PCI.  Pour  economiser des broches, le controleur de
 memoire 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 controleur de memoire supporte le BCache et la DRAM
 externe.   La  vitesse  du  Bcache  et  de  la  DRAM  est  entierement
 configurable logiciellement, et peut etre controle  a  la  vitesse  du
 processeur.  La decomposition en 4 acces pour remplir un bloc de cacte
 n'est pas si mauvais qu'on peut le penser parce que l'acces a la  DRAM
 est  fait  en mode page.  Malheureusement, le controleur de memoire ne
 supporte ni les types de DRAM esoterique (SDRAM, EDO ou BEDO), ni  les
 RAMs  de  cache  synchrone.  L'interface  du  bus  PCI est entierement
 compatible avec PCI 2.0 et tourne jusqu'a 33 MHz.

 Le 21164 a un bus de donnees de 128  bits  et  supporte  les  lectures
 partielles,  avec jusqu'a deux lectures en cours en meme temps (ce qui
 permet une utilisation a 100% du bus de donnees  dans  les  meilleures
 conditions  de  reve, i.e. il est possible theoriquement de transferer
 128 bits de donnees a chaque cycle du  bus).  Le  21164  supporte  une
 connexion  facile d'un cache de troisieme niveau (Bcache) et a tout le
 systeme pour permettre a du materiel externe de maintenir la coherence
 de tous les caches. De cette facon, les conceptions de multiprocesseur
 symetrique sont 'faciles'.

 Le 21164A a ete annonce en octobre 1995. Il utilise la base EV56.  Son
 brochage est compatible avec celui du 21164, mais necessite des lignes
 d'alimentation separees ; toutes les broches qui  etaient  +3,3  Volts
 sur  le 21164 ont ete divisees en deux groupes ; un groupe fournit 2,0
 Volts au coeur du processeur, l'autre fournissant 3,3 Volts aux unites
 d'entrees/sorties.    Contrairement  aux  anciennes  conceptions,  les
 broches  du  21164A  n'acceptent  pas  5  Volts.  Le  resultat  de  ce
 changement  est  que les systemes 21164 ne peuvent en general pas etre
 mis a jour en 21164A (bien qu'il soit relativement simple de concevoir
 un  systeme  21164A  qui  puisse  aussi  accepter un 21164). Le 21164A
 dispose egalement de quelques nouvelles  broches  pour  supporter  les
 lectures  et  ecritures  sur  8  et  16 bits. Il ameliore egalement le
 support du 21164 pour les SRAMs synchrones qui composent le Bcache.

 44..  PPeerrffoorrmmaanncceess ccoommppaarreeeess dduu 2211006644 eett dduu 2211006666

 Le 21064 et le 21066 ont la meme base  (EV4).  Si  le  meme  programme
 tourne  sur  un  21064  et  un  21066,  a  la meme frequence, alors la
 difference de performance provient uniquement  de  la  bande  passante
 entre  le  Bcache et la memoire. Du code qui tombe principalement dans
 les caches _i_n_t_e_r_n_e_s tournera aussi rapidement. Il  y  a  2  principaux
 tueurs de performances :

 1. Du  code  qui  ecrit  enormement. Malgre les buffers en ecriture du
    21064 et du 21066 pour economiser  certains  delais,  du  code  qui
    ecrit enormement sera etrangle par la bande passante en ecriture du
    bus systeme. Cela est du au fait que les cache du  processeur  sont
    en ecriture immediate.

 2. 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 etre
    faite en memoire (Et du coup, puisque les caches du processeur sont
    en  ecriture immediate, via le Bcache). (Note : il semble que l'EV4
    et l'EV45 peuvent effectuer la conversion via le premier  cache  de
    donnees (Dcache), a partir du moment ou la memoire est cachee. Dans
    ce cas, l'ecriture faite par la sequence  de  conversion  mettra  a
    jour  le  Dcache  et  la lecture qui va suivre sera, dans certaines
    circonstances, capable de lire la  valeur  du  Dcache,  evitant  un
    couteux  transfert  depuis  le  Bcache.  En  particulier, il semble
    meilleur d'executer les instructions stq/ldt ou stt/ldq dos a  dos,
    ce qui est plutot contraire a l'intuition.)

 Si vous effectuez la meme comparaison entre un 21064A et un 21066A, il
 y a un facteur supplementaire du aux differentes tailles des Icache et
 Dcache entre les deux processeurs.

 Maintenant,  le  21164 resoud ces deux problemes : il atteint des _b_i_e_n
 meilleures bandes passantes du bus systeme (malgre le meme  nombre  de
 broches  de  signal - oui, je _s_a_i_s que c'est a peu pres deux fois plus
 qu'un 21064, mais les supplementaires sont l'alimentation et la  masse
 !  (oui,  reellement!!))  et  il a des caches en ecriture differee. Le
 seul probleme restant est la reponse a la question "combien  il  coute
 ?"

 55..  QQuueellqquueess nnootteess ssuurr lleess ffrreeqquueenncceess

 Tous  les  processeurs  Alpha  actuels  utilisent des horloges a haute
 vitesse, parce que leur  microarchitecture  a  ete  concue  comme  "en
 cycles  courts". Cependant, du coup, aucun des bus systemes n'a besoin
 de tourner a de telles vitesses  :

 +o  sur les 21066(A), 21064(A) et 21164 la  vitesse  du  cache  externe
    (Bcache) est entierement programmable, a la resolution de l'horloge
    du processeur. Par exemple, pour un processeur a 275 MHz, le  temps
    d'acces en lecture du Bcache peut etre controle avec une resolution
    de 3,6 ns.

 +o  sur les 21066(A), la vitesse des DRAM est entierement programmable,
    a  la resolution de l'horloge du processeur (_p_a_s celle du bus PCI).

 +o  sur les 21064(A) et 21164(A), la frequence du bus  systeme  est  un
    sous-multiple  de  cele  du processeur. La plupart des cartes meres
    21064 utilisent une horloge du bus systeme a 33 MHz.

 +o  Le systemes a base de 21066 peuvent faire  tourner  le  bus  PCI  a
    n'importe  quelle  frequence par rapport au processeur. En general,
    le bus PCI tourne a 33 MHz.

 +o  Les systemes qui utilisent les chipset APECS (cf. section ``'') ont
    toujours  la  frequence du bus processeur egale a celle du bus PCI.
    Cela signifie que les deux bus tendent a tourner  soit  a  25  MHz,
    soit  a  33  MHz  (puisque  ce  sont  les frequences qui sont sous-
    multiples de celle  du  processeur).  Sur  les  systemes  APEC,  la
    vitesse  du  controleur  de DRAM est programmable logiciellement en
    fonction de la frequence du bus processeur.

 NNoottee:: quelqu'un a suggere qu'il obtenait de mauvaises performances sur
 un systeme 21066 parce que le controleur de memoire du 21066 ne tourne
 qu'a 33 MHz. En fait, ce sont  soulement  les  systemes  super-rapides
 21064A  qui  ont des controleurs de memoire qui tournent 'seulement' a
 33 MHz.

 66..  LLeess cchhiippsseett

 DS vend deux chipsets de support processeur. Le chipset 2107x (denomme
 APECS)  supporte  les  21064(A).  Le  chipset  2117x  (denomme  ALCOR)
 supporte les 21164. Il y aura aussi un chipset 2117xA  (denomme  ALCOR
 2) qui supportera le 21164A.

 Ces  deux  chipsets  fournissent  des  controleurs  de  memoire et des
 pontages PCI pour leur processeur. APECS fournit un pontage PCI de  32
 bits,  ALCOR  fournit un pontage PCI de 64 bits qui (conformement a la
 specification PCI) peut supporter des peripheriques PCI aussi bien  32
 bits que 64 bits.

 APECS  consiste  en  6  puces  de  208 broches (4 registres de 32 bits
 (DECADE), 1 controleur systeme (COMANCHE), 1 controleur  PCI  (EPIC)).
 Il  fournit  un  controleur  de  DRAM (bus memoire de 128 bits) et une
 interface PCI. Il effectue egalement tout le travail de maintien de la
 coherence  quand  un  peripherique PCI effectue une operation DMA vers
 (ou depuis) la memoire.

 ALCOR consiste en 5 puces (4 registres de 64 bits (Data  Switch,  DSW)
 208  broches  PQFP  et  1  controleur (Control, I/O Address, CIA) - un
 boitier plastique de 383 broches). Il fournit un  controleur  de  DRAM
 (bus memoire de 256 bits) et une interface PCI.  Il effectue egalement
 tout le travail de maintion de coherence  quand  un  peripherique  PCI
 effectue une operation DMA vers (ou depuis) la memoire.

 Il  n'existe pas de chipset supportant le 21066, puisque le controleur
 de memoire et le pontage PCI sont integres dans le processeur.

 77..  LLeess ssyysstteemmeess

 Le groupe applications de  DS  produit  des  exemples  de  conceptions
 utilisant  les  processeurs  et  leurs  chipsets  associes.  Il s'agit
 typiquement  de  cartes  meres  de  format  PC-AT,  avec  toutes   les
 fonctionnalites  que  vous  trouverez  typiquement  sur une carte mere
 Pentium haut  de  gamme.  Initialement,  ces  exemples  de  conception
 etaient  destines  a  etre  utilises  comme  point  de depart pour des
 tierces parties pour concevoir des cartes meres.  Ces  conceptions  de
 premiere  generation  furent nommees Evaluation Boards (EB).  Comme la
 quantite de  travail  necessaire  pour  concevoir  une  carte  mere  a
 augmente  (a  cause  de la montee en frequence des processeurs et pour
 respecter les regles sur l'emission de frequences  radio)  l'accent  a
 ete  mis  sur  la  conception  de  cartes  meres  utilisables pour une
 production en masse.

 Les groupes systeme de Digital ont produit  plusieurs  generations  de
 machines  a  base  de  processeurs  Alpha.  Certains  de  ces systemes
 utilisent des chipsets  concues  par  les  groupes  systeme,  d'autres
 utilisent  les  chipsets  de  DS.  Dans  certains  cas,  les  systemes
 utilisent une combinaison des deux.
 Plusieurs tierces  parties  ont  construit  des  systemes  a  base  de
 processeurs  Alpha.  Certaines  de  ces  entreprises  ont  concu leurs
 systemes a partir de zero, d'autres ont utilise les chipsets de DS, ou
 ont  copie/modifie  les  exemples  de  conception de DS, ou simplement
 assemblent leurs systemes a partir des cartes fabriquees et  verifiees
 par DS.

 L'EB64  : Conception obsolete utilisant un 21064 avec un controleur de
 memoire implemente en logique  programmee.  Entrees/Sorties  realisees
 par de la logique programmee pour s'interfacer a un chipset de pontage
 486<->ISA. Ethernet, SuperI/O (2S, 1P, LD) integre sur la carte  mere,
 bus ISA. Taille PC-AT. Alimentation standard PC.

 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
 partage).  Supporte des SIMMs de DRAM 36 bits. Le bus ISA est gere par
 un chipset de pontage Intel Saturn. Controleur  SCSI  (NCR  810  PCI),
 ethernet   (Digital  21040),  controleur  clavier  et  souris  (PS/2),
 SuperI/O (2S, 1P, LD), memoire CMOS et horloge sur la carte mere.  ROM
 de demarrage en EPROM. Taille PC-AT. Alimentation standard PC.

 L'EB66  :  Utilise  un  21066  ou un 21066A. Le sous-systeme d'entrees
 sorties  est  identique  a  celui  de  l'EB64+.  Taille  baby   PC-AT.
 Alimentation  standard  PC.  Les schemas de l'EB66 furent publies dans
 des publicites vantant le 21066 comme "le premier  microprocesseur  au
 monde  avec  PCI integre" (pour les amateurs d'anecdotes : il y a deux
 versions de cette publicite - j'ai dessine les circuits  et  ecrit  le
 boniment  dans  la  premiere version, et des americains ont malmene le
 boniment pour la deuxieme version)

 L'EB164 : Utilise un 21164 et ALCOR. Bus ISA et  PCI  (3  emplacements
 ISA,  2  emplacements PCI 64 bits (dont un partage avec un emplacement
 ISA) et 2 emplacements PCI 32 bits). Emplacement SIMM pour le  Bcache.
 Le  sous-systeme d'entrees sorties fournit un controleur SuperI/O (2S,
 1P, LD), un controleur clavier  et  souris  (PS/2),  memoire  CMOS  et
 horloge.  ROM  de  demarrage en memoire flash. Taille PC-AT. Necessite
 une alimentation en 3,3 Volts.

 L'AlphaPC64  (aussi  nommee  Cabriolet)  :  derive  de  l'EB64+   mais
 desormais  en taille baby PC-AT avec une ROM de demarrage en flash, et
 plus de controleur SCSI et ethernet sur la carte mere. 3  emplacements
 ISA,  4  emplacements  PCI  (dont un partage avec un emplacement ISA),
 emplacement SIMM pour le Bcache. Necessite  une  alimentation  en  3,3
 Volts.

 L'AXPpci33   (aussi  nommee  NoName),  est  basee  sur  l'EB66.  Cette
 conception est produite par le groupe technique OEM de Digital (TOEM).
 A  base  d'un  processeur  21066 tournant a 166 MHz ou 233 MHz. Taille
 baby PC-AT, necessite une alimentation standard  PC.   5  emplacements
 ISA  et  3 emplacements PCI (dont un partage avec un emplacement ISA).
 Il existe deux versions, avec un connecteur soit PS/2, soit  DIN  pour
 le clavier.

 D'autres  cartes  meres  a  base  de 21066 : la plupart, sinon toutes,
 disponibles sur le marche sont basees  sur  l'EB66  -  il  n'y  a  pas
 beaucoup  d'options  dans  la conception d'un systeme 21066, parce que
 tout le controle est fait par les puces.

 Multia (aussi nomme Universal Desktop Box) : il  s'agit  d'un  systeme
 boitier  bureau  tres  compact a base de 21066. Il comporte deux ports
 PCMCIA, une carte graphique 21030 (TGA), une carte ethernet  21040  et
 un  controleur SCSI NCR 810, ainsi qu'un lecteur de disquettes, 2 port
 serie et un port parallele. Ses capacites  d'extension  sont  limitees
 (un  emplacement  PCI) a 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 a base de 21066A ou de Pentium
 sont aussi disponibles).

 DEC PC 150 AXP (aussi nomme Jensen) :  c'est  un  tres  vieux  systeme
 Digital  -  l'un  des  systemes Alpha de premiere generation. Il n'est
 mentionne ici que parce qu'un certain nombre de ces systemes  semblent
 etre disponibles sur le marche de l'occasion. Le Jensen est un systeme
 grande tour qui utilise un 21064 a 150 MHz (des versions plus recentes
 utiliserent  des  processeurs plus rapides mais je ne suis pas sur des
 vitesses). Il utilisait de la logique programmee  pour  interfacer  le
 processeur a un pontage 486<->EISA.

 D'autres  systemes a base de 21064(A) : il existe encore 3 ou 4 autres
 conceptions de cartes mere (sans compter les _s_y_s_t_e_m_e_s Digital) et tous
 ceux que je connais sont derives de l'EB64+. Parmi ceux-ci :

 +o  EB64+   (certains   vendeurs   l'ont   assemble   et   vendu   sans
    modifications); taille AT.

 +o  Carte mere Aspen Systems : derivee de l'EB64+ ; taille baby AT.

 +o  Carte serveur Aspen Systems : beaucoup d'emplacements  PCI  (inclut
    un pontage PCI).

 +o  AlphaPC64 (aussi nommee Cabriolet), taile baby AT.

 D'autres systemes a base de 21164(A) : le seul que je connaisse qui ne
 soit pas un simple clone d'un EB164 est un systeme de DeskStation.  Ce
 systeme   est   construit   avec   un   controleur   de   memoire   et
 d'entrees/sorties proprietaire de DeskStation. Je ne sais  pas  quelle
 est leur attitude vis-a-vis de Linux.

 88..  LLeess oocctteettss eett lleeuurr mmuullttiipplleess

 Quand  l'architecture  Alpha  fut  presentee,  elle  etait  unique par
 rapport aux autres architectures RISC en  empechant  les  lectures  et
 ecritures  sur 8 et 16 bits. Elle supportait les lectures et ecritures
 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 :

 1. Le support des octets dans le cache et le sous-systeme memoire tend
    a ralentir les acces pour les quantites de 32 et 64 bits.

 2. Le  support  des  octets rend difficile la creation d'un circuit de
    correction d'erreur haute-vitesse dans le cache et le  sous-systeme
    memoire.

 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 operations sur les chaines de
 caracteres (par exemples, certains tests de Byte) montrent que l'Alpha
 se comporte tres bien pour la manipulation des octets.

 L'absence  de  lectures et ecritures sur octet a des repercussions sur
 certains semaphores logiciels et sur la conception  des  sous-systemes
 d'entrees/sorties.   La   solution   de   Digital   au   probleme  des
 entrees/sorties est  d'utiliser  certaines  lignes  d'adresse  de  bas
 niveau  pour specifier la taille des donnees pendant les transferts de
 donnees, et de les decoder en masque d'octets. Cet  adressage  denomme
 "adressage clairseme" gache une partie de l'espace d'adressage et rend
 l'espace d'entrees/sorties non contigue  (j'en  dirais  plus  sur  cet
 adressage  clairseme  quand  j'aurai  fini  par  l'ecrire).  Notez que
 l'espace d'entrees/sorties, dans ce contexte, se refere a  toutes  les
 ressources  presentes  sur  le bus PCI et comprend aussi bien l'espace
 memoire PCI que l'espace d'entrees/sorties PCI.

 Avec l'apparition du 21164A, l'architecture Alpha a ete  etendue  pour
 inclure l'adressage des octets. L'execution des nouvelles instructions
 sur un  processeur  plus  ancien  declenchera  une  exception  PALcode
 OPCDEC,  pour  que  le  PALcode puisse gerer cet acces.  Cela aura une
 incidence sur les performances. Les ramifications  de  ceci  font  que
 l'utilisation  de  ces instructions devraient (a mon humble avis) etre
 limitee aux pilotes de peripheriques plutot qu'aux applications.

 Ces nouvelles possibilite de  lecture  et  ecriture  au  niveau  octet
 signifient  que  de  futurs  chipsets  pourront  supporter  un  espace
 d'entrees/sorties contigue.

 99..  LLee PPAALLccooddee

 Cet emplacement est destine a une section expliquant  le  PALcode.  Je
 l'ecrirai s'il y a suffisemment d'interet.

 1100..  PPoorrttaabbiilliittee

 La  possibilite  de  faire  tourner Linux sur n'importe quelle machine
 Alpha est generalement limitee par  votre  possibilite  d'obtenir  des
 informations  sur  les  details  sanglants de ses arcanes. Puisque des
 portages de Linux existent pour les cartes meres EB66, EB64+ et EB164,
 tous  les  systemes  bases  sur  les 21066, 21064/APECS et 21164/ALCOR
 devraient pouvoir faire tourner  Linux  avec  tres  peu  voire  aucune
 modification.  La  principale difference entre toutes ces cartes meres
 est la facon dont elles diffusent les  interruptions.  Il  y  a  trois
 sources d'interruptions :

 +o  peripheriques integres

 +o  peripheriques PCI

 +o  peripheriques ISA

 Tous  les  systemes  utilisent un systeme de pontage d'entrees/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 utilise pour
 supporter  les  peripheriques  anciens  ou  basse  vitesse).   Le  SIO
 contient la traditionnelle paire de 8259 chaines.

 Certains   systemes   (par   exemple   le   NoName)   diffusent  leurs
 interruptions via le SIO vers le processeur. Certains systemes ont  un
 controleur    d'interruptions   separe   et   diffusent   toutes   les
 interruptions PCI plus l'interruption SIO  (sortie  du  8259)  via  ce
 controleur, et toutes les interruptions ISA via le SIO.

 Les autres differences entre ces systemes comprennent :

 +o  de combien d'emplacements ils disposent

 +o  quels sont les peripheriques PCI integres

 +o  si la ROM de demarrage est en memoire flash ou en EPROM

 1111..  PPlluuss dd''iinnffoorrmmaattiioonnss

 Toutes les conceptions de cartes d'evaluation et de cartes meres de DS
 sont libres de droits et la documentation complete pour une conception
 coute environ 50$ (300FF). Cela comprend tous les schemas, les sources
 des parties programmees, les feuilles d'informations du processeur  et
 du  chipset.  Les  kits  de  documentation sont disponibles aupres des
 distributeurs de Digital Semiconductor. Je  ne  suggere  pas  de  vous
 precipiter  aller  l'acheter,  mais  je  veux  faire remarquer que ces
 informations sont disponibles.

 J'espere que cela vous a ete utile. Les commentaires,  mises  a  jour,
 suggestions    d'extension    sont    a    envoyer    a   Neal   Crook
 <mailto:[email protected]>.

 1122..  RReeffeerreenncceess

 [1]
 <http://www.research.digital.com/wrl/publications/abstracts/TN-13.html>
 Bill Hamburgen, Jeff Mogul, Brian Reid, Alan  Eustace,  Richard  Swan,
 Mary  Jo  Doherty,  and  Joel  Bartlett.   _C_h_a_r_a_c_t_e_r_i_z_a_t_i_o_n _o_f _O_r_g_a_n_i_c
 _I_l_l_u_m_i_n_a_t_i_o_n _S_y_s_t_e_m_s.  DEC WRL, Technical Note 13, April 1989.