华科组成原理课程设计
计算机组成原理(华中科技大学建设的慕课)

冯丹,华中科技大学计算机科学与技术学院教授,从事大数据存储系统、存算融合技术等领域研究工作。 吴非,华中科技大学计算机科学与技术学院教授,从事新型存储器性能和可靠性优化等领域研究工作。 谢雨来,华中科技大学网络空间安全学院副教授,从事入侵检测、舆情分析、工控安全、网络安全等领域研 究工作。 王芳,华中科技大学计算机科学与技术学院教授。
教学目标
教学目标
通过该课程的学习,使学习者系统地掌握冯·诺依曼结构计算机各组成部件的基本结构、工作原理、内部运 行机制和基本设计方法;加深学习者对计算机软、硬件系统的整体化理解,建立硬件/软件协同的整机概念,并有 效增强学习者的计算机硬件素养和软件协同的系统观,有效增强学习者的计算机系统设计能力。具体目标包括:
计算机组成原理(华中科技大 学建设的慕课)
华中科技大学建设的慕课
01 课程性质
03 课程大纲 05 课程特色
目录
02 课程简介 04 开课信息 06 教学目标
07 学习预备
09 教师简介
目录
08 所获荣誉
基本信息
计算机组成原理课程是华中科技大学建设的慕课、国家精品在线开放课程、国家级一流本科课程。该课程于 2018年10月16日首次在中国大学MOOC开课,授课教师为秦磊华、胡迪青、谭志虎、蒋文斌、冯丹、吴非、谢雨来、 王芳。据2021年10月中国大学MOOC官网显示,该课程已运行7学期。
计算机组成原理课程共八章,包括计算机系统概论、运算方法与运算器、中央处理器、输入输出系统、存储 系统、数据表示等内容。
课程性质
课程定位
适应专业
课程定位
计算机组成原理课程是一门理论性、工程性、技术性和实践性都较强的核心专业基础课程,在计算机学科系 列课程中处于承上启下的作用。
华中科技大学硬件课程设计实验报告

华中科技大学硬件课程设计实验报告课题:“EasyReader”电子书阅读器系统班级:通信0903作者:曾庆台阳舒梦雨学号:U200913846 U200913859 U200913849指导老师:***课设评价:课设成绩:日期:2012-7-2摘要“EasyReader”系统是一个多功能电子书阅读器,以TI公司的MSP430F149作为系统硬件核心,以DM430-L为硬件开发平台,以VS1003作为音频解码核心芯片,以IAR Embedded Workbench for MSP430 v5.30作为系统软件开发平台,使用MSP430自带操作系统,以C语言为基本编程语言。
本系统具备低功耗、小体积、轻重量、功能齐全的特点,可手动或自动翻页翻行、选择不同字体大小和背景、显示系统运行时间和文档读取进度、手动切换播放背景音乐、查看文档信息等功能。
使用便捷,可为用户提供良好的阅读体验。
本文讨论了“EasyReader”电子书阅读器的研究与设计,研究的主要内容包括系统硬件平台的设计和基于该硬件平台的软件设计。
在硬件设计方面,进行了系统的功能需求分析、方案选择和总体设计,详细设计了以MSP430F149处理器为核心,外围包括SD卡文件读取模块、VS1003音频解码播放模块和串口通信功能、人机交互功能的嵌入式系统硬件平台。
在软件设计方面,以分层分模块的思想进行设计,设计了FAT32文件系统、SD卡和TFT液晶驱动和显示程序、VS1003音乐播放程序、中断服务程序等,并进行了系统测试和结果分析,良好地实现了系统的设计目标。
关键词:电子书阅读器;MSP430F149;SD卡;FAT32文件系统;VS1003Abstract“EasyReader” system is a multi-fuctional e-book reader. It uses MSP430F149 of TI corporation as the hardware core, DM430-L as hardware developing platform, VS1003 as decoding central chip for audio file, IAR Embedded Workbench for MSP430 v5.30 as software developing platform of our system. We take the advantage of the OS in MSP430 chip itself and program with basic C language. Our system has the characteristic of low consumption, little size, light weight and versatile functions. The user can switch pages and lines by manual operation or automatic mode, choose different size of font and background, show the runtime of system and the rate of reading progress, choose manually to play the background music or not, check the information of text documents, and the like. It is convenient and easy to use, and provides the users with great reading experience.This paper discussed the research and design of “EasyReader”e-book reader. The main content of our research includes the design of hardware platform and the software design based on the hardware. In the designing of hardware, we analyzed the requirements of functions, put forward how to choose the final scheme and overall design. We also has made a detailed design of the embedded system hardware platform, that consists of the core MCU of MSP430F149, the peripheral modules of reading from SD card, VS1003 audio decoding, communication using serial port and human-computer interface. In the design of software, we utilized hierarchical and module-based thought to carry out our design. We designed FAT32 file system, SD card driven orders, TFT driven and display orders, VS1003 audio play orders and interrupt service programs. Through the tests, debug and analyses of the system, we eventually achieved the goal of our design.Key Words: E-book reader; MSP430F149; SD card; FAT32; VS1003目录1项目概述 (5)2设计目标 (5)2.1基本功能 (5)2.2扩展功能 (5)3小组成员和任务分工 (6)4系统总体设计 (6)4.1总体设计思路 (6)4.2主要器件选择 (7)5系统硬件设计与实现 (10)5.1DM430-L开发板 (10)5.2音频解码模块设计 (13)5.3TFT液晶显示模块 (14)5.4SD卡模块 (15)5.5按键电路 (16)6系统软件设计与实现 (16)6.1软件设计的主要思想 (16)6.2软件设计平台(IAR Embedded Workbench IDE) (16)6.3文件系统的选择与实现 (17)6.4SD卡模块软件设计 (18)6.5TFT液晶显示模块软件设计 (19)6.6音频模块软件设计 (23)6.7按键模块 (24)6.8软件流程说明 (25)7系统测试与结果分析 (26)7.1调试故障、产生原因及解决方法 (26)7.2测试方案与结果 (29)7.2.1 测试方案 (30)7.2.2 测试结果 (30)8心得体会与项目总结 (31)1)心得体会与总结 (31)2)项目展望 (33)9致谢 (34)10参考文献 (34)11附录 (35)1)宣传网站 (35)2)程序代码列表说明 (35)1项目概述电子书阅读器是一种便携式的手持式电子设备,专为阅读图书设计,它有大屏幕的液晶显示器,可以直接从互联网上方便的购买及下载数字化的图书,并且有大容量的内存以存储大量数字信息,一次可以存储数十本传统图书的信息,特别设计的液晶显示技术可以让人舒适的长时间阅读图书。
华科船舶设计原理课程设计

华科船舶设计原理课程设计一、课程目标知识目标:1. 理解并掌握船舶设计的基本原理,包括浮力、稳性、阻力等关键概念;2. 学习船舶结构、材料及动力系统的知识,并能运用到实际设计中;3. 掌握船舶设计流程和规范,能运用相关软件进行初步的船舶设计。
技能目标:1. 培养学生运用科学方法分析和解决船舶设计过程中遇到问题的能力;2. 提高学生团队协作、沟通表达及创新能力,能在设计项目中发挥个人特长;3. 培养学生运用船舶设计软件进行设计实践的能力。
情感态度价值观目标:1. 培养学生对船舶设计学科的兴趣和热情,激发学生主动探索的精神;2. 培养学生严谨的科学态度和良好的工程伦理观念,关注船舶设计对环境和社会的影响;3. 增强学生的民族自豪感,认识到我国船舶工业的发展成就,激发学生为国家和民族作出贡献的意愿。
课程性质:本课程为华科船舶工程专业核心课程,以实践性、应用性为主,注重理论联系实际。
学生特点:学生具备一定的船舶基础知识,具有较强的逻辑思维和动手能力,但对船舶设计实践尚缺乏经验。
教学要求:结合学生特点,注重启发式教学,引导学生主动参与,培养创新精神和实践能力。
通过课程学习,使学生在船舶设计方面具备一定的理论水平和实际操作能力。
二、教学内容1. 船舶设计基本原理:包括浮力、稳性、阻力的概念及其在船舶设计中的应用;讲解船舶的排水量、船体形状、船体结构对性能的影响。
教材章节:第一章 船舶设计基本原理2. 船舶结构、材料及动力系统:介绍船舶的构造、主要材料及动力系统的类型和选型原则;分析不同结构、材料和动力系统对船舶性能的影响。
教材章节:第二章 船舶结构与材料和第三章 船舶动力系统3. 船舶设计流程与规范:讲解船舶设计的基本流程、设计规范以及相关法规;指导学生如何运用规范进行船舶设计。
教材章节:第四章 船舶设计流程与规范4. 船舶设计软件应用:教授船舶设计常用软件的基本操作,如CAD、CAE 等;指导学生利用软件进行船舶设计实践。
计算机组成原理(华科)chap.ppt

5)系统总线
计算机内各大部件之间的连接部件。
2. 冯诺依曼计算机的体系结构
由五大部分组成; 基本原理:存储程序和程序控制;
④
①
③
②
③ ③
⑤ ③
计算机的大体工作过程可描述如下: ① 通过输入设备将解题程序和数据送入主存。(存储程序)
② 控制器从主存中逐条取出程序的指令,并控制实现指令功能。 ③ 在指令功能实现过程中,由运算器完成对数据的运算处理。 ④ 将运算结果送主存。 ⑤ 通过输出设备反馈程序运行结果。
四、计算机系统的层次结构
1、五级结构,不同的级面向不同的用户对象, 采用不同的 方法和不同的设计工具进行各级程序设计。
2、分级的好处:有利于系统结构的优化,单级的修改只 需 要修改相邻级的接口或相邻级,不会影响其它级。
3、各级的说明:
5 4 3 2 1
高级语言级
编译程序
•第1、2级由硬件实现,3~5级由软件实
第一章
计算机系统概论
本章主要知识点:
•计算机硬件系统由哪几部分构成、各有何作用?
•冯诺依曼计算机的工作原理
•计算机系统的层次结构
•透明性概念
•固件
•计算机系统的性能评价
一、计算机系统的概念
1、计算机系统的构成:硬件+软件构成的复杂的自动化设备,由 多层次结构构成。 •硬件:由有形的电子器件构成,如运算器、控制器、存储器等 •软件:为了方便用户使用计算机而编制的各种程序。
现,称为虚拟机。
•第1微程序设计级,用户只能用微指令 编写程序,并由计算机硬件直接执行。
汇编语言级
汇编程序
采用硬布线的计算机没有该级。
•第2级一般机器级,(称传统机器级)用机
华科操作系统课程设计

华科操作系统课程设计一、教学目标本课程的教学目标分为知识目标、技能目标和情感态度价值观目标。
知识目标:学生需要掌握操作系统的基本概念、原理和关键技术,包括进程管理、内存管理、文件系统、输入/输出系统等。
技能目标:学生能够运用操作系统的基本原理和关键技术,分析和解决实际问题。
通过实验和项目,培养学生的动手能力和创新能力。
情感态度价值观目标:培养学生对操作系统的兴趣和热情,提高学生的问题意识和团队协作精神。
二、教学内容本课程的教学内容主要包括操作系统的基本概念、原理和关键技术。
1.操作系统概述:操作系统的定义、功能、分类和发展历程。
2.进程管理:进程的概念、进程控制块、进程调度、同步与互斥、死锁。
3.内存管理:内存分配与回收策略、内存保护、虚拟内存、页面置换算法。
4.文件系统:文件和目录的概念、文件系统的结构、文件访问控制、磁盘空间分配策略。
5.输入/输出系统:输入/输出设备管理、中断处理、直接存储器访问(DMA)、设备驱动程序。
三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法。
1.讲授法:用于传授基本概念和原理,引导学生掌握操作系统的核心知识。
2.讨论法:通过小组讨论,培养学生的思考能力和团队协作精神。
3.案例分析法:分析实际案例,让学生了解操作系统在实际应用中的工作原理和解决问题的方式。
4.实验法:动手实践,培养学生的实际操作能力和创新能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用国内知名出版社出版的操作系统教材,如《操作系统原理与实践》。
2.参考书:提供相关领域的经典著作和最新研究成果,供学生拓展阅读。
3.多媒体资料:制作课件、视频等资料,辅助教学,提高学生的学习兴趣。
4.实验设备:配置相应的实验设备,如计算机、网络设备等,为学生提供实践操作的机会。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
1.平时表现:评估学生的课堂参与度、提问回答、小组讨论等,以考查学生的学习态度和思考能力。
华科数据结构课程设计

华科数据结构课程设计一、课程目标知识目标:1. 学生能理解数据结构的基本概念,掌握线性表、树、图等常见数据结构的原理和应用。
2. 学生能描述不同数据结构的特点,分析其时间复杂度和空间复杂度。
3. 学生能运用所学知识解决实际问题,如查找、排序等算法。
技能目标:1. 学生能运用C/C++等编程语言实现常见数据结构及其相关算法。
2. 学生能通过分析问题,选择合适的数据结构和算法进行问题求解。
3. 学生能运用所学知识,设计并实现小型项目,提高编程实践能力。
情感态度价值观目标:1. 学生通过学习数据结构,培养逻辑思维能力和解决问题的能力。
2. 学生在学习过程中,养成积极合作、主动探究的学习态度,增强团队协作意识。
3. 学生能够认识到数据结构在实际应用中的重要性,激发对计算机科学的兴趣和热爱。
课程性质:本课程为计算机科学与技术专业核心课程,旨在帮助学生掌握数据结构的基本概念、原理和应用,提高编程实践能力。
学生特点:学生具备一定的编程基础,对数据结构有一定了解,但缺乏深入理解和实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践,培养学生在实际问题中运用数据结构的能力。
通过课程学习,使学生能够达到上述课程目标,为后续课程和实际工作打下坚实基础。
二、教学内容1. 线性表:介绍线性表的定义、特点及其实现方法,包括顺序存储和链式存储。
分析线性表的时间复杂度和空间复杂度,探讨其应用场景。
教学内容安排:线性表章节1-2周。
2. 栈和队列:讲解栈和队列的基本概念、操作原理及其应用。
分析栈和队列在解决实际问题中的应用价值。
教学内容安排:栈和队列章节3-4周。
3. 树和二叉树:阐述树的基本概念、性质和存储结构。
重点讲解二叉树及其遍历方法,探讨二叉树在实际应用中的价值。
教学内容安排:树和二叉树章节5-7周。
4. 图:介绍图的定义、存储结构及相关算法,如深度优先搜索、广度优先搜索等。
分析图在实际应用中的重要性。
华科液压系统课程设计

华科液压系统课程设计一、课程目标知识目标:1. 学生能理解液压系统的基本原理,掌握液压系统中各个元件的功能及工作原理。
2. 学生能描述华科液压系统的结构组成,了解不同类型液压系统的特点及应用场景。
3. 学生能掌握液压系统的主要性能参数,并运用相关公式进行计算。
技能目标:1. 学生具备分析液压系统故障的能力,能针对具体问题提出合理的解决方案。
2. 学生能运用CAD软件绘制液压系统原理图,并进行简单的系统设计。
3. 学生能操作液压实验台,进行液压系统的调试与优化。
情感态度价值观目标:1. 培养学生对液压技术的兴趣,激发他们探索液压系统奥秘的热情。
2. 培养学生的团队合作精神,让他们在液压系统设计过程中学会互相交流、协作。
3. 增强学生的环保意识,让他们了解液压系统在节能环保方面的优势。
课程性质:本课程为实践性较强的专业课程,旨在培养学生对液压系统的理论知识和实际操作能力。
学生特点:学生具备一定的机械基础知识和工程制图能力,但对液压系统了解较少。
教学要求:结合课本内容,注重理论与实践相结合,提高学生的实际操作能力和问题解决能力。
通过课程学习,使学生能够独立完成液压系统的设计与调试工作,为将来的职业发展奠定基础。
二、教学内容1. 液压系统基本原理:讲解液压系统的定义、组成及其在工程中的应用,包括帕斯卡定律、流体力学基础等,对应课本第一章内容。
2. 液压元件功能与原理:介绍液压泵、液压马达、液压缸、阀门等主要元件的结构、工作原理及功能,对应课本第二章内容。
3. 液压系统设计:讲解华科液压系统设计流程、方法及注意事项,包括系统类型选择、元件匹配、系统仿真等,对应课本第三章内容。
4. 液压系统性能参数计算:教授液压系统压力、流量、功率等主要性能参数的计算方法,对应课本第四章内容。
5. 液压系统故障分析与排除:分析液压系统常见故障及其原因,教授故障诊断与排除方法,对应课本第五章内容。
6. 液压系统实验操作:组织学生进行液压实验台的实操训练,包括系统搭建、调试、优化等,对应课本第六章内容。
华科组成原理课程设计

华科组成原理课程设计一、课程设计概述华科组成原理课程设计旨在帮助学生深入理解和应用数字电路的基本原理,培养学生的设计能力和创新思维。
本课程设计要求学生设计一个数字电路系统,包括电路的设计、仿真和实现。
本文将详细介绍课程设计的背景、目标、任务和实施步骤。
二、背景介绍数字电路是计算机科学与技术等相关专业的基础课程之一,它涉及到数字信号的产生、传输、处理和存储等方面。
组成原理课程是数字电路的重要组成部分,通过学习该课程,学生可以了解数字电路的基本概念、逻辑门电路的设计与分析、时序电路的设计与分析等内容。
三、设计目标本课程设计的目标是让学生掌握数字电路的基本原理和设计方法,培养学生的实际动手能力和创新思维。
通过本次课程设计,学生应能够:1. 理解数字电路的基本概念和原理;2. 掌握逻辑门电路的设计与分析方法;3. 掌握时序电路的设计与分析方法;4. 运用所学知识设计一个数字电路系统;5. 利用仿真工具对设计方案进行验证;6. 实现设计方案并进行实验验证。
四、任务描述本课程设计要求学生设计一个简单的计数器电路。
具体要求如下:1. 采用基本的逻辑门电路实现一个4位二进制计数器;2. 计数范围为0-15,即0000-1111;3. 采用同步时序电路设计,使用时钟信号进行计数;4. 采用JK触发器作为计数器的存储单元;5. 设计一个使能信号,用于控制计数器的启停;6. 使用仿真工具验证设计方案的正确性;7. 实现设计方案并进行实验验证。
五、实施步骤本课程设计的实施步骤如下:1. 确定设计方案:根据任务描述,确定计数器电路的设计方案,包括逻辑门的选择、触发器的配置等。
2. 绘制电路图:使用电路设计软件,绘制计数器电路的电路图,包括逻辑门、触发器、时钟信号、使能信号等。
3. 进行仿真验证:使用仿真工具,对设计方案进行仿真验证,检查计数器电路的功能和性能是否满足要求。
4. 优化设计方案:根据仿真结果,对设计方案进行优化,以提高电路的性能和可靠性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、课程设计概述 (3)1 课设目的 (3)2 实验环境 (3)3 设计任务与要求 (3)二、设计原理 (3)1 MIPS概述 (3)2 MIPS指令简介 (3)3 经典5段RSIC流水线结构 (4)三、设计内容 (5)1 指令选取 (5)2 非流水5段CPU模型 (6)3 流水5段CPU模型 (8)四、实现内容与测试结果 (12)1 各模块功能 (12)2控制信号 (12)3指令操作流程 (13)4指令执行状态转换图 (14)5引脚绑定 (15)6测试程序 (15)7测试结果与仿真图 (16)五、课设总结 (17)1课设中遇到的问题 (17)2课设经历 (17)3课设感想 (18)4小组分工 (18)参考文献 (18)一、课程设计概述1.课设目的①掌握硬件描述语言与开发环境,了解硬件开发地基本过程。
②掌握流水线CPU设计方法。
③锻炼学生简单计算机系统的设计能力,并通过进行主机系统低层电路的实现、故障分析与定位、系统调试等环节的锻炼,进一步提高了学生分析和解决问题的能力。
2.实验环境①Xilinx ISE 14.2②Spartan3E实验板一块3.设计任务与要求课程设计的主要任务是设计一台支持流水线的简单计算机系统并调试通过。
要求所设计的计算机系统能正确地执行存放在指令cache中的程序的功能。
本设计基于MIPS的32位流水线架构,设计过程中力图尽可能的遵循原有的MIPS的功能和指令集。
基本做到与MIPS指令集的兼容。
具体要求包括:①支持算术运算,逻辑运算,存储器读写,寄存器间数据传送等几类指令。
②支持立即数寻址,直接寻址,寄存器寻址等几种基本的数据寻址方式和顺序寻址、跳跃寻址两种指令的寻址方式。
③支持10条或以上的指令。
④能运行由自己所设计的指令系统构成的一段程序,程序执行功能正确。
⑤具有完整的五级流水线架构。
采用独立的32位的数据总线和地址总线。
二、设计原理1.MIPS概述MIPS是高效的RISC体系结构中最优雅的一种体系结构。
其中文意思为“无内部互锁流水级的微处理器”,其机制是尽量利用软件办法避免流水线中的数据相关问题。
它最早是在80年代初期由斯坦福大学Hennessy教授领导的研究小组研制出来的。
MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。
这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
本设计将参考MIPS的CPU设计以实现自己的五段流水线CPU设计,并部分实现MIPS32指令集2.MIPS指令简介2.1 MIPS指令集特点MIPS指令集具有以下特点:①简单的LOAD/STORE结构。
所有计算类型指令均从寄存器组中读取数据并把结果写入寄存器组中。
只有LOAD和STORE指令访问存储器(数据cache)。
②易于流水线CPU的设计。
MIPS指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。
③易于编译器的开发。
一般情况下,编译器在编译高级语言程序时,很难用到复杂的指令。
MIPS 指令的寻址方式与操作非常简单,便于编译器的开发。
2.2 MIPS 指令格式在本次课程设计中,在数据类型上只支持整数类型,在指令格式上直接R 、I 和J 型指令。
以下是对三型指令的简介[1]:① R (register )类型的指令从寄存器组中读取两个源操作数,计算结果写回寄存器组。
② I (immediate )类型的指令使用一个16位的立即数作为一个源操作数。
③ J (jump )类型的指令使用一个26位立即数作为跳转的目标地址。
三型指令的格式如图1所示,其中: ① op 表示指令操作码。
② rs 为源操作数的寄存器号。
③ rd 为目的寄存器号,RT 既可为源寄存器号,也可为目的寄存器号。
④ funct 可认为是扩展的操作码。
⑤ shamte 由移位指令使用,定义移位位数。
⑥ Immediate 是16位立即数,根据指令需求进行无符号或有符号扩展。
⑦ Address 是26位立即数,由J 型指令使用,用于产生跳转的目的地址。
655166555566263126 2521 2016 1503126 2521 2016 15011 106 53126 25(a)I 类指令(b)R 类指令(c)J 类指令图1. MIPS 的指令格式3. 经典5段RSIC 流水线结构经典的5段RISC 流水线如图2。
IF 段ID 段EX 段MEM 段WB 段图2. 经典5段RISC 流水线在该结构中一条指令的执行过程分为以下5个时钟周期:①取指令周期(IF):以程序计数器PC中的内容作为地址,从存储器中取出指令并放入指令寄存器IR;同时PC值加4(假设每条指令占4个字节),指向顺序的下一条指令。
②指令译码/读寄存器周期(ID):对指令进行译码,并用IR中的寄存器地址去访问通用寄存器组,读出所需的操作数。
③执行/有效地址计算周期(EX):在这个周期,ALU对在上一个周期准备好的操作数进行运算或处理。
不同指令所进行的操作不同。
④存储器访问/分支完成周期(MEM):load指令用上一个周期计算出的有效地址从存储器中读出相应的数据;store指令把指定的数据写入这个有效地址所指出的存储器单元;分支指令若分支成功就把钱一个周期中计算好的转移目标地址送入PC,否则不进行任何操作;其他类型的指令在该周期不做任何操作。
⑤写回周期(WB):把结果写入通用寄存器组。
本设计基于该经典5端流水线结构完成了MIPS的一种简单实现,并在此基础上加入了对流水线冲突(数据冲突,控制冲突)的处理,以及对中断的处理。
三、设计内容1.指令选取本系统能执行16条MIPS指令,指令基本情况如表1所示。
表1. 系统支持的MIPS指令集从指令类型来讲,这16条指令覆盖了算逻运算、访存、无条件跳转和有条件跳转,已基本覆盖一个指令集所需的所有基本指令。
从寻址方式来讲,这16条指令覆盖了寄存器寻址(R-TYPE指令),立即数寻址(I-TYPE 指令),基址偏移量寻址(LW/SW),直接寻址(J)。
16条MIPS指令并不是本设计的极限,只是受到实验板资源的限制,我们仅仅完成了MIPS32指令集中的16条而已。
本设计通过简单的拓展可以轻松实现整个MIPS32指令集。
2.非流水5段CPU模型2.1 初始数据通路设计往往都是从简单到复杂,循序渐进。
好高骛远则往往求之而不得。
因此我们并没有从流水线模型直接下手,而是首先设计了一个类似经典5段RISC流水线结构的非流水5段CPU模型。
由于不涉及流水,所以所有的指令周期均为单周期,数据通路见图3。
图3. 非流水5段CPU初始数据通路2.2 5段具体操作在这个数据通路上每条指令需要花费5个时钟周期,这5个时钟周期相应的操作如下:2.2.1取指令周期(IF)IR←Mem[PC]NPC←PC+1以PC中的值从指令cache中取出一条指令,放入指令寄存器IR;同时PC值加1,然后放入NPC,这时NPC中的值为顺序的下调指令的地址。
2.2.2指令译码/读寄存器周期(ID)A←Regs[rs]B←Regs[rt]imm←((IR16)16##IR16..31)对指令进行译码,并以指令中的rs和rt字段作为地址访问通用寄存器组,将读出的数据让如A和B寄存器中。
同时IR的低16位进行有符号或者无符号扩展,然后存入Imm寄存器2.2.3 执行/有效地址计算周期(EX)①LW和SW指令ALUo←A+ImmALU将操作数相加形成有效地址,并存入临时寄存器ALUo②R-TYPEALUo←Afunct BALU根据funct字段指出的操作类型对A和B中的数据进行运算,并将结果存入ALUo③I-TYPEALUo←A op ImmALU根据操作码op指出的操作类型对A和Imm中的数据进行运算,并将结果存入ALUo④分支指令ALUo←NPC+ImmALU将临时寄存器NPC和Imm中的值相加得到转移目标的地址,存入ALUo2.2.4 存储器访问/分支完成周期(MEM)①LW和SW指令LW:LMD←Mem[ALUo]即从存储器中读出相应数据,放入临时寄存器LMD中SW:Mem[ALUo]←B即把B中数据写入存储器②分支指令If (cond) PC←ALUo else PC←NPC若cond中的内容为真,则将ALUo中的转移目标地址放入PC,否则PC+1。
2.2.5 写回周期(WB)①R-TYPERegs[rd]←ALUo②I-TYPERegs[rt]←ALUo③LW指令Regs[rt]←LMD2.3 模型优化与最终数据通路在这部分设计的时候我们的跳转指令仅仅实现了JNZQ,因此我们对改分支指令进行了单独的优化。
在图2的设计中若分支失败,则由于新的PC在EX段产生,因此会产生2个时钟周期的延迟。
但实际上可以对这条指令进行单独的改进,将对PC的修改提前到IF段,以便PC值能够快速变化。
经过这样优化后,分支失败则只会产生1个时钟周期的延迟。
改进后的数据通路如图4所示。
图4. 非流水5段CPU最终数据通路3.5段流水CPU模型3.1 初始数据通路在实现了非流水的5段CPU模型后,5段流水CPU模型也就水到渠成了。
只需要在各段之间加入相应的流水寄存器即可。
数据通路如图5。
图5. 5段流水CPU初始数据通路3.2 5段具体操作这部分与非流水的具体操作大致相同,这里不加赘述。
3.3 流水线冲突及解决方案3.3.1 数据冲突如果上一条指令的结果还没有写入到寄存器中,而下一条指令的原操作数又恰恰是此寄存器的数据,那么它所获得的将是原来的数据,而不是更新后的数据,这样的相关问题称为数据相关。
根据在系统结构中学习到的相关知识,在我们的设计中,采用定向(forwarding )技术来解决此类相关问题。
其关键思路是:在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果。
如果能够将该计算结果从其产生的地方(ALU 出口)直接送到其他指令需要它的地方(ALU 的入口),那么就可以避免停顿,如图6。
时间(时钟周期)DADD R1,R2,R3DSUB R4,R1,R5XOR R6,R1,R7AND R8,R1,R9图6. 定向技术3.3.2 控制冲突在流水线中,控制冲突可能会使数据冲突造成更大的性能损失。
执行分支指令的结果有两种,一种是“成功”,PC 值改变为分支转移的目标地址。
另一种则是“失败”,这是PC 的值保持正常递增。
本设计中采用预测分支失败的方法解决控制冲突,即允许分支指令后的指令继续在流水线中流动。
当确定分支是失败时,可以将分支指令看做一条普通指令,流水线正常流动,如表2;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行,如表3。