Mode de conception et de construction des processeurs, partie 2: processus de conception de processeurs

Maintenant que nous savons comment fonctionnent les processeurs, il est temps de creuser pour comprendre comment sont conçus les composants internes. Cet article est la deuxième partie de notre série sur la conception des processeurs. Si vous n'avez pas encore lu la première partie, vous voudrez peut-être l'examiner en premier lieu, sinon certains des concepts présentés ici n'auront aucun sens.

Comme vous le savez probablement, les processeurs et la plupart des autres technologies numériques sont constitués de transistors. La manière la plus simple de penser à un transistor consiste à utiliser un commutateur contrôlable à trois broches. Lorsque la porte est activée, l’électricité est autorisée à traverser le transistor. Lorsque la porte est éteinte, le courant ne peut pas circuler. Tout comme l'interrupteur sur votre mur, mais beaucoup plus petit, beaucoup plus rapide et capable d'être contrôlé électriquement.

Il existe deux principaux types de transistors utilisés dans les processeurs modernes: pMOS et nMOS. Un transistor nMOS permet au courant de circuler lorsque la grille est chargée ou définie haute, et un transistor pMOS permet au courant de traverser la grille lorsque celle-ci est déchargée ou définie à l'état bas. En combinant ces types de transistors de manière complémentaire, nous pouvons créer des portes logiques CMOS. Nous n'entrerons pas dans les détails nécessaires au fonctionnement physique des transistors dans cet article, mais nous en parlerons dans la troisième partie de la série.

Une porte logique est un dispositif simple qui prend des entrées, effectue des opérations et génère un résultat. Par exemple, une porte ET activera sa sortie si et seulement si toutes les entrées de la porte sont activées. Un inverseur ou une porte NOT activera sa sortie si l'entrée est désactivée. Nous pouvons combiner ces deux pour créer une NAND ou non et une porte qui active sa sortie si et seulement si aucune des entrées n’est activée. Il existe d'autres portes avec différentes fonctionnalités logiques telles que OR, NOR, XOR et XNOR.

Ci-dessous, nous pouvons voir comment deux portes de base sont conçues à partir de transistors: un inverseur et une porte NAND. Dans l'onduleur, un transistor pMOS est connecté en haut à la ligne d'alimentation et un transistor nMOS en bas est relié à la masse. Les transistors pMOST sont dessinés avec un petit cercle se connectant à leur porte. Puisque nous avons dit que les périphériques pMOS conduisent lorsque l'entrée est désactivée et que les périphériques nMOS conduisent lorsque l'entrée est désactivée, il est facile de voir que le signal en sortie sera toujours l'inverse du signal en entrée. En regardant la porte NAND, nous voyons qu’elle nécessite quatre transistors et que la sortie sera activée tant qu’au moins une des entrées est désactivée. Connecter des transistors pour former des réseaux simples comme celui-ci est le même processus que celui utilisé pour concevoir des portes logiques plus avancées et d'autres circuits à l'intérieur des processeurs.

Avec des blocs de construction aussi simples que des portes logiques, il peut être difficile de voir comment ils sont transformés en un ordinateur fonctionnel. Ce processus de conception implique la combinaison de plusieurs portes pour créer un petit appareil pouvant exécuter une fonction simple. Vous pouvez ensuite connecter plusieurs de ces périphériques pour créer quelque chose qui remplit une fonction légèrement plus avancée. Le processus consistant à combiner des composants individuels pour créer un projet fonctionnel est exactement ce qui est utilisé aujourd'hui pour créer des puces modernes. La seule différence est qu’une puce moderne a des milliards des transistors.

Pour un exemple rapide, examinons un additionneur de base additionneur complet 1 bit. Il prend trois entrées – A, B et Carry-In, et produit deux sorties – Sum et Carry-Out. La conception de base utilise cinq portes logiques et elles peuvent être liées pour créer l’additionneur de toute taille souhaitée. Les conceptions modernes améliorent cela en optimisant une partie de la logique et des signaux, mais les principes fondamentaux restent les mêmes.

La sortie Sum est activée si A ou B est activé mais pas les deux, ou s'il existe un signal de report et si A et B sont tous deux activés ou désactivés. Le report est un peu plus complexe. Il est actif lorsque A et B sont tous deux allumés en même temps, ou s'il y a un report et que l'un de A ou B est allumé. Pour connecter plusieurs additionneurs 1 bit afin de former un additionneur plus large, il suffit de relier le report du bit précédent au report du bit en cours. Plus les circuits deviennent complexes, plus la logique devient confuse, mais c'est la manière la plus simple d'ajouter deux nombres. Les processeurs modernes utilisent des additionneurs plus complexes, mais ces conceptions sont trop compliquées pour un tel aperçu. Outre les additionneurs, les processeurs contiennent également des unités pour les versions de division, de multiplication et à virgule flottante de toutes ces opérations.

La combinaison d’une série de portes comme celle-ci pour exécuter certaines fonctions sur les entrées est connue sous le nom de Logique Combination. Ce type de logique n'est pas la seule chose que l'on trouve dans les ordinateurs. Cela ne serait pas très utile si nous ne pouvions pas stocker de données ou garder trace de l'état de quoi que ce soit. Pour ce faire, nous avons besoin d’une logique séquentielle capable de stocker des données.

La logique séquentielle est construite en reliant soigneusement les onduleurs et autres portes logiques de telle sorte que leurs sorties soient renvoyées à l'entrée des portes. Ces boucles de rétroaction sont utilisées pour stocker un bit de données et sont appelées RAM statique ou SRAM. C'est ce qu'on appelle la RAM statique, par opposition à dynamique dans la DRAM, car les données stockées sont toujours directement connectées à une tension positive ou à la masse.

Une méthode standard pour mettre en œuvre un seul bit de mémoire SRAM consiste à utiliser les 6 transistors indiqués ci-dessous. Le signal supérieur, marqué WL pour Ligne de mot, est l’adresse et quand il est activé, les données stockées dans cette cellule de 1 bit sont envoyées au Ligne de bit, marqué BL. La sortie BLB est appelée Barre de ligne de bit, est simplement la valeur inversée de Bit Line. Vous devriez être capable de reconnaître les deux types de transistors et que M3 et M1 forment un inverseur avec M4 et M2.

La SRAM est ce qui est utilisé pour construire les caches et les registres ultra rapides dans les processeurs. Il est très stable mais nécessite six à huit transistors pour stocker chaque bit de données. Cela rend la production extrêmement coûteuse en termes de coût, de complexité et de surface de puce par rapport à la mémoire DRAM. La RAM dynamique, en revanche, stocke les données dans un condensateur plutôt que d'utiliser des portes logiques. On l'appelle dynamique car la tension du condensateur peut changer de façon dynamique car il n'est pas connecté à l'alimentation ou à la terre. Un seul transistor est utilisé pour accéder aux données stockées dans le condensateur.

Étant donné que la DRAM ne nécessite qu'un seul transistor par bit et que sa conception est très évolutive, elle peut être compressée de manière dense et économique. L’un des inconvénients de la mémoire DRAM est que la charge dans le condensateur est si faible qu’elle doit être rafraîchie en permanence. C'est pourquoi, lorsque vous éteignez votre ordinateur, les condensateurs s'épuisent et les données de votre RAM sont perdues.

Des sociétés comme Intel, AMD et Nvidia ne publient pas de schémas décrivant le fonctionnement de leurs processeurs. Il est donc impossible d'afficher des diagrammes complets de ce type pour un processeur moderne. Cependant, ce simple additionneur devrait vous donner une bonne idée de la façon dont même les parties les plus complexes d’un processeur peuvent être décomposées en portes logiques, en éléments de stockage, puis en transistors.

Maintenant que nous savons comment sont construits certains composants d’un processeur, nous devons déterminer comment tout connecter et tout synchroniser. Tous les composants clés d’un processeur sont connectés à un signal d'horloge. Ceci alterne entre haut et bas à un intervalle prédéfini connu sous le nom de la fréquence. La logique à l'intérieur du processeur bascule généralement les valeurs et effectue des calculs lorsque l'horloge passe de bas à élevé. En synchronisant tous les éléments ensemble, nous pouvons nous assurer que les données arrivent toujours au bon moment, de sorte qu'il n'y ait pas de problèmes dans le processeur.

Vous avez peut-être entendu dire que vous pouvez augmenter l'horloge d'un processeur, appelé overclocking, pour en améliorer les performances. Ce gain de performance provient de la commutation des transistors et de la logique à l'intérieur d'un processeur plus rapidement que prévu. Puisqu'il y a plus de cycles par seconde, il est possible de faire plus de travail et le processeur aura de meilleures performances. C'est vrai jusqu'à un certain point cependant. Les processeurs modernes fonctionnent généralement entre 3,0 GHz et 4,5 GHz et cela ne semble pas avoir changé au cours des dix dernières années. Tout comme une chaîne en métal est aussi solide que le maillon le plus faible, un processeur ne peut fonctionner aussi vite que la partie la plus lente. À la fin de chaque cycle d'horloge, chaque composant d'un processeur doit avoir terminé son opération. Si des parties ne sont pas encore terminées, l'horloge est trop rapide et le processeur ne fonctionnera pas. Les concepteurs appellent cette partie la plus lente la Chemin critique et c’est ce qui définit la fréquence maximale à laquelle un processeur peut fonctionner. Au-dessus d'une certaine fréquence, les transistors ne peuvent tout simplement pas commuter assez vite et commenceront à créer des pépins ou à produire des sorties incorrectes.

En augmentant la tension d'alimentation d'un processeur, nous pouvons accélérer la commutation des transistors, mais cela ne fonctionne que jusqu'à un certain point également. Si nous appliquons trop de tension, nous risquons de brûler le processeur. Lorsque nous augmentons la fréquence ou la tension d'un processeur, il génère toujours plus de chaleur et consomme plus d'énergie. En effet, la puissance du processeur est directement proportionnelle à la fréquence et proportionnelle au carré de la tension. Pour déterminer la consommation d'énergie d'un processeur, nous considérons généralement chaque transistor comme un petit condensateur qui doit être chargé ou déchargé chaque fois qu'il change de valeur.

La fourniture d’alimentation est une partie tellement importante d’un processeur que, dans certains cas, la moitié des broches physiques d’une puce peut uniquement servir à l’alimentation ou à la terre. Certaines puces peuvent tirer plus de 150 ampères à pleine charge et tout ce courant doit être géré avec une extrême prudence. Pour mettre cette quantité d'énergie en perspective, un processeur génère plus de chaleur par unité de surface qu'un réacteur nucléaire.

L’horloge des processeurs modernes représente environ 30 à 40% de sa consommation totale, tant elle est complexe et doit piloter autant de périphériques différents. Pour économiser de l'énergie, la plupart des conceptions à faible consommation éteignent des parties de la puce lorsqu'elles ne sont pas utilisées. Cela peut être fait en éteignant l'horloge, connue sous le nom de synchronisation d'horloge, ou en mettant hors tension, appelée Power Gating.

Les horloges représentent un autre défi pour la conception d’un processeur, car à mesure que leurs fréquences augmentent, les lois de la physique commencent à faire obstacle. Même si la vitesse de la lumière est extrêmement rapide, elle n’est pas assez rapide pour les processeurs hautes performances. Si vous connectiez l'horloge à une extrémité de la puce, le temps que le signal atteigne l'autre extrémité serait considérablement désynchronisée. Pour conserver toutes les parties de la puce dans le temps, l'horloge est distribuée à l'aide de ce qu'on appelle un arbre en H. Cette structure garantit que tous les points d'extrémité se trouvent à la même distance exacte du centre.

Il peut sembler extrêmement fastidieux et complexe de concevoir chaque transistor, signal d'horloge et connexion d'alimentation dans une puce, et ce serait certainement vrai. Même si des entreprises telles qu'Intel, Qualcomm et AMD comptent des milliers d'ingénieurs, il ne leur serait pas possible de concevoir manuellement tous les aspects d'une puce. Pour assembler des puces à une telle échelle, ils utilisent divers outils avancés pour générer les dessins et schémas correspondants. Ces outils prennent généralement une description détaillée de ce que le composant doit faire et déterminent une configuration matérielle optimale pour répondre à ces exigences. Il y a eu une tendance récente vers une technique appelée Synthèse de haut niveau ce qui permet aux développeurs de spécifier la fonctionnalité souhaitée dans le code, puis de faire en sorte que les ordinateurs déterminent comment l'obtenir de manière optimale au niveau matériel.

Tout comme vous pouvez définir des programmes informatiques via du code, les concepteurs peuvent également définir du matériel via du code. Des langages tels que Verilog et VHDL permettent aux concepteurs de matériel d'exprimer les fonctionnalités de tous les circuits qu'ils réalisent. La simulation et la vérification sont effectuées sur ces conceptions et si tout réussit, elles peuvent être synthétisées dans les transistors spécifiques qui constitueront le circuit. Bien que la vérification puisse sembler moins évidente que la conception d’un nouveau cache ou noyau, elle est considérablement plus importante. Pour chaque ingénieur concepteur employé par une entreprise, il peut y avoir au moins cinq ingénieurs en vérification.

La vérification d'une nouvelle conception prend souvent beaucoup plus de temps et d'argent que la construction de la puce elle-même. Les entreprises consacrent beaucoup de temps et d’argent à la vérification car une fois qu’une puce est mise en production, il n’ya aucun moyen de la réparer. Avec un logiciel, vous pouvez simplement émettre un correctif, mais le matériel ne fonctionne pas de cette façon. Par exemple, Intel avait un bogue dans l’unité de division en virgule flottante de certaines puces Pentium et leur a coûté l’équivalent de 2 milliards de dollars aujourd’hui.

Il peut être difficile de comprendre comment une puce peut avoir plusieurs milliards de transistors et ce qu’ils font tous. Lorsque vous décomposez la puce en composants internes individuels, cela devient un peu plus facile. Les transistors font des portes logiques, les portes logiques sont combinées en unités fonctionnelles qui effectuent une tâche spécifique, et ces unités fonctionnelles sont connectées ensemble pour former l'architecture informatique dont nous avons parlé dans la première partie.

Une grande partie du travail de conception est automatisée, mais cela devrait vous donner une nouvelle idée de la complexité du nouveau processeur que vous avez acheté.

Ce deuxième volet de notre série a couvert le processus de conception du processeur. Nous avons parlé de transistors, de portes logiques, de fourniture d’alimentation et d’horloge, de synthèse de conception et de vérification. Dans la partie 3, nous verrons ce qui est nécessaire pour construire physiquement une puce. Chaque entreprise aime se vanter de l'avancement de son processus de fabrication (Intel 10 nm, Apple et AMD 7 nm, etc.), mais que signifient ces chiffres? Restez à l'écoute.

Lectures recommandées:

Crédit générique: Traitement de code futuriste sur circuit imprimé par Kirill Savenko

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.