在理想情况下(资金充足),缓存与内存必然都是越大越好。但成年人有时也不免囊中羞涩,那在缓存和内存之间,到底该怎么抉择呢?
在回答这个问题之前,让我们一起先来了解下缓存和内存的具体工作内容。
内存内存(Memory)也称内存储器,是计算机的重要组成部件,其主要负责存放CPU中的运行数据以及与硬盘等外部存储器交换数据的工作。计算机中所有程序的运行都离不开内存,计算机的稳定运行离不开内存。内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
缓存CPU缓存(Cache Memoney)即数据交换的缓冲区,是位于CPU与内存之间的临时存储器,容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的。当CPU调用数据时,会首先从缓存查找,如果找到了就直接执行,可减少内存中的数据调用,从而加快读取速度。
就先缓存后内存的数据读取机制来看,更大的缓存可以带来更高的CPU读取命中率,从而减少从内存中的数据调取次数,可带来时间的大幅节省。由此可见,面对计算密集型应用,我们可以优先选择更大的缓存,以提升计算效率。
解决了选择的优先级问题,下面再让我们一起来重点深入了解下"缓存"。
缓存分级最早先的时候,CPU缓存是一个整体并且容量很低。随着计算机科学的不断演进,集成于CPU内核中的缓存已不足以满足CPU需求,由此出现了集成在与CPU同一块电路板上或主板上的缓存,称为一级缓存,而外部的暂被称为"二级缓存"。
而后,随着CPU制造工艺的发展,二级缓存真正实现了在CPU内核中的集成,并且容量也逐年提升。而且随着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传输速度。
目前,市场中较高端的CPU还会带有三级缓存,为读取二级缓存后未命中的数据而设计。最早的三级缓存被应用在AMD发布的K6-III处理器上,当时的L3缓存受限于制造工艺,并没有被集成进芯片内部,而是集成在主板上。当然,随着技术工艺的进步,目前我们所接触的L3缓存均集成于CPU内核中。
数据命中CPU在缓存中找到有用的数据被称为命中,当数据未命中时,CPU会访问内存以寻找所需数据。
正常情况下,CPU读取缓存的命中率非常高,基本都可达90%左右,也就是说下一次要读取的数据90%都在缓存中,只有10%的数据需要从内存读取。
当CPU读取一个数据时,首先从一级缓存中查找,没有找到情况下就从二级缓存中查找,如果没有再从三级缓存中查找,最后则是内存。由此可见,通过提升缓存容量,可以提升缓存中的数据量,从而进一步提高数据命中率,大大减少CPU直接读取内存的时间,使CPU读取数据时基本无需等待。
为进一步提升整体缓存容量,AMD推出了基于业界首创Hybrid bond加穿透硅通孔技术(TSV)工艺的3D V-Cache。该技术通过让L3缓存垂直堆叠,在不改变处理器面积的前提下,可用L3缓存(SRAM)总数能够增加三倍。
2021年11月9日,AMD正式发布的EPYC Milan-X处理器便搭载了3D V-Cache,通过8个CCD的堆叠,将三级缓存容量提升到了768MB,在双路系统上的三级缓冲总容量更可达到惊人的1.5GB,这也将允许计算应用程序能够将更多数据保留在 CPU 附近,从而提供更快的结果输出。并且由于每个内核可以处理更多的数据,因此能够为我们带来更低的总拥有成本(TCO)。
超集信息作为"AMD EPYC Partner Program"的"Elite Partner",已基于AMD Milan-X处理器推出了多套成熟完善的高性能计算解决方案,可为客户带来更高的性能、更好的能效和更低的总拥有成本,以应对日益提升的计算工作负载。