- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机组织与系统结构
分页组织 页帧 0 1 7 0 1024 7168 物理地址 物理存储器 1K 1K 1K 地址 变换 映射 页 0 1 31 1K 1K 1K 0 1024 31744 映射单位 也是从虚拟存储器到物理存储器的传输单位 虚拟存储器 地址映射 虚拟地址 页号 偏移量 10 页表 到页表 的索引 页表基址 寄存器 V 访问 权限 PA + 位于物理 存储器的表 物理存 储器地址 实际上,经常采用串联方式 虚拟地址与Cache访问 CPU Trans- lation Cache Main Memory VA PA miss hit data 需要一次额外的存储访问来将虚拟地址变换成物理地址 这使得cache访问的代价非常高,而且这也是我们希望尽可能快得执行的“最内层循环” 思考:为什么总是用物理地址来访问cache? 虚拟地址cache有一个很难对付的问题! 同义问题(synonym problem):两个不同的虚拟地址可以映射到同一物理地址 = 两个不同的cache表项包含对同一物理地址的数据! 对于更新:必须更新所有具有同一物理地址的cache表项 或者 允许 存储器不一致 确定上述情况需要大量的硬件,特别是需要对物理地址标签进行相联查找以确定是否出现多次命中 或者通过软件强制实现:alias boundary:即 VA和PA相同的低位空间 cache大小 快表(TLB) 加速地址变换的一种方式是使用一种关于最近使用页表表项的特殊cache ?? 它有很多名字,但最经常使用的名字是变换旁视缓冲器(Translation Lookaside Buffer:TLB)或快表! 虚拟地址 物理地址 脏位 访问 有效位 访问方式 TLB访问时间与Cache访问时间是可比的(但要小一些) (也比主存访问时间要小得多) TLB Lookup Cache Main Memory Trans- lation 变换旁视缓冲器 就像其他的cache, TLB可以是全相联的、组相联的,也可以是直接映射的 TLB一般较小,通常即使在高性能机器中也只有128 - 256个表项。这样就可以实现全相联查找。大多数中等性能的机器使用n路组相联的组成。 CPU VA PA miss hit data hit miss 20 t t 1/2 t 使用TLB 的地址变换 减少变换时间 具有TLB的机器可以进一步降低 时钟周期数/ Cache访问 可以将Cache访问与TLB访问重叠 由于使用虚拟地址中的高位来查找TLB,而用低位来作为访问Cache的索引,因而上述策略可以工作 Cache和TLB访问重叠 TLB Cache 10 2 00 4 bytes index 1 K page # disp 20 12 相联查找 32 PA Hit/ Miss PA Data Hit/ Miss = IF cache命中 AND (cache标签 = 物理地址) THEN 将数据提交给CPU ELSE IF [cache失效 OR (cache标签 = 物理地址)] AND TLB命中 THEN 用TLB中的物理地址来访问存储器 ELSE 做正常的虚拟地址变换 重叠TLB访问的问题 重叠的访问只能当用于对cache进行索引的地址位 不会 作为虚拟地址变换的结果而改变时,才能正常工作 这通常只适用于小 cache和大页面大小 或者 高n路组相联的大cache 例如:假设cache的容量从4K增长到8K,而其他都不变 11 2 00 虚拟页号 偏移量 20 12 cache 索引 这一位被虚拟地址变换所改变,但是cache查找时也需要 解决方案: 变成8K字节的页面大小 变成2路祖相联cache (仍然使用10位索引) 1K 4 4 10 2 路组相联cache Fastest for 1 person? Which takes less time to transport 470 passengers? 1350 / 610 = 2.2X 286,700/ 178,200 1.6X To improve the ability of the compiler to fill branch delay slots, most machines with conditional branchess have introduced a cancelling or ullifiying branch. In a cancelling branch, the instruction includes the direc
原创力文档


文档评论(0)