您好,欢迎来到九壹网。
搜索
您的当前位置:首页计算机组成原理CPU设计

计算机组成原理CPU设计

来源:九壹网
1 CPU的用途

字长:8位 D[7…0]

寻址范围:byte,2的6次方=,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 DRLOAD 8 AC ALU2 8 ALUS1 ALUS2 ACLOADIR IRLOAD CLK 2 - 5 -

ALU的设计

1) ALU1(与PC相连)的设计

数据通路的分析:功ALU1必须接收PC和DR作为输入,然后把运算结果输出到PC

实现PC←PC+ DR[5…0]

在本CPU中,把PC的导线和ALU的输入输出相连起来,并且利用系统总线把DR和ALU的输入连接起来。

用计数器来实现PC←PC+1操作,就可以在FETCH2内完成,因为计数器不必占用总线的时间。

6 PC PARALLEL ADDER 6 TO PC

DR From bus 6 D[5…0]

2) ALU2(与AC相连)的设计

在本ALU的设计中AC和ALU的输入输出连接,并且利用系统总线把DR和ALU和输入相连起来。

AC 8 8 8 0 M 1 U X 2 8 8 TO AC 8 8 PARALLEL ADDER 8 8 8 ALUS1 ALUS2 DR

From bus

(

[ALUS1,ALUS2]=[0,0], 选AC←AC’, [ALUS1,ALUS2]=[0,1],选AC←AC∨DR, [ALUS1,ALUS2]=[1,0],选AC <- AC + DR', )

- 6 -

用硬布线的方法设计控制器

组成: 计数器:保存当前状态

共有9个状态(四条指令,共有9个状态)所以需要一个四——16位译码器,译码器中有7个状态没用到。 译码器:接收当前状态并为每个状态生成单独的信号 逻辑组合:接受单独的状态信号,为每一部件生成控制信号以及计数器的控制信号 原理图: 输入 计 数 器 LD INC CLR 译 码 器 逻 辑 控制信号 计数器与译码器的设计:

1. FETCH1状态:规定计数器的0值,使用计数器的CLR=1到达这一状态。(指令执行完毕后,转入的取址状态。)

2. 将顺序状态设定为计数器的连续值,用INC实现。 3 利用IR映射1 [IR]0来确定指令的执行 如下表 IR 00 01 10 11 计数值 1000 1010 1100 1110 状态 COM1 JREL1 OR1 SUB1 指令的执行

FETCH1――――――――――――――――0 FETCH2――――――――――――――――1 FETCH3――――――――――――――――2 COM1: ――――――――――――――――8 JREL1:――――――――――――――――10 OR1: ――――――――――――――――12 OR2: ――――――――――――――――13 SUB11:――――――――――――――――14 SUB12:――――――――――――――――15

- 7 -

1IR[1..0]0 4 COUNTER LD INC CLR 4 0 1 2 DECODER 8 . 10 12 13 14 15 FETCH1 FETCH2 FETCH2 COM1 JREL1 OR1 OR2 SUB11 SUB12 FETCH1 FETCH2 OR1 SUB11 FETCH3 COM1 JREL1 OR2 SUB12 计数器控制信号的确定

LD:在取址周期的FETCH3状态中发出,进入执行周期的第一个状态(装载1IR[]0进入指令的正确执行周期)FETCH3:IR←DR[7,6], AR←DR[5…0] INC:CLR:如上图所示

根据译码器的输出信号组合后产生CPU中寄存器的有关信号 1 ARLOAD(装载地址寄存器的控制信号) FETCH1:AR←PC

FETCH3:AR←DR[5…0] 2 PCLOAD PCINC

PCLOAD =JREL1: PC←PC+ DR[5…0] PCINC =FETCH2:PC←PC+1 3 DRLOAD(实现DR←M)

FETCH2+OR1+SUB11

4 ACLOAD (实现AC←AC’, AC←AC∨DR,AC <- AC + DR') ACLOAD=COM1+ OR2+ SUB12 5 IRLOAD= FETCH3 6 ALUS1,ALUS2 与AC相连的ALU有两个控制信号

[ALUS1,ALUS2]=[0,0], 选COM1: AC←AC’

[ALUS1,ALUS2]=[0,1],选OR2: AC←AC∨DR;

[ALUS1,ALUS2]=[1,0],选SUB12: AC <- AC + DR' ALUS1= SUB12 ALUS2= OR2

- 8 -

缓冲器控制信号

许多操作需从内部总线上获取数据,CPU必须能控制缓冲器以便在合适的时间将正确的数据放到总线上,为此应满足如下逻辑关系。

MEMBUS= FETCH2+ OR1+ SUB11 PCBUS= FETCH1

READ= FETCH2+ OR1+ SUB11

DRBUS= FETCH3+ JREL1+ OR2+ SUB12 部分电路图如下:

FETCH1 FETCH3 ARLOAD JREL1 PCLOAD FETCH2 PCINC FETCH3 IRLOAD FETCH2 OR1 SUB11 DRLOAD ACLOAD COM1 OR2 SUB12

OR2 SUB12 FETCH2 OR1 SUB11 FETCH2OR1 SUB11 ALUS2 ALUS1 MEMBUS READ

- 9 -

FETCH1 FETCH3JREL1 OR2 SUB12

PCBUS DRBUS 设计验证

1. 程序段如下所列[存贮单元:指令]

0: COM

1: JREL 0 2 OR 4 3: SUB 5 4 20H 5: 30H

2. CPU遵循状态图并以合适的状态顺序取出、译码和执行 每条指令:

COM: FETCH1→FETCH2→FETCH3→COM1 JREL 4: FETCH1→FETCH2→FETCH3→JREL1 OR 5: FETCH1→FETCH2→FETCH3→OR1→OR2

SUB 6: FETCH1→FETCH2→FETCH3→SUB11→SUB12

2. 对这段程序的一次循环的跟踪情况(所有寄存器的初始值都是0) 指令 COM 状态 有效信号 PCBUS,ARLOAD READ,MEMBUS, DRLOAD,PCINC 所执行的操作 AR←0 DR←00H,PC←1 下一个状态 FETCH1 FETCH2 FETCH2 FETCH3 COM1 FETCH3 COM1

DRBUS,ARLOAD, IR←00 IRLOAD AR←00H ACLOAD AC←00H’=FFH FETCH1 - 10 -

指令 JREL 0 状态 有效信号 PCBUS,ARLOAD READ,MEMBUS, DRLOAD,PCINC 所执行的操作 AR←1 DR←40H PC←2 下一个状态 FETCH1 FETCH2 FETCH2 FETCH3 JREL1 FETCH3 JREL1 OR 4 DRBUS,ARLOAD, IR←01, IRLOAD AR←00H DRBUS,PCLOAD PCBUS,ARLOAD READ,MEMBUS, DRLOAD,PCINC PC←02H+00H=02H AR←2 DR←84H, PC←3 FETCH1 FETCH1 FETCH2 FETCH2 FETCH3 OR1 FETCH3 OR1 DRBUS,ARLOAD, IR←10, IRLOAD AR←04H READ, MEMBUS, DR←20H; DRLOAD DRBUS,ALUS2 ACLOAD PCBUS,ARLOAD READ,MEMBUS, DRLOAD,PCINC AC←FFH∨20H=FFH OR2 OR2 FETCH1 SUB 5 FETCH1 AR←3 DR←C5H, PC←4 FETCH2 FETCH2 FETCH3 SUB11 FETCH3 SUB11 DRBUS,ARLOAD, IR←11, IRLOAD AR←05H READ,MEMBUS, DRLOAD DRBUS, ALUS1 , ACLOAD DR←30H SUB12 SUB12 AC←FFH + 30H'=2FH FETCH1

- 11 -

用微程序控制器设计

一微程序控制器的基本框图

IR 2 MAP S 1 MUX 0 4 微地址寄存器(UAR) CLK 4 4

SEL UPOS ADDR

两种可能的下址方式(由MUX实现选择)

S=1―――操作码映象(经指令译码进入下一条指令的执行周期) S=0―――绝对跳转(下一条要执行的微指令在控存内) 工作原理分析描述

1) 确定微子程序的第一条指令入口地址。方法是根据取批中的最后一个状态FETCH3,便

可转入到四条指令中任一条执行周期的第一条微指令入口,但必须通过MAP输入来实现

2) 下址的确定

绝对跳转:可直接跳转到FETCH1状态 当前地址加1。 3) 几个参数的设定

控存中地址的倍数

24=16>9因共有9 条微指令,可用四位 MUX→微地址寄存器,微地址寄存器→控存 24=16>9用四位 确定UPOS的位数

二 生成正确序列并设计映象逻辑

1. 给有限状态机的每一种状态分配一个控存地址 利用IR映射1 [IR]0来确定指令的执行如下表

- 12 -

IR 00 01 10 11 计数值 1000 1010 1100 1110 状态 COM1 JREL1 OR1 SUB1 2.其余微指令的地址

微程序控制器的状态地址

FETCH1――――――――――――――――0 FETCH2――――――――――――――――1 FETCH3――――――――――――――――2 COM1: ――――――――――――――――8 JREL1:――――――――――――――――10 OR1: ――――――――――――――――12 OR2: ――――――――――――――――13 SUB11:――――――――――――――――14 SUB12:――――――――――――――――15

3. 确定微指令中的选择域和地址域,即生成正确的微指令执行顺序 1)一般状态转换

设SEL=0,ADDR为下一条指令要执行的控存号,一个微指执行完后,从ADDR中得到下址,转到ADDR指定的微指令 2)特别状态FETCH3下址的确定

当FETCH3执行完后,必须到指令执行周期的微子程序入处,根据1IR[]0所算出的结果 三 生成正确的微操作及相应的控制信号

用水平型微指令生成微操作及用垂直型指令生成微操作 本CPU采用水平型微指令生成微操作法 微操作及它们的助记符 助记符 ARPC DRM PCIN IRDR ARDR NOAC PCPLUSDR ACORDR ACSUBDR 微操作 AR←PC DR←M PC←PC+1 IR←DR[7,6] AR←DR[5…0] AC←AC’ PC←PC+ DR[5…0] AC←AC∨DR AC ← AC + DR' 由于IRDR和ARDR在同一个微操作进行,可以对他们进行合并为AIDR来表示。

指令格式 选择域1位

微程序控制器基本的水平微代码

微操作域8位 下址域4位 - 13 -

FETCH1 PCBUS,ARLOAD 状态 地址 SE L AR DR PC PC M IN 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 AI NO PCPL ACO AC AD DR AC USDR RDR SU DR BDR 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 8位 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0001 0010 **** 0000 0000 1101 0000 1111 0000 4位 FETCH1 0000 0 FETCH2 0001 0 FETCH3 0010 1 COM1 JREL1 OR1 OR2 SUB11 SUB12 1000 0 1010 0 1100 0 1101 0 1110 0 1111 0 1位 控存容量:(1+8+4)*9=117位

CPU控制信号值 控制信号 ARLOAD PCLOAD PCINC DRLOAD ACLOAD IRLOAD ALUS1 ALUS2 MEMBUS PCBUS READ DRBUS 值 ARPC∨AIDR PCPLUSDR PCIN DRM NOAC∨ACORDR∨ACSUBDR AIDR ACSUBDR ACORDR DRM ARPC DRM AIDR∨PCPLUSDR∨ACORDR∨ACSUBDR

设计体会

由于这个CPU的设计和教材上的例子很相似,只要按照教材上设计程序就可以一步步的设计出来。通过这个CPU设计对CPU的指令的执行和实现有了更加深的了解,也对CPU内部的结构有了更好的理解。对这类非常简单的CPU设计的过程和具体步骤有一定的了解。

- 14 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务