当前位置: 代码迷 >> 综合 >> 计组(七)存储系统:地址映射
  详细解决方案

计组(七)存储系统:地址映射

热度:98   发布时间:2024-01-12 16:06:58.0

文章目录

  • 地址映射
    • 1.总结
      • (1)主存:
      • (2)Cache:
      • (3)相联存储器:
      • (4)关联知识
    • 2.全相联
      • (1)意思
      • (2)题
    • 3.直接映射
      • (1)意思
      • (2)题
    • 4.组相联
      • (1)意思
      • (2)题


地址映射

1.总结

(1)主存:

  • 主存地址
    用题目的主存容量求出的位数,如 4 M B = 2 22 B 4MB=2^{22}B 4MB=222B,对应22位的主存地址。

  • 块内地址
    块内地址的位数对应Cache每块的大小,如Cache每块4KB,对应 2 12 2^{12} 212,12位。

-主存地址格式在这里插入图片描述

(2)Cache:

  • Cache的总块数、Cache的总容量、Cache的每块的容量

  • Cache地址格式
    在这里插入图片描述

(3)相联存储器:

存 储 单 元 的 个 数 = 一 个 C a c h e 的 总 块 数 存储单元的个数=一个Cache的总块数 =Cache
记录着地址变换表,行数就是存储单元的个数,地址号对应Cache的块号
在这里插入图片描述

在这里插入图片描述

(4)关联知识

一个具有16KB直接相连映射cache的32位微处理器,cache的块为4个字(字长32位),内存为256MB。
问: (1) 主存地址为多少位(按字节编址),各字段如何划分?
(2)主存地址为ABCDEF8H的单元调入cache中的位置?

[知识点]:bit位(简写b)、Byte字节(简写B)、字。
[分析]:

  • 字:有16、32、64位的,题目会给出 “字对应的几位bit”。
  • 这篇说的“内存容量”、“cache容量”等等,他们的单位是“B字节”。
  • 1Byte=8bit

所以这道题就是,cache容量=4个字= 4 ? 32 b i t = 4 ? 32 / 8 B = 16 B = 2 4 B 4*32 bit=4*32/8 B=16 B=2^4B 4?32bit=4?32/8B=16B=24B,也就是对应4位。

2.全相联

(1)意思

将主存以Cache每块的容量划分。

主存的每一块均可以装入 Cache的任一块中,所以地址变换表中要得有可以存储主存块号总数那么长的位数。
在这里插入图片描述

(2)题

主存容量为 1MB,高速缓存的容量为 4KB,分为 4 块每块 1KB,全相联地址映像方式。求主存地址为 88888H 时,高速缓存地址为 ?。
在这里插入图片描述

解:
①划分位数
主存容量为 1MB,即 2 20 2^{20} 220,则主存地址共20位。
Cache每块1KB,即 2 10 2^{10} 210,则块内地址共10位。
则主存块号为20-10=10位。(或者主存块号数=主存容量÷Cache每块容量=1MB÷1KB= 2 10 2^{10} 210,则主存块号为20-10=10位。)

②拆分主存地址
88888H=1000 1000 1000 8H 8H
块内地址:对应后10位00 8H 8H
主存块号:对应前10位1000 1000 10=10 0010 0010=222H

③查地址变换表
主存块号对应地址变换表中下标1,表示为01

④合成Cache地址
01 00 1000 1000=0100 1000 1000=488H

3.直接映射

(1)意思

将主存以Cache总量划分成区,各区内再划分为每块。

主存块号与Cache 块号永远是一致的,所以只要看看地址变换表中下标为块号的那行存储的内容是否是主存区号。
在这里插入图片描述

(2)题

主存容量为 64MB,高速缓存的容量为 32KB,分为 8块每块 4KB,直接映射地址映像方式。求主存地址为 28B57A4H时,高速缓存地址为 ?
在这里插入图片描述

①划分位数
主存容量为 64MB,即 2 6 + 20 2^{6+20} 26+20,则主存地址共26位。
Cache每块4KB,即 2 2 + 10 2^{2+10} 22+10,则块内地址共12位。
块号数即Cache块数8,则块号共3位。
则主存区号共26-12-3=11位。(或者主存区号数=主存容量÷Cache总容量=64MB÷32KB= 2 26 ÷ 2 5 + 10 = 2 11 2^{26}\div2^{5+10}=2^{11} 226÷25+10=211,则主存区号共11位。)

②拆分主存地址
28B57A4H=10 1000 1011 0101 7H AH 4H
块内地址:对应后12位7H AH 4H
块号:对应其中3位101
主存区号:对应前11位10 1000 1011 0=101 0001 0110=516H

③查地址变换表
地址变换表地址101的确存在着516H

④合成Cache地址
101 7A4H=57A4H

4.组相联

(1)意思

将 Cache 先分组,组内再分块;而主存是先以 Cache 的总容量分区,区内按Cache 的方法分组,组内再分块。

主存的某号组只能装入 Cache 的同号组中,而组内的块可以装入同组号的任意一块中。

在这里插入图片描述

(2)题

主存容量为 1MB,高速缓存的容量为 8KB,分为两组,每组4块,每块 1KB,组相联地址映像方式。求主存地址为 ABCDEH时,高速缓存地址为 ?
在这里插入图片描述

①划分位数
主存容量为 1MB,即 2 20 2^{20} 220,则主存地址共20位。
Cache每块1KB,即 2 10 2^{10} 210,则块内地址共10位。
主存块号数即Cache每组块数4,则主存块号共2位。
组号共2组,则组号共1位
主存区号共20-10-2-1=7位。(或者主存区号数=主存容量÷Cache总容量=1MB÷8KB= 2 20 ÷ 2 3 + 10 = 2 7 2^{20}\div2^{3+10}=2^{7} 220÷23+10=27,则主存区号共7位。)

②拆分主存地址
ABCDEH=1010 1011 1100 DH EH
块内地址:对应后10位00 DH EH
主存块号:对应其中2位11
组号:对应其中1位1
主存区号:对应前7位1010 101

③查地址变换表
拼接:主存区号+主存块号=1010 101 11=1 0101 0111=157H
在地址变换表中第1组中找,157H对应地址变化表中组内块号下标2,表示10

④合成Cache地址
1 10 00 DH EH=1 1000 DH EH=18DEH