缓存是否具有 CPU 的字节顺序?

Do caches have the endianness of their CPU?

换句话说,L1、L2、L3 等缓存是否始终反映其 CPU 的 字节顺序?

还是始终以某些特定字节顺序将数据存储在缓存中更有意义?

是否有总体设计决策

大多数现代缓存不将数据存储为连续的字节块,而是出于布局规划或时序考虑而使用存储和交错技术。此外,大多数缓存都采用纠错技术,因此额外的位可能会与数据交错。

因此,讨论缓存的字节顺序没有任何实际意义,因为内部顺序通常会因设计考虑而被破坏。最重要的是,在大多数情况下,缓存以整行粒度提供数据,因此询问您从什么偏移量开始读取也没有意义。

最后,字节顺序是一个架构问题,它是您解释从 CPU 获得的数据的方式。它的存在是为了描述您可以在其中解释数据的可能选项。缓存是微架构的,因此根据定义,您的 CPU 功能行为应该对它们不敏感,并且它们可以自由实现它们想要的任何内部结构。 如果您有一些方法可以在内部查看缓存,并希望将其转换为一个值,那么这个问题可能仍然有意义,在这种情况下,上述考虑适用,并且每个处理器可能不同。