Domanda

Ho letto l'articolo di Wikipedia sul linguaggio di programmazione K e questo è quello che ho visto:

  

Le dimensioni ridotte dell'interprete e la sintassi compatta della lingua consentono alle applicazioni K di adattarsi completamente alla cache di livello 1 del processore.

Sono incuriosito. Come è possibile avere l'intero programma nella cache L1? Supponiamo che la CPU abbia una cache L1 da 256kb. Supponiamo che il mio programma sia molto meno di questo e abbia bisogno di pochissima memoria (diciamo, solo per lo stack di chiamate e simili). Dì, non ha bisogno di alcuna libreria (anche se se un programma è per un sistema operativo, dovrebbe includere kernel32.dll o altro). E il sistema operativo non alloca automaticamente una quantità minima di memoria per qualsiasi programma (beh, per codice eseguibile e stack e heap)?

Grazie.

È stato utile?

Soluzione

Penso che ciò che stanno dicendo non sia che l'intero programma si adatti alla cache L1, ma che tutto il codice che viene eseguito il più delle volte si adatti alla cache L1.

Sì, il sistema operativo alloca molte altre strutture, ma queste vengono colpite abbastanza raramente da non importare.

Naturalmente, questa è tutta una speculazione: non so nulla del linguaggio "K".

Altri suggerimenti

Credo che stiano parlando con il vantaggio che il codice di esecuzione principale si inserirà nella cache L1; indipendentemente dalla memoria allocata al programma. Una volta caricata l'applicazione K, se non tocca mai quella memoria, non importa se è allocata in termini di prestazioni (cioè il vantaggio perfetto di essere totalmente nella cache L1).

Confondi tutto il codice del programma con il codice eseguito più frequentemente.

Per le lingue interpretate il nucleo dell'interprete è sicuramente tra i codici eseguiti più frequentemente. Avere il codice eseguito più frequentemente nella cache accelera l'esecuzione allo stesso modo in cui ha accesso ai dati più frequentemente nella cache.

La parte chiave è " più frequentemente " - non è necessario avere tutti i codici / dati memorizzati nella cache per vedere un'accelerazione significativa.

L'interprete funziona come un normale programma gestito dal sistema operativo. Il programma interpretato viene eseguito nello spazio di memoria dell'interprete, nel segmento di dati. Molti programmi K possono essere facilmente inseriti completamente nella cache L1, anche se l'intero interprete potrebbe non esserlo. Il ciclo dell'interprete principale probabilmente si adatterà comunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top