版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1高速缓冲存储器高速缓冲存储器(Cache)是位于CPU与主存之间的临时存储器,一般由高速SRAM构成。SRAM只需要1~2个时钟周期就可以读写一次数据,而DRAM需要几个时钟周期才能读写一次数据,SRAM速度比DRAM的快,另外,SRAM的每位成本也比DRAM的高,因此,一般用DRAM构成主存,而用SRAM构成缓存。在速度方面,主存和CPU大约有一个数量级的差距。在CPU和主存之间设置Cache,将一部分数据放置于Cache中,CPU存取这部分数据时,直接从高速的Cache中获取,而不需要访问慢速的主存。从CPU的角度看,采用Cache后的内存的访问速度接近于Cache,而仍然保持了主存的容量,解决了速度与成本之间的矛盾。Cache机制完全由硬件来实现,以避免带来额外的延迟。下一页返回6.1高速缓冲存储器6.1.1Cache工作原理1.局部性原理CPU在执行程序的过程中具有局部性,在一个较短的时间间隔内,CPU所访问的内存地址往往集中在整个地址空间的一个很小范围之内。从程序和数据两方面看,程序中大部分指令是顺序执行的,数据存放在数组等结构中,是顺序存放的,具有顺序局部性(OrderLocality)。此时如果一个信息项正在被访问,那么在近期它很可能还会被再次访问,如循环和子程序的重复执行及堆栈的使用等,具有时间局部性(TemporalLocality)。上一页下一页返回6.1高速缓冲存储器程序的顺序局部性特点使得对程序地址的访问相对集中,数据的分布虽然一般不如指令那样集中,但对数组的存取及变量的频繁访问都会使数据的地址相对集中,程序和数据都具有空间局部性(SpatialLocality)特点,即CPU将用到的信息很可能与现在正在使用的信息在空间地址上是邻近的。这样在程序执行过程中表现出对某些局部范围的内存地址频繁访问,而对此范围以外的地址则访问较少的现象,称为局部性原理。根据局部性原理,在主存和CPU之间设置一个Cache存储器,以接近于CPU的速度工作,工作速度数倍于主存,全部功能由硬件实现,并且对程序员是透明的。和主存相比,Cache的速度较高,但容量较小。上一页下一页返回6.1高速缓冲存储器CPU需要从内存中取出指令或存取数据时,如果这个指令或数据已经存放在Cache中,就不必访问主存,从而提高了程序运行速度。2.Cache的访问结构Cache与CPU、系统总线之间存在着以下两种基本结构:(1)贯通查找式(LookThrough)结构如图6−2(a)所示,Cache位于CPU与主存之间,CPU对主存的所有数据请求都首先送到Cache,由Cache自行查找。如果命中,由Cache来完成CPU的数据请求;如果不命中,则由Cache将数据请求发送给主存。上一页下一页返回6.1高速缓冲存储器此时Cache平均访问时间=Cache访问时间+(1−命中率)×未命中时主存访问时间。其优点是降低了CPU对主存的请求次数,缺点是不命中时延迟了CPU对主存的访问时间。(2)旁路读出式(LookAside)结构如图6−2(b)所示,在LookAside结构中,Cache不再位于CPU与主存之间,CPU发出数据请求时,是向Cache和主存同时发出请求。由于Cache速度更快,如果命中,则Cache在将数据回送给CPU的同时,通知主存忽略CPU对主存的请求;如果不命中,由主存完成CPU的存取请求。上一页下一页返回6.1高速缓冲存储器此时Cache的平均访问时间=命中率×Cache访问时间+(1−命中率)×未命中时主存访问时间。在Cache不命中时,Cache不会增加额外的时间延迟,但缺点是CPU的每次请求都会发送给主存,CPU的系统总线占用率较高。3.Cache映射设Cache的容量为2c个单元,Cache每次与主存交换数据块的大小为一行,一行为k个单元,k=2w。Cache一共有m=2r行,每一行用Li表示,0≤i<m。由于m=2c/2w,所以r=c−w。将主存分为若干块,块的大小和行相等,共分成n=2s
块。主存有2s×2w=2s+w
个单元,地址为s+w位。每一块用Bj表示,0≤j<n。上一页下一页返回6.1高速缓冲存储器Cache的容量比主存小得多,只有一小部分主存的数据存放在Cache中。主存中的块可以根据需要调入Cache,或者从Cache中调出。Cache的每一行需要一个标记,以指明它是主存哪一块的副本,即它记录了Cache中的m个行与主存的n个块之间的对应关系。图6−3的阴影部分就是Cache的标记。Cache的标记保存了主存的块地址,占s位。主存的地址为s+w位。当CPU访问一个内存单元时,它的地址的高s位与Cache中每一行的标记作比较,如果某一Cache行的标记与它相等,那么这个单元就位于Cache中,称为访问Cache命中。如不匹配,则未命中,必须要从主存中存取。上一页下一页返回6.1高速缓冲存储器未命中时,一般要从将这个块从主存中复制到Cache中。4.Cache替换策略主存的一个块要调入Cache存储器时,如果Cache存储器中没有空闲的行,就必须从中选取一行,用新的块覆盖其原有的内容。这种替换应该遵循一定的规则,其目标是选取在下一段时间内被存取的可能性最小的块,替换出Cache。这些规则称为替换策略或替换算法,由Cache中的替换部件加以实现。常用的替换算法包括随机算法、先进先出(FIFO)算法和近期最少使用(LRU)算法等。5.微机中的Cache上一页下一页返回6.1高速缓冲存储器按照数据读取顺序和与CPU结合的紧密程度,CPU缓存可以分为一级缓存(L1Cache)、二级缓存(L2Cache),部分高端CPU还具有三级缓存(L3Cache)。当CPU要读取一个数据时,首先从一级缓存中查找,如果没有找到,再从二级缓存中查找,依此类推。早期由于CPU制造工艺上的限制,CPU内部的Cache容量较小。因此,除了CPU内核中的Cache外,在CPU电路板或主板上还设计了一部分容量稍大,但速度较低的Cache。这两部分缓存称为一级缓存和二级缓存。现代微机中,一级缓存中采哈佛结构,分为数据缓存(DataCache,D−Cache)和指令缓存(InstructionCache,I−Cache),分别用来存放数据和指令。上一页下一页返回6.1高速缓冲存储器采用哈佛结构使得两者可以同时被CPU访问,减少了数据和指令之间争用Cache所造成的冲突,提高了CPU效能。随着制造工艺的进步,二级缓存也集成到CPU内部,高端的机器还有三级缓存。一级缓存的访问延时最短,只有几纳秒,而二级、三级缓存需要几十纳秒。从容量上看,这三级缓存分别能达到数十KB、数百KB、数千KB。在Pentium4中使用了追踪缓存(ExecutionTraceCache,T−Cache或ETC)来替代一级指令缓存,容量为12KμOps(μOps,微指令),能存储12000条解码后的微指令。上一页下一页返回6.1高速缓冲存储器追踪缓存与一级指令缓存的运行机制是不相同的,一级指令缓存只是对指令做即时的解码,而并不会储存这些指令,而一级追踪缓存同样会将一些指令做解码,但这些解码后的微指令能储存在一级追踪缓存之内,因此,一级追踪缓存能以很高的速度将解码后的微指令提供给CPU核心。6.1.2Cache一致性协议对Cache的操作分为读和写两种。读操作因为不涉及内容的改变,不会导致Cache内容和对应的内存内容不一致,从Cache中将所需内容取走即可,所以读的过程比较简单,也很容易理解。上一页下一页返回6.1高速缓冲存储器而写的过程因为涉及对内容的修改,存在导致Cache内容和对应内存内容不一致的可能性,所以要复杂一些。研究人员设计了保持Cache一致性的协议来解决这个问题。对于Cache写操作,又分成单核CPU环境和多核CPU环境两种情况,下面分别来描述对应的处理方法。1.单核CPU一致性处理当系统只有一个CPU核在工作时,保持一致性的具体方法如下。(1)未命中时的Cache写策略当CPU发出写操作命令时,如果此时数据尚未调入Cache(未命中),则数据直接写入内存。上一页下一页返回6.1高速缓冲存储器含有写入数据的内存块可以根据需要决定是否随后调入Cache中。(2)命中时的Cache写策略此时数据写入Cache,同时为了保持数据与内存对应块的一致性,通常有两种处理方式:①直写式(WriteThrough):CPU在向Cache写入数据的同时,立即把数据写入内存,以保证Cache和内存中相应单元数据的一致性。直写式策略的特点是简单可靠,但由于CPU每次更新数据时都要对内存写入,写入速度受到影响。②回写式(WriteBack):CPU只向Cache写入数据,不立即写入内存。上一页下一页返回6.1高速缓冲存储器Cache为每一行设置一个标志位(dirty,脏位),为1时表示Cache中的数据尚未更新到内存。要替换这一行时,数据必须先写入内存的块中,这样才能被其他块所使用。回写式策略的特点是,发生命中时,CPU更新数据较快,但Cache的结构复杂,并且在回写前会暂时出现Cache中的数据和内存不一致的情况。2.多核CPU的MESI协议如果是多核环境,每个核又都有自己的缓存,那么就需要更复杂的协议来保持一致性,通常利用MESI(Modified、Exclusive、Shared、Invalid的首字母缩写,代表四种缓存状态)及其衍生协议(比如MESIF协议和MOESI协议等)来达到目的。上一页下一页返回6.1高速缓冲存储器(1)MESI协议介绍MESI对应的是修改、独占、共享、无效四种缓存段状态,任何多核系统中的缓存段都处于这四种状态之一。下面先分别对这四种状态的含义做简单的介绍。①修改(Modified)缓存段,属于脏段(dirty),它们已经被所属的处理器修改了。如果一个段处于修改状态,那么它在其他处理器缓存中的复制马上会变成无效状态。此外,修改缓存段如果要被替换或标记为无效,那么和回写模式下单核处理器常规的脏段处理方式一样,先要把它的内容回写到对应的内存块中。上一页下一页返回6.1高速缓冲存储器②独占(Exclusive)缓存段,是和对应内存块内容保持一致的一份复制。区别在于,如果一个处理器持有了某个E状态的缓存段,那么其他处理器就不能同时持有它,所以叫“独占”。这意味着,如果其他处理器原本也持有同一缓存段,那么它们会马上变成无效状态。③共享(Shared)缓存段,它也是和主内存内容保持一致的一份复制,在这种状态下的缓存段只能被读取,不能被写入。多组缓存可以同时拥有针对同一内存地址的共享缓存段。④无效(Invalid)缓存段,要么已经不在缓存中,要么它的内容已经过时。为了达到缓存的目的,这种状态的段将会被忽略。一旦缓存段被标记为失效,那么效果就等同于它从来没被加载到缓存中。上一页下一页返回6.1高速缓冲存储器(2)MESI协议的一致性处理如果把以上这些状态和单核系统中回写模式的缓存做对比,会发现I、S和M状态已经有对应的概念:无效、干净及脏的缓存段。所以只有E独占状态是一种新的概念。下面详细解释一下MESI协议如何利用这四种状态完成一致性处理。①对于无效缓存段(I状态),正如前面所述,相当于未加载进Cache。如果需要对其进行读写操作,则首先需要将对应的内存块调入。此时Cache和内存对应的块内容是一致的。②对于共享缓存段(S状态),可以在多个处理器中存在相同的复制,但因为只能读不能写,所以也不存在不一致的可能性。上一页下一页返回6.1高速缓冲存储器③对于独占缓存段(E状态),表示当前Cache行中包含的数据有效,并且该数据仅在当前处理器的Cache中有效,而不在其他处理器的Cache中存在复制。在该Cache行中的数据是当前处理器系统中最新的数据复制,并且与存储器中的数据一致。④对于修改缓存段(M状态),表示当前Cache行中包含的数据与存储器中的数据不一致,并且它仅在本处理器的Cache中有效,不在其他处理器的Cache中存在复制,因此其他处理器不会读出无效的、过期的数据。当处理器对这个Cache行执行替换操作时,会触发系统总线的写周期,将Cache行中被修改过的数据(脏数据)与内存中的数据进行同步,从而保持一致性。上一页下一页返回6.1高速缓冲存储器由此可以看出,只有当缓存段处于E或M状态时,处理器才能执行写操作,也就是说,只有这两种状态下,处理器是独占这个缓存段的,而对应的内容在其他Cache区域没有复制。当处理器想写某个缓存段时,如果它没有独占权,它必须先发送一条“我要独占权”的请求给总线,这会通知其他处理器,把它们拥有的同一缓存段的复制失效(假设存在多个复制的情况)。只有在获得独占权后,处理器才能开始修改数据。因为这个缓存段只有当前一份复制,所以不会有任何冲突。上一页下一页返回6.1高速缓冲存储器E状态和M状态的差别在于,E状态的缓存段内容和对应的内存块一致,因此,当退出E状态时,可以转入S状态。而M状态的缓存段内容和对应的内存块不一致,因此,当退出M状态时,需先进行写内存操作。上一页返回6.2内部存储器6.2.1内存分类主存储器与CPU直接相连,CPU需要的程序和数据都存在里面。内存是由内存芯片、电路板、金手指等部分组成的。内存可分为只读存储器(Read-OnlyMemory,ROM)和随机存取存储器(RandomAccessMemory,RAM)两大类。存储在ROM中的信息是非易失的(Nonvolatile),即断电后存储信息不丢失。通常用来存储不需要改变的程序或者数据,如存放微机的监控程序、汉字字库信息等。RAM只能暂时保存数据,断电后其中的数据会消失,常用来存放各种现场的输入/输出数据、中间计算结果、与外存交换的信息等。半导体存储器的分类如图6−4所示。下一页返回6.2内部存储器1.RAMRAM根据制造工艺可以分为双极型(Bipolar)和MOS型两大类。双极型采用晶体管触发器(Flip-Flop)为基本存储单位,存取速度高、晶体管较多,故集成度相对于MOS型低,功耗大,成本高。一般这种类型的RAM常用在速度要求较高的微机中或者作为Cache。MOS型RAM,又可以细分为静态RAM(StaticRAM,SRAM)和动态RAM(DynamicRAM,DRAM)两种。SRAM采用六管构成的触发器作为基本存储单位,集成度高于双极型,低于DRAM;不需要刷新,功耗低于双极型,高于DRAM。SRAM常用于系统高速缓存或者需要较小容量的高速系统中。上一页下一页返回6.2内部存储器DRAM采用单管线路组成基本存储单位,集成度高、功耗低,由于依靠电容存储电荷,因此采用DRAM实现的存储器需要定期刷新。2.ROM只读存储器电路比RAM简单、集成度更高、成本更低。目前广泛使用的ROM包括掩模型、可编程的只读存储器、可擦除可编程的只读存储器和闪存等。(1)掩模型MROM(MaskROM)由制造厂家写入数据。用户不能修改掩模ROM中的数据。掩模型ROM适用于成批生产的定型产品,降低单片成本。上一页下一页返回6.2内部存储器(2)可编程只读存储器PROM(ProgrammableROM)一次可编程,一旦写入,则内容不能再改变。如图6−5所示,PROM的基本原理是制造时在节点之间加入熔丝或者二极管,通过烧断熔丝或者击穿二极管完成编程,这一过程是不可逆转的,因此称为一次可编程。目前已经很少使用。(3)可擦除可编程的只读存储器EPROM(ErasablePROM)可以多次改写,写入速度较慢,一般需要借助一些编程工具来完成擦写操作,使用时作为只读存储器来使用。常见的包括紫外光可擦除ROM(UVEPROM)和电可擦除ROM(ElectricallyEPROM,EEPROM或者E2PROM)。上一页下一页返回6.2内部存储器前者擦除时将芯片曝光于紫外线下,则数据可被清空(全部置为1),因此可重复使用。在芯片外壳上会预留一个石英透明窗,擦除时接受紫外线照射。后者擦除时通过向芯片施以一个较高电压来完成,通过程序就能完成数据的重新写入,芯片不用从电路板上取下来,使用方便,更为常见。(4)闪存(FlashMemory)其每个记忆单元都有一个“控制闸”和“浮动闸”,利用高电场改变“浮动闸”的临界电压可进行编程操作。其读速度与DRAM相当,但写速度是DRAM的1/100~1/10。上一页下一页返回6.2内部存储器6.2.2主要技术指标和参数1.存储容量存储器可以容纳的二进制信息量称为存储容量。内存芯片的容量是一般以bit为单位的。内存芯片的数据是以位(bit)为单位写入一张大的矩阵中,每个单元格称为Cell,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个Cell,这就是内存芯片寻址的基本原理。这样的一个阵列就叫逻辑Bank(LogicalBank或者L_Bank)。内存中也不是只有一组逻辑Bank,它是由多个逻辑Bank组成的。上一页下一页返回6.2内部存储器每个逻辑Bank的单元格位数称为数据深度(DataDepth),也叫位宽,即一次操作能同时读写的位数。内存芯片的容量就是所有内存的逻辑Bank中的存储单元的容量总和。内存芯片的容量表示方法是:存储单元数量=行数×列数×数据深度×L−Bank的数量2.内存带宽内存带宽是指内存的数据传输速度,是衡量内存的重要指标。内存带宽的计算方法遵循计算公式:带宽=总线宽度×总线频率×一个时钟周期内交换的数据包个数。上一页下一页返回6.2内部存储器总线宽度是指内存一次能处理的数据宽度。早期30线内存条的数据带宽是8位,72线为32位,目前为64位。3.存储器访存速度存储器的访存速度严重制约着计算机的性能。存储器速度一般越快越好。存储器速度常用存储周期和存储器访存时间两个参数来描述。存储周期(MemoryCycle,MC)指连续两次存储器请求所需的最短间隔,如连续的两次读操作的最小时间间隔。访存时间(AccessCycle,AC)指存储器从接收读命令到被读出信息稳定输出的时间间隔。一般存储周期要大于存储器访存时间。4.错误校验上一页下一页返回6.2内部存储器内存常用的错误校验方式有Parity和ECC。其中奇偶校验(Parity)只能检错(8位二进制增加1位校验位)。ECC(ErrorCheckingandCorrecting)可以检错和纠错(64位二进制增加8位校验位)。6.2.3内存模组1.内存模组接口为了节省主板空间和增强配置的灵活性,现在的主板多采用内存条结构。将存储器芯片、电容、电阻等元件焊接在一条PCB(印制电路板)上组装起来合成一个内存模组(RAMModule),俗称内存条。内存条安装在主板上,由内存控制器管理。上一页下一页返回6.2内部存储器内存条接口主要包括30线、72线SIMM(SingleInlineMemoryModule)、168和184线DIMM(DoubleInlineMemoryModule)及184线RIMM(RambusInlineMemoryModule)。SIMM如图6−6所示,该种内存叫单边接触型内存,广泛地用于早期的x86机型和奔腾机型中,现在已经被淘汰了。最早的机型中采用的是30引脚的SIMM接口,之后的奔腾机型中都转为72引脚的接口。DIMM叫双边接触型内存,如图6−7所示。它和SIMM不同,在内存的正反两面都有金手指,能够与接口连接,目前使用的内存大部分都是这种接口形式。上一页下一页返回6.2内部存储器同样采用DIMM,SDRAM的接口与DDR内存的接口也略有不同,SDRAMDIMM为168引脚DIMM结构,金手指上有两个卡口,DDRDIMM则采用184引脚DIMM结构,金手指上只有一个卡口。RIMM是Rambus公司生产的RDRAM内存所采用的接口类型,支持184引脚的RDRAM(Rambus-DRAM)内存,目前已被淘汰。2.内存颗粒组成内存模组的存储芯片性能决定了内存条的性能,这些芯片俗称内存颗粒。常用的内存芯片类型包括SDRAM、DDR、DDR2、DDR3和DDR4SDRAM。(1)SDRAM上一页下一页返回6.2内部存储器同步动态随机存储器(SynchronousDRAM,SDRAM)内存与系统总线速度同步,也就是与系统时钟同步,这样就避免了不必要的等待周期,减少数据访问时间。SDRAM的规格有PC66、PC100、PC133、PC200、PC266等,这里的数字就代表着该内存能正常工作的系统总线速度。例如PC100内存就可以在系统总线频率为100MHz的计算机中同步工作。SDRAM内含两个交错的存储阵列,数据在脉冲上升期便开始传输,当CPU从一个存储阵列访问数据的同时,另一个已准备好读写数据,通过两个存储阵列的紧密切换,读取效率得到成倍提高。表6−2列出了SDRAM内存芯片管脚。图6−8表示了从SDRAM中读取一个单元的过程。上一页下一页返回6.2内部存储器突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的存储单元的数量就是突发长度(BurstLengths,BL)。BL值可以使是1、2、4、8、全页(FullPage,P−Bank所包含的每个芯片内同一L−Bank中同一行的所有存储单元)。为了屏蔽不需要的数据,SDRAM中还采用了数据掩码(DataI/OMask,DQM)技术。通过DQM,内存可以控制突发传输中是否屏蔽某一个存储单元的读写动作。传统的DQM由北桥控制,每个信号针对一个字节。上一页下一页返回6.2内部存储器SDRAM官方规定,在读取时,DQM发出两个时钟周期后生效;而在写入时,DQM立即生效,因此,如果不需要读出某一个存储单元,那么输出该单元的前2个时钟周期将DQM设为高电平,图6−10中屏蔽了Q2的读出。如果不需要写入某一个存储单元,那么,在DQ输出该单元的时钟周期时,将DQM设为高电平,图6−11中屏蔽了Q2的写入。(2)DDR上一页下一页返回6.2内部存储器SDRAM在时钟的上升沿进行数据传输,一个时钟周期内只传输一次数据;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升沿和下降沿各传输一次数据,因此称为双倍速率同步动态随机存储器(DoubleDateRateSDRAM,DDR)。DDRSDRAM位宽为64位,2.5V工作电压。主要规格有DDR200、DDR266、DDR333、DDR400。DDR内核的频率只有接口频率的1/2,即DDR400的核心工作频率为200MHz。DDR芯片的读时序关系如图6−12所示,写时序关系如图6−13所示。上一页下一页返回6.2内部存储器图6−13中,写入存储单元时,DQS信号由外部控制电路提供给DDR芯片。(3)DDR2DDR2(DoubleDataRate2SDRAM)与DDR内存技术都是在系统时钟的上升/下降沿进行数据传输的,但DDR2内存的DQS采用差分信号,预读取能力更高,可以进行4位数据读预取。DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内部控制总线4倍的速度运行。DDR2内存采用1.8V电压,与DDR相比,功耗更低,发热量更小。DDR2内核的频率只有接口频率的1/4,即DDR2−400的核心工作频率只有100MHz。上一页下一页返回6.2内部存储器DDR内存通常采用薄型小尺寸封装(ThinSmallOutlinePackage,TSOP)芯片封装形式,这种封装形式可以很好地工作在200MHz上,但当频率更高时,过长的管脚会产生很高的阻抗和寄生电容,这会影响它的稳定性。这一特性带来了频率提升的难度,因此DDR内存的核心频率很难突破275MHz。而DDR2内存采用细间距球栅阵列(Fine−PitchBallGridArray,FBGA)封装形式,管脚较短,提供了更好的电气性能与散热性,有利于内存的稳定性与工作频率的提升。(4)DDR3上一页下一页返回6.2内部存储器DDR3的DQS也是采用差分信号,在系统时钟的上升/下降沿进行数据传输。和DDR2相比,DDR3(DoubleDataRate3SDRAM)的工作电压更低,只有1.5V;预读能力更强,达到8位预读。DDR3内核的频率只有接口频率的1/8,即DDR3−800的核心工作频率只有100MHz。表6−3对比了DDR3、DDR2、DDR和SDRAM四种类型的内存。(5)DDR4DDR4相比DDR3,最大的区别有三点:16位预取机制(DDR3为8位),同样内核频率下,理论速度是DDR3的两倍;更可靠的传输规范,数据可靠性进一步提升;工作电压降为1.2V,更节能。上一页下一页返回6.2内部存储器此外,DDR4还增加了DBI(DataBusInversion)、CRC(CyclicRedundancyCheck)等功能,让DDR4内存在更快速与更省电的同时,也能够增强信号的完整性、改善数据传输及储存的可靠性。DDR4的工作频率目前可达2133~3200MHz。3.SPD芯片串行存在探测(SerialPresenceDetect,SPD)是一个8针的256字节的电可擦写可编程只读存储器芯片。该芯片位于内存条的正面的右侧,记录着内存的速度、容量、电压与行、列地址带宽等参数信息。SPD的内容一般由内存模组制造商写入。在计算机启动过程中,BIOS读取SPD中的信息,自动配置MCH中相应的工作时序与控制寄存器,如果没有SPD,就容易出现死机和致命错误的现象。上一页返回6.3辅助存储器6.3.1硬盘概述硬盘是微机系统最重要的外部存储器。硬盘的类型有传统机械硬盘(HardDiskDrive,HDD)、固态硬盘(Solid-StateDisk,SSD)和混合硬盘(HybridHardDisk,HHD)。其中HDD采用磁性碟片组来存储信息,SSD采用半导体芯片存储信息,而混合硬盘HHD集成了传统硬盘和半导体芯片组,实现了HDD和SSD的联合存储,集中了二者的优点。世界上第一块硬盘是1956年IBM生产的System305,整个硬盘由50个直径为24in,表面涂有磁浆的盘片组成,容量仅为5MB。下一页返回6.3辅助存储器PC机中使用的硬盘由硬盘片、硬盘驱动电动机和读写磁头等组装并封装在一起,称为温彻斯特盘(Wenchester)。1984年,IBM在AT机中引入了新的驱动和控制一体的硬盘驱动器,称为ATAttachment(ATA)。随后在1986年,Compaq在Deskpro386中引入硬盘驱动器,称为IDE(IntegratedDriveElectronics)。IDE接口可以连接硬盘和光驱,连接成本低、兼容性好、容易安装使用,很长一段时间是最为普及的磁盘接口,目前已被SATA接口所取代。20世纪70年代,StorageTek公司开发了第一个固态硬盘驱动器。上一页下一页返回6.3辅助存储器早期固态硬盘价格高昂、性能不稳定,和传统硬盘相比没有优势,应用十分有限。世界上第一款固态硬盘出现于1989年,当时只限应用于医疗、工作及军用市场等特殊场合。目前固态硬盘普遍采用SATA−2、SATA−3和PCI−E接口等。6.3.2HDD原理和主要技术指标1.HDD工作原理传统机械硬盘包含一组磁盘片,每个磁盘片有两个磁盘面,磁盘面按照上到下的顺序从0依次编号,每个盘面均有一个磁头与之对应,有几个磁盘面就有几个磁头。磁盘面上的磁道按外到里的顺序从0依次编号,最外侧为0磁道。上一页下一页返回6.3辅助存储器磁道按圆弧段分为扇区,扇区字节数为固定大小的值,数值大小必须得到操作系统的支持,格式化扇区的典型尺寸为512B、1024B和4096B。扇区是最小的读写单位,每个扇区中的数据作为一个单元同时读出或写入,扇区从1开始编号。0磁道是硬盘上非常重要的位置。硬盘的主引导记录区(MainBootRecord,MBR)就保存在0磁头0柱面1扇区,主要用来存放硬盘主引导程序和硬盘分区表,其中硬盘主引导程序占用446字节,硬盘分区表(DiskPartitionTable,DPT)占用64字节,最后两个字节(55AA)标志为分区结束标志。如果MBR被破坏,硬盘无法工作。上一页下一页返回6.3辅助存储器硬盘工作时,同轴的数张盘片高速旋转,磁头在驱动马达的带动下在磁盘上做径向移动,进行寻道、定位,找到指定数据区域后,再进行写入或读出工作。同一时刻,所有磁头都位于相同的柱面上,数据读写按照柱面进行,即磁头读写数据时,首先在同一柱面内从0磁道开始操作,依次向下在同一柱面的不同盘面进行操作。2.HDD主要技术指标传统机械硬盘的主要技术指标如下。(1)容量(Volume)容量越大越好,常用单位为GB和TB。影响硬盘容量的因素有单碟容量和碟片数量。上一页下一页返回6.3辅助存储器单碟容量越大,碟片数量越多,则硬盘容量越大。(2)转速(RotationalSpeed)这一指标指示硬盘电动机主轴的转速。常用单位为r/min(RotationPerMinute,转/分钟),如转速为7200r/min,表示硬盘的主轴转速为每分钟7200转。市场上常见的硬盘为5400r/min或7200r/min。(3)时间参数①平均寻道时间(AverageSeekTime):是指读取数据时,磁头移动至指定磁道所用的时间,单位为毫秒(ms)。目前主流硬盘的平均寻道时间一般在9ms左右。上一页下一页返回6.3辅助存储器②平均潜伏时间(AverageLatencyTime):又称作平均等待时间,指当磁头移动到数据所在的磁道后,等待指定数据块继续转动到磁头下的时间,即硬盘转半周所需要的时间,一般在2~6ms。这个指标和转速密切相关,同一转速的硬盘的平均等待时间是固定的。③平均访问时间(AverageAccessTime):是指磁头开始移动到找到指定数据的平均时间,平均访问时间=平均寻道时间+平均等待时间+数据读取时间。此时间指标越短越好,一般在11~18ms。(4)缓存盘上的缓存容量越大越好,但缓存容量越大越贵。当前主流硬盘缓存容量约64MB。上一页下一页返回6.3辅助存储器(5)硬盘的数据传输率数据传输率(DataTransferRate)也叫吞吐率,表示磁头完成寻道和等待,到达指定数据位置后,硬盘读写数据的速度。硬盘的数据传输率有两个参数:①突发数据传输率(BurstDataTransferRate):又称作外部传输率(ExternalTransferRate)或接口传输率,即微机系统总线与硬盘缓冲区之间的数据传输率。这个参数和硬盘接口类型及硬盘缓冲区容量大小相关。②持续传输率(SustainedTransferRate):又称作内部传输率(InternalTransferRate),它反映硬盘缓冲区未用时的功能。上一页下一页返回6.3辅助存储器这个参数与硬盘的转速相关。(6)接口类型硬盘接口是硬盘与主机系统间的连接部件,用作在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,它直接影响着硬盘所支持的最大外部数据传输。常见的硬盘接口包括IDE、SCSI、SATA等。6.3.3ATAPI标准IDE是指把硬盘控制器与硬盘盘体集成在一起的硬盘驱动器。IDE接口最初是专为硬盘而设计的,由于IDE接口的低成本和易用性,包括光驱、磁带机等,也逐步使用了IDE接口。上一页下一页返回6.3辅助存储器ATAPI是ATAttachmentPacketInterface的缩写,这个标准是为了解决在IDE/EIDE接口上连接多种设备而制定的,几乎所有的IDE/EIDE接口都支持ATAPI。实际上,IDE接口的正式名字就是ATAttachment(ATA)。1.ATA总线ATA接口连接器是一种40针或者80针连接器,针脚间距0.1in(2.54mm),通常有“键控”,以防止安装时颠倒方向。IDE电缆的长度不能超过0.46m(18in)。另外,如果硬盘使用UDMA模式4(66MB/s)或模式5(100MB/s),必须使用一种特殊的高质量80线电缆。上一页下一页返回6.3辅助存储器与40线电缆相比,80线电缆增加了40线,增加的40条线全部连接到电缆中的地线,目的是降低数据和控制信号传输时的电磁干扰。ATA接口除了少数几个引脚外,几乎所有的信号都是采用TTL电平。一般40线的电缆连接器没有颜色标示,而80线的电缆上的颜色标示规定了连接关系。如图6−15所示,ATA电缆和硬盘接口中黑色连接器负责连接主IDE设备(设备0),蓝色连接器连接主板,中间位置的连接器连接从IDE(设备1)。每根IDE连接电缆都可以接两个设备,如连接两个硬盘,根据硬盘连接的位置来决定主盘和从盘,设备0位置为主盘(Masterdriver),设备1位置为从盘(Slavedriver)。上一页下一页返回6.3辅助存储器如果只安装了一个硬盘,它将响应来自ATA控制器的所有命令。如果安装了两个硬盘,则两个硬盘都能接收到来自系统的命令,ATA控制器在命令中指定了命令是发送给主盘还是从盘的,最终只有一个硬盘会响应这个命令。图6−16给出了40针IDE接口示意。ATA接口主要引脚信号见表6−4。除了硬盘之外,其他遵循ATAPI标准的设备都可以连接到IDE连接器上,如光盘驱动器CD−ROM(只读CD)、DVD−ROM(只读DVD)、CD−R(可写CD)、CD−RW(可重复写CD)、DVD−R(可写DVD)、DVD−RW(可重复写DVD)等,一般都采用IDE接口,可以和硬盘一起或者单独连接到ATA控制器上。上一页下一页返回6.3辅助存储器2.ATA接口及其发展最初IDE只是一项把控制器与盘体集成在一起的硬盘接口技术。随着IDE/EIDE得到的日益广泛的应用,全球标准化组织将该接口自诞生以来使用的技术规范归纳为硬盘标准,这样就产生了ATA(AdvancedTechnologyAttachment)接口标准。ATA是一个关于IDE的技术规范族。ATA接口从诞生至今,共推出了7个不同的版本,分别是:ATA−1(IDE)、ATA−2(EIDEEnhancedIDE/FastATA)、ATA−3(FastATA−2)、ATA−4(ATA33)、ATA−5(ATA66)、ATA−6(ATA100)、ATA−7(ATA133)。(1)ATA−1上一页下一页返回6.3辅助存储器ATA−1是基于标准的16位ISA总线的子集,诞生于1986年。这个接口能支持一个主设备和一个从设备,ATA−1采用CHS编址,每个设备的最大容量只有504MB。(2)ATA−21996年发布的ATA−2在ATA−1的基础上进行改进,称为EIDE(EnhancedIDE),增加了PIO−3、PIO−4这2种DMA模式。ATA−2支持28位的LBA寻址,硬盘的最高传输率提高到16.7MB/s。(3)ATA−3上一页下一页返回6.3辅助存储器ATA−3并没有提高IDE接口的速度,主要是引入了密码保护机制及S.M.A.R.T(Self-MonitoringAnalysisandReportingTechnolog)技术。硬盘监测磁头、磁盘、马达等的运行情况,与历史记录及预设的安全值进行分析、比较。当出现异常情况时,会自动向用户发出警告。S.M.A.R.T对硬盘潜在故障进行有效预测,能提高数据的安全性。(4)ATA−4ATA−4也叫UltraATA/33,在支持UltraDMA技术的硬盘上有DMA控制器,采用总线主控方式进行数据传输。上一页下一页返回6.3辅助存储器UltraATA可以非常有效地消除电磁干扰,ATA−4规范还增加了UltraDMA2模式(33.3MB/s),它可以在PIO0~4和DMA0~2模式下工作。ATA−4中还使用了冗余校验技术(CRC),主机与硬盘在进行数据传输的过程中,随数据发送循环的冗余校验码,提高了数据传输的可靠性。(5)ATA−5ATA−5也叫UltraATA/66,增加了UltraDMA3模式(44.4MB/s)和UltraDMA4模式(66.6MB/s)。通过提高时钟频率将数据传输速率提高了一倍,从ATA−4的33.3MB/s提高到66.6MB/s。上一页下一页返回6.3辅助存储器时钟频率的提高,增加了电磁干扰,因此,必须使用一种新的40针脚80芯的电缆。(6)ATA−6ATA−6也叫UltraATA/100。它增加了UltraDMA5模式,最大传输率达到了100MB/s。支持48位的LBA寻址。(7)ATA−7ATA−7就是UltraATA/133。它增加了UltraDMA6模式,最大传输率达到了133MB/s。它是并行ATA(PATA)的最后一个版本(ATA−1到ATA−7都称为PATA),其传输速率已经达到了传输速度的极限。上一页下一页返回6.3辅助存储器突破这种由电缆属性、连接器和信号协议等各方面制约产生的技术“瓶颈”十分困难,新型的硬盘接口标准SATA应运而生。新一代的主板上只保留很少的IDE接口,甚至没有保留,新的存储设备也不再采用IDE接口,IDE接口被SATA替代,但是二者的编程模型兼容。因此,本章仍然以IDE作为编程对象介绍ATA接口的编程模型。6.3.4ATA接口的编程模型1.扇区的编址模式计算机在飞速发展,硬盘的容量也在急剧地增加,在历史上曾多次出现硬盘的容量限制问题,问题的产生与硬盘结构、BIOS和操作系统等密切相关,本节主要讨论扇区的编址模式,以及由此引起的硬盘限制问题。上一页下一页返回6.3辅助存储器如图6−17所示,硬盘的结构由一组共轴的盘片组成,每个盘片都有两个面,每个面都有对应一个读写磁头。即N个盘片的硬盘有2N个面,对应2N个磁头(Heads),从0,1,2,…,nH开始编号;每个盘片上相同编号的磁道形成柱面(Cylinders),有多少个磁道,就有多少个柱面,磁道号就是柱面号,从外至里编号为0,1,2,…,nC;每个磁道又被分为若干个扇区(Sector),扇区大小通常固定编号,从1开始编,为1,2,3,…,nS。硬盘形成nC×nH×nS个扇区,0柱面0磁头1扇区是整个硬盘的第1个扇区。柱面数、磁头数和扇区数这三个参数能唯一确定磁盘上的数据区域,采用这种方式对磁盘进行寻址,也就是CHS(Cylinder/Head/Sector)寻址。上一页下一页返回6.3辅助存储器在ATA−1接口时代,由于IDE/ATA和BIOS的磁盘中断服务程序(INT13H)用于表示柱面、磁头和扇区的二进制位数不一致,因此,满足上述两个标准的设备在配合使用时,只能采用最小定义规范,即用4个二进制位表示磁头号,用10个二进制位表示磁道号,用6个二进制位表示扇区号。通过BIOS结构转换(Geometrytranslation)解决了504MB容量的限制后,由BIOSINT13H支持的CHS位数引发的硬盘容量限制问题凸显。上一页下一页返回6.3辅助存储器之后由于磁盘容量一直在突破中,业界开始放弃古老的CHS寻址模式,采用了新的LBA(LogicalBlockAddressing)逻辑块寻址模式。LBA编址方式中,扇区的地址就是这个扇区的序号。LBA的扇区编号从0开始,如0柱面0磁头1扇区的序号为0。编址的二进制位数有两种:28位地址和48位地址。现代计算机可以通过BIOS设置选择编址模式。LBA编址模式和CHS编址模式之间可以相互转换。在UNIX、Windows等操作系统中,硬盘的寻址方式是在内存中建立一个地址包,地址包里面保存的是LBA地址,如果硬盘支持LBA寻址,就把LBA地址直接传递给ATA接口,如果不支持,操作系统就把LBA地址转换为CHS地址,再传递给ATA接口。上一页下一页返回6.3辅助存储器2.PATA接口的传输模式PATA接口传输模式主要包括PIO模式和DMA模式两种。PIO模式即可编程I/O模式(ProgrammingInput/OutputModel),这种模式由CPU执行IN/OUT指令访问ATA控制器的数据端口,将数据从硬盘读出或者写入硬盘。数据传送率不高,数据传送过程中CPU被占用。采用PIO模式时,不使用数据缓冲区,每次传送2个字节,16位数据,最快达到16.7MB/s的传输率。在DMA(DirectMemoryAccess)模式下,数据的传送在ATA控制器的端口和内存之间直接进行,不需要通过CPU,因此能使CPU的负担减轻,数据传输率也能进一步提高。上一页下一页返回6.3辅助存储器单字DMA每次传输8位,多字DMA每次传输16位。表6−6为各种PIO和DMA模式的传输速率,从表中数据可以发现数据传输率依赖于传输模式,但DMA的数据传输率不一定比PIO方式的高。所有模式中,PIO0最慢。如表6−6中查到PIO2模式,一个传送周期是240ns,即每次传输16位数据(2个字节)需要240ns,可以计算出传输速度为:2B÷240ns=0.0083B/ns=(0.0083×109)B/s=(8.3×106)B/s=8.3MB/s上一页下一页返回6.3辅助存储器对于UltraDMA,它在脉冲的上升沿和下降沿都可以传输数据,因此,在一个传送周期内,它可以完成2次数据传送,每次传送16位,即一个周期传送32位数据。6.3.5ATA设备寄存器对硬盘及其他ATA设备的操作需要用到很多ATA控制器的寄存器,包括命令寄存器、状态寄存器、数据寄存器、设备控制寄存器、高位柱面寄存器、低位柱面寄存器、扇区数寄存器、扇区号寄存器、设备/磁头寄存器、错误寄存器、特征寄存器等。ATA寄存器除了数据寄存器为16位以外,其他的寄存器都为8位。上一页下一页返回6.3辅助存储器1.可编程ATA寄存器地址早期PC机中一般集成了2个ATA控制器,主板上可以找到2个IDE插槽(Primary和Secondary,主/次)。这些ATA控制器所使用的地址一般也是固定的。主控制器使用1F0H~1F7H和3F6H,而从控制器使用170H~177H和376H。每一个控制器上可以连接两个ATA设备(Master和Slave),这两个设备共用同样的I/O地址,在设备/磁头寄存器中用DEV位来区分。端口地址可以在“设备管理器”中,用菜单“查看”→“按类型排序资源”,展开“输入/输出(I/O)”,就可以看到图6−18所示的IDE控制器所占用的I/O地址。上一页下一页返回6.3辅助存储器图6−18中主从IDE控制器的I/O地址与ATA设备寄存器的关系见表6−7。2.可编程ATA寄存器定义可编程ATA寄存器包括数据寄存器、扇区数寄存器、扇区号寄存器、扇区地址寄存器、设备/磁头寄存器等。各个可编程ATA寄存器所对应的片选信号和地址信号及操作见表6−8所示。(1)数据寄存器数据寄存器(DataRegister)为16位寄存器,用于在主机和设备之间传输数据块,可以进行读写双向操作。上一页下一页返回6.3辅助存储器只有当状态寄存器中的DRQ为1时,数据寄存器中包含的才是有效的数据。(2)状态寄存器状态寄存器(StatusRegister)包含了设备的当前状态信息。格式如图6−19所示。①D7:BSY为忙标志(Busy)。当BSY为1时,状态寄存器中其他位都无效。当控制器访问命令寄存器组时,BSY位常被设置为1,此时主机不能读或者写其他寄存器。②D6:DRDY指示设备是否准备好(DeviceReady)。上一页下一页返回6.3辅助存储器DRDY为1,表明设备现在可以执行一个命令。当驱动器被使用时,此位保持为0,直到驱动器再次空闲,准备接受新命令。③D5:DF为DeviceFault,硬盘ATA设备不支持这一位,所以硬盘编程时,DF位总为0。④D4:DSC为DeviceSeekComplete,DSC位为1,表明磁头定位已经完成,即磁头已经到达所要访问的柱面。⑤D3:DRQ为DataRequest,DRQ位为1,表明设备已经准备好在主机和设备之间传输数据,主机现在可以从硬盘缓冲区中读取512字节或更多(如READLONGCOMMAND命令)的数据,同时向主机发INTRQ中断请求信号;此时主机不能向命令寄存器中写命令码。上一页下一页返回6.3辅助存储器⑥D2:CORR为CorrectedData,该位总是为0。当一个可修改的读错误发生时,该位被置为1,但数据传输不会因此中断。⑦D1:IDX代表Index,当索引标记通过读写头,并且存储介质发生改变时,该位置1。⑧D0:ERR代表是否有错误(Error)。ERR位为1,表明在执行前面一条命令的过程中出现了错误。错误的具体类型保存在错误寄存器(ErrorRegister)中。设备状态寄存器记录了硬盘驱动器执行命令后的状态。读该寄存器会清除未得到响应的中断请求信号。上一页下一页返回6.3辅助存储器为了避免发生这种情况,一般通过读取辅助状态寄存器(即读设备控制寄存器的地址,如读03F6H)来获得状态,这两个寄存器的内容完全相同。读取辅助状态寄存器内容不会清除中断请求信号。(3)设备控制寄存器设备控制寄存器(DeviceControlRegister)的结构如图6−20所示。①D7:HOB=1时,表示要将扇区数的15~8位、LBA的31~24位、39~32位、47~40位写入扇区数寄存器、扇区号寄存器、低位柱面寄存器和高位柱面寄存器。写入完毕后,应将HOB设为0。②D6~D3:保留,可以设置为0。上一页下一页返回6.3辅助存储器③D2:SRST=1,表示复位该IDE通道。④D1:nIEN=1,表示禁止设备产生中断;nIEN=0,允许设备产生中断。⑤D0:始终为0。(4)命令寄存器命令寄存器(CommandRegister)为8位。ATA标准中规定了命令码,常用的命令码见表6−9。写命令寄存器时,会立即触发执行写入的命令,因此,写入命令前,要先将执行命令所需要的参数写入相关的其他寄存器,即先将执行命令的初始化操作做好,最后再写入命令。上一页下一页返回6.3辅助存储器(5)辅助状态寄存器辅助状态寄存器(AlternateStatusRegister)的地址和设备控制寄存器的地址相同,但操作不同。如假定设备控制寄存器地址为03F6H,则写这个地址时,写入的是控制字;读这个地址时,读出的是状态字。该寄存器的内容与状态寄存器相同,但从该寄存器中读数据时,不会清除未响应的中断请求,而读后则会清除未响应的中断请求。因此,程序设计中常用读这个辅助状态寄存器的方式获取状态字。(6)扇区数寄存器上一页下一页返回6.3辅助存储器扇区数寄存器(SectorCountRegister)为8位,包含需要读写的扇区的个数。在28位LBA模式或者CHS模式下,一次命令可以传送1~256个扇区。写入0代表传送256个扇区。在48位LBA模式下,一次命令可以传送1~65536个扇区。48位LBA模式下需要写入2次参数,HOB位置为0时,写入低8位,HOB位置为1时,写入高8位。16位全部为0时,代表要传送65536个扇区。如果在传输过程中产生了错误,该寄存器会将尚未传输的扇区数目保存下来供读取。(7)设备/磁头寄存器设备/磁头寄存器(Device/HeadRegister)的结构如图6−21所示。上一页下一页返回6.3辅助存储器①D7和D5:保留。②D6:LBA等于0时,表示使用CHS寻址模式;等于1时,表示使用LBA寻址模式。③D4:DEV等于0时,表示选择drive0(主盘);等于1时,选择drive1(从盘)。④D3~D0:低四位作为磁头编号,支持24=16个磁头。(8)扇区地址寄存器设备/磁头寄存器和高位柱面寄存器(CylinderHighRegister,8位)、低位柱面寄存器(CylinderLowRegister,8位)、扇区号寄存器(SectorNumberRegister,8位)一起用于表示扇区地址。上一页下一页返回6.3辅助存储器扇区地址的表示有CHS模式、28位LBA模式、48位LBA模式三种组合。3种模式下,各寄存器的使用情况见表6−10。使用CHS模式时,设备/磁头寄存器中的LBA位设为0,将磁道号、扇区号、磁头号写入相应寄存器;使用28位LBA模式时,LBA位设为1,将LBA的28位写入上述4个寄存器;使用48位LBA模式时,LBA位设为1,分两次写,先将LBA的高24位(3个字节)分别写入前面3个寄存器,再写入LBA的低24位。(9)错误寄存器上一页下一页返回6.3辅助存储器错误寄存器(ErrorRegister)为8位,包含设备上一次执行命令后的结果信息。错误寄存器的内容与操作相关。常见有诊断方式和操作方式两种情况。例如,诊断方式下,硬盘控制器在加电、复位或执行驱动器诊断命令以后的工作方式下时,错误寄存器的内容为诊断代码,诊断代码结果见表6−11。操作方式下,错误寄存器中各位的意义与执行的命令有关。当状态寄存器中的ERR位为1时,错误寄存器格式如图6−22所示。①D7:BBK(BadBlockDetected),如果在所访问的扇区磁头上发现了错误标记,该数据位将被置1,表示坏扇区。上一页下一页返回6.3辅助存储器②D6:UNC(UncorrectableDataError),出现了不可改正的数据错误,一般是不能被ECC纠错码修正的错误。③D5:MC(MediaChange),自最后一次存储访问结束后,存储介质将被另一个所替代,这个信号用于通知主机采用合适的方式(如重置软件缓存器),使用新的传输介质。④D4:IDNF(IDNotFound),ID所代表的扇区号没找到,可能是扇区的地址区被破坏,或者是访问的扇区不存在。⑤D3:MCR(MediaChangeRequested),该信号用于通知主机,存储介质改变。然后主机应该立即采取基本措施,执行MEDIAEJECT或者DOORUNLOCK命令。上一页下一页返回6.3辅助存储器⑥D2:ABRT(AbortedCommand),表示命令是否中止。⑦D1:TK0NF(Track0NotFound),0磁道出错,这通常是一个十分严重的错误。⑧D0:AMNF(AddressMarkNotFound),地址标志没找到,表示无法找到所访问扇区的数据区。(10)特征寄存器特征寄存器(FeatureRegister)为8位,一般不使用这个寄存器,设置为00H。只有使用SetFeatures、SMARTFunctionSet和FormatUnit这三个命令时,才会用到这个寄存器。上一页下一页返回6.3辅助存储器(11)驱动器地址寄存器驱动器地址寄存器(DriverAddressRegister)只有ATA−1标准可使用,ATA−2以上的版本均未用到。6.3.6硬盘读写方式1.PIO方式读写硬盘PIO方式访问硬盘时,硬盘扇区数据的读写完全由CPU通过IN、OUT指令执行,假定一个扇区占512字节,则PIO方式下,每次读取2字节,则读一个扇区需要256次I/O操作。每次I/O操作包括一个IN指令和一个内存写操作,即CPU先读取16位数据到AX中,再将16位数据写入内存中。上一页下一页返回6.3辅助存储器写硬盘扇区时,每次I/O操作则包括一个内存读操作和一个OUT指令,整个数据传输过程CPU均被占用。(1)PIO方式读硬盘的参考步骤①复位硬盘。具体操作为设置设备控制寄存器中SRST(D2)=1,然后再设置为0。②读状态寄存器,直到检测到BSY(D7)=0,DRQ(D3)=0,表示可以接收新命令,继续第③步。为了避免等待时间过长,可以在程序中设置假定在规定时间内检测到BSY一直为1,即硬盘一直忙碌,设置超时错,退出程序。③完成读命令的参数设置,并写入读命令。上一页下一页返回6.3辅助存储器首先要根据待读的扇区位置,设置特征寄存器、扇区数寄存器、扇区号寄存器、低位柱面寄存器、高位柱面寄存器和设备/磁头寄存器,见表6−12。然后向命令寄存器写读命令(20H),写入命令后,立刻执行。此时硬盘驱动器设置状态寄存器的BSY(D7)=1,并将扇区数据读入硬盘内部的缓冲区。硬盘驱动器读取完一个扇区后,自动设置状态寄存器的数据请求位DRQ(D3)=1,并清除BSY(D7)=0。当DRQ(D3)=1时,自动向主机发中断请求。④查询方式下,读取状态寄存器。判断状态字内容,当DRDY(D6)=1,DSC(D4)=1,DRQ(D3)=1,BSY(D7)=0,且没有出错(ERR(D0)=0)时,继续第⑤步。上一页下一页返回6.3辅助存储器如果有错误,进入错误处理。如果是ECC错误,再读取一次,否则退出程序运行。中断方式下,如果主机响应中断请求,则在中断服务程序中读取状态寄存器,对状态字进行判断。注意,为了不清除未处理的中断请求,中断方式时,需要读取辅助状态寄存器内容,同时,驱动器自动清除INTRQ中断请求信号。⑤从数据寄存器读取扇区内容。主机通过数据寄存器读取硬盘缓冲区中的数据到主机缓冲区中,每次读2个字节。当扇区为512个字节时,需要执行256次读取操作。当一个扇区数据被读完,扇区计数器减1,如果扇区计数器不为0,进入第④步,否则进入第⑥步。⑥当所有的请求扇区的数据被读取后,命令执行结束。上一页下一页返回6.3辅助存储器(2)PIO方式写硬盘的参考步骤①复位硬盘,设置设备控制寄存器中SRST=1,然后再设置为0。②读取状态寄存器,等待其BSY(D7)=0,DRQ(D3)=0,表示可以接收新命令,继续第③步。如果规定时间内检测到BSY一直为1,即硬盘一直忙碌,设置超时错,退出程序。③完成写命令的参数设置,并写入写命令。根据要写的扇区位置,设置特征寄存器、扇区数寄存器、扇区号寄存器、低位柱面寄存器、高位柱面寄存器和设备/磁头寄存器,完成写命令参数设置,然后向命令控制器写入写命令30H;上一页下一页返回6.3辅助存储器硬盘驱动器设置状态寄存器中DRQ(D3)=1,此时主机通过数据寄存器把指定内存中的数据传输到缓冲区;当缓冲区满,或主机送完一个扇区512字节的数据后,驱动器设置状态寄存器中的BSY(D7)=1,并清除DRQ(D3)=0;缓冲区中的数据开始被写入驱动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届福建省夏门市金鸡亭中学初三质量检测试题(二)物理试题含解析
- 2026年江苏省苏州市星湾中学普通中考第一次模拟考试物理试题理试题含解析
- 2026年大学大一(口腔医学)口腔临床技能基础测试题及答案
- 2026年大学大一(计算机应用技术)办公自动化高级应用阶段测试试题及答案
- 常见症状护理评估与干预
- 护理诊断的急诊护理
- 患者安全与个体化护理措施
- 护理健康教育中的健康教育可持续发展
- 护理伦理与医疗创新的关系
- 2026年医疗废物管理员题库
- 建筑工程施工现场卫生保洁制度(3篇)
- 冷作工工艺展开放样
- 电信网络诈骗防范指南
- JB-T 7072-2023 水轮机调速器及油压装置 系列型谱
- DZ∕T 0213-2020 矿产地质勘查规范 石灰岩、水泥配料类(正式版)
- 高教版【中职专用】《中国特色社会主义》期末试卷+答案
- 2023年土地复垦技术标准
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- 《低压配电设备安装与调试》课件 劳动 学习任务2 挂壁式配电箱安装与调试
- 2024年高考语文标点符号的基本用法大全(新标准)
- 多组学技术在生物研究中的应用
评论
0/150
提交评论