Way Way是Cache中的一条路径或者线索,用于寻找和替换Cache中的数据。每个Set通常有多个Way,表示不同的路径或者选择。 特点 •Way的数量与Cache的关联度相关,关联度高,则Way的数量相对较少,关联度低,则Way的数量相对较多。 •Way的选择是通过某种替换策略实现的,常用的替换策略有随机(Random)、最近最少使用(Leas...
set就是由一组相同index的cacheline组成。 set、way涉及cache的映射方式,直接相连、组相连和全相连,后面会详细介绍。 offset,前面我们提到过,一个cache line由多个数据组成,有时候你不需要整个cacheline数据,这个时候可以根据其中的地址低位作为offset进行索引cacheline中各个数据。 Cache映射方式 – 直接映射:每组只有一...
index : 用白话理解,其实就是在一块cache中,一行一行的编号(事实是没有编号/地址的) Set :用index查询到的cache line可能是多个,这些index值一样的cacheline称之为一个set way:用白话来说,将cache分成了多个块(多路),每一块是一个way cache TAG :查询到了一行cache后,cachelne由 TAG + DATA组成 cache Dat...
举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size:Cache总大小为32KB,8路组相连,所以每路有32K/8 = 4KB大小; 每个line的大小为64Byte,可以得出每路包含4K/64=64 个Cacheline,也就是说总共有64个组(Set)。 【文章福利】小编推荐自己的Linux内核技术交流群:【977878001】整理一些个人...
现代的cache基本按照这个模式来组织:SET、WAY、TAG、INDEX,这几个概念是理解Cache的关键。随便打开一个数据手册,就可以看到这样的字眼: 翻译成中文就是4路(way)组(set)相联,VIPT表现为(behave as)PIPT --这是什么鬼?,cacheline的长度是64字节。 下面我们来想象一个16KB大小的cache,假设是4路组相联,cacheline的...
16KB的cache是4way的话,每个set包括4*64B,则整个cache分为16KB/64B/4 = 64set,也即2的6次方。当CPU从cache里面读数据的时候,用地址位的BIT6-BIT11来寻址set,BIT0-BIT5是cacheline内的offset。 比如CPU访问地址 0 000000 XXXXXX 或者 1 000000 XXXXXX ...
2-way set associative Total size: 16 bytes (not counting meta data) Block size: 4 bytes / block t = 4, b = 2, s = 1, E = 4 在这个练习题中,我们可以得出几个结论 如果说某个 Tag 从未出现过,那么他第一次出现发生的 miss 一定是cold miss ...
(大小为一个cache line ),只有一个cache line与之对应,我们称之为”直接映射 (Direct map)”;如果该数据块可以和cache中的任意一个cache line对应,则称之为”全相联(Full-Associative)”而目前更多的实现方式是采用”N路组相连(N Way Set-Associative)”的方式,即内存中的某一块数据可能在cache中的N个位置...
1 直接映射,每个Set只有一个Cacheline。 2 组相联,多个Set,每个Set有多个Cacheline。 3 全相联,只有一个Set,所有Cacheline都在这个Set中。 其中组相联中有一个Way的概念,用来表示一个Set中Cacheline的数量。 例如一个Set中有4个Cacheline的话,就叫4路组相联( 4-way set associative)。
举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size Cache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/8/64=64 个组。 对于32位的内存地址,每个line有2^6 = 64Byte,所以地址的【0,5】区分line中的那个字节。一共...