CPU位数、操作系统位数、指令集、寄存器位数、机器字长等

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中寄存器的位数对应。 操作系统的位数是说其所依赖的指令集的位数。计算机系统一般都应有向上兼容性,所以也可有64CPU上运行32位操作系统、32CPU上运行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上的,不能算是独立的操作系统。

参考:http://blog.csdn.net/ray_zhang_3/article/details/5447140    http://my.oschina.net/u/158589/blog/70813

你可能感兴趣的:(C/C++)