第四章补充以及 第五章第六章

其他内容:25计算机组成原理王道ppt汇总_25王道ppt-CSDN博客

4.3程序的机器级代码表示

      4.3.1_高级语言yu机器级代码之间的对应

没有特殊说明都是考x86

能看懂汇编语言就行   

数据要么在寄存器中,要么在内存地址指出,要么是立即数,后面有h表明是十六进制。

E开头是寄存器且长度为32bit,X结尾是通用寄存器,看到ESI和EDI知道是寄存器就行。

E去掉可以只是用16bit

或者更加灵活只用8bit

这是寄存器间接寻址,

4.3.1_2常用的x86汇编指令

这里的D和S可以是寄存器也可以是主存地址,但D不能是常数因为要用来存东西
有符号和无符号可以根据前面是否有i来判断,i:int。
这个冒号是用来扩展的,两个连在一起计算

王道书的<>内是缩写,
目的地址不能是常数。
x86中两个操作数不能同时来自于主存:mem。

4.3.1_3ATu0026T格式和Intel格式

前面学的都是intel格式,之前408也是考的比较多,但是以防未来学一下Atu 

8 16 32

4.3.3选择语句的机器级表示

之前的指令都需要知道要跳转到的位置的地址,很不好用因为地址都会变化。

记住左边的int只是用来参照的并不是用于直接的地址计算。地址要看中间的所以跳转指令是跳转到00401035

4.3.4循环语句的机器级表示

loop指令绑定了ecx寄存器  loopz没懂,只知道cmp ecx,一个数 为0 且ecx!=0 是继续循环。

4.3.5函数调用的机器级表示

函数调用 call ret

当Q return返回后Q的栈帧去掉,然后运行到caller后加入caller栈帧,temp1 temp2都存在于栈帧中。

call 和ret 会改变PC的值(IP寄存器)

为什么呢

 如何访问栈帧 pop push

注意在一个CPU内部只有一个ebp和一个esp。

因为高地址在上面低地址在下面,所以-4是向下,+4是向上。

通过加减可使esp和ebp访问当前栈外的东西

如何切换栈帧  enter leave

 切换就是调用新的函数栈帧时esp和ebp会自动指向栈顶和栈底,移出时会自动指向上一个栈的栈顶和栈底。

call ret对ip操作,enter,leave对esp和ebp操作

push ebp:   esp-4,再将ebp压栈保存
mov ebp,esp :让ebp指向esp所指的地址。

然后再插入一些数据就变成这样了

mov esp,ebp :将ebp的值赋给esp,让两者都指向ebp所指的地址,内容就是上一个栈的基址。
pop ebp :将esp所指值出栈,并且写入ebp寄存器,同时esp自身-4.
等价leave

栈帧内有哪些内容--参数,返回值传递

[ebp-4] [ebp-8] 一般时访问局部变量  [ebp+8] [ebp+12]分别指的时调用的第一个和第二个参数,此时以及在另一个栈帧中调用上一个栈的参数。

前面一条条执行下来就行,打框框的是因为mov指令不能两个都来自主存。

这里时执行到add的情况。典型操作,要注意的时返回值通常用eax寄存器

因为可能会被覆盖所以有必要的会保存下来

4.4CISC和RISC的基本概念

第五章中央处理器

5.1CPU的功能与基本结构

5.0 回忆过去

5.1CPU的功能与基本结构 专用通路内部总线,寄存器可见不可见

AH是Ax寄存器高地址部分AL是低地址 

MUX是多路选择器

三态门 R0out为1可以导通。

ACC累加寄存器 
移位寄存器用来存储计算结果,防止运算还没稳定之前输出到总线

微操作发生器:控制AdIRout ,IRin,之类的
MDR in E 指的是从外部数据总线输入数据是否有效,没加是指内部总线输入数据是否有效。

用户可见是用红色的框,灰色的是用户不可见(透明)
        PC为什么是对用户可见的,因为用户可以通过,比如说呃条件转移指令,无条件转移指令,用这些指令来改变PC的值
        psw为什么是对用户可见呢?首先,之前我们说过某一些条件转移指令,本身就需要使用到psw里的值,在执行条件转移指令的时候,肯定需要读取psw里的数据。
        那ACC对用户可见这些自然不必多说,我们之前讲的那个例子当中,用户执行加法乘法都会直接改变ACC的值
        那各种通用寄存器也是一样的,程序员可以通过汇编语言。直接来读和写这些通用寄存器里的值好,那这是对用户可见的一些寄存器,


5.2指令执行过程

 主频就是CLK。不同指令指令周期可能不同。分析指令很快所以可以在一个周期根据触发器来判断处于上面阶段MEM和M是一样的  因为MDR和IR都是当前指令。MDR的内容是操作数的地址。

因为中断处理程序结束后要回去,所有要保存断点把MAR和MDR处理好后就可以压栈保存了断点。

单指令周期短的会被拉长,以至于所有指令周期都一样长
流水线的本质就是让每个部件都忙起来,比如第一个指令执行完取指令,有些部件就闲下来,可以让第二个指令执行取指令。
 

单指令周期通常每条指令在一个时钟周期内完成CPI=1

单周期的时钟周期取决于最复杂指令的执行时间通常比多周期的长,两者cpu的基本单位不同。 

在一条指令执行过程中,单周期CPU每个控制信号取值一直不变,且每个部件只能用一次;多周期可能会变而且同一个部件可以用多次。


5.3数据通路的功能和基本结构

5.3.1单总线

 数据通路的组成:组合逻辑元件(操作元件)和时许逻辑元件(状态元件)

组合逻辑元件:加法器、ALu、译码器、多路选择器、三态门
时序:通用寄存器组、程序计数器、***寄存器。

 一个时刻只能有一个数据流动

 

加括号的意思是将PC内的数据传出来。

 这里应该是MDRinE才能说明是从主存中传过来的,书本上这么写那就将错就错。MDRin是控制总线的

暂存寄存器y当中然后另一个被加数是存放在acc累加寄存器里的那接下来我们只需要让acc累加寄存器的输出这个通路,让它接通同时让alu的这个输入通路让它接通那这样的话另一个倍加数就可以通过内部总线。

这里一行基本上是一个时钟周期就是最小的那个

(R0)加括号说明是寄存器间接寻址。 

这里写回的不是R0,而是R0所指向的主存地址因为MAR没有更新过还是R0的数据,所以只要MARout就行

5.3.2专用通路

 

 

也可以加上pc+1

x x->MAR可以用这个来表示,下面也一样


5.4控制器的功能和工作原理

5.4.1硬布线控制器的设计

 就是纯硬件实现的控制器,但不是考察的重点
T0没东西是假定是定长机器周期,
多个微操作2 

        译码器: 000000会被翻译成0,0这个线被选通
        节拍发生器:比如第一个脉冲让t0输出一个高电平,然后第二个脉冲让t1输出一个高电平,让第三个,第四个以此类推
        控制单元cu它的输出就是对应一系列的微命令,那么每一条输出线就对应着一个微命令,也就是对应着一个微操作。比如说如果我们想要让c1这个输出,让它对应上PC传到mar要对应这样的一个微操作,那么我们只需要把c1这根输出线。

机器状态对应的是BAN 
同一个节拍完成

分析前后依赖关系

将一些安排在一个周期内
此外3,4是不能一起的因为3是从主存取数据,取数据就要花很长时间,要安排一个时钟周期


非访存指令和访存指令分开的原因是访存可能有间址周期。

IND取反 : 如果是0说明完成了最后一级的间接寻址可以进入执行周期了;如果是1说明还没寻址完

1就是要执行的意思

5.4.2微程序控制器的基本原理

操作控制是指一个为指令中有几个微操作。

ROM非易失性,速度块,出厂设计好
CMAR是pc于mar结合体
微地址形成部件 :根据机器指令的操作码来确定这个机器指令微地址初始位置。
接下来再根据顺序逻辑的呃标志这一类的信息来确定,接下来我们要执行的呃这条微指令的一个存放地址。
将下地址送到顺序逻辑,顺序逻辑再根据标志和CLK来确定下一个微指令地址

取值、间址周期、中断周期都一样共享。

因为在取数指令结束后,下地址送过去的是3

至少n+1,那个1是取值周期

微操作,微指令,微程序,它们之间的关系。微命令和微操作是一一对应的,而一条微指令有可能会包含多个微命令,也就是说一条微指令有可能并行的指挥呃,同时完成多个微操作。它们是一对多的关系,另外微程序又由一系列的微指令来组成,

5.4.3微指令的设计 微指令编码方式高频考点

1,2常考

不同类的可以并行

比如说pc->mar 1->R 是并行的,在不停的类里。互斥的在同一个类里

有印象就行

断定法也是转移微指令

5.4.4微程序控制单元的设计 

T5就是判断下一个机器周期的

5.5异常中断


5.6指令流水线

 5.6.1指令流水线的基本概念和性能指标

理论上是这样,实际上有些指令会延后一点点

5.6.2指令流水线的影响因素和分类

IF 取值 ID指令译码 EX执行 M访存 WB写回通用器组。
不是所有的指令都会经历这五个阶段。

暂存器可以使得结果暂存在里面等到下一个需要的时候再释放,用来将时间延长到100ns。

有指令cache和数据cache,两者独立运行,可以更方便的安排流水线。 

ID risk精简指令集的系统之下我们想要进行运算的操作数一定是直接来自于通用寄存器的,不可能直接来自于主存如果要来自于主存那么一定需要先把那个数据先放到通用寄存器然后再从通用寄存器当中取出那个数据,所以这个地方指令译码的阶段除了指令译码之外还会从通用寄存器里边取出当前这一条指令所需要用的操作数。

红色和蓝色冲突了。这就是资源冲突

资源重复配置是分指令cache和数据cache或将数据分别存到不同地方。

例如在第一个指令还没存r1的时候,sub、and、or就开始用r1了这显然不行,这是一个同步的问题。xor不会冲突使用 r1.

数据旁路技术是因为add在ALU计算结束后就已经有r1的值了,所有可以直接在这里把数据给sub的ALU输入端。也叫转发技术

编译优化就是将后面能执行的指令提前到前面来。


主要是在跳转前不确定PC的值要不要变化,所以不能执行其他的指令。
就是在MEM后面跳转后,下面这几条取进来的指令是不应该执行的。一条一条往下取的不科学
call 中断都会引发。

第二个方法是预取转移成功和不成功的指令做两手准备。
第三个是和之前全加器一样提前生成进位。
处理机间的流水线是指不同的cpu完成不同的任务。
单功能就是一个流水线只实现一种功能,例如只实现浮点数加法

多次通过流水线的意思是实现除法操作,但是ALU只能加法所以只能一次一次来。

那有的cpu可能会支持指令的乱序发射那这一类的cpu就意味着即便我们给出的指令序列是一二三四这么排序的,但是啊对于这种cpu来说这个指令的顺序是可以调整的可以在执行的时候动态的调整,好所以这个地方不能调整指令的执行顺序需要和乱序发射的这种情况进行一个对比

实际上是机器周期,但是机器周期里面只有一个时钟周期是最好的。

并行性,执行的时候用的部件不一样

5.6.3五段式流水线

我们每一个程序,每一个进程,它在内存里边存放的起始地址。起始地址都是不一样的,所以当我们要访问这个进程里边的某一个变量的时候,通常通常会采用基质寻址的方式。

 写回阶段通常是写通用寄存器的值,而PC不是,所以放在M阶段写回。

这里是ID要取数,R1 R2被占用。IF是I3的IF中pc一直在锁存器(就是后面那个寄存器),还没译码,不能变化。数据相关。


5.7多处理器的基本概念

5.7.1多处理器基本概念 (只要求基本概念)

就D的进阶

5.7.2硬件多线程 (基本概念)

左边进行线程切换的时候需要保存上一个线程的pc值和相关数据,无法并行

粗粒度流水线阻塞可能是cache缺失

第六章总线

6.1总线概述

6.1.1-6.1.3总线概述

例如内存储器0-n 输出设备输入设备一共5个,那就要表示出n+6个

例如网线慢速的设备也接在这上面显然不科学

工作效率低是因为三个总线只能同时运行一个现代的计算机

6.1.5总线的性能指标

 

6.2总线事务和定时

6.2.1-6.2.3总线操作和定时

请求可以是读指令和发送地址,回答可以是数据发送。不互锁可靠性差最快。全互锁可靠性强最慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值