## CSAPP读书日记-第六章-存储器层次结构

首先贴个图,展示存储器的层次结构:
在这里插入图片描述

之所以这样设计存储器,就算为了以更低的成本达到接近于全部高级配备的才能达到的性能。(其中有个核心的思想:局部性原理)

局部性原理有2种表现形式:
1.时间局部性(被引用过一次的内存位置会在不久继续被引用)
2.空间局部性(一个内存被引用了一次,在不久会引用其附近的)

那么数据是如何被利用的呢?再来看个总线设计图:
在这里插入图片描述
虽然不同的厂商有着不同的总线设计,但是上面的图是一个经典的抽象,我们以上面为例进行学习即可。

可以看到各个设备之间不是直接互联的,而是通过I/O桥接器,多一个中间层有什么好处呢?就是各个设备之间不是紧耦合的,各个设置只要知道如何向I/O桥接器发消息和接收I/0桥接器的消息即可,I/O桥接器和将各个设备联系起来。

以内存映射为例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再来浅谈下局部性原理在编码中的应用:
以多维数组的循环为例:
我们理应先循环完一个数组,再循环另一个,这样会有良好的空间局部性。例子如下:
在这里插入图片描述
如果反过来,像这样:
在这里插入图片描述
这样就会先循环每个数组的第J个元素,相当于不断跳着访问,空间局部性不好。

最后再来看一个高大上的图:
在这里插入图片描述
步长可以简单理解为循环体中访问的每个元素的地址间的距离。步长越小,空间局部性越好。
大小影响的是时间局部性,因为东西越多,之后就越不可能访问同一个地址。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zjx130/article/details/84726893
今日推荐