CN1227584C - 用于构造一个预调度的指令高速缓存的方法和装置 - Google Patents

用于构造一个预调度的指令高速缓存的方法和装置 Download PDF

Info

Publication number
CN1227584C
CN1227584C CNB008187630A CN00818763A CN1227584C CN 1227584 C CN1227584 C CN 1227584C CN B008187630 A CNB008187630 A CN B008187630A CN 00818763 A CN00818763 A CN 00818763A CN 1227584 C CN1227584 C CN 1227584C
Authority
CN
China
Prior art keywords
instruction
instruction vector
vector
scheduling
vector table
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 - Fee Related
Application number
CNB008187630A
Other languages
English (en)
Other versions
CN1433538A (zh
Inventor
G·S·谢菲尔
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 CN1433538A publication Critical patent/CN1433538A/zh
Application granted granted Critical
Publication of CN1227584C publication Critical patent/CN1227584C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • 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
    • 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
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)

Abstract

一种在一个计算机处理器中调度指令的方法。该方法包含取出指令以创建一个有序的指令缓存,以及把来自于该指令缓存的指令调度到在一个指令向量表中的指令向量内的指令槽里。然后把指令向量从该指令向量表发送到一个预调度的指令高速缓存,然后并行地发送到一个指令发布单元。

Description

用于构造一个预调度的指令 高速缓存的方法和装置
发明技术领域
本发明涉及计算机处理器体系结构领域。尤其是本发明公开了一种用于调度计算机指令的方法和装置。
发明的背景技术
早期的计算机处理器以原始程序次序一次一个地执行计算机指令。具体地说,每条计算机指令被载入到处理器中然后被执行。在执行之后,计算机指令的结果然后被写入到一个寄存器或者主存储器里。在执行一条计算机指令之后,下一条连续的计算机指令然后被载入到处理器中并且被执行。
为了提高性能,引入了流水线计算机处理器。流水线计算机处理器同时处理多条计算机指令。然而,早期的流水线计算机处理器以原始程序次序执行指令。流水线处理器通过把指令的处理分成一系列诸如指令取出、指令解码、执行、和结果写回的流水线阶段来进行操作。该处理器然后被分成一组连接的流水线阶段,其中每个流水线阶段执行一个指令处理流水线阶段。在先前描述的示例中,该处理器将被分成一个指令取出阶段、一个指令解码阶段、一个执行阶段、和写回阶段。在每个时钟周期内,每个处理阶段处理一条指令然后把它传给下一个连续处理阶段。因此,该处理器以原始程序次序同时处理几条指令。在一个理想的单流水线处理器中,该处理器将在每个时钟周期内完成一条指令的执行。
为了进一步提高处理器性能,已经引入了超标量处理器。超标量处理器使用并行流水线阶段一次处理一条以上的指令。通过并行执行指令,超标量处理器利用了在指令中存在的并行性优点。当对于源操作数来说,连续的计算机指令不取决于彼此时,就存在并行性。这些不相关的连续指令能够被并行执行而没有任何数据冲突。
设计超标量处理器的一个困难方面是并行地查找和调度指令,以便没有数据相关性冲突并且有足够的处理器资源可用。
发明概述
依据一个实施例,提供了一种在一个计算机处理器中调度指令的方法。该方法包含:取出指令以创建一个有序的指令缓存,以及把来自于该有序指令缓存的指令调度到一个指令向量表中的指令向量内的指令槽里。然后把指令向量从指令向量表发送到一个预调度的指令高速缓存,并且并行地发送到一个指令发布单元。
附图简要说明
图1说明了一个现有技术的无序计算机处理器。
图2说明了依据一个实施例、带有一个预调度的指令高速缓存的处理器体系结构的一个框图。
图3说明了一个流程图,它描述了依据一个实施例、由一个具有一个预调度指令高速缓存的处理器执行的处理过程。
图4A说明了一个调度的指令向量表的一个实施例。
图4B说明了在来自于图4A的指令向量表中的每个指令槽的内容的一个实施例。
图5说明了一个预调度指令向量表的一个替换实施例。
图6说明了一个存储指令以及一个伴随的相对调度时戳的高速缓冲存储器。
最佳实施例的详细说明
这里公开了一种用于在一个计算机处理器中提供一个预调度的指令高速缓存的方法和装置。在下面的描述中,为了说明起见,阐述了具体的术语以提供对本发明的一个彻底了解。然而,对于本领域技术人员来说,显然这些细节不是实践本发明所要求的。
图1说明了一个现有技术的无序超标量计算机处理器。在图1的计算机处理器中,一个指令取出单元110从一个第一级本地指令高速缓存105或者一个主存储器单元103中取出指令。如果想要的指令是在第一级本地指令高速缓存105中,则指令取出单元110从第一级本地指令高速缓存105中取出指令。否则,指令取出单元110从主存储器单元103中取出想要的指令。在某些实施例中,可以给出一个第二级高速缓存作为该主存储器的替代物。
取出的指令被传递到一个解码该取出指令的解码器120。该解码的指令然后被传递到一个分配器/重命名器,该分配器/重命名器在一个预留位置分配用于指令的入口,并且使用一个寄存器堆和寄存器映射来执行寄存器重命名。
一个调度单元140然后调度这些指令用于执行。该调度单元140选择将在处理器的任意给定周期执行的指令。从该预留位置中把调度的指令与来自于寄存器堆的操作数一起发送到执行单元用于执行。
在每个时钟周期内,调度单元140选择一组指令以发送到该执行单元。用于所选指令的源操作数在发送时期是可用的(在该寄存器堆中)或者将是可用的(来自于一个执行单元的结果)。此外,执行资源对于所选指令应当是可用的。在大多数的处理器中,该独立的执行单元不相同,因此每个执行单元只能处理一定类型的指令。因此,该调度单元140确定需要的执行单元类型是否将是可用的。最后,在一个实施例中,调度单元140选择将导致程序执行更快的指令。因而,在一个实施例中,这通过首先选择最早可用的指令来完成。因此,该调度单元140试图以一种先进先出(FIFO)的方式服务指令。
由于这些困难的限制以及通常一个调度单元140必须作出决定的短时间周期,所以大多数的调度器不能以最优方式调度指令。因此,虽然在计算机目标代码中有更精细的并行性可用,但是调度单元一般仅仅利用有限数量的并行性。
一个预调度的指令高速缓存处理器体系结构
在一个实施例中,在指令处理流水线中,一个指令高速缓存已经被放置在一个指令调度器之后。通过把该指令高速缓存放置在指令调度器之后,该指令调度器能够创建“预调度的”指令向量并且在该指令高速缓存中存储该预调度的指令向量。一个指令发布单元然后能够把来自于指令调度器或者来自于该预调度的指令高速缓存的预调度指令向量供给该执行单元。
图2说明了依据一个实施例的处理器体系结构的一个框图。在图2的顶端是最初从中取出指令的存储器203。存储器203可以包含标准的主存储器,或者存储器203可以包含主存储器和一个集成的指令高速缓存。一个指令取出单元210从该存储器203中取出要被执行的指令。为了在一个实施例中确定该指令执行路径,指令取出单元210包括一个分支预测单元207。分支预测单元207预测该程序的一个执行路径并且沿着预测的执行路径取出指令。因此,该指令取出单元210依据预测的执行路径,取出一段连续的有序指令流。
指令取出单元210把取出的指令传递到一个指令解码器220。指令解码器220在该处理器指令中进行分离并且确定必要的资源。在一个实施例中,该指令解码器220把该处理器指令翻译成小的微操作代码(微操作码)。然后该微操作码由该处理器流水线的剩余部分处理。
指令解码器220把该解码的指令传递到指令调度器240。指令调度器240以原始程序次序把该解码的指令放置到一个缓存241里。然后指令调度器从有序缓存241中选择指令,以放置在一个调度指令向量表247中的多个指令向量中的一个内。因此,该有序缓存241为调度提供一组候选的指令。该调度的指令向量表247包含多个指令槽,其中每个指令槽都与一个匹配的执行单元相关联。由于这些执行单元不是全部相同的,所以该调度器为对应于相应指令一个操作的相应执行槽调度指令。
当调度器240不能再在该调度的指令向量表247中找到一个空的指令槽时,则该调度器240发送最老的执行向量(例如,最近最少接收一条指令的指令向量)。在一个实施例中,调度器240并行地发送该最老的执行向量到预调度的指令高速缓存250和一个指令发布单元260。
在一个实施例中,该指令发布单元260发布指令到一组执行单元。由于这些指令已经被预调度了,所以该指令发布单元260能够简单地发送一个预调度的指令向量到该执行单元。为了增加执行速度,指令发布单元260能够发布从调度器240线性接收的预调度指令向量,或是指令发布单元260能够发布从预调度的指令高速缓存250中获得的预调度指令向量。
在一个实施例中,执行单元执行指令并且在一个推测性状态缓存中存储该状态。当分支预测被验证时,该推测性的状态被传送到一个真实的处理器状态缓存里。当一个分支被错误预测时,在该错误预测之后产生的推测性状态被丢弃了。在一个替换实施例中,该推测性状态和真实处理器状态可以占用同一个缓存,而且一个真实状态指针映射能用于指示当前的真实状态。
图3说明了由一个依据一个实施例构造的处理器执行的指令处理过程的流程图。最初,一个指令取出单元在步骤310取出一个指令流。为了取出一个连续的指令流,指令取出单元执行分支预测。该指令取出单元的输出被放置到在指令调度器中的一个有序指令缓存里。这个缓存还可以被称为指令缓存,或者有序的指令缓存。
接下来,在步骤320,一个指令调度器把来自于该指令缓存的有序指令调度到指令向量表中的指令槽里。指令调度器通过考虑数据相关性、可用的执行资源、和/或执行延迟时间来调度指令组。
由于指令调度器能够从一个指令缓存中选择,所以该指令调度器能够从指令代码中提取并行性。此外,由于一个指令高速缓存驻留在指令调度器之后,所以该指令高速缓存能够提供指令到执行单元,因此为复杂的指令调度任务提供了附加的带宽。
当如在步骤340中所述、调度器试图调度一条指令而且确定它不能把指令放置到该指令向量表中一个可用的指令槽里时,则该调度器把最老的指令向量传递到一个指令发布单元和一个预调度的指令高速缓存中。结果,一个新的空指令向量可以用来使用。在一个实施例中,该指令调度器试图把指令放置到最老的指令向量里,因此最小化延迟。
参见步骤350,该指令发布单元选择指令向量以发布到执行单元。在没有分支的代码部分内,指令发布单元可以发布从指令调度器接收的连续指令向量。然而,举例来说,当在该程序代码中出现一个循环时,指令发布单元能够选择来自于预调度指令高速缓存中的预调度的指令向量。由于指令发布单元将经常发布来自于该预调度指令高速缓存的指令,所以指令调度器不需要以执行单元的完全执行速度产生指令向量。
图2的调度指令向量表247可以以许多不同的方式实现。在这里描述了两种不同的可能实施例。
图4A说明了实现一个调度的指令向量表的第一种方法。在图4A的实施例中,调度指令向量表中的每个指令向量(行)包含用于每个执行单元的固定指令槽。在图4A的实施例中,有五个执行单元,因此有五个指令槽:EU1、EU2、EU3、EU4、和EU5。在替换实施例中,在一个指令向量中的指令槽数目能够变化而没有背离本发明的范围。
指令调度器试图调度一条指令到所有的指令槽里,但是数据相关性和执行延迟可以阻止这样的优化调度。当调度器找不到一条指令以放置到一个指令向量的一个指令槽里时,在发送该指令向量之前那个指令槽充满了一个“空操作”代码。做为选择,当一行被空出时,在该行中的所有槽用NOP进行初始化。
图4B说明了在图4A的指令向量表中的每个指令槽的内容的一个可能实施例。参见图4B,每个指令槽包含一个指令代码、一个第一源操作数、一个第二源操作数、一个结果目的地、以及一个相对的程序计数器(PC)值。指令代码定义了要被执行的操作,而源操作数是在其上执行操作的数据。结果目的地指定受该操作影响的寄存器或者标记。在一个实施例中,相对程序计数器(PC)指定该指令相对于用于该指令向量的一个程序计数器值的位置。该相对程序计数器(PC)可以用于确定何时能够确认推测性的结果。
再次参考图4A,在一个替换实施例中,除了指令槽之外,每个指令向量还可以包含两个字段:一个等待值和/或一个程序计数器(PC)递增值。该等待值用来确定在发布下一个指令向量之前该指令发布单元应当延迟多长时间。考虑执行延迟和数据相关性,该指令发布单元在发布下一个指令向量之前有时将需要等待一个或多个周期。作为在一个实施例中使用该等待值的结果,存储一个具有空槽的指令向量以提供一个延迟的需要被减少了。
在一个实施例中,程序计数器(PC)递增值可以用来确定在该指令向量已经被执行之后要把一个程序计数器值递增多少。由于在一个实施例中,处理器体系结构不以原始程序次序执行指令而且在每个周期内可以执行多个指令,因此没有一个严格的线性程序计数器值。然而,一个程序计数器值能用于确定当前程序执行的一个近似位置。
考虑包含指令5、6、7、19、和23(来自于原始程序次序)的一个指令向量示例。进一步考虑,直到7的所有指令已经被调度了。在该向量已经被成功执行之后,相应的指令指针能够前进到7。结果,如果在执行该指令向量中的指令期间发生一个异常,则该程序计数器值可用于确定继一个异常处理器完成之后从哪里再继续执行指令。
图5说明了一个预调度指令向量表的一个辅助替换实施例。在图5的预调度指令向量表中,没有固定的指令槽。相反,图5的实施例使用一个标记来确定是否有一条指令包含在用于每个执行单元的相应指令向量中。如果用于一个执行单元的标记被设置为零,则没有指令用于那个特定执行单元。如果用于一个执行单元的标记被设置为1,则接下来的位指定一条用于那个特定执行单元的指令。
例如,参考图5的第二行,用于执行单元1的执行单元标记被设置为1,从而使得用于执行单元1的一条指令紧接着该第一个执行单元标记。在用于执行单元1的指令之后,有一个用于执行单元2的标记。在这个实例中,用于执行单元2的标记被设置为零,因此没有用于执行单元2的指令。下一位是一个用于执行单元3的执行标记。由于用于执行单元3的执行标记被设置为1,所以用于执行单元3的一条指令紧接着用于执行单元3的执行标记。通过使用标记来确定是否存在一条用于一个特定执行单元的指令,可以减少该指令向量表/高速缓存的大小。在替换实施例中,一个标记可以是零来指示存在一个用于一个相应执行单元的操作,而没有背离本发明的范围。
此外,一个替换实施例可以部分预调度指令,而不是全部预调度指令。具体地说,一个指令调度单元被放置在一个指令高速缓存之前,而且该指令调度单元做出调度建议。然后指令与该调度建议一起被保存在指令高速缓存中。该调度建议能够以与每条指令相对关联的形式创建。
图6说明了一个依据该替换实施例的示教构造的高速缓冲存储器。在图6的高速缓冲存储器中,每条指令与一个伴随的相对调度时戳一起被存储,该时戳能由靠近该执行单元的第二调度器使用用于最后的调度。在一个实施例中,能够基于诸如正确的分支预测可能性或者高速缓存命中/失败可能性这样的因素来计算该相对的调度时戳。做为选择,第二个调度器可以以一种取决于分支错误预测和意外延迟的不同方式来调度指令。
上文已经描述了一种用于提供预调度的指令高速缓存的方法和装置。应当考虑到可以由一个本领域普通技术人员对本发明单元的材料和布置进行改变和修改而没有背离本发明的范围。
例如,如上所述的方法,包括该替换实施例,能够被实现为在一个机器可读的介质上表示的、由一个处理器执行的指令。该机器可读的介质能够包括一个用于以一种可由一个机器(例如,计算机)读取的形式存储或者传输信息的机制。例如,机器可读介质包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器设备;电的、光的、声的或者其它形式的传播信号(例如,载波、红外信号、数字信号、等)。

Claims (14)

1.一种在计算机处理器中调度指令的方法,所述方法包含:
取出指令到一个有序的指令缓存里;
从所述有序的指令缓存中调度指令到在一个指令向量表的指令向量内的指令槽里;以及
从所述指令向量表发送指令向量到一个预调度的指令高速缓存,并且并行地发送到一个指令发布单元。
2.如权利要求1所述的方法,其特征在于还包括以下步骤:对指令向量表被填满而作出响应,以先进先出的顺序发送来自于所述指令向量表的指令向量。
3.如权利要求1所述的方法,其特征在于:所述指令向量表包含具有固定指令槽的指令向量。
4.如权利要求1所述的方法,其特征在于:所述指令向量表的所述指令向量包含一个等待值,该值表示在发布一个后继指令向量之前出现的一个延迟。
5.如权利要求1所述的方法,其特征在于:所述指令向量表的所述指令向量包含一个程序计数器递增值。
6.如权利要求1所述的方法,其特征在于:在所述指令向量表中的一个指令向量的每个槽都包含一个标记,其表示用于一个相应执行单元的一个操作是否包含在该相应的指令向量中。
7.如权利要求1所述的方法,其特征在于:在所述指令向量表中的一个指令向量的每个槽都包含一个用于后续调度的调度建议。
8.一个处理计算机指令的装置,所述装置包含:
一个指令取出单元,用来取出指令并且把所述指令放置到一个有序的指令缓存里;
一个包含多个指令向量的指令向量表,所述指令向量具有两个或多个用于要被并行执行的指令的槽;以及
一个调度器,把指令从所述有序指令缓存调度到所述指令向量表里,所述调度器把来自于所述指令向量表的指令向量发送到一个预调度的指令高速缓存,并且并行地发送到一个指令发布单元。
9.如权利要求8所述的装置,其特征在于:对指令向量表被填满而作出响应,所述调度器以先进先出的顺序发送来自于所述指令向量表的指令向量。
10.如权利要求8所述的装置,其特征在于:所述指令向量表包含具有固定指令槽的指令向量。
11.如权利要求8所述的装置,其特征在于:所述指令向量表的所述指令向量包含一个等待值,该值表示在发布一个后继指令向量之前出现的一个延迟。
12.如权利要求8所述的装置,其特征在于:所述指令向量表的所述指令向量包含一个程序计数器递增值。
13.如权利要求8所述的装置,其特征在于:在所述指令向量表中的一个指令向量的每个槽都包含一个标记,其表示用于相应执行单元的一个操作是否被包含在该相应的指令向量中。
14.如权利要求8所述的装置,其特征在于:在所述指令向量表中的一个指令向量的每个槽都包含一个用于后续调度的调度建议。
CNB008187630A 1999-12-03 2000-10-09 用于构造一个预调度的指令高速缓存的方法和装置 Expired - Fee Related CN1227584C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/454,266 US6351802B1 (en) 1999-12-03 1999-12-03 Method and apparatus for constructing a pre-scheduled instruction cache
US09/454,266 1999-12-03

Publications (2)

Publication Number Publication Date
CN1433538A CN1433538A (zh) 2003-07-30
CN1227584C true CN1227584C (zh) 2005-11-16

Family

ID=23803978

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008187630A Expired - Fee Related CN1227584C (zh) 1999-12-03 2000-10-09 用于构造一个预调度的指令高速缓存的方法和装置

Country Status (8)

Country Link
US (1) US6351802B1 (zh)
KR (1) KR100483463B1 (zh)
CN (1) CN1227584C (zh)
AU (1) AU7875700A (zh)
DE (1) DE10085273B4 (zh)
GB (1) GB2374698B (zh)
HK (1) HK1047485B (zh)
WO (1) WO2001040935A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6944750B1 (en) * 2000-03-31 2005-09-13 Intel Corporation Pre-steering register renamed instructions to execution unit associated locations in instruction cache
US6662293B1 (en) * 2000-05-23 2003-12-09 Sun Microsystems, Inc. Instruction dependency scoreboard with a hierarchical structure
US6687845B2 (en) * 2000-12-20 2004-02-03 Bull Hn Information Systems Inc. Fault vector pointer table
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US6965962B2 (en) * 2002-12-17 2005-11-15 Intel Corporation Method and system to overlap pointer load cache misses
US20050149680A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Fast associativity collision array and cascaded priority select
US7181575B2 (en) * 2004-09-29 2007-02-20 Hewlett-Packard Development Company, L.P. Instruction cache using single-ported memories
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
US7454597B2 (en) * 2007-01-02 2008-11-18 International Business Machines Corporation Computer processing system employing an instruction schedule cache
US20090210664A1 (en) * 2008-02-15 2009-08-20 Luick David A System and Method for Issue Schema for a Cascaded Pipeline
US8069376B2 (en) * 2009-05-20 2011-11-29 Intel Corporation On-line testing for decode logic
KR101236562B1 (ko) 2010-01-08 2013-02-22 한국과학기술연구원 캐시 프로파일을 이용한 향상된 소프트웨어 파이프라인 스케줄링 방법
US10061746B2 (en) 2014-09-26 2018-08-28 Intel Corporation Instruction and logic for a vector format for processing computations
US11256511B2 (en) * 2019-05-20 2022-02-22 International Business Machines Corporation Instruction scheduling during execution in a processor
CN112602094A (zh) * 2020-03-11 2021-04-02 深圳市大疆创新科技有限公司 数据处理装置、数据处理方法以及加速器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
DE69325785T2 (de) 1992-12-29 2000-02-17 Koninklijke Philips Electronics N.V., Eindhoven Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
EP0652509B1 (en) * 1993-11-05 2000-05-10 Intergraph Corporation Instruction cache associative cross-bar switch
GB2293670A (en) 1994-08-31 1996-04-03 Hewlett Packard Co Instruction cache
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
JP3597540B2 (ja) * 1995-06-01 2004-12-08 富士通株式会社 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
US5923862A (en) 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6212623B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
DE69938621D1 (de) 1999-05-03 2008-06-12 St Microelectronics Sa Befehlausgabe in einem Rechner

Also Published As

Publication number Publication date
DE10085273T1 (de) 2003-10-09
DE10085273B4 (de) 2007-04-12
KR20020087392A (ko) 2002-11-22
KR100483463B1 (ko) 2005-04-15
GB0214664D0 (en) 2002-08-07
HK1047485A1 (en) 2003-02-21
GB2374698B (en) 2003-12-24
GB2374698A (en) 2002-10-23
CN1433538A (zh) 2003-07-30
US6351802B1 (en) 2002-02-26
AU7875700A (en) 2001-06-12
HK1047485B (zh) 2004-09-10
WO2001040935A1 (en) 2001-06-07

Similar Documents

Publication Publication Date Title
CN1227584C (zh) 用于构造一个预调度的指令高速缓存的方法和装置
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
KR100230552B1 (ko) 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US5790822A (en) Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
US5519864A (en) Method and apparatus for scheduling the dispatch of instructions from a reservation station
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
CA2039640C (en) Scalable compound instruction set machine architecture
US5867684A (en) Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction
CN1126027C (zh) 处理不同宽度的命令的vliw处理器
US5615385A (en) Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US6289442B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US6237077B1 (en) Instruction template for efficient processing clustered branch instructions
CN1230740C (zh) 数字信号处理装置
JP2001306324A (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
GB2343270A (en) Branch instruction processing in a processor
CN101763251B (zh) 含有译码缓冲装置的多线程的微处理器
US5978900A (en) Renaming numeric and segment registers using common general register pool
KR101466934B1 (ko) 동시, 비순차적 디스패치를 사용하는 분산 디스패치
US7562206B2 (en) Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions
CN1545026A (zh) 依据确定延迟的动态vliw指令调度方法
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
CN118860499A (zh) 指令处理设备、系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20051116

Termination date: 20121009