计算机芯片的一级缓存和二级缓存是什么意思?

首先,让我们简单了解一下一级缓存。目前,大多数主流处理器都有一个一级缓存和一个二级缓存,少数高端处理器还集成了一个三级缓存。一级缓存可以分为一级指令缓存和一级数据缓存。一级指令缓存用于临时存储并向CPU传递各种运算指令;一级数据缓存是用来临时存储并向CPU交付运算所需的数据,这就是一级缓存的功能(如果你对上面的话理解有困难,请参考下图)。

那么,二级缓存的作用是什么呢?简单来说,二级缓存就是一级缓存的缓冲区:一级缓存制造成本高,所以容量有限。二级缓存用来存储CPU需要处理的数据,一级缓存不行。同样,三级缓存和内存可以看作二级缓存的缓冲区,它们的容量增加了,但单位制造成本降低了。需要注意的是,无论是二级缓存、三级缓存还是存储器都不能存储处理器操作的原始指令。这些指令只能存储在CPU的一级指令缓存中,剩下的二级缓存、三级缓存和内存只用来存储CPU需要的数据。

根据工作原理的不同,目前主流处理器使用的一级数据缓存可以分为真实数据读写缓存和数据代码指令跟踪缓存,分别被AMD和Intel采用。不同的主数据缓存设计对辅助缓存容量有不同的要求。让我们简单了解一下这两种主数据缓存设计的区别。

1.AMD一级数据缓存的设计

AMD采用的一级缓存设计属于传统的“真实数据读写缓存”设计。基于这种架构的一级数据缓存主要用于存储CPU先读取的数据。并且更多的读取数据分别存储在二级高速缓存和系统存储器中。做一个简单的假设,如果处理器需要读取一串数据“AMD ATHLON 64 3000+是好的”(不带空格),那么要读取的第一个“AMDATHL”将存储在一级数据缓存中,而剩余的“ON 64 3000+ IS GOOD”将分别存储在二级缓存和系统内存中(如下图所示)。

需要注意的是,上述假设只是对AMD处理器一级数据缓存的抽象描述。一级数据缓存和二级缓存可以存储的数据长度完全由缓存容量的大小决定,绝不是上面假设的几个字节。“真实数据读写缓存”的优点是可以直接快速读取数据,但也需要一定容量的一级数据缓存,增加了处理器的制造难度(一级数据缓存的单位制造成本高于二级缓存)。

二、英特尔一级数据缓存的设计

从P4时代开始,英特尔就采用了全新的“数据代码指令跟踪缓存”设计。基于这种架构的一级数据缓存不再存储实际数据,而是将这些数据的指令代码存储在二级缓存中(即数据在二级缓存中存储的起始地址)。假设处理器需要读取“英特尔P4好”(不含空格)这一串数据,所有数据都会存储在二级缓存中,而一级数据代码指令跟踪缓存只需要存储上述数据的起始地址(如下图所示)。

由于一级数据缓存不再存储实际数据,“数据代码指令跟踪缓存”的设计可以大大降低CPU对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的缺点是数据读取效率低于“真实数据读写缓存设计”,而且非常依赖二级缓存的容量。

在了解了一级缓存和二级缓存的大致功能和分类之后,我们来回答下面一个硬件新手提出的问题。

从理论上来说,L2缓存越大,处理器的性能越好,但这并不意味着L2缓存容量翻倍就能让处理器的性能增长翻倍。目前CPU处理的大部分数据大小在0-256 KB之间,少数数据大小在256 KB-512KB之间,只有少数数据超过512KB。因此,只要处理器可用的一级和二级缓存容量达到256KB以上,就可以应对正常的应用;512KB L2缓存足以满足大多数应用的需求。

其中,采用“真实数据读写缓存”设计的AMD Athlon 64和Sempron处理器已经拥有64KB的一级指令缓存和64KB的一级数据缓存,因此只要处理器的二级缓存容量大于或等于128KB,就不依赖于二级缓存。这也是为什么Socket 754 Sempron 3000+(128 kb L2缓存)、Sempron 3100+(256KB L2缓存)和Athlon 64 2800+(512KB L2缓存)的性能在大多数评测中非常相似的原因。所以对于普通用户来说,754 Sempron 2600+值得考虑。

另一方面,英特尔目前推广的P4和赛扬系列处理器都采用了“数据代码指令跟踪缓存”架构,其中Prescott内核的一级缓存只包含12KB一级指令缓存和16KB一级数据缓存,而Northwood内核只有12KB一级指令缓存和8KB一级数据缓存。所以P4和赛扬系列处理器都非常依赖L2缓存,赛扬D 320(256KB L2缓存)和赛扬2.4GHz(128KB L2缓存)之间巨大的性能差距就是很好的证明。赛扬D和P4 E处理器的性能差距也很明显。

最后,如果你是一个狂热的游戏爱好者或者从事多媒体制作的专业用户,那么拥有1MB L2缓存的P4处理器和拥有512KB/1MB L2缓存的速龙64处理器是你理想的选择。因为CPU的一级缓存和二级缓存在高负载运行下几乎是“满”的,此时大容量的二级缓存可以为处理器带来5%-10%左右的性能提升,对于那些要求苛刻的用户来说是绝对必要的。