type
status
date
slug
summary
tags
category
icon
password
指令集
指令集是一个计算机系统支持的所有机器指令的集合,被视为软硬件之间的分界面。计算机系统的基本工作过程是:程序员编写的软件经过编译器翻译成可执行程序,即一个机器指令的序列,然后由底层硬件逐条读取这些指令来执行。因此,软件最终体现为指令集中的各种指令。
指令集架构
指令集架构(Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系,是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构包含一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。
ISA 的两大阵营根据指令系统复杂程度的不同,可以分为 CISC(复杂指令系统计算机)和 RISC(精简指令系统计算机)两大阵营。复杂指令集计算机包含许多应用程序中很少使用的特定指令,由此产生的缺陷是指令长度不固定。精简指令集计算机通过只执行在程序中经常使用的指令来简化处理器的结构,而特殊操作则以子程序的方式实现,它们的特殊使用通过处理器额外的执行时间来弥补。理论上的重要类型还包括最小指令集计算机与单指令集计算机,但都未用作商业处理器。另外一种派生类型是超长指令字,处理器接受许多经过编码的指令并通过检索提取出一个指令字并执行。
- CISC 体系结构:CISC 通过设置一些功能复杂的指令,将原本由软件实现的常用功能改用硬件指令实现,以提高计算机的执行速度。早期的计算机系统几乎都采用了 CISC 架构,特别是微型机中的 Intel 和 AMD 早期CPU。然而,CISC 结构的目标是强化指令功能,减少程序的指令条数,以提高性能。
- RISC 体系结构:RISC 通过简化计算机指令功能,只保留那些能在一个节拍内执行完成的指令,而将较复杂的功能用子程序来实现。RISC 指令系统仅包含最常用的简单指令,通过硬件优化设计,实现高性能。RISC 技术在移动和物联网领域占据了大部分市场份额。
常用 ISA 简介
- X86 架构:X86 是一个指令集家族,包括 X86-32(IA-32)和 X86-64(AMD64)。X86 是目前世界上最流行的指令集,虽然其架构设计可能不是最优的,但其兼容性非常好,可以运行 32 位甚至 16 位的程序。 该架构 CPU 主要是 Intel 和 AMD 两家公司,这种 CPU 常用在 PC 机上,包括 Windows,macOS 和 Linux。
- ARM 架构:ARM 属于 RISC 指令集架构,适用于嵌入式系统设计。ARM 占据了手机等移动设备的大部分市场份额。ARM 公司本身不生产芯片,只出售芯片技术授权。该架构 CPU 主要有高通、三星、苹果、华为海思、联发科等公司。这种 CPU 常用在手机上,包括安卓和苹果。
过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作艾康精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM 处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。安谋控股(ARM Holdings)开发此架构并授权其他公司使用,以供他们实现ARM的某一个架构,开发自主的系统单片机和系统模块(system-on-module,SoC)。
ARM 架构版本从 ARMv3 到 ARMv7 支持32 位空间和 32 位算数运算,大部分架构的指令为定长 32 位(Thumb)指令集支持变长的指令集,提供对 32 位和 16 位指令集的支持),而 2011 年发布的 ARMv8-A 架构添加了对64 位空间和 64 位算术运算的支持,同时也更新了32 位定长指令集。
x86、x86_64、x64、amd64
这些术语都是用来描述计算机的处理器架构的
- x86:这是一个指代 32 位 Intel 处理器架构的术语,它源自 Intel 公司的 8086 系列微处理器,x86 泛指一系列基于 Intel 8086且向后兼容的中央处理器指令集架构。最早的 8086 处理器于 1978 年由 Intel 推出,为 16 位微处理器。
- x86_64 或 amd64:x86-64(又称 x64,即英文词 64-bit extended,64 位拓展的简写)是一个处理器的指令集架构,基于 x86 架构的 64 位拓展,向后兼容于 16 位及 32 位的 x86 架构。x64 于 1999 年由 AMD 设计,AMD 首次公开 64 位集以扩展给 x86,称为 “AMD64”。其后也为英特尔所采用,现时英特尔称之为 “Intel 64”,在之前曾使用过 “Clackamas Technology” (CT)、“IA-32e” 及 “EM64T”。
- x64:这是 x86_64 或 amd64 的另一个常见别名,主要由 Microsoft 和 Oracle 使用。
ARM、AArch64
ARM 和 AArch64 都是 ARM 架构,但它们指的是不同的指令集。
- ARM:这通常指的是 32 位的 ARM 架构,也被称为 AArch32。这种架构在一些旧的或者对功耗和性能要求不高的设备上仍然被广泛使用,例如一些嵌入式设备或者微控制器。
- AArch64:这是 ARMv8 架构引入的 64 位状态。这种架构在现代的高性能设备上更为常见,例如最新的智能手机和服务器。AArch64 有时也被称为 ARM64。
在进行软件开发和编译时,你需要根据你的目标设备是使用 32 位的 ARM 架构还是 64 位的 AArch64 架构来选择合适的工具链和编译选项。
查看设备的处理器芯片架构
Windows、Linux、macOS 系统可通过
uname -m
命令,查看系统架构的相关信息。不同系统设备查看处理器芯片架构示例如下:
Windows
Linux、Android
Mac m1