Хранение вашего кода в кеше L1 - PullRequest
8 голосов
/ 24 июня 2009

Я читал статью Википедии о языке программирования K , и вот что я увидел:

Небольшой размер интерпретатора и компактный синтаксис языка позволяют K-приложениям полностью вписываться в кэш-память уровня 1 процессора.

Я заинтригован. Как можно иметь всю программу в кеше L1? Скажем, процессор имеет кэш L1 объемом 256 КБ. Скажем, моя программа намного меньше, и ей нужно очень мало памяти (скажем, только для стека вызовов и тому подобного). Скажем, для этого не нужны никакие библиотеки (хотя, если программа предназначена для ОС, она должна включать kernel32.dll или что-то еще). И разве ОС автоматически не выделяет минимальный объем памяти для какой-либо программы (ну, для исполняемого кода, стека и кучи)?

Спасибо.

Ответы [ 4 ]

5 голосов
/ 24 июня 2009

Я думаю, что они говорят не о том, что вся программа помещается в кэш L1, а о том, что весь код, который выполняется большую часть времени, помещается в кэш L1.

Да, ОС выделяет множество других структур, но они поражаются достаточно редко, чтобы не иметь значения.

Конечно, это все домыслы - я ничего не знаю о языке 'K'.

4 голосов
/ 24 июня 2009

Я полагаю, что они говорят о том преимуществе, что основной исполняемый код помещается в кэш L1; независимо от памяти, выделенной для программы. Как только приложение K загружено, если оно никогда не коснется этой памяти, не имеет значения, распределяется ли оно с точки зрения производительности (т. Е. Выгодно, если оно полностью в кеше L1).

2 голосов
/ 25 июня 2009

Вы путаете весь программный код с наиболее часто выполняемым кодом.

Для интерпретируемых языков ядро ​​интерпретатора, безусловно, является одним из наиболее часто исполняемых кодов. Наличие наиболее часто выполняемого кода в кэше ускоряет выполнение так же, как и наиболее часто выполняемый доступ к данным в кэше.

Ключевой частью является «наиболее часто» - нет необходимости кэшировать весь код / ​​данные, чтобы увидеть значительное ускорение.

1 голос
/ 15 июля 2010

Интерпретатор работает как обычная программа, управляемая ОС. Интерпретируемая программа выполняется в пространстве памяти интерпретатора в сегменте данных. Многие K-программы могут легко вписаться в кэш L1 полностью, даже если весь интерпретатор не может. Основной цикл интерпретатора, вероятно, подойдет, хотя.

...