CN1334512A - 堆栈式寄存器堆及其控制方法 - Google Patents

堆栈式寄存器堆及其控制方法 Download PDF

Info

Publication number
CN1334512A
CN1334512A CN 00120103 CN00120103A CN1334512A CN 1334512 A CN1334512 A CN 1334512A CN 00120103 CN00120103 CN 00120103 CN 00120103 A CN00120103 A CN 00120103A CN 1334512 A CN1334512 A CN 1334512A
Authority
CN
China
Prior art keywords
register
stack
data
counter
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 00120103
Other languages
English (en)
Other versions
CN1146796C (zh
Inventor
王俊宇
王昭顺
刘大力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nansi Science and Technology Development Co., Ltd., Beijing
Original Assignee
DUOSI INFORMATION (GROUP) Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DUOSI INFORMATION (GROUP) Co Ltd filed Critical DUOSI INFORMATION (GROUP) Co Ltd
Priority to CNB001201034A priority Critical patent/CN1146796C/zh
Publication of CN1334512A publication Critical patent/CN1334512A/zh
Application granted granted Critical
Publication of CN1146796C publication Critical patent/CN1146796C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

一种堆栈式寄存器堆,包括:一个由通用寄存器组成的栈顶寄存器组(101);一个寄存器堆(105);一个数据缓冲寄存器(103),连接于栈顶寄存器组(101)与寄存器堆(105)之间,用于对位数小于预定字长的数据进行缓存;一个计数器(102),用于对栈顶寄存器组(101)和数据缓冲寄存器中最小操作单元数据的个数进行计数;以及一个寄存器堆地址指针生成部件(104),响应于出/入栈指令和来自计数器(102)的计数值,生成用于读/写寄存器堆(105)的地址指针。

Description

堆栈式寄存器堆及其控制方法
本发明涉及计算机微处理器,并且更具体地涉及在计算机微处理器中采用的堆栈式寄存器堆及其控制方法。
在计算机微处理器的各种操作中,经常需要处理不同字长的数据。一方面是因为不同类型的数据本身具有不同的字长,如字符型、整型、单精度浮点数、双精度浮点数等。另一方面,由于计算机微处理器技术的发展,微处理器字长不断升位,现代微处理器为了保持兼容性,需要处理以前各代产品中较短字长的数据。
在现有的微处理器中,对于较短字长的数据的存储方式有两种。一种是硬件的方式,如微处理器字长升位以后,为了兼容较低字长的数据处理,通常在原数据的基础上进行符号扩展得到升位字长的数据,直接替代原有字长的数据。另一种是软件的方式,在编译过程中,通过一定的算法给不同字长的数据分配相应的存储单元。
采用传统的硬件处理方式处理较低字长的数据,结果往往造成升位字长的微处理器的字长利用率低,并且会增加处理过程资源的开销,如浪费寄存器和外部寄存器堆资源、占用数据通路、增加总线传输和不必要的升位补齐操作等,硬件控制的复杂度也随之增大。采用软件的方式虽然可以解决微处理器的字长利用率低的问题,但分析过程复杂,编译的难度大。
因而,现有技术中存在着对不同字长数据进行自动识别和操作的需要。
本发明的第一目的是提供一种堆栈式寄存器堆,借助这种堆栈式寄存器堆,可以对不同字长的数据进行自动识别和操作。
本发明的第二目的是提供上述堆栈式寄存器堆的控制方法,使不同字长的数据在堆栈式寄存器堆中按照先进后出(FILO)的方式进/出栈。
为实现上述第一目的,本发明提供一种堆栈式寄存器堆,其特征在于包括:
一个栈顶寄存器组,包括k个连接在一起的通用寄存器,每个通用寄存器的预定字长为2n,最小操作单元长度为2n-m,其中k、m和n为自然数,且满足k≥2,0≤m<n,m表示所述该堆栈式寄存器堆能够自动识别和存储的预定字长小于2n的数据的种类数,此时宽度为2n的堆栈可以自动识别的数据宽度为2n-m+i(0≤i≤m),在入栈操作时,栈顶寄存器组中的第一个2n-m+i(0≤i≤m)位的存储单元为堆栈的入口,在出栈操作时,该栈顶寄存器中每一个寄存器的值都可以通过指令直接读出;
一个寄存器堆,包括2i(l≥0)个寄存器,每个寄存器的预定字长和最小操作单元长度都为2n
一个数据缓冲寄存器,连接在栈顶寄存器组与寄存器堆之间,用于对在其间传送的位数小于2n的数据进行缓存,该数据缓冲寄存器的字长为(2m-1)2n-m,最小操作单元宽度为2n-m
一个计数器,用于记录栈顶寄存器组以及数据缓冲寄存器中寄存的2n-m位数据的个数,计数器的最大计数值为(k·2m+2m-1);以及
一个寄存器堆地址指针生成部件,响应于出/入栈指令和计数器的计数值,生成用于读/写寄存器堆中相应寄存器的地址指针。
为实现上述第二目的,本发明提供一种对堆栈式寄存堆进行控制的方法,使得不同字长(字长为2n-m+i(0≤i≤m))的数据可以按照先进后出(FILO)的方式进行压栈和弹栈。该堆栈式寄存器堆包括:一个栈顶寄存器组,包括k(k≥2,k为自然数)个连接在一起的通用寄存器,作为堆栈式寄存器堆的栈顶,每个通用寄存器具有预定字长2n,最小操作单元的宽度2n-m(0≤m<n,m、n均为自然数);一个寄存器堆,包括2i(l≥0)个寄存器,每个寄存器具有预定字长2n位,用于存储来自栈顶寄存器组和数据缓冲寄存器中的数据;一个数据缓冲寄存器,连接在栈顶寄存器组与寄存器堆之间,用于对在其间传送的位数小于预定字长的数据进行缓存,字长为(2m-1)2n-m;一个计数器,以2n-m位为单位记录栈顶寄存器组和数据缓冲寄存器中寄存的有效数据的个数,可以完成加减2i操作,计数器的最大计数值为(k·2m+2m-1),计数器的计数值为2进制时,满足关系2q≥(k·2m+2m-1),其中q为2进制计数值的位数,q为自然数;一个寄存器堆地址指针生成部件,可以完成复位、置初值、加一和减一操作。
所述控制方法的特征在于包括以下步骤:
(1)将栈顶寄存器组101中的k个寄存器、计数器102、以及寄存器堆105中21个寄存器复位为0;
(2)用一定宽度的指令编码来表示操作数的宽度和数据的操作方式(出栈还是入栈),指令的编码满足条件2p≥2(m+1),其中p为栈操作指令编码的宽度,p为自然数,例如n=6且m=2时,64位堆栈可以自动识别和存储32位和16位数据,具体操作分6种情况(16位进栈、16位出栈、32位进栈、32位出栈、64位进栈、64位出栈),编码宽度p为3位,编码方式可以自行定义;
(3)计数器根据栈操作指令和计数器的初值进行计数,操作数据宽度2n-m+i(0≤i≤m),工作原理如下:
(31)进栈操作时,
(311)当寄存器堆105中没有数据时,
(3111)计数器的初值count<((k·2m+2m-1)-2i)时(其中(k·2m+2m-1)为最大计数值),新的计数值count=count+2i
(3112)计数器的初值count≥((k·2m+2m-1)-2i)时(其中(k·2m+2m-1)为最大计数值),新的计数值count=count+2i-2m
(312)当寄存器堆105中有数据时,新的计数值count=count+2i-2m
(32)出栈操作时,
(321)当寄存器堆105中没有数据时,新的计数值count=count-2i
(322)当寄存器堆105中有数据时,
(3221)计数器的初值count≥(k·2m+2i)时(其中k为栈顶寄存器的个数),新的计数值count=count-2i
(3222)计数器的初值count<(k·2m+2i)时(其中k为栈顶寄存器的个数),新的计数值count=count-2i+2m
(4)响应于步骤(3)中的计数值,完成数据在堆栈式寄存器堆中的入/出栈操作,在栈顶寄存器组中的数据以2i个2n-m位寄存
器为单位顺序出/入栈,栈顶寄存器组与寄存器堆以2n为单位
交换数据,具体操作步骤为:(41)入栈操作,
(411)当计数器初始值count满足条件:count<(k·2m-2i)时,在栈顶寄存器组中的数据以2i个2n-m位寄存器为单位顺序压入,栈顶寄存器组和寄存器堆之间无数据交换,栈指针不动;
(412)当计数器初始值count满足条件:(k·2m-2i)≤count<(k·2m)时,栈顶寄存器组中最后2m个2n-m位数据组合在一起(形成一个2n位数据)作为寄存器堆的输入数据,该数据在进入寄存器堆的同时写入其后的栈顶寄存器组和数据缓冲寄存器,数据写入寄存器堆中原地址指针的减一值所指向的存储单元(数据第一次进入寄存器堆时数据写入地址指针初值所指向的单元);
(413)当计数器初始值count满足条件:count≥k·2m时,栈顶寄存器组中倒数第二个2n位数据作为寄存器堆的输入数据,该数据在进入寄存器堆的同时覆盖其后的栈顶寄存器组和数据缓冲寄存器,数据写入寄存器堆中原地址指针的减一值所指向的存储单元;(42)出栈操作时,
(421)当寄存器堆105中无数时,栈顶寄存器组和数据缓冲寄存器中的数据以2i个2n-m位寄存器为单位顺序弹出,栈顶寄存器组和寄存器堆之间无数据交换,栈指针不动;
(422)当寄存器堆105中有数时,
(4221)当计数器初始值count满足条件:count≥k·2m+2i时,栈顶寄存器组和数据缓冲寄存器中的数据以2i个2n-m位寄存器为单位顺序弹出,栈顶寄存器组和寄存器堆之间无数据交换,栈指针不动;
(4222)当计数器初始值count满足条件:k·2m≤count<(k·2m+2i)时,栈顶寄存器组和数据缓冲寄存器中的数据以2i个2n-m位寄存器为单位顺序弹出的同时,寄存器堆中原
地址指针的加一值所指向的存储单元中的那个2n位数据弹出,出栈数据按照先进后出(FILO)的原则排列在栈顶寄存器组和数据缓冲寄存器中。
上述寄存器堆中数据的有无可以通过当前栈指针与定义的栈的上下界值的比较获得。
本发明的堆栈式寄存器堆,采用简单的硬件电路即可实现数据宽度的自兼容,即可以根据操作字长的指令,自动地识别、存贮和装载不同数据宽度的数据,同时还能够与微处理器升位字长的各种内部寄存器进行数据交换。与常规的堆栈式寄存器堆相比,本发明的堆栈式寄存器堆的显著优点主要表现在以下两个方面。
第一,本发明的堆栈式寄存器堆的栈顶单独组成一个寄存器组,在栈操作时,它们分别对应于堆栈的各个栈顶,而在寄存器操作时,和其它通用寄存器一样,寄存器组中的每一个寄存器均可以通过指令直接访问,这样可以大大提高栈顶数据的访问效率。
第二,本发明的堆栈式寄存器堆可以通过计数器和数据缓冲装置实现不同字长数据的自动识别和出/入栈操作。
根据本发明的对堆栈式寄存器堆的控制方法,使得先进后出的堆栈数据结构能够自行处理微处理器芯片内部寄存器、数据总线以及外部寄存器堆数据宽度的不一致性,从而能够在硬件电路中解决数据宽度的自行组合与分解。
结合附图,通过以下对本发明较佳实施方式的详细描述,本发明的上述及其他特征和优点将会更加明显。
图1是本发明的自适应字长堆栈式寄存器堆的一般结构示意图;
图2举例说明图1所示堆栈式寄存器堆的一种具体结构及数据交换原理;
图3A至图3K进一步说明图2所示的堆栈式寄存器堆的操作原理;
图4是图2所示寄存器堆模型的数据出/入栈方法的流程图;
图5是图2所示寄存器堆模型的数据入栈时序图;
图6是图2所示寄存器堆模型的数据出栈时序图;
图7举例说明图1所示堆栈式寄存器堆的另一具体结构及数据交换原理;
图8A至图8Y进一步说明图7所示的堆栈式寄存器堆的操作原理。
以下参照附图详细描述本发明的较佳实施方式。
图1是本发明的堆栈式寄存器堆的结构示意图。如图1所示,堆栈式寄存器堆包括:栈顶寄存器组101、计数器102、数据缓冲寄存器103、寄存器堆地址指针生成部件104和寄存器堆105。
栈顶寄存器组101包括k个连接在一起的通用寄存器R0、R1、…R(k-1)。每个通用寄存器的预定字长为2n,最小操作单元长度为2n-m,其中k、m和n都是自然数,且满足0≤m<n,k≥2。自然数m表示堆栈式寄存器堆能够自动识别和存储的预定字长小于2n的数据的种类数。在堆栈式寄存器堆以寄存器操作方式工作时,可以通过指令直接访问上述栈顶寄存器组中的任意一个寄存器。在以栈操作方式工作时,上述通用寄存器用作为堆栈的栈顶,当字长为2n-m+i(0≤i≤m)时,栈顶寄存器组中第一个字长为2n-m+i(0≤i≤m)的寄存器为堆栈数据的入口。
寄存器堆105,包括2l(l≥0)个寄存器,用于存储入栈数据,其中每个寄存器的预定字长和最小操作单元长度都为2n
数据缓冲寄存器103用于对在栈顶寄存器组101与寄存器堆105之间传送的位数小于2n的数据进行缓存,字长为(2m-1)2n-m,其最小操作单元宽度为2n-m。因为数据缓冲寄存器对用户不可见,所以本发明中也将其称为伪寄存器。
计数器102,用于记录栈顶寄存器组101以及数据缓冲寄存器103中寄存的2n-m位数据的个数。计数器103可以进行复位、加减进位值的操作。
寄存器堆地址指针生成部件104,响应于出/入栈指令和来自计数器102的计数值,生成用于读/写寄存器堆105中相应寄存器的地址指针。
图2举例说明图1所示堆栈式寄存器堆的一种具体结构及数据交换原理。在图2所示的例子中,n等于6,m等于1,k等于4,1等于16。也就是说,图2所示的堆栈式寄存器堆可以解决64位字长数据自适应32位字长数据的问题。在这种自适应过程中,单周期完成数据的入栈或出栈操作。
如图2所示,寄存器堆(RF)205包括256个64位寄存器,构成一个向低地址增长的堆栈。数据入栈时,先存入高地址,由寄存器堆地址指针生成部件(REA)204产生8位地址指针,可以指向256个寄存器中的任意一个。栈顶寄存器组201包括4个64位通用寄存器a、b、c、d。每个64位通用寄存器的最小操作宽度为32位。栈顶寄存器组201与寄存器堆205一起构成一个堆栈。该堆栈的一至四栈顶的数据可以进行寄存器访问。数据缓冲寄存器203的字长为32位。计数器202的计数值位数为4,计数器由计数控制器完成复位、加减1、加减2的操作,最大计数值为9。
图3A至图3K进一步说明图2所示的堆栈式寄存器堆的操作原理。图中栈顶寄存器组包括4个64位寄存器a、b、c、d。每个通用寄存器分为高低两个部分,如a0表示通用寄存器a的低32位,a1表示通用寄存器a的高32位。栈顶寄存器组和寄存器堆RF之间按照栈操作方式传送数据,并保持寄存器堆中栈顶数据与栈顶寄存器组中的栈底(包括伪寄存器h,如果此时伪寄存器h中有数的话)数据一致。
入栈操作开始时,寄存器堆RF中尚无数据,数据在栈顶寄存器组中以2i(0≤i≤1)个2n-m位数据为单位顺序进栈,数据首次从栈顶寄存器组传递到寄存器堆RF的情况有3种方式:
方式1(如图3A所示):32位数据入栈,计数器初值为7,操作完成后,栈顶寄存器组中数据以32位为单位顺序入栈,寄存器c1和d0中的数据组合成一个64位数据进入寄存器堆205,计数器加1;
方式2(如图3B所示):64位数据入栈,计数器初值为6,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器c中的64位数据进入寄存器堆205,计数器加2;
方式3(如图3C所示):64位数据入栈,计数器初值为7,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器c1和d0中的数据组合成一个64位数据进入寄存器堆205,计数器加2;
当寄存器堆205中有数时,栈顶寄存器组201和寄存器堆205之间数据交换的方式共8种:
方式1(如图3D所示):32位数据入栈,伪寄存器h无数,计数器初值为8,操作完成后,通用寄存器d1中的数据进入伪寄存器h暂存,计数器加1;
方式2(如图3E所示):32位数据入栈,伪寄存器h有数,计数器初值为9,操作完成后,通用寄存器的c1和d0中的数据组合成一个64位数据,压入寄存器堆RF,计数器减1,即此时在栈顶寄存器组和伪寄存器中的有效数据个数(以32位为单位计算)为8,伪寄存器中的数据无效;
方式3(如图3F所示):32位数据出栈,伪寄存器h无数,计数器初值为8,操作完成后,由RF中弹出的数据分解为两部分,分别传入d1和伪寄存器h中暂存,计数器加1;
方式4(如图3G所示):32位数据出栈,伪寄存器h有数,计数器初值为9,操作完成后,寄存器堆RF不动,伪寄存器h中的数据按照顺序出栈,计数器减1;
方式5(如图3H所示):64位数据入栈,伪寄存器h无数,计数器初值为8,操作结束时,通用寄存器c中的数据在更新通用寄存器d的数据的同时,压入寄存器堆RF,计数器值不变;
方式6(如图3I所示):64位数据入栈,伪寄存器h有数,计数器初值为9,操作结束时,通用寄存器c1和d0中的数据经组合后压入寄存器堆RF,同时更新寄存器d1和伪寄存器h中的数据,计数器值不变;
方式7(如图3J所示):64位数据出栈,伪寄存器h无数,计数器的初值为8,栈顶寄存器中中的数据以64位为单位顺序弹出,出栈数据直接传到通用寄存器d,更新寄存器d中的数据,计数器值不变;
方式8(如图3K所示):64位数据出栈,伪寄存器h有数,栈顶寄存器中中的数据以64位为单位顺序弹出,出栈数据分解为两部分,分别存入通用寄存器d1和伪寄存器h,计数器值不变。
图4是图2所示的堆栈式寄存器堆的控制方法中主要步骤的流程图。
在步骤401,过程开始。
在步骤402,判断操作类型是入栈操作还是出栈操作。若为入栈操作,则过程转至步骤403,否则过程转至步骤405。
在步骤403,判断寄存器堆RF是否上溢。若步骤403的判断结果为是,则过程转至步骤408,否则转至步骤404。
在步骤404,判断操作数宽度是32位还是64位。
这里的32位和64位只是用于举例说明,不构成对本发明的限制。
如果步骤404判断出操作数宽度为32位,则进行如下判断:
若计数值count小于9,则计数值加1,过程转至步骤408;
若计数值count等于9,则计数值减1,且寄存器堆地址指针RFP减1,过程转至步骤408。
如果步骤404判断出操作数宽度为64位,则进行如下判断:
若计数值count小于8,则计数值加2,过程转至步骤408;
若计数值count大于等于8,则计数值加2,且寄存器堆地址指针RFP减1,过程转至步骤408。
在步骤405,判断寄存器堆RF是否下溢。若步骤405的判断结果为是,则过程转至步骤406,否则转至步骤407。
在步骤406,判断操作数宽度是32位还是64位。
这里的32位和64位只是用于举例说明,不构成对本发明的限制。
如果步骤406判断出操作数宽度为32位,则进行如下判断:
若计数值count小于1,过程转至步骤408;
若计数值count大于等于1,则计数值减1,过程转至步骤408。
如果步骤406判断出操作数宽度为64位,则进行如下判断:
若计数值count小于2,过程转至步骤408;
若计数值count大于等于2,则计数值减2,过程转至步骤408。
在步骤407,判断操作数宽度是32位还是64位。
这里的32位和64位只是用于举例说明,不构成对本发明的限制。
如果步骤407判断出操作数宽度为32位,则进行如下判断:
若计数值count等于8,计数值加1,寄存器堆指针RFP加1,过程转至步骤408;
若计数值count等于9,则计数值减1,过程转至步骤408。
如果步骤407判断出操作数宽度为64位,则计数值不变,寄存器堆指针RFP加1,过程转至步骤408。
在步骤408,过程结束。
综上所述,在图2至图4所示的例子中,计数器工作原理为:
1.计数器加一:
    32位入栈,伪寄存器无数;
    32位出栈,RF中有数,而伪寄存器中无数;
2.计数器加二:
    64位入栈,COUNT的计数值小于8;
3.计数器减一:
    32位出栈,伪寄存器中有数,而且RF中有数;
    32位入栈,伪寄存器中有数;
    32位出栈,RF中无数,而栈顶寄存器组中有数(COUNT值不全为0);
4.计数器减二:
    64位出栈,RF中无数,而栈顶寄存器组中32位数据的个数大于1;
5.计数器发栈空信号:
    32位出栈,而栈顶寄存器组中无数;
    64位出栈,而栈顶寄存器组中已不足两个32位数据。
图2所示寄存器堆地址指针生成部件RFA的工作原理为:
在栈操作之前,用指令预置栈指针,使它指向栈操作的起始单元(SP),堆栈操作方式时,入/出栈指针生成原理如下:
1.当第一个64位数据从栈顶寄存器组中传递到寄存器堆RF中时,栈指针指向设置的初值不动,数据写入栈指针初值指向的寄存器;
2.入栈指针
入栈数据即内部寄存器中的数据存入(SP)-1指针所指的存储单元,入栈后SP指针更新为(SP)-1,即指向数据入栈后主寄存器堆当前栈顶位置。修改入栈指针的条件为:
栈操作有效而且寄存器堆未上溢时,COUNT大于等于6而且64位入栈,或者COUNT等于7或9,而且32位入栈。
3.出栈指针
由于寄存器中的数据是与SP指针所指示的主寄存器堆栈顶数据一致的(即所谓数据重叠),因此,出栈操作时,RFP生成的读数据的地址指针为(SP)+1,读出的数据为主寄存器堆次栈顶数据。出栈后SP指针更新,指向原(SP)+1所指示的位置,即指向数据出栈后的主寄存器堆当前栈顶位置。修改出栈指针的条件为:
栈操作有效而且寄存器堆未下溢时,COUNT等于8而且32位出栈,或者COUNT大于等于8,64位出栈。
图5是图2所述模型64位数据连续入栈的时序图。图中COUNT<3:0>为计数器的计数值,RFP为寄存器堆RF的地址指针,RFO为入栈操作时栈顶寄存器组向寄存器堆RF的输出数据,Bff和Bfe分别为寄存器堆RF的第一、第二栈底,本例中设栈指针的初始值为ff,入栈地址指针减1(第一个入栈数据写入ff寄存器),出栈地址指针加1。
图6是图2所述模型64位数据连续出栈的时序图。RFI为出栈操作时寄存器堆RF向栈顶寄存器组的输出数据,其它信号的意义同图5。
图7举例说明图1所示堆栈式寄存器堆的另一具体结构及数据交换原理。在图7所示的例子中,n等于6,m等于2,k等于2,l等于16。也就是说,图2所示的堆栈式寄存器堆可以解决64位字长数据自适应32位和16位字长数据的问题。在这种自适应过程中,单周期完成数据的入栈或出栈操作。
如图7所示,寄存器堆(RF)705包括256个64位寄存器,构成一个向低地址增长的堆栈。数据入栈时,先存入高地址,由寄存器堆地址指针生成部件(RFA)704产生8位地址指针,可以指向256个寄存器中的任意一个。栈顶寄存器组701包括2个64位通用寄存器a、b。每个64位通用寄存器的最小操作宽度为16位。栈顶寄存器组701与寄存器堆705一起构成一个堆栈。该堆栈的一、二栈顶的数据可以进行寄存器访问。数据缓冲寄存器703(又称为伪寄存器)的字长为48位,伪寄存器h的最小操作单位为16位,可以看成3个16位寄存器,分别为h0、h1、h2,其中h0为h<15∶0>,h1为h<31∶16>h2为h<47∶32>。计数器702的计数值位数为4,以16位为单位进行计数,计数器由计数控制器完成复位、加减1、加减2、加减3、加减4的操作,最大计数值为11(栈顶寄存器组中最多8个16位数据,伪寄存器可分为3个16位寄存器)。
图8A至图8Y进一步说明图7所示的堆栈式寄存器堆的操作原理。图中栈顶栈顶寄存器组包括2个64位寄存器a、b。每个通用寄存器以16位为单位按照高低顺序分为4个部分,a0表示a<15∶0>,a1表示a<31∶16>,a2表示a<47∶32>,a3表示a<63∶48>,b0表示b<15∶0>,b1表示b<31∶16>,b2表示b<47∶32>,b3表示b<63∶48>。栈顶寄存器组和寄存器堆RF之间按照栈操作方式传送数据,并保持寄存器堆中栈顶数据与栈顶寄存器组中的栈底(包括伪寄存器h,如果此时伪寄存器h中有数的话)数据一致。
入栈操作开始时,寄存器堆RF中尚无数据,数据在栈顶寄存器组中以2i(0≤i≤1)个2n-m位数据为单位顺序进栈,数据首次从栈顶寄存器组传递到寄存器堆RF的情况有7种方式(如图8A至8G所示):
方式1(如图8A所示):16位数据入栈,计数器初值为7,操作完成后,栈顶寄存器组中数据以16位为单位顺序入栈,寄存器a3、b0、b1和b2中的数据组合成一个64位数据进入寄存器堆705,计数器加1;
方式2(如图8B所示):32位数据入栈,计数器初值为6,操作完成后,栈顶寄存器组中数据以32位为单位顺序入栈,a2、a3、b0和b1中的数据组合成一个64位数据进入寄存器堆705,计数器加2;
方式3(如图8C所示):32位数据入栈,计数器初值为7,操作完成后,栈顶寄存器组中数据以32位为单位顺序入栈,寄存器a3、b0、b1和b2中的数据组合成一个64位数据进入寄存器堆705,计数器加2;
方式4(如图8D所示):64位数据入栈,计数器初值为4,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器a中的64位数据进入寄存器堆705,计数器加4;
方式5(如图8E所示):64位数据入栈,计数器初值为5,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器a1、a2、a3和b0中的数据组合成一个64位数据进入寄存器堆705,计数器加4;
方式6(如图8F所示):64位数据入栈,计数器初值为6,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器a2、a3、b0和b1中的数据组合成一个64位数据进入寄存器堆705,计数器加4;
方式7(如图8G所示):64位数据入栈,计数器初值为7,操作完成后,栈顶寄存器组中数据以64位为单位顺序入栈,寄存器a3、b0、b1和b2中的数据组合成一个64位数据进入寄存器堆705,计数器加4;
当寄存器堆705中有数时,栈顶寄存器组701和寄存器堆705之间数据交换的方式共18种(如图8H至8Y所示):
方式1(如图8H所示):16位数据入栈,伪寄存器h无数,计数器初值为8,操作完成后,栈顶寄存器组中数据以16位为单位顺序压栈、通用寄存器b3中的数据进入伪寄存器h暂存,计数器加1,当伪寄存器中16位数据的个数少于3时,情况类似;
方式2(如图8I所示):16位数据入栈,伪寄存器h中数据全满,计数器初值为11,操作完成后,通用寄存器a3、b0、b1和b2中的数据组合成一个64位数据,压入寄存器堆705,计数器减3,即此时在栈顶寄存器组和伪寄存器中的有效数据个数(以16位为单位计算)为8,伪寄存器中的数据无效;
方式3(如图8J所示):32位数据入栈,伪寄存器h无数,计数器初值为8,操作完成后,栈顶寄存器组中数据以32位为单位顺序压栈、通用寄存器b2、b3中的数据分别进入伪寄存器h0和h1中暂存,计数器加2,当伪寄存器中16位数据的个数为1时,情况类似;
方式4(如图8K所示):32位数据入栈,伪寄存器h有2个16位数据,计数器初值为10,操作完成后,栈顶寄存器组中数据以32位为单位顺序压栈、通用寄存器a2、a3、b0、b1中的数据组合成一个64位数据,压入寄存器堆705,计数器值不变;
方式5(如图8L所示):64位数据入栈,伪寄存器h全满,计数器初值为11,操作结束时,栈顶寄存器组中数据以32位为单位顺序压栈、通用寄存器a3、b0,b1、b2中的数据组合成一个64位数据,压入寄存器堆705,计数器值不变;
方式6(如图8M所示):64位数据入栈,伪寄存器h无数,计数器初值为8,操作结束时,通用寄存器a中的64位数据压入寄存器堆RF,同时更新寄存器b中的数据,计数器值不变;
方式7(如图8N所示):64位数据入栈,伪寄存器h中只有一个16位数据,计数器的初值为9,栈顶寄存器中中的数据以64位为单位顺序压栈,通用寄存器a1、a2、a3、b0中的数据组合成一个64位数据,压入寄存器堆705,计数器值不变;
方式8(如图80所示):64位数据入栈,伪寄存器h中有2个16位数据,计数器的初值为10,栈顶寄存器中中的数据以64位为单位顺序压栈,通用寄存器a2、a3、b0、b1中的数据组合成一个64位数据,压入寄存器堆705,计数器值不变;
方式9(如图8P所示):64位数据入栈,伪寄存器h中有3个16位数据,计数器的初值为11,栈顶寄存器中中的数据以64位为单位顺序压栈,通用寄存器a3、b0、b1、b2中的数据组合成一个64位数据,压入寄存器堆705,计数器值不变;
方式10(如图8Q所示):16位出栈,伪寄存器h中有数,栈顶寄存器组中的数据以16位为单位顺序出栈,计数器值减1;
方式11(如图8R所示):16位出栈,伪寄存器h中无数,栈顶寄存器组中的数据以16位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b3和h,栈指针加1,计数值加3;
方式12(如图8S所示):32位出栈,伪寄存器h中16位数据个数大于等于2,栈顶寄存器组中的数据以32位为单位顺序出栈,计数值减2;
方式13(如图8T所示):32位出栈,伪寄存器h中16位数据个数等于1,栈顶寄存器组中的数据以32位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b3和h,栈指针加1,计数值加2;
方式14(如图8U所示):32位出栈,伪寄存器h中无数,栈顶寄存器组中的数据以32位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b2、b3、h0和h1,栈指针加1,计数值加2;
方式15(如图8V所示):64位出栈,伪寄存器h中无数,栈顶寄存器组中的数据以64位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b,栈指针加1,计数值不变;
方式16(如图8W所示):64位出栈,伪寄存器h0中有数,栈顶寄存器组中的数据以64位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b1、b2、b3、h0,栈指针加1,计数值不变;
方式17(如图8X所示):64位出栈,伪寄存器h0、h1中有数,栈顶寄存器组中的数据以64位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b2、b3、h0、h1,栈指针加1,计数值不变;
方式18(如图8Y所示):64位出栈,伪寄存器h0、h1、h2中都有数,栈顶寄存器组中的数据以64位为单位顺序出栈,从寄存器堆705中弹出一个64位数据,进入寄存器b3、h0、h1、h2,栈指针加1,计数值不变。
虽然已经示出和详细描述了本发明的较佳实施方式,但是应当认识到可以对本发明做出各种变化和修改而不脱离权利要求书的范围。

Claims (3)

1.一种堆栈式寄存器堆,其特征在于包括:
一个栈顶寄存器组,包括k个连接在一起的通用寄存器,每个通用寄存器的预定字长为2n,最小操作单元长度为2n-m,其中k、m和n为自然数,且满足k≥2,0≤m<n,m表示所述该堆栈式寄存器堆能够自动识别和存储的预定字长小于2n的数据的种类数,此时宽度为2n的堆栈可以自动识别的数据宽度为2n-m+i(0≤i≤m),在入栈操作时,栈顶寄存器组中的第一个2n-m+i(0≤i≤m)位的存储单元为堆栈的入口,在出栈操作时,该栈顶寄存器中每一个寄存器的值都可以通过指令直接读出;
一个寄存器堆,包括2i(l≥0)个寄存器,每个寄存器的预定字长和最小操作单元长度都为2n
一个数据缓冲寄存器,连接在栈顶寄存器组与寄存器堆之间,用于对在其间传送的位数小于2n的数据进行缓存,该数据缓冲寄存器的字长为(2m-1)2n-m,最小操作单元宽度为2n-m
一个计数器,用于记录栈顶寄存器组以及数据缓冲寄存器中寄存的2n-m位数据的个数,计数器的最大计数值为(k·2m+2m-1);以及
一个寄存器堆地址指针生成部件,响应于出/入栈指令和计数器的计数值,生成用于读/写寄存器堆中相应寄存器的地址指针。
2.根据权利要求1所述的堆栈式寄存器堆,其特征在于在栈操作方式中,当计数器中的计数值大于等于k·2m时,寄存器堆的栈顶数据与栈顶寄存器组的栈底数据保持一致。
3.一种对堆栈式寄存器堆进行控制的方法,所述堆栈式寄存器堆包括:一个栈顶寄存器组,包括k个连接在一起的通用寄存器,每个通用寄存器的预定字长为2n,最小操作单元长度为2n-m,其中k、m和n为自然数,且满足k≥2,0≤m<n,m表示所述该堆栈式寄存器堆能够自动识别和存储的预定字长小于2n的数据的种类数,此时宽度为2n的堆栈可以自动识别的数据宽度为2n-m+i(0≤i≤m),在入栈操作时,栈顶寄存器组中的第一个2n-m+i(0≤i≤m)位的存储单元为堆栈的入口,在出栈操作时,该栈顶寄存器中每一个寄存器的值都可以通过指令直接读出;一个寄存器堆,包括2i(l≥0)个寄存器,每个寄存器的预定字长和最小操作单元长度都为2n;一个数据缓冲寄存器,连接在栈顶寄存器组与寄存器堆之间,用于对在其间传送的位数小于2n的数据进行缓存,该数据缓冲寄存器的字长为(2m-1)2n-m,最小操作单元宽度为2n-m;一个计数器,用于记录栈顶寄存器组以及数据缓冲寄存器中寄存的2n-m位数据的个数,计数器的最大计数值为(k·2m+2m-1);以及一个寄存器堆地址指针生成部件,响应于出/入栈指令和计数器的计数值,生成用于读/写寄存器堆中相应寄存器的地址指针;
所述方法的特征在于包括以下步骤:
计数器根据栈操作指令和计数器初值进行计数;
响应于计数器的计数值,完成数据在所述堆栈式寄存器堆中的入/出栈操作。
CNB001201034A 2000-07-18 2000-07-18 堆栈式寄存器堆及其控制方法 Expired - Fee Related CN1146796C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB001201034A CN1146796C (zh) 2000-07-18 2000-07-18 堆栈式寄存器堆及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB001201034A CN1146796C (zh) 2000-07-18 2000-07-18 堆栈式寄存器堆及其控制方法

Publications (2)

Publication Number Publication Date
CN1334512A true CN1334512A (zh) 2002-02-06
CN1146796C CN1146796C (zh) 2004-04-21

Family

ID=4588149

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB001201034A Expired - Fee Related CN1146796C (zh) 2000-07-18 2000-07-18 堆栈式寄存器堆及其控制方法

Country Status (1)

Country Link
CN (1) CN1146796C (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1322429C (zh) * 2002-11-21 2007-06-20 日立环球储存科技荷兰有限公司 数据存储装置和用于管理缓冲存储器的方法
CN100354827C (zh) * 2002-07-26 2007-12-12 松下电器产业株式会社 程序执行装置
CN100524623C (zh) * 2006-09-26 2009-08-05 中国科学院上海硅酸盐研究所 电磁场约束电感耦合溅射制备ZnO基稀磁半导体薄膜的方法
CN101160559B (zh) * 2005-02-25 2011-06-29 高通股份有限公司 通过关闭堆栈寄存器文件的若干部分来减少功率
CN104699627A (zh) * 2013-12-06 2015-06-10 上海芯豪微电子有限公司 一种缓存系统和方法
CN107547905A (zh) * 2017-05-10 2018-01-05 新华三信息安全技术有限公司 一种解码方法及装置
CN108304217A (zh) * 2018-03-09 2018-07-20 中国科学院计算技术研究所 将长位宽操作数指令转换为短位宽操作数指令的方法
CN112631510A (zh) * 2020-12-02 2021-04-09 海光信息技术股份有限公司 堆栈区域扩充的方法、装置及硬件平台
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质
WO2022067510A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种处理器、处理方法及相关设备

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100354827C (zh) * 2002-07-26 2007-12-12 松下电器产业株式会社 程序执行装置
CN1322429C (zh) * 2002-11-21 2007-06-20 日立环球储存科技荷兰有限公司 数据存储装置和用于管理缓冲存储器的方法
CN101160559B (zh) * 2005-02-25 2011-06-29 高通股份有限公司 通过关闭堆栈寄存器文件的若干部分来减少功率
CN100524623C (zh) * 2006-09-26 2009-08-05 中国科学院上海硅酸盐研究所 电磁场约束电感耦合溅射制备ZnO基稀磁半导体薄膜的方法
CN104699627A (zh) * 2013-12-06 2015-06-10 上海芯豪微电子有限公司 一种缓存系统和方法
WO2015081889A1 (zh) * 2013-12-06 2015-06-11 上海芯豪微电子有限公司 一种缓存系统和方法
US9990299B2 (en) 2013-12-06 2018-06-05 Shanghai Xinhao Microelectronics Co. Ltd. Cache system and method
CN104699627B (zh) * 2013-12-06 2019-05-07 上海芯豪微电子有限公司 一种缓存系统和方法
CN107547905B (zh) * 2017-05-10 2020-07-24 新华三信息安全技术有限公司 一种解码方法及装置
CN107547905A (zh) * 2017-05-10 2018-01-05 新华三信息安全技术有限公司 一种解码方法及装置
CN108304217A (zh) * 2018-03-09 2018-07-20 中国科学院计算技术研究所 将长位宽操作数指令转换为短位宽操作数指令的方法
CN108304217B (zh) * 2018-03-09 2020-11-03 中国科学院计算技术研究所 将长位宽操作数指令转换为短位宽操作数指令的方法
WO2022067510A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种处理器、处理方法及相关设备
CN112631510A (zh) * 2020-12-02 2021-04-09 海光信息技术股份有限公司 堆栈区域扩充的方法、装置及硬件平台
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质
CN112948000B (zh) * 2021-03-17 2023-03-03 星汉智能科技股份有限公司 栈空间统计方法、装置及介质

Also Published As

Publication number Publication date
CN1146796C (zh) 2004-04-21

Similar Documents

Publication Publication Date Title
CN1139884C (zh) 信息处理方法和装置
CN1258154C (zh) 多处理器系统、数据处理系统和数据处理方法
CN1310148C (zh) 程序执行处理终端装置和程序执行处理方法
CN1146796C (zh) 堆栈式寄存器堆及其控制方法
CN1655118A (zh) 处理器和编译器
CN1873685A (zh) 图像处理设备、方法和存储有程序的存储介质
CN1701513A (zh) 数据存储系统内的符号频率校平
CN1172994A (zh) 文件检索系统
CN1147306A (zh) 多指令集映射
CN1873689A (zh) 图像处理设备、方法和存储有程序的存储介质
CN1731402A (zh) 用协处理器加速文件系统操作的方法及装置
CN1873687A (zh) 图像处理装置、方法以及存储程序的存储介质
CN1141666C (zh) 利用标准笔划识别输入字符的在线字符识别系统
CN1873688A (zh) 图像处理设备、方法和存储有程序的存储介质
CN1933535A (zh) 打印装置、打印处理方法
CN1095560C (zh) 修改汉字转换结果的系统
CN1254785C (zh) 乐音生成装置、携带终端装置以及乐音生成方法
CN1873691A (zh) 图像处理装置、方法以及存储程序的存储介质
CN1873686A (zh) 图像处理装置、方法以及存储程序的存储介质
CN1194321C (zh) 高速信息检索系统
CN1334942A (zh) 规律性析取的系统方法
CN1862534A (zh) 静态范围匹配表的管理维护方法
CN1959630A (zh) 微处理器
CN1804789A (zh) 具有包括数据部分和相关计数器的条目的硬件堆栈
CN1960194A (zh) 排序装置

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING DUOSI TECHNOLOGY INDUSTRIAL PARK CO., LTD

Free format text: FORMER OWNER: DUOSI INFORMATION (GROUP) CO., LTD

Effective date: 20070914

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20070914

Address after: 100083 Haidian District Xueyuan Road No. 30 integrated circuit center, Beijing

Patentee after: Duosi Science & Technology Industry Field Co., Ltd., Beijing

Address before: Room 8, 801 / F, center, 3, Yaohua street, Hongkong, Tongluowan

Patentee before: Duosi Information (Group) Co., Ltd

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20100205

Address after: No. three, 189 floor, new complex building, maintenance group 3, red pass, Beijing, Haidian District: 100091

Co-patentee after: Beijing Duosi Technology Development Co., Ltd.

Patentee after: Limited by Share Ltd, Beijing tech Industrial Park, Limited by Share Ltd

Co-patentee after: Beijing tianhongyi Network Technology Co., Ltd.

Address before: No. three, 189 floor, new complex building, maintenance group three, red pass, Beijing, Haidian District: 100091

Patentee before: Duosi Science & Technology Industry Field Co., Ltd., Beijing

PP01 Preservation of patent right

Effective date of registration: 20121018

Granted publication date: 20040421

RINS Preservation of patent right or utility model and its discharge
PD01 Discharge of preservation of patent

Date of cancellation: 20130418

Granted publication date: 20040421

RINS Preservation of patent right or utility model and its discharge
PP01 Preservation of patent right

Effective date of registration: 20130530

Granted publication date: 20040421

RINS Preservation of patent right or utility model and its discharge
PD01 Discharge of preservation of patent

Date of cancellation: 20131130

Granted publication date: 20040421

RINS Preservation of patent right or utility model and its discharge
ASS Succession or assignment of patent right

Owner name: NANSI SCIENCE AND TECHNOLOGY DEVELOPMENT CO LTD, B

Free format text: FORMER OWNER: DUOSI SCIENCE + TECHNOLOGY INDUSTRY FIELD CO., LTD., BEIJING

Effective date: 20141010

Owner name: DUOSI SCIENCE + TECHNOLOGY INDUSTRY FIELD CO., LTD

Free format text: FORMER OWNER: BEIJING WISDOM TECHNOLOGY DEVELOPMENT CO., LTD. BEIJING T-MACRO NETWORK TECHNOLOGY CO., LTD.

Effective date: 20141010

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20141010

Address after: 100091, Beijing Haidian District red mountain Yamaguchi 3 maintenance group new building 189, a layer

Patentee after: Nansi Science and Technology Development Co., Ltd., Beijing

Patentee after: Duosi Science & Technology Industry Field Co., Ltd., Beijing

Patentee after: Beijing tianhongyi Network Technology Co., Ltd.

Address before: 100091, No. three, building 189, new complex building, maintenance group 3, red pass, Haidian District, Beijing

Patentee before: Duosi Science & Technology Industry Field Co., Ltd., Beijing

Patentee before: Beijing Duosi Technology Development Co., Ltd.

Patentee before: Beijing tianhongyi Network Technology Co., Ltd.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160225

Address after: 100095, room 108, building G, quiet core garden, No. 25, North Hollywood Road, Beijing, Haidian District

Patentee after: Beijing Duosi security chip technology Co. Ltd.

Address before: 100091, Beijing Haidian District red mountain Yamaguchi 3 maintenance group new building 189, a layer

Patentee before: Nansi Science and Technology Development Co., Ltd., Beijing

Patentee before: Duosi Science & Technology Industry Field Co., Ltd., Beijing

Patentee before: Beijing tianhongyi Network Technology Co., Ltd.

DD01 Delivery of document by public notice

Addressee: Zhou Yan

Document name: Notification of Passing Examination on Formalities

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160713

Address after: 100195, room 106, building G, quiet core garden, No. 25, North Hollywood Road, Beijing, Haidian District

Patentee after: Beijing tianhongyi Network Technology Co., Ltd.

Address before: 100195, room 108, building G, quiet core garden, No. 25, North Hollywood Road, Beijing, Haidian District

Patentee before: Beijing Duosi security chip technology Co. Ltd.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160721

Address after: 100195, room 109, block G, Beijing quiet garden, 25 North Road, North Hollywood village, Beijing, Haidian District

Patentee after: Beijing Duosi technical services Co. Ltd.

Address before: 100195, room 106, building G, quiet core garden, No. 25, North Hollywood Road, Beijing, Haidian District

Patentee before: Beijing tianhongyi Network Technology Co., Ltd.

TR01 Transfer of patent right

Effective date of registration: 20180815

Address after: 100195 room 107, block G, static core garden 25, road 25, North Wu Village, Beijing.

Patentee after: Duosi Science & Technology Industry Field Co., Ltd., Beijing

Address before: 100195 room 109, block G, Beijing static core garden 25, North Wu Village, Haidian District, Beijing.

Patentee before: Beijing Duosi technical services Co. Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181018

Address after: 100036 Beijing Haidian District Wanshou Road West Street 2, 4, 420 room.

Patentee after: Nansi Science and Technology Development Co., Ltd., Beijing

Address before: 100195 room 107, block G, static core garden 25, road 25, North Wu Village, Beijing.

Patentee before: Duosi Science & Technology Industry Field Co., Ltd., Beijing

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040421

Termination date: 20190718

CF01 Termination of patent right due to non-payment of annual fee