(Verilog+Quartus Ⅱ+Cyclone版)

Slides:



Advertisements
Similar presentations
什么是SOPC: SOPC是英文System On a Programmable Chip的缩写,称为片上可编程系统。SOPC将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理等融为一体,综合了各自的优势,且在结构上形成一块芯片。 为什么用SOPC:SOPC是现代电子技术和电子系统设计的发展趋势,建立了电子系统设计的新模式。用户利用SOPC开发平台,自行设计高速、高性能的DSP处理器、特定功能的CPU及其外围接口电路,创建结构最为简洁的电子系统。
Advertisements

程序的执行 程序执行和指令执行概述 数据通路基本结构和工作原理 流水线方式下指令的执行
第 2 章 中央處理單元.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
第五章 中央处理器 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术
计算机硬件设备图片 go 珠海市第四中学 信息技术组.
NEUSOFT Institute of information Technology .ChengDu
建構 Beta電腦 – Fall /29/0.
第2章 SOPC硬件开发环境及流程.
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
实验四 利用中规模芯片设计时序电路(二).
最新計算機概論 第3章 計算機組織.
第二章 指令系统.
计算机基础知识 丁家营镇九年制学校 徐中先.
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
Hardware Chen Ching-Jung
数字系统设计2 习题课 2012年11月29日 TA: 沈炳锋 沈炳锋 (683472)
CH.2 Introduction to Microprocessor-Based Control
Chapter 5 電腦元件 目標---- 研讀完本章後,你應該可以: 閱讀有關電腦的廣告以及了解它的專業用語(行話)。
第 2 章 中央處理單元.
第一章 嵌入式系统开发基础 本章介绍了嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基本内容,使读者系统地建立起的嵌入式系统整体概念。
(Verilog+Quartus Ⅱ+Cyclone版)
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
微处理器设计1 刘鹏 College of ISEE Zhejiang University
周学海 , 中国科学技术大学 2018/11/15 计算机体系结构 周学海 , 中国科学技术大学 11/15/2018 中国科学技术大学.
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
Lecture on High Performance Processor Architecture (CS05162)
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
C H A P T E R 10 存储器层次.
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
基于压缩算法的tile64多核处理器性能研究
5 Computer Organization (計算機組織).
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
The Processor: Datapath and Control
微机原理及单片机接口技术 电话: Tel:84192 山东大学生物医学工程.
第2章 计算机指令集结构 曲冠南
微处理器设计2 刘鹏 College of ISEE Zhejiang University
第1章 嵌入式系统概述 嵌入式系统的发展、定义、特点、组成、分类 嵌入式系统硬件核心、软件核心 嵌入式实时操作系统
单片机应用技术 项目一 循环彩灯装置 第2讲 51单片机的结构与引脚 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
嵌入式系統概論-以S3C2440核心為架構 第1章 嵌入式系統概念.
電腦的硬體架構.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 電腦硬體知識 2-1 電腦的組成與架構 2-2 處理器 2-3 記憶體 2-4 輸入與輸出裝置 2-5 電腦的操作與保養.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第二章 Java语言基础.
逆向工程-汇编语言
CPU结构和功能.
精简指令集(RISC)CPU的构造原理和设计方法
Instructions: Language of the Machine
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
8051單晶片 蘇恆生 老師.
The Processor: Datapath and Control (Multi-cycle implementation)
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第二章 電腦硬體知識 Chapter 2-電腦硬體知識.
计算机系统结构(2012年春) ----存储层次: Cache基本概念
(Random Access Memory)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
iSIGHT 基本培训 使用 Excel的栅栏问题
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
第4章 指令级并行 授课教师:车喜龙
临界区问题的硬件指令解决方案 (Synchronization Hardware)
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
DSP技术与应用 电子与信息技术系.
Presentation transcript:

(Verilog+Quartus Ⅱ+Cyclone版) 计算机系统综合课程设计(3) 基于MIPS32的SOC设计实践(上) (Verilog+Quartus Ⅱ+Cyclone版) 主讲 杨全胜 东南大学计算机科学与工程学院 2017/2/25 P.1

主要内容 SoC设计概述 MiniSys 指令系统介绍 MiniSys 的设计 外围电路及控制系统设计 软件的设计 2017/2/25 P.2

第1章 SOC概述(1) 什么是SOC(System-on-Chip) 实现复杂系统功能的VLSI; 采用超深亚微米工艺技术; 使用一个以上嵌入式CPU/数字信号处理器(DSP); 外部可以对芯片进行编程; 可利用第三方IP Core进行设计。 超深亚微米(0.13μm、0.09μm及0.065μm) 深亚微米集成电路就是指0.25微米及其以下的集成电路。0.8—0.35微米集成电路称为亚微米,0.05微米及其以下称为纳米级 2017/2/25 P.3

SOC概述(2) SOC的三种形态 以微处理器为核心,外围集成各种存储器、控制电路、输入输出、A/D、D/A等功能于一个芯片上 以数字信号处理器(DSP)为核心,多个A/D、D/A,大容量存储器等集成 上述两种类型的混合,或者把系统算法和芯片结构有机地集成在一起 2017/2/25 P.4

SOC概述(3) 设计中的关键技术 设计描述技术 软硬件协同设计 IP集成复用技术及设计环境 Verilog HDL/VHDL/AHDL System C、C-VHDL混合描述 软硬件协同设计 电路的设计、综合、布局布线 软件与硬件的划分、协同设计、协同仿真 嵌入式操作系统、嵌入式系统程序和应用程序的开发 IP集成复用技术及设计环境 2017/2/25 P.5

IP 核及在SOC中的地位(1) IP资源复用的理念 IP资源复用(IP Reuse)是指在集成电路设计过程中,通过继承、共享或购买所需的部分或全部知识产权内核(IP Core),进行设计、综合和验证,从而加速流片设计过程的设计方法 IP Core是一种商品,SOPC的技术核心:是可编程逻辑器件设计工程师价值体现的主要途径 2017/2/25 P.6

IP 核及在SOC中的地位(2) IP核的表现形式 HDL语言(VHDL 或 Verilog HDL) 原理图(可移植性差) 网表 符合某种EDA工具的特定格式 如:Xilinx的IP Capture和Core Generator等 2017/2/25 P.7

IP 核及在SOC中的地位(3) IP核的分类 微处理器IP核 处理器外设IP Core DSP算法IP Core 通信控制器IP Core 8/16/32/64位,如MicroBlaze、Nois、8051 处理器外设IP Core SDRAM 控制器、LCD 控制器、总线控制器等 DSP算法IP Core FIR滤波器、DES加密、音视频编码和解码等 通信控制器IP Core MAC、Gbit收发器、CAM、协议转换等 其它类型IP Core 2017/2/25 P.8

IP 核及在SOC中的地位(4) IP Core设计:编码风格 编码风格(Coding Style)是基于HDL的IP Core源码编写的指导性文档,关系到IP Core的可读性、易于集成性及其质量 编码风格一般包含几个方面的约定:文件头和版本说明、联机注释、命名规则、可综合编码(UCF)等 http://www.opencores.org http://www.IPcore.com.cn 2017/2/25 P.9

第2章 MiniSys指令系统介绍 MiniSys寄存器组 MiniSys指令目录 MiniSys指令格式 部分MiniSys指令格式详解 注:MiniSys采用32位MIPS指令中最常用的31条指令,其寄存器组织,指令格式等均采用MIPS指令系统相同的格式。 2017/2/25 P.10

MiniSys寄存器组 共有32个32位寄存器 2017/2/25 P.11

MiniSys指令目录 算术指令-add, addu, addi, addiu, sub, subu 逻辑指令-and, andi, or, ori, xor, xori, nor, sll, srl, sra, sllv, srlv, srav 数据传送指令-lw, sw, lui 比较、条件转移指令-beq, bne, slt, slti, sltu, sltiu 无条件转移指令-j, jr, jal mfhi $1 $1=Hi nflo $1 $1=Lo lh 取半双字(一个字16位) 2017/2/25 P.12

MiniSys指令格式(1) (1)R-format add $1, $2, $3 # $1=$2+$3 6-bit 5-bit 5-bit 5-bit 5-bit 6-bit op rs rt rd shamt funct 2 3 1 32 000000 00010 00011 00001 00000 100000 2017/2/25 P.13

MiniSys指令格式(2) (2)I-format lw $1, 10($2) # $1=Memory[$2 +10] 6-bit 5-bit 5-bit 16-bit op rs rt Address/Immediate 35 2 1 10 100011 00010 00011 0000 0000 0000 1010 2017/2/25 P.14

MiniSys指令格式(3) (3)J-format j 10000 # go to 10000 6-bit 26-bit op Target Address 2 2500 000010 00010 00011 0000 0000 0000 1010 2017/2/25 P.15

MiniSys指令格式详解 这里只介绍几个典型的指令格式,比较完整的指令格式请参看教材。 2017/2/25 P.16

MiniSys指令格式详解 2017/2/25 P.17

MiniSys指令格式详解 2017/2/25 P.18

MiniSys指令格式详解 2017/2/25 P.19

MiniSys指令格式详解 2017/2/25 P.20

MiniSys指令格式详解 2017/2/25 P.21

MiniSys指令格式详解 2017/2/25 P.22

MiniSys指令格式详解 100 100 100 100 2017/2/25 P.23

MiniSys指令格式详解 2017/2/25 P.24

MiniSys指令格式详解 2017/2/25 P.25

MiniSys指令格式详解 2017/2/25 P.26

第3章 MiniSys的设计 MiniSys CPU设计架构 MiniSys CPU中各个单元 指令执行的分析 设计流水线处理器的考虑 设计多核处理器的考虑 2017/2/25 P.27

MiniSys CPU设计架构(1) 指令执行的步骤 idecode Control ifetch Execute Write Dmemory 2017/2/25 P.28

MemtoReg MemWrite op Sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal MIPS instruction format R-format MemWrite op rs rt rd func op Sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal Branch 1 + Regdst 4 Regwrite PC+4 address + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 读地址 rt Zero readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

MiniSys CPU中各单元(1) Fetch(取指单元) 定义指令ROM存储器 到程序ROM中取指令 对PC值进行+4处理

取指单元的设计 Memtoreg Memwrite op Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A readD1 PC rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

指令ROM的初始化文件 prgmip32.mif文件(自行创建) DEPTH = 1024; -- 10位地址线 210=1024 WIDTH = 32; -- 数据宽度32位 ADDRESS_RADIX = HEX; --地址采用16进制描述 DATA_RADIX = HEX; -- 数据采用16进制描述 CONTENT BEGIN 0 : 8c020000; --lw $2 0($0) 1 : 8c030002; --lw $3 2($0) [19..3FD] : 00000000; 3FE: 03400008; -- jr $1A 中断0返回 3FF: 03600008; -- jr $1B 中断1返回 END; 2017/2/25 P.32

指令ROM的例化 lpm_rom prgrom(.address(PC[11:2]),.inclock(clock),.q(Jpadr)); // 实际上给出的地址是PC除4的结果,因为MIF文件按0、1、2、 // 3排列的 defparam prgrom.lpm_width = 32; //数据(指令)宽度32位 defparam prgrom.lpm_widthad = 10; //地址线宽度9位 defparam prgrom.lpm_file = "prgmip32.mif"; defparam prgrom.lpm_outdata = "UNREGISTERED"; defparam prgrom.lpm_address_control = "REGISTERED"; 2017/2/25 P.33

MiniSys CPU中各单元(2) Decode(译码单元) 定义寄存器组 对寄存器组进行读写操作 根据指令译码结果,决定向其他部件(如运算器)送1路或两路数据 2017/2/25 P.34

译码单元的设计 Memtoreg Memwrite op Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A readD1 PC rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

MiniSys CPU中各单元(3) Control(控制单元) 根据指令中的指令码(op)和功能码(funct)的不同组合输出相应的控制信号。 2017/2/25 P.36

控制单元的设计 Memtoreg Memwrite op Aluctl/slt/sftmd/sftm/I_format Alusrc func jmp | jal jrn nBranch jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A readD1 PC rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

MiniSys CPU中各单元(4) Exe(执行单元) 完成逻辑运算 完成算术运算 完成移位运算 完成比较转移的PC值计算 完成比较后赋值

执行单元的设计 Memtoreg Memwrite op Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A readD1 PC rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

MiniSys CPU中各单元(5) Dmemory(存储单元) 定义数据存储单元RAM 实际完成对数据存储器的读写操作

存储单元的设计 Memtoreg Memwrite op Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A readD1 PC rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 writeD ALU 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

时序关系 器件固有延迟维持的流水 2017/2/25 P.42

数据RAM初始化文件 dmem16.mif文件(自行创建) DEPTH = 1024; --10 位地址线 WIDTH = 32; -- 数据宽度32位 ADDRESS_RADIX = HEX; --地址采用16进制描述 DATA_RADIX = HEX; -- 数据采用16进制描述 CONTENT BEGIN 0 : 00000055; -- 行号是地址除以4的结果 1 : 000000AA; [2..3FF] : 00000000; END; 2017/2/25 P.43

数据RAM的例化 数据存储器的实现 lpm_ram_dq ram(.data(write_data) , .address(address[11:2]), .we(Memwrite ), .inclock(clk),.q(read_data));//在 // Verilog中使用Altera的RAM单元, 注意地址要除2 defparam ram.lpm_width =32; //数据宽32位 defparam ram.lpm_widthad = 10; //地址线宽10位 defparam ram.lpm_outdata = "UNREGISTERED"; defparam ram.lpm_indata = "REGISTERED"; defparam ram.lpm_address_control = "REGISTERED"; defparam ram.lpm_file = “dmem16.mif”; //存储体初始化文件 // 以字为单位,所以地址都是偶数地址 2017/2/25 P.44

MiniSys CPU中各单元(6) MiniSys (顶层设计) 顶层整合模块 前面已经给出了MiniSys cpu 的5大部件的设计,最后需要将这5大部件组合成一个完整的CPU,可以用GDT图,也可以用Verilog的元件例化的方法来完成。 在元件例化的时候特别注意字母大小写一定要一致。 2017/2/25 P.45

顶层的设计(2) 模块的定义 module minisys(reset, clock, pc, alu_result_out, read_data_1_out, read_data_2_out, write_data_out, instruction_out, branch_out, zero_out, memwrite_out, regwrite_out, i_format_out); input reset,clock; output[15:0] pc, alu_result_out, read_data_1_out; output[15:0] read_data_2_out, write_data_out; output[31:0] instruction_out; output branch_out, zero_out, memwrite_out, regwrite_out; output i_format_out; 2017/2/25 P.46

顶层的设计(3) 内部信号定义 wire[15:0] pc_plus_4; wire[15:0] read_data_1; wire[15:0] sign_extend; wire[15:0] add_result; wire[15:0] alu_result; wire[15:0] read_data; wire[15:0] pc_next,opcplus4; wire alusrc ,jrn,i_format,regwrite, zero, memwrite; wire branch, memtoreg, memread, memreg; wire nbranch,jmp,jal,regdst; wire[1:0] aluop; wire[31:0] instruction; 2017/2/25 P.47

顶层的设计(4) 内部信号赋值 assign instruction_out = instruction ; assign alu_result_out = alu_result ; assign read_data_1_out = read_data_1 ; assign read_data_2_out = read_data_2 ; assign write_data_out = (memtoreg == 1) ? read_data : alu_result ; assign branch_out = branch ; assign zero_out = zero ; assign regwrite_out = regwrite ; assign memwrite_out = memwrite ; assign i_format_out = i_format ; 2017/2/25 P.48

顶层的设计(5) 元件例化 其他元件例化大家参看教材。 Ifetc32 ifetch(.Instruction(instruction), .PC_plus_4_out(pc_plus_4) , .Add_result(add_result), .Branch(branch), .nBranch(nbranch), .Jmp(jmp), .Jal(jal), .Jrn(jrn), .Read_data_1(read_data_1), .PC_next(pc_next), .Zero(zero), .PC_out(pc), .clock(clock), .reset(reset) .opcplus4(opcplus4)); 其他元件例化大家参看教材。 2017/2/25 P.49

指令执行的分析 各类指令执行的分析 2017/2/25 P.50

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal 除jr指令之外的其他16条R-format指令 Branch 1 + Regdst 4 Regwrite PC+4 addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal jr Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 读地址 rt Zero readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal addi, addiu,andi, ori, xori,lui,slti,sltiu Branch 1 + Regdst 4 Regwrite PC+4 addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal lw Branch 1 + Regdst 4 Regwrite PC+4 addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal sw Branch 1 + Regdst 4 Regwrite PC+4 addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal beq, bne Branch 1 + Regdst 4 Regwrite PC+4 addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal j Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 1 0 符号扩展

Aluctl/slt/sftmd/sftm/I_format Alusrc 控制单元 func jmp | jal jrn nBranch Memtoreg MIPS instruction format R-format Memwrite op rs rt rd func op Aluctl/slt/sftmd/sftm/I_format I-format Alusrc 控制单元 op rs rt immediate func jmp | jal J-format jrn op address nBranch jal jal Branch 1 Regdst 4 Regwrite PC+4 + addresst + 1 左移2位 左移2位 WE rs 1 readR1 程序ROM A PC readD1 rt Zero 读地址 readR2 WE Alu result readD2 Address 指令 [31-0] B writeR Mem data rd 寄存器 1 1 1 ALU writeD 数据RAM Clock Write Data Clock immediate 31 1 0 符号扩展

设计流水线处理器的考虑 选择合适的流水级数 尽量保持流水线各级延迟相等 流水线中的相关性 2017/2/25 P.59

设计流水线处理器的考虑 结构相关 所谓结构相关是指指令在重叠执行的时候由于硬件资源不能满足重叠执行的要求,而产生的一种结构上的相关 MiniSys系统采用指令ROM和数据RAM分开的设计,取指和数据读写分别在两个存储体内进行,因此不会产生取指和数据访问的冲突。另外,由于MiniSys系统采用的是Load/Store型指令结构,除了LW和SW两条指令外,其他指令都不会操作数据RAM。LW与SW指令也仅仅在存储阶段才访问数据存储器,因此不可能出现两条指令同时读写数据RAM的情况。 另外,关于寄存器堆的读写问题,可以采用时钟上升沿读,下降沿写的方法避免读写冲突。 因此MiniSys CPU的设计中避免了结构相关问题。 2017/2/25 P.60

设计流水线处理器的考虑 数据相关 写后读相关(RAW) 阻塞 乱序 定向转发法 2017/2/25 P.61

设计流水线处理器的考虑 数据相关 读后写相关(WAR) ? 2017/2/25 P.62 从我们设计的流水来看,读寄存器是在译码阶段,而写寄存器要等到回写阶段,因此,处于后面的程序不可能在前面程序读寄存器前写相同的寄存器。 考察存储器的读写,因为都只能在存储阶段进行读或写,所以不会出现后续指令比前面指令先操作存储器的情况。 因此,MiniSys CPU不存在WAR相关。 2017/2/25 P.62

设计流水线处理器的考虑 数据相关 写后写相关(WAW) ? 2017/2/25 P.63 在MiniSys系统中,无论是对寄存器写还是对存储器写,都是在唯一的阶段内操作的,比如写存储器是在存储阶段,而写寄存器在回写阶段。因此,不可能出现后续指令先与前面的指令写数据的情况,因此MiniSys中也不存在WAW相关。 2017/2/25 P.63

设计流水线处理器的考虑 控制相关 尽早判断分支条件是否满足 尽早算出分支条件满足时的转移地址(PC的新值) 2017/2/25 P.64 所谓控制相关是当程序执行到条件分支指令的时候,会出现与控制相关的问题。控制相关可以看作是对指令指针寄存器PC的RAW相关问题。 2017/2/25 P.64

设计多核处理器的考虑 简单核还是复杂核? 同构核还是异构核? 几个核之间怎么配合?中断怎么处理? 数据一致性上的问题 软件上的同步与互斥 核间互联问题 2017/2/25 P.65

几个多核的例子 INTEL CORE DUO Each with its own execution resources Each with its own L1 cache 32K instruction and 32K data Both cores share the L2 cache 2MB 8-way set associative; 64-byte line size 10 clock cycles latency; Write Back update policy 2017/2/25 P.66

几个多核的例子 AMD Opteron Separate 1Mbyte L2 caches CPU0 and CPU1 communicate through the SRQ and Crossbar 2017/2/25 P.67

几个多核的例子 2017/2/25 P.68

几个多核的例子 UltraSPARC T1 from SUN 8 CPU core Each core can run 4 thread simultaneity All cores connected through high bandwidth (134.4GB/s) crossbar switch 2017/2/25 P.69

几个多核的例子 Cell from IBM, Toshiba and Sony 1 PPE (Power Processor Element) 8 SPE (Synergistic Processor Element) All cores connected through EIB 我们可以看到Cell内部有一条 768bit位宽的“EIB单元互联总线环(Element Interconnect BUS Ring,EIB Ring)”, 2017/2/25 P.70

几个多核的例子 Tile64 from Tilera Co. 64 Cores RISC 19.2W All cores connected through MESH 500Gb/s for one core, 32Tb/s for all. Every core can run OS 2017/2/25 P.71

几个多核的例子 Larrabee from Intel Multiple in-order x86 CPU cores that are augmented by a wide vector processor unit A coherent on-die 2nd level cache All cores connected through Interprocessor Ring Network 2017/2/25 P.72