精华内容
下载资源
问答
  • 本 节 书 摘 来 自 华 章 出 版 社 《计算机存储与外设》 一 书 中 的 第2章,第2.3节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著, 沈 立...

    本 节 书 摘 来 自 华 章 出 版 社 《计算机存储与外设》 一 书 中 的 第2章,第2.3节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著, 沈 立 肖晓强 王苏峰 译, 更 多 章 节 内 容 可 以 访 问 云 栖 社 区 “华 章 计 算 机” 公 众 号 查 看。

    2.3 DRAM

    大多数PC机和工作站使用DRAM实现主存储器,它已经在高性能计算机的发展中起到关键作用,表现为其工作参数不断发展变化且出现新的变种。我认为DRAM在不久的将来仍然是主流。本节首先描述DRAM的工作原理,接着介绍它的时序,然后介绍DRAM系列,最后描述它们如何在微机中使用。


    6b36942c1e42321f198197a26439cd5c51308941

    动态随机访问存储器(dynamic random access memory,DRAM)的工作原理很简单。数据以存储在晶体管中的静电电荷的形式保存。当材料不带电时,材料中的电子数等于质子数;即电子的负电荷抵消了带正电的质子,因此不带电。当材料充电后,电子要么被添加要么被移除。如果有太少的电子,则电性为正;如果有太多的电子,则电性为负。在微小的电容上有极性还是没有极性这个信息可以用来存储一个比特。人们所要做的就是为电容充电、放电以及检测其是否带电。

    图2-16显示了场效应晶体管的基本原理,它是大多数逻辑设备的基本元件。掺杂(doped)硅芯片上的一个微小区域有两个端子分别连到电池正、负极。掺杂这个词意味着在硅芯片中掺入杂质使电子流可以自由通过硅(纯硅中电子受到束缚而不能穿过硅材料)。

    图2-16a中,两个端子之间有电流流动。


    e9d025adff6fe9c8e7832defb8cd1fb2c1364122

    图2-16中,在硅区域上方的导电体被标记为门极。假设其与图2-16a中两个端子之间硅通道中的电子流是绝缘的。

    在图2-16b中,对门极充上负电荷。电荷产生静电场,穿过硅通道。因为门极上电荷是负的,故通道中的电子被排斥(同性电荷相斥,异性电荷相吸)。图2-16b中,所充的负电荷十分强大,通道处于夹断(pinched)状态,没有电流通过该通道。

    通过对门极充负电荷还是不充负电荷,可以控制流过通道的电流。所有门极都是通过这种方式来切断电子流的。它还可用于DRAM以及包括EPROM、EEPROM和Flash EPROM在内的大部分时间为读的存储器。

    如果将负电压加到门极上以便对其充电,从而使晶体管关闭。当撤去电压时,晶体管仍然不能导通直到电荷消除。如果门极与通道绝缘,消除电荷的时间可能需要几毫秒。

    在电容中保存电荷是形成单晶体管DRAM位元的基础。在门极上充电使晶体管处于两种状态之一。图2-16c展示了一个单晶体管DRAM位元的结构。

    保存的电荷最终会泄漏,存储在位元中的任何数据都会丢失,使所有位元处于相同的状态。为了使保存的电荷具有记忆效应,实际的存储器必须每隔几毫秒就读取晶体管的状态然后将其写回晶体管。这种操作称为刷新(refreshing)。

    第一代DRAM存储器的刷新是一场噩梦,需要复杂的电路和定时器,因此开销很大。只要可能,设计师就会使用SRAM来避免使用DRAM进行系统设计带来问题。今天情况已经好转,因为将刷新逻辑设计在DRAM芯片中使DRAM的刷新要求大大简化。


    726eb4d86eb4f3b5227e1c6b0156d55a56cead63

    图2-17给出了DRAM的结构。乍一看,它似乎与静态存储器芯片非常相似,除了两个低电平有效的控制输入。除了片选外,还有行地址选通(row address strobe)和列地址选通(column address strobe)。DRAM接口不同于静态RAM接口的一个重要方面是:动态存储器使用多路复用地址总线(multiplexed address bus)来减少地址引脚的数量。即使用两步来获得地址。例如,一个28位地址的256Mb芯片,有14位地址输入,28位的地址必须是连续两个14位值的合并。在存储器访问的开始,该芯片提供14位的行地址以给出所需位元所在行,然后通过相同的引脚给出第二个14位的列地址。通过信号来获得行地址,使用与信号来获得列地址。然后才能访问给定行列位置的位元。


    883eee0767fa41297a9d86afc5581b84f6d18cc1

    将地址总线从28位减少到14位需要两个阶段来锁存地址。由行地址选通锁存14位行地址,列地址选通锁存14位列地址。地址复用以及和的选通控制由片外逻辑提供。

    图2-18给出了DRAM存储器的内部结构。最需要注意的一点是其中包含不止一个存储阵列。商用芯片通常由4个存储阵列或存储体组成。

    图2-19给出了某4MB的DRAM的结构,其地址为A00~A21,由32个1Mb的DRAM芯片构成。来自计算机的地址线A02~A21可以选择220个32位的字。DRAM存储子系统使用多路复用器从地址总线上选择行或列地址。控制单元根据CPU的控制信号产生DRAM的、和信号。

    介绍了DRAM的基本概念后,下一步将介绍它的时序,因为时序是理解所有DRAM后期变化的关键。


    499629328e76db755866d8c122cb6b1ce6acb255

    2.3.1 DRAM时序

    本节首先介绍20世纪80年代经典的DRAM时序,所有现代DRAM时序均可由其变化得到。虽然DRAM存储位元是由一个晶体管构成这一属性基本没有变化,了解DRAM时序的基本属性是为了理解,DRAM是如何一代一代变得更快的。图2-20给出一个简化的DRAM芯片的读周期时序图。假定1Mb的芯片组织具有220个地址,每个地址1位。


    28097c851652f2b8281e198c88f811b8beea728c

    来自CPU的20位地址A00~A19被送到一个多路复用器,要么选择A00~A09(行地址)要么选择A10~A19(列地址)。CPU地址多路复用器(MPLX)的10个输出连接到DRAM地址输入A0~A9。

    图2-20中的读周期从A持续到B,最短持续时间为tRC,即读周期时间(read cycle time)。静态存储器的存储周期与访问时间相同;动态存储器的存储周期比其访问时间要长。因为在当前访问结束后,在两次访问之间,DRAM需要执行被称为预充电(pre-charging)的内部操作,因此不能开始新的访问。


    dae2ef41b7e1ae9c6587b45c2fbddf43fb3fa8af

    读周期的第一步是向芯片输入来自CPU的低10位地址A0~A9。然后,在点C,行地址选通(row address strobe,)变为低电平有效,将行地址保存到芯片内部的锁存器。一旦获得行地址,从处理器来的低位地址就是多余的,周期剩余部分不再需要它。相比之下,SRAM的地址必须在整个读或写周期中保持稳定。

    来自CPU的高10位地址接着被交给存储器的地址输入,然后列地址选通(column address strobe,)在E点变为低电平有效,锁存列地址。此时,所有20位地址都已交给存储器,系统可以改变地址总线的内容,因为DRAM已获得了地址。

    一旦变为低电平,根据地址选中的存储单元将数据放到其数据输出端口,允许CPU读取。读周期结束时,变为高电平无效,数据总线被关闭,变为悬浮状态。和可以同时、也可以次序任意变为高电平。无论谁先变为高电平都无所谓,只要其他的时序满足要求。要使对DRAM的解释更容易理解,需要将它分为几个部分,并从地址引脚的作用开始讨论。

    详细的DRAM地址时序如图2-21所示。行地址必须在信号下降沿到来之前稳定至少tASR时间(即行地址建立时间)。由于tASR的最小值可能是0ns,此时行地址的建立时间为零,不需要在信号下降沿到来之前有效。最坏情况下,它必须在信号下降沿到来之前有效。当已经变为低电平,行地址必须稳定tRAH时间不改变,即行地址保持时间。保持时间限制了在此之后列地址才可以被多路复用到芯片上的地址引脚上。


    b4b933efff02e20c688092ead96d7bff2d4dbb77

    一旦行地址保持时间已经得到满足,列地址可以复用到存储器的地址引脚,就可以变为低电平。列地址的建立时间tASC通常最小为0ns;即可以在列地址有效的同时变为低电平。变为低电平有效后,列地址必须稳定tCAH时间才可以改变,这就是列地址保持时间。一旦tCAH已经得到满足,地址总线在当前访问中就没有作用了。

    行地址必须在行地址选通信号下降沿到来之前保持有效tASR时间,且在下降沿之后保持有效tRAH时间。同样,列地址必须在列地址选通信号下降沿到来之前保持有效tASC时间,且在下降沿之后保持有效tCAH时间。和下降沿之间的最小时间为tRCD,该时间由行地址保持时间、多路复用器切换时间和列地址建立时间组成。

    图2-21中的一个重要参数是tRCD,即由其他参数决定的行列选通时间。tRCD的最小值由行地址保持时间、多路复用器切换时间和列地址建立时间决定。tRCD的最大值为伪最大值(pseudomaximum),此时超出了存储器的访问时间。tRCD(max)、tRAC和tCAC之间的关系为:tRCD(max)=tRAC-tCAC。

    通过和就可以锁存地址,芯片数据引脚上就会出现数据,如图2-22所示。为清晰起见,图2-22中只画出了、以及数据信号。假设信号在读周期内为高电平,地址建立时间、保持时间和所有相关的参数都得到了满足。


    129f722b3f1dc14fd962f985c4ef11160e44318e

    下降沿之后,数据引脚上的数据在tRAC时间后开始有效,这就是行地址选通后的访问时间。可见,行访问时间只有在其他条件都满足了之后才能实现。列地址选通具有两个功能:锁存存储阵列相应的列地址,以及打开数据输出缓冲。下降沿之后,数据至少在tCAC时间内不可用,这是列地址选通后的访问时间。

    当在读周期结束后变为高电平时,数据总线被关闭,并悬浮tOFF时间(输出缓冲关闭延迟)。在读(或写)周期结束时没有作用。可以在之前或之后改变,只要它的时序要求得到满足。

    数据在下降沿到来以后保持不多于tCAC时间,且在下降沿之后保持不多于tRAC时间。周期结束时,数据总线缓冲在最早的和上升沿tOFF时间内被关闭。

    DRAM的读取周期时序图需要考虑的最后一个问题是,行和列地址选通的时序要求,如图2-23所示。和用来锁存地址、控制内部操作和三态缓冲器。


    04874c829767fbdc96b86e61f6e13da2bc1ae85e

    图2-23中的基本参数是tRC,即读周期时间,这是连续的存储器周期之间最短的持续时间。在每个读周期中,选通必须至少保持tRAS时间(行地址选通脉冲宽度)。典型的最大值为10 000ns,这是由于设备需要刷新且不能出现问题导致的,该时间是微处理器读周期的多倍。在失效后,它必须保持高电平至少tRP时间,这是行地址选通预充电时间(动态存储器芯片的相关内部操作)。时序的最后一个约束为相对的保持时间tRSH。必须在有效后保持低电平tRSH时间。

    列地址选通时序的要求与行地址选通的类似。必须有效至少tCAS时间,在下一个下降沿到来之前必须失效至少tCRP时间,且从当前下降沿开始至少保持tCSH时间有效。

    写周期时序
    DRAM存储器的写周期比相应的读周期更复杂,因为对其和数据输入信号提出了严格的要求。通过对读周期时序图的介绍,这里不需要重复介绍相同的过程。图2-24给出了简化的DRAM存储器写周期的时序图。这是一个提前写周期(early write cycle),因为信号在变为低电平之前有效。某些DRAM的写周期中,信号是在变为低电平之后才有效的。读与写周期中的、以及地址输入的时序要求是相同的。

    写命令信号,由信号的下降沿锁定,建立时间为tWCS。一旦有效,为低电平的最小持续时间为tWP,在下降沿之后至少tWCH时间后才允许失效。信号必须在信号上升沿到来之前至少有效tRWL时间,且在信号上升沿到来之前至少有效tCWL时间。写周期中的关键事件是信号的下降沿,因为它锁存信号和向DRAM输入的数据。

    数据在信号的下降沿写入存储器。数据输入时序的需求简单直接,只涉及3个参数。写入存储器的数据必须在信号的下降沿到来之前有效tDS时间(数据建立时间),且在其后继续维持tDH时间(数据保持时间)。


    966592a6f4635adc7cbe4773c88f29d02b21e91f

    2.3.2 DRAM技术的发展

    前面已经介绍了基本的DRAM。下面开始介绍页(page)模式、半字节(nibble)模式、静态列(static column)模式等改进的DRAM。这些变化仍然利用行列地址输入多路复用,同时克服了访问之间预充电造成一些限制。

    页模式允许快速访问给定行中的任意列位置,如图2-25所示。假设某1Mb的DRAM处于一个正常的读或写周期中。首先给定10位行地址,信号变为低电平有效将其锁存,从而选中一行。其次为列地址,然后是信号有效,接着访问给定位置。页模式通过给出连续的脉冲,且在每个选通信号下降沿锁存新的列地址来连续访问同一行中的数据。


    4bfaf83f65e3600057c10e71e8907b8567998c20

    连续页模式访问中,列访问周期是tPC,这大约是原访问周期时间的一半。页模式允许对单一行地址的突发访问,比基本DRAM周期时间要好。页模式对从连续地址访问一批数据(例如,成块数据传输或光栅扫描图形处理)来说特别有用的。页模式及其他突发模式可用符号4:2:2:2来描述,这意味着第一个访问延迟为4个周期,以后的数据元素只需要经过两个周期即可获得。今天,页模式DRAM已经过时(在大多数DDR2和DDR3之前的DRAM变种中也是这样)。

    半字节模式DRAM具有一些页模式的特点但速度更快。半字节模式访问开始时与普通DRAM访问相同,都是先获取行地址再获取列地址。如果选通信号重复出现,则对连续4个位置进行读(或写)操作而不需要提供新的列地址。

    图2-26给出了半字节模式的时序。不同于页模式,半字节模式只是在突发访问开始时锁存单一的列地址。接下来的访问顺序(使用循环出现的)以00、01、10、11、00、10的顺序出现。DRAM自己在内部自动产生序列地址。例如,如果访问位置0x0 1234,然后循环出现的,将访问的位置为0x0 1234,0x0 1235,0x0 1236和0x0 1237(按顺序访问)。第一个半字节模式访问时间与读或写周期的时间相同。后续访问时间要比普通的访问周期的一半还要少。


    dffc3f4e9606e8aba3b6c2b0f96485c79bf2c636

    随着系统速度加快,DRAM制造商开发了降低DRAM访问时间的其他方法。扩展数据输出(extended data out,EDO)是DRAM页模式的变种,它比页模式DRAM具有更短的页周期时间。EDO设备在变为高电平时不关闭其输出。数据在下降沿有效,所以设计师可以使用信号来选通数据。

    1. SDRAM

    快速页模式DRAM和EDO DRAM都是DRAM的变种。DRAM技术史上第一个根本变化发生在1997年前后,出现了与以前的DRAM具有不同接口的同步DRAM(SDRAM)。1998年,SDRAM占有了DRAM存储器50%的世界市场。SDRAM使用系统时钟进行同步,采用了更复杂的接口可以从处理器接收已编码命令。例如,SDRAM使用组合控制信号来对命令进行编码,如读、写或预充电。SDRAM访问时间与DRAM系列其他成员的访问时间类似;然而,它的突发访问时间却相当短。

    控制信号和指令在时钟的上升沿锁存,这样做简化了系统的设计。SDRAM中的控制寄存器定义了它的操作参数,如突发长度(即每个读或写周期访问的字数)。也就是,SDRAM是一种操作参数可以面向特定系统进行调整的可编程装置。

    SDRAM具有多个存储体可以独立操作。图2-27描述了SDRAM的读周期。在时钟的上升沿获取命令和行地址(周期15ns意味着频率为66.67MHz)。列地址在下一个时钟上升沿读取。数据在读周期开始60ns后出现,类似DRAM的访问时间。但是,接下来的3个元素每隔15ns就会出现一个。


    17c3c606f6d931e3fbd74da18e6cbcf80ce4d582


    a2345bff14eef4c3602ad3a6cf7124711961ceff

    2. DDR DRAM

    DDR DRAM或者double-data rate SDRAM,(双数据速率SDRAM),与传统SDRAM的内部存储机制稍有不同。DDR DRAM、SDRAM之间的区别在于其接口。DDR SDRAM在时钟的上升沿和下降沿都执行数据访问;即它以时钟频率两倍的速度提供数据。图2-28给出了DDR的读周期时序。一旦开始进行突发访问,数据在时钟的每个边缘都可出现。参数CAS延迟(CAS Latency,CL)以时钟周期为单位定义了从列地址选通有效至数据有效之间的时间。此参数是反映DDR性能的主要参数。其他3个与DRAM相关的参数是RL(读延迟)、AL(附加延迟)和BL(突发长度)。


    eb84085592857590565388f91a36f1601fe8ecb2

    3. DDR2与DDR3 DRAM

    每种技术的变种如DDR DRAM都有其寿命。DDR风光后由DDR2代替。DDR2风光后就引入了DDR3。现在DDR4还在等着。在微机世界中,每种技术的变种都伴随着新的主板芯片系列为其提供连接到主机CPU的接口。

    与DDR相比,DDR2也是在时钟的上升沿和下降沿传输数据,但其更进一步,可以在每个时钟周期内执行4次数据传输。某个具有64位数据总线以266MHz频率工作的DDR2存储模块能够获得传输数据的峰值速率是64×266×106×4/8=8512MB/s。式中4表明每个周期传输4个数据。数据传输速率是数据值的1/8,因为每次数据传输需要8位。DDR2的最大信息传输速率是1066兆次传输/s。

    DDR2和这个系列的后来成员在某种意义上说是可编程的,这是由于它们具有参数配置寄存器,可由主机系统装载操作参数。例如,可以定义DDR2 SDRAM如何进行刷新(前面说过,每个位元都需要周期性地更新,存储的数据需要再写一遍)。

    DDR3是数据传输速率加倍原理的进一步扩展,相比DDR2其数据传输率又翻了一番,可以在每个时钟周期内进行8次访问。在增加数据传输率的同时,DDR3模块可以允许单个芯片的容量高达8Gb。Samsung在2009宣布第一款使用50ns技术的4Gb DDR3 DRAM,这仅仅在Intel刚成立时发布其1024位的DRAM后的40年。那时的人们很难想象,存储芯片的容量将在他的一生中以超过400万倍的速度增长。DDR3存储器内部由8个存储体而不像DDR2那样由4个存储体构成。增加存储体的个数可以增加交叉的程度。DDR3内核速度与DDR2的稍有不同。

    DDR3-1600模块工作在200MHz,其周期时间为5ns,执行速度为1066兆次传输/s,对应的数据传输率为12800MB/s。图2-29给出了DDR2突发读操作的时序(来自Samsung DDR2 SDRAM Device Operating & Timing Diagram manual)。


    410572a200b00f4906f52e632a339951f9d7b2d1

    动态存储器设计的一个重要趋势是降低工作电压。DDR2工作在1.8V,第一代DDR3工作在1.55V,后来的DDR3工作在1.35V。工作电压从1.8V降至1.35V可以降低功耗25%。

    DRAM技术通过向运行多任务的复杂操作系统以及处理音频和视频的多媒体应用提供大容量、经济的、直接访问的存储器,使得PC世界蓬勃发展。下面会介绍只读存储器,它虽然只对PC世界有适度的影响,但对普适计算(例如,MP3播放器和数码相机)有更大的影响。


    6892b6cebf3402c7230444741b6522de3bb706aa

    4. DDR4

    2011年,正当DDR3以新的设计替换DDR2并越来越受欢迎的时候,DDR4出现了。Samsung是第一家提供DDR4模块的公司。新的DDR4技术比DRAM家族中以前的成员更快且能效更好。它采用新的电路设计技术,并且将电压从DDR3的1.55V降至1.2V以减少功耗。自Intel 1103 DRAM需要3股电源(+5V、-5V和12V)开始,已经走过了漫长的道路,该模块的数据传输率仅为2133比特/s。

    介绍完主流的读/写存储设备后,在讨论正在兴起的(目前已经出现)未来主存储器支撑技术之前,先介绍一下只读存储器。


    89df47ad21e4b97ca8495116c77ca7b42d1e57cf


    fc8c616a33acf09f27ddbfe548463b3015872684
    展开全文
  • 本 节 书 摘 来 自 华 章 出 版 社 《计算机存储与外设》 一 书 中 的 第2章,第2.2节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著, 沈 立...

    本 节 书 摘 来 自 华 章 出 版 社 《计算机存储与外设》 一 书 中 的 第2章,第2.2节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著, 沈 立 肖晓强 王苏峰 译, 更 多 章 节 内 容 可 以 访 问 云 栖 社 区 “华 章 计 算 机” 公 众 号 查 看。

    2.2 主存储器

    这一节将介绍直接访问存储器(immediate access store)或者主存储器(primary memory)。没有低成本、高速的存储器,实现复杂的操作系统和应用(例如Photoshop)是十分困难的。本节首先介绍静态存储器(SRAM),因为它在动态存储器(DRAM)之前出现且比DRAM更容易理解。实际上,Cache存储器通常由SRAM实现。

    2.2.1 SRAM

    图2-4说明了SRAM概念上是如何工作的。两个反向器端端相联构成一个环。门1的输入是A,其输出B=,这又是门2的输入。门2的输出是A,其中A===A,这也是门1的输入。门1的输入是由门1的输入经过反馈产生的。这是一个自主维持存储器(self-sustaining memory)。无论初始给门1何种输入,其反馈都会使这种状态得到维持。


    89c9586813c10cef15331f247111924d968ccaa4

    图2-5显示了如何将图2-4中的两个交叉耦合的反向器变成实际的静态存储位元。作为开关的两个晶体管连接到反向器电路的左边和右边,用于访问存储单元(右边的阴影插图显示了晶体管有3个端子;在控制栅极的信号电平决定了另外两极之间的路径是打开还是关闭)。当读/写信号线是低电平,这两个晶体管都处于打开状态,数据信号线Data和都没有被反向器驱动(即被控制)。


    78b4cc8af0f9daf33dd6e194dcce223ceb371efb

    数据写入位元时,将要写的一位数据及其取反值分别放在Data和信号线上,然后发出读/写信号。反向器节点A和B被修改为所期望的值,当读/写信号为低电平时保持写入的数据。当进行读操作时,首先发出读/写信号,使反向器的输出与数据信号线连接,然后读取A节点的电平信号即可。


    81272f21c5276fa2517f435a70b05d72162d7fd9


    1c10007038eea48287e3df757ccd16cf84b11412

    因为一个反向器需要由两个串联的晶体管来实现,所以每个静态位元需要6个晶体管存储一位数据。实际的静态存储器为m×n的位元阵列。访问位元时需要指定其行和列地址。因此,一个n位的静态存储单元需要6n个晶体管加上用于行列地址解码以及执行各种信号控制与保持操作所需的晶体管。

    有些静态存储器每个位元只需使用4个晶体管。无论怎样,n位静态存储器位元需要4n或6n个晶体管。而动态存储位元只需要一个晶体管,这意味着动态存储器的密度至少可以达到静态存储器的4倍。图2-6给出了由6个晶体管构成的静态存储位元的电路图。图中用插图的形式将DRAM位元与其进行对比。静态存储器的速度比动态存储器的速度要快。


    027c98896689f644842b47bb3f371387153c2f0f

    半导体技术的进步总是在继续。2001年,日本富士通实验室的研究人员公布了一款由铟镓砷化物(与常见的半导体材料硅对比是一种很专业的物质)构成的单晶体管静态存储位元的设计,可以工作在77K(-196℃)。这样的温度对当前的实际应用来说都太低。它可以通过量子隧道(quantum tunneling)效应来存储数据。一些其他技术,如纳米管,可能是未来高密度、低功耗存储器的可能竞争者。

    一种实用的半导体SRAM芯片由独立的存储位元阵列构成。图2-7给出了一个16位的存储阵列(真正的静态存储阵列可能包含224个位元)。4位存储器地址A0~A3被分为行、列地址。二–四译码器对两位行地址进行译码后选中一行。

    同时,列译码器选中4列之一。每行和每列的交叉处是存储位元,根据信号的状态进入读或写周期。这个阵列说明存储器操作是以前面介绍的逻辑部件的形式进行的。存储阵列的实际实现将使用图2-6中所示的存储位元。


    12c9f7e780ff8bc8d683cecdaacd81b28d7d51ca
    1. SRAM存储系统

    下面来看看如何使用静态存储器。RAM芯片被组织成一位宽、半字节宽(4位)、字节宽(8位)或16位宽的设备。图2-8给出了一个容量为512Kb的SRAM,它有64K字,每个字8位。它有16条地址线A0~A15,可以选择216=64K个位置,它还有8条数据线D0~D7可以在一个读周期内将8位数据交给处理器,也可以在一个写周期内从处理器接收8位数据。


    d97edb719ba75592117c81f3e6ec0c9862ef77e4

    访问SRAM之前需要在地址总线上给出一个地址,由一系列0和1的组合定义访问位置,然后要么在读周期中将数据交给数据总线,要么在写周期中从数据总线读取数据。

    SRAM的操作通过两个信号和控制。决定了芯片是参加读周期(=1)还是写周期(=0)的操作。低电平有效的片选信号确定该芯片是参加读或写访问,还是保持空闲状态。一般情况下,为高电平,此时信号被忽略。当为低电平时,芯片参与读还是写操作取决于信号。在读周期中,可以控制存储器三态缓冲器的输出(参见《计算机组成原理》第2章)。

    图2-9给出了SRAM的时序图(timing diagram),说明在读操作期间事件发生的顺序。时序图表明,为保证正确的存储器操作,信号必须保持的最小时间,并指出活动从开始到结束之间可能的最大持续时间。图中带箭头的线表示因果系;例如,当在C点变低(原因)使数据总线驱动器在E点被打开(结果)。


    7505e4998d3401c15ef351395d3ce663aa57b5e1

    假设最初(图的左边)为高,在整个操作期间保持1状态。在图2-9中没有表示出来。

    在图2-9中的A点,地址总线通过改变状态为当前读操作提供一个有效地址。这种状态的变化由地址线的交叉部分表示。一旦地址信号稳定下来,片选信号在C点指出开始进行存储器访问。由于为高电平,故为读操作周期。

    为高与为低的效果导致存储器把数据放到存储器的数据总线上。数据总线结束悬浮状态,数据在E点开始出现在总线上。然而此时数据仍然是无效的,因为数据的访问时间尚未开始。

    在F点,地址信号变为有效后,经过tACC秒,数据可以被处理器读取。在D点,处理器将变成高电平以完成读周期,在点G数据总线再次变成高阻的悬浮状态。从B点改变地址到数据在G点发生变化的时间称为数据保持时间(data hold time)。数据保持时间定义为地址和(或)控制信号发生改变后,数据总线上数据的保持时间。某些系统需要正的(非零)数据保持时间以保证数据可以被可靠地获取。

    2.写周期

    图2-10给出了一般的SRAM写周期的时序图,它比相应的读周期更复杂(这情况对所有的存储设备来说都存在)。每个芯片的具体实现不同,但基本原理是相同的。要存储的数据先放到数据总线上,然后和变为低电平以启动写周期。


    673f11abfdaeb4cbed999f5cd4a8f316f778d785

    图2-10中,地址总线在A点开始有效直到写周期在B点结束。假定在C点变为低电平。此时,仍然为高电平,数据总线处于悬浮状态。

    访问在C点开始,但对RAM而言,只要为高电平就表示是读周期。因此,在点G,RAM开始用读出的数据驱动数据总线。当然,此时的数据是无效的,因为数据的访问时间尚未开始。

    在E点,处理器使变为低电平表明当前周期是写周期。存储器终止已经开始启动的读周期,并在点H停止用读出的数据驱动数据总线。可见,存储器在点G和H之间给出了假的数据。系统设计师必须保证,此时没有其他设备使用总线。

    在点I,处理器将要保存的数据放到数据总线上。写周期的关键点为F点,此时信号的上升沿表示开始捕获数据。数据必须在的上升沿之前有效,并保持到低电平变为高电平之后,此段时间为数据保持时间(data hold time)。真正SRAM的设计以或中的任何一个变为高电平来终止写周期。

    介绍完了SRAM,自然就应该介绍DRAM。但是在这之前,还应该顺便介绍影响所有存储器系统设计的两个问题,无论是静态/动态、读写/只读存储器。这两个问题就是字节/字控制以及地址译码的使用。

    3.字节/字控制

    20世纪70年代,微处理器都是按字节宽度设计的,数据总线为8位宽。地址总线为16位,使用A15~A00这些地址线可以选定216=64K个字节。当出现了16位处理器后,情况变得更复杂,此时需要访问字节和16位的字(记住,存储器是以字节编址的,无论字长是1个、2个、4个还是多个字节,都可以访问存储器中的一个字节)。

    由于微处理器设计者既希望访问单个字节又希望具有访问16位的能力,故他们实现了字节控制机制允许访问单个字节或者选中的字。一种典型的机制是使用地址总线选中一个16位的字(或32位或64位),然后使用字节控制线(byte control line)选中该地址处的一个或多个字节。图2-11给出了一种可能的实现,通过地址线A15~A01来选中215个16位的字。


    b87e77cb7534d444125debca740d6ced383bc2df

    地址线A00没有使用,因为每个地址总是选中两个字节;即地址为0,2,4,6,8,…,215。两个字节选通信号BS0和BS1控制选中字的奇数字节还是偶数字节,或者同时选中两个字节(参见表2-2)。


    43b9203a207283304087aa240211036981b8f0d3


    67934628e71c09bacf8d51f98c09498b5956838a
    4.地址译码

    本节将简介地址译码技术,它是将地址映射到处理器物理地址空间中的方式。这里使用《计算机组成原理》第2章中的概念(二进制、十六进制以及简单的逻辑)。因为地址译码多是嵌入式系统设计师而不是计算机设计师要考虑的事情,有些读者可能希望忽略这部分内容。

    在所有可能中最好的情况是,计算机具有n位地址总线可以访问2n个字,同时存储部件有n位地址输入和2n个存储器位置。实践中,实际系统可能有几种不同的存储设备连接到处理器的总线。如果计算机处理器有32位地址总线,可访问232个字节,其存储模块(存储器的基本元件为一个芯片,而存储模块是一个包含多个存储芯片的电路板)提供229个字节(512MB)的存储;即需要232/229=23=8个模块来满足处理器的空间需求。此时需要一种将存储模块的地址空间映射到处理器地址空间的方法。称为地址译码器的电路用来检测对特定存储模块的访问,一旦CPU产生的地址落在某存储模块的地址空间中,则将该模块对应的信号变为有效。

    图2-12说明了为什么需要地址译码。假设处理器使用地址线A00~A31访问4096MB的地址空间;即232=4096MB。该系统采用3个512MB的存储模块,每个模块由地址线A00~A28访问。


    a08832945b85cda80766022767f8bdffbc55ccde

    图2-13显示了这3个512MB的模块是如何映射到处理器的存储空间中的。虽然已将模块映射到存储空间相邻的区域,但没有规定物理存储器必须被映射到相邻的块。当然,如果存储区域不连续,程序员或操作系统在加载程序和数据时就需要特别小心。模块1分配的地址空间为0000 0000到1FFF FFFF,模块2的为2000 0000到3FFF FFFF,模块3的为4000 0000到5FFF FFFF。当然,每个512MB的块都是由A00~A28访问。


    57f7ad95323453f61c95f397bc34792f1468a614

    图2-14显示了如何设计执行存储模块映射到处理器地址空间的逻辑。3个模块中的每个模块的29个地址线都与处理器A00~A28连接在一起。用从处理器那里剩下的3根地址线A29~A31选择某存储模块,即这些地址线产生的信号可以选中对应的存储模块。

    第一块存储器512MB空间的地址为0000 000016至1FFF FFFF16。该模块在A31A30A29=000时被选中。同样,第二块存储器空间的地址为2000 000016至3FFF FFFF16,该模块在A31A30A29=001时被选中。

    这里不再进一步探讨地址译码,因为这是系统设计者和电子工程师要考虑的问题。地址译码可以用来匹配存储部件和CPU的地址空间,它还可以做得更多。例如,可以在多个存储器模块之间实现切换来保证任务在物理上是彼此分离的(一种内存管理的形式)。


    d68f3741b1aa616bc1e435cfc29709ef79195e54

    2.2.2 交叉存储器

    如果存储器的访问时间为tacc,则不能减少其访问时间。但是可以通过交叉(interleaving)来减少有效存取时间(effective access time)。若某存储位置在T0时刻开始访问,则数据在tacc时间后变为有效。在同一存储模块内另一个位置处的数据至少要再等tacc时间后才能获取。但是,可以同时访问其他的存储模块;即并行访问多个存储器模块。

    图2-15说明了这种交叉的效果,图中两个存储体并行排列。如果在T0时刻访问第一个存储体,数据在tacc时间后变为有效。如果在T0+tcyc(其中tcyc为时钟周期时间)时刻访问第二个存储体,则第二个数据元素在T0+tcyc+tacc时间后有效。如果tcyc<tacc,则可以比在没有交叉时更早地完成第二次访存任务。只有在一个存储体访问数据时能够产生另一个存储体中操作数的地址时,有效的交叉才能实现。


    9e796f845aff6b9fb1363f0a245cbdd48521bf1b

    存储交叉技术被称为低位交叉,其中存储地址的低位用来选择存储体。假设处理器有32位地址总线和64位数据总线。地址位A03~A31用来选择存储器中的一个字,地址位A00~A02(通过字节选通信号)用来选中当前字中的一个或多个字节。使用地址位A04执行存储体选择,所有奇数号地址的数据字从一个存储体中取出,而所有偶数号地址的数据字从另一个存储体中取出。如果使用两个地址位来实现交叉,则可以实现4个存储体并行访问。在现代微机中,双通道或三通道内存的原理同交叉的原理相同,允许同时访问2~3个DRAM存储模块。


    5a7876fa3e40634f301d35f378cd75060b748aa2

    下面将介绍DRAM的工作原理。通过几代DRAM设备的不断发展,它们基于相同的基本工作原理,但使用不同的技术来降低平均访问时间。下面将介绍基本的DRAM,讨论其不同的变种,如页模式DRAM、半字节模式DRAM、EDO存储器、SDRAM和DDR DRAM。

    展开全文
  • 本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第2节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译,...

    本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第2节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    1.2 Cache存储器的性能

    在判断加入Cache是否划算之前,需要知道增加Cache对计算机性能会产生多大的影响。这里首先介绍一个简单的模型,忽略实际Cache系统的细节:每个系统的Cache都不完全一样。特别是,该模型假定每个Cache项都为一个字宽,而实际Cache存放的是一个块(包含若干个字)。

    Cache系统的主要参数就是命中率(hit ratio)h,它定义为所有访问操作在Cache中命中的概率,由系统操作统计结果决定。访问局部性的作用使得命中率通常较高,基本保持在98%左右。本章的后续部分将讨论影响命中率的因素以及使h保持较高值的方法。

    在计算Cache对处理器性能的影响之前,需要引入一些术语:
    主存储器访问时间     tm
    Cache访问时间          tc
    命中率                        h
    失效率                        m
    加速比                        S

    加速比(speedup ratio)是没有Cache时存储系统的访问时间与具有Cache时系统访问时间的比值。对于N次访存,如果没有Cache,则总的访问时间为Ntm。

    对于N次访存,如果有Cache,总访问时间是N(htc+mtm)。失效率m,定义为m=1-h,因为访问要么命中要么不命中。因此,具有Cache的系统的加速比为:


    70d1e4baa647819fbf32013fa11e1a3a1c06ef38

    该表达式假定所有操作均为访存操作,这是不正确的,因为处理器也要完成内部操作。后面还会谈到这一点。如果不关心主存储器和Cache的绝对速度的话,可以引入一个参数,k=tc/tm,它定义了Cache相对主存储器的速度比例。由h和k定义的加速比为:


    710ac29b7bec687b53255462cae1cb011df103b0


    5152eb06e72dc99ee10b9d9fd8e92d242ca6725b

    图1-6显示了当k=0.2时加速比S与命中率h的关系曲线。正如大家理解的那样,当h=0时的加速比为1,因为所有访存操作都访问了主存储器。当h=1时,所有访存操作都在Cache中进行,因此加速比为1/k。

    从图1-6中得出的一个最重要的结论是,加速比对命中率敏感。只有当h接近90%,Cache的性能影响才十分显著。该结论与常识是一致的。如果h低于90%,访问主存储器的时间占较大比例,快速访问Cache带来的效果对系统性能的影响不大。

    上述加速比S的公式适用于存储器和Cache可并行工作的系统,因为它假定每个存储周期开始时,同时(并行)访问主存储器和Cache;也就是,访存地址同时交给Cache和主存储器。如果命中,终止对主存储器的访问。如果Cache不响应,数据将从主存储器中返回。


    b4992f8b779dc1d46e4a97e615989da091eb8d5b

    实际微处理器能够获得的加速比并不如上述公式得到的那样乐观。真实微处理器的操作速度由其时钟周期、每个存储器访问所需时钟周期数以及由于访问存储器而处于等待状态的时间确定。加快Cache的速度并不如减少等待时间重要。即使使用十分快速的Cache,也不可能将访存时间减少到比不包含等待状态的一个总线周期还要短。

    看看下面这个例子。
    微处理器的时钟周期时间              10ns
    每个总线周期所需最小时钟周期数  3
    存储器访问时间                             40ns
    由于访存带来的等待时间         2个时钟周期
    Cache访问时间                              10ns
    由于访问Cache带来的等待状态      0
    这些数据表明,存储器访问需要(3个时钟周期+ 2个等待状态)×10ns=50ns,访问Cache需要3×10ns=30ns。该计算过程并不包含主存储器和Cache的实际访问时间。加速比为:


    96be0eead1f53a6cf0c6e0659d94ae646ac0afb3

    假设平均命中率为95%,根据上式计算的加速比是1.61(即161%)。该结果比直接拿Cache和主存储器的访存时间来计算得到的结果(即2.46)要小。
    以上公式省略了不需访问存储器的内部操作的影响。下面看看德克萨斯仪器公司操作说明书中给出的既考虑非存储器访问操作又考虑访问Cache和主存储器中的数据时,微处理器的平均周期时间tact。


    92d07e6e7cb67ed776ed34eab4201e1210be69b5

    式中:
    Fint为处理内部操作指令所占比例(以70%为例);
    Fmem为访存操作指令所占比例(以30%为例);
    tcyc为处理器的时钟周期时间(以10ns为例);
    twait为由于Cache失效导致的等待时间(以50ns为例);
    tCache为Cache访问时间(以5ns为例);
    h为命中率(以0.9为例)。

    把给出的实际参数的例子代入公式计算,可得:


    efa888b81710604033bad83e5cefcae1786b9a9c

    即使是这个结果也没有给出全部事实,因为实际系统不会一次仅在Cache和主存储器间移动一个字的数据。Cache基本存储单元的容量不只是一个字,而是一块(line),它通常包括4~64个字节。当发生失效时,从存储器中会传输一块数据到Cache。因此,失效开销不仅仅是调入一个数据,而是包括一块数据。

    此时,也许可以对前面提到的存储墙进行讨论。假设某系统以周期为单位的指令平均执行时间Timeavc为:


    bfc1683c630ebfc31eddd889b330ebd9a6247873

    式中,CPUuse表示非访存指令所占比例(以80%为例);tCPU表示这类指令执行需要的时钟周期数(假定为1);Memoryuse表示访存指令所占比例;tmemory表示这类指令执行需要的时钟周期数(假定为10)。如果命中率h为0.95,则:
    Timeave = 0.80·1 + 0.20·0.95·1 + 0.20·(1-0.95)·10 = 0.80 + 0.19 + 0.10 = 1.09个周期

    经过一段时间,处理器的速度提高10倍,Cache的速度提高5倍,DRAM的速度提高2倍。CPU、Cache与DRAM的访问时间之比不再是1∶1:10,而是1∶2∶50。此时,
    Timeave = 0.80·1 + 0.20·0.95·2 + 0.20·(1-0.95)·50 = 0.80 + 0.38 + 0.50 = 1.68个周期

    假设第二种情况下,时钟周期时间是第一种情况的1/10,加速比为10.9/1.68=6.488。这表明时钟和CPU的速度快了10倍,而吞吐量只增加了6倍。

    如果考虑Cache的写失效,可以重新审视Cache的性能。


    8a41df475a88a4413aa403d87296474436ed6e32


    f7e189df0be4dcb74b159613ae2af7396abbc9d3


    637d495185ba1d2881bc11f564b22959a24d17de
    展开全文
  • 本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第1.5节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译...

    本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第1.5节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    1.5 虚拟存储器和存储器管理

    存储器管理(Memory Management)是操作系统和硬件的切合点,它关注的是管理主存储器和磁盘。从许多方面看,存储器管理是一种扩展的Cache技术。

    计算机刚出现时,计算机生成的地址对应物理或真实存储器中操作数的位置。即使在今天,各种控制器中的8位微处理器通常不使用存储器管理技术。在PC和工作站等高性能计算机上产生的逻辑地址(logical address),并不是操作数在存储器中的物理地址(physical address)。考虑指令LDR r2,[r3],其作用是将由r3寄存器指向的存储器位置中的内容送入r2寄存器,假定寄存器r3的内容是0x00011234。数据可能来自基于DRAM的主存储器中0x00A43234这个地址。将地址00011234翻译成00A43234的过程叫作存储器管理(memory management)。在本节中,将解释为什么存储器管理是必要的,它是怎样实现的。

    虚拟存储器(virtual memory)是从光学领域借用的术语,其中虚拟用于描述一种似乎在某个位置的虚拟图像,例如,望远镜可以使处于很远位置的物体看起来好像就在面前一样。虚拟存储空间是逻辑地址空间(logical address space)的同义词,用来描述计算机可以访问的地址空间。具有64位地址和指针寄存器的计算机的虚拟(逻辑)地址空间为264字节,即使它在系统中可能只有2G(231)字节的物理主存储器。

    存储器管理起源于20世纪50年代~60年代,它代表将CPU产生的逻辑地址转化成实际地址(即物理地址)的所有技术。存储器管理允许DRAM和硬盘的物理地址空间无缝地合并到计算机的虚拟存储器空间中。

    1.5.1 存储器管理

    计算机使用如Windows或UNIX这样的操作系统对存储器管理技术进行扩展使用。图1-26给出了一个具有存储器管理单元(memory management unit,MMU)的系统的结构。原则上,操作非常简单:来自CPU的逻辑地址送入MMU,然后被转换为操作数在存储器中的物理地址。将逻辑地址转换成物理地址需要一个查找表(look-up table)。因为将每个逻辑地址都转换成物理地址确实需要非常大的表,因此存储空间通常被分成页(page),每个逻辑页中的地址被转换成物理页中对应的地址。一个页通常为4KB。例如,如果页大小为4KB,处理器有32位地址空间,逻辑地址0xFFFFAC24可能被转换为0x00002C24。


    b6afc826563fd39a1157286f42ae84098102bd21

    处理器逻辑地址空间的大小与指定操作数的寻址方式无关。它也与程序是用高级语言、汇编语言还是机器代码编写无关。在32位的系统中,指令LDR r4,[r6]允许使用4GB的逻辑空间。无论采用何种技术,处理器不能指定4GB(范围从0~232-1)以外的逻辑地址,这仅仅是因为其程序计数器的位数是有限的32位。

    物理地址空间由处理器使用存储器系统中所有的实际地址位置构成。该存储器不是抽象的,是真正实现的。换句话说,系统的主存储器构成物理地址空间。计算机逻辑地址空间的大小由指定地址所需的位数决定,而物理地址空间的大小通常只受其成本限制。

    现在可以看到,为什么微处理器的逻辑和物理地址空间的大小是不同的。更奇怪的是为什么微处理器使用存储器管理,将例如0x00001234这样的逻辑地址转换为物理地址0x861234。存储器管理系统的基本目的如下:

    1)实现对物理地址空间大小超过了逻辑地址空间大小这样的系统的控制(例如,某8位微处理器具有16位地址总线(64KB的逻辑空间)来访问2MB的物理内存)。
    2)实现对逻辑地址空间大小超过了物理地址空间大小这样的系统的控制(例如,某32位微处理器具有4GB的逻辑地址空间,管理64MB的RAM)。
    3)存储器保护,包括防止一个用户访问分配给另一个用户的存储空间的机制。
    4)存储器共享,一个程序可以与另一个程序共享资源(例如,公共数据区或公共代码)。
    5)高效利用存储器,最有效地使用物理地址空间。
    6)将程序员从考虑程序和数据应该位于存储器的何处中解放出来。即程序员可以根据其意愿使用任意的地址,而存储器管理系统会将逻辑地址映射到可用的物理地址。

    一个真正的存储器管理单元可以不必实现上述所有目标(注意前两个目标是互斥的)。第二个目标(即逻辑地址空间大于物理地址空间)对于设计64位系统尤其重要。当针对该问题使用存储器管理时,这就是经常所说的虚拟存储器技术(virtual memory technology)。虚拟存储器几乎就是逻辑存储器的代名词。

    可用物理地址空间小于处理器的逻辑地址空间是由于经济问题所造成的,并一直困扰着主流企业。20世纪50年代末,大型机可使用大的逻辑地址空间,但只能使用2K左右的RAM。英国曼彻斯特大学的一组计算机科学家提出存储器管理技术(现被称为虚拟存储器)来解决该问题。他们将部分的逻辑(虚拟)地址空间映射到可用的物理地址空间,如图1-27所示。该例中,256KB的一段逻辑地址,范围从780000~7BFFFF,被映射到物理存储器范围从00000~3FFFF的区域。只要处理器访问逻辑地址空间中的数据,其地址将被映射到相应的物理地址,一切都很顺利。这里假定从CPU发出的地址将直接(即不改变地)交给系统的地址总线。


    c373c552ece5288b57bb4903f2bfb5e8502d70b2

    当处理器产生操作数的逻辑地址不能被映射到可用的物理地址空间时就会出现问题。曼彻斯特大学采用的解决方案非常简单。每当处理器生成没有物理地址对应的逻辑地址时,操作系统中止当前程序的执行并处理该问题。操作系统从磁盘存储器中取出一块包含所需操作数的块,并把该块放在物理存储器中(覆盖所有旧的数据),然后告诉存储器管理单元,逻辑地址空间和物理地址空间之间存在一个新的关系。换句话说,程序或数据被保存在磁盘中,只有当前需要的部分程序被传送到物理RAM中。存储器管理单元跟踪由处理器产生数据的逻辑地址与该数据在物理存储器中位置之间的关系。整个过程非常复杂,需要在处理器体系结构、存储器管理单元以及操作系统之间进行协调。人们希望看到简单的虚拟存储器系统,但实际这是一场噩梦。


    410b1e885e19d5e99fa1454cbda01f5c96b23955

    1.5.2 虚拟存储器

    虚拟存储器系统有4个作用:支持比物理地址空间更大的逻辑存储空间,实现逻辑地址到物理地址的映射,为逻辑地址空间中运行的任务分配物理存储器,更加方便地建立多任务的系统。

    使用有限的文字就能讨论清楚虚拟存储器的所有话题是不可能的。设计者和程序员组成的团队花费很长的时间来设计虚拟存储器系统,这是因为虚拟存储器的管理不仅复杂而且几乎在支持多用户或多任务操作系统的系统中通常都是各不相同的。本节只对虚拟存储器进行概述。

    1.存储器管理和多任务

    多任务系统通过周期性地在任务之间进行切换以支持两个或多个进程同时执行。显然,多任务处理只有当几个任务同时驻留在主存储器中时才是可行的。如果任务每次运行都必须从硬盘装载,则切换新任务需要的时间将过长。

    图1-28演示了具有两个任务的系统中如何将逻辑地址空间映射到物理地址空间。图中,任务A和B同时驻留在物理存储器中。每个任务都有其自己的逻辑存储空间(例如,程序和堆栈)可以访问位于物理存储空间的共享资源。程序员可以完全自由地为任务的不同组件选择其自身的地址。因此,图1-28中,任务A和B可以访问物理存储器中相同的数据结构,即使它们使用不同的逻辑地址。即每个任务只知道自己与另一个任务共享数据的一个副本。


    5ba146a3d8a02c41abc0f0bf05e8853abff01969

    存储器管理单元将程序员选择的逻辑地址映射到物理存储器空间,而操作系统负责建立逻辑地址到物理地址的映射表。当创建一个新的任务时,将告知操作系统任务对存储器的需求。操作系统搜索可用的物理存储器空间,寻找空闲的存储块并将其分配给任务。可以想象,一段时间后,物理存储器空间可能会变得支离破碎,每个任务占用不同的存储块,以非常复杂的方式交织在一起。一个好的操作系统应该有效地执行存储器分配,不允许物理存储器中存在大量未使用的块。存储器分块的方式取决于存储器映射实现的方式和操作系统。

    存储器映射的一个强大功能是,每个逻辑存储器块可被赋予各种权限。例如,存储器可以是只读、只写、只能通过操作系统或给定的任务访问或在一组任务之间共享。通过确保物理存储器块只能被预先定义的任务访问,可以确保一个任务的执行不会导致另一个任务崩溃。有两种实现存储器管理的基本方式。使用固定大小的存储器块,称为页(page);另一种使用可变大小的存储器块,称为段(segment)。

    2.地址翻译

    存储器管理提供了两种不同的服务。第一种是将逻辑地址映射到可用的物理存储器中。第二种功能发生在物理地址空间耗尽时(即由于数据不在随机访问存储器中,逻辑地址到物理地址的映射已不能完成)。

    图1-29显示了一个页式存储系统是如何实现的。该例使用24位逻辑地址总线和512KB的存储器系统。来自处理器的24位逻辑地址被分成16位的偏移(被直接传给物理存储器)以及8位的页地址。页地址指向处理器当前访问的页(28=256个页中的一个)。逻辑地址的位移量可以访问64KB页中的216个位置上的数据。


    7d72bf8b37c8d4507731b03914b28301f35685f2

    页表包含256项,每一项对应一个逻辑页。例如,在图1-29中,CPU正访问8位逻辑页地址000001112。每项包含3位的页帧地址,是物理地址最重要的3位。该例中,物理页地址为110。逻辑地址从8+16位变成了3+16位,逻辑地址00000111 0000101000110010被映射到物理地址110 0000101000110010。

    虽然在页表中有256个可能的项(每项对应一个逻辑页),物理页地址只有3位,它限制物理页只有8个。因此,随机访问存储器中不同的物理页不能与每个可能的逻辑页相对应。每个逻辑页地址有一位R字段与之相关联表示驻留。如果R位置为1,表示该页当前在物理存储器中。如果R位被清零,对应的页将不在物理存储器中,页地址字段的内容将毫无意义。

    每当产生逻辑地址且与当前逻辑页相关的R位被清除,将发生页故障(page fault)事件。一旦开始访问某个逻辑地址,由于R位被清除表示当前页不在存储器中,当前的指令必须暂停,因为它无法完成。

    典型的微处理器具有总线错误输入引脚,表明存储器访问无法完成。当发生这种情况时,操作系统开始干预处理。虽然CPU试图访问的数据目前不在随机访问存储器中,但它在磁盘中。操作系统从磁盘检索包含所需存储器位置的页,将其加载到物理存储器中,并相应地更新页表。被暂停的指令可以继续执行。

    该过程简单吗?完全不简单。当操作系统从磁盘获取一个新的页,它必须覆盖一个随机访问物理存储器的页。注意,虚拟存储器的一个功能是允许使用相对小的物理存储器来模拟大容量存储器。如果要用新页替换旧页,此时需要一个策略选择替换哪个旧页。经典的替换策略是最近最少使用(least recently used,LRU)算法,最长时间没有被访问的页将被新的页覆盖(也就是说,如果最近没有访问这个页,则在不久的将来也不太可能访问它)。

    LRU算法已在实践中被检验可以很好地工作。不幸的是,如果采用该策略,操作系统必须知道每个页是什么时候被访问的,这需要复杂的硬件(每个页必须在被访问后打上时间戳)。操作系统必须处理的另一个问题是,存储在RAM中和保存在磁盘上的数据之间的一致性问题。如果从磁盘上读取的页只包含程序的信息,它不会在RAM中被修改,因此,重写它不会导致任何问题。然而,如果页的内容是数据表或其他数据结构,它可能在RAM中被改写。在这种情况下,它不能被新的页覆盖。

    在图1-29中,可以看到,页表中的每一项都有一个M位(修改位)。每当页由一个写操作访问,M位被置位。当该页需要被覆盖,操作系统首先检查M位,如果被置位,则首先需要将被改写的页写回磁盘,然后再取新的页。

    最后,当加载新的页后,将修改地址转换表,清除M位,将R位置位(表示该页是有效的),处理器可以重新执行被暂停的指令。

    显然,每次页错误带来的开销非常大。只要页错误比较罕见,系统就可以因为访问局部性而工作正常。多数数据是簇聚在一起的,所以一旦从磁盘中载入一页,大部分要访问的数据都会在该页中找到。如果数据不是有序组织的或有许多不相关的任务,处理器将花费几乎所有的时间用于交换页,系统的有效工作将停顿。这种情况被称为抖动(thrashing)。抖动是指一种频繁访问资源导致计算机性能急剧下降的行为。然而,抖动在很大程度上是指由于需要加载和重新加载页而导致虚拟存储器系统发生故障的情况。

    3.两级表

    图1-29给出的情况在现代高性能处理器中实际不存在。假设一个32位的计算机使用13位偏移(偏移指的是页内地址)访问8KB的页。这使得可以使用32-13=19位来选择219个逻辑页。在快速RAM中不可能构建这样大的页表(注意,相同问题在Cache的设计中也存在)。

    图1-30给出了怎样使用多级(multi level)页表来实现地址转换而不需要大容量的页表。来自计算机的逻辑(虚拟)地址首先被分为19位的页地址和13位的页内偏移。页地址进一步被分为对应第一级页表的10位和对应第二级页表的9位。这两个表分别有210=1024项和29=512项。

    图1-30是个简图,真正的页表包含更多地址转换过程的信息而不仅仅是指针。图1-31给出了PowerPC的地址转换表。

    真正的页表结构包括多个指向其他表的指针。在这种层次地址转换表中,页表项包含指向下一级的指针。链表的终点为实际物理页,包含了MMU所需关于该页的信息。在实践中,典型的存储器管理单元包含的页表描述符可以描述以下信息。


    47547608b129f28bff968e766c0430d656c0f875
    描述符类型

    描述符类型告诉MMU表是否存在下一级。

    写保护位(W)

    表示其指向的页不可写。如果W=1,树中的所有后续级别的写保护位都为1。

    使用位(U)

    该位在建立描述符表时被操作系统初始化为零。当描述符第一次被访问时,MMU自动将其置为1。虚拟存储器系统中,U位用来描述当页需要被替换时,是否要将物理页写到磁盘。

    管理员位(S)

    当该位被置位,所指向的页只能使用管理员方式访问(即操作系统级别的访问权限)。管理员态指的是操作系统运行的状态,具有比用户态更高的优先权。例如,如磁盘这样的I/O设备只能在管理员态下访问。

    全局共享位(SG)

    设置为1时,表示页描述符可以共享,即如果SG=1,系统中所有的任务都可以访问物理页。SG告诉MMU,在页表Cache中只要保持该页的一个描述符。转换旁视缓冲器(translation look-aside buffer,TLB)是一个小的全相联Cache,可以通过同时搜索所有条目实现地址转换。

    写访问级别(WAL)

    通过该描述符指出页的最低优先级。
    读访问级别。由3位组成,用于根据WAL位实现相应的读操作。
    限制域(Limit)。该域为转换表的下一级指出索引(index)值的下限或上限;即限制域限制了下一级表的大小。例如,逻辑地址域为7位,因此具有128项。然而,在实际系统中,在本级可能只有不超过20个页描述符。通过设置Limit为5,可以限制表项为32个而不是128个。

    上/下位(L/U)

    表示Limit位给出的是下限还是上限。如果L/U=0,则Limit域包含索引的无符号上限,下一级表的所有表索引都必须小于或等于Limit域中的值。如果L/U=1,则Limit域包含索引的无符号下限,所有表索引都必须大于或等于Limit域中的值。在这两种情况下,如果实际索引超出最大/最小值范围,将出现Limit违例。层次访问最终得到页描述符用来执行实际的逻辑地址到物理地址的转换。
    逐级访问多级页表(例如,如图1-30所示)产生的页描述符将被用于实际的逻辑地址到物理地址的转换。除了上面给出的描述符外,页描述符可能还有以下的控制位:

    修改位(M)

    指示相应的物理页是否被改写。由于MMU可以将其置位但不会清除,故该位在建立描述符表时被操作系统初始化为零。注意,使用位U在表描述符被访问后被置位,而M位在页被修改后置位。

    锁位(L)

    表示相应的页描述符应规避MMU的页置换算法。当L=1,物理页不能通过MMU替换。因此,可以使用L位来保持地址转换Cache中的页描述符。

    Cache抑制位(CI)

    表明相应的页是否可以被缓存。如果CI=1,那么该访问就不能被缓存。

    本章小结

    使用存储器可以将指令和数据保存在计算机中。由于技术本身的原因和受制造技术发展的限制,目前尚没有某种单一的设备或技术可以满足所有的个人计算机或工作站的需求。简单地说就是:速度很快的存储器价格昂贵,如果便宜的话速度就慢。

    当开发大型计算机用于满足政府、工业以及军事需求时,设计人员很快发现,实际存储器系统的限制可以减少,或者说被屏蔽。的确,可以把不需要的数据存储在慢速的存储器中。用计算机的话说就是,把经常访问的数据保存在快速存储器中,而用慢速存储器实现数据归档。这种想法既简单又有效,对计算机性能产生了重要影响。但另一方面,它在实现起来可不简单。
    计算机中有两种基本类型的存储器:主存储器中的随机访问半导体存储器(通常是DRAM)和磁记录或光存储器等顺序访问的二级存储器。这两种存储器系统使用相似的技术来克服其速度限制:使用Cache存储器(cache memory)来加速主存储器,使用虚拟存储器(virtual memory)来加速二级存储器。Cache存储器和虚拟存储器机制的原理相似,但在细节和实现技术上有很大不同。

    本章第一部分介绍了用来加速主存储器的Cache。相对小容量的Cache(例如,4GB的DRAM使用1MB的Cache)可以显著提高系统的性能。因为数据和指令不是随机访问的,真实的数据和指令表现出时间(temporal)和空间(spatial)局部性,通常CPU需要访问存储器的数据/指令中超过90%的都可以在Cache中找到。如果找不到,必须从存储器中读取数据,并将数据副本放入Cache。

    本章研究了Cache的几个内容,如它是如何组织的;即物理存储器中的数据是如何被映射到容量较小的Cache中的。虽然直接映射Cache设计最简单,本章已经说明了它具有的局限性会降低其效率。本章还说明了如何利用它来构建组相联Cache——这是一种在所有微处理器系统中都能找到的Cache类型。

    本章的第二部分讨论虚拟存储器。硬盘读写速度比主存储器的DRAM慢若干数量级。虚拟存储器系统将存储器通常划分为4KB的页。4KB的数据块可以从磁盘中调入主存储器中任意一个4KB的页中;即物理存储空间并不像处理器使用的虚拟或者逻辑地址空间那样是连续的。当计算机访问存储器,存储器管理单元将逻辑页地址转换为物理页地址,然后从存储器中的该页读取数据。然而,如果被访问的逻辑页不在存储器中,存储器管理单元就会产生页故障,操作系统开始从磁盘中将所需页调入主存储器中的页。当然,如果所有的物理页当前都在使用,操作系统必须牺牲一个页,替换它,再装入新的页。

    习题

    1.1 Cache是什么?为什么计算机要使用Cache?

    1.2 解释下列术语的含义?时间局部性;空间的局部性。

    1.3 试推导出具有Cache的存储器系统的加速比表达式(假定命中率为h,主存储器访问时间是Cache访问时间的k倍,其中k>1)。假设该系统是一个理想的系统,不必考虑时钟周期时间的影响。

    1.4 对以下的理想系统,计算加速比S。每种情况下,tc为Cache的访问时间,tm是主存储器的访问时间,h为命中率。

    a. tm = 60 ns, tc = 3 ns, h = 0.99
    b. tm = 60 ns, tc = 3 ns, h = 0.90
    c. tm = 60 ns, tc = 3 ns, h = 0.80
    d. tm = 60 ns, tc = 3 ns, h = 0.70
    

    1.5 对以下的理想系统,计算得到给定加速比S所需的命中率h。

    a. tm = 50 ns, tc = 2 ns, S = 1.5
    b. tm = 50 ns, tc = 2 ns, S = 5.0
    c. tm = 50 ns, tc = 2 ns, S = 10.0
    d. tm = 50 ns, tc = 2 ns, S = 20.0
    

    1.6 微处理器的操作通常在给定时间间隔内完成(即时钟周期的整数倍)。例如,如果时钟为100MHz,时钟周期时间就是10ns,所有操作的时间必须为10ns的整数倍。下面的数据中tcyc为处理器的时钟周期时间,tm为主存储器的访问时间(包括所有开销,例如地址译码)。针对每种情况,计算访问存储器实际需要的时间。

    a. tcyc = 50 ns, tm = 100 ns
    b. tcyc = 50 ns, tm = 105 ns
    c. tcyc = 10 ns, tm = 75 ns
    d. tcyc = 20 ns, tm = 75 ns
    

    1.7 针对以下微处理器系统,计算当h接近100%时可以获得的最大加速比。

    a. tcyc = 20 ns, tm = 75 ns, tc = 25 ns
    b. tcyc = 10 ns, tm = 75 ns, tc = 15 ns
    c. tcyc = 20 ns, tm = 75 ns, tc = 15 ns
    

    1.8 实际使用中,计算机有时在执行存储器访问的时候执行内部操作。因此,降低了有效加速比,因为Cache对内部操作没有作用。执行一条指令所需的平均时间可以写为:
    tave = Finternal?·?tcyc + Fmemory[htc +(1-h) (tc + td)]·tcyc

    其中:
    Finternal为执行内部操作所花时间所占的比例(0~1之间);
    Fmemory为执行存储器访问操作所花时间所占的比例(0~1之间);
    tcyc为时钟周期时间;
    tc为以时间周期为单位的Cache访问时间;
    td为以时间周期为单位的Cache失效开销;
    请计算下列系统的平均周期时间。
    a. Finternal = 20%, tcyc = 20 ns, tc = 1, td = 3, h = 0.95
    b. Finternal = 50%, tcyc = 20 ns, tc = 1, td = 3, h = 0.9
    

    1.9 针对上题中的系统,如果参数变成:Finternal = 40%, tcyc = 20 ns, tc = 1, td = 4,试计算将平均指令时间减半所需的命中率。

    1.10 主存储器的数据是如何映射到如下Cache中的?

    a. 直接映射Cache
    b. 全相联Cache
    c. 组相联Cache
    

    1.11 在一个直接映射Cache存储器系统中,下列术语的含义是什么?

    a.字
    b.块
    c.组
    

    1.12 为什么构建一个全相联Cache很困难?为什么组相联Cache如此受欢迎?

    1.13 画图说明如何使用Cache标志RAM来实现直接映射Cache。对比直接映射Cache和全相联Cache的优缺点。

    1.14 什么是Cache一致性?

    1.15 突发模式的操作是什么(在具有Cache的环境下)?

    1.16 按道理,Cache是非常简单的概念,只需要将经常访问的数据放在高速RAM中即可。在实践中,相对其他计算机部件,Cache存储器系统的设计是很困难的。这种说法是否正确?

    1.17 讨论工程师在为Cache选择合适的块大小(容量)时需要考虑的因素。

    1.18 Cache系统可以位于CPU和MMU之间(即逻辑Cache)或在MMU与系统随机访问存储器(即物理Cache)之间。是什么因素决定了Cache的最佳位置?

    1.19 当CPU写Cache时,Cache中的项和存储器中对应的项都需要更新。如果数据不在Cache中,它必须从存储器中取出,然后装入Cache。如果t1为Cache失效时重新加载需要的时间,证明存储器系统的有效平均访问时间由下式给出:
    tave = htc + (1-h)tm + (1-h)t1

    1.20 为什么设计数据Cache比设计指令Cache要困难?

    1.21 Cache可以相对于主存储器以串行或并行的方式工作。在串行访问模式下,在Cache中查找数据,如果发生失效,然后再访问主存。在并行访问模式下,Cache和主存储器同时被访问。如果命中,中止对主存储器的访问。
    假设系统的命中率为h,Cache访问时间与主存储器访问时间的比例为k(k<1)。推导出的并行访问Cache和串行访问Cache加速比的表达式。

    1.22 如果使用串行访问Cache,可以容忍其加速比比并行访问Cache的加速比小5%,此时命中率为多少才能达到要求?假定主存储器的访问时间为30ns,Cache的访问时间为3ns。

    1.23 什么是一级Cache和二级Cache(即L1和L2 Cache)?

    1.24 某系统具有一级Cache和二级Cache。一级Cache的命中率为90%,二级Cache的命中率为80%。访问一级Cache需要1个周期,访问二级Cache需要4个周期,访问主存储器需要50个周期。平均访问时间是多少?

    1.25 计算机的Cache访问时间为一个周期,平均命中率为95%,失效开销为100个周期。

    a.该计算机的平均周期时间是多少?
    b.如果增加二级Cache的命中率为80%,其失效开销为6个周期。对平均周期时间的影响如何?
    c.具有一级Cache和二级Cache的计算机执行了10000次存储器访问。测试程序运行时,记录到一级Cache失效了500次,二级Cache失效了300次。一级Cache和二级Cache的总体失效率是多少?
    

    1.26 考虑多级Cache命中率,局部命中率和总体命中率之间有何区别?

    1.27 为什么经常引用(使用)失效率而不是命中率?什么是Victim Cache,如何使用它?Victim Cache能够减少何种类型的失效?Victim Cache和Annex Cache的本质区别是什么?

    1.28 某处理器的存储器管理使用4KB大小的页。它有一个32KB的Cache,Cache块大小为16B。为了加快存储器访问,可以使访问Cache与逻辑到物理地址的转换同时进行。为了实现该方案,需要实现什么样的相联度?

    1.29 假设混合Cache具有以下特性:

    Cache读写开销        1个周期
    失效率            3%
    Load指令所占比例        20%
    Store指令所占比例        5%
    失效开销            20个周期
    平均访问时间是多少?
    

    1.30 某64位处理器有8MB的四路组相联Cache,块大小为32B。地址位是如何按照组、块、块内偏移位进行设置的?

    1.31 某计算机具有分离的数据Cache,采用写回策略。Cache块大小为64B。读访问占全部存储器操作的80%。处理器、存储器和数据总线都是64位的。主存储器访问延迟(第一次访问)为20个周期,后续访问需要2个周期。Cache命中率为96%。试计算Cache的失效开销。

    1.32 导致Cache失效的3个原因是:强制失效、容量失效和冲突失效。给出这些术语的定义。简要解释如何尽量减少它们的影响。

    1.33 CPU中的Cache和硬盘中的Cache有什么根本差异?

    1.34 为什么在使用硬盘的系统中必须使用存储器管理?存储器管理可以提供哪些保护功能?存储器管理系统具有保护功能,该功能在Cache中也存在吗?

    1.35 写回Cache和写直达Cache之间有何差异,对系统性能有何影响?

    1.36 32位地址体系结构计算机的存储器管理系统具有一级4KB的页表。该页表对应多大的存储器空间?

    1.37 考虑全相联的16字节的Cache具有4个块,每块4个字。Cache使用LRU(最近最少使用)算法处理块替换。Cache初始是空的,块从第0块开始装载。
    给定下面的十六进制地址序列,指出命中或失效情况。给出所有读操作结束后Cache的状态。

    00 03 05 08 13 14 11 04 0F 0C 23 00 01 02 04 06 05 07 09 21
    

    1.38 计算机指令集具有下表中的特点。


    61f7e67f63f90ea1324d9e8d8d4950d4d1d2110c

    每条指令的平均周期数是多少?

    1.39 考虑下面的代码,访问存储器中的整数x和s以及整数向量y[i]这3个值。

    该系统具有一级Cache和二级Cache。一级Cache的访问时间是2个周期,二级Cache的访问时间是6个周期,主存储器的访问时间为50个周期。在此情况下,所有的存储器和Cache的访问是并行执行的。假设没有缓存数组,每次新的对数组的访问都将导致失效。每个循环中以时钟周期数表示的存储器延迟(第一次迭代后)为多少?

    1.40 假设采用与题1.39相同的系统,如果采用预取技术,每次对主存储器的访问将导致下一块调入二级Cache,此时循环的平均存储器延迟为多少?假设对二级Cache采用预取技术不会导致进一步的存储器访问开销。

    1.41 某64位计算机有128KB的八路组相联Cache。Cache有128组,每块为16个字。每个地址需要多少位标志位?

    1.42 哪种类型的Cache,可以用来减少由于频繁交换而导致的Cache抖动?

    1.43 给定以下数据,假设时钟频率为1000MHz。


    6e23422f4dd49f101d02fc51d7e769e6164b5068

    计算平均存储器访问时间。假定二级Cache和DRAM可以与一级Cache并行访问。
    1.44 某16位CPU的Cache有32块,每块16B。CPU访问一个字节的十进制地址为3210。这将导致失效,调入新块。该块位于Cache中的什么位置?
    1.45 某计算机具有256B的地址空间和两路32B的组相联Cache。计算机字的大小是一个字节,每个Cache块包含4个字节,每个Cache有4块。如果Cache最初是空的,按照如下十六进制地址序列读取,显示相应的命中和失效的情况。

    48, 0C, 48, 4C, 5C, 3A, 20, 21, 22, 24, 81, 49, 30, 34, 27, 3E, 24, 28, 2C, 40
    

    1.46 人们总是在寻找更有效的Cache机制,特别是减少失效开销的方法(例如,使用Annex Cache或Victim Cache)。某个学生提出下面的建议。并非所有数据都相同。有些数据使用比别的更频繁,特别是数值小的数。所以为什么不这样安排Cache:当有两个候选位置的块可能被替换时,首先把数值大的块替换出去?这种方法是否可行?

    1.47 计算机Cache的命中率为95%,每块为4个32位的字。处理器平均访问Cache的频率为1亿次/s。20%的CPU操作为load/store操作(其中读和写操作分别占70%和30%)。Cache使用写直达机制,在写失效时会替换一个块。在此情况下,32位CPU-存储器总线可使用的带宽是多少?

    1.48 重做题1.47。此时Cache使用写回方式,Cache中平均25%的块为脏块(已被修改)。

    1.49 计算机的存储器容量为256个字,Cache容量为16个字。按照以下地址顺序读数据:

    0, 1, 2, 3, 4, 5, 10, 13, 16, 19, 21, 4, 8, 12, 30, 40, 41, 42, 35, 1, 3, 13
    假设所有Cache块最初都是无效的,指出Cache是如何访问的。针对以下几种Cache,为每次访问做出标记:命中、容量失效、强制失效或者冲突失效。
    a.全相联Cache
    b.两路组相联Cache
    c.直接映射Cache
    

    1.50 某系统的存储器访问时间为50ns,Cache访问时间为2ns。指令执行时间为4ns(不包括存储器访问),平均每条指令需要0.25次存储器访问。如果命中率是0.90,指令的平均时间是多少?

    1.51 某计算机具有24位地址总线,存储器容量为16MB,Cache容量为64KB。字长为两个字节。

    a.块容量为32个字的直接映射Cache的地址格式是什么?
    b.块容量为32个字的全相联Cache的地址格式是什么?
    c.块容量为32个字的四路组相联Cache的地址格式是什么?
    

    1.52 某计算机的存储器访问时间为38ns且不使用Cache。为其添加一个访问时间为10ns的Cache。计算机的运行速度提高了90%。试估计其命中率是多少。

    1.53 为什么二级Cache的命中率通常低于一级Cache的命中率?

    1.54 某系统一级Cache的命中率为87%(命中需要1个周期)。二级Cache的命中率为90%,访问时间为10个周期。主存储器的访问时间为200个周期。平均访问时间是多少?

    展开全文
  • 本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第1.4节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译...
  • 第1章介绍了计算机的Cache和虚拟存储,第2章和第3章涵盖从静态半导体存储器到磁盘和光存储的各种存储技术第4章首先介绍将信息送入计算机和从计算机中取出的技术,然后描述一些支持多媒体系统的现代高速接口。
  • 本节书摘来自华章出版社《计算机存储与外设》一书中的第1章,第1节,作者Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著,沈 立 肖晓强 王苏峰 译,...
  • 本 节 书 摘 来 自 华 章 出 版 社 《计算机存储与外设》 一 书 中 的 第2章,第2.1节, 作 者 Computer Organization and Architecture: Themes and Variations[英]艾伦·克莱门茨(Alan Clements) 著, 沈 立...
  • 2.1.1 存储系统的原理和参数 2.1.2 存储层次 ]( https://yq.aliyun.com/articles/89880) [2.2 主存储器 2.2.1 SRAM 2.2.2 交叉存储器 ]( https://yq.aliyun.com/articles/89902) [2.3 DRAM 2.3.1 DRAM...
  • 计算机存储—大话存储II读书

    千次阅读 2018-11-07 16:16:12
    CPU北桥连接的总线叫做系统总线,也称为前端总线。南桥上一般集成众多外设的控制器,比如磁盘控制器、USB控制器等。 设备地址映射:每个IO设备在启动时都要向内存中映射一个或多个地址,这个地址有8位长,又被...
  • 9.16 内存、外存与外设 按速度排列 寄存 缓存 内存 外存 存储分类 内存 又称主存:CPU能直接寻址的存储空间、存取速度快 包括:RAM、ROM、cache等 外存 又称辅存:除CPU缓存和内存以外的存储器 包括:磁盘、NAND ...
  • 中文版引进的时候综合考虑国内高校“计算机组成与结构”或类似课程的教学目标以及我们对本书的定位,对原书进行了适当裁剪和重新组合,分为两册:《计算机组成原理》和《计算机存储与外设》。 本书即为《计算机组成...
  • 这篇日志讲得主要是寄存器和存储器(这里指的是RAM)的区别,之后才是...现代的计算机主要包括三级存储,寄存器、内存储器和外存储器,存储数据的速率也依次递减。(外存储器不在本次讨论之中,姑且略过不讲)我们不妨
  • 存储原理技术

    千次阅读 2018-09-22 18:10:37
    LBA(logical block adress,逻辑块...写入数据时,通过SCSI接口实现计算机外设的数据交互。 影响磁盘性能的因素: 1、转速:转速是影响硬盘连续IO时吞吐量性能的首要因素。在连续IO情况下,磁头臂寻道次数很少...
  • 冯·诺依曼计算机的工作原理:存储程序和程序控制 存储程序:将程序存放在计算机的存储器中; 程序控制: 按指令地址访问存储器并取出指令,经译码 依次产生指令执行所需的控 制信号,实现对计算的控制, 完成指令的...
  • I/O存储管理 I/O设备(外围设备,外部设备,外设) 定义 分类 设备管理目标 设备管理功能 设备管理层次 设备控制器(设备适配器、I/O控制器、I/O控制接口、I/O模块或I/O接口) 定义 功能:CPU设备之间的接口 ...
  • PCI总线是目前台式机与服务器所普遍使用的一种,南桥与外设连接的总线技术。PCI总线的地址总线与数据总线时分时复用的。PCI总线在同一时刻,只能对一对设备完成传输,这就需要有一个仲裁机构,来决定谁有权力拿到...
  • 其中,第1章的题目是为加深对计算机系统常用的名词术语及概念的理解:第2章的题目是为加深对计算机数值数据的运算方法,运算器组成及工作原理的理解:第3章的题目是为加深对存储系统各级存储器的组成及工作原理的...
  • 单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O...
  • 也实现模拟嵌入式Linux设备当成U盘设备插入电脑,即通过USB数据线连接电脑,可指定存储设备(SD卡/NandFlash分区)其中一种映射到电脑上,即“计算机”下的“可移动存储设备”下有XX盘。 笔者的开发板存储设备对应的...
  • 按理说微机原理我并没有复习的必要,但是很遗憾…因为我计组才学到存储系统,接口更是一点不会(接口明白,芯片外设不会),所以复习准(ying)备(fu)考试是很有必要的。 我惊讶的是:一门才48个学时的课竟然能涵盖...
  • 1.1 微型计算机的发展应用 1 1.1.1 微处理器的产生和发展 1 1.1.2 微型计算机的分类 4 1.1.3 微型计算机的特点性能指标 4 1.1.4 微型计算机的应用 6 1.2 微型计算机的硬件结构及系统组成 8 1.2.1 微型计算机硬件...
  • 将 USB 外设变成 BadUSB

    2017-06-02 16:42:00
    廉价的可编程USB外设几乎无处不在,... BadUSB发生的理由是USB有固件控制所插入计算机的交互,固件可以被修改,一个USB设备可被修改伪装成完全不同的设备,比如USB存储设备伪装 成USB键盘,能对机器执行许多恶意的...
  • 主机采用外设单独编址,四个采集器公用一个设备码,共用一个接口,允许采用两种方式访问: (1) 定期巡回检测方式,主机可编程指定访问该设备中的某一采集器。 (2) 中断方式,当采集温度比给定范围过底或过高时能...
  • 如今USB2.0接口己成为计算机的主流外设接口,传统的存储测试仪在接口方面具有一定的局限性。针对这一不足,在不改变存储测试仪结构的前提下采用CY7C68013A开发了USB2.0接口卡,使得存储测试仪可以通过USB接口直接...
  • 控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 运算器(Datapath) 运算器的功能是对数据进行各种...
  • 计算机组织

    2018-11-26 21:03:31
    释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的 访问等。 2&gt; 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进 行加工处理。 3&...
  • 脱机外存:离开计算机后还可以存储数据的设备 ,例如U盘 为什么需要IO接口? 这是因为CPU是一个高速设备,外设是一个低速设备。高速设备和低速设备之间 直接相联速度不匹配。 因为往往一个外设配备一个IO接口,...
  • 教材 《计算机组成原理系统结构》 第二版 包健 冯建文 第一章 计算机组成原理概论 微型计算机三大总线是:数据总线,地址总线,控制总线。 1.5计算机硬件系统的主要指标有哪些? 答:机器宇长、存储...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 219
精华内容 87
关键字:

计算机存储与外设