8

我一直在阅读维基百科关于 K 编程语言的文章,这就是我所看到的:

解释器的小尺寸和语言的紧凑语法使得 K 应用程序可以完全适应处理器的 1 级缓存。

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

谢谢你。

4

4 回答 4

5

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

是的,操作系统分配了许多其他结构,但这些结构很少受到影响而无关紧要。

当然,这都是猜测——我对“K”语言一无所知。

于 2009-06-24T18:37:54.627 回答
4

我相信他们说的是主要执行代码将适合 L1 缓存的优势。无论分配给程序的内存如何。一旦 K 应用程序被加载,如果它从不接触该内存,那么它是否在性能方面分配都没有关系(即完全在 L1 缓存中的性能优势)。

于 2009-06-24T18:36:47.310 回答
2

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

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

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

于 2009-06-25T11:18:50.533 回答
2

解释器作为由操作系统管理的普通程序运行。解释程序运行在解释器的内存空间中,在数据段中。许多 K 程序可能很容易完全适合 L1 缓存,即使整个解释器可能不适合。不过,主解释器循环可能会适合。

于 2010-07-15T10:05:00.423 回答