CN1009592B - 微处理器芯片上的堆栈式超高速缓冲存储器 - Google Patents
微处理器芯片上的堆栈式超高速缓冲存储器Info
- Publication number
- CN1009592B CN1009592B CN87100507A CN87100507A CN1009592B CN 1009592 B CN1009592 B CN 1009592B CN 87100507 A CN87100507 A CN 87100507A CN 87100507 A CN87100507 A CN 87100507A CN 1009592 B CN1009592 B CN 1009592B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- register
- registers group
- instruction
- frame
- 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.)
- Expired
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/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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/451—Stack data
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
微处理器芯片上的堆栈帧式超高速缓冲存储器及其相应的控制装置提供许多全局寄存器。其中之一是含有现行帧指示字的帧指示字寄存器,其余的则作通用寄存器供现行过程使用,还提供许多供现行过程执行浮点运算操作用的浮点寄存器。由多个寄存器组组成寄存器组组合,各寄存器组均由一些局部寄存器组成,与程序有关的局部寄存器含有包括指向前帧的指示字和指令指示字的连接信息,因而无需对片外存储器作访问就能执行大多数调用和返回指令。
Description
本发明涉及数据处理系统,更确切地说是关于在执行调用/返回指令期间,用以使对主存储器初始访问减至最小的装置。
超大规模集成电路工艺及其设计技术的迅速进步,已经能使微型机接近超小型计算机的性能。由于处理器速度的提高,处理器与片外主存储器通信量的增加,在性能上导致了阻塞问题的发生。在现有系统中,这种阻塞问题是运用局部的片内存储器(称为超高速缓冲存储器)来贮存频繁使用的存贮器数据而得以减小的。如果处理器所需数据贮存在超高速缓冲存储器内,则因为数据可直接从超高速缓冲存储器中取出来,从而可避免访问片外存储器。如果超高速缓冲存储器的设计能扩展到包含某些取出指令,则还可以进一步减少存储器内的通信量。例如,如果有关调用和返回操作指令的信息能够局部地在芯片上得到,则无需访问片外存储器,就可以执行调用和返回操作指令。存储器总线通信量的减少,其结果也会减少装入或贮存指令必须等待存储器总线的可能性。
本发明的目的在于提供一种装置,以便使在执行调用/返回指令期间发生的对主存储器的访问减少到最小的程度。
简而言之,根据本发明,上述目的是通过在微处理器芯片上提供一种多元全局寄存器来实现的。该全局寄存器之一是一个装有当前帧指示字的帧指示字寄存器。其余全局寄存器则作为通用寄存器供现行处理过程使用。堆栈帧式超高速缓冲存储器的结构,包含一个由多元寄存器组成的寄存器组组合,其中每一个寄存器组则由一些芯片上的寄存器组成。当一个调用指令被译码时,寄存器组组合中的一个寄存器组被分配给所
调用的程序,并且帧指示字寄存器被初始化;而当返回指令被译码时,该寄存器组则被释放,以便供给由后来的调用指令所调用的另一个程序使用。如果寄存器组组合全部用完,寄存器组中与前一个程序有关的寄存内容则被贮存到主存储器中,而相应的寄存器组被分配给现行的程序。
按照本发明的目标,与程序有关的寄存器组中的局部寄存器内含有包括一个关于前一帧的指示字和一个指令指示字的连接信息,于是,对片外贮存器无需任何访问就能执行大多数的调用和返回操作指令。
本发明优越性在于,当子程序边界交叉时,以往那些必须做的对寄存器贮存和恢复工作可大大减少。
本发明的优越性还在于,由于局部寄存器组被映入堆栈帧中,通常出现在堆栈帧中的连接信息(如关于前一帧的指示字,所保存的指令指示字)被装入局部寄存器之内。这就意味着,在执行大多数调用和返回指令时,不会引起对片外存储器任何访问。
本发明上述及其它目的、特点、优点,从下面如附图所示的那些本发明最佳实施例的更具体描述中,将会更加明白。
图1是功能性框图,用以说明本发明所包括的微处理器的各个主要单元;
图2是在图1所示的系统中执行一条指令时的热行环境框图;
图3是堆栈帧结构图,堆栈帧在图2所示执行环境的现行线地址空间中;
图4是调用堆栈结构图,调用堆栈结构图在图2所示执行环境的现行线性地址空间中;
图5是微处理器寄存器组在存储器程序堆栈中的映象说明。
参见附图1,微处理器在逻辑上可以细分成七个主要单元:指令取出单元(10),指令译码器(12),微指令序列发生器(14),转换后备缓冲器(18),浮点单元(22),局部总线序列发生器(20),和整数执行单元(24)。
所有这些单元之间的通信通道包括32位的数据总线、29位微指令总线(26)和微指令有效信号(28)。这指令总线控制各独立单元的活动且使它们同步。各个单元简要叙述如下。
指令译码器(ID)对指令(宏代码)进行译码并控制其执行。ID对指令进行译码,完成操作数寻址和取出,处理转移指令(即指令指示字的操作),并且发出执行微指令(对简单指令)或者启动微程序(对复杂指令)。
取指令单元(IFU)从存储器中取、预取及超高速缓存指令以便供ID使用。IFU还能保持六个指令指示字,这些指示字可跟踪那些通过流水线的指令。IFU超高速缓存最新用到的指令块,并保持指令译码器由指令流来供给。它还含有指令指示字和操作数,从而减少ID的逻辑控制。
微指令序列发生器(MIS)对微代码流定序,以便处理芯片初始化,微指令(由于太复杂而不能直接处理)、以及异常和中断情况。
MIS中装有3K的42位微代码只读存储器(ROM)和关于微代码流的定序逻辑。MIS实现的功能包括:取出下一个微指令,微程序的转移,处理异常情况,维持寄存器堆上的标记以及和ID一起,测试微指令边界和跟踪偶然事件。
整数执行单元(IEU)执行ID和MIS发出的大多数微指令。它包括程序员可见的寄存器、微代码使用的暂时寄存器,运算器(ALU),桶形移位器、以及执行它的指令所需的逻辑。该IEU内含有112个32位寄存器、一个32位的ALU、和一个32位的桶形移位器。它以旁通ALU为特色,允许ALU以每个周期一次的速率执行操作。整数执行单元还包括一个单一端口的寄存器堆,该单一端口寄存器堆在一个周期内可被存取两次,以使前一操作的结果能在同一周期内被贮存起来,而作为新的操作数被取出供现行操作使用。
浮点单元(FPU)包括完成浮点运算和整数乘除所需要的逻辑。FPU
含有4个浮点寄存器,若干个暂存器,一个68位移位器(可以在两个方向的任何一个方向上移位16位),一个69位的尾数加法器,有效位校验器,一个尾数ROM、两个68位内部数据通道,以及一个为单独的阶数通道(其中包括它本身的16位加法器和寄存器)。浮点单元执行整数乘、除以及包括超越指令的编码(Cordic)算法在内的其它浮点运算。
转换后备缓冲器(TLB)实现虚拟存贮机构所需要的地址转换。TLB利用与贮存描述符相关的表和入口页码表来实行地址转换和存储器保护。它含有一个48位入口地址超高速缓冲存储器、一个6位地址加法器、和存储器保护检验硬件。在地址超高速缓冲存储器中的每个入口都装有27个内容定址存储器(CAM)位和38个随机存取存储器(RAM)位。TLB支持若干地址转换方式以便允许用户从各种各样的常规方式(页式或段式)中选择存储器保护类型。
局部总线序列发生器对外部总线的存取进行输送并定序。它包括同外部局部总线接口的硬件,管理总线的约定,和识别外部异常(即中断,初始化)。局部总线序列发生器包含一个33位宽地址和数据输出FIFO、一个33位数据输入FIFO,和一个定序器、输出FIFO允许多至3个请求在局部总线定序器内被排队,致使处理器的其余请求能够继续执行下去(与存储器存取等待时间无关)。输入FIFO缓冲器从外存储器读取数据,直到空闲周期可用来将数据传送到目的地为止。
本发明提供一种多元全局寄存器(21)。全局寄存器中的一个是含有现行帧指示字的帧指示字寄存器,其余的则作为一般寄存器供现行处理使用。所提供的超高速缓存(堆栈帧)寄存器,包含一个由多元寄存器组组成的寄存器组组合,其中每个寄存器组则由一些局部寄存器组成。当一个调用指令被译码时,寄存器组组合中的一个寄存器组分配给所调用的程序,而帧指示字寄存器被初始化。当返回指令被译码时,该寄存器组被释放以便分配后来的调用指令所调用的程序。如果寄存器组组合
全部用尽,则同前一程序有关的寄存器组的内容被贮存在主存储器里,而该寄存器组被分配给现行程序。与程序有关的寄存器组中那些局部寄存器装有包含前一帧指示字和指令指示字的连接信息,因此,无需对片外存储器作任何访向,大多数调用和返回指令就能被执行。
指令组
一个过程查看平面线性地址空间(用32位序数编址),从中分配数据,指令和堆栈空间。一个调用指令在顺序分配的堆栈上,建立一个新的堆栈帧(活动记录)。
微处理器的指令组在设计上同RISC(缩减指令组计算机)的指令组相似。所有指令都是32位长,并且都必须沿着字边界定位,其中仅装入,贮存和转移指令需访问存储器(而其他指令则访问寄存器)。
参见附图2,该图表示执行时的环境。执行环境由2**32字节的线性地址空间(30)和36个寄存器组成。在这36个寄存器之中,16个是32位全局寄存部(32),16个是32位的局部寄存器(34),其余4个是80位的浮点寄存器(36)。局部寄存器与作为堆栈帧式超高速缓冲存储器的装置有关系。当一个程序被调用时,一组新的局部寄存器组从芯片上的寄存器组组合中被分配给这一程序使用,并在程序返回时释放,本发明的实施例在芯片上提供了4组(64)局部寄存器,但是这一数目对程序人员是透明的。
寄存器模型包括16个全局寄存器和4个浮点寄存器(跨越程序边界这些寄存器被保持),及16个局部(或帧式)寄存器组(它们结合在一起被映入各堆栈帧)。
在任何情况下,指令均可对下列36个寄存器寻址:
寄存器类型 寄存器名称
全局寄存器 G0……G15
浮点寄存器(浮点操作数) FP10……FP13
局部寄存器 L0……L15
任何时刻,人们都可以对32个32位的寄存器和4个80位的浮点寄存器寻址(这些32位的寄存器也可以用来保存浮点数值)。32个寄存器之中,16个是全局寄存器,16个是局部寄存器。其差别在于,当跨越程序边界时,16个全局寄存器不受影响(即它们的性能就象其它处理器中的“正常的”寄存器一样),而局部寄存器则受调用和返回指令的影响。
当一个调用指令被执行时,处理器从芯片上的4个寄存器组组合中分配一组新的16个局部寄存器组给所调用的程序。如果处理器的4组组合被用完,则处理器自动地重新分配寄存器组,其办法是选出一组同早先的程序有关的寄存器组并且将其内容贮存在存储器中。那个早先程序所用的寄存器中的内容,被贮存在存储器中该程序的堆栈帧的前16个字中。因为这样的缘故,该装置才命名为堆栈帧式超高速缓冲存储器。返回指令使现行寄存器组被释放(以备后来的调用指令所使用)。
有16个与过程有关的全局寄存器(32),当该过程不执行时,它们被贮存在过程控制块内。全局寄存器不相关地映入在过程控制块中。
在16个32位的寄存器中,G15装有现行帧指示字(FP),而G0……G14则为通用寄存器。FP含有现行(最顶部的)堆栈帧进入现行执行环境的线性地址(指示字)。由于堆栈帧被定位于64个字节边界,所以FP最低6位被忽略而往往被解释为零。这个寄存器,调用时被初始化,而返回时则被重新贮存。
当一个大于32位的操作数访问寄存器时,要用到与其相连的号数较高的那些寄存器。
浮点寄存器
有四个与过程有关的浮点寄存器(34),当这一过程不执行时,它们被贮存在过程控块内。浮点寄存器不相关地映入该过程控制块。
浮点数按实际的扩充格式被贮存在浮点寄存器里。仅当操作数是浮
点指令操作数(这些指令也可使用32位局部、全局寄存器)时,浮点寄存器才被存取。
运算控制
运算控制(36)被用来控制运算和数值指令的属性错误,以及贮存状态码。当过程被中止,运算控制信息被贮存在该过程控制块中。
指令指示字
指令指示字(38)是现行指令的第一字节进入现行线性地址空间的一个线性地址(指示字)。由于指令必须在字(4字节)边界上开始,所以IP的两个低阶位被忽略并被假定为零。
局部(或帧)寄存器
参见附图3,局部寄存器L0……L15并不表示常规的那种寄存器;它们表示现行帧的前16个字。于是,寄存器L0被映入线性地址FP+0到FP+3,寄存器L被映入线性地址FP+4i至FP+4i+3,等等。
局部寄存器有一个多重堆栈帧超高速缓冲存储器。有多个高速寄存器存储体,每个被启动程序都对应一个存储体。程序不必明确地保存和返回寄存器。
堆栈帧
附图3所示的堆栈帧,是现行线性地址空间的一个连接部分,按类似堆栈的形式装有数据。每一个被启动的程序有一个堆栈帧,该程序包含局部变量,参数和连接信息。一个调用操作获得一个新的堆栈帧;而一个返回操作则释放该堆栈帧。当一个新帧被获得后,它被按照64字节边界定位。
图3所示堆栈帧中的区段定义如下:
填充区,这一区(40)用来将FP定位在下一个64字节的边界上,其大小在0至63字节之间变动。当实现一个调用操作时,一个填充区就附加给调用程序的SP直至下一个64字节边界,以便为这一帧形成FP。如果该
调用程序的SP已经定位,则无填充区。
帧状态(L0),帧状态(42)记录调用之后被用做从该帧返回的有关信息。帧状态的字段定义如下:
追踪允许,T(0位)。在管理程序输入中,这一位记录调入时刻的追踪允许位。在返回时,如果返回堆栈的执行模式是管理程序,则这一位被用来重新贮存该过程序中调入程序的追踪允许位。
返回状态,RRR(1至3位)。这3位字段记录生成该帧所用的调用装置,并用来选择返回时的返回装置。这一字段的编码如下:
000局部
001管理程序
010中断
011非子系统故障
100子系统
101保留
110空闲/停止中断
111保留
予返回追踪,P(4位)。当从帧返回且予返回追踪位是1时,则予返回追踪事件(如果允许的话)发生在与返回操作有关的任何动作完成之前。在调用时,这一位被初始化为零。
前帧指示字,PFP(6至31位)。指向前帧第一个字节的线性地址(42)。因为帧都定位于64字节的边界,所以仅仅FP最有效的26个位被保存。如果返回状态表示子系统转移,那么这个字段含有调用之前该调用堆栈中最顶部(最后)帧的线性地址最有效的26个位。否则,最顶部帧是调用帧。
调用期间,帧状态较低的5位被如下初始化:
0 000-局部调用,或者来自管理程序状态的管理程序调用
0 00 IT 来自用户模式的管理程序调用
0 010- 中断调用
0 011- 非子系统故障调用
0 100- 子系统调用
0 110- 来自空闲或停止状态的中断调用
T是上面定义过的追踪位的值。“-”表示一个保留位,而“X”表示不必关心的位。
在全部返回时,这些位的介释如下:
1 XXXX 生成予返回追踪
0 000X 完成局部返回
0 001T 在管理序程序模式下,完成管理程序返回。T位在过程控制中分配给追踪允许位,而执行模式位则留给用户。否则,完成局部返回。
0 010X 完成中断返回。
0 011X 完成故障返回。
0 100X 完成子系统返回
0 101X 操作返回故障
0 110X 完成空闲/停止中断返回
0 111X 操作返回故障
堆栈指示字,SP(L1)。指向堆栈第一个自由字节的线性地址,即堆栈最后的字节地址加1。SP由调用操作初始化到FP加64的点。
返回指令指示字,RIP(L2)。当对一个新帧完成调用操作后,返回IP(46)保存。当过程被中止时,此处则贮存下一个指令的指令指示字。它含有一个32位线性地址,在这一帧返回后,控制其返回到这一线性地址。
过程调用将IP保存在现行帧的一个寄存器里。由于可能发生隐过程
调用(由于故障和中断),所以程序不用这个寄存器作其他目的用。
堆栈从低地址到高地址增长(图4)。
图5说明微处理器的寄存器组映入存储器中程序堆栈的情况。
帧前64个字节所映入的页面(或简单目标)必须具有局部的寿命。页面或简单目标的寿命,在调用期间向被检验。这样的限制,对于保证局部寄存器中的ADs的有效操作是必要的。
线性地址空间结构
如图2所示,各个执行环境都定义一个32位线性地址空间。线性地址空间被分成4个区。执行环境前三个区是现行过程专用的(即由过程控制块所定义的)。过程专用区的成分可由子系统调用/返回来改变。执行环境的第4个区则由所有过程共享(即由处理器控制块所定义的)。至于指令、堆栈帧,或者数据装入在线性地址空间的什么地方,没有限制。
局部过程机构
过程开始于线性地址空间中的任何随机的字地址。过程的调用和返回利用线性地址空间中的堆栈。
指令
CALL
CALL_EXTENDED
CALL和CALL_EXTENDED调用规定地址的过程。CALL规定了IP加上一个带符号的24位位移的过程。CALL_EXTENDED规定了使用通用存储器有效地址的过程。CALL_EXTENDED还含有一个在新帧中变成AP的操作数。
在将调用操作和控制流传送给指定的过程期间,分配一个新的堆栈帧。而执行环境保持不变。
RETURN
RETURN指令将控制送回给调用过程的编址环境,并释放被调过程的
堆栈帧。继续执行被调用过程帧中的RIP所指明的指令。
MOOIFY_AC
CONVERT_ADDRESS
MODIFY_AC被用来读取或者修改现行运算控制。因为AD区是不能直接存取,所以CONVERT_AOORESS可被用来将线性地址转化为虚拟地址。
过程管理
软件过程或任务由过程控制块来描述。提供两种方法以便控制过程的转换。一个是经过两个指令(Save_process和resume_process),这两个指令允许操作系统直接地转换该过程。另一个是在优先基础上的过程安排和调度功能(被装入处理器的内部)。运用后一种方法,处理器将自动地从存储器的队列中调度过程。
处理器保持对各个过程累积执行时间的跟踪,并且也提供任意时间片的管理。对于后者每当过程执行时间超过了预定的时间,处理器就将出错,或者将该过程排入可用过程的队列中并调度另一个过程。
当使用自动过程调度时,就提供一组进程通信指令,该组指令同操作系统核心软件所提供的正常服务相类似。这组进程通信指令为过程相互间信息交流提供支持。
追踪和ICE支持
软件的调试和追踪是借助追踪控制寄存器来提供的,这是各过程的一部分。追踪控制允许对下列事件的任何组合进行探测:
指令执行(即单步)
被取转移指令的执行
调用指令的执行
返回指令的执行
下一个指令是返回指令的探测
管理程序或子系统调用的执行
断点(硬件断点或断点指令的执行)
当探测出一个追踪事件时,处理器就产生一个追踪故障,以便对软件的调试程序或监控程序给以控制。处理器含有两个指令断点寄存器,调试程序可将两个指令的地址放置在这两个断点寄存器内。
外部总线
微处理器的总线是具有脉冲串传送能力的32位多路传送总线。脉冲串传送装置(该装置允许多个字在相继的周期里被传送)允许该总线被定义为多路传送总线。脉冲串传送可以在1、2、3或4个字时发生。在寻址周期内,微处理器在两个低阶寻址位,指明请求中字的数目。例如,如果处理器希望读取4个字,那么总线操作直到4个READY都被收到才结束。脉冲串传送操作,常常被处理器用来填满指令超高速缓冲存储器、堆栈帧式超高速缓冲存储器保存和重新贮存、多字装入和贮存、串操作等等。
微处理器被高度流水线化。在任何给定的时刻,流水线中的不同执行阶段,都有五个正常指令。在任何给定的周期内,指向指令n+4的指示字被计算,指令n+3被从指令超高速缓冲存储器中读取出来,指令n+2被译码并发送给微处理器总线,指令n+1则正在被执行,而指令n正被贮存到寄存器堆。
参照最佳实施例,已经对本发明作了具体的说明和描述,应该明白本领域的技术人员在不脱离本发明的实质和范围的情况下,可以对上述和其它形式及细节作出各种改进。
Claims (3)
1、一制作在一集成电路芯片上的数据处理器,该数据处理器包括一指令执行单元(24),该数据处理器具有用于将其连接到一主存储器的主存储器总线(局部总线),所述主存储器在外部与上述芯片连接;上述主存储器在其中存有第一处理程序的第一程序指令和第二处理程序的程序指令;上述第一指令包括用于调用第二处理程序的调用指令;上述数据处理器具有一寄存器(堆栈帧)超高速缓冲存储器(23),其特征在于上述数据处理器包括:
多个(GO-G15)在上述集成电路芯片上的全局寄存器(21);这些全局寄存器中的一个(G15)为帧指针寄存器,该寄存器中含有当前帧指针,该当前帧指针指向相应于在上述处理器中运行的当前处理程序的当前帧,而剩余的全局寄存器为当前处理程序可使用的通用寄存器;
在上述集成电路芯片上的上述寄存器超高速缓冲存储器(23)中的寄存器组组合,该寄存器组组合由多个寄存器组构成,每个寄存器组包括各个局部寄存器;
地址翻译装置(18,24),该装置与上述寄存器超高速缓冲存储器(23)连接,用于将局部寄存器映射到上述芯片外部的主存储器地址空间中的相应帧上;
上述帧指针寄存器(G15)包括一指向较早分配的寄存器组的帧指针;
上述每个寄存器组中的局部寄存器提供空间来存储包括帧指针(H6)和返回指示指针(RIP)的连接信息,该帧指针包括先前最后一个运行的帧在上述主存储器中位置的地址;上述返回指令指针(RIP)包括在处理程序的指令流中的下一个顺序指令的指令指针,该处理程序产生了与上述寄存器组对应的帧;
上述寄存器组的第一个被分配给上述第一处理程序;
上述处理器的内部总线将上述寄存器超高速缓冲寄存器(23),上述全局寄存器(21)和上述指令执行单元(24)连接起来;
在上述数据处理器中,由所述指令执行单元(24)执行的微指令可通过内部总线访问上述全局寄存器(21)和局部寄存器(23);
一指令译码器,连接到上述指令执行单元(24);和
在上述处理器中的控制装置(14),该控制装置响应上述指令译码器(12),根据上述第一处理程序的调用指令的指令译码器(12)的译码而操作,用于将在上述寄存器超高速缓冲存储器(23)的寄存器组组合中的局部寄存器中的第二寄存器组分配给第二处理程序,并且用于将指向上述第二寄存器组的当前帧指针放入上述帧指针寄存器(G15)中;
上述控制装置(14)包括一装置,该装置用于在主存储器总线(局部总线)上将先前分配给较早运行的处理程序的较早分配的寄存器组的内容传送给主存储器;该装置还用于通过将指向较早分配的寄存器组的帧指针放入上述帧指针寄存器中,将较早分配的寄存器组再分配给当前处理程序。
2、根据权利要求1的数据处理器,其特征在于:上述第一控制装置(14)包括:
一装置,该装置根据上述第二处理程序的指令流中的返回指令的译码来在主存储器总线上(局部总线)将上述分配给寄存器组组合的第二处理程序的第二寄存器组的内容传送给主存储器,并且该装置还用于将上述第二寄存器组中存储的先前帧指针放入上述帧指针寄存器(G15)中,上述第二寄存器组中存储的先前帧指针指向上述寄存器组中的第一个;从而提供上述装置,通过该装置,上述第一处理程序执行的指令从由上述第一寄存器组的返回指令指针(46)指定的指令流中的指针处恢复。
3、根据权利要求1的数据处理器,其特征在于:所述先前帧指针包括先前帧的第一个字节的一线性地址的多个位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/863,878 US4811208A (en) | 1986-05-16 | 1986-05-16 | Stack frame cache on a microprocessor chip |
US863,878 | 1986-05-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN87100507A CN87100507A (zh) | 1987-11-25 |
CN1009592B true CN1009592B (zh) | 1990-09-12 |
Family
ID=25341994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN87100507A Expired CN1009592B (zh) | 1986-05-16 | 1987-01-26 | 微处理器芯片上的堆栈式超高速缓冲存储器 |
Country Status (9)
Country | Link |
---|---|
US (1) | US4811208A (zh) |
JP (1) | JP2612168B2 (zh) |
KR (1) | KR870011524A (zh) |
CN (1) | CN1009592B (zh) |
DE (1) | DE3716229C2 (zh) |
FR (1) | FR2598835B1 (zh) |
GB (1) | GB2190521B (zh) |
HK (1) | HK57590A (zh) |
SG (1) | SG34990G (zh) |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043870A (en) * | 1982-02-24 | 1991-08-27 | At&T Bell Laboratories | Computer with automatic mapping of memory contents into machine registers during program execution |
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
JPS63259727A (ja) * | 1987-04-17 | 1988-10-26 | Hitachi Ltd | コプロセツサのインタ−フエイス方式 |
JP2982875B2 (ja) * | 1987-12-28 | 1999-11-29 | 株式会社日立製作所 | スレーブ制御装置 |
ATE109910T1 (de) * | 1988-01-20 | 1994-08-15 | Advanced Micro Devices Inc | Organisation eines integrierten cachespeichers zur flexiblen anwendung zur unterstützung von multiprozessor-operationen. |
US5136691A (en) * | 1988-01-20 | 1992-08-04 | Advanced Micro Devices, Inc. | Methods and apparatus for caching interlock variables in an integrated cache memory |
US5025366A (en) * | 1988-01-20 | 1991-06-18 | Advanced Micro Devices, Inc. | Organization of an integrated cache unit for flexible usage in cache system design |
US5101344A (en) * | 1988-01-28 | 1992-03-31 | Motorola, Inc. | Data processor having split level control store |
US5220669A (en) * | 1988-02-10 | 1993-06-15 | International Business Machines Corporation | Linkage mechanism for program isolation |
US4905188A (en) * | 1988-02-22 | 1990-02-27 | International Business Machines Corporation | Functional cache memory chip architecture for improved cache access |
US5210874A (en) * | 1988-03-22 | 1993-05-11 | Digital Equipment Corporation | Cross-domain call system in a capability based digital data processing system |
GB2254714B (en) * | 1988-03-22 | 1992-12-23 | Digital Equipment Corp | Cross-domain call system in a capability based digital data processing system |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5293500A (en) * | 1989-02-10 | 1994-03-08 | Mitsubishi Denki K.K. | Parallel processing method and apparatus |
US5226166A (en) * | 1989-02-10 | 1993-07-06 | Mitsubishi Denki K.K. | Parallel operation processor with second command unit |
US5155820A (en) * | 1989-02-21 | 1992-10-13 | Gibson Glenn A | Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
US5185694A (en) * | 1989-06-26 | 1993-02-09 | Motorola, Inc. | Data processing system utilizes block move instruction for burst transferring blocks of data entries where width of data blocks varies |
JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
JPH0353328A (ja) * | 1989-07-20 | 1991-03-07 | Hitachi Ltd | レジスタ退避回復方法ならびに処理装置 |
US5179681A (en) * | 1989-11-16 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for current window cache with switchable address and out cache registers |
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
US5075842A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism |
GB2239334B (en) * | 1989-12-22 | 1994-07-06 | Intel Corp | Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism |
US5157777A (en) * | 1989-12-22 | 1992-10-20 | Intel Corporation | Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism |
US5093917A (en) * | 1990-01-17 | 1992-03-03 | Ag Communication Systems Corporation | Method for passing data parameters between a calling program and a called subroutine in a command analysis table of a computer stored data base system |
DE69130233T2 (de) * | 1990-03-15 | 1999-05-20 | Sun Microsystems, Inc., Mountain View, Calif. 94043-1100 | Verfahren und gerät um ein sperrungscache einzusetzen |
US5179682A (en) * | 1990-05-15 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for improved current window cache with switchable address in, out, and local cache registers |
EP1526446A3 (en) * | 1991-07-08 | 2007-04-04 | Seiko Epson Corporation | Extensible RISC microprocessor architecture |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
JPH0831041B2 (ja) * | 1991-09-06 | 1996-03-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | プログラム条件処理方法およびコンピュータ・システム |
US5448707A (en) * | 1991-10-29 | 1995-09-05 | Intel Corporation | Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns |
EP0636256B1 (en) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
EP0638183B1 (en) * | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
US5491793A (en) * | 1992-07-31 | 1996-02-13 | Fujitsu Limited | Debug support in a processor chip |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
US6151661A (en) * | 1994-03-03 | 2000-11-21 | International Business Machines Corporation | Cache memory storage space management system and method |
US5893148A (en) * | 1994-03-03 | 1999-04-06 | International Business Machines Corporation | System and method for allocating cache memory storage space |
EP0676691A3 (en) * | 1994-04-06 | 1996-12-11 | Hewlett Packard Co | Device for saving and restoring registers in a digital computer. |
US5636362A (en) * | 1994-09-28 | 1997-06-03 | Intel Corporation | Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority |
US5564111A (en) * | 1994-09-30 | 1996-10-08 | Intel Corporation | Method and apparatus for implementing a non-blocking translation lookaside buffer |
US5532947A (en) * | 1995-01-25 | 1996-07-02 | International Business Machines Corporation | Combined decoder/adder circuit which provides improved access speed to a cache |
WO1997015001A2 (en) * | 1995-10-06 | 1997-04-24 | Patriot Scientific Corporation | Risc microprocessor architecture |
JP3634379B2 (ja) * | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US6038643A (en) * | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
US6289418B1 (en) | 1997-03-31 | 2001-09-11 | Sun Microsystems, Inc. | Address pipelined stack caching method |
US6167488A (en) * | 1997-03-31 | 2000-12-26 | Sun Microsystems, Inc. | Stack caching circuit with overflow/underflow unit |
US6131144A (en) * | 1997-04-01 | 2000-10-10 | Sun Microsystems, Inc. | Stack caching method with overflow/underflow control using pointers |
US6138210A (en) * | 1997-06-23 | 2000-10-24 | Sun Microsystems, Inc. | Multi-stack memory architecture |
US6058457A (en) * | 1997-06-23 | 2000-05-02 | Sun Microsystems, Inc. | Method for storing method frames in multiple stacks |
US6067602A (en) * | 1997-06-23 | 2000-05-23 | Sun Microsystems, Inc. | Multi-stack-caching memory architecture |
US6092152A (en) * | 1997-06-23 | 2000-07-18 | Sun Microsystems, Inc. | Method for stack-caching method frames |
US5930158A (en) * | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
US6275903B1 (en) | 1998-04-22 | 2001-08-14 | Sun Microsystems, Inc. | Stack cache miss handling |
US6237086B1 (en) | 1998-04-22 | 2001-05-22 | Sun Microsystems, Inc. | 1 Method to prevent pipeline stalls in superscalar stack based computing systems |
US6108768A (en) * | 1998-04-22 | 2000-08-22 | Sun Microsystems, Inc. | Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system |
US6170050B1 (en) | 1998-04-22 | 2001-01-02 | Sun Microsystems, Inc. | Length decoder for variable length data |
US6145123A (en) * | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US20050149939A1 (en) * | 2001-12-21 | 2005-07-07 | Carsten Noeske | Method and device for managing resources in a computer system |
JP4837247B2 (ja) * | 2003-09-24 | 2011-12-14 | パナソニック株式会社 | プロセッサ |
US9323571B2 (en) * | 2004-02-06 | 2016-04-26 | Intel Corporation | Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor |
US20060112226A1 (en) | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US7840845B2 (en) * | 2005-02-18 | 2010-11-23 | Intel Corporation | Method and system for setting a breakpoint |
US7237149B2 (en) * | 2005-02-25 | 2007-06-26 | Freescale Semiconductor, Inc. | Method and apparatus for qualifying debug operation using source information |
JP4617210B2 (ja) * | 2005-07-13 | 2011-01-19 | 日立ビアメカニクス株式会社 | 描画装置及びそれを搭載した露光装置 |
EP1887462A1 (en) * | 2006-07-26 | 2008-02-13 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit |
JP2008065734A (ja) * | 2006-09-11 | 2008-03-21 | Meidensha Corp | レジスタファイルの書き込み/読み出し方式 |
CN101216756B (zh) * | 2007-12-28 | 2011-03-23 | 中国科学院计算技术研究所 | 一种risc处理器装置及其模拟浮点栈操作的方法 |
US9501285B2 (en) * | 2010-05-27 | 2016-11-22 | International Business Machines Corporation | Register allocation to threads |
KR102686380B1 (ko) * | 2018-12-20 | 2024-07-19 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1426273A (en) * | 1973-04-13 | 1976-02-25 | Int Computers Ltd | Data processing |
JPS5474651A (en) * | 1977-11-28 | 1979-06-14 | Toshiba Corp | Stack control system |
JPS5576448A (en) * | 1978-12-05 | 1980-06-09 | Nippon Telegr & Teleph Corp <Ntt> | Multi-group register control system |
JPS57143643A (en) * | 1981-03-03 | 1982-09-04 | Toshiba Corp | Data processing device |
JPS57162031A (en) * | 1981-03-31 | 1982-10-05 | Fujitsu Ltd | Address stack control system |
US4435780A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Separate stack areas for plural processes |
JPS5814253A (ja) * | 1981-07-17 | 1983-01-27 | Nec Corp | 中央処理装置の割込方式 |
JPS5843043A (ja) * | 1981-09-08 | 1983-03-12 | Oki Electric Ind Co Ltd | デ−タ処理装置の呼び出し命令方式 |
US4516203A (en) * | 1981-09-11 | 1985-05-07 | Data General Corporation | Improved apparatus for encaching data whose value does not change during execution of an instruction sequence |
US4445173A (en) * | 1981-09-11 | 1984-04-24 | Data General Corporation | Improved system for saving and restoring state in call and return operations |
EP0075632A1 (en) * | 1981-09-30 | 1983-04-06 | BURROUGHS CORPORATION (a Michigan corporation) | Microprogrammed digital data processing system employing tasking at a microinstruction level |
EP0075633B1 (en) * | 1981-09-30 | 1987-09-09 | Unisys Corporation | Register allocation apparatus |
JPS5875250A (ja) * | 1981-10-29 | 1983-05-06 | Toshiba Corp | デジタル情報処理装置 |
US4530049A (en) * | 1982-02-11 | 1985-07-16 | At&T Bell Laboratories | Stack cache with fixed size stack frames |
CA1187200A (en) * | 1982-02-24 | 1985-05-14 | David R. Ditzel | Computer with automatic mapping of memory contents into machine registers |
US4652996A (en) * | 1982-09-27 | 1987-03-24 | Data General Corporation | Encachment apparatus using multiple frames and responding to a key to obtain data therefrom |
JPS616747A (ja) * | 1984-06-21 | 1986-01-13 | Matsushita Electric Ind Co Ltd | メモリ装置 |
-
1986
- 1986-05-16 US US06/863,878 patent/US4811208A/en not_active Expired - Lifetime
- 1986-11-25 GB GB8628175A patent/GB2190521B/en not_active Expired - Lifetime
- 1986-12-31 FR FR868618432A patent/FR2598835B1/fr not_active Expired - Lifetime
-
1987
- 1987-01-21 KR KR870000472A patent/KR870011524A/ko not_active Application Discontinuation
- 1987-01-26 CN CN87100507A patent/CN1009592B/zh not_active Expired
- 1987-05-14 DE DE3716229A patent/DE3716229C2/de not_active Expired - Fee Related
- 1987-05-15 JP JP62118731A patent/JP2612168B2/ja not_active Expired - Lifetime
-
1990
- 1990-05-18 SG SG34990A patent/SG34990G/en unknown
- 1990-08-02 HK HK575/90A patent/HK57590A/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE3716229A1 (de) | 1987-11-19 |
JPS62286128A (ja) | 1987-12-12 |
FR2598835A1 (fr) | 1987-11-20 |
GB2190521A (en) | 1987-11-18 |
FR2598835B1 (fr) | 1993-09-03 |
HK57590A (en) | 1990-08-10 |
US4811208A (en) | 1989-03-07 |
DE3716229C2 (de) | 1996-08-14 |
CN87100507A (zh) | 1987-11-25 |
GB8628175D0 (en) | 1986-12-31 |
KR870011524A (ko) | 1987-12-24 |
JP2612168B2 (ja) | 1997-05-21 |
SG34990G (en) | 1990-09-07 |
GB2190521B (en) | 1990-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1009592B (zh) | 微处理器芯片上的堆栈式超高速缓冲存储器 | |
US5819063A (en) | Method and data processing system for emulating a program | |
CN113553209B (zh) | 用于存储器损坏检测的硬件装置和方法 | |
EP2542973B1 (en) | Gpu support for garbage collection | |
US4922414A (en) | Symbolic language data processing system | |
USRE40509E1 (en) | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture | |
US5895501A (en) | Virtual memory system for vector based computer systems | |
US5893143A (en) | Parallel processing unit with cache memories storing NO-OP mask bits for instructions | |
JPS6014341A (ja) | 基本命令セツト計算機システムにおけるトラツプ割込み方式 | |
CA2045789A1 (en) | Granularity hint for translation buffer in high performance processor | |
JPH09171461A (ja) | プロセッサ・システム | |
Milenkovic | Microprocessor memory management units | |
US10534614B2 (en) | Rescheduling threads using different cores in a multithreaded microprocessor having a shared register pool | |
EP0726525A2 (en) | Method and system for efficient memory management in a data processing system utilizing a dual mode translation lookaside buffer | |
Alpert et al. | 32-bit processor chip integrates major system functions | |
EP0101718B1 (en) | Computer with automatic mapping of memory contents into machine registers | |
Slater | A guide to RISC microprocessors | |
Hunter et al. | Introduction to the NS16000 Architecture | |
Vijaykumar | Enhancing Programmability, Portability, and Performance with Rich Cross-layer Abstractions | |
Veronis et al. | Advanced Computer Concepts | |
Xin et al. | The architecture of the Java extension of 32-bit RISC for smart cards and other embedded systems | |
CN111984318A (zh) | 伪先进先出(fifo)标签线替换 | |
Barbacci et al. | C. ai: a LISP processor for C. ai | |
Frailey | Computer architecture | |
Bacon | The Virtualized Virtual Machine: The Next Generation of Virtual Machine Technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C13 | Decision | ||
GR02 | Examined patent application | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C15 | Extension of patent right duration from 15 to 20 years for appl. with date before 31.12.1992 and still valid on 11.12.2001 (patent law change 1993) | ||
OR01 | Other related matters | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |