2、直接映象及其变换 映象规则:主存中一块只能映象到 Cache的一个特定的块中 计算公式:b= B mod Cb 其中:b为 Cache的块号,B是主存的块号,Cb是 Cache的块数 整个 Cache地址与主存地址的低位部分完全相同。 块0 块1 区0 块Cb-1 块0 块 块1 块Cb+1 区1 匚块Cb1 匚块21 Cache 块Mb-Cb 块Mb-Cb+1 区M 块Mnl 主存储器 直接相联映象方式 地址变换过程 用主存地址中的块号B去访问区号存储器 把读出来的区号与主存地址中的区号E进行比较 比较结果相等,且有效位为1,则 Cache命中 比较结果相等,有效位为0,表示 Cache中的这一块已经作废。 比较结果不相等,有效位为0,表示 Cache中的这一块是空的。 比较结果不相等,有效位为1,表示 Cache中的这一块是有用的。 提高 Cache速度的一种方法: 把区号存储器与 Cache合并成一个存储器 直接映象方法的主要优点: 硬件实现很简单,不需要相联访问存储器 访问速度也比较快,实际上不进行地址变换 宜接映象方式的主要缺点:块的冲突率比较高
3—1 2、直接映象及其变换 • 映象规则:主存中一块只能映象到 Cache 的一个特定的块中。 计算公式:b=B mod Cb 其中:b 为 Cache 的块号,B 是主存的块号,Cb 是 Cache 的块数。 整个 Cache 地址与主存地址的低位部分完全相同。 块 0 块 1 区 0 块 Cb-1 块 0 块 Cb 块 1 块 Cb+1 区 1 块 Cb-1 块 2Cb-1 Cache 块 Mb-Cb 块 Mb-Cb+1 区 Me-1 块 Mb-1 主存储器 直接相联映象方式 • 地址变换过程: 用主存地址中的块号 B 去访问区号存储器 把读出来的区号与主存地址中的区号 E 进行比较 比较结果相等,且有效位为 1,则 Cache 命中。 比较结果相等,有效位为 0,表示 Cache 中的这一块已经作废。 比较结果不相等,有效位为 0,表示 Cache 中的这一块是空的。 比较结果不相等,有效位为 1,表示 Cache 中的这一块是有用的。 • 提高 Cache 速度的一种方法: 把区号存储器与 Cache 合并成一个存储器 • 直接映象方法的主要优点: 硬件实现很简单,不需要相联访问存储器 访问速度也比较快,实际上不进行地址变换 • 直接映象方式的主要缺点:块的冲突率比较高
主存地 区号E 块号B块内地址 Cache地址 块号b快内地址 块失效<[相等比较相 比较相等且有效为1 访问C 区号E(按地址访问)有效创 区表存储器 直接相联地址变换 号E 块号B 快内地址 Cache地址 块号b 块内地址 送CPU个 访问主存相等比 较相等 / 选择 E D D Dw. 有效创区号E数据D0数据D 数据D 按地址访问的 Cache 图343快速度的直接相联地址变换 3、组相联映象及其变换 映象规则 主存和 Cache按同样大小划分成块,还按同样大小划分成组 从主存的组到 Cache的组之间采用直接映象方式。 在两个对应的组内部采用全相联映象方式
3—2 主存地 址 区号 E 块号 B 块内地址 W Cache 地址 块号 b 块内地址 w 块失效 相等比较 相等 比较相等且有效为 1 E 1 访问 Cache 区号 E(按地址访问) 有效位 区表存储器 直接相联地址变换 区号 E 块号 B 块内地址 W Cache 地址 块号 b 块内地址 w 送 CPU 访问主存 相等比较 相等 1/w 选择 … … … 1 E D0 D1 … Dw-1 … 有效位 区号 E 数据 D0 数据 D1 数据 Dw-1 按地址访问的 Cache 图 3.43 快速度的直接相联地址变换 3、组相联映象及其变换 • 映象规则: 主存和 Cache 按同样大小划分成块,还按同样大小划分成组。 从主存的组到 Cache 的组之间采用直接映象方式。 在两个对应的组内部采用全相联映象方式
块0 组0 组 2Gb- 区0 块0 GbCg-Gb 组 ……}组cg1 Gb-I Cb-I=GbCa-1 G 2Gb-1 Gb CaMMe-l Cg(Me-1) GbCq(Me-1)+Gb-1 Cb-Gb=CqGb-G Gb CqMMe-1+Gb Ca-I 了CgMe-Cg Cb-l=CaB Gb CqMMe-1)-+2Gb Me-Gb=GbCaMe-Gb CqMe-1 主存储器 组相联映象方式 地址变换过程: 用主存地址中的组号G按地址访问块表存储器。 把读出来的一组区号和块号与主存地址中的区号和块号进行相联比较 如果有相等的,表示 Cache命中。 如果没有相等的,表示 Cache没有命中 提高 Cache的访问速度的一种方法: 把 Cache的地址变换与访问 Cache并行进行,并采用流水线方式工作。 把块表存储器中一个相联比较的组按块方向展开存放 用多个相等比较器来代替相联访问,加块查表的速度 组相联映象方式的优点: 块的冲突概率比较低,块的利用率大幅度提髙,块失效率明显降低。 组相联映象方式的缺点: 实现难度和造价要比直接映象方式高。 区号E 组号G 组内块号B|块内地址W
3—3 块 0 …… 组 0 Gb-1 Gb …… 组 1 2Gb-1 区 0 …… 块 0 GbCg-Gb 组 0 …… …… 组 Cg-1 Gb-1 Cb-1=GbCg-1 Gb …… 1 …… 2Gb-1 GbCg(Me-1) …… …… Cg(Me-1) GbCg(Me-1)+Gb-1 Cb-Gb=CgGb-Gb GbCg(Me-1)+Gb Cg-1 …… …… CgMe-Cg+1 Cb-1=CgGb-1 GbCg(Me-1)+2Gb- 1 块 2(Cb-1) Me-1 Cache …… Me-Gb=GbCgMe-Gb …… CgMe-1 Mb-1=GbCgMe-1 主存储器 组相联映象方式 • 地址变换过程: 用主存地址中的组号 G 按地址访问块表存储器。 把读出来的一组区号和块号与主存地址中的区号和块号进行相联比较。 如果有相等的,表示 Cache 命中。 如果没有相等的,表示 Cache 没有命中。 • 提高 Cache 的访问速度的一种方法: 把 Cache 的地址变换与访问 Cache 并行进行,并采用流水线方式工作。 把块表存储器中一个相联比较的组按块方向展开存放。 用多个相等比较器来代替相联访问,加块查表的速度。 • 组相联映象方式的优点: 块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。 • 组相联映象方式的缺点: 实现难度和造价要比直接映象方式高。 区号 E 组号 G 组内块号 B 块内地址 W
主存地址 组号 组内块号b 块内地址 Cache地址 相联比轾 相等 相联比较(Gi个块) 些区号组内块号B组内块号b 块表 组相联映象方式的地址变换 区号E区内组号G组内块号B块内地址W 主存地址 块失□组号日组内块号b工块内地址以 与 Cache地址 或 相等比 相等比 EB be elB E B 块表(按地址访问,读出的多个字段进行相联比较,为有效位) 组相联地址变换的一种实现方法 采用组相联映象方式的典型机器的 Cache分组情况 机器型号 Cache的块数Cb每组的块数 GbCache组数Cg
3—4 主存地址 组号 g 组内块号 b 块内地址 w Cache 地址 不等 相联比较 相等 相联比较(Gb个块) E 区号,组内块号 B 组内块号 b 块 表 组相联映象方式的地址变换 区号 E 区内组号 G 组内块号 B 块内地址 W 主存地址 块失效 组号 g 组内块号 b 块内地址 w 与 Cache 地址 或 ≠ 相等比 较 = ≠ 相等比 较 = ≠ 相等比 较 = …… …… E, B b e E, B b …… E, B b e …… 块表(按地址访问,读出的多个字段进行相联比较,e 为有效位) 组相联地址变换的一种实现方法 采用组相联映象方式的典型机器的 Cache 分组情况 机器型号 Cache 的块数 Cb 每组的块数 Gb Cache 组数 Cg
DEC VAX-11/780 1024 512 Amdahl 470/V6 512 256 Intel i860 D-Cache 256 128 Honeywell 66/60 512 128 Amdahl 470/V7 2048 222448 512 IBM370/168 1024 128 IBM3033 1024 16 64 Motolola 88110 I-Cachel 256 2 128 4、位选择组相联映象及其变换 映象规则 除了分块之外, Cache分组,主存按照 Cache的组大小分区 主存中的块与 Cache中的组之间是直接映象关系, 主存中的块与 Cache中组内部的各个块之间是全相联映象方式。 区0 组0 Gb-1 C Cb-Gb=CqGb-Gb Cg(Mb-1 Cb-1=CaGb-I Ca(Mb-IH1 Cache Me-1 Mb-I=CqMe-1 主存储器 图3.47位选择组相联映象方式 ●与组相联映象方式比较:映象关系明显简单,实现起来容易。 在块表中存放和参与相联比较的只有区号E,不再有组内块号B
3—5 DEC VAX-11/780 1024 2 512 Amdahl 470/V6 512 2 256 Intel i860 D-Cache 256 2 128 Honeywell 66/60 512 4 128 Amdahl 470/V7 2048 4 512 IBM 370/168 1024 8 128 IBM3033 1024 16 64 Motolola 88110 I-Cache 256 2 128 4、位选择组相联映象及其变换 • 映象规则: 除了分块之外,Cache 分组,主存按照 Cache 的组大小分区。 主存中的块与 Cache 中的组之间是直接映象关系, 主存中的块与 Cache 中组内部的各个块之间是全相联映象方式。 块 0 1 …… 区 0 块 0 组 0 …… Cg-1 Gb-1 Cg Gb Cg+1 1 …… …… 1 2Gb-1 …… 2Cg-1 …… Cb-Gb=CgGb-Gb Cg-1 …… Cg(Mb-1) Cb-1=CgGb-1 Cg(Mb-1)+1 Cache …… Me-1 Mb-1=CgMe-1 主存储器 图 3.47 位选择组相联映象方式 • 与组相联映象方式比较:映象关系明显简单,实现起来容易。 在块表中存放和参与相联比较的只有区号 E,不再有组内块号 B