导图社区 408 计算机组成原理-存储器部分
计算机考研(针对408-王道以及教材-唐朔飞版),总结知识点较全,有易错点注解等,希望这份脑图会对你有所帮助。
编辑于2023-08-20 16:09:39 湖南存 储 器
分类
存储介质:
半导体
磁表面
磁芯
光盘
存取方式
RAM:任何一个存储单元内容都可以随机存取且存取时间和存储单元物理位置无关。
ROM:只能读出,不能随意写入,但是也可随机存取
串行访问存储器:读写操作需按物理位置的先后顺序寻址
计算机中作用
主存
RAM:任何一个存储单元内容都可以随机存取且存取时间和存储单元物理位置无关
静态RAM(SRAM):(实现靠近处理器(即Cache)那一层)
基本单元电路:教材P77 。 双稳态触发器(6个晶体管(MOS管))作为存储元,故速度快,但也集成度低,功耗高,价格贵
非破坏性读出(读出后不需要再生)
动态RAM(DRAM):(实现主存储器那一层)
基本单元电路:教材P81 +82 + 84。读放大器/刷新放大器用于刷新
电容存储信息。故为破坏性读出,但只需要一个晶体管可作基本存储元。故虽存储速度慢,但也容易集成,功耗低,容量大,价格低
刷新方式
刷新的实质:将原存的信息读出,通过刷新放大器形成原信息并重新写入的再生过程
集中刷新
利用一段时间依次对所有行进行刷新操作。期间不能对存储器进行读写操作。此段时间称为“死时间”(访存死区)
分散刷新
对每行的刷新分散到各个周期中。没有了死区,但增加了存取周期,且可能会使刷新过于频繁。降低芯片性能/系统速度
异步刷新
上述两种结合(刷新周期除以行数 = 两次刷新操作时间间隔)。缩短死时间,但是如果能在CPU对指令的译码阶段(cpu不访问存储器)对其进行刷新,则可以更好提高整机工作效率(避免需独占时间来刷新以及死区问题)。
1.刷新对CPU透明,即不依赖外部访问 2.刷新是存储器中所有芯片同时进行,故不需要选片 3 .所指电路图可知刷新单位是行,芯片内部自动生成
行列地址分开送(先行后列):(教材P83图上控制线有:WE、RAS、CAS(片选RAS共用)) 注:题中问最少时,保证选项中有的前提下,行选线也可以作为片选
地址复用:同地址表示范围地址线减半
读时序
先RAS后CAS
WE在CAS有效前(有效)
CAS有效一段时间后读出数据
CAS失效后一段时间 数据有效才撤除
写时序
列有效 前 WE写入数据有效
写入数据保持时间在CAS失效后一段时间GG
ROM:只能读出,不能随意写入,但是也可随机存取(教材88start)
MROM:是否有MOS管 决定 0/1
PROM:(允许用户用专门设备写入,写入后无法改变)熔丝断0,反之1。破坏性编程,断不可恢复。
EPROM:利用编程器写入,多次改写(紫外线照射),但次数有限,写入时间过长。
EEPROM:前者的改进,电气擦除再重写。可局部、全部擦写了
Flash Memory:究极升级,具有了RAM的功能
U盘
闪存(Flash Memory)
辅存缓存(Cache)
信息可保存性
易失性存储器(如:RAM):断电后信息消失
非易失性存储器(如:ROM,磁盘等):断电后信息仍然保持
杂
存储单元:由地址码相同的多个存储元构成
双端存储器: 有组独立的读写控制电路(同时全为读时不会冲突)
I/O控制电路:用以控制被选中的单元的读出或写入(王道89还有一些其他的东西,但是基本都知道不写了)
存储器与cpu的连接
主存容量的扩展
位扩展:增加存储字长(数据线分别连高、低位),片选多个
字扩展:增加存储器字的数量(即扩容)(地址线用来做片选),片选单个
字、位扩展:结合两个一起
存储芯片的地址分配和片选
线选法:一对一,一次只能一位(根)有效
译码片选法:以少选多(不叫一对多,不形象)
连线
尽量把所有地址线都用上吧,对连芯片而言,个人理解,王道104有自己写的理由。
其他自己拿脑子,尽量使连线简单
教材P92-99有好题,看一看写一写
做题注意点
高位交叉存储器可以实现单个存储周期对模块的连续访问,只是由于程序访问的连续性使其实际运行上很难有机会
片选线是紧挨着地址线的,欲确定片选线可以通过先确定地址线来确定片选线(P104 T7)
设计时当 有/需要 多个芯片时不要忘记有还需设计片选线(P105 T14)
为了使地址引脚数少,应该尽量减少行列数的差,同时刷新以行为单位,因此刷新开销通过减少行数来降低(P105 T16)
存储结构
层次结构见教材P71图
缓存主存层次解决CPU和主存速度不匹配问题
高速缓冲存储器(Cache)
一些概念
块长:块的长度/大小(每块由若干字节组成)
块数:块的个数,一般主存储器块的个数远大于cache块的个数
访问效率:访问cache的时间/平均访问时间(加权时间和)。注意cache和主存是否同时访问,会影响计算结果/计算公式,自己注意一下,很好理解
程序访问的局部性
时间局部性:现在用的信息将来一段时间内再用(一段时间内是否有重复 执行指令/调用信息)
空间局部性:现在用的信息和将来一段时间内要用到的信息在存储空间上相邻(是否有连续存放 信息/指令)
因为指令通常是顺序存放,顺序执行的,数据也一般以向量、数组等形式簇聚在一起
注意:写题目时候先把行写成块,不然容易理解出错(习惯用块了)
工作原理及流程
原理:cache按照某种策略,预测cpu在未来一段时间内欲访问的数据,装入cache
流程:cpu发送读请求
在cache中命中
CPU地址转换为cache地址
对cache进行读操作
可能在学完指令后会有一些步骤的加入,注意修改
在cache中未命中
访问主存,并把对应字所在块(一次性)从主存调入cache
cache满: 使用替换算法来选择被替换坏与之替换
cache不满:直接调入
后面的替换算法在下面有写
对于在cache中是否命中:
建立一个目录表,目录表里每个表项由: 内存地址+cache块号+有效位 构成
具体过程
登记:当一个主存块调入cache中时,会同时在一个存储主存块号和cache块号映射表的相联存储器中进行登记。
查询:CPU访存时,主存块地址A在cache的相联存储器目录表中进行查询。相联存储器目录表表项结构如右(这一部分没有写好,看不懂么事,主要理解cache内部实质结构,可以结合王道P120图一起,图前面的部分就可以看做目录表表项)
直接映射:标志位(主存块号高m位)+有效位
此说的高m位和低m位,是指m位中的高a位和低b位,a+b = m即可,下同
解释:因为一个主存块号对应了一个cache块号,所以cache块号是固定的,只需要比较高m位即可
全相联映射: 标志位 + 有效位
此中标志位 = 主存块号
解释:因为主存块可以存在任意cache块中,所以需要比较是否是同一个主存块(即比较标志位 m位)
组相联映射: 标志位+有效位
首先根据组号找到相应组,根据区号和块号在该组中进行关联查找(即并行查找),存在匹配且有效,则得表中cache块号。否则从内存中读
此中标志位 不知道咋解释,一个标志(这个cache块号应该不能由cpu地址直接得出)
解释:因为每个主存块可以存到cache组中的任意块,所以在确定组后需要比较标志位是否相同
需要注意的点
这个cache块号是主存块调入cache时登记的,不是计算的
没有考虑脏位、替换控制位等
查询2:如果找到对应地址,检测有效位是否有效,写在上面东西的后面了
映射方式
标记的实质用途:以最小的代价区分主存块
直接映射:
(CPU)地址结构:标记(高m位) + Cache块号(低m位)【表示主存块应该到哪个cache块】+块内地址 (注意这是地址结构,不是所存储的信息,只是表示地址)
上面的 cache块号 表示主存块应该去的cache块
映射特征:每块只能装入cache中唯一位置,若无则冲突,无条件替换(不需要用替换算法)
优缺点:实现简单,空间利用率低,冲突率高,从而使系统性能降低
相联存储器目录表表项结构请见工作原理及流程中 对于在cache中是否命中 的具体过程 的查询一项
全相联映射:
(CPU)地址结构:标记(m位)+块内地址
标记就是主存块号作为标记
映射特征:主存块可以存放在任意cache块中
优缺点:命中率高,判断开销大,所需额外空间开销大(其标记位位整个主存块号位)
当cache大小,主存块大小一定时,才能对三者的这类性能进行比较
组相联映射:
(CPU)地址结构:标记+组号+块内地址
区分主存块,描述不了
映射特征:每块只能装入cache中相应组中,但是可以在组中的任意块内
替换算法
随机算法(RAND):随机确定替换的cache块
先进先出算法(FIFO):最早进入的cache块进行替换(队列即可)
近期最少使用算法(LRU):一段时间内最久未访问的块 进行替换
设置一个计数器
命中:比其低的计数器加一,自身置0(大于他的不加也不会改变大小关系,所以不需要加,而小于他的如果不加会出现置0后,与先前那个“大于0”的0相等,发生错误)
未命中,还有空闲块:新装入的cache块置0,其余+1
未命中,没有空闲块:(通过置换算法选择一个cache块交换)装入的cache块置0,其余+1
最不经常使用算法(LFU):一段时间内使用次数最少的块进行替换
设置一个计数器,每访问一次被访问的计数器+1,其他不变。其他细节处理和上异曲同工
写策略
全写法(写命中) + 非写分配法(写不命中):(一般这两者结合一起用)
写命中--全写法:写入cache 同时也 写入主存
为减少直接写入主存消耗的时间 加入写缓冲:CPU同时写数据到 写缓冲和cache中(太频繁会有写饱和)
写未命中--非写分配法:直接写入主存,不进行调块(块替换)
回写法(写命中) + 写分配法(写不命中):(一般这两者结合一起用)
回写法:写入cache 不会立刻写入主存(替换时被修改过则才写回)
加入 “脏位”标记该cache块是否修改过,是则替换时需要写会主存,不是则不要(以减少写回主存开销)
写分配法:先替换cache块,再更新 此cache块
即要 直接与cache(交流) 一队,直接与主存(交流) 一队
地址各位判断:
块内容量 ~ 块内地址
(全相联时不需要块地址)cache块数 ~ 块地址
其余 ~ 标志位
主存块数~主存块位(== 标志位+cache块数 / == 标志位【因替换算法而异】)
注:
cache内存储的内容为:(脏)+(修改控制)+ 有效 + 标志 + 数据
脏 位(回写 有 / 全写 无)
修改控制位(随机算法 无 /其他算法 依情况设置)
cache和主存
两者 存储字数相同,但是存储字长不相同(易得)
标记位 仅真实存在于cache存储体中,作为cache块中的存储信息来保存而不属于cache地址码
用于表示该cache块中当前存放的是哪个主存块
对于块的划分
过小不利于利用程序访问的局部性原理
过大则不能实现尽可能 多 存多块 存有用的信息
访问效率e的计算(应该是指这个系统的访问效率)
主存cache同时访问
顾名思义,一起开始取,cache命中了 主存访问就停止,否则访问主存并替换cache(王道P117有)
主存cache非同时访问
先cache,cache没中再开始主存
注意区分近期最少使用算法和最不经常使用算法
组相联 在确定好组后的表项中可以进行 关联查找(并行查找)
题
不支持突发传送等,则每传输一次数据都需要进行一次完整的总线事务(P124 T14)
00表示地址块为0,则若以0为起始块,那111则表示第5块,而不需要+1(P124 T9)
Cache缺失由硬件完成(P246 T5)
初始化时的页面缺失也算入页面失效率(P123 T4)
cache内存储的内容为:(脏)+(修改控制)+ 有效 + 标志 + 数据,不要忘记有效位,(P124-125 T22、7)
主存辅存层次解决存储系统容量问题
虚拟存储器
组成: 由主存和辅存共同构成
地址转换(操作系统和硬件共同实现)
虚地址(逻辑地址)~ 面向用户编程
实地址(物理地址)~ 实际主存单元地址
过程概括:CPU使用虚地址时,由 辅助硬件 找出 虚地址和实地址的关系,判断这个虚拟地址对应的存储单元是否已装入内存。(一定能由虚页号找到对应项,只需看装入位是否为1即可)
已在主存,CPU 可以 直接访问 主存指示 的实际单元(里面是实页号)
不在主存,把包含该字的一页或一段调入主存,再由CPU访问(主存满时候采用替换算法进行替换)【操作系统进行缺页处理】
虚拟存储器的各式结构
页式虚拟存储器:
基本单位:页
虚拟空间(辅存空间)和主存空间都被划分成同样大小的页
(实页/页框)主存的页
(虚页)虚存的页
地址结构:
虚地址: 虚页号 + 页内地址
物理地址:物理页号+页内地址
虚—>实的地址转换(页表实现)
页表
概念等
一张存放在主存中的虚页号与实页号的对照表
(一般)保存在内存中
表项结构
有效位(装入位) + 脏位 + 引用位 + 物理页/磁盘地址
有效位:表示页面是否在主存(1,在 0,不在)
脏位:表示页面是否被修改过(利用此判断替换时是否需要写会磁盘)
引用位:用于配合替换策略进行设置(觉得应该是类似于LRU时作为计数器的那种位)【书中写的是 例如 是否实现 最先调入(FIFO位)或 最近最少使用(LRU位)策略等】
物理页:当有效时存放的为物理页
磁盘地址:当无效时存放的为磁盘地址,以便于去磁盘调用
仅对于页式虚存时的过程
CPU执行指令需要先将虚拟地址转化为实际地址
由页表基址寄存器提供页表的首地址。 而后根据虚拟地址高位部分(表示虚拟页号)找对应表项
找到对应表项且有效位为1(比较虚页号)
取出主存页号 与 虚拟地址提供的页内地址相加得到主存地址
找到对应表项有效位为0 /未找到对应表项(比较虚页号)
操作系统进行缺页处理
优点: 1.页面长度固定,页表简单,调入方便。 // 缺点: 1.程序基本不可能是页面整数倍,因此最后一页会无法完全利用而造成页内空间浪费 // 2.页 逻辑上不独立(段的划分准则使其逻辑上独立了),导致处理、保护、共享都不如段式方便
快表(TLB)
由来:页表在主存中,引用后会导致访问主存次数up,可以将经常访问的某些页 其对应的页表项放入 快表(由高速缓存组成因此访存速度更快)中
而在主存中的表则成为慢表
TLB表项: 表项内容 + TLB标记字段(表示取自 页表中 哪个虚页号 对应的 页表项)
映射方式:
全相联
标记字段为虚页号
组相联
标记字段为虚页号高位,虚页号低位表示TLB组号(用于TLB索引)
流程:以王道P138,139图为例
图简介,cache采用二路组相联。(组相联可以在表项中进行关联查找【并行查找】,139图也有说明)
【地址转换:】首先(TLB和Page(页表)并行查找):比较虚拟页号 与 标记位是否相等且有效。 (此中TLB为全相联,如果为组相联应该可以直接找到组号而不需要这么多比较器来操作吧?)
相等且有效: 则 TLB命中可以直接通过 TLB进行地址转换
转换OVER!
相等不有效/不存在相等: 则需要通过(访问主存)查页表
(图中采取了多级页表,类似于前面看见的多级存储器好像不记得了) 用其高 a/2位查找页目录(表项内容指示了在哪个页表(页表号?)) 找到页表后 根据低a/2位查找页表,且有效位为1得实页号(物理页号)
转换OVER!
若根据虚页号查找到对应项时其有效位为0,那需要去磁盘中调取页表 ,将该页调入主存,再由CPU访问【OS进行缺页处理】(操作系统应该有细说,没带书,到时候学到了记得就再补充吧)
转换OVER!
其中缺页处理流程
主存存在空闲页框
直接磁盘中读出一页到主存
主存不存在空闲页框
利用置换算法算则一页换出再从磁盘中读出一页到主存
由于是写回法换出时要注意脏位
注:地址转换【查Page和TLB过程来判断所需信息是否已经在主存中,只有在主存中才能继续进行地址转换】
【内容查找】通过所得物理页号+CPU(CPU给的为虚地址)所给页内地址将,虚拟地址转换 成 实际地址后, 根据题意看是否同时对cache和主存进行查找。
先找到cache的组号,之后在表项中进行关联(并行)查找(比较标记位、有效位)
(标记位相等且有效)找到,根据块内地址取出cache块中对应的内容送CPU
(标记位不相等/标记位相等,无效)未找到,需要从主存中进行查找
标记位相等且有效:根据块内地址取出主存块中对应的内容(数据位)送CPU
由于有了前面地址转换时对页表进行检查了看是否在主存中了,所以这里查主存必中
NULL
段式虚拟存储器:
基本单位:段
特点:按程序的逻辑结构进行划分,各段长度因程序而异
地址结构:
虚地址:段号 + 段内地址
物理地址:
虚—>实的地址转换(段表实现)
段表
概念等
表项结构
有效位(装入位)+ 段号 +段起点 + 段长 +(脏位)【书上没说但是我觉得应该要,因为采用的是回写法】
由于各段长度不一,所以需要引入 段长 (为了更快找到起点再引入 段起点)
仅对于段式虚存时的过程
CPU执行指令需要先将虚拟地址转化为实际地址
由段表基址寄存器提供段表的首地址。 而后根据虚拟地址高位(段号)找对应表项 (此前还应比较段号是否大于段表长)具体实现见os
找到对应表项且有效位为1(应该是找到后还需要判断段内地址是否大于段长, 理论上应该是这时候,详情见OS)
找到对应表项但有效位为0/未找到对应表项
优点:由于段的分界与程序的自然分界相对应,因此其具有 逻辑独立性、使其易于编译、管理、修改和保护,还便于 多道程序的共享; 缺点:由于段的长度不固定,分配空间不便,容易锻间留下碎片,不好利用造成浪费(段间碎片,属于外部碎片。页内空间浪费属于内部碎片)
段页式虚拟存储器:
程序对主存的调入、调出基本单位:页
特征: 程序按照逻辑结构分段,每段再划分为固定大小的页(仍然有分页那也有内部碎片)【而段页式中每个页可以存在内存中任何一页,使段页成为一个逻辑概念(使按逻辑结构分段),实质还是分页,故没有外部碎片】
特征补充:每个程序对应一个段表,每段对应一个页表,段长必须是页长整数倍,段起点必须是某一页的起点,每个页可以存在内存中任何一页
虚—>实的地址转换(段表+页表实现)
表项结构与上同
转换流程
首先查找段表:由段号找到段表中对应项而得到页表起始地址 再将其与虚页号合成得到页表地址,找到页表中对应项从中取出实页号,与页内地址结合形成实际地址
无效时从磁盘中调入(OS)
我觉得没缺的时候应该算硬件?然后缺页再来OS(软件)处理,所以叫软硬结合?实现地址转换?
过程省略了,和上面差不多,知道地址转换就ok了,其他已经说的很清楚了
优点:仍然是将程序按逻辑结构进行分段,保存了段式的优点(共享、易编译、保护等) 虽然本质上是分页(逻辑上的段页)【注和特征处均有解释】,导致有内部碎片,但是通过本质是分页,使其拥有段式存储优点的同时没有了外部碎片
优点:通过本质是分页,使其拥有段式存储器优点(共享、保护等)的同时没有了外部碎片 的同时还拥有了页式的优点( 结构简单,调入方便等)。【兼具两者优点】 从而仅剩了一个 存在内部碎片的缺点
注:
流程中的补充
虚地址->实地址的转换是由 OS+硬件(地址映射系统、TLB等)完成的
当查找Page时由虚页号一定能在page中找到对应表项,只需看有效位是否为1即可知道该块是否在主存中
以上过程没有考虑是否超段表长等,操作系统中会有叙述,到时候记得结合起来 (不知道页式存储器需不需要判断超过问题,这里留给OS)
概念备注
段表长是指段表的长度(可以理解为段表有多少段表项),段号不能大于段表长度(段号应该是从0/1开始) 段长指该 段的长度,段内偏移不能大于他 两者不等价
cache中的脏位是指是否在cache中进行修改 来决定 替换cache时是否写回主存。 而 页/段 表中的脏位是指是否对主存中的内容进行修改 来决定 替换页 / 段时是否需要写回磁盘(辅存)
设计(采用…方法注意事项)
遇上对虚存的设计应该考虑到:缺页(段)时访问辅存的代价很大,因此提高命中率是很关键很关键的事
由于虚存也采用了回写法解决一致性问题那么我觉得各式虚存都其页/段表都应该加入脏位?
由上,可以知道在处理一致性问题时(如写操作不能每次都同时写入磁盘),采用回写法
页表首地址 存储在 页表基址存储器中,其他类似
各缺失情况 完成部件
TLB缺失(要访问的页面对应页表项不在TLB中):软硬皆可
Page缺失(要访问的页面不在主存中):操作系统(软件)【缺页处理程序】
Cache缺失(要访问的主存块不在cache中):硬件完成
各方法产生的内/外部碎片
页式
程序大小基本不可能是页的整数倍,故最后一页无法完全利用,而产生页内碎片(内部碎片)
段式
由于段长度可变,分配空间不便,容易留下段间碎片(外部碎片)
段页式
段页式中每个页可以存在内存中任何一页,使段页成为一个逻辑概念(使按逻辑结构分段),实质还是分页,故没有外部碎片,有内部碎片
题
TLB和Page的命中率并无无关系(谁知道高频率会不会在TLB或者会不会那么多高频率呢)【王道P141 T8 c】
(王道P141 T5 )
红色为重要标记,紫色为重要部分
cache和虚存的比较
相同
作用:提高系统性能
数据信息划分:都将信息划分为若干小信息“块”,并将其作为基本传递单位(虚存的“块更大”)
所需“模块“功能:”都需要地址映射、替换算法、更新策略(回写法等)
引入原因:都通过利用程序局部性原理,将”活跃“数据放入高速部件中,以提高系统性能
不同
作用:
cache:解决系统速度问题
虚存:解决主存容量问题
实现:
cache:硬件
虚存:OS+硬件
不命中时对性能影响:由于 主存 和 硬盘的运行速度相差甚大,而cache和主存速度相 差要小一点,因此虚存系统未命中时影响更大
CPU 与 主存 、Cache有直接访问通路,CPU和辅存之间没有(cache未命中主存可以直接送给CPU,同时送给cache。而辅存必须先给主存)
整个取数据流程中所遇各缺失情况 完成部件
TLB缺失(要访问的页面对应页表项不在TLB中):软硬皆可
Page缺失(要访问的页面不在主存中):操作系统(软件)【缺页处理程序】
Cache缺失(要访问的主存块不在cache中):硬件完成
存储器的研究
主存储器
地址分配
按字寻址(每个存储字包含多个可独立寻址的字节)
按字节寻址
技术指标
存储容量 = 存储单元个数 * 存储字长(二进制代码位数) 存储单元个数 * 存储字长 / 8 (字节总数)
存储速度
存取时间:启动一次存储器操作(读写)到完成该操作所需的全部时间
读出时间
写入时间
存取周期:存储器进行两次连续独立劳动存储器操作所需最小间隔时间
由于存储器读写操作后总要有一段恢复内部状态的复原时间(对于破坏性存储器还需要时间再生),还有下面的刷新时间也是如此。故一般存取周期大于存取时间。
存储器带宽(衡量数据传输率重要指标):单位时间内存储器存取的信息量。 提高访存速度方法:
缩短存取周期(高速器件)
增加存储字长(单体多字系统)
增加存储体(多体并行系统)
层次结构(cache-主存)
多模块存储器
单体多字存储器:存储器仅一个存储体,一个存储单元多个字,以达到一个存取周期(同一地址)存取多个信息。 但指令和数据必须连续存放,一旦遇到转移指令或者操作数不能连续存放,这种方法效果就不明显。
存储体中读出的多个信息先存放在数据寄存器中,以供cpu提取使用(教材P103)mooc4.2 i2
操作数未连续存放带来的问题:由上,因此当仅写入一个时,数据寄存器其实只需要写入一个,但是会多个一起写入到主存,可能导致错误,此时需要硬件解决
转移指令也差不多
多体并行存储器
高位交叉编址(体号+体内地址):(用于存储器容量扩展)由于程序访问的局部性,cpu会一直访问单个存储体,出现单个存储体过于繁忙而其他存储体比较空闲的情况
(请结合王道P91图观看)由图可知有四个模块,假设每个存储单元有n位,那么对于M0其地址应该是 00xxx....,M1为 01xxx.....,M2为 10xxx....,M3为 11xxx.... 。
而由于程序的局部性,一般数据会连续存放,如一个程序的一段数据其地址为 010000, 010001 ,010010,010011;
而当想要把这一段数据取出来,则需要访问四次存储器(主存)中的M1
显然是不能同一时间四次同时访问M1的
附:同一时间内 同一个模块只能被访问一次(读/写 完一个数据才能继续下一个数据的读/写),不同模块才可以(真正意义并行低位交叉时会有说明)
低位交叉编制(体内地址+体号):用于存储器带带宽与访问速度的提高
(请结合王道P92图观看)由图可知有四个模块,假设每个存储单元有n位,那么对于M0其地址应该是 xxx...00,M1为 xxx...01,M2为 xxx..10.,M3为 xxx...11 。
而由于程序的局部性,一般数据会连续存放,如一个程序的一段数据其地址为 000000, 000001 ,000010,000011,000100;
而当想要把这段数据取出来,则需要分别访问M0,M1,M2,M3(M0需要访问两次,M0第一次访问完之后,才可以继续第二次访问M0)。
而M0123是可以类似于流水线一般那种工作的,可以看图3.9以及上面的
其中图上面提到的总线传输周期r在末章有提到,应该是申请、寻址、传输、结束四部分,不过可以不管,知道要有总线传输周期的延迟即可。
注:
核心题P95 T25,王道解析有误,自己做一遍
n r(总线周期) <= T,保证启动一个体后,T时间之后再次启动该体,它上次存取操作已经完成。一般是等于
*存储器的校验(教材100-101)
浮动主题
虚存这里是爹好好看慢慢看(虚存这里)
虚存这里是爹好好看慢慢看(虚存这里)