根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令
追踪缓存2种,它们分别被AMD和Intel所采用。不同的一级数据缓存设计对于
二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。
AMD一级数据缓存设计
AMD采用的
一级缓存设计属于传统的“实数据读写缓存”设计。基于该架构的一级数据缓存主要用于存储CPU最先读取的数据;而更多的读取数据则分别存储在
二级缓存和
系统内存当中。做个简单的假设,假如处理器需要读取“AMD ATHLON 64 3000+ IS GOOD”这一串数据(不记空格),那么首先要被读取的“AMDATHL”将被
存储在一级数据缓存中,而余下的“ON643000+ISGOOD”则被分别存储在二级缓存和
系统内存当中(如下图所示)。
需要注意的是,以上假设只是对AMD处理器一级
数据缓存的一个抽象描述,一级数据缓存和
二级缓存所能存储的数据长度完全由缓存容量的大小决定,而绝非以上假设中的几个字节。“实数据读写缓存”的优点是数据读取直接快速,但这也需要一级
数据缓存具有一定的容量,增加了处理器的制造难度(一级数据缓存的单位制造成本较
二级缓存高)。
Intel一级数据缓存设计
自P4时代开始,Intel开始采用全新的“数据代码指令
追踪缓存”设计。基于这种架构的一级数据缓存不再存储实际的数据,而是存储这些数据在
二级缓存中的指令代码(即数据在二级缓存中存储的起始地址)。假设处理器需要读取“INTEL P4 IS GOOD”这一串数据(不记空格),那么所有数据将被
存储在
二级缓存中,而一级数据代码指令
追踪缓存需要存储的仅仅是上述数据的起始地址(如下图所示)。
由于一级
数据缓存不再存储实际数据,因此“数据代码指令
追踪缓存”设计能够极大地降CPU对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的弊端在于数据读取效率较“实数据读写缓存设计”低,而且对
二级缓存容量的依赖性非常大。