11. 缓存cache
ARM架构最初开发时,处理器的时钟速度和内存的访问速度大致相似。今天的处理器内核要复杂得多,并且时钟频率可以提高几个数量级。然而,外部总线和存储设备的频率并没有达到同样的程度。可以实现能够以与内核相同的速度运行的片上 SRAM 小块,但与容量可以增加数千倍的标准 DRAM块相比,这种 RAM 非常昂贵。在许多基于 ARM 处理器的系统中,访问外部存储器需要数十甚至数百个内核周期。
高速缓存是位于核心内存和主内存之间的小而快的内存块。它在主存储器中保存项目的副本。对高速缓冲存储器的访问比对主存储器的访问要快得多。每当核心读取或写入特定地址时,它首先在缓存中查找它。如果它在缓存中找到地址,它会使用缓存中的数据,而不是执行对主存储器的访问。通过减少缓慢的外部存储器访问时间的影响,这显着提高了系统的潜在性能。通过避免驱动外部信号,它还降低了系统的功耗。
实现 ARMv8‑A 架构的处理器通常使用两级或多级缓存来实现。这通常意味着处理器的每个内核都有小型 L1 指令和数据缓存。 Cortex‑A53 和 Cortex‑A57 处理器通常使用两级或多级缓存实现,即小型 L1指令和数据缓存和更大的统一 L2 缓存,在集群中的多个内核之间共享。此外,可以有一个外部 L3 缓存作为外部硬件块,在集群之间共享。
将数据提供给缓存的初始访问并不比正常速度快。对缓存值的任何后续访问都会更快,而性能提升正是由此而来。核心硬件检查缓存中的所有指令获取和数据读取或写入,但您必须将内存的某些部分(例如包含外围设备的部分)标记为不可缓存。因为缓存只保存主内存的一个子集&#x