Dans un microprocesseur à 8 bits, son bus de données est constitué de 8 lignes de données. Dans un microprocesseur de 16 bits, son bus de données comprend 16 lignes de données, etc.
Pourquoi n’existe-t-il pas de microprocesseur 256 bits ni de microprocesseur 512 bits? Pourquoi n'augmentent-ils pas simplement le nombre de lignes de données et ne créent-ils pas un microprocesseur de 256 bits ou un microprocesseur de 512 bits?
Quel est l'obstacle qui empêche la création d'un microprocesseur de 256 bits ou d'un microprocesseur de 512 bits?
microcontroller
microprocessor
architecture
Michael Harris
la source
la source
Réponses:
Pensez-y. Envisagez-vous exactement un processeur "256 bits"? Qu'est-ce qui caractérise le bit-ness d'un processeur?
Je pense que si aucune autre qualification n'est faite, le bit-ness d'un processeur fait référence à sa largeur d'ALU. C'est la largeur du nombre binaire qu'il peut gérer de manière native en une seule opération. Un processeur "32 bits" peut donc fonctionner directement sur des valeurs allant jusqu'à 32 bits dans des instructions uniques. Votre processeur 256 bits contiendrait donc une très grande ALU capable d’ajouter, soustraire, ORing, ANDing, etc., des nombres de 256 bits en une seule opération. Pourquoi voulez-vous cela? Quel problème fait en sorte que la grande et coûteuse unité ALU vaut la peine d’avoir l’avoir et de la payer, même dans les cas où le processeur ne compte que 100 itérations d’une boucle ou autre?
Le fait est que vous devez payer pour la large UAL, que vous l'utilisiez alors beaucoup ou seulement une petite fraction de ses capacités. Pour justifier une unité ALU de 256 bits, vous devez trouver un problème assez important pouvant réellement tirer profit de la manipulation de mots de 256 bits dans des instructions uniques. Bien que vous puissiez probablement trouver quelques exemples, il n’ya pas assez de problèmes de ce type qui donnent l’impression qu’ils obtiendront un jour le retour sur l’investissement considérable requis pour produire une telle puce. S'il y a des problèmes de niche mais importants (bien financés) qui peuvent vraiment bénéficier d'une vaste UAL, nous verrions alors des processeurs très coûteux très ciblés pour cette application. Leur prix, cependant, empêcherait une utilisation large en dehors de l'application étroite pour laquelle il a été conçu. Par exemple, Si le 256 bits rendait certaines applications de cryptographie possibles pour l'armée, des processeurs spécialisés à 256 bits coûtant de 100 à 1 000 dollars chacun émergeraient probablement. Vous ne voudriez cependant pas en mettre un dans un grille-pain, une source d’alimentation ou même une voiture.
Je devrais également être clair sur le fait que le large ALU ne le rend pas seulement plus cher, mais aussi sur d’autres composants de la puce. Une unité ALU de 256 bits signifie également qu'il doit y avoir des chemins de données d'une largeur de 256 bits. Cela seul prendrait beaucoup de silicium. Ces données doivent provenir de quelque part et aller quelque part, il faut donc des registres, du cache, une autre mémoire, etc., pour que l'unité ALU large puisse être utilisée efficacement.
Un autre point est que vous pouvez faire n'importe quelle arithmétique de largeur sur n'importe quel processeur de largeur. Vous pouvez ajouter un mot de mémoire de 32 bits à un autre mot de mémoire de 32 bits d'un PIC 18 en 8 instructions, alors que vous pouvez le faire sur la même architecture mise à l'échelle à 32 bits en 2 instructions seulement. Le fait est qu’une ALU étroite ne vous empêche pas d’effectuer des calculs étendus, mais seulement que ceux-ci prendront plus de temps. C'est donc une question de rapidité et non de capacité. Si vous examinez le spectre des applications qui doivent utiliser des nombres de largeur particuliers, vous verrez que très peu de choses nécessitent des mots de 256 bits. Les dépenses liées à l’accélération de ces quelques applications avec du matériel qui n’aidera pas les autres ne sont tout simplement pas rentables et ne constituent pas un bon investissement pour le développement de produits.
la source
Eh bien, je ne sais pas à propos de 256 ou 512 bits, mais j'ai entendu parler d'un processeur de 1024 bits (je ne le trouve pas pour le moment). Le mot est VLIW , pour Very Long Instruction Word . Donc, c'est le bus d'instructions, pas la largeur du bus de données. Les avantages sont que vous pouvez implémenter le parallélisme d'instruction (ILP) à grande échelle.
Ma première rencontre avec ILP devait avoir lieu il y a 20 ans avec les DSP Motorola, qui comportaient des instructions pour exécuter un MAC (multiplier et accumuler) tout en déplaçant des données vers et depuis la mémoire, de sorte que vous puissiez exécuter un nouveau MAC lors de l'instruction suivante, sans perdre de temps. temps entre deux MAC pour le déplacement des données.
Aujourd'hui, il existe également des contrôleurs à usage général offrant cette option. VLIW l'applique à une échelle beaucoup plus élevée.
Étant donné que la largeur de votre bus de données ne sera pas aussi large, vous pouvez avoir plusieurs instructions plus des constantes dans une instruction. La raison pour laquelle le bus de données ne suit pas la tendance est qu’elle est plutôt inutile; un registre de données de 64 bits peut représenter un nombre à 20 chiffres décimaux. À quand remonte la dernière fois que vous avez eu besoin d'une précision de 20 chiffres? Pour la plupart des applications, 10 = . ∞20 ∞
Lectures supplémentaires
Architecture VLIW
la source
Le "bitness" d'un microprocesseur est généralement défini en termes de taille des registres à usage général. La taille détermine les nombres importants qu'un processeur peut gérer de manière native et la quantité de mémoire à laquelle il peut accéder. Les nombres 64 bits suffisent pour presque tous les algorithmes et la quantité de mémoire adressable (16 millions de téraoctets) suffit pour un certain temps. Il n’ya simplement aucun avantage à augmenter la taille des registres à usage général. D'un autre côté, la zone des unités arithmétiques et logiques (ALU) utilisée pour effectuer des opérations sur les registres est mise à l'échelle avec le carré de la quantité de bits. Une ALU de 256 bits serait 16 fois plus grande et beaucoup plus lente.
D'autre part, il est judicieux d'élargir le processeur pour pouvoir effectuer simultanément plusieurs opérations plus petites. En fait, les processeurs Sandy Bridge et Ivy Bridge d'Intel font exactement cela: ils possèdent des registres SIMD à 256 bits et peuvent effectuer deux opérations arithmétiques et une opération de mémoire par cycle. On pourrait donc justifier de les appeler des processeurs 256 bits, voire 768 bits, s’il s’agissait d’un spécialiste du marketing sournois voulant modifier les termes utilisés régulièrement.
la source
Tout d'abord, la taille en bits d'un processeur est généralement déterminée par l'architecture abstraite visible par le programmeur en langage machine, et non par des détails d'implémentation tels que la taille du bus de données.
Par exemple, le Motorola 68000 est un processeur 32 bits. Il possède des registres de données 32 bits et des registres d’adresses 32 bits. Maintenant, la première version de cette famille architecturale n’expose que 24 bits de lignes d’adresse. En outre, il existe des variantes ne disposant que d’un bus de données à 8 bits (le processeur exécute alors des opérations de mémoire à 32 bits sous forme de cycles d’accès multiples).
Passons maintenant à la question, pourquoi ne pas aller en 256 et 512. Les processeurs manipulent "de manière native" plusieurs types de types de données, il est donc utile de regarder ce que 256 ou 512 bits signifient pour chacun de ces types de données individuellement. Nous avons des entiers, des pointeurs et des types à virgule flottante.
Entiers: Les programmes utilisent beaucoup de kilomètres sur des entiers 32 et 64 bits. Si 64 bits est une limitation, le correctif consiste à avoir des entiers bignum implémentés par logiciel. Les langages de haut niveau peuvent implémenter des types entiers de telle sorte que les opérations basculent en douceur entre "fixnums" et "bignums". Bien sûr, vous prenez un coup de performance avec bignums, mais vous devez considérer cela dans son ensemble: combien d'opérations dans un programme sont des opérations de bignum. Les nombres de 256 ou 512 bits n'éliminent pas le besoin de bignums, ils augmentent simplement la marge de sécurité avant que nous devions passer aux bignums. Si vous voulez manipuler des clés publiques à 2048 bits, les entiers à 512 bits ne suffiront pas (mais un bignum avec des chiffres à 512 bits pourrait être rapide).
Pointeurs: les pointeurs plus larges permettent deux choses: des espaces d'adresses plus larges et des métadonnées supplémentaires stockées dans un pointeur. Les espaces d'adressage sont virtuels de nos jours et peuvent donc se développer même si les souvenirs ne grandissent pas. Il a été proposé que, si vous avez des pointeurs 128 bits, l'espace d'adressage est si vaste que vous pouvez placer tous les processus d'espace utilisateur d'un système d'exploitation, et le noyau, à des emplacements aléatoires dans un seul espace non protégé. entrer en collision. Plutôt que de simplement créer un espace d'adressage plus grand, des pointeurs plus épais peuvent être utilisés pour transporter des bits qui ne sont pas des bits d'adresse, tels que des informations sur l'objet référent (type, taille et autres informations) ou des informations relatives à la sécurité. Il y a probablement de la "graisse optimale" pour ce genre de chose, et si je devais deviner, je le plafonnerais quand même à 128 bits. C'est pas ca' Il semble logique de passer aux pointeurs 256 bits, mais pas à 512. Les plus gros pointeurs ont un désavantage: ils gonflent toutes les structures de données contenant des pointeurs. Et, généralement, vous voulez que les pointeurs aient la même taille, sinon vous avez besoin de complications dans l’architecture du jeu d’instructions (comme les segments de mémoire), ce qui vous permet d’avoir des pointeurs complets (descripteur de segment et offset) ou simplement des pointeurs locaux (offset dans un segment compris). .
Types à virgule flottante: Plus le nombre de bits dans les nombres à virgule flottante est élevé, plus la précision est grande. Je dirais que les types à virgule flottante bénéficient le plus d'une représentation plus large. Un type flottant de 256 ou 512 bits améliorera la stabilité du code numérique et la qualité des calculs scientifiques nécessitant de nombreuses itérations, tout en accumulant des erreurs. La précision en virgule flottante n'est pas la même chose que la précision en nombres entiers: nous ne pouvons pas séparer le type à virgule flottante en plages telles que fixnums versus bignums. Une plus grande précision en virgule flottante affecte la qualité de tous les nombres inexacts, qu'ils soient proches de zéro ou qu'ils aient une grande magnitude. Davantage de bits dans les exposants à virgule flottante peuvent également élargir considérablement la plage des nombres à virgule flottante, et beaucoup plus rapidement que l'ajout de bits à un entier bignum.
Pour ces raisons, je soupçonne que la tendance future prédominante sera l’augmentation de la largeur des nombres en virgule flottante matérielle, qui ne sera pas nécessairement suivie de l’augmentation de la largeur des pointeurs et des entiers.
Rappelez-vous que les nombres à virgule flottante ont déjà été en avance sur les autres types dans le passé. Par exemple, nous avons eu pendant un certain temps une prédominance de processeurs 32 bits prenant en charge les doubles floats IEEE 64 bits. En effet, bien que vous puissiez faire beaucoup avec des pointeurs et des entiers 32 bits, les flottants 32 bits sont très limités pour tout travail numérique sérieux.
Une fonctionnalité très utile qu'il serait agréable de voir apparaître dans les représentations en virgule flottante serait quelques bits de réserve pour une balise de type. L'implémentation de types à virgule flottante dans des langages dynamiques de haut niveau (dans lesquels les objets ont un type, mais les emplacements de stockage contiennent des valeurs de tout type) est une tâche ardue, car des bits inutilisés peuvent être trouvés dans des pointeurs et des objets de type entier pour placer des parties d'un objet. identifiant le type tag, cela est difficile à faire avec des nombres à virgule flottante. Donc ce qui finit souvent par arriver, c’est que les nombres à virgule flottante se voient attribuer des tas. Certains schémas volent des bits dans la mantisse, de sorte que les types à virgule flottante dans cette langue perdent en précision par rapport aux flottants dans d'autres langues sur la même machine.
la source
Cela ne vous aide pas réellement à faire quelque chose d'utile. Les nombres 64 bits vous donnent suffisamment de précision pour presque tous les objectifs (les systèmes Intel ont cependant une virgule flottante de 80 bits), mais les lignes supplémentaires augmentent le coût et la consommation d'énergie tout en ayant un impact négatif faible sur la vitesse d'horloge.
Historiquement, les processeurs utilisent le nombre minimal de bits qui convient le mieux aux fins auxquelles ils sont destinés. Avec les progrès de la technologie, des bus et des ALU plus larges sont devenus possibles, d’où l’augmentation de la taille des bus pour une applicabilité plus large:
la source
En réalité, de tels processeurs existent et sont courants, en fonction de la définition du bitness. Vous en utilisez presque certainement un maintenant. Comme l'a expliqué Olin, les nombres 256 bits ne sont pas très utiles, mais qu'en est-il des nombres 4 x 32 bits? Et si l'ALU pouvait ajouter 4 paires de nombres 32 bits en même temps. De telles ALU (que je sache) ont été mises en œuvre pour la première fois dans les superordinateurs vectoriels dans les années 1970. La première fois que j'ai possédé un tel ordinateur, c'est quand j'ai eu l'un des Intel Pentium avec MMX.
Tu te souviens de ces gars?
Les puces MMX avaient un jeu d'instructions Single Instruction - Multiple Data ( SIMD ) permettant d'ajouter des paires 1 × 64 bits, 2 × 32 bits, 4 × 16 bits ou 8 × 8 bits.
Mais ce n'est rien. Une carte graphique moderne a un GPU (ce qui signifiait auparavant Graphics Processing Unit, mais signifie maintenant General Processing Unit). Ce sont souvent des implémentations SIMD larges, capables de créer des branches, des charges et des magasins sur 128 ou 256 bits à la fois. La microarchitecture prototype d'Intel Larrabee comprend plus de deux registres SIMD 512 bits sur chacun de ses cœurs.
Veuillez noter que SIMD ne doit pas être confondu avec multi-core. Chaque cœur d’une CPU aura sa propre ALU large capable d’ajouter un ensemble d’entiers.
la source
Parce que nous n'en avons pas encore besoin.
Normalement, le bitness (que je définirais comme le nombre de bits dans un registre) traduit plus ou moins directement dans la quantité de mémoire adressable. Ceci est bien sûr simplifié, car selon le processeur, il peut y avoir des registres ayant une longueur de bit deux fois supérieure ou des techniques permettant de contourner ces limitations de mémoire (ceux qui se souviennent avoir programmé sur des fenêtres 16 bits?).
la source
"Pourquoi n'augmentent-ils pas simplement le nombre de lignes de données et créent un 256 bits"
En fait, tous les processeurs Intel compatibles avec le Socket LGA-2011 possèdent 256 broches de données, qui se connectent à 256 lignes de données de la carte mère menant à la mémoire vive dynamique. Je serais un peu surpris que le dernier ordinateur portable ou de bureau que vous ayez utilisé ne comporte pas au moins 256 lignes de données. Puis-je vous demander d'où provient cette idée erronée selon laquelle "ils n'augmentent pas simplement le nombre de lignes de données"?
La fiche technique de LGA-2011 Socket , section 6.1, indique que ces UC ont 256 broches de données et 76 broches d’adresse (adresse bancaire + adresse mémoire).
la source
car aucune application n’a besoin ou n’a la possibilité de représenter des données en utilisant plus de 128 bits à la fois.
et vous savez, les processeurs multimédias et les cartes graphiques y arriveront bien avant les processeurs de cartes mères, tout simplement parce qu’avec la photo / vidéo, il est logique d’utiliser de si grandes longueurs de données pour être traitées à la fois.
la source
Un système informatique est dans son sens une machine à calculer, qui nécessite quelques entrées et donne quelques sorties. Nous devons satisfaire l’ordinateur dans ces lignes, ce qui a permis aux développeurs de disposer de trois bus: bus d’adresses, bus de données et bus de contrôle. 1) Le bus d’adresses recherche / sélectionne une adresse particulière dans la mémoire pour les opérations de lecture / écriture. 2) Le bus de données extrait ensuite les données et présente ces données au processeur, ainsi que de la mémoire à des fins de traitement / stockage. 3) Le bus de contrôle crée un protocole de contrôle d'interface et demande au système de le respecter.
Celles-ci sont nécessaires pour effectuer des calculs utiles pour un utilisateur / serveur / client. En général, les performances (rapidité de l’achèvement des tâches, moins de problèmes, etc.) dépendent du nettoyage du goulot du système. Par exemple, si le processeur est capable de traiter à une vitesse beaucoup plus élevée que la vitesse de transfert depuis un disque dur, le goulot d'étranglement se produit sur le disque dur. De même, nous avons besoin d'une vitesse de traitement adaptée à une vitesse de transmission de données et à une largeur de code particulières.
Depuis le début, pour diverses raisons telles que la complexité matérielle / coûteuse, le coût, les exigences, les algorithmes efficaces et la raison principale du marché, Market Scope est le principal obstacle à la production de la largeur de bus de données élevée 512 bits. Celles-ci sont possibles! Mais l'exigence n'est pas encore présente, la portée du marché n'est pas encore visible avec les besoins actuels et l'absence de support logiciel complémentaire.
Processeur 256 bits signifie la largeur du bus de données, que ce processeur particulier peut gérer ou que l'ALU peut traiter en une seule exécution. Nous avons commencé à former 4 bits, puis 8,16,32 et actuellement 64 et même 128 bits, qui sont les produits actuels du marché.
Donc, avant de poser ces questions, vous devez toujours voir la demande du marché et sa portée. Dans l’histoire, c’est le seul moyen simple de comprendre les modes de vie. Si vous ne pouvez vous le permettre, comment pouvez-vous l'acheter? et si vous ne pouvez pas l'acheter, comment le producteur peut-il produire? et s'il ne peut pas produire, alors il n'y a pas d'existence pour ce produit !!
la source