场景:
- 缓存 (L1) 大小 (
CS): 32kB - 线号(
LS):64B - 关联性 (
A): 8 - 套装尺寸 (
SS): 512B (A*LS) - 套数 (
S): 64 (C/SS) - 读/写对象 (
O) 的大小大于LS
假设(如果无效,请纠正我):
- 虚拟内存块(大小为 4kB (
SS*A) 表示为B)以类似模的方式映射到集合。换句话说,地址0x0 : 0xFFFF(块索引(BI)0)映射到集合0,0x1000 : 0x1FFF(BI1)映射到1,等等。 - 读取/写入请求(不使用非临时写入/读取)给定地址
A需要找到它BI,然后将其移动到分配的集合。例如,A= 0x4600A 将有BI= 70。这BI映射到集合 6 (BI%S)。 - 为了正确(没有错位)读/写
O要缓存的对象( ),需要对齐LS。
问题:
- 是否会
O在缓存中串行对齐,或者它可以占用(例如)空闲插槽 0 & 4 & 5,而不是 0 & 1 & 2? O从缓存中检索分区的成本(惩罚)是多少?假设O没有划分为多个B.- 与上面相同的问题,但如果将 when
O放在两个中B,则使用两组。 - 如果
O尺寸大于SS(512B)会怎样?会不会把数据移到L2,一步步把数据移到L1?它会使用其他套装吗? - 如果 L2(和 L3 就此而言)对于所有数据来说都太小了怎么办?