存储器层次结构
系统存储数据主要有寄存器、SRAM、SDRAM、磁盘,其中SRAM作为系统的高速缓存,DRAM是系统的主存,他们的访问读写速度各不相同,造价也因读写速度不同而不同。如图:
cpu读磁盘上数据,首先把磁盘中的数据读取到主存中,然后高速缓存,再到寄存器,通过局部性可参考另一篇文章代码的局部性,把最近使用的数据存储在高速缓存中提高访问速度。
首先我们来介绍两个关于访问存储器中数据的概念:
①缓存命中
cpu处理数据前会先到高速缓存中查看是否有这个数据,有则直接取出来用,这就是命中
②缓存不命中
与缓存命中相反,高速缓存中并没有这个数据,只能从主存中读取然后再把读出的数据存储在高速缓存中,如果高速缓存没有多余的空间,那么覆盖之前的数据,被覆盖的数据一般选择是使用次数最少的或前一次使用时间距离现在已很久了。
那么cpu写磁盘上的数据呢?有两种方式:
直写 直接越过高速缓存进行些操作
写回 先往高速缓存中写,然后再向低层缓存中写
那么cpu操作数据时,是如何来获得数据的呢?首先我们来看下高速缓存里面存储数据的大致结构,它主要由多个组组成,每个组由一个或多个行组成,每个行又由多个块组成,块是缓存中最小的存储单元,cpu根据组标识来定位到组,然后标记来定位到行,再从偏移来读取行中偏移位置起的数据。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/a1009563517/article/details/47829449