总结
CPU
功能:控制指令,操作,时间,加宫,中断处理。
运算器
ALU,暂存寄存器,累加寄存器(用来ACC的),通用寄存器(存放操作数/地址,SP,ABCDX),程序状态字寄存器(PSW,保留状态信息),移位器,计数器。
控制器
包含: PC,IR,译码器,MAR,MDR,时序系统,微操作发生器。
1.硬布线控制器(ARM)
CU信号来源: 译码器;时钟机器周期;反馈标志。
时序系统: 时钟,机器,指令,微操作命令。
控制方式: 同步(最长为标准),异步(不同步),联合(折中)。
2.微程序控制器(X86)
程序:指令集合 | ||||
CPU内部,ROM实现 | 机器指令 | |||
微指令有序集合 | 一段微程序 | |||
-- | 微指令 | 微指令 | ||
读取一条微指令并执行所需时间 | 微周期 | 微周期 | ||
对应若干微命令 | 微命令 | 微命令 | 微命令 | 微命令 |
一对一微操作 | 微操作 | 微操作 | 微操作 | 微操作 |
编码方式: 直接编码(直接控制)(一个萝卜一个坑),字段直接编码(互斥为微命令放一起,留一个),字段间接编码(一位控制两个)。
微地址形成方式: 断定方式(下地址直接给出),机器指令操作码;中断周期中,硬件形成首地址。
(常考问题)微操作指令设计: 区分在不在一个节拍上是根据是否会占用Bus导致冲突,然后还包括逻辑先后问题;PC本身是个地址。
微地址格式:
比较内容 | 水平型微指令 | 垂直型微指令 |
微指令 | 长 | 短 |
微程序 | 短 | 长 |
执行速度 | 快 | 慢 |
麻烦 | 麻烦 | 不麻烦 |
并行操作 | 弱 | 强 |
在水平型微指令中,寄存器要多留一位不使用的操作;对于控制区中也需要留出一位空条件的情况。
3.数据通路
基本结构: 单总线,三总线(数据,地址,控制),专用数据通路。
三操作: 寄存器传寄存器,主存传CPU,算术运算,细节看书。
指令执行过程
1.指令周期
内容 | 定长带简址指令周期 | |||
时钟周期 | n个时钟周期 | n个时钟周期 | n个时钟周期 | n个时钟周期 |
机器周期 | 取指周期 | 间址周期 | 执行周期 | 中断周期 |
功能 | 取指令 | 取地址 | 取操作数 | 保存断点 |
标志位 | FE | IND(index) | EX(exert) | INT(interrupt) |
注意问题: 中断借助堆栈,堆栈指针是-1而不是+1,小端模式:高起始,低结束。
2.数据流流程
取指周期:
1.从PC中将地址拿出来放MAR: (PC)-> MAR
2.CU放出控制信号:CU
3.通过主存访问MAR里的地址,拿到数据放入指令寄存器中:M(MAR) -> MDR -> IR
4.发出读命令,PC后移:(PC) + 1 -> PC
间址周期:
1.取得真实地址,放入MAR中: Ad(IR) -> MAR
2.发出命令:CU
3.读出MAR地址对应的数据:M(MAR) -> MDR
执行周期: 不介绍,一次一个样。
中断周期:
1.保存断点;2.形成入口地址;3.关中断(此处不说明)
一、保存断点
1.将地址放入主存中:(CU) -> MAR - > MEM
2.发送写入命令:CU
3.下一步的指令的位置:(PC) -> MDR
二、形成入口地址
4.将入口地址放入PC中等待指令跳转:(CU) -> PC
3.指令执行方案
单指令周期: 每条指令相同时间,固定的时钟周期。
多指令周期: 不同指令需要不同的时钟周期数。
3.流水线:
尽可能每个周期启动一条指令。(指令执行三阶段:取指,分析,执行(顺序,一次重叠,二次重叠))
分类: 单多,动静(是否统一功能),线非线(是否递归),功处处(功能:逻辑运算;处理机:指令分解过程;机间:各个处理机结果放在一起)
影响因素: 资源冲突(征用同一资源);数据冲突(数据先来后到);控制冲突(转移指令断流)
性能指标: 吞吐率(基本,kn公式,极限公式);加速比(不用/用,基本,kn公式,极限公式);效率(S平四 / S矩形,极限);
特殊流水线: 超标量(一个周期发多条);超流水线(周期机关枪);超长指令字(绕口令一刻不停的说完一句话)。
(常考问题)三种数据冲突: RAW(写后读),WAW,WRW。这个问题区分好顺序即可,找两个操作中间共同的部分。(p232,5.5.6 D4) ;阻塞的原因往往是因为有出现数据冲突导致的;当发生指令冲突的时候,确认出现的时候再去取指令。