Il y a actuellement 2 générations de base de processeur implémentant l'architecture Alpha :
Les avis différent quant au sens de "EV" (note : la vraie réponse est bien entendu "Electro Vlassic" [1]), mais le chiffre représente la première génération de technologie CMOS de Digital avec laquelle le processeur a été conçu. Ainsi, EV4 a été initialement conçue en CMOS4. Au fil du temps, un processeur tend a trouver une nouvelle jeunesse en étant optiquement rétrécie dans la nouvelle génération de CMOS. EV45 est donc la base EV4 conçue en CMOS5. Il y a une grande différence entre rétrécir une conception pour une technologie particulière et la reconcevoir pour cette technologie (mais je ne veux pas entrer dans les détails). Il y a encore quelques variantes : la CMOS4S (rétrécissement 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 puces nous avons:
EV4 (initialement), EV4S (maintenant)
EV4S
EV45
LCA4S (base EV4, avec coprocesseur EV4)
LCA45 (base EV4, mais avec coprocesseur EV45)
EV5
EV56
La base EV4 est un noyau double-écoulement (il peut traiter 2 instructions processeur par cycle d'horloge) super-pipeliné avec une unité de calcul entier, une unité de calcul flottant et prédiction de branchement. Il a des bus de données internes de 64 bits et des caches de 8Ko étroitement couplés, un jeu de chaque pour les instructions, et pour les données. Les caches sont en écriture immédiate ("write-through").
La base EV45 a quelques améliorations par rapport à la base EV4 : l'unité de calcul flottant est légérement améliorée, et les caches sont de 16Ko. (Note : Neal Crook a indiqué dans un courrier séparé que les modifications de l'unité de calcul flottant améliorent les performances de la division. La FPU de l'EV4 prend 34 cycles pour une division en simple précision et 63 cycles pour une division en double-précision (quelles que soient les données). En comparaison, le FPU de l'EV45 prend généralement 19 cycles (34 au pire) pour la simple précision et 29 cycles (63 au pire) pour la double-précision (en fonction des données).)
La base EV5 est un noyau quadruple-écoulement, également super-pipeliné etc etc. Il a des caches de 8 Ko étroitement couplés, un de pour les instructions et un pour les données. Ces caches sont en écriture immédiate. Il dispose également d'un cache de deuxième niveau de 96 Ko sur le processeur (le Scache) qui est associatif 3-morceaux et en écriture différée ("write back"). Le gain de performance de l'EV4 à l'EV5 est supérieur au seul gain généré par l'augmentation de la fréquence. En plus des caches plus grands et du quadruple-écoulement, il y a aussi des améliorations de sa microarchitecture pour réduire les temps d'attente producteur/consommateur dans certaines voies.
La base EV56 est fondamentalement la même microarchitecture que l'EV5, mais ajoute quelques nouvelles instructions pour la lecture et l'écriture sur 8 et 16 bits (cf. section Les octets et leur multiples). Elles sont principalement destinées aux pilotes de périphériques. La base EV56 est réalisée en CMOS6, en 2,0 Volts.
Le 21064 a été annoncé 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ème niveau, avec une taille de bloc de 256 bits (2 fois la taille du bus). La vitesse de ce Bcache est entièrement configurable logiciellement. Le 21064 peut aussi être configuré pour utiliser un bus externe de 64 bits (mais je crois qu'aucun système n'utilise ce mode). Le 21064 n'impose aucune contrainte sur le Bcache, mais il est généralement configuré en écriture différée. Le 21064 contient un système permettant à du matériel séparé de maintenir la cohérence entre le Bcache et le cache interne, mais c'est complexe.
Le 21066 utilise la base EV4 et intégre un contrôleur de mémoire et un pontage de bus PCI. Pour économiser des broches, le contrôleur de mé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ôleur de mémoire supporte le BCache et la DRAM externe. La vitesse du Bcache et de la DRAM est entièrement configurable logiciellement, et peut être contrôlé à la vitesse du processeur. La décomposition en 4 accès pour remplir un bloc de cacte n'est pas si mauvais qu'on peut le penser parce que l'accès à la DRAM est fait en mode page. Malheureusement, le contrôleur de mémoire ne supporte ni les types de DRAM ésotérique (SDRAM, EDO ou BEDO), ni les RAMs de cache synchrone. L'interface du bus PCI est entièrement compatible avec PCI 2.0 et tourne jusqu'à 33 MHz.
Le 21164 a un bus de données de 128 bits et supporte les lectures partielles, avec jusqu'à deux lectures en cours en même temps (ce qui permet une utilisation à 100% du bus de données dans les meilleures conditions de rêve, i.e. il est possible théoriquement de transférer 128 bits de données à chaque cycle du bus). Le 21164 supporte une connexion facile d'un cache de troisième niveau (Bcache) et a tout le système pour permettre à du matériel externe de maintenir la cohérence de tous les caches. De cette façon, les conceptions de multiprocesseur symétrique sont 'faciles'.
Le 21164A a été annoncé en octobre 1995. Il utilise la base EV56. Son brochage est compatible avec celui du 21164, mais nécessite des lignes d'alimentation séparées ; toutes les broches qui étaient +3,3 Volts sur le 21164 ont été divisées en deux groupes ; un groupe fournit 2,0 Volts au coeur du processeur, l'autre fournissant 3,3 Volts aux unités d'entrées/sorties. Contrairement aux anciennes conceptions, les broches du 21164A n'acceptent pas 5 Volts. Le résultat de ce changement est que les systèmes 21164 ne peuvent en général pas être mis à jour en 21164A (bien qu'il soit relativement simple de concevoir un système 21164A qui puisse aussi accepter un 21164). Le 21164A dispose également de quelques nouvelles broches pour supporter les lectures et écritures sur 8 et 16 bits. Il améliore également le support du 21164 pour les SRAMs synchrones qui composent le Bcache.