Loading [MathJax]/jax/input/TeX/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >计算机组成原理:第四章 指令系统

计算机组成原理:第四章 指令系统

作者头像
Here_SDUT
发布于 2022-08-11 00:53:16
发布于 2022-08-11 00:53:16
1.8K0
举报

4.1 指令系统的发展与性能要求

4.1.1 指令系统的发展

1. 指令在计算机系统中的地位

  • 是软件和硬件分界面的一个主要标志,硬件设计人员采用各种手段实现它;软件设计人员则利用它编制各种各样的系统软件和应用软件
  • 是硬件设计人员和软件设计人员之间的分界面,也是他们之间沟通的桥梁。

2. 指令系统的基本概念

指令: 就是要计算机执行某种操作的命令。从计算机组成的层次结构分为:

  • 微指令:是微程序级的命令,它属于硬件;
  • 宏指令:由若干条机器指令组成的软件指令,它属于软件;
  • 机器指令:介于微指令与宏指令之间,通常简称为指令,每一条指令可完成一个独立的算术运算或逻辑运算等操作。

一台计算机中所有机器指令的集合,称为这台计算机的指令系统。 指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。

3. 发展情况

  • 复杂指令系统计算机,简称CISC。但是如此庞大的指令系统不但使计算机的研制周期变长,难以保证正确性,不易调试维护,而且由于采用了大量使用频率很低的复杂指令而造成硬件资源浪费。
  • 精简指令系统计算机:简称RISC(Apple的M1),人们又提出了便于VLSI技术实现的精简指令系统计算机。

出现CISC到RISC转变的原因:,2/8现象(只有20%的指令使用率达到80%),控制器设计难度下降

4.1.2 对指令系统性能的要求

  • 完备性: 完备性是指用汇编语言编写各种程序时,指令系统提供的指令足够使用,而不必用软件来实现。采用硬件指令的目的是提高程序执行速度,便于用户编写程序。
  • 有效性: 有效性是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。一般来说,一个功能更强、更完善的指令系统,必定有更好的有效性。
  • 规整性: 规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。
    • 对称性是指:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;
    • 匀齐性是指:一种操作性质的指令可以支持各种不同的数据类型;
    • 指令格式和数据格式的一致性是指:指令长度和数据长度有一定的关系,以方便处理和存取。例如指令长度和数据长度通常是字节长度的整数倍。
  • 兼容性: 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。

4.1.3 低级语言与硬件结构的关系

4.2 指令格式

操作码字段+地址码字段,左边为高位,右边为低位。

4.2.1 操作码

设计计算机时,对指令系统的每一条指令都要规定一个操作码。指令的操作码OP表示该指令应进行什么性质的操作。不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。组成操作码字段的位数一般取决于计算机指令系统的规模。较大的指令系统就需要更多的位数来表示每条特定的指令,按照操作码长度分为:

  • 等长:指令规整,译码简单,固定长度编码的主要缺点是:信息的冗余极大,使程序的总长度增加。
  • 变长:指令不规整,译码复杂,效率高

4.2.2 地址码

根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。

  • 三地址指令:第一操作数,第二操作数,结果地址(a+b=c;)
  • 二地址指令:第一操作数,第二操作数,结果存在第一操作数下(a+=b;),按照操作数的物理位置不同分为:
    • RR:寄存器-寄存器类型
    • RS:寄存器-存储器类型
    • SS:存储器-存储器类型
  • 单地址指令:第一操作数(a++;)
  • 零地址指令:如停机、清除等控制指令

4.2.3 指令字长度

指令字长度:一条指令字包含二进制代码的位数,即操作码+地址码 机器字长:计算机能直接处理的二进制数据的位数。 按照指令字和机器字长的关系分为:单字长指令(指令字长等于机器)、半字长指令(指令字长等于半个机器)、双字长指令。

指令字长度相等的称为等长指令,随指令功能而异的称为非等长指令。

  • 指令系统中指令采用等长指令的优点:各种指令字长度是相等的,指令字结构简单,且指令字长度是不变的 ;
  • 采用非等长指令的的优点:各种指令字长度随指令功能而异,结构灵活,能充分利用指令长度,但指令的控制较复杂 。

op占7位,可表示的操作数有128条。

只有一行,所以是单字长指令,存在源寄存器和目标寄存器,为二地址指令,为RR型。

op占6位,可表示的操作数有64条。

有两行,所以是双字长指令,存在源寄存器和变址寄存器,为二地址指令,其中,变址寄存器和位移量用于查找主存中的地址,所以为RS型。

4.2.4 指令助记符

由于硬件只能识别1和0,所以采用二进制操作码是必要的,但是我们用二进制来书写程序却非常麻烦。 为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示。这种缩写码叫做指令助记符。

4.3 操作数类型

地址数据: 地址实际上也是一种形式的数据。(无符号) 数值数据: 计算机中普遍使用的三种类型(定点、浮点和十进制数)的数值数据。 字符数据: 文本数据或字符串,目前广泛使用ASCII码。 逻辑数据: 一个单元中有多位二进制bit项组成,每个bit的值可以是1或0。当数据以这种方式看待时,称为逻辑性数据。

4.4 指令和数据的寻址方式

4.4.1 指令寻址

4.4.2 数据寻址

一般格式:

1. 立即寻址

寻址特征为“#”,表示是立即数寻址,形式地址放的就是操作数,执行时无需访存,立即数以补码的形式表示,A的位数限制了立即数的大小。

2. 直接寻址

有效地址直接放在形式地址处,执行阶段进行一次访存,A决定了操作数的寻址范围,操作数的地址不易修改(要先找到这条指令,然后将指令上的有效地址修改,较为麻烦)

3. 隐含寻址

其中一个操作数的地址隐含在操作码中,另外一个操作数采用直接寻址的方式给出,指令字中少一个地址字段,可以缩短指令字长。

ACC(累加器)在加法中存放被加数/和,在减法中存放被减数/差,在乘法中存放乘积高位,除法中存储被除数/余数,ACC存在与ALU中。

4. 间接寻址

有效地址由形式地址间接提供,分为一次间址,和多次间址,有效地址在主存中的地址存在A中,在主存中找到有效地址后再次访存找到操作数,故执行指令需要两次访存,优点是可以扩大寻址范围(因为EA可以很长),便于编程(操作数修改方便,只要修改EA即可)。

5. 寄存器寻址

有效地址为寄存器编号,直接访问寄存器即可得到操作数,执行阶段不访存,执行速度快,并且寄存器个数有限,可以缩短指令字长。

6. 寄存器间接寻址

有效地址在寄存器中, 操作数在存储器中,执行阶段访存,便于编制循环程序。

7. 基址寻址

采用专用寄存器作基址寄存器(隐式寻址): 计算机内专门设有一个基址寄存器BR,用户使用时不用明显指出该基址寄存器,只要由指令的寻址特征位反映出基址寻址即可。

BR 为基址寄存器,,A为偏移量,实际有效地址为基址+偏移量,可扩大寻址范围,BR 内容由操作系统或管理程序确定,在程序的执行过程中 BR 内容不变,形式地址 A 可变。用户不必考虑自己的程序存在于主存的那个空间区域,有利于多道程序设计。

问:为什么利于多道程序设计? 用户无需考虑程序存放在主存中的哪里,只要指出哪个寄存器作为某个程序的基址寄存器即可,由操作系统或管理程序自动分配。分别用不同的寄存器表示多道程序的基址寄存器,程序执行时用户不知道程序在主存中的位置,也不可修改基址寄存器的内容,确保系统安全可靠地运行。

采用通用寄存器作基址寄存器: 在一组通用寄存器中,由用户指出哪个寄存器用来作为基址寄存器。

由用户指定哪个通用寄存器作为基址寄存器,基址寄存器的内容由操作系统确定,在程序的执行过程中 R0 内容不变,形式地址 A 可变。

8. 变址寻址

IX 为变址寄存器(专用),通用寄存器也可以作为变址寄存器。可扩大寻址范围,IX 的内容由用户给定,在程序的执行过程中 IX 内容可变,形式地址 A 不变,便于处理数组问题。

为何便于处理数组问题? 答:循环时只要修改寄存器中的内容即可,指令字内存放数组的首地址,只需一个指令就可以完成一次循环操作。如果采用其他的寻址方式,需要不断修改指令字中的形式地址。

9. 相对寻址

A 是相对于当前指令的位移量(可正可负,补码),A 的位数决定操作数的寻址范围,适合程序浮动,广泛用于转移指令。

浮动程序技术是指在多道程序设计的系统中,要求每道程序存放在主存的任何区域都能正确执行,甚至在执行过程中,当程序的存放区域被改变,也要求其执行不受影响。也就是说,程序可以随机地从主存的一个区域移动到另一个区域,程序被移动后仍丝毫不影响它的执行。

问:跟随指令改变地址,如何保证操作数的准确性? 偏移量A是不停变化的,随着PC的跳转,A也相应加减,使得PC+A指向的数据不变。

10. 堆栈寻址

若用 SP 表示堆栈指示器,指向栈顶,Msp表示堆栈指示器指定的存储器的单元,A 表示通用寄存器

入栈操作描述为:(A)>Msp,(SP1)>SP,表示先将A中的数据存入到栈顶的存储单元中,然后将SP指针向上移动(堆栈默认栈底地址高,栈顶地址底)

出栈操作描述为:(SP+1)>SP,(Msp)>A,表示先将指针向下移动一位,然后将其中的数据放入寄存器A中.

4.5 典型指令

4.5.1 指令的分类

  • 数据传送指令:树妖实现主存和寄存器之间,或者寄存器和寄存器之间的数据传送
    • 一般传送指令:   MOV AX,BX
    • 数据交换指令:   XCHG
    • 堆栈操作指令:   PUSH,POP
  • 运算类指令
    • 算术运算指令: 定点和浮点的算术运算,大型机有向量运算指令
    • 逻辑运算指令:无符号数的位操作,代码的转换、判断及运算
  • 程序控制类指令
    • 程序控制类指令用于控制程序的执行方向,并使程序具有测试、分析与判断的能力。
  • 输入和输出指令、字符串处理指令、特权指令、其他指令

4.5.2 基本指令系统的操作

20%和80%规律:CISC中大约有20%的指令使用频率高,占据了80%的处理机时间,而有80%的不常用指令只占用处理机的20%时间。

VLSI工艺要求规整性,而大量复杂指令控制逻辑极其不规整,给VLSI工艺造成了很大的困难。

现在用微程序实现复杂指令与用简单指令组成的子程序相比,没有多大的区别。因为现在控制存储器和主存的速度差缩小。

CISC中,通过增强指令系统的功能,简化了软件,增加了硬件的复杂程度。然而指令复杂了,指令的执行时间必然加长,从而使整个系统的执行时间反而增加,因而在计算机体系结构设计中,软硬件的功能分配必须恰当

4.5.3 RISC

三大最大特点:

  • 选取使用频率最高的一些简单指令,指令条数少;
  • 指令长度固定,指令格式种类少,寻址方式种类少;
  • 只有取数/存数两条指令访问存储器,其余指令的操作都在寄存器中进行。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-4-14 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PP-数据建模:既然可以直接用,为什么还自己写度量公式?
大海:实际这个是Power Pivot自动生成的一个隐式度量值。你到数据模型里看看就知道了:
大海Power
2021/08/30
3800
Excel中的数据建模:表间关系一线牵,何须大量公式拼数据
大海:在传统数据透视表里的确是要那么干的,但到了Power Pivot里,当然就不用辣妈麻烦啦。直接拉根线连起来就把表的关系建好了,在数据分析的时候就可以直接用他们的关系了,数据根本不需要接进来。
大海Power
2021/08/30
2K0
pp-同样的数据做透视,“前10(n)项”筛选结果为毛不一样?
小勤:通过Power Pivot生成的数据透视表,里面的“前10项”筛选功能好像有点儿问题啊,你看这个数据:
大海Power
2021/08/30
8420
Power Pivot里的空文本怎么来的?怎么处理?日期也转换不了,怎么办?
假如说,这个文本里就只有空格(1个或多个),添加到Power Pivot数据模型时,空格会被删掉,问题是,删掉空格后的内容,到底是一个空值(blank)呢?还是一个空的文本("")?
大海Power
2021/08/30
9140
为啥用去重构造的单号表,建表间关系时仍然提示多对多,这明显是唯一值啊!|PBI实战
经检查发现,用values函数构建的这个发货单号表,中间存在空白内容,也就是说,原来的事实表里本身就存在空白(没有发货单号)的情况!
大海Power
2023/09/09
3590
为啥用去重构造的单号表,建表间关系时仍然提示多对多,这明显是唯一值啊!|PBI实战
PP-入门前奏:谁说透视表里的各行之和要等于总计的?
大海:这说明有某个客户是属于多个行(网点)里都存在,所以不重复的客户数总计会比各行之和少。
大海Power
2021/08/30
5350
你的DAX学习热情,是怎样一步步被磨掉的?
先说说这两天微信群里一个简单的案例,即根据下面的数据,统计每个人不含“质检”类型的非重复版本数量:
大海Power
2021/08/31
5790
Power Pivot数据建模基础:数据表间的4种基本关系类型
大海:在数据处理的时候,我们经常需要对2张相关的表格建立表间关系,比如订单表和订单明细表,订单明细表里的产品和产品表……那么2张表之间总是要能够找到明确的逻辑关系,才能建立表间关系,比如订单表里的订单编号和订单明细表里的订单编号是对应的。
大海Power
2021/08/30
3.7K0
理解DAX:为什么ALL(表)不去重,ALL(列)去重了?
小勤:ALL函数是清除所有筛选条件并返回表中的不重复值,下面对表的行进行计数应该是3呀,因为有两个大海是重复的,怎么还是4? 大海:没有说all返回的是不重复值啊。 小勤:那么我ALL(表[姓名]),
大海Power
2021/08/30
1.5K0
2.1 PowerBI数据建模-天下大模型必作于小的星型架构
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/24
1020
2.1 PowerBI数据建模-天下大模型必作于小的星型架构
用POWER BI 做人力资源数据建模是如此简单
人力资源的数据化转型需要HR在日常的工作中对人力资源各模块做落地的数据建模,数据分析是在数据可视化模型的基础上进行数据的交互,通过数据的交互和数据的交叉来进行数据分析,最终发现问题,解决问题。
王佩军
2022/09/28
1.3K0
Excel里没有非重复计数功能?用Power Query轻松解决!
小勤:大海,公司有个关于网点的客户数量统计问题,涉及到非重复计数的问题,这么常用的功能,Excel里居然不支持!
大海Power
2021/08/31
2.3K0
传统数据透视表之不能——非重复计数PowerPivot轻松解
大海:传统的数据透视表功能很强大,但非常奇怪的是——不支持非重复计数!你要用数据透视同时实现其他统计和非重复计数,又不想在原始数据表里增加辅助列的话,得考虑用Power Pivot了。
大海Power
2021/08/30
3.2K0
从工作表函数到DAX!
👆关注“博文视点Broadview”,获取更多书讯 作者:ExcelHome创始人周庆麟 来源:《DAX权威指南》推荐序 在ExcelHome技术论坛上,经常会有这样的讨论话题:你希望下一个版本的Excel增加什么功能? 在2006年以前,很多人都说,希望Excel能提高单表处理数据的数量上限,最好能像Access那样可以建立多表查询。 自Excel 2007问世后,单表处理数据的量,从65,536行增加到了1,048,576行。 于是,很多人表示相当满意,但还是有一些人表示,只是简单增加单表的行数不够
博文视点Broadview
2023/05/06
1.1K0
从工作表函数到DAX!
PP-基础知识:为什么在数据模型里做了数据筛选,图表没有跟着变?
第一,注意不要和Power Query的数据操作混淆,在Power Query里做了数据筛选,最后得到的数据是筛选后的结果,因为Power Query就是针对数据本身进行处理的(PQ其实也不删除数据,只是你习惯性的只使用筛选后的数据结果而已)。
大海Power
2021/08/30
5950
复杂表源的清洗方法
上篇推文《从【中国式复杂报表】谈设计逻辑》中我们提到,中国式复杂报表作为高度复杂化的产物,不适合进一步用作数据源。但实际工作中,难免遇到以类似复杂表格作为数据源的情况。比如从国家统计局下载数据的表单,就是一个初级版的复杂报表。我们可以看到,表头分了两个层级,且子层级含有合计数。列方向上也有合计(全国)。本文将来一步一步介绍,如何清洗复杂报表数据源。
btharp
2021/08/31
2.1K0
Power Query 真经 - 第 7 章 - 常用数据转换
分析师面临的普遍问题是,无论从哪里获得数据,大部分情况都是一种不能立即使用的状态。因此,不仅需要时间把数据加载到文件中,还得花更多的时间来清洗它,改变它的结构,以便后续做分析的时候能更好的使用这个数据。
BI佐罗
2022/05/17
7.7K0
Power Query 真经 - 第 7 章 - 常用数据转换
PBI-基础入门:通过一个简单的案例体会Power BI的数据分析过程
大海:好吧,Power Query你学了那么多,Power Pivot也基本入门了,Power BI也可以同步开始学了,反正PQ和PP的知识除了操作上有一点点儿区别外,都是能在Power BI里直接用的。
大海Power
2021/08/30
3.6K0
Power Query 真经 - 第 8 章 - 纵向追加数据
数据专业人员经常做的工作之一是将多个数据集追加到一起。无论这些数据集是包含在一个 Excel 工作簿中,还是分布在多个文件中,问题是它们需要被纵向【追加】到一个表中。
BI佐罗
2022/05/17
7K0
Power Query 真经 - 第 8 章 - 纵向追加数据
一次性学懂Excel中的Power Query和Power Pivot使用
👆点击“博文视点Broadview”,获取更多书讯 传统的Excel单表虽然可以有100万行数据的承载量,但是在实际分析时,20万行的数据就已经让传统的Excel非常吃力了。 但是,如果使用Excel中的Power Query和Power Pivot商务智能组件,即使是上百万行数据,也可以在短时间内快速完成处理和分析。 Power Query在Excel和Power BI Desktop中都是内置组件,并且管理界面和知识体系保持了高度一致。 其实,Power BI中的Power Query和Power P
博文视点Broadview
2022/10/10
9.6K0
一次性学懂Excel中的Power Query和Power Pivot使用
推荐阅读
相关推荐
PP-数据建模:既然可以直接用,为什么还自己写度量公式?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档