《计算机组成与体系结构》 读书笔记 --- 第4章

1.       CPU的基本知识和组成原理:

CPU的任务是负责提取程序指令,并对指令进行译码,然后按照程序规定的顺序对正确的数据执行各种操作。

CPU可以分成两部分,第一部分是数据通道,是一种由存储单元(寄存器)和算术逻辑单元(对数据执行各种操作)所组成的网络。这些组件是通过总线(总线是传递数据的电子线路)连接起来,并利用时钟来控制时间。CPU 的第二部分是控制单元,该模块负责对各种操作进行排序并保证各种正确的数据适时地出现在所需的地方。

 

a)       `寄存器:

计算机系统采用寄存器来存储各种数据。简单的说寄存器是一种存储二进制数据的硬件设备。

寄存器可以存放数据、地址或控制信息。某些寄存器有专门的用途,或只能用与存放地址,或只用于存储各种控制信息。而其他一些寄存器则属于通用类型,可以在不同时刻分别保存数据、地址或控制信息。

寄存器的编址方式与存储器不同。每一存储字都有一个唯一的二进制地址,这些地址从0开始编码。寄存器则由CPU内部的控制单元进行编址和处理。

CPU至少有6类寄存器:

1.       指令寄存器IR

用来保存当前正在执行的一条指令。

2.       程序计数器PC

又称指令计数器。大多数指令都是顺序执行,因此只需简单对PC1.如果遇到转移指令如JMP时,那么后继指令的地址必须从指令寄存器中的地址字段取得。因此PC应当具有寄存器和计数两种功能。

3.       数据地址寄存器AR

用来保存当前CPU所访问的数据cache存储器中单元的地址。

4.       数据缓冲寄存器DR

用来暂时存放ALU运算结果、由数据存储器读出的一个数据字以及来自外部接口的一个数据字。其作用是:

作为ALU运算结果和通用寄存器之间信息传送中时间上的缓冲

补偿CPU和内存、外围设备之间在操作速度上的差别

5.       通用寄存器R0~R3(等同于MARIE中的AC

当算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区。例如存放运算的结果。

6.       状态字寄存器PSW

用来保存由算术指令和逻辑指令运算或测试结果建立的各种条件代码,如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标志(Z),运算结果为负标志(N)等待。

此外,状态条件寄存器还保存中断和系统工作状态信息。

b)       运算器:

算术逻辑单元(ALU)、通用寄存器、数据缓冲寄存器DR和状态条件寄存器PSW组成。

算术逻辑单元在程序执行过程中用于进行逻辑运算。通过控制单元发出的信号,控制ALU执行各种规定的运算。

c)       控制单元:

程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。

控制单元是CPU的警察,负责监视所有指令的执行和各种信息的传送过程。控制单元负责从内存提取指令,对这些指令进行译码,确保数据适时的出现在正确的地方。控制单元还负责通知ALU应该使用哪一个寄存器,执行哪些中断操作,以及对所需执行的各种操作接通ALU中的正确电路。控制单元使用一个称为程序计数器的寄存器来寻找下一条要执行的指令的位置。

2.       流水CPU:

1)  并行的含义:

同时性——指两个或者两个以上事件在同一时刻发生。

并发性——指两个或者两个以上事件在同一时间间隔内发生。

2)  流水计算机的组成:

CPU通常由三大部分组成:指令部件、指令队列、执行部件。这三个功能部件可以组成一个3级流水线。

指令部件本身又构成一个流水线,即指令流水线。它由取指令,指令译码,计算操作数地址、取操作数等几个过程组成。

指令队列是一个先进先出的寄存器栈。用于存放经过译码的指令和取来的操作数。它也是由若干个过程组成的流水线。

执行部件可具有多个算术逻辑运算部件,这些部件本身又用流水线方式构成。

3)  流水线的分类:

指令流水线

算术流水线

处理机流水线

4)  流水线的主要问题:

a.       资源相关:

在同一机器时钟周期内争用同一个功能部件所发生的冲突。

解决方法:

         增设一个存储器,将指令和数据分开存放;

将取指操作推迟一个时钟进行;

采用双端口存储器。

b.       数据相关:

在程序中,一条指令的执行需等前一条指令执行完后才能进行,则有数据相关。

解决方法:

推迟后一指令的操作;

采用数据旁路(内部向前)技术,直接把结果送给下一条指令。

c.       控制相关:

由条件转移指令引起的。

解决方法:

延迟转移法:加入空操作,等待转移条件形成。

猜测法:选择出现概率较高的分支进行指令预取。

5)  流水线的工作特点:

具有时间的并行性;

流水线分工越细,可同时运行的指令越多,

吞吐率就越高。 但需增加硬件,控制更复杂;

流水线每个阶段的执行时间应尽量一致;

流水线充满(满载)时达到最大的吞吐率。

3.       总线:

CPU通过总线将其他部件连接起来。总线是一组导电线路的组合,它作为一个共享的和公用的数据通道将系统内各个子系统连接在一起。

总线由多条线路构成,允许许多位数据的并行传递。在任意时刻,只能有一个设备使用总线。

总线的速度通常受总线的长度和共享的设备数目所影响。各种设备分为主设备和从设备。主设备是最初启动的设备,从设备是响应主设备请求的设备。

总线可以实现点对点的方式连接两个特定的设备,或者将总线用作一条公用通道来连接多个设备。要求多个设备共享的总线称为多点总线

典型的计算机总线包括数据总线、地址总线、控制总线和电源线。

用于数据传递的总线称为数据总线。控制总线用于指示哪个设备允许使用总线,以及使用总线的目的(例如是读还是写内存或I/O设备)。控制总线也传递有关总线的请求、中断和时钟同步信号的响应信号。地址总线指出数据的读写位置。电源线为计算机提供所需电力。

各种信息的传递都发生在一个总线周期内。总线周期是完成总线信息传送所需的时钟脉冲间的时间间隔。

由于总线传递的信息类型不同,使用总线的设备不同,所以总线还可以细分成各种不同的种类:处理器-内存总线I/O总线、底板总线(或称主板总线)

个人计算机有专门的总线术语。PC机使用一条内总线(或称系统总线连接CPU、内存和所有其他的内部部件。而采用外总线(有时称为扩展总线连接各种外围设备、扩展槽和I/O端口到计算机的其他部分。大多数个人计算还有局部总线,可以将外设直接连接到CPU的数据总线上。

 

同步总线是由时钟控制的。各种事件只有在时钟脉冲到来时才会发生,也就是事件发生的顺序由时钟脉冲来控制。每个设备都由时钟走动的速度,称为时钟频率,来进行同步。总线周期和总线的时钟频率成反比。

任何时钟脉冲产生的相位误差可能带来一些严重的问题。因此总线必须尽可能的短。另外总线的周期不能短于信息在总线上传送所需要的时间。因此总线的长度对总线的时钟频率和周期时间有一些限制。

 

各种控制线都是由一步总线来负责协调计算机的各种操作。异步总线必须采用一种较为复杂的握手协议来强制实现与计算机其他操作的同步。使用协议而不是时钟脉冲来协调各种事件的发生,意味着异步总线可以在时间控制上与硬件技术配合得更好,而且可以支持更广泛的设备。

 

要使用总线,设备必须占用总线,任意时刻都只能有一个设备使用总线。只有主设备可以占用总线以及为准备占用总线而保留总线。

对于配备不止有一个主设备的系统,需要总线仲裁机制。常用的仲裁机制有以下四种:

1.       菊花链仲裁方式:这种方案是通过使用一条“出让总线“的控制线,将总线使用权依次从最高优先级别向最低优先级别传递。这种方案缺乏公平性

2.       集中式平行仲裁方式:每个设备都有一个总线请求控制线,通过一个总裁仲裁器来选择使用总线的设备。采用这种类型的仲裁方式的缺点是可能会导致总线的使用过程中出现瓶颈效应

3.       采用自选择的分配式仲裁方式:这种方案类似于集中式仲裁,但是没有一个中央总裁器来选择设备使用总线。而是由设备自己决定哪个设备具有使用总线的最高优先级别。

4.       采用冲突检测的分配式仲裁方式:每个设备都允许发出总线使用请求,如果总线检测到有任何冲突(即出现多个设备同时发出请求)这些设备就必须重新发出另一个总线使用请求。

 

 

4.       时钟:

CPU使用时钟信号来调控系统的各个进程,检测系统中的各种数字逻辑门电路是否会出现其他不可预测的执行速度。CPU的每条指令执行都是使用固定的时钟脉冲数目。因此计算机通常使用时钟周期数目来度量系统指令的性能。时钟周期即两个相邻时钟脉冲之间的时间间隔。时间频率为时间周期的倒数。

最小的时钟周期至少应该大于数据从每组寄存器的输出到下一组寄存器的输入所需要的传递时间,即电路的最大传输延迟时间。

通常我们所说的时钟是指系统时钟,即控制CPU和其他部件的主控时钟。然而某些总线结构也配有自己的时钟。总线时钟通常比CPU时钟慢,这就造成了系统的瓶颈问题

 

5.       指令周期:

指令周期是取出一条指令并执行这条指令的时间。指令周期常用若干个CPU周期数来表示。CPU周期也称为机器周期。一个CPU周期又包含若干个时钟周期。任何一条指令的指令周期至少需要两个CPU周期。

 

6.       输入输出子系统:

输入输出是指各种外围设备和主存储器(也称为内存)之间的数据交换。输入输出并不与CPU直接相连,而是通过某种接口来处理数据交换。接口负责系统总线和各外围设备之间的信号转换,将信号变成总线和外设都可以接受的形式。

CPU通过输入输出寄存器和外设进行交流,这种数据的交换通常由两种工作方式。在内存交换的输入输出方式中,接口的寄存器地址就在内存地址的分配表中。在这种方式下,CPUI/O设备的访问和CPU对内存的访问是完全相同的。这种方式转换速度很快但是要占用系统的内存空间。而对于指令实现的输入输出方式CPU需要有专门的指令来实现输入和输出操作。这种方式不占用内存空间,但是需要执行特殊的I/O指令。

 

7.       存储器组成和寻址方式:

可将存储器设想成一个数据位的阵列。阵列的每一行的位长通常等于机器的字长。我们利用一个寄存器(通常称为存储单元)来实现存储器阵列的一行数据存储,每个寄存器都具有一个唯一的地址编号。存储器地址通常是从0开始编号。

存储器采用的是按字节编址的方式。有些机器的字的大小可能会超过一个字节,例如32位的机器,但是计算机仍然是采用按字节编址的方式。如果一个机器字使用了多个字节,那么计算机将使用最低地址的字节来决定整个字的地址

如果计算机系统采用按字节编址的体系结构,并且指令系统的结构字大于一个字节,就会出现一个所谓字节对齐的问题。如果要出一个按字节编址的机器读出一个32位字,必须先确定以下两点:

a)       这个字是按照某种自然对齐的边界线来存储的

b)      应该从这个对齐边界线开始访问。

对于32位字的情形,可以通过将要查找的地址乘以4倍来实现上面这种读取方式。

 

存储器由随机访问存储器(RAM)芯片构成。存储器通常使用符号L*W(长度*宽度)来表示。例如4M*16的存储器表示存储器有4M长(具有4M=2^2*2^20=2^22个字)和16位宽(每个字都是16位)。

通常利用多块RAM芯片来构成一个满足一定大小要求的单一存储器模块。

例:利用2K*8 RAM的芯片构建一个32K*16 的存储器。可以将芯片连接成16行和2列的形式。组合芯片的每一行可以编址2K(假设机器是按字编址的)。对这个存储器的编址需要使用15位二进制数(需要访问的字的数目是32K=2^5*2^10=2^15),而对每个存储单元(本例中为每对芯片,即组合存储器的一行)的内部只需使用11根地址线2K个字即为2K=2^11)。在这种情况需要使用一个译码器对地址最左边的4位地址进行译码决定是哪个芯片对存放了所需的地址。一旦选定了芯片对,剩余的11位地址将被送到另外一个译码器,以确定该芯片对中正确的地址单元

 

单一共享存储器模块可能会引起存储器访问上的顺序问题。可利用存储器交叉存储技术,从多个存储模块中分离存储器单元的技术来解决。

交叉存储技术分为:

a)       低位交叉存储:使用地址的低位来选择存储器组。

低位交叉存储器技术是将连续的存储器地址分配到不同的存储器模块中。配合相应的总线技术,可以在一个存储器模块的读写操作完成前就开始另一个存储器模块的读写操作。

b)       高位交叉存储:使用地址的高位来选择存储器组。

高位交叉存储技术可将地址分配给含有连续地址的存储器模块。

         最后总结存储器最重要的两个概念:

a)       存储器采用无符号二进制数值进行编址。

b)       要编址的项目数决定了在地址中的二进制数的位数。

 

8.       中断:

中断就是改变(或中断)系统正常执行流程的各种事件。执行各种中断的操作称为中断处理。

由用户或系统发出的中断请求可以是屏蔽中断(可被禁止或忽略)非屏蔽中断(高优先级别的中断,不能被禁止,必须响应)。

中断可以出现在指令和指令之间,可以是同步中断,即与程序的执行同步出现。也可以是异步中断,即随意产生。

 

9.       MARIE(一个真正直观和简单的计算机体系结构)

1)  体系结构:

MARIE具有以下特点:

使用二进制和补码表示法

存储程序和采用的字长度

按字编址的方式

主存储器容量为4K字(即每个地址需要使用12位二进制数)

16位数据

16位指令、4位操作码和12位地址

一个16位的累加器(AC

一个16位的指令寄存器(IR

一个12位的程序计数器(PC

一个16位的存储器缓冲寄存器(MBR

一个12位的存储器地址寄存器(MAR

一个8位的输入寄存器

一个8位的输出寄存器

 

2)  寄存器和总线:

寄存器是CPU的存储单元。执行程序时,寄存器的作用是:保持各种暂存的数值。在许多情况下,计算机对寄存器的引用都隐含于指令之中

MARIE中,有下列7种寄存器:

AC: 累加器,用来保存数据值。他是一个通用寄存器,作用是保存CPU需要处理的数据。

MAR: 存储器地址寄存器,用来保存被引用数据的存储器地址

MBR: 存储器缓冲寄存器,用来保存刚从存储器中读取或者将要写入存储器的数据。

PC: 程序计数器,用来保存程序将要执行的下一条指令的地址

IR: 指令寄存器,用来保存将要执行的下一条指令

InREG: 输入寄存器,用来保存来自输入设备的数据

OutREG: 用来保存要输出到输出设备的数据

 

另外还有一个状态或标志寄存器,用来保存指示各种状态或条件的信息。

MARIE需要利用总线来将各种数据或指令传入和移出寄存器。MAR和存储器之间设计一条通信路线,MAR通过这条电路为存储器的地址线提供输入,指示CPU要读写的存储单元的位置。另外,MBRAC之间有一条单独的数据通道,从MBRALU之间还有一条特殊通道,同时各种信息也可以从AC流经ALU,再流回AC因此MARIE体系结构允许这些事件并行发生

 

3)  指令系统体系结构(ISA):

ISA是计算机软件和硬件之间的接口。

MARIE的每条指令是由16位二进制数所构成。指令最左边的4,从第12位到第15位,组成机器的操作码。操作码表示的是要执行的指令。右边的12,从第0位到第11位,用来形成一个地址。因此机器允许的最大存储器的大型为2^12-1

下面介绍MARIE指令集中的各种指令:

Load X  将地址为X的存储单元中的内容装入AC

Store X  AC中的内容存储到地址为X的存储单元中

Add X将地址为X中的内容和AC中的内容相加,然后将结果存入AC

Subt X AC中的内容减去地址X中的内容,然后将结果存入AC

Input 从键盘输入一个数值到AC

Output AC中的数值输出到显示器

Halt 终止程序的执行

Skipcond 有条件的跳过下一条指令(使PC寄存器中的值增量加1,忽略程序中紧跟在这条指令后面的指令)

Jump X X的值装入PC

二进制指令又称为机器指令。而对应的助记符号指令则称为汇编语言指令。

 

4)  寄存器传输表示法(RTN):

计算机执行的每条指令实际上包含了多个“微指令”(又称“微操作”)的执行过程。

微指令规定了对寄存器中存储的数据可以执行的各种最基本的操作。

描述计算机微操作的行为的符号表示法称为寄存器传输表示法,或称寄存器传输语言。在这种表示法中,使用符号M[X]表示存放在地址为X处的存储单元中的数据。而符号ß表示信息的传送。

下面介绍MARIE指令系统中每条指令的寄存器传输表示法:

Load X: MARßX

  MBRßM[MAR],ACßMBR

因为在地址X处的存储单元中的数据被装入MBR之前,指令寄存器(IR)需要使用总线来复制X的值到MAR,所有这个操作需要两个总线周期。很明显,这两个操作分别属于不同的操作线路,这表示它们不能在同一总线周期内发生。然而由于在MBRAC之间设置有专门的连接通路,(见上文)因此MBRAC的数据传送可以在数据被放入MBR后立刻执行,而不必等待总线周期

 

Store X: MARßX,MBRßAC

       M[MAR]ßMBR

 

Add X: MARßX

MBRßM[MAR]

             ACßAC+MBR

Subt X: MARßX

             MBRßM[MAR]

             ACßAC-MBR

 

Input: ACßInREG

 

Output: OutREGßAC

 

Halt: 没有与寄存器有关的操作,该指令简单地使机器终止程序的执行

 

Skipcond:

该指令使用指令地址域中第11位和第10位来决定对累加器AC所进行的比较运算。根据这两位的不同组合,机器会检查AC中的数值,决定这个数值是否为负数(两地址位为00),等于0(两地址位为01)或者大于0(两地址位为10)。如果条件为真,则会跳过下一条指令这种跳转操作是通过将PC寄存器中的指针进行增量加1实现的的。

If  IR[11-10]=00 then

         If  AC<0  then  PCßPC+1

If  IR[11-10]=01 then

         If  AC=0  then  PCßPC+1

If  IR[11-10]=10 then

         If  AC>0  then  PCßPC+1

                  

Jump X:  PCßX

 

寄存器传输表示法(RTN)属于一种符号表示方法。它表示的是在执行特定指令时计算机系统内部发生的各种过程,寄存器传输表示法与数据通路有关,如果存在多个微操作必须公用总线,那么微操作必须按照顺序安排的方式,逐个进行。

 

10.   指令的执行过程:

1)  取指-译码-执行周期(注意是取指,并非取址)

取指-译码-执行周期表示计算机运行程序时所遵循的步骤。CPU首先提取一条指令,即将指令从主存储器转移到指令寄存器,接着对指令进行译码,即确定指令的操作码和提取执行该指令所需的数据,然后执行这条指令。当一个程序最初被装入到CPU时,第一条指令的地址也被装入PC中。

步骤1:将PC中的内容复制到MAR: MARßPC

步骤2CPU转向主存储器,提取由MAR给出的地址单元中的指令,并将该指令放入指令寄存器IR中。同时PC自动加1(因为MARIE是按字编址的,所以PC增量加1所产生的效果是下一个字的地址将占据PC寄存器,也即下一条指令的地址。如果MARIE32位的按字节编址的系统,则PC需要增量加4

步骤3:将IR中最右边的12位复制到MAR,并对IR最左边4位进行译码,以确定操作:MARßIR[11-0] 和译码IR[15-12]

步骤4:如果需要,CPU将使用MAR中的地址转向存储器提取数据,并将该数据放入MBR(也可能是AC)中:MBRßM[MAR],然后执行该指令。

2)  中断和输入输出:

MARIE有两个寄存器负责处理输入输出操作。但是假如采用键盘输入,并且打字速度很快,计算机在处理完当前字符之前又有新的字符被送入到输入寄存器,那么当前字符就会丢失。又假如键盘输入很慢,处理器就很可能会多次从寄存器重复读取同一个字符。

因此使用中断控制的输入输出来解决以上问题。当CPU要执行输入或输出指令时,首先会通知相应的I/O设备,然后继续处理其他一些工作。直到该I/O设备准备就绪,这时I/O设备会向CPU发生一个中断请求信号随后CPU会响应和处理这个中断请求。完成输入输出操作后,CPU会继续正常的取指-译码-执行周期。

大部分计算机所采用的中断处理方法是:在机器的每一个取指-译码-执行周期开始处,首先检查是否有中断请求存在。如果有,CPU先处理中断任务。如果没有,则进行正常的程序执行过程。

通常输入或输出设备使用一个特殊的寄存器、状态或标志寄存器,来发送中断信号。

通过在这个寄存器中设置某个特殊的二进制位来表示有一个中断请求的产生

如果CPU发现中断位被设置,就会执行中断处理任务。中断处理任务是由所产生的中断类型所决定的。中断类型有三种:由外部事件(如输入输出,电源掉电等)产生的外部中断;由程序中的异常(如被0除,堆栈溢出等)产生的内部中断以及执行程序中的某条指令(如要求转换运行环境)所引起的软件中断

不管哪种类型的中断调用,中断处理的过程是相同的。CPU识别一个中断请求,就能确定中断服务程序的地址(通常由硬件决定),并且执行这一中断服务的程序CPU会从原来的程序运行转去执行某个特殊的程序进程来处理中断。处理完成后CPU又会返回到中断发生前所运行的程序位置。

因此CPU在执行中断服务程序之前,必须先存储PC中的内容,CPU所有寄存器的内容以及原始程序中原有的各种状态条件。

 

11.   编译程序:

编译程序的任务是使用助记符号将汇编语言转换成机器语言。

编译程序阅读的是由汇编语言编写的源文件,生成的是由机器代码组成的目标文件。

可以使用标记符号来标识或命名一些特定的存储器地址。对于采用标号编写的汇编程序,编译程序必须进行两次转换,这就意味这编译程序需要通读程序两次。第一次通读,编译程序会建立一组称为符号表的对应关系,同时编译程序也开始翻译程序指令但是并不完整。第二次通读,编译程序使用符号表来填补空白地址,并生成相应的机器语言指令。

编译程序会采用某种类型的汇编指令来专门指定解释这些数值所采用的基数。它本身不会被翻译为机器码。

 

12.   硬件译码和微程序控制译码:

有两种方法可以正确设置各条控制线,使各个数字部件按照要求工作。

a)       硬连线控制(利用硬件控制)

从物理上将各条控制线与实际的机器指令连接起来。指令中不同的位通过各种数字逻辑部件组合连接用来驱动不同的控制线。

硬连线控制的优点是速度快,缺点是指令集和控制逻辑通过特殊的电路直接连接,使电路变得复杂。

b)      微编程(利用软件控制)

所有的机器指令都被放置到一个专用的程序(微程序)中,然后将这些指令转换成规定的控制信号。微程序是一个用微代码编写的翻译器,这些微程序被存储在计算机固件(如ROM.PROM,EPROM等)中,称为控制存储器。

这个方法灵活,但是所有指令都需要经过一次额外的翻译过程,会减慢整个程序的执行速度。

 

13.   微程序控制器:

1)  基本原理:

仿照解题的方法,把操作控制信号编制成微指令,存放到控制存储器里,运行时,从控存中取出微指令,产生指令运行所需的操作控制信号。微程序设计技术是用软件方法来设计硬件的技术。

2)  基本概念:

微命令:控制部件(如CU)通过控制线向执行部件(ALUMI/O等)发出的命令。

微操作:执行部件接受微命令后所进行的操作。

微指令:在一个CPU周期中,一组实现一定操作功能的微命令的组合。

微指令的基本格式:

操作控制字段用于产生微命令。

顺序控制字段用于确定下一条微指令的地址。

操作控制字段中的每一位表示一个微命令。

操作控制部分1表示发出微命令,0表示不发出微命令。

 

微程序:由微指令组成,用以实现指令功能的程序。

3)  微程序控制器原理:

微程序控制器由控制存储器,微指令寄存器和地址转移逻辑三大部分组成。其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。

控制存储器(CM):用来存放实现全部指令系统的微程序,是只读存储器。其字长即为微指令的字长。

微指令寄存器(MIR):用来存放由控制存储器读出的一条微指令信息。其中微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段(P字段)信息。

地址转移逻辑:如果微程序不出现分支,下一条微指令的地址就直接由微地址寄存器给出。如果出现分支,通过判别测试字段P和执行部件的状态条件反馈信息,去修改地址寄存器的内容,地址转移逻辑就承担了自动完成修改微地址的任务。

4)  微程序和机器指令的关系:

一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。因此,一条机器指令的功能是由若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的 操作划分成若干条微指令来完成,由微指令进行解释和执行。

每一个CPU周期就对应一条微指令。

5)  微指令设计技术:

1.       微命令编码:

微命令编码,就是对微指令中的操作控制字段采用的表示方法。通常有以下三种表示方法:

a.       直接表示法:

操作控制字段中的每一位表示一个微命令。

操作控制部分1表示发出微命令,0表示不发出微命令。

b.       编码表示法:

将微命令分段编码,经简单译码产生微命令。

c.       混合表示法:

把直接表示法与字段编码法混合使用

2.       微地址形成方法:

a.       计数器方式:

在微程序控制器中设置一个微程序计数器MPC,取代微地址寄存器。MPC的作用类似 PC。顺序执行微指令时,后继微地址由现行微地址加上一个增量来产生。非顺序执行微指令时,必须通过执行转移微指令,把一个新的微地址送给MPC

 

b.       多路转移方式:

当微程序不产生分支时,后继微地址直接由微指令的顺序控制字段给出;

当微程序出现分支时,有若干“后选”微地址可供选择:即按顺序控制字段的“判别测试”标志和“状态条件”信息来选择其中一个微地址。

状态条件n位标志,可实现微程序2n次方路转移,涉及微地址寄存器的n

3.       微指令的格式类型:

a.       水平型微指令

一次能定义并执行多个并行操作微命令的微指令。

水平型微指令的优点是:一条微指令可同时发送多个微命令,微指令执行效率高,速度快,较灵活,并行操作能力强;水平型微指令构成的微程序较短。它的主要缺点是:微指令字长较长,明显地增加了控制存储器的横向容量。

 

b.      垂直型微指令

微指令中设置微操作码字段,由微操作码规定微指令的功能。

微指令字采用短格式,每条微指令只能控制一二个微操作,并行控制能力差。微指令字短,减少了横向控制存储器的容量;但微程序长,影响了执行的速度。

你可能感兴趣的:(工作,汇编,读书,存储,语言,任务)