如何找到虚拟页面偏移量的值,虚拟页面编号的值以及其他?

时间:2019-02-07 06:07:29

标签: caching virtual-memory

无法理解查找虚拟页面偏移量,物理页面偏移量的值和虚拟页面编号的过程

我曾经尝试过在各个地方进行搜索,但是我找不到用于查找以下参数的任何示例或公式。下面是一个问题的示例,但是我从实际问题中省略了虚拟地址。

给出具有以下规范的虚拟内存系统:

  • 内存是字节可寻址的。
  • 每个内存访问都是1字节字。
  • 每个虚拟地址都是16位宽。
  • 每个物理地址为12位宽。
  • 页面大小为32字节(25)
  • TLB是具有4个组的关联,共有16个条目。
  • L1数据高速缓存经过物理寻址和直接映射,具有4字节的行大小和16个集合。

如果CPU发出以下虚拟地址:(一些十六进制数字)

  1. 什么是虚拟页面偏移量?
  2. 物理页面偏移量的值是什么?
  3. TLB标签的值是什么?
  4. TLB索引的值是什么?
  5. 虚拟页码的值是多少? (二进制答案)

将十六进制数转换为二进制后,我迷路了。如何找到虚拟页面偏移量?虚拟页面偏移量和物理页面之间的区别是什么?如何找到物理页面的值?

我认为TLB标签是VPO和PPO之后的剩余数字,但是我需要知道如何首先获取VPO和PPO。我不确定什么是TLB索引。 VPN是其中一些答案的组合,但我不确定哪个。

如果将集合关联更改为2路TLB,会发生什么?会改变我找到这些值的方式吗?

最后,如果为我提供了两路设置的关联TLB和具有上述相同信息的页表,我如何确定是否存在页错误?据我了解,如果有TLB命中,就不会出现页面错误,但是如果没有,我该如何确定呢?他还谈到了实际地址,找到该地址的过程是什么?

2 个答案:

答案 0 :(得分:0)

  

什么是虚拟页面偏移量?

地址MOD页面大小

  

物理页面偏移量的值是什么?

地址/页面大小

  

TLB标签的值是什么?

您所提供的内容未知。

  

TLB索引的值是什么?

您所提供的内容未知。

  

虚拟页码的值是多少? (二进制答案)

地址/页面大小

答案 1 :(得分:-1)

  

什么是虚拟页面偏移量?
  物理页面偏移量的值是什么?

VPO是页面内字节的地址。关于物理页面,它们通常称为框架,但是偏移量定义是相同的。
VPO = VAdr % PageSize

  

TLB标签的值是什么?
  TLB索引的值是什么?

TLB索引将VAdr映射到TLB集。
Number-of-sets = number-of-TLB-entries / number-of-ways
ìndex-size =log_2(number-of-sets)
TLB标签是虚拟地址中剩余的MS位

  

虚拟页码的值是什么?

虚拟页数=虚拟地址/页面大小

如果地址为二进制abdefghijklmnopq,则其解释为(TLBTag,TLBidx,VPO)(abdefghij,kl,mnopq),虚拟页面地址为abdefghijkl

  

如果将集合关联更改为2路TLB,会发生什么?会改变我找到这些值的方式吗?

如果条目数保持不变,这会将集合数除以2,并向TLBIdx加一位(并从TLBTag中删除一位)。

  

最后,如果为我提供了两路设置的关联TLB和具有上述相同信息的页表,我如何确定是否存在页错误?据我了解,如果有TLB命中,就不会出现页面错误,但是如果没有,我该如何确定呢?

如果有TLB命中,则没有页面错误。如果存在TLB未命中,则必须通过查看过程页面表来生成页面地址。这些表指示虚拟和逻辑页面地址之间的对应关系,以及页面是否在内存中或已交换到磁盘。如果页面已交换到磁盘,则这是页面错误。这样会产生异常,操作系统必须将页面写回到内存中。

  

他还谈到了一个实际地址,找到这个地址的过程是什么?

对于像您这样的简单情况,它可以只是一个表查找。页地址为11位宽,并且2048个条目表指示相应物理帧的地址。在实际系统中,这更为复杂,通常涉及多个级联表。