CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

CPU设计我要让更多的人掌握它(续6)

已有 4696 次阅读 2010-1-13 12:22 |个人分类:计算机核|系统分类:科研笔记| 动态计算机, 核重组, 执行核, 动态关系总线

将控制字寄存器的输出与每条控制线连接,就可以确定下一个clk=1时,计算器的下一个状态。
 
2.3.5 程序自动执行的结构设计
 
手动参与的计算器如同算盘一样,实在是太慢。解决的办法是将程序事先编写好,然后放在存储器当中,让机器自己来取。时钟要换成石英钟,这样就可以充分发挥电信号的快速优势。为了将放在存储器中的程序指令逐条取出来,变成机器控制字,需要有专门的寄存器放置取出的指令。这个临时放置指令的寄存器,一般就称为指令寄存器IR。为了能够自动地一一取出存储器中的指令执行,要有专门指示存储器中指令地址的计数器,这个计数器叫程序计数器PC。这样考虑的结果要将计算器设计成图 2 15的简单计算机。
 
 
图 2 15 简单总线结构计算机
 
这个计算机由于增加了一些控制线,这使原来的加减运算计算器的7位控制字扩展成了15位:
 
CpLpEpLmMeIOLiEiEnLaEaEuSuLbLo
 
其中Cp是程序计数器PC加一控制线。由于输入缓冲寄存器IN的数据装入功能不是由控制器CON进行管理的,所以输入寄存器的输入控制线Ln不包含在这个计算机的控制字当中。此结构引出了寄存器A值为零的标志线ZF和A值为负的标志线NF。它们是条件跳转指令是否发生跳转的信号线。
 
这个计算机的RAM的存储单元8位,共有16个。因而存放地址的寄存器只要4位。指令寄存器是8位的,高4位是指令编码,低4位是存储器地址。其指令系统可以如表 2 2那样设计。
 
表 2 2  指令代码设计
 
功 能                                                                                 助记符                                               操作码
 
将数据装入当前存储单元                                                        LOD                                                     0000
 
将存储单元R的内容送到累加器A                                          LDA     R                                              0001
 
将存储单元R的内容与累加器A相加,结果送累加器A        ADD    R                                              0010
 
将累加器A与存储单元R的内容相减,结果送累加器A        SUB    R                                              0011
 
将累加器A的内容送到存储单元R                                           STR    R                                             0100
 
跳到R单元取指令                                                                    JMP      R                                             0101
 
如果累加器A的值是0则跳到R单元取指令                           JZ         R                                              0110
 
如果累加器A的值为负则跳到R单元取指令                        JN          R                                              0111
 
将存储单元R的内容输出                                                       OUT      R                                              1000
 
读入数据并送到存储单元R                                                   IN          R                                              1001
 
停机                                                                               STP                                                        1111
 
为了实现指令的功能,设计中要对指令完成动作全程进行分析,做好真值表,并根据真值表获得逻辑函数。例如ADD的指令全程分析如下:
 
(1)将程序计数器PC的值送到地址寄存器MAR;
 
(2)将EROM输出的内容送到指令寄存器IR;
 
(3)PC 加1;
 
(4)IR的低4位送到MAR;
 
(5)EROM输出的内容送到数据寄存器B;
 
(6)A+B的结果送到累加器A。
 
根据分析列出真值表如表 2 3所示。
 
表 2 3 ADD全程分析真值表
 
机器动作               拍    ZF   NF                        Cp Lp Ep Lm Me IO Li Ei En La Ea Eu Su Lb Lo
 
PC→MAR              0                                           0    0   1   1    0    0   0    0   0   0   0   0   0   0    0
 
RAM→IR               1                                            0    0   0   0   1    0    1   0   0   0   0    0   0   0   0
 
PC+1                     2                                            1    0   0   0   0    0    0   0   0   0   0    0   0   0   0
 
IR→MAR              3                                             0    0   0   1   0    0    0   1   0   0   0    0   0   0   0
 
RAM→B               4                                             0    0   0   0   1    0    0    0   0   0   0   0   0   1   0
 
A+B→A                 5                                            0    0   0    0   0   0    0    0   0   1   0   1   0    0   0
 
将所有指令全程分析都列入真值表中,就能够得到每条控制线随指令线和节拍线变化的情况。根据逻辑表达式抽象的方法,就可以一一得到每条控制线的函数。
 
指令分析的方法取决于指令格式,这里的指令格式简单,高4位是指令代码,低4位是存储器地址。因为指令寄存器接收的指令是这种格式的,因而在指令全程分析中才会有“IR的低4位送到MAR”。
 
写到这里,我想作为计算机核心设计的入门介绍,应该暂时告一个段落了。大家可以将这个简单总线结构的8位计算机,理解成16位、32位或64位等,还可以将存储器分为程序存储器和数据存储器,指令格式还可以复杂一些,从而使单一指令能够完成稍复杂一些的功能等。有关计算机如何实现程序自动执行的一般设计原理和方法,请见本人所著《计算机原理教程》和《计算机原理综合课程设计》两本书,在此就不赘述。
 
在接下来我们将进入高层一些的讨论。在此之前,我对于计算机核心设计需要特别强调几点。
 
(1) 计算机核心是一个统一指挥的“同步传输”结构;
 
(2) 程序计数器、指令寄存器、控制逻辑,节拍器等,都是为了能够让程序指令自动执行而设置的;
 
(3) 程序执行的基本方式是“服务式”,即由运算器和控制器等组成的处理器是服务元素,程序是服务对象,处理器通过对存储器中的程序进行“服务”来完成各种任务;
 
(4) 总线上的数据是互斥放置的,因而必须分时间节拍使用;
 
(5) 计算机的所有动作必须“先后有序”,同时工作的部分必须“互不相关”;
 
(6) 用硬件设计语言进行设计会有“简单易行”的效果,因为在硬件设计语言中许多重要的计算机功能部件,都用事先定义好的“符号”替代了,在编译综合阶段,这些“符号”要转化成特定的逻辑电路,而这些逻辑电路都是一种“确定”的结构,如果这个结构的功能不能满足设计要求,就必须回到原理图电路设计的基本设计方法上来考虑问题。
 
接下来会给大家一个简单的非透明的4级流水线设计实例。
 
--- 待续 ---
 


https://blog.sciencenet.cn/blog-340399-286773.html

上一篇:CMP的根本出路
下一篇:CPU设计我要让更多的人掌握它(续7)
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 10:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部