-
CISC与RISC(复杂指令集计算机与精简指令集计算机)
2019-11-07 19:48:56CISC复杂指令集计算机( Complex Instruction Set Computer ) 指令 数量多、适用频率差别大、可变长 寻址方式 支持多种寻址方式 实现方式 微程序控制技术(微码) 其他 研制周期长 RISC精简指令集计算机( Reduced ...CISC与RISC
此部分知识在软考中出现的频率极高,且经常记不全特点,故此专门写一篇博客进行总结
CISC复杂指令集计算机( Complex Instruction Set Computer )
指令
数量多、适用频率差别大、可变长
寻址方式
支持多种寻址方式
实现方式
微程序控制技术(微码)
其他
研制周期长
RISC精简指令集计算机( Reduced Instruction Set Computing )
指令
数量少、适用频率相近、定长格式、大部分为单周期指令、操作寄存器、只有Load/Store操作内存
寻址方式
支持方式少
实现方式
增加了通用寄存器;硬布线逻辑控制为主、适合采用流水线;需要类库多
其他:
优化编译、有效支持高级语言
总结
底层复杂顶层精简
-
精简指令集(MIPS为例)常用指令特点及其格式
2020-08-02 18:15:25因此,指令集具有精简指令集(RISC)与复杂指令集(CISC)之分,本文主要介绍精简指令集,并以其中的MIPS为例展开。 二、设计原则 设计原则1: 简单源于规整 规整使得实现更简单 简单使得以较低成本实现更高性能成为...精简指令集(MIPS为例)常用指令特点及其格式
一、指令集
指令集是指一台计算机的全部指令;不同的计算机有不同的指令集,但是在许多方面都有共同之处。早期的计算机有非常简单的指令集:实现简单,许多现代计算机也有简单的指令集。因此,指令集具有精简指令集(RISC)与复杂指令集(CISC)之分,本文主要介绍精简指令集,并以其中的MIPS为例展开。
二、设计原则
设计原则1: 简单源于规整
规整使得实现更简单
简单使得以较低成本实现更高性能成为可能
设计原则2: 越小越快
设计原则3: 加速执行常用操作
小常数出现频率高
立即数操作避免load指令
设计原则4:优秀的设计需要适宜的折中方案
不同的指令格式使译码变得复杂, 但是允许所有指令统一32-bit 字长
使格式尽可能相似三、常用指令
常用指令汇总
add rd,rs,rt rd=rs+rt; sub rd,rs,rt rd=rs-rt; addi rt,rs,constant rt=rs+constant; lw rt,rs,constant rt=Address(rs+constant/4);//Address(rs+constant/4)表示:rs对应的数组,索引为constant/4的取值 lw rt,rs,constant Address(rs+constant/4)=rt; sll rt,rs,constant rt=rs<<4; srl rt,rs,constant rt=rs>>4; and rd,rs,rt rd=rs&rt;//按位与,还有andi or rd,rs,rt rd=rs|rt;//按位或,还有ori nor rd,rs,rt//rt取$zero rd=rs~rt;//按位取反 beq rs,rt,L1 if (rs == rt) 分支跳转到指令L1; bne rs, rt, L1 if (rs != rt) 分支跳转到指令L1; j L1 无条件跳转到指令 L1 slt rd,rs,rt if (rs<rt) rd=1; else rd=0; slti rt,rs,constant if (rs<constant) rt=1; else rt=0; 带符号数比较:slt, slti 无符号数比较:sltu, sltiu 例如: $s0 = 1111 1111 1111 1111 1111 1111 1111 1111 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001 slt $t0,$s0,$s1 # signed –1 < +1 ===> $t0 = 1 sltu $t0,$s0,$s1 # unsigned +4,294,967,295 > +1 ===> $t0 = 0 jal 过程标签l 跳转到目标地址 jr $ra 复制 $ra的内容到程序计数器PC lb rt, offset(rs) lh rt, offset(rs) 在 rt中用符号位扩展到32 bits lbu rt, offset(rs) lhu rt, offset(rs) 在 rt中用0扩展到32 bits sb rt, offset(rs) sh rt, offset(rs) 只存储最右边的字节/半字 lui rt, constant 复制16-bit 常数值 到rt的高16位,将rt 的低16位清为 0 链接取数:ll rt, offset(rs) 条件存数:sc rt, offset(rs)
寄存器用法
$a0 – $a3:参数寄存器 (reg’s 4 – 7)
$v0, $v1:结果值寄存器(reg’s 2 and 3)
$t0 – $t9:临时寄存器,用于存储临时值,可以由被调用者重写
$s0 – $s7:保留寄存器,用于存储变量,必须由被调用者保存/恢复
$gp:静态数据的全局指针(reg 28)
$sp:栈指针(reg 29)
$fp:帧指针(reg 30)
$ra:返回地址(reg 31)过程调用步骤
1.将参数放在寄存器中
2.将控制转移给过程
3.获得过程所需的存储资源
4.执行过程的操作
5.将结果放在调用者可以访问到的寄存器
6.返回调用点四、32位指令格式
R-格式指令
op:操作码(opcode)
rs:第一源操寄存器号
rt:第二源操寄存器号
rd:目的寄存器号
shamt:移位的位数(其它指令为00000)
funct:功能码(扩展操作码)I-格式指令
立即数运算和load/store指令
rt:源寄存器号(store指令)或目的寄存器号(立即数运算和load指令)
立即数:–215 — +215 – 1
地址:rs中的基地址加上偏移量J-格式指令
跳转 (j和jal) 目标地址可以是代码段的任意位置 -
ARM指令集摘要
2016-02-25 15:53:22◆ 简洁的指令集——为了保证CPU可以在高时钟频率下单周期执行指令,RISC指令集只提供很有限的操作(例如add, sub, mul等),而复杂的操作都需要由这些简单的指令来组合进行模拟。并且,每一条指令不仅执行时间固定,其...ARM是一种RISC体系结构的处理器芯片。和传统的CISC体系结构不同,RISC 有以下的几个特点:
◆ 简洁的指令集——为了保证CPU可以在高时钟频率下单周期执行指令,RISC指令集只提供很有限的操作(例如add, sub, mul等),而复杂的操作都需要由这些简单的指令来组合进行模拟。并且,每一条指令不仅执行时间固定,其指令长度也是固定的,这样,在译码阶段就可以对下一条指令进行预取。
◆ Load-Store 结构——这个应该是RISC 设计中比较有特点的一部分。在RISC中,CPU并不会对内存中的数据进行操作,所有的计算都要求在寄存器中完成。而寄存器和内存的通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的,这也是一个比较特别的地方。
arm处理器有七种运行模式,我们在这里只讨论user模式,在user模式下arm处理器的主要寄存器及其功能如下图所示:
arm的指令格式:
<opcode>{<cond>}{S}<Rd>,<Rn>{,<opcode2>}
其中,<>内的项是必须的,{}内的项是可选的,如<opcode>是指令助记符,是必须的,而{<cond>}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。
opcode 指令助记符,如LDR,STR 等
cond 执行条件,如EQ,NE 等
S 是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响
Rd 目标寄存器
Rn 第一个操作数的寄存器
operand2 第二个操作数
下面我们来通过一个简单的例子来熟悉一下Arm的指令集,源代码如下:
</pre><pre name="code" class="cpp">#include <stdio.h> int main(int argc, char **argv) { printf("Hello, ARM!\r\n"); return 0; }
IDA反汇编代码如下所示:
.text:000004C4 var_C = -0xC .text:000004C4 var_8 = -8 .text:000004C4 .text:000004C4 STMFD SP!, {R11,LR};将LR,R11压入栈,保存其值,!表示回写到SP .text:000004C8 ADD R11, SP, #4;将R11指向栈幁底部,用来寻址访问变量 .text:000004CC SUB SP, SP, #8;开辟2个临时变量的空间 .text:000004D0 STR R0, [R11,#var_8];将R0的值赋值给变量<span style="font-size: 13.3333px; font-family: Arial, Helvetica, sans-serif;">var_8</span> .text:000004D4 STR R1, [R11,#var_C];<span style="font-size: 13.3333px; font-family: Arial, Helvetica, sans-serif;">将R1的值赋值给变量</span><span style="font-size: 13.3333px; font-family: Arial, Helvetica, sans-serif;">var_C</span><span style="font-size: 13.3333px; font-family: Arial, Helvetica, sans-serif;"> </span>.text:000004D8 LDR R3, =(aHelloArm - 0x4E4);=相当于X86里面的offset .text:000004DC ADD R3, PC, R3 ; 重定位将"Hello, ARM!\r"字符串的地址赋值给R3 .text:000004E0 MOV R0, R3 ; 将字符串地址赋值给R0进行传参 .text:000004E4 BL puts ; 调用puts库函数 .text:000004E8 MOV R3, #0 ;R3清零,#表示立即数 .text:000004EC MOV R0, R3 ;R0清零 .text:000004F0 SUB SP, R11, #4 ;SP还原,清除临时变量空间 .text:000004F4 LDMFD SP!, {R11,PC} ;还原R11值,并将函数返回地址赋值给PC
这里我们主要来观察一下STMFD指令对后面寄存器的压栈顺序:
这里反汇编引擎将STMFD指令使用PUSH指令替换,但是不影响我们观察结果,很明显,STMFD指令会将后面的寄存器参数列表按照从右向左的方式压入栈。
-
精简指令集RISC
2007-03-21 19:33:00RISC和CISC是CPU从指令集的特点上可以分为两类:CISC和RISC。RISC是英文Reduced Instruction Set Computing的缩写,就是"精简指令运算集”。CISC就是"复杂指令运算集"。RISC的指令系统相对简单,它只要求硬件执行很...RISC和CISC是CPU从指令集的特点上可以分为两类:CISC和RISC。RISC是英文Reduced Instruction Set Computing的缩写,就是"精简指令运算集”。CISC就是"复杂指令运算集"。RISC的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。CPU执行运算速度受三个因素的影响(1)程序中指令数I,(2)每条指令执行所用周期数CPI,(3)周期时间T。这三者又有:程序执行时间=I*CPI*T,因此,从这个等式可看出减小其中任一个都可提高CPU的速度,因此RISC技术就从这三方面下手,对I、CPI、T进行优化改良,其措施如下:1、采用多级指令流水线结构采用流水线技术可使每一时刻都有多条指令重叠执行,以减小CPI的值,使CPU不浪费空周期。实例:Pentium Ⅱ/Pro/Celeron可同时发出执行五条指令,AMD-K6/K6-2可同时发出六条指令。2、选取机器中使用频率最高的简单指令及部分复杂指令这样可减小时钟周期数量,提高CPU速度,其实质是减小CPI下的值实现。实例:选取运算指令、加载、存储指令和转移指令作主指令集。3、采用加载(Load)、存储(Store)结构只允许Load和Store指令执行存储器操作,其余指令均对寄存器操作。实例:Amd-K6/K6-2、PⅡ/Celeron/Pro均支持对寄存器的直接操作和重新命名,并大大增加通用寄存器的数量。4、延迟加载指令和转移指令由于数据从存储器到寄存器存在二者速度差、转移指令要进行入口地址的计算,这使CPU执行速度大大受限,因此,RISC技术为保证流水线高速运行,在它们之间允许加一条不相关的可立即执行的指令,以提高速度。实例:主要体现于预测执行、非顺序执行和数据传输等方面,除Intel P54/55C不支持,像K6-2、PⅡ均支持。5、采用高速缓存(cache)结构为保证指令不间断地传送给CPU运算器,CPU设置了一定大小的Cache以扩展存储器的带宽,满足CPU频繁取指需求,一般有两个独立Cache,分别存放“指令+数据”。实例:PⅡ/Celeron:16K+16K,AMD-K6/K6-2为32K+32K,Cyrix MⅡ:64K(实也为2个32K Cache,此作共享Cache),PⅡ还加了L2 Cache,更是大幅提高了CPU速度。 -
ARM汇编指令集_学习笔记(1)
2020-10-22 20:21:11X86属于CISC(复杂指令集);ARM属于RISC(精简指令集)。 二、CISC存在的问题: 指令系统庞大,指令功能复杂,指令格式、寻址方式多;执行速度慢;功耗大;难以优化编译;编译程序复杂;80%的指令在20%的运行时间使用;... -
RISC精简指令集系统计算机
2019-09-30 10:33:24选用使用频率高的简单指令,复杂指令由简单指令组合完成 固定指令长度 只有Load/Store指令访存,其他指令都在寄存器中进行 CPU中寄存器数量多 一定采用指令流水,大部分指令在一个时钟周期内完成 ... -
指令系统第一节
2018-09-23 14:18:223、计算机的两种设计模式:复杂指令集计算机 CISC和精简指令集计算机 RISC CISC :为了提高运算速度和扩展功能而产生的指令集。 特点:指令系统庞大,指令格式多变,寻址方式也很多。绝大多数指令需要多个... -
指令格式和寻址方式
2020-03-09 13:48:56指令集 指令系统 解释:一台计算机所有机器指令集合 指令系统设定的基本要求: ·完整性 ·有效性 ·规整性 ·兼容性 复杂指令计算机:CSIC 特点: 1.指令系统复杂; 2.周期长; 3.各种指令都能控制寄存器; 4.... -
计算机原理 - 第二章 指令系统
2020-04-29 16:37:30指令系统 2.1 概述 机器指令是计算机设计者...复杂指令集计算机CISC 的主要特点是: (1) 指令系统复杂:指令多/寻址方式多/指令格式多 (2) 指令周期长:绝大多数指令需要多个时钟周期才能完成 (3) 各种指令都能访... -
处理器架构的特点比较以及在服务器领域的应用
2019-04-23 16:00:28注:编写本文的时间是13年,...首先要理解处理器架构的不同思路:CISC(复杂指令集)和RISC(精简指令集),X86是CICS设计思路,而ARM是RISC设计思路。 CISC注重性能,可以提供复杂的指令完成一系列规定处理,RI... -
比较CISC处理机和RISC处理机的特点
2019-12-15 17:27:34RISC是精简指令集计算机,CISC 复杂指令集计算机。RISC和CISC相比,指令数、指令格式、寻址方式少,通用寄存器多,采用组合逻辑,采用优化的编译技术,便于实现指令流水。RISC 便于设计,成本较低,可靠性较高。例如... -
单片机与DSP中的PIC 8位单片机的分类和特点2
2020-12-04 21:26:54这种结构与一般采用CISC(复杂指令集计算机)的单片机在结构上是有不同的。 1双总线结构 具有CISC结构的单片机均在同一存储空间取指令和数据,片内只有一种总线。这种总线既要传送指令又要传送数据(如图1-a所示)... -
PIC 8位单片机的分类和特点
2013-07-25 16:57:06ywangjianwei@126 的 PIC 8位单片机的分类和特点 ...这种结构与一般采用CISC(复杂指令集计算机)的单片机在结构上是有不同的。 1双总线结构 具有CISC结构的单片机均在同一存储空间取指令和数 -
CISC和RISC是什么?它们的特点和区别?
2019-12-25 23:10:00CISC的英文全称为“Complex Instruction Set Computer”,即“复杂指令系统计算机”,从计算机诞生以来,人们一直沿用CISC指令集方式。早期的桌面软件是按CISC设计的,并一直沿续到现在。目前,桌面计算机流行的x86... -
电子管计算机特点 摩尔定律 冯诺依曼体系 现代计算机结构 程序翻译 程序解释 容量单位 速度单位 ASCII码 ...
2020-09-14 00:26:09文章目录电子管计算机特点摩尔定律冯诺依曼体系现代计算机结构程序翻译程序解释容量单位速度单位ASCII码Extended ASCII码编码集 电子管计算机特点 集成度小,空间占用大 功耗高,运行速度慢 操作复杂,更换程序... -
了解ARM架构特点
2015-12-16 16:22:361、arm的体系结构和特点 Reduced Instruction Set Computer (RISC 精简指令集架构) ... (x86架构属于 CISC(复杂指令集)) 特点:统一的寄存器的操作方法 cpu只能和寄存器之间进行交互,不 -
硬件的组成配件及功能
2019-10-08 23:56:06计算机的分类非常多,如精简指令集(RISC)的计算机(计算器、sun公司的SPARC设备等等)与复杂指令集(CISC)的计算机(笔记本、服务器、塔式服务器等等) 精简指令集特点:格式少、可执行指令少、寻址方式少、执行... -
RISC体系结构特点及其关键技术
2013-11-04 15:09:18RISC的英文全称为“Reduced Instruction Set Computing”,中文即“精简指令集”,它的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。... -
自己的架构学习
2020-07-29 18:31:38复杂指令集 (CISC,complex instruction set computer) 通过一些复杂的指令把一些原来由软件实现的常用的功能改用硬件的指令系统完成,以此来提高计算机的执行速度。 2.精简指令集 (RISC,reduced instruction set ... -
Android的inline hook
2019-06-27 18:33:55由于指令集的特点,arm平台的inline hook较为复杂: 1、存在arm指令集和thumb指令集 2、无法单纯使用B指令直接跳转,因为b指令跳转范围优先 3、存在literal指令,与当前PC值相关,需要对指令进行修正 以arm指令集... -
计算机组成与体系结构
2019-05-21 17:40:27CISC(复杂指令集系统) 指令系统的特点 : (1)指令数量众多。指令系统拥有大量的指令,通常有 100~250 条。 (2)指令使用频率相差悬殊。最常使用的是一些比较简单的指令,仅占指令总数的 20%,但在程序中出现的... -
(一)计算机基础知识
2021-01-16 11:10:22一、cpu详解 1.1 cpu的分类与指令集 ...这种指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、中央处理器的实现细节对于机器级程序是可见的。 复杂指令集 在CISC微处理器中,程序的各条指令是按 -
CPU处理器
2019-04-29 15:57:30CPU处理器相当于人体的大脑,负责整个计算机的运算和控制,是服务器性能效率的最核心部件。(如下图所示) ...复杂指令集的设计代表有大家熟知的Intel志强系列(XEON)(应用广泛)和AMD系列(应用不... -
朱老师ARM裸机学习笔记(一):计算机基础知识
2016-03-08 12:54:38RISC和CISC的区别CISC(complex instruction-set computer)复杂指令集 特点: 指令较多,较丰富,CISC的CPU 较难设计,Intel是典型的CISC体系CPU。RISC(reduce instruction-set computer) 精简指令集 特点: ... -
GH 插件合集及安装说明(2019最新集合版本)grasshopper
2019-12-18 00:37:05与传统建模工具相比,GH的最大的特点是可以向计算机下达更加高级复杂的逻辑建模指令,使计算机根据拟定的算法自动生成模型结果。通过编写建模逻辑算法,机械性的重复操作可被计算机的循环运算取代;同时设计师可以向... -
嵌入式系统ARM期末总复习
2020-12-04 21:55:38而复杂指令集CISC的设计则更侧重硬件执行的指令的功能。总之RISC对编译器的要求高,CISC强调硬件的复杂性,CPU的实现更复杂。 RISC设计的主要特点: (1)指令集——减少指令集种类,一个周期一条指令,指令周期固定... -
嵌入式处理器-2.1
2017-08-23 15:18:23(1)按照指令集分:CISC(复杂指令集结构)与RISC(精简指令集结构) CISC处理器特点:指令数目很多且结构比较复杂。 CISC常见处理器:个人计算机中的Intel x86处理器 RISC处理器特点:指令数目较少,指令字长... -
国产cpu
2018-09-19 22:08:32X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版。 精简指令集,是计算机中央处理器的一种设计模式,也被称为RISC(Reduced Instruction Set Computing的缩写)。特点是所有指令的格式都是一致的,...