计算机组成原理
2020-09-15 10:03:25 3 举报
AI智能生成
408计算机基础,计算机组成原理,二战123分老学长一年整理出来的资料。
作者其他创作
大纲/内容
cpu
组成
运算器
ALU
寄存器
通用寄存器(保存操作数)
暂存寄存器(暂时存放运算结果)
累加寄存器
状态条件寄存器(也叫程序状态字寄存器)
控制器
CU
寄存器
程序计数器(PC里面存放的是逻辑地址)
指令寄存器(存放的是当前正在执行的指令对程序员透明)
数据寄存器(MDR)
地址寄存器(MAR)
中断系统
寄存器
用户透明的寄存器
IR
MAR
MDR
暂存寄存器
累加寄存器
移位寄存器
程序猿可见寄存器
PC
通用寄存器
堆栈寄存器
状态寄存器(PSW)
指令
指令周期(包含多个机器周期)
取指周期(机器周期又叫CPU周期,包含多个时钟周期(对应微操作节拍))
执行周期(机器周期又叫CPU周期,包含多个时钟周期(对应微操作节拍))
指令执行方案
单指令周期(所有的指令都选用相同的时间完成)(串行)
多指令周期(指令周期可以不相同)(串行)
流水线方式(并行)
将指令cache和数据cache分离开存放的好处是减少并行的结构相关
数据通路
总线
总线方便拓展
分时和共享
易冲突
速度较慢
专用数据通路
拓展不方便
速度较快
不易冲突
控制单元(CU)
微操作命令的分析
控制单元的功能
输入
指令寄存器中的操作码
标志
时钟
总线的控制信号(如DMA请求,中断请求)
输出
CPU的内部信号
送至控制总线的信号
控制方式
同步控制方式(有固定的时钟同步)
定长方式
机器周期定长
机器周期的最大长度取决于最繁琐的操作所用的时钟周期个数
不定长
机器周期可以不相等
中央控制和局部控制相结合的方式
大部分简单的指令放在统一较短的机器周期里面完成
少数复杂的指令采用局部控制的方式
中央控制和局部控制的节拍宽度是一样的
异步控制方式(没有固定的时钟同步)
不需要节拍
需要应答电路的支持
联合控制方式
大部分采用同步控制
少部分采用异步控制
控制单元设计
硬布线逻辑控制
不易于拓展
速度较快
一般用在RISC型CPU中
微程序逻辑控制
操作灵活
速度较硬布线慢
一般用在CISC型CPU中
机器指令
机器指令可以分解为一个微操作序列,这一段微操作序列也叫微程序
微操作和微命令一一对应
微命令是微操作的控制信号
微操作是微命令的执行过程
微指令是若干微命令集合
编码
直接编码
运行快
每一位代表一个微命令
微指令的字段较长,需要较大的控制存储器
字段直接编码
将互斥的微命令放在一个字段中
微命令状态需要一种表示不操作
字段间接编码
一个字段的微命令需要其他字段的微命令解释
混合编码
直接编码和字段(直接,间接)编码混合使用
微地址形成
微地址形成部件(实质是一个译码器)根据操作码形成
断定方式,由微指令的下地址给出
增量计数器(类似于pc)(CMDR)+1→CMDR
微指令的格式
水平型
微指令长
并行度高
和机器指令相差较大
形成的微程序所需的微指令个数较少
垂直型
微指令短
并行度低
和机器指令相差较小
形成的微程序所需的微指令个数较多
指令流水线
阻碍流水线发挥应有的功能
结构相关
两条指令同时访问一个存储器
数据相关(英语从右向左读)
写后读(RAW)
按序发射的流水线只会出现这一种数据相关的情况
读后写(WAR)
写后写(WAW)
控制相关
跳转指令造成
数据旁路
解决数据相关问题
数据在写回存储器前存放在一个下一条指令可以访问的地方这样会减少推迟时间
指标
吞吐量(一秒执行的的指令数量)
加速度(不使用流水线和使用流水线的时间之比)
效率
时空图中占用的面积和总面积的比值,反应的是各部件的利用率
拓展
超标量基数
并发执行多条指令
超级流水线
相邻两条指令在流水线中相差不到一个周期
超长指令字
将多条能并行的只能合成一条
动态流水线
多种运算可以同时执行
中断系统
中断允许
中断允许状态触发器
中断判优(多个中断源同时请求时)
硬件判优
软件判优
中断响应时间
中断的响应是在指令执行的尾部
中断响应
单级中断(中断服务程序不允许被打断)
中断周期(中断隐指令)
1.关中断
2.保存pc
3.转到中断服务子程序
中断服务子程序
1.保存cpu现场
2.设备服务
3.恢复cpu现场
4.开中断
5.中断返回
多重中断(中断服务程序允许被打断)
中断周期(中断隐指令)
1.关中断
2.保存pc
3.转到中断服务子程序
中断服务子程序
1.保护cpu现场
保存psw
保存其他寄存器
2.开中断
在保存现场后提前开中断使得中断服务子程序可以被中断
3.设备服务
4.恢复现场
5.中断返回
屏蔽字
带有中断屏蔽的中断服务子程序
1.保护现场
保存psw
保存其他寄存器
2.置屏蔽字
3.开中断(在开中断前设置中断屏蔽字)
4.中断服务
5.关中断
6.恢复现场
7.恢复屏蔽字
8.开中断
屏蔽字所设置的优先级准确来说是处理优先级而不是响应优先级
屏蔽字设置
优先级高于本程序设置为0
本程序的或者是低于本程序优先级的设置为1,最高全1
总线
总线有关名词
总线传输周期(低位交叉编址的多体存储器的传输时间与总线传输周期有关)
1.申请分配阶段
2.寻址阶段
3.传输数据阶段
4.结束阶段(让出总线的使用权)
总线宽度(数据线的个数)
总线特性
机械特性
尺寸形状
电气特性
传输方向,电压有效范围
功能特性
每根线是传送什么的,一共有多少根线
时间特性
信号的时序关系(那根线在什么时间有效)
总线的分类
片内总线
CPU内部寄存器和寄存器之间
系统总线
数据总线(双向)
地址总线(单向)
控制总线(不考虑单双)
通信总线
串行通信(适用于远距离的通信)
并行通信(适用于近距离的通信)
总线的性能指标
总线的宽度(数据线的根数(体现数据线根数的是总线的功能特性,不是机械特性))
总线的带宽(总线的频率x总线的宽度)
系统中的总线结构
单总线
所有的设备都连在一条总线上方便拓展
I/O设备和主存共享一条总线统一编址
双总线
IO总线和主存总线
每次IO和主存交换信息的时候都需要通过cpu
三总线
IO总线主存总线和DMA总线
DMA总线和高速外设相连
任意时刻只能使用一个总线,DMA在想内存输入数据时CPU不能占用主存总线,IO总线只有在cpu执行IO指令时才能用得到
总线仲裁
集中仲裁(设备忙的信号是由设备发出的)
链式查询
仅需要三根线(请求,同意,设备忙)
对电路故障敏感
靠近总线控制部件的设备的优先级
计数器查询
需要2+log以2为底n根线(将链式的一根同一线换成多根地址线)
总线控制部件里面的有一个计数器方便控制优先级
如果每次计数器都是从上一次的请求的数+1那么所有请求的优先级相同,优先级可变(通过改变计数器的初值实现)
独立请求
需要2n根
分部总裁
不需要集中总裁的仲裁器,每一个模块都有独自的仲裁号和仲裁线
总线传输数据的操作
同步通信方式
不管是输入还是输出地址信号全程陪伴
传输数据较快
传输的模块速度不能相差过大,按照最慢的模块来设计公共时钟,保证在一个时钟内能完成操作
传输的距离较近
异步通信方式
采用请求回答的方式,不需要公共的时钟信号
可用于并行和串行传输
分类
不互锁
主模块请求
半互锁
主模块请求,从模块回答
全互锁
主模块请求,从模块回答,主模块回答从模块的回答
由上之下速度逐渐变慢,安全性逐渐升高
总线的标准
系统总线
ISA
EISA
局部总线
PCI
PCIE
设备总线
USB(串行)
SATA(串行)
IDEA(硬盘光驱接口)
io设备
IO系统
IO硬件
带通道的
通道
设备控制器
IO设备
带接口的
接口模块
IO设备
IO软件
IO设备
输入设备
鼠标键盘
输出设备
显示器
打印机
输入输出兼容设备
IO接口
IO接口的功能
1.数据缓冲
2.设备编址
3.串并型数据转换(一般来说CPU端数据并行,设备端数据串行)
IO端口
端口是接口内部CPU可以读写的寄存器
端口编址
统一编制
占用内存的地址
不统一编制
设置专用的IO指令
IO方式
程序查询方式
软件控制
若查询传送完成则将寄存器里面的数据传送给cpu因此传送单位是寄存器存储大小(一般是一个字)
传送的开始,中间,结束都需要cpu干预,cpu的占用最高
程序中断方式
软件硬件控制
同程序查询类似不过是由接口发起中断来请求cpu把寄存器中的字取走,因此传输单位通常也是一个字
程序开始和结束时需要cpu干预
DMA方式
硬件控制
直接在
传送一个数据依旧是一个存储周期
通道方式
软件硬件控制
计算机性能指标
核心
早期计算机的核心是处理器
现在计算机的核心是存储器,各种设备也是通过存储器和cup数据传输
冯诺依曼结构
采用二进制(二进制方便硬件实现且逻辑简单)
存储程序的思想,指令和数据以同等的地位存放在计算机中
以运算器为核心
指令顺序存放
五大功能部件
运算器
控制器
存储器
输入设备
输出设备
计算机语言
机器语言(由01二进制组成,机器唯一可以直接识别的语言)
汇编语言(更容易记忆,但是机器无法直接运行,可以对硬件直接操作)
高级语言(方便编写,直接转换为机器语言或者是先转换为汇编再转换为机器语言)
解释程序
不生成目标模块一边解释一边运行
编译程序
生成目标模块(较快)
机器的性能指标
CPI(一条指令包含的时钟个数,一个程序的CPI是一个平均的概念)
MIPS(一秒钟执行的百万指令个数)
MFlLOPS(一秒执行的百万浮点运算)
语言分类
机器语言(唯一机器能运行的语言)
汇编语言(由汇编程序生成机器语言)
高级语言(由编译程序汇编成机器语言)
解释性语言(一遍翻译一遍执行的语言,不生成目标模块,慢)
系统软件
数据库系统不是系统软件
数据库管理系统是系统软件(操作系统用于管理数据库系统的软件)
数据运算以及表示
进制
二进制(机器使用)
八进制
十六进制(方便书写)
BCD
有权BCD码
8421码
最高位权重为8
2421码
最高位权重为2且当且仅当要表示的数大于等于5时最高位才为1否则最高位为0
5421码
无权BCD码
余三码
在8421码的基础上加3
格雷码
校验码
奇偶校验码
只能校验奇数个的错误
需要一位使得总个码里面有奇数(奇校验)或者是偶数(偶校验)个1
循环冗余码
n次多项式包含n+1个数字(包括0次)
在要检验的数据后面添加n个0
循环将亦或结果作为下次循环的输入
如果下次的结果是以0开头则跳过这个多个0保证每次循环输入的都是以1开头的
可以校验n位的错误
也可以纠错不过比较复杂
海明码
原理
海明威码的实质是多个状态的偶校验
校验位在编码中的位置为1248.....
校验k个需要n个校验位则满足2的n次方>=n+k+1
生成
1.确定纠错位的数目
2.在1248等位置放入交错码,其他的位置从小到大放入数据位
3.生成纠错位的规则
将1-m分别用二进制表示
第1个就错位存放上面生成的二进制中所有第一位为1的数据位的异或(不包括自己)
第2个就错位存放上面生成的二进制中所有第二位为1的数据位的异或(不包括自己)
直到所有的纠错位都填写完毕
纠错
1.将最终生成的所有信息位用二进制表示
2.将所有的第i位为1的信息位和校验位异或得到ei
3.将所有的ei由大位到小位排序
4.所生成的最终二进制表示的0表示没有错,若不为0则表示第i为出错,(从右向左读)
数据表示
无符号数
无符号数可以用来表示地址等不需要正负的地方
有符号数
原码
正负数都是首位1表示负0表示正后面加真值
反码
正值和原码相同
负值的数据部分原码相反
补码
正值和原码相同
负值相当于数据部分按位取反末尾加1
计算机用补码表示数据
计算-x的补码将x的补码连同符号位每位取反末尾加一
移码
移码相当于补码的符号位取反
移码可以方便的比较数据的大小
移位
逻辑移位
不考虑符号位都补0
算数移位
正数的移位不改变符号位移动数据部分直接补0
负数
原码
直接补0
反码
直接补1
补码
左移末尾空余位置补0右移首位空余位置补1
循环移位
溢出判断
1.从两个符号位来看如果出现
正数加正数出现溢出
负数加负数出现溢出
由于减法实际是按照加法显示的因此都可以看做加法的形式
溢出出现的两种情况两正数相加结果为负,或者是两负数相加结果为正
2.双符号位
运算后出现01或者是10表示溢出
无论是否溢出最高位是结果的符号位
3.两个数的进位考虑
数值位的最高位进位和符号位的进位相同则没有溢出
数值位的最高位进位和符号位的进位如果不同则表示有溢出
乘除
浮点数
单精度(共32位)
数符
阶码8位
用移码(-127)表示方便比较大小
剩余23位为数据部分(隐藏了前面的一个1,因此实际有效位为24位)
阶数全0全1的时候代表的无穷等特殊表示的数
双精度(共64位)
数符一位
阶码11位
剩余52位为数据部分(隐藏了前面的一个1因此实际有效位为53位)
运算法则
1.对阶(小阶向大阶对齐)
2.尾数求和
3.规格化
4.舍入
0舍1入法
恒置1法
截断法(最简单)
若结果阶码下溢按0处理
规格化
对正数x≥0,如果1 > x≥1/2, 称为规格化数,其补码表示形式为: 0.1x...x
对负数x<0,如果-1/2> x≥-1,称为规格化数,其补码表示形式为: 1.0x...x
特别规定-1/2的尾数为1.1000000不满足规格化形式不是规格化数
特别规定-1的尾数是1.0000000因为小数补码允许表示-1(这也可以从另一个层次说明为什么-1/2不是浮点数)
算术逻辑运算
串行加法器
速度慢
并行加法器
串行进位链
速度较快,但是多个加法器之间仍是串行的,需要依靠低位发来的进位信息
并行进位链
速度快,多个加法器之间是并行的
算数逻辑单元(ALU)
ALU和加法器不一样的地方在于它不仅能完成加法运算,还能完成其他的运算
ALU除了能完成算数运算(加减乘除等)还能完成逻辑运算(异或,并,或等)
类型转换
int型和无符号位的数
int是有符号数,且用补码表示,首位为符号位
将int的补码形式专为为无符号数的真值
int和float
int型比float型的数据精度大但是表示范围小
案例
int num =(int) f*100;
结果是:输入f = 1.23, 输出 num = 122.
输入f = 1.25 输出 num =125
这就是著名的double精度损失问题。
因为1.23在计算机里面只能表示为近似值:1.2299999999.........
而1.25却能被精确的表示:
结果是:输入f = 1.23, 输出 num = 122.
输入f = 1.25 输出 num =125
这就是著名的double精度损失问题。
因为1.23在计算机里面只能表示为近似值:1.2299999999.........
而1.25却能被精确的表示:
int转float可能会出现精度丢失的问题,float转int可能会出现错误
int和doule
double型的数据比int型的数据精度还高,因此int转double不会出现精度丢失的问题
类型的转换可能会带来
数值改变如无符号数到int的转换可能会变成负值
精度改变如double到float可能会使得小数点后面的精度部分丢失
由于double和float的精度不一样而十进制的小数并非全部都能用二进制表示因此转换的时候可能会出现精度丢失
案例
double d = 0.6;
float f = (float)d;
double d2 = f;
bool b = d == d2;
由于0.6不能用二进制精确表示因此 b为false
float f = (float)d;
double d2 = f;
bool b = d == d2;
由于0.6不能用二进制精确表示因此 b为false
标志寄存器(又叫程序状态字寄存器psw)大小比较
对于无符号数来说CF(进位/借位标志 )相当于溢出标志
无符号数的减法(此时为借位)CF为1表示有借位不够减或者结果为负数
无符号数的加法(此时为进位)CF表示进位为1表示最高位有进位,结果溢出
机器0和浮点0
只有以移码表示阶码时,才能用全 0 表示机器零的阶码
存储器
分类
高速存储器
cache
主存和cache的交换是以块为单位且由硬件完成
主存和辅存的交换也是以块为单位,由硬件和操作系统共同完成
基于局部性原理
存放数据
cache有自己的地址不和主存共享地址
tlb(块表)
可以根据内容或地址寻址
依靠的程序的局部性原理,即访问的不均匀性
存放的是地址
主存储器(半导体)
ROM(只读存储器)
行列地址一次传输
CDROM不是半导体存储器因此也不是ROM,它的后面跟着的ROM只是表示它只读的特性
RAM(随机存取存储器)
行列地址分分两次送,刷新的时候是按行刷新的
RAM和ROM都是随机存取的
外部存储器
磁盘
寄存器(由触发器构成)
pc中存放的是指令的逻辑地址
堆栈寄存器中存放的是逻辑地址
基址寄存器中存放的是逻辑地址
RAM(断电丢失)
静态RAM
非破坏性读出
不需要刷新
用做高速缓存
容量小,价格高,耗电大
动态RAM
破坏性读出
需要刷新
集中刷新
在一个刷新周期里面提取出一部分时间专门用来刷新,这段时间的代销取决于行数的大小
集中刷新会有一段时间的死时间,这段时间不能进行存取操作
分散刷新
在每一周期的后面都跟一个周期专门用来刷新
分散刷新并不是真正意义上的没有死时间而是将每两个存储拿出一个来用来刷新
异步刷新
异步刷新是在刷新周期里面将集中刷新n行的时间平均分配到整个刷新周期里面
异步刷新的死时间是一个存储周期
注意
虽然说刷新是一次读出和写入但是在一般的情况下按照一个存储周期计算这是规定
刷新和再生的区别
刷新是定时的,逐行进行的
再生是对所读的单元进行的,是一种相对随机的方式
(一般是隔2ms)刷新的实质是先读后写
一般用来做主存
容量较大,价格较便宜,耗电较小
存取(存取周期大于存取时间)
存取时间
恢复时间
数据存放(如12345678H)
大端存放
先存放高字节位再存放低字节位(存放为12345678)
小段存放
先存放低字节位再存放高字节位(存放为78563412)
ROM(断电不丢失)
ROM的行列分两次送出因此它的地址线比RAM的小一倍(同等容量的)
分类
MROM(掩膜只读存储器)
出厂的时候写死
PROM(可编程只读存储器)
可编程一次,不可修改
EPROM(可擦除可编程只读存储器)
可编程,只能全部擦除,不可局部擦除
EEPROM(电可擦除可编程只读存储器)
可编程,可局部擦除
Flash(快擦除读写存储器)
可以实现随机存取,但仍然属于只读存储器
CDROM不是只读存储器,ROM只是说明它只读的特性
存储器容量扩充
1.字扩充
使用部分的高地址位做片选信号确定是哪一个
2.位扩充
数据线的高位和低位分开分别连在高数据位和低数据位
3.字位同时扩充
先位扩充再字扩充
片选信号
线选法
有n根输入则有n根输出
译码法
有n根输入则有2的你次方输出
存储器速度的提升
双RAM
两条相互独立的地址线,数据线和读写控制线
缺点是可以同时读,但是如果有一个在写则另一个不能访问
单体多字存储器
数据和指令必须连续存放才能发挥预期的作用
多体并行存储器
相当于多个模块组成的存储器,每一个模块都有着自己的独立数据寄存器,读写电路,每一个存储器都可以看错是一个独立的存储器
高位交叉编制的多体存储器
一个体存满后再存另外一个因此又叫顺序存储
连续地址的数据不能并行传输不同请求源的数据可能可以并行
低位交叉编制的多体存储器
模块存储周期T
总线的传输周期a
模块的个数m满足m>=T/a以保证间隔ma个时间后可以启动它确保流水线的正常运行
传送连续地址的数据之间可以并行传输
多体并行和字扩充的区别
多体并行是指多个存储器来完成存取操作尽可能使得每个总线周期都能传送一次数据
字扩充是指多个芯片组成的一个存储器,这些芯片不同于存储器,他们共享一套读写电路,属于一个存储器
cache
cache和主存之间的映射
直接映射
适用于大cache
不够灵活,可能会出现抖动现象(频繁换入换出)
全相连
适用于小cache
灵活但是tag项的字段会比直接映射的多,比较起来时间较长
全相连先比如直接映射命中率有提升,但是这种提升是以每一项的比较时间增加为代价的
n路组向量
直接相连和全相连的折中
以组为单位每个组和主存直接直接映
组内全相连,组号确定了,比较小组内所有的tag才能确定这个地址是否命中
cache组成(以行为单位)
每一行的数据项大小等于cache和内存交换的块的大小
每一行的标记项的大小等于tag+1位存在位+1位修改位(直写法保持cache和内存中的数据同步因此不需要修改位)+n位替换算法位(直接映射每次只能替换固定的位置因此不用考虑替换算法位)
cache的总容量等于行数乘以单行数据项和标记项的和
cache中tag和高地址位的比较主要依靠内容寻址的相连存储器比较
cache写策略
写回法
每行设置修改位,只有当这一块需要替换时才写回内存
cache写不命中时不在内存中修改而是读入cache中修改cache中的内容等这一块被换出时再写回内存
cache写命中时修改cache,cache替换时再写回内存
全写法(又叫直写法)
没有修改位,cache和内存保持同步
cache写不命中时直接修改内存中的数据,至于这个数据是否需要复制到cache中这个视情况而定,可以复制也可以不复制
cache写命中时cache和内存中的数据同时修改
写一次法
写回法和全写法的折中(也修改需要修改位)
仅第一次命中写回到主存中
虚拟存储器
虚拟的意思是将存储器在逻辑上扩充
划分页是由操作系统决定的不为用户所感知
划分段也是操作系统决定的但是是为用户所感知的
段为用户感知单 不是用户划分的但是是根据用户的编程划分的,方便信息的共享和保护,方便动态申请内存
指令系统
指令类型(一般问什么类型的指令答案都单字长二地址RS型指令)
根据字长分类(此处的字长是机器字长而不是存储字长)
半字长
单字长
双字长
为了方便存储指令字长一般设计为8bit的整数倍
根据地址的长度
0地址
不需要操作数的指令如空操作指令,停机指令
堆栈计算机中0地址可以是从堆栈中弹出两个数将运算结果压入栈
1地址
只需要一个操作数如取反
另一个操作数隐含在acc中将run算结果也放入acc中
2地址
前两个的运算结果放入第二个地址的内存单元中
3地址
前两个的运算结果放入第三个地址的内存单元中
4地址
前两个的运算结果放入第三个地址的内存单元中,第四个是跳转地址
根据地址的类型
RS(寄存器,存储器型)
SR(存储器,寄存器型)
指令是否可变
指令长度是否可变
指令字长可变
指令字长不可变
操作码长度是否可变
定长操作码
指令的操作码长度固定,指令的数目固定
不定长操作码
可以拿出一部分用做拓展比如拿出两个三地址的指令用于拓展二地址指令
逻辑相对复杂,电路实现复杂且速度比定长慢
不定长的操作码可以拓展指令的数量
寻址
指令寻址(都是由pc给出)
顺序寻址
跳跃寻址
数据寻址
1.立即寻址
地址部分就是操作数,常见于给寄存器赋值的指令中
2.直接寻址
EA = A
地址的范围受限于A的长度
3.隐藏寻址
隐藏寻址操作数的地址不直接给出,可能是acc
4.间接寻址
一次间接寻址
EA = (A)
寻址范围取决于地址单元的长度
两次访存
多次间接寻址
寻址范围取决于地址单元的长度减一(这个1用于判断寻址是否还需要间接寻址)
多次访存
5.寄存器寻址
EA = Ri
不需要访存减少时间
寄存器的个数有限减少了指令的长度
6.寄存器间接寻址
EA = (Ri)
需要从寄存器取出地址并访存一次获取值
7.基址寻址
EA = (BR)+A
需要取寄存器中的值,和A做加法最后根据结果访存,因此比寄存器间接寻址所需要花费的时间要长
一次访存,一次加法
形式地址A可变
8.变址寻址
EA = (IX)+A
需要取寄存器中的值,和A做加法最后根据结果访存,因此比寄存器间接寻址所需要花费的时间要长
一次访存,一次加法
形式地址A不可变,但是最后变址寄存器里面的值可以变,常用于数组的地址
9.相对寻址
EA = (PC)+A
相对寻址基于时间局部性原理
相对寻址常用于转移类指令和编写浮动程序
两种指令系统
CISC(复杂指令集系统)
指令复杂,方便表示复杂的指令,但是一般这些指令使用的频率不是很高
指令复杂合适为微程序控制方式
RISC(简单指令集)
相对来说指令简单,执行的更快但是不方便表示较复杂的指令
指令简单使用硬布线方式更合适
指令多在一个周期内完成因此可使用流水线技术加速运行,但并非RISC可以使用流水线,CISC有的也可以
两者比较
比较内容 CISC RISC
指令系统 复杂,庞大 简单,精简
指令数目 一般大于200 一般小于100
指令格式 一般大于4 一般小于4
寻址方式 一般大于4 一般小于4
指令字长 不固定 等长
可访存指令 不加限制 只有LOAD/STORE指令
各种指令使用频率 相差很大 相差不大
各种指令执行时间 相差很大 绝大多数在一个周期内完成
优化编译实现 很难 较容易
程序源代码长度 较短 较长
控制器实现方式 绝大多数为微程序控制 绝大多数为硬布线控制
软件系统开发时间 较短 较长
指令系统 复杂,庞大 简单,精简
指令数目 一般大于200 一般小于100
指令格式 一般大于4 一般小于4
寻址方式 一般大于4 一般小于4
指令字长 不固定 等长
可访存指令 不加限制 只有LOAD/STORE指令
各种指令使用频率 相差很大 相差不大
各种指令执行时间 相差很大 绝大多数在一个周期内完成
优化编译实现 很难 较容易
程序源代码长度 较短 较长
控制器实现方式 绝大多数为微程序控制 绝大多数为硬布线控制
软件系统开发时间 较短 较长
0 条评论
下一页