8

私はKプログラミング言語に関するウィキペディアの記事を読んでいますが、これは私が見たものです:

インタプリタのサイズが小さく、言語の構文がコンパクトなため、K個のアプリケーションをプロセッサのレベル1キャッシュに完全に収めることができます。

私は興味をそそられます。プログラム全体をL1キャッシュに入れるにはどうすればよいですか?たとえば、CPUには256kbのL1キャッシュがあります。私のプログラムはそれよりもはるかに少なく、必要なメモリ量はごくわずかだとしましょう(たとえば、コールスタックなどのためだけに)。たとえば、ライブラリは必要ありません(ただし、プログラムがOS用の場合は、kernel32.dllなどを含める必要があります)。また、OSは、任意のプログラム(実行可能コード、スタック、およびヒープ)に最小限のメモリを自動的に割り当てませんか?

ありがとうございました。

4

4 に答える 4

5

彼らが言っているのは、プログラム全体が L1 キャッシュに収まるということではなく、ほとんどの時間実行されるすべてのコードが L1 キャッシュに収まるということだと思います。

はい、OS は他の多くの構造を割り当てますが、それらは問題にならないほどめったにヒットしません。

もちろん、これはすべて憶測です。私は「K」言語について何も知りません。

于 2009-06-24T18:37:54.627 に答える
4

彼らは、メインの実行コードが L1 キャッシュに収まるという利点を持って話していると思います。プログラムに割り当てられたメモリに関係なく。K アプリケーションが読み込まれると、そのメモリにアクセスしない場合は、パフォーマンスの観点から割り当てられているかどうかは問題になりません (つまり、完全に L1 キャッシュにあることによるパフォーマンスの利点)。

于 2009-06-24T18:36:47.310 に答える
2

すべてのプログラム コードを最も頻繁に実行されるコードと混同します。

インタープリター言語の場合、インタープリター コアは確かに最も頻繁に実行されるコードの 1 つです。最も頻繁に実行されるコードをキャッシュに入れると、最も頻繁にアクセスされるデータをキャッシュに入れるのと同じように実行が高速化されます。

重要な部分は「最も頻繁に」です。大幅な高速化を確認するために、すべてのコード/データをキャッシュする必要はありません。

于 2009-06-25T11:18:50.533 に答える
2

インタープリターは、OS によって管理される通常のプログラムとして実行されます。インタープリターされたプログラムは、データ セグメント内のインタープリターのメモリ空間内で実行されます。多くの K プログラムは、インタープリター全体がそうでなくても、簡単に L1 キャッシュに完全に収まる可能性があります。ただし、メインのインタプリタ ループはおそらく適合します。

于 2010-07-15T10:05:00.423 に答える