处理器的位(32位或64位)是硬件还是软件上下文?

时间:2017-11-23 11:09:21

标签: architecture cpu cpu-architecture

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

从上面的解释,

  1. 是64位还是32位软件(即已安装的操作系统) 还是硬件?
  2. 如果以上情况属实,安装64位是安全的 操作系统(例如Ubuntu 64位操作系统)几乎可以在任何计算机上运行 硬件/处理器考虑?

1 个答案:

答案 0 :(得分:2)

您的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位操作系统运行得更好。