use*_*312 25 64-bit operating-system 32-bit 16-bit microprocessors
在微处理器和/或操作系统的情况下,16位,32位和64位架构意味着什么?
在微处理器的情况下,它是指General Purpose Registers的最大尺寸或s的大小Integer或数量Address-line或s的数量Data Bus line或者是什么?
说" DOS is a 16-bit OS"," Windows in a 32-bit OS"等是什么意思?
Nic*_*cue 16
如果您想了解评论,我的原始答案如下.
如你所说,有各种各样的措施.幸运的是,对于许多CPU来说,很多措施是相同的,所以没有混淆.让我们看看一些数据(抱歉图片上传,我看不到在markdown中做表的好方法).

如您所见,许多专栏都是很好的候选人.但是,我认为通用寄存器(绿色)的大小是最常被理解的答案.
当处理器的尺寸在不同的寄存器中变化很大时,通常会更详细地描述,例如摩托罗拉68k被描述为16/32位芯片.
其他人则认为它是指令总线宽度(黄色),它也在表格中匹配.然而,在今天的流水线世界中,我认为对于大多数应用而言,这是一个与通用寄存器的大小相关的措施.
不同的人可能意味着不同的东西,因为正如你所说,有几种措施.因此,例如,有人谈论内存寻址可能意味着某人谈论整数算术的不同.但是,我会尝试定义我认为的共同理解.
我的看法是,对于CPU来说,它意味着"用于标准操作的典型寄存器的大小"或"数据总线的大小"(两者通常是等效的).
我用以下逻辑证明了这一点.该Z80具有一个8位累加器和一个8位的数据总线,同时具有16位存储器寻址寄存器(IX,IY,SP,PC),和一个16位存储器地址总线.Z80被称为8位微处理器.这意味着人们通常必须表示主整数算术大小或数据总线大小,而不是内存寻址大小.
它不是指令的大小,因为Z80(再次)有1,2和3字节指令,但当然多读取多字节读取.另一方面,8086是一个16位微处理器,可以读取8或16位指令.所以我不得不反对说它是指令大小的答案.
对于操作系统,我将其定义为"代码编译为在该大小的CPU上运行",因此32位操作系统的代码编译为在32位CPU上运行(根据上面的定义).
CPU"是"多少位,意味着它的指令字长.在32位CPU上,此类指令的字长为32位,这意味着这是CPU可以作为指令或数据处理的宽度,通常会产生具有该宽度的总线.出于类似的原因,寄存器具有CPU字长的大小,但是为了不同的目的,通常会有更大的寄存器.
以PDP-8计算机为例.这是一台12位电脑.每条指令都是12位长.为了处理相同宽度的数据,累加器也是12位.但是,使12位计算机成为12位计算机的原因是它的指令字长.它在前面板上有十二个开关,可以通过指令进行编程.
这是打破8/16/32位焦点的一个很好的例子.
位数通常也是地址总线的大小.因此它通常告诉最大可寻址内存.
在维基百科上有一个很好的解释:
在计算机体系结构中,32位整数,存储器地址或其他数据单元是最多32位(4个八位位组)宽的那些.此外,32位CPU和ALU架构是基于寄存器,地址总线或该大小的数据总线的架构.32位也是一代计算机的术语,其中32位处理器是常态.
现在我们来谈谈操作系统.
使用OS-es,这对CPU的实际"bitty-ness"更少受限,它通常反映了如何组装操作码(CPU的字长)以及如何处理寄存器(您无法加载16位寄存器中的32位值)以及如何处理存储器.将其视为已完成的已编译程序.它存储为二进制指令,因此适合CPU的字长.任务方面,它必须能够解决整个内存,否则无法进行适当的内存管理.
但是归结为它是一个程序是32位还是64位(OS本质上是一个程序),它的二进制指令是如何存储的,以及寄存器和存储器是如何被寻址的.总而言之,这适用于所有类型的程序,而不仅仅是操作系统.这就是为什么你有32位或64位编译的程序.
差异归结为传递到通用寄存器进行操作的指令集的位宽度。16 位一次可以操作 2 个字节,64 位一次可以操作 8 个字节的指令。通常可以通过在每个时钟周期执行更密集的指令来提高处理器的吞吐量。