位CPU设计与实现.docx
《位CPU设计与实现.docx》由会员分享,可在线阅读,更多相关《位CPU设计与实现.docx(11页珍藏版)》请在冰豆网上搜索。
![位CPU设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-2/6/72b2f1a6-390b-4198-ba07-43621e869cbd/72b2f1a6-390b-4198-ba07-43621e869cbd1.gif)
位CPU设计与实现
文档编制序号:
[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]
位CPU设计与实现
计
算
机
组
成
原
理
论
文
姓名:
某某
班级:
计科一班
学号:
8位CPU的设计与实现论文
CPU的主要功能是执行指令,控制完成计算机的各项操作,包括运算操作、传送操作、输入/输出操作等。
作为模型计算机设计,将重点放在寄存器组,采取较简单的组成模式,以尽量简洁的设计帮助读者掌握CPU的基本原理。
此次设计CPU就是为了了解CPU运行的原理,从而完成从指令系统到CPU的设计,并且通过仿真对CPU设计进行正确性评定。
关键词:
CPU,设计指标,电路原理图,运算部件,寄存器组,模型机指令系统,微命令序列,数据通路
1.设计的任务与要求
1.1设计指标
1.能实现IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)这五种指令;
2.整个系统能正常稳定工作。
1.2设计要求
1.画出电路原理图;
2.写出设计的全过程,附上有关资料和图纸(也可直接写在相关章节中),有心得体会。
2.方案论证与选择
2.1CPU的系统方案
CPU主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT和输出单元OUTPUT所组成。
图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA中实现。
虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD显示器等,用于向CPU输入数据,或CPU向外输出数据,以及观察CPU内部工作情况及运算结果。
1.运算部件
运算部件的任务是对操作数进行加工处理。
主要由三部分组成:
(1)输入逻辑。
(2)算术/逻辑运算部件ALU。
(3)输出逻辑
2.寄存器组
计算机工作时,CPU需要处理大量的控制信息和数据信息。
例如对指令信息进行译码,以便产生相应控制命令对操作数进行算术或逻辑运算加工,并且根据运算结果决定后续操作等。
因此,在CPU中需要设置若干寄存器,暂时存放这些信息。
在模型CPU中,寄存器组由R0、R1、R2所组成。
3.指令寄存器指令寄存器(IR)
指令寄存器指令寄存器(IR)用来存放当前正在执行的指令,它的输出包括操作码信息、地址信息等,是产生微命令的主要逻辑依据。
4.程序计数器程序计数器(PC)
程序计数器程序计数器也称指令指针,用来指示指令在存储器中的存放位置。
当程序顺序执行时,每次从主存取出一条指令,PC内容就增量计数,指向下一条指令的地址。
增量值取决于现行指令所占的存储单元数。
如果现行指令只占一个存储单元,则PC内容加1;若现行指令占了两个存储单元,那么PC内容就要加2。
当程序需要转移时,将转移地址送入PC,使PC指向新的指令地址。
因此,当现行指令执行完,PC中存放的总是后续指令的地址;将该地址送往主存的地址寄存器AR,便可从存储器读取下一条指令。
5.地址寄存器
CPU访问存储器,首先要找到需要访问的存储单元,因此设置地址寄存器(AR)来存放被访单元的地址。
当需要读取指令时,CPU先将PC的内容送入AR,再由AR将指令地址送往存储器。
当需要读取或存放数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写操作。
6.标志寄存器
标志寄存器F是用来记录现行程序的运行状态和指示程序的工作方式的,标志位则用来反映当前程序的执行状态。
一条指令执行后,CPU根据执行结果设置相应特征位,作为决定程序流向的判断依据。
例如,当特征位的状态与转移条件符合时,程序就进行转移;如果不符合,则顺序执行。
在后面将要介绍的较复杂模型计算机设计中设置了两个标志位:
进位Fc、零位Fz。
7.微指令产生部件
实现信息传送要靠微命令的控制,因此在CPU中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。
产生微命令的方式可分为组合逻辑控制方式和微程序控制方式两种。
在本章所介绍的8位模型CPU设计中,采用微程序控制方式通过微程序控制器和微指令存储器产生微命令,因此此CPU属于复杂指令CISCCPU。
8.时序系统
计算机的工作常常是分步执行的,那么就需要有一种时间信号作为分步执行的标志,如周期、节拍等。
节拍是执行一个单步操作所需的时间,一个周期可能包含几个节拍。
这样,一条指令在执行过程中,根据不同的周期、节拍信号,就能在不同的时间发出不同的微命令完成不同的微操作。
周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一组触发器组成。
由石英晶体振荡器输出频率稳定的脉冲信号,也称时钟脉冲,为CPU提供时钟基准。
时钟脉冲经过一系列计数分频,产生所需的节拍(时钟周期)信号。
时钟脉冲与周期、节拍信号和有关控制条件相结合,可以产生所需的各种工作脉冲。
2.2模型机指令系统
一条指令必须包含下列信息:
操作码、操作数的地址、操作结果的存储地址、下一条指令的地址。
指令的基本格式
op-code为操作码,rs为源寄存器,rd为目的寄存器
寄存器操作数
模型机指令系统,及其指令编码形式
设模型机指令系统中包含有五条基本指令,分为算术运算指令、存取指令和控制转移指令等三种类型。
五条机器指令分别是:
IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
IN为单字长(8位二进制),其余为双字长指令,XXH为addr对应的十六进制地址码。
2.3拟定指令流程和微命令序列(计算机设计中最关键步骤)
1.微程序控制概念
(1)微命令和微操作
一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的,不可再分解的操作。
在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令叫做微命令,它是构成控制序列的最小单位。
因此,微命令是控制计算机各部件完成某个基本微操作的命令。
微命令和微操作是一一对应的。
微命令是微操作的控制信号,微操作是微命令的操作过程。
微命令有兼容性和互斥性之分。
兼容性微命令是指那些可以同时产生,共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。
兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。
对于单独一个微命令,就无所谓兼容性或互斥性了。
(2)微指令、微地址
微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微命令的集合,存放控制字的控制存储器的单元地址就称为微地址。
一条微指令通常至少包含两大部分信息:
微操作码字段,又称操作控制字段,该字段指出微指令执行的微操作;
微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址。
(3)微周期
所谓微周期是指从控存中读取出一条微指令并执行规定的相应操作所需的时间。
(4)微程序
一系列微指令的有序集合就是微程序。
若干条有序的微指令构成了微程序。
微程序可以控制实现一条机器指令的功能。
或者说一条机器指令可以分解为特定的微指令序列。
一旦机器的指令系统确定以后,每条指令所对应的微程序被设计好并且存入控存后,控存总是处于只读的工作状态,所以控存一般采用只读存储器(ROM)存放。
重新设计控存内容就能增加、删除、修改机器指令系统。
在FPGA中通常采用嵌入式阵列块构成的LPM_ROM作为控存,存放微指令。
2.微指令格式
(1)水平型微指令
一次能定义并执行多个并行操作微命令的微指令。
按照操作控制字段的编码方法不同,水平型微命令又分为三种:
第一种是全水平型(不译码法)微指令,第二种是字段译码法水平型微指令,第三种是直接和字段译码相混合的水平型微指令。
(2)垂直型微指令
垂直型微指令中设置操作码字段,由微操作码规定微指令的功能。
垂直型微指令的结构类似于机器指令的结构。
在一条微指令中只存一二个微命令,每条微指令的功能比较简单。
因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。
3.模型机的微指令
uA5~uA0:
微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。
S3、S2、Sl、S0:
由微程序控制器输出的ALU操作选择信号,以控制执行16种算术操作或16种逻辑操作中的某一种操作。
M:
微程序控制输出的ALU操作方式选择信号。
M=0执行算术操作;M=l执行逻辑操作。
。
Cn:
微程序控制器输出的进位标志信号,Cn=0表示ALU运算时最低位有进位;Cn=1则表示无进位。
WE:
微程序控制器输出的RAM控制信号。
当CE=0时,如WE=0,为存储器读;如WE=1,为存储器写。
A9、A8:
译码后产生CS0、CS1、CS2信号,分别作为SW_B、RAM、LED的选通控制信号。
A字段(15、14、13):
译码后产生与总线相连接的各单元的输入选通信号。
B字段(12、11、10):
译码后产生与总线相连接的各单元的输出选通信号。
C字段(9、8、7):
译码后产生分支判断测试信号P
(1)~P(4)和LDPC信号。
4.微指令的执行方式
执行一条微指令的过程类似于机器指令的执行过程。
首先,将微指令从控存CM中取出,称为取微指令。
对于垂直型微指令还应包括微操作码的译码时间。
然后,执行微指令所规定的各个微操作。
根据微指令的执行方式可分为串行执行和并行执行两种。
5.时序安排
由于CPU的工作是分步进行的,而且需要严格定时控制,因此设置时序信号,以便在不同的时间发出不同的微命令,控制完成不同的操作。
组合逻辑控制方式和微程序控制方式在时序安排上有区别,前者多采用三级时序划分,而后者往往采用两级时序。
6.拟定指令流程和微命令序列
这是设计中最关键的步骤,这是由于需要根据这一步的设计结果形成最后的控制逻辑。
拟定指令流程是将指令执行过程中的每步传送操作(寄存器之间的信息传送),用流程图的形式描述出来,拟定微命令序列是用操作时间表列出每步操作所需的微命令及其产生条件。
7.形成控制逻辑
设计的最后一步。
采用组合逻辑控制方式或采用程序控制方式,有各自不同的设计方法。
在组合逻辑控制方式中,将产生微命令的条件进行综合、化简,形成逻辑式,从而构成控制器的核心逻辑电路。
在微程序控制方式中,则是根据微命令来编写微指令,组成微程序,从而构成以控制存储器为核心的控制逻辑。
2.4微程序设计
1.IN指令
为了执行输入指令,CPU要做两件事情。
首先,由INPUT输入装置的数据开关SW输入数据送到数据总线上;其次,通过数据总线将输入的数据写入寄存器R0中。
2.ADD指令R0←R0+(MEM)
存储单元的地址是存放在紧跟在操作码后的字节中的,因此,首先要以该字节的内容为地址,即将该单元内容送地址寄存器AR;然后,从AR所指向的RAM存储单元取出操作数送给DR2。
由于在取指令操作码时,PC已经自动加1,指向下一字节,该地址就是存放操作数的存储单元的地址。
3.STA指令
向存储器RAM写数据操作STA,以紧跟在操作码后的字节作为存放操作数地址,将R0中的数据存入该地址单元。
首先将紧跟在操作码后的字节的内容送给地址寄存器AR。
4.OUT指令
AR←PC,PC←PC+1;以PC的内容作为存数据的地址
BUS←RAM,AR←BUS;AR指向存放操作数的RAM单元
BUS←RAM,DR1←BUS
OUT←DR1
5.JMP指令
AR←PC,PC←PC+1;以PC的内容作为取数据的地址
BUS←RAM,PC←BUS;将RAM内容送PC,实现程序转移
3.CPU设计及微代码
3.1原理图模版
3.2取指令和指令
1.取指令阶段
取指令阶段完成的任务是将现行指令从主存中取出来并送至指令寄存器中。
具体的操作如下:
(1)将程序计数器(PC)中的内容送至存储器地址寄存器(AR),并送往地址总线(AB)。
(2)PC的内容递增,为取下一条指令做好准备。
(3)由控制单元(CU)经控制总线(CB)向存储器发读命令。
(4)从主存中取出的指令通过数据总线(DB)送到指令寄存器(IR)中。
以上这些操作对任何一条指令来说都是必须要执行的操作,所以称为公共操作。
完成取指阶段任务的时间称为取指周期。
取出指令后,指令译码器ID可识别和区分出不同的指令类型。
此时计算机进入分析取数阶段,以获取操作数。
由于各条指令功能不同,寻址方式也不同,所以分析取数阶段的操作是各不相同的。
(5)指令寄存器(IR)中的内容送指令译码器(ID)进行指令译码。
(6)指令译码器(ID)的内容送操作控制器。
(7)操作控制器产生执行指令的微控制。
2.分析取数阶段
对于无操作数指令,只要识别出是哪条具体的指令,即可以直接转至执行阶段,所以不需进入分析取数阶段。
而对于带操作数指令,为读取操作数首先要计算出操作数的有效地址。
如果操作数在通用寄存器内,则不需要再访问主存;如果操作数在主存中,则要到主存中去取数。
对于不同的寻址方式,有效地址的计算方法是不同的,有时要多次访问主存才能取出操作数(间接寻址)。
对于无操作数指令,只要识别出是哪条具体的指令,即可以直接转至执行阶段,所以不需进入分析取数阶段。
而对于带操作数指令,为读取操作数首先要计算出操作数的有效地址。
如果操作数在通用寄存器内,则不需要再访问主存;如果操作数在主存中,则要到主存中去取数。
对于不同的寻址方式,有效地址的计算方法是不同的,有时要多次访问主存才能取出操作数(间接寻址)。
另外对于单操作数指令和双操作数指令,由于需要的操作数的个数不同,分析取数阶段的操作也不同。
3.执行阶段
执行指令阶段完成指令规定的各种操作。
执行阶段完成任务的时间称为执行周期。
计算机的基本操作过程就是取指令、取操作数、执行指令,然后再取下一条指令……如此周而复始,直至遇到停机指令或外来的干预为止。
3.3设计微代码表
微程序流程图是根据每条指令的微操作流程所绘制的,操作框内给出的是该微操作要执行的动作。
当拟定“取指”微指令时,该微指令的判别测试字段为P
(1)测试,根据P
(1)的测试结果将出现多路分支。
由于操作码的位数已确定为4位,所以可直接将操作码与微地址码的部分对应。
本模型机用指令寄存器(IR7~IR0)的高4位(IR7~IR4)与微地址码的后4位对应。
模型机的微地址码共有六位,微地址码的高三位已固定为001,低三位从000~111共有八种状态,现设计了五条指令,需要五个分支入口,因此,将低三位中的000B~100B这五个地址分配给这五条指令,就得到五个分支入口微地址。
这五个分支入口(以八进制表示)分别是10、11、12、13和14,占用五个固定的微地址单元。
其余的微操作单元的微地址设置,可以将还未使用的微地址按照从小到大的顺序依次分配给这些微操作单元,微地址的分配情况见图5-4。
微地址标注在每个微操作框的左上角,右上角标注的是微指令码。
3.4建立数据通路
ALU为运算器;DR0和DR1为其输入端的两个暂存寄存器;R0是数据寄存器,用来保存数据和运算结果;PC为程序计数器;IR和ID分别为指令寄存器和指令译码器;AR和MOMERY分别为存储地址寄存器和存储数据寄存器;INPUT为输入装置;OUTPUT为输出装置。
各基本单元模块的输出端通过三态门控制与内部数据总线相连接;微控制器按照时序发生器的节拍,对指令进行译码后产生同步的控制信号。
各部件旁边的C是由微指令译码器输出的控制信号,用于控制数据的输入和输出。
与数据总线相连的信号有些是单向的,有些则是双向的。
如数据寄存器、存储器、I/O接口的数据信号是双向的,而指令信号、地址信号、控制信号是单向的。
实际上在FPGA中,双向端口元件的表述方法是:
输入和输出端口采用两个不同的端口,这时各基本元件的输出端口不能直接与内部总线连接在一起,而是需要通过三态门控制以后再连接到总线上。
在向总线输出数据时,不能同时有两路或两路以上数据一起输出,否则会发生数据冲突。
因此在设计微程序、确定微操作时,应注意数据传输中控制信号对时序的要求。
3.5微程序控制的基本原理
3.6在模型CPU中的软件执行
微指令执行情况
4.心得体会
通过此次的设计,我受益匪浅。
首先,我对CPU有了基本认识,认识它的原理,结构,运行;其次,我对微指令的认识也有了进一步提高,特别是指令对应的功能以及对指令的理解;再次,我对该部件的原理及功能运行有了一定层次的理解;最后,我必须承认,不管遇到什么问题都要从底层抓起,然后去解决问题,当我对某些东西不懂时,要从书本的最基本概念看起,再到原理,运行层次,结构等去理解才能真正懂,还有和他人的交流很重要,不懂的问题彼此交换意见可以受益匪浅。
我很感谢此次机会让我有了一次锻炼。
参考文献:
[1]潘松潘明.现代计算机组成原理.科学出版社.
[2]王爱英.计算机组成与结构(第四版).清华大学出版社。