1 points par GN⁺ 2024-07-09 | 1 commentaires | Partager sur WhatsApp
  • Lancé en 1993, l’Intel Pentium est une puce complexe comptant 3,3 millions de transistors, mais, contrairement aux puces modernes, ses transistors sont visibles au microscope, ce qui permet de suivre directement l’implémentation de ses portes internes
  • La conception par cellules standard consiste à créer des circuits de bas niveau, comme des portes et des bascules, sous forme de cellules réutilisables, puis à les placer en rangées afin de les adapter au placement-routage automatique
  • Sur le die du Pentium, les zones de cellules standard apparaissent sous forme de rayures régulières, tandis que les blocs optimisés à la main, comme le cache, le datapath et la ROM de microcode, se distinguent par une apparence plus dense et plus sombre
  • Les Pentium de la famille P54C utilisent un procédé 600 nm, une tension de 3,3 V et quatre couches métalliques de routage, et exploitent largement non seulement des portes CMOS, mais aussi des circuits BiCMOS qui réduisent les délais de signal jusqu’à 35 %
  • Inverseurs, NAND, OR-NAND, verrous, bascules et buffers BiCMOS sont tous des combinaisons de petits circuits à transistors ; le Pentium constitue un exemple permettant d’observer la conception numérique à cellules standard et BiCMOS des années 1990

Structure des cellules standard visible sur le die du Pentium

  • Intel a lancé le processeur Pentium en 1993, puis la marque est restée une gamme de processeurs hautes performances avec le Pentium Pro, le Pentium II et d’autres, jusqu’à ce que les processeurs Core remplacent la ligne principale en 2006
  • Le Pentium original est une puce complexe comptant 3,3 millions de transistors, mais, contrairement aux puces modernes, ses transistors sont visibles au microscope
  • Sur une photo du die dont les couches métalliques de routage ont été retirées, le silicium et les transistors individuels apparaissent
    • Les circuits à cellules standard sont disposés en colonnes uniformes, donnant une apparence rayée
    • Les blocs fonctionnels optimisés à la main apparaissent plus denses, plus structurés et plus sombres
    • Les exemples sont le cache à gauche, le datapath au centre et la ROM de microcode à droite

Du placement manuel aux cellules standard

  • Dans les premiers processeurs des années 1970, les transistors étaient généralement placés un par un à la main
    • Cette approche permettait une densité élevée, mais elle était lente, difficile et sujette aux erreurs
    • Federico Faggin, concepteur du Z80, a dû effacer trois semaines de travail et recommencer parce que les derniers transistors ne tenaient pas
  • Les cellules standard reposent sur une bibliothèque de cellules réutilisables qui implémentent chaque porte, bascule et composant de bas niveau
    • Chaque cellule a une hauteur fixe, tandis que sa largeur varie selon les besoins
    • Les cellules peuvent être placées en rangées, ce qui se prête bien à l’automatisation
  • Une rangée de cellules standard CMOS ressemble généralement à deux bandes proches l’une de l’autre
    • L’une correspond à la zone des transistors NMOS
    • L’autre correspond à la zone des transistors PMOS
    • L’espace entre les rangées sert de canal de routage pour les connexions entre cellules
    • L’alimentation et la masse sont placées le long du haut et du bas de chaque rangée

Le rôle du placement-routage automatique

  • La structure fixe des cellules standard facilite la création du layout par les logiciels de placement-routage automatique
  • L’étape de placement cherche une disposition des cellules qui réduit la distance entre cellules connectées
    • Les longues interconnexions gaspillent de la surface de die
    • Les longs chemins augmentent la capacité et ralentissent les signaux
  • L’étape de routage relie les cellules placées avec de vraies pistes métalliques
  • Le placement comme le routage sont des problèmes d’optimisation NP-complets
  • Intel a commencé à utiliser des techniques de placement-routage automatique à partir du processeur 386
    • Le placement était effectué avec le programme Timberwolf, développé par un doctorant de Berkeley
    • Le routage utilisait un logiciel personnalisé d’Intel fondé sur une heuristique itérative
    • La conception par cellules standard est encore utilisée dans les processeurs actuels, mais les logiciels ont énormément progressé

Structure CMOS de base du Pentium

  • Les processeurs modernes utilisent des circuits CMOS, qui combinent deux types de transistors : NMOS et PMOS
  • Un transistor NMOS s’active lorsque sa grille est à un niveau haut, tandis qu’un transistor PMOS s’active lorsque sa grille est à un niveau bas
    • Le NMOS est adapté pour tirer la sortie vers une basse tension
    • Le PMOS est adapté pour tirer la sortie vers une haute tension
  • Le « C » de CMOS signifie Complementary, car NMOS et PMOS fonctionnent ensemble pour placer la sortie à l’état haut ou bas
  • En raison des propriétés physiques des semi-conducteurs, NMOS et PMOS ne sont pas parfaitement symétriques, et le PMOS doit généralement être plus grand que le NMOS
    • Cette différence donne un indice permettant de distinguer PMOS et NMOS sur les photos du die

Routage constitué de quatre couches métalliques

  • La version P54C du Pentium utilise quatre couches métalliques de routage
    • Les premiers Pentium utilisaient trois couches métalliques, mais Intel est passé à un procédé à quatre couches à partir du die P54C
  • La surface du silicium comporte des régions dopées, au-dessus desquelles se forment les pistes en polysilicium
    • Lorsque le polysilicium traverse du silicium dopé, il constitue la grille d’un transistor
    • Le polysilicium sert aussi d’interconnexion sur de courtes distances
  • Les couches métalliques sont numérotées de M1 à M4
    • M1 est la couche métallique la plus basse
    • M4 est la couche métallique la plus haute et la plus épaisse ; elle sert principalement à l’alimentation, à la masse et au signal d’horloge
    • Les connexions entre couches métalliques sont assurées par des vias en tungstène
    • Seule M1 se connecte directement au silicium ou au polysilicium via un contact
  • Les couches de routage alternent généralement localement entre directions horizontale et verticale afin de permettre aux signaux de se croiser
  • Le logiciel de placement-routage automatique doit générer des millions de chemins de routage complexes de la manière la plus dense possible

Inverseurs et portes NAND

  • Un inverseur CMOS est constitué d’un PMOS et d’un NMOS
    • Si l’entrée vaut 1, le NMOS s’active et la sortie descend à 0
    • Si l’entrée vaut 0, le PMOS s’active et la sortie monte à 1
  • L’inverseur à cellule standard du Pentium possède la même structure à deux transistors
    • L’entrée est connectée aux grilles en polysilicium des deux transistors
    • La piste métallique de sortie est connectée aux deux transistors
    • Le puits dopé N qui contient le PMOS est maintenu à une tension positive par un well tap connecté à +3,3 V
  • Le Pentium a été fabriqué avec un procédé 600 nm, et la largeur des lignes de polysilicium est elle aussi d’environ 600 nm
    • Cette dimension étant proche de la longueur d’onde de la lumière visible, 400 à 700 nm, les photos au microscope paraissent quelque peu floues
  • Une porte NAND CMOS est constituée de deux PMOS et de deux NMOS
    • Si les deux entrées sont hautes, les deux NMOS s’activent et la sortie devient basse
    • Si l’une des entrées est basse, un PMOS s’active et la sortie devient haute
  • Dans la cellule standard NAND du Pentium, deux lignes de polysilicium traversent le silicium dopé et forment quatre transistors
    • La sortie côté PMOS part du centre et forme une connexion en parallèle
    • La sortie côté NMOS part de la droite et forme une connexion en série
  • Même pour une même cellule standard NAND, les détails de routage et la longueur du polysilicium varient selon la position des connexions d’entrée, de sortie et d’alimentation
    • Les cellules standard ne sont pas de simples copies, elles sont ajustées à chaque position
    • Les cellules voisines sont compactées de façon que les transistors PMOS se touchent, ce qui augmente légèrement la densité

Portes complexes et verrous

  • La bibliothèque de cellules standard inclut non seulement des portes simples, mais aussi des portes complexes
  • Une porte OR-NAND à 5 entrées calcule ~((A+B+C+D)⋅E)
    • Dans le circuit NMOS, A à D sont en parallèle et E est en série
    • Le circuit PMOS est l’inverse : A à D sont en série et E est en parallèle
    • Pour fournir un courant suffisant, le côté PMOS comporte deux ensembles de transistors A à D, ce qui le rend beaucoup plus grand que le bloc NMOS
  • Le verrou est l’un des composants essentiels du circuit du Pentium ; il s’agit d’un circuit de stockage d’un bit contrôlé par l’horloge
    • Lorsque l’horloge est haute, il est en état transparent : l’entrée apparaît immédiatement en sortie
    • Lorsque l’horloge est basse, il conserve la valeur précédente
  • Un verrou est implémenté par une boucle de rétroaction dans laquelle la sortie revient vers l’entrée
    • Au centre se trouve un multiplexeur qui choisit entre la sortie précédente et la nouvelle entrée
    • L’inverseur amplifie le signal de rétroaction pour éviter qu’il s’affaiblisse et pour permettre à la sortie de piloter d’autres circuits

Multiplexeur à transistors de passage

  • Le multiplexeur interne au verrou utilise des transistors de passage
    • Au lieu de tirer la sortie vers l’alimentation ou la masse comme une porte logique classique, il laisse passer le signal d’entrée vers la sortie
  • Lorsque le signal select est bas, la paire de transistors connectée à la première entrée s’active et la deuxième entrée est bloquée
  • Lorsque le signal select est haut, la paire de transistors connectée à la deuxième entrée s’active et la première entrée est bloquée
  • La polarité des grilles des transistors du multiplexeur diffère de celle des portes logiques classiques
    • Une porte logique utilise des signaux de grille de même polarité afin qu’un NMOS ou un PMOS s’active pour tirer la sortie vers le bas ou vers le haut
    • Dans un multiplexeur, le PMOS et le NMOS correspondants doivent s’activer simultanément pour laisser passer le signal, ce qui nécessite des signaux de grille de polarité opposée
    • Le multiplexeur inclut donc un inverseur qui produit le signal de polarité opposée nécessaire

Implémentation des bascules

  • Le Pentium utilise largement les bascules
  • Une bascule ressemble à un verrou, mais elle réagit à un front d’horloge plutôt qu’au niveau de l’horloge
    • Elle mémorise l’entrée au moment où l’horloge passe de bas à haut
    • Elle fournit cette valeur en sortie
  • Grâce à cette différence, les bascules sont plus utiles dans les compteurs, les machines à états et les autres circuits cadencés
  • La bascule du Pentium est constituée de deux verrous
    • Le verrou primaire laisse passer la valeur lorsque l’horloge est basse, et la conserve lorsque l’horloge est haute
    • Le verrou secondaire adopte le comportement d’horloge inverse
    • Lorsque l’horloge passe de bas à haut, le verrou primaire cesse de se mettre à jour tandis que le verrou secondaire laisse passer cette valeur
  • Certaines variantes disposent d’entrées set ou reset grâce à de petites modifications logiques
    • set et reset contournent l’horloge pour forcer la sortie dans l’état souhaité
    • C’est utile pour initialiser les bascules à la valeur voulue au démarrage du processeur

Buffers BiCMOS et particularités du Pentium des années 1990

  • Le Pentium est fabriqué non seulement en CMOS, mais aussi avec un procédé BiCMOS
    • Quelques étapes sont ajoutées au procédé CMOS classique pour créer des transistors bipolaires NPN et PNP
  • Les circuits BiCMOS ont été largement utilisés dans le Pentium et ont réduit les délais de signal jusqu’à 35 %
  • Intel a également utilisé BiCMOS dans les Pentium Pro, Pentium II, Pentium III et Xeon, mais pas dans le Pentium MMX
  • À mesure que la tension des puces a diminué, l’avantage des transistors bipolaires s’est lui aussi réduit, et BiCMOS a fini par disparaître des circuits numériques
  • Le buffer BiCMOS à cellule standard du Pentium est plus complexe qu’un buffer CMOS
    • Il comprend deux inverseurs
    • un transistor NPN de pull-up
    • un transistor NMOS de pull-down
    • un transistor PMOS de pull-up
  • Sur les photos du die, le transistor NPN présente une structure circulaire, contrairement aux structures linéaires des NMOS et PMOS, et il est beaucoup plus grand
  • La piste métallique de sortie est elle aussi plus épaisse que les pistes de signal classiques, ce qui indique une forte capacité de pilotage en courant

Différences observées dans la version P54C

  • L’objet de l’analyse est la version P54C du Pentium original
  • Le premier Pentium, le 80501, nom de code P5, fonctionnait à 60 ou 66 MHz, utilisait 5 V, un procédé 800 nm et comptait 3,1 millions de transistors
  • Intel a amélioré les problèmes de consommation électrique pour créer le 80502, nom de code P54C
    • Il utilise 3,3 V
    • Il fonctionne de 75 à 120 MHz
    • La prise en charge du multiprocessing a été ajoutée, portant le nombre de transistors à 3,3 millions
    • Il dispose d’un circuit d’horloge plus avancé qui permet de porter la fréquence interne jusqu’à 100 MHz tout en maintenant la vitesse du bus externe à 50-66 MHz
    • Il utilise un procédé 600 nm et quatre couches métalliques
  • Le die P54C est visuellement presque identique au P5, mais une logique de multiprocessing a été ajoutée en bas et le circuit d’horloge se trouve en haut
  • Les cellules standard devraient être similaires dans les autres versions du Pentium original

Des circuits simples au cœur d’un processeur complexe

  • Le layout à cellules standard reste largement utilisé dans les puces modernes
  • Les processeurs modernes sont trop petits pour être étudiés au microscope en raison de leurs transistors à l’échelle nanométrique, mais les caractéristiques du Pentium sont assez grandes pour permettre l’observation et le reverse engineering de ses circuits
  • La bibliothèque complète de cellules standard du Pentium est bien plus vaste et comprend des dizaines, voire des centaines, de types de cellules
    • Diverses portes logiques
    • Plusieurs tailles
    • Des cellules de différentes puissances de pilotage
  • L’utilisation de BiCMOS par le Pentium est une caractéristique technique d’une technologie qui a atteint son pic de popularité dans les années 1990
  • BiCMOS est devenu moins pratique dans les circuits numériques à mesure que les compromis ont évolué, mais il joue encore un rôle important dans les circuits intégrés analogiques, en particulier pour les applications haute fréquence
  • En observant le Pentium de près, on constate qu’un processeur complexe est lui aussi constitué de combinaisons de circuits à transistors simples

1 commentaires

 
GN⁺ 2024-07-09
Avis sur Hacker News
  • Intel a commencé à utiliser des techniques de placement-routage automatique à partir du processeur 386, car elles étaient bien plus rapides qu’un layout manuel et réduisaient fortement les erreurs.
    Le placement était effectué avec un programme appelé Timberwolf, développé par Carl Sechen, doctorant à Berkeley, sous la direction d’Alberto Sangiovanni-Vincentelli.
    https://ieeexplore.ieee.org/document/1052337

    • Cette approche est aussi évoquée dans une interview des concepteurs du i386 par le Computer History Museum, mais le nom de Carl Sechen n’y apparaît pas.
      https://archive.computerhistory.org/resources/text/Oral_Hist...
      Chez Intel, il n’y avait ni placement automatique ni routage automatique en interne, et ils s’inquiétaient de savoir s’ils pourraient finir à temps et si la surface de la puce ne deviendrait pas trop grande pour tenir. Ils ont récupéré auprès d’un doctorant de Berkeley un programme de placement automatique appelé Timberwolf, l’ont évalué, et l’ont utilisé parce qu’il semblait suffisamment exploitable.
      Même après que cet étudiant est parti au MIT pour un autre projet, il avait un terminal dans sa chambre sur le campus et corrigeait les bugs dès qu’ils apparaissaient ; il arrivait qu’ils soient bloqués à attendre la fin de ses corrections. On y trouve aussi cette remarque : « si la direction avait su qu’ils utilisaient l’outil d’un doctorant quelconque pour une méthodologie clé, elle ne l’aurait jamais autorisé ».
      Right-o avait également publié un article sur le placement-routage par cellules standard du i386, avec un lien vers l’interview en panel et l’indication des zones précises du die du i386 où des cellules standard étaient utilisées.
      https://www.righto.com/2024/01/intel-386-standard-cells.html
  • Je ne vois absolument aucune image, et la cause semble être Cloudflare.
    Quand on ouvre la page, on peut passer la vérification « are you human » de CF, mais le même contrôle s’applique aussi au chargement de chaque image, et cet écran de vérification n’est pas affiché à l’utilisateur. Au final, une page HTML est renvoyée à la place de l’image, si bien que les images ne se chargent pas.

    • Il y a quelques jours, j’ai essayé d’analyser un fichier sur VirusTotal, mais un captcha me demandant de « sélectionner toutes les bouches d’incendie » apparaissait avec un fondu interminablement lent, et après avoir été refusé 10 fois de suite, j’ai abandonné.
      C’était comme s’ils m’avaient déjà rejeté avant même le captcha et me tourmentaient juste pour le plaisir. Plus étrange encore, VirusTotal affichait un second formulaire d’upload sur la page du captcha, mais ce formulaire-là n’avait lui-même aucun captcha.
    • J’utilise uMatrix et je suis habitué à l’étape « are you human » de Cloudflare, mais ici je ne reproduis pas le problème décrit.
      Le tableau de bord n’indique pas non plus que Cloudflare intervient.
  • Si les « processeurs modernes sont trop petits pour être observés au microscope à cause de leurs transistors à l’échelle du nanomètre », je me demande s’il ne faudrait pas tous se cotiser pour offrir à Ken un bon microscope électronique.

  • Les logiciels EDA modernes ne sont-ils pas devenus assez sophistiqués pour placer eux-mêmes les transistors sans dépendre des cellules standard ?

    • Je ne pense pas. En réalité, l’état des logiciels EDA actuels est encore pire que cela.
      J’ai travaillé sur un projet visant à concevoir et construire de meilleurs logiciels EDA ; cet outil peut simuler et optimiser chaque transistor afin de le former et de le placer pour obtenir une faible consommation, une grande vitesse et un faible coût.
      L’inconvénient, c’est qu’il manipule beaucoup plus d’unités au niveau transistor que l’EDA existant, et doit donc tourner sur un petit supercalculateur à 100 000 dollars ou sur un cluster de FPGA. Malgré cela, je pense qu’il reste moins cher que l’EDA actuelle et qu’il permettrait de produire des puces et des wafers plus rapides, meilleurs et moins chers, avec moins de transistors.
      La vision d’ensemble du logiciel a été abordée indirectement dans cette présentation : https://vimeo.com/731037615
      J’aimerais aussi présenter le logiciel EDA lui-même, donc n’hésitez pas à m’inviter.
      D’autres chercheurs et entreprises ont également montré qu’il était possible d’optimiser la conception et le placement des transistors au-delà des bibliothèques de cellules standard et des PDK ; par exemple, ce cas a été réalisé avec leur propre logiciel EDA : https://www.micromagic.com/news/Ultra-Low-Power_PressRelease...
      Je suis très convaincu qu’Apple a utilisé ce genre d’approche pour les M1, M2, M3, M4, M5, en particulier les puces M2 haut de gamme et M5 Ultra, mais je n’en ai pas de preuve certaine.
      Je pense qu’en utilisant simplement de meilleurs logiciels EDA que ceux employés aujourd’hui (CAD=> SYM=> FAB), l’humanité pourrait concevoir des puces informatiques 3 à 4 ordres de grandeur plus rapides, et fabriquer des puces bien moins chères avec au moins 2 ordres de grandeur d’énergie en moins. La loi de Moore n’est pas terminée, et le démontrer demandera plus d’efforts qu’un commentaire HN.
    • Comme le dit aussi l’article, la génération d’un layout optimal est un problème d’optimisation dont le problème de décision associé est NP-complet.
      Même le placement de cellules standard doit être résolu par heuristiques ; si l’on descend du niveau cellule au niveau transistor, la taille du problème augmente et cela empire.
      De toute façon, la logique est composée de portes standard comme les bascules et de blocs logiques ; le surcoût lié à l’utilisation de cellules standard implémentant ces briques de base n’est donc probablement pas très important.
    • Vu sous un autre angle, la puissance de calcul disponible pour les logiciels EDA a elle aussi augmenté à peu près au même rythme que le nombre de transistors sur le die.
      La complexité du problème par rapport à la puissance de calcul disponible est donc restée relativement constante, et la conception à base de cellules standard demeure un moyen efficace de réduire la complexité du problème que les outils EDA doivent résoudre.
    • Tous les outils utilisés dans les procédés industriels récents de 40 à 12 nm s’appuient largement sur les bibliothèques de cellules standard fournies par les fonderies.
      Je ne pense pas que cela changera avec la génération actuelle ou la suivante. Je travaille dans l’EDA.
    • Je comprends que ce n’est pas un problème logiciel, mais que les fonderies imposent l’utilisation de blocs dont le procédé a été validé.
      Sinon, le rendement pourrait devenir instable ou imprévisible.
  • L’une des différences entre les cellules standard mentionnées dans l’article et les cellules standard actuelles, c’est qu’aujourd’hui le nombre de couches métalliques a augmenté, ce qui a fait disparaître les canaux de routage.
    À l’époque, comme il était difficile de faire passer du métal au-dessus des lignes Vdd et de masse situées en haut et en bas des cellules, les lignes en polysilicium étaient prolongées jusqu’aux bords supérieur et inférieur. Le routage consistait à faire entrer le poly dans le canal, puis à relier les cellules entre elles avec du métal.
    Ainsi, sur la photo, la ligne de poly mise à nu semble ne former qu’un seul élément, mais du point de vue de la conception, la partie à l’intérieur de la cellule est standard, tandis que la partie dans le canal est sur mesure.
    Cette méthode fonctionne même avec seulement du poly et une première couche de métal, mais avec suffisamment de couches métalliques, on peut faire passer le routage à l’intérieur de la cellule. Il faut toutefois éviter les vias qui descendent les entrées et les sorties vers les transistors.
    En inversant une ligne de cellules sur deux, les PMOS de deux lignes se retrouvent à partager le rail Vdd, et les NMOS de deux lignes à partager le rail de masse, ce qui apporte aussi un gain supplémentaire.

  • Disséquer un processeur de cette manière pourrait être une activité pédagogique amusante à faire à l’école, un peu comme la dissection d’une grenouille.
    Avec l’avantage de ne pas poser de problème de droits des animaux.

    • Personnellement, j’aimerais que tout le monde ouvre une puce au moins une fois.
      Si ce n’est pas une puce encapsulée dans de l’époxy, ce n’est pas difficile, et regarder à l’intérieur est intéressant. Pour voir les détails, il faut un microscope métallographique, mais même à l’œil nu on peut observer des structures fascinantes.
    • Le décapsulage d’un processeur produit des déchets toxiques, qu’il faut ensuite traiter.
      Un processeur, s’il est manipulé correctement, dure bien plus longtemps qu’une grenouille et, en gros, ne s’use pas, donc il peut être réutilisé à de nombreuses reprises. À mon avis, le processus de fabrication d’un nouveau processeur pourrait causer à davantage de grenouilles une souffrance plus importante que le fait de tuer une grenouille destinée à la dissection.
      En plus, nous avons désormais des lecteurs vidéo dans nos poches. Disséquer soi-même une grenouille peut être plus instructif que regarder quelqu’un d’autre le faire, mais je doute que ce soit plus pédagogique que de regarder 20 vidéos de dissection bien commentées. Je ne pense pas qu’il soit nécessaire de faire les deux.
  • Il existe aussi des cellules standard open source pour les personnes intéressées.
    https://www.vlsitechnology.org/html/libraries.html
    https://opensource.googleblog.com/2022/07/SkyWater-and-Googl...