其他分享
首页 > 其他分享> > CPU多级缓存与缓存一致性

CPU多级缓存与缓存一致性

作者:互联网

目录

 

 

1.为什么要有缓存?

   随着现代半导体工艺的发展,CPU的频率越来越快,相对内存快了一个数量级,对于访存的操作CPU就需要等待主存,这样会导致资源的白白浪费。所以cache的出现为了解决CPU与内存速度不匹配的问题。(cpu ->cache->memory)

2 CPU访问主存

 数据流通过称为总线(bus)的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为总线事务( bus transaction)。读事务( read transaction)从主存传送数据到CPU。写事务( write transaction)从CPU传送数据到主存。

系统总线( system bus),它连接CPU和I/O桥接器,另一条总线是内存总线( memory bus),它连接I/O桥接器和主存。I/O桥接器将系统总线的电子信号翻译成内存总线的电子信号。正如我们看到的那样,I/O桥也将系统总线和内存总线连接到I/O总线,像磁盘和图形卡这样的I/O设备共享I/O总线。

 考虑当CPU执行一个如下加载操作时会发生什么

movq A, %rax

这里,地址A的内容被加载到寄存器%rax中。CPU芯片上称为总线接ロ( bus interface)的电路在总线上发起读事务。读事务是由三个步骤组成的。首先,CPU将地址A放到系统总线上。I/O桥将信号传递到内存总线(图a)。接下来,主存感觉到内存总线上的地址信号,从内存总线读地址,从DRAM取出数据字,并将数据写到内存总线。I/O桥将内存总线信号翻译成系统总线信号,然后沿着系统总线传递(图b)。最后,CPU感觉到系统总线上的数据,从总线上读数据,并将数据复制到寄存器rax(图c)。

 

 

 

 

 

 

 

 反过来,当CPU执行一个像下面这样的存储操作时

movq %rax, A

这里,寄存器%rax的内容被写到地址A,CPU发起写事务。同样,有三个基本步骤。首先,CPU将地址放到系统总线上。内存从内存总线读出地址,并等待数据到达(图a)。接下来,CPU将%rax中的数据字复制到系统总线(图b)。最后,主存从内存总线读出数据字,并且将这些位存储到DRAM中(图c)

 

 

 

 3 局部性

  局部性通常有两种不同的形式:时间局部性( temporal locality)和空间局部性( spatia locality)。在一个具有良好时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附近的一个内存位置。

  程序员应该理解局部性原理,因为一般而言,有良好局部性的程序比局部性差的程序运行得更快。现代计算机系统的各个层次,从硬件到操作系统、再到应用程序,它们的设计都利用了局部性。在硬件层,局部性原理允许计算机设计者通过引人称为高速缓存存储器的小而快速的存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近破引用块的高速缓存。类似地,操作系统用主存来缓存磁盘文件系统中最近被使用的磁盘块。局部性原理在应用程序的设计中也扮演着重要的角色。例如,Web浏览器将最近被引用的文档放在本地磁盘上,利用的就是时间局部性。大容量的Web服务器将最近被请求的文档放在前端磁盘高速缓存中,这些缓存能满足对这些文档的请求,而不需要服务器的任何干预。

4 存储器的层次结构

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

标签:缓存,系统总线,多级,总线,主存,内存,局部性,CPU
来源: https://www.cnblogs.com/youngao/p/12552189.html