Una CPU può funzionare con nient'altro che un alimentatore e una ROM, usando solo la cache interna come RAM?


61

Una CPU (come Intel i3 / i5 / i7 / Xeon) con RAM cache su chip può utilizzarla come unica RAM funzionale, senza alcun banco di memoria esterno collegato?

O deve esserci una RAM esterna e la cache non è accessibile o utilizzata da sola?

Le moderne CPU desktop / server spesso hanno più RAM cache interna rispetto a quella di molti computer degli anni '90 nella memoria dell'intero sistema, quindi dovrebbe esserci abbastanza spazio per eseguire codice semplice.

Esistevano CPU precedenti alla cache come la 6502 che non sarebbe stata in grado di fare nulla, poiché la RAM interna della CPU ammontava solo a pochi byte per il contatore degli indirizzi e gli accumulatori.

Non si tratta di eseguire qualsiasi tipo di sistema operativo moderno, ma di eseguire un semplice codice programmato in una ROM personalizzata o immesso manualmente con una tastiera di input esadecimale.


1
Dipende interamente dalla CPU e cosa intendi esattamente per "cache" poiché alcune CPU hanno il loro ram incorporato e non hanno bisogno di chip esterni.
PlasmaHH,

42
fondamentalmente, se includi la memoria indirizzabile nel processore stesso, costruisci quello che chiamiamo un microcontrollore. Questi esistono.
Marcus Müller,

1
Chi dice che hai bisogno di RAM?
Chris Stratton,

1
Dipende da come si definisce "funzione". Scommetto che un i7 è perfettamente in grado di produrre calore con solo una batteria collegata ad esso.
Dmitry Grigoryev,

2
Ci sono molte cose che puoi fare con pochi registri e senza RAM aggiuntiva. Ad esempio, un generatore di funzioni.
David Schwartz,

Risposte:


67

Vedi questo account estremamente dettagliato della sequenza di avvio del PC: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Poiché a questo punto non è disponibile alcuna DRAM, il codice inizialmente funziona in un ambiente senza stack. La maggior parte dei processori moderni ha una cache interna che può essere configurata come RAM per fornire uno stack software. Gli sviluppatori devono scrivere un codice estremamente stretto quando utilizzano questa funzionalità cache-as-RAM perché uno sfratto sarebbe inaccettabile per il sistema a questo punto nella sequenza di avvio; non c'è memoria per mantenere la coerenza. Ecco perché i processori funzionano in "No Evict Mode" (NEM) a questo punto del processo di avvio, quando funzionano su una cache-come-RAM. In NEM, una mancanza di cache line nel processore non causerà uno sfratto. Lo sviluppo di codice con uno stack software disponibile è molto più semplice e il codice di inizializzazione spesso esegue la configurazione minima per utilizzare uno stack anche prima dell'inizializzazione DRAM.

Puoi osservarlo eseguendo un PC senza RAM: riprodurrà una serie di segnali acustici. Il programma che riproduce quelli viene eseguito dalla BIOS Flash ROM.

Ho visto anche questo comportamento su alcuni processori ARM. All'interno del SoC saranno presenti registri di configurazione che consentono di utilizzare la cache come RAM nelle fasi iniziali della sequenza di avvio, al fine di eseguire un programma che trova, enumera e configura la DRAM.



2
Maggiori dettagli su come funziona la modalità "cache-as-ram" (CAR) di x86 , in una risposta che lo mostra come un caso d'uso per INVD(quando si esce dalla modalità CAR, invalidare la cache invece di avere dati inutili scritti in memoria, potenzialmente sopra qualcosa di prezioso).
Peter Cordes,

Cosa c'è di sbagliato nello sfrattare quando DRAM non è disponibile? Il problema non è leggere piuttosto che scrivere nella RAM?
Mehrdad,

14

In generale, la memoria cache non è indirizzabile. Un programma non può memorizzare o recuperare intenzionalmente dati da esso.


2
+1 Questa è una risposta molto astuta. Le cache sono caricate e ritirate a piacimento da accessi indirizzabili dalla memoria principale, in modo quasi casuale.
Ale..chenski,

17
Sì, questo è il motivo per cui richiede una modalità speciale (come nella risposta di PJC) o una sorta di inganno speciale. Un'altra opzione (oltre alla risposta accettata) potrebbe essere quella di far pensare al sistema di avere una DRAM, ma le scritture di memoria effettive semplicemente eliminano i dati e le letture producono tutti zeri (o dati effettivi da una ROM per alcune regioni di indirizzi). Finché tutti i carichi vengono colpiti nella cache, il sistema si comporterà correttamente. IDK abbastanza su come X86 si avvia per sapere se è possibile entrare in modalità lunga a 64 bit senza bisogno di svuotamenti della cache reali.
Peter Cordes,

3
Tuttavia, le CPU Skylake con cache eDRAM in pacchetto la usano come cache lato memoria (tra il controller di memoria e tutto il resto, diversamente da Broadwell), quindi può persino memorizzare nella cache gli accessi DMA da dispositivi di sistema senza CPU o carichi CPU / memorizza in regioni di memoria "non memorizzabili" (che bypassano L1 / L2 / L3).
Peter Cordes,

3
@PeterCordes Tuttavia la risposta non è "no" solo perché è necessaria una modalità speciale - la domanda è quindi se esiste la modalità speciale.
user253751

1
La domanda è: cosa succede se si utilizza comunque la cache e si accerta che non manchi mai o venga svuotato - diventa indirizzabile nel momento in cui qualcosa viene scritto su un indirizzo nella RAM inesistente, no? La scrittura effettiva viene rilasciata sul pavimento, ma la lettura viene comunque pubblicata dalla cache?
rackandboneman,

9

Sebbene ciò non riguardi direttamente le famiglie di processori specificate nella domanda, lo schema seguente dovrebbe funzionare sui precedenti processori x86, quindi sì, è possibile operare senza RAM o cache, sebbene questo approccio richieda alcune capacità creative di programmazione.

Negli anni '80 mi sono imbattuto in un progetto per un ricevitore radio che decodificava i segnali orari di MSF trasmessi nel Regno Unito. Questo design utilizzava un processore Z80 e aveva solo una ROM per l'archiviazione del programma. Tutta l'elaborazione e l'archiviazione dei dati è stata eseguita utilizzando i registri interni all'interno del processore. Ciò ovviamente significava che non potevano esserci chiamate di subroutine in quanto era disponibile memoria per contenere lo stack.

All'epoca il costo della RAM era elevato e poiché si trattava di un progetto hobby, era importante tenere bassi i costi, a parte il fatto che si trattava di un interessante esercizio accademico. Ciò avveniva anche prima dei giorni dei microcontrollori ampiamente disponibili (un 8751 con costo di eprom superiore a £ 100 IIRC).


Limitare te stesso ai dati che possono essere conservati nei registri limita davvero le funzioni utili che puoi eseguire. Penso che la domanda riguardasse più la memoria cache nei processori moderni.
Mark Ransom,

Ovviamente è ovvio che non usare la RAM limita la funzionalità possibile. L'applicazione citata mostra quanto è possibile con risorse di archiviazione dei dati molto limitate, un front-end radio e un display LCD.
uɐɪ

-3

In genere una CPU richiede un clock esterno. Ma con quello, sì, può.


1
Sarebbe opportuno spiegare perché e rispondere a fondo alla domanda degli utenti. Questa risposta è dalla parte debole.
Voltage Spike
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.