计算机组成原理实验指导书 - 图文 联系客服

发布时间 : 星期日 文章计算机组成原理实验指导书 - 图文更新完毕开始阅读eeb495c4bed5b9f3f80f1c77

计算机组成原理实验平台

4)立即数寻址

如: MOV A,#data data->A

MOV Ri,#data data->Ri 2.9.4 设计微程序及其实现方法

I7 I6 I5 第1字节 第2字节 I4 I3 I2 I1 I0 D7 D6 D5 D4 D3 D2 D1 D0 操作码及Ri选择码 data 在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多可有24个微操作控制信号,可由微代码直接实现。如果采用多组编码译码,那么24位微代码通过二进制译码可实现2 n个互斥的微操作控制信号。

由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址 MD0~MD7,这种方法称为“按操作码散转”(如下表所示)。 MD7 0

按操作码散转 指令操作码 I6 I5 I4 MD1、MD0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 微程序首地址 MD7~MD0 003H 007H 00BH 00FH 013H 017H 01BH 01FH 023H 027H 02BH 02FH 033H 037H 03BH 03FH MD6 0 MD5 I7 微程序首地址形成 MD4 MD3 I6 I5 MD2 I4 MD1 1 MD0 1 MD7、MD6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 I7 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下一条微指令地址。例如:确定了一条程序的微程序入口地址为07H,那么当执行完07H这条微指令后微地址加1,指向08H微地址。微地址寄存器由2片74LS161组成,当模型机在停止状态下,微地址被清零。当实验平台开始运行时,微地址从00H开始运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。

00 01 02 03 04 05 06 取指微指令 减法指令微程序(1) 减法指令微程序(2) 33

计算机组成原理实验平台

07 08 09 0A 0B 0C 0D 0E 0D 。。。 MOV指令微程序(1) MOV指令微程序(2) MOV指令微程序(3) 。。。 2.9.5 设计实验平台运行中时序安排

由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用计数增量方式,所以可确定模型机中时序单元中所产生的每一拍的作用。

在本实验中为了让实验者更好地观察实验的各个中间过程中各寄存器的值,由监控单元产生一个PLS-O的信号来控制时序产生(如图2-9-2)。PLS-O信号经过时序单元的处理产生了4个脉冲信号。4个脉冲信号组成一个微周期,为不同的寄存器提供工作脉冲。

图2-9-2

PLS1: 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。 PLS2: PC 计数器的工作脉冲,根据微指令的控制实现PC 计数器加1和重置PC 计数器(跳转指令)等功能。

PLS3: 把24位微指令打入3片微指令锁存器。

PLS4: 把当前总线上的数据打入微指令选通的寄存器中。 2.9.6 设计指令执行流程

根据模型机整机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。而一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。

对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。

以下描述取指微指令执行过程: 在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效(为高)。在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。脉冲PLS2对PC 计数器无效,同时PLS2把HALT=1打入启停单元中的运行状

34

计算机组成原理实验平台

态寄存器(74LS74)中,把模型机置为运行状态,使微程序锁存器输出有效。PLS3把微程序存储器00H单元(00H单元存放着取指微指令)中的内容打入微指令锁存器中,并且输出取指微指令。PLS4把从程序存储器中读出的数据打入指令寄存器中。

在模型机处于运行状态时,脉冲PLS1将微地址寄存器(74LS161)加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器中的微指令打入微指令锁存器并且输出。PLS4把当前总线上的数据打入当前微指令所选通的寄存器。

以下举例说明指令的数据信息流: 例一:单字节指令 ADD A,Ri

该指令功能为(A)+(Ri)→A,需执行如下微操作: ?PC??1?PCCK???PC ;PC加1,为取下条指令字节准备

EDR1、PLS4?A???????DR1 ;累加器A内容送ALU,

R2、PLS4?Ri??ED?????DR2 ;寄存器Ri内容送ALU,

Cn,M,S3,S2,S1,S0X0,X1,ERA?A???Ri??,??????IDB?????A ;使ALU执行加法,结果经IDB最

后送入累加器A

ALU?O,MCn?4?????CY ;据加法结果置进位标志CY

PC?OS?PC?????IAB?BU???OAB ;PC计数器内容作访问内存地址

S1、PLS4?RAM??RM??ODB?BU???IDB?EIR????IR1;从内存该地址单元读出指令字节送

指令寄存器IR1。

此程序由4个微指令周期组成:

①PC+1为取下条指令字节准备、累加器A内容送ALU的DR1锁存器 ②寄存器Ri内容送ALU的DR2锁存器

③ALU将计算结果送累加器A,据加法结果置进位标志CY ④取指微指令,从内存读出指令送指令寄存器 例二:双字节指令 LDA addr

该指令功能为(addr)→A,需执行如下微操作: ?PC??1?PCCK???PC ;PC加1,为取本指令下一字节准备

PC-OS?PC?????IAB?BU???OAB ;根据PC访问内存

SR2?RAM??RM??ODB?BU???IDB?ED???IR2 ;取出本指令第二字节送IR2 ?PC??1?PCCK???PC ;PC加1,为取下条指令字节准备

IR2-OS(IR2)????IAB?BU???OAB ; IR2形成新的地址

SX0,X1,ERA,PLS4?RAM??RM??ODB?BU???IDB???????A ;从内存读出操作数存入A

PC?OBUS?PC?????IAB????OAB ;PC计数器内容作访问内存地址

S1、PLS4?RAM??RM??ODB?BU???IDB?EIR????IR1 ;从内存该地址单元读出指令字

节送指令寄存器IR1。

此程序由3个微指令周期组成:

PC+1从内存取得指令第2个字节送入IR2。

PC+1 为取下条指令字节准备IR2,IR2寄存器的内容输出到地址总线上取值,将取得的值送入累加器A

⑤取指微指令,从内存读出指令送指令寄存器 例三:双字节指令 JMP addr

该指令功能为addr→PC,需执行如下微操作:

PC加1,为取本指令下一字节准备 ?PC??1?PCCK???PC ;

RMBUSPLS4?RAM????ODB????IDB????IR2 ;取本指令第二字节IR2

2?OIR2?IR???IAB?ELP???PC ;由IR2内容形成转移地址送PC

?OS?PC??PC???IAB?BU???OAB ;PC计数器内容作访问内存地址

RMBUS1、PLS4?RAM????ODB????IDB?EIR????IR1 ;从内存该地址单元读出指令字节

35

计算机组成原理实验平台

送指令寄存器IR1。

此程序由2个微指令周期组成:

PC+1从内存取得指令第2个字节送入IR2。

IR2内容形成转移地址送PC ,从内存读出指令字节送指令寄存器 例四:单字节指令 RRC A ;该指令功能是将累加器A中内容带进位CY右环移一位,即 :

→CY→A7→A6→· · ·→A1→A0→,需执行如下微操作: ↑______________________________∣ ?PC??1?PCCK???PC ;PC加1,为取下条指令字节做准备

X0,X1,ERA,PLS3?????A、CY ;控制累加器A带CY右环移一位(移?A?、CY??入CY作A7,移出的A0送CY)

?OS?PC??PC???IAB?BU???OAB ;PC程序计数器内容作访问内存地址

S1、PLS4?RAM??RM??ODB?BU???IDB?EIR????IR1;从内存该地址单元读出指令字节送

指令寄存器IR1。

此程序由2个微指令周期组成:

①PC+1为取下条指令字节准备、控制累加器A带CY右环移一位;(移入CY作A7,移出的A0送CY)

②取指微指令,从内存读出指令送指令寄存器 例五:单字节指令 MOV A, @Ri

该指令功能为(Ri)→A,需执行如下操作: ?PC??1?PCCK???PC ;PC加1,为取下条指令字节做准备

RR,SA,SB,,PLS4?Ri??????IDB?EIR?2???IR2 ;读出Ri中内容经IDB,存入IR2

2?OS?IR2??IR???IAB?BU???OAB ;由IR2的8位形成操作数地址

RMBUS?RAM????ODB????IDB?A ;从内存读出操作数送入累加器A

?OS?PC??PC???IAB?BU???OAB ;PC计数器内容作访问内存地址

S1、PLS4?RAM??RM??ODB?BU???IDB?EIR????IR1 ;从内存地址单元读出指令字节送

指令寄存器IR1。

此程序由3个微指令周期组成:

①PC+1为取下条指令字节准备、送指令寄存器单元Ri中的内容到IR2寄存器 ②IR2寄存器的内容输出到地址总线上取值,将取得的值送入累加器A ③取指微指令,从内存读出指令字节送指令寄存器 例六:双字节指令 MOV A, #data

该指令功能为data→A,需执行如下微操作: ?PC??1?PCCK???PC ;PC加1,为取本指令下一字节准备

RMSX0,X1,ERA,PLS4?RAM????ODB?BU???IDB???????A;取出本指令第二字节(即data)送A ?PC??1?PCCK???PC ;PC加1,为取下条指令字节做准备

?OS?PC??PC???IAB?BU???OAB ;PC计数器内容作访问内存地址

RMBUS1、PLS4?RAM????ODB????IDB?EIR????IR1 ;从内存该地址单元读出指令字节

送指令寄存器IR1。

此程序由2个微指令周期组成:

PC+1从内存取得指令第2个字节送入累加器A。

PC+1执行取指微指令,从内存读出指令字节送指令寄存器 例七:双字节指令 MOV Ri, #data

该指令功能为data→Ai,需执行如下微操作: ?PC??1?PCCK???PC ;PC加1,为取本指令下一字节准备

RMS,SA,SA?RAM????ODB?BU???IDB?RR????Ri ;取出本指令第二字节(即data)送Ri

36