CN1278344A - 用于在寄存器栈和存储器资源之间传送数据的方法和设备 - Google Patents
用于在寄存器栈和存储器资源之间传送数据的方法和设备 Download PDFInfo
- Publication number
- CN1278344A CN1278344A CN98810765A CN98810765A CN1278344A CN 1278344 A CN1278344 A CN 1278344A CN 98810765 A CN98810765 A CN 98810765A CN 98810765 A CN98810765 A CN 98810765A CN 1278344 A CN1278344 A CN 1278344A
- Authority
- CN
- China
- Prior art keywords
- register
- memory resource
- stack
- equipment
- content
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
Abstract
一种计算机实现的用于把寄存器栈(86)里的某通用寄存器(80)的内容传送到主存储器(82)里的后备存储器(94)中的单元上的方法和设备。当向后备存储器里的单元传送通用寄存器的内容时,本发明推荐在一个临时集合寄存器(108或110)中收集寄存器预定组中每个通用寄存器所包含的属性位。一旦填满该临时集合寄存器,就把该寄存器中的内容写到后备存储器里的下一个可用的单元上。类似地,在从后备存储器恢复各寄存器时,把后备寄存器中保存的属性位的集合发送到临时集合寄存器。然后,把每个属性位和相关的数据一起保持到通用寄存器中,从而恢复每个通用寄存器以前的内容。
Description
本发明一般地涉及微处理器的体系结构状态。具体地,本发明涉及用于在寄存器栈和由微处理器的存储器定义的后备存储器之间传送数据的方法和设备。
寄存器栈可由微处理器的一些通用寄存器构成,这些寄存器被指定成用于存储由该微处理器执行的某已存储的程序的各过程所要求的以及有关的数据。具体地,一旦执行某特定过程,就在该寄存器栈内建立一个和该过程相关的栈帧。栈帧包括保留的寄存器组(含有有关过程的本地变量)、赋活记录和帧标记。当某过程调用另一个过程时,被调用的帧接着在该调用过程的栈式帧的顶上建立另一个栈式帧。从而,对于其中要执行一些嵌套过程的程序,寄存器栈可包括对应数量的栈帧。
从而寄存器栈通过在单片上的寄存器组中堆栈多个相关的栈帧能使多个过程有效地共享一个大的寄存器文件。程序的典型调用/返回模式呈现出高频的调用/返回但其范围较小。寄存器栈明显地减少过程调用点处的存储数量(即寄存器节约)并且明显地减少过程返回点处的装入(即寄存器恢复),从而提供对和嵌套过程有关的信息的“高速缓存”。随着处理器运行频率的加快快于对存储器资源(例如RAM)的存取时间的缩短,减少由于过程调用和返回所造成的由程序进行的存储器存取次数,在性能上可提供好处。从模块化的流行、面向对象的程序设计以及采用动态链接库的角度来看,该优点变得更为突出。
由于寄存器栈长度有限,可以理解在深嵌套过程调用序列下,寄存器栈的容量可能被超出,造成所谓的“信息漏失”。在这样的情况下,必须从寄存器栈把某些前面的栈帧的寄存器传送到后备存储器中,以便创造寄存器栈内的容量。类似地,由于过程回送而使寄存器栈变空,需要把已存储到后备存储器中的前栈帧的寄存器恢复到寄存器栈中。当寄存器栈的寄存器中所包含的位数不是后备存储器所驻留的存储器资源定址所采用的定址模式的倍数的情况下,寄存器栈和后备存储器之间的栈帧传送可能是有问题的。
依据本发明提供一种用于从寄存器帧向存储器资源或存储部件传送数据的设备。该设备包括一个临时存储器和传送逻辑。该传送逻辑把寄存器栈里的第一寄存器内容中的N位传送到存储器资源中的第一单元,并且还把第一寄存器内容中的M位传送到临时存储器中的第一单元。当已经在寄存器栈和存储器资源之间出现预定数量的数据传送时,该传送逻辑把临时存储器的累积内容传送到存储器资源中的第二单元。
从附图以及下面的详细说明,本发明的其它特征将会清楚。
本发明是通过示例的方式示出的并且不受各附图的限制,其中用相同的标号表示类似的部件,附图是:
图1示意表示可在其中实现和运用本发明的一种计算机系统。
图2示意表示可在其中实现和运用本发明的一种处理机。
图3示意表示一种依据本发明的一种实施例的设备,其用于在寄存器和存储器资源之间传送数据。
图4是一个流程图,表示一种依据本发明的用于把寄存器中的内容存储到存储器资源中的方法。
图5是一个流程图,表示一种依据本发明从存储器资源中恢复寄存器的内容的方法。
图6示意表示依据本发明的在主存储器中构建出的后备存储器。
说明一种在集成电路内的用于在寄存器和存储器资源之间传送数据的方法和设备。在下述说明中,出于解释的目的,为了对本发明提供完整的理解,陈述了许多具体细节。然而对于业内人士,很明显,可以不在这些具体细节下实现本发明。计算机系统和微处理器概述
参见图1,图1以方块图的形式示出计算机系统10的概况,该系统可和所说明的任一本发明的实施例一起使用。请理解,虽然图1用于提供一种计算机系统的总描述,但未示出该系统的某些细节。如公开本发明所需的那样,参照本说明书所提供的其它附图描述其它细节。此外,本发明是通过示范实施例说明的。在本发明的范围内业内人士可设想替代实施例。如图1中所示,计算机系统10包括一条用于在处理器14和总线桥路16之间传递信息的处理器总线12。处理器14还通过一条专用总线和二级(L2)高速缓存器18连接。处理器14通过总线桥路16和计算机系统10的其余部分通信,和总线桥路16连接的有三级(L3)高速缓存器20以及典型地为随机存取存储器(RAM)的主存储器22。为了便利一些外围设备、处理器14和主存储器22之间的通信,系统总线24还和总线桥路16连接。在系统总线24和相关的外围设备之间连接着一些专用输入/输出(I/O)端口26。外围设备包括显示器28(例如阴极射线管(CRT)或液晶显示器(LCD))、字母数字输入部件30(例如键盘)、光标控制部件32(例如鼠标或其它指点器)、硬拷贝部件34(例如打印机或提供计算机图象的可视表示的绘图仪)以及信号生成部件36(例如麦克风或扬声器)。计算机系统10还包括一个海量存储部件38,例如磁盘以及相关的经专用I/O端口26连接于系统总线24的驱动器。
现参照图2,图中以方块图的形式更详细地说明图1的处理器14。处理器14包括一个总线接口单元40,后者提供微处理器14和系统总线12之间的接口。总线接口单元40连接成允许预取器42通过指令高速缓存器44访问计算机系统10的主存储器22。预取器42经总线接口单元40从指令高速缓存器44或从主存储器22检索由指令指针定址的指令。转移预测单元46为预取器42检索的转移指令提供推测性预测,并且还根据是否发生预测的转移输出对顺序存储器地址或目标存储器地址定址的指令指针。在复杂指令集计算(CISC)体系结构下,预取器42把指令传送到译码器48,以便译码成一组供下游处理的微操作。受控只读存储器(ROM)50和译码器48连接并从译码器48接收入口点。译码器48和受控ROM50向控制单元52提供微操作。可以理解,在精简指令集计算(RISC)实施方式下,可以从处理器体系结构中省略指令译码器48和受控ROM50。
控制单元52分别向整数执行单元54和浮点执行单元56提供供执行用的整数指令或浮点指令。整数执行单元54及浮点执行单元56在执行指令时访问数据高速缓存器58。还从控制单元52向地址生成单元60提供微操作,而地址生成单元60生成和翻译地址信息。
图3示意表示根据本发明的一种示范实施例的一组通用寄存器80、主存储器82和传送设备84,传送设备84用于便利通用寄存器组80和主存储器82之间的信息传送。寄存器栈和后备存储器
通用寄存器组中的一个子集指定成充当寄存器栈86。例如,可把128个通用寄存器中的96个指定为构成寄存器栈86。在程序执行时,可向每个过程分配寄存器栈中的一定数量的寄存器作为本地栈帧。参照图3,寄存器栈86相应地包括分别和过程A、B、C相关的栈帧88、90和92。每个栈帧88、90和92包括预定数量的具有特定位长的寄存器。在图3中示出的实施例中,寄存器栈中的每个寄存器具有65位的位长。
当调用另一个过程时自动地保留每个栈帧。例如,当过程A调用过程B时保留用于过程A的栈帧88。类似地,当过程B调用过程C时在寄存器栈中保留用于过程B的栈帧90。当出现过程的返回时,则从寄存器帧中去掉有关的栈帧。例如,当从过程C返回到过程B时,就从寄存器栈86去掉栈帧92。
可理解寄存器栈86的容量是固定的并且有限。在具有大量相继被调用过程的情况下,寄存器栈86可能不具有能容纳所有被调用过程的栈帧的容量,从而寄存器栈可能溢出或“信息漏失”。在这种情况下,必须把一些较老的栈帧保存到主存储器82中被指定成后备存储器94的部分中。在寄存器栈86中的过程调用栈变为过深的情况下,必须如图3中所示把栈帧88、90和92中的一部分保存到后备存储器94中。
类似地,当从寄存器栈86去掉用于过程A、B、C后面的过程的栈帧时,则重新需要使栈帧88、90和92驻留到寄存器栈86中。从而,当在寄存器栈86中有可使用的容量时,则可以重新逐渐地把各栈帧88、90、92部分从后备寄存器94传送到寄存器栈86。属性信息
在先进的处理器体系结构中,需要把属性信息和某些数据关联起来。例如,在能推测指令执行的处理器中,有可能推迟由这种推测性指令产生的异常,直至相关指令变成非推测性的。为了实现对由推测执行的指令生成的异常的推迟的处理,图3中示出的本发明的该实施例提出对每个64位通用寄存器80添增称为属性位的第65位。从而示出一个示范性的寄存器96,其包括64个数据位98和单个属性位100。属性位100用于指示以该相关寄存器为目标的一系列推测性装入操作是成功还是失败。若对某具体存储器地址的装入指令会产生故障,则和该目标寄存器相关的推测性装入指令将把属性位100置为逻辑-(1)。以这种方式,推迟对该故障的处理,直至某程序(如果有过的话)企图使用该装入指令的结果。这样,编译器可以在实际上有可能之前更早地发出装入指令。
建立具有65位长的通用寄存器,尽管从异常处理角度是有利的,但在把数据从寄存器栈86保存到后备寄存器94中可能会造成一定的低效率。由于主存储器82是以8位字节定址的,一种把寄存器的内容存储到后备存储器94中的方法提议利用9个字节存储每个通用寄存器。但是,由于最高有效位(MSB)是向主存储器82传送的最后的第9字节中唯一的一位,这对每个寄存器造成7个位的浪费。当用16位的字节定址存储器时这种低效会恶化。
现具体参照图3,传送设备84包括寄存器栈引擎102、一对地址寄存器104和106以及一对集合寄存器108和110。寄存器栈引擎102负责从寄存器栈86向后备存储器94传送各栈帧(溢出),并且负责从后备存储器94向寄存器栈86回传各栈帧(回填)。寄存器栈引擎102在无程序的直接干预下与指令的执行并发地以及异步地溢出和回填寄存器栈86。这允许寄存器栈引擎102利用未使用的存储器带宽以占先方式动态地执行寄存器溢出和回填。例如,在预计可能出现寄存器栈溢出时,寄存器栈引擎102可通过向后备存储器94传送栈帧先占寄存器栈86溢出。类似地,寄存器栈引擎102可以在实际上需要栈帧之前占先地从后备寄存器94向寄存器栈86传送栈帧。通过以异步方式进行这些溢出操作和回填操作并使用空间的存储器周期,处理器性能得到提高。
寄存器栈引擎102和存储地址寄存器104及装入地址寄存器106连接。存储地址寄存器104是一个64位的寄存器,并且含有后备存储器94中的单元地址,从寄存器栈86检索出的下一个64位值将保存在该单元中。在保存通用寄存器时寄存器栈引擎102使用存储地址寄存器104,并且可能要求其中所包含的该地址是8字节排列的。类似地,装入地址寄存器106是一个64位寄存器,并且包含后备寄存器94中的单元地址(比8字节更深),从该单元可检索要传回到寄存器栈86的下一个64位值。该地址可能类似地要求是8字节排列的。
当和属性位100相关的数据在寄存器栈86和后备存储器94之间传送时,存储集合寄存器108和装入集合寄存器110专用于临时存储这些属性位100。后面会参照图4和图5说明这些存储寄存器108、110的操作。集合寄存器108、110各为64位的寄存器。存储集合寄存器108最多可包含后备存储器94中最近保留的63个寄存器的属性位100。类似地,装入集合寄存器110最多可包含要接着恢复的63个寄存器的属性位100。方法
现参照图4和图5中示出的流程图说明由传送设备84执行的在寄存器栈86和后备存储器94之间传送数据的方法。图4中示出依据本发明的一种典型实施例的把通用寄存器96的内容存储到后备存储器94中的指定单元上的方法。
总的来说,示范性方法120提议以63个寄存器为一组把通用寄存器(的内容)保存到后备存储器94中,并且同时把每个寄存器的属性性100收集到存储集合寄存器108中。请理解本发明不限制于以63个寄存器为一组,而是可传送任何大小的寄存器组。在把每一个63个通用寄存器传送到后备存储器94后,方法120接着提议把目前包含在寄存器108中的属性位100的集合按64位的双字保留在后备存储器94中。更准确地说,方法120从判定框126开始,其中判定集合寄存器108是否达到预定的最大容量。在所示的实施例中,判定集合寄存器108是否包含63个属性位。若集合寄存器108未达到预定容量,则对寄存器栈86中相继的下一个通用寄存器执行步骤122和124。具体地,步骤122请求把通用寄存器N的各个位〔63:0〕(即数据位组98)保存到后备存储器94中下一个可使用的64位单元中。在步骤124,通用寄存器N的位〔64〕(即属性位100)被保存到存储集合寄存器108中的下一个可用的位置上。若集合寄存器108的最大容量已被到达,则方法120替代地进入步骤128,并且把存储集合寄存器108的内容保存到后备存储器94中的下一个可使用的64位单元里。现在存储集合寄存器108中的内容已排空,接着对寄存器栈86中的下一组63个通用寄存器重复方法120。
可以以许多不同的方式进行步骤126中的存储集合寄存器108是否包含预定数量的属性位100的判定。在一种实施例中,可设置一个简单的计数器(未示出),其保持寄存器栈86和后备存储器94之间的寄存器传送次数的计数。在另一种实施例中,寄存器栈引擎102可以简单地检查存储地址寄存器104中包含的专用的地址序列位组。在所示出的实施例中,存储地址寄存器104的位组〔8:3〕提供从寄存器栈86到后备存储器94的寄存器传送次数的计数。从而,若存储器地址寄存器104中的位组〔8:3〕不是都为1(1’s),则表示存储收集寄存器108尚未达到其预定容量,从而应对下一个相继的通用寄存器执行步骤122和124。另一方面,若存储地址寄存器104的位组〔8:3〕全为1(1’s),则表示已把63个属性位100保存到存储集合寄存器108中,并应接着执行步骤128。
图6更详细地示出后备存储器94,并提供一个如何把批数据130存储到主存储器82中的示例。每个批数据示成由一组63个通用寄存器的内容和相随的一个汇集的属性位集合132所构成,该属性位集合由和前面的通用寄存器内容相关的属性位组成。
现参照图5,图中的流程图示出一种依据本发明的一种实施例的从主存储器82里的后备存储器94恢复一组通用寄存器86的内容的方法140。实质上,方法140包括从后备存储器94中的某单元把具有64位位长的属性位集合132装入到装入集合寄存器110中。然后,把63个通用寄存器中每个寄存器的内容和目前包含在装入集合寄存器110中的一个相关的属性位配对,并把产生的65位的数据及属性组合传送到寄存器栈86中的下一个可使用的通用寄存器96中。对于63个通用寄存器内容中的每条内容及装入集合寄存器110中存储的相关的属性位进行这种处理。在完成63个通用寄存器的内容的传送时,向装入集合寄存器110装入用于下一批63个寄存器的属性位组,并且重复上述处理。现具体地参照图5,方法140从判定框146开始,在其中判定装入集合寄存器110中的所有属性位是否已经保存到适当的通用寄存器中。若没有,则该方法进入步骤142,并从后备存储器94和装入集合寄存器110恢复下一个相继的寄存器的内容。具体地,步骤142请求把后备存储器入口(N)的位组〔63:0〕存储到下一个65位通用寄存器96的位组〔63:0〕中。在步骤144,把位(N)(即和位组〔63:0〕相关的属性位)保存到在步骤142进行保存工作的同一个通用寄存器96的位〔64〕中。从而,如上面所说明在某个通用寄存器中重新装配64个数据位98以及单个属性位100。另一方面,若在判定框146确定装入集合寄存器110已排空,则在步骤148用下次63个要恢复的通用寄存器的属性位集合132再次填充寄存器110。
可以通过查看一个简单的保持后备存储器和寄存器栈之间的传送次数的计数的计数器在判定框146确定装入集合寄存器是否排空。在图3中示出的本发明的该实施例中,装入地址寄存器106的位组〔8:3〕提供从后备存储器到寄存器栈的已发生的传送次数的计数。从而,通过查看这些位组〔8:3〕,寄存器栈引擎102能够判定装入集合寄存器110是否已经排空。具体地,若装入集合寄存器106的位组〔8:3〕不是全都为1(1’s),则表明装入集合寄存器110尚未排空。替代地,若位组〔8:3〕全为1(1’s),则从后备存储器94把由装入地址寄存器106中的地址所规定的单元处的双字(即,64位的属性集合132)装入到装入集合寄存器110中。以这种方式,在寄存器110中可得到下一组要恢复的63个寄存器的各属性位。
还应注意,在一种实施例中,用来判定属性集合寄存器是否满的同一机制还用于判定属性集合寄存器的哪一位添加到恢复寄存器的N个数据位组上。
这样,对在寄存器和存储器资源之间传送数据的一种方法和设备作了说明。尽管参照一些具体的示范实施例说明了本发明,但很明显,在不背离本发明的更广阔的实质和范围下可对这些实施例做出各种修改和改变。从而,本发明书及各附图只是当成示意性的而不具有限制性的含意。
Claims (29)
1.一种把寄存器的内容存储到存储器资源中的方法,该方法包括步骤:
把第一寄存器的内容中的N位存储到该存储器资源的第一单元中;
把第一寄存器的内容中的M位存储到集合存储器中;
判定该集合存储器是否含有预定位数的要存储的信息;以及
若该集合存储器含有预定位数的要存储的信息,则把该集合存储器的内容存储到该存储器资源的第二存储器单元中。
2.权利要求1的方法,其中若该集合存储器不含有预定位数的要存储的信息,则把第二寄存器的内容中的N位存储到该存储器资源中的第二单元中,并把第二寄存器的内容中的M位存储到该集合存储器中。
3.权利要求1的方法,其中第一和第二存储器单元是该存储器资源中的相继的存储器单元。
4.权利要求1的方法,其中第一寄存器具有N+M位的容量,该存储器资源中的第一单元具有N位的容量,并且该预定位数的要存储的信息包括N位。
5.权利要求1的方法,其中第一寄存器包括寄存器栈的一个通用寄存器,而该存储器资源包括随机存取存储器(RAM)。
6.权利要求1的方法,其中集合存储器包括寄存器。
7.权利要求1的方法,其中N+M不是存储器资源所采用的总线宽度的整数倍数。
8.权利要求1的方法,其中该M个位包括和该N个位有关的属性信息。
9.权利要求1的方法,其中属性信息表示由该N位组成的数据是否有效。
10.一种从存储器资源恢复寄存器的内容的方法,该方法包括步骤:
把来自该存储器资源的第一单元的N个位存储到第一寄存器中;
把来自一个临时存储器的M个位存储到第一寄存器中;
判定在寄存器中是否已存储来自该临时存储器的预定位数的信息;以及
若是,则把该存储器资源的第二存储器单元的内容存储到该临时存储器中。
11.权利要求10的方法,其中,若寄存器中尚未存储来自该临时存储器的预定位数的信息,则把该存储器资源里第二单元的内容中的M位存储到第二寄存器中,并且把来自临时存储器的M个位存储到第二寄存器中。
12.权利要求10的方法,其中第一寄存器具有N+M个位的容量,该存储器资源中的第一单元具有N位的容量,并且该预定位数的信息由N位组成。
13.权利要求10的方法,其中第一和第二存储器单元是存储器资源中的相继单元。
14.权利要求10的方法,其中第一寄存器包括寄存器栈的一个通用寄存器,而存储器资源包括集成电路主存储器。
15.权利要求10的方法,其中该M个位包括和该N个位有关的属性信息。
16.一种用于从寄存器栈向存储器资源传送数据的设备,该设备包括:
一个临时存储器;以及
传送逻辑(电路),其配置成把该寄存器栈第一寄存器的内容中的N位传送到该存储器资源中的第一单元,把第一寄存器的内容中的M位传送到该临时存储器中的第一单元,以及在该寄存器栈和该存储器资源之间传送预定数量的数据后把该临时存储器的内容传送到该存储器资源中的第二单元。
17.权利要求16的设备包括一个计数器,用于保持从该寄存器栈到该存储器资源的数据传送数量的计数。
18.权利要求17的设备,其中该计数器包括一个对存储器资源的单元定址的地址寄存器。
19.权利要求16的设备,其中该寄存器栈中的第一寄存器具有N+M个位的位长度并且该存储器资源中的第一单元具有N个位的位长度。
20.权利要求16的设备,其中N+M不是存储器资源所采用的总线宽度的整数倍数。
21.权利要求16的设备,其中若在寄存器栈和存储器资源之间尚未出现传送预定数量的数据,则把该传送逻辑电路配置成把来自该寄存器栈内的第二寄存器的内容中的N个位传送到该存储器资源中的第二单元,把第二寄存器的内容中的M个位传送到该临时存储器内的第二单元。
22.权利要求16的设备,其中该存储器资源中的第一和第二存储单元是相继的存储单元。
23.权利要求16的设备,其中该M个位包括和该N个位有关的属性信息。
24.一种用于从存储器资源向寄存器栈传送数据的设备,该设备包括:
一个临时存储器;以及
传送逻辑电路,其配置成把来自该存储器资源的第一单元的N个位和来自该临时存储器的第一单元的M个位传送到该寄存器栈中的第一寄存器,以及在该寄存器栈和该存储器资源之间传送预定数量的数据后把该存储器资源内第二单元的内容传送到该临时存储寄存器。
25.权利要求24的设备包括一个计数器,用于保持该寄存器栈和该存储器资源之间的传送数量的计数。
26.权利要求25的设备,其中该计数器包括一个对存储器资源的单元定址的地址寄存器。
27.权利要求24的设备,其中该寄存器栈中的第一寄存器具有N+M个位的位长度并且该存储器资源中的第一单元具有N个位的位长度。
28.权利要求24的设备,其中N+M不是存储器资源所采用的总线宽度的整数倍数。
29.权利要求24的设备,其中若在寄存器栈和存储器资源之间尚未出现传送预定数量的数据,则把该传送逻辑电路配置成把来自该存储器资源内的第二单元的N个位以及来自该临时存储器内的第二单元的M个位传送到该寄存器栈内的第二寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/940,834 US6263401B1 (en) | 1997-09-30 | 1997-09-30 | Method and apparatus for transferring data between a register stack and a memory resource |
US08/940,834 | 1997-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1278344A true CN1278344A (zh) | 2000-12-27 |
CN1203410C CN1203410C (zh) | 2005-05-25 |
Family
ID=25475508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB988107651A Expired - Fee Related CN1203410C (zh) | 1997-09-30 | 1998-09-30 | 用于在寄存器栈和存储器资源之间传送数据的方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6263401B1 (zh) |
EP (1) | EP1019829B1 (zh) |
CN (1) | CN1203410C (zh) |
AT (1) | ATE272862T1 (zh) |
AU (1) | AU9599198A (zh) |
DE (1) | DE69825461T2 (zh) |
HK (1) | HK1030275A1 (zh) |
WO (1) | WO1999017207A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103483A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN101331448B (zh) * | 2005-10-20 | 2012-01-04 | 高通股份有限公司 | 用于堆栈式寄存器堆的寄存器保存引擎的后备存储缓冲器 |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6487630B2 (en) | 1999-02-26 | 2002-11-26 | Intel Corporation | Processor with register stack engine that dynamically spills/fills physical registers to backing store |
US6895527B1 (en) * | 2000-09-30 | 2005-05-17 | Intel Corporation | Error recovery for speculative memory accesses |
US7290176B2 (en) * | 2004-07-31 | 2007-10-30 | Hewlett-Packard Development Company, L.P. | Method and system for generating stacked register dumps from backing-store memory |
US7647481B2 (en) * | 2005-02-25 | 2010-01-12 | Qualcomm Incorporated | Reducing power by shutting down portions of a stacked register file |
US7844804B2 (en) * | 2005-11-10 | 2010-11-30 | Qualcomm Incorporated | Expansion of a stacked register file using shadow registers |
US8429634B2 (en) * | 2006-07-26 | 2013-04-23 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3810117A (en) * | 1972-10-20 | 1974-05-07 | Ibm | Stack mechanism for a data processor |
US4325120A (en) | 1978-12-21 | 1982-04-13 | Intel Corporation | Data processing system |
US4520439A (en) * | 1981-01-05 | 1985-05-28 | Sperry Corporation | Variable field partial write data merge |
US4500958A (en) * | 1982-04-21 | 1985-02-19 | Digital Equipment Corporation | Memory controller with data rotation arrangement |
US5440749A (en) | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
US5522072A (en) | 1990-09-04 | 1996-05-28 | At&T Corp. | Arrangement for efficiently transferring program execution between subprograms |
US5325494A (en) * | 1991-06-21 | 1994-06-28 | Kabushiki Kaisha Toshiba | Computer |
US5327566A (en) | 1991-07-12 | 1994-07-05 | Hewlett Packard Company | Stage saving and restoring hardware mechanism |
US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
US5640582A (en) | 1992-05-21 | 1997-06-17 | Intel Corporation | Register stacking in a computer system |
US5428779A (en) | 1992-11-09 | 1995-06-27 | Seiko Epson Corporation | System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions |
JPH0744586B2 (ja) * | 1993-02-26 | 1995-05-15 | 日本電気株式会社 | パラレルデータ転送回路 |
US5428807A (en) * | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
US5535397A (en) | 1993-06-30 | 1996-07-09 | Intel Corporation | Method and apparatus for providing a context switch in response to an interrupt in a computer process |
US5761467A (en) | 1993-09-28 | 1998-06-02 | Mitsubishi Denki Kabushiki Kaisha | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field |
EP0676691A3 (en) | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Device for saving and restoring registers in a digital computer. |
US5628016A (en) | 1994-06-15 | 1997-05-06 | Borland International, Inc. | Systems and methods and implementing exception handling using exception registration records stored in stack memory |
US5706466A (en) | 1995-01-13 | 1998-01-06 | Vlsi Technology, Inc. | Von Neumann system with harvard processor and instruction buffer |
US6532531B1 (en) * | 1996-01-24 | 2003-03-11 | Sun Microsystems, Inc. | Method frame storage using multiple memory circuits |
US5748936A (en) * | 1996-05-30 | 1998-05-05 | Hewlett-Packard Company | Method and system for supporting speculative execution using a speculative look-aside table |
-
1997
- 1997-09-30 US US08/940,834 patent/US6263401B1/en not_active Expired - Lifetime
-
1998
- 1998-09-30 WO PCT/US1998/020746 patent/WO1999017207A1/en active IP Right Grant
- 1998-09-30 DE DE69825461T patent/DE69825461T2/de not_active Expired - Lifetime
- 1998-09-30 CN CNB988107651A patent/CN1203410C/zh not_active Expired - Fee Related
- 1998-09-30 AU AU95991/98A patent/AU9599198A/en not_active Abandoned
- 1998-09-30 EP EP98949726A patent/EP1019829B1/en not_active Expired - Lifetime
- 1998-09-30 AT AT98949726T patent/ATE272862T1/de not_active IP Right Cessation
-
2001
- 2001-01-19 HK HK01100511A patent/HK1030275A1/xx not_active IP Right Cessation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101331448B (zh) * | 2005-10-20 | 2012-01-04 | 高通股份有限公司 | 用于堆栈式寄存器堆的寄存器保存引擎的后备存储缓冲器 |
CN102103483A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN102103483B (zh) * | 2009-12-22 | 2014-09-10 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN104317791A (zh) * | 2009-12-22 | 2015-01-28 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN104317791B (zh) * | 2009-12-22 | 2018-03-13 | 英特尔公司 | 汇聚和散布多个数据元素 |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
Also Published As
Publication number | Publication date |
---|---|
EP1019829A4 (en) | 2003-04-16 |
EP1019829A1 (en) | 2000-07-19 |
EP1019829B1 (en) | 2004-08-04 |
US6263401B1 (en) | 2001-07-17 |
WO1999017207A1 (en) | 1999-04-08 |
CN1203410C (zh) | 2005-05-25 |
DE69825461D1 (de) | 2004-09-09 |
AU9599198A (en) | 1999-04-23 |
DE69825461T2 (de) | 2005-09-15 |
HK1030275A1 (en) | 2001-04-27 |
ATE272862T1 (de) | 2004-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0240032B1 (en) | Vector processor with vector data compression/expansion capability | |
US5706461A (en) | Method and apparatus for implementing virtual memory having multiple selected page sizes | |
JP2642049B2 (ja) | 任意に変化するデータ・ストライドで情報を転送する方法及び装置 | |
EP0123922B1 (en) | Instruction buffer bypass apparatus | |
US4426682A (en) | Fast cache flush mechanism | |
EP0071028B1 (en) | Instructionshandling unit in a data processing system with instruction substitution and method of operation | |
US7356667B2 (en) | Method and apparatus for performing address translation in a computer system | |
US6006323A (en) | Intelligent multiple stack management unit | |
EP0215544A1 (en) | Virtual memory address fetching | |
CN1203410C (zh) | 用于在寄存器栈和存储器资源之间传送数据的方法和设备 | |
US20020178176A1 (en) | File prefetch contorol method for computer system | |
US4620274A (en) | Data available indicator for an exhausted operand string | |
EP1503291B1 (en) | Reformat logic to reformat a memory access to a device | |
US8527571B2 (en) | Method and structure for producing high performance linear algebra routines using composite blocking based on L1 cache size | |
US4802113A (en) | Pipeline control system | |
US4598359A (en) | Apparatus for forward or reverse reading of multiple variable length operands | |
US4608633A (en) | Method for decreasing execution time of numeric instructions | |
US6389478B1 (en) | Efficient non-contiguous I/O vector and strided data transfer in one sided communication on multiprocessor computers | |
US5218706A (en) | Data flow processor with next destination node determination | |
CN100336038C (zh) | 嵌入顺序缓冲器的计算机系统及其方法 | |
EP0214870B1 (en) | System for controlling a data transfer instruction with an extension storage device | |
EP0107448A2 (en) | Computer with multiple operating systems | |
US6865638B1 (en) | Apparatus and method for transferring multi-byte words in a fly-by DMA operation | |
JPS6194159A (ja) | メモリ装置 | |
JPH06103169A (ja) | 中央演算処理装置のリードデータプリフェッチ機構 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050525 Termination date: 20130930 |