【问题标题】:Is bit (32 or 64 bit) of a processor an hardware or software context?处理器的位(32 位或 64 位)是硬件还是软件上下文?
【发布时间】:2017-11-23 11:09:21
【问题描述】:

我遇到过一些情况,我真的希望我对这种比特现象有正确的看法。在 Visual Studio 中开发 C# 软件并且必须使用 3rd 方库时,该指令有时包含使用 64 位处理器的库版本的说明(例如sqlite dlls)。像这样的事情和其他事情让我相信处理器的位大小(即 64 或 32 位)是软件的事情。然后又是安装操作系统,有时你会听到类似“这个 ISO 映像适用于 64 位处理器)。当我意识到在计算机商店中,计算机在 RAM 和 HD 大小、处理器名称和速度等方面进行广告宣传。(例如 500GB HD、4GB RAM、英特尔赛扬处理器 2.2Ghz...)从未听说过在这种情况下提到 64 位或 32 位。

从上面的解释来看,

  1. 是 64 位还是 32 位软件(即安装的操作系统) 还是硬件的东西?
  2. 如果上述情况属实,安装 64 位是否安全 几乎任何计算机上的操作系统(例如 Ubuntu 64 位操作系统)或有 考虑硬件/处理器?

【问题讨论】:

  • 为简单起见:CPU 具有“32 位”和“64 位”模式(如果支持)。相同的机器代码,比如 X,对两种模式意味着不同的东西。可以在每个进程的基础上选择此模式(实际上比这更复杂),因此加载到进程地址空间的每个“事物”(如 DLL)必须具有相同的位数。 C#(或更好的 ICL)没有位,VS 中的 CPU 设置意味着:将解释器创建为 32/64/默认位。默认是操作系统位数。
  • 在 32 位操作系统完全过时之前,您有时会看到 64 位 Windows 与 32 位计算机的广告。您所说的计算机广告始终适用于包含操作系统的系统,因此 CPU 支持的内容仅与 OEM 相关;他们可以选择销售具有 32 位操作系统的 64 位机器(实际上仍然在上网本上这样做,因为 64 位 Windows 占用更多空间,因为它包含两者的库,而 32 位 Windows 没有使用 64位库)。使用 Linux,您可以进行纯 64 位安装,很少有 PC 出售使用 Linux。
  • 这可能属于超级用户,其中可能存在重复项,特别是如果您只关心 x86(不过,您没有标记 x86,所以我试图让我的答案不完全是 x86 特定的。 )
  • 这并不完全在超级用户上有重复。关于超级用户的相关问题并不是专门为了阐明软件/硬件上下文。但是,您的回答非常明确和相关。
  • 32 位已过时,当前所有 x86 CPU 都支持 64 位模式(Geode 微控制器除外...)但一般来说,要么根据型号查找它(例如 google i7-6700k ),或检查 CPUID 功能位:wiki.osdev.org/X86-64#How_do_I_detect_if_the_CPU_is_64_bits_.3F。不支持长模式的最新 CPU 是 Intel Atom,比 Silvermont 早了几代。

标签: architecture cpu cpu-architecture


【解决方案1】:

您的 ISO 映像应该显示“此 ISO 映像适用于 64 位操作系统”。 (或者希望更具体地说是 x86-64 操作系统,因为 x86 并不是世界上唯一的 ISA。)

  • 64 位内核(长模式)可以运行 64 位用户空间(长模式)或 32 位(兼容模式)。这只能在支持长模式(即支持 64 位)的硬件上运行。
  • 32 位内核(传统模式)只能运行 32 位用户空间(传统模式)。它还可以使用 vm86 模式运行 16 位软件,但 64 位内核不能(没有像 VirtualBox 这样的完全虚拟化)。

因此,32 位操作系统可以将您的 64 位 CPU 限制为只能在 32 位模式下运行。


AFAIK 即使在 x86 之外,这些要点通常也是正确的(模式名称除外),尽管我不确定 64 位 MIPS 和 PowerPC 甚至是不同的模式。 (即指令集中可能有空间添加 64 位指令,而不会像 x86-64 那样改变现有指令编码的含义)。

64 位 ARM 有点像 x86-64:AArch64 是一种新的 ISA,但一些支持它的 CPU 可以运行 ARM32 用户空间进程(也可能运行 ARM32 操作系统)。但一些较新的 Apple 芯片完全放弃了对 32 位 ARM 模式的硬件支持。 (AArch64 是一个足够激进的改变,这是值得做的。与 AMD64 不同,AMD 非常保守,几乎没有清理 x86 的任何缺陷,因为它难以解码和高效运行。(例如,班次留下未修改的标志count=0)。这样可以节省解码器和其他地方的晶体管,因为更多的晶体管可以与 32 位模式共享。)


在 32 位操作系统完全过时之前,您有时会看到一个广告,说明计算机配备 64 位 Windows 与 32 位。

您所说的计算机广告始终适用于包括操作系统在内的系统,因此 CPU 支持的内容仅与 OEM 相关;他们可以选择销售具有 32 位操作系统的 64 位机器(实际上仍然在上网本上这样做,因为 64 位 Windows 占用更多空间,因为它包含两者的库,而 32 位 Windows 没有使用 64位库)。

使用 Linux,您可以进行纯 64 位安装,但很少有 PC 销售带有 Linux。而且它不会节省太多空间,因为普通的 Linux 安装只有几个关键的 32 位库,而不是所有内容的第二个副本。尽管如此,64 位安装确实比纯 32 位安装占用更多空间。 x86-64 的代码大小通常稍大一些,即使指令数较少。

x86-64 还为具有大量指针数据结构的程序占用更多 RAM(除非您使用像 x32: 32-bit pointers in long mode 这样的 ABI),这也是您仍然看到一些带有 32 位 Windows 的低端计算机出售的另一个原因。 32 位操作系统实际上可能比具有 2GB 或更少 RAM 的 64 位操作系统运行得更好。

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2012-03-25
    • 2011-02-10
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多