【发布时间】:2015-01-07 17:38:01
【问题描述】:
在 C 中,有没有办法在缓存中复制大于一个缓存行大小的数据,例如单次内存读取是 128 还是 256 字节?
【问题讨论】:
标签: cpu-cache
在 C 中,有没有办法在缓存中复制大于一个缓存行大小的数据,例如单次内存读取是 128 还是 256 字节?
【问题讨论】:
标签: cpu-cache
答案是,这取决于您所说的“单次内存读取”是什么意思。在 CPU 级别,我们使用缓存和数据线。在内核级别,我们正在处理内存页面。在应用程序级别,我们正在处理流和特定于语言的数据类型。
使用 C,您可以访问后者,甚至可以以特定于操作系统的方式访问内核级别的内存,但您通常无法访问 CPU 级别。 (除非你是在写内核/微内核或者做嵌入式控制器编程)其实它比缓存要复杂的多,现代CPU里面有各种各样的内存接口和总线,所以要看/what/和/where /等……
Linux 的内核级内存接口在 C 语言中非常易于访问,并且有据可查,从 mmap() 手册页开始。
【讨论】: