Pourquoi les CPU se connectent-ils généralement à un seul bus?

24

J'ai trouvé une architecture de carte mère ici:

entrez la description de l'image ici

Cela semble être la disposition typique des cartes mères. EDIT: Eh bien, apparemment, ce n'est plus si typique.

Pourquoi le CPU se connecte-t-il à seulement 1 bus? Ce bus frontal ressemble à un goulot d'étranglement majeur. Ne serait-il pas préférable de donner 2 ou 3 bus directement dans le CPU?

J'imagine un bus pour la RAM, un pour la carte graphique et un pour une sorte de pont vers le disque dur, les ports USB et tout le reste. La raison pour laquelle je le divise de cette façon est que les débits de données du disque dur sont lents par rapport à la mémoire.

Y a-t-il quelque chose de très difficile à faire de cette façon? Je ne vois pas comment les coûts pourraient y entrer, car les diagrammes existants ont déjà pas moins de sept bus. En fait, en utilisant des bus plus directs, nous pourrions réduire le nombre total d'autobus et peut-être même l'un des ponts.

Donc quelque chose ne va pas avec ça? Y a-t-il un inconvénient majeur quelque part? La seule chose à laquelle je peux penser est peut-être plus de complexité dans le CPU et le noyau, ce qui me fait penser que cette architecture de bus goulot d'étranglement est la façon dont elle était faite dans les temps anciens où les choses étaient moins sophistiquées et la conception reste la même pour la normalisation.

EDIT: J'ai oublié de mentionner le Watchdog Monitor . Je sais que je l'ai vu dans certains diagrammes. Vraisemblablement, un bus goulot d'étranglement faciliterait la surveillance de tout par le chien de garde. Cela pourrait-il avoir quelque chose à voir avec cela?

DrZ214
la source
9
C'est une approche très ancienne. De nos jours, le processeur a le complexe racine et le contrôleur de mémoire intégrés - se connecte donc directement aux périphériques PCIe, à la RAM et à ce qui est effectivement le pont sud. Par exemple ceci
Tom Carpenter
@ TomCarpenter Oui, ça commence à ressembler davantage. Le diagramme que j'ai affiché est ce que j'ai vu "partout", y compris à l'école, donc j'ai pensé qu'il était plus typique.
DrZ214
7
Ce diagramme ci-dessus est toujours d'actualité. De nos jours, ce n'est pas un schéma d'une carte mère mais le CPU lui-même. Remplacez "CPU" par "core" et "chipset" par "CPU".
slebetman

Réponses:

43

L'approche que vous montrez est une topologie assez ancienne pour les cartes mères - elle est antérieure à PCIe, ce qui la remet vraiment quelque part dans les années 00. La raison est principalement due à des difficultés d'intégration.

Fondamentalement, il y a 15 ans, la technologie permettant de tout intégrer dans une seule matrice était pratiquement inexistante d'un point de vue commercial, et cela a été incroyablement difficile. L'intégration de tout se traduirait par de très grandes tailles de filières en silicium, ce qui entraînerait à son tour un rendement beaucoup plus faible. Le rendement est essentiellement le nombre de matrices que vous perdez sur une plaquette en raison de défauts - plus la matrice est grande, plus la probabilité d'un défaut est élevée.

Pour lutter contre cela, vous divisez simplement la conception en plusieurs puces - dans le cas des cartes mères, cela a fini par être CPU, North Bridge et South Bridge. Le CPU est limité au seul processeur avec une interconnexion à grande vitesse (appelé bus frontal pour autant que je m'en souvienne). Vous avez alors le North Bridge qui intègre le contrôleur de mémoire, la connexion graphique (par exemple AGP, une ancienne technologie en termes de calcul), et un autre lien plus lent vers le South Bridge. Le pont sud a été utilisé pour gérer les cartes d'extension, les disques durs, les lecteurs de CD, l'audio, etc.


Au cours des 20 dernières années, la capacité de fabriquer des semi-conducteurs à des nœuds de processus de plus en plus petits avec une fiabilité de plus en plus élevée signifie que tout est intégré sur une seule puce devient possible. Des transistors plus petits signifient une densité plus élevée pour que vous puissiez vous adapter davantage, et des processus améliorés dans la fabrication signifient un rendement plus élevé. En fait, non seulement il est plus rentable, mais il est également devenu essentiel de maintenir l'augmentation de la vitesse des ordinateurs modernes.

Comme vous le faites remarquer correctement, avoir une interconnexion avec un pont nord devient un goulot d'étranglement. Si vous pouvez tout intégrer au CPU, y compris le complexe racine PCIe et le contrôleur de mémoire système, vous avez soudainement une liaison à très haute vitesse entre les principaux périphériques graphiques et informatiques - sur le PCB, vous parlez peut-être de vitesses de l'ordre de Gbps, sur le dé vous permet d'atteindre des vitesses de l'ordre de Tbps!

Cette nouvelle topologie se reflète dans ce diagramme:

Nouvelle topologie

Source de l'image

Dans ce cas, comme vous pouvez le voir, les contrôleurs graphiques et de mémoire sont tous deux intégrés sur la puce CPU. Bien que vous ayez toujours un lien vers ce qui est en fait un seul chipset composé de quelques morceaux du pont nord et du pont sud (le chipset dans le diagramme), cela est aujourd'hui en interconnexion incroyablement rapide - peut-être 100 + Gbps. Toujours plus lent que sur le dé, mais beaucoup plus rapide que les anciens bus frontaux.

Pourquoi ne pas simplement intégrer absolument tout? Les fabricants de cartes mères veulent toujours une certaine personnalisation - combien d'emplacements PCIe, combien de connexions SATA, quel contrôleur audio, etc.

En fait, certains processeurs mobiles s'intègrent encore plus sur la puce CPU - pensez aux ordinateurs à carte unique utilisant des variantes de processeur ARM. Dans ce cas, comme ARM loue la conception du processeur, les fabricants peuvent toujours personnaliser leurs matrices comme bon leur semble et intégrer les contrôleurs / interfaces qu'ils souhaitent.

Tom Carpenter
la source
+1, vous m'avez battu :) Belle réponse, surtout pour les raisons historiques de la conception architecturale.
uint128_t
Merci, surtout le deuxième paragraphe a frappé la maison. Cependant, on the die you can achieve speeds on the order of Tbps!Yikes, cela ne commence-t-il pas à dépasser la capacité du processeur à le traiter assez rapidement?
DrZ214
3
@ DrZ214 Ils ne sont pas PCI, ils sont PCIe qui est un bus série plutôt que parallèle. PCIe est de 2,5 Gbit / s, 5 Gbit / s ou 8 Gbit / s par voie dans les deux directions (duplex intégral) - avec 16 voies étant la plus large généralement observée, ce qui donne un maximum théorique de 128 Gbit / s dans les deux directions. Et oui, le commentaire ci-dessus sur les vitesses du processeur était intentionnellement trop simpliste, mais pas irréaliste - sans rapport avec les processeurs, je travaille actuellement sur une conception FPGA qui traite les données à 315 Gbps, et cela est loin d'être la pleine performance possible du FPGA, ce qui limite c'est le manque de données!
Tom Carpenter
1
Ce qui est intéressant, c'est que cela représente un retour vers l'architecture de systèmes encore plus anciens, où les bus de mémoire et de stockage (etc.) allaient directement au CPU.
Chris H
1
@ DrZ214 une "voie" est un seul bit de large, un signal d'horloge / données envoyé en deux paires. La particularité de PCIe par rapport, disons, au bus DDR est que PCIe peut librement agréger et désagréger les voies, tandis que la plupart des bus doivent prendre tout ou rien.
pjc50
9

Je ne peux pas dire que je suis un expert en architecture informatique, mais je vais tenter de répondre à vos questions.

Cela semble être la disposition typique des cartes mères.

Comme Tom l'a mentionné, ce n'est plus vrai. La plupart des processeurs modernes ont un northbridge intégré. Le pont sud est généralement intégré ou rendu inutile par la nouvelle architecture; Les chipsets d'Intel "remplacent" le southbridge par le Platform Controller Hub, qui communique directement avec le CPU via un bus DMI.

Pourquoi le CPU se connecte-t-il à un seul bus? Ce bus frontal ressemble à un goulot d'étranglement majeur. Ne serait-il pas préférable de donner 2 ou 3 bus directement dans le CPU?

Les bus larges (64 bits) sont chers, ils nécessitent un grand nombre d'émetteurs-récepteurs de bus et de nombreuses broches d'E / S. Les seuls périphériques qui nécessitent un énorme bus rapide hurlant sont la carte graphique et la RAM. Tout le reste (SATA, PCI, USB, série, etc.) est relativement lent et n'est pas constamment accessible. Par conséquent, dans l'architecture ci-dessus, tous ces périphériques "plus lents" sont regroupés à travers le Southbridge comme un seul bus: le processeur ne veut pas avoir à arbitrer chaque petite transaction de bus, de sorte que toutes les transactions de bus lentes / peu fréquentes peuvent être agrégées et géré par le Southbridge, qui se connecte ensuite aux autres périphériques à une vitesse beaucoup plus tranquille.

Maintenant, il est important de mentionner que lorsque je dis ci-dessus que SATA / PCI / USB / série sont "lents", c'est principalement un point historique, et cela devient moins vrai aujourd'hui. Avec l'adoption de disques SSD sur des disques tournants et des périphériques PCIe rapides, ainsi que des ports USB 3.0, Thunderbolt et peut-être 10G Ethernet (bientôt), la bande passante périphérique "lente" devient rapidement très importante. Dans le passé, le bus entre le northbridge et le southbridge n'était pas vraiment un goulot d'étranglement, mais maintenant ce n'est plus vrai. Alors oui, les architectures évoluent vers plus de bus connectés directement au CPU.

Y a-t-il quelque chose de très difficile à faire de cette façon? Je ne vois pas comment les coûts pourraient y entrer, car les diagrammes existants ont déjà pas moins de sept bus.

Ce serait plus de bus à gérer pour le processeur, et plus de silicium de processeur pour gérer les bus. Ce qui est cher. Dans le diagramme ci-dessus, tous les bus ne sont pas égaux. Le FSB crie vite, le LPC ne l'est pas. Les bus rapides nécessitent du silicium rapide, pas les bus lents, donc si vous pouvez déplacer des bus lents du CPU vers une autre puce, cela vous facilite la vie.

Cependant, comme mentionné ci-dessus, avec la popularité croissante des périphériques à large bande passante, de plus en plus de bus se connectent directement au processeur, en particulier dans les architectures SoC / plus hautement intégrées. En plaçant de plus en plus de contrôleurs sur la puce du processeur, une bande passante très élevée est plus facile à atteindre.

EDIT: J'ai oublié de mentionner le Watchdog Monitor. Je sais que je l'ai vu dans certains diagrammes. Vraisemblablement, un bus goulot d'étranglement faciliterait la surveillance de tout par le chien de garde. Cela pourrait-il avoir quelque chose à voir avec cela?

Non, ce n'est pas vraiment ce que fait un chien de garde. Un chien de garde consiste simplement à redémarrer diverses choses quand / si elles se bloquent; il ne regarde pas vraiment tout ce qui se déplace dans le bus (c'est beaucoup moins sophistiqué que ça!).

uint128_t
la source
2
Fast buses require fast silicon, slow buses don'tQue signifie exactement le silicium rapide? Silicium de plus grande pureté? Ou dites-vous que les bus lents peuvent utiliser un élément différent du silicium? De toute façon, je pensais que le silicium était un matériau assez bon marché. Un peu intéressant sur le chien de garde aussi. Je pourrais poser une question connexe à ce sujet.
DrZ214
1
Un bus rapide ferait généralement partie d'un périphérique hautes performances, par exemple un CPU. L'interface de bus nécessite de l'espace et des connexions à d'autres parties de la puce. La zone de silicium sur une puce de processeur est beaucoup plus chère qu'une puce beaucoup plus lente, car la taille du processus est plus petite et la fabrication / l'emballage est plus difficile. Par conséquent, il est moins coûteux de limiter les périphériques du FSB aux seuls périphériques qui nécessitent réellement une telle bande passante. Cependant, comme plus de contrôleurs sont intégrés avec le CPU sur le même dé (un SoC), ce n'est plus aussi vrai.
uint128_t
Même si les bus lents ne nécessitent pas de silicium rapide, il n'est pas rare de trouver des pilotes très rapides sur des interfaces lentes, ce qui peut créer un casse-tête majeur pour la disposition des PCB. J'ai vu du PCI ordinaire (vitesse maximale de 133 MHz sur PCI-X) avec des temps de montée et de descente inférieurs à 300 ps, ​​car les fournisseurs utilisent une cellule d'E / S standard. Je sais que PCI, en tant qu'interface, n'est normalement pas disponible sur les nouveaux processeurs, mais ce problème est applicable ailleurs.
Peter Smith
6

Le nombre de bus auxquels un processeur se connectera directement sera généralement limité au nombre de parties distinctes du processeur qui pourraient accéder simultanément aux choses. Il n'est pas rare, en particulier dans le monde des processeurs embarqués et des DSP, qu'un CPU ait un bus pour les programmes et un bus pour les données, et permette aux deux de fonctionner simultanément. Un monoprocesseur typique, cependant, ne bénéficiera que de la récupération d'une instruction par cycle d'instruction, et ne pourra accéder qu'à un emplacement de mémoire de données par cycle d'instruction, donc il n'y aura pas beaucoup d'avantages à aller au-delà d'un bus de mémoire programme et d'un bus de mémoire de données. Pour permettre l'exécution de certains types de calculs sur des données extraites de deux flux différents,

Avec les processeurs qui ont plusieurs unités d'exécution, il peut être utile d'avoir un bus séparé pour chacune, de sorte que s'il y a plusieurs bus "extérieurs", les unités qui doivent extraire des choses de différents bus "extérieurs" puissent le faire sans interférence. À moins qu'il n'y ait une raison logique pour laquelle les choses auxquelles accèdent différentes unités d'exécution seront accessibles via différents bus en dehors de la CPU, cependant, avoir des bus séparés du flux CPU dans une unité d'arbitrage qui ne peut relayer qu'une seule demande à la fois à une un périphérique externe particulier n'aidera rien. Les bus sont chers, donc avoir deux unités d'exécution sur un seul bus est généralement moins cher que d'utiliser des bus séparés. Si l'utilisation de bus séparés permettra une amélioration majeure des performances, cela peut justifier le coût, mais sinon toutes les ressources (puce, etc.

supercat
la source
-1

Considérez le nombre de broches nécessaires sur les packages de CPU pour avoir plusieurs bus larges. Par exemple, huit cœurs de processeur chacun avec un bus de données 64 bits, ainsi que d'autres broches assorties à d'autres fins. Existe-t-il aujourd'hui des packages de CPU avec peut-être 800 broches?

user6030
la source
Pourquoi n'y en aurait-il pas? Un réseau de grille de billes 32x32 et un PCB multicouche ne semblent pas être un problème difficile (à une échelle relative). Les ingénieurs hardware sont incroyables. // Réfléchissez à la largeur et à la maladresse des cartes RAM et continuez à cadencer à 1,6 GHz (625 picosecondes). Si les signaux électriques se déplacent à 2/3 c, la trace la plus longue ne peut être que de 6 cm de long, et une différence de longueur de seulement quelques mm entraînera des décalages de synchronisation notables. // Et je suppose que la diaphonie entre les couches ne serait pas bien pire qu'entre les traces sur la même couche.
Oskar Skog
"Existe-t-il aujourd'hui des packages de CPU avec peut-être 800 broches?" Oh oui. Les packages avec plus de 1100 broches étaient déjà monnaie courante lorsque cette réponse a été écrite. Et de nos jours, il y a LGA3647 pour certains processeurs de serveur Skylake-EX…
duskwuff