计算机系统结构实验一MIPS指令系统和MIPS体系结构
MIPS指令系统和MIPS体系结构

WB:_____ADDI $r6 $r0 8___________________________
画出这时的时钟周期图。
(6)这时各流水寄存器中的内容为:
IF/ID.IR:___0X10200004____________________________
(3)进一步加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能
实验
内容
(1)启动MIPSsim。
(2)根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到各流水寄存器的内容)
(3)选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。
1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹中)。
2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件。
结构冲突的指令为连续的ADD结构冲突的部件为Fadd浮点加法器
3)记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总执行周期数的百分比。
4)把浮点加法器的个数改为4个。
实验步骤
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s(在模拟器所在文件夹下的“样例程序”文件夹中)。
2)关闭定向功能。这是通过“配置”—>“定向”(使该项前面没有√号)来实现的。
3)用单步执行一个周期的方式(在“执行”菜单中)或按F7键执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代码”窗口)以及时钟周期图。
5)再次重复步骤①~③的工作。
计算机体系结构:MIPS指令集 北大计算机系

Registers hold 32 bits of data
°232 bytes with byte addresses from 0 to 232-1 °230 words with byte addresses 0, 4, 8, ... 232-4 °Words are aligned i.e., what are the least 2 significant bits of a word address?
北京大学计算机科学技术系
北京大学微处理器研究开发中心
Our First Example
°Can we figure out the code?
swap(int v[], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; }
Assume:
bne $t0, $t1, Label beq $t0, $t1, Label °Example: if (i==j) h = i + j;
bne $s0, $s1, Label add $s3, $s0, $s1 Label: ....
$s1 = $s2 + $s3 $s1 = $s2 - $s3 $s1 = Memory[$s2+100] Memory[$s2+100] = $s1
北京大学计算机科学技术系
北京大学微处理器研究开发中心
Machine Language
°Instructions, like registers and words of data, are also 32 bits long • Example: add $t0, $s1, $s2 • registers have numbers, $t0=9, $s1=17, $s2=18 °Instruction Format:
计算机组成原理 MIPS

k
c j
字对齐方式下的存储器访问
速度较高 接口较简单
CPU
寄存器 Byte3
Byte2
Byte1
Byte0
2020/11/20
Byte3 Byte2 Byte1 Byte0 存储器
字不对齐方式下的存储器访问
节省空间 访存速度慢 接口复杂
CPU
寄存器 Byte3 Byte2 Byte1 Byte0
操作码 地址码 1 地址码 2 地址码 3
例1 设某台计算机有100条指令, (1) 采用固定长度操作码编码,试设计其操作码的编码。 (2) 假如这100条指令中有10条指令的使用概率达到90%,其余 90条指令的使用概率为10%。试采用不等长编码设计操作码。
解:
(1) 采用固定长度操作码编码时,需要7位操作码。 取其中的100个代码作为指令操作码,可以用 0000000到1100011之间的代码代表100条指令,即
2020/11/20
访存次数问题
– Char c; – Short int i,j; – int k;
int i Int k
Char c Short j Int k
字对齐方式下的数据存储
2020/11/20
空间浪费问题
– Char c; – Short int i,j; – int k;
零地址指令
操作码
地址码
1111 1100 0000 0000~1111 1100 0000
指令的格式
R1
ADD load
2020/11/20
三、指令长度
固定长度
– 取指快、译码简单。 – 单字长、双字长、多字长
可变长度
– 可提高编码效率 四、指令助记符
实验三:处理器结构实验一

深圳大学实验报告课程名称:计算机系统(3)实验项目名称:处理器结构实验一学院:********专业:******************指导教师:******报告人:****** 学号:*********** 班级:** 实验时间:2017年11月19日星期日实验报告提交时间:2017年11月30日星期四教务处制一、实验目标1.了解MIPS的五级流水线,和在运行过程中的所产生的各种不同的流水线冒险2.通过指令顺序调整,或旁路与预测技术来提高流水线效率3.更加了解流水线细节和其指令的改善方法4.更加熟悉MIPS指令的使用二、实验内容1.观察一段代码并运行,观察其中的流水线冒险,并记录统计统计信息。
2.对所给的代码进行指令序列的调整,以期避免数据相关,并记录统计信息。
3.启动forward功能,以获得性能提升,并且记录统计信息。
(选做:用perf记录x86中的数据相关于指令序列调整后的时间统计、调整指令,以避免连续乘法间的阻塞。
)三、实验环境1.硬件:桌面PC2.软件:Windows,WinMIPS64仿真器四、实验步骤及说明首先,我们给出一段C代码,该段代码实现的是两个矩阵相加。
设有4*4矩阵A和4*4矩阵B相加,得到4*4矩阵C:for(int i = 0; i < 4; i++)For(int j = 0; j < 4; j++)C[i][j] = A[i][j] + B[i][j];根据上述的C代码,我们将其转换成MIPS语言,然后运行,并进行分析。
MIPS代码如下:.dataa: .word 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4b: .word 4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1c: .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0len: .word 4control: .word32 0x10000data: .word32 0x10008.textstart:daddi r17,r0,0daddi r21,r0,adaddi r22,r0,bdaddi r23,r0,cld r16,len(r0)loop1: slt r8,r17,r16beq r8,r0,exit1daddi r19,r0,0loop2: slt r8,r19,r16beq r8,r0,exit2dsll r8,r17,2dadd r8,r8,r19dsll r8,r8,3dadd r9,r8,r21dadd r10,r8,r22dadd r11,r8,r23ld r9,0(r9)ld r10,0(r10)dadd r12,r9,r10sd r12,0(r11)daddi r19,r19,1j loop2exit2:daddi r17,r17,1j loop1exit1: halt实验前请保证winMIPS64配置中“Enable Forwarding”没有选中。
MIPS体系结构介绍

MEM
--is the stage where the instruction can read/write memory variables in the data cache (D-cache). On average about three out of four instructions do nothing in this stage, but allocating the stage for each instruction ensures that you never get two instructions wanting the data cache at the same time.
Agenda
The MIPS Five-stage Pipeline MIPS Architecture MIPS Processor Control Exceptions Interrupts Starting up
MIPS Architecture
General-Purpose Registers Basic Address Space
kseg0: These addresses are translated into physical
addresses by merely stripping off the top bit and mapping them contiguously into the low 512MB of physical memory. Addresses in this region are almost always accessed through the cache, so they may not be used until the caches are properly initialized. They will be used for most programs and data in systems not using the MMU and will be used for the OS kernel for systems that do use the MMU.
02-1MIPS指令与汇编

一、 MIPS简介
基于龙芯2E处理器的千元的PC、1999元的笔记本电脑、 意法半导体3000万元购买龙芯2E 5年的生产和销售权, 国产操作系统内核在龙芯2E上测试成功。 龙芯2E微处理器是一款实现64位MIPSⅢ指令集的通用 RISC处理器,与X86指令架构互不兼容;芯片面积 6.8mm×5.2mm;最高工作频率为1GHz;实测功耗5-7瓦。 龙芯2E在1GHz主频下SPEC CPU2000的实测分值达到 500分,综合性能达到了高端Pentium Ⅲ以及中低端 Pentium 4处理器的水平。 龙芯2F
一、 MIPS简介
由于与X86指令的不 兼容,龙芯2E无法运 行现有的Windows 32/64位操作系统, 和基于Windows的 众多应用软件。
龙芯2E笔记本电脑运行 OpenOffice打开Word文档
二、MIPS体系结构
指令集体系结构类型:寄存器——寄存器型
(1)寄存器的特点 (2)整数乘法单元和寄存器 (3)寻址方式 (4)存储器和寄存器中的数据类型 (5)流水线冒险
如果没有全局指针,存取一个静态数据区域 的值需要两条指令:
一条是获取有编译器和loader决定好的32位的地 址常量。 另外一条是对数据的真正存取。
为了使用$ gp, 编译器在编译时刻必须知道 一个数据是否在$ gp的64K范围之内。 并不是所有的编译和运行系统支持gp的使用。
MIPS 通用寄存器的使用
二、 MIPS体系结构——(1)寄存器
MIPS 包含32个通用寄存器 硬件没有强制性的指定寄存器 使用规则,但是在实际使用 中,这些寄存器的用法都遵循 一系列约定 寄存器约定用法引入了一系列 的寄存器约定名。在使用寄存 器的时候,要尽量用这些约定 名或助记符,而不直接引用寄 存器编号
实验一:MIPS指令集实验

深圳大学实验报告课程名称:计算机系统(3)实验项目名称:MIPS指令集实验学院:计算机与软件学院专业:计算机与软件学院所有专业指导教师:*****报告人:******* 学号:********** 班级:******* 实验时间:2017年10月16日星期一实验报告提交时间:2017年10月19日星期四教务处制一、实验目标:了解WinMIPS64的基本功能和作用;熟悉MIPS指令、初步建立指令流水执行的感性认识;掌握该工具的基本命令和操作,为流水线实验作准备。
二、实验内容按照下面的实验步骤及说明,完成相关操作记录实验过程的截图:1)下载WinMIPS64;运行样例代码并观察软件各个观察窗口的内容和作用,掌握软件的使用方法。
(80分)2)学会正确使用WinMIPS64的IO方法;(10分)3)编写完整的排序程序;(10分)三、实验环境硬件:桌面PC软件:Windows,WinMIPS64仿真器四、实验步骤及说明WinMIPS64是一款指令集模拟器,它是基于WinDLX设计的,如果你对于WinDLX这款软件十分熟悉的话,那么对于WinMIPS64也会十分的容易上手。
DLX 处理器(发音为"DeLuXe")是Hennessy 和Patterson合著一书《Computer Architecture - A Quantitative Approach》中流水线处理器的例子。
WinDLX是一个基于Windows的模拟器。
本教程通过一个实例介绍WinMIPS64的使用方法。
WinMIPS64模拟器能够演示MIPS64流水线是如何工作的。
本教程使用的例子非常简单,它并没有囊括WinMIPS64的各个方面,仅仅作为使用WinMIPS64的入门级介绍。
如果你想自己了解更多的资料,在给出的winmips64.zip中,有WinMIPS64 — Documentation Summary.html和winmipstut.docx两个文件可以供你随时参考,其中涵盖了WinMIPS64的指令集和模拟器的组成与使用方法。
第二章 MIPS体系结构

2.4 加载与存储:寻址方式
lw $1,offset($2) offset:有符号16位数字(-32768~32767),前后各32K 加载所需地址=offset+$2寄存器的值
2.5 存储器与寄存器的数据类型
(1)字节byte和halfword的加载方式
第二章 MIPS体系结构
2.1 MIPS汇编语言风格
#:注释 ;:一行中多条指令用分号隔开 ::单词后面跟着冒号指标号,代码中的入口点和命名 数据区的一个存储位置 三种指令格式(所有指令都是32位): R类型 I类型 J类型
(1)R型指令(从寄存器堆中取出两个操作数,
计算结果写回寄存器堆)
6bits
核心态:CPU可以存储地位地址,和用户态一样,地址 做同样的转换。
模拟32位 指令 时寄存器存放 的是32位值的 64位符号扩展。
2.9 流水线可见性
(1)分支延迟
分支延迟槽中指令即使跳转成功也会执行。MIPS II引入可能 分支branch-likely指令,延迟槽中指令仅在分支被接受的情况下 执行。
(4)kseg2:0xC000_0000~0xFFFF_FFFFf(1G)
核心态下使用,需MMU转换。
若需要512M之上的物理地址空间,可以设置存储器 管理单元TLB(第六章) 或使用64位CPU的额外空间。 用户态:用户地址经MMU转换成物理地址,2G以上程 序地址是非法的,某些指令(如CPU控制指令)是非法 的
(3)kseg1:0xA000_0000~0xBFFF_FFFF(512M)
最高三位清零映射到低端512M的物理地址,unmapped, uncached。唯一一个系统重启能正常工作的地址空间,复位入 口地址0xBFC0_0000,相应物理地址0x1FC0_0000。存储初始的 程序ROM或用作I/O寄存器。
MIPS体系结构概述

MIPS体系结构概述MIPS CPU 体系结构概述原作者:陈怀临整理:flyduke序言本文介绍MIPS体系结构,着重于其寄存器约定,MMU及存储管理,异常和中断处理等等。
通过本文,希望能提供一个基本的轮廓概念给对MIPS CPU及之上OS有兴趣的读者。
并能开始阅读更详细的归约(SPECIFICATION)资料。
MIPS是最早的,最成功的RISC(Reduced Instruction Set Computer)处理器之一,起源于Stanford Univ的电机系. 其创始人John L. Hennessy在1984年在硅谷创立了MIPS INC. 公司(/doc/a7f56d254b35eefdc8d33320.html )。
John L. Hennessy目前是Stanford Univ. 的校长。
在此之前,他是Stanford电子工程学院的Dean。
CS专业的学生都知道两本著名的书:“Computer Organization and Design : The Hardware/Software Interface”和“Computer Architecture : A Quantitative Approach”。
其Co-author就是Hennessy.MIPS的名字为“Microcomputer without interlocked pipeline stages"的缩写。
另外一个通常的非正式的说法是”Millions of instructions per second".MIPS 芯片在工业界目前用的比较多的是:MIPS INC的R10000;QED(/doc/a7f56d254b35eefdc8d33320.ht ml 。
1996年从MIPS INC分(SPIN OFF)出来的)的R5000、R7000等。
指令集详细的资料请参阅MIPS定义。
一般而言,MIPS指令系统有:MIPS I;MIPS II;MIPS III 和MIPS IV。
MIPS微处理器原理-MIPS汇编语言

操作数:寄存器、存储器、常数
因常数的值可以立即访问,故又称为立即数(immediate)。
加立即数指令 ( addi ):
# $s0=a, $s1=b
addi $s0, $s1, 4 # a=b+4 addi $s1, $s0,-2 # b=a-2
没有NOT,可用下面代替 A NOR $0 = NOT A
Source Values $s1 0000 0000 0000 0000 0000 0000 1111 1111
andi rt、rs、imm
Assembly Code
imm 0000 0000 0000 0000 1111 1010 0011 0100
用途 常数0 汇编器临时变量 函数返回值 函数参数 临时变量 保存变量
名称 $t8 ~ $t9 $k0 ~$k1 $gp $sp $fp $ra
编号 24~25 26~27 28 29 30 31
用途
临时变量
操作系统临时变量
全局指针
栈指针
帧指针
保存变量
8
MIPS Register Set
Name $0 $at $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $k0-$k1 $gp $sp $fp $ra
4个准则: ① 简单设计有助于规整化; ② 加快常见功能; ③ 越小的设计越快; ④ 好的设计需要好的折中方法。
4
R I S C 指令集的特点
Reduced Instruction Set Computer Complex Instruction Set Computer
• 精简了指令系统,流水线以及常用指令均可用硬件执行;
MIPS单周期CPU实验报告

MIPS单周期CPU实验报告一、实验目标本次实验的主要目标是设计并实现一个基于MIPS单周期CPU的计算机系统。
具体要求如下:1.能够识别并执行MIPS指令集中的常见指令,包括算术逻辑运算、分支跳转和存取指令等。
2.实现基本的流水线结构,包括指令译码阶段、执行阶段、访存阶段和写回阶段。
3.能够在基本结构的基础上添加异常处理和浮点数运算支持。
二、实验环境三、实验过程1.确定CPU的基本组成部分,包括指令存储器、数据存储器、寄存器、ALU和控制单元等,并进行电路设计。
2.编写MIPS汇编程序,并使用MARS进行仿真调试,验证指令的正确性和计算结果的准确性。
3.将MIPS汇编程序烧录到指令存储器中,并将数据存储器中的初始数据加载进去。
4.运行程序,观察CPU的工作状态,并进行时序仿真,验证CPU设计的正确性。
5.对CPU进行性能测试,包括执行时间、指令吞吐量和时钟周期等指标的测量。
四、实验结果经过实验和测试,我们成功地设计并实现了一个基于MIPS单周期CPU的计算机系统。
该系统能够正确执行MIPS指令集中的常见指令,并支持流水线结构、异常处理和浮点数运算。
1.指令执行的正确性:通过在MARS中进行调试和仿真,我们发现CPU能够正确地执行各种指令,包括算术逻辑运算、分支跳转和存取指令等。
并且,在时序仿真中,CPU的各个组件的信号波形也符合预期。
2.流水线结构的实现:我们根据MIPS指令的特点和处理流程,设计了基本的流水线结构,并在MARS中进行了时序仿真。
仿真结果表明,各个流水线级的操作都能够正确无误地进行,并且能够顺利地在一个时钟周期内完成。
3.异常处理和浮点数运算的支持:通过在MIPS汇编程序中加入异常处理和浮点数运算的指令,我们验证了CPU对这些功能的支持。
在异常处理时,CPU能够正确地转入异常处理程序,并根据异常类型进行相应的处理。
在浮点数运算时,CPU能够正确地进行浮点数的加减乘除等运算,并将结果正确地写回寄存器。
大连理工大学计算机系统结构实验-实验一

大连理工大学实验报告计算机系统结构实验实验一MIPS指令系统和MIPS体系结构学院(系):电子信息与电气工程学部专业:计算机科学与技术学生姓名:班级:学号:大连理工大学Dalian University of Technology实验一MIPS指令系统和MIPS体系结构一、实验目的和要求1. 了解熟悉MIPSsim模拟器。
2. 熟悉MIPS指令系统及其特点。
3. 熟悉MIPS体系结构。
二、实验步骤1、启动MIPSsim。
2、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。
3、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。
4、选择“文件”->“载入程序”选项,加载样例程序alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。
5、查看“寄存器”窗口PC寄存器的值:[PC]= 0x00000000 。
6、执行load和store指令,步骤如下:(1)单步执行一条指令(F7)。
(2)下一条指令地址为= 0x00000004 ,是一条有(有,无)符号载入字节(字节,半字,字)指令。
(3)单步执行一条指令(F7)。
(4)查看R1的值,[R1]=0X FFFFFFFFFFFFFF80 。
(5)下一条指令地址为=0X00000008 ,是一条有(有,无)符号载入字(字节,半字,字)指令。
(6)单步执行1条指令。
(7)查看R1的值,[R1]=0X0000000000000080 。
(8)下一条指令地址为=0X0000000C ,是一条无(有,无)符号载入字(字节,半字,字)指令。
(9)单步执行1条指令。
(10)查看R1的值,[R1]= 0X0000000000000080 。
(11)单步执行1条指令。
(12)下一条指令地址为0X00000014 ,是一条保存字(字节,半字,字)指令。
(13)单步执行一条指令。
(14)查看内存BUFFER处字的值,值为0x00000080 。
MIPS指令集及汇编

和R12000(1997年)等型号。 z 随后,MIPS公司把重点放在嵌入式系统。
{ 1999年发布MIPS32和MIPS64架构标准,集成了所有原 来MIPS指令集,并且增加了许多更强大的功能。陆续开发 了高性能、低功耗的32位处理器内核(core)MIPS324Kc 与高性能64位处理器内核MIPS64 5Kc。
{ 应用广泛的32位MIPS CPU包括R2000,R3000 其ISA都是MIPS I,另一个广泛使用的、含有许多 重要改进的64位MIPS CPU R4000及其后续产 品,其ISA版本为MIPS III
一、 MIPS简介
{ 1984年,MIPS计算机公司成立。1992年,SGI收购了 MIPS计算机公司。1998年,MIPS脱离SGI,成为MIPS 技术公司。
龙芯2E笔记本电脑运行 OpenOffice打开Word文档
ቤተ መጻሕፍቲ ባይዱ
二、MIPS体系结构
{ 指令集体系结构类型:寄存器——寄存器型
(1)寄存器的特点 (2)整数乘法单元和寄存器 (3)寻址方式 (4)存储器和寄存器中的数据类型 (5)流水线冒险
二、 MIPS体系结构——(1)寄存器
{ MIPS 包含32个通用寄存器
{ 2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及 64位MIPS 64 20Kc处理器内核。
一、 MIPS简介
{ 基于龙芯2E处理器的千元的PC、1999元的笔记本电脑、 意法半导体3000万元购买龙芯2E 5年的生产和销售权, 国产操作系统内核在龙芯2E上测试成功。
计算机系统结构实验一MIPS指令系统和MIPS体系结构

计算机系统结构实验报告
班级
计算机2班
实验日期
2016.2.24
实验成绩
姓名
殷凤
学号
22920132203917
MUL $r1,$r1,$r2
BGTZ $r2,LABLE1#减到0就运行结束
NOP
LABLE2:
NOP
TEQ $r0, $r0
# test2 - yf求(X-Y)*2-(X+Y)/8
.text
main:
ADDIU $r1, $r0, 7#x的值
ADDIU $r2, $r0, 1#y的值
SUB $r3,$r1,$r2#r3中是x-y的值
LW $r2,0($r1)#取高32位
SUB $r1,$r1,$r6#变更地址
LW $r3,0($r1)#取低32位
AND$r8,$r2,$r9#判断正负
BEQ$r8,$r0,LABLE2#正数直接存回原位置
ADDI $r5,$r0,-1#“-1”的用处
XOR $r2,$r2,$r5#按位取反
XOR $r3,$r3,$r5
问题:
解决方法:改成LABLE1
问题:如果是正数的话结果总是错误的
解决方法:刚开始忘记判断正负了,如果是正数就直接存回存储器原来的位置,判断正负通过高32位(存在r2中)和十六进制数0x00…0080000000(寄存器r9)进行ANБайду номын сангаас,如果结果等于0(与$r0比较),就为正数,否则就是负数。
计算机系统结构实验报告-MIPS 指令系统和MIPS 体系结构

计算机系统结构实验报告实验名称:MIPS 指令系统和MIPS 体系结构专业年级:0xxxxxxx姓名:xxxxxx计算机系统结构实验报告班级xxxxxxxxxxx 实验日期xxxxxxxxxx 实验成绩姓名xxxxxxxx 学号230xxxxxxxxxx4实验名称Cache性能分析实验目的、要求及器材实验目的:1、加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。
2、掌握Cache容量、相联度、块大小对Cache性能的影响3、掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
4、理解LRU与随机法的基本思想以及它们对Cache性能的影响实验平台:采用Cache模拟器MyCache。
实验内容、步骤及结果首先要掌握 MaCache模拟器的使用方法。
1、Cache容量对不命中率的影响选择地址流文件,选择不同的Cache容量,执行模拟器,记录各种情况的不命中率。
表:地址流文件名: eg.din结论:Cache容量越大,不命中率越低.但增加到一定程度时命中率不变。
2、相联度对不命中率的影响表:64KB相联度 1 2 4 8 16 32 不命中率(%)0.89 0.53 0.47 0.45 0.44 0.44地址流文件: all.din图:64KB表:256KB相联度 1 2 4 8 16 32 不命中率(%)0.49 0.38 0.36 0.36 0.35 0.35地址流文件: all.din图:256KB结论:相联路数越多,则不命中率越低,同时,有个极限值,且该极限值随Cache容量大小的增加而减小。
3 Cache块大小对不命中率的影响块大小Cache容量2 8 32 128 51216 18.61 10.12 3.81 1.95 1.4232 14.22 7.59 2.84 1.26 0.8764 12.62 6.47 2.36 0.92 0.60128 12.98 6.35 2.31 0.76 0.47256 16.04 7.29 2.15 0.72 0.40地址流文件:ccl.din结论:不命中率随分块大小的增大先减小后增大,即存在一个最优的分块大小,且该最优分块随Cache容量的增大而增大。
MISP体系结构

MIPS简介
MIPS是一种采用RISC设计的处理器芯片,MIPS的意思 是“无内部互锁流水级的微处理器”(Microprocessor Without Interlocked Piped Stages)。 RISC(Reduced Instruction Set Computer,精简指令集 ( ,精简指令集 计算机)是一种执行较少类型计算机指令的微处理器, RISC相对于CISC(Complex Instruction Set Computer, 复杂指令系统计算机)指令类型较少,所以能够以更快的 速度执行操作。 衡量CPU速度的指标:MIPS(Million Instructions Per Second,每秒百万条指令数)。
MIPS 的特权模式
MIPS可以运行在三种特权模式下:用户模式(user mode),核心模式(kernel mode)和管理模式 (supervisor mode),管理模式一般忽略。 用户态程序是无法访问核心地址空间的,否则会导致异常。
Contents
1. MIPS 简介 2. MIPS 体系结构 3. MIPS 处理器控制 4. MIPS Cache 机制 5. MIPS 异常,中断和启动 6. MIPS 内存管理 & TLB
执行后,t2的值为0xFFFF FFFE(-2),t3的值为 0x0000 00FE(254)。
MIPS 的寻址与数据格式
只能通过load/store指令访问内存,且必须对齐。字节可 以任意地址存储,半字必须在偶数地址对齐,字必须在四 字节边界对齐。CISC虽然能从任意字节地址存储数据, 但要用额外的时钟周期。 MIPS跳转指令有范围限制,因为MIPS最小指令码为6位, 留下26位定义跳转地址,指令在内存中为四字节边界对齐, 所以低两位地址无需保存,这样就有2^28=256MB的绝对 寻址空间。条件分支只有16位偏移域,及2^18B寻址空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机系统结构实验报告
班级计算机2班实验日期2016.2.24
实验成绩
姓
名
殷凤学号22920132203917实
验
名
称
MIPS指令系统和MIPS体系结构
实验目的要求
实验目的及要求:了解和熟悉指令级模拟器;熟练掌握MIPSsim模拟器的操作和使用方法;熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解;熟悉MIPS体系结构。
实验器材:实验平台采用指令级和流水线操作级模拟器MIPSsim;计算机一台。
实验内容、步骤及结果1. 阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言;
2. 对照实验教程启动、配置MIPSsim.exe,参照使用说明,载入程序,多种执行方式查看结果;
3. 补充实验的完成:
a.求阶乘
问题:
解决方法:在代码最后加一句指令TEQ r0,r0
思路:将自定义的整数存入一个整数寄存器r1,r2,“1”的值存入寄存器r3作为求阶乘时减一的用处,r2减一,与原值r1相乘结果存入r1,判断r2值是否已经减到0,是就运行结束,否则跳转继续r2减一与r1相乘,最后r1的内容就是最终结果。
结果截图:
b.ALU运算求(X-Y)*2-(X+Y)/8
问题:无
思路:题目要求不可以使用乘除指令,则利用逻辑左移(SLL)一位实现乘2,利用逻辑右移(SRL)3实现除以8。
r1 r2中存放自定义的x y,r3中存放x-y的值,r4存放x+y的值,最后结果放在r5中。
结果截图:
c.求补码
问题:
解决方法:把高32位和低32位之间base的差值4个字节事先存进寄存器r6
问题:
解决方法:改成LABLE1
问题:如果是正数的话结果总是错误的
解决方法:刚开始忘记判断正负了,如果是正数就直接存回存储器原来
的位置,判断正负通过高32位(存在r2中)和十六进制数
0x00…0080000000(寄存器r9)进行AND,如果结果等于0(与$r0比
较),就为正数,否则就是负数。
思路:r1中放取字指令LW的base值,根据内存中的数据来决定,存
储器中高32位数据取出来放进r2,低32位数据放进r3。
如果判断是
正数,则直接再存回去,如果是负数,按位取反再加一得到补码。
按位
取反通过r2 r3中的值都分别和-1(存进r5)进行异或,再加1,如果
r3中有进位,那么r2的值也要加1,然后存入存储器原位置,如果r3
中无进位就可以直接存入原位置,是否有进位通过r3与-1异或结果和
-1比较,如果等于-1(11…11),就会有进位,如果不等就没有进位。
结果截图:
(8c22000024060004)☞(73ddffffdbf9fffc)
(002608228c220000)☞(002608228c220000)
总
结
1.在使用指令时,一定要事先弄清楚指令的适用范围和参数的本质;
2.有符号数和无符号数要分辨清楚;
3.程序安全退出:TEQ $r0,$r0
4.标号必须全部大写。
(注:可编辑下载,若有不当之处,请指正,谢谢!)。