一道关于计算机系统地址翻译的综合设计题

本人初学CS,终于弄明白了一个小知识点,有感而发。(本题知识点对应《深入理解计算机系统(第三版)》9.6.4节)

若一计算机系统的情况如下:

  1. 内存是按字节寻址,字长为1字节(而非4字节);
  2. 虚拟地址长度:25位/bits,虚拟页面大小是 2*1024 字节;
  3. 使用一级页表;
  4. 物理页号PPN的长度是8位/bits;
  5. L1 d-cache是物理寻址、直接映射(每组一行),行大小8字节,共8个组,当前数值如表1所示。

表1 L1 d-cache的数值

索引

标记位

有效位

字节0

字节1

字节2

字节3

字节4

字节5

字节6

字节7

0

35E

1

42

A0

75

50

42

0

05

50

1

27B

1

08

E3

00

A7

13

00

8B

52

2

C54

1

3F

75

AB

11

25

78

9A

00

3

B57

0

33F

52

A0

23

45

79

78

10

4

A32

1

97

3A

91

D3

3F

12

86

22

5

C30

1

30

62

15

4C

48

A1

12

5C

6

B26

1

01

25

3E

62

1F

C4

85

12

7

01A

1

98

3A

12

D39

3F

3C

4D

5E

回答以下问题:

1.计算页表条目PTE的总数量 、物理地址的位数、虚拟页号VPN的位数。

        虚拟页面的大小为2^11字节,则虚拟地址的低11位为VPO,剩余的14位为VPN,每一个VPN相当于页表条目数组的索引,故PTE的数量为2^14个。

        物理地址的位数:在地址翻译中,VPO被直接作为PPO,故VPO的位数与PPO的位数是相同的,都为11位,而PPN为8位,则物理地址的长度为8+11=19位。

2.在L1 d-cache寻址中,块偏移、组索引、标记位的位长分别是多少?

        L1 d-cache的行大小是8字节,所以块偏移CO是3位;有8个组,所以组索引CI有3位,而物理地址有19位,减去CO和CI的位数,剩余的13位则是标记位CT的位数。

3.在CPU从物理地址0x31511读取1字节数据,在访问缓存时,对应的组索引、标记位的数值、能否命中缓存、若能命中数值是多少?

        0x31511对应的二进制数为011 0001 0101 0001 0001,故CO=001,CI=010,CT=0 1100 0101 0100,对应的十六进制数为:0xC54。因为0xC54在L1缓存中且有效位被置为1,所以能够命中。又因为CO=1,所以命中的数值是第二个字节0x75。

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值