返回

UESTC 计组速通ing

不好玩,量太大吓哭了

别学我突击。。。

Chaper0-1:数值型数据的表示

各种码是什么

真值:用正、负符号加绝对值表示数值

机器数:计算机 内部的用二进制数码来表示数的表示方法。

原码:符号位 + 真值的绝对值的二进制。(+-0)

反码:正数反码与原码相同。负数原码的符号位不变,其余各位按位取反.(+-0)

补码:正数补码与原码相同。负数其反码的末位加 1。

移码:给原码加上一定的固定偏移量()

IEEE754表示方法:

$$ N = (-1)^{S}\times{M}\times R^{E} $$ 其中,S 是符号位,M 是尾数,R 是阶权,E 是阶码。

但是在存储中,存储的是 S,f(规格化后为1.xxxx乘后面的,此处的 f 只记录小数点后的部分),e=E+bias。bias = 二次方的阶码的存储位数减一。eg.短浮点数bias= $2^{8}-1=127$

转换方法

确定符号位、将绝对值转为二进制、规格化二进制数(表达成$N=(-1)^{S} \times 1.f \times R^{e - bias}$)、组合各部分(S,f,e)。

一个例子:

特殊 ASCLL 码:0->30 A->41 a->61(注意此处都是16进制表示)

Chaper0-2:数字逻辑基础知识

离散数学基础知识,没学好的有福了……这里好像就一个新的加法分配律:A+BC=(A+B)(A+C)

各种门的图像表示

组合逻辑电路

特点:电路由逻辑门构成,无记忆元件。输入信号是单向传输,一般无反馈。

分析方式:逻辑电路图转换成函数表达式,再化简,可以得到真值表,描述功能。

有个视频可以迅速了解一下下面的东西

半加器&全加器

推导过程:列出真值表,写出最小项,然后用公式对最小项的和进行化简。

编码器

所谓编码,就是在选定的一系列二值代码中赋予每个代码以固定的含义。执行编码功能的电路称编码器

典例:低电平8-3编码器:对为0的那一位进行编码,第n位,就编码成二进制表示的n。

然后可以更细致地,写出每一位的逻辑表达式。例如:$$Y_2 = I_4 + I_5 + I_6 + I_7 = \overline{\overline{I_4} \overline{I_5} \overline{I_6} \overline{I_7}}$$

译码器

将具有特定含义的不同二进制代码“翻译”出来。

二进制译码器属于完全译码器(设译码器有 n 个输入和 m 个输出,则 $m=2^{n}$),不满足该条件的称为部分译码器。

其实就是编码器的逆过程,但是多了一个 E 工作开关(使能端,还可以用于译码器的扩展),如果 E = 0 那么后面的输出就是全 0 或者全 1。

物理电路如下图所示:

推导方式:先列出真值表,计算每一位的解码逻辑表达式,然后再对需要译码的进行取反再取反,中途&末尾导出正反,进一步进行利用。

两片 2-4 译码器组合成一片 3-8 译码器。首先把 8 位分成前四位和后四位,后四位当且仅当 3 位输入最高位不为 0 的时候才可能用到,因此可以拿最高位当作下面那一片的使能端。同时两片只有一个能在工作状态,因此注意到 A2 其实用作控制信息。

时序逻辑电路

实际上是组合逻辑电路+存储电路的组合。

电路由组合电路和存储电路组成,具有对过去输入进行记忆的功能;电路中包含反馈回路,通过反馈使电路功能与“时序”相关;电路的输出由电路当时的输入和态(对过去输入的记忆)共同决定

触发器

能够存储一位二进制信息的基本单元电路称触发器。特点是:具有两个能自我保持的稳定状态,且具有一对互补输出。有一组控制(激励、驱动)输入(使能信号)。具有现态(接受输入之前的状态 $Q_n$)与次态(接受输入之后的状态 $Q_{n+1}$)

分为无 cp (基本 R-S 触发器)与有 cp 的触发器(钟控 RS 触发器、D 触发器、维持阻塞 D 触发器、集成 D 触发器

集成 D 触发器

特点:“D 与状态一致”、边沿触发更新。

Chapter 1-1 系统组成部分

基本组成:CPU (运算器、控制器)、存储器、输入设备、输出设备。存储时,代码都已成指令。工作流程:编写程序 - 输入程序 - 存储程序 - 程序转换为指令序列 - 执行指令 - 输出结果。

两大流:控制流 & 数据流。

存储程序方式:事先编制程序 - 存储程序 - 自动连续运行程序的工作方式

冯诺依曼体制:采用二进制形式表示数据和指令、采用存储程序方式工作、由五大部分组成计算机系统的硬件、传统的诺依曼机串行执行指令(后增加并行处理功能)。

电平信号+一组总线实现并行操作,脉冲信号+一条总线实现串行操作。

能在程序控制下自动连续的工作的原因是 PC 寄存器(program counter)

主要功能部件

CPU

运算器(ALU 为核心) + 控制器

控制器产生控制命令(微命令)控制全机操作。下图为更完整的结构。ppt 上是只展示了微命令发生器收到指令信息、状态信息、时序信号。

微命令产生方式(指令执行控制方式):组合逻辑电路产生微命令、微指令产生微命令,分别对应组合逻辑控制方式和微程序控制方式。

两种控制器的组成原理&控制机制、模型及的数据通路结构和指令执行过程后附(挖坑)

存储器

存储信息。寻址系统选择存储单元,通过控制线路产生读写时序,控制读写操作,右侧完成读写操作,暂存读写的数据。

存储单元读/写原理、存储器逻辑设计后附(挖坑)

输入输出设备

转换信息。

显示器的工作原理和信息转换过程(挖坑)

接口

部件与部件(指硬件或软件)之间的交接部分称为接口;主机系统总线与 I/O 设备之间的交接部分称为 I/O 接口。按传送格式分串、并行接口;按时序控制分为同、异步接口;按信息传送控制方式分为中断接口和 DMA 接口

接口:中断接口、DMA接口(挖坑)

Chapter 1-2 硬件系统结构

总线:能为多个部件分时、共享的一组信息传送线路及相应的控制逻辑。按功能分为内外、局部系统总线;按传送信息分为地址(AB)、数据、控制(CB)总线;按格式分为并、串行总线;按时序分为同步、异步总线;按方向分为单、双向总线。

以总线为基础的系统架构

  • 以 CPU 为中心的双总线结构:

  • 单总线结构:(一条杆子上挂一堆东西)

  • 以主存为中心的双总线结构

  • 多级总线结构

采用通道或IOP的大型系统结构

  • 带通道的系统

  • 带 IOP 的系统( Input/Output Processor ):

模型机系统架构采用单总线结构。

总线:分类、信号组成(挖坑)

计算机系统的性能指标

  • 基本字长:指参加一次定点运算的操作数的位数

  • 运算速度:考虑 CPU 主频 & 时钟频率。CPU 主频指计算机的振荡器输出的脉冲序列的频率,是一切操作的时间基准信号。时钟频率是主频脉冲经分频后所成的时钟脉冲序列的频率,两个相邻时钟脉冲之间的间隔时间是一个时钟周期时间,也称为节拍。

  • 数据通路宽度:指数据总线(多条)一次能并行传送的数据位数。

  • 数据传输率:指数据总线每秒传送的数据量,也称为数据总线的带宽。计算方式是宽度*频率/8,单位是 bit/s 。$B=\frac{W\times f} {8}$

  • 存储容量:主存容量 & 外存容量。主存容量:可编址存储单元个数(地址个数)× 位数(编制单元的存储容量)

Chapter 2 指令系统

计算机的工作体现为指令的执行,包含三个步骤:取指(从主存中)、执行指令、存结果。

指令的基本格式

指令格式:操作码(绝对仅 1 个) + 地址码(0、1、2、3)。最基本的指令格式就是这样直接组合。

需要考虑的:指令字长、操作码需要多少位、地址码有几个(隐含了多少个)、寻址方式

指令字长越长:指令功能越丰富,完成工作越多。但是占用存储空间大,从主存中取指时间越长, 指令执行速度越慢。(特别是早期)

操作码

操作码的位数决定了操作类型的多少,位数越多所能表示的操作种类也就越多,有定长(当指令长度比较长时,位置、位数固定,位置在指令的前几位)、扩展(指令长度比较短时,位置、位数不固定,用扩展标志表示)、方式码。

操作数

操作数可以在主存中开辟的软堆栈、CPU 寄存器中的硬堆栈、外设接口中的寄存器、主存/外存中。总结就是 堆栈、寄存器、存储器

指令给出操作数地址的方式:显式(直接、间接、变址、基址)与隐式(隐含约定寄存器号、主存储单元号)

  • 显地址:例如给出主存储单元号或者 CPU 寄存器编号。分为 3、2、1、0地址指令。

  • 隐地址:例如系统事先隐含约定操作数在CPU某个寄存器中或是在堆栈中

简化地址结构就是要尽量使用隐地址。

四地址指令

(A1) OP (A2) -> A3, 下条指令-> A4

OP(操作码) A1(操作数地址1) A2(操作数地址2) A3(结果存放地址) A4(下一条指令地址)

三地址指令

在上一个的基础上,使用隐地址,隐藏下条指令地址,隐藏在 CPU 寄存器 PC 中。下条指令:( PC) + n -> PC,此处令 n = 1。(A1) OP (A2) -> A3

OP(操作码) A1(操作数地址1) A2(操作数地址2) A3(结果存放地址)

二地址指令

在上一个基础上,由于一般操作数用了就不会再用,故把结果放回 A1 or A2中。(A1) OP (A2) -> A1/A2(一般来说,放到第一个操作数中,例如 ADD A1 A2 就放到 A1 里面)

OP(操作码) A1(操作数地址1)(一般称为目的操作数) A2(操作数地址2)

一地址指令

分为隐含约定目的地的双操作数指令、只有目的操作数的单操作数指令

OP(操作码) A1(操作数地址1)

隐含约定目的地的双操作数指令:(A1) OP (AC) -> AC,(PC) + n -> PC。

(OPRD 代表 8 位寄存器)

例如无符号字节(8b)乘法:OPRD×AL→AX(MUL DL 执行的是 DL×AL→AX)

无符号字(16b)乘法OPRD×AX→DX:AX(MUL BX 执行的是 BX×AX→DX:AX)

只有目的操作数的单操作数指令:OP (A1) -> A1。例如求负(NEG BL)、求非(NOT BL)

零地址指令

就一个 OP。分为对只有目的操作数的指令不需要操作数的指令对堆栈栈顶单元内容进行操作

对只有目的操作数的指令:

  • PUSHF:FLAGS→堆栈栈顶;POPF ;堆栈栈顶→FLAGS;

  • LAHF :FLAGS的低8位→AH;SAHF :AH→FLAGS的低8位

不需要操作数的指令:NOP :空操作指令;HLT :停机指令

对堆栈栈顶单元内容进行操作:PUSH (压入堆栈)、POP (弹出堆栈)

指令寻址方式

CPU 能直接访问的是寄存器和主存中的操作数。

立即寻址

在读取指令的同时也就从指令之中获得了操作数,即操作数包含在指令中。(操作数此时在IR中)

例如:MOV AX,1234H,就是直接获取可立即使用的操作数(1234H)到 AX 中。

直接寻址

直接给出主存地址或寄存器编号,从主存单元内或CPU的寄存器内读取操作数。给出寄存器数或存储器数。

  • 主存直接寻址(慢):地址码是主存的某个单元号,操作数存放在该指定的主存单元中。例如:MOV AX,[2000H]

  • 寄存器直接寻址:地址码是CPU内某寄存器编号,操作数存放在该指定的寄存器(可编址寄存器)中。例如:MOV AX,BX

    模型机中寄存器编号:R0=000,R1=001,R2=010,R3=011,SP=100,PSW=101,PC=111

间接寻址

先从某寄存器/主存中读取地址,再按这个地址访问主存以读取操作数。

若操作数地址存放在另一主存单元之中(不是由指令直接给出),则该主存单元被称为间址单元,间址单元本身的地址被称为操作数地址的地址。

在间址单元的存储内容(一般选择最高位)中设置一位间址标志位,1 代表是间址,0 代表有效地址。

堆栈有向上、向下、固定生长方式。此处采用向上(但是 x86 是向下),假设栈底初始值为00FFH

  • 主存间接寻址(助记符 M):地址给出的是间址单元地址,从中读取操作数地址,按照操作数地址再次访问主存,从相应单元中读写操作数。

  • 寄存器间接寻址(助记符 R):地址码是CPU的寄存器编码,被指定的寄存器中存放的是操作数地址,按照该地址访问主存某单元,该单元的内容为操作数

  • 自增型寄存器间址方式(助记符:(R)+):在上面的基础上,多执行了一个 R = R + 1

  • 自减型寄存器间址方式(助记符:(R)-):在第二个基础上,多执行了一个 R = R - 1

  • 堆栈寻址:操作数在堆栈中,指令隐含约定由堆栈指针SP寄存器提供栈顶单元地址。分为两个操作:压栈 & 出栈。

    1. 压栈:

      寄存器号$\xrightarrow{SP}$ 操作数地址=(SP)-1 $\xrightarrow{M}$ 操作数S

      操作数S与寄存器SP的关系为:S=((SP) - 1)

    2. 出栈:

      寄存器号 $\xrightarrow{SP}$ 操作数地址 $\xrightarrow{M}$ 操作数S

      操作数S与寄存器SP的关系为:S=((SP))

变址类

变址寻址

指令给出的是形式地址(不是最终地址),经过某种变换(例如相加、相减、高低位地址拼接等),才获得有效地址,据此访问主存以读取操作数。助记符:X(R)

变址寻址方式的目的是为了灵活修改地址以适应连续区间(程序循环)的操作。

给出变址寄存器号和一个形式地址,变址寄存器的内容(称为变址量)与形式地址相加,得到操作数有效地址(即操作数实际地址),按照有效地址访问某主存单元,该单元的内容即为操作数。

其中 S 为操作数,Rx 为指令给出的寄存器号,D 为形式地址,N 为变址量

$S=((Rx)+D)=(N+D)$

基址寻址

指令中给出基址寄存器号和一个形式地址,基址寄存器内容(作为基准地址)与形式地址(作为位移量)相加,其和为操作数有效地址(即操作数实际地址),按照该地址访问主存储器,该单元的内容即为操作数,这种寻址方式称为基址寻址。(在8086/8088中使用BX(隐含使用DS段)、BP(隐含使用SS 段))

基址寻址方式的目的是扩大有限字长指令的寻址空间,

基址加变址方式:同时获得两个目的。

指令类型

按指令格式分为双操作数指令、单操作数指令、程序转移指令等。

按操作数寻址方式分类: RR型(寄存器—寄存器型) RX型(寄存器—变址存储器型) RS型(寄存器—存储器型) SI型(存储器—立即数型) SS型(存储器—存储器型

按指令功能分为:传送指令 输入/输出(I/O)指令 算术运算指令 逻辑运算指令 程序控制类指令 处理机控制类指令等

一般传送指令 MOV

将数据从一个位置(源地址)传送到另一个位置(目的地址)。

需要说明:传送范围、传送单位、寻址方式 传送范围:允许数据在什么范围内传送。主要是在主存和寄存器之间。

1)CPU寄存器之间的数据传送 :MOV Rj Ri ,即Ri→Rj。一般来说,省略了 [Ri],毕竟传送的是数据。传送必定经过一次 CPU。

2)主存储器单元之间的数据传送:MOV mem2,mem1,但是没有这个指令,因为时序长度不够。这个过程很复杂,需要 Ri 中转。

3)从CPU寄存器传送到主存单元: MOV mem,reg,即Ri→M。这个有些用助记符 STORE 表示。

4)从主存单元传送到CPU寄存器:MOV reg ,mem,即M→Rj。这个有些用助记符 LOAD 表示。

传送单位:数据可以按字节、字、双字或数组为单位进行传送。所以应当指明。

设置寻址方式

堆栈指令:就是出栈和压栈。如果栈在主存上,可以视为存储、读出主存数据的特例。

数据交换指令:XCHG AX,BX

实际上采用了一个暂存区和 3 个 MOV

输入输出指令

其实也是传送指令,只是有一方固定为 IO 设备。可以用 MOV 取代 IO 指令。

I/O指令在设置上是比较灵活的一类。因为外围设备种类数量汇编,而且具体控制命令差别很大。

外围设备编址

①对外围设备单独编址:

  • 1)单独编址到设备级。在I/O指令中给出设备码,并指明是哪个寄存器。

  • 2)单独编址到寄存器级 为各I/O接口中的有关寄存器分配一种I/O端口地址,即编址到寄存器一级。只要送出某个端口地址,就能知道选中了哪一个接口中的哪一个寄存器,也就知道选中了哪台设备。

    直接寻址是 8 位,间接寻址是 16 位。数据量取决于使用的 CPU 寄存器

②外围设备与主存储器统一编址:

这一步同样编址到寄存器级。将每个外围设备接口中的有关寄存器视作一个主存单元,分配一个存储单元地址(总线地址)(所以会占用一部分内存的地址)

I/O指令的设置方法:设置专用的 IO 指令(IN OUT)/MOV/通过 IO 处理器控制(对命令字/状态字的设置问题: 命令字:启动位、校验位、维护位、允许中断位等。 状态位:忙位、完成位、空闲位、故障位、效验出错位等。)

Chapter 3 - 1 模型机的总体设计

指令格式

1、双操作数指令:这种指令格式同时包含源地址和目的地址。

位 (Bits) 15 - 12 (4位) 11 - 9 (3位) 8 - 6 (3位) 5 - 3 (3位) 2 - 0 (3位)
字段 操作码 寄存器号 寻址方式 寄存器号 寻址方式
说明 目的地址 源地址

2、单操作数指令:这种指令格式只有一个目的地址。

位 (Bits) 15 - 12 (4位) 11 - 6 (6位) 5 - 3 (3位) 2 - 0 (3位)
字段 操作码 (未使用 / 扩充) 寄存器号 寻址方式
说明 目的地址

3、转移指令:这种指令格式包含转移地址和转移条件。

位 (Bits) 15 - 12 (4位) 11 - 9 (3位) 8 - 6 (3位) 5 - 4 (2位) 3 2 1 0
字段 操作码 寄存器号 寻址方式 (未使用) N' Z' V' C'
说明 转移地址 转移条件(后同)

寻址方式

序号 寻址方式 助记符 可指定寄存器
1 立即寻址 I
2 寄存器寻址(直接) R R₀~R₃, SP, PC, PSW
3 寄存器间址 (R) R₀~R₃
4 自减型寄存器间址 -(R) R₀~R₃, SP (无PC)
5 自增型寄存器间址 (R)+ R₀~R₃, SP, PC
6 自增型双间址 @(R)+ @(PC)+ R₀~R₃, PC
7 变址方式 X(R) X(PC) R₀~R₃, PC
8 跳转方式 SKP
寻址方式 操作数地址1 (间址地址、形式地址的地址) 操作数地址2 操作数位置 操作数的 访存次数
立即寻址: I 指令中, 实 际在IR中 0
寄存器直接寻址: R 指令给出R编号 (即操作数地址) R中 0
R寄存器间接寻址: (R) 指令给出R编号 (间接地址) R中给出M单元号 (即操作数地址) M中 1
自增型寄存器间接寻址: (R)+、(SP)+、(PC)+ 指令给出R编号 (间接地址) R中给出M单元号 (即操作数地址) M中 1
自减型寄存器间接寻址: -(R)、-(SP) 指令给出R编号 R中内容减1后, 为M单元号 (即操 作数地址) M中 1
自增型双间址: @(R)+ 指令给出R编号 (间接地址) 从M中取回的操作数地址 (即操作 数地址) M中 2
变址寻址: X(R) 指令给出M单元号 (形式地址的地址) 指令给出R编号 (即变址地址N), 及从M中取回的形式地址D; 运算 后的M单元值A=D+N (即操作数地址) M中 2
跳转: SKP

操作类型

操作码共4位,设置15种指令(14种编码方式),余下两种操作码组合可供扩充: 1、传送指令:一种 2、双操作数算逻指令:五种 3、单操作数算逻指令:六种 4、程序控制类指令:三种,但其中两种操作码相同

0000 MOV ;0010 SUB; 0101 EOR

CPU 构成

  • 运算器:三级,输入选择器 / 锁存器—>ALU—>移位器

    输入选择器 / 锁存器:选择输入。数据来源有:(R0∽R3、C、D)ALU 的 AB 端都能送、(PC、SP)只送 A 端、(PSW、MDR)只送 B 端。

    ALU:进行运算。由微命令M,S0,S1,S2,S3,C0选择操作功能。

    移位器:作直接传送、左移、右移;由微命令实现直接、左、右移。

  • 寄存器组:三组,用于处理、控制、作用于主存接口的寄存器

    都是 16 位,内部是 16 个 集成 D 控制器。代码输入至D端,CP端同步打入,还可选由R、S端异步置入 (这种方式速度更快)。

    编号:R0=000,R1=001,R2=010,R3=011,SP=100,PSW=101,PC=111

    用于处理的寄存器:通用寄存器(可编程访问,有给编号)、暂存器(C 读取源操作数、D读取目的操作数或中间结果)。

    用于控制的寄存器IR 存放现行运行指令 ,输出是产生微操作命令序列的主要逻辑依据(有扩充成为指令队列、拉 DB 数据总线连主存来提速访问)、PC 提供后续指令地址送往 MAR 、PSW 表现现行程序的运行状态,如特征位:进位C、溢出V、零Z、负N,允许中断I等和编程设定位。

    用于主存接口的寄存器

    MAR,CPU -> MAR -> 地址总线(微命令EMAR高电平发送,低电平断开)

    补充:场效应管&三态门

    MDR:存数据。特殊情况(自增双间址)可以存地址。CB 控制总线中 RW 总线控制。高电平 R 低电平 W。R:由主存单元->数据总线->MDR;W:由MDR->数据总线->主存单元

  • 总线:四组,CPU内总线、系统总线、部件间总线,外总线

    是一组能为多个部件分时共享的公共信息传送线路,及相应的控制逻辑。分为 CPU 内总线(模型机中单向单组)、部件间总线(地址线 + 数据线)、系统总线(是计算机系统内各大部件进行信息交换的基础。地址总线 AB、数据总线DB、控制总线CB)、外部总线。

  • 控制器:组合逻辑控制器/微程序控制器

  • 时序系统:一个脉冲源、一组计数分频逻辑

    周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一个振荡器和一组计数分频器组成。

内部数据通路结构

取指令

PC -> MAR

M -> IR, PC -> PC + 1

每一行一个时钟周期

取操作数地址

寄存器间址

自减型寄存器间址

先减再用

自增型寄存器间址

先用再加

自增双间址

变址寻址

数据传送

共六种方式:R -> R、R -> M、M -> R、M -> M、R -> IO 、IO -> R

微命令设置(重要)

集成D触发器工作原理:1)同步打入(由D端打入。2)由R/S端异步置入

  1. CPU 内部操作:

    1. ALU 输入选择。对 ALU 的 AB 端进行开放选择。($R_i \to A$ 等)
    2. ALU功能选择:S0~S3 控制运算,C0 分加减,M 代表类型。直接写算数表达式
    3. 移位器功能选择:直传 DM、左移 SL、右移 SR
    4. 分配脉冲:在CPU执行指令的过程中,由控制单元在特定时刻 发出的、用于选通(激活)某个特定寄存器(如 MAR、PC)的“写入”操作的定时控制信号,写为 CP + 寄存器名字
  2. 与系统线和主存有关的微命令:EMAR , R , $\bar W$ , SIR , SMDR

    1. 读入操作 ( 取指令 = EMAR, R, SIR,读数据 = EMAR, R, SMDR )

      1. EMAR (Enable MAR):

        1. 作用: 打开 MAR 到地址总线 (AB) 的三态门。
        2. 数据流: MAR $\to$ AB
        3. 目的: 将要访问的内存地址发送给主存。
      2. R (Read):

        • 作用: 在控制总线 (CB) 上发出“读”信号 (例如 R/W 置为 1)。

        • 目的: 通知主存执行“读”操作。

        情况 A:读入的是“指令”

        • 微命令:SIR (Store to Instruction Register)(R/S端异步置入)
        • 数据流: 主存 $\to$ DB $\to$ MDR $\to$ 内总线 $\to$ IR
        • 何时使用: 在“取指周期”使用。

        情况 B:读入的是“操作数”

        • 微命令:SMDR (Store to Memory Data Register)
        • 数据流: 主存 $\to$ DB $\to$ MDR
        • 何时使用: 在“执行周期”读取操作数时。数据停留在 MDR 中,等待被 ALU 作为操作数B端($R_j \to B$)取用。
  3. 写入操作(EMAR, $\bar W$)

    1. 前提:要写入的地址已经送入 MAR。要写入的数据已经送入 MDR

    2. EMAR (Enable MAR):

      • 作用: 同读操作,将 MAR 中的地址发送到地址总线 AB
      • 数据流: MAR $\to$ AB

      $\bar W$ (Write):

      • 作用:
        1. 在控制总线 (CB) 上发出“写”信号 (例如 R/W 置为 0)。
        2. (隐含操作)打开 MDR 到数据总线 (DB) 的三态门。
      • 数据流: MDR $\to$ DB

数据传送方式 & 数据通路

主机与外设的连接模式

辐射型/星型、总线型、通道型( I/O处理机)

对信息传送的控制方式

**直接程序传送方式 **: CPU直接利用I/O指令程序实现I/O传送,在外设工作期间, CPU不执行与I/O无关的操作

程序中断方式:CPU暂停执行现行程序,转去执行中断程序,以处理某些随机事态,并在处理完毕后自动恢复原程序的执行。实质是程序的切换过程。有随机性。

一个例子:CPU 执行一个程序(称为“程序A”),需要打印数据。CPU 向打印机控制器发出“打印”命令,并将数据交给它。 发出命令后,CPU 不等待。它立即“挂起”程序A,转而去执行一个完全不相关的“程序B”(例如,一个计算任务或响应用户界面)。I/O 设备并行工作:打印机开始缓慢地打印数据。与此同时,CPU 正在全速执行“程序B”。此时,CPU 和外设实现了并行工作。打印机完成了打印任务(或者它的缓冲区空了,需要新数据)。它会通过控制总线向 CPU 发送一个**“中断请求信号 (INTR)”。这就是外设“向CPU提出新请求”的方式。CPU 在执行每条指令的末尾,都会检查一下是否有中断请求。当它检测到打印机的中断请求时,它会立即停止当前正在执行的“程序B”。为了能稍后“无缝”地切换回“程序B”,CPU 必须记住它被打断时的所有状态。它会将当前程序计数器 (PC)程序状态字 (PSW) 以及相关寄存器的内容压入堆栈 (Stack)。这个过程称为“保护现场”。然后执行中断服务程序 (ISR):CPU 通过中断信号识别出是“打印机”在请求服务。它会跳转到一个固定的内存地址**,那里存放着专门为打印机服务的程序,称为**“中断服务程序” (Interrupt Service Routine, ISR)。CPU 开始执行这个 ISR。ISR 的任务可能是:检查打印机状态、向打印机发送下一批数据等。ISR 执行完毕后,CPU 执行一条“中断返回 (IRET)”指令。该指令会将之前压入堆栈的 PC、PSW 等值弹回**到寄存器中。这个过程称为“恢复现场”。PC 和 PSW 恢复后,CPU 就回到了“程序B”被“打断”的那一条指令,继续执行,仿佛什么都没有发生过一样。

直接有储器访问方式(DMA)

直接依靠硬件在主存与I/O设备进行简单批量数据传送的一种工作方式,在传送期间不需CPU的程序干预。

(据说后面专门学,先(挖坑)

时序控制方式与时序系统

时序控制方式

同步控制:各项操作与统一的时序信号同。特点是周期长度固定,每个时钟周期完成一步操作。

异步控制方式:各项操作按其需要选择不同的时间。各操作之间的衔接与各部件之间的信息交换采取应答方式。没有统一的节拍划分与同步定时脉 冲,但存在着申请、响应、询问、回答一类的应答关系。

主从设备:申请使用总线,并获得批准后掌管总线控制权(平时在 CPU 手上)的设备,称为主设备,否则为从设备。特例:用 DMA 传输时,硬件为主设备。

指令序列间的衔接方式

时序系统

产生节拍,脉冲等时序信号的部件,称为时序系统。由振荡器和分数分频逻辑(对周期乘除)组成

时序划分的层次

指令周期:读取并执行一条指令所需的时间,称为指令周期。一般不作为时序的一级

(CPU)工作周期:在指令周期中的某一工作阶段所需的时间,称为一个工作周期。一般不同。

时钟周期(节拍):是时序系统中最基本的时间分段。各节拍的长度相同。

定时脉冲(工作脉冲):有的操作如打入R,还需严格的定时脉冲,以确定在哪一刻打入。

多级时序

二级时序:一个指令周期由多个节拍组成。

三级时序:一个指令周期由多个工作周期组成,每个工作周期由多个时钟周期组成。

Chapter 3 - 2

加法单元

在这里 上文有讲

串行加法器

其实就是每次只求一位和,速度特别慢

并行加法器

由 n 位加法器和进位链组成。根据输入量(指Ci-1)提供时间的不同,将进位链分为带串行进位链的并行加法器,带并行进位链的并行加法器。加法器的运算速度不仅与全加器的运算速度有关,更主要的因素是取决于进位传递速度。

串行进位链直接依赖于低一级的信号($Cn = Gn + PnCn-1$),而并行则直接推到到底($Cn = Gn + PnGn-1 + …+ Pn…P1C0$)。

还有灵活分组的:组内并行,组间并行(实际为串行)的进位链

ALU 单元

一位的:由 1 位加法器,1 位输入控制器(逻辑运算),1 个公共控制门(算数还是逻辑运算)组成

四位:(挖坑)

Chapter 3 - 3 运算方法

定点加减法

全部基于补码。

$(X+Y){\text{补}}=X{\text{补}}+Y_{\text{补}}$

当操作码为“加”时,可直接将两个补码表示的操作数 ($X_{\text{补}}, Y_{\text{补}}$) 相加 7,不必考虑它们的符号,所得结果即为补码表示的和 8。

$(X-Y){\text{补}}=X{\text{补}}+(-Y)_{\text{补}}$ 9

当操作码为“减”时,可转换为与减数的负数相加 ,从而化“减”为“加” 。

由 $Y_{\text{补}}$ 求 $(-Y){\text{补}}$ 称为“求补”或“变补” 1313:即将 $Y{\text{补}}$ 连同符号位一起按位取反,并在末位加1

因此有规则:

  1. 参与运算的操作数均用补码表示 。
  2. 符号位作为数的一部分直接参与运算 ,运算结果也为补码形式 。
  3. 若操作码为“加”,则两数直接相加 。
  4. 若操作码为“减”,则将减数“变补”(连同符号位取反,末位加1)后再与被减数相加 。

所需命令:+A、+B(或 + $\bar B$)、A+B(或 $A + \bar B + 1$)、$\sum \to A$、 CPA

原码一位乘法

(此处讨论常规加法器,通过累加、移位实现分步乘法)

取两个操作数的绝对值相乘,每步处理一位乘法,符号位单独处理。

运算规则

①寄存器分配与初始值:A存放部分积累加和,初始值为0(双符号位00表示);B存放被乘数X(绝对值),此时,符号位为双符号位00;C存放乘数Y(绝对值),将符号位去掉;C寄存器的初始值是乘数Y的尾数(有效位数),以后每乘一次,将已处理的低位乘数右移舍去,同时将A寄存器的末位移入C寄存器的高位。

②符号位:A,B均设置双符号位(方便地检查溢出)

③基本操作

在原码一位乘中,每步只处理一位乘数,即位于 C 寄存器末位的乘数,也称之为判断位 Cn;

若Cn=1,则部分积为B,执行A+B操作,然后将累加和右移一位,用“→”表示。(Cn位去掉);执行部分积累加和+B操作,然后将新部分积累加和右移一位;

若Cn=0,则部分积为0,执行A+0操作,然后右移,或直接让A右移一位。(Cn位去掉)

右移时,A的末位移入C的高位,A的第二符号位移入尾数最高位,第一符号位移入第二符号位,而第一符号位本身则补0。

④操作步骤:n 次累加与 n 次移位(最后一次累加后要移位)

⑤处理符号位

一个例子:

一些疑惑点

为什么可以通过不断右移+累加计算?

二进制乘法,0 就是加 0 次,1 就是加 1 次。位置移动可以与正常乘法同理。通过不断对 A 移动,保证每次累加的位置都是正确的。

为什么 C 寄存器可以存放乘积低位?

  • 在 $n$ 步循环中,C 寄存器中的原始乘数位从右边($C_n$)一位一位地被“消耗”掉(用于判断后舍弃)10。
  • 同时,A 寄存器中的部分积由于不断累加和右移,其最低位($A_n$)会从 A 的右边溢出。
  • 算法巧妙地将 A 溢出的 $A_n$“塞”入 C 寄存器左边($C_1$)空出的位置 11。
  • $n$ 步之后,C 的 $n$ 位原始乘数已全部舍弃,并被 $n$ 位来自 A 的“部分积低位”填满,C 寄存器就自动“转型”为乘积的低位寄存器。

为什么 A 和 B 需要双符号位?

  • 这是为了防止中间累加步骤的“假溢出”导致数据丢失
  • 因为我们处理的是绝对值, $A$ 和 $B$ 都是正数。当两个正数 $A$ 和 $B$ 相加时,结果可能暂时超过 1.0,例如:00.1000 + 00.1100 = 01.0100
  • 如果使用单符号位,结果会是 1.0100,变成负数,数据出错。
  • 使用双符号位 01.0100,这个 1 被安全地保存在第二符号位上。在紧接着的“右移”步骤中,这个 1 会被移入尾数最高位(00.1010),数据得以完整保留,运算继续。

硬件逻辑框图:

所需微命令

注意,$ \sum / 2$由右移一位实现。$\vec C$ 为右移一位

Cn = 1,即 A+B:(+A、+B); A+B;(Σ/2→A、$\vec C$,CPA、CPC)

Cn = 0,即 A+0:(+A);A;(Σ/2→A、$\vec C$ 、CPA、CPC)

原码不恢复余数除法

同样讨论常规除法器

取两个操作数的绝对值相除,符号位单独处理,根据余数 ri 符号判断是否够减。

此方法要求被除数 X 和除数 Y 满足 $|X| < |Y|$,且此为定点小数设计。

初始化:$r_0 = X, r_0 = 2r_0 - Y$

循环执行 n 次:

ri 为正表示够减,上商Qi = 1,下一步执行 2$r_i - Y$ ri 为负表示不够减,上商Qi = 0;下一步执行 $2r_i + Y$

Qi 按照顺序在存答案的寄存器中从后向前进入 0000 -> 0001 -> 0010 –> 0101这样子。

在执行完 n 次之后,若 r < 0,则 r + Y 为最后的余数。

为什么可以通过加减 Y 来避免出现减不够?

不妨以相邻两步看:第一步 $2r_i - Y$,第二步 $2r_{i+1} + Y$,代入有 $2 \times (2 r_i - Y) + Y \to 4 \times r_i - Y$,等价于两步只减了一次。如果还不够减,同理可得,三步内只减了一次。

所需微命令:

$r_i = 0$,即 $Q_i = 1$,则 $2r_i - Y$:

  • $+\overleftarrow{A}$、 $+\overline{B}$;
  • ${2A \rightarrow \Sigma}$、 $+\overline{B}$、 $+1$;
  • ${\Sigma \rightarrow A}$、 ${\overleftarrow{C}}$、 $ {Q_i \rightarrow C_n}$、 ${CP_A}$、 ${CP_C}$

$r_i = 1$,即 $Q_i = 0$,则 $2r_i + Y$:

  • $+\overleftarrow{A}$、 $+B$;
  • ${2A \rightarrow \Sigma}$、 $+B$;
  • ${\Sigma \rightarrow A}$、 ${\overleftarrow{C}}$、 ${Q_i \rightarrow C_n}$、 ${CP_A}$、 ${CP_C}$

最后一步中,若余数为负,则需要恢复余数操作。

Chapter 3 - 4 组合逻辑控制器

定义:组合逻辑控制器的微命令(控制信息)是由组合逻辑电路(& | !)来实现。每种微命令都需要一组逻辑电路产生。

概述(回头再看。)

工作原理:从主存读取的现行指令存放在IR中,其中,操作码与寻址方式代码分别经译码电路形成一些中间逻辑信号,送入微命令发生器,作为产生微命令的基本逻辑依据。

微命令的形成还需考虑各种状态信息,如PSW所反映的CPU内部运行状态、由控制台(如键盘)产生的操作员控制命令、I/O设备与接口的有关状态、外部请求等等。

微命令是分时产生的,所以还需引入时序系统提供的周期、节拍、脉冲等时序信号。 IR中的地址段信息送往地址形成部件,按照寻址方式码形成实际地址,或送主存以访问主存单元;或送往运算器,按指定的寄存器号选取相应的寄存器。 当程序顺序执行时,PC增量计数,形成后续指令的地址; 当程序需要转移时,IR中的地址段信息经地址形成部件产生转移地址,送入PC,使程序发生转移。

时序系统

工作周期

一共有六个工作周期。用六个周期状态触发器(6 个 D 触发器)来标志。其中四个用于指令的正常执行,还有两个用于 IO 传送控制。在任意一个时态,只有一个触发器为 1。

指令正常执行的周期

取指周期(FT): M -> IR 所有指令都有

源周期(ST):如果需要从主存中读取源操作数,则进入。

目的周期(DT):如果需要从主存中读取目的地址或者目的操作数,则进入。

只有 (R)、-(R),(R)+,@(R)+,X(R)才有 ST 和 DT。

执行周期(ET):取得操作数之后,进入 ET。所有指令都有

用于 IO 传送的周期

中断周期(IT):在响应中断请求之后,到执行中断服务程序之前,需要一个过渡期(执行断点保护),称为中断周期IT。

DMA 周期(DMAT):响应DMA请求之后,CPU进入DMAT。在DMAT中,CPU交出系统总线的控制权,即MAR、MDR与系统总线断开(呈高阻态),改由DMA控制器控制系统总线,实现主存与外围设备间的数据直传。

流程图如下(注:双操作数,单操作数都是指需要从主存中读取的操作数,下同)

graph LR
    A[FT] -- "双操作数" --> C[ST];
    A[FT] -- "单操作数" --> D[DT];
    C --> D;
    D --> E[ET];
    
    E --  "如果出现外设的故障,那么先跳转到中断(优先级最高)"  --> H

    E -- "有 DMA 请求" --> G["DMAT (可循环)"];
    E -- "无 DMA 请求" --> H{中断请求 ?};
    
    G --> H;
    
    H -- "Y" --> I[IT];
    H -- "N" --> A;
    
    I --> J(进入中断程序);

时钟周期(节拍)

指令的读取与执行有CPU内部数据通路操作,也有访问主存的操作。

模型机将两类操作周期统一起来,即以主存访问周期所需时间为时钟周期的宽度,这里设为1微秒。

工作脉冲

有些操作需要同步定时脉冲进行控制,如将稳定的运算结果打入寄存器,又如进行周期状态切换。

因此引入一个同步信息:工作脉冲。模型机在每个时钟周期的末尾发一个工作脉冲 P,作为各种同步脉冲的来源。工作脉冲有前沿后沿

前沿作为打入寄存器的定时,标志着一次数据通路操作的完成。通常就是 CPX 的信号本身。

后沿作为时序转换的定时。在这个时候,如果工作周期没有结束,则对时钟周期计数器 T 计数,进入新的节拍。若结束,则将 T 清零,清除本工作周期的状态标志,设置新的工作周期状态标志。

指令流程和操作时间表

指令流程: 在寄存器传送级拟定各类指令的执行流程,也就是确定指令执行的具体步骤,即各类信息如何分步地按要求流动。

操作时间表:即给出实现上述流程所需的微操作命令序列。其中包含维持一个时钟周期的电位型微命令,以及短暂的脉冲型微命令。操作时间表还将表明出现各种微命令的逻辑条件与时间条件。

形如:

时序信号 指令流程 电平(微命令) 脉冲(微命令)
$ST_0$ Ri -> MAR Ri →A/B
A/B
DM CPMAR
T + 1 CPT

下文不再列表(太占空间了)。但是按照格式写。

注:下面我们先讨论双操作数的指令,例如 ADD X Y。

取指周期(IT)

R/S 异步置入(当且仅当是上电初始化或者复位初始化的时候)或者运算过程中同步打入 FT(从 D 端)

流程:M -> IR, PC + 1 -> PC 同一个节拍内完成。

操作时间表:

M -> IR : EMAR, R, SIR;

PC + 1 -> PC : PC -> A, A + 1, DM, CPPC.

最后一步,要改变状态,根据下一步的情况选择:

双操作数:1 -> ST, CPST

单操作数:1 -> DT, CPDT

没有需要从主存中取出的操作数:1 -> ET, CPET

ST

MOV,双操作数指令会进来。需要分类。

(R):

$ST_0$ : Ri -> MAR : Ri -> A/B, A/B, DM, CPMAR, T + 1, CPT

$ST_1$ : M -> MDR -> C: EMAR, R, SMDR, MDR -> B, B, DM, CPC, 最后一步状态转移根据下一个操作决定(此处为了方便扩展 DT)。

-(R):

$ST_0$ : Ri - 1 -> Ri, MAR : Ri -> A/B, A/B - 1, DM, CPMAR, CPRi, T+1, CPT

$ST_1$ : M -> MDR -> C : EMAR, R, SMDR, MDR -> B, DM, CPC,最后一步同理要看下一步

(R) +:

$ST_0$ : Ri -> MAR : Ri -> A/B, A/B , DM, CPMAR, T + 1, CPT(这一整步吃 CPU 内总线)

$ST_1$: M -> MDR -> C : EMAR, R, SMDR, MDR -> B(ONLY!), B, DM, CPC, T + 1, CPT(吃 DB & CPU 内总线)

$ST_2$ : Ri + 1 -> Ri : Ri -> A/B, A/B + 1, DM, CPRi, 最后一步同理要看下一步(占 CPU 内总线)

二三步可以换序或者同时,但是模型机不能()

@(R)+:

$ST_0$ : Ri -> MAR : Ri -> A/B, A/B, DM, CPMAR, T + 1, CPT $ST_1$ : M -> MDR -> C : EMAR, R, SMDR, MDR -> B, B, DM, CPC; T + 1, CPT

$ST_2$ : Ri + 1 -> Ri : Ri -> A/B, A/B + 1, DM, CPRi, T + 1, CPC

$ST_3$ : C -> MAR : C -> A/B, A/B, DM, CPMAR, T + 1, CPT

$ST_4$ : M -> MDR -> C : EMAR, R, SMDR, MDR -> B, B, DM, CPC, 最后一步同理要看下一步

X (R):

$ST_0$ : PC -> MAR : PC -> A, A, DM, CPMAR, T + 1, CPT

$ST_1$ : M -> MDR -> C : EMAR, R, SMDR, MDR -> B, B, DM, CPC, T + 1, CPT

$ST_2$ : PC + 1 -> PC : PC -> A, A + 1, DM, CPPC, T + 1, CPT

$ST_3$ : Ri + C -> MAR: Ri -> A/B, C -> A/B, A + B, DM, CPMAR, T + 1, CPT

$ST_4$ : M -> MDR -> C : EMAR, R, SMDR, B, DM, CPC,

DT

和 ST 几乎一样。MOV, 双操作数指令。

区别:MOV 指令缺少取出操作数,因为是直接把当前位置覆盖过去。也就是:M -> MDR -> D

ET

在这个周期,CPU 将会执行任务。例如 MOV R0, R1 这里就会执行 R1 -> R0。然后在最后会为下一条指令做好准备,即 PC -> MAR。

总览

先定义一下分支。这个分支主要是为了便于想那个表里面怎么规划的。

类型 寻址方式及含义
$SR$ 源操作数采用 R寻址,表明源操作数在CPU内的寄存器中。
$\over {SR}$ 源操作数寻址采用 (R)、-(R)、(R)+、@(R)+、X(R) 中任意一种,表明源操作数在主存中。
$DR$ 目的操作数采用 R寻址,表明目的操作数在CPU内的寄存器中。
$\over{DR}$ 目的操作数寻址采用 (R)、-(R)、(R)+、@(R)+、X(R) 中任意一种,表明目的操作数在主存中。

那么所有的情况可以分为四种分支,分别给出对应的例子。DR 在主存,结果就需要保存到主存;在寄存器,那么结果就需要保存到寄存器。

$SR \cdot {DR} $

$SR \cdot \overline{DR} $

$ \overline{SR} \cdot{DR} $

$ \overline{SR} \cdot \overline{DR} $

针对其中一个指令流程,给一个微命令的例子(

例如:$SR \cdot \overline{DR}$ :

$ET_0$ : Ri -> MDR : Ri -> A/B, A/B, DM, CPMDR, T + 1, CPT

$ET_1$ : MDR -> M : EMAR, W, T + 1, CPT

$ET_2$ : PC -> MAR : PC -> A, A, DM, CPMAR, 最后一步同理要看下一步(1->?, CP??)

很好的例题,使我的大脑旋转:拟定指令“ADD @(R1) +,X (R3)”的执行流程及操作时间表

对于单操作数指令:FT 周期一模一样,没有 ST 周期,DT 周期也一模一样,ET 周期就只有两种分支。即$DR$ 和 $\overline{DR}$。

$DR$ : OP Ri

$ET_0 : OP\space R_i \rightarrow R_i : R_i \rightarrow A/B, OP A/B, DM, CPR_i, T+1, CPT$ $ET_1 : PC \rightarrow MAR : PC \rightarrow A, A, DM, CPMAR$,最后一步根据下一步看:$(1) 1 \rightarrow FT?, CPFT?, (2) 1 \rightarrow DMAT?, CPDMAT?, (3) 1 \rightarrow IT?, CPIT?$

$\overline{DR}$ : OP D

$ET_0 : OP\space D \rightarrow MDR : D \rightarrow A/B, OP A/B, DM, CPMDR, T+1, CPT$ $ET_1 : MDR \rightarrow M : EMAR, W, T+1, CPT$ $ET_2 : PC \rightarrow MAR : PC \rightarrow A, A, DM, CPMAR, (1) 1 \rightarrow FT?, CPFT?, (2) 1 \rightarrow DMAT?, CPDMAT?, (3) 1 \rightarrow IT?, CPIT?$

对于转移指令 JMP 和返回指令 RST:(RST 指令是 JMP 指令的一种特例)

一样的 FT 周期,没有 ST、DT 周期。在 ET 周期中,转移成功 JP 或者转移不成功 NJP。这部分在转移指令流程讲(挖坑)

对于转子指令 JSR:分为转子不成功NJSR指令与转子成功JSR指令。

  • 转子不成功NJSR指令:只有FT及ET周期
  • 转子成功JSR指令:有FT周期、或ST周期(寻址方式决定)、ET周期

转子指令要能够返回跳走的位置,不同于转移指令。因此,在执行子程序前,本命令的 ET 周期进行断点保存和现场保护。

保存断点、现场保护的方式如下:

时序信号 指令流程 电平 (微命令) 脉冲 (微命令)
ET₀ SP-1→SP、MAR SP→A
A-1
DM CPSP、CPMAR
T+1 CPT
ET₁ PC→MDR PC→A
A
DM CPMDR
T+1 CPT
ET₂ MDR→M EMAR
W
T+1 CPT
...... ...... ...... ......

IT(挖坑)

断点保护/现场保护+获取入口地址(查表)

DMAT(挖坑)

关闭三态门,移交系统总线控制权给告诉外设

组合逻辑控制方式的优缺点

优点:产生微命令的速度快。

缺点:设计不规整,不易修改或扩展

Chapter 3 - 5 模型机的微程序控制器

基本概念与原理

微命令:构成控制信号序列的最小(或最基本)单位,又称微信号,指那些直接作用于部件或控制门电路的命令。

微操作:由微命令控制实现的最基本的操作称为微操作

微周期:从控制存储器中读取一条微指令并执行相应的一步操作所需的时间,称为一个微周期或微指令周期。通常一个时钟周期为一个微周期

微指令:每个微周期的操作所需的微命令组成一条微指令。

微程序:一系列微指令的有序集合称为微程序,用来解释执行一条机器指令

微程序控制 : 将控制器所需的微命令,以代码(微码)形式编成微指令,存入一个ROM构成的控制存储器中。(将存储逻辑引入 CPU)将各种机器指令的操作分解为若干微操作序列。(将程序技术引入 CPU 的构成级)

微程序控制器和组合逻辑控制器的区别:微命令产生方式不同,时序设计不同(微程序控制器是 2 级,组合逻辑控制器是 3 级)。

微程序控制器的硬件组成

IR、PSW、PC、时序系统、控制存储器CM、微指令寄存器µIR、微地址形成电路、微地址寄存器µAR、译码器

控制存取器CM:用来存放微程序,它的每一单元用来存放一条微指令,一段微程序需要几十位。

微指令寄存器µIR:从 CM 读取的微指令,存放于 µIR 中。分为微操作控制段:产生微命令的依据(相当于I中的操作码)和顺序控制字段:产生后继微地址指令的依据,用以控制微程序的连续执行。

微地址形成电路:根据微程序执行顺序的需要,应有多种后继微指令地址的形成方式。依据以下几种信息的一部分去形成后继微地址:顺序控制字段,现行微指令地址,微程序转移时的微地址等

微地址寄存器µAR:在从CM中读取µI时,µAR中保存着CM的地址(微地址),指向CM单元(如同PC或堆栈指针)。读出微指令或完成一个微指令周期操作后,微地址形成电路将后继微地址打入µAR中,为读取下一条微指令做准备。

微程序工作原理

执行指令时,从控制存储器中找到相应的微程序段,逐次取出微指令,送入微指令寄存器,译码后产生所需微命令,控制各步操作的完成。

长夜如此温柔,我该用什么把你留住


© Licensed Under CC BY-NC-SA 4.0


蜀ICP备2024113293号