代码之家  ›  专栏  ›  技术社区  ›  Gordon Gustafson

64位/32位的低级优点和缺点是什么?

  •  10
  • Gordon Gustafson  · 技术社区  · 17 年前

    我相信我们都听说过64位和32位这两个词,但它们到底是什么意思?

    我很确定它们与内存地址的大小有关。在64位机器上,对对象的引用为64位。但我想再深入一点。。。。

    1. 人们经常听到“64位机器”这个短语。计算机的哪个部分实际上是面向位的数量的?加工机操作系统?

    2. 拥有更大内存地址的优势是什么?

    我可以补充更多的问题,但我认为简短更好。

    谢谢各位:D

    7 回复  |  直到 16 年前
        1
  •  18
  •   Cœur Gustavo Armenta    7 年前

    64位表示寄存器的宽度、内存寻址空间等。一个好处是能够寻址超过4GB的内存。

    维基百科 an article on 64-bit computing 更多细节。

    编辑:该 更重要的是,操作系统和程序有更多的虚拟寻址空间(16 EB(172亿GB)),更重要的是,可以向系统中添加更多的物理内存并进行寻址,从而减少虚拟内存与磁盘之间的交换。

    更广泛的寄存器和数据总线的优点是,移动相同数量的数据更容易、更快。需要两个或多个寄存器的操作现在可以用一个寄存器完成。

    因此,当软件重新编译为64位时,性能通常会提高。

    缺点 更广泛的数据可能意味着相同数据占用更多的空间。例如,存储数字300需要9位。如果存储在32位整数中,则浪费23位。在64位中,损耗变为55位。因此,不需要重新配置工具,只需简单地重新编译到64位,就可以生成速度更快但稍显臃肿的软件。

    编辑:还有 在这里:

        2
  •  6
  •   Gunther Piez    17 年前

    差正好是32位;-)

    运行64位操作系统需要64位硬件(处理器)。 这是依赖项。

    • 在32位系统中,只能寻址4千兆字节(2^32)的内存,而在64位系统中,理论极限为2^64字节。
    • 64位软件需要稍多的内存,主要用于指针的内存是8字节而不是4字节
    • 在x86_64上,64位可执行文件需要更多内存,因为许多指令都有额外的操作码,因此运行速度可能较慢
    • 在x86_64上,64位软件可以使用更多寄存器,并有可能运行得更快
        3
  •  3
  •   lavinio    17 年前
    • 64位系统可以直接寻址更多内存
    • 64位系统可以处理比32位大两倍的数据块,这有助于加快某些操作

    但对于其他应用程序,如数据库、图形/视频处理或托管虚拟机,能够一次访问更多的物理内存,并且能够用每条指令处理更多的信息,可以在性能上产生巨大的差异。

    请注意,今天,许多32位芯片都具有64位扩展功能 FPU (数学)或 SSMD

    看见 32-bit Vs. 64-bit Systems: What's The Difference? 更多。

        4
  •  2
  •   cherouvim    17 年前
    1. CPU寄存器和内存寻址。

    2. 系统可以引用(查看)更多的内存。

        5
  •  2
  •   Ivan Prodanov    17 年前

    我认为最好的答案是在x86位x64汇编程序中进行比较

    push 5
    

    为了更好地理解事物,“推X”是实现以下目标的捷径:

    sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable
    mov [esp],X //moves variable in @esp
    

    相反,所有注册中心的名称前面都有一个“R”(EAX变为RAX,ESP变为RSP,EDX变为RDX等等)。

    sub esp,8
    mov [rsp],X
    

    RSP的大小是ESP的两倍——64位,8字节。

        6
  •  2
  •   Glorfindel Doug L.    7 年前

    让我们回到基本点。

    现在99%的计算机都是基于所谓的 Von Neumann architecture . 基本上,计算机处于一个恒定的循环中:

    1. 从RAM获取命令
    2. 在CPU上执行命令

    alt text
    (来源: wikimedia.org )

    当提到32/64位系统(或任何其他位大小)时,基本上是指计算机的体系结构和实现:

    • 内存空间(RAM)的大小
    • CPU寄存器的大小

    如果您有64位系统,则地址空间为 2^64 . 这就是为什么32位系统的RAM不能超过4GB。如何寻址大于的内存空间 2^32 ?

    关于性能差异,没有明确的答案(正如CISC或RISC架构更好,也没有明确的答案)。这在很大程度上取决于您使用的应用程序。

    总而言之:64位体系结构只是构建计算机的一种不同方式。这并不意味着它更好,或者更糟,或者做的事情有所不同(在低层次上,每台计算机都在执行fetch)。这很简单 实现计算机的另一种方法 .

        7
  •  -3
  •   Kevin Vaughan    17 年前

    64位或32位正好引用主母线的宽度。