【问题标题】:Copying data in cache larger than one cache line在大于一个缓存行的缓存中复制数据
【发布时间】:2015-01-07 17:38:01
【问题描述】:

在 C 中,有没有办法在缓存中复制大于一个缓存行大小的数据,例如单次内存读取是 128 还是 256 字节?

【问题讨论】:

    标签: cpu-cache


    【解决方案1】:

    答案是,这取决于您所说的“单次内存读取”是什么意思。在 CPU 级别,我们使用缓存和数据线。在内核级别,我们正在处理内存页面。在应用程序级别,我们正在处理流和特定于语言的数据类型。

    使用 C,您可以访问后者,甚至可以以特定于操作系统的方式访问内核级别的内存,但您通常无法访问 CPU 级别。 (除非你是在写内核/微内核或者做嵌入式控制器编程)其实它比缓存要复杂的多,现代CPU里面有各种各样的内存接口和总线,所以要看/what/和/where /等……

    Linux 的内核级内存接口在 C 语言中非常易于访问,并且有据可查,从 mmap() 手册页开始。

    【讨论】:

    • 我将解释我所说的“单内存读取”是什么意思。 RAM 中有一些数据不存在于缓存中。当我访问该数据时
    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2018-09-07
    • 2013-05-31
    • 2015-01-21
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多