In che modo la CPU scrive le informazioni su ram?


10

La mia domanda è: come fa la CPU a scrivere i dati su RAM?

Da quanto ho capito, le moderne CPU utilizzano diversi livelli di cache per accelerare l'accesso alla RAM. La RAM ottiene un comando per informazioni e quindi invia una raffica di dati alla CPU che memorizza i dati richiesti (e un mucchio di dati extra che era vicino all'indirizzo desiderato dalla CPU) nella cache di livello più alto, la CPU quindi chiede progressivamente le diverse cache per inviare blocchi di dati sempre più piccoli nei livelli di cache fino a quando non si trova nella cache di livello 1 che viene quindi letta direttamente in un registro CPU.

Come funziona questo processo quando la CPU scrive in memoria? Il computer scende ai livelli di cache (in ordine inverso rispetto alla lettura)? In tal caso, che dire della sincronizzazione delle informazioni nelle diverse cache con la memoria principale? Inoltre, come è la velocità di un'operazione di scrittura rispetto a una lettura? Cosa succede se scrivo continuamente su RAM, come nel caso di un ordinamento bucket?

Grazie in anticipo,

-Faken

Modifica: non ho ancora ottenuto una risposta che posso accettare completamente. Voglio sapere soprattutto della parte di sincronizzazione della scrittura RAM. So che scriviamo nella cache L1 direttamente dalla CPU e che i dati vengono ridotti ai livelli della cache mentre sincronizziamo i diversi livelli di cache e alla fine la RAM principale viene sincronizzata con la cache di livello più alto. Tuttavia, ciò che vorrei sapere è QUANDO le cache si sincronizzano e scansionano con la RAM principale e quanto sono veloci le loro velocità in relazione ai comandi di lettura.

Risposte:


11

Ah, questa è una di quelle semplici domande che hanno risposte davvero complesse. La semplice risposta è, beh, dipende da come è stata fatta la scrittura e da che tipo di cache c'è. Ecco un utile manuale su come funzionano le cache .

Le CPU possono scrivere dati in vari modi. Senza alcuna memorizzazione nella cache, i dati vengono archiviati immediatamente in memoria e la CPU attende il completamento della scrittura. Con la memorizzazione nella cache, la CPU di solito memorizza i dati nell'ordine del programma, ovvero se il programma scrive sull'indirizzo A quindi sull'indirizzo B, la memoria A verrà scritta prima della memoria B, indipendentemente dalla memorizzazione nella cache. La memorizzazione nella cache ha effetto solo quando la memoria fisica viene aggiornata e ciò dipende dal tipo di memorizzazione nella cache utilizzata (vedere il collegamento sopra). Alcune CPU possono anche archiviare dati non temporalmente, ovvero è possibile riordinare le scritture per sfruttare al meglio la larghezza di banda della memoria. Quindi, scrivendo su A, poi su B, quindi (A + 1) potrebbe essere riordinato per scrivere su A, quindi A + 1 in un singolo scatto, quindi B.

Un'altra complicazione è quando è presente più di una CPU. A seconda del modo in cui è progettato il sistema, le scritture di una CPU non saranno visualizzate da altre CPU perché i dati sono ancora nella cache della prima CPU (la cache è sporca). In più sistemi CPU, far corrispondere la cache di ogni CPU a ciò che è nella memoria fisica è definita coerenza cache. Ci sono vari modi in cui questo può essere raggiunto.

Naturalmente, quanto sopra è orientato verso i processori Pentium. Altri processori possono fare le cose in altri modi. Prendi, ad esempio, il processore cellulare PS3. L'architettura di base di una CPU per cella è un core PowerPC con diversi nuclei di cella (su PS3 ci sono otto celle, una delle quali è sempre disabilitata per migliorare i rendimenti). Ogni cella ha la propria memoria locale, una specie di cache L1 che non viene mai scritta nella RAM di sistema. I dati possono essere trasferiti tra questa RAM locale e la RAM di sistema utilizzando i trasferimenti DMA (Direct Memory Access). La cella può accedere alla RAM di sistema e alla RAM di altre celle utilizzando quelle che sembrano essere normali letture e scritture, ma ciò innesca semplicemente un trasferimento DMA (quindi è lento e dovrebbe davvero essere evitato). L'idea alla base di questo sistema è che il gioco non è solo un programma,

Per riassumere, la scrittura su RAM era molto semplice ai tempi in cui la velocità della CPU corrispondeva alla velocità della RAM, ma quando la velocità della CPU aumentava e venivano introdotte le cache, il processo divenne più complesso con molti metodi diversi.

Skizz


2

sì, scende ai livelli della cache e salva in memoria ma la nota importante è nel sistema Multi Processing la cache è condivisa tra 2 o più processori (core) e i dati devono essere coerenti ciò è stato fatto realizzando cache condivisa per tutti i multiprocessori o cache diversa ma salva coerenza utilizzando la sezione Critica (se i dati in una cache sono cambiati, lo costringe a scrivere in memoria e aggiornare altra cache)

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.