指令集体系结构 - ISA

原创 2015年11月24日 13:30:07

1. 指令集体系结构(Instruction-Set Architecture, ISA)


1.1 定义

一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA,包括很多个部分:

  • 指令集
  • 指令集编码
  • 基本数据类型
  • 一组编程规范
  • 寄存器
  • 寻址模式
  • 存储体系
  • 异常事件处理
  • 中断
  • 外部I/O

不同的处理器家族,例如Intel IA32、IBM/Freescale PowerPC和ARM,都有不同的ISA。维基百科 - Architecture list

1.2 作用

  1. ISA在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个抽象层
    • 处理器设计者:依据ISA来设计处理器
    • 处理器使用者(如:写编译器的牛*程序员):依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范
  2. 定义处理器上的软件如何构建,这是ISA的最重要内涵,现代处理器都是支持高级语言编程、操作系统等等特性,ISA要定义出指令集内的指令是如何支撑起C语言里堆栈、过程调用,操作系统里异常、中断,多媒体平台里数字图像处理、3D加速等等。

1.3 TIPS

  1. 常见的一个误解的答案:指令集并不存储于CPU中,应该这样说:CPU本身是指令集(结构)的一个实现/实例;
  2. 一个ISA可能包含多个指令集;



2. ISA与微体系结构

ISA只是描述了CPU应该支持的每条指令是做什么事的,即指令的功能。而微体系结构是描述处理器实际上是怎么实现的。

2.1 微体系结构

微体系结构是计算机体系结构中偏向硬件的部分,它可以理解成数字电路如何实现处理器中的各个功能,通常关心的内容包括,指令的流水线结构,计算单元的电路(加法器等等),存储器的结构(寄存器堆、Cache的结构)等等 ;

一个实例如下:
1. 拿Intel来说,(其ISA是IA-32等)其pentium 4处理器的微体系结构是NetBurst,现代,其Core(酷睿)系列CPU的微体系结构已经经历了好几代:Bloomfield(2008年)、Lynnfield(2009年)、Clarksfield(2009年)、Ar randale(2010年)、Gulftown(2010年)、Sandy Bridge(2011年)、Ivy Bridge(2012年)、Haswell(2013年)、Haswell Devil’s Canyon(2014年)、Broadwell(2015年)、Skylake(2015年)。
2. 拿ARM来说,(其ISA是ARMv7等)其微体系结构是ARM11等从11往后叫cortex系列,其中cortex-A系列有32位的A7、A9、A15,64位的A53、A57。




3. 指令集(Instruction set)

3.1 定义

通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令)。每款CPU在设计时就规定了一系列与其硬件电路相配合的指令集。

指令集可分为复杂指令集(CISC:sisk)和精简指令集(RISC:risk)两部分,这部分暂不继续讨论了。

Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。维基百科 - Comparison instruction set

3.2 指令

一条二进制机器指令由:指令码(操作码)+操作数组成。

  1. 操作码用来说明:指令的功能和执行的操作;
  2. 操作数说明:操作所涉及的源和目的数据的位置;
    • 源:立即数(即指令中包含的常亮)、寄存器、存储器、I/O端口等;



一个流程

一个我思考出来的可能的流程是这样:

  • CPU开发商
    1. 一个CPU厂商决定开发一个CPU,他们先要决定/选定一种指令集体系结构,他们当然不想自己开发,好了他们选用ARM的ARMv7;
    2. 那么该如何实现ARMv7呢?我们还是不去自己设计微体系结构了,还是用ARM公司配套的cortex吧,这样我们就能在硅晶片上做出一个CPU了;(当然中间省去了很多步骤)
  • CPU使用者(开发一个C编译器)
    1. 这颗CPU可以运行什么样的指令呢?发现使用CPU使用的是ARMv7,那么就查看ARMv7的文档就好了,这是RISC的一种
    2. 编译器完成了,它的功能是:将C源代码编译为可以在ARMv7上执行的二进制命令代码,即目标文件
    3. 此时一个小程序员写了一段简单C程序test.c,我们调用编译器将test.c编译为ARMv7上的可执行文件test.o
    4. 目标文件中包含了程序怎么开始和结束执行、需要操作的数据、如何与操作系统交互等等。只要运行这个目标程序,CPU就能执行其中的指令了



后续的理解

  1. 何为x86 - 20160921记录
    Intel 8086是一个Intel于1978年设计的16位微处理器芯片。数据总线16位,CPU20条地址总线-直接寻址1MB存储空间,每个存储空间可以存放一个Byte信息;

    20条地址总线:20根线条,每个有0个1两种状态,那么组合起来就有2^20中结果,也就是1048576 bit = 131072 byte = 128KB

    来源于8086指令集的一系列处理器,都称为x86处理器。

  2. 收到

版权声明:本文为博主原创文章,未经博主允许不得转载。

CPU、指令集、体系结构以及操作系统

学计算机几年了,常常会听及关于CPU、指令集、体系结构以及操作系统的相关概念,你中有我我中有你,听时似懂非懂,听完迷迷糊糊。终于受不了了,决定好好整理一下。     一、先从CPU开始,从图灵提出图...
  • zaguobangzhu
  • zaguobangzhu
  • 2015年10月29日 22:26
  • 3174

MIPS体系结构--指令集

mips体系结构下的汇编指令 指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。 Mips汇编语言的风格 汇编语言指令格式 [...
  • u011037149
  • u011037149
  • 2016年04月02日 18:36
  • 7931

Thumb-2指令集体系体系结构(ISA)

Thumb-2真不愧是一个突破性的指令集。它强大,它易用,它轻佻,它高效。 Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中,16位指令首次与32位指令并存,结果在Thumb状态下...
  • zougang_0623
  • zougang_0623
  • 2011年11月17日 10:20
  • 1077

指令集架构、微架构、处理器架构、CPU架构

前两天看书碰到了“CPU架构”这个词,脑子里感觉有点模糊不懂。查阅相关资料后又陆续碰到了“指令集架构”、“微架构”、“处理器架构”等词,于是就更加懵逼了。接着又陆陆续续的看了些资料,同时结合自己的一些...
  • caoleiwe
  • caoleiwe
  • 2017年12月08日 11:27
  • 146

计算机系统:深入理解计算机系统--第三章摘抄

计算机系统:深入理解计算机系统--第三章摘抄
  • tong_xin2010
  • tong_xin2010
  • 2014年06月02日 22:52
  • 492

设计一个简易的处理器(1)--定义指令集体系结构(ISA)

处理器的主要作用就是执行指令,那么设计处理器的第一步就是要定义或者兼容指令集体系结构(Instruction Set Architecture,ISA). 定义一个指令集体系结构,包括定义各种状态...
  • dennis_fan
  • dennis_fan
  • 2012年11月26日 16:15
  • 5005

MIPS指令集架构

MIPS指令集架构指令集架构ISA全称为Instruction Set Architecture,MIPS自从1988年提出后,不断扩展,其ISA大致如下:MIPS I这是基本的MIPS指令集,早期的...
  • chszs
  • chszs
  • 2009年04月09日 11:38
  • 6212

c++ isA基础

代码 使用不同的派生类对象初始化基类的方法所调用的基类的成员函数成员不同 1.在使用派生类对象在基类对象创建过程中初始化,调用基类的拷贝构造函数,而我们基类的拷贝构造函数只是简单的做了输...
  • sinat_33484755
  • sinat_33484755
  • 2017年04月06日 19:07
  • 226

计算机组成第二周:指令系统体系结构

1 x86体系结构 体系结构 厂商 微处理器型号 字长 年代 IA-16 Intel 8086, 8088, 80186, 80188, 80286 16位 19...
  • zqm201
  • zqm201
  • 2015年04月03日 16:33
  • 1050

计算机CPU体系结构以及指令流水原理介绍

1.计算机CPU的体系结构 图片来自计算机组成原理: 2.指令流水的原理          为简单起见,把指令的处理过程分为取指令和执行指令两个阶段,在不采用指令流水技术的计算机里,取指令和执...
  • wangjianno2
  • wangjianno2
  • 2016年07月10日 18:17
  • 1157
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指令集体系结构 - ISA
举报原因:
原因补充:

(最多只允许输入30个字)