Che cos’è un bus cache?

Un bus cache è un bus dedicato ad alta velocità che il processore di un computer utilizza per comunicare con la sua memoria cache. Conosciuto anche come backside bus, opera a una velocità molto maggiore rispetto al bus di sistema. Un bus della cache collega direttamente un core del processore alla sua cache; funziona indipendentemente dal bus del processore, trasferendo i dati attraverso un percorso più ampio e meno ristretto. Un bus cache viene utilizzato nella maggior parte dei processori moderni per ridurre il tempo necessario per leggere o modificare i dati a cui si accede di frequente.

Negli anni ‘1980, la memoria cache si trovava solitamente sulla scheda madre, non sul chip del processore stesso. L’accesso alla cache è avvenuto tramite il bus del processore, proprio come la normale memoria di sistema. La quantità di memoria cache era spesso piuttosto ridotta e veniva offerta solo come miglioramento opzionale delle prestazioni del sistema.

Con l’aumento della velocità e dell’efficienza del processore nei primi anni ‘1990, il bus del processore è diventato un collo di bottiglia; la memoria cache veloce aveva bisogno di un modo per interagire con il processore senza aspettare che la memoria di sistema e le operazioni di input/output fossero terminate. A metà degli anni ‘1990, la maggior parte dei nuovi processori ha adottato un’architettura dual-bus per risolvere questo problema. È stato creato un bus cache ad alta velocità per accedere direttamente alla cache. Questo bus non viene utilizzato per nient’altro: tutti gli altri trasferimenti di dati utilizzano il bus del processore più lento, noto anche come bus front-side. Il processore può utilizzare entrambi i bus contemporaneamente, ottenendo prestazioni sostanzialmente migliori.

I primi progetti dual-bus utilizzavano frequentemente la memoria cache situata sulla scheda madre; grandi quantità di cache su chip non erano ancora convenienti a causa di problemi di resa di produzione. I progetti successivi spesso incorporavano un mix di cache interna ed esterna man mano che la resa migliorava. I processori moderni di solito utilizzano una grande quantità di cache interna; molti includono 8 megabyte (MB) o più, rispetto ai vecchi modelli che spesso avevano solo 8 kilobyte (KB). Nei progetti moderni in cui l’intera cache è su chip, il bus della cache può essere piuttosto corto con un percorso dati molto ampio, 512 bit in alcuni processori. Il bus funziona in genere alla stessa velocità del processore stesso. Il risultato finale è che il contenuto della cache può essere letto o modificato molto rapidamente.

Ogni core di un processore multi-core può avere la propria cache o condividere una grande cache comune. In entrambi i casi, un bus della cache collega ciascun core alla memoria cache appropriata. Quando ogni core del processore dispone di una propria cache separata, possono sorgere problemi di coerenza. Ad esempio, quando un core aggiorna i dati nella sua cache, altre copie di quei dati in altre cache diventano obsolete o “non aggiornate”. Un modo per risolvere questo tipo di problema consiste nell’utilizzare un tipo speciale di bus cache, a volte chiamato bus inter-core. Questo bus collega insieme tutte le cache in modo che ognuna possa monitorare ciò che stanno facendo gli altri: se uno aggiorna un pezzo di dati condivisi, gli altri possono riflettere immediatamente il nuovo contenuto.