CN1144934A - 具有执行送数指令执行部件的数据处理器及其操作方法 - Google Patents

具有执行送数指令执行部件的数据处理器及其操作方法 Download PDF

Info

Publication number
CN1144934A
CN1144934A CN95106550A CN95106550A CN1144934A CN 1144934 A CN1144934 A CN 1144934A CN 95106550 A CN95106550 A CN 95106550A CN 95106550 A CN95106550 A CN 95106550A CN 1144934 A CN1144934 A CN 1144934A
Authority
CN
China
Prior art keywords
instruction
data
storage
send
impact damper
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.)
Pending
Application number
CN95106550A
Other languages
English (en)
Inventor
大卫P·伯吉斯
马文A·登曼
小米尔顿M·胡德
马克A·克尼
拉文亚·克林
格雷厄姆R·墨菲
瑟昂优恩·彼得·桑
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of CN1144934A publication Critical patent/CN1144934A/zh
Pending 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

所公开的数据处理器(10)派送送数/存储多重和送数/存储串指令到一个送数/存储部件(28)作为一序列的简单送数或存储指令。该序列器单元(18)指定再命名缓冲器(34)的一个入口,该送数/存储部件写回每个简单送数指令的数据到该入口。这个策略便于对随后指令的较早数据转发。相反地,如果它不能提供简单存储指令的操作数,该序列器单元提供再命名缓冲器标记给该送数/存储部件。

Description

具有执行送数指令执行部件的数据 处理器及其操作方法
本发明涉及数字计算***,具体涉及送数指令和存储指令。
所有的数据处理器都要执行它们内部计算的结果传送到其数据处理***部分的其余部分(或反之亦然)的某个指令。这些计算结果可以传送到一个外部存储***以便存储待日后使用;传送到一个CRT以对使用者进行显示;或者传送到一个网络以便再传输给另一个数据处理***。这些指令经常称为“存储”指令或“写”指令。反之,数据可从一个外部存储***或者从一个输入/输出(I/O)设备如键盘传送到该数据处理***,以进行数据处理。这些指令通常称为“送数”指令或“读”指令。
甚至在一个特定的计算机结构中也有很多各种各样的送数/存储指令。各种送数/存储指令减轻了软件程序的负担。这些种指令在传送数据的数量、数据源及地址或目的地的计算、数据格式等方面互相不同。一种类型的送数/存储指令是“送数多重”(loadmultiple)或“存储多重”指令。在几个处理器时钟周期期间,这两个指令将一系列顺序存储单元的内容装载入一系列顺序内部寄存器或反之亦然。存储器的存储单元的数量,存储器地址的起始地址和该内部寄存器的起始地址是由该指令格式及其操作数确定的。
送数/存储多重指令是在流水线式数据处理器中是待实施的一个困难的指令。某些数据处理器,特别是减少的指令集的计算机(“RISC”)和一些复杂指令集的计算机(“CISC”),重叠指令处理以提高性能。这个策略经常被送数/存储多重指令打破。例如,单个送数多重指令可更新每个内部寄存器。在该指令流中所有顺序指令必须延迟直到相关数据可用为止。相反地,单个存储多重指令可每个内部寄存器输出。这时指令必须延迟直到该数据可用为止。同时,该存储多重指令必须以某类型内部队列缓冲。因此这个策略防止其它指令使用这些资源。
根据本发明,这里公开了一种具有执行送数指令的执行部件的数据处理器及操作方法,它基本上消除了已知数据处理器和方案的缺点。
所公开的数据处理器具有互相连接的多个结构寄存器、一个再命名缓冲器、一个送数部件和一个顺序器部件。再命名缓冲器有多个入口用于缓冲多个指令的不同指令的多个结果的不同结果。对于派送(dispatch)给它的每个送数指令标记时,送数部件请求以从存储***来的地址索引的数据。该送数部件也在送数指令标记对内该标记规定的多个再命令缓冲器的多个入口之一中缓冲该数据。该序列器单元接收要求N×M字节的送数多重指令,这里N和W是整数,N大于1,而且多个结构寄存器的每一个的容量为W字节。然后序列器部件发送N送数指令标记对到该送数单元。
所公开的方法具有以下步骤:在第一时间期间,在序列器部件中接收送数多重指令,和在N个顺序时间期间,派送N个送数指令标记对到一个送数部件和将再命名缓冲器的多个入口的不同入口存储到多个结构寄存器的不同结构寄存器。该送数多重指令请求N×M字节的数据,这里N和M是整数,N大于1而且多个结构寄存器的每一个的容量为W字节。对于传送给它的每个送数指令标记对,该送数部件请求以存储***的地址索引的W字节数据。该送数部件还在多个再命名缓冲器入口之一中缓冲W字节数据。送数指令标记识别特定的索引入口。
下面结合附图详细叙述本发明,这将会对其特性和优点有更清楚的理解,各图中相同的标号表示相同和相应部分,其中:
图1示出按照本发明构成的数据处理器的方框图;
图2示出图1所示的数据处理器所执行的指令的定时图;
图3示出图1所示的送数/存储部件28的方框图;
图4示出可能状态的状态瞬变图,其中可能示出图3的存储队列的每个入口。
图1示出按照本发明构成的数据处理器10的方框图。数据处理器10实施Power PC Architecture(增强能力的PC结构)指令集。Power PC Architecture指令集包括送数/存储多重和送数/存储串指令。当数据处理器10执行一个指令流时它确定这些指令的存在和“不滚动”或分解这些指令为一序列的单个送数或单个存储指令。第一例子,如果数据处理器10遇到一个存储多重指令,且把十六个顺序的内部存储器内容输出到十六个顺序存储单元,则数据处理器10调派十六个单个的寄存器存储指令。这个策略允许数据处理器10使用其送数/存储多重指令的再命名方法。而且,数据处理器10可以派送送数/存储多重指令以外的其它指令。
继续参照图1,一个总线接口单元(以下称BIU)12控制在数据处理器10与数据处理***其余部分(未示出)之间的数据流。BIU12与一个指令高速缓冲存储器14和一个数据高速缓冲存储器16相连接。指令高速缓冲存储器14给序列器单元18提供一个指令流。序列器单元18把各个指令传送到一个合适的执行单元。数据处理器10具有一个分支单元20、一个固定点执行部件A22、一个固定点执行部件B24、一个复合固定点执行部件26、一个送数/存储执行部件28和一个浮点执行部件30。固定点执行部件A22、固定点执行部件B24、复合固定点执行部件26和送数/存储执行部件28读出并把它们的结果写入到通用结构寄存器文件32(标记GPR并在以下面称GPR文件)和第一再命名缓冲器34。第一再命名缓冲器34将在下文结合图3和4再详述。浮点执行部件26和送数/存储执行单元28读出它们的结果并写入到一个浮点结构寄存器文件36(被标记的FPR和下文的FPR文件)和第二再命名缓冲器38。
不具有所公开的发明的数据处理器10的操作是本领域公知的。通常,分支单元20在给定一些数据寄存器和指令本身的内容的情况下确定什么样的编程指令序列是合适的。指令高速缓冲存储器14把这个编程指示的序列提供给序列器18。如果指令高速缓冲存储器14不包含所要求的指令,则它从数据处理器10外部的主存储***(未示出)取出它们。
序列器单元18把编程指令序列的各个指令派送到各个执行部件20、22、24、26、28和30。序列器单元18还在再命名缓冲器34或38中保留一个入口,在其中暂时存储每个指令的结果,如果有的话。这两个再命名缓冲器都是先进先出(“FIFO”)队列的。
每个执行部件执行一定等级指令中的一个或多个指令。每个执行部件的特定等级指令由执行部件的名字来指明。例如,固定点执行部件A和B对于以固定点表示式表示的操作数执行简单的算术运算,例如加、减、与、或和异或运算。复合固定点执行部件26对以固定点表示式表示的操作数执行更复杂的算术运算,例如乘和除。浮点执行部件30对于以浮点表示式表示的操作数执行算术运算,例如乘和除。
固定点执行部件A与B及复合固定点单元26把它们操作的结果返回到第一再命名缓冲器34中的指定入口。当产生该结果的该指令前面的所有指令已更新它们GPR文件入口时,第一再命名缓冲器34周期地更新具有第一再命令缓冲器34来的一个入口的GPR文件32的入口。序列器单元18保持再定序缓冲器39以协调这个更新。再定序缓冲器39是一个FIFO队列的,从其原始顺序存储该编程指令流的一部分。序列器单元18等待直到再定序缓冲器39中的最旧指令已完成为止。然后,序列器单元18按照分配给该指令的再命名缓冲器入口中存储的结果来更新该结构寄存器。序列器单元18还使再定序缓冲器39中的该指令入口无效,以便给后面的指令留出空间。第一再命名缓冲器34和GPR文件32二者可把操作数提供给固定点执行部件A与B及复合固定点单元26。
浮点执行部件30把其操作的结果返回到第二再命名缓冲器38中指定的入口。当产生该结果的该指令前的所有指令已更新它们的FPR文件入口时,第二再命令缓冲器38周期地更新具有第二再命名缓冲器38中的入口的FPR文件36的一个入口。序列器单元18还协调这个更新。第二再命令缓冲器38和FPR文件36二者把操作数提供给浮点执行部件30。
送数/存储部件28在完成时刻读出存储在GPR文件32中或FPR文件36中的数据并且把所选的数据写到数据高速缓冲存储器16。这个数据还可写入一个外部存储***(未画出),这取决于与所公开的发明无关的数据处理器10的操作特性。反之,送数/存储部件28读出存储在数据高速缓冲存储器16中的数据,并把该读出数据写到第一再命名缓冲器34或第二再命名缓冲器38。如果数据高速缓冲存储器16不含有所要求的数据,则它经过BIU12从数据处理器10外部的主存储***取出所要求的数据。送数/存储部件28将在下文结合图3至14进行叙述。
所公开的发明的数据处理器10的操作在下文结合图2至4进行叙述。通常,数据处理器10是一个减少的指令集计算机(“RISC”)。数据处理器10通过把每个指令分解为一个较小步骤的序列(其每个步骤在时间上可与其它指令的步骤重叠)来实现其高的性能。这个性能策略称为“流水线技术”。
图2示出由图1所示的数据处理器10执行的指令的定时图。在所示例的实施例中,每个指令被分解为五个分离的步骤:取数、解码、派送、执行和完成。
在取数阶段,令高速缓冲存储器14中的存储器管理电路(未示出)检索在前一时钟周期中由序列器单元18或由分支单元20识别的存储器地址处开始的一个或多个指令。
在解码阶段,指令由序列器单元18解码为多个控制信号,以便在随后的阶段使用。在这个阶段期间,序列器单元18确定送数/存储多重指令的存在。
在派送阶段,在确定没有不容许的数据或资源相关之后和在为该指令的结果保留一个再命名缓冲器入口之后,序列器单元18把每个指令传送到该合适的执行部件。派送阶段也负责为被传送的指示提供操作数信息,或者如果一个或几个操作数还不可用,用于提供识别该操作数据写入的再命名缓冲器入口的标记。每个执行部件在一个保留站中存储其特定指令直到它收到执行该指令的所有必须的操作数信息。序列器单元18把单个送数/存储多重指令分解为一系列简单的送数/存储指令。序列器单元18为每个简单的送数指令保留一个再命名缓冲器入口。每个简单送数指令开始把其数据写到这个规定的入口。之后,序列器单元18把这个数据拷贝到相应的结构寄存器。随后指令要求一个结构寄存器的内容,接收规定将缓冲该数据的再命名缓冲器入口的该标记。这个策略加速随后指令的派送。类似地,序列器单元18转发一个再命名缓冲器标记与每个简单的存储指令。这个标记识别可在何处先被找到该存储数据。
在执行阶段,每个特定的执行部件接收所有的(或一些)必要的操作数信息,因而能够开始执行其编程指令。如果有任何结果的话,将结果分别返回到用于整数和浮点结果的第一再命名缓冲器34或第二再命名缓冲器38。送数/存储部件28按照送数/存储指令的操作数及其格式计算目的地存储单元的有效地址。送数/存储部件28可移动该指令进入送数或存储队列(图3)中。数据高速缓冲存储器16还开始翻译所计算的有效地址为一个实际地址。数据处理器10使用一个有效地址内部地索引每个可能的存储单元和使用一个实时地址外部地索引每个可能的存储单元。数据处理器10保持一个地址翻译表(未示出)以便从一个格式变换为另一个格式。
一个存储指令可要求一个或多个附加的执行阶段。如果该存储指令不能立即存取数据高速缓冲存储器16,则该存储指令仍然在该存储缓冲器中,如下所述。
在完成阶段,在该特定指令前面的每个指令已经更新该结构寄存器文件之后,序列器单元18以存储在再命名缓冲器中存储的特定指令的结果更新该结构寄存器。当满足这个标准时,指令是在再定序缓冲器39中的最旧的指令。在该特定指令前面的每个指令已更新该结构状态之后,完成阶段还更新该机器中的所有其它结构状态。当它们前面的所有指令已完成时,存储指令提供给数据高速缓冲存储器16。
通常,每个指令阶段需用一个机器时钟周期。但是,一些指令如复合固定点指令要求一个以上时钟周期执行。因此,由于前面指令执行可能需用的时间范围,特定指令的执行和完成阶段之间可能有一个延迟。
图3示出了图1中所示的送数/存储部件28的方框图。送数/存储部件28有一个保留站40,它存储有关每个送数/存储指令的各个信息。保留站40从序列器单元18接收存储指令或送数指令、两个操作数A与B、和一个再命名标记。再命名标记识别在该装入数据的再命名缓冲器之一中的目的地(如果有的话)。复用器(MUX)41输出两个输入之一到保留站40作为操作数A。复用器43输出两个输入之一到保留站40作为操作数13。复用器41和43的每一个从接到GPR文件32和第一再命名缓冲器34的结果总线接收一个输入。保留站40分别地把这两个操作数和该指令转发到一个加法器42和一个锁存器44。通过算术“加”这两个操作数,加法器42计算每个送数/存储指令的源/目的地的有效地址。加法器42的输出由一个锁存器46锁存并且转发到数据高速缓冲存储器16和复用器41的第二输入。锁存器44和46由一个全局周期时钟信号(未示出)锁定。复用器43的第二输入接收“一对四”发生器45的输出。“一对四”发生器45从序列器单元18接收控制信息,该控制信息标记了“控制”,用它来选择哪个输入复用器41与43的输出送到保留站40。
指令和由锁存器44及46锁存的有效地址被转发到一个存储队列48和一个装入队列50。控制逻辑单元52根据指令的等级选择这两个队列的哪一个队列锁存该数据。控制逻辑单元52从保留站40接收该指令操作码以便于这个发送。控制逻辑单元52还从数据高速缓冲存储器16和从序列器单元18接收各种控制信号。控制逻辑单元52控制复用器54其三个输入的哪个输入输出到数据高速缓冲存储器16。复用器54从锁存器46、从存储队列48和从装入队列50接收一个地址。控制逻辑单元52的工作在下面叙述。
下面以两部分对装入和存储操作叙述数据处理器10的工作。通常这两部分将该送数或存储指令流流过数据处理器10。首先,叙述送数/存储多重指令的“不滚动”入一系列简单的送数/存储指令。其次,叙述在装入队列50或存储队列48中每个简单送数/存储指令的缓存。
送数/存储多重指令不滚动:
数据处理器10是功率PC结构的一个实施。功率PC结构指令集规定送数和存储指令的三类复合形式:(1)多字,(2)串字立即和(3)串字索引。
送数多字“1MW RT.D(RA)”:
送数多字指令将N个连续字(每字32比特)的内容装入GPR文件32的N个连续寄存器,这里的N是等于(32-RT)的一个整数。按照惯例,GPR文件32的三十二个寄存器编号为零至三十一。GPR文件32的每个寄存器是四字节或一字宽。由该送数多重指令读出的数据在由寄存器RA(操作数A)和字段D(操作数B)之和规定的存储地址开始。该数据从由RT规定的寄存器开始被送入寄存器序列。
序列器单元18解码送数多字指令和派送(32-RT)单个送数指令到送数/存储部件28。对每个随后的送数指令,序列器单元18将装入数据的目的地寄存器数(RT)递增1。这个目的地存储在再命名缓冲器34中,便于随后发送该数据到合适的结构寄存器。序列器单元18指定一个不同的再命名缓冲器入口和一个不同的再定序缓冲器入口给每个(32-RT)指令。
序列器单元18认为到“一对四”发生器45的控制信号表明特定的派送指令是一个送数多字指令。在开始,“一对四”发生器45使复用器41和43将连接到结果总线的输入输出。在每个随后的(31-N)送数指令,四中之一发生器45使复用器41和43将连接到加法器42和接到“一对四”发生器45的输入输出。发生器45还输出数字4到复用器43。在功能上,数字4的输出加在前面的有效地址使送数/存储部件28从数据高速缓冲存储器16或从外部存储***请求下一个定位字。
控制逻辑单元52将每个送数指令写回到序列器单元18规定的不同再命名缓冲器入口。这个策略允许在更新送数指令的结构寄存器之前随后的指令存取用于它们的计算的数据,“数据转发”。一旦它被派送,就允许每个送数指令“推测地”存取数据高速缓冲存储器16。如果需要的话,当其再定序缓冲器36入口是最旧的入口时,允许每个送数指令“非推测地”接入该外部存储***。
存储多字“stmw RS.D(RA)”:
该存储多字指令将GPR文件32的N个连续寄存器的内容存入N个连续存储器字的内容中,这里的N是等于(32-RS)的一个整数。该存储多字指令从寄存器RA(操作数A)和字段D(操作数B)之和规定的存储地址开始。该数据装入由RS规定的寄存器开始的寄存器序列中。
序列器单元18对存储多字指令解码并派送(32-RS)单个存储指令到送数/存储部件28。对每个顺序存储指令序列器单元18使该存储数据的源寄存器数(RS)递增1。当该存储指令是数据处理器10中的最旧指令时,序列器单元18从这些寄存器提供该数据(初始地RS)给送数/存储部件。(见下面的叙述)
序列器单元18给“一对四”发生器45确定一个控制信号,表明特定的传送指令是一个存储多字指令。初始地,发生器45使复用器41和43将连接到结果总线的输入输出。在每个顺序(31-N)存储指令,发生器45使复用器41和43将接到加法器42和发生器45的输入输出。发生器45还输出数4到复用器45。在功能上,加在前面的有效地址的数4的输出使送数/存储部件28索引在数据高速缓冲存储器16或在外部存储***中的下一个字。
当其再定序器缓冲器39入口是最旧的入口时,只允许每个存储指令“非推测地”存取数据高速缓冲存储器16和外部存储***。
送数串字立即“Iswi RT,.RA,NB”
送数串字立即指令将NB连续存储字节的内容装入GPR文件32的(NB/4,进到下一个整数)连续寄存器。送数串字立即指令从寄存器RA的内容规定的存储字节地址和RT规定的寄存器开始。在这个指令中没有“B有效地址操作数”。
序列器单元18对送数串字立即指令解码和派送(NB/4,进到下一个整数)单个送数指令到送数/存储部件28。对于每个随后的送数指令,序列器单元18使装入数据的目的地寄存器递增1。根据NB和RT的值该目的地寄存器可从寄存器31“卷绕”(wrap around)到寄存器0。同样地,这里的序列器单元18的操作类似于其在送数多字指令中的操作。
序列器单元18给发生器45确定一个控制信号,表明特定的传送指令是一个送数串字立即指令。在开始,发生器45使复用器41和43将接到结果总线的输入输出。每个送数串字立即指令或者是定位的或者失去定位的。在定位的送数串字立即指令中的第一字节两个最低有效位是0。在失去定位的送数串字立即指令中第一字节的两个最低有效位不都是0。对于定位的和失去定位的装入串字立即指令,送数/存储部件28作用不同。
在定位的送数串字立即指令中,控制逻辑单元52进行(NB/4,进到下一个整数)存取数据高速缓冲存储器16。这个操作类似于上述的送数多字指令。
在失去定位的送数串字立即指令中,送数/存储部件28进行(NB/4+1,进到下一个整数)存储数据高速缓冲存储器16。这个策略保证对于每个修改的寄存器有到再命名缓冲器34的一个写回操作。同样地,两个高速缓冲存储器存取可要求更新三个结构寄存器。在开始,控制逻辑单元52确定送数串字立即指令是失去定位的。发生器45使复用器41和43将连接到结果总线的输入输出。在每个随后的送数指令,发生器45使得复用器41和43将连接到加法器42和接到发生器45的输入输出。在第二送数指令期间,发生器45输出数1至4中之一到复用器43,它将索引紧接着由RA规定的字节的定位字。在完成二个送数指令之后,送数/存储部件28可写第一寄存器的新数据到再命名缓冲器34的合适入口。直到四个连续字节为止不传送缓冲器失去定位数据的电路可被装入再命名缓冲器34的单个入口。此后,发生器输出数4。送数/存储部件28在每个随后的送数指令之后可写一个随后的寄存器新数据到再命名缓冲器34的合适的入口。最后,最后的两个送数命令由控制逻辑单元52进行修改。最后送数指令的第二个只要求一个字节。最后送数指令要求完成送数串字立即指令所需的剩余字节(多达3)。同样地,在这里序列器单元18的操作类似于送数多字指令中的操作。
存储串字立即“stswi RS.RA.NB”:
该存储串字立即指令将GPR文件32的(NB/4,进到下一个整数)连续寄存器内容存储入NB连续存储字节的内容中。该存储串字立即指令从由寄存器RA的内容规定的存储地址和由RS规定的寄存器开始。在这个指令中没有“B有效地址操作数”。
序列器单元18解码存储串字立即指令和传送(NB/4,进到下一个整数)单个存储指令给送数/存储部件28。对于每个随后的存储指令,序列器单元18将该存储数据的源寄存器递增1。当该存储指令是数据处理器10中的最旧指令时,序列器单元18从这些寄存器提供该数据(开时是RS)给送数/存储单元28(见下面的叙述)。同样地,在这里序列器单元18的操作类似于它在存储多字指令中的操作。
序列器单元18给发生器45确定一个控制信号,表明特定的传送指令是一个存储串字立即指令。每个存储串字立即指令或者是定位的或者是失去定位的。定位的存储串字立即指令中第一字节的两个最低有效位是0。在失去定位的存储串字立即指令中第一字节的两个最低有效位不都是0。对于定位的和失去定位的存储串字立即指令,送数/存储部件28的作用不同。
在定位的存储串字立即指令中,送数/存储部件28进行(NB/4,进到下一个整数)存取数据高速缓冲存储器16。这个操作类似于上面的存储多字指令。
在失去定位的存储串字立即指令中,送数/存储部件28进行(2×NB/4+1,进到下一个整数)存取数据高速缓冲存储器16。对于最后一个之外的所有传送给它的存储指令,送数/存储部件28产生对数据高速缓冲存储器的一对存取,而对该最后的存储指令产生单个存取。在开始,发生器45使复用器41和43将接到结果总线的输入输出。送数/存储部件28只写入由该指令编程的字节到数据高速缓冲存储器16。控制逻辑单元52重复相同的存储指令来完成字定位的存取。发生器45递增第二指令的地址到下一个定位的字。在这里,当与前面的存储数据高速缓冲存储器16组合时,送数/存储部件28只写所需的字节数为总数4。发生器45和控制逻辑单元52继续将每个失去定位的字存取分为二半的这个过程,直到该最后指令为止。然后,控制逻辑单元52只需进行单个存储数据高速缓冲存储器16。
送数串字索引“lswx RT.RA.RB”:
该送数串字索引指令将M连续存储字节的内容装入GPR文件32的(M/4,进到下一个整数)连续存储器。M是特别目的寄存器的一个文件(未示出)。该装入串字索引指令从由寄存器RA与寄存器RB的内容之和规定的存储字节地址和由RT规定的寄存器开始。同样地,该送数串字索引指令类似于该送数串字立即指令。
存储串字索引“stswx RS,RA.RB”:
该存储串字索引指令将GPR文件32的(M/4,进到下一个整数)连续寄存器的内容存储入M连续存储字节的内容。M是特别目的寄存器中的一个字段。该存储串字索引指令从由寄存器RA与寄存器RB内容之和规定的存储地址和由RS规定的寄存器开始。同样地,该存储串字索引指令类似于该存储串字立即指令。
简单的送数/存储指令缓冲:
在指令的传送阶段期间,序列器单元18转发一个送数或存储指令到送数/存储部件28。保留站40锁存该指令和以下之一:(a)操作数A或者在某个执行单元完成它时识别在再命名缓冲器34或操作数A的再命名缓冲器38中的目的地的一个标记,和(b)操作数B或者在某个执行单元完成它时识别在再命名缓冲器34或操作数B的再命名缓冲器38中的目的地的一个标记。保留站40等待直到这两个操作数都可用为止。
该送数/存储指令的执行阶段在这两个操作数可用时开始。加法器42计算该源/目的地的有效地址。锁存器44与46锁存该指令和指令的地址,使保留站40能接收另一个指令。
当它已完成该送数或  存储指令前的所有指令时,序列器单元18给控制逻辑单元52确定一个控制信号。根据数据高速缓冲存储器16的、存储队列48的和送数队列50的内容,这个动作可使或可不使该指令立即完成。当它不能再产生例外时指令被完成。这个预定策消除了如果某作前面的指令产生一个例外时必须“取消”(undo)一个送数或存储指令的可能性。如果该指令是一个存储指令,在这时序列器单元18还提供由该指令存储的数据给存储队列48。
数据处理器10的其它部分执行与该送数/存储指令相关的功能。数据高速缓冲存储器16翻译由加法器42产生的有效地址为一个实际的地址并且确定它是否包含与该送数或存储指令相关的数据。如果数据高速缓冲存储器16能够翻译该有效地址,则它返回该实际地址到送数/存储部件28。如果数据高速缓冲存储器16不能翻译该有效地址,则它存取在存储***中的专门的地址翻译表(未示出)。稍后,当这个存取完成和它能提供该翻译时,数据高速缓冲存储器16将产生一个中断信号。然后控制逻辑单元52在与未翻译的送数或存储指令相关的入口中存储所翻译的地址。数据高速缓冲存储器16同时确定它是否包含由该实示地址索引的数据。如果数据高速缓冲存储器16包含送数指令要求的数据,则在下一个时钟周期期间数据高速缓冲存储器16返回该数据给送数/存储部件28。直到序列器单元18表明该存储指令是数据处理器10中的最旧指令为止,数据高速缓冲存储器16不修改其存储器。如果数据高速缓冲存储器16不包含由该实际地址索引的数据,则在控制逻辑单元52表明要求该数据的指令是数据处理器10中的最旧指令之后,它经过BIU12从该存储***要求该数据。
控制逻辑单元52经过复用器54从存储队列48和送数队列50转发选择指令给数据高速缓冲存储器16。这两队列都是先进先出(“FIFO”)队列。控制逻辑单元52保持各种指示符,以便识别每个队列中的哪个入口应接收下一指令和哪个入口可提供给数据高速缓冲存储器16。如上所述,如果送数和存储指令二者同时都是合格的,控制逻辑单元52提供一个送数指令地址给数据高速缓冲存储器16。控制逻辑单元52在下一时钟周期就可“提供”存储指令给数据高速缓冲存储器16(或者以该指令数据更新该存储***),在该时钟周期中在一些环境下存储队列48锁存该指令:(1)如果各个指示符表明该指令是被提供的下一个指令,(2)如果在前一时钟周期数据高速缓冲存储器16能够翻译该指令地址,和(3)如果数据高速缓冲存储器16确定它包含该索引数据。同样地,控制逻辑单元52将提供给数据高速缓冲存储器16的存储指令延迟至少一个附加时钟周期。在这两个情况下,控制逻辑单元52在存储队列48的下一个可用入口中缓存该指令。一旦加法器42计算该指令的有效地址,控制逻辑单元52就提供送数指令给数据高速缓冲存储器16。如果数据高速缓冲存储器16能够翻译该指令的地址,和如果数据高速缓冲存储器16包含该索引数据,则认为该送数指令完全执行。同样的,控制逻辑单元52在装入队列50的下一个可用入口中缓存该送数指令。
继续图3,控制逻辑单元52在存储队列48中缓存存储指令。存储队列48是一个方入口静态随机存取存储器(“SRAM”)结构。方入口的每个入口包含一百三十八位:七十位存储一部分存储指令的操作码和数据属性,六十七位存储该存储指令的实际地址,和一个有效位指示一个有效实际地址字段。控制逻辑单元52保持存储队列48的四个指示符:一个最旧丢失指示符,一个下一个存取指示符,一个结束指示符和一个传送指示符。从下面的叙述中将更清楚,最旧丢失指示符总是在后面或等于该下一个存取指示符,该下一个存取指示符总是在后面或等于该结束指示符,和该结束指示符总是在后面或等于该传送指示符。在开始,所有四个指示符表明存储队列48中的相同入口。
控制逻辑单元52在由该传送指示符索引的入口中缓存每个新的存储指令。控制逻辑单元52在数据高速缓冲存储器16提供它时在该相同的入口实际地址字段中存储该指令的翻译地址。当它收到实际地址时,控制逻辑单元52还使该传送指示符递增或前进1。
如上所述,序列器单元18确定一个控制信号和提供该存储数据,表明送数/存储部件28可完成存储指令。控制逻辑单元52在由该结束指示符规定的入口的数据字段中缓冲该存储数据。当它接收该存储数据时控制逻辑单元52还使结束指示符递增1。
当控制逻辑单元52没有较高优先级送数指令时,转发由该下一个存取指示符索引的指令的实际地址和存储数据到数据高速缓冲存储器16。控制逻辑单元52使该下一个存取指示符递增1。如果该存取是成功的,则数据高速缓冲存储器16修改适当存储单元的内容和控制逻辑单元52无效该入口的有效位。如果该存取不成功,则送数/存储部件28必须等待数据高速缓冲存储器16和BIU12从外部存储***检索该数据。当它从外部存储***收到有效数据时,数据高速缓冲存储器16确定一个控制信号。然后控制逻辑单元52提供由该最旧丢失指示符索引的地址给数据高速缓冲存储器16。应该注意,在丢失之后控制逻辑单元52继续提供由该下一个存取指示符索引的存储指令给数据高速缓冲存储器16。这些随后的表示在数据高速缓冲存储器16中可能或不可能“击中”(hit)。
最后,如果在由当前入口目前索引的入口变得无效时没有其它有效的入口,控制逻辑单元52递增该最旧丢失指示符到下一个有效入口或到该传送指示符。
控制逻辑单元52在送数队列50中缓存送数指令。送数队列50是一个四入口SRAM结构。四入口的每个入口包含六十五位:三十二位存储一部分送数指令的操作码和数据属性,三十二位存储该送数指令的实际地址和一个有效位指示一个有效的实际地址字段。控制逻辑单元52保持装入队列50的两个指示符:一个首部指示符和一个尾部指示符。从下面的叙述中更清楚了,首部指示符总是在后面或等于尾部指示符。在开始,这两个指示符指示送数队列50中相同的入口。
在加法器42产生该送数指令的有效地址之后,送数/存储部件28直接地转送每个送数指令到数据高速缓冲存储器16。这个时间表反映送数指令相对于存储指令的优先性。如果数据高速缓冲存储器16能够翻译该有效地址为一个实际地址和如果数据高速缓冲存储器16包含所要求的数据,则数据高速缓冲存储器16转发该数据到再命名缓冲器34或38。如数据高速缓冲存储器16不能翻译该地址,则该送数指示在锁存器44和46中等待直到数据高速缓冲存储器16可这样翻译该地址为止。如果数据高速缓冲存储器16不包含该数据,则控制逻辑单元52在由该尾部指示符索引的入口存储该送数指令。在所述的实施例中,数据高速缓冲存储器16不从外部存储***请求该送数指令数据,直到序列器单元18指示该送数指令之前的所有指令已写回它们的结果到数据处理器10的各个结构寄存器为止。这个策略避免对外部存储***的推测数据装入操作。当它接收该实际地址时,控制逻辑单元52使尾部指示符递增1。控制逻辑单元52还设定该入口的有效位,指示有效的实际地址字段。
如上所述,序列器单元18确定一个控制信号,指示送数/存储部件28可完成送数指令。控制逻辑单元52转发由该首部指示符索引的送数指令的实际地址到数据高速缓冲存储器16。如果数据高速缓冲存储器16能够提供所要求的数据,则数据高速缓冲存储器16经过送数/存储部件28转发该数据到结果总线,控制逻辑单元52使该首部指示符递增1和控制逻辑单元52清除指令的有效位。如果数据高速缓冲存储器16不能提供所要求的数据,则送数/存储部件28必须等待数据高速缓冲存储器16和BIU12从外部存储***检索该数据。数据高速缓冲存储器16经过送数/存储部件28直接地转发所接收的数据到该适当的结果总线并且给控制逻辑单元52确定一个控制信号。然后控制逻辑单元52递增该首部指示符。
图4表示可能状态的状态瞬变图,图中可能是图3所示的存储队列40的每个入口。在存储队列48中的六个入口的每个入口可能是五个所示状态:“无效”、“完成”、“结束”、“尝试”、“在丢失后击中”(HIT-UNDER-Niss)其中的一个和唯一的一个。四个存储指示符(Pointer)的特定值是:“最旧的丢失”、“下一个存取”、“结束”和“派送”,每个入口有效位和数据处理器10的操作确定该入口处于哪个状态。
存储队列48中六个入口的每个入口的每个入口在开始时处于无效状态。该“最旧丢失”指示符(Pointer)直到和包括该“派送”指示符之间的每个入口处于“无效”状态。最后,序列器单元18派送足够的存储指令到送数/存储部件28使该传送指示符索引该特定入口。然后控制逻辑单元52缓存传送给该入口中送数/存储部件28的下一个存储指令。数据高速缓冲存储器16翻译特定入口的有效地址为一个实际地址并且转发这个地址到送数/存储部件28。当收到所翻译的地址时,控制逻辑单元52设定该特定入口的有效位。然后这个特定入口的状态从“无效状态”瞬变为“完成”状态。该特定入口保持在这个状态直到序列器单元18指示存储在该入口中的存储指令是数据处理器10中的最旧指令。在“派送”指示符直到和包括“结束”指示符之间的每个入口处于“完成”状态。
最终,序列器单元18发信号通知控制逻辑单元52,存储在由结束指示符指示的入口中的存储指令是数据处理器10中的最旧指令。这时,在该程序顺序中在该存储指令前面的每个指令已更新该适当的结构寄存器,或者如果没有要求更新,已达到其操作中的一点,在此之后它不可能产生例外。这时把数据写到外部存储***是安全的,而无需必须“取消”该存储指令的处理。这个特定入口的状态从该“完成”状态瞬变到“结束”状态。“结束”指示符直到和包括该“下一个存储”指示符之间的每个入口是处于“结束”状态。
当该“下一个存取”指示符索引含有该存储地址数据对而且没有较高优先级操作的入口时,控制逻辑单元52提供一个存储地址数据对给数据高速缓冲存储器16。这时,该特定入口转变为“尝试”状态。如果数据高速缓冲存储器16确定该控制信号“重试”,该入口状态可返回到“结束”状态。当例如因为数据高速缓冲存储器16从BIU12接收数据,数据高速缓冲存储器16存取专门的地址翻译表等它不能服务存储指令时,数据高速缓冲存储器16确定该控制信号“重试”。该下“一个存取”指示符直到和包括“最旧丢失”指示符之间其有效被置位的每个入口是处于“尝试”状态。
在控制逻辑单元52提供一个存储地址数据对给数据高速缓冲存储器16之后有两个可能的结果。数据高速缓冲存储器16或者包含该数据“击中”(hit)或者不包含该数据“丢失”。
在该数据高速缓冲存储器击中情况下,该入口瞬变为“在丢失后击中”状态或者“无效”状态。如果“最旧丢失”指示符没有把它识别为最旧有效存储指令,该入口瞬变为“在丢失后击中”状态。相反地,如果该“最旧丢失”指示符将它识别为最旧有效存储指令,该入口瞬变为“无效”状态。在这两种情况下,控制逻辑单元52清除该入口的有效位。该“结束”指示符直到该“最旧丢失”指示符之间其有效位被清除的每个入口处于“在丢失后击中”状态。
在该数据高速缓冲存储器丢失情况下,包含所提供的存储地址数据对的特定入口仍然处于“尝试”状态。
只要“最旧丢失”指示不把它识别为最旧有效存储指令,特定的入口仍然处于“在丢失后击中”状态。当“最旧丢失”指示符将它识别为最旧有效存储指令,该入口转变为“无效”状态。
虽然已对照具体实施例描述了本发明,但本领域的技术人员可做进一步的修改和改进。例如,所公开的发明可以组合入传统地分类为复合指令集计算机或CISC机的数据处理器中。而且,一些功能单元在一些实施例中可省去或者重新放置在数据处理器10的其它区域。鉴此应该懂得,本发明包括不脱离所附权利要求书中规定的本发明的精神和范围的所有这些修改。

Claims (10)

1.一种具有执行送数指令的执行单元的数据处理器,其特征在于该数据处理器包括:
多个结构寄存器;
一个再命名缓冲器,连接到该多个结构寄存器,该再命名缓冲器包括多个入口,该多个入口的每个入口缓存多个指令的不同指令的多个结果的不同结果;
一个送数部件,连接该再命名缓冲器,用于派送给它的每个送数指令标记对,该送数部件从存储***请求由一个地址索引的数据,并且在由一个标记索引的再命名缓冲器的多个入口之一中缓冲该数据,该送数指令标记对包括识别该再命名缓冲器多个入口之一的标记;和
一个序列器单元,连接到该送数部件,该序列器单元接收送数多重指令,该送数多重指令要求N×W字节,这里N和W是整数,N大于1和多个结构寄存器的每一个的容量为W字节,该序列器单元传送N个送数指令标记对到该送数部件。
2.根据权利要求1的数据处理器,其特征在于,该序列器单元传送一个地址到该送数部件,和其中该送数部件进一步的特征在于地址计算装置产生N个送数指令标记对的(N-1)对的(N-1)个地址。
3.根据权利要求2的数据处理器,其特征在于,该地址计算装置包括:
一个加法器,用于将一个第一复用器的输出与一个第二复用器的输出相加;
该第一复用器,交替地输出N个送数指令标记对的每对的第一字段或数W;
该第二复用器,交替地输出N个送数指令标记对的每对的第二字段或该加法器的输出;和
控制电路,用于选择第一和第二复用器的输入。
4.根据权利要求3的数据处理器,其特征在于,该序列器单元包括一个再定序缓冲器,存储一个序列的传送指令,和其中该序列器单元响应该序列将再命名缓冲器的多个输入之一复制到多个结构寄存器之一。
5.根据权利要求4的数据处理器,其特征在于,对于派送到该送数部件的每个存储指令,该送数部件存储由该地址索引的数据到该存储***,和其中该序列器单元接收一个存储多重指令,该存储多重指令存储M×N字节,这里M是大于1的一个整数,该序列器单元传送M个存储指令给该送数部件。
6.一种操作具有执行送数指令的执行单元的数据处理器的方法,其特征在于,该方法包括以下步骤:
在第一时间期间,
接收在序列器单元中的送数多重指令,该送数多重指令要求N×W字节的数据,这里N和W是整数,N大于1,和多个结构寄存器的每一个的容量为W字节;
在N个随后的时间期间,
第一派送N个送数指令标记对到一个送数部件,N个送数指令标记对包括识别一个再命名缓冲器的多个入口之一的一个标记,对于派送给它的每个送数指令标记对,该送数部件从存储单元请求由一个地址索引的W字节的数据和在由该送数指令标记对的标记索引的该再命名缓冲器多个入口之一中缓存该W字节数据;和
将该再命名缓冲器的多个入口的不同入口存储在多个结构寄存器的不同寄存器。
7.根据权利要求6的方法,其特征在于,包括以下步骤:
在第二时间期间,
接收在该序列器单元中的存储多重指令,该送数多重指令存储M×N字节数据,这里M是大于1的一个整数;和
在M个随后时间期间,
第二派送M存储指令给该送数部件,对于派送给它的每个存储指令,该送数部件将由一个地址索引的W字节数据存储到该存储***。
8.根据权利要求7的方法,其特征在于,包括以下步骤:
在N个随后时间的第二至第N个时间期间,在该送数部件中计算该地址。
9.根据权利要求8的方法,其特征在于,该存储步骤包括:响应存储在一个再定序缓冲器中的一序列指令将该再命名缓冲器的多个入口的不同入口存储到多个结构寄存器的不同寄存器的步骤。
10.根据权利要求9的方法,其特征在于,第一派送的步骤包括:派送N个送数指令标记对到该送数部件的步骤,该送数部件从制作在与该数据处理器相同的半导体基片上的存储***请求由该地址索引的数据。
CN95106550A 1994-06-03 1995-06-02 具有执行送数指令执行部件的数据处理器及其操作方法 Pending CN1144934A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US25527194A 1994-06-03 1994-06-03
US255,271 1994-06-03

Publications (1)

Publication Number Publication Date
CN1144934A true CN1144934A (zh) 1997-03-12

Family

ID=22967591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN95106550A Pending CN1144934A (zh) 1994-06-03 1995-06-02 具有执行送数指令执行部件的数据处理器及其操作方法

Country Status (6)

Country Link
US (1) US5664215A (zh)
EP (1) EP0686912B1 (zh)
JP (1) JPH09120360A (zh)
KR (1) KR960001989A (zh)
CN (1) CN1144934A (zh)
DE (1) DE69506623T2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102141905A (zh) * 2010-01-29 2011-08-03 上海芯豪微电子有限公司 一种处理器体系结构
CN105117202A (zh) * 2015-09-25 2015-12-02 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5822602A (en) * 1996-07-23 1998-10-13 S3 Incorporated Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6192461B1 (en) * 1998-01-30 2001-02-20 International Business Machines Corporation Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6094716A (en) 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6301654B1 (en) * 1998-12-16 2001-10-09 International Business Machines Corporation System and method for permitting out-of-order execution of load and store instructions
US6349382B1 (en) * 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
EP1050797A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics S.A. Execution of instructions in a computer program
US6629233B1 (en) * 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US6791564B1 (en) 2000-05-05 2004-09-14 Ipfirst, Llc Mechanism for clipping RGB value during integer transfer
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
US6868491B1 (en) 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
GB0023697D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Register assignment in a processor
US20020156792A1 (en) * 2000-12-06 2002-10-24 Biosentients, Inc. Intelligent object handling device and method for intelligent object data in heterogeneous data environments with high data density and dynamic application needs
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー
US7266811B2 (en) * 2001-09-05 2007-09-04 Conexant Systems, Inc. Methods, systems, and computer program products for translating machine code associated with a first processor for execution on a second processor
US7315934B2 (en) * 2002-03-06 2008-01-01 Matsushita Electric Industrial Co., Ltd. Data processor and program for processing a data matrix
US20050015542A1 (en) * 2003-07-15 2005-01-20 Gateway, Inc. Multiple write storage device
US8144156B1 (en) * 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US8745627B2 (en) * 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
US7434032B1 (en) * 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
JP5019022B2 (ja) * 2006-03-20 2012-09-05 日本電気株式会社 データロード方法及びデータ処理装置
GB2442499B (en) * 2006-10-03 2011-02-16 Advanced Risc Mach Ltd Register renaming in a data processing system
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
EP2508982B1 (en) * 2011-04-07 2016-03-30 VIA Technologies, Inc. Control register mapping in heterogenous instruction set architecture processor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8914616B2 (en) 2011-12-02 2014-12-16 Arm Limited Exchanging physical to logical register mapping for obfuscation purpose when instruction of no operational impact is executed
US9201656B2 (en) * 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers
US20140310500A1 (en) * 2013-04-11 2014-10-16 Advanced Micro Devices, Inc. Page cross misalign buffer
JP6344022B2 (ja) * 2014-04-08 2018-06-20 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9733909B2 (en) * 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) * 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11113056B2 (en) * 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4287561A (en) * 1978-03-16 1981-09-01 International Business Machines Corporation Address formulation interlock mechanism
JPH02190930A (ja) * 1988-12-29 1990-07-26 Internatl Business Mach Corp <Ibm> ソフトウエア命令実行装置
EP0495162A3 (en) * 1991-01-16 1994-05-18 Ibm Storage management
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102141905A (zh) * 2010-01-29 2011-08-03 上海芯豪微电子有限公司 一种处理器体系结构
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
CN105117202A (zh) * 2015-09-25 2015-12-02 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器

Also Published As

Publication number Publication date
EP0686912A2 (en) 1995-12-13
KR960001989A (ko) 1996-01-26
DE69506623D1 (de) 1999-01-28
DE69506623T2 (de) 1999-07-22
EP0686912B1 (en) 1998-12-16
JPH09120360A (ja) 1997-05-06
US5664215A (en) 1997-09-02
EP0686912A3 (en) 1997-03-12

Similar Documents

Publication Publication Date Title
CN1144934A (zh) 具有执行送数指令执行部件的数据处理器及其操作方法
Russell The CRAY-1 computer system
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
CN1267819C (zh) 计算机***内部处理指令的装置
CN1161689C (zh) 在超标量处理器中处理装入指令的方法和电路
EP0405489B1 (en) Resource conflict detection method and apparatus included in a pipelined processing unit
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
EP0405495B1 (en) Instruction unit logic management apparatus included in a pipelined processing unit and method therefor
US5790821A (en) Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor
EP0010188B1 (en) Computer instruction prefetch circuit
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
CN1047245C (zh) 采用独立存取中间存储器的超标量处理器***中加强指令调度的方法和***
JPS59501684A (ja) 目的命令ストリ−ムへ殆んど実時間で***するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
JPS6014341A (ja) 基本命令セツト計算機システムにおけるトラツプ割込み方式
JPH02234229A (ja) ソース・リスト、ポインタ・キューおよび結果キュー
CN1099633C (zh) 数据处理指令的执行
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
JP2682812B2 (ja) オペレーションの処理システム及び方法
Schneck Supercomputer architecture
US4620274A (en) Data available indicator for an exhausted operand string
US4598359A (en) Apparatus for forward or reverse reading of multiple variable length operands
EP0378816B1 (en) Production line method and apparatus for instruction execution
US4608633A (en) Method for decreasing execution time of numeric instructions
JP3799423B2 (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
C01 Deemed withdrawal of patent application (patent law 1993)
WD01 Invention patent application deemed withdrawn after publication