精品资料(2021-2022年收藏的)第十讲存储管理

上传人:痛*** 文档编号:57762179 上传时间:2022-02-24 格式:DOC 页数:7 大小:1,009.50KB
收藏 版权申诉 举报 下载
精品资料(2021-2022年收藏的)第十讲存储管理_第1页
第1页 / 共7页
精品资料(2021-2022年收藏的)第十讲存储管理_第2页
第2页 / 共7页
精品资料(2021-2022年收藏的)第十讲存储管理_第3页
第3页 / 共7页
资源描述:

《精品资料(2021-2022年收藏的)第十讲存储管理》由会员分享,可在线阅读,更多相关《精品资料(2021-2022年收藏的)第十讲存储管理(7页珍藏版)》请在装配图网上搜索。

1、第十讲 存储管理1. 在如下一段C语言程序的for循环中,void cycle(double* a) int i;double b65536;for(i=0; i3; i+) memcpy(a, b, sizeof(b);程序memcpy函数执行过程中可能发生哪些例外,各多少次。答:忽略外部中断(包括键盘,鼠标等输入),内部程序执行例外可能有: TLB例外(TLB Miss Exception) 缺页异常(Page Fault Exception)TLB例外和页大小有关,还和TLB表项以及替换算法有关(分表假设为4K、128项和最近未使用LUR,不考虑ITLB miss例外),则:65536*

2、8*2 =512*2=256*4k,也就是256次例外缺页异常具体次数和页大小有关,假设页大小为4K(假设页分配后不会被替换出去,且忽略临时变量i,以及指令代码段发生的缺页例外,假设内存足够大,页加载入主存后不会被替换):正常情况下a不会缺页,b缺页可以有128次。2. 对于指令Cache是否有必要考虑Cache别名问题?答:有必要,可能会由于cache别名导致取错指令,甚至导致Last level cache不能维护和一级指令cache之间的inclusion关系,从而导致死机。3. 假定在某一个CPU的Cache中需要64位虚拟地址,8位的进程标识,而其支持的物理内存最多有64GB。请问,

3、使用虚拟地址索引比使用物理地址作为索引的Tag大多少?这个值是否随着Cache块大小的变化而发生改变?答:由于虚拟地址有64位,进程标识为8位;而物理地址是64GB,即需要36位物理地址。这样,使用虚拟地址比使用物理地址总共增加的位数为8(6436)82836位;而保持页大小不变化,改变块的大小,增加的位数保持不变。4. 考虑一个包含TLB的当代处理器。(1)请阐述TLB、TLB失效例外、页表和Page fault之间的关系。(2)如果有这样一个机器设计:对于同样的虚拟地址,TLB命中和Page fault同时发生,这样的设计合理么?为什么?(3)现代计算机页表普遍采用层次化的方式,请解释原因

4、。答:1) TLB:Translation lookaside buffer,即旁路转换缓冲,或称为页表缓冲;里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。TLB是页表的一个子集。TLB失效例外:假如某个虚地址VA,在TLB中没有找到对应的页表项,则发生TLB失效例外(TLB miss exception)。页表:简单的说,页表是内存块的目录文件,作用是实现从页号到物理块号的地址映射。用固定大小的页(Page)来描述逻辑地址空间,用相同大小的页框(Frame)来描述物理内存空间,从逻辑页到物理页框的页面映射,这些页面映射就是一张张页表(Page Table).Page Fault:缺

5、页,就是TLB中没有虚地址VA对应的页表,主存中也没有VA对应的物理地址。这时候发生Page Fault Exception(缺页例外),需要交给操作系统处理,通常需要消耗很多的时间来处理该例外。2) 不合理,因为Page Fault发生时意味着主存中没有虚地址VA对应的页表,这是TLB中也应该没有,因为TLB里的页表都是主存中换进去的,是主存中页表的子集,应该发生TLB miss。倘若没有发生,说明TLB不是主存页表的子集,这会导致存储不一致,也违背了层次化设计的基本要求。3) 多级页表可以减少页表所占用的存储空间。比如:一个32位逻辑地址空间的计算机系统,页大小为4KB,那么页表有一百万条

6、目。假设每个条目占4B,则需要4MB物理地址空间来存储页表本身。一个虚地址(32位系统,页大小 4K) 可以被分为 :一个20位的页号 +一个12位的偏移。如果对页表进行再分页,那么页号分解为:一个10位的页号 +一个10位的偏移。因此,一个逻辑地址表示如下 :p1 是用来访问外部页表的索引, p2 是外部页表的页偏移。5. 已知一台计算机的虚地址为48位,物理地址为40位,页大小为16KB,TLB为64项全相联,TLB的每项包括一个虚页号vpn,一个物理页号pfn,以及一个有效位valid,请根据如下模块接口写出一个TLB的地址查找部分的Verilog代码。module tlb_cam(vp

7、n_in, pfn_out, hit,);其中vpn_in为输入的虚页号,pfn_out为输出的物理页号,hit为表示是否找到的输出信号,“”表示与该TLB输入输出有关的其他信号。重复的代码可以用“”来简化。答:module tlb_cam(input_valid, vpn_in, pfn_out, hit, clock);input clock;input input_valid;input 33:0 vpn_in;output 25:0 pfn_out;output hit;reg 33:0 vpn_reg;always(posedge clock) beginif(input_reg)v

8、pn_reg = vpn_in;endreg60:0 cam_content 63:0;/60:60 valid 59:34 pfn 33:0 vpnwire 63:0 entry_hit;assign entry_hit0 = cam_content060 & (vpn_in=cam_content033:0);assign entry_hit1 = cam_content160 & (vpn_in=cam_content133:0);assign entry_hit63 = cam_content6360 & (vpn_in=cam_content6333:0);assign hit =

9、|entry_hit;assign pfn_out = 26entry_hit0 & cam_content059:34 | 26entry_hit1 & cam_content159:34 | 26entry_hit63 & cam_content6359:34;endmodule6. (博士)很多处理器都提供了可变页的支持,也就是TLB的每项可以代表不同大小的页(1K/2K/4K甚至1G)。请简述Linux为了支持可变页需要进行哪些支持。答: 首先,需要内核有判断页大小是多少的机制。可以分为两种,一种是内核基于启发式的方法内自行来决定(比如对一些数据段用大页表,而指令段小页表);另一种是应

10、用程序将相关的信息传给内核(需要编译器支持)。前者复杂度高,难以得到好的效果,后者相对容易实现(因为应用程序本身对其各个数据结构更了解)。一般选用后者。 决定不同页表的大小的判断粒度。是每个地址进行判断(细粒度,这时对于不同地址的代码段,可能其页表大小不一样),还是直接根据地址段数属性(粗粒度,如数据段,代码段等)来判断(这时候,可能所有代码段的页表大小都一样)。 对应的memory allocation等函数也该需要进行修改一便用于变长页表。7. (博士) 针对linux/mips页表组织,修改TLB相关控制寄存器的格式(如果你认为必要可以增减控制寄存器或者其它处理逻辑)以减少refill例

11、外处理时间。描述你的方案,给出使用新寄存器组实现的refill例外处理代码。Linux的tlb重填代码(共18条指令)mfc0k0, CP0_BADVADDR #取发生tlb miss的地址srlk0, k0, 22 #最高10位是第一级页表的索引lw k1, pgd_current # 取页表入口指针 sllk0, k0, 2 #每项4个字节,所以索引*4=偏移adduk1, k1, k0 #*k1指向下一级页表入口mfc0k0, CP0_CONTEXT #context包含失效的虚页号lwk1, (k1) #取出第二级页表srlk0, k0, 1andk0, k0, 0xff8 #算出第二

12、级页表的偏移adduk1, k1, k0lwk0, 0(k1) #成对存放,一个偶数页lwk1, 4(k1) #加一个奇数页srlk0, k0, 6 #移出6位无用的位mtc0k0, CP0_ENTRYLO0 #写入偶数页表项srlk1, k1, 6mtc0k1, CP0_ENTRYLO1 #写入奇数页表项tlbwr #写入TLB的一个随机项eret #异常返回tlbwr #写入TLB的一个随机项eret #异常返回 所做的改动:1)使BadVAddr Register低10位存放发生tlb miss的地址的高10位,高位补0;2)增加一个BadVAddr2 Register存放发生tlb m

13、iss的地址的中间9位(一个VPN对应两个PFN);3)修改EntryLo0,EntryLo1寄存器,使PFN存放在寄存器地位,6位有效位存放在PFN之后。通过上述修改可以减少逻辑移位指令,修改之后的代码为:mfc0k0, CP0_BADVADDR #取发生tlb miss的地址的高10位 lw k1, pgd_current # 取页表入口指针 sllk0, k0, 2 #每项4个字节,所以索引*4=偏移adduk1, k1, k0 #*k1指向下一级页表入口mfc0k0, CP0_BADVADDR2 #context包含失效的虚页号lwk1, (k1) #取出第二级页表adduk1, k1

14、, k0lwk0, 0(k1) #成对存放,一个偶数页lwk1, 4(k1) #加一个奇数页mtc0k0, CP0_ENTRYLO0 #写入偶数页表项mtc0k1, CP0_ENTRYLO1 #写入奇数页表项tlbwr #写入TLB的一个随机项eret #异常返回使用两级页表,共13条指令。 8. (博士)请提出一种结构级的改进措施,降低TLB的功耗,并用verilog实现。答:可以考虑利用局部性原理进行TLB预比较(用一个小buffer存储当前命中的比较项,相当于增加了一个TLB的cache,这样当命中时,由于比较项数少,可以加快速度,降低功耗)。也可考虑参照Filter-TLB,Victi

15、m-TLB,Bank-TLB技术。Tlb_cache rtl如下:module tlb_search(input_valid, vpn_in, pfn_out, hit, clock);input input_valid;input 33:0 vpn_in;input clock;output 25:0 pfn_out;output hit;reg 60:0 tlb_cache;reg 60:0 cam_content 63:0;/60:60 valid 59:34 pfn 33:0 vpnwire hit_fast = tlb_cache60 & (vpn_in=tlb_cache33:0)

16、;reg 33:0 vpn_reg;reg 25:0 pfn_reg;reg input_reg;reg hit_reg;always(posedge clock) begininput reg = input_valid;hit_reg = hit_fast;endalways(posedge clock) beginif(input valid & hit_fast) beginpfn_reg = tlb_cache59:34;endif(input valid & !hit_fast) beginvpn_reg = vpn_in;endendwire 63:0 entry_hit;ass

17、ign entry_hit0 = cam_content060 & (vpn_reg=cam_content033:0);assign entry_hit1 = cam_content160 & (vpn_reg=cam_content133:0);assign entry_hit63 = cam_content6360 & (vpn_reg=cam_content6333:0);assign hit = hit_reg | (|entry_hit);assign pfn_out = hit_reg ? pfn_reg :(26entry_hit0 & cam_content059:34 |26entry_hit1 & cam_content159:34 |26entry_hit63 & cam_content6359:34);endmodule

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!