原文连接:http://kasheemlew.github.io/2...git
存储器容量:取决于寻址方式,16位机能产生16位地址,所以能在2^16=64K个存储器单元中寻址,同理,32位机能使用包含4G个单元的存储器。程序员
MAR(存储器地址寄存器)和 MDR(存储器数据寄存器):经过这两个寄存器实现处理器和存储器之间的数据传输。若是MAR的长度是k位,MDR的长度是n位,那么存储器部件能够包含2^k个可编址单元,在一个存储周期中,n位数据在处理器和存储器之间传输(在包含k条地址线和n条数据线的处理器总线上完成)github
Read/^(Write)控制线:处理器从存储器读地址时,先把存储单元的地址装进MAR,而后把R/^(W)线设成1(读信号);写入数据时,先把要写入的存储单元地址装入MAR,并把数据装入MDR,再把R/^(W)线设成0(写信号)。算法
MFC(存储器功能完成控制线):读取数据的过程当中,R/^(W)线设成1后,存储器作出响应,把指定位置的数据放到数据线上,并发送MFC信号确认这个操做,收到MFC信号,处理器就把数据线上的数据装入MDR寄存器。数据库
块传输:读写操做访问主存中一个连续的存储单元地址时采用。只须要将块的第一个单元地址发送到存储器中。编程
存储器延迟:指向或从存储器传输一个字的数据所要花费的时间。读写单个字的时候能够用来标志存储器的性能,但对于一块数据还依赖与后继字节的传输速度以及块的大小。缓存
存储器带宽:单位时间能传输的位或字节的数量。并发
衡量存储器的速度:异步
存储器访问时间:读信号和MFC信号之间的时间。ide
存储器周期时间:相继两个存储器操做考试时刻之间的最小时间延迟,如两个读操做之间的时间。通常比访问时间长。
随机访问存储器(RAM):任何存储单元的读写访问都能在固定时间段(与地址无关)内完成,主要与连续存储设备(如磁带)区分开。
主存储器:简称主存,是计算机系统的主要存储器,用来存放计算机正在执行的大量程序和数据,主要由MOS半导体存储器组成。
外存储器:简称外存,是计算机系统的大容量辅助存储器,用于存放系统中的程序、数据文件及数据库。与主存相比,外存的特色是存储容量大,位成本低,但访问速度慢。目前,外存储器主要有磁盘存储器、磁带存储器和光盘存储器。
高速缓存:一个容量小、速度快的存储器,插在容量大、速度慢的主存与处理器之间,用来缓解计算机处理器处理指令和数据的速度比从存储器中获取指令和数据速度快的问题。
虚拟存储器:现代计算机系统中,物理主存空间没有处理器生成的地址所能跨越的空间大,没法将全部程序一次性放入主存,所以经过虚拟存储器技术实如今执行中把将要执行的程序块和数据块自动移入主存。
虚拟地址(逻辑地址):使用虚拟存储器技术时处理器产生的地址(与物理存储器的存储位置不一样)。
存储器管理部件:用来实现虚拟地址空间到数据实际所在的物理存储器上的映射。
CS(芯片选择):在多芯片存储器系统中选择一个给定的芯片。
MOSC(Metal-Oxide-Semiconductor Capacitor)金氧半电容,一种两端控制的半导体元件。
半导体存储器出如今20世纪60年代,速度快,成本低,取代了磁芯存储器。
组织结构:
结构图:
结构特色:阵列形式、每一个单元存储一位(bit)。一个单元行组成存储器中一个字,全部单元行经过一条公共的线链接。图中包含8个字,每一个字包括4位,称为8x4的结构,一共须要11条引线,其中地址线3条,数据线4条,控制线2条(CS和R/^(W)),还有2条线用于 电源支持 和 接地。
静态随机存储器(SRAM):
特色:
利用双稳态触发器来保存信息,只要不断电信息就不会丢失。
集成度低,成本高,功耗较大,一般做为Cache的存储体。
存储单元:
结构:两个反相器交叉耦合造成一个锁存器,经过两根晶体管(起开关做用,在字线的控制下打开或关闭)分别链接到两根位线上
工做原理:字线低电平时晶体管断开,锁存器保存;读操做时,字线激活,闭合开关,若是bit被设置为与单元状态相同的状态,^bit被设置为相反的状态,位线一段的读出/写电路检测状态并设置输出;写操做时,先把适当的值放到bit,把其补值放到^bit,而后激活字线,位线上须要的信号由读出/写电路产生。
动态随机存储器(DRAM):
特色:
利用MOS电容存储电荷来保存信息,使用时须要不断给电容充电才能保持信息。
动态存储器电路简单,集成度高,成本低,功耗小,但须要反复进行刷新(Refresh)操做,工做速度较慢,适合做为主存储器的主体部分。
存储单元:
结构:电容器 和 晶体管(与字线和位线相连) 构成
工做原理:存储信息时,晶体管打开,电压加到位线(图中垂直)上,使电荷存到电容中,以后关闭晶体管,这时电容会开始漏电。读操做时,选中的晶体管打开,链接到位线上的传感放大器检测电容上的电荷是否高于某个阀值,若高于,则将位线上的电压提升成满电压(同时将电容器电荷充满),不然将位线拉成低电平,保证电容没有电荷,所以读操做时会自动刷新。
组织结构及工做原理:
读写操做期间,行地址首先被加载,芯片响应在 行选通地址(RAS)输入线 上的脉冲信号,把行地址装入行地址锁存器中,选中行上的全部单元被读取和刷新。列地址随后被加载到地址引脚,而后在列地址选通(CAS)信号控制下被装入列地址锁存器。为了让RAS和CAS信号从高电平变成低电平时使地址锁存,这两个信号被设计成低电平有效。此外,为了减小外部链接的引脚数,行地址和列地址采用多路复用。
同步动态随机存储器(SDRAM):操做直接与时钟信号同步,不须要CAS线上提供外部产生的脉冲去选择连续的列,芯片内部用列计数器和时钟信号来提供须要的控制信号。有内置的刷新电路,其中一部分是刷新计数器,提供要刷新的行地址。
双倍数据速率SDRAM(DDR SDRAM):存储器单元阵列被组织成两个存储体,每一个能够单独访问。一个给定块中连续的字被存储到不一样的存储体中,实如今一个时钟信号的连续边沿上传输两个字。
只读存储器ROM是一种存储固定信息的存储器,其特色是在正常工做状态下只能读取数据,不能即时修改或从新写入数据。电路结构简单,且存放的数据在断电后不会丢失,特别适合于存储永久性的、不变的程序代码或数据,计算机中的自检程序就是固化在ROM中的。ROM的最大优势是具备不易失性。
掩模只读存储器(MROM):又称固定ROM。这种ROM在制造时,生产厂家利用掩模(Mask)技术把信息写入存储器中,使用时用户没法更改。
可编程只读存储器(Programmable ROM):是可由用户一次性写入信息的只读存储器,一经写入就不能再更改。
光擦可编程只读存储器(EPROM):其中的内容能够用特殊的装置进行擦除和重写。EPROM出厂时,其存储内容为全“1”,用户可根据须要改写为“0”,当须要更新存储内容时,可将原存储内容擦除(恢复为全“1”),以便写入新的内容。
电擦可编程只读存储器(EEPROM或E2PROM):能够用电气方法将芯片中的存储内容擦除,擦除时间较快,甚至能够在联机状态下操做。
EEPROM既可以使用字擦除方式又可以使用块擦除方式,使用字擦除方式可擦除一个存储单元,使用块擦除方式可擦除数据块中全部存储单元。
闪速存储器(Flash ROM):一种块擦写型存储器,是一种高密度、非易失性的读/写半导体存储器。在某种低电压下,其内部信息可读不可写,在较高的电压下,其内部信息能够更改和删除。
利用程序访问的局部性原理,把程序中正在使用的部分(活跃块)存放在一个小容量的高速Cache中,使CPU的访存操做大多针对Cache进行,从而解决高速CPU和低速主存之间速度不匹配的问题,使程序的执行速度大大提升。最早须要的数据项应该被放入高速缓存,同时最好将临近的多个项也放入。
地址映射
直接映射:
主存块直接映射到Cache上,每一个主存块只有一个固定位置可存放,容易产生冲突,只适合大容量Cache采用。
相联映射:
主存块能够放置到高速缓存中任何一个位置上,Cache的利用率高,块冲突几率低,只要淘汰Cache中的某一块,便可调入主存的任一块。可是,因为Cache比较电路的设计和实现比较困难,这种方式只适合于小容量Cache采用。
组相联映射:
将直接映射和相联映射结合起来使用,高速缓存被分红组,主存块能够被映射到特定组中的任意位置。
替换算法:
LFU(Least Frequently Used,最不常用)算法:将一段时间内被访问次数最少的那个块替换出去。每块设置一个计数器,从0开始计数,每访问一次,被访块的计数器就增1。当须要替换时,将计数值最小的块换出,同时将全部块的计数器都清零。不能严格反映近期访问状况,新调入的块很容易被替换出去。
LRU(Least Recently Used,近期最少使用)算法:把CPU近期最少使用的块替换出去。这种替换方法须要随时记录Cache中各块的使用状况,以便肯定哪一个块是近期最少使用的块。每块也设置一个计数器,Cache每命中一次,命中块计数器清零,其余各块计数器增1。当须要替换时,将计数值最大的块换出。实现起来比较复杂,系统开销较大,保护了刚调入Cache的新数据块,具备较高的命中率,可达90%。
随机替换算法:无论Cache的状况,根据一个随机数选择一块替换出去。随机替换算法在硬件上容易实现,速度快。可是下降了命中率和Cache工做效率。
写操做策略:
写回法(Write-Back):当CPU写Cache命中时,只修改Cache的内容,而不是当即写入主存;只有此块被换出时才写回主存。这种方法写Cache和写主存异步进行,减小了访问主存的次数,可是存在数据不一致的隐患。实现这种方法时,每一个Cache块必须配置一个修改位,以反映此块是否被CPU修改过。
全写法(Write-Through):当写Cache命中时,Cache与主存同时发生写修改。使用这种方法写Cache和写主存同步进行,于是较好地维护了Cache与主存的内容一致性。实现这种方法时,Cache中的每一个块无需设置修改位以及相应的判断逻辑,但因为Cache对CPU向主存的写操做没有高速缓冲功能,从而下降了Cache的功效。
写一次法(Write-Once):结合写回法和全写法的写操做策略,写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存,以便于维护系统所有Cache的一致性。
预取:经过预取指令使地址指向的数据被装入高速缓存,避免读失效时处理器暂停引起的开销。最好在处理器执行不会引起失效指令时开始预取,这样主存访问就能与处理器运算重叠。预取也能够经过硬件实现,这须要增长用于发现存储器引用模式并根据这个模式预取数据的电路。
无锁定高速缓存:能支持多个未响应失效的高速缓存,容许处理器在高速缓存响应失效时仍能访问他(传统的高速缓存在预取操做完成前会阻止其余对高速缓存的访问,在它响应一次失效时称他为被锁定了)。一次只能响应一个失效,所以须要引入用于跟踪全部未响应失效的电路。
一个容量很是大的存储器的逻辑模型,借助于磁盘等辅助存储器来扩大主存容量。当计算机系统的物理主存空间没有处理器生成的地址所能跨越的空间大时,由操做系统把主存和辅存这两级存储系统管理起来,实现自动覆盖。一个大做业在执行时,其一部分地址空间在主存,另外一部分在辅存,当所访问的信息不在主存时,则由操做系统而不是程序员来安排I/O指令,把信息从辅存调入主存。
页式虚拟存储器:
每页长度固定的,创建方便,新页调入也容易可是因为程序不可能正好是页面的整数倍,最后一页的零碎空间将没法利用而形成浪费。
以页为基本单位的虚拟存储器,虚存地址到实存地址的变换是经过存放在主存中的页表来实现。
不是逻辑上独立的实体,这使得程序的处理、保护和共享都比较麻烦。
虚存地址由高位的逻辑页号和低位的页内地址组成。实存地址由高位的物理页号和低位的页内地址组成。虚存地址到实存地址的变换是经过主存中的页表实现。页表中,对应每个虚存逻辑页号有一个表项,表项内容包含该逻辑页所在的主存页面地址(物理页号),用它做为实存地址的高字段,与虚存地址的页内地址字段相拼接,产生完整的实存地址,访问主存,过程如图:
快表和慢表:
用途:快表由硬件组成,比页表小得多,存放当前最经常使用的页表信息,做为慢表部份内容的副本。存储在一个小容量的快速存储器中,该存储器是按内容查找的相联存储器,可按虚页号名字进行查询,迅速找到对应的实页号。
查询过程:查表时,由逻辑页号同时去查快表和慢表。当在快表中有此逻辑页号时,就能很快地找到对应的物理页号送入实主存地址寄存器,从而作到虽采用虚拟存储器但访主存速度几乎没有降低;若是在快表中查不到,那就要花费一个访主存时间去查慢表,从中查到物理页号送入实存地址寄存器,并将此逻辑页号和对应的物理页号送入快表,替换快表中应该移掉的内容。
段式虚拟存储器:
按照程序的逻辑结构划分的,各个段的长度因程序而异,容易在段间留下不能利用的零碎空间,形成浪费。
具备逻辑独立性,因此易于实现程序的编译、管理、修改和保护,也便于多道程序共享。
段表:须要一个段表。段表通常驻留在主存中,其中每一行记录了(虚拟)段号、装入位、段起点和段长等信息。结构如图:
访问过程:CPU根据虚地址访存时,首先将段号与段表的起始地址相拼接,造成访问段表对应行的地址,而后根据段表的装入位判断该段是否已调入主存。若已调入主存,则从段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,获得对应的主存实地址。
段页式虚拟存储器:把程序按逻辑单位分段,再把每段分红固定大小的页。主存空间也划分为若干个一样大小的页。虚存和实存之间以页为基本传送单位,每一个程序对应一个段表,每段对应一个页表。虚地址包含段号、段内页号、页内地址三部分。CPU访问时,首先将段表起始地址与段号合成,获得段表地址,而后从段表中取出该段的页表起始地址,与段内页号合成,获得页表地址,最后从页表中取出实页号,与页内地址拼接造成主存实地址。
页面替换:
经常使用算法:LRU算法、LFU算法、FIFO算法
与Cache替换策略的不一样:
缺页至少要涉及一次磁盘外存存取,读取所缺的页,因缺页损失要比Cache未命中大得多。
页面替换是由操做系统软件实现的,而Cache的块替换则是由硬件实现的。
页面替换的选择余地很大,属于一个进程的页面均可替换。
磁盘系统中存储介质由安装在一个轴上的一个或多个磁盘组成,每一个盘上覆盖着一层磁性薄膜,一般两面都有。盘放在一个旋转的驱动器上,使磁性表面在读写磁头附近移动,各个磁盘旋转速度统一,每一个磁头包括一个磁轭和一个磁性线圈。?视频:How a Hard Drive works
磁盘:装配的盘体
磁盘驱动器:电机装置,旋转磁盘和移动读写磁头。
磁盘控制器:控制系统运做。
写操做:磁性线圈施加适当极性的电流脉冲将数字信息存储到磁性薄膜上,这使磁头下的薄膜区域的磁化方向与施加的磁场同向。
读操做:磁性薄膜相对磁轭的运动致使磁头附近的磁场发生变化,在磁性线圈中感应出电压。由控制电路检测到的电压正负判断磁膜的磁化状态。
相位编码(曼彻斯特编码):若是二进制状态0、1用磁化两个相反状态表示,那么只有在位流中0变成1或者1变成0时磁头才能感应出电压,而一长串的0或1只有在这个串的开头和结尾才能产生感应电压。为了判断存储的连续的0或1的个数,必须用一个时钟提供同步信息。而相位编码把时钟信息结合到数据中,使每一个位都有磁性变化发生。
读写过程:读写磁头与转动的盘面保持一个很近的距离,以此来得到较高的位密度和可靠的读写操做。当磁盘以一个稳定的速度旋转时,在盘面和磁头之间会产生一个空气压力,迫使磁头远离盘面(可用弹簧装置抵消这个力,缓解可能形成的起伏)。
温彻斯特技术:将盘体和磁头放在一个密封的、对空气进行过滤的外壳中,使里面不存在灰尘微粒。这样,磁头能够离磁化轨迹表面更近,数据也就能以更高的密度存放,磁道之间的距离也越近。
磁盘的组织结构:磁盘的盘面被分红同心的磁道,每一个 磁道 又分红 扇区(扇形的),各个表面上相同磁道的集合造成逻辑上的柱面。数据位顺序存在每一个磁道中,每一个扇区一般包含512个字节。数据前面有一个扇区头,包含(标志)寻址信息,用来在选定的磁道上找到须要的扇区。数据后由纠错码(ECC)组成附加位,用来检测读写时可能发生的错误。两个扇区之间存在一个扇区间隙。