我读了很多关于超标量执行,超线程,向量扩展等等。但是,我如何才能找出我的处理器实际拥有的单位和数量?它有多少整数,浮点,分支预测,向量单位,因此可以并行运行哪些指令?
我知道
$ cat / proc / cpuinfo
已经显示了超线程数,可用扩展数(MMX,SSE,AVX)等等。但我看不到可用的处理器单元。
答案 0 :(得分:2)
微架构信息(模型名称和步进除外)通常不由硬件直接提供(缓存和TLB信息是例外)。建筑信息(如支持的指令)是确定硬件使用方式所必需的,微体系结构只会影响性能。
为了确定微体系结构细节,例如可用类型的功能单元数量,执行的限制以及操作的延迟,必须使用模型名称来查找此类信息。也许有人通过方便的查找来维护这样的信息数据库,这样一个有点简单的脚本可以从/proc/cpuinfo
获取模型名称并检索所需的信息,但我怀疑不是。可以通过网络搜索手动查找,但有关处理器微体系结构的文章倾向于使用代码名称(例如,Sandy Bridge,Haswell,Piledriver,Jaguar)而不是营销名称。这意味着搜索可能会经历一个间接的步骤,首先搜索“AMD E-300微体系结构”之类的东西,找到它的代码名称是“Bobcat”,然后搜索“Bobcat microarchitecture”。
(在我看来,Real World Technology的文章是微架构的最佳文章,但AnandTech在微体系结构方面有很好的信息,还有其他技术网站有关于处理器微体系结构的文章。)
如果您对x86上的优化感兴趣,您可能已经了解了Agner Fog的The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers,它是微架构信息的良好来源。
答案 1 :(得分:0)
查看/proc/stat
和man 5 proc
。