《计算机组成原理14-存储系统04》由会员分享,可在线阅读,更多相关《计算机组成原理14-存储系统04(44页珍藏版)》请在金锄头文库上搜索。
1、,系 统 总 线,存储器,运算器,控制器,接口与通信,输入/输出设备, 计算机组成原理 ,第四章 存储器,复习与作业,第4章 存储器4.4 辅助存储器(不讲了)演讲 下周第一次课 (23、24日)题目:任意(只要是有关辅助存储器的) 内容:关于辅助存储器的分类、工作原理、先进技术等等可以从书中4.4中选取内容,也可以从网上自己搜索整理。(例如:硬盘、光盘工作原理、读取方式、主流产品、主要型号参数的说明等等,移动硬盘,磁盘阵列先进存储设备的技术应用与发展)要求:每小班四名同学(只能多不能少)每人6分钟(大概10张PPT左右),准备充分,讲述流利。凡演讲者,期末考试卷面成绩 + 5分。,3.1、主
2、存储器概述 3.2、主存储器构成 3.3、主存储器扩展 3.4、主存储器与CPU的连接 3.5、提高主存储器性能的技术3.5.1、提高主存的制造技术3.5.2、双端口存储器3.5.3、单体并行多字存储器3.5.4、多体并行交叉存储器,3、主存储器,角度二:提高 存储体系结构,角度一:硬件 提高元器件,存储系统中主要是通过并行主存储器和设置Cache来提高速度。,双端口存储器和多体交叉存储器属于并行存储器。前者采用空间并行技术,后者采用时间并行技术。,第四章 存储器,辅助存储器,为了弥补主存速度的不足,在CPU与主存之间设置一个 高速 小容量 的缓冲存储器,称高速缓存(Cache),主要由高速的
3、SRAM组成。其工作原理如下:,我们利用程序运行的局部性特点,把CPU正在访问和即将访问的若干程序块和数据块从主存调入高速缓存中,使CPU大部分从高速缓存中读取指令和存取数据,极大地提高了CPU的访问速度。,4、高速缓冲存储器(Cache),CPU,Cache,主存 DRAM,地址总线,相联 存储表,命中,未命中,数据总线,块,字,字,CPU读取数据字时:1)CPU输出字地址同时送到Cache和主存; 2)Cache 先判断该字是否在Cache中;如果在,Cache直接送给CPU;如果不在,再去主存中读取。 3)去主存取字时不仅把该字取出,同时还把该字附近的一块数据都取出送给Cache,以便C
4、PU下次读取字时在Cache中读取。Cache的命中率高达98%以上。,4、高速缓冲存储器(Cache),CPU,Cache,主存 DRAM,地址总线,相联 存储表,命中,未命中,数据总线,块,字,字,增加Cache后,使主存的平均存取时间尽可能接近Cache的。 由于程序访问的局部性使之可能。在一个程序执行期间命中率与程序的行为、Cache的容量、组织方式、块的大小有关。Tc表示命中时的Cache读写时间,Tm表示未命中时的主存读写时间,1-h表示未命中率,则Cache/主存系统的平均访问时间 Ta为:主存慢于Cache的倍率 r:为提高访问效率,命中率越接近1越好,r值以510为宜。,命中
5、率 h = Cache完成存取的总次数 /( Cache完成存取的总次数+主存完成存取的总次数),Ta = h*Tc +(1-h)Tm,r = Tm / Tc,4、高速缓冲存储器(Cache),考研试题精选:假设:CPU执行某段程序时,共访问Cache 3800 次,访问主存200次,已知Cache存取周期为50ns,主存存取周期为250ns。求:Cache主存系统的平均存取时间和效率。,解:系统命中率 h = 3800 / 3800 + 200 = 0.95 系统平均存取时间 Ta = 50 ns * 0.95 + 250 ns *(1-0.95)= 60 ns系统效率 = (Cache存取
6、时间 / 平均存取时间)= 50ns / 60ns = 83.3%,4、高速缓冲存储器(Cache),公式一,考研试题精选:例:CPU执行一段程序时,Cache完成存取的次数为1900次,主存完成存取的次数为100次,已知Cache存取周期为50ns,主存存取周期为250ns。求: Cache/主存系统的效率和平均访问时间。解:系统命中率 h = 1900 / (1900+100)=0.95倍率 r = Tm / Tc = 250ns / 50ns = 5系统效率 = 1 /(r +(1 - r)h)= 1 /(5+(1-5)*0.95)= 83.3%系统平均访问时间 Ta = h*Tc +(
7、1-h)Tm = 0.95*50ns + 0.05*250ns= 47.5 + 12.5 = 60ns,4、高速缓冲存储器(Cache),公式二,CPU与Cache之间的数据交换以“字”为单位,而Cache与主存之间的数据交换以“块”为单位。一块由若干个字组成,块是定长的。为了实现Cache的上述功能,需要解决这样一些问题:1)Cache与主存中存储单元地址映象关系,主存大而Cache小;(主存中的存储单元 放在 Cache中哪个存储单元?)2)如何实现地址转换,将访问主存的地址转换成访问Cache的地址;(CPU直接输出的是访问主存单元地址,主存长地址 变 Cache短地址?)3)若访问Ca
8、che未命中且Cache未满时,数据块如何调入?Cache已满时,数据块如何替换?先来先走?4)数据的一致性问题:Cache中的更新数据与内存中的陈旧数据之间的更新。,4、高速缓冲存储器(Cache),第四章 存储系统,辅助存储器,Cache 的全部功能都是 由硬件完成的, 对程序员来说是透明的。,4.1、地址映象,映象:其物理意义就是位置的对应关系,将主存地址变成Cache地址。常见的映象方式主要有三种:1)直接映象2)全相联映象3)组相联映象,CPU,Cache,主存 DRAM,地址总线,相联 存储表,命中,未命中,数据总线,块,字,字,0块,1块,15块,0区,1区,255区,Cache
9、,主存,区号,块号,块内地址,块号,块内地址,主存地址,Cache地址,7位,4位,9位,4位,9位,4.1、地址映象直接映像,第0块,第1块,第15块,第16块,第17块,第31块,第2032块,第2033块,第2047块,0,1,2,3,Cache块号,主存区号,块表,直接映象方式是多对一影射。主存中的一块只能映象到Cache某一个固定的块中。直接映象的关系式:K = I mod MK:Cache块号, I:主存块号, M:Cache总块数,0,0 16 32 48 . . . 2032,1,1 17 33 49 . . . 2033,4.1、地址映象直接映像,CPU先送出一个主存地址,用
10、主存地址中的区号与块表中区号比较, 若命中:访Cache(按主存地址的块号+块内地址)读出一字送CUP; 若未命中:访内存(按主存地址的区号+块号)读出一块送Cache。,区号,块号,块内地址,Cache块号,块内地址,比较,命中,未命中 访问内存,访问Cache,按块号 查找块表,主存地址,Cache地址,4.1、地址映象直接映像,000,001,010,011,Cache块号,区号标记,例1:设有一个Cache的容量为2KB,每个块为16字(一字一字节)求: 1)该Cache可容纳多少个块?2KB = 2048B 2048B / 16B = 128块 2)如果主存容量为256KB,则有多少
11、块?256 KB = 256 * 1024 B = 262144 B 262144B / 16B = 16384块 3)主存地址有多少位?Cache 地址有多少位?主存有18位,Cache有11位。 4)在直接映象方式下,主存中第135块映象到Cache中哪块?K= I mod M = 135 mod 128 = 7 5)进行地址映射时,主存地址分成哪几段?各段分别有多少位?主存地址分为三段:主存区号位数 = 主存地址位数 Cache 地址位数=18 -11 = 7位Cache块号位数 = 7位 27=128块内地址位数 = 4位 24=16,主存区号,块号,块内地址,4.1、地址映象直接映像
12、,例2:设一个Cache中有8块,访问主存进行读操作的块地址依次为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内容。,主存区号,块号,块内地址,2位,3位,主存块号,Cache块号,块内地址,比较,未命中 访问内存,000 001 010 011 100 101 110 111,000 001 010 011 100 101 110 111,内存10区,10 110,块表,000 001 010 011 100 101 110 111,Cache,调入,调入,10,4.1、地址映象直接映像,例2:设一个Cache中有8块,访问主
13、存进行读操作的块地址依次为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内容。,主存区号标记,块号,块内地址,2位,3位,主存块号,Cache块号,块内地址,比较,未命中 访问内存,11,10,000 001 010 011 100 101 110 111,000 001 010 011 100 101 110 111,11,内存11区,11 010,块表,000 001 010 011 100 101 110 111,Cache,调入,调入,4.1、地址映象直接映像,例2:设一个Cache中有8块,访问主存进行读操作的块地址依次
14、为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内容。,主存区号标记,块号,块内地址,2位,3位,主存块号,Cache块号,块内地址,比较,命中,11,10,000 001 010 011 100 101 110 111,10 110,块表,000 001 010 011 100 101 110 111,Cache,访问Cache,4.1、地址映象直接映像,例2:设一个Cache中有8块,访问主存进行读操作的块地址依次为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内
15、容。,主存区号标记,块号,块内地址,2位,3位,主存块号,Cache块号,块内地址,比较,命中,11,10,000 001 010 011 100 101 110 111,11 010,块表,000 001 010 011 100 101 110 111,Cache,访问Cache,4.1、地址映象直接映像,例2:设一个Cache中有8块,访问主存进行读操作的块地址依次为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内容。,主存区号标记,块号,块内地址,2位,3位,主存块号,Cache块号,块内地址,比较,未命中 访问内存,11,10,000 001 010 011 100 101 110 111,000 001 010 011 100 101 110 111,内存10区,10 000,块表,000 001 010 011 100 101 110 111,Cache,调入,调入,10,4.1、地址映象直接映像,例2:设一个Cache中有8块,访问主存进行读操作的块地址依次为:10110、11010、10110、11010、10000、00100、10010,求每次访问时Cache的内容。,