Non vi è alcun motivo per utilizzare l'assemblaggio per questo compito. La tua soluzione non richiede il montaggio C funzionerà pure. Presumo che tu stia correndo su un sistema operativo, in modo da intralciare le tue misure, eseguendo sia cose che pensi di sapere dove sono e anche misurando ciò che pensi di misurare.
Informazioni di base sulla cache per quanto riguarda queste misurazioni ... diciamo che ci sono quattro livelli di memoria. L1, il più veloce, ma anche il più costoso e il più piccolo. Quindi L2. più lento, non così costoso, probabilmente più grande di L1 in termini di dimensioni. L3 meno costoso, più lento, più grande e quindi la memoria principale più lenta, più economica e più grande.
Diciamo solo che abbiamo quattro blocchi di memoria che lavoreremo con A, B, C e D. L1 può contenere solo un blocco alla volta. L2 due alla volta, L3 tre dei quattro e la memoria principale tutti e quattro.
Se facciamo una lettura prima passa attraverso L1, se c'è una mancanza allora L2, se manca allora L3, e se manca allora sarà sempre nella memoria principale. Comprendere che questi dati siano memorizzati nella cache sulla via del ritorno in modo che L3, L2 e L1 contengano tutti i dati appena letti, sfrattando se necessario (non sempre vero ma assumendo questo semplice modello di cache per capire come completare l'attività). Quindi se leggiamo il pezzo A, allora L1, L2 e L3 contengono tutti il pezzo A. Ora in questo modello ipotetico se leggiamo un pezzo B allora L1 conterrà B, sfrattando A. L2 conterrà A eb e l3 conterrà A e B. Leggi C e L1 conterrà C, sfrattando B, diciamo che L2 sceglie di sfrattare A, e contiene B e C, e L3 contiene A, B e C. Lettura D e L1 conterranno C lasciamo dire L2 sfratto B e contiene C e D, e dice che L3 sfrutta A e contiene B, C e D.
Supponiamo che non sappiamo esattamente come ciascuna cache sceglie cosa eliminare e cosa conservare. Ma supponiamo che sappiamo o possiamo capire dalle specifiche della scheda madre o da altre fonti, quanto è grande ogni cache. Se l'esempio precedente si è verificato in questo ordine e L1 ha D, L2 ha C e D, L3 ha B, C e D e main ha tutti e quattro a, b, c, d. Quindi se quando in quello stato leggiamo tutto il blocco A e il tempo in cui lo stiamo teoricamente leggendo dalla memoria principale, non è solo il tempo di leggere quel ricordo ma anche se qualcuno della memoria che viene sfrattata è cambiato deve essere scritto a monte possibili colpi fino in fondo. Ma idealmente se tu stavi facendo solo delle letture, allora tu cronometrerai per lo più le letture.
Diciamo che ci siamo trovati nella situazione in cui il blocco D è in l1, c, d in l2, b, c, d in l3 e leggiamo tutto il pezzo B e lo tempo. Non vorresti misurare il tempo per accedere a L3? con le stesse condizioni di partenza quindi la lettura di C ci darebbe il tempo di l2. Con le stesse condizioni di partenza, leggere D sarebbe il momento giusto?
Il trucco è immergersi in queste condizioni. Le dimensioni delle cache probabilmente non sono tali che l2 è due volte la dimensione di l1 e così via così per controllare completamente ciò che è in L1 è necessario leggere abbastanza dati per riempire L1. Moreso se dovessi leggere una quantità di dati L3 in teoria L3 ha tutti quei dati, L2 ha l'ultima quantità L2 di quei dati e L1 ha l'ultima quantità L1 di quei dati.
L'utilizzo della cache di dati è più semplice della cache delle istruzioni, ma è possibile farlo in entrambi i casi, è necessario almeno un quantitativo di istruzioni L3 nella memoria principale, una grande quantità di nops. eseguire un blocco lineare di istruzioni non è diverso dalla lettura di un blocco lineare di memoria. per quanto riguarda i cicli di lettura. L'istruzione è più semplice per quanto riguarda l'abilitazione e l'utilizzo della cache I. Per abilitare la cache dei dati può essere o meno semplice in base al tuo sistema operativo e come stai gestendo la memoria.
forse questa domanda simile potrebbe essere d'aiuto: http://stackoverflow.com/a/12697439/358328 –
Mentre quella domanda è rilevante, non è proprio mirata a misurare la latenza, che è l'unica cosa che sono preoccupato per. Grazie per il post però! Sto cercando di lavorare da lì. – mrkanaly