将代码保存在L1缓存中

时间:2009-06-24 18:30:19

标签: optimization assembly caching cpu k

我一直在阅读Wikipedia's article on K programming language,这就是我所看到的:

  

该语言的小型解释器和紧凑语法使K应用程序完全适合处理器的1级缓存。

我很感兴趣。如何将整个程序放在L1缓存中?比方说,CPU有256kb的L1缓存。假设我的程序比这少,并且它需要很少的内存(比如,仅用于调用堆栈等)。比如,它不需要任何库(虽然如果程序是用于操作系统,则需要包含kernel32.dll或其他)。并不是OS会自动为任何程序分配一些最小内存(好吧,对于可执行代码,堆栈和堆)?

谢谢。

4 个答案:

答案 0 :(得分:5)

我认为他们所说的不是整个程序适合L1缓存,而是大部分时间运行的所有代码都适合L1缓存。

是的,操作系统会分配许多其他结构,但这些结构很少被打到无关紧要。

当然,这都是猜测 - 我对'K'语言一无所知。

答案 1 :(得分:4)

我相信他们说的是主执行代码适合L1缓存的优势;无论分配给程序的内存如何。加载K应用程序后,如果它从未触及该内存,那么它是否按性能分配(即完全在L1缓存中的性能优势)并不重要。

答案 2 :(得分:2)

您将所有程序代码与最常执行的代码混淆。

对于解释型语言,解释器核心肯定是最常执行的代码之一。在缓存中执行最频繁的代码可以加快执行速度,就像在缓存中访问最频繁的数据一样。

关键部分是“最频繁” - 没有必要缓存所有代码/数据以查看显着的加速。

答案 3 :(得分:1)

解释器作为由OS管理的普通程序运行。解释的程序在数据段中的解释器的存储空间内运行。许多K程序可以很容易地完全适应L1缓存,即使整个解释器可能没有。主解释器循环可能适合。