存储器是用来存放程序和数据的部件,它是一个记忆装置,也是计算机能够实现“存储程序控制”的基础。在计算机系统中,规模较大的存储器往往分成若干级,称为存储器系统。
传统的存储器系统一般分为高速缓冲存储器(Cache)、主存、辅存三级。采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取四种。
根据工艺和技术不同,主存可分为随机存取存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。
硬盘存储器在硬盘中,信息分布呈以下层次:记录面、圆柱面、磁道和扇区,如图所示。
一台硬盘驱动器中有多个磁盘片,每个盘片有正反两个记录面。每个记录面对应一个磁头。磁头一致地沿记录面径向移动,单个磁头不能单独地移动。每个记录面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。一个盘组中,各记录面上相同位置的各磁道构成一个柱面。
当要存入一个较大的文件时,若一条磁道存不完,就需要存放在几条磁道上。这时,应首先将一个文件尽可能地存放在同一柱面中。如果仍存放不完,再存入相邻的柱面内。
读取数据时,磁头首先要寻找到对应的磁道,这个过程称之为寻道,寻道所消耗的时间称为寻道时间,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:
存取时间=寻道时间+等待时间(平均定位时间+转动延迟)
为了更好地读写数据,磁盘会用到以下调度算法:
Cache 通常采用相联存储器(ContentAddressable Memory,CAM)。CAM 是一种基于数据内容进行访问的存储设备。当对其写入数据时,CAM 能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM 对所有存储单元中的数据同时进行比较,并标记符合条件的所有数据以供读取。由于比较是同时、并行进行的,所以,这种基于数据内容进行读写的机制,其速度比基于地址进行读写的方式要快很多。
当 CPU 发出访存请求后,存储器地址先被送到 Cache 控制器以确定所需数据是否已在 Cache 中,若命中则直接对 Cache 进行访问。这个过程称为 Cache 的地址映射。在 Cache 的地址映射中,主存和 Cache 将均分成容量相同的块(页)。常见的映射方法有直接映像、全相联映像和组相联映像。
直接映像以随机存取存储器作为 Cache 存储器,硬件电路较简单。在进行映射时,主存地址被分成三个部分,从高到低依次为:区号(7位)、页号(4位)以及页内地址(19位)。
在直接映像方式中,将 Cache 存储器等分成块,主存也等分成块,每个主存页只能复制到某一固定的 Cache 页中,如图所示。直接映像方式的优点是比较容易实现,缺点是不够灵活,有可能使 Cache 的存储空间 得不到充分利用。
全相联映像使用相联存储器组成的 Cache 存储器。存储器同等分块并编号,主存的每一页可以映像到 Cache 的任一页。如果淘汰 Cache 中某一页的内容,则可调入任一主存页的内容,因而较直接映像方式灵活,但地址变换复杂速度较慢。主存地址分为两个部分,分别为地址部分(主存页标记 11 位)和数据部分(页内地址 19 位)。数据部分用于存放数据,而地址部分则存放该数据的存储器地址。
组相联映像(页组映像)介于直接映像和全相联映像之间,主存与 Cache 都分组,主存中一个组内的页数与 Cache 的分组数相同,如图所示。组间采用直接映像,即主存中组号与 Cache 中组号相同的组才能命中,但是组内全相联映像,即组号相同的两个组内的所有块可以任意调换。
当 Cache 已存满数据后,新数据必须替换 Cache 中的某些旧数据。最常用的替换算法有以下几种:
本文来源:程序之心,转载请注明出处!
主要介绍了计算机系统的基本概念,包括最底层的内存中的数据表示、流水线指令的构成、虚拟存储器、编译系统、动态加载库,以及用户应用等。书中提供了大量实际操作,可以帮助读者更好地理解程序执行的方式,改进程序的执行效率。此书以程序员的视角全面讲解了计算机系统,深入浅出地介绍了处理器、编译器、操作系统和网络环境,是这一领域的权威之作。
最新内容
© 2016 - 2024 chengxuzhixin.com All Rights Reserved.