相对于CPU直接访问主存与CPU的连接,计算有Cache时CPU访存速度提高

计算机组成原理知识点总结(唐朔飞版)-6_中华文本库
第1页/共3页
硬件:输入输出设备,控制器,存储器,运算器。
计算机技术指标:机器字长、存储容量、运算速度。
多总线结构的原理:双总线结构特点是将速度较低的I/O设备从单总线上分离出来,形成主存总线和I/O总线分开的结构。三总线1由主存总线用于CPU与主存之间的传输,I/O总线供CPU与各类I/O设备之间传递信息,DMA总线用于高速IO设备与主存之间直接交换信息,任意时刻只能用一种总线,主存总线与DMA总线不能同时对主存进行存取。三总线2CPU 与Cache之间构成局部总线,而且还直接连到系统总线上,cache可通过系统总线与主存传输信息,还有一条扩展总线可以连接IO设备。四总线由局部总线,系统总线,告诉总线,扩展总线构成。
总线判优分为集中式和分布式两种,集中式分为链式查询、计数器定时查询、独立请求方式(排队器)
总线通信控制的四种方式:同步通信,异步通信,半同步通信,分离式通信。
波特率是每秒传输的位数,比特率是每秒传输的有效数据位数(bps)
存储器技术指标:存储速度,存储容量和位价。
存储器分为主存,闪存,辅存和缓存。
分层原因:1缓存-主存层解决CPU与主存速度不匹配问题;2主存-辅存层解决系统存储容量的问题。
主存的技术指标:存储容量,存储速度(存取时间和存取周期表示)。
存储器带宽的计算方法:如存取周期为500ns,每个存取周期可访问16位,则带宽为32M 位/秒。带宽是衡量数据传输率的重要技术指标。
动态RAM的刷新方式:集中刷新(是在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读写操作‘死时间’)分散刷新(指对每行存储单元的刷新分散到每个存取周期内完成。不存在死时间,整个系统速度降低)异步刷新(前两种方式的结合,即可缩短死时间,又充分利用最大刷新间隔为2ms的特点)。
动态RAM集成度远高于静态RAM;动态RAM行列地址按先后顺序输送,减少了芯片引脚,封装尺寸也减少;动态RAM功耗比静态RAM小;动态RAM的价格比静态RAM便宜;由于使用动态元件,因此速度比静态RAM低;动态RAM需要再生,需配置再生电路,也需要消耗一部分功率。
汉明码具有一位纠错能力,所谓编码最小距离,是指在一种编码系统中,任意两组合法代码之间的最少二进制位数的差异。
汉明码C1检测1、3、5、7、9;C2检测2、3、6、7、10;C4检测4、5、6、7、12配偶配奇。纠错逆向求回即可,重复位为错误位置。
提高访存速度的措施:单体多字系统(前提是指令和数据在主存内是连续存放的)多体并行系统(采用多体模块组成的存储器,每个模块有相同的容量和存取速度,能并行操作,又能交叉工作。高位交叉垂直排列,低位交叉水平排列。)
引入cache的原因和作用:IO设备向主存请求的级别高于CPU访存,出现了CPU等待IO设备访存的现象,致使CPU空等一段时间;cache使CPU可以不直接访问主存,而与告诉cache 交换信息。
程序访问的局限性原理:指令和数据在主存的地址分布不是随机的,而是相对的簇聚,使得CPU在执行程序时,访存具有相对的局部性。
命中率H=总命中次数/总访存次数。
Cache的读写操作:写直达法(写操作时数据既写入cache又写入主存),写回法(写操作时
第1页/共3页
寻找更多 ""Cache和主存的效率计算问题
第一,看命中率的定义:CPU欲访问的信息已经在Cache中的比率称之为命中率。
设程序在执行期间,Cache的命中次数是Nc,访问主存的次数是Nm,则命中率H=Nc/(Nc+Nm)
平均访问时间Ta = H?Tc+(1-H)?Tm.
看一道习题理解两种策略的不同:同时访问Cache和主存,Cache命中时中断访存 || 先访问Cache,没有时再访问主存调入Cache再从Cache中拿数据。
例:假设Cache的访问速度是主存的5t,且Cache的命中率是95%,则采用Cache后,存储器的存储性能提高多少?
解:同时访存时:Cache存储周期是t,主存的存储周期是5t
则平均访问时间:Ta = 0.95t + 0.05 * 5t = 1.2t
主存性能:5t/1.2t = 4.17倍
不同时访存时,在不命中的时候用时就不是5t,而是6t
于是:Ta = 0.95t + 0.05 * 6t = 1.25t
主存性能:5t/1.25 = 4倍
即不同时访问时,在访问Cache失败时耽误了1t时间,计算不命中的时间时加上访问Cache用时即可。
访问Cache和主存的效率计算问题
Cache介绍及Cache/主存系统的读操作原理
有关cache命中率的问题
cache和命中率的问题
是先访问TLB(MMU)还是先访问Cache
关于cache命中与缺失的计算
Cache缺失率的计算原理
Cache计算的再总结
查看 buffer cache 命中率
深入研读Cache存储的计算
没有更多推荐了,博客建立初期,技术小白还望大佬们不吝赐教~
Cache – 主存的地址映射及相关计算问题
在开始本篇博文之前,首先来介绍下问题背景,以便于初学者能更好的理解(当然其实我也是个小白),如果大家已经了解问题背景,直接跳过下面两段,不用听我多BB。
对于Cache,即高速缓存,是用来解决主存与CPU速度不匹配问 题,Cache的出现使得CPU可以不直接访问主存而直接与高速Cache交换信息。由于程序访问的局部性原理可以很容易设想只要将 CPU近期要用到的程序和数据提前从主存送到Cache,那么就可以做到CPU在一定时间内只访问Cache,这样CPU与高速Cache进行通信,就大大提高了计算机的运行速度。
在Cache – 主存的地址映射之前,首先要将主存与Cache都分成若干块,每块又包括若干个字,并使得它们的大小相同(即快内的字数相同)。在划分好块后,下面要做的就是将主存块与Cache块形成映射就行了。而这里的映射则是通过块的地址形成映射关系。对于地址映射,首先将主存地址分成两块,高n1位为主存的快地址,低n2位为快内地址。Cache同理也是这样划分。这里我原来一直有一个误区,就是认为字块中存放的是数据地址,其实不然,字块中存放的就是真正使用的数据,只是映射时使用地址来映射。在一切准备就绪后,就可以进行映射了,下面开始本篇博文的正文。
Cache – 主存的地址映射方式有很多,有直接映射,全相联映射,组相联映射。
1.直接映射
在这种映射方式下,每个主存块至于一个缓存块相对应,映射关系为:
i=j mod C 或
i=j mod 2c
其中,i为缓存块号,j为主存块号。在这种取模方式下,很容易就知道每个缓存块对应若干个主存块。
不废话直接上图:
下面针对该映射方式,举一个小例子:
当缓存接收到CPU发送来的主存地址后,只需根据中间c位字段(假设为00…01)找到缓存块1,然后根据字块1的”标记”是否与主存地址的高t位相符合,若符合且有效位为1(这里的有效位用来识别Cache存储块中的额数据是否有效,因为有时Cache中的数据是无效的,例如,在初始时刻Cache中的额内容为空,是无意义的),则表示该Cache块已和主存中的某块建立了对应关系,则可根据b位块内地址从Cache块中取得对应的字,即找到CPU发来的主存地址在缓存中所对应的信息;若不符合,或者有效位为”0”,则主存读入心得字块来代替旧的字块,同时将信息送往CPU,并修改Cache“标记”位。如果有效位为”0”,还得将有效位置为 “1”。
小结:直接相联映射方式的缺点是不灵活,每个主存块只能按照取模固定地映射到某个缓存块,即使缓存内其他块空着,也不能用来映射。因而如果程序恰好要重复地使用对应同一缓存块的不同主存块,那么久需要不同的替换,这样会降低命中率。
2.全相联映射
为了解决直接相联映射不灵活的问题,出现了全相联映射。全相联映射不是通过字块号来寻找字块,而是将主存地址中的标记与缓存中每个字块的标记进行比较,如果找到与之相同标记的缓存块,则表明所访问的主存地址在缓存中,之后在Cache中找到缓存块后,再根据主存地址的低b位找到快内地址,这样就找到对应的字,也就是需要的数据。因而在这种映射方式下,主存地址中只需要主存字块标记和字块内地址就行。具体的映射和主存地址格式如下:
小结:全相联映射允许将主存中的每一字块映射到Cache中的任意一块位置上。显然这种映射方式相对于直接映射,更加灵活,因而命中率也更高,缩小了块冲突。
由于需要将主存地址中的标记与每一个缓存块的标记进行比较,也就使其具有了”按内容寻址”的特点。同时也因为这个特点,所需的逻辑电路较多,成本也比较高,实际的Cache还要采用各种措施来减少比较次数。
3.组相联映射
针对上述直接映射和全相联映射出现的问题,现在出现一种折中的映射方式,即下面介绍的组相联映射。该映射方式将所有Cache分为Q组,每组有R块,则有以下关系:
i =j mod Q
其中i,j的含义与直接映射中的含义一致。上述表达式意思即为某一主存块按模Q将其映射到缓存的第i组内,具体步骤即主存地址格式如下:
这里之所以说组相联映射是直接映射和全相联映射的折中,是因为按照直接映射中取模的方式,某个主存块映射到Cache中的组是固定的,但是在组内,又按照全相联映射原则,”按内容寻址”,即通过主存字块标记可以映射到该组中任意一块Cache块。
这样就更好理解了该映射方式下主存的地址格式,首先通过组地址找到Cache块所在的组,之后按照全相联映射方式,通过和组内的每一块比较主存字块标记来寻找需要的具体字块,最后通过字块内地址在Cache块中找到有效的物理地址。
这里看似主存地址很复杂,其实只要知道Cache一共有多少组即可确定组地址的位数,之后字块内地址与前面两种映射方式所说的一致,最后通过总位数减去组地址位数和字块内地址位数即得主存字块标记位数。
有个需要记住的小知识点:若每组内有n块Cache块,则该种映射方式又称为n路组相联。
其实这里有个转化方式,当r=0,即每组内有2r=20=1块,那么此时组相联即变为直接相联,同理,r=c,每组内有2r=2c块,即所有的Cache字块都在一组,那么此时组相联即变为全相联映射。
空口吹谁都会,下面将通过两个例子更加详细和直观地介绍下主存地址格式(这两题都是唐朔飞老师《计算机组成原理》中的题目,我将用自己的语言平实简单表达出来,希望大家更好的理解):
例1.假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字为32位。问:
(1).Cache地址为多少位?可容纳多少块?
(2).主存地址为多少位?可容纳多少块?
(3).在直接映射方式下,主存的第几块映射到Cache中的第五块(设起始字块号为1)
(4).画出直接映射方式下主存地址字段中各段的位数。
(1).这里没有说按照字还是字节编址,那么按照其给的容量的格式,可以得出其默认按照字节编址。那么根据容量的计算方法:地址数*字长,则Cache的4KB可得地址数为4K,即212=8192块.
(3).Cache共有64块,则按照主存块号按照64取模为5的主存块都会映射到Cache中的第5块,则满足要求的主存块号为5,64+5,2*64+5,......,213-64+5 个最小访存单元,每个单元有一个地址,那么字块内就有64个地址,这样的话字块内地址就需要6位,即在直接映射下主存地址中b=6,由于Cache共有64个字块,所以需要6位即有26,所以Cache块地址位数为10,即c=10,由于这里按照字访存,主存地址也很容易得到为19位,对于字块内地址,字块内共有4*16位/16位=4个访存单元,所以就有4个字块内地址,所以字块内地址就有2位,即b=2,所以最后求得主存字块标记有19-10-2=7位,得到主存字块地址格式:
(2).在全相联映射下,主存地址仅由字块内地址和主存字块标记构成,而字块内地址在(1)中求得为2位,所以这里的字块内地址为19-2=17位。此时的主存地址格式为:
(3).在二路组相联映射中,每组有两个字块,所以一共有210/2=29个数据单元,地址数为220组,所以组地址为8位,即q=8,这样得到主存字块标记有20-8-2=10位,得到如下主存字块地址格式:
1.直接映射为固定的映射关系,不灵活。
2.全相联映射为灵活性映射关系,通过主存字块标记,以按内容寻址的方式查找缓存块。
3.组相联映射为上述两种的折中,主存块被分配到固定组的任意一个缓存块。
4.在求主存地址格式时,要找好各字段的位数,尤其要注意访存地址单元是字还是字节。
PS:不得不说虽然最近复习组成原理,操作系统,计算机网络,复习到头大,不过也确实让我的新博客也有了更多的素材,这才使得我的博客稍微热闹起来。这篇博客算是讲的比较详细了,因而相对于大神来说废话也比较多,其实是比较照顾比我还小白的小白,所以小白可以好好看看,大神可以点过赞之后直接绕道,哈哈~总之,祝大家复习好运~
Cache-主存的地址映射(习题)
Cache 三种的映射方法
cache和内存的地址映射方式(和组成原理讲的差不多)
主存与cache间的地址映射
主存到Cache直接映射、全相联映射和组相联映射
cache与主存的地址映射
Cache和主存地址映射关系
主存与Cache的地址映射
主存cache的地址映射
主存与Cache的地址映射方式
没有更多推荐了,谨以此记录下自己的每一点、每一滴、每一步
CPU cache(上)
一、CPU,内存和cache之间的关系
如今的CPU和二十几年前的相比,其精密程度和运作速度可谓天壤之别。在以前,CPU的工作频率和内存总线的频率是处于一个等级的,CPU对内存的访问速度也只是比对寄存器的访问速度要慢那么一点儿,所以CPU直接访问内存是再合理不过了。但是近十几年来,CPU发展迅猛,其工作频率大大增加,而内存的发展却无法跟上大哥的步伐。当然,并不是做不出访问频率高的内存,而是SRAM那样的高速度内存相对于作为普通内存的DRAM而言,成本过高。因此,一个折中的选择就是在CPU和内存之间引入高速缓存(cache),作为CPU和内存之间的渠道。CPU将接下来最有可能用到的数据存放在cache中,那么CPU是如何预测到接下来将要用到的数据的呢?这种预测是基于程序代码和数据在时间和空间上的局部性原理(locality)。所谓局部性原理,就是指由于循环结构的存在,在最近这段时间,同样的代码和数据很有可能再被使用。下图给出了CPU,cache和内存之间的基本关系
虽然计算机采用的是冯诺依曼架构,但是经验表明,将代码用的cache和数据用的cache分离开来效率更高。Intel正是从1993年开始,针对代码和数据使用相互独立的cache。随着cache的引入,cache和内存之间的工作频率差别又开始慢慢拉大,这样,又引入了下一级的cache,其容量比第一级大,速度比第一级慢。这同样是速度和经济的折中考虑,如今甚至有系统引入三级高速缓存,如下图所示
其中L1d是第一级数据缓存,L1i是第一级指令缓存,要注意的一点事该图只是一个概略的描述,实际上数据从任何一个CPU Core流向主存是不用经过高级缓存(L2,L3)的。
二、cache的操作
当CPU需要数据时,首先到cache内部去寻找,如果找到了,则称为命中了(cache hit),如果没有找到,则称为丢失(cache miss),这时CPU必须到内存去读取数据,并且将其保存在cache中以备后用。
cache中需要保存数据字在主存中的地址,cache的每个入口都被相应数据的地址所标记,当CPU要完成一次读或写操作时,会在cache中寻找匹配的标记。cache中存储的地址可以是虚拟地址,也可以是物理地址,根据cache的实现而不同。由于标记在cache中本身要占用空间,所以如果以字为粒度在cache中标记主存的地址单元那就显得有些低效。解决的办法很简单,还记得cache是基于空间的局部性原理的,由于被标记的内存字的邻近单元也有可能被使用,所以会把它们也一起加载到cache中去。因此一个cache的入口处存储的并不是单一的字,而是几个连续的字,它们被称为缓存行(cache
对应每个cache line,都有这样一个结构
data bolck存放的是缓存行中所保存的就是从主存取过来的数据,tag表示的是数据块在主存中的地址(并不是完整的地址),flag bits是一些在操作过程中涉及到的标志位。
而对于主存中的每个地址单元,我们都可以按下图的结构进行解析
我们已经知道,一个cache line对应的是主存中连续的几个字,那么这些字的低位对于映射一个cache line是没用的,比如说在一个32位系统中,一个cache line的大小是16个字,也就是64个字节,那么其低6位在映射一个cache时是没有用的,其作用是用来指定该内存单元在对应cache line中的偏移。Cache Set则指明了该内存单元位于哪一个cache set(一个cache set 可以包含一个或多个cache
line,这与cache和内存之间的映射关系有关,在后面会进行讲解),S的长度为以2为底的log(cache sets),由于一个cache set可以包含多个cache line,所以还需要高T位的tag域来指明该内存单元是位于哪个cache line中。
下面来说说flag bits域。对于指令cache来说,flag bits位只有一位,即valid位。顾名思义,valid位指明了相应的cache line中是否装载了有效的数据。系统刚上电时,所有的cache line中的valid位都被设置为invalid.对于数据cache来说,flag bits除了有valid位外,还有一个dirty位。对于cache line来说,如果读进来的数据还未被修改,则称为clean;相反,如果数据被修改了但是还没被写回内存,这时将dirty置位表示内存和cache里的数据不同步。在SMP系统中,所有的处理器都必须协调工作保证它们所看到的内存里的内容必须是一样的,这种问题被称为缓存一致性(cache
coherency).假设一个处理器的cache内对某一内存有一份clean cache copy,而这时该处理器监测到另一个处理器对相应的该内存单元发出一个写请求,那么前一个处理器将会把相应的cache line给设置为dirty,等待后者的写操作完成并进行重装载,以保证数据的同步性。显然,读操作是不会影响cache的一致性的。对于cache的实现的一些细节将在下一篇中给出。
由于个人水平有限,文中描述不当或出错之处还请指出,转载请注明出处,谢谢。
CPU与Cache、内存以及硬盘之间的数据交换
缓存一致性(Cache Coherency)入门
cache coherency
CACHE的一些基本概念
CPU体系结构之cache小结
理解cache的结构 bank
cache结构与工作原理
armv7对应的CACHE操作相关文件解析
关于CPU的Cache
关于CPU Cache和Cache Line
没有更多推荐了,您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
计算机组成原理习试卷.doc 8页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
计算机组成原理习试卷
你可能关注的文档:
··········
··········
《计算机组成原理》复习试卷
一、填空题
1、冯·诺依曼模型中,存储器是由定长存储单元组成的、按
空间;其存储程序原理是
以等同地位存放在同一存储器中;其程序流控制思想为下条指令地址由
产生、程序执行过程为循环的指令执行过程。
2、现代计算机结构中常以
为中心、通过
实现各功能部件互连;CPU中PC寄存器主要用来存放
、IR寄存器主要用来存放
3、机器中8位定点表示的无符号整数可表示的数值范围是
,8位定点补码形式表示的有符号纯整数可表示的数值范围是
4、数据编码1010010的偶检验码是
;若采用海明校验码,则需
位检验位。
5、定点加减法运算方法中,[X-Y]补=[X]补+
;定点乘法运算方法中,设[X]补、[Y]补均为n位的数据表示,则[X×Y]原为
位的数据表示。
6、存储器的容量-速度、速度-价格存在矛盾,根据
可采用层次结构存储系统满足用户需求,现代计算机的“Cache-主存-辅存”层次结构中,Cache主要解决
问题、而辅存则主要解决
7、某SRAM芯片容量为4Kbit、数据引脚为4根(双向),则地址引脚为
根;若用该芯片构成8K×8bit容量的存储器,则需该芯片
个,构成的存储器地址引脚为
8、若CPU的数据引脚为8根、地址引脚为16根(A15~A0),主存按字节进行编址,则主存最大容量为
B;若系统仅配置16KB主存(由1个SRAM芯片构成),则主存的片选信号CS#与地址有关的逻辑表达式为
9、某Cache容量为256KB、块大小为16B、采用4路组相联映像,则Cache共有
个组,按字节编址的24位的主存地址020345H可映射到Cache的第
组(组号从零开始编号),地址变换时块标记中参与比较的信息至少有
位(注意硬件表特征)。
10、页式虚拟存储器的存储管理中,与主存信息交换单位为页(其大小比Cache块
地址映像方法,常在
中设置快表(TLB)以提高地址变换速度。
11、指令系统由多种机器指令组成,机器指令常用
表示,主要由操作码、
两部分编码组成。不同机器指令的
必须互不相同,机器指令直接支持的数据类型称为
12、指令格式中,
编码方式的操作码的平均码长最短,
编码方式的指令格式最规整;顺序型、转移型指令格式中,
型指令格式常用显式方式表示下条指令地址;为便于表示下条指令地址,要求机器指令字长是存储器单元长度的
13、指令对应的操作数可存放在存储器、
这3种按地址访问的部件中;因操作数长度可能为多个存储器字长,操作数地址常用连续存储单元中的最小单元地址表示,因此,存储器操作数的存储方式有
及边界2个方面;其中,存取操作数速度较快的是边界
14、堆栈存取方式典型的特征有
,堆栈操作中,
操作先移动栈顶位置,然后才进行操作。
15、各种寻址方式中,
寻址方式不可用于数据寻址,
寻址方式的操作数存放在指令中(或称存放在IR中)。
16、CPU的基本功能包括指令(过程)控制、
、中断处理5大基本功能;为实现循环的指令控制功能,控制器中须设置称为
的寄存器存放指令地址及作为循环变量、设置称为
的寄存器存放当前指令内容;为便于实现CPU访问存储器过程与CPU内部其它操作并行,常设置称为
的寄存器存放CPU访存的存储器地址,设置称为
的寄存器存放CPU访存的数据,访存过程实际上是这2个寄存器与存储器的交互过程。
17、控制器中常用不同信号线表示不同时段,各时段的次序用各信号线上信号的
表示,各时段的长度控制由时序信号的控制方式实现,同步控制方式用统一的时钟实现时长控制,异步控制方式通过
正在加载中,请稍后...}

我要回帖

更多关于 CPU对主存进行访问的最小单位 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信