处理器、指令集架构和操作系统——32-bit与64-bit

下图是一个典型系统的硬件组成,其中的总线、PC(程序计数器)和寄存器的大小都被设计成字(word)。字长(即字的字节数)是一个基本的系统参数,在不同的系统中通常不一样,如嵌入式设备往往只有1或2个字节,而常见的系统则为4字节或8字节。
典型系统的硬件组成
我们在安装操作系统和软件的时候通常会面临32-bit与64-bit两种选择,并且有时还需要了解自己电脑的处理器是32bit还是64-bit的。
那么,上面提到的字长与32-bit、64-bit到底有什么关系呢?

一、处理器

32-bit处理器指的是其寄存器、地址总线或数据总线的字长为4字节(即32bits)的处理器。与之对应,64-bit处理器指的是其寄存器、地址总线或数据总线的字长为8字节(即64bits)的处理器。
以下摘自wikepedia对32-bit64-bit处理器的定义:

In computer architecture, 32-bit integers, memory addresses, or other data units are those that are 32 bits (4 octets) wide. Also, 32-bit CPU and ALU architectures are those that are based on registers, address buses, or data buses of that size. 32-bit microcomputers are computers in which 32-bit microprocessors are the norm.

In computer architecture, 64-bit computing is the use of processors that have datapath widths, integer size, and memory address widths of 64 bits (eight octets). Also, 64-bit computer architectures for central processing units (CPUs) and arithmetic logic units (ALUs) are those that are based on processor registers, address buses, or data buses of that size. From the software perspective, 64-bit computing means the use of code with 64-bit virtual memory addresses.

处理器的内部硬件结构决定了它是32-bit还是64-bit。64-bit的地址总线是32-bit的两倍,因此可寻址空间更大,使应用程序具有更大的虚拟地址空间;64-bit每次能够处理的字长比32-bit更大,因而在一些对性能要求高的场合更有优势。

二、指令集架构

有一些软件在下载的时候会提示选择“x86”还是“x86-64”版本。这里的“x86”和“x86-64”其实是指令集架构的名称。
通俗地说,指令集架构(Instruction set architecture,ISA)就像是特定处理器的设计图纸,规定了该类处理器支持哪些机器指令(指令集)、寄存器有哪些状态以及输入输出模型。
根据指令集结构的设计,在处理器上通过硬件电路进行实现,就得到了支持该指令集架构的处理器。同一个指令集架构可以有多种不同的实现方式,基于同一指令集架构的应用程序可以相互移植。

根据wikipedia更加严格的定义,指令集架构是计算机的抽象模型,而指令集架构的在特定处理器上的实现方式则称为微架构(Microarchitecture)。

指令集是计算机的抽象模型,是软件和硬件之间的接口。它定义了计算机支持的数据类型、寄存器等具有哪些状态以及这些状态各自的含义、指令集(一组构成计算机机器语言的机器指令)和输入输出模型。一个ISA可以有多个不同的实现,但是建立在同一个ISA之上的软件可以运行于该ISA的不同实现。
微架构(Microarchitecture)是给定ISA在特定处理器上的实现方式。同一个ISA可以使用不同的 Microarchitecture来实现。
计算机架构是微架构和指令集的总和。

指令集架构规定了处理器的指令集——该硬件所支持的机器指令(可以用更具有可读性的汇编语言来描述)。操作系统和其它应用程序的代码最终都要转化为对应机器指令,才能被处理器解释和执行。

可见,指令集架构决定了处理器的实现。也就是说,指令集架构的32-bit或64-bit决定了对应处理器的位数。例如,x86-64 ( 也称为x64、x86_64、AMD64和Intel 64)是X86指令集的64-bit版本,同时也支持32-bit和64-bit的指令集。

三、操作系统与应用程序

操作系统建立在处理器之上(如下图所示),利用处理器的指令集来进行硬件管理和资源抽象。根据目标处理器的不同,操作系统也相应地分为32-bit和64-bit的系统。
操作系统提的分层视图
现在的大部分处理器都是64-bit的,支持64-bit操作系统;同时,这些处理器也完全兼容32-bit操作系统。但是,32-bit的处理器则不能安装64-bit的操作系统,因为它只支持32-bit的指令集。

应用程序利用操作系统提供的服务来完成特定的任务。64-bit操作系统通常能同时支持32-bit和64-bit的应用程序,但是32-bit的操作系统则不支持64-bit的应用程序(除非通过某些虚拟化来实现)。

四、如何查看位数

如何查看自己的处理器和操作系统是32-bit还是64-bits?
这里给出了Windows的查看方法,下面介绍linux下的查看方法。执行lscpu命令,如下图所示:
lscpu命令执行效果
“Architecture”表示CPU的类型:”x86_32” 为32-bit,“x86_64”则为64-bit;
“CPU op-mode(s)”表示linux系统的类型:只有“32-bit”为32-bit,包含“64-bit”则为64bit。


参考:
《深入理解计算机系统》

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值