cache写回法 verilog实现_大金哥的超标量处理器学习笔记之2——Cache

本章首先介绍Cache的基本原理,然后叙述提高Cache性能的几种方法,接着论述多端口Cache的实现方法并给出一个AMD的真实例子,最后介绍超标量处理器通过多端口Cache的取指过程。

2.1. Cache的一般设计

超标量处理器中分支预测和cache直接决定性能,intel每次处理器升级都会提高分支预测精度和cache的命中率及速度,本章先对cache原理进行叙述。由于时间和空间相关性的存在诞生了cache,每周期需要从cache中同时读取多条指令,也同时有多条load/store指令访问cache。DRAM可看成disk和flash的cache,L1 cache又可看作L2 cache的cache,访问一次DRAM的时间,处理器内部可执行数百条指令。如果加入虚拟存储器后,cache的设计更加变化多端,本节先关注cache本身的特性,后文会再详细展开。图5是处理器中的各种cache。

33c1f9f20f78a2c639118b1efbf83c66.png
图 5 处理器中的各种cache

处理器一般为哈佛结构,即程序和数据存在不同空间,L1包括I-cache和D-cache,L1是流水线的一部分为保证速度容量较小,一般用多端口SRAM实现,L2则是指令数据共享,尽量保存更多内容,以MB为单位,可能由多核共享。对于I-cache,即使需要多个周期也可通过流水线解决除非遇到分支跳转指令才会对性能造成影响,而D-cache需要多周期访问由于数据相关性原因会造成性能下降。L2一般不需要多端口设计,延迟也不太重要,但需要高命中率。Cache主要由tag和data两部分组成,data部分保留一片连续地址的数据,tag则保留公共地址,一个tag和它对应的data组成一个cache line,如果一个data可被存在cache中的多个地方,这些被同一地址找到的多个cache line称为cache set。它们所表达的含义如图6,该图表示一种可能的结构。实际上Cache可被分为直接映射(一个数据只可放在一个地方)、组相联(一个数据可放在多个地方)、全相联(一个数据可放在任何地方),如图7。TLB和victim cache(后文均会介绍)采用全相联,L1和 L2 Cache采用组相联。

972468509586cdc8503042e32c8f6454.png
图 6 Cache的结构

00988bef065fa269b6d4a0a727daaa0d.png
图 7 Cache的三种组成方式

Cache miss的频率直接决定处理器性能,可分为以下几类:

1)Compulsory,第一次被访问的指令或数据缺失,可通过预取的方式降低;

2)Capcity,cache容量限制;

3)Conflict,多个数据映射同一位置,采用组相联但如2-way结构的cache,程序频率使用的3个数据处于同一cache set则会经常发生缺失,可利用victim cache缓解。

以上被称为3C定理,至今无法根本消除cache miss,只能缓解。

2.1.1. Cache的组成方式

首先讨论直接映射,存储器地址由tag、index和block offset构成,如图8,使用index找到cache中对应的cache line,通过tag确认是否是想要的数据块,最后再通过offset选择某个字或字节。每个cache line由valid、tag和data block构成,只有之前访问过的存储器地址,数据才会存入cache line中,相应的valid位置1。

10a7e373522312d29dd1639bcad9ced6.png
图 8 直接映射cache

直接映射cache实现最为简单,不需要替换算法,执行效率低,如两index相同的地址交替访问则会一直缺失,由此诞生组相联结构cache,如图9,存储器的中的一个数据可放在2个cache line中,仍通过index寻址,可得到两cache line,再通过tag和offset选择对应的字或字节,这两个cache line称为一个cache set。由于需要从set中选择合适的line,因此延迟更大,甚至需要流水线,但显著减少cache miss。

并行访问:tag和data分开称为tag SRAM和data SRAM,tag被读取同时,data也被读取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值