CPU计算机组成原理实验报告 - 图文

更新时间:2023-10-09 06:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机组成与系统结构实验报告

CPU设计与实现

院(系):

专业班级:组 员:

指导教师:

计算机科学与技术

实验目的:

设计实现CPU部件。

实验仪器:

PC机(安装Altebra 公司的开发软件 QuartusII,Modelsim)两台

TEC-CA计算机组成原理试验箱

实验过程:

一、理论设计 1.1、设计指令集

设计CPU第一步,就是根据需求,确定功能,并且设计出指令集。指令集包括每一条指令的编码方式,操作码以及每一条指令实现的功能。考虑到第一次设计CPU,在指令集设计过程中难免会出现考虑不周全或者指令集设计不科学的问题,我们借鉴了经典的31条MIPS指令集。在对指令集每一条指令进行解读、分析后,我们确定:31条MIPS指令可以满足我们的CPU的基本功能。下面将31条MIPS指令的编码格式、对应的操作类型以表格的形式列举出来:

MIPS 指令集(共31条) 助记符 Bit 31..25..# 26 21 R-tyop rs pe 0000add rs 00 add0000rs u 00 sub 0000rs 00 指令格式 示例 示例含义 操作及其解释 sub0000rs u 00 and 0000rs 00 0000or rs 00 0000rs 00 xor 20..15..10.. 5..0 16 11 6 sha rt rd func mt rd <- rs + rt ;其中0001000 add rt rd $1=$2+$3 rs=$2,rt=$3, rd=$1 00 00 $1,$2,$3 rd <- rs + rt ;其中0001000 addu rt=$3, rd=$1,rt rd $1=$2+$3 rs=$2,00 01 $1,$2,$3 无符号数 rd <- rs - rt ;其中0001000 sub rt rd $1=$2-$3 rs=$2,rt=$3, rd=$1 00 10 $1,$2,$3 rd <- rs - rt ;其中0001000 subu rt=$3, rd=$1,rt rd $1=$2-$3 rs=$2,00 11 $1,$2,$3 无符号数 0001001 and $1=$2 & $ rd <- rs & rt ;其中rt rd rs=$2,rt=$3, rd=$1 00 00 $1,$2,$3 3 0001001 or $1=$2 | $ rd <- rs | rt ;其中rt rd rs=$2,rt=$3, rd=$1 00 01 $1,$2,$3 3 rd <- rs xor rt ;其0001001 xor $1=$2 ^ $中rs=$2,rt=$3, rt rd 00 10 $1,$2,$3 3 rd=$1(异或)

0000nor rs 00 0000rs 00 rt slt rt sltu 0000rs 00 rt sll 0000000rt 00 00 srl 0000000rt 00 00 0000000rt 00 00 0000rs 00 0000rs 00 sra sllv rt srlv rt 0000srav rs 00 rt jr 0000000rs 00 00 rt rt rd <- not(rs | rt) ;0001001 nor $1=~($2 |其中rs=$2,rt=$3, rd 00 11 $1,$2,$3 $3) rd=$1(或非) if (rs < rt) if($2<$3) rd=1 else rd=0 ;其0001010 slt rd $1=1 else 中rs=$2,rt=$3, 00 10 $1,$2,$3 $1=0 rd=$1 if (rs < rt) if($2<$3) rd=1 else rd=0 ;其0001010 sltu rd $1=1 else 中rs=$2,rt=$3, 00 11 $1,$2,$3 $1=0 rd=$1 (无符号数) rd <- rt << shamt ;shamt存放移位的位sha0000 sll $1=$2<<数, rd 也就是指令中的立mt 00 $1,$2,10 10 即数,其中rt=$2, rd=$1 rd <- rt >> shamt ;sha0000 srl $1=$2>>(logical) ,其中rt=$2, rd mt 10 $1,$2,10 10 rd=$1 rd <- rt >> shamt ;sha0000 sra $1=$2>>(arithmetic) 注意符号rd 位保留 mt 11 $1,$2,10 10 其中rt=$2, rd=$1 rd <- rt << rs ;其0000001 sllv $1=$2<<中rs=$3,rt=$2, rd 00 00 $1,$2,$3 $3 rd=$1 rd <- rt >> rs ;0000001 srlv $1=$2>>(logical)其中rs=$3,rd 00 10 $1,$2,$3 $3 rt=$2, rd=$1 rd <- rt >> rs ;(arithmetic) 注意符号0000001 srav $1=$2>>位保留 rd 00 11 $1,$2,$3 $3 其中rs=$3,rt=$2, rd=$1 0000000010 jr $31 goto $31 PC <- rs 00 00 00 immediate I-tyop rs pe 0010addi rs 00 rt <- rs + addi $1,$ $1=$2+10immediate (sign-extend)immedi2,100 0 ate ;其中

addi0010rs u 01 rt immediate 0011andi rs 00 rt immediate ori 0011rs 01 rt immediate xori 0011rs 10 rt immediate lui 0011000rt 11 00 immediate lw 1000rs 11 1010rs 11 rt immediate sw rt immediate beq 0001rs 00 rt immediate bne 0001rs 01 rt immediate slti 0010rs 10 rt immediate rt=$1,rs=$2 rt <- rs + addiu $1,$ $1=$2+10(zero-extend)immediate ;其中2,100 0 rt=$1,rs=$2 rt <- rs & andi $1,$ $1=$2 & (zero-extend)immediate ;其中2,10 10 rt=$1,rs=$2 rt <- rs | andi $1,$ $1=$2 | (zero-extend)immediate ;其中2,10 10 rt=$1,rs=$2 rt <- rs xor andi $1,$ $1=$2 ^ (zero-extend)immediate ;其中2,10 10 rt=$1,rs=$2 rt <- immediate*65536 ; $1=100*6将16位立即数放到目 lui $1,100 标寄存器高16 5536 位,目标寄存器的 低16位填0 $1=memo rt <- memory[rs + lw $1,10(ry[$2 (sign-extend)immedi$2) ate] ;rt=$1,rs=$2 +10] memory[rs + memory[$ sw $1,10((sign-extend)immedi2+10] ate] <- rt ;$2) =$1 rt=$1,rs=$2 if($1==$2 if (rs == rt) PC <- beq $1,$2) PC+4 + ,10 goto PC+4(sign-extend)immedi+40 ate<<2 if (rs != rt) PC <- if($1!=$2) bne $1,$2PC+4 + goto PC+4,10 (sign-extend)immedi+40 ate<<2 if (rs if($2<10) <(sign-extend)imme slti $1=1 else diate) $1,$2,10 rt=1 else rt=0 ; $1=0 其中rs=$2,rt=$1

本文来源:https://www.bwwdw.com/article/7ucf.html

Top