Cache and Memory Subsystem
Skylake Client微架构的缓存层级结构具有如下的增强:
- 较前代具有更高的带宽
- 更大的缓冲区,可以同时处理更大的读存与写存操作
- 处理器可以同时并行地做两个页面走查(page walk),前几代只能做单页面走查。
注:据wikipedia https://en.wikipedia.org/wiki/Page_table if there is a TLB miss, the memory management unit, or the operating system TLB miss handler, will typically look up the address mapping in the page table to see whether a mapping exists. This is called a page walk. 当发生TLB未中是,内存管理单元,或操作系统的TLB未中处理程序,会在页表中查询要访问的地址是否存在。这个过程叫做页面走查。 |
- 跨页面读存储器数据产生的性能损失从前代微架构的100个周期下降为5个周期。
- 支持CLFLUSHOPT指令刷空(flush)缓存行;对于被刷空(即回写到内存)的数据,使用SFENCE指令管理访存操作的排序。
- 降低软件预取指令指定空指针(NULL pointer)时产生的性能损失
- 二级缓存从8路组相联切换为4路组相联。
表:Skylake Client微架构高速缓存参数
Level | Capacity/ Associativity | Line Size (bytes) | Fastest Latency[1] (cycles) | Peak Bandwidth (bytes/cyc) | Sustained Bandwidth (bytes/cyc) | Update Policy |
L1D | 32KB/8 | 64 | 4 | 96 (2*32B load + 1*32B store) | ~81 | Writeback |
LII | 32KB/8 | 64 | N/A | N/A | N/A | N/A |
L2 | 256KB/4 | 64 | 12 | 64 | ~29 | Writeback |
L3 (shared) | Up to 2MB per Core / Up to 16 ways | 64 | 44 | 32 | ~18 | Writeback |
注1:软件可见的延迟根据访问模式以及其他因素会产生变化。
TLB的层级结构由专用的指令TLB,数据TLB,以及混和式的二级TLB。下表中的partition列指明当超线程启用时,TLB资源的分配/共享策略。
表:Skylake Client微架构的TLB参数
Level | Page Size | Entries | Associativity | Partition |
指令ITLB | 4KB | 128 | 8 | Dynamic |
指令ITLB | 2MB/4MB | 8 per thread |
| fixed |
数据DTLB | 4KB | 64 | 4 | Fixed |
数据DTLB | 2MB/4MB | 32 | 4 | Fixed |
数据DTLB | 1GB | 4 | 4 | Fixed |
二级TLB | 4KB/2MB/4MB | 1536 | 12 | Fixed |
二级TLB | 1GB | 16 | 4 | Fixed |