我在这里阅读了关于缓存如何工作的基础知识:如何以及何时对齐缓存行大小? 和 什么是“缓存友好”代码?,但是这些帖子都没有回答我的问题:有没有一种方法可以完全在缓存中执行一些代码,即不使用任何访问RAM的方式(除了可能在从HDD读取文件的初始过程中)?据我所知,计算机运算瓶颈现在主要是内存带宽,“只要你在CPU内部,就没问题”。
是否有一种方法将程序加载到缓存中,并将其保留在那里直到终止?因此,假设我有一个1MB编译后的C程序,它需要另外1MB的内存进行一些科学计算,并运行5天。是否有一种方法标记此代码,以便在评估期间不会从缓存中退出?我考虑在执行期间为此代码提供更高的优先级等。
换句话说,闲置计算机使用多少缓存,它加载其操作系统(比如Ubuntu),然后什么也不做?在空闲期间是否存在过度使用缓存?如果操作系统除了执行该程序外什么也不做,我应该期望我的小程序始终在缓存中吗?比如5分钟后启动屏幕保护程序。这是否会导致大量的缓存未命中(因此,性能急剧下降),因为现在它与我的程序竞争缓存空间?我的经验表明,同时运行几个不要求太高的程序(如屏幕保护程序、简单的音频播放器、pdf阅读器等)并不会显著降低科学计算程序的性能,尽管我本来希望它会一直进出缓存。问题是:为什么它的速度没有受到影响?使用绝对最小化的操作系统(如果是这样,那么是哪一个?)来提高计算速度有意义吗?
只是为了澄清,我们可以假设代码非常简单,比如一堆嵌套的for循环,其中最内部的部分将所有增量变量模97相加。关键是它足够小,可以放置和执行在缓存中。
是否有一种方法将程序加载到缓存中,并将其保留在那里直到终止?因此,假设我有一个1MB编译后的C程序,它需要另外1MB的内存进行一些科学计算,并运行5天。是否有一种方法标记此代码,以便在评估期间不会从缓存中退出?我考虑在执行期间为此代码提供更高的优先级等。
换句话说,闲置计算机使用多少缓存,它加载其操作系统(比如Ubuntu),然后什么也不做?在空闲期间是否存在过度使用缓存?如果操作系统除了执行该程序外什么也不做,我应该期望我的小程序始终在缓存中吗?比如5分钟后启动屏幕保护程序。这是否会导致大量的缓存未命中(因此,性能急剧下降),因为现在它与我的程序竞争缓存空间?我的经验表明,同时运行几个不要求太高的程序(如屏幕保护程序、简单的音频播放器、pdf阅读器等)并不会显著降低科学计算程序的性能,尽管我本来希望它会一直进出缓存。问题是:为什么它的速度没有受到影响?使用绝对最小化的操作系统(如果是这样,那么是哪一个?)来提高计算速度有意义吗?
只是为了澄清,我们可以假设代码非常简单,比如一堆嵌套的for循环,其中最内部的部分将所有增量变量模97相加。关键是它足够小,可以放置和执行在缓存中。