2009-06-24 8 views
8

Ich habe Wikipedia's article on K programming language gelesen und das ist, was ich sah:Halten Sie Ihren Code in L1-Cache

Die geringe Größe des Interpreters und kompakter Syntax der Sprache ermöglicht es, dass K-Anwendungen passen vollständig in der Level 1 Cache des Prozessors.

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 stellt OS nicht automatisch irgendeinen minimalen Speicher für irgendein Programm zur Verfügung (nun, für ausführbaren Code und Stack und Heap)?

Vielen Dank.

Antwort

5

Ich denke, was sie sagen, ist nicht, dass das gesamte Programm in L1-Cache passt, aber 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.

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. Den Perf Vorteil, vollständig im L1-Cache zu liegen), wenn sie diesen Speicher niemals berührt.

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 Cachespeicher beschleunigt die Ausführung auf die gleiche Weise, wie am häufigsten auf Daten im Cache zugegriffen wird.

Der Schlüssel Teil ist "am häufigsten" - es ist nicht notwendig, alle Code/Daten zwischengespeichert zu haben, um eine signifikante Beschleunigung zu sehen.

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.