当前位置:网站首页>超标量处理器设计 姚永斌 第2章 Cache --2.3 小节摘录
超标量处理器设计 姚永斌 第2章 Cache --2.3 小节摘录
2022-06-11 21:42:00 【岐岇】
2.3 多端口Cache
在超标量处理器中,为了提高性能,处理器需要能够在每周期同时执行多条load/store指令,这需要一个多端口的D-Cache,以便支持多条load/stroe指令的同时访问。
其实在超标量处理器中,有很多重要部件都是多端口结构的,比如寄存器堆register file、发射队列issue queue和重排序缓存ROB等。由于这些部件本身容量不是很大,所以即使采用多端口结构,也不会对芯片的面积和速度产生太大的影响,但是D-Cache不同,它的容量本身就很大,如果采用多端口设计,会有很大负面影响,因此需要采用一些办法来解决这个问题,本节重点介绍True Multi-port、Multi Cache Copies和Multi-banking。
2.3.1 True Multi-port
虽然在现实中,不可能对Cache直接采用多端口设计,但是本节还是看一下这种最原始的方法究竟有何缺点,这种方法使用一个多端口的SRAM来实现多端口的Cache,以一个双端口的Cache为例,所有在Cache中的控制通路和数据通路都需要进行复制,这表示它有两套地址解码器address decoder,使两个端口可以同时寻址Tag SRAM和Data SRAM;有两个多路选择器way mux,用来读取两个端口的数据;比较器的数量也需要增加一倍,用来判断两个端口的命中情况:同时还需要有两个对其器aligner等。Tag SRAM和Data SRAM本身并不需要复制一份,但是它们当中的每个Cell都需要都是支持两个并行的读取操作,但是不需要两个写端口,因为无法对一个SRAM Cell同时写两次。
此种方法需要将很多电路进行复制,因此增大了面积,且SRAM Cell需要驱动多个读端口,因此需要更长的访问时间,功耗也随之增大,所以一般不会直接采用这种方式来设计多端口Cache。
2.3.2 Multiple Cache Copies

将Tag SRAM和Data SRAM进行了复制,与2.3.1节类似,不过是将Cache进行复制,SRAM将不再需要使用多端口的结构,这样可以基本上消除对处理器周期时间的影响。但是,这种方法浪费了很多面积,而且需要保持两个Cache间的同步。例如store指令需要同时写到两个Cache中,当一个Cache line被替换,也需要对另一个Cache进行同样的操作,此设计显然非常麻烦,不是一个很优化的方法,在现代处理器中很少被使用。
2.3.3 Multi-banking
此结构是在现实当中的处理器被广泛使用的方法,它将Cache分为很多小个bank,每个bank都只有一个端口,如果在一个周期之内,Cache的多个端口上的访问地址位于不同的bank之中,那样就不会引起任何问题,只有当两个或多个端口的地址位于同一个bank之中时,才会引起bank conflict。

使用这种方法,一个双端口的Cache仍旧需要两个地址解码器、两个多路选择器、两套比较器和两个对齐器,而Data SRAM此时不需要多端口结构了,这样就提高了速度,并在一定程度上减少了面积。但是由于需要判断Cache的每个端口是否命中,所以对于Tag SRAM来说,仍旧需要提供多个端口同时读取的功能,也就是采用多端口SRAM来实现。
影响这种多端口Cache性能的一个关键因素就是bank冲突,可以采用更多的bank来缓解这个问题,使bank冲突发生的概率尽可能降低,并且还可以提高bank的利用效率,避免有用的数据都集中在一个bank的情况发生,同时,由于每个端口都会访问所有bank,这需要更多的布线资源,有可能对版图设计造成一定的影响。
2.3.4 真实的例子AMD Opteron的多端口Cache
AMD的Opteron系列处理器是64位处理器,但是考虑到现实的需求,处理器的地址并没有使用64位,它的虚拟地址virtual address是48位,物理地址physical address是40位,采用简化地址从而减少硅片面积。
Opteron处理器的D-Cache是双端口的,每个端口都是64位的位宽,双端口以为这这个Cache能够在一个周期内支持=两条load/store指令同时进行访问,它使用了multi-banking的机制来实现这个多端口的功能。
在AMD Opteron处理器的这个Cache中,data block的大小是64字节,需要6位地址进行寻址,每个data block被封为8个独立的bank,每个bank都是64位的单端口SRAM。
整个Cache的大小是64KB,采用2-way组相连,因此每一路的大小是32KB;使用Virtually-index,physically-tag的实现方式,直接使用VA虚拟地址来寻址Cache。因为每一路是32KB大小,因此需要15位地址寻址,又因为每个data block大小是64字节,因此寻址其中的每个字节需要使用VA[5:0],剩下的VA[14:6]用来寻找每个Cache set。
![]()
由于每个Cache line中的data block被划分为8个bank,每个bank是8字节宽的SRAM,所以很自然地使用VA[5:3]来找到某个bank,剩下的VA[2:0]用来从8字节中数据中找到某个字节,这种方式将两个连续的8字节数据放到两个相邻的不同的bank中,利用空间局部性原理,使得对这两个8字节数据访问落在不同的bank中。
由于Cache的每个端口在访问时候,都会同时访问两个way中的数据,然后根据Tag的比较结果来从两个way中选择命中的那个,所以Cache的一个端口在访问的时候,会同时访问到两个bank,每个way各一个。
在支持虚拟存储器的处理器中,最常见的页面大小page为4KB,这需要VA[11:0]来寻找页面内部,因此对于48位的虚拟地址来说,剩下的VA[47:12]就作为VPN(Virtual Page Number)来寻址TLB,得到物理地址中PFN(Physical Frame Number)[39:12],它用来和Tag部分进行比较,判断是否命中。
对于一个2-way组相连的Cache来说,相比于单端口的实现方式,两个端口的实现方式所需要的控制逻辑电路基本上扩大了一倍,需要两个TLB、两个Tag比较器,还需要两倍Tag存储器,Opteron处理器采用将Tag SRAM复制一份来实现双端口的SRAM,当然也可以采用真实的双端口SRAM来实现这个功能,面积也不会减少多少,速度还会变慢。
除了Cache中存储数据的Data SRAM没有被复制之外,其他的电路基本上被复制一份,因此采用multi-banking方式来实现双端口的Cache,面积会增大很度,但是它的好处是速度比较快,对处理器的周期时间有比较小的负面影响。
边栏推荐
- 二分查找 - 学习
- 剑指Offer 29.顺时针打印矩阵
- Redis transaction
- 自定义实现offsetof
- Hangzhou Electric Zhongchao 91006 guess the weight
- Leetcode-43- string multiplication
- 继承的所有特征
- 快速排序的优化
- The network connection is normal, but Baidu web page can not be opened and displayed. You can't access this website solution
- In the future, cloud expansion technology is expected to be selected as a specialized, special and new enterprise in Shanghai
猜你喜欢

Endnotex9 introduction and basic tutorial instructions
![BZOJ3189 : [Coci2011] Slika](/img/46/c3aa54b7b3e7dfba75a7413dfd5b68.png)
BZOJ3189 : [Coci2011] Slika

Leetcode-129- sum of numbers from root node to leaf node

揭秘爆款的小程序,为何一黑到底

Leetcode-104- maximum depth of binary tree

快速排序的优化

Flutter series: detailed explanation of container layout commonly used in flutter

R language book learning 03 "in simple terms R language data analysis" - Chapter 8 logistic regression model Chapter 9 clustering model

实现栈和队列

Carry and walk with you. Have you ever seen a "palm sized" weather station?
随机推荐
Matlab: 文件夹锁定问题的解决
Expérience 10 génération de courbes bezier - amélioration expérimentale - génération de courbes B - spline par point de contrôle
如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称试读版
189. rotation array
Experiment 10 Bezier curve generation - experiment improvement - interactive generation of B-spline curve
Carry and walk with you. Have you ever seen a "palm sized" weather station?
如何查看win系统的安装日期
R语言书籍学习03 《深入浅出R语言数据分析》-第十二章 支持向量机 第十三章 神经网络
C语言实现八种排序(3)
bzoj3188 Upit
RPA超自动化 | 农耕记携手云扩加速财务智能化运营
即将首发 | 业界首个零售数字化创新白皮书,解锁全链路数字化致胜秘籍
Huawei equipment configuration h-vpn
Popular science | what are the types of NFT (Part 1)
LabVIEW Arduino electronic weighing system (project Part-1)
Classes and objects (1)
Redis basic data type (list)
How to use RPA robot to start the first step of digital transformation of freight forwarding industry?
《物联网开发实战》18 场景联动:智能电灯如何感知光线?(上)(学习笔记)
每日一题 - 罗马数字转整数