10. 处理器的设计步骤

1. 处理器的设计步骤

<1> 分析指令系统,得出对数据通路的要求。所谓数据通路,就是指令所要操作的数据,需要通过怎样的电路结构。

<2> 为数据通路选择合适的组件,例如加法器、寄存器等

<3> 连接组件,建立数据通路

<4> 分析每条指令的实现,以确定控制信号

<5> 集成控制信号,形成完整的控制逻辑

2. 简化的MIPS指令系统

我们为了学习的目的,只考虑以下几个MIPS指令,

2.1 无符号加法和减法指令

addu rd,rs,rt

subu rd,rs,rt

R型指令的指令位域

2.2 立即数的逻辑或

ori rt,rs,imm16

I型指令的指令位域

2.3 lw和sw指令

lw rt,imm16(rs)

sw rt,imm16(rs)

2.4 条件分支

beq rs,rt,imm16

3. 指令的含义

3.1 指令位域的分解

对于R型指令,

R型指令的位域分解

对于I型指令,

I型指令的位域分解

因此,我们需要一个支持可读的指令存储器,不需要写入功能,只读就行,输入给指令存储器一个32-bit的地址,就能输出对应地址的32-bit指令。因此还需要一个32-bit寄存器,存储这个指令的地址,即程序计数器PC。

3.2 指令的操作

分析addu和subu指令的操作,执行这两条指令需要,

<1> 一组存放数据的32-bit通用寄存器,在MIPS中一共有32个这样的寄存器,称为寄存器堆

<2> 可以同时读取两个寄存器的内容,rs和rt

<3> 可以改写一个寄存器的内容,rd或rt(rt是因为ori指令的结果会改写rt寄存器的值)

无符号加法和减法指令的操作

<4> 将16-bit立即数扩展为32-bit,扩展方式为零扩展

<5> 提供加、减、逻辑或这三种功能的运算器

<6> 运算的操作数可以是寄存器,也可以是扩展后的立即数

ori指令的操作

<7> 一个存放数据的存储器,可读可写,地址和数据都是32-bit

<8> 对16-bit立即数进行扩展,扩展方式为符号扩展

lw和sw指令的操作

<9> 比较两个数,判断是否相等

<10> PC寄存器支持两种自增方式,加4或加一个立即数

beq指令的操作

3.3 指令系统的需求

<1> 算术逻辑单元ALU,支持加、减、或、比较相等,操作数是2个32-bit的数,可以来自寄存器,也可以是扩展后的立即数

<2> 立即数扩展部件,16-bit扩展为32-bit,可以是零扩展或符号扩展

<3> 程序计数器PC,32-bit寄存器,支持两种加法,加4或加立即数

<4> 寄存器堆,32个32-bit寄存器,支持读操作,可以同时读2个寄存器rs和rt,支持写寄存就,1次可以写1个rt或rd,俗称两读一写的寄存器堆

<5> 两个存储器,一个是只读的指令存储器,地址和数据都是32-bit,一个是数据存储器,可读可写,地址和数据也都是32-bit。注意这两个存储器对应CPU内部的指令和数据Cache。

3.5 寄存器堆

<1> busA, busB: 两组32-bit的数据输出

<2> busW: 32-bit数据输入

寄存器堆的示意图

寄存器的读写控制:

<1> Ra(5-bit): 选中对应编号的寄存器,将其内容放在busA上

<2> Rb(5-bit): 选中对应编号的寄存器,将其内容放在busB上

<3> Rw(5-bit): 选中对应编号的寄存器,在时钟信号上升沿到来时,如果写使能WriteEnable信号为高电平,即写使能有效,就把busW的内容写入寄存器。

<4> 注意:读寄存器是不受时钟信号控制的,只要有Ra或Rb,其内容就会出现在busA和busB上

3.6 存储器

存储器功能和寄存器堆的功能类似,可以理解为一读一写。

存储器示意图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容