一些CPU设计实例

合集下载

六章CPU设计

六章CPU设计

下地址控制编码方式
一般情况下后继微指令旳地址有下列几种给出方式:顺序递增法:将µPC设置成可实现自动加1旳功能,每当完毕目前指令旳执行,就以µPC +1后旳值为地址在控制存储器中取下一条微指令。直接给出法:下一条微指令旳地址直接取自微指令中旳下地址字段。分支转移法:在包括分支转移旳微指令中常设置一种条件选择子区域,用于指出哪些鉴定条件被测试,与此同步转移地址被存储在下地址字段。当转移条件满足时,将下地址字段旳内容读入到µPC中,取下一条微指令,实现微程序转移。若转移条件不满足,微程序则顺序执行。微程序入口地址旳形成:每条机器指令所相应旳微程序旳入口地址(首地址),一般由指令旳操作码所决定。在机器加电后,第一条微指令旳地址一般是由专门旳逻辑电路生成,也能够采用由外部直接输入旳形式取得。
操作控制编码方式
在操作控制字段一般涉及一种或多种操作控制域,每个控制域可控制一种或一组控制信号旳生成,根据控制信号是直接生成于控制域还是译码生成控制信号旳不同可分为下列几种形式。直接控制法:操作控制字段旳每一位都与一种独立控制信号相相应。若目前微指令旳某一位ki=1,则与之相应ci控制信号有效,不然ci控制信号无效。分段编码控制法:在微程序级别,许多微操作是能够并行执行。一般采用将微指令旳操作控制字段提成k个相互独立旳控制域,每一种控制域存储一组微操作,每一种编码相应一种微操作,每一种微操作都能够与其他控制域所存储旳任意一种微操作并行执行,但在组内旳微操作之间是互斥旳,不允许在同一时间段内发生或有效。分段间接编码控制法:在微指令格式里,假如一种字段旳含义不只决定本字段编码,还兼由其他字段决定,则可采用分段间接编码控制法。此时一种字段兼有两层或两层以上旳含义。其他方式:在实际微指令中操作控制编码并不是只单独采用上述三种编码方式中旳一种,而是将上述三种混合使用,以确保能综合考虑指令旳字长、灵活性和执行微程序旳速度等方面旳要求。

CPU设计示例

CPU设计示例
10
2013.10
CPU的指令集(续)
操作码 OP 指令 IR (15 . .12) 格式
1101 4
指令的助记符
Read Addr
操作的内容
PC := PC+1 ; 取本指令的后半部 ; R 0 ( addr ) ; PC := PC+1 ; (为取下一条指令准备地址) PC := PC+1 ; 取本指令的后半部 ; Addr ( R 0 ) ; PC := PC+1 ; (为取下一条指令准备地址) 无操作, PC 保持不变 ;
1110
4
Write
Addr
1111
3
Stop
2013.10
11
把指令执行过程细分到节拍

细分的要求:



规定当前节拍(状态)下应执行的操作 规定下一个节拍(状态)是什么 这实际上是有限状态机的描述风格

细分结果不唯一:


设计者追求的目标 —— 性能/价格 设计者的风格
CPU框图(数据通路+控制器) 和存储器的时序配合关系
cs data
写数据: CPU提前把数据送到数据
线M_data_out; 令 Write_Read = 1 ,使 写入使能; 写入是时钟后沿起作用; 读数据: 令 Write_Read = 0 ,使 读出使能; MEM将数据输出到M-q, 再到M_data_in;;
Add Rx, Ry Sub Rx, Ry AND Rx, Ry OR Rx, Ry XOR Rx, Ry Shr Rx Shl Rx
2013.10
9
CPU的指令集(续)
操作码 OP 指令 IR (15 . .12) 格式

8位CPU的设计与实现

8位CPU的设计与实现

计算机组成原理实验题目8位CPU得系统设计学号1115106046姓名魏忠淋班级 11电子B 班指导老师凌朝东华侨大学电子工程系8位CPU得系统设计一、实验要求与任务完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。

具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。

1。

1设计指标能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;1、2设计要求画出电路原理图、仿真波形图;二、CPU得组成结构三、元器件得选择1.运算部件(ALU)ALU181得程序代码:LIBRARY IEEE;USEIEEE、STD_LOGIC_1164。

ALL;USEIEEE、STD_LOGIC_UNSIGNED.ALL;ENTITY ALU181 ISPORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO0 );A:IN STD_LOGIC_VECTOR(7 DOWNTO0);B: INSTD_LOGIC_VECTOR(7DOWNTO 0);F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ﻩCOUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0);M :INSTD_LOGIC;CN : IN STD_LOGIC;CO,FZ:OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF ALU181 ISSIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0);SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0);SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0);BEGINA9<= '0'& A; B9 <= ’0’&B;PROCESS(M,CN,A9,B9)BEGINCASE S ISWHEN "0000" =〉IF M='0’THEN F9<=A9 + CN ; ELSE F9<=NOT A9; E NDIF;WHEN "0001" =>IF M='0’THEN F9<=(A9 orB9)+ CN ;ELSE F9〈=NOT(A9OR B9);END IF;WHEN ”0010"=> IF M=’0’THEN F9〈=(A9 or(NOT B9))+C N; ELSE F9<=(NOT A9) ANDB9; ENDIF;WHEN "0011"=> IF M='0’THEN F9<= ”000000000"—CN ;ELSEF9<="000000000”;END IF;WHEN"0100”=> IFM='0'THENF9<=A9+(A9 ANDNOT B9)+ CN; ELSE F9〈=NOT(A9 ANDB9);END IF;WHEN ”0101”=>IFM='0' THENF9<=(A9orB9)+(A9 AND NOTB9)+CN ;ELSEF9<=NOT B9; END IF;WHEN"0110" =>IFM=’0’THEN F9〈=(A9- B9) -CN ;ELSE F9〈=A9XOR B9; ENDIF;WHEN”0111"=>IF M='0' THEN F9〈=(A9 or(NOT B9)) -CN ;ELSE F9<=A9 and (NOT B9); END IF;WHEN"1000" =>IFM='0'THEN F9<=A9+ (A9AND B9)+CN ; ELSE F9〈=(NOTA9)and B9; END IF;WHEN "1001”=> IF M=’0’THEN F9〈=A9+ B9 + CN ; ELSE F9<=NOT(A9 XOR B9); ENDIF;WHEN ”1010"=>IF M=’0'THEN F9〈=(A9or(NOTB9))+(A 9AND B9)+CN ; ELSEF9<=B9;END IF;WHEN "1011”=〉IF M='0'THENF9<=(A9 AND B9)- C N; ELSE F9<=A9 ANDB9; ENDIF;WHEN ”1100”=〉IF M='0'THENF9<=(A9 +A9) + CN; ELSEF9〈="000000001"; END IF;WHEN "1101”=〉IF M='0' THEN F9〈=(A9or B9)+ A9 + CN;ELSEF9〈=A9 OR (NOTB9); END IF;WHEN "1110"=>IF M='0'THENF9<=((A9 or (NOTB9)) +A9) + CN; ELSE F9〈=A9OR B9;END IF;WHEN”1111”=〉IFM=’0'THENF9<=A9 —CN ;ELSE F9<=A9 ; END IF;WHEN OTHERS=> F9<= ”000000000" ;ENDCASE;IF(A9=B9) THENFZ<=’0';END IF;ﻩEND PROCESS;F<=F9(7DOWNTO0) ;CO<= F9(8) ;COUT<="0000"WHEN F9(8)=’0'ELSE"0001";END behav;ALU得原理图:2、微控制器实现信息传送要靠微命令得控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求得数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。

4-简单cpu设计_106004227

4-简单cpu设计_106004227

第4章简单MIPS CPU设计4.1引言在本章中,我们为MIPS指令集的两种不同实现方式建立数据通路和控制单元。

我们将要设计的实现方式包含了MIPS指令集的一个核心子集:存储器访问指令:取字(1w)和存储字(sw)。

算术逻辑指令:加法(add),减法(sub),与运算(and),或运算(0r)和小于则设置(slt)。

分支指令:相等则转移(beq)和跳转(j)。

这个子集没有包括所有的整数指令(如缺乏乘除指令),也不包括任何浮点数指令。

但是,在建立数据通道和设计控制部分时用到的关键原理都会得以体现。

其余指令的实现也是类似的。

在学习此实现方式时,我们将有机会看到指令集如何影响实现方式的多个方面。

在本章及下一章中用于实现MIPS子集的大多数概念与很多计算机的基本构造思想是一致的。

4.1.1 实现方式概述在前一章节中,我们学习了MIPS的核心指令,包括整数算术逻辑指令、存储访指令及分支指令。

这些指令的实现过程大致相同,而与具体的指令类型无关。

实现每条指令的前两步是一样的:1)程序计数器(PC)指向指令所在的存储单元,并从中取出指令。

2)通过指令字段内容,选择读取一或两个寄存器。

对于取字指令,只需读取一个寄存器,而其他大多数指令要求读取两个。

这两步之后,为完成指令而进行的步骤则取决于具体的指令类型。

幸运的是,对三种指令类型(存储访问、算术逻辑、分支)的每一种而言,其动作大致相同,与具体操作码无关。

即使是不同类型的指令,也有一定的共性。

例如,所有类型的指令在读取寄存器后,都要使用算术逻辑单元(ALU)。

存储访问指令用ALU计算地址,算术逻辑指令用来执行运算,分支指令用ALU进行比较。

可以看出,指令的简洁和规整使许多指令的执行很相似,因而简化了实现过程。

使用ALU之后,不同类型指令需要进行不同的操作。

存储访问指令需要对存储单元进行读出或写入;算术逻辑指令需要将ALU产生的数据写回寄存器中;而分支指令会根据比较的结果,决定是否需要更改下条指令的地址。

清华大学 微机原理课件 CPU设计ALU

清华大学 微机原理课件 CPU设计ALU
12
ALU电路设计
(2)移位器
采用2:1多路选择器构造的8位右移位器
A7 A6 A5 A4 A3 A2 A1 A0 S2 S1 S0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0 R7
1
0 R6
1 R5
0
1 R4
0
1 R3
0
1 R2
0
1 R1
0
1 R0
0
MSB的输入如何? 32位移位器需要多少级?
CPU逻辑设计
—— ALU电路设计
1
MIPS对ALU的需求
Add, AddU, Sub, SubU, AddI, AddIU =>带溢出检测和反向器的补码加法器 SltI, SltIU(Set Less than) =>带反向器的补码加法器,检测结果的符号 And, Or, AndI, OrI =>逻辑或、逻辑与
B12 B11 B10 B9
B11 B10 B9 B8
B6 B5 B4 B3
B5 B4 B3 B2
B4
B3 B2
B1
B3
B2 B1
B0 S1 S0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2
1 0
3
2

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。

精简8位cpu设计报告

精简8位cpu设计报告

“00011011” WHEN ADDR “0010”“00101100” WHEN ADDR “0011”“11100000” WHEN ADDR “0100”“11110000” WHEN ADDR “0101” “00010000” WHEN ADDR “1001”AND CE ‘ 0'E LSE - -ADD BH AND CE ‘ 0' E LSE --SUB CH AND CE ‘ 0' ELSE --OUT AND CE ‘ 0' ELSE --HLT AND CE ‘ 0' ELSEAND CE ‘ 0' ELSE精简8位cpu 实验设计报告实验介绍:实验分为两个部分,第一部分为16*8 ROM 设计与仿真 第二部分为SAP-1设计与仿真 实验流程:①16*8 ROM 的设计与仿真部分程序代码:Rom16_8.VHDL LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM16_8 isPORT(DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --DataOutputADDR :IN STD_LOGIC_VECTOR(DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip En able );END ROM16_8;ARCHITECTURE a OF ROM 16_8 IS BEGINDATA<“00001001” WHEN ADDR “0000” AND CE ‘ O '“00011010” WHEN ADDR “0001” AND CE ‘0' ELSE --ADD AH--LDA 9H“00011000”WHEN ADDR=“1011”AND CE=‘0'ELSE“00100000”WHEN ADDR=“1100”AND CE=‘0'ELSE“00000000”;END a;程序说明:rom的使能CE只有为0时,才接受读数据的命令。

16位实验CPU设计实例介绍

16位实验CPU设计实例介绍

16位实验CPU设计实例开放式CPU指的是CPU在一片FPGA芯片中构成,它的指令系统和CPU内部结构可以由使用者根据需要设计,并且能够在TEC-CA上进行调试的CPU。

实验CPU是学生为掌握计算机的工作原理而设计的CPU,主要针对基本原理而不强调完备性。

这样的CPU可以复杂一些,也可以简单一些,视学生水平而定。

本章中介绍的实验CPU实例是针对第6章计算机组成原理实验而设计的,使用者可在此基础上根据自己的需要进行适当增减。

计算机组成原理实验除了进行计算机各部件的实验外,最重要的是使学生掌握计算机整机的工作原理。

我们力求通过这个实验CPU设计实例,使学生能够深入掌握计算机的整机工作原理。

2.1 指令系统设计CPU首先要设计指令系统。

由于实验CPU采用16位字长,指令系统只有15条指令,因此比8位CPU的指令系统设计容易得多。

2.1.1 指令系统ADD DR,SR指令编码:0000 DR SR 0000 0111功能:DR ← DR + SR, 影响C和Z标志。

PC ← PC + 1。

INC DR指令编码:0001 DR SR 0000 0111功能:DR ← DR + 1,影响C和Z标志。

PC ← PC + 1。

SUB DR,SR指令编码:0010 DR SR 0000 0111功能:DR ← DR – SR,影响C和Z标志。

PC ← PC + 1。

DEC DR指令编码:0011 DR SR 0000 0111功能:DR ← DR – 1,影响C和Z标志。

PC ← PC + 1。

AND DR,SR指令编码:0100 DR SR 0000 0011功能:DR ← DR and SR,影响Z标志。

PC ← PC + 1。

OR DR,SR指令编码:0101 DR SR 0000 0011功能:DR ← DR or SR,影响Z标志。

PC ← PC + 1。

NOT DR指令编码:0110 DR SR 0000 0011功能:DR ← not DR,影响Z标志。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cache的组织
Cachestate:4种状态,单处理器只使用两种 • • • • Invalid(00) Share(01) Clean Exclusive(10) Dirty Exclusive(11) ※ ※
32bit物理地址的划分
• Tag(20位):比较是否命中 • Index(7位):查找哪一个Cacheline • Offset(5位):定位Cacheline中哪一个字节
修改发射策略
• 访存等待
– 一旦遇到访存指令,必须等访存指令结果返回 后,下一条指令才能发射出去
• 优点:顺序发射,顺序结束,例外处理比 较简单方便 • 缺点:指令间没有相关也必须等待!
乱序执行时的精确例外处理
• 两种方式:
– 乱序发射,顺序结束(龙芯-1采用的方式)
• 指令执行完后,等待,直到允许写回才能写入到寄 存器中
• 三种地址错情况(取指、访存读、访存写) • 取指
– 例外作为取指的结果送回,并当作一条特殊指令 对待,直到送入控制寄存器模块,发生例外 – 取指模块判断地址错后,停止取指
• 访存读、写
– 在ALU模块中直接判断是否发生访存地址错例外, 如果发生,直接进入控制寄存器模块,而不进入 Cache模块 – 同时清除在发射模块中标志访存操作的标志位
MIPS指令格式介绍
1、R类型指令(寄存器) OP rs rt rd shamt funct 2、I类型指令(立即数) OP rs rt Imm 3、J类型指令(跳转) OP target
所支持的指令
• 算术逻辑类指令
– ADD、ADDI、SUB、AND、OR、NOR、SLL、 SRL、SRA
• 访存类指令
PC的来源
停止取指的情况
• 发射堵塞(Issue_stall)
– 出现指令有相关情况
• 特殊指令(Special Instruction)
– 有些情况需要停止取指,如Cache0、跳转指令 (无转移预测)、出现取指地址错例外等等
• 如何处理
– 设置PC的有效位,一旦停止取指,有效位置无效
跳转指令的延迟槽(Delay Slot)
– 顺序发射,乱序结束(本实例采用的方式)
• 分析乱序结束出现的情况
–一条访存指令运行结束前,之后数条ALU指令 已经执行完毕
解决方式
• ALU指令出现例外
–停止取指,停止发射,停止写回,直到访存结 果返回之后,进入例外处理程序
• 访存指令出现例外
–例外种类,地址错例外 –处理方式,判断地址错例外的时机,一拍完成
MIPSI指令集32位CPU 设计实例
赵继业
处理器特性介绍
• 全32位操作,32个32位通用寄存器,所有 指令和地址全为32位 • 静态流水线(3~5级) • Forwarding技术 • 片内L1 Cache,指令、数据各4KByte,硬 件初始化 • 没有TLB,但系统控制协处理器(CP0)具 有除页面映射外的基本功能
译码模块(Decode)
• 由MIPS指令转化为CPU内部操作码 • 内部操作码的定义
– 应当分组(ALU、MEM、Branch)
• 分组示例
– ALU:ADD -> 00001、SUB -> 00011 – MEM:LW -> 10000、 SW -> 10001 – Branch: J -> 11000、BEQ -> 11010
发射模块(Issue)
• 静态流水线
– 遇到相关情况就停止发射,直到相关解决
• 相关情况分析
– ALU和跳转指令一拍完成,即使出现这些指令 间的相关也没有问题 – MFC0、MTC0、CACHE0和CACHE1指令也 可以是一拍完成 – 访存指令中的LW、SW指令执行时间不确定, 其后指令有相关必须停止发射
• 延迟槽的意义
– MIPS指令系统的规定,由编译器自动处理
• 处理跳转指令的方法
– 遇见跳转指令就停止取指,直到获得目标地址 (流水线的要求) – 采用分支预测 – J指令的处理,在ALU模块中计算转移地址
• 原则:必须保证处在延迟槽的指令被运行!
指令Cache对取指模块的影响
• RAM的同步、异步问题
• 效率较高,在“龙芯-1”中使用Forwarding 技术前后性能差距超过10%
Forwarding图解
ADD R3,R5,R2 SUB R4,R1,R3
发射判断 执行&写回
R3 可用 R4 可用
发射判断 执行&写回
发射判断 执行&写回
算术及逻辑模块(ALU)
• • • • • 是一个运算单元 根据发射来的指令码判断所应当做的操作 不同指令的结果存储寄存器不同(Rd或Rt) 判断指令执行所导致的例外(溢出、自陷) 主要目标:尽量节省硬件开销
取指&译码 发射 执行&写回
取指&译码
发射
访存
写回
MIPS存储系统体系和管理 • 操作方式:用户态、核心态
功能模块结构
取指模块(Fetch)
• PC-> 指令Cache -> 指令-> 译码 • PC的来源:PC+4(通常)、跳转指令(目标地址)、
例外处理(例外处理向量入口地址、EPC内容)
• 停止取指的情况(发射堵塞、特殊指令) • 跳转指令的Delay Slot(延迟槽) • 指令Cache的实现问题(同步与异步RAM)
块操作(Block)
• 在CPU使用Cache时,所有的Cache访存操 作都是块操作,一次一个Cacheline • 与单字操作相比,块操作提高了效率 • CPU直接访存,不使用Cache时,采用单 字操作 • 本实例中使用Cache硬件初始化,都是块操 作,如果是操作系统软件初始化,就必须 存在单字操作发射、写回 • 将当前指令的内容和PC值放入控制寄存器 模块中储存起来 • 待前面指令内容返回之后,发出例外信号, 转入例外处理程序的入口地址 • 发出例外信号的同时,判断EPC中应存放 的例外地址并置入
Cache模块
• • • • • • • 指令Cache和数据Cache独立 直接映射 写回机制 虚地址低位查找(Index、Offset) 物理地址高位比较 各4KByte大小 Cache Line是32Byte(256bit)
• 优缺点
–优点:不出现前后指令相关则无需等待 –缺点:例外处理比较复杂
Forwarding技术
• 什么是Forwarding?
– 发射时必须判断寄存器内容是否可用 – 运算指令即便一拍完成,该指令结果也必须在 下一拍对发射可用 – 实现对运算结果的侦听,一旦结果总线上结果 可用就直接取值用于发射
– LW、SW、MTC0、MFC0、CACHE(0、1)
• 跳转类指令
– J、JR、BEQ、BGTZ、GLEZ
• 其他指令
– ERET、TEQ
流水线结构
单条指令运行步骤 • Fetch & Decode(取指并译码) • Issue(发射) • Execute & Writeback(执行并写回)
• 停止发射也必须同时停止取指
发射模块中必须考虑的问题
• 两个功能部件(ALU和数据Cache) • 区别:执行指令的周期数不同 • 结果:指令的结束顺序被打乱(前面访存 指令的结果尚未返回,后面与之不相关的 ALU指令已经完成) • 必须考虑:一旦指令(包括ALU指令和访存 指令)运行中出现例外,如何处理?
北桥接口信号说明
• • • • oe:CPU输出使能,1bit ie:北桥输入使能,1bit iee:CPU允许北桥输入使能,1bit Sys_con:系统双向传递总线,65bit
– Sys_con[64]:1->CPU写操作,2->CPU读操作 – Sys_con[63:32]:32bit地址信号 – Sys_con[31:0]:32bit数据信号
实验说明(2)
• 设计CPU内部电路所使用的Verilog代码必 须均为可综合方式 • 所有时序器件必须使用同步逻辑(时钟上 跳沿触发),不能使用异步逻辑(电平触 发) • 提供Cache模块中SRAM的仿真用Verilog文 件,不能自行用寄存器搭建
实验说明(3)
• 在完成CPU设计之后,将对其进行进一步 的综合(Synthesis),生成网表(netlist) 文件 • 对网表文件进行零延迟仿真和时序反标仿 真(back annotation) • 观察综合及三次仿真(包括行为级仿真) 结果,完成实验最终报告
控制寄存器模块(Control Register)
• 主要进行例外处理 • 所能够处理的例外
– 复位、地址错(取指、访存读、访存写)、溢 出、自陷、保留指令、中断
• 所实现的例外处理寄存器
– 计数(Count)、比较(Compare)、状态 (Status)、原因(Cause)、例外地址 (EPC)、版本标识(Prid)
– 同步写入,读出的同步、异步问题
• 指令Cache必须保证一拍结果返回
– 采用异步读RAM的处理方式(正常方式)
• 解决方法
– 提前将PC的内容放入RAM中 – 相应的考虑
• 指令Cache的比较对象(必须一致) • 设置PC备份寄存器 • 设置pc_in_en,决定PC是否可以进入寄存器 • pc_valid的考虑(实际上提前一拍)
接口模块
• 连接CPU与外部设备(北桥、内存、外设 等) • 允许CPU访问Cache未命中所需的外部资 源,同时也允许外设访问CPU内部资源 • 信号转换(Reset、Interrupt)和信息交换 (访存请求、访存结果) • CPU内外频率配合(内频=外频×倍频)
接口模块设计要求
• 与北桥连接为双向三态总线(0、1、Z) • 能够提供内外频率转换 • 将Cache发出的块操作转化为八个地址请求, 并连续发出 • 将北桥返回的访存结果拼成一个Cacheline (256bit),送至Cache模块 • 外部信号(Reset、Interrupt)锁存后,送 往CPU内部
相关文档
最新文档