什么是缓存大小和缓存行大小?

时间:2013-07-08 06:07:01

标签: operating-system embedded-linux systems-programming cpu-cache

我试图从DTS文件中了解以下内容。对于OS / Kernel来说,这是一个新手。

cpus {
    #address-cells = <1>;
    #size-cells = <0>;

    PowerPC,8313@0 {
        device_type = "cpu";
        reg = <0x0>;
        d-cache-line-size = <32>;
        i-cache-line-size = <32>;
        d-cache-size = <16384>;
        i-cache-size = <16384>;
        timebase-frequency = <0>;   
        bus-frequency = <0>;        
        clock-frequency = <0>;      
    };
};

有人可以提供以上的简要说明吗?

我理解以下内容。 高速缓存块大小或高速缓存行大小:在高速缓存未命中时传输的数据量。 指令缓存(I-cache):只能保存指令的缓存。 数据缓存(D-cache):只能保存数据的缓存。

i-cache-line-size是什么意思?

d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <16384>;
i-cache-size = <16384>;

在某些dts文件中,有来自引导装载程序的注释,如下所示。

cpus {
#address-cells = <1>;
#size-cells = <0>;

    PowerPC,8313@0 {
        device_type = "cpu";
        reg = <0x0>;
        d-cache-line-size = <32>;
        i-cache-line-size = <32>;
        d-cache-size = <16384>;
        i-cache-size = <16384>;
        timebase-frequency = <0>;   // from bootloader
        bus-frequency = <0>;        // from bootloader
        clock-frequency = <0>;      // from bootloader
    };
};

如何找到bootloader中的哪个文件? 使用的Bootloader是U-boot。

感谢。

1 个答案:

答案 0 :(得分:2)

DTS代码段描述了PowerPC 8313 CPU。

来自Datasheet of PowerPC 8313

  

7.1.5.2缓存单元 e300c3提供 16-Kbyte ,四路组关联指令和数据缓存。缓存块是32   字节长 ...

此外,

  

7.1.6总线接口单元(BIU)由于高速缓存是片上,回写高速缓存,因此最常见的事务是突发读取内存   操作,突发写入内存操作, ...
   ... 内存访问可能发生在64位数据总线上的单拍(1-8字节)和四拍突发(32字节)数据传输中。

基本上DTS片段配置:

  • 缓存大小(至16KB)
    完全使用板载缓存

  • 行大小(至32字节)
    有效地使用 BIU ,以便在CPU和片上缓存之间实现最快的传输。


更新:关于您从哪里开始的查询?...

  1. 最佳书籍始终是相关处理器的技术参考手册。它将充满你的硬件特有的术语,你需要耐心地了解和理解。

  2. 同时开始了解 Linux Kernel with books ,例如“Linux设备驱动程序3e”,“了解Linux内核”和“专业Linux内核架构”。

  3. 引导加载程序通常用硬件编写,并使用与Linux内核类似的语义实现,即从中大量借用。互联网上的随机博客中提供了大量的东西。在Stackoverflowkernelnewbies等邮件列表中保持活跃是定期查找它们的好方法。