1 术语解释
Chip:芯片;泛指一个封装好的芯片,含有一个或多个die。但有时候也把die叫chip。
CPU和Porocessor:这两个术语指packge、core、逻辑内核(logical processor)等多种意思。当我们讨论计算机硬件时,CPU和Porocessor一般指physical processor即一个packge。在操作系统或应用程序中cpu和porocessor通常指physical processor。
Die:晶片颗粒,一颗裸芯片。
Packge:封装好的处理器芯片,含有一个或多个die。
Physical Processor:物理处理器,相当于packge。
Socket: 指插处理器的物理插槽,一般一个socket上插一个packge 。主板上可以有多个socket。
Core:处理器芯片上的独立计算核心。
Cache:缓存, cpu内部的储存器, 早期的cache作为一个单独芯片装在主板上,后来cache 又和cpu在一起做成了一个子板,现在cache通常和core在一个die上了。现代cache 一般分为三级,存储速度从L1到L3递减。L1缓存又分为数据缓存(D-cache)和指令缓存(L-cache) ,每个core有单独的L1、L2缓存,L3缓存则是die上所有core共享的。
HT:超线程,原本一个core只能执行一个线程(theard),自从有了HT技术后,一个core可以执行两个甚至多个线程了。
Logical Processor:逻辑内核:现在处理器超线程技术允许一个core处理多个theard。一个core虚拟为多个逻辑内核,每个逻辑内核执行一个theard。
NUMA:非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。
Node: NUMA结构中core或cpu分组,每个node内部有自己的CPU总线和内存。Node是可跨socket的。
盒装cpu和散装cpu:只是厂商销售时的区别,盒装cpu即一个cpu装在一个盒子里,通常还加有散热器。其包装更好,保质期更长,价格也较高,相当于精装零卖。散装cpu则多个cpu放在一个包装中,相当于批发。
2 linux上查看cpu信息
2.1 lscpu命令
示例输出如下:
dylan@hp3000:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48 //共有48个逻辑CPU(threads)
On-line CPU(s) list: 0-47
Thread(s) per core: 2 //每个core有2个threads
Core(s) per socket: 6 //每个socket有6个cores
Socket(s): 4 //共有4个sockets
NUMA node(s): 4 //共有4个NUMA nodes
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Stepping: 7 //步进 cpu的修订版本
CPU MHz: 1200.000
BogoMIPS: 4790.83
Virtualization: VT-x
L1d cache: 32K //L1 data cache 32k
L1i cache: 32K //L1 instruction cache 32k
L2 cache: 256K
L3 cache: 15360K
NUMA node0 CPU(s): 0-5,24-29
NUMA node1 CPU(s): 6-11,30-35
NUMA node2 CPU(s): 12-17,36-41
NUMA node3 CPU(s): 18-23,42-47
BogoMIPS[^1]
^1]: Bogo是Bogus(伪)的意思;MIPS是millions of instructions per second(百万条指令每秒)的缩写,其代表CPU的运算速度,是cpu性能的重要指标。
Bogomips是Linux操作系统中衡量计算机处理器运行速度的的一种尺度,是由Linux主要开发者linus Torvalds写的。是通过calibrate_delay()函数计算出来的。只能用来粗略计算处理器的性能,并不十分精确。
2.2 /proc/cpuinfo
基于不同指令集(ISA)的CPU产生的/proc/cpuinfo文件不一样,基于X86指令集CPU的/proc/cpuinfo文件包含如下内容:(会列出所有逻辑内核的相关信息,这里只截取一个)
processor : 0 //逻辑核编号
vendor_id :GenuineIntel //cpu制造商
cpu family :6 //cpu系列号
model :26 //cpu系列中的哪一代的代号
model name :Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
stepping :5 //cpu更新版本
cpu MHz :1600.000 //主频
cache size : 8192 KB //二级缓存大小
physical id :0
siblings :8 //逻辑核数
core id : 0 //核编号
cpu cores :4 //核数
apicid :0 //用来区分不同逻辑核的编号,此编号不一定连续
fpu :yes //是否具有浮点运算单元
fpu_exception :yes //是否支持浮点计算异常
cpuid level : 11 //执行cpuid指令前,eax寄存器中的值
wp :yes //当前CPU是否在内核态支持对用户空间的写保护
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi
mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2
cx16 xtpr popcnt lahf_lm
bogomips :4522.12
clflush size :64 //每次刷新缓存的大小单位
cache_alignment : 64 //缓存地址对齐单位
address sizes : 40 bits physical, 48 bits virtual //可访问地址空间位数
power management :
power management :对能源管理的支持,有以下几个可选支持功能:
ts: temperature sensor
fid: frequency id control
vid: voltage id control
ttp: thermal trip
tm:
stc:
100mhzsteps:
CPU信息中flags各项含义:
fpu: Onboard (x87) Floating Point Unit
vme: Virtual Mode Extension
de: Debugging Extensions
pse: Page Size Extensions
tsc: Time Stamp Counter: support for RDTSC and WRTSC instructions
msr: Model-Specific Registers
pae: Physical Address Extensions: ability to access 64GB of memory; only 4GB can be accessed at a time though
mce: Machine Check Architecture
cx8: CMPXCHG8 instruction
apic: Onboard Advanced Programmable Interrupt Controller
sep: Sysenter/Sysexit Instructions; SYSENTER is used for jumps to kernel memory during system calls, and SYSEXIT is used for jumps: back to the user code
mtrr: Memory Type Range Registers
pge: Page Global Enable
mca: Machine Check Architecture
cmov: CMOV instruction
pat: Page Attribute Table
pse36: 36-bit Page Size Extensions: allows to map 4 MB pages into the first 64GB RAM, used with PSE.
pn: Processor Serial-Number; only available on Pentium 3
clflush: CLFLUSH instruction
dtes: Debug Trace Store
acpi: ACPI via MSR
mmx: MultiMedia Extension
fxsr: FXSAVE and FXSTOR instructions
sse: Streaming SIMD Extensions. Single instruction multiple data. Lets you do a bunch of the same operation on different pieces of input: in a single clock tick.
sse2: Streaming SIMD Extensions-2. More of the same.
selfsnoop: CPU self snoop
acc: Automatic Clock Control
IA64: IA-64 processor Itanium.
ht: HyperThreading. Introduces an imaginary second processor that doesn’t do much but lets you run threads in the same process a bit quicker.
nx: No Execute bit. Prevents arbitrary code running via buffer overflows.
pni: Prescott New Instructions aka. SSE3
vmx: Intel Vanderpool hardware virtualization technology
svm: AMD “Pacifica” hardware virtualization technology
lm: “Long Mode,” which means the chip supports the AMD64 instruction set
tm: “Thermal Monitor” Thermal throttling with IDLE instructions. Usually hardware controlled in response to CPU temperature.
tm2: “Thermal Monitor 2″ Decrease speed by reducing multipler and vcore.
est: “Enhanced SpeedStep”
参考
— 关于cpu的core、die、pacaage的解释
— HTT超线程技术,CPU,core,package,die的概念
— /proc/cpuinfo 文件分析(查看CPU信息)