Halten Sie Ihren Code im L1-Cache

8

Ich habe den Artikel von Wikipedia über die Programmiersprache K gelesen und das habe ich gesehen:

  

Die geringe Größe des Interpreters und die kompakte Syntax der Sprache ermöglichen es K-Anwendungen, vollständig in den Level-1-Cache des Prozessors zu passen.

Ich bin fasziniert. Wie ist es möglich, das gesamte Programm im L1-Cache zu haben? Sagen wir, die CPU hat 256kb L1 Cache. Angenommen, mein Programm ist viel weniger als das und es benötigt eine sehr kleine Menge an Speicher (sagen wir, nur für den Call-Stack und so). Sagen wir, es benötigt keine Bibliotheken (obwohl, wenn ein Programm für ein Betriebssystem ist, müsste es kernel32.dll oder was auch immer enthalten). Und vergibt OS nicht automatisch minimalen Speicher für irgendein Programm (nun, für ausführbaren Code und Stack und Heap)?

Danke.

    
pitr 24.06.2009, 18:30
quelle

4 Antworten

5

Ich denke, was sie sagen, ist nicht, dass das gesamte Programm in den L1-Cache passt, sondern dass der gesamte Code, der die meiste Zeit läuft, in den L1-Cache passt.

Ja, das Betriebssystem weist viele andere Strukturen zu, aber diese werden selten genug getroffen, um keine Rolle zu spielen.

Natürlich ist das alles Spekulation - ich weiß nichts über die 'K'-Sprache.

    
Jonathan Rupp 24.06.2009, 18:37
quelle
4

Ich glaube, sie sprechen mit dem Vorteil, dass der Hauptausführungscode in den L1-Cache passt; unabhängig von dem Speicher, der dem Programm zugewiesen ist. Sobald die K-Anwendung geladen ist, spielt es keine Rolle, ob sie in Bezug auf die Leistung zugewiesen wird (d. H. Der Perf Vorteil, dass sie vollständig im L1-Cache ist), wenn sie diesen Speicher niemals berührt.

    
Paul Betts 24.06.2009 18:36
quelle
2

Sie verwechseln den gesamten Programmcode mit dem am häufigsten ausgeführten Code.

Für die interpretierten Sprachen gehört der Interpreter-Kern sicherlich zu den am häufigsten ausgeführten Codes. Der am häufigsten ausgeführte Code im Cache beschleunigt die Ausführung auf die gleiche Weise wie am häufigsten auf Daten im Cache zugegriffen wird.

Der Schlüsselteil ist "am häufigsten" - es ist nicht notwendig, den gesamten Code / die Daten zwischenzuspeichern, um eine signifikante Beschleunigung zu sehen.

    
sharptooth 25.06.2009 11:18
quelle
1

Der Interpreter wird als normales Programm ausgeführt, das vom Betriebssystem verwaltet wird. Das interpretierte Programm läuft innerhalb des Speicherplatzes des Interpreters im Datensegment. Viele K-Programme können leicht vollständig in den L1-Cache passen, obwohl der gesamte Interpreter dies möglicherweise nicht tut. Die Hauptinterpreterschleife wird wahrscheinlich passen.

    
Jørgen Fogh 15.07.2010 10:05
quelle

Tags und Links