1
161
在Linux上(有一个相当新的内核),您可以从/sys中获取这些信息:
此目录对于每个缓存级别都有一个子目录。每个目录都包含以下文件:
这将提供有关缓存的更多信息,包括缓存线大小(
|
2
122
在Linux上,查看sysconf(3)。
您还可以使用getconf从命令行获取:
|
3
111
我一直在做一些缓存线的工作,需要编写一个跨平台的函数。我把它交给了github的回购协议 https://github.com/NickStrupat/CacheLineSize ,或者您可以使用下面的源代码。你想怎么做就怎么做。
|
4
30
在x86上,可以使用 CPUID 带函数2的指令,用于确定缓存和TLB的各种属性。解析函数2的输出有些复杂,所以我将介绍 Intel Processor Identification and the CPUID Instruction (PDF)。 要从C/C++代码中获取这些数据,您需要使用内联汇编、编译器内联函数或调用外部程序集函数来执行CPUID指令。 |
5
8
如果使用的是SDL2,则可以使用此函数:
它返回一级缓存线大小的字节数。 在x86_64计算机中,运行以下代码段:
生产
我知道我有点晚了,但只是给未来的访客添加信息。 SDL文档目前说返回的数字是以KB为单位的,但实际上是以字节为单位的。 |
6
6
在Windows平台上: 从 http://blogs.msdn.com/oldnewthing/archive/2009/12/08/9933836.aspx
|
7
4
ARMV6及以上
例如,来自 Cortexâ¢-A8 Technical Reference Manual :
不要假设arm处理器有一个缓存(显然,有些可以在没有缓存的情况下配置)。确定它的标准方法是通过
|
8
2
您也可以通过测量一些时间来尝试以编程的方式完成。显然,它并不总是像cpuid等那样精确,但它更便于移植。阿特拉斯在它的配置阶段,你可能想看看它: |
user3732361 · 读取大文件时如何选择块大小? 6 年前 |
Sector · 将参数传递给自己的execv内核实现 6 年前 |
Arka Pal · 关闭管道中未使用的端部 6 年前 |
Nat · 释放malloc内存时程序停止工作 6 年前 |
Mengfan Ma · 作者所说的操作系统中的目录结构是什么意思? 6 年前 |
Mengfan Ma · 在何处执行磁盘调度 6 年前 |