3

我试图从 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>;   
        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
    };
};

如何从引导加载程序中的哪个文件中找出?使用的引导加载程序是 U-boot。

谢谢。

4

1 回答 1

2

DTS 片段描述了 PowerPC 8313 CPU。

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 Device Drivers 3e”、“Understanding the Linux Kernel”和“Professional Linux Kernel Architecture”等书籍开始复习您对Linux Kernel 的理解。

  3. 引导加载程序通常是在考虑硬件的情况下编写的,并使用与 Linux 内核类似的语义来实现,即大量借用它。大量的东西可以在互联网上的随机博客中找到。在Stackoverflow和kernelnewbies等邮件列表上保持活跃是定期找到它们的好方法。

于 2013-07-11T02:31:38.267 回答