Assembly 我怎样才能知道是什么;处理器系列“;英特尔处理器正在使用中?

Assembly 我怎样才能知道是什么;处理器系列“;英特尔处理器正在使用中?,assembly,x86,cpu,intel,instructions,Assembly,X86,Cpu,Intel,Instructions,在《英特尔手册》中,有一些表包含性能监视计数器的列表,但它们非常特定于特定的处理器系列 例如,一个表列出了P6系列的计数器,另一个表列出了奔腾的计数器 在Ubuntu中,如果我使用cat/proc/cpuinfo,我会得到一行代码,上面写着cpu系列,但它是一个数字。这个数字与英特尔的处理器系列概念之间是否存在某种对应关系 我也看过英特尔,但它甚至没有提到“家庭”这个词 顺便说一句,我使用的是X3470,所以我想可能是Xeon系列,但手册中没有列出它。IMHO,不是查找该系列,而是查找CPU功能

在《英特尔手册》中,有一些表包含性能监视计数器的列表,但它们非常特定于特定的处理器系列

例如,一个表列出了
P6系列的计数器,另一个表列出了
奔腾的计数器

Ubuntu
中,如果我使用
cat/proc/cpuinfo
,我会得到一行代码,上面写着
cpu系列
,但它是一个数字。这个数字与英特尔的
处理器系列概念之间是否存在某种对应关系

我也看过英特尔,但它甚至没有提到“家庭”这个词


顺便说一句,我使用的是
X3470
,所以我想可能是
Xeon
系列,但手册中没有列出它。

IMHO,不是查找该系列,而是查找CPU功能标志,如:

“家庭”是一个模棱两可的概念。/proc/cpuinfo返回的数字是指令中的“family”字段,它给出了与此指令相关的处理器的模糊概念,并且实际上只在执行表格查找时有用,以便为不支持“processor brand string”扩展CPUID指令的处理器选择要显示的名称

您可以尝试解析“处理器品牌字符串”以获取所需的信息,但最好检查扩展CPUID指令,以查看是否支持您要查找的计数器。

特别是“X3470”,它基于Nehalem微体系结构

一般而言;对于英特尔80x86,仅限英特尔80x86(不包括安腾和至强Phi/KNC等产品,以及所有其他80x86 CPU制造商-不要忘记检查CPUID中的“供应商ID”字符串):

  • CPUID不受支持意味着它是80486或更旧的版本(有办法知道是哪个版本,但您不会在意,因为没有性能监控)
  • CPUID.family==4
    表示它是80486(无性能监控)
  • CPUID.family==5
    表示它是奔腾
  • CPUID.family==15
    表示它是一个“Netburst”(奔腾4、奔腾D、奔腾EE和一些赛扬而不是其他,一些Xeon而不是其他)
  • CPUID.family==6
    意味着它是奔腾Pro(1995年)到最新的Haswell(2014年)的任何产品,除了“Netburst”
对于
CPUID.family==6
您必须检查
CPUID.model
字段。您可以通过仔细搜索所有各种规格更新,同时低声说脏话来找到型号范围(注意:这是传统方法)。我不知道是否有一种不那么疯狂的破译方法


请注意,还有“营销废话”(针对销售人员的东西,对软件开发人员来说是完全无用的)。这包括CPU品牌名称(Xeon、Celeron、Core i7等)和CPU型号名称(“X3470”)。您正在查看的页面仅为“营销废话”。

我正在尝试查找手册中的哪个表,以获取我的计数器的事件选择标志。你能解释一下功能标志是如何起作用的吗?@merlin2011:如果CPU有X86_功能_LM,那么procinfo标志行包含“LM”字。在该页面上搜索X86_FEATURE_PDCM,如果CPU具有该功能,那么同一行将包含一些单词,可能是“PDCM”。如果您想了解性能计数器,您应该了解特性,而不是CPU系列。CPU系列在当今意义不大……不,功能支持还不够,性能计数器或其地址或含义可能会随时间而改变。在某些表格中,他可能需要看“一代人”,而不是家庭,但完全忽略这一点是错误的——尼哈勒姆、桑迪布里奇或哈斯韦尔的计数器可能有很大的不同。回答得好。我通常发现最容易查找模型列表的是维基百科。在这种情况下-