set就是由一组相同index的cacheline组成。 set、way涉及cache的映射方式,直接相连、组相连和全相连,后面会详细介绍。 offset,前面我们提到过,一个cache line由多个数据组成,有时候你不需要整个cacheline数据,这个时候可以根据其中的地址低位作为offset进行索引cacheline中各个数据。 Cache映射方式 – 直接映射:每组只有一...
Way Way是Cache中的一条路径或者线索,用于寻找和替换Cache中的数据。每个Set通常有多个Way,表示不同的路径或者选择。 特点 •Way的数量与Cache的关联度相关,关联度高,则Way的数量相对较少,关联度低,则Way的数量相对较多。 •Way的选择是通过某种替换策略实现的,常用的替换策略有随机(Random)、最近最少使用(Leas...
Cache映射方式 –组相联 为了解决直接映射高速缓存中的高速缓存颠簸问题,组相联(set associative)的高速缓存结构在现代处理器中得到广泛应用。 下面以一个2路组相联的高速缓存为例,每一路包括4个高速缓存行,那么每个组有两个高速缓存行可以提供高速缓存行替换。 地址0x00、0x40或者0x80的数据可以映射到同一个组中任...
Cache映射方式 –组相联 为了解决直接映射高速缓存中的高速缓存颠簸问题,组相联(set associative)的高速缓存结构在现代处理器中得到广泛应用。 下面以一个2路组相联的高速缓存为例,每一路包括4个高速缓存行,那么每个组有两个高速缓存行可以提供高速缓存行替换。 地址0x00、0x40或者0x80的数据可以映射到同一个组中任...
Set :用index查询到的cache line可能是多个,这些index值一样的cacheline称之为一个set way:用白话来说,将cache分成了多个块(多路),每一块是一个way cache TAG :查询到了一行cache后,cachelne由 TAG + DATA组成 cache Data :查询到了一行cache后,cachelne由 TAG + DATA组成 ...
cache的内部组织架构是怎么样的?能否画出一个cache的layout图?什么是set,way? 直接映射,全关联和组相联之间有什么区别?优缺点是啥? 重名问题是怎么发生的? 同名问题是怎么发生的? VIPT会不会发生重名问题? 什么是inner shareability 和outer shareability?怎么区分?
现代的cache基本按照这个模式来组织:SET、WAY、TAG、INDEX,这几个概念是理解Cache的关键。随便打开一个数据手册,就可以看到这样的字眼: 翻译成中文就是4路(way)组(set)相联,VIPT表现为(behave as)PIPT --这尼玛什么鬼?,cacheline的长度是64字节。
16KB的cache是4way的话,每个set包括4*64B,则整个cache分为16KB/64B/4 = 64set,也即2的6次方。当CPU从cache里面读数据的时候,它会用地址位的BIT6-BIT11来寻址set,BIT0-BIT5是cacheline内的offset。 比如CPU访问地址 0000000XXXXXX 或者 1000000XXXXXX ...
由于它们红色的6位都相同,所以他们全部都会找到第0个set的cacheline。第0个set里面有4个way,之后硬件会用地址的高位如0,1,YYYY作为tag,去检索这4个way的tag是否与地址的高位相同,而且cacheline是否有效,如果tag匹配且cacheline有效,则cache命中。 所以地址YYYYYY000000XXXXXX全部都是找第0个set,YYYYYY000001XXXXXX...
Set :用index查询到的cache line可能是多个,这些index值一样的cacheline称之为一个set way:用白话来说,将cache分成了多个块(多路),每一块是一个way cache TAG :查询到了一行cache后,cachelne由 TAG + DATA组成 cache Data :查询到了一行cache后,cachelne由 TAG + DATA组成 ...