32位cpu中的32指的是什么_cpu高和内存有关系吗

32位cpu中的32指的是什么_cpu高和内存有关系吗一、32位cpu为什么只支持最大4G内存? 32位最大支持4G内存,到底是怎么算出来的? 去网上搜索答案,大部分都会甩给一个公式 2^32 = 4GB 我当时看到这个公式的时候,没太在意,后来我自己换

我们平常说的32位和64位指的是什么?
32位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为32位,32位指令集就是运行32位数据的指令,也就是说处理器一次可以运行32bit数据。目前我们现在通用的是64位机。CPU的位数越高也将会使它的寻址范围、最大内存容量、数据传输和处理速度、数值精度等指标成倍增加,也就是CPU的处理能力得到大幅提升

一、32位cpu为什么只支持最大4G内存?

32位最大支持4G内存,到底是怎么算出来的? 去网上搜索答案,大部分都会甩给一个公式 2^32 = 4GB

我当时看到这个公式的时候,没太在意,后来我自己换算了一下,发现和我理解的不一样,我换算出来后不是4G而是512M也就是0.5G。

32位就可以表示有2的32次种情况,就表示可以指向2^32 个地址,而最大的数字就表示可以访问的内存最大的容量,再大了,由于地址表示不了,所以就无法使用了。所以我就按下面方法进行了换算:

2^32 bit = 2^29 byte = 2^19 KB = 2^9 MB = 2^-1 GB = 0.5 GB 这样一算就是32位最大只能寻址的范围就是 0.5GB啊 怎么算出是4GB呢?


二、32位 vs. 64位

32位与64位的对比是在2000年以后兴起的。然而64位CPU早就在超级计算机领域中得到应用了,只是最近几年64位CPU才在PC上成为主流配置。从32位到64位的转变,绝对不是一件简单的工作,因为几乎所有的东西,从硬件到操作系统都必须要发生改变。Java也是在这个改革的趋势中引入了64位的虚拟机。

在32位到64位的转变中,人们最大的获益是内存容量。在一个32位的系统中,内存地址的宽度就是32位,这就意味着,我们最大能获取的内存空间是2^32(或者4 G)字节。这个容量明显不够用了!在一个64位的机器中,理论上,我们能获取到的内存容量是2^64字节,这是一个十分庞大的数字(ridiculously huge number)。可惜的是,这只是一个理论值,而现实中,因为有一堆有关硬件和软件的因素限制,我们能得到的内存要少得多。举个例了来说,Windows 7 Ultimate系统只能支持192GB的内存。可能许多人会说“192GB好大呀”,但是和2^64比起来,它真的挺小的,真的。

三、关于内存需要了解的知识

1.内存的特性

内存是计算机系统的主存储器。 而CPU计算的时候不能直接访问硬盘的数据,但是可以直接访问内存的里的数据。

2.内存的基本结构

内存也是存储介质,内存里存放的数据其实也是只是存放0或者1这两个二进制数字,所以可以内存里有海量的小格子,每1个格子是1个bit,小格子里面就只能存放0或1。 那么如果要表示数值255需要几个格子来放呢? 根据二级制算法就是用8个格子,每个格子都是1,来表示255. 计算机规定8bit=1byte 就是1字节=8位。

内存的大小就根据格子的多少来进行计算的。

下面图片就表示一个8byte大小的内存

image.png

例如一个4GB的内存到底有多少格子呢? 那就将4GB转换为bit就可以了 4GB = 2^2 GB = 2^12 MB = 2^22 KB = 2^32 byte = 2^35 bit

也就是4GB的内存有 2^35 个格子。

如果每一个格子一个地址的话?那么要想全部都访问4GB的内存就需要 35位,32位是不够的。

那么32位操作系统是怎么做到可以访问4GB内存的呢?

实际上内存是把8个bit排成1组, 每1组成为1个单位, 大小是1byte(字节), cpu每一次只能访问1个byte, 而不能单独去访问具体的1个小格子(bit). 1个byte字节就是内存的最小的IO单位.

3.内存地址的概念

既然内存的最小IO单位是字节byte,那么我们其实不需要为每一个格子也就是每一bit去分配地址了,而是按照8个bit为一组,也就是一个字节分配一个地址。

其实计算机操作系统会给内存每1个字节分配1个内存地址, cpu只需要知道某个数据类型的地址, 就可以直接去到读影的内存位置去提取数据了。


四、总结

明白了上面的道理, 我们再算一下,其实32位表示 2^32 个地址,而每一个地址是指向的是 8bit为一组的 byte ,所以要算到寻址的话,就要在乘以8 ,也就是 2^35 个bit,这样再换算为GB就是 4GB了。

到此终于明白了4GB是怎么算出来的了,原来 “32位操作系统” 中的“位”并不是 内存中的“bit”的概念,对应到内存中其实是“字节byte”,所以才有了 2^32 = 4GB 的说明法

寻址,是指计算机寻找指定的地址单元(一个地址单元可能8位,可能32位,甚至你可以定义为1M)。32位寻址容量为4G,指的是可以寻找4G个地址(约40亿个地址单元)。如果内存设计为一个地址1字节,那么“32位CPU最多支持4G内存”;如果设计为8字节,那么“32位CPU最多支持32G内存”,随着地址单元的扩大,可能会造成内存浪费,例如8字节地址单元,对于4字节数据而言,会浪费4字节空间(例如jvm指针压缩)。

*寻址空间大大小不是指存储空间有多大,是指能寻找多少个地址。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13072.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注