我正在开发一种“缓存模拟器”,我需要知道 core 2 duo 处理器的主内存和 L2 缓存之间的传输单元的大小。有人知道吗?谢谢。
答案1
微架构
“Core 2 Duo”处理器采用Core微架构设计。
微架构细节
根据英特尔文档(PDF 第 1 卷,2-15,第 49 页),L2 缓存具有 256 位内部数据路径,因此这将是从 L2 缓存到 L1 和指令提取/解码。
几页之后(第 1 卷,2-32),当处理器核心为 3GHz、FSB 为 1333MHz 时,Intel Core 2 Duo E6850 具有 10.6GB/s 的内部数据路径。
ibus-transfer-amt/bus-clock = (256 bits / (8 bits / byte))
= 32 bytes/clock
bytes-per-sec = (10.6 GB) * (2^30 bytes/GB)
= 11,381,663,334 bytes/sec
ibus-clk-fq = (bytes-per-sec) / (ibus-transfer-amt/bus-clock)
≈ 355,676,979.19 Hz
≈ 355.7 MHz
fsb-divisor = (1333 MHz) / (355.7 MHz)
≈ 3.75
英特尔文档还列出了该处理器的 FSB 为 1333 MHz 和 10.6 GB/s,因此您应该能够以类似的方式计算出来。
答案2
如果您的 CPU 兼容 64 位,则每个通道都是 64 位宽。双通道 DDR2 内存应该有一条 128 位宽的 CPU 通道。但 CPU 与其二级缓存之间的总线应该是 64 位宽。
答案3
好的,我发现,在 x86 术语中,L2“缓存行”既是 L2 缓存中的存储分配单位和RAM和L2之间的传输单元。
在 Core 2 duo 中,缓存行宽为 64 字节,因此这回答了我的问题:)