CPU位数 = CPU中寄存器的位数 = CPU能够一次并行处理的数据宽度 = 数据总线宽度
CPU为了实现其功能一般设计了指令集(如:IA32指令集和x86-64指令集等),即是CPU的全部指令,这就是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系 的。如Intel 8086 CPU 是16位,其指令集也是16位。如Intel 80386DX CPU 是32位,其指令集也是32位,但它也保持原16位指令集,这是为了向上兼容。
注意:x86 又叫 IA32,即 Intel Architecture 32(Intel32位架构)
操作系统位数 = 其所依赖的指令集位数 <= CPU位数
机器字长 = 整数和指针数据的标称大小(字长决定的最重要的参数就是虚拟地址空间的最大大小)
CPU位数与操作系统位数,这二者有区别也有联系,操作系统位数的概念是基于CPU的位数的。 CPU的位数是指CPU能一次同时寄存和处理二进制数码的位数,这和CPU中寄存器的位数对应。 操作系统的位数是说其所依赖的指令集的位数。计算机系统一般都应有向上兼容性,所以也可有64位CPU上运行32位操作系统、32位CPU上运行16位操作系统的情况。操作系统位数应该是根据指针类型的位数来定的。整数类型不一定跟位数相等,CPU位数准确地说应该是CPU一次能够并行处理的数据宽度,一般就是指数据总线宽度。
linux下查看CPU硬件架构
$ arch
x86_64
$ uname -m
x86_64
$ echo $HOSTTYPE
x86_64
linux下查看CPU的信息
$lscpu(或者查看文件/proc/cpuinfo)
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2261.019
BogoMIPS: 4522.03
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
Linux下查看系统位数:
$ getconf LONG_BIT
64
$ getconf WORD_BIT
32
上述信息显示这个系统时64位系统。
CPU寻址能力 = 2^S (s为地址总线宽度) <= CPU位数
$ cat /proc/cpuinfo | grep -i address
address sizes : 36 bits physical, 48 bits virtual
表示物理内存寻址64G,虚拟内存寻址256T. (就是说,内存超过64G的部分也没什么用,硬盘超过256T的部分也没用)
附:
64位CPU如:AMD Athlon64 、Intel Pentium 4 F
32位CPU如:Intel 80386DX 到 Intel Pentium III 和部分Intel Pentium 4
16位CPU如:Intel 8086、Intel 80286
64位操作系统如:Windows XP Professional x64和Windows Server 2003 x64
32位操作系统如:Windows95、Windows98、Windows NT、Windows 2000、Windows XP
16位操作系统如:DOS
Windows1.0到3.2是运行在DOS上的,不能算是独立的操作系统。
,