第六章 存储器层次结构 第一节 存储技术之磁盘存储

磁盘能比RAM存储更大的信息,但是读取速度上比DRAM慢了10万倍,比SRAM慢了100万倍。

1. 磁盘构造

在这里插入图片描述

  • 磁盘是由盘片(platter)构成

  • 盘片中央有一个可以旋转的主轴,它使得盘片以固定的旋转速率旋转

  • 每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。

  • 一个磁盘表面由一组磁道组成

  • 一个磁道由一组扇区组成

  • 每个扇区包含相等的数据位(通常512字节)

  • 扇区之间由一些间隙(gap)分隔开,这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位

  • 磁盘是由一个或多个叠放在一起的盘片组成的,整个装置通常被称为磁盘驱动器(disk drive), 简称为磁盘

  • 柱面指多个盘片驱动器的构造, 这里, 柱面是所有盘片表面上到主轴中心的距离相等的磁道的集合。例如, 如果一个驱动器有三个盘片和六个面, 每个表面上的磁道的编号都是一致的, 那么柱面k就是6个磁道k的集合

2.磁盘容量

三个因素:

  • 记录密度(recordi ng dens ity)(位/英寸):磁道一英寸的段中可以放入的位数。
  • 磁道密度(track dens ity)(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数。
  • 面密度(areal dens ity)(位/平方英寸):记录密度与磁道密度的乘积。

最初:将每个磁道分为数目相同的扇区,扇区的数目是由最靠内的磁道能记录的扇区数决定的。为了保持每个磁道有固定的扇区数,越往外的磁道扇区隔得越开。随着面密度的提高,扇区之间的间隙(那里没有存储数据位)变得不可接受地大。
后来:柱面的集合被分割成不相交的子集合,称为记录区(recording zone) 。每个区包含一组连续的柱面。一个区中的每个柱面中的每条磁道都有相同数最的扇区,这个扇区的数量是由该区中最里面的磁道所能包含的扇区数确定的。

磁 盘 容 量 公 式 : 每 个 扇 区 的 字 节 数 ∗ 每 个 磁 道 的 平 均 扇 区 数 ∗ 每 个 盘 面 的 磁 道 数 ∗ 2 个 盘 面 ∗ 盘 片 数 量 磁盘容量公式:每个扇区的字节数 * 每个磁道的平均扇区数 * 每个盘面的磁道数 * 2个盘面 * 盘片数量 2

3.磁盘操作

1.操作流程

在这里插入图片描述
磁盘用读/写头(read/write head)来读写存储在磁性表面的位, 而读写头连接到一个传动臂(actuator arm)一端, 如图所示。通过沿着半径轴前后移动这个传动臂, 驱动器可以将读/写头定位在盘面上的任何磁道上。这样的机械运动称为寻道(seek )。一旦读/写头定位到了期望的磁道上, 那么当磁道上的每个位通过它的下面时, 读/写头可以感知到这个位的值(读该位), 也可以修改这个位的值(写该位)。有多个盘片的磁盘针对每个盘面都有一个独立的读/写头, 如图所示。读/写头垂直排列, 一致行动。在任何时刻, 所有的读/写头都位于同一个柱面上。

磁盘总是密封的,如果进入灰尘会造成读写头冲撞,导致磁盘无法使用。

2.访问时间

磁盘以扇区大小的块来读写数据。对扇区的访问时间有三个主要的部分:寻道时间、旋转时间和传送时间。

1.寻道时间

是指读写头移动到目标磁道上的时间。

2.旋转时间

是指读写头移动到期望磁道之后,驱动器等待目标扇区的第一个位旋转到读写头下。

3.传送时间

当目标扇区的第一个位位于读/写头下时,驱动器就可以开始读或者写该扇区的内容了。

计算示例
在这里插入图片描述
(RPM是指转每秒)

可以看出,访问扇区的第一个字节废掉了大部分的时间,而读取剩下的扇区,并没有耗费很长时间。

4.逻辑磁盘块

为了对操作系统隐藏这样的复杂性,现代磁盘将它们的构造呈现为一个简单的视图,一个B个扇区大小的逻辑块的序列,编号为0, 1, …, B-1。磁盘封装中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)磁盘扇区之间的映射关系。当操作系统想要执行一个I/O操作时,例如读一个磁盘扇区的数据到主存,操作系统会发送一个命令到磁盘控制器,让它读某个逻辑块号。控制器上的固件执行一个快速表查找,将一个逻辑块号翻译成一个(盘面,磁道,扇区)的三元组,这个三元组唯一地标识了对应的物理扇区。控制器上的硬件会解释这个三元组,将读/写头移动到适当的柱面,等待扇区移动到读/写头下,将读/写头感知到的位放到控制器上的一个小缓冲区中,然后将它们复制到主存中。

为什么磁盘的最大使用量比磁盘容量要小
磁盘控制器必须对磁盘进行格式化,然后才能在该磁盘上存储数据。格式化包括用标识扇区的信息填写扇区之间的间隙,标识出表面有故障的柱面并且不使用它们,以及在每个区中预留出一组柱面作为各用,如果区中一个或多个柱面在磁盘使用过程中坏掉
了,就可以使用这些备用的柱面。因为存在着这些备用的柱面,所以磁盘制造商所说的格式化容量比最大容量要小。

5. 连接I/O设备

一个典型的I/O总线结构如下如所示,它连接了CPU、主存和I/O设备。
在这里插入图片描述I/O总线比系统总线和内存总线慢,可以繁多的第三方IO设备,有以下几种类型:

  1. 通用串行总线(Universal Serial Bus, USB)控制器是一个连接到USB总线的设备的中转机构。
  2. 图形卡(或适配器)包含硬件和软件逻辑,它们负责代表CPU在显示器上画像素。
  3. 主机总线适配器将一个或多个磁盘连接到I/O总线,使用的是一个特别的主机总线接口定义的通信协议。
    SCSI和SATA是两个比较常用的磁盘接口
    SCSI 磁盘通常比SATA 驱动器更快但是也更贵。
    SCSI 主机总线适配器(通常称为SCSI 控制器)可以支持多个磁盘驱动器。SATA 适配器只能支持一个驱动器。
  4. 其他的设备,例如网络适配器,可以通过将适配器插入到主板上空的扩展槽中

注意:这里I/O总线只是一种简单抽象。

6.访问磁盘

CPU使用一种称为内存映射I/O的技术来向I/O设备发射命令。
在使用内存映射I/O的系统中, 地址空间中有一块地址是为与I/O设备通信保留的。每个这样的地址称为一个I/O端口。当一个设备连接到总线时,它与一个或多个端口相关联(或它被映射到一个或多个端口)。

下面将这个流程简单描述一下:

1.CPU发起磁盘读

假设磁盘控制器映射到端口0xa0。随后,CPU可能通过执行三个对地址0xa0的存储指令, 发起磁盘读

  • 第一条指令是发送一个命令字, 告诉磁盘发起一个读, 同时还发送了其他的参数, 例如当读完成时, 是否中断CPU
  • 第二条指令指明应该读的逻辑块号
  • 第三条指令指明应该存储磁盘扇区内容的主存地址。
    在这里插入图片描述

2.DMA传输

CPU发起指令之后,就去做别的事情去了。在磁盘控制器收到来自CPU的读命令之后, 它将逻辑块号翻译成一个扇区地址, 读
该扇区的内容, 然后将这些内容直接传送到主存, 不需要CPU的干涉。

设备可以自己执行读或者写总线事务而不需要CPU干涉的过程, 称为直接内存访问(DirectMemory Access, DMA)。这种数据传送称为DMA 传送CDMA transfer)。

在这里插入图片描述

3. 中断通知

在这里插入图片描述

在DMA 传送完成,磁盘扇区的内容被安全地存储在主存中以后,磁盘控制器通过给CPU 发送一个中断信号来通知CPU。基本思想是中断会发信号到CPU 芯片的一个外部引脚上。这会导致CPU 暂停它当前正在做的工作,跳转到一个操作系统例程。这个程序会记录下I/O已经完成,然后将控制返回到CPU 被中断的地方。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值