CN87100507A - 微处理器芯片上的堆栈式超高速缓冲存储器 - Google Patents

微处理器芯片上的堆栈式超高速缓冲存储器 Download PDF

Info

Publication number
CN87100507A
CN87100507A CN87100507.7A CN87100507A CN87100507A CN 87100507 A CN87100507 A CN 87100507A CN 87100507 A CN87100507 A CN 87100507A CN 87100507 A CN87100507 A CN 87100507A
Authority
CN
China
Prior art keywords
frame
register
registers group
instruction
registers
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.)
Withdrawn
Application number
CN87100507.7A
Other languages
English (en)
Other versions
CN1009592B (zh
Inventor
格伦福德·J·迈尔斯
康拉德·黎
迈克尔·T·艾梅尔
格伦·欣顿
罗伯特·里奇斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN87100507A publication Critical patent/CN87100507A/zh
Publication of CN1009592B publication Critical patent/CN1009592B/zh
Expired legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack 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允许多至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 (11)

1、为在可与主存储器连接的数据处理器中使用,一种所述数据处理器中的堆栈帧式超高速缓冲存储器和一种控制装置的特征在于其中包括:
一个多元全局寄存器,其中所述全局寄存器中的一个是包含指向现行帧的现行帧指示字的帧指示字寄存器,其余所述全局寄存器则作为供现行过程使用的通用寄存器,
一个由多个寄存器组组成的寄存器组组合,每一寄存器组由一些局部寄存器组成;
依据调用指令的译码驱动的第一控制装置,用于从所述寄存器组组合中给所调用过程分配局部寄存器的寄存器组以及为建立现行帧对所述帧指示字寄存器进行初始化;
依据返回指令的译码驱动的第二控制装置,用于释放所述寄存器组以便分配给由后一个调用指令所调用的另一个过程。
2、根据权利要求1所述的组合装置,特征在于其中所述第一控制装置包括依据条件可操作的装置,其条件就是所述寄存器组组合用完后将把与前一过程有关的内容保存在所述主存储器内,并将所述寄存器组分配给所述现行过程。
3、根据权利要求1所述的组合装置,特征在于其中所述第一控制装置包括返回状态位,用于记录建立所述帧使用的调用机构和用于选择返回时将要用到的返回机构。
4、根据权利要求1所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器,含有包括一个指向前帧的指示字和一个指令指示字的连接信息。
5、根据权利要求2所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器,含有包括一个指向前帧的指示字和一个指令指示字的连接信息。
6、根据权利要求1所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存部,含有包括帧状态位的堆栈帧,该状态位用于记录调用后与该帧有关的信息,以供从该帧返回时使用,所述信息包括返回状态位,这些状态位用于记录建立所述帧使用的调用机构。和选择返回时所要用到的返回机构。
7、根据权利要求1所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器含有一个堆栈帧,该堆栈帧包括由前帧第一个字节的线性地址组成的前帧指示字位。
8、根据权利要求1所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器含有一个堆栈帧,该堆栈帧包括返回指令指示字字段,该字段用于依据条件贮存该返回指令指示字,其条件就是完成对新帧的调用操作;这一字段还用于依据条件贮存下一个指令的指令指示字,其条件就是过程被中止,所述字段是返回到这一帧后控制被返回到的线性地址。
9、根据权利要求2所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器,含有包括帧状态位的堆栈帧,该状态位用于记录调用后与该帧有关的信息,以供从该帧返回时使用,所述信息包括返回状态位,这些状态位用于记录建立所述帧使用的调用机构、和选择返回时所要用到的返回机构。
10、根据权利要求2所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器含有一个堆栈帧,该堆栈帧包括由前帧第一个字节的线性地址组成的前帧指示字位。
11、根据权利要求2所述的组合装置,特征在于,其中与过程有关的寄存器组中的所述局部寄存器含有一个堆栈帧,该堆栈帧包括返回指令指示字字段,这一字段用于依据条件贮存该返回指令指示字,其条件就是完成对新帧的调用操作;这一字段还用于依据条件贮存下一条指令的指令指示字,其条件就是过程被中止,所述字段是返回到这一帧后控制被返回到的线性地址。
CN87100507A 1986-05-16 1987-01-26 微处理器芯片上的堆栈式超高速缓冲存储器 Expired CN1009592B (zh)

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 true CN87100507A (zh) 1987-11-25
CN1009592B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009094827A1 (en) * 2007-12-28 2009-08-06 Institute Of Computing Technology Of The Chinese Academy Of Sciences Risc processor device and method of simulating floating-point stack operation thereof
CN101470691B (zh) * 2004-11-19 2012-02-22 英特尔公司 共享公共高速缓存的异构处理器
CN111354406A (zh) * 2018-12-20 2020-06-30 爱思开海力士有限公司 存储器装置及其操作方法以及包括其的存储器系统

Families Citing this family (70)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 スレーブ制御装置
DE68917326T2 (de) * 1988-01-20 1995-03-02 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
GB2254714B (en) * 1988-03-22 1992-12-23 Digital Equipment Corp Cross-domain call system in a capability based digital data processing system
US5210874A (en) * 1988-03-22 1993-05-11 Digital Equipment Corporation 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
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
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
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
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
AU7486591A (en) * 1990-03-15 1991-10-10 Sun Microsystems, Inc. Apparatus and method for providing a stall cache
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
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
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
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
KR950701437A (ko) 1992-05-01 1995-03-23 요시오 야마자끼 슈퍼스칼라 마이크로프로세서에서의 명령어 회수를 위한 시스템 및 방법
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
EP0682789B1 (en) * 1992-12-31 1998-09-09 Seiko Epson Corporation System and method for register renaming
US5893148A (en) * 1994-03-03 1999-04-06 International Business Machines Corporation System and method for allocating cache memory storage space
US6151661A (en) * 1994-03-03 2000-11-21 International Business Machines Corporation Cache memory storage space management system and method
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
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
KR100584964B1 (ko) * 1996-01-24 2006-05-29 선 마이크로시스템즈 인코퍼레이티드 스택 메모리 구조에서의 캐싱 장치
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
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
US6092152A (en) * 1997-06-23 2000-07-18 Sun Microsystems, Inc. Method for stack-caching method frames
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
US6067602A (en) * 1997-06-23 2000-05-23 Sun Microsystems, Inc. Multi-stack-caching memory architecture
US6058457A (en) * 1997-06-23 2000-05-02 Sun Microsystems, Inc. Method for storing method frames in multiple stacks
US5930158A (en) * 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
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
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
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
EP1461699A2 (de) * 2001-12-21 2004-09-29 Micronas GmbH Verfahren und vorrichtung zum verwalten von ressourcen für eine rechnereinrichtung
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
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 日立ビアメカニクス株式会社 描画装置及びそれを搭載した露光装置
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
JP2008065734A (ja) * 2006-09-11 2008-03-21 Meidensha Corp レジスタファイルの書き込み/読み出し方式
US9501285B2 (en) 2010-05-27 2016-11-22 International Business Machines Corporation Register allocation to threads

Family Cites Families (17)

* Cited by examiner, † Cited by third party
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
EP0075633B1 (en) * 1981-09-30 1987-09-09 Unisys Corporation Register allocation apparatus
WO1983001318A1 (en) * 1981-09-30 1983-04-14 Burroughs Corp Microprogrammed digital data processing system employing tasking at a microinstruction level
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 メモリ装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101470691B (zh) * 2004-11-19 2012-02-22 英特尔公司 共享公共高速缓存的异构处理器
US8156285B2 (en) 2004-11-19 2012-04-10 Intel Corporation Heterogeneous processors sharing a common cache
US8402222B2 (en) 2004-11-19 2013-03-19 Intel Corporation Caching for heterogeneous processors
US8799579B2 (en) 2004-11-19 2014-08-05 Intel Corporation Caching for heterogeneous processors
US9235550B2 (en) 2004-11-19 2016-01-12 Intel Corporation Caching for heterogeneous processors
US9965393B2 (en) 2004-11-19 2018-05-08 Intel Corporation Caching for heterogeneous processors
US10339061B2 (en) 2004-11-19 2019-07-02 Intel Corporation Caching for heterogeneous processors
WO2009094827A1 (en) * 2007-12-28 2009-08-06 Institute Of Computing Technology Of The Chinese Academy Of Sciences Risc processor device and method of simulating floating-point stack operation thereof
US8788796B2 (en) 2007-12-28 2014-07-22 Loongson Technology Corporation Limited Technique for simulating floating-point stack operation involving conversion of certain floating-point register numbers based on a top-of-stack pointer and modulo function
CN111354406A (zh) * 2018-12-20 2020-06-30 爱思开海力士有限公司 存储器装置及其操作方法以及包括其的存储器系统
CN111354406B (zh) * 2018-12-20 2023-08-29 爱思开海力士有限公司 存储器装置及其操作方法以及包括其的存储器系统

Also Published As

Publication number Publication date
JPS62286128A (ja) 1987-12-12
DE3716229C2 (de) 1996-08-14
US4811208A (en) 1989-03-07
SG34990G (en) 1990-09-07
GB8628175D0 (en) 1986-12-31
FR2598835B1 (fr) 1993-09-03
HK57590A (en) 1990-08-10
GB2190521B (en) 1990-01-10
GB2190521A (en) 1987-11-18
CN1009592B (zh) 1990-09-12
DE3716229A1 (de) 1987-11-19
FR2598835A1 (fr) 1987-11-20
JP2612168B2 (ja) 1997-05-21
KR870011524A (ko) 1987-12-24

Similar Documents

Publication Publication Date Title
CN87100507A (zh) 微处理器芯片上的堆栈式超高速缓冲存储器
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
US5819063A (en) Method and data processing system for emulating a program
USRE40509E1 (en) Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
EP2542973B1 (en) Gpu support for garbage collection
US5895501A (en) Virtual memory system for vector based computer systems
US4922414A (en) Symbolic language data processing system
CA1037158A (en) Segmented addressing hardware
Kirk et al. SMART (strategic memory allocation for real-time) cache design using the MIPS R3000
US20120246381A1 (en) Input Output Memory Management Unit (IOMMU) Two-Layer Addressing
US5956751A (en) Computer memory management system using physical segmentation space allocation
JPS6014341A (ja) 基本命令セツト計算機システムにおけるトラツプ割込み方式
JPS60176143A (ja) プログラム呼び出し装置
GB2083254A (en) Address translation and generation mechanism in information processing system
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
Kaiser MUTABOR, a coprocessor supporting memory management in an object-oriented architecture
CN85101171A (zh) 虚拟机系统及其计算机系统的输入/输出执行方法
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
Hunter et al. Introduction to the NS16000 Architecture
Vijaykumar Enhancing Programmability, Portability, and Performance with Rich Cross-layer Abstractions
CN1529234A (zh) 可处理变长数据的先进先出寄存器队列装置及控制方法
Barbacci et al. C. ai: a LISP processor for C. ai
Veronis et al. Advanced Computer Concepts

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
C14 Grant of patent or utility model
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)
C19 Lapse of patent right due to non-payment of the annual fee