保持你的代码中的L1高速缓存(Keeping your code in L1 cache)

2019-07-29 05:52发布

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

该解释器和语言的紧凑语法的小尺寸使得能够对于K应用程序完全容纳处理器的一级高速缓存内。

我很好奇。 怎么可能有L1高速缓存整个程序? 说,CPU拥有256KB L1缓存。 说我的计划是比少的方式,它需要的内存非常少量的(比方说,只是调用栈和这样)。 比方说,它不需要任何库(不过,如果一个程序是一个操作系统,它需要包括KERNEL32.DLL或其他)。 并且不OS会自动分配一些最起码的内存的任何程序(当然,对于可执行代码和栈和堆)?

谢谢。

Answer 1:

我想他们说的是不是整个程序中的L1高速缓存配合,但所有运行的大部分时间的代码适合在L1缓存。

是的,OS分配很多其他的结构,但这些都是很少打够没有关系。

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



Answer 2:

我相信他们说的优势,主要执行的代码将适合L1缓存; 不管内存分配给程序。 一旦K个应用程序被加载,如果不触碰内存则没有,如果它在性能方面的已分配(即被完全在L1高速缓存中的PERF利益)关系。



Answer 3:

你分不清所有程序代码与最频繁执行的代码。

对于解释型语言解释器最核心,最频繁执行的代码中肯定是。 拥有最频繁执行的代码在高速缓存加速执行的方式为在缓存中最经常访问的数据不一样。

关键部分是“最常” - 这是没有必要把所有的代码/缓存的数据看显著加速。



Answer 4:

解释器运行由操作系统管理的正常程序。 该解释的程序解释器的存储器空间中运行,在所述数据段。 多个K程序可以轻松地放进L1缓存彻底,即使整个解释可能不会。 主解释器可能会适合不过。



文章来源: Keeping your code in L1 cache