2009-06-24 70 views
8

我一直在閱讀Wikipedia's article on K programming language,這是我所看到的:保持你的代碼在L1高速緩存

翻譯和語言的緊湊語法的小尺寸使得它可以在K應用完全配合在處理器的1級緩存。

我很好奇。如何將整個程序放在L1緩存中?比方說,CPU有256kb的L1緩存。假設我的程序比這少了,它只需要非常少量的內存(比如,對於調用堆棧等)。比如說,它不需要任何庫(儘管如果一個程序是用於OS的話,它需要包含kernel32.dll或其他)。而且OS不會爲任何程序自動分配一些最小的內存(對於可執行代碼和堆棧和堆)?

謝謝。

回答

5

我認爲他們所說的並不是整個程序都適合L1緩存,而是所有大部分時間運行的代碼都適合L1緩存。

是的,操作系統分配了很多其他結構,但這些結構很少碰到沒關係。

當然,這都是猜測 - 我對'K'語言一無所知。

4

我相信他們正在講的主要執行代碼將適合一級緩存的優勢;不管分配給程序的內存如何。一旦K應用程序被加載,如果它永遠不會觸及那個內存,那麼它是否在性能方面被分配並不重要(即完全在L1緩存中的性能好處)。

2

您將所有程序代碼與最常執行的代碼混淆在一起。

對於解釋型語言,解釋器核當然是最常執行的代碼之一。在緩存中執行最頻繁的代碼可以像緩存中訪問頻率最高的數據一樣加速執行。

關鍵部分是「最常見」 - 沒有必要讓所有的代碼/數據緩存來看到顯着的加速度。

1

解釋器作爲由OS管理的正常程序運行。解釋的程序在解釋器的內存空間中運行,位於數據段中。許多K程序可能完全適合L1緩存,即使整個解釋程序可能不會。主要的解釋器循環可能適合。