本系列博文将使用verilog语言,实现兼容MIPS32指令集架构的处理器——OpenMIPS,MIPS是典型的RSIC处理器。本系列博文参考雷思磊老师的《自己动手写CPU》,袁春风老师主编的《计算机组成与系统结构》。本博文在书中已有的内容不给出介绍,除非一些笔者认为特别有必要的理论知识,建议结合书记一起学习。本博文记录博主的过程所学,记录供方便查阅及反思。会沿着博主学习的思路,做希望能完整个系列。若博文中错误,是笔者自身理解有误,欢迎指出!!感谢~

计算机的发展历程

  • 第一代计算机为电子管计算机。是1946年诞生于美国的ENIAC,是美国军方定制,专门为了计算弹道和射击特性表面而研制的。

附录
“储存程序”基本思想
这里主要值得重视的,是冯·诺依曼的“储存程序”基本思想。必须将是事先编写好的把程序和数据通过输入输出设备送入内存,一旦程序执行,计算机能不在操作人员的干预下自动完成逐条取出并执行指令的任务。“储存程序”计算机被称为ISA计算机,其包括:算数逻辑单元,程序控制器,主存储器以及输入输出设备。整个计算机以主存储器为核心,程序首先输入到运算器,然后保存到主存,程序运行时,从主存调出指令,在程序控制器和运算器中执行,执行的中间结果送主存保存,结果送到输出。

  • 第二代计算机为晶体管计算机
  • 第三代计算机为集成电路计算机
  • 第四代计算机为超大规模集成电路计算机

计算机系统的基本组成

计算机系统有用硬件和软件两部分组成。硬件:具体物理装置的总称。软件:包括运行在硬件的程序和数据以及相关文档。程序即为指令序列,数据位指令操作的对象。
绝大部分计算机具有冯诺依曼结构计算机的特性。
(1)采用程序储存式的工作方式
(2)计算机由运算器(数据通路),控制器,存储器,输入输出设备五个基本部件组成。
(3)存储器,用于存放指令以及数据,且计算机可以对其进行区分,控制器,能控制指令自动的执行,运算器,进行运算,操作人员可以通过输入输出使用计算机。

计算机硬件主要包括中央处理器,储存器,I/O控制器,外部设备和总线。
这里笔者需要完成的是中央处理器。中央处理器包括两个部分,数据通路和控制器。
数据通路:用于执行所属逻辑运算(简单理解就是一个计算器,用于进行数据的运算)
控制器:对指令进译码,控制数据通路(对于指令进行译码,对于不同的指令进行相应的处理)

计算机系统的层次化结构


ISA是整个计算机系统的核心部分。(Instruction set architecture)可以认为是软硬件接口。软件不可见。软件的编程语言借助程序翻译,将软件程序翻译为机器语言程序。

指令集与架构

根据ISA的不同将其分为
RISC(Reduced instruction set computer)精简指令集计算机
CISC(Complex Instruction Set Computer)复杂指令系统计算机
按指令格式的复杂度进行分类。可以分为CISC和RISC。其中CISC使得指令的功能更接近软件语言的功能,给如给软件提供更好的支持,故此,其指令集复杂,指令周期长,指令周期差距大,难以进行编译优化。
而RISC简化指令使得计算机结构更加合理。指令少,指令格式规整,采用流水线方式执行指令…
两者各有优劣。笔者实现的是RISC的典型代表OpenMIPS。

指令格式

指令分为R-型,I-型以及J-型。指令的格式如下:

R-型指令,是RR型指令,其操作码为000000,操作类型有func字段指定,rs以及rt作为第一第二源操作数,运算结果总之寄存器rd。根据不同的指令可能会进行不同的操作。例如移位计算,由shamt表明移位的位权。
I-型指令(立即数型指令),rs以及立即数作为源操作数,结果送至rs。若是条件转移指令,需要通过立即数进行寻址。
J-型指令。主要是无条件跳转指令。
这里对于指令大概有一个简单的认识。便于以后添加描述。

MIPS中的寄存器

通用寄存器



特殊寄存器

寻址方式

verilog实现多周期处理器之——(一)基本概念以及总体框架相关推荐

  1. verilog实现多周期处理器之——目录及总述

    本系列博文将使用verilog语言,实现兼容MIPS32指令集架构的处理器--OpenMIPS,MIPS是典型的RSIC处理器.主要依据雷思磊老师的<自己动手写CPU>,袁春风老师主编的& ...

  2. verilog实现多周期处理器之——(六)简单算数操作指令的实现

    实现的指令说明 这里解释有符号扩展与无符号扩展,有符号数扩展符号位.也就是1,无符号数扩展0.也就是在前面补满零或1 R-型指令 加减比较指令 add.addu.sub.sub.slt.sltu 这6 ...

  3. verilog实现多周期处理器之——(五)移动操作(通用数据传送)指令的实现

    本文参考作者 自己动手写CPU之第六阶段(1)--移动操作指令说明 自己动手写CPU之第六阶段(2)--移动操作指令实现思路 本文会添加笔者自己的思路以及理解在其中. 指令说明 这6条指令都是R类型指 ...

  4. verilog实现多周期处理器之——(四)逻辑,移位操作与空指令的添加

    逻辑,移位操作与空指令的添加 综述 ID模块的修改 EX模块的修改 仿真验证 I-型指令 lui ori andi xori xor&nor R-型指令 or and 移位类指令 sll sr ...

  5. verilog实现多周期处理器之——(三)数据相关问题及其解决

    本文于自己动手写CPU之第五阶段--流水线数据相关问题 "相关"问题 流水线中常常有一些被称为"相关"的情况发生,它使得指令序列中下一条指令无法依照设计的时钟周 ...

  6. verilog实现多周期处理器之——(二)第一条指令ori的实现

    本博文希望对于OpenMIPS第一条指令ori加以实现并总结.会加入一些基本的理论以及博主的学习记录. 流水与五级流水 什么是流水:拆分,并行.将多条指令的执行相互重叠起来.就构成了流水,这样充分利用 ...

  7. verilog实现多周期处理器之——(零)GUN工具链的安装

    参考雷思磊老师得<自己动手写CPU> 这里不需要下载书中说的虚拟机,这里笔者用的是VMware.不需要破解,直接安装点击选择仅用于非商业即可使用!! 安装Ubuntu这里笔者不给出步骤. ...

  8. java camel exchange类_Exchange服务器之camel 基本概念

    本文将带你了解Exchange服务器之camel 基本概念,希望本文对大家学Exchange有所帮助. camel 对exchange的几种处理consuming方式: 1. bean 2. bean ...

  9. verilog搭建单周期CPU与流水线CPU

    目录 实现功能与搭建环境介绍 单周期CPU 整体框图 具体代码 顶层模块 取值 译码 执行 访存 写回 流水线CPU 整体框图 前置知识及思路探讨 如何让流水线流起来~ Hazard_detect模块 ...

最新文章

  1. 计算机编程书籍-笨办法学Python 3:基础篇+进阶篇
  2. keep-alive的深入理解与使用(配合router-view缓存整个路由页面)
  3. Android记事本开发02
  4. linux c 下信号量 windows下event_windows和linux下配置jdk环境
  5. 李开复:天才将占领创业领域
  6. 请用JavaScript实现一个函数,接受一-个IP白名单列表whitelist以及列表ipList
  7. 使用Bootstrap开发网站首页
  8. 小波阈值去噪原理及实现
  9. 小程序使用微信地址or小程序跳转设置页
  10. 【Flink】双亲委派模型与Flink的类加载策略 child-first parent-first
  11. Frequentist 观点和 Bayesian 观点
  12. postgresql开启历史查询记录日志
  13. LINUX下载编译signalwire-c
  14. 网络编程在线英英词典之历史查询模块(六)
  15. 论文查重报告橙色和红色是什么意思?
  16. 移动web网页开发——动画
  17. MATLAB/Simulink当真,开环Buck、闭环Buck、双闭环Buck仿真;开环控制的半桥LLC谐振变换器,全桥LLC谐振变换器和电压闭环控制的半桥LLC
  18. 奥鹏20春季1903C语言,奥鹏20春学期《并行程序设计》在线作业
  19. 怎么获取api key?
  20. 车路协同先导试验平台

热门文章

  1. “Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
  2. 使用spring session+redis技术,解决负载均衡下的session共享问题
  3. 前端开发如何独立解决跨域问题
  4. Markdown:继续编号列表
  5. BIO,Socket网络编程入门代码示例,NIO网络编程入门代码示例,AIO 网络编程
  6. POI报表入门,excel,使用事件模型解析百万数据excel报表
  7. Restful风格实现页面之间跳转PageController
  8. 小程序中的css样式有哪些,微信小程序中css样式media标签
  9. 计算机备份记录陶瓷厂,陶瓷企业管理软件生产系统历史数据归档 | 了得信息技术...
  10. postgre管理员 无法访问表_PostgreSQL常见问题处理方法