计算机操作系统、计算机原理 - 地址翻译

计算机操作系统、计算机原理 - 地址翻译

〇、问题模拟

(注:本问题摘自《2021操作系统考研复习指导》P202)
系统满足:

  • 有一个TLB和data cache
  • 存储器以字节为编址单位
  • 虚拟地址为14位
  • 物理地址为12位
  • 页面大小为64B
  • TLB为四路组相联,共16个条目
  • data cache是物理寻址、直接映射的,行大小为4B,共16组

一、问题分析

1.1 相关概念

TLB

快表,实现虚拟地址页和物理地址页的快速查询。TLB命中,则对应页一定在内存中(这也是快表的主要意义)。亦即快表命中,则直接可以找到内存中的页,而不用去检查页是否在内存。OS需要管理TLB。

对分页存储管理方式,TLB中存储虚拟地址的块号和物理地址的块号对应关系。

cache

可以分为数据高速缓存和代码高速缓存,由硬件自动实现,对OS透明。若cache未命中,则主存可能命中;若主存未命中,则cache一定不会命中。

cache和主存的转移单位为块,块(大小)和页(大小)没有直接关系。按虚拟地址和物理地址的分类来看,cache只识别物理地址。(注:cache和CPU的转移单位一般为字)

组相联映射和直接映射

映射来源于高速缓存的使用,TLB和cache都是高速缓存的原理,因此都存在映射需求。映射有直接映射、组相联映射、全相联映射三种方式。

记高速缓存总项数为m,内存中总项数为n,要映射内存中的第s项,映射到缓存中的第d项。
对于分组的形式,记高速缓存中的组数为g(\(\frac{m}{g}=\text{一组内的项数}\)),被映射到的组为 dg。

直接映射:\(d=s\%m\) 。直接映射的特征是内存中的连续的一组项被映射到高速缓存中连续的一段位置。

组相联映射:\(dg=s\%g\) 。组相联的特征是缓存中的一组内的项均匀分布在内存中,或者说内存的均匀的几个位置被映射到缓存中的同一组中。组间直接映射,组内相联映射。直接映射可以看作是组大小为1的级相联映射。

全相联映射:\(dg=s\%g,g=1\) 。不对缓存进行分组(只有一个组),就是全相联映射。必须逐项比对才能确定对应的位置。

1.2 地址分段

从虚拟地址到实际访存,可能需要经历TLB、cache、访物理内存三个阶段。访TLB按页查找,访cache按块查找。

对TLB,页大小为64B,即页内地址为6bit,TLB为四路组相联,即组地址为2bit。虚拟地址总共14bit,即标记位共6bit。即访TLB虚拟地址格式为

标记位(6) | 组地址(2) | 页内地址(6)

对cache,行大小为4B,即块内地址为2bit,直接映射共16组,即组地址为4bit。物理地址共12bit,即标记为共6bit。即cache物理地址格式为

标记为(6) | 组地址(4) | 块内地址(2)

1.3 取得物理地址

先查TLB,若TLB中有对应页的地址(物理页号),则将物理页号和虚拟地址页内地址拼接即得物理地址(TLB命中直接可以得到物理地址)。

若TLB未命中,则找页表(不论是几级页表)。根据虚拟地址的页号找出物理地址的页号(有效位为1),找到之后同样进行拼接即得物理地址。

若页表中对应的页号有效位为0,则表示缺页,此时产生缺页中断,进入中断处理,将页换入内存,修改页表和快表,形成物理地址。

1.4 根据物理地址访存

具有cache的访存有两种方式,一种是先访问cache,未命中时再找主存,另一种是同时访问cache和主存,若cache找到则访主存终止。按第一种模拟。

访问cache,找到对应行,若有效位为1且标记位一致,则命中。

若访问cache未命中,则去主存中查找物理地址对应的内容。

上一篇:操作系统导论-内存篇3


下一篇:使用相应版的程序集注册工具( regasm.exe) 将.dll 文件注册后提示无法定位输入程序集