字长
64位CPU和32位CPU中64和32的含义:
64和32指的是CPU中的寄存器(通用)的字长,字长就是一个字的位数。这里说的字的含义是:处理器进行数据处理时,一次存取,加工,和传送的数据长度。
现在CPU大多是64位的,但大多都以32位字长运行,都没能展示它的字长的优越性,因为它必须与64位软件(如64位的操作系统等)相辅相成,也就是说,字长受软件系统的制约,例如,在32位软件系统中64位字长的CPU只能当32位用。
在计算机词典中:
(1)位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。
(2)字节(Byte):一个字节由8个位组成。它表示作为一个完整处理单位的8个二进制数码。
(3)字(Word):16个位为一个字,它代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算单位。
(4)双字(Dword):通常称16位是一个字,32位是一个双字,64位是两个双字。
(5) 四字 Qword: 两个双字称为一个四字
系统中的一个字的大小与CPU寄存器的大小有关同时也受软件系统限制,通常来说16位,32位与64位CPU中的字不一样:
16位系统:一个字 = 2Byte
32位系统:一个字 = 4Byte
64位系统:一个字 = 8Byte
CPU位宽
CPU位宽指的是CPU位宽指的是数据总线位宽,即一个时钟周期内CPU能处理的二进制位数,和寄存器位宽相对应。
CPU的寻址能力
查看当前操作系统的真实寻址空间和虚拟寻址空间:
(Windows 在cmd终端下用 systeminfo 命令可以查看自己的操作系统以及cpu位数)
linux:
cat /proc/cpuinfo :address sizes : 39 bits physical, 48 bits virtual
CPU的寻址能力与它的地址总线位宽有关,64位CPU出现之后,其地址总线位宽一般采用的是36位或者40位,它们寻址的物理地址空间为64GB或者1T。16位CPU的地址总线位宽可以是20位,32位CPU的地址总线可以是36位,64位CPU的地址总线位宽可以是40位。
操作系统32bit、64bit
操作系统有32/64位之分,但同时CPU也有32/64位之分;32位CPU只能安装32位系统,64位CPU可以安装32位操作系统,也可以安装64位操作系统;
指针大小
C++指针指向进程内的一个逻辑内存地址,然后由操作系统管理着从逻辑地址到物理地址的映射。我们在使用计算机时,指针操纵的其实是逻辑地址,32位操作系统的逻辑地址寻址范围只有2^32=4GB。
一般来说,在64位系统下,指针长度为8,32位系统下,指针长度位4;但是有的编译器为了不同的操作系统之间相互兼容,内部对指针进行了包装,使得不管在64位还是32位系统下,指针都是4个字节长度。