小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Linux
  5. 正文

计算机组成原理笔记第七章(7.1~7.2)

2018年10月26日 1557点热度 0人点赞 0条评论

7.1 机器指令

一、指令的一般格式

这只是一种逻辑的表达方式,实际上位置不是这么严格区分的。

操作码字段 地址码字段

1.操作码:反映机器做什么操作、对什么数据做操作等

(1)长度固定

用于指令字长较长的情况:RISC

(2)长度可变

操作码分散在指令字的不同字段中。

(3)扩展操作码技术

操作码的位数随地址数的减少而增加。可以采用保留码点来指明扩展操作码技术。

除非地址为零,否则操作码不可以全为1!扩展原则:短操作码一定不是长操作码的前缀。

三地址指令操作码每减少一种最多可多构成24种二地址指令。

二地址指令指令操作码每减少一种操作码最多可构成24种一地址指令。

一般来说,高频指令用短操作码表示,不常出现的用长操作码表示。

2.地址码

(1)四地址

OP A1 A2 A3 A4

说明:

A1是第一操作数地址;A2是第二操作数地址;A3是结果的地址;A4是下一条指令的地址。

假设当前操作是(A1)OP(A2)àA3,取指令访存1次,然后根据地址取出两个操作数访存2次,最后将结果存入A3的地址访存1次,一共访存4次。假设指令字长为32位,操作码为8位,每个地址码长度就为6位,那么每个地址码寻址范围为64,可访问内存空间非常小,这样的地址几乎是不可用的。

实际上,我们可以用PC代替A4,那么就变成了3地址了。

(2)三地址

OP A1 A2 A3

同样执行上述操作,还是4次访存,但是寻址范围变为了256。

(3)二地址

OP A1 A2

若结果存于ACC,则只需要3次访存,若结果存于A1或者A2则依旧是4次访存。寻址范围变为了212=4K。

(4)一地址

OP A1

2次访存,寻址范围为224=16M。

(5)零地址。无地址码。

二、指令字长

指令字长决定于:操作码的长度;操作数地址的长度;操作数地址的个数。

1.指令字长固定:指令字长=存储字长。

2.指令字长可变:按字节的倍数变化。

小结

当用一些硬件资源代替指令字长中的地址码字段后:

(1)可扩大指令的寻址范围;

(2)可缩短指令字长;

(3)可减少访存次数。

当指令的地址字段为寄存器时:

(1)三地址:OP R1 R2 R3;

(2)二地址:OP R1 R2;

(3)一地址:OP R1。

这种方式可缩短指令字长,指令执行阶段不访存。

7.2 操作数类型和操作类型

 一、操作数类型

(1)地址:无符号整数(绝对寻址)、有符号数(相对寻址)

(2)数字:定点数、浮点数、十进制数

(3)字符:ASCII

(4)逻辑数:逻辑运算

二、数据在存储器中的存储方式

1.字节编址:数据在存储器中的存储方式(存储字长64位,机器字长32位)

a.从任意位置开始存储

图2.1 任意位置存储

优点:不浪费存储资源;缺点:除了访问一个字节之外,访问其它任何类型的数据都可能话费两个存储周期的时间。读写控制比较复杂。

b.从一个存储字的起始位置开始访问

图2.2 从一个存储字的起始位置开始访问

优点:无论访问何种类型的数据,在一个周期均可完成,读写控制简单。但是缺点是浪费了宝贵的存储资源。

c.边界对准方式:从地址的整数倍位置开始访问

图2.3 边界对准方式

数据存储的起始地址是数据长度(按照编址单位进行计算)的整数倍。本方案是前两个方案的折中,在一个周期内可以完成存储访问,空间浪费也不太严重。

三、操作类型

1.数据传送

源 寄存器 寄存器 存储器 存储器
目的 寄存器 存储器 寄存器 存储器
例子 MOVE STORE/MOVE/PUSH LOAD/MOVE/POP MOVE

还有一种是置“1”,清“0”。

2.算术逻辑操作

加、减、乘、除、增1、减1、求补、浮点运算、十进制运算、与、或、非、异或。位操作、位测试、位清除、位求反。

3.移位操作

算术移位、逻辑移位、循环移位(带进位和不带进位)

4.转移

(1)无条件转移:JMP;

(2)条件转移:结果为0转:JZ,结果为溢出转:JO,结果又进位转:JC,跳过一条指令:SKP;

(3)调用和返回:CALL/RETURN;

(4)陷阱(Trap)与陷阱指令

意外事故的中断:

①一般不提供给用户直接使用。在出现事故时,由CPU自动产生并执行(指令)。

②设置供用户使用的陷阱指令。

如8086的INT TYPE 软中断。提供给用户使用的陷阱指令,完成系统调试。

5.输入输出

入:端口中的内容àCPU的寄存器。如:IN AL, n。

出:CPU的寄存器à端口中的内容。如:OUT n, AL。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 计算机组成原理
最后更新:2018年10月26日

yszhang

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
爱情的三个问题——我提出的 个人资料 开学第二周 [leetcode]题目解析(190702) 数据结构【浙江大学】(第4节)整理 ULTRAMAN X-ERO制作前记
标签聚合
python学习 Java 学习 生活 算法 linux Python 高中 鸟哥的linux私房菜 leetcode
最近评论
davidcheung 发布于 8 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 8 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 12 个月前(10月20日) :wink:
niming 发布于 1 年前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 4 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号