Regard à l'intérieur du coprocesseur Intel 8087

Un peu d'histoire du développement de la gamme de processeurs 8 bits fabriqués par Intel


La gamme de processeurs huit bits commence son histoire en avril 1972. L'Intel 8008 était initialement prévu pour être utilisé dans les calculatrices, les périphériques d'entrée-sortie, mais le fabricant, après une bonne «réflexion», a décidé de trouver une nouvelle destination pour la gamme - pour être le processeur central d'un PC. Selon les modifications du processeur, la fréquence d'horloge était de 500 ou 800 KHz, et les performances étaient de 45000-160000 opérations par seconde.


Intel C8008

En avril 1974, Federico Faggini et Masatoshi Shima ont développé une nouvelle gamme de processeurs - Intel 8080 . 6000 transistors étaient logés dans un boîtier en céramique à 40 broches, un bus d'adresse 16 bits et un bus de données 8 bits, 64 Ko de mémoire adressable. La fréquence d'horloge était de 2 MHz et les performances pouvaient atteindre 500 000 opérations par seconde. Afin que le processeur devienne «confortable», un coprocesseur arithmétique, un générateur d'horloge, des bus shapers, une minuterie, des contrôleurs de périphériques, etc. ont été développés.


Intel 8080A

Deux ans plus tard, en mars 1976, la ligne Intel 8085 voit le jour: 6500 transistors sont placés dans un boîtier en céramique (ou plastique) à 40 broches. La fréquence d'horloge variait de 3 à 8 MHz, la largeur du bus de données était de 8 bits, la largeur du bus d'adresse était de 16 bits, la mémoire adressable était de 64 Ko. Cette ligne a été "impliquée" avec succès dans le PC ou sous forme de microcontrôleurs.



En juin 1978, la première ligne de processeurs à seize bits de la société a commencé à produire - Intel 8086 : 29 000 transistors ont été placés sur une puce de 5,5 x 5,5 mm. La fréquence d'horloge variait de 5 à 10 MHz, les performances allaient de 330 à 750 mille opérations par seconde, la largeur du bus de données était de 16 bits et la largeur du bus d'adresse était de 20 bits.


Intel 8086

Un an plus tard, à l'été 1979, Intel a publié la ligne 8088 - une liaison de transition entre les processeurs 8 et 16 bits: 29 000 transistors, la fréquence d'horloge était de 5-10 MHz. Mais la ligne 8088 n'est pas devenue populaire en raison de son coût élevé.


Intel P8088

Coprocesseurs 8087


En juin 1980, la gamme de coprocesseurs Intel 8087 a été lancée pour les Intel 8086, 8088. Ces coprocesseurs contenaient 45 000 transistors, la fréquence d'horloge dans différentes versions variait de 4 à 10 MHz.


Intel C8087

Le coprocesseur mathématique est un module spécial pour effectuer des opérations en virgule flottante, qui fonctionne en conjonction avec le processeur central.

Afin d'économiser de l'argent d'un luxe comme un coprocesseur, ils ont simplement refusé. Mais pour résoudre des tâches à forte intensité de main-d'œuvre, par exemple les mêmes calculs d'ingénierie, l'amélioration des performances de l'ordinateur est devenue une nécessité. Ils ont réussi à augmenter les performances grâce à un tel module spécial - un coprocesseur mathématique.

Selon INTEL, un coprocesseur mathématique peut réduire de 80% ou plus le temps nécessaire pour terminer les opérations mathématiques, telles que la multiplication, la division et l'exponentiation. La vitesse d'exécution d'opérations mathématiques simples, telles que l'addition et la soustraction, ne change pas.


À l'intérieur de la puce du microprocesseur Intel 8087


En regardant à l'intérieur de la virgule flottante Intel 8087, j'ai remarqué une caractéristique intéressante sur la puce: le schéma de formation de biais de substrat. Dans cet article, je vais expliquer comment ce circuit est implémenté à l'aide de circuits analogiques et numériques pour créer une tension négative.

Intel a développé la puce 8087 en 1980 afin d'améliorer les performances des PC équipés de processeurs de ligne 8086/8088 (comme le PC IBM) lors de l'exécution d'opérations en virgule flottante. Les premiers microprocesseurs étant conçus pour effectuer des opérations avec des nombres entiers, l'exécution des opérations avec des nombres à virgule flottante était lente, c'est-à-dire sur les performances des opérations transcendantales, telles que les fonctions trigonométriques ou les logarithmes. Le coprocesseur 8087 a considérablement augmenté la vitesse d'exécution des tâches en virgule flottante; tout a été fait presque 100 fois plus rapidement. L'architecture 8087 a également été implémentée dans les processeurs Intel ultérieurs, et les instructions 8087 sont toujours utilisées dans les PC x86 modernes.
Plus de 60 nouvelles instructions ont été introduites pour le coprocesseur, dont le nom a commencé par "F" afin de les distinguer des instructions entières d'Intel 8086.
J'ai ouvert la puce 8087 et, à l'aide d'un microscope haute performance, j'ai pris des photos, grâce à leur disposition, j'ai obtenu l'image suivante:



Le cristal 8087 est très complexe, contenant 40 000 transistors (selon Intel) ou 45 000 (selon Wikipedia). Sur la photo, il y a une couche métallique de la puce, les connexions sont situées sur le dessus de la puce. Les lignes blanches les plus épaisses fournissent puissance et mise à la terre à toutes les parties de la puce. Sous la couche métallique se trouve du polysilicium ou du silicium, à partir duquel les transistors de la puce sont formés.

Dans la moitié inférieure de la puce se trouve un circuit arithmétique étendu de 80 bits: additionneur, registres, commutateurs, constantes mathématiques. Le grand rectangle au milieu de la puce est un microcode qui implémente un ensemble d'instructions de processeur. Dans la partie supérieure se trouvent des circuits logiques et un circuit de bus qui est couplé avec le processeur 8086.

Les lignes noires autour de la puce sur la photo sont de petits composés de thermocompression reliant les plots de contact IC (sections conductrices métallisées de forme carrée ou rectangulaire, situées principalement autour de la périphérie du cristal ou du substrat) avec 40 contacts sur la puce. En étudiant la description technique 8087, il n'est pas difficile de déterminer quelle zone de contact sur la matrice correspond à quel contact du microcircuit; 40 broches de la puce (numérotées dans le sens antihoraire) sont connectées à 40 pads sur la puce.

Ci-dessous, une image agrandie d'une partie de la matrice, sur laquelle nous pouvons mieux considérer les plots de contact. (Veuillez noter que les bornes de mise à la terre et les blocs d'alimentation +5 V ont plusieurs connexions en même temps, ce qui augmente la quantité de courant délivrée). Mais voici une «surprise» - il y a un plot de contact supplémentaire et une connexion située entre les plots de contact 40 et 1, et qui n'est associée à aucun des contacts du microcircuit.



En regardant la connexion de thermocompression des fils conducteurs sur la puce (l'image ci-dessous), il s'est avéré que le mystérieux plot de contact n'est connecté à aucun contact, mais est connecté à un petit bloc en forme de cube. Ce "cube" est situé sur la même base métallique que le cristal, connecté au substrat de silicium de la puce, la carte.

J'ai fait une analyse technique de la technologie de fabrication dans le but de révéler les «secrets de l'entreprise» et je suis arrivé à la conclusion que cela fait partie du circuit de polarisation du substrat 8087 dans lequel ce composé est utilisé pour appliquer une tension négative au substrat. Comment fonctionne ce circuit?



Qu'est-ce qu'un offset de substrat?


Dans les années 1970, des circuits intégrés haute densité ont été construits à partir de transistors n-MOS (un transistor à effet de champ avec une grille isolée et un canal de type n). L'image ci-dessous montre clairement leur structure. La base de la puce est un substrat en silicium. Les transistors, quant à eux, sont également en silicium. Afin de changer le type de conductivité et la concentration des supports dans la majeure partie du semi-conducteur pour obtenir les propriétés souhaitées, les régions de silicium sont dopées avec des impuretés pour créer des régions de diffusion avec les propriétés souhaitées. Le transistor peut être considéré comme une résistance, permettant au courant de circuler entre deux zones de diffusion de la source et du drain. Le transistor est commandé par une grille en polysilicium. La tension d'entrée à la grille contrôle le flux de courant de la source au drain: un signal haute tension à la grille permet au courant de circuler de la source au drain, tandis qu'un signal basse tension bloque le courant. Une couche d'oxyde isolant sépare la grille du silicium en dessous; l'importance de cette couche sera considérée un peu plus tard. Ces minuscules transistors peuvent être combinés pour former des portes logiques, des composants de microprocesseur et d'autres cristaux de circuits intégrés numériques.



Dans les circuits intégrés haute performance, il était avantageux d'utiliser une «polarisation» négative de la tension aux bornes du substrat. Pour obtenir cette tension de polarisation du substrat, de nombreuses puces dans les années 1970 avaient un contact externe connecté à -5V. Cependant, les ingénieurs n'ont pas aimé les puces nécessitant une tension supplémentaire. Les puces de cette époque avaient souvent besoin de trois alimentations. De plus, le nombre de contacts sur le CI était limité (en règle générale, seulement 18 contacts pour les puces mémoire). Par conséquent, l'utilisation de deux contacts supplémentaires pour une tension supplémentaire n'était pas une bonne solution. Une solution partielle a été trouvée à la fin des années 1970: les puces ont généré une tension de polarisation négative à l'intérieur. Il y avait donc des puces dans lesquelles une alimentation pratique + 5V était utilisée, et cela permettait clairement aux ingénieurs d'être "plus heureux".

Circuit de polarisation du substrat intérieur 8087


Vous vous demandez peut-être comment une puce peut transformer une tension positive en tension négative. La réponse est un circuit de pompe de charge appelé pompe de charge. Utilise des condensateurs comme dispositifs de stockage de charges, qui sont transférés d'un condensateur à un autre à l'aide d'un système de commutateurs. Le «générateur de polarisation» du 8087 a deux pompes de charge à tour de rôle. Les schémas ci-dessous montrent le fonctionnement d'une telle pompe de charge. La pompe de charge est commandée par un signal oscillant (Q) et son inversion (Q). Au premier étage, le transistor supérieur est passant, à la suite de quoi le condensateur est chargé jusqu'à 5 volts par rapport à la terre. La deuxième étape est celle où la magie opère. Le transistor inférieur est activé en connectant le côté haute tension du condensateur à la masse. Étant donné que le condensateur est toujours en charge jusqu'à 5 volts, le côté inférieur du condensateur devrait maintenant être de -5 volts, créant la tension de sortie négative souhaitée. Lorsque l'oscillateur bascule à nouveau, le transistor supérieur se met sous tension et le cycle se répète. La pompe de charge tire son nom, car elle pompe la charge de la sortie au sol. La pompe de charge est similaire à une pompe à eau manuelle.



J'ai examiné la puce au microscope. La couche métallique cache les transistors en dessous, ce qui rend difficile la visualisation du circuit. Mais, après avoir enlevé la couche métallique avec de l'acide chlorhydrique, je suis arrivé aux couches de polysilicium et de silicium, transistors et condensateurs «découverts», illustrés ci-dessous (les zones colorées ne sont que du bruit, car certains oxydes n'ont pas été complètement éliminés). La photo ci-dessous montre deux pompes de charge: une à gauche du plot de contact et la seconde ci-dessous. Chaque pompe de charge conformément au schéma possède deux diodes, un grand condensateur et deux transistors.



Les condensateurs sont la «caractéristique» la plus notable du circuit de polarisation du substrat. Bien qu'en fait, leurs tailles soient microscopiques, elles sont énormes par rapport aux normes de mesure des dimensions de la puce. La zone du condensateur est approximativement comme une mémoire de registre de 72 bits (plus de 400 transistors). Chaque condensateur est constitué de polysilicium sur une partie en silicium séparée par un oxyde isolant; le polysilicium et le silicium forment des plaques de condensateur. Sur la photo, les condensateurs sont parsemés de carrés; ces carrés sont les contacts entre le polysilicium (ou silicium) et la couche métallique sur le dessus. (La couche métallique n'est pas visible car elle a été effacée).

Quatre transistors de commande sont des transistors haute puissance. Leurs tailles sont supérieures aux transistors conventionnels. Les lignes rouges sont des composés de polysilicium qui forment un obturateur. Lignes vertes - contacts avec la couche métallique, reliant les transistors à +5 V ou à la masse. Les diodes près du plot de contact sont formées de transistors lorsque la grille et le drain sont connectés.

Les pompes de charge sont entraînées par un oscillateur circulaire, comme indiqué dans l'image ci-dessous. Cet oscillateur circulaire se compose de cinq onduleurs en court-circuit. Le nombre d'onduleurs étant impair, le système est instable et oscille. Par exemple, si l'entrée du premier onduleur est 0, la sortie du cinquième onduleur sera 1. Pour ralentir la vitesse d'oscillation, il y a deux circuits résistifs-capacitifs dans un cercle. Puisqu'il faut un certain temps pour charger et décharger le condensateur, les oscillations ralentiront, ce qui donnera le temps à la pompe de charge de fonctionner.



Avant de décomposer les informations sur un oscillateur circulaire, je montrerai comment un onduleur NMOS standard en silicium est implémenté. Ci-dessous, un onduleur, sa représentation schématique et comment il est implémenté sur une puce. L'onduleur utilise un transistor et une résistance de charge (qui est en fait un transistor). Si le signal d'entrée est faible, le transistor est bloqué, alors la résistance de charge fournit jusqu'à +5 V. Si le signal d'entrée est élevé, le transistor est passant, la tension de sortie est fournie à la masse. Ainsi, le circuit inverse l'entrée.



Le silicium dopé dans l'image est de grandes zones de couleur beige. De minces taches jaunes à côté des violettes sont en polysilicium. L'entrée est un fil de polysilicium. À son intersection avec du silicium dopé, il forme une grille de transistor entre la masse (en dessous de l'entrée) et la sortie (au-dessus de l'entrée). Une résistance de charge est implémentée dans un transistor qui a une grille et un drain connectés ensemble; ce contact forme cette connexion entre la grille de silicium polycristallin du transistor et son drain de silicium. Le polysilicium forme également un fil de sortie. Ainsi, l'onduleur sur la puce est implémenté avec deux transistors.



La photo ci-dessus montre comment un oscillateur circulaire est formé sur un cristal. Les cinq onduleurs sont représentés. Chaque onduleur a une direction différente, ce qui optimise la structure.Les résistances et les condensateurs du circuit RC sont également indiqués. Les résistances sont simplement des transistors avec une grande distance entre la source et le drain, ce qui réduit le mouvement du courant. Les condensateurs sont conçus comme des condensateurs de pompe de charge, mais de taille beaucoup plus petite; le silicium en bas et le polysilicium en haut forment des plaques de condensateur séparées par une fine couche d'oxyde isolant.

Conclusions


Le générateur de tension de polarisation du substrat sur la puce 8087 est une combinaison intéressante d'un circuit numérique (un oscillateur circulaire formé d'onduleurs) et d'une pompe de charge analogique. Les circuits générateurs de tension de polarisation du substrat ont été introduits à la fin des années 1970, ce qui permettait aux puces de mémoire et aux microprocesseurs de fonctionner à partir d'une seule alimentation +5 V. Cela était beaucoup plus pratique que d'utiliser trois sources de tension différentes. Le générateur de polarisation du substrat génère une tension négative à partir d'une tension d'alimentation positive à l'aide d'une pompe de charge.

Bien que le générateur de polarisation de tension puisse sembler un moment obscur dans l'histoire de l'ordinateur des années 1970, ce processus fait toujours partie des circuits intégrés modernes, bien que tout soit devenu beaucoup plus compliqué.

Malgré le fait que la puce à virgule flottante Intel 8087 ait été développée et mise en service il y a 38 ans, son «influence» est palpable aujourd'hui. Grâce à son apparence, la norme IEEE 754, la «norme IEEE décrivant le format de représentation des nombres à virgule flottante, a été adoptée. Il est utilisé dans les implémentations logicielles (compilateurs de différents langages de programmation) et matérielles (CPU et FPU) des opérations arithmétiques (opérations mathématiques). " Les instructions 8087 font toujours partie des processeurs x86.



Notes et liens


1. Plus de 60 nouvelles instructions ont été introduites pour le coprocesseur, dont le nom a commencé par "F", afin de les distinguer des instructions Intel 8086. Par exemple, les analogues des commandes ADD / MUL / CMP en 8087 ressemblaient à FADD / FMUL / FCOM . Ces instructions ont été implémentées à l'aide de la commande 8086 ESC «escape», conçue pour permettre au processeur 8086 de communiquer avec le coprocesseur.

L'avènement du coprocesseur a conduit à la création de la norme IEEE 754 en 1985 pour l'arithmétique à virgule flottante;

2. L'application d'une tension de polarisation négative au substrat présente plusieurs avantages. Cette capacité parasite réduite, qui a accéléré le fonctionnement de la puce, a rendu la tension de seuil du transistor plus prévisible et a réduit le courant de fuite.

3. Auparavant, les puces DRAM et microprocesseur nécessitaient souvent trois sources de tension: + 5 V (Vcc), + 12V (Vdd) et -5V (Vbb). À la fin des années 1970, la technologie de pointe des puces permettait l'utilisation d'une seule source d'alimentation. Par exemple, le MK4116 de Mostek (DRAM de 16 kilo-octets depuis 1977) nécessitait trois sources de tension, tandis que le MK4516 avancé (1981) fonctionnait uniquement sur +5 V, simplifiant ainsi la conception matérielle. La même chose s'est produite avec les puces Intel: 2116 DRAM (16K, 1977) utilisant trois tensions et amélioré 2118 (1979) - une tension. Le microprocesseur bien connu Intel 8080 (1974) utilisait des transistors fonctionnant en mode d'enrichissement, il nécessitait donc trois tensions. Une version améliorée, 8085 (1976), utilisait des transistors à déplétion et était alimentée par une seule alimentation +5 V.

4. La troisième alimentation (+12 V) des anciennes puces n'est pas liée à la polarisation du substrat. Cette source a été utilisée parce que dans les premiers circuits intégrés MOS, il y avait des transistors fonctionnant en mode d'enrichissement, augmentant la tension aux portes. +5 , +12 . 1970- ( ) , +12 .

5. . - , , -3 , -5 . . , .

, . ? ? , 30% entry-level , : VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps $20 ? ( RAID1 RAID10, 24 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps , .

Dell R730xd 2 ? 2 Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 $249 ! . c Dell R730xd 5-2650 v4 9000 ?

Source: https://habr.com/ru/post/fr424889/


All Articles