San*_*box 31 64-bit 32-bit processor 32bit-64bit
我是编程新手,来自非CS背景(没有正式学位).我主要使用C#编写winforms.
我对32位和64位感到困惑....我的意思是,已经听说过32位操作系统,32位处理器以及程序可以拥有的最大内存.它如何影响程序的速度.还有很多问题不断浮现在脑海中.
我试图浏览一些计算机组织和架构书籍.但是,要么我太愚蠢无法理解那里写的内容,要么作者认为读者有一些CS背景.
有人可以用一个简单的简单英语解释我这些东西,或者指出我做的事情.
编辑:我读过像32位模式这样的东西,它们可以访问高达4GB的内存; 在64位模式下,他们可以访问更多....我想知道为什么这样的事情.
BOUNTY:下面的答案非常好......尤其是马丁.但是,我正在寻找一个彻底的解释,但用简单的英语.
tch*_*hen 39
它真的归结为电线.
在数字电路中,只有0和1(通常是低电压和高电压)可以从一个元件(CPU)传输到另一个元件(存储器芯片).如果我只有1根线,我每个时钟周期只能在线上发送1或0.这意味着我只能处理2个字节(假设字节寻址,并且整个地址仅在1个周期内传输以获得速度!).
如果我有2根线,我可以寻址4个字节.因为我可以通过两条线发送:(0,0),(0,1),(1,0)或(1,1).所以基本上它是电线数量的2.
所以,如果我有32根线,我可以寻址4 GB,如果我有64根线,我可以解决更多问题.
工程师可以采取其他技巧来解决比电线允许的更大的地址空间.例如,将地址分成两部分,在第一个周期发送一半,在下一个周期发送后半部分.但这意味着你的内存界面将快一半.
编辑我的评论到这里(未经编辑);)如果有人有任何有趣的东西,也可以将它作为维基.
像其他评论所提到的那样,2 ^ 32(2的功率为32)= 4294967296,即4 GB.而2 ^ 64是18,446,744,073,709,551,616.为了进一步挖掘(你可能在Hennesey和Patterson中读到这一点)处理器包含它用作"临时空间"的寄存器,用于存储其计算结果.CPU只知道如何进行简单算术并知道如何移动数据.当然,这些寄存器的大小与其架构的"#-bits"的位宽相同,因此32位CPU的寄存器为32位宽,64位CPU的寄存器为64位宽.
当涉及浮点(处理双精度)或其他SIMD指令(单指令,多数据命令)时,会有例外.CPU加载数据并将数据保存到主存储器(RAM)中.由于CPU还使用这些寄存器来计算内存地址(物理和虚拟),因此它可以寻址的内存量也与其寄存器的宽度相同.有一些CPU使用特殊的扩展寄存器来处理地址计算,但是在工程师意识到他们需要它之后我会称之为"思考之后".
目前,64位对于解决实际物理内存非常重要.由于实用性,在将CPU连接到存储器时,大多数64位CPU将省略相当多的电线.使用宝贵的主板不动产来运行总是有0的电线是没有意义的.更不用说为了拥有当今DIMM密度的最大RAM量需要40亿个dimm插槽:)
除了增加的内存量,64位处理器为大于2 ^ 32的整数提供更快的计算.以前编程器(或编译器,也由程序员编程;)必须通过占用两个32位寄存器并处理任何溢出情况来模拟具有64位寄存器.但是在64位CPU上,它将由CPU本身处理.
缺点是64位CPU(一切都相同)将比32位CPU消耗更多功率,这是因为(大约)所需电路量的两倍.然而,实际上你永远不会得到相同的比较,因为较新的CPU将在较新的硅工艺中制造,具有较少的功率泄漏,允许您在相同的芯片尺寸中填充更多电路等.但是64位架构将消耗两倍的功率记忆.与使用固定指令大小的架构相比,曾经被认为是"丑陋"的x86可变指令长度实际上是一个优势.
fbr*_*eto 39
让我们试着通过观察人与计算机来回答这个问题; 希望这能为你解释一些事情:
因此,我们在人与计算机之间存在根本区别:要从内存中调用信息,需要为计算机提供地址,而人们则不需要.(从某种意义上说,可以说"你的电话号码"是一个地址,因为它提供的信息不同于"你的生日",但这是另一个对话.)
这也适用于计算机,但由于它们是二进制机器而不是十进制机器,因此添加额外的二进制数字(位)只会使范围增加2倍.
解决范围:这一切都意味着,在64位计算机可以存储和检索多少比32位计算机的详细信息.对于大多数用户而言,这并不意味着很多,因为浏览网页,查看电子邮件和播放Solitaire等内容都能在32位寻址范围内轻松完成.64位的好处将真正发挥作用的地方是你拥有大量数据的领域,计算机将不得不通过这种方式.数字信号处理,千兆像素摄影和高级3D游戏都是其大量数据处理在64位环境中将获得巨大提升的领域.
Mar*_*wis 32
许多现代处理器可以以两种模式运行:32位模式和64位模式.在32位模式下,它们可以访问高达4GB的内存; 在64位模式下,他们可以访问更多.较旧的处理器仅支持32位模式.
操作系统选择在以下模式之一中使用处理器:在安装时,可以选择是以32位模式还是以64位模式操作处理器.即使处理器可以继续以64位模式运行,从32位切换到64位也需要重新安装系统.较旧的系统仅支持32位模式.
应用程序也可以在32位或64位模式下编写(或编译).这里的兼容性更加棘手,因为处理器在64位模式下运行时仍然可以支持32位应用程序作为仿真功能.因此,在64位操作系统上,您可以运行32位应用程序或64位应用程序.在32位操作系统上,您只能运行32位应用程序.
同样,选择大小主要取决于您要访问的主内存量.在许多系统上,32位应用程序通常限制为2GB,因为系统本身需要一些地址空间.
从性能(速度)的角度来看,没有显着差异.64位应用程序可能会慢一点,因为它们使用64位指针,因此对于给定的操作,它们需要更多的内存访问.同时,它们也可能更快一些,因为它们可以作为一条指令执行64位整数运算,而32位处理器需要使用多条指令来模拟它们.但是,这些64位整数运算相当罕见.
人们也可能想知道在64位处理器上运行32位应用程序的成本是多少:在AMD64和Intel64处理器上,这种仿真模式主要是在硬件中,因此运行32位应用程序没有真正的性能损失本身.这在Itanium上有很大不同,其中32位(x86)应用程序的仿真效果非常差.
Bar*_*own 18
让我告诉你宾维尔的故事,这是一个偏僻的小镇.宾维尔有一条通向它的道路.每个来到或离开宾维尔的人都必须在这条路上开车.但当你走近小镇时,有一个叉子.你可以左转或右转.
事实上,每条道路都有一个叉子,除了通往房屋的道路.那些道路只是在房子里结束了.没有一条道路有名字; 由于Binville计划委员会创建了一个巧妙的解决方案,他们不需要名字.这是Binville的地图,显示了道路和房屋:
------- [] 00
/
------
/ \
/ ------- [] 01
-----
\ ------- [] 10
\ /
------
\
------- [] 11
Run Code Online (Sandbox Code Playgroud)
如您所见,每个房子都有一个两位数的地址.只有那个地址足以a)唯一地标识每个房子(没有重复)和b)告诉你如何到达那里.你知道,很容易到达城镇.每个前叉都标有零或一个,计划委员会称之为Binville交叉跟踪器,或简称为bit.当您接近第一个分支时,请查看地址的第一位.如果它是零,则向左走; 如果它是一个,那就走吧.当你到达第二个叉子时,看第二个数字,适当地向左或向右移动.
假设您想要拜访住在宾维尔的朋友.她说她住在10号房子里.当你到达宾维尔的第一个叉子时,向右走(1).然后在第二个叉子,向左(0).你在那儿!
宾维尔已经存在了好几年了,但是这个词已经开始了解其田园诗般的环境,优秀的公园系统和慷慨的医疗保健.(毕竟,如果你不需要在路牌上花钱,你可以用更好的东西.)但是有一个问题.只有两位,寻址方案仅限于四个房屋!
因此,计划委员会将他们的头脑放在一起并提出了一个计划:他们会在每个地址上添加一些,从而使房屋数量翻倍.为了实施该计划,他们将在城镇边缘建立一个新的分支,每个人都会得到新的地址.这是新地图,展示了通往城镇的新叉子和宾维尔的新部分:
------- [] 000
/
------
/ \
/ ------- [] 001
----- Old Binville
/ \ ------- [] 010
/ \ /
/ ------
/ \
/ ------- [] 011
--
\ ------- 100
\ /
\ ------
\ / \
\ / ------- [] 101
----- New Binville (some homes not built yet)
\ ------- 110
\ /
------
\
------- 111
Run Code Online (Sandbox Code Playgroud)
您是否注意到Binville原始部分中的每个人只是在他们的地址前面添加了零?新位表示构建的新交叉点.当位数增加1时,地址数量增加一倍.市民们总是知道他们城镇的最大规模:他们所要做的就是计算两个上升到比特数的值.有三位,他们可以有2 3 = 8个房子.
几年过去了,宾维尔又一次满负荷运转.越来越多的人想搬进来,所以又增加了一点(连同必要的十字路口),将城镇的面积扩大到十六间.然后是另一个,另一个,另一个...... Binville的地址很快就达到了16位,能够容纳多达2 16(16,384)个房屋,但这还不够.人们不停地来来往往!
因此,计划委员会决定一劳永逸地解决问题:他们会一直跳到32位.拥有超过40亿个家庭(2 32)的足够地址,当然这就足够了!
这是......大约二十五年,当时宾维尔不再是一个不知名的小镇.它现在是一个主要的大都市.事实上,它已经变得像拥有数十亿居民的整个国家一样大.但公园仍然很好,每个人都有很好的医疗保健,所以人口不断增长.
面对不断增长的人口,计划委员会再次集思广益,并提出另一个城市的扩张.这次他们会使用64位.你知道现在Binville市区内有多少房子可以容纳吗?那是对的:18,446,744,073,709,551,616.这个数字是如此之大,我们可以填充大约20亿个地球,并给每个人自己的地址.
使用64位并不是解决所有问题的灵丹妙药.地址占用的空间是旧32位地址的两倍.更糟糕的是,一些公民尚未更新他们的地址以使用新的64位格式,因此他们被迫进入城市的围墙部分专门为那些仍在使用32位地址的人保留.但这没关系:使用32位的人可以访问足够的城市以满足他们的需求.他们觉得还没有必要改变.
64位是否足够?谁知道此时,但宾维尔市民正在等待128位地址的公布......
| 归档时间: |
|
| 查看次数: |
11129 次 |
| 最近记录: |