版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CPU 设计10 计算机科学与技术姓名:谢xx学号:201040200xx一非常简单的CPU设计规范:1.确定CPU的用途:该CPU的字长为8位,寻址范围为64个字节,并且要求能实现4条简单的指令。2.确定ISA:要实现的指令集如下: 指令 指令码 操作COM00XXXXXXACAC JREL 01AAAAAAPCPC+00AAAAAA OR 10AAAAAAACACM00AAAAAA SUB111AAAAAAACAC-M00AAAAAA-1要实现该CPU的功能,还需要一些寄存器完成取指,译码和执行的步骤:AR(地址寄存器)6位,由A7.0向存贮器提供地址PC (程序计数器) 6位,指出下一条
2、指令的地址DR (数据寄存器) 8位,通过D7.0从存贮器接收指令和数据IR (指令寄存器) 2位,存放从存贮器中取回的指令的操作码部分3.为CPU设计状态图:为了确定CPU的状态图,需对每条指令作如下分析:从存贮器中取指令指令译码 指令执行二从存贮器中取指令:原理:根据冯诺依曼型的原理(指令在存贮器中顺序存放),在CPU能执行指令之前,它必须将这条指令从存贮器中取出,CPU通过执行如下的操作序列完成这个任务: 选择存贮单元由A5.0确定 对A5.0译码、延迟并向存贮器中发一个信号,使存贮器将此指令输出到它的输出引脚。这些引脚与CPU的D7.0相连接。CPU从这些引脚读入数据。具体的操作要取的
3、指令的地址存放在程序计数器(PC)中。由于A5.0从地址寄存器AR中。这样,取指令周期的第一个状态就是: FETCH1:ARPC这一状态的意义是当FETCH为真时,把PC的值送到AR,执行微操作ARPC,以下同理。CPU必须存贮器中读取指令。为此CPU必须发一个READ信号到存贮器的RD端使存贮器将数据送到D7.0上。同时,CPU读进该数据并放到DR中,因为DR是用来访问存贮器的唯一寄存器。同时还实现微操作PCPC+1,为取下一条指令作准备。 FETCH2:DRM,PCPC+1作为取指令的一部分,CPU还必须完成两件事。DR的高2位拷贝到IR,母的是确定指令的功能(即将指令的操作码读入IR)&
4、#183;DR的第六位拷贝到AR。 FETCH3:IRDR7.6,ARDR5.0FETCH1FETCH2FETCH3图1-1 CPU的取指周期三指令译码:由于本CPU只有四条指令,用不同的IR的值来确定四个不同的执行周期: FETCH1FETCH2FETCH3COM执行周期JREL执行周期SUB1执行周期OR执行周期IR=00IR=11IR=100IR=01四指令执行:1.COM指令COM1:ACAC;将AC取反,再将结果送回AC中。(在AC的数字电路中实现AC的取反操作)2.JREL指令该指令操作码为01AAAAAA,即是将PC加上AAAAAA再送回到PC。JPEL1:PCPC+DR;数据寄
5、存器DR和PC的数相加,并把结果存回PC中。3.OR指令要完成该指令,CPU要做两个步骤:OR1:DRM;从存贮器取出一个操作数送到数据寄存器中(M的地址是由A5.0确定的)OR2:ACACDR;数据寄存器DR和AC的数做或操作,并把结果送回AC中。4.SUB1指令SUB1指令的执行周期与OR指令相类似,同样也要两个步骤:SUB11:DRM;从存贮器取出一个操作数送到数据寄存器中SUB12:ACAC-DR-1;将AC中的数减去数据寄存器DR再减去1,并把结果放回AC中。综上,可以得到CPU的完全状态图:FETCH1FETCH2FETCH3COM1JREL1 SUB11OR1IR=00IR=11
6、IR=100IR=01OR2SUB12图1-3 CPU的完全状态图五建立所需要的数据通路:1与CPU的每个状态相关联的微操作(共9个状态) FETCH1:ARPC FETCH2:DRM,PCPC+1 FETCH3:IRDR7.6,ARDR5.0COM1:ACAC JPEL1:PCPC+DROR1:DRMOR2:ACACDRSUB11:DRMSUB12:ACAC-DR-12.建立数据通路的原理和方法存贮器数据通路的原理: 存贮器是通过引脚D7.0将数据送给CPU的8位内部总线。 存贮器的地址确定是通过地址引脚A5.0和D7.0通路,如图1-3:图1-3 CPU初步的寄存器部分CPU的内部数据通路
7、:该CPU的内部数据通路采用在总线的方式,有利于满足各种寄存器数据交换的需要,减少数据通路。3CPU内部寄存器控制信号的定义和确定方法1).原理:首先把各种操作重新分组,依据是把修改同一个寄存器的操作分配在同一组。本CPU共有九种状态,五个寄存器的分配情况如下:AR:ARPC;ARDR5.0PC:PCPC+1;PCPC+DRDR:DRMIR:IRDR7.6AC:ACAC;ACACDR;ACAC-DR-1 2).决定每个部件应完成的功能1 AR,DR,IR这三个寄存器总是从其他一些部件中装入数据。若数据已在总线上,则需要做的就是能够执行并行装入操作。(它们各自的LD端分别由ARLOAD,DRLO
8、AD,IRLOAD信号同步装入)2 PC AC这两个寄存器能从其他一些部件中装入数据。还有自增当前值。所以应创建一个单独的硬件使之能自增当前值。4.把每个部件都连接到系统总线上三态缓冲区原有的寄存器总是在结果准备好后立即输出到系统总线,造成多个结果同时输出到系统总线的可能性出现,是CPU内部数据可能发生冲突。所以应增加三态缓冲区加以控制。但AR的输出还应与A5.0相连,这是寻址所需。5.根据实际需要修改图4的设计,并加上适当控制信号1).AR:仅仅向存贮器提供数据(地址),没有必要将它的输出连接到内部总线上。(可删除)。加上ARLOAD实现BUS装入数据。图中CLK是CPU核心时钟2).ARP
9、C:保留三态缓冲器有PCBUS控制同步3).IR:不通过内部总线向任何其他部件提供数据(所以可删除)而IR的输出将直接送到控制器用于确定指令的功能(见图5,LD,在FETCH3为真时载入)4).AC:本CPU不向其他任何寄存器提供数据(可删除)5).D7.0:各部件所需要的数据不统一。显然,从存贮器读出的数据为8位,有写不加需要8位D7.0(如DR、AC),而有些部件只需6位D5.0(如AR、PC),还有些部件只需2位D7.6(如IR),必须确定哪些寄存器从总线的哪些为上接收和发送数据。对于DR寄存器来说应该由DRBUS实现同步。DRLOAD实现LD(载入)。6).AC:必须能装载ACDR,A
10、CAC,AC-DR-1的结果。CPU必须包含一个能产生这些结果的ALU(算术逻辑运算器)并由ACLOAD实现装入。 图 5至此,问题的关键是设计适当的ALU。六ALU的设计1.ALU数据通路分析ALU必须能接收AC、PC和DR作为输入,然后把运算结果输出到AC和PC。2.实现运算功能在本CPU中,把AC的导线和ALU的输入输出连接起来,并且利用系统总线把PC、DR和ALU的输入连接起来。非常简单ALU的设计 问题:ALU必须能完成以下四个运算:ACACDRPCPC+DR5.0ACACACAC-DR-1 解决办法:设计一个部件算术运算ACAC-DR-1和PCPC+DR5.0,另一个部件完成逻辑运
11、算ACACDR,ACAC。并且用一个多路选择器从正确的输出中选择数据送入AC或PC。 具体设计a. 算术运算对ACAC-DR-1进行改写,得ACAC+DR/求反加1,即把减法变为加上该数的补码。PCPC+DR5.0 把PC和DR的低六位输送到ALU,进行加法运算,再送回到PC。b. 逻辑运算用一个2选1多路开关选择取反(AC)或逻辑或(ACDR)c. 用一个2选1确定输出逻辑运算或算术运算结果控制信号:ALUS2d. 非常简单ALU逻辑电路图6图6 一个非常简单的ALU4.用硬布线方法设计控制器本CPU采取用时序逻辑和组合逻辑来产生控制信号的方法来设计控制器一、 非常简单CPU的控制器1. 组
12、成包含三部分 计数器:保存当前状态 译码器:接受当前状态并为每个状态生成单独的信号 逻辑组合:接受单独的状态信号,为每一个部件生成控制信号以及计数器的控制信号(反馈)2. 硬布线控制单元原理图(图7) 图7 一般硬布线控制原理图3确定计数器的位数共有9个状态。(四条指令,共有9个状态)需要一个四位计数器和一个4-16位译码器。二、 计算器和译码器的设计1. FETCH1状态(公操作)规定为计数器的0值,使用计数器的CLR=1(清零有效)到达这一状态。当CPU的任一条指令执行完毕,CPU一定转入取指令状态。2. 将顺序状态设定为计数器的连续值,用INC(自增1)实现。本CPU各个状态对应的值:F
13、ETCH1 赋值为计数器值 0FETCH2 赋值为计数器值 1FETCH3 赋值为计数器值 2COM1 赋值为计数器值 8JPEL1 赋值为计数器值 10OR1 赋值为计数器值 12OR2 赋值为计数器值 13SUB11 赋值为计数器值 14SUB12 赋值为计数器值 153. 确定一个每个执行周期中的第一个状态根据映射函数1IR1.00确定指令周期的入口:1000(8) -COM1010(10) -JPEL11100(12) -OR11110(14) -SUB11(见图7)图8 非常简单CPU的硬布线控制器4. 计数器LD、INC、CLR控制信号的确定LD:其函数为 LD=FETCH3INC
14、:其函数为INC=FETCH1+FETCH2+OR1+SUB11对应的逻辑电路为CLR:其函数为CLR=COM1+JPEL1+OR2+SUB12对应的逻辑电路为三、 根据译码器的输出信号经组合后产生CPU中寄存器的有关控制信号用于控制AR,PC,DR,IR,M,ALU及缓存器。1 ARLOAD因为在FETCH1中要实现 ARPCFETCH3中要实现 ARDR5.02 PCLOAD,PCINCPCLOAD=JPEL1PCINC=FETCH23 DRLOAD(实现DRM)DRLOAD=FETCH2+OR1+SUB11/JPEL1不需要装载,因为直接PCPC+DR4 ACLOAD(实现ACAC,AC
15、ACDR,ACAC-DR-1)ACLOAD=COM1+OR2+SUB125 IRLOAD IRLOAD=FETCH36 ALUSEL ALU有两个控制输入信号ALUS1,ALUS2 当ALUS2=0时,输出和 当ALUS2=1且ALUS1=1时输出逻辑或 当ALUS2=1且ALUS1=0时输出取反结果因为JPEL指令不会用到AC,故当执行JPEL指令时,由于ACLOAD=0所以AC并没有装载ALU中的值当执行SUB12指令时,ALUS2=0,ALU直接输出和当执行COM指令时,ALUS1=0且ALUS2=1,ALU输出取反结果当执行OR2指令时,ALUS1=1且ALUS2=1,ALU输出逻辑或
16、7 缓冲器控制信号MENBUS=FETCH2+OR1+SUB11 PCBUS=FETCH1+JPEL1 READ=FETCH2+JPEL1+OR1+SUB11 DRBUS=FETCH3+JPEL1+OR2+SUB12至此,CPU设计完成,下面是设计验证:1. 程序段描述如下【存贮单元:指令】0: COM 功能 ACAC1: JPEL 4 功能 PCPC+M42: OR 5 功能 ACACM00AAAAAA3: SUB1 4 功能 ACAC-M00AAAAAA-14: 00H5: 10H 备注:默认AC的初始值为FFH; 2. 根据CPU的状态图可知各条指令执行的状态顺序如下:COM:FETCH
17、1FETCH2FETCH3COMJPEL:FETCH1FETCH2FETCH3JPEL1OR:FETCH1FETCH2FETCH3OR1OR2SUB1:FETCH1FETCH2FETCH3SUB11SUB123. 执行跟踪非常简单CPU执行COM指令的工作原理描述如下:指令功能是ACAC,即是把原AC中的值取反后再送回AC中 在FETCH1状态,把PC=0的现行值送AR,硬布控制器发出PCBUS、ARLOAD便能实现ARPC 在FETCH2状态,为实现DRM0,PCPC+1,控制器发出READ、MEMBUS、DRLOAD、PCINC 在FETCH3状态,为实现IRDR7.6,ARDR5.0,控
18、制器应发出DRBUS、IRLOAD、ARLOAD COM状态,将AC中的值取出后,对其取反在送入AC,控制器应发出ACLOAD、ALUS1、ALUS2至此COM指令执行完毕,返回准备取出下一条指令的FETCH1状态其余指令的执行情况见下表: 指令 状态有效信号所执行的操作次态 COMFETCH1PCBUS,ARLOADAR0FETCH2FETCH2READ,MENBUS,DRLOAD,PCINCDR00H,PC1FETCH3FETCH3DRBUS,ARLOAD,IRLOADIR00,AR00HCOMCOM1ALUS1,ALUS2=0ACLOADAC00HFETCH1 JPELFETCH1PCBUS,ARLOADAR1FETCH2FETCH2READ,MENBUS,DRLOAD,PCINCDR44H,PC2FETCH3FETCH3DRBUS,ARLOAD,IRLOADIR01,AR04HJPEL1JPEL1PCLOAD,MENBUSREADPCPC+04HFETCH1 ORFETCH1PCBUS,ARLOADAR2FETCH2FETCH2READ,MENBUS,DRLOAD,PCINCDR85H,PC3F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论