CPU位数操作系统位数应用程序位数都是什么
Posted gss128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU位数操作系统位数应用程序位数都是什么相关的知识,希望对你有一定的参考价值。
问题起源:
64位CPU的64指的是什么
32位计算机的32位指的是啥
32位计算机装8G内存有用吗
32位应用程序和64位应用程序又是啥...
...
能说上来一点,但实际上含糊不清的概念有很多
下文主要从内存、CPU、操作系统的角度对一些容易模糊的基础知识做概况。
内存
主存储器,简称主存或内存,内存里的数据能被CPU直接访问。它的存储体由许多存储单元组成,每个存储单元可存储一串二进制代码(称为存储字)。
存储单元是内存的最小可寻址单位,通常都以字节(byte)为单位,一个字节占8位(bit)。
存储单元可存储的位数称为存储字长,存储字长是CPU一次能并行处理的二进制位数。
C语言中的指针是用来存放内存地址的,指针的大小就等于字长。对于32位系统,内存地址位数是4字节,指针也就是4字节,64位系统则是8字节。
CPU
我们所说的32位处理器,指的是CPU内部的通用寄存器的宽度为32位,一次能处理的最大位数为32位(一次处理4个字节),它的地址总线位数为32位 (地址总线位数决定了CPU的寻址能力)。
可寻址物理地址范围为4GB(2^32byte= 4GB) 。4GB即4G个字节,CPU可寻址4G个地址,根据内存地址访问内存的存储单元。
内存地址由计算机操作系统分配,每一个字节分配一个内存地址,,cpu只需要知道某个数据类型的地址, 就可以直接去到读影的内存位置去提取数据(这里的"直接",指直接寻址技术)。
由此可知,32位的操作系统(32位处理器或64位处理器的计算机才能装32位操作系统),即使配上8GB内存,操作系统最多也只能给其中4GB分配地址。(实际能被操作系统访问到的一般是3.2GB左右,有一部分会被显卡缓存等占用)
CPU发展迅猛,从零几年开始CPU就全都是64位的了,64位CPU理论上最多支持16EB内存,可理解成近似于无限大。
CPU通过MMU(内存管理单元)访问内存
CPU 在访问内存的时候都需要通过 MMU 把虚拟地址转化为物理地址,然后通过总线访问内存。MMU 开启后 CPU 看到的所有地址都是虚拟地址,
CPU 把这个虚拟地址发给 MMU 后,MMU 会通过页表在页表里查出这个虚拟地址对应的物理地址是什么,从而去访问外面的 DDR(内存条)。
内存的存取速度比中央处理器操作速度要慢得多,使CPU的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响。
不同存储器访问时间差异很大,离CPU越近的存储器,速度越快,每字节的成本越高,容量也因此越小。
CPU中的寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(分级),再次是主存、磁盘。
计算机存储体系结构图:
高速缓冲存储器cache,用来提高CPU访问内存的速度,L1、L2、L3都属于高速缓存。
使用高速缓存的过程成为缓存,cache的效率由命中率来衡量,一个好的cache效率通常在80%-95%的命中率。
操作系统
我们所说的32位操作系统,指的是操作系统编译时使用x86位指令集,64位操作系统指的是使用x64指令集。
由上述可知,32位处理器的CPU是不可能装64位操作系统的,因为缺少64位指令集。
32/64位的应用程序也指的是编译时使用的指令集不同。
在windows上程序大多数是以exe形式发布的,得到的程序是目标文件以后的结果,本身是带有位数的。
在linux上,本身大部分软件包rpm等也是已经编译好的,也是带有位数的。
软件编程实际是面向特定指令集编译的,经过指令解释器编译成为控制信号传给CPU。
对于C、C++等需要操作系统提供的动态链接库和系统API形成的可执行文件来说,是有位数的。
而对于Java、.Net这类的依托于虚拟机或解析器来动态运行的语言来说,编译出来的程序是中间表示,运行时虚拟机通过不同平台的不同解释器,将中间指令生成与平台相对应的机器码,体现了java等编程语言的平台无关性。
操作系统和指令集是可以向下兼容的,这意味着只要满足硬件和软件兼容在64位操作系统上就可以运行32位应用程序(不能兼容32位的驱动)。
64位程序通常要比32位程序慢,因为64位指针比32位的大一倍。
64位操作系统运算速度更快(处理器一次可以取64位数据),理论上比32位提高了一倍,能访问的内存更大。
但是要在64位操作系统上运行64位软件才能发挥64位CPU的最佳性能,
在64位操作系统上运行32位程序,会调用32位相关的运行库,环境和32位一致,所以和运行在32位操作系统上的性能相差不大。
上面简要的介绍了,内存,CPU位数、操作系统位数、应用程序位数的概念
相关的组成原理、操作系统知识还有很多,有空闲的时候应该更深入的去了解这些基础知识,有助于理解程序的运行原理。
以上是关于CPU位数操作系统位数应用程序位数都是什么的主要内容,如果未能解决你的问题,请参考以下文章