CN100541421C - 由专用指令配置的处理器和用于这种处理器的分配方法 - Google Patents

由专用指令配置的处理器和用于这种处理器的分配方法 Download PDF

Info

Publication number
CN100541421C
CN100541421C CNB028235215A CN02823521A CN100541421C CN 100541421 C CN100541421 C CN 100541421C CN B028235215 A CNB028235215 A CN B028235215A CN 02823521 A CN02823521 A CN 02823521A CN 100541421 C CN100541421 C CN 100541421C
Authority
CN
China
Prior art keywords
instruction
processor
dispatch node
performance
performance element
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
CNB028235215A
Other languages
English (en)
Other versions
CN1596396A (zh
Inventor
F·佩斯索拉诺
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.)
Nytell Software LLC
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1596396A publication Critical patent/CN1596396A/zh
Application granted granted Critical
Publication of CN100541421C publication Critical patent/CN100541421C/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, 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Dc-Dc Converters (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Abstract

处理器(100)有用于存储供多个执行单元(160)执行的指令的多个寄存器(120)。这多个寄存器(120)通过分配装置(140)与多个执行单元(160)相连。分配装置(140)有与多个执行单元(160)相连的多个分派单元(144)以及一个连接多个执行单元(120)与多个分派单元(144)的可重新路由的网络—例如数据通信总线(142)。数据通信总线由控制装置(148)控制。分派单元(144)被安排用来检测指令流中的专用指令,专用指令指示多个执行单元(160)中的一个执行单元(160a、160b、160c、160d)的不活动周期的开始。随后,控制单元(148)被通知,并且,作为检测到专用指令的结果,从多个寄存器(120)到多个分派单元(140)的指令流被重新路由。

Description

由专用指令配置的处理器和用于这种处理器的分配方法
技术领域
本发明涉及一种可由专用指令配置的处理器。
本发明也涉及一种包含这种指令的指令集。
本发明也涉及一种从存储设备向这种可配置处理器的多个执行单元分配指令束的方法。
本发明也涉及一种编译多个包含这种专用指令的指令束的方法。
背景技术
美国专利US 6,219,796公开了一种可由专用指令配置的处理器。
正在发生的对高性能计算的增加的需求已经导致几种解决方案的引入,其中将某种形式的并发处理(例如并行性(parallelism))引入到处理器体系结构。一个广泛使用的实现高性能的概念是指令级并行性的引入,其中,在处理器体系结构中存在多个处理单元,用于或多或少地同时执行多个指令。两个主要概念已经被采纳:多线程概念,其中,一个程序的多个线程是可被处理单元访问的;以及甚大指令字(VLIW)概念,其中,与执行单元的功能对应的指令束存在于指令集中。
与上述概念相关联的一个问题是,并行性的增加导致一些新的问题,例如因大量同时活动的执行单元所引起的电力消耗的增加,以及有关的同时数据通信量的增加。
US6,219,796的VLIW处理器具有已经被设计用来响应专用指令的处理单元,该专用指令例如是至少部分地使相关执行单元省电(powerdown)的SLEEP或REST指令。执行单元被用另一个专用指令(例如WAKE指令或按反转方式操作的第二个SLEEP/REST指令)而再次激活,或者通过接收一个活动的(例如非SLEEP/REST)的指令而再次激活。因此,处理器的活动配置能被VLIW指令流中存在的专用指令修改,导致活动处理器的消耗电力的减少。专用指令被编译程序插入到VLIW中,实现方法是首先检测一个给定功能单元的一个不活动指令段,然后,根据不活动期的延续时间,将不活动指令中的第一条替换为SLEEP或REST指令,并将不活动指令中的最后一条替换为WAKE指令。
现有技术的处理器的一个缺点是,专用指令只被用来关断和接通处理器的一些部分。
发明内容
本发明的一个目的是提供一种在开篇段落中所述的类型的、能够用专用指令以更多方式配置的处理器。
本发明的进一步目的是提供一个在开篇段落中所述的类型的、方便更多方式的配置策略的指令集。
本发明的进一步目的是提供一个在开篇段落中所述的类型的、使得能够利用指令级并行性以更多方式配置处理器的分配方法。
本发明的另一个目的是提供一个在开篇段落中所述的类型的、生成方便更多方式的配置策略的软件代码的编译方法。
本发明由各独立权利要求定义。从属权利要求定义了优选实施方式。
现在,第一个目的的实现,原因在于分配装置被设置成依靠专用指令将多个指令分配给多个执行单元。
专用指令指示一个给定执行单元的空闲周期的开始。通过让分配装置响应专用指令,可以在分配装置评估专用指令后将一个指令流重新路由到其余的活动执行单元。因此,可以将一个给定执行单元的一串空操作(NOP即no-operation)指令从相关联的指令束(即线程或指令字)中去除,并代之以一个单一的专用指令,这是因为,分配单元能将指令重新路由到适当的活动执行单元。这对于降低数据通信的密度特别有好处,因为,要从指令存储器中提取的指令束包含数量大大缩减了的空闲指令,并且,为执行一个与这些指令相关联的程序而需要从存储器提取的次数更少。这导致更小的电力消耗以及改善的处理器性能,因为,费时的指令存储器访问的次数减少了。
处理器最好进一步包含多个用于存储多个指令的寄存器,这些寄存器与分配装置相连。
这种寄存器的存在便于指令缓存。因此,能实现数据传输的更大的灵活性,这有助于处理器性能的提高。
在最佳实施例中,分配单元包含:多个用于将多个指令分配给多个执行单元的分派(dispatch)节点,多个分派节点中的每个分派节点被安排用来提取和评估多个寄存器中的一个目标寄存器中的指令;响应多个分派节点的控制装置;以及,响应控制装置而将多个寄存器文件与多个分派节点相连接的连接装置。
可配置的连接装置的引入,便于通过分派节点的任何一个访问连接到该连接装置的所有寄存器。控制装置记录由分派节点对一个专用指令的检测,并能相应地调整从寄存器去往分派节点的指令流。因此,可以将存储在一个寄存器中的指令分配给多个执行单元,这也意味着一个被从指令存储器中提取的指令束不必与对应的指令源相匹配。事实上,单一的指令束可包含要被单一的执行单元在不同的时钟周期中执行的指令。
如果在评估专用指令后多个分派节点中的一个分派节点至少部分被去激活,则是最佳实施例的一个优点。
专用指令可起着相关联分派节点的一个去激活触发器的作用。由于专用指令发信号指示用于与分派节点相关联的执行单元的一个空闲周期,故分派节点本身也进入一个空闲周期。因此,该节点可至少部分地被关断(switch off),这对电力消耗而言是有益的。例如,分派单元剩下的唯一活动是监视分派单元处于不活动状态的时钟周期数,以便在适当时刻重新激活自己。
如果分派节点被安排成用来在评估专用指令后去激活多个执行单元中的一个执行单元,则这是最佳实施例的另一个优点。
由于专用指令指示用于一个给定执行单元的一个不活动周期,故这个执行单元能被分派单元关断。这就导致处理器的电力消耗的进一步降低。
如果在从控制装置接收到一个重新激活信号后分派节点被重新激活,则这是最佳实施例的另一个优点。
分派单元不用监视其自己处于不活动状态的时钟周期数来确定适当的重新激活时刻,也能被控制装置重新激活。这样,分派单元就能被完全关断,因为它们不必跟踪自己的重新激活。
如果控制装置被安排成用来响应来自多个执行单元中的一个执行单元的信号而生成重新激活信号,则这是最佳实施例的另一个优点。
这在分派节点是由于像一个分支指令那样的条件表达式而被关断的情况中特别有益;在接到执行单元的表明条件被满足的信号后,控制装置能重新激活相应的分派单元。这例如有利于使用含有很少冗余指令的紧凑指令束来进行循环执行。
如果控制装置包含多个导线,多个导线中的一个导线将多个分派节点中的一个分派节点连接到一个评估器;并且,控制装置还包含一个响应评估器而向多个分派节点中的一个活动分派节点提供目标寄存器选择信息的控制单元,则这是最佳实施例的另一个优点。
当分派单元检测到一个专用指令时,它向评估器提供一个检测信号。由评估器收集的检测信号的数目被提供给控制单元,控制单元然后能根据这个数据构造一个偏置(off set),这个偏置被用来将活动的分派单元连接到适当的寄存器。
最佳实施例的连接装置最好包含一个数据通信总线。
数据通信总线的使用能提供寄存器与分派单元之间的快速通信,这有助于设备的高吞吐量性能。
或者,最佳实施例的连接装置包含:与多个寄存器相连的多个多路输出选择器;以及,与多个分派节点相连的多个多路复用器,多个多路输出选择器的每个多路输出选择器与多个多路复用器的每个多路复用器相连。
寄存器通过一组多路输出选择器和多个多路复用器与分派单元连接的优点是,由控制装置对连接装置的控制比较简单,这意味着它能以较低的成本和面积开销(area overhead)实现。
本发明的另一个目的的实现,原因在于指令集进一步包含一种用于控制由分配装置将多个指令向多个执行单元分配的专用指令。
这种专用指令能与按照本发明的处理器一起使用,由此允许指令的重新路由以及使用更紧凑指令束。
本发明的另一个目的的实现,原因在于该分派方法包含在检测到专用指令后从多个执行单元中选择执行单元的步骤。
这种方法允许指令的动态地重新路由指令,这就避免了仅仅为了在只有多个执行单元的一个子集被调度用来执行有用的指令的情况下将一个指令束再定尺度为固定大小而使用空操作指令的需要。
本发明的另一个目的,是通过将第一个空操作指令替换为一个用于由分配装置控制多个指令向多个执行单元进行的分配的专用指令而实现的。专用指令在软件代码模块中的存在,使得按照本发明的处理器中的分配单元能进行指令的重新调度。
如果编译方法包含进一步的从多个指令束中的多个空操作指令中去除剩余的空操作指令的步骤,则这是有益的。
空操作指令从指令束中的去除会产生这样的软件代码模块,其中,每个指令束的有用指令(例如空操作指令以外的指令)的密度增加。
如果编译方法包含进一步的将多个指令束重新组合成另外的多个指令束的步骤,则是另一个优点。将多个指令束重新组合成另外的多个指令束,最好是组合成具有固定大小的束,会降低软件代码模块中指令定序的复杂性。因此,改造后的指令束可含有多个要由一个单一执行单元执行的指令,在评估专用指令后该多个指令能被以适当的顺序分派到该单元。这意味着执行这种代码模块所需的存储器访问次数减少,这有助于降低所涉及的处理器的电力消耗。
如果编译方法包含向专用指令添加指示被去除的空操作指令的数目的信息的步骤,则这是另一个优点。
这使本发明的处理器的分配装置能从专用指令中抽取指示处理器的对应执行单元的不活动周期的信息,这个信息可被用来把处理器的部分去激活那么多的时间。
如果编译方法包含向专用指令添加指示多个空操作指令的存在的原因的步骤,则这是另一个优点。
在处理器的执行单元的不活动周期是由条件事件(例如标记一个循环指令的结束的分支指令的出现)引起的时,这特别有用。该信息可被用来警告分配装置:一个指示条件已经被满足的中断信号将在某个时刻出现,这个信号可被分配装置用来重新激活处理器的被暂时去激活的部分。
附图描述
现在通过参照以下附图的非限定性例子更详细地说明本发明:
图1表示按照本发明的处理器的一部分的一个实施例;
图2表示按照本发明的处理器的一部分的另一个实施例;
图3表示按照本发明的分配方法的流程图;
图4表示按照本发明的编译方法的流程图;
图5表示用按照本发明的编译方法生成的多个指令束的例子。
实施例描述
在图1中,处理器100的一部分有多个与分配单元140相连的寄存器120。分配单元140的输出连接到多个执行单元160。在最佳实施例中,分配单元140有一个数据通信总线142将多个寄存器120连接到多个分派单元144。分派单元144a、144b、144c、144d被安排用来检测指令流中的一个用于标记与分派单元144a、144b、144c、144d相连的执行单元160a、160b、160c、160d的一个空闲周期的开始的专用指令。在图1中,每个分派单元144a、144b、144c、144d与一个执行单元160a、160b、160c、160d相连。
不过要强调的是,并非处理器100的每一个执行单元都必须通过分配单元140与一个寄存器相连;本技术领域的熟练人员将明白,其中只是执行单元的一个子集通过分配单元140与一个寄存器相连的混合配置也是可能的,这并不偏离本发明的教导。这种混合配置在有些执行单元被安排用来执行专门的任务从而使得它们对指令调度问题较不敏感的情况中是有用的。此外,按照规定,选择4个寄存器、分派单元和执行单元的数目仅仅是举例的;可以出现其它数量的这些组件,而不偏离本发明的教导。
数据通信总线142由控制单元148控制。在这里介绍的实施例中,控制单元148通过评估器146和多个导线150连接到多个分派单元144。多个导线150中的每个导线与多个分派单元144中的一个分派单元144a、144b、144c、144d相连。评估器146被安排用来在检测到一个专用指令时接收来自分派单元144a、144b、144c、144d的信号。评估器146收集通过多个导线150提供的信号,向控制单元148提供为了控制适当的寄存器120a、120b、120c、120d与一个活动的分派单元144a、144b、144c、144d的连接所必需的信息。控制单元148能为分派单元144a、144b、144c、144d提供寄存器地址选择信息,但是也可以使用所述技术领域中已知的其它数据访问控制机制。此时要指出的是,对于所属技术领域的那些熟练人员来说,显然,一个单独的评估器146的存在,并不是严格地必要的。评估器146可以被集成在控制器148中,此外,控制器148可以分布在分派单元144a、144b、144c、144d的至少一个上,这并不偏离本发明的范围。
因此,分配单元140被安排用来依赖专用指令把多个指令分配给多个执行单元(160),因为,一个专用指令的检测将导致一个寄存器120a、120b、120c、120d向另一个执行单元160a、160b、160c、160d的重新路由。
控制单元148和多个寄存器120与另一个数据通信总线110相连。另一个数据总线110被用来访问一个未在图中显示的指令存储器;控制单元148控制指令束从指令存储器的提取,被提取的指令束随后被存储在多个寄存器120中。控制单元148和多个寄存器120二者对另一个数据总线110的使用,不应被解释为限制性的,能容易地采用控制单元148和多个寄存器120使用其它通信装置的其它安排,这并不偏离本发明的范围。
优选地,分派单元144a、144b、144c、144d被安排得在一个专用指令的接收和评估后至少部分地被关断,以便实现电力节省。如果专用指令包含关于时钟周期数量的信息,可以用一个图中未予示出的简单比较器电路扩展分派单元144a、144b、144c、144d,以通过监视时钟周期来控制它们自己的重新激活。或者,可以用这样一个比较器来扩展控制单元148,在这种情况下,控制单元148需要得到上述信息才能控制被去激活的分派单元144a、144b、144c、144d的重新激活。这个信息可通过多个导线150提供到控制单元148。重新激活可以通过例如经由数据通信总线142向分派单元144a、144b、144c、144d提供一个重新激活信号而实现。
由于专用指令指示接收的分派单元144a、144b、144c、144d与其相连的执行单元160a、160b、160c、160d的一个空闲周期的开始,故就进一步的电力节省而言,最好将分派单元144a、144b、144c、144d安排得能关断相关联的执行单元160a、160b、160c、160d。这可以例如按以下方式实现:向相关联的执行单元160a、160b、160c、160d提供时钟选通信号或者在异步体系结构中抑制启用(enable)信号;只要分派单元144a、144b、144c、144d至少部分是被关断的,相关联的执行单元160a、160b、160c、160d的时钟就被选通,或者,由于没有“握手”(handshake)请求信号而使相关联的执行单元160a、160b、160c、160d休眠,从而实际停止执行单元160a、160b、160c、160d。一旦分派单元144a、144b、144c、144d再次被重新激活,对相关联的执行单元160a、160b、160c、160d的停止被取消,相关联的执行单元160a、160b、160c、160d再次变成活动的。
可选地,可以使控制单元148响应多个执行单元160。这样做便于在探明一个执行单元160a、160b、160c、160d的一个空闲周期(例如视对一个条件表达式的评估而定的空闲周期)后,对指令进行重新路由。这在用条件表达式来标记循环的结尾的循环执行期间是尤其有益的。一旦条件满足,一个执行单元160a、160b、160c、160d就用信号通知控制单元148,使控制单元148恢复多个寄存器120与多个分派单元144之间原先的路由选择。一般来说,多个寄存器120的内容也将被刷新,这如同一般在执行一个分支指令时的情形一样。该刷新或者可以由控制单元148通过一个未予示出的与多个寄存器120的连接而控制,或者由其它响应多个执行单元160的硬件控制。
此时要强调的是,本发明能被应用于范围广泛的处理器体系结构,例如VLIW或多线程处理器以及同步和异步体系结构都可以采用本发明,所述技术领域的熟练人员显然能容易地想到另外的体系结构。
现在,参照对图1的详细说明对接着的各附图进行说明。除非另外明确指明,否则在图1中介绍的标注号在接着的各附图中有相似的意思。
图2中示出了处理器100的另一个优选实施例。相对于图1中所示的处理器100,数据通信总线142已经被数据通信网络242替代。数据通信网络242有多个多路输出选择器244,,每个多路输出选择器244a、244b、244c、244d与一个寄存器120a、120b、120c、120d相连,并由控制单元148控制。数据通信网络242进一步有多个多路复用器246,每个多路复用器246a、246b、246c、246d与一个寄存器120a、120b、120c、120d相连,并由控制单元148控制。每个多路输出选择器244a、244b、244c、244d都与多个多路复用器246的所有多路复用器相连,由此提供多个寄存器文件120与多个分派节点144之间的完全连接。约定在图2中仅仅明确表示了从多路输出选择器244a到多个多路复用器246的所有多路复用器的连接。这样做只是为了简明,而并非表明多路输出选择器244b、244c、244d没有到多个多路复用器246的所有多路复用器的连接。与图1中所示的实施例的主要区别是,控制单元148不必向每个分派单元144a、144b、144c、144d提供寄存器访问信息。
控制单元148通过向每个多路输出选择器244a、244b、244c、244d和每个多路复用器246a、246b、246c、246d提供适当的控制信号而控制多个寄存器120与多个分派单元144之间的路由选择。要强调的是,控制单元148最好也控制从指令存储器提取要被存储在多个寄存器120中存储的新指令束。因此,提供给多个多路输出选择器244的路由信号也能被用作附随的多个寄存器120的访问允许信号。换言之,仅当多路输出选择器244a、244b、244c、244d从控制单元148接收到一个路由信号时,一个寄存器120a、120b、120c、120d才被访问。
要强调的是,尽管多路输出选择器244和多路复用器246者都出现在图2中,但是可以在数据通信网络242中省略多路输出选择器244或多路复用器246。这并不可取,因为这就把很大的负担加在其余的互连线路的容量负荷上,很容易导致吞吐量性能的恶化。此外,所述技术领域的熟练人员显然知道,在不偏离本发明的教导的情况下,也能采用数据通信网络242的其它已知实现方式。
图3中表示描述关于在像处理器100这样的处理器中分配和重新路由指令的操作方法(modus operandi)的方法300的流程图。第一个步骤310包含从像多个寄存器120那样的指令源中提取像一个指令束那样的第一多个指令。
下一个步骤320涉及通过在向多个执行单元160分派指令之前评估多个指令中的指令而检测专用指令。检测到这样一个指令就预示着一个对应执行单元160a、160b、160c、160d的一个不活动周期,这意味着下一次被提取的多个指令的至少一些指令需要被重新路由。
因此,在步骤330中,分配装置140被重新设置,从而导致执行单元160a、160b、160c、160d与多个寄存器120的重新连接,这导致执行单元160a、160b、160c、160d中的至少一些的指令现在来自不同的存储位置。所述技术领域的熟练人员将明白,步骤330可能要对每个下一次提取的多个指令重复进行。这将在对图5的详细说明中作更详细的解释。
图4中公开了一种用于构造压缩的指令束的编译方法400。在第一个步骤410中,将一个指令映射到多个执行单元160中的一个执行单元160a、160b、160c、160d,并将指令集束成一个指令束。这个步骤一般被一直重复到对软件代码模块的编译至少部分完成。随后,步骤420搜索指令束中由一个执行单元连续执行的多个空操作指令。这样的多个空操作指令表明一个给定的执行单元的一个延长的不活动周期,这为生成更紧凑的软件代码模块提供了机会。
因此,如果检测到这样的多个空操作指令,则在步骤430中通过下述方式修改所述多个指令束:将多个空操作指令中的第一个空操作指令替换为一个表示相关联的执行单元的一个不活动周期的开始的专用指令。
可选地,可以由一个子步骤来扩展步骤430,其中,向专用指令添加信息,以指示被从指令束中去除的空操作指令的数目,即该执行单元被安排处于不活动状态的周期数;或者,通过向专用指令添加关于导致执行单元160a、160b、160c、160d的不活动周期的出现的事件的信息例如一条分支指令或另一个条件指令而向专用指令添加信息。
在下一个步骤440中,从多个指令束中去除多个空操作指令中的剩余的空操作指令,接着在步骤450中,将多个指令束重新组合成另外的多个指令束,这另外的多个指令束中的每个指令束具有固定大小。尽管步骤420至440可以被一直重复到与一个执行单元160a、160b、160c、160d的延长的不活动周期相关联的多个空操作指令都确实被从软件代码模块中去除为止,这最好是在单一的周期中通过在步骤440和450被执行之前重复步骤420、430而完成(见下页)。对于所述技术领域的熟练人员来说,显然,在步骤450中构造的指令束的至少一些可包含用于某个单一执行单元的多个指令。
这可在图5中看到,图5给出了图4中所说明的编译方法的示例性执行。因此,图5回头参照图4的详细说明。软件代码模块510含有5个要在处理器100上执行的指令束510a-e。软件代码模块510是在编译方法400的步骤410中生成的,含有4列指令;最左列被安排在执行单元160a上执行,第二列被安排在执行单元160b上执行,第三列是被安排在执行单元160c上执行的,最右列被安排在执行单元160d上执行。软件代码模块510中存在两类指令:有用的指令(标记为INSx,x为正整数)和空操作指令(标记为NOP)。
软件代码模块510含有多个由一个执行单元160a、160b、160c、160d连续执行的空操作指令:第一个始于指令束150a中用于执行单元160c的一个NOP指令;第二个始于指令束150c中用于执行单元160b的一个NOP指令。现在,编译方法400的步骤420-450的执行会产生一个由修改的指令束520a-e组成的中间软件代码模块520。在指令束520a中,用于执行单元160c的第一多个空操作指令已经被去除,并被用一个专用指令D.INS代替。因此,软件代码模块520的有用指令的密度已经变得高于软件代码模块510的有用指令的密度,尽管各列指令不再与它们在处理器100中的目的地相匹配,而必须由分配装置140根据所插入的指令D.INS进行重新调度。在下一步中,步骤420-440被重复,以去除第二多个空操作指令。现在这更加困难,因为,NOP指令不再位于单一的列中。因此,最好在代码压缩之前,即在执行步骤440和450之前,重复步骤420和430,一直到所有的多个目标空操作指令都被找到为止。
第二多个空操作指令的去除以及随后的代码压缩会产生由指令束530a-d组成的软件代码模块530。注意,指令束530d也有合适的大小;最右列的三个点只是表明位于那里的指令或者可以是个空操作指令、或者可以是个有用指令、或者可以是个专用指令。对于所述技术领域的熟练人员来说,显然,指令束530a-d各含有多个用于一个单一执行单元160a、160b、160c、160d的指令。因此,连接装置142、242的重新设置一般要进行若干次,才能正确地分配一个指令束中的所有指令。换言之,检测到一个专用指令一般会导致由分配装置140进行的多次重新设置。
应当注意的是,上述实施例解释而不是限制本发明,所述技术领域的熟练人员在不偏离随附的权利要求书的范围的情况下将能够设计出许多替代性实施方案。在权利要求中,任何位于括号之间的标注符号都不应被解释为对权利要求的限制。词语“包含”并不排除权利要求中所列举的以外的组件或步骤的存在。组件的前导词“一个”并不排除多个这种组件的存在。本发明可以通过包含若干不同组件的硬件来实现,以及通过一个适当编程的计算机来实现。在枚举若干装置的装置权利要求中,这些装置中的一些能由一个和同一件硬件体现。如果某些措施是在互相不同的从属权利要求中被陈述的,那并不表明不能有效地利用这些措施的某种组合。

Claims (11)

1.可由专用指令配置的处理器(100),该处理器包含:
多个执行单元(160),用于执行多个指令;
分配单元(140),用于向多个执行单元(160)分配该多个指令;
其特征在于,分配单元(140)被安排用来根据专用指令向将多个指令重新路由到多个执行单元。
2.如权利要求1所要求的处理器(100),其特征在于,进一步包含用于存储该多个指令的多个寄存器(120),该多个寄存器(120)与分配装置(140)相连。
3.如权利要求2所要求的处理器(100),特征在于,分配装置(140)包含:
多个分派节点(144),用于向多个执行单元(160)分配多个指令,该多个分派节点(144)中的每个分派节点(144a、144b、144c、144d)被安排用来提取和评估多个寄存器(120)中的一个目标寄存器(120a、120b、120c、120d)中的指令。
响应多个分派节点(114)的控制装置(146,148,150);以及
响应该控制装置用于把多个寄存器文件(120)连接到多个分派节点(144)的连接装置(142,242)。
4.如权利要求3所要求的处理器(100),其特征在于,多个分派节点(144)中的一个分派节点(144a、144b、144c、144d)在评估该专用指令后被至少部分地去激活。
5.如权利要求3所要求的处理器(100),其特征在于,多个分派节点(144)中的一个分派节点(144a、144b、144c、144d)被安排用来在评估专用指令后去激活多个执行单元(160)中的一个执行单元(160a、160b、160c、160d)。
6.如权利要求4所要求的处理器(100),其特征在于,在从控制装置(146,148,150)接到一个重新激活信号后,分派节点(144a、144b、144c、144d)被重新激活。
7.如权利要求6所要求的处理器(100),其特征在于,控制装置(146,148,150)被安排用来响应来自多个执行单元(160)中的一个执行单元(160a、160b、160c、160d)而生成重新激活信号。
8.如权利要求3所要求的处理器(100),其特征在于,控制装置(146,148,150)包含:
多个导线(150),该多个导线中的一个导线连接多个分派节点(144)中的一个分派节点(144a、144b、144c、144d)与一个评估器(146);以及
响应评估器(146)的控制单元(148),用于向多个分派节点(144)中的一个活动分派节点(144a、144b、144c、144d)提供目标寄存器选择信息。
9.如权利要求3所要求的处理器(100),其特征在于,连接装置(142)包含一个数据通信总线(142)。
10.如权利要求3所要求的处理器(100),其特征在于,连接装置(242)包含:
与多个寄存器(120)相连的多个多路输出选择器(244);以及
与多个分派节点(144)相连的多个多路复用器(246),多个多路输出选择器(244)中的每个多路输出选择器(244a、244b、244c、244d)与多个多路复用器中的每个多路复用器(246a、246b、246c、246d)相连。
11.向处理器(100)的多个执行单元(160)分配指令的方法(300),该方法包含:
检测(320)一个用于配置所述处理器(100)的专用指令;
分派另一个指令至多个执行单元(160)中的一个执行单元(160a、160b、160c、160d);
其特征在于,在检测到专用指令后,将另一指令从一个执行单元(160a、160b、160c、160d)重新路由到另一个执行单元(160a、160b、160c、160d)。
CNB028235215A 2001-11-26 2002-11-20 由专用指令配置的处理器和用于这种处理器的分配方法 Expired - Fee Related CN100541421C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP01204543.1 2001-11-26
EP01204543 2001-11-26

Publications (2)

Publication Number Publication Date
CN1596396A CN1596396A (zh) 2005-03-16
CN100541421C true CN100541421C (zh) 2009-09-16

Family

ID=8181304

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028235215A Expired - Fee Related CN100541421C (zh) 2001-11-26 2002-11-20 由专用指令配置的处理器和用于这种处理器的分配方法

Country Status (9)

Country Link
US (1) US7472257B2 (zh)
EP (1) EP1451678B1 (zh)
JP (1) JP2005510792A (zh)
KR (1) KR20040064713A (zh)
CN (1) CN100541421C (zh)
AT (1) ATE554441T1 (zh)
AU (1) AU2002348842A1 (zh)
TW (1) TW200409019A (zh)
WO (1) WO2003046712A2 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095715A1 (en) * 2002-12-30 2006-05-04 Koninklijke Philips Electronics N.V. Very long instruction word processor
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7428645B2 (en) * 2003-12-29 2008-09-23 Marvell International, Ltd. Methods and apparatus to selectively power functional units
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867873A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
US7302554B2 (en) 2004-04-22 2007-11-27 Sony Computer Entertainment Inc. Methods and apparatus for multi-processor pipeline parallelism
US20060015855A1 (en) * 2004-07-13 2006-01-19 Kumamoto Danny N Systems and methods for replacing NOP instructions in a first program with instructions of a second program
JP4986431B2 (ja) * 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 プロセッサ
US7549085B2 (en) * 2006-04-28 2009-06-16 Hewlett-Packard Development Company, L.P. Method and apparatus to insert special instruction
US8174532B2 (en) * 2006-12-10 2012-05-08 Apusone Technology Inc. Programmable video signal processor for video compression and decompression
KR101581414B1 (ko) * 2009-02-05 2015-12-30 삼성전자주식회사 전력 소모 감소를 위한 재구성 가능 프로세서 및 그 동작 방법
CN102117197B (zh) * 2011-03-04 2012-08-15 中国电子科技集团公司第三十八研究所 高性能通用信号处理器指令分配装置
US9928094B2 (en) 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
CN106293627B (zh) * 2016-07-27 2019-01-11 珠海市杰理科技股份有限公司 寄存器调用及调用指令编码的方法、装置
JP7208448B2 (ja) * 2019-02-01 2023-01-19 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11829196B2 (en) * 2019-10-22 2023-11-28 Advanced Micro Devices, Inc. Ring transport employing clock wake suppression

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0974894B1 (en) * 1993-11-05 2002-02-27 Intergraph Corporation Instruction cache associative cross-bar switch
US6167503A (en) 1995-10-06 2000-12-26 Compaq Computer Corporation Register and instruction controller for superscalar processor
KR100500002B1 (ko) * 1996-08-27 2005-09-08 마츠시타 덴끼 산교 가부시키가이샤 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서
US5991884A (en) * 1996-09-30 1999-11-23 Intel Corporation Method for reducing peak power in dispatching instructions to multiple execution units
US5951689A (en) * 1996-12-31 1999-09-14 Vlsi Technology, Inc. Microprocessor power control system
EP0924603A3 (en) * 1997-12-16 2001-02-07 Lucent Technologies Inc. Compiler controlled dynamic scheduling of program instructions
US6219796B1 (en) 1997-12-23 2001-04-17 Texas Instruments Incorporated Power reduction for processors by software control of functional units
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
US6826704B1 (en) * 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
JP2002366351A (ja) * 2001-06-06 2002-12-20 Nec Corp スーパースカラ・プロセッサ

Also Published As

Publication number Publication date
US20040268091A1 (en) 2004-12-30
CN1596396A (zh) 2005-03-16
WO2003046712A3 (en) 2003-10-02
ATE554441T1 (de) 2012-05-15
JP2005510792A (ja) 2005-04-21
US7472257B2 (en) 2008-12-30
WO2003046712A2 (en) 2003-06-05
AU2002348842A1 (en) 2003-06-10
TW200409019A (en) 2004-06-01
AU2002348842A8 (en) 2003-06-10
EP1451678B1 (en) 2012-04-18
KR20040064713A (ko) 2004-07-19
EP1451678A2 (en) 2004-09-01

Similar Documents

Publication Publication Date Title
CN100541421C (zh) 由专用指令配置的处理器和用于这种处理器的分配方法
US5717883A (en) Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
CN103348323B (zh) 用于在计算机系统中执行目标程序的方法和系统
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
US5983335A (en) Computer system having organization for multiple condition code setting and for testing instruction out-of-order
Bala et al. Efficient instruction scheduling using finite state automata
CN100533428C (zh) 半导体器件
JPH08227364A (ja) 順序付きマルチスレッド実行方法とその実行装置
US20020035722A1 (en) Interactive instruction scheduling and block ordering
JPH11288373A (ja) コンピュ―タ・システム
JPH05282265A (ja) 自己スケジューリング式並列コンピュータ・システムおよびその方法
EP1131701B1 (en) Multiple job signals per processing unit in a multiprocessing system
US7856625B2 (en) Program conversion device and method
CA2304609A1 (en) Autonomously cycling data processing architecture
US7594097B2 (en) Microprocessor output ports and control of instructions provided therefrom
JP2009175960A (ja) 仮想マルチプロセッサシステム
US20020156999A1 (en) Mixed-mode hardware multithreading
CN102819419A (zh) 指令执行流信息处理系统和装置及方法
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ
Gunther Multithreading with distributed functional units
Dean et al. System-level issues for software thread integration: guest triggering and host selection
KR20030007425A (ko) 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서
US20050228976A1 (en) Microprocessor instruction execution method for exploiting parallelism

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070810

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070810

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NITAI SOFTWARE CO., LTD.

Free format text: FORMER OWNER: KONINKL PHILIPS ELECTRONICS NV

Effective date: 20120321

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120321

Address after: Delaware

Patentee after: Nytell Software LLC

Address before: Holland Ian Deho Finn

Patentee before: Koninkl Philips Electronics NV

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090916

Termination date: 20141120

EXPY Termination of patent right or utility model