您的位置:首页 > 其它

查看CPU与操作系统的位数

2014-08-15 10:33 405 查看
    我们经常听到32位、64位CPU或操作系统,那么如何来查看自己所用PC的CPU与操作系统的位数?而32位、64位又是是指什么呢?

1  查看CPU与操作系统的位数

=====================================================================================================

windows环境下:

<1>通过systeminfo命令查看CPU位数与OS位数:

C:\Users\Administrator>systeminfo

主机名:               ADMINISTRATOR-PC

OS 名称:             Microsoft Windows 7 旗舰版

OS 版本:             6.1.7601 Service Pack 1 Build 7601

OS 制造商:          Microsoft Corporation

OS 配置:             独立工作站

OS 构件类型:      Multiprocessor Free

注册的所有人:     微软用户

注册的组织:        微软中国

产品 ID:              00426-OEM-8992662-00400

初始安装日期:    2011/12/3 星期六, 19:08:14

系统启动时间:    2014/8/15 星期五, 8:54:16

系统制造商:        ASUSTeK Computer Inc.

系统型号:            K43SD

系统类型:            x64-based PC                                                                                     /* 64位操作系统 */  若显示 X86-based PC则为32位操作系统

处理器:               安装了 1 个处理器。

                          [01]: Intel64 Family
6 Model 42 Stepping 7 GenuineIntel ~782 Mhz   /* 64位处理器 */

BIOS 版本:        American Megatrends Inc. K43SD.208, 2012/8/10 星期五

<2>通过CPU-Z查看CPU位数



在指令集中,Intel CPU若支持64位,则会显示EM64T指令集;AMD CPU若支持64位,则会显示X86-64指令集。若没有出现上述的指令集,则表示CPU为32位。

======================================================================================================

Linux环境下:

查看内核版本:cat /proc/version或uname -a

Linux version 2.6.18.........(gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-48)) #3 SMP Fri Jan 25 15:14:45 CST 2013

查看内核发行版:car /etc/issue

CentOS release 5.5 (Final)

Kernel \r on an \m

查看系统类型:lsb_release -a

LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch

Distributor ID:    CentOS

Description:       CentOS release 5.5 (Final)

Release:            5.5

Codename:       Final

查看系统位数:getconf LONG_BIT 或 file /sbin/init

64 或  /sbin/init: ELF
64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9,

查看CPU位数:arch或uname -m

x86_64            (通过CPU硬件架构来识别)

=======================================================================================================

2 CPU与操作系统的32或64位的意义

        CPU位数是指通用寄存器的数据宽度,即CPU一次能处理的数据宽度(或者寄存器和运算单元之间总线的条数)。

        操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构上运行。因32/64位的CPU指令集不大相同,所以需要设计32位与64位版本的操作系统。32位操作系统既可以安装在32位CPU的PC上,也可以安装在64位CPU的PC上;而64位操作系统只能安装在64位CPU的PC上。

3 最大支持的内存大小为4GB

        我们通常想当然的认为32位CPU或32位最大支持的内存大小为4GB,其实最大能支持多少内存与CPU的位数(如32位CPU、64位CPU,这里指的是通用寄存器的宽度)无关,而是由CPU的地址总线数目与操作系统决定的。

        CPU的地址总线数目决定寻址范围,这种由地址总线对应的地址就是物理地址。如CPU的地址总线数目为32,则其可寻物理地址范围为2的32次方,即4GB。(CPU位数与地址总线位数是两个概念,8086 16位CPU的地址总线为20位,即寻址范围为1MB;32位CPU的地址总线为32位,即寻址范围为4GB,但32位CPU也有地址总线为36位的;64位CPU的地址总线为40位,即寻址范围为1TB)。而CPU在访问任何其他组件(如寄存器、显存、BIOS、内存)时,都需要它们实际的物理地址。

        操作系统中的进程所访问到的地址是逻辑地址,并不是真实的物理地址,这个逻辑地址是操作系统提供的,CPU在执行指令时需要先将指令的逻辑地址变换为物理地址才能对相应的存储单元进行数据的读取或者写入(注意逻辑地址和物理地址是一一对应的)。

        对于32位的windows操作系统,其逻辑地址编码采用的地址位数是32位的,那么操作系统所提供的逻辑地址寻址范围是4GB,而在intel x86架构下,采用的是内存映射技术(Memory-Mapped I/O, MMIO),也就说将4GB逻辑地址中一部分要划分出来与BIOS ROM、CPU寄存器、I/O设备这些部件的物理地址进行映射,那么逻辑地址中能够与内存条的物理地址进行映射的空间肯定没有4GB了,看下面这幅图就明白了:



        所以当我们装了32位的windows操作系统,即使我们买了4GB的内存条,实际上能被操作系统访问到的肯定小于4GB,一般情况是3.2GB左右。假如说地址总线位数没有32位,比如说是20位,那么CPU能够寻址到1MB的物理地址空间,此时操作系统即使能支持4GB的逻辑地址空间并且假设内存条是4GB的,能够被用户访问到的空间不会大于1MB(当然此处不考虑虚拟内存技术),所以用户能够访问到的最大内存空间是由硬件和操作系统两者共同决定的,两者都有制约关系。
     对于64位的操作系统,其逻辑地址编码采用的地址位数是40位,能够最大支持1T的逻辑地址空间。考虑一种情况,假如CPU是64位的,地址总线位数是40位,操作系统也是64位的,逻辑地址编码采用的地址位数也是40位,内存条大小是64GB,那么是不是内存条的64GB全部都能被利用了呢?答案是不一定,因为这里面还要考虑一个因素就是内存控制器,内存控制器位于北桥之内(现在基本都是放在CPU里面了),内存控制器的实际连接内存的地址线决定了可以支持的内存容量,也就是说内存控制器与内存槽实际连接的地址线如果没有40位的话,是无法完全利用64GB的内存条的存储空间的。当然对于内存控制器这个问题几乎可以不用考虑,因为现在大多数的内存控制器至少都采用的是40位地址总线。

参考:《32位系统最大只能支持4GB内存之由来》


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息