2009-06-24 1 views
8

Я читал Wikipedia's article on K programming language и это то, что я видел:Сохранение кода в кэше L1

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

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

спасибо.

ответ

5

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

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

Конечно, это все предположения - я ничего не знаю о языке «K».

4

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

2

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

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

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

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^