什么是指令集架构

参考链接

处理器是什么?

在计算机中把负责控制功能控制器和负责计算功能运算器合称为中央处理器(Central Processing Unit,CPU)

多核处理器

为了提升计算机性能,现在多采用多核并行的设计,其中一个“核”就是一个处理器,而人们常说的“多核处理器”中的“处理器”是一个宏观概念,和上文阐述的处理器不是一个事物。或者我们可以认为“多核处理器”原称应该是“(包含)多处理器(的)处理器”,为避免重复,用“核”来代替第一个“处理器”。

指令集架构

指令

 低级语言

  • 机器指令:CPU能直接识别并执行的二进制编码
  • 汇编指令:汇编指令是机器指令的助记符,同机器指令一一对应
  • 指令:指令通常由操作码和地址码(操作数)两部分组成
  • 指令集:每种CPU都有自己的汇编指令集

汇编语言由3类指令组成:

  • 汇编指令
  • 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
  • 其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码
section .data                           ;数据段声明
             msg db "Hello, world!", 0xA    ;要输出的字符串
             len equ $ - msg            ;字串长度
section .text                           ;代码段声明
global _start                           ;指定入口函数
_start:                               ;在屏幕上显示一个字符串
             mov edx, len              ;参数三:字符串长度
             mov ecx, msg              ;参数二:要显示的字符串
             mov ebx, 1               ;参数一:文件描述符(stdout)
             mov eax,4                ;系统调用号(sys_write)
             int 0x80                 ;调用内核功能
                                                     ;退出程序
             mov ebx,0                ;参数一:退岀代码
             mov eax, 1               ;系统调用号(sys_exit)
             int 0x80                 ;调用内核功能

指令集与处理器的关系

不同的处理器(CPU)会用相应的汇编语言编写底层操作程序,而在写这个汇编语言的时候需要依照指令集架构这个规则,从而处理器进行操作。

在内存或磁盘上,指令和数据没有任何区别,都是二进制信息

指令集的重要性

指令集架构(ISA, Instrucion Set Architecture)定义了基本数据类型(BYTE/HALFWORD/WORD/…)、寄存器(Register)、指令、寻址模式、异常或者中断的处理方式等。一台计算机的指令系统反映了该计算机的全部功能,机器类型不同,其指令系统也不同,因而功能也不同。

ISA作为处理器(即“核”)的基础,对于处理器的整体性能起到了决定性的作用,不同架构的处理器同主频下,性能差距可以达到2-5倍。ISA的实现需要通过编写与指令集中的指令对应的硬件实现的逻辑代码来完成。

CPU依靠指令来计算和控制计算机系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。

指令集的强弱也是CPU的重要指标,指令集是提高处理器效率的最有效工具之一。采用相同架构的处理器,性能基本上已经锁定在一定的范围之内,不会有本质的区别。

指令系统的设置和机器的硬件结构密切相关,一台计算机要有较好的性能,必须设计功能齐全、通用性强、内含丰富的指令系统,这需要复杂的硬件结构来支持。

总的来说,在开发一款处理器时,

  1. 我们首先需要选定所使用的ISA,这个架构会极大地影响这款处理器的最高性能。
  2. 之后需要根据ISA规则中要求的硬件资源来搭建处理器的硬件平台。
  3. 最后一步,是按照ISA的规则要求,使用硬件描述语言(HDL)进行逻辑编写,控制这个硬件平台按照指令规则进行数据处理。

ps:我们常说的ISA(或处理器)的宽度指的是CPU中通用寄存器的宽度(二进制的位数),这决定了寻址范围的大小以及数据运算的能力。ISA的宽度和指令编码长度无关。

指令集的分类

指令集分为精简指令集(Reduced Instruction Set Computer)和复杂指令集(Complex Instruction Set Computer),二者区别在于:

  1. CISC针对特定的功能实现特定的指令,导致指令数目比较多,但生成的程序长度相对较短;
  2. RISC只定义常用指令,对复杂的功能采用常用指令组合实现,这导致指令数目比较精简,但生成的程序长度相对较长。

程序效率与程序长度的关系?

我们常用的X86架构属于CISC,而手机等小平台上的ARM架构就属于RISC
 

你可能感兴趣的:(RK3308项目相关,X86,指令集)