Loading... # 输入/输出和存储系统 计算机:存取数据 ## I/O及其性能 一个性能不佳的I/O系统可能会导致连锁反应(ripple effect),并拖累整个计算机系统 ## 阿姆达尔定律 当使用最多的部件提升时,计算机系统性能得到最大的提升 $$ S=\frac{1}{(1-f)+\frac{f}k} $$ S代表系统整体性能的加速比,f表示由较快部件完成的部分,k表示新部件的加速比(k>1,加速前比加速后) eg: 对于一个计算机系统,我们可以花10000元使CPU快50%,也可以花7000元使硬盘快150%;处理器70%的时间运行CPU,30%的时间等待硬盘 对于**CPU**:S=1.30 ![image-20220513205325757.png](http://xherlock.top/usr/uploads/2022/05/1827617902.png) 每1%的提升花费333元 对于**硬盘**:S=1.22 ![image-20220513205502909.png](http://xherlock.top/usr/uploads/2022/05/1939811173.png) 每1%的提升花费318元 ## I/O体系结构 将I/O定义为一个子系统部件,它在由CPU和主存储器组成的主机系统与外围设备之间移动编码数据 包括: * 用于I/O功能的主存储器模块 * 提供将数据从系统中移入或移出所需要的总线通道 * 主机和外围设备中的控制模块 * 连接外部组件的接口,如键盘和磁盘 * 连接主机系统及其外围设备之间的电缆或其他通信链路 ![image-20220513205826002.png](http://xherlock.top/usr/uploads/2022/05/3382626137.png) ### I/O控制方法 尝试将各种I/O设备和总线连接不可行(控制方式和传输模式差异大),因此使用专用的I/O模块作为CPU和外围设备之间接口 I/O模块能够控制设备的操作、数据缓冲、执行错误检测、与CPU通信。**控制方法**有 * <u>程序控制I/O</u>(轮询polled I/O):为每个I/O设备维护一个寄存器,每个寄存器持续被轮询来检测到达的数据 * <u>中断驱动I/O</u>:允许CPU在I/O未被请求前做其他事 **中断信号在取指-译码-执行周期的开始检测** INT:interrupt INTA:interrupt acknowledgement ![image-20220513211552674.png](http://xherlock.top/usr/uploads/2022/05/925047173.png) **中断服务程序ISR:** ![image-20220513212035409.png](http://xherlock.top/usr/uploads/2022/05/752317951.png) * <u>存储器映射I/O</u>:I/O设备和内存共享相同地址空间,I/O可以像内存一样取出和传入数据,极大地简化了系统设计 * <u>直接存储器存取</u>(DMA,direct memory access):将I/O处理装载到一个特殊用途的芯片 ![image-20220513212443580.png](http://xherlock.top/usr/uploads/2022/05/1862203671.png) DMA和CPU共享数据总线,同一时间只能一个设备控制总线,称为总线主控设备;DMA优先级比CPU高,DMA会利用CPU使用的存储器周期来完成I/O操作,称为**周期窃取** * <u>通道控制I/O</u>:使用专门的I/O处理器 由一些小的CPU来控制——I/O processor(**IOP**),具有算术逻辑指令和分支转移指令的能力 IOP功能: * 协商协议 * 发出各种设备命令 * 将存储代码转换为内存代码 * 独立于主机CPU来传输多个完整的文件或文件组 ![image-20220513213411787.png](http://xherlock.top/usr/uploads/2022/05/2034916890.png) ### 字符I/O和块I/O 字符I/O一次处理一个字节/字符(鼠标键盘,键盘通常链接一个中断驱动I/O系统) 块I/O一次处理字节组(磁盘、磁带等,通常使用DMA或通道I/O连接系统) ### I/O总线操作 总线访问的请求必须要仲裁,总线控制线在需要时激活设备,错误时发出信号,必要时重置设备 数据线数目是总线宽度(width of the bus) Timing diagram-时序图 ![image-20220513215147072.png](http://xherlock.top/usr/uploads/2022/05/4162128005.png) ## 数据传输模式 分为串行和并行传输模式 和并行相比,串行: * 需要更少导体 * 受信号衰减影响小 * 可以传输数据更远更快 ## 磁盘技术 磁盘提供大容量的耐用存储,可以很快地被访问 磁盘驱动器被称为随机/直接存储设备(random access storage device):数据块可以根据在磁盘的位置进行访问 <img src="http://xherlock.top/usr/uploads/2022/05/809616490.png" alt="image-20220514094108951" style="zoom: 80%;" style=""> 磁道从外向里从0开始编号,数据块驻留在扇区中 ### 硬盘驱动器 ![image-20220514094340194.png](http://xherlock.top/usr/uploads/2022/05/1557679000.png) * 磁盘碟片(platter)堆叠在转轴(spindle)上 * 一组梳状的读写头安装在一个旋转的磁盘驱动臂上 * 旋转的磁盘形成一个圆柱面 **寻道时间**(seek time):磁盘驱动臂定位到指定磁道上所需的时间(不包括磁头读取磁盘目录的时间) **旋转延迟**(rotational delay):读写头定位到指定扇区上方所需要的时间 **存取时间** = 寻道时间 + 旋转延迟 传输时间 = 存取时间 + 实际读取数据所需要的时间 **反应时间**是**旋转速度(rotational speed:5400rpm,revolution per min每分钟转圈数)**的直接函数,用来衡量*目标扇区移动到读写头下方位置所需要的时间总量* 计算公式:$(\frac{60s}{磁盘旋转速度}\times \frac{1000ms}s)/2$ 平均失效时间(mean time to failure,MTTF) ### 固态硬盘 磁盘主要优点是便宜 磁盘缺点: * 检索数据比从主存中检索数据需要更长时间 * 磁盘易碎 * 移动部件易受磨损和破坏 解决方案:使用非易失性(non-volatile)RAM替换硬盘 固态硬盘(SSD,solid state drive)由微控制器和闪存组成,访问时间和传输速率比传统磁盘驱动器快100倍,但仍比RAM慢10万倍 不可恢复的误码率(unrecoverable bit error ratio,UBER):数据错误的数量除以在整个使用期间模逆所得的读取的总位数,磁盘可靠性的度量 百万兆字节(TBW,terabyte written):,是磁盘耐久度的度量 ## 光盘 光盘提供非常廉价的大存储容量 只读光盘驱动器(CD-ROM)、DVD(多功能数码光盘)、WORM(一些多读技术) ### CD-ROM * 数据记录在螺旋状的轨迹中 * 01记录对应凹坑和平台 * 一个轨道很长 * 有两级错误检测和校正功能 * CD-ROM可以装最多650MB的数据 ### DVD * 是CD密度的四倍 * DVD可以装最多17GB的数据 * DVD使用更短的激光(650nm),而CD-ROM使用(780nm),这使DVD能够使轨道缠绕更密集 ### 蓝光光盘 * 使用波长更小的蓝光:蓝光和HD-DVD(最终蓝光胜出,依托索尼的影响) * 最大可装25GB的数据 ## 磁带(magnetic tape) 早期:11MB ![image-20220514105114278.png](http://xherlock.top/usr/uploads/2022/05/3752317577.png) 现代:GB,分为**蛇形(serpentine)扫描和螺旋(helical)扫描** 数字线性磁带(DLT,digital line tape)和1/4in盒式(QIC)使用蛇形扫描 数字音频带(DAT,digital audio tape)使用螺旋扫描 <u>**蛇形扫描**</u> ![image-20220514105458921.png](http://xherlock.top/usr/uploads/2022/05/2404376090.png) **<u>螺旋扫描</u>** ![image-20220514105527934.png](http://xherlock.top/usr/uploads/2022/05/2696572993.png) LTO:线性磁带开放协议 ## RAID 独立磁盘冗余阵列,redundant array of independent disks **RAID-0**:磁盘跨区,提高性能,但是不提供冗余(缺乏可靠性) ![image-20220514110431812.png](http://xherlock.top/usr/uploads/2022/05/531361640.png) **RAID-1**:也称磁盘映像(两组磁盘拥有相同数据),提供冗余和高性能(但贵) ![image-20220514110628030.png](http://xherlock.top/usr/uploads/2022/05/4232721497.png) **RAID-2**:在每个条带中只写入一位数据,而不是在任意大小块中写入数据,分为数据驱动器和汉明驱动器(提供错误检测,存放纠错信息),由于从多个磁盘取处和存储数据且计算汉明码,性能很差,成本较高 ![image-20220514110925116.png](http://xherlock.top/usr/uploads/2022/05/1514967152.png) **RAID-3**:和RAID-2一样每次分配一个比特位,但只是用一个驱动器来保存一个简单的奇偶校验位(每位的异或结果),不适合商用,但还可以 ![image-20220514111213462.png](http://xherlock.top/usr/uploads/2022/05/771570542.png) **RAID-4**:和RAID-3相似,但是每次写入数据到统一大小的条带中 ![image-20220514111534655.png](http://xherlock.top/usr/uploads/2022/05/1333165892.png) **RAID-5**:RAID-4+分布奇偶校验(经常用在商业系统) ![image-20220514112107303.png](http://xherlock.top/usr/uploads/2022/05/4143747768.png) **RAID-6**:前面的RAID一次最多允许一个磁盘出错,RAID-6使用两层错误检测(里德-所罗门和奇偶校验),可以容忍两个磁盘出错,属于写密集型 ![image-20220514112417084.png](http://xherlock.top/usr/uploads/2022/05/3268267303.png) **RAID DP**:采用一对奇偶校验块,和RAID-6一样可以容忍两个磁盘的丢失(比RAID-5性能差一些) ![image-20220514112510793.png](http://xherlock.top/usr/uploads/2022/05/4281796358.png) ## 数据存储的未来 * 生物材料 * 碳纳米管 * 全息系统 * 忆阻器 * 微机电装置 最后修改:2022 年 05 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果觉得我的文章对你有用,请随意赞赏