侧边栏壁纸
博主头像
CoderKui

坐中静,舍中得,事上练

  • 累计撰写 51 篇文章
  • 累计创建 69 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

64位CPU一定比32位CPU快?

CoderKui
2021-10-11 / 0 评论 / 0 点赞 / 287 阅读 / 2,339 字 / 正在检测是否收录...

现在的电脑几乎都是64位的,在我小学的时候,大家都是清一色的32位电脑。

我记得我的第一台电脑是三年级的时候,当时我的电脑内存是2g的,cpu是什么型号不记得了,显卡还是集显。

总之很垃圾就是了,而当时喜欢打很多网游,什么CF、qq飞车、lol这些,刚买来还是能玩的,但是电脑用了一年之后,卡的不行。

身为网瘾少年,这怎么能忍,于是百度电脑卡怎么办,多数回答都是换显卡和扩展内存条。

为了玩游戏流畅,跑到电脑店问显卡和内存条多少钱,老板看我是小学生一顿忽悠,介绍了好多,说打游戏不卡。

当时也不懂型号,内存只知道越大越好,不过钱包不允许- -,问老板最便宜的显卡也要四百多。

于是私下存钱,这期间也在百度了解怎么安装显卡和内存条,过了一个多月,终于存够了钱,兴致冲冲买了一个显卡和内存条,你永远不知道当时为了打游戏有多拼。

那个显卡型号现在还记得是Ge210,在现在属于古董中的古董,显卡连散热风扇都没有,上面是一片片散热片,内存买的是一根4g的。

问题来了,当时看了很多教程介绍显卡和内存条的位置,但是tmd,机箱怎么打开啊?

没错,你没看错,当时为了打开机箱都折腾了好久。机箱后面一堆插口,我以为是把后面这块板拿下来,怼了边上的铆钉半天,死活打不开。

后来发现是把机箱侧面的那块盖子往后滑出来。没想到最难的一步是打开机箱哈哈,后面就简单了,内存条和显卡都是插到插槽里就好了。

装完之后赶紧开机,二话不说把游戏打开,卧槽,真的丝滑,瞬间感觉换了台电脑,现在还记得那种快乐。

当时鲁大师这个软件还是很流行的,看了自己的配置识别,显卡显示没问题。

但是,内存怎么只显示4g??? 我原本是2g内存条,加了一根4g。

2+4不是等于6?

当时还以为被奸商坑了,不过打游戏不卡,也就把这件事忘了。

现在回想起来,其实当时用的是32位的xp系统,内存最高只能识别4g。

现如今早已明白了这背后的原理,却找不回童年的快乐。(突然伤感哈哈)

为什么32位系统最多只能识别4g内存?

在回答这个问题之前你需要对计算机的构造有个大致了解。

内存

众所周知,程序要运行起来,首先需要从硬盘加载到内存,我们的程序和数据都是存储在内存,存储区域是线性的。

数据存储的单位是一个二进制位(bit),即0或1。最小的存储单位是字节(byte),1字节等于8位。

而内存的地址是从0开始编号的,然后自增排列,最后一个地址为内存总字节数减1,这种结构其实就是数组的物理表现形式。

这也就是为什么数组比链表访问速度快,因为数组在物理上天然支持随机访问,访问数组的每个元素的速度都是一样的。

CPU

CPU也就是中央处理器,我们常说的32位和64位其实区别就是cpu一次能计算多少字节数据。

  • 32位CPU一次可以计算4个字节
  • 64位CPU一次可以计算8个字节

为什么CPU要分多少位,其实是为了能计算更大的数值,8位的CPU一次只能计算0~255范围内的数值,假如要计算500*666,一次运算是完成不了的。

于是为了能一次计算大数运算,CPU就需要多个byte一起计算。

所以,CPU的位越大,一次能计算的数值范围就越大。32位的CPU最大能计算的数为4294967295,也就是2的32次方。

而CPU内部除了运算单元和控制单元,还有寄存器,其实功能和内存本质上是一样的。

那么问题来了,那既然功能一样,还要寄存器何用

其实原因既简单又无奈,内存距离CPU还是太远了,寄存器就在CPU里面,紧紧挨着运算单元,速度当然快。

寄存器的种类:

  • 通用寄存器:存放需要进行运算的数据,例如要进行加法的两个数据
  • 程序计数器:存放CPU要执行的下一条指令的所在的内存地址,注意哦,存的是指令的位置,而不是指令本身。
  • 指令寄存器:存放程序计数器指向的指令,也就是指令本身。
总线

那有了CPU和内存还有其他输入输出设备之后,它们之间怎么沟通啊,怎么传输数据。

依靠总线,总线分3种:

  • 地址总线:指定CPU将要操作的内存地址
  • 数据总线:读写内存的数据
  • 控制总线:用于发送和接受信号,比如中断、设备复位等信号,CPU收到控制信号后进行响应

而CPU读取数据的过程其实就是通过两个总线传输,首先通过「地址总线」来指定要访问的数据地址,在通过「数据总线」来传输数据。

输入输出设备

输入设备常见的就是键盘鼠标这些,把数据传给计算机。

而输出设备就是显示器,负责显示运算结果。

位宽

数据怎么传输的?因为最底层都是二进制表示的,所以其实通过电压的高低就能表示数据。低电压表示0,高电压表示1。

有了表示数据的方法,那怎么传?也就是传输策略。

5这个数的二进制是101,如果只有一条线路,每次只能传1位(bit)数据,那传101这个数据,还得传三次才行,效率太低。

这样一位一位传的方式,称为串行,下一个bit需要等待上一个bit传输完成才能传。

那想一次传多点也简单啊,多加几根线呗,一次传多个bit,也就称为并行传输。

为了避免低效率的串行传输方式,线路的位宽最好一次就能访问到所有的内存地址。

CPU想操作内存地址就需要地址总线,如果地址总线只有1条,那每次只能表示0或1这个地址,而CPU一次只能操作2个内存地址。

想要操作4G的内存就需要32条地址总线,2^32=4G。所以32位的CPU最多只能操作4G内存,也就是只能识别4G。

CPU位宽和内存同理,CPU并不是一定要32位,但为了与总线匹配,最好相同,这样32位的CPU操作32位宽的线路,一次能操作的数据正好匹配,不多不少。

回答最初的问题

假设32位的CPU要计算两个64位大小的数字之和,就需要把每个数字拆成2份32位数字,一份高位,一份低位。两个数字各自先低位相加并进位再高位相加。

所以32位的CPU是不能一次计算出两个64位数字的运算的,而直接用64位CPU就能一次算出结果。

但是这并不代表64位CPU性能一定比32位高很多,其实32位能表示的数已经很大了,很多应用不会运算超过32位的数字,在进行不超过32位运算的情况下,32位与64位速度差别不大。

但有一个致命问题就是32位CPU只能操作4G内存,你装了超出4G的内存也没用。

而64位就不一样了,它的寻址范围非常大,2的64次方可以说是天文数字了。

0

评论区