admin 管理员组

文章数量: 1184232

1.allocate

先确定一下allocate的概念,就是在cache miss的时候,去内存中读写数据过程中给这个数据分配cacheLine并存储到cache。

其中write-allocate可以分为两种情况:

  • 先读要改写数据对应的cacheLine大小的数据回来,存储到新分配的cacheLine上,然后将要修改的写数据更新到cacheLine中
  • 直接分配cacheLine,将数据存储到该cacheLine

以上两种fill cacheline的过程适用于不同的情况,第一种适用于写数据不是整个cacheLine大小,由于和内存交互的最小单元是cacheLine,所以只能先读整个cacheLine,这个过程称为读改写

显然第二种就属于完全替换整个cacheLine的情况,当然完全替换整个cacheLine也可以采用第一种方式。

必须要分清的是read trans miss对应的是read allocate;而write trans miss对应的是write allocate,即使write miss后allocate的cacheLine的fill可能需要从内存中读数据。

2.cache的读策略与read allocate

上表是ArmV8架构手册给出的memType及mem属性,在cacheability中cacheable为何只有write-Through Cacheable和Write-Back Cacheable而没有提到read的属性呢?

我们在说

本文标签: 策略 分配 Cache allocate write