Skip to content

Latest commit

 

History

History
61 lines (32 loc) · 4.37 KB

cache&命中率.md

File metadata and controls

61 lines (32 loc) · 4.37 KB

image-20221122175450141

CPU缓存架构

  • cpu是计算机的心脏,所有运算和程序最终都要由他来执行。

  • 主内存RAM是数据存在的地方,CPU和主内存之间有好几级缓存,因为即使直接访问主内存相对来说也是非常慢的。

  • 如果对一块数据做相同的运算多次,那么在执行运算的时候把它加载到离CPU很近的地方就有意义了,比如一个循环计数,你不想每次循环都到主内存中去取这个数据来增长它吧。

  • 越靠近CPU的缓存越快也越小。

  • 所以L1缓存很小但很快,并且紧靠着在使用它的CPU内核。

  • L2大一些,但也慢一些,并且仍然只能被一个单独的CPU核使用

  • L3在现代多核机器中更普遍,仍然更大,更慢,并且被单个插槽上的所有CPU核共享。

  • 最后,主内存保存着程序运行的所有数据,它更大,更慢,由全部插槽上的所有CPU核共享。

  • 当CPU执行运算的时候,它先去L1查找所需的数据,再去L2,然后L3,最后如果这些缓存中都没有,所需的数据就要去主内存拿。

  • 走得越远,运算耗费的时间就越长。所以如果进行一些很频繁的运算,要确保数据在L1缓存中。

cache&命中率

cache(即高速缓冲存储器(cache Memory)。

它是一个相对于内存来说容量很小,速度贼快,用静态存储器实现的存储系统,解决内存跟不上CPU运算速度的问题

为什么要设计cache

电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷鸟、毒龙系列的处理器,由于在设计采用了DDR技术,CPU工作的外频为系统总线频率的两倍)。但是,CPU的工作频率(主频)是外频与倍频因子的乘积。这样一来,内存的工作频率就远低于CPU的工作频率了。这样造成的直接结果是:CPU在执行完一条指令后,常常需要“等待”一些时间才能再次访问内存,极大降了CPU工作效率。在这样一种情况下, cache就应运而生了

cache是什么

cache是一种特殊的存储器,它由cache存储部件和cache控制部件组成。cache 存储部件一般采用与CPU同类型的半导体存储器件,存取速度比内存快几倍甚至十几倍。而cache控制器部件包括主存地址寄存器、cache 地址寄存器,主存—cache地址变换部件及替换控制部件等。至于它们各自又是怎样工作的、有何作用等等,就没有必要做进一步的研究,知道一般 cache分为L1 cache(其中又分为数据cache、代码cache)、L2 cache就行。

cache是怎样工作的

我们知道,CPU运行程序是一条指令一条指令地执行的,而且指令地址往往是连续的,意思就是说CPU在访问内存时,在较短的一段时间内往往集中于某个局部,这时候可能会碰到一些需要反复调用的子程序。电脑在工作时,把这些活跃的子程序(数据或指令)存入比内存快得多的cache。**CPU在访问内存时,首先判断所要访问的内容是否在cache中,如果在,就称为“命中”,此时CPU直接从cache中调用该内容;否则,就称为 “不命中”,CPU只好去内存中调用所需的子程序或指令了。**CPU不但可以直接从cache中读出内容,也可以直接往其中写入内容。由于cache的存取速率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。

影响cache命中率的因素

  1. cache 的容量,大一些好。

  2. cache 与主存储器每次交换信息的单位量(cache Line Size)适中。

  3. cache 不同的组织方式,多路组相联更好。

  4. cache 的多级组织可提高命中率。

  5. cache 装满后的换字算法。

为什么不全用cache

  1. 价格因素。
  2. 电脑在执任务时,那种使用频率非常高的子程序或指令不是很多的,因此那些使用频率不太高的内容只须保存在速度相对较低的内存中即可。

参考链接

(19条消息) cache和命中率的问题_何大草的博客-CSDN博客_cache命中率