- 请结合冯诺依曼思想,对本次实践所使用的模型机进行描述,并对比《单周期MIPS (硬布线)》中使用的模型机的相同和不同之处。
问题一:结合冯诺依曼思想,对本次实践所用的模型机进行描述
冯诺依曼思想:计算机处理的数据和指令一律用二进制数表示,顺序执行程序,计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分构成。
在本次实验所使用的模型机中,除了最开始输入存储器的指令为16进制之外,在该模型机内部接收或者传输的指令都为2进制。
在该模型机中,需要把要执行的指令和处理的数据首先存入存储器中,程序执行时,将自动地并按顺序从存储器中取出指令一条一条地执行。
本模型机的运算器为:
运算器由算数逻辑单元ALU、状态寄存器、通用寄存器等组成
算数逻辑单元ALU如图1-1,打开后如图1-2


状态寄存器如图1-3

通用寄存器如图1-4

本模型机的控制器如图1-5,打开后如图1-6,分析如下:1.控制器的输入信号为:指令字,Func字段,时钟信号,复位信号2.控制器的输出信号为:多路选择器选择信号,内存访问控制信号,寄存器写使能信号,运算器控制信号,指令译码信号


本模型机的存储器如图1-7

问题二:两模型机的相同之处与不同之处
相同之处:两模型机都符合冯诺依曼思想:对于单周期来说也包含存储器,运算器,控制器。且整个数据和指令在内部也以二进制的方式传输。符合顺序执行,需要把要执行的指令和处理的数据首先存入存储器中,程序执行时,将自动地并按顺序从存储器中取出指令一条一条地执行。
不同之处:
- 定义不同:单时钟周期硬布线是一个时钟周期执行一条指令,多时钟周期硬布线是一条指令多个时钟周期。
2.在单周期中含有数据存储器和指令存储器,指令和数据分开存放。但在多周期硬布线中存储器未分开使用,由IorD来控制是数据还是指令。IorD为0,则选择上面的指令,IorD为1则选择下面的数据。如图2-1

3.在单周期硬布线中没有PCWrite,即不能对PC进行写操作,但在多周期硬布线中含有PCwrite,在多周期硬布线中要进行跳转去更改PC的值,一条指令占用不止一个时钟周期,有多个时钟周期,要执行PC+4->PC操作。如图2-2、2-3


4.在单周期硬布线中只含有一个AluSrcB,但在多周期硬布线中同时含有AluSrcB和AluSrcA。如图2-4

5.单周期硬布线无微程序控制器,为组合逻辑控制器,而多周期硬布线具有多周期微程序控制器,打开控制存储器如图2-5:

以013201和030010为例分析:
013201H=0000 0001 0011 0010 0000 0001
第3~0位:0001表示下一微地址指令地址为1
第4位:0,判断逻辑,将下址字段送入Uar。如图2-6

第6~5位: 00 ALU_Control为00,则ALU_OP=5。如图2-7

第14~7位:011 0010 0,则MemRead=1,PcWrite=1,IRWrite=1。如图2-8

第16~15位:01,ALUSrcB=01,则将00000004传入ALUB端,即进行PC+4,如图2-9、2-10


第19~17:000
030010H=0000 0011 0000 0000 0010 0000
第3~0位:0000表示下一微地址指令地址为0,但是第四位为1,所以没有选中
第4位:1,判断逻辑,将微程序入口送入Uar。如图2-11

第6~5位:00 ALU_Control=00,则ALU_OP=5。如图2-12

第14~7:都为0
第16~15:10,ALUSrcB=10,则将扩展过的32位立即数传入B端。如图2-13

第19~17:001,ALUSrcA=1,则将R1的值传入A端。如图2-14

2. 结合自己所学知识,请对所给的冒泡法排序程序进行分析。
冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。
以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
有n个数据,则需比较n-1轮。
冒泡排序的伪代码如图3-1:

C代码如图3-2:

此段代码分析如下:
.text
#################################################################################
#本程序实现0x80开始的8个字单元的降序排序,此程序可在mars mips仿真器中运行,字地址0x80
#运行时请将Mars Setting中的Memory Configuration设置为Compact,data at address 0
#
#################################################################################
.text
sort_init:
addi $s0,$0,-1 给$s0赋值为-1,将-1+$0的值传到$s0号寄存器中
addi $s1,$0,0 $S1就是相当于C语言的int i,即给i赋初值为0
sw $s0,128($s1) 写入到实际地址$s1 0x80单元 128*4/4=128=0x80
addi $s0,$s0,1 给$s0赋值为0,将1+$s0=1+(-1)=0的值传到$s0号寄存器中
addi $s1,$s1,4 将$s1+4的值传入到$s1号寄存器中,即c代码中的i=i+1
sw $s0,128($s1) 写入实际地址 (128*4+4)/4=129=0x81单元
addi $s0,$s0,1 给$s0赋值为1,将1+$s0=1+0=1的值传到$s0号寄存器中
addi $s1,$s1,

本文深入解析了基于冯诺依曼思想的模型机架构,并与单周期MIPS模型机进行了对比。此外,还详细分析了冒泡排序和选择排序两种算法在MIPS汇编语言中的实现。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



