Perché le CPU si collegano in genere a un solo bus?


24

Ho trovato un'architettura della scheda madre qui:

inserisci qui la descrizione dell'immagine

Questo sembra essere il layout tipico delle schede madri. EDIT: Beh, a quanto pare non è più così tipico.

Perché la CPU si collega a un solo bus? Quell'autobus frontale sembra un grosso collo di bottiglia. Non sarebbe meglio fornire 2 o 3 bus direttamente nella CPU?

Immagino un bus per la RAM, uno per la scheda grafica e uno per una sorta di bridge verso l'hard disk, le porte USB e tutto il resto. Il motivo per cui l'ho suddiviso in questo modo è perché le velocità dei dati del disco rigido sono lente rispetto alla memoria.

C'è qualcosa di molto difficile nel farlo in questo modo? Non vedo come potrebbe comportare un costo, perché i diagrammi esistenti hanno già non meno di sette bus. In effetti, utilizzando più autobus diretti, potremmo ridurre il numero totale di autobus e forse anche uno dei ponti.

Quindi qualcosa di sbagliato in questo? C'è un grosso svantaggio da qualche parte? L'unica cosa a cui riesco a pensare è forse più complessità nella CPU e nel kernel, il che mi fa pensare che questa architettura del bus a collo di bottiglia è come è stata fatta ai vecchi tempi in cui le cose erano meno sofisticate e il design rimane lo stesso per la standardizzazione.

EDIT: ho dimenticato di menzionare il Watchdog Monitor . So di averlo visto in alcuni diagrammi. Presumibilmente un bus a collo di bottiglia renderebbe più facile per il cane da guardia monitorare tutto. Potrebbe avere qualcosa a che fare con esso?


9
Questo è un approccio molto vecchio. Oggi la CPU ha il complesso di root e il controller di memoria integrati, quindi si collega direttamente ai dispositivi PCIe, alla RAM e a ciò che è effettivamente il ponte sud. Per esempio questo
Tom Carpenter

@TomCarpenter Sì, sta iniziando a sembrare più simile. Il diagramma che ho pubblicato è quello che ho visto "ovunque", compresa la scuola, quindi ho pensato che fosse più tipico.
DrZ214,

7
Lo schema sopra è ancora rilevante. In questi giorni questo non è un diagramma di una scheda madre ma la CPU stessa. Sostituisci "CPU" con "core" e "chipset" con "CPU".
Slebetman,

Risposte:


43

L'approccio che mostri è piuttosto una vecchia topologia per le schede madri - precede PCIe che lo riporta davvero da qualche parte negli anni '00. Il motivo è principalmente dovuto a difficoltà di integrazione.

Fondamentalmente 15 anni fa la tecnologia per integrare tutto in un singolo die era praticamente inesistente dal punto di vista commerciale, e farlo era incredibilmente difficile. L'integrazione di tutto comporterebbe dimensioni di stampi in silicio molto grandi che a loro volta comportano rese molto più basse. La resa è essenzialmente il numero di matrici che perdi su un wafer a causa di difetti: più grande è il dado, maggiore è la probabilità di un difetto.

Per combatterlo, devi semplicemente dividere il design in più chip: nel caso delle schede madri, si è trattato di CPU, North Bridge e South Bridge. La CPU è limitata al solo processore con un'interconnessione ad alta velocità (per quanto mi ricordo il bus frontale). Hai quindi il North Bridge che integra il controller di memoria, la connessione grafica (ad esempio AGP, un'antica tecnologia in termini di elaborazione) e un altro collegamento più lento al South Bridge. Il South Bridge veniva utilizzato per gestire schede di espansione, dischi rigidi, unità CD, audio, ecc.


Negli ultimi 20 anni è diventata possibile la capacità di produrre semiconduttori su nodi di processo sempre più piccoli con affidabilità sempre più elevata. Transistor più piccoli significano maggiore densità in modo che tu possa adattarti di più, e migliori processi nella produzione significano una maggiore resa. In realtà non solo è più conveniente, ma è anche diventato vitale per mantenere gli aumenti di velocità nei computer moderni.

Come hai giustamente sottolineato, avere una interconnessione a un ponte nord diventa un collo di bottiglia. Se riesci a integrare tutto nella CPU, incluso il PCIe Root Complex e il controller di memoria di sistema, improvvisamente hai un collegamento ad altissima velocità tra i dispositivi chiave per la grafica e l'informatica - sul PCB potresti forse parlare di velocità dell'ordine dei Gbps, su con il dado puoi raggiungere velocità dell'ordine di Tbps!

Questa nuova topologia si riflette in questo diagramma:

Nuova topologia

Fonte immagine

In questo caso, come puoi vedere, i controller di grafica e memoria sono entrambi integrati nella matrice della CPU. Mentre hai ancora un collegamento a quello che è effettivamente un singolo chipset fatto di alcuni pezzi del ponte nord e del ponte sud (il chipset nel diagramma), questo al giorno d'oggi in interconnessione incredibilmente veloce - forse 100 + Gbps. Ancora più lento rispetto al dado, ma molto più veloce dei vecchi autobus frontali.

Perché non integrare assolutamente tutto? Bene, i produttori di schede madri vogliono ancora un po 'di personalizzazione: quanti slot PCIe, quante connessioni SATA, quale controller audio, ecc.

In effetti, alcuni processori mobili si integrano ancora di più nella matrice della CPU: pensate ai computer a scheda singola che utilizzano varianti di processori ARM. In questo caso, poiché ARM dà in affitto il design della CPU, i produttori possono comunque personalizzare i loro die come ritengono opportuno e integrare qualsiasi controller / interfaccia desiderino.


+1, mi hai battuto :) Bella risposta, soprattutto per le ragioni storiche del design dell'architettura.
uint128_t,

Grazie, soprattutto il secondo paragrafo è arrivato a casa. Tuttavia, on the die you can achieve speeds on the order of Tbps!Yikes, non sta cominciando a superare la capacità della CPU di elaborarla abbastanza velocemente?
DrZ214,

3
@ DrZ214 Non sono PCI, sono PCIe che è un bus seriale piuttosto che parallelo. PCIe è pari a 2,5 Gbps, 5 Gpbs o 8 Gbps per corsia in entrambe le direzioni (full duplex) - con 16 corsie che sono le più larghe di solito viste che danno un massimo teorico di 128 Gbps in entrambe le direzioni. E sì, il commento sopra sulle velocità del processore era intenzionalmente eccessivamente semplicistico, ma non irrealistico - non correlato alle CPU, al momento sto lavorando a un progetto FPGA che elabora i dati a 315 Gbps e che non è affatto vicino alla piena prestazione possibile dell'FPGA, ciò che limita la mancanza di dati!
Tom Carpenter,

1
La cosa interessante è che questo rappresenta un ritorno all'architettura di sistemi ancora più vecchi, in cui i bus di memoria e di archiviazione (ecc.) Sono andati direttamente alla CPU.
Chris H,

1
@ DrZ214 una "corsia" è larga un singolo bit, un segnale di clock / dati inviato come due coppie. La cosa unica di PCIe rispetto, per esempio, al bus DDR è che PCIe può aggregare e disaggregare liberamente le corsie, mentre la maggior parte degli autobus deve prendere tutto o niente.
pjc50,

9

Non posso dire di essere un esperto di architettura informatica, ma mi occuperò di rispondere alle tue domande.

Questo sembra essere il layout tipico delle schede madri.

Come menzionato da Tom, questo non è più vero. La maggior parte delle CPU moderne ha un northbridge integrato. Il southbridge è in genere integrato o reso non necessario dalla nuova architettura; I chipset Intel "sostituiscono" il southbridge con Platform Controller Hub, che comunica direttamente con la CPU tramite un bus DMI.

Perché la CPU si collega a un solo bus? Quell'autobus frontale sembra un grosso collo di bottiglia. Non sarebbe meglio fornire 2 o 3 bus direttamente nella CPU?

I bus ampi (a 64 bit) sono costosi, richiedono un gran numero di ricetrasmettitori di bus e molti pin I / O. Gli unici dispositivi che richiedono a enorme bus veloce urlante sono la scheda grafica e la RAM. Tutto il resto (SATA, PCI, USB, seriale e così via) è relativamente lento e non è costantemente accessibile. Ecco perché nell'architettura sopra, tutte quelle periferiche "più lente" sono raggruppate insieme attraverso il southbridge come un singolo dispositivo bus: il processore non vuole dover arbitrare ogni piccola transazione bus, quindi tutte le transazioni bus lente / rare possono essere aggregate e gestito dal southbridge, che si collega poi alle altre periferiche a una velocità molto più piacevole.

Ora, è importante menzionare che quando dico sopra che SATA / PCI / USB / seriale sono "lenti", questo è principalmente un punto storico, e sta diventando meno vero oggi. Con l'adozione di SSD su dischi spinny e periferiche PCIe veloci, nonché USB 3.0, Thunderbolt e forse 10G ethernet (presto), la larghezza di banda periferica "lenta" sta rapidamente diventando molto significativa. In passato, l'autobus tra Northbridge e Southbridge non era molto simile a un collo di bottiglia, ma ora non è più vero. Quindi sì, le architetture si stanno muovendo verso più bus collegati direttamente alla CPU.

C'è qualcosa di molto difficile nel farlo in questo modo? Non vedo come potrebbe comportare un costo, in quanto i diagrammi esistenti hanno già non meno di sette autobus.

Ci sarebbero più bus da gestire per il processore e più silicio per processori da gestire con i bus. Che è costoso. Nel diagramma sopra, non tutti gli autobus sono uguali. L'FSB sta urlando velocemente, l'LPC no. Gli autobus veloci richiedono silicio veloce, gli autobus lenti no, quindi se puoi spostare autobus lenti dalla CPU a un altro chip, ti semplifica la vita.

Tuttavia, come menzionato sopra, con la crescente popolarità dei dispositivi ad alta larghezza di banda, sempre più bus si collegano direttamente al processore, in particolare nelle architetture SoC / sempre più integrate. Mettendo sempre più controller nella CPU, è molto più facile ottenere una larghezza di banda molto elevata.

EDIT: ho dimenticato di menzionare il Watchdog Monitor. So di averlo visto in alcuni diagrammi. Presumibilmente un bus a collo di bottiglia renderebbe più facile per il cane da guardia monitorare tutto. Potrebbe avere qualcosa a che fare con esso?

No, non è proprio quello che fa un cane da guardia. Un cane da guardia è semplicemente riavviare varie cose quando / se si bloccano; non guarda davvero tutto ciò che si muove attraverso l'autobus (è molto meno sofisticato di così!).


2
Fast buses require fast silicon, slow buses don'tCosa significa esattamente silicio veloce? Silicio di purezza superiore? O stai dicendo che i bus lenti possono usare un elemento diverso dal silicio? Ad ogni modo, ho pensato che il silicio fosse un materiale piuttosto economico. Parte interessante anche del cane da guardia. Potrei fare una domanda correlata al riguardo.
DrZ214,

1
Un bus veloce in genere fa parte di un dispositivo ad alte prestazioni, ad esempio una CPU. L'interfaccia del bus richiede spazio e connessioni ad altre parti del chip. L'area del silicio su una matrice del processore è molto più costosa di un chip molto più lento, poiché le dimensioni del processo sono più piccole e la fabbricazione / l'imballaggio sono più difficili. Pertanto, è più economico limitare i dispositivi sull'FSB solo ai dispositivi che richiedono effettivamente tale larghezza di banda. Tuttavia, poiché più controller sono integrati con la CPU sullo stesso die (un SoC), questo non è più vero.
uint128_t,

Anche se i bus lenti non richiedono silicio veloce, non è raro trovare driver molto veloci su interfacce lente, il che può creare un grosso mal di testa per il layout del PCB. Ho visto un normale PCI (velocità massima 133 MHz su PCI-X) con tempi di salita e discesa inferiori a 300 ps, ​​poiché i fornitori utilizzano una cella I / O standard. So che PCI, come interfaccia, non è normalmente disponibile su nuovi processori, ma questo problema è applicabile altrove.
Peter Smith,

6

Il numero di bus a cui una CPU si collegherà direttamente sarà generalmente limitato al numero di parti distinte della CPU che potrebbero accedere simultaneamente alle cose. Non è raro, soprattutto nel mondo dei processori e dei DSP integrati, che una CPU abbia un bus per i programmi e un bus per i dati e consenta ad entrambi di operare simultaneamente. Un tipico uniprocessore, tuttavia, trarrà vantaggio solo dal recupero di un'istruzione per ciclo di istruzioni e sarà in grado di accedere a una posizione di memoria di dati per ciclo di istruzioni, quindi non ci sarà molto beneficio oltrepassando un bus di memoria di programma e uno bus di memoria dati. Per consentire l'esecuzione di determinati tipi di matematica sui dati recuperati da due flussi diversi,

Con processori che hanno più unità di esecuzione, può essere utile disporre di un bus separato per ciascuno, in modo che se ci sono più unità di bus "esterne" che devono recuperare cose da diversi bus "esterni" possano farlo senza interferenze. A meno che non vi sia una ragione logica per cui le cose a cui accedono unità di esecuzione diverse saranno accessibili attraverso bus diversi al di fuori della CPU, tuttavia, avendo bus separati dal feed della CPU in un'unità di arbitrato che può inoltrare solo una richiesta alla volta a un un particolare dispositivo esterno non aiuterà nulla. Gli autobus sono costosi, quindi avere due unità di esecuzione su un unico bus è generalmente più economico rispetto all'utilizzo di autobus separati. Se l'utilizzo di bus separati consentirà un notevole miglioramento delle prestazioni, ciò potrebbe giustificare il costo, ma per il resto qualsiasi risorsa (area chip, ecc.


-1

Si consideri il numero di pin richiesti sui pacchetti CPU per avere bus larghi multipli. Ad esempio, otto core CPU ciascuno con un bus dati a 64 bit, oltre ad altri pin assortiti per altri scopi. Ci sono pacchetti di CPU disponibili oggi con forse 800 pin?


Perché non ci dovrebbe essere? Un array con griglia a sfera 32x32 e PCB multistrato non sembrano un problema difficile (su una scala relativa). Gli ingegneri hardware sono fantastici. // Pensa a quanto possono essere ampie e goffe le schede RAM e continua a clock a 1,6 GHz (625 picosecondi). Se i segnali elettrici viaggiano a 2/3 c, la traccia più lunga può essere lunga solo 6 cm e solo una differenza di pochi mm nella lunghezza causerà notevoli scostamenti di temporizzazione. // E immagino che la diafonia tra i livelli non sarebbe molto peggio che tra le tracce sullo stesso livello.
Oskar Skog,

"Esistono pacchetti CPU disponibili oggi con forse 800 pin?" Oh si. I pacchetti con oltre 1100 pin erano già all'ordine del giorno quando questa risposta è stata scritta. E oggi c'è LGA3647 per alcune CPU del server Skylake-EX ...
duskwuff,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.