计算机组成原理实验十三
上海大学计算机学院
《计算机组成原理实验》报告十三
姓名: 学号:xxxxxxxx 教师:王雪娟
时间:周一5-6 地点:计算机大楼609 机位:33
实验十三 建立指令流水系统
一、实验目的
了解指令流水系统的设计方式。
编制一条可以流水方式运行的指令。
实验原理
在实验3的“实验过程举例”中我们用一条微指令完成了“A+W”后右移一位的值送OUT的操作,这个操作明显地可以分成三个子操作:A+W、把“和”右移一位、把值送OUT。这三个子操作为什么可以同时进行呢?因为这三个子操作使用的硬件(包括总线)互不相同,于是可以同时工作。这一特点表现在微指令编码上,就是这三个子操作的微指令码中为低电平(有效)的都不相同,于是可以将这三个子操作的微指令码合并成一个微指令,就是实验3 谈到的结果:
c23~c0=1111 1111 1101 11 11 1011 1000=ff df b8H
这个微指令控制三部分硬件并行工作。
把 “使用不同硬件的操作可以同时工作”的概念推广到相继的两条指令之间,就形成“指令的流水线执行模式”。
这个模式下,同一时间有多条指令各自在不同的硬件中执行,而对同一条指令而言,不同时间顺序在不同的硬件中执行,很像在流水型生产线上的产品,不同时刻顺序在不同的工位上加工。这就是指令流水模式的名称来源。
显然,要形成指令流水模式,每条指令都应该分成几个独立的子操作,当前趋指令的后几个子操作与后继指令的前几个子操作不使用同样的硬件时,系统就可设计成流水线方式。
现代计算机大都采用指令流水模式,但这个模式会使中断响应过程变得复杂,所以实时系统中多是有限地采用它。
实验箱系统的各种基本操作我们已经熟悉,其中的很多操作可以在不同的硬件中同时执行,典型的是“取指令”的微操作,其微指令码微CBFFFF,与大多数的微操作无关。在厂家给的默认指令系统中这个操作编在了每条指令的最后一个状态,即每条指令的操作完成后就取进下一条指令。这是典型的“取指、执行、取指……”模式。即一条指令先被“取指”,再执行其他微操作,完成后再取下一条指令。
如果一条指令的最后一个微操作与取指无关,就可以把二者合并成一个微指令,于是这个指令的最后一个微操作与取下一条指令并行进行。对下一条指令而言,其“取指”与“其他操作”在不同硬件中顺序执行——指令二级流水。
这个文件的主要作用是:解释汇编表的机器码细节,所以当编译源程序中的多字节指令时,可能要查此表。
三、实验内容
1. 分析流水指令集 insfile2.MIC。
改造实验十二中自己编制的指令集,使其中至少一条指令成流水方式。
在自己编制的两个指令集中运行同一个程序,观测运行情况和效率。程序来源自定。
三、实验过程
打开C:\Program Files\cp226计算机组成原理\data
新建三个文件 OLD.DATA OLD.MIC OLD.MAC; NEW.DATA NEW.MIC NEW.MAC
打开 文件\调入指令系统\微程序
OLD.DATA:
LD A,#* 04 2
A-W A,#* 08 2
跳到 * 0C 2
OUTA 10 1
延时 14 1
OLD.MIC
00 CBFFFF
01 FFFFFF
02 FFFFFF
03 FFFFFF
04 C7FFF7
05 CBFFFF
06 FFFFFF
07 FFFFFF
08 C7FFEF
09 FFFE91
0A CBFFFF
0B FFFFFF
0C C6FFFF
0D CBFFFF
0E FFFFFF
0F FFFFFF
10 FFDF9F
11 CBFFFF
12 FFFFFF