自己动手写CPU阅读笔记
文章平均质量分 76
tanfuz
这个作者很懒,什么都没留下…
展开
-
第15章:为OpenMIPS处理器移植uC/OS-II
15.1 为什么需要操作系统操作系统是介于计算机和应用软件之间的一个软件系统,用于掌握计算机上的所有事情,其下是硬件平台,其上是应用软件15.2 嵌入式实时操作系统介绍嵌入式操作系统与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求,预先定义的任务。实时操作系统外界事件或数据产生时,能接收并快速予以处理。分为硬实时和软实时,硬实时要求在规定的实践内必须完成操作,是在操作系统设计时保证的,软实时则只要按照任务的优先级,尽可能快地完成操作即可。目前常用嵌入式实时操作系统有原创 2021-02-17 19:17:50 · 178 阅读 · 0 评论 -
第14章:验证实践版OpenMIPS处理器
本章将上一章实现的小型SOPC下载到实际的FPGA芯片,并运行测试程序。开发平台DE2,Altera公司的CycloneII系列,QuartusII软件14.1 DE2平台简介14.2 测试需要的硬件连接14.3 QuartusII工程建立14.4 测试步骤说明14.5 测试一:GPIO实验14.5.1 测试内容OpenMIPS处理器控制GPIO的输出14.5.2 测试程序14.5.3 编译测试程序14.5.4 将测试程序写入Flash芯片14.5.5 下载小型SOPC到DE原创 2021-02-17 00:16:09 · 201 阅读 · 0 评论 -
第13章:基于实践版OpenMIPS的小型SOPC
本章搭建的小型SOPC包括GPIO模块,UART控制器,Flash控制器,SDRAM控制器等,这些控制器与OpenMIPS处理器都连接到Wishbone总线互联矩阵上。13.1 小型SOPC的结构Wishbone总线共有四中互联方式:点对点、数据流、共享总线、交叉互联。点对点方式中,一般只有一个主设备,一个从设备,但是对于一个片上系统而言,一般存在多个模块,并且摸一个模块能够访问其余多个模块,比如存在CPU、DMA控制器,Flash控制器,SDRAM控制器,GPIO等,其中CPU、DMA控制器作为主原创 2021-02-16 23:49:04 · 408 阅读 · 0 评论 -
第12章:实践版OpenMIPS处理器设计与实现
12.1 实践版OpenMIPS处理器的设计目标但在实际应用中,程序的体积可能非常大,指令存储器不能集成在FPGA内部了,一般使用FPGA芯片外部的Flash作为指令存储器,同理,一般使用FPGA芯片外部的SDRAM作为数据存储器。因此,为了使OpenMIPS实用化,需要为其添加Flash控制器,SDRAM控制器:更进一步,如果要使用FPGA外部SRAM,那么需要再为OpenMIPS添加SRAM控制器,如果要使用串口,那么需要再为OpenMIPSt添加UART控制器。由此出现一个问题,每添加一原创 2021-02-16 12:02:10 · 575 阅读 · 0 评论 -
第11章:异常相关指令的实现
11.1 MIPS32架构中定义的异常类型有些事件要打断程序正常执行流程,这些事件有中断,陷阱,系统调用以及其他任何可以打断程序正常执行的情况,统称为异常。OpenMIPS只实现了对其中6中异常情况的处理:硬件复位中断系统调用无效指令溢出自陷指令引发的异常异常发生后,会进入异常处理例程尽心具体的异常处理,处理结束后,返回到异常发生前的状态继续执行。硬件复位是一种特殊的异常,特殊之处在于不用从异常处理例程返回,所以不用考虑保护现场,也不用保存返回地址,OpenMIPS对硬件复位异常的原创 2021-02-15 23:59:21 · 1375 阅读 · 0 评论 -
第10章 协处理器访问指令的实现
10.1 协处理器介绍协处理器通常表示处理器的一个可选部件,负者处理指令集的某个扩展,具有与处理器核独立的寄存器。MIPS32架构提供了最多4个协处理器,分别是CP0~CP3,作用:CP1、CP3用作浮点处理单元,CP2保留,除CP0外的协处理器都是可选的,OpenMIPS没有实现浮点运算,所以CP1,CP3不用实现,CP2也没有作用,而CP0是必须实现的。截至本章,我们的OpenMIPS处理器实现了很多指令,但是这些指令都是用来运算的,实际的处理器还要支持其他广泛的操作,例如:中断处理,提供可选原创 2021-02-15 21:04:19 · 1146 阅读 · 1 评论 -
第9章:加载存储指令的实现
9.1 加载存储指令说明MIPS32指令集架构中定义的了8条加载指令、6条存储指令9.1.1 加载指令lb、lbu、lh、lhu、lw说明9.1.2 存储指令sb、sh、sw说明9.1.3 加载存储指令用法示例OpenMIPS处理器是按照字节寻址,并且是大端模式,在这种模式下,数据的高位保存在存储器的低地址中,而数据的低位保存在存储器的高地址中。9.2 加载存储指令实现思路9.2.1 数据流图的修改9.2.2 系统结构的修改9.3 修改OpenMIPS以实现加载存储指令9原创 2021-02-15 19:14:45 · 537 阅读 · 0 评论 -
第8章:转移指令的实现
转移指令包括跳转、分支两种,区别在于前者是绝对转移,后者是相对转移,但实现方法是相似的。转移指令设计延迟槽8.1 延迟槽第五章介绍了流水线中存在的三种相关:数据相关、结构相关、控制相关。其中控制相关是指流水线中的转移指令或者其他需要改写PC的指令造成的相关。这些指令改写了PC的值,所以导致后面已经进入流水线的其他几条指令无效,比如:如果转移指令在流水线的执行阶段进行转移条件判断,在发生转移时,会导致当前处于取指、译码阶段的指令无效,需要重新取指。即流水线执行阶段进行转移判断,并且转移发生.原创 2021-02-15 12:34:45 · 503 阅读 · 1 评论 -
第7章:算术操作指令的实现
(1)简单的算术操作指令:15条(2)乘累加、乘累减指令(3)除法指令7.1 简单算术操作指令说明add、addu、sub、subu、slt、sltu指令addi、addiu、slti、sltiuclo、clz指令multu、mult、mul指令7.2 简单算术操作指令实现思路根据不同的功能码确定执行不同的算术操作修改OpenMIPS以实现简单算术操作指令7.3.1 修改译码阶段的ID模块7.3.2 修改执行阶段的EX模块7.4 测试简单算术操作指令实现效果7.5 流水线暂原创 2021-02-14 18:04:01 · 488 阅读 · 0 评论 -
第6章:移动操作指令的实现
6.1 移动操作指令说明MIPS32指令集架构中定义的移动操作指令共有6条:6.2移动操作指令实现思路movn、movz指令实现思路mthi、mtlo指令实现思路mfhi、mflo指令实现思路6.2.1 新的数据相关情况的解决6.2.2 系统结构的修改6.3 修改OpenMiPS以实现移动操作指令6.3.1 HI、LO寄存器的实现6.3.2 修改译码阶段的ID模块6.3.3 修改执行阶段修改EX模块修改EX/MEM模块6.3.4 修改访存阶段修改MEM模块修改M原创 2021-02-13 17:23:48 · 197 阅读 · 0 评论 -
第5章:逻辑、移位操作与空指令的实现
5.1 流水线数据相关问题结构相关:由于硬件资源满足不了指令执行的要求,发生硬件资源冲突而产生的相关。比如,指令和数据都共享一个存储器,在某个时钟周期,流水线既要完成某条指令对存储器中数据的访问操作,又要完成后续的取指令操作,这样就会发生存储器访问冲突,产生结构相关。数据相关:流水线中执行的几条指令中,一条指令依赖前面指令的执行结果。控制相关:流水线中的分支指令或者其他需要改写PC的指令造成的相关。本节重点讨论数据相关的问题,分三种情况:RAW,WAR,WAW(1) RAW: read af原创 2021-02-10 20:04:38 · 276 阅读 · 0 评论 -
第4章:第一条指令ori的实现
4.1 ori指令说明ori指令格式:索引为rs的通用寄存器的值与扩展后的立即数进行or运算,结果存储到rt(1) 符号扩展(2)通用寄存器32个通用寄存器,使用某个通用寄存器只需要给出相应的索引,索引占用5bit4.2 流水线结构的建立4.2.1 流水线的简单模型寄存器输出端与输入端存在环路,则这样的电路称为状态机,寄存器之间有连接,无环路,这样的电路结构称为流水4.2.2 原始的OpenMIPS五级流水线结构4.2.3 一些宏定义提升代码的可读性4.2.4原创 2021-02-10 02:42:32 · 3798 阅读 · 3 评论 -
第3章:教学版OpenMIPS处理器蓝图
3.1 系统设计目标3.1.1 设计目标该书第二篇设计实现教学版OpenMIPS处理器,是一款具有哈佛结构的32位标量处理器,好处是:五级整数流水线:分别是取指,译码,执行,访存,会写哈佛结构,分开的指令,数据接口32个32位整数寄存器大端模式向量化异常处理,支持,精确异常处理支持6个外部中断具有32bit数据,地址总线宽度能实现单周期乘法支持延迟转移兼容MIPS32指令集架构大多数指令可以在一个时钟周期内完成3.1.2 五级流水线取指令时间过长:有可能取指令的时间不原创 2021-02-09 11:31:10 · 242 阅读 · 0 评论 -
第2章:可编程逻辑器件与Verilog HDL
2.1 可编程逻辑器件概述FPGA是可编程逻辑器件(PLD)的一种,多种工艺,不同原理的PLD如下:PLA:可编程逻辑阵列PAL:可编程阵列逻辑GAL:通用阵列逻辑PROM:可编程只读存储器EPLD:可擦除可编程逻辑器件CPLD:复杂可编程逻辑器件FPGA:现场可编程门阵列基于乘积项结构的PLD器件原理上可实现任意的数字逻辑电路绝大多数PLD都采用乘积项多采用EEPROM或Flash工艺制作,掉电后不会丢失配置数据,器件规模一般小于5000门基于查找表结构的PLD器原创 2021-02-09 00:13:09 · 1181 阅读 · 1 评论 -
第1章:处理器与MIPS
1.1 计算机的简单模型1.1.1 计算机的简单组成模型3大部分:处理器(cpu),输入输出(IO),存储器(memory)1.1.2 计算机的简单使用模型1.2 架构与指令集IBM引入指令集架构(ISA)的概念,解决不同处理器之间软件代码不兼容的问题,将不同处理器的硬件信息从硬件系统中抽象出来,软件人员面向ISA编程微架构的概念:微架构是ISA的一个实现,比如x86(intel)同样的ISA,不同的微架构,会带来不同的性能1.2.1 CISC与RISC根据ISA不同将计算机原创 2021-02-08 21:43:55 · 284 阅读 · 1 评论