计算机组成原理CPU设计

87 篇文章 0 订阅

转自:微点阅读  https://www.weidianyuedu.com/content/3117806363543.html

1 cPU的用途

字长:8位 D[7…0]

寻址范围:64byte,2的6次方=64,A[5…0]

2 确定ISA(包括程序员可访问的寄存器)

1)程序员可访问的寄存器 Ac—8位累加器 cPU的指令集(共4条) 指令 coM JREL oR SUB1 AR Pc DR IR 2)其他寄存器 地址寄存器 程序计数器 数据寄存器 指令寄存器 6位 6位 8位 2位 由A[5…0]向存贮提供地址 指向下一条指令的地址 通过D[7…0]从存贮器接收指令和数据 存放从存贮器中取回的指令的操作码部分 操作码 00XXXXXX 01XXXXXX 10XXXXXX 11AAAAAA 操作 Ac←Ac’(取反) Pc←Pc+00AAAAAA Ac←Ac∨M[00AAAAAA] Ac←Ac-M[00AAAAAA]-1

3 cPU设计状态图 为了确定cPU的状态图,对每条指令作以下分析

1) 从存贮器中取指令(所有指令均相同)

原理:在cPU能执行指令之前,它必须从存贮器中取出,cPU通过执行如下的操作序列完成这个任务

A) 选择存贮单元由A[5…0]确定 B) 对工A[5…0]译码,延迟,并向存贮器发一个信号使存贮器将此指令输出

到它的输出引脚。这些引脚与cPU的D[7…0]相连。cPU从这些引脚读入数据。

具体操作:(分为三个状态)

A)要取的指令的地址存放在程序计数器(Pc)中。第一步就是把Pc的内容拷贝到AR中。

FETcH1:AR←Pc

B)cPU必须从存贮器中读取指令,为此cPU必须发一个READ信号到器的RD(RD-RAM,相对于oE-RoM)端上使存贮器将数据发送到D[7…0]上,存入cPU的DR寄存器中。同时实现Pc←Pc+1,为取下一条指令作准备。 FETcH2:DR←M,Pc←Pc+1

c) 作为取指令的一部分,cPU还必须完成两件事。

① DR的高2位拷贝到IR,目的是确定指令的功能 ② DR的低6位拷贝到AR,目的:

a. 对于oRT和SUB1指令这6 位包含了指令的一个操作数的存贮器地址(一个数已经在Ac)

b. 对于coM和JREL,它们不需要再次访问存贮器,一旦它们返回

- 1 -

到FETcH1周期,FETcH1将把Pc的值装到AR,覆盖无用的值。

FETcH3:IR←DR[7,6], AR←DR[5…0] 取指令周期的状态图 FETcH1 FETcH2 FETcH3

2) 指令译码(每条指令的操作码都是唯一的)

本cPU有四条指令,因此有四个不同的执行同期,为此用IR中的值来确定即可。

FETcH1 FETcH2 FETcH3 IR=00 IR=01 coM执行周期 JREL执行周期 IR=10 oR执行周期 IR=11 SUB1执行周期

3) 指令执行(每条指令的执行周期都是一样的)

每条指令的执行周期的状态分析: 1.coM指令 功能是对Ac的内容取反,执行周期的状态是 coM1:Ac←Ac’ 2. JREL指令

代码为01AAAAAA,即转移的相对地址由AAAAAA确定,而AAAAAA在DR[5…0]中,所以有 JREL1:Pc←Pc+ DR[5…0] 3.oR指令 为了执行指令,必须完成两件事情

oR1:DR←M;从存贮器取出一个操作数送到数据寄存器 oR2:Ac←Ac∨DR;与Ac相或,并把结果存回Ac中

4. SUB1指令 为了执行指令,必须完成两件事情

- 2 -

SUB11:DR←M;从存贮器取出一个操作数送到数据寄存器 SUB12:Ac <- Ac + DR";对DR取反,等于-DR-1 综上所述可知cPU的完全状态图如下

FETcH1 FETcH2 FETcH3 IR=00 IR=01 coM1 JREL1 IR=10 oR1 IR=11 SUB11 oR2 SUB12 4 设计必要的数据通路和控制逻辑,以便实现这个有限状态机,最终实现这个cPU。 状态图以及寄存器的传输说明了实现本cPU所须完成工作(方法和步骤如下) 1) 与cPU的每个状态相关联的操作(共九个状态)

FETcH1:AR←Pc

FETcH2:DR←M,Pc←Pc+1 FETcH3:IR←DR[7,6], AR←DR[5…0] coM1: Ac←Ac’

JREL1: Pc←Pc+ DR[5…0]

oR1: DR←M;

oR2: Ac←Ac∨DR; SUB11: DR←M;

SUB12: Ac <- Ac + DR"

2) 建立数据通路的原理和方法

A. 存贮器是通过引脚D[7…0]将数据送给cPU。 B. 存贮器的地址是通过地址引脚A[5…0]从AR中获得的。于是cPU与存贮器之间要

A[5…0](地址)和D[7…0](数据)通路,如下图

- 3 -

M 8 6 D[7…0] 8 A[5…0] 6 6 AR 6 6 6 Pc 6 6 8 8 DR 8 8 8 Ac 2 IR 8 2 2 cLK

3) 总线类型的确定方法

原理:首先把操作数重新分组,依据是指导修改同一个寄存器的操作分配在同一组。 AR:AR←Pc ,AR←DR[5…0]

Pc:Pc←Pc+ DR[5…0],Pc←Pc+1 DR:DR←M, IR:IR←DR[7,6],

Ac:Ac <- Ac + DR",Ac←Ac∨DR,Ac←Ac’ 决定每个部件应完成的功能 a> AR, DR, IR,Ac

总是从其他一些部件中装入数据。若数据已在总线上,则需要做的是能够执行并装入操作。(LD端口分别是ARLoAD,DRLoAD,IRLoAD,AcLoAD信号同步装入) b> Pc

能从其他一些部件中装入数据,还有相应的自增(Inc)当前值,所以应创建一个单独的硬件使之能自增。(端口有PcInc,PcLoAD)

- 4 -

4) 把每个部件都连接到系统总线上

三态缓冲区——原有的寄存器部是把结果输出到系统总线,使cPU内部数据冲突,所以应增加三态缓冲区加以控制,但AR的输出还应与A[5…0]相接,这是寻址所需。 5) 根据实际需要修改上图的设计,并加上适当控制信号名称

1. AR :仅向存贮器提供地址,没有必要将它的输出连接到内部总线上,加上

ARLoAD实现从BUS装入数据。

2. AR←Pc :保留三态缓冲器由PcBUS控制同步

3. IR : 不通过内部总线向任何其他部件提供数据,而IR的输出将直接送到控

制器用于确定指令的功能

4. Ac:本cPU不向其他任何单位提供数据

5. DR[7…0] :不统一,有6位也有2位宽度,必须确定哪些寄存器从总线的哪

些位上接收和发送数据。应有DRBUS实现同步。DRLoAD实现LD

6. Ac:必须能装载Ac + DR"的和,以及Ac∨DR与Ac’的逻辑与结果。cPU必

须包含一个能产生这些结果的ALU,并由AcLoAD实现装入。 7. Pc:必须能装载Pc+ DR[5…0]的和。cPU必须包含一个能产生这些结果的ALU

并由PcLoAD实现载入,而PcInc实现Pc←Pc+1

READ M 6 MEMBUS D[7…0] 8 A[5…0] 6 AR 6 ARLoAD ALU1 6 PcBUS 6 Pc PcLoAD PcInc DR 8 6 8 DRBUS 8 6 DRLoAD 8 Ac ALU2 8 ALUS1 ALUS2 AcLoADIR IRLoAD cLK 2 - 5 -

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值