《自己动手写CPU》-理论篇-第一章
- 理论篇 (1章)
- 第一章 处理器与MIPS
- 1.1 计算机的简单模型
- 1.2 架构与指令集
- 1.3 MIPS指令集架构的演变
- 1.4 MIPS指令集架构简介
- 1.4.1 数据类型
- 1.4.2 寄存器
- 1.4.3 字节次序
- 1.4.4 指令格式
- 1.4.5 指令集
- 1.4.6 寻址方式
- 1.4.7 协处理器CP0
- 1.4.8 异常
理论篇 (1章)
- 介绍指令集架构、VerilogHDL相关知识。
- 计算机的简单组成模型,简单使用模型。指令集架构的作用。OpenMIPS采用MIPS32指令集架构。
- FPGA、VerilogHDL的基础知识。
第一章 处理器与MIPS
1.1 计算机的简单模型
- 计算机的简单组成模型
处理器、输入输出(I/O)、存储器(Memory)
- 处理器:获取存储器中的指令并按指令执行一定的操作
- I/O:提供运算数据,显示结果
- 存储器:存储指令(运算命令)
- 计算机的简单使用模型
1.2 架构与指令集
ISA(指令集架构):设计规范。从硬件系统中抽象出的编程所需要了解的硬件信息。包括指令集和一些寄存器。
微架构:具体实现。
- CISC与RISC(计算机分类)
Complext Instructor of Set Computer:每条指令对应的0、1编码串长度不一。
Reduced Instructor of Set Computer: 长度固定。 - MIPS(无内锁流水线微处理器)架构:
1.3 MIPS指令集架构的演变
1.4 MIPS指令集架构简介
1.4.1 数据类型
- 位-b:1bit
- 字节-Byte: 8bit
- 半字-Half Word: 16bit
- 字-Word: 32bit
- 双字-Double Word: 64bit
- 32位单精度浮点数、64位双精度浮点数
1.4.2 寄存器
- 通用寄存器
- 32个通用寄存器$0、$1…$31,均为32位。
- $0: 常量0
- $31: 存放子程序的返回地址
- 特殊寄存器
- PC(Program Counter 程序计数器)
- HI(乘除结果高位寄存器)
- LO(乘除结果地位寄存器)
- 乘法运算时,HI和LO保存结果,HI存高32位,LO存低32位。
- 除法运算时,HI存储余数,LO存储商。
1.4.3 字节次序
- MSB: 大端模式,数据高位存在存储器的低地址中;{mem[n], mem[n+1], mem[n+2], mem[n+3]}
- LSB
- 本书处理器采用大端模式。
1.4.4 指令格式
- MIPS32架构中所有指令都是32位。
- op-指令码,func-功能码,rs、rt-源寄存器编号,rd-目的寄存器编号,sa-指定移位位数
1.4.5 指令集
- 逻辑操作指令
and、andi、or、ori、xor、xori、nor、lui
逻辑与、或、亦或、或非等 - 移位操作指令
sll、sllv、sra、srav、srl、srlv
逻辑左移、右移、算数右移等 - 移动操作指令
movn、movz、mfhi、mthi、mflo、mtlo
通用寄存器之间以及通用寄存器与HI、LO寄存器之间的数据移动 - 算术操作指令
add、addi、addiu、addu、sub、subu、clo、clz、slt、slti、sltiu、sltu、mul、mult、multu、madd、maddu、msub、msubu、div、divu
加、减、比较、乘、乘累加、除法 - 转移指令
jr、jalr、j、jal、b、bal、beq、bgez、bgezal、bgtz、blez、bltz、bltzal、bne
程序转移到另一个地方执行 - 加载存储指令
lb、lbu、lh、lhu、ll、lw、lwl、lwr、sb、sc、sh、sw、swl、swr
“l-”:加载指令,“s-”:存储指令 - 协处理器访问指令
mtc0,mfc0
对协处理器CP0中某个寄存器进行值的读取和保存 - 异常相关指令
(12条自陷)teq、tge、tgeu、tlt、tltu、tne、teqi、tgei、tgeiu、tlti、tltiu、tnei
系统调用指令syscall、异常返回指令eret - 其余指令
nop(空)、ssnop(特殊空)、sync(保证加载存储操作的顺序)、pref(缓存预取)
1.4.6 寻址方式
寄存器寻址、立即数寻址、寄存器相对寻址、PC相对寻址;
- 寄存器相对寻址:
加载/存储指令使用
- PC相对寻址:
转移指令使用
1.4.7 协处理器CP0
表示处理器的一个可选部件,负责处理指令集的某个扩展,寄存器与处理器的相独立。
- CP0-系统控制-配置CPU工作状态、高速缓存控制、一场控制、存储管理单元控制等
- CP1、CP3-浮点处理单元
- CP2-保留用于特定实现
- 除CP0外的协处理器都是可选的
1.4.8 异常
硬件复位、中断(软、硬)、syscall系统调用、无效指令、溢出、自陷等