倍频数据传输装置及其传输方法 本发明涉及计算机体系结构设计及计算机指令体系设计领域,还涉及寄存器堆的操作控制及数据传输领域,特别涉及一种宏指令集计算机体系结构微处理器。
计算机体系结构设计及其控制设计、指令体系设计及其译码设计的关键是追求使用最少的硬件资源、简单的结构而达到计算机效率成倍增长的目的。然而,现行的计算机体系结构均采用了一种固定的结构、固定的时钟,所谓“刚性”设计,这种设计最显著的一个缺陷是在通常的操作下,CPU处理的效率大部分被浪费(尤其在文字处理或网络处理的过程中),然而功耗却随固定的时钟频率消耗着能源。
在5000年的文明发展史中,可以说电脑的发明是所有发明中最伟大的发明,它是人类大脑智慧的延伸,然而电脑与人脑地一个重要差异之一就是电脑的工作仅以固定的频率执行,而人脑则随着需要可以倍频执行,即所谓“急中生智”就是倍频执行的效果。
从计算机原理中我们可知,在相同的结构和电路规模的条件下,计算机的效率与时钟主频成正比关系,如果在不增加电路规模,不改变电路工艺的条件下,使计算机程序的指令序列及数据传输操作可以在需要时以正常和倍频的时钟速度运行,且使得功能电路在一个指令周期内被重复使用,将会使计算机在相同的硬件资源条件下,执行效率与双倍时钟主频成正比关系。这一研究主题,一直是计算机界追求的目标。
现有的体系结构技术采用了CACHE技术和大量寄存器堆技术,指令执行效率和数据传输效率有明显提高,其花费的代价是必须使用高速的缓冲存贮器和大量寄存器,且CACHE的取指时间需要减少半个周期,为此必须提高主频,即提高工艺技术,才会提高执行效率。
上述现有技术中,指令执行和数据传输效率的提高是以增大电路规模为代价的。
本发明的目的是利用倍频数据传输装置,在不利用CACHE和大量寄存器堆技术的前提下,不提高主频的速度,以简单的电路结构实现数据倍频传输。
本发明还揭示了一种利用倍频数据传输装置,实现内部寄存器与外部存贮器的连接,通过倍频数据传输的操作,达到利用外部存贮器增加内部寄存器数量的目的,以降低电路规模,提高数据传输效率。
本发明还提供了一种利用倍频数据传输装置,通过可变长指令的编码,可以实现正常频和倍频数据传输的操作控制,从而达到了不增加倍频操作的时钟主频实现倍频操作的目的,从而可降低电路的功耗。
本发明还揭示了一种利用倍频数据传输装置,解决倍频与正常频数据传输操作的控制方法。实现了增加存贮器频宽和以简单的控制电路达到了正常频数据操作与倍频数据操作的连接目的。
为了实现上述目的,本发明提供了一种倍频数据传输装置,其特征在于能在具有主副本结构的内部寄存器和外部存储器之间实现数据的倍频输入/输出操作,即在一个时钟周期内传输两个总线宽度的数据,所述装置包括:用于控制外部存储器读/写的倍频地址部件,能在一个周期内生成读/写外部存储器的两个地址,以在一个周期内从外部存储器读出/写入两个数据;连接在外部存储器和内部寄存器之间的倍频数据传输接口装置,用于数据在外部存储器和内部寄存器之间传榆过程中的暂时锁存。
本发明还提供了一种倍频数据输入的控制方法,用来在具有主副本结构的内部寄存器和外部存储器之间实现数据的倍频输入/输出操作,即在一个时钟周期内传输两个总线宽度的数据,其特征在于包括下列步骤:用控制外部存储器读/写的倍频地址部件,在一个周期内生成读/写外部存储器的两个地址,以在一个周期内从外部存储器读出/写入两个数据;将所述读出/写入的两个数据暂时锁存在连接在外部存储器和内部寄存器之间的倍频数据传输接口装置中;将数据从所述的倍频数据传输接口装置送入内部寄存器。
本发明的一个优点是利用倍频数据传输装置,在不使用CACHE和大量寄存器堆技术,不提高主频速度的前提下,即可达到双倍的数据传输速度效果。
本发明的另一个优点是利用倍频数据传输装置,通过倍频数据传输的操作,达到利用外部存贮器增加内部寄存器数量的目的,大大降低了电路规模,提高了整个系统的执行效率。
本发明的另一个优点是利用倍频数据传输装置,在不提高时钟主频的前提下,可以实现正常频和倍频数据传输的操作控制,从而可降低电路的功耗。
本发明的另一个优点是利用倍频数据传输装置,解决倍频与正常频数据传输操作的控制方法。不但增加了存贮器频宽,还简化译码电路的复杂度及其规模。
图1:倍频数据传输装置的总体结构及其连接关系图;
图2:倍频数据传输接口部件结构示意图;
图3:寄存器部件的寄存器主副本结构图;
图4:倍频地址地址部件结构图;
图5:倍频地址指针生成时序图;
图6:从寄存器组倍速输出数据示意图;
图7:从存储器倍频输入数据示意图;
图8:倍频数据传输操作示意图。
图1是倍频数据传输装置的总体结构及其连接关系图。倍频数据传输装置由3部分组成:内部寄存器部件01、倍频数据传输接口部件02和外部存储器部件03。倍频数据传输接口部件02的作用是在一个时钟周期内在内部寄存器部件01和外部存储器部件03之间传输2个总线宽度的数据。如图所示,倍频数据传输接口部件02连接芯片的内部寄存器部件与外部存储器部件,芯片通过倍频数据传输接口部件02在内部寄存器和外部存储器之间传送数据。将数据从寄存器存入存储器时,寄存器中的数据先进入倍频数据传输接口部件02的输出部件,从输出部件将数据OUT存入当前地址指针指示的存储单元;从存储器取数据到寄存器时,由当前地址指针指示的存储单元取数据IN进入倍频数据传输接口部件02的输入部件,从输入部件将数据存入寄存器。其中内部寄存器部件01包含2部分:多个多位的数据选通部件MUX和一个多位寄存器组。寄存器组包含多个寄存器,每个寄存器都有一个选通器MUX控制其数据来源。每个选通器MUX有多路多位数据来源,数据1至数据n-1可以来自其他寄存器或运算部件的结果,数据n是倍频数据传输接口部件的输出数据,由指令译码结果给出控制信号MREG选择n路数据中的一路存入相应的寄存器。寄存器采用主副本结构。外部存储器部件包含2部分:存储器部件和倍频地址部件。由倍频地址部件产生地址PT控制存储器部件中当前使用的存储单元。在进行倍频数据传输时,存储器部件采用倍频地址,即每个时钟周期产生两个连续的地址。
图2是倍频数据传输接口部件的结构图。倍频数据传输接口部件由一个倍频数据输入部件021和一个倍频数据输出部件022组成。其中倍频数据输入部件021包含2个输入寄存部件LAT1、LAT2和一个选通部件MUX0,分别由时钟信号CLK2、CLK4和CLK控制。进行倍频数据输入时,在一个时钟内由倍频地址部件产生两个连续的地址指示两个存储单元,从存储器的这两个存储单元取出两个数据,分别在CLK2和CLK4的控制下存入LAT1和LAT2中,MUX0在CLK的控制下前半周期选通IN1,后半周期选通IN2分别存入两个寄存器完成倍频数据输入操作。倍频数据输出部件022包含3个选通部件MUX1、MUX2和MUX3,分别由指令译码结果的选通信号M0、M1和时钟信号CLK控制。进行倍频数据输出时,M0控制MUX1选通某一寄存器的主本数据产生OUT1,M1控制MUX2选通某一寄存器的副本数据产生OUT2,MUX3在CLK的控制下前半时钟周期选通OUT1输出,后半时钟周期选通OUT2输出完成倍频数据输出操作。
图3是寄存器部件的寄存器主副本结构图。寄存器部件包含多个多位的寄存器,每个寄存器用主副本算法实现,有上下两个多位锁存器,分别称为寄存器的上锁LAT和下锁LATN,每个上锁有一个多路选通器MUX0,由指令译码的结果产生选通信号MREGi0(i=1,2,…,m)选择进入LAT的数据,每个下锁也有一个多路选通器MUX1,由指令译码的结果产生选通信号MREGi1(i=1,2,…,m)选择进入LATN的数据,而LAT和LATN分别由时钟信号的上沿CLK和下沿CLK控制。主副本算法是实现倍频数据传输的基础,使用主副本算法时,寄存器由上锁LAT和下锁LATN分别产生副本数据和主本数据。所有寄存器的主本接输出部件的MUX1,所有寄存器的副本接输出部件的MUX2。当有两个数据DATA1和DATA2(分别存放在寄存器2和寄存器1中)需要从寄存器组倍速进存储器时,倍频数据传输接口部件的输出部件中,M0控制MUX1选通寄存器2的主本得到OUT1=DATA1,M1控制MUX2选通寄存器1的副本得到OUT2=DATA2,MUX3在前半时钟周期选通主本数据DATA1作为输出数据OUT,在后半时钟周期选通副本数据DATA2作为输出数据OUT,实现将DATA1和DATA2存入存储器。主副本寄存器的另一个显著特点是在一个时钟周期内能存放2个不同的数据,因此可以同时对同一个寄存器进行读写。如寄存器m中已存放数据a,此时需要将数据b从第n路通路写入寄存器m,同时从寄存器m中读数据a。只需从寄存器m的下锁LATN读数据a,同时寄存器m的选通控制信号MREG0选择第n路数据来源将b存入上锁LAT。由于寄存器是多位的,可以存放多个字节,为了实现寄存器内部字节交换,寄存器的下锁LATN也有一个选通器MUX1,下锁的某一字节可以由指令译码结果产生的MREGi1信号控制MUX1选通上锁数据的不同字节。
图4是倍频地址部件结构图。倍频地址部件包括两个选通器MUX0和MUX1;两个加1器INC;两个减1器DEC和五个锁存器LAT。选通器MUX0由指令译码结果产生的信号MPT0控制,选择用于生成下一个地址指针的初值,MUX0至少有二路数据来源,分别为当前地址指针PT和外部地址指针值D,外部地址指针来源还可以增加。MUX1由指令译码结果产生的信号MPT1控制,选择当前地址指针值,它的五路数据来源分别为指针初始值P、加1值PINC、加2值PINC1、减1值PDEC和减2值PDEC1。2个加1器INC分别用于生成加1值PINC和;加2值PINC1;2个减1器DEC分别用于生成减1值PDEC和减2值PDEC1;5个锁存器LAT分别用于保存P、PINC、PINC1、PDEC和PDEC1。如图4所示,当指令从外部设置指针时MPT0选通D(假设为X),则将X直接存入锁存器LAT得到初始指针值X(P),X通过减1器DEC再存入锁存器LAT得到初始指针减1值X-1(PDEC),X通过两个减1器DEC-DEC再存入锁存器LAT得到初始指针减2值X-2(PDEC1),X通过加1器INC再存入锁存器LAT得到初始指针加1值X+1(PINC),X通过两个加1器INC-INC再存入锁存器LAT得到初始指针加2值X+2(PINC1),MPT1可以选通PT、PTDEC、PTDEC1、PTINC和PTINC1之一作为当前地址。数据从寄存器组倍速存入存储器时,需要存储器中的2个存储单元存放主本和副本数据,所以存储器的地址控制部件需要在一个时钟周期内产生2个连续的地址。这时由MPT0选通D得到P,同时产生PINC、PINC1、PDEC和PDEC1,MPT1在时钟前半周期选通P,后半周期选通PINC或PDEC。而在正常频传输时MPT1始终选通P既可。
应该理解的是,图4中的倍频地址部件在很多应用中可以简化,即没有必要产生5路地址,而是只产生两路,例如一路初始值,一路加1值,或者一路初始值,一路减1值等。而且根据需要也能产生另外路数的地址,如4路等。
图5是倍频地址指针生成时序图。当时钟的前半周期指令有指针连续操作需求时,MPT0选通D(假设为A)产生P,分别经过DEC和DEC-DEC产生A-1(PDEC)和A-2(PDEC1)。在时钟的后半周期MPT1选通P输出地址A后,下一时钟周期的前半周MPT1选通PDEC输出地址A-1,后半周期MPT1选通PDEC1输出地址A-2。同时MPT0选通PDEC1,以A-2为初始地址指针再形成新的PTDEC和PTDEC1,MPT1再交替选通PTDEC和PTDEC1。这样每半周期依次输出地址A、A-1、A-2、A-3、A-4、…,由MPT1选通控制完成倍频的地址输出。同样,当时钟的前半周期指令有指针反向连续操作需求时,MPT0选通D(假设为B)产生P,分别经过INC和INC-INC产生B+I(PINC)和B+2(PINC1),在时钟的后半周期MPT1选通P输出地址B后,下一时钟周期的前半周MPT1选通PINC输出地址B+1,后半周期MPT1选通PINC1输出地址B+2。同时MPT0选通PINC1,以B+2为初始地址指针再形成新的PINC和PINC1,MPT1再交替选通PINC和PINC1。这样每半周期依次输出地址B、B+1、B+2、B+3、B+4、…,由MPT1选通控制完成倍频的地址输出。
图6是主副本数据倍频存入存储器的操作过程和控制时序示意图。在进行倍频数据输出时,由指令指示主副本寄存器产生主本数据和副本数据。数据的主本和副本分别进入选通器MUX1和MUX2,同时倍频地址形成部件产生两个连续的地址。指令译码产生的信号M0选通所需的主本数据得到第一个输出数据OUT1;指令译码产生的信号M1选通所需的副本数据得到第二个输出数据OUT2。在一个时钟周期内CLK交替控制MUX3选通OUT1或OUT2得到输出数据OUT,前半周期将OUT=OUT1存入第一个地址指示的存储单元,,后半周期将OUT=OUT2存入第二个地址指示的存储单元,完成数据的倍频输出操作。
图7是从存储器倍频取数据进寄存器组的操作过程和控制时序示意图。在进行倍频数据输入时,需要从存储器倍速取数据存入寄存器组。这时倍频地址形成部件产生两个连续的地址,每半个时钟周期从存储器取出一个数据IN,前半周期取出第一个地址指示的数据IN1存放到由CLK2时钟信号控制的锁存器LAT1中,后半周期取出第二个地址指示的数据1N2存放到由CLK4时钟信号控制的锁存器LAT2中。选通器MUX0在CLK的控制下前半周期取X得到IN1,后半周期取Y得到IN2。在一个时钟周期内交替控制MUX0选通X或Y,得到输出数据Z分别存入指令指示的寄存器,完成数据的倍频输出操作。
图8是倍频数据传输操作示意图。一条指令需要将寄存器1和寄存器2中的数据a和b传输到存储器。指令产生M0控制信号,选通寄存器1的主本数据a;产生M1控制信号,选通寄存器2的副本数据b。同时倍频地址部件产生2个地址PT和PTINC,指示2个存储器单元,这2个存储单元的数据来源选通OUT,选通器MUX3在CLK的控制下前半周期选通a,后半周期选通b,得到OUT,分别将a和b存入PT和PTINC指示的存储单元。另一条指令需要从存储器取数据c和d存入寄存器3和寄存器4。首先由指令产生2个地址PT和PTINC,指示存放c和d的2个连续存储器单元,然后从这2个存储单元取出c和d分别存入暂存器LAT1和LAT2,由指令产生寄存器3和寄存器4的数据来源控制,此控制总是选通MUX0的输出DATA,MUX0在CLK的控制下交替选通c和d,前半周期将c存入寄存器3,后半周期将d存入寄存器4。