CPU的设计规范_第1页
CPU的设计规范_第2页
CPU的设计规范_第3页
CPU的设计规范_第4页
CPU的设计规范_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 CPU的设计规范1. 确定CPU的用途字长:8位 D70寻址范围:64Byte,2的6次方64,A502. 确定ISA(包括程序可访问的寄存器,又称通用寄存器)1) 程序员可访问的寄存器 AC8位累加器表非常简单指令集:共条指令,如下所示指令操作码操作COM00XX XXXXACAC(取反)JREL01AA AAAAPCPC+00AAAAAAOR10AA AAAAACACM00AAAAAASUB111AA AAAAACACM00AAAAAA12) 还需一些其他寄存器(又称专用寄存器)以便完成取数据、译码和执行指令所必须的内部操作,基本的寄存器有:AR(地址寄存器)位,由A50向存贮提供地

2、址PC(程序计数器)位,指出下一条指令的地址DR(数据寄存器)位,通过D70从存贮器接收指令和数据IR(指令寄存器)2位,存放从存贮器中取回的指令的操作码部分。3. 为设计状态图为了确定的状态图,需对每条指令作如下分析:1) 从存贮器中取指令(所有指令均相同)2) 指令译码:每条指令的操作码部分均是唯一的3) 指令执行:每条指令的执行周期也是唯一的4. 还要设计必要的数据通路和控制逻辑,以便实现这个有限状态机,最终实现这个CPU。接下来,可以对CPU设计验证。二、 从存贮器中取指令1. 原理:根据冯诺依曼型机的原理(指令在存贮器中按顺序存放),在CPU能执行指令之前,它必须将这条指令从存贮器中

3、取出,CPU通过执行如下的操作序列完成这个任务:1) 选择存贮单元A50确定2) 对A50译码、延迟、并向存贮器发一个信号(如READ或R/W1),使存贮器将此指令输出到它的输出引脚。这些引脚与CPU的D70相连接。CPU从这些引脚读入数据。2. 具体的操作(以下取指令分为三个状态)1) 要取的指令的地址放在程序计数吕(PC)中。由于A50从地址寄存器中接收值,因此第一眇就把PC的内容拷贝到AR中。这样取指令周期的第一个状态就是(意思是FETCH1为真,把PC的值送到AR,以下同理)FETCH1:ARPC(说明:这一描述的方法是基于RTL)2) CPU必须从存贮器中读取指令,为此CPU必须发一

4、个READ信号到存贮器的RD端(对于ROM为OE端)使存贮器将数据发送到D70上。同时,CPU读进来,并放到DR中,因为DR是用来访问存贮器的唯一寄存器。同时实现PCPC+1,为取下一条指令作准备。FETCH2:DRM,PCPC+13) 作为取指令的一部分,CPU还必须完成两个事。a) DR的高2位拷贝到IR,目的是确定指令的功能。b) DR的低6位拷贝到AR,目的如下:i. 对于OR和SUB1指令这6位包含了该指令的一个操作数的存贮器地址(因为一个数已经在AC中),将地址拷贝到AR可减少这些指令在执行周期的状态。ii. 对于COM和JERL指令,也不支引起新的问题。它们不需要再次访存,因为它

5、们恰好不会用到在AR中的值。一旦它们返回到FETCH1周期,FECTH1将把PC的值装载到AR,从而覆盖无用到的值。FETCH3:IRDR7,6,ARDR503. 取指令周期的状态图FETCH1FETCH2FETCH3图一三、 指令译码本CPU有四条指令,因此有四个不同的执行周期,为此用IR中的值来确定即可。FETCH1FETCH2FETCH3COM执行周期JREL执行周期OR执行周期SUB1执行周期IR00IR01IR10IR11图二四、 指令执行方法:分别对每条指令的执行周期作出详细的状态分析。1. COM指令(执行周期)功能是将AC的内容取反,执行周期状态是COM1: ACAC2. JR

6、EL指令(执行周期)指令码是01AAAAAA,操作为将PC的地址和地址AAAAAA相加后,再将相加的地址(目标地址)送回PC,而AAAAAA在DR50中。JREL1: PCPC+DR503. OR指令(执行周期)M的地址由A50确定,放在AR中,有两个状态。OR1:DRMOR2:ACACDR4. SUB1指令(执行周期)功能为将AC中的数减去M的数再减一送到AC,可等价为AC中的数减到M中的数的反码,其中M的地址由A50确定,执行周期的状态为SUB1:DRMSUB2:ACAC+DR综上所述可知CPU的完全状态图如下FETCH1FETCH2FETCH3IR00IR01IR10IR11COM1JR

7、EL1OR1SUB1SUB2OR2图三五、 建立所需的数据通路1. 与CPU的每个状态相关联的操作是(共九个状态)FETCH1:ARPCFETCH2:DRM,PCPC+1FETCH3:IRDR6,7,ARDR50COM1 :ACACJREL1 :PCPC+DR50OR1 :DRMOR2 :ACACDRSUB1 :DRMSUB2 :ACAC+DR2. 建立数据通路的原理和方法1) 存贮器数据通路的原理 存贮器是通过引脚D70数据送给CPU 存贮器的地址确定是通过地址引脚A50从AR中获得的。于是CPU与存贮器之间需要A50(地址)和D70(数据)通路8ARPCDRACIRMA50CLK66288

8、8882286666668D7068bit bus图四2) CPU内部的数据通路(两种方案) 直接通路(direct path)所有需要传送数据的部件之间创建一条直接通路。当然,可用多路选择器或缓存器为那些有多个数据源的寄存器从多个输入中选择一个。本设计可以是ARDR50基ARPC(2选1)缺点:仅适用于简单CPU 总线(BUS,目前常用,为提高CPU速度可取用双总线、三总线)在CPU的内部创建一条总线,并且在各个部件之间使用总线传递数据优点:不但可满足数据传送的需要,还减少数据通路。缺点:对于单总线要分时使用。3. CPU内部寄存器的控制信号的定义方法1) 原理:首先把操作重新分组,依据是把

9、修改同一个寄存器的操作分配在同一组。本设计CPU共9个状态,有5个寄存器的分配情况如下:AR:ARPC;ARDR50PC:PCPC+1;PCPC+DR50DR:DRMIR :IRDR6,7AC:ACAC; ACACDR;ACAC+DR2) 决定每个部件应完成的功能(见图五) AR、DR、IR总是从其他一些部件中装入数据。若数据已在总线上,则需要做的就是能够执行并装入操作。(LD端分别由ARLOAD、DRLOAD、IRLOAD信号同步装入) PC、AC能从其他一些部件中装入数据。还有自增当前值。所以应创建一个单独的硬件使之能自增当前值。(见图五中INC有PCINC,其他有PCLOAD、ACLOA

10、D)也可用计数器方法实现PCPC+1自增操作,可在寄存器内部单独完成,并行装载用来实现其他功能。4. 把每个部件都连接到系统总线上(见图四)三态缓冲区原有的寄存器总是把结果输出到系统总线,使CPU内部数据冲突,所以应增加三态缓冲区加以控制。但AR的输出还应与A50相连,这是寻址所需。5. 根据实际需要修改图四的设计,并加上适当控制信号名称1) AR:仅向存贮器提供数据(地址),没必要将它的输出连接到内部总线上。(可删除)。加上ARLOAD实现从BUS装入数据。2) ARPC:保留三态缓冲器由PCBUS控制同步3) IR:不通过内部总线向任何其他部件提供数据(所以可删 除)而IR的输出将直接送到

11、控制器用于确定指令的功能。4) AC:本CPU不向其他任何单位提供数据(可删除)5) D70:不统一,有6位也有2位宽度,各部件所需的数据位不统一,从存贮器读出的数据为8位,而有些部件需要6位(D50)或2 位(IR是2位D7,6),必须确定哪些寄存器从总线的哪些位上接收和发送数据,应有DRBUS实现同步。DRLOAD实现LD(载入)6) AC:必须能装载AC求反的值、AC+DR的各、以及ACDR的逻辑或的值。CPU必须包含一个能产生这些结果的ALU(算术逻辑运算器)并由ACLOAD实现装载。下一步,问题的关键是设计适当的ALU。六、 非常简单ALU的设计1. ALU数据通路分析ALU必须能接

12、收AC和DR作为输入,然后把运算结果输出到AC。2. 实现这个目的有两种方法1) 在本CPU中,把AC的导线和ALU的输入输出连接起来,并且利用系统总线把DR和ALU的输入连接起来。注意:对于寄存器数据在总线上传送数据是分时进行的,而用计数器来实现PCPC+1操作,就可以在FETCH2内并行完成,因为自增的计数器不必占用总线时间。2) 非常简单ALU的设计由于本CPU的ALU仅完成三个功能,、取反、逻辑或运算。最简单的方法是创建三个单独的硬件实现每个功能,后用4选1多路开关选择一个作为输出。(如下图,图六) 图六 非常简单的ALU(S0S1S2=000,即ALUSEL000,选PCPC+DR;

13、S0S1S2=100,即ALUSEL100,选ACAC+DR;S0S1S2=101,即ALUSEL101,选ACACDR;S0S1S2=110,即ALUSEL101,选ACAC)七、 用硬布线方法设计控制器以上为CPU完成取指令,译码和执行整个指令集(ISA)所必须的每个操作成为可能。下一个任务就是设计一个电路来产生控制信号,从而使所有的操作能以正确的顺序执行。这就是CPU的控制器(CONTROL UNIT,又称控制单元)设计控制的三种方法 硬布线控制器(用时序逻辑和组合逻辑来产生控制信号) 微程序控制器 硬布线和微程序相结合本CPU采用硬布线方法。1. 非常简单CPU的控制器1) 组成包含三

14、部分 计数器:保存当前状态 译码器:接受当前状态并为每个状态生成单独的信号 逻辑组合:接受单独的状态信号,为每一个部件生成控制信号以及计数器的控制信号(反馈)2) 一般硬布线控制单元原理图(见下图七) 图七 一般硬布线控制器原理图3) 确定计数器的个数本CPU共有9个状态。(4条指令,共9个状态)24169,所以需要一个四位计数器和一个416位译码器,译码器中有7个输出没有用到。2. 计数器和译码器的设计原则计数器的输出状态共16个(00001111)译码器的输出最多只有16个,本CPU实际需要用到9个(参考图三,CPU完全状态图)1) FECTH1状态(公共状态,又称公共操作)规定计数器的0

15、值,使用计数口器的CLR1(清0有效)到达这一状态。这也是因为CPU的任一条指令执行完毕(如无中断请求等),CPU一定转入取指令状态。2) 将顺序状态设定为计数器的连续值,用INC实现。这样的好处是控制器通过发出计数器的INC信号来到达任一需要的状态。FETCH2 1FETCH3 2 COM1 8 JREL1 9 OR1 10 OR2 11 SUB1 12 SUB2 143) 确定每个执行周期中的第一个状态原则:科学、合理、不增加硬件资源分析:在CPU状态图中任一条指令的执行都是少于或等于2个状态。即只要执行周期的第一个状态的计数值的间隔至少应为2,可通过映射1 IR1,0 0可达到目的。根据

16、映射函数1 IR1,0 0确定指令执行周期的入口:1000(8) COM11010(10) JREL11100(12) OR11110(14) SUB1图八 简单CPU的硬布线控制器4) 计数器LD、INC、CLR控制信号的确定LD(装载)在每个指令周期的末尾FECTH3状态中发出。因为准备进入该指令的执行周期的每一个状态,所以必须要装载1IR1,00才能进入指令的正确执行周期。FETCH3:IRDR7,6,ARDR5,0INC(自增)因为在确定第一个状态(由计数器输入端1IR1,00决定)接着就要确定哪些状态,哪些指令的执行周期需产生INC信号。CLR(清0或者复位)每条指令执行结束转入下一

17、条指令的取指令周期应清03. 根据译码的输出信号组合后产生CPU中寄存器的有关信号用于控制AR、PC、DR、IR、M、ALU及缓冲器。1) ARLOAD(装载地址寄存器控制信号)因为在FETCH1中 ARPCFETCH3中 ARDR50所以ARLOADFETCH1+FETCH3(见图九)2) PCLOAD、PCINC(实现PCPC+DR50、PCPC+1)PCLOADJREL1PCINCFETCH23) DRLOAD(实现DRM)DRLOADFETCH2+OR1+SUB14) ACLOAD(实现ACAC、 ACACDR、ACAC+DR)ACLOADCOM1+OR2+SUB25) IRLOADI

18、RLOADFETCH36) ALUSELALU有二个控制输入信号,一个控制输出信号ALUSELS0 S1 S2S0控制ALU的输出,S1、S2控制输入当S0S1S2=000,即ALUSEL000,选PCPC+DR;S0S1S2=100,即ALUSEL100,选ACAC+DR;S0S1S2=101,即ALUSEL101,选ACACDR;S0S1S2=110,即ALUSEL101,选ACAC。可在令ALUSELS0 S1 S2 0,这样分别和映射函数相对应ALUSELFETCH1+COM1+JREL1+OR17) 缓冲器控制信号许多操作需从内部总线上获取数据。CPU必须能控制缓冲器以便在合适的时间

19、将正确的数据放在总线上。为此满足如下逻辑关系MEMBUSFETCH2+OR1+SUB1PCBUSFETCH1READFETCH2+OR1+SUB1DRBUSFETCH3+OR2+SUB2+JREL1即在FETCH3(IRDR6,7,ARDR50)或OR2(ACACDR)或SUB2(ACAC+DR)JREL1(PCPC+DR50)时DR的内容必须放在总线上。控制器中用来产生这些控制信号的部分电路如图九所示。图九 非常简单CPU控制信号的形成CPU的设计已经完成。八、 设计验证1. 程序段如下所列【存贮单元:指令】0:OR 4 功能 ACACM31:SUB1 5 功能 ACAC+M52:COM 功

20、能 ACAC3:JREL 6 功能PCPC+M14: 13H5: 23H6: 01H2. 根据CPU的状态图可知各指令状态顺序如下:OR 3:FETCH1FETCH2FETCH3OR1OR2SUB1 5:FETCH1FETCH2FETCH3SUB1SUB2COM:FETCH1FETCH2FETCH3COM1JREL 1:FETCH1FETCH2FETCH3JREL13. 执行过程跟踪说明OR 3(指令功能是ACACM3): 在FETCH1状态,把PC0的现行值送AR,硬布线控制器应发出PCUBS、ARLOAD使能实现ARPC; 在FETCH2状态,为实现DRM0,PCPC+1,控制器应发出READ、MEMBUS、DRLOAD、PCINC; FETCH3状态,为实现IRDR7,6,ARDR50,控制器应发出DRBUS、IRLOAD、ARLOAD; OR1状态,取出另一个操作数DRM4(M413H),控制器应发出READ、MEMBUS、DRLOAD; OR2状态,实现ACACDR,即AC013H13H。控制器应发出ALUSEL101、ACLOAD至此OR 4指令执行完毕,返回准备取出下一条指令的FETCH1状态。其余指令的执行情况见下表执行过程跟踪表InstructionStateActive

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论