CN101720460A - 紧凑指令组编码 - Google Patents

紧凑指令组编码 Download PDF

Info

Publication number
CN101720460A
CN101720460A CN200880022735A CN200880022735A CN101720460A CN 101720460 A CN101720460 A CN 101720460A CN 200880022735 A CN200880022735 A CN 200880022735A CN 200880022735 A CN200880022735 A CN 200880022735A CN 101720460 A CN101720460 A CN 101720460A
Authority
CN
China
Prior art keywords
operand
instruction
decode logic
processor
decoding
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.)
Granted
Application number
CN200880022735A
Other languages
English (en)
Other versions
CN101720460B (zh
Inventor
迈克尔·戴维·梅
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.)
Xmos Ltd
Original Assignee
Xmos Ltd
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 Xmos Ltd filed Critical Xmos Ltd
Publication of CN101720460A publication Critical patent/CN101720460A/zh
Application granted granted Critical
Publication of CN101720460B publication Critical patent/CN101720460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

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)

Abstract

本发明提供了一种用于在处理器中解码指令的解码单元。该解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部。该操作码解码逻辑是可用于使用所述输入部的五位确定操作码,并且操作数解码逻辑可用于从所述输入部的剩余十一位确定三个四位操作数元素,这三个操作数元素的每一个都具有十二个可能二进制值中的一个值。操作数解码逻辑可用于解码十一位的编码组,以确定三个操作数元素中的每一个的第一部分,并可用于逐位读取十一位的逐位组,以确定三个操作数元素中的每一个的第二部分。

Description

紧凑指令组编码
技术领域
本发明涉及用于处理器的编码指令,并且更具体地,但不限于,涉及适于接口应用程序和管理多指令线程的指令格式。
背景技术
可以认为处理器指令由两个部分组成:操作码(opcode)部分和操作数(operand)部分。操作码部分中的操作码定义指令的类型,并当操作码被处理器的执行单元解码时,其引起处理器执行相应的运算(加、减、I/O等)。操作数部分可包含一个或多个操作数说明符(operand specifier)。这些操作数说明符指定处理器的操作数寄存器中的某一个,如果有的话,则操作码所定义的指令在该操作数寄存器上操作。可替换地,或附加地,操作数部分可包含“立即(immediate)”操作数,即是直接包含在指令操作数部分中的操作数,而不是从所指定的寄存器中取出的操作数。如果指令不涉及任何操作数,则不使用操作数部分,或更多的情况是操作数部分被用来编码另外的操作码。
已知指令通常具有预定的大小或格式,则这意味着在设计处理器时必须在操作码的大小和操作数部分的大小之间做出取舍。
当使用小操作码时,则由于操作码位(opcode bit)的有限排列仅能编码有限组的指令。这样的指令组通常仅包括用于执行处理器的基本运算的简单、低级的机器码。就指令数据的每个单位存储较少的运算而言,这导致了较低的代码密度,因为复杂运算必须定义在软件中作为全部的低级指令序列。在一些不常用的处理器中,小操作码可用来编码少量更复杂的指令,借此复杂运算在硬件中被执行并且由专用指令调用。但是有限数量的可用操作码导致仅具有非常具体的可能运算组的处理器。在任何情况下,小操作码限制了指令组的大小,并且因此限制了处理器。然而,使用小操作码也有优点,因为对于操作数在指令中可以有更多的位。
当使用大操作码时,由于有更大数目的操作码位排列,则可编码更多指令类型。因此,处理器设计人员可利用更多种指令类型。然而,其缺点是操作数在指令中可利用的位较少。
因此,可以看出为什么必需使操作码的大小和操作数部分的大小保持平衡。
例如,图1示出了具有十六位i[15:0]的常规指令格式。这十六个指令位中的每一位都从指令寄存器50输入到执行单元的解码逻辑中。解码逻辑包括:操作码解码逻辑70,用于解码指令的四位操作码部分102;以及操作数解码逻辑80,用于由指令的三个相应的操作数部分104、106以及108确定三个四位操作数说明符。根据这种格式,为了指定用于读取源操作数或存储目的操作数的一组十六个操作数寄存器中的任何一个,三个操作数说明符中的每一个都可从零(0000)到十五(1111)之间取值。
这种常规的十六位型指令的问题在于,具有十六个可能的操作数寄存器和三个操作数说明符104、106和108,则每个指令中的十二位i[11:0]被操作数说明符占据。仅剩下四位i[15:12]用于指令操作码102,这样仅允许编码十六个不同指令。克服该问题的现有技术涉及提供受限的操作数说明符(restricted operand specifier)(如仅使用三位的ARM Thumb)或使多数指令仅具有两个寄存器操作数。其它解决方案涉及不用十六位指令格式。然而,由于指令大小不适于以字节数来表示或另外要求不必要的二十四位或三十二位大指令,因此也存在相应的问题。
此外,指令组的复杂性可能影响处理器的速度。因为执行复杂的运算所需的代码较少,所以较大的指令组处理器有时可以比小指令组处理器快。然而,执行单元的速度受到解码最复杂指令的时间限制。因此,如果指令组中存在太多的多余、无用的或不必要的复杂指令,则较大指令组处理器实际上可能较慢。
另外,与大指令组相比,虽然小指令组通常还需要更多的程序存储器并使用更多的操作数寄存器,但是为了解码和执行操作码,小指令组在执行单元中需要较少的硬件逻辑。因此,根据所需要的操作数寄存器、解码逻辑和程序存储器以及特定指令格式,指令组的大小影响到处理器的成本、功耗以及硅面积。
本发明的目的是在指令操作码的大小和指令操作数部分的大小之间找到较好的平衡,并且使用编码方案实现该目的,该编码方案可以有效地将操作码压缩到特定指令长度,同时快速完成解码。本发明的具体目标是找到一个平衡,其用于与外部设备对接(interface)的处理器是有利的。本发明的另一个具体目标是找到一个平衡,其用于管理多个线程的执行的处理器是有利的。
发明内容
根据本发明的一个方面,提供了一种用于在处理器中解码指令的解码单元,该解码单元包括操作码解码逻辑、操作数解码逻辑、以及十六位输入部;其中,操作码解码逻辑是可用于使用输入部中的五位确定操作码,并且操作数解码逻辑由输入部的剩余十一位确定三个四位操作数元素(operand element),这三个操作数元素中的每一个都具有十二个可能的二进制值中的一个;并且操作数解码逻辑可用于解码所述十一位的编码组,从而确定三个操作数元素中的每一个的第一部分,并可用于逐位读取所述十一位的逐位组(verbatim group),以确定三个操作数元素中每一个的第二部分。
本发明人发现通过使用所述的编码部分和逐位部分,这种五位/十一位分割提供用于接口处理器的优异代码密度,并且也可用于处理多线程的处理器。此外,本发明通过使用可快速有效进行解码的指令格式,有利地允许将相对大的指令组压缩为十六位。如下文所描述的另外的实施例提供了改善的代码密度和解码效率。
在各实施例中,编码部分可以是五位,逐位部分可以是六位,每个操作数元素的第一部分可以是两位,并且每个操作数元素的第二部分也可以是两位。
解码单元可包括转换逻辑(switching logic),其用于将所述十一位中至少一位从操作数解码逻辑转移(divert)到操作码解码逻辑,其中该操作码解码逻辑可用于使用所述五位和所述至少一个转移位确定操作码。操作数解码逻辑可用于由所述十一位的剩余位确定至少一个操作数。转换逻辑可被配置成在所述十一位具有未用于编码所述三个四位操作数元素的值的条件下转移所述至少一位。该转换逻辑可被配置成在所述五位具有预定值或预定范围的值的条件下转移所述至少一位。
所述输入部可包括十六位指令寄存器。解码单元的输入部可被配置成用于接收来自六十四位指令缓冲器的指令。
所述操作数元素的至少一个可以是用于从一组十二个操作数寄存器中的任一个指定操作数说明符。三个操作数元素中的每一个都可以包括相应的操作数说明符,每个说明符都用于从所述组中的任一个指定操作数寄存器。这三个操作数元素可包括:一个立即操作数;两个操作数说明符,用于从所述组中任一个分别指定两个操作数寄存器。这三个操作数可以包括三个源操作数。
这三个操作数元素可包括:两个源操作数元素,各自为立即源操作数或用于从所述组中任一个指定相应的源操作数寄存器的源操作数说明符;以及一个目的操作数说明符,用于从所述组中的任一个指定目的操作数寄存器;并且解码单元可用于根据操作码执行相应的指令,包括对源操作数运算和将所述运算结果存储在目的操作数寄存器中。
转换逻辑可用于将所述十一位的一位从操作数解码逻辑转移到操作码解码逻辑;操作码解码逻辑可用于使用输入部的五位和一个转移位确定操作码,且操作数解码逻辑可用于由剩余的十位确定两个四位操作数说明符,各个四位操作数说明符具有十二个可能的二进制值中的一个值,这些值用于由所述组的十二个操作数寄存器组中的任一个指定操作数寄存器;且操作数解码逻辑可用于解码所述十位的编码组,以确定两个操作数说明符中的每一个的第一部分,且逐位读取所述十位的逐位组,以确定两个操作数说明符中的每一个的第二部分。
解码单元可以被配置成用于执行多个线程,每个线程包括一个序列的指令,且至少一个所述解码指令为一个所述序列的组成。所述至少一个指令可以是用于管理一个或多个所述多个线程的调度的线程调度指令。所述处理器可包括多组十二个操作数寄存器,每个组被设置成用来存储与所述线程的相应一个线程相关的操作数。
所述指令的至少一个可以是下列指令之一:设定事件条件指令,用于设定与事件相关的条件;设定条件数据指令,用于设定与事件条件相关的数据;设定矢量指令,用于设定与事件相关的连续点矢量(continuation point vector);源事件使能指令,用于使能事件源产生事件;以及线程事件使能指令,用于使能线程对事件作出反应。
解码单元可用于连接(concatenate)前缀指令(prefix instruction)的操作数和后续执行指令的操作数。
执行单元可包括至少两个并行流水线,被配置成同时并行地执行两个相应的十六位指令,并且每个流水线可包括根据上文所述的任何一种解码单元。执行单元可以以双发射(dual issue)和单发射(single issue)模式使用,其中在双发射模式中,两个流水线同时并行地执行两个相应的指令,并且在单发射模式中,仅其中一个流水线在任意给定时间执行指令。两个流水线可以一起用于执行三十二位指令。
处理器可包括根据上文所描述的任一的解码单元或执行单元,并且处理器可包括多组十二个操作数寄存器,每个组被设置成用于存储与相应的一个所述线程相关的操作数。
处理器可以是在第一外部设备与第二外部设备之间对接的接口处理器。第一外部设备可以是另一处理器,并且第二外部设备可以是外围设备。第一和第二外部设备都可以是其它的处理器。
至少一个所述指令可以是以下列指令之一:输入指令,用于将数据从其中一个所述外部设备输入到所述接口处理器;以及输出指令,用于将数据从所述接口处理器输出到其中一个所述外部设备。
根据本发明的另一个方面,提供了一种使用解码单元在处理器中解码指令的方法,该解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部,所述方法包括:运行操作码解码逻辑,以使用输入部的五位确定操作码;并且运行操作数解码逻辑,以由输入部的剩余的十一位确定三个四位操作数元素,这三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;其中确定三个操作数元素的步骤包括:解码所述十一位的编码组,以确定三个操作数元素中的每一个的第一部分,并且逐位读取所述十一位的逐位组,以确定三个操作数元素中的每一个的第二部分。
根据本发明的另一个方面,提供了一种移动终端,其具有移动应用程序处理器、至少一个外围设备、以及连接在移动应用程序处理器与外围设备之间的接口处理器,该接口处理器具有用于在处理器中解码指令的解码单元,并且解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;其中操作码解码逻辑可用于使用输入部的五位确定操作码,并且操作数解码逻辑可用于由输入部的剩余十一位确定三个四位操作数元素,这三个操作数元素中的每一个都具有十二个可能的二进制值中的其中一个值;并且操作数解码逻辑可用于解码所述十一位的编码组,从而确定三个操作数元素中的每一个元素的第一部分,并逐位读取所述十一位的逐位组,从而确定三个操作数元素中的每一个元素的第二部分。
根据本发明的另一个方面,提供了一种互连处理器阵列,至少一个所述处理器具有用于在解码单元中解码指令的解码单元,该解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;其中,所述操作码解码逻辑可用于使用输入部中的五位确定操作码,并且操作数解码逻辑可用于由输入部中剩余十一位确定三个四位操作数元素,这三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;并且操作数解码逻辑可用于解码所述十一位的编码组,从而确定三个操作数元素中的每一个的第一部分,并逐位读取所述十一位的逐位组,从而确定三个操作数元素中的每一个的第二部分。
根据本发明的另一个方面,提供一种包括用于解码指令的解码单元,该解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位位输入部;其中,所述操作码解码逻辑可用于使用输入部中的五位确定操作码,并且操作数解码逻辑可用于由输入部中的剩余十一位确定三个四位操作数元素,这三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;并且操作数解码逻辑可用于解码所述十一位的编码组,从而确定三个操作数元素中的每一个的第一部分,并逐位读取所述十一位的逐位组,从而确定三个操作数元素中的每一个的第二部分。
根据本发明的另一个方面,提供了一种用于在处理器中解码指令的解码单元,该解码单元包括:十六位输入装置;操作码解码装置,用于使用输入部中的五位确定操作码;操作数解码装置,用于从输入部中的剩余十一位确定三个四位操作数元素,这三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;其中,操作数解码装置用于解码所述十一位的编码组,以确定三个操作数元素中的每一个元素的第一部分,并逐位读取所述十一位的逐位组,从而确定三个操作数元素中的每一个的第二部分。
附图说明
为了更好地理解本发明和说明如何实现本发明,下面以实例的方式参考相应附图,其中:
图1示出了常规的RISC指令格式,
图2示出了接口处理器的示例应用,
图2A示出了接口处理器的另一个示例应用,
图3示出了示例处理器结构,
图4示出了用于这种处理器的示例寄存器结构,
图5示出了第一示例指令格式,
图6示出了第二示例指令格式,
图7示出了第三示例指令格式,
图8示出了第四示例指令格式,以及
图9示出了双指令发射特征的例子。
具体实施方式
作为可以有利地实施本发明的一个应用示例,图2示出了结合移动电话的移动应用程序(mobile applications)处理器2使用的接口处理器14。移动应用程序处理器2需要与多个外围设备8通信。应用程序处理器2包括CPU 4和需要与多个外围设备8c-8l通信的多个端口7。移动应用程序处理器2还包括用于与硬盘驱动器(HDD)8a和SDRAM存储器8b对接的存储控制器6。典型地,接口控制器6和各端口7通过总线3连接至CPU 4。该系统还包括功率控制器10和无线处理器12。
在这个示例中,提供通用端口7a和7b,用于与照相机8c和LCD显示器8d对接;提供通用端口7c用于与麦克风8e、扬声器8f和耳机8g对接;并且提供通用端口7d用于与键盘8h、通用串行总线(USB)设备8i、安全数字(SD)卡8j、多媒体卡(MMC)8k以及通用异步接收器/发射器(UART)设备8l对接。
在图2中,接口处理器14a、14b以及14c被放置在相关端口7的输出端,其中第一接口处理器14a连接在图像设备8c-8d与端口7a-7b之间,第二接口处理器14b连接在音频设备8e-8g与端口7c之间,并且第三接口处理器14b连接在端口7d和多个连接设备8h-8m之间。端口7只需要是通用端口,因为接口处理器14a-14c以下面所述的方式来执行专用显示、音频和连接功能。接口处理器14a具有连接至端口7a和7b的端口22a和22b,以及连接至外围设备8c和8g的端口22c、22d、22e和22f。接口处理器14b和14c具有图2中没有示出的相似端口。
接口处理器典型地涉及:经由接口执行用于传递数据的特定协议;重新格式化数据,包括在并行格式(parallel format)与串行格式(serail format)之间转化数据;以及可能更高级的功能,诸如编码数据、压缩数据或加密数据。
接口处理器的另一个应用是在图2A中所示的多处理器芯片202中作为瓦片(tile)。这种芯片202使用支持芯片202上的各处理器14之间的通信的高性能内连204和芯片间链路(link)206,使得该系统很容易由多个芯片构造。每个处理器14都通过端口22连接至其芯片间链路206和高性能内连204。
有利地,接口处理器14使用根据本发明的指令格式,该指令被优化成用于执行多种接口连接和输入-输出(I/O)指令,这些指令用于在另一处理器2与一个或多个外围设备8之间或在多个处理器之间调停(mediate)。也就是,指令格式提供了用于执行这些操作的数量充足但不多余的操作码,并且相似地,指令格式允许指定数量充足但不多余的操作数或操作数寄存器。指令也快速和有效地进行解码,减少所需的解码逻辑并且允许快速对接。
本发明指令格式的另一个有利特征是管理线程的能力。每个处理器具有执行大量并发程序线程(concurrent program thread)的硬件支持,每个并发程序线程都包括一个序列的指令。如下文的更充分的阐述,硬件支持包括:
-用于各个线程的一组寄存器,包括操作数寄存器;
-线程调度器,用于动态地选择执行哪个线程;
-用于输入和输出的一组端口(端口22);
-互连系统,用于在各寄存器之间建立通道;
-控制实时执行的一组计时器;以及
-用于时钟输入和输出的一组时钟发生器。
本发明的指令格式还考虑适当的指令组和操作数寄存器,以支持线程的初始化、结束、开始和停止;并且提供通过各端口的输入和输出以及通过各通道的线程间通信。
在每个处理器上使用小线程组可用于允许通信或输入/输出与由处理器处理的其它待处理任务一起运行,并通过允许某些线程继续而其他线程暂停到或来自远程接口处理器的待处理通信而允许互连中的等待(latency)隐藏。
图3示意性示出了根据本发明的一个实施例的接口处理器14的示例性结构。处理器14包括在线程调度器18的控制下执行指令线程的执行单元16。随机存取存储器(RAM)24通过总线13连接至执行单元,并保存程序代码和其它数据。处理器14也包括时钟和计时器(未示出),而只读存储器(ROM)(也未示出)用于存储诸如启动代码的永久信息。
线程调度器18所考虑的m个线程中的每一个都由线程调度器18可访问的寄存器库(bank)20中的相应组的寄存器201...20m表示,也提供指令缓冲器(INSTR)19,用于在随后发到执行单元16之前,临时存储从存储器24中取出的数据。
图4示出用于存储与线程相关的信息的示例性线程寄存器库20。该库20包括多个寄存器组,各组对应于线程调度器18当前所考虑的相应线程T1至Tm。在这个优选示例中,各个线程的状态由十八个寄存器表示:两个控制寄存器、四个存取以及十二个操作数寄存器。这些寄存器分别如下:
控制寄存器:
-PC是程序计数器
-SR是状态寄存器
存取寄存器:
-GP是全局池指针(global pool pointer)
-DP是数据指针
-SP是堆栈指针
-LR是链接寄存器
操作数寄存器:OP1...OP12
控制寄存器存储关于线程状态的信息,并且用于控制线程的执行。具体地,线程接受事件或中断的能力由保存在线程状态寄存器SR中的信息控制。如下面进一步的详细讨论,状态寄存器SR还可以包含关于线程是否是单指令模式或双指令模式的信息。存取寄存器包括:用于局部过程(procedure)变量的堆栈指针;数据指针,通常用于在各过程之间所共享的数据;以及常量池指针,用来存取较大的常数和过程入口点。执行算术和逻辑运算、存取数据结构以及调用子程序的指令使用操作数寄存器OP1...OP12。互连系统42提供一个或多个通道,用于在各操作数寄存器组之间传递数据,优选地是从一个组的操作数寄存器到另一个组的操作数寄存器。
也提供了大量指令缓冲器(INSTR)19,用于临时存储线程的实际指令。每个指令缓冲器优选六十四位长,同时每个指令优选十六位长,因此每个缓冲器允许存储四个指令。在线程调度器18的控制下从程序存储器24取出指令,并且临时放置在指令缓冲器19中。
执行单元访问各个寄存器20和缓冲器19。进一步,线程调度器18至少访问用于各个线程的状态寄存器SR。
线程调度器18动态地选择执行单元16应执行哪个线程。通常,为了保持充分占用存储器,线程调度器的功能简单地从程序存储器中调度线程。然而,按照本发明的实施例,线程调度器18的调度也与端口22、通道、时钟和计时器的活动有关。端口22、通道、时钟和计时器在本文通常称为“资源”。应注意,在这方面,线程调度器可直接耦合到不同资源22,以便当线程由于在资源的活动而变得可运行时使延迟最小化。
在m个线程中,线程调度器18维持一组n个可运行线程,该组被称为“运行”,优选地以循环方式(round robin manner),线程调度器从该组中依次提取指令。当线程不能继续时,通过从该运行组中将其移除而暂停该线程。这样做的原因是,例如,因为该线程等待一个或更多以下类型的活动:
-其寄存器在能够运行前先被初始化;
-试图从没有准备就绪或者没有可用数据的端口或通道输入;
-试图输出至没有准备好或者没有用于数据的空间的端口或通道;
-已经执行指令,致使其等待一个或更多事件,这些事件可以在对于给定的资源满足某些条件时产生。
当在一个线程中遇到输入或输出指令并且相关的端口或通道没有准备就绪时,则线程调度器通过从运行组中移除该线程而使其中止,直到从该端口或通道接收到就绪信号。例如,端口或通道可能没有准备输入的数据,或者端口和通道的输出缓冲器可能是满的因此不能用于输出。为了指示线程调度器端口或通道是否准备就绪,与端口或通道相关联的逻辑断言(assert)或解除断言(de-assert)就绪标记。
如果在执行输入或输出指令前,端口或通道准备就绪,则在没有中止的情况下完成输入或输出。
线程还可以建立资源以处理事件。为了实现这个目的,该线程包含这样的指令,在执行后该指令将线程标识符(identifier)、连续点矢量和条件传输到所述的资源。线程标识符识别与事件相关联的线程,连续点矢量识别在一旦发生事件执行应当继续的代码中的点,并且条件定义了将要检测的事件类型。此外,另一个指令任选地发送与条件相关联的条件数据。每个资源都具有用于存储线程标识符、连续点矢量、条件和条件数据的相关联的寄存器。例如,如果所指的资源是端口,则事件可以是在该端口已经接收了一些特定数据。在该情形下,条件将把该事件定义为输入事件,条件数据将指定将要被检测的特定数据,并且连续点矢量指定适于处理该数据的某些代码的开始。如果资源是计时器,则事件可以是计时器达到某一值,或者如果资源是时钟,则事件可以是检测到某一时钟边缘。
一旦建立事件,则通过执行等待指令并将线程从运行组中移除而暂停该线程,直到发生该事件。每个资源都具有用于将在资源发生的活动与条件相比较的逻辑。当活动与条件相匹配时,为了指示已经发生事件,此逻辑将线程标识符返回给线程调度器并将连续点矢量返回给执行单元。接着,通过将线程再导入到运行组中而使该线程继续。
如果在执行等待指令之前就满足条件,则线程将继续进行而不会被暂停。
此外,事件处理指令可包括:用于使能和禁止资源发生事件的指令;用于使能和禁止线程接受事件的指令;用于将资源分配给线程的指令;以及用于释放已分配资源的指令。线程处理指令进一步包括读取和写入不同线程寄存器的指令。
除处理I/O和事件的指令外,根据本发明的指令组也可能需要用于初始化线程的指令,以及更多常规类型的指令,如用于算术运算、跳转(branching)、中断(interrupt)、异常(exception)、捕捉(trap)、调试、处理堆栈和池的指令等。本领域技术人员熟悉这些常规类型的指令。
下面说明结合指令组特别适于上述十二寄存器结构的指令格式,所述指令组可以提供线程调度、I/O、事件处理以及用于操作诸如上文所描述的处理器的其它指令。
图5示出了根据本发明的三操作数指令格式,该格式被称为“格式I”,以及部分相关的解码逻辑72、82、84以及90的示意性实例。
该指令格式具有标注为i[15:0]的十六位。该指令的五位i[15:11]是操作码502,并且十一位i[10:0]是操作数部分。操作数部分i[10:0]可以包含达三个的操作数说明符。三个四位操作数说明符x[3:0]、y[3:0]和z[3:0]被编码到该指令的十一位操作数部分i[10:0]中。例如,y和z可以各自指定源操作数寄存器,并且x可以指定目的操作数寄存器。
各个操作数说明符x、y和z中的两位从指令中如下简单地“逐位”读取。在图5中这些逐位二位部分被标注为506、508和510。
x[1:0]=i[5:4]
y[1:0]=i[3:2]
z[1:0]=i[1:0]
必须从图5中被标注为510的操作数部分i[10:6]中的剩余五位来解码各个操作数说明符x、y和z(总共六位)中的其它两位。下文给出了解码的示例。优选在硬件逻辑中执行所述解码,但原则上也可以用算法或查找表来执行所述解码。
Figure G2008800227357D00161
Figure G2008800227357D00171
因此,使用上面的方案,操作数说明符x[3:0]、y[3:0]和z[3:0]中的每一个都可以从零(0000)到十一(1011)之间取值,以使各个值指明下面的十二个操作数寄存器中的任一个寄存器:
Figure G2008800227357D00181
任选地,部分或所有值x、y和z可以另外用于提供立即操作数,即操作数本身可以直接被编码到指令中,而非从指定的寄存器中取回(retrieved)。在优选格式中,仅允许一个操作数说明符可选择用立即操作数取代。与说明符一样,立即操作数也必须是在零到十一的范围内。在本文每一个值x、y和z都可以通称为“操作数元素”,是指操作数说明符或立即操作数。
解码逻辑包括转换逻辑90、操作码解码逻辑72以及操作数解码逻辑82、84。解码逻辑从指令寄存器50接收指令。指令寄存器50可以是独立十六位寄存器,从指令缓冲器19中提取的指令所放入到该寄存器,或者指令寄存器可以是指令缓冲器19本身的一部分。
为了解码格式I,转换逻辑90可用于给操作码解码逻辑72提供位i[15:11]。转换逻辑90也可用于给操作数解码逻辑的解码部82提供编码操作数位i[10:6],并且将逐位位i[5:0]直接提供给操作数解码逻辑的组合部(combining section)84。操作数解码逻辑的解码部82可用于解码编码位i[10:6],从而确定x[3:2]、y[3:2]、z[3:2]。操作数解码逻辑的组合部84可用于将x[3:2]与x[1:0]、y[3:2]与y[1:0]、以及z[3:2]与z[1:0]结合在一起。操作码解码逻辑72可用于根据操作码作用于所指定的操作数寄存器和/或立即操作数。
因为每个线程仅十二个寄存器,所以操作数说明符x[3:0]、y[3:0]和z[3:0]中的每一个仅需要从零(0000)到十一(1011)取值。这意味着五位i[10:6](即操作数部分的解码部)仅需要具有从零(0000)到二十六(11010)的范围。剩下二十七(11011)到三十一(11111)范围中的五个值,这五个值在上文被标记为“Alt”并且没有用在所描述的三操作数格式中。根据本发明的有利实施例,这五个值可用来使指令根据替代格式(alternate format)被解码。
例如,图6示出了根据本发明的替代的两操作数指令格式,在本文中该指令格式被称为“格式II”。对于这个特定的替代格式重要的是,转换逻辑被配置成确认五位部分i[10:6]在二十七(11011)到三十一(11111)的范围中。这使转换逻辑90确认该指令是格式II的指令,并且以格式I的替代方式给解码逻辑提供位。
根据格式II,位i[15:11]和i[4]是操作码,这些操作码在图6中被标注为602。因此通常用于操作数的其中一位另外还用于产生六位操作码。从位i[10:5]和i[3:0]来解码两个四位操作数说明符x[3:0]和y[3:0]。从指令中如下简单地逐位读取各个操作数说明符x和y的两位。这些逐位两位部分在图6中被标注为606和608。
x[1:0]=i[3:2]
y[1:0]=i[1:0]
必须从图6中被标注为604的操作数部i[10:5]的剩余六位来解码各个操作数说明符x和y(总共四位)中的其它两位。记住,i[10:6]可以仅在格式II的二十七(11011)到三十一(11111)之间运行,这导致在包括额外位i[5]时仅有10个可能值。下文给出了解码的示例。
因此,使用上述方案,每个操作数说明符x[3:0]和y[3:0]都可从零(0000)到十一(1011)之间取值,以使各个值指定上面十二个操作数寄存器中的任一个寄存器。
任选地,可以用立即操作数来取代操作数说明符x和y中的一个或两个。在优选格式中,仅允许一个操作数说明符可选择用立即操作数取代。此外,该立即操作数必须在零到十一的范围内。
为了解码格式II,转换逻辑90可用于给操作码解码逻辑72提供位i[15:1]和i[4]。转换逻辑90也可用于给操作数解码逻辑的解码部82提供编码的操作数位i[10:6]和i[5],并且逐位位i[3:0]直接提供给操作数解码逻辑的组合部84。操作数解码逻辑的解码部82可用于解码所编码的位i[10:6]和i[5],从而确定x[3:2]、y[3:2]、z[3:2]。操作数解码逻辑的组合部84可用于将x[3:2]和x[1:0]、y[3:2]和y[1:0]、以及z[3:2]和z[1:0]结合在一起。操作数解码逻辑72可用于根据操作码作用于所指定的操作数寄存器和/或立即操作数。
因为每个线程仅十二个寄存器,所以操作数说明符x[3:0]和y[3:0]中的每一个仅需要从零(0000)到十一(1011)取值。这意味着六位i[10:5],即操作数部分的解码部不使用在上文被标记为“Alt”的格式II中的值1111111。该值可以用来使指令根据另一种替代格式被解码。
例如,图7示出了根据本发明的替代的一操作数指令格式,在本文中该指令格式被称为“格式III”。对于该特定替代格式重要的是,转换逻辑被配置成将五位部分i[10:6]确认为三十一(11111),并且将位i[5]确认为一(1)。这使转换逻辑90确认指令是格式III的指令,并且因此给解码逻辑提供位。
部分i[10:5]在图7中被标记为704。六位操作码是在图7中被标记为702的位i[15:11]和i[4]。从在图7中被标记为706的位i[3:0]逐位读取操作数说明符x[3:0],并且为了指定上面十二个操作数寄存器中的其中一个,操作数说明符x[3:0]在零(0000)到十一(1011)的范围内。可替换地,操作数说明符x可以由零到十一范围中的立即操作数取代。
为了解码格式III,转换逻辑90可用于给操作码解码逻辑72提供位i[15:11]和i[4]。转换逻辑90可用于在不需要组合或解码的情况下直接提供逐位位i[3:0]。操作码解码逻辑72可用于根据操作码作用于所指定的操作数寄存器或立即操作数。
因为每个线程仅十二个寄存器,位i[3:0]不使用格式III中的从十二(1100)到十五(1111)的范围。这些值也可用于使指令根据另一个替代格式被解码。
例如,图8示出了根据本发明的替代的零操作数指令格式,在本文该格式被称为“格式IV”。这里,位i[15:11]和i[4]是被标注为802的操作码;等于三十一(11111)的位i[10:6]和位i[5]是一(1),它们一起被标注为804;且位i[3:0]可以是范围十二(1100)到十五(1111)中的任一个,其被标注为806。转换逻辑90被配置成确认位i[10:5]和i[3:0]在所述范围内,并且因此给解码逻辑的操作码解码部72提供位i[15:11]和i[4]。
可以独立于格式I-IV的上述方案编码其它指令格式。例如,在本文中多个格式被称为“格式V”、“格式VI”、“格式VII”以及“格式VIII”,每个格式都使用多于五位的操作码。为了实现该目的,转换逻辑90起初必须确认上五位i[15:11]是特定预定值或预定范围的值中的一个值,转换逻辑90会使解码逻辑72、82、84和90根据替代格式V-VIII而非格式I-IV中的一个特定格式来解码指令。具体地,当转换逻辑确认位i[15:11]具有特定值或预定范围的值时,则转换逻辑知道至少将位i[10]、可能还有位i[9...]提供给操作码解码部72而非操作数解码部82、84。
格式V包含一个寄存器说明符和一个立即操作数。位i[15:10]是操作码,位i[9:6]是寄存器说明符,且位i[5:0]是立即操作数。在格式V中,允许位i[9:6]从整个范围零(0000)到十五(1111)中取值,因此允许操作十六个寄存器GP、DP、SP、LR和OP1...OP12中的任一个寄存器。寄存器GP、DP、SP和LR分别可寻址如1100、1101、1110和1111。因此格式V的指令可对线程寄存器中的其它寄存器操作,例如为处理堆栈和池的寄存器。
格式VI与格式V相同,除位i[9:6]被限制在零(0000)到十一(1011)的范围之外,使得寄存器说明符仅可以指定操作数寄存器OP1至OP12中的一个。
格式VII具有十位操作码和六位立即操作数。位i[15:6]是操作码,其中位i[9:6]在十二(1100)到十五(1111)的范围。位i[5:0]是立即操作数。
格式VIII具有六位操作码和十位立即操作数。位i[15:10]是操作码,位i[9:0]是立即操作数。
关于转换逻辑90,注意,可以将某些从不被交换的位(诸如i[15:11])从指令寄存器50直接提供到操作码解码部72,而不通过图6至图7所示的转换逻辑90。尽管如此,在实施例中,为了检测根据格式V到VIII中的一种格式来解码指令,转换逻辑90必须能够读取i[15:11]的至少部分位。
根据优选实施例,执行单元支持前缀指令(prefix instruction)。前缀被用来扩展立即操作数的范围,并且用于提供更多寄存器间操作,或给寄存器间操作提供更多操作数。前缀指令由编译器和汇编器自动插入。前缀指令如下。
PFIX,该指令将其十位立即操作数和随后的十六位指令的立即操作数连接在一起。该指令为格式VIII。
EOPR,该指令将其十一位操作数部分和随后的指令连接在一起。其具有另一个格式,其中,位i[15:11]作为操作码,而位i[10:0]作为立即操作数。
另一个优选特征是如图9所示的双指令发射(dual instructionissue)。这里,执行单元16实际上包括至少两个并行的执行单元,优选为并行流水线16a和16b。执行单元包括发射逻辑(issue logic)60,配置该逻辑,使得如上文所描述的各个格式的两个十六位指令可分别立刻被发射到两个流水线16a、16b中。在诸如涉及图2至4所描述的处理器中,根据不同的应用,双发射特征可以增加50%至90%的性能,而不会增加时钟频率。在程序存储器使用中系统开销达25%。
优选地,两个流水线具有不同的性能。流水线16a所执行的第一指令可以是算术逻辑单元(ALU)型指令、存储器存取指令或跳转指令中的其中一个。流水线16b所执行的第二指令可以是ALU型指令或输入输出指令中的一个。由于不需要单个流水线处理存储器存取指令和资源指令,因此这要求另外的解码器和另外的ALU,而且有利地减少了复杂性。此外,处理器需要在每对流水线中的两个十六位指令上进行非相依性(no dependency)检查,因为编译器分配该对流水线使得其间不存在相依性。
可用的指令组以两个指令长度为基础。十六位指令或“短”指令具有最多两个源操作数和最多一个目的操作数。这些操作数的完整组编码通用代码(general purpose code)中的所有共用指令。三十二位指令或“长”指令具有最多四个资源操作数和最多两个目的操作数。这些操作数编码通用代码中很少共用的指令(包括具有长立即操作数的指令)和大量明显增加专用代码性能的多操作数指令。
通过每个周期将一对十六位指令50发射到两个并行流水线或将单个三十二位指令发射到一个流水线来运行双发射。对于单发射,单个十六位被简单地发射到合适的流水线中。例如,所有资源指令可路由到第二流水线16b。当执行双发射时,跳转偏移(branchoffset)被解释为是三十二位偏移,并且总是跳转成一对十六位指令或单个三十二位指令。
线程状态寄存器(SR)中的标记用来判断线程是否在执行双发射或单发射。发射逻辑60访问来自从每个线程寄存器组20的SR寄存器,并且被配置成根据单发射模式或双发射模式来发射指令50。从而通过状态寄存器SR,线程调度器18在给定的时间所考虑的一些线程T可以是单发射模式,而其它的这些线程可以是双发射模式。这有利地允许在多线程管理中的更大灵活性。在实施例中,在同一线程上可以没有用于在双发射与单发射之间传递控制的支持。
在汇编器中由代码调度器生成双代码,以便双代码使所编译的软件和手写代码软件最优化。该代码比正常执行中的代码大,但程序偏移(program offset)的额外达到范围(extra reach)可确保除需要用“no-op”指令重新排序和填补之外没有变化(当线程调度器在其指令缓冲器中没有指令时,则发射no-op指令)。
程序存储器24可以作为并行存取的两个库(bank)来执行。一个库保存偶数号的地址,另一库保存奇数号的地址。指令提取总是取出六十四位(每个指令缓冲器19都是六十四位宽)。三十二位指令和十六位指令对必须在存储器中的三十二位边界上对准。双程序地址都是三十二位对准的,且程序偏移都以四而不是二进行衡量。这种布置通过使用两个库使存储器存取指令操作(如指令提取)也可以进行六十四位执行。除六十四位数据类型的益处外,在性能上可能没有差别。
帮助双指令发射的其它功能可以包括:使用支持四个读取端口和两个写入端口的寄存器文件,这些端口仅具有可忽略的性能影响;并且修改捕捉(trap)处理,使得能够处理立即引起多于一次的捕捉的情形。双捕捉处理可通过状态寄存器SR中的位来实现,以指示所述捕捉是否由一对中的第一或第二指令引起。如果两个指令都引起了捕捉,则每次可以处理一个捕捉。
下面是可以根据本发明编码的三个、两个、一个和零个操作数指令的示例。下文所使用的缩写“reg”指的是寄存器,“op reg”指的是操作数寄存器,“imm”指的是立即操作数,以及“dest”指的是目的操作数寄存器。
ADDI dest,source,constant  将源加到常数(两个op reg &
                             4-bit imm)
MUL dest,source1,source2   源2乘以源1(三个op reg)
LSU dest,source1,source2   小于无符号的(三个op reg)
STW data,base offset        存储数据到存储器(三个op reg)
LDW data,base,offset       从存储器加载数据(三个op reg)
LDWSP data,offset           从堆栈加载数据(任一reg &
                             6-bit imm)
LDC data,constant           加载常数(任一reg & 6-bit imm)
STB data,addr               存储器字节到存储器(两个op
                             reg)
BRFT flag,offset            如果标记为真,则向前跳转(op
                             reg & 6-bit imm)
BRBF flag,offset            如果标记为假,则向后跳转(op
                             reg & 6-bit imm)
BRFU offset                  无条件相对向前跳转(6-bit
                             imm)
BLRF offset             相对向前跳转和链接(10-bit
                        imm子程序调用)
GETR resource,type     给线程分配资源(两个op-reg)
IN resource,data       输入(两个op reg)
OUT resource,data      输出(两个op reg)
INSHR resource,data    输入和右移(两个op reg)
NOT dest,source        按位否(bitwise not)(两个op
                        reg)
EET flag,resource      如果标记为真,则使能事件(两
                        个op reg)
EEU resource            无条件使能事件(一个op reg)
WAITEU                  无条件等待事件(无操作数)
CLRE                    为线程清除事件(无操作数)
这里是几个双指令发射的示例。其中,在同一行上示出了两个指令时,表示指令被一起发射到两个并行流水线中。
第一个示例执行两个阵列a和b的乘法累积:
MACC:
LDW x,a,i          LSU go,i,limit
LDW y,b,i          ADD i,i,1
MUL prod,x,y
BRBF go,MACC        ADD sum,sum,prod
下面两个示例执行与通常由DMA(直接存储器存取)控制器所执行的的输入和输出功能相同的功能。它们使用在存储器中的基地址(address base)开始的通道c来传递字块。
DMAI:
LSU go,i,limit    IN c,x
STW x,base,i
BRBF go,DMAI       ADDI i,i,1
DMAO:
LDW x,base,i      LSU go,I,limit
ADDI i,i,1        OUT c,x
BRBF go,DMAO
下一个示例执行执行来自由以太网所使用的媒体独立接口的输入。其移入来自4位dport的数据和来自1位vport的有效信号。每对4位值形成一个字节,且每个字节存储在存储器中。有效信号由每个字节检查以确定何时字节序列结束。
MACI:
STB data,ptr    INSHR dport,data
ADDI ptr,ptr,1 INSHR vport,valid
NOT go,valid    INSHR dport,data
BRBF go,MACI    INSHR vport,valid
最后一个示例示出了以每指令周期的一个项(位、四位字节、字节等)的端口速率所输入的数据。在进行通过权标计数和/或用于结束权标值的扫描的同时可以这样做。这些项可转化为字节、半字或字,或者从字节、半字或字转化而来,并且可以转移到存储器或从存储器转移。
应当理解的是,仅以示例的方式描述了上述实施例。已经描述了本发明的指令格式具体可用于接口处理器以及线程调度、事件处理和I/O的指令组。然而,本发明不限于这些实施例,并且对于本领域技术人员而言,其它的应用和指令组也是显而易见的。此外,在其它的实施例中,也可以使用不同的编码/解码方案、前缀和/或并行流水线布置。本发明的范围不受所描述的实施例限制,而仅由权利要求限定。

Claims (56)

1.一种用于在处理器中解码指令的解码单元,所述解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;
其中,所述操作码解码逻辑可用于使用所述输入部的五位来确定操作码,并且所述操作数解码逻辑用于由所述输入部的剩余十一位来确定三个四位操作数元素,所述三个操作数元素的每一个都具有十二个可能的二进制值中的一个值;并且
所述操作数解码逻辑可用于解码所述十一位的编码组,从而确定所述三个操作数元素中的每一个的第一部分,并且可用于逐位读取所述十一位的逐位组,从而确定所述三个操作数元素中的每一个的第二部分。
2.根据权利要求1所述的解码单元,包括转换逻辑,所述转换逻辑可用于将所述十一位中的至少一位从所述操作数解码逻辑转移到所述操作码解码逻辑,其中,所述操作码解码逻辑可用于使用所述五位和所述至少一个转移位来确定操作码。
3.根据权利要求2所述的解码单元,其中,所述操作数解码逻辑可用于由所述十一位的剩余位确定至少一个操作数。
4.根据权利要求2所述的解码单元,其中,所述转换逻辑被配置成在所述十一位具有未用来编码所述三个四位操作数元素的值的条件下转移所述至少一位。
5.根据权利要求2所述的解码单元,其中,所述转换逻辑被配置成在所述五位具有预定值或预定范围的值的条件下转移所述至少一位。
6.根据权利要求1所述的解码单元,其中,所述编码部分是五位,所述逐位部分是六位,每个操作数元素的所述第一部分是两位,且每个操作数元素的所述第二部分是两位。
7.根据权利要求1所述的解码单元,其中,所述输入部包括十六位指令寄存器。
8.根据权利要求1所述的解码单元,其中,至少一个所述操作数元素是用于从一组十二个操作数寄存器中的任一个指定操作数寄存器的操作数说明符。
9.根据权利要求8所述的解码单元,其中,所述三个操作数元素中的每一个都包括相应的操作数说明符,各个操作数说明符用于从所述组中的任一个指定操作数寄存器。
10.根据权利要求8所述的解码单元,其中,所述三个操作数元素包括:一个立即操作数;以及两个操作数说明符,用于从所述组中任一个分别指定两个操作数寄存器。
11.根据权利要求8所述的解码单元,其中,所述三个操作数元素包括:两个源操作数元素,各自为立即源操作数或用于从所述组中任一个指定相应的源操作数寄存器的源操作数说明符;以及一个目的操作数说明符,用于从所述组中的任一个指定目的操作数寄存器;以及
所述解码单元可用于根据所述操作码来执行指令,包括
对源操作数运算并且将所述运算的结果存储到所述目的操作数寄存器中。
12.根据权利要求1所述的解码单元,其中,所述三个操作数包括三个源操作数。
13.根据权利要求2、3、4和8所述的解码单元,其中:
所述转换逻辑可用于将所述十一位中的一位从所述操作数解码逻辑转移到所述操作码解码逻辑;
所述操作码解码逻辑可用于使用所述五位和所述一个转移位确定操作码,并且所述操作数解码逻辑可用于由剩余十位确定两个四位操作数说明符,各个四位操作数说明符具有十二个可能的二进制值中的一个值,所述可能的二进制值用于由所述组的十二个操作数寄存器中的任一个指定操作数寄存器;以及
所述操作数解码逻辑可用于解码所述十位的编码组以确定所述两个操作数说明符中的每一个的第一部分,并且可用于逐位读取所述十位的逐位组以确定所述两个操作数说明符中的每一个的第二部分。
14.根据权利要求1所述的解码单元,其中,所述解码单元被设置成用于执行多个线程,每个线程包括一个序列的指令,并且至少一个所述解码指令为一个所述序列的组成。
15.根据权利要求14所述的解码单元,其中,所述至少一个指令是用于管理所述多个线程中的一个或多个线程的调度的线程调度指令。
16.根据权利要求1所述的解码单元,其中,所述指令的至少一个是下列指令之一:设定事件条件指令,用于设定与事件相关的条件;设定条件数据指令,用于设定与事件条件相关的数据;设定矢量指令,用于设定与事件相关的连续点矢量;源事件使能指令,用于使能事件源以发生事件;以及线程事件使能指令,用于使能线程以对事件作出反应。
17.根据权利要求1所述的解码单元,其中,所述解码单元可用于连接前缀指令的操作数和后续执行的指令的操作数。
18.根据权利要求1所述的解码单元,其中,所述输入部被设置成从六十四位指令缓冲器接收指令。
19.一种执行单元,包括至少两个并行流水线,所述流水线可用于以并行方式同时执行两个相应的十六位指令,并且各个流水线包括根据权利要求1所述的解码单元。
20.根据权利要求19所述的执行单元,其中,所述执行单元可以双发射和单发射模式操作,其中,在所述双发射模式中,所述执行单元可用于在单周期中将两个十六位指令发射到所述两个相应的流水线中,而在所述单发射模式中,所述执行单元可用于在单周期中仅将一个十六位指令发射到流水线中。
21.根据权利要求19所述的执行单元,其中,所述执行单元可用于在单周期中将三十二位指令发射到一个所述流水线。
22.一种包括根据权利要求14所述的解码单元的处理器,所述处理器包括多组十二个操作数寄存器,每个组都被设置成用于存储与相应的一个所述线程相关的操作数。
23.一种包括根据权利要求1所述的解码单元的处理器,其中,所述处理器是用于在第一外部设备与第二外部设备之间对接的接口处理器。
24.根据权利要求23所述的处理器,其中,所述第一外部设备是另一个处理器,而所述第二外部设备是外围设备。
25.根据权利要求23所述的处理器,其中,所述第一和第二外部设备都是其它处理器。
26.根据权利要求23所述的处理器,其中,至少一个所述指令是以下指令之一:输入指令,用于将数据从其中一个所述外部设备输入到所述接口处理器;输出指令,用于将数据从所述接口处理器输出到其中一个所述外部设备。
27.一种使用解码单元在处理器中解码指令的方法,该解码单元包括操作码解码逻辑、操作数解码逻辑和十六位输入部,所述方法包括:
操作所述操作码解码逻辑,以使用所述输入部的五位确定操作码;以及
操作所述操作数解码逻辑,以由所述输入部的剩余十一位确定三个四位操作数元素,所述三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;
其中,确定所述三个操作数元素的步骤包括:解码所述十一位的编码组,以确定三个操作数元素中的每一个的第一部分,并且逐位读取所述十一位的逐位组,以确定所述三个操作数元素中的每一个的第二部分。
28.根据权利要求27所述的方法,包括:
将所述十一位中的至少一位从所述操作数解码逻辑转移到所述操作码解码逻辑;以及
操作所述操作码解码逻辑,以使用所述五位和所述至少一个转移位确定操作码。
29.根据权利要求28所述的方法,包括操作所述操作码解码逻辑,以从所述十一位的剩余位确定至少一个操作数。
30.根据权利要求28所述的方法,其中,在所述十一位具有未用于编码所述三个四位操作数元素的值的条件下执行转移所述至少一位的步骤。
31.根据权利要求28所述的方法,其中,在所述五位具有预定值或预定范围的值的条件下执行转移所述至少一位的步骤。
32.根据权利要求27所述的方法,其中,所述编码的部分是五位,所述逐位部分是六位,每个操作数元素的所述第一部分是两位,而每个操作数元素的所述第二部分是两位。
33.根据权利要求27所述的方法,其中,所述输入部包括十六位指令寄存器。
34.根据权利要求27所述的方法,其中,至少一个所述操作数元素是用于从一组十二个操作数寄存器中的任一个指定操作数寄存器的操作数说明符。
35.根据权利要求34所述的方法,其中,所述三个操作数元素中的每一个都包括相应的操作数说明符,各个操作数说明符用于从所述组中的任一个指定操作数寄存器。
36.根据权利要求34所述的方法,其中,所述三个操作数元素包括:一个立即操作数;以及两个操作数说明符,用于从所述组中任一个分别指定两个操作数寄存器。
37.根据权利要求34所述的方法,其中,所述三个操作数元素包括:两个源操作数元素,各自为立即源操作数或用于从所述组中任一个指定相应的源操作数寄存器的源操作数说明符;以及一个目的操作数说明符,用于指定从所述组中的任一个指定目的操作数寄存器;并且
所述方法包括根据所述操作码来执行指令,所述执行包括对源操作数运算,并且将所述运算的结果存储到所述目的操作数寄存器中。
38.根据权利要求27所述的方法,其中,所述三个操作数包括三个源操作数。
39.根据权利要求28、29、30和34所述的方法,包括:
将所述十一位中的一位从所述操作数解码逻辑转移到所述操作码解码逻辑;
操作所述操作码解码逻辑,以使用所述五位和所述一个转移位确定操作码;
操作所述操作数解码逻辑,以从剩余十位确定两个四位操作数说明符,各个四位操作数说明符具有十二个可能的二进制值中的一个值,所述可能的二进制值用于从所述组的十二个操作数寄存器中的任一个指定操作数寄存器;
其中,确定所述两个操作数说明符的步骤包括:解码所述十位的编码组,以确定所述两个操作数说明符中的每一个的第一部分,并且逐位读取所述十位的逐位组,以确定所述两个操作数说明符中的每一个的第二部分。
40.根据权利要求27所述的方法,包括操作解码单元以执行多个线程,每个线程包括一个序列的指令,并且至少一个所述解码指令为一个所述序列的组成。
41.根据权利要求40所述的方法,其中,所述至少一个指令是用于管理所述多个线程中的一个或多个线程的调度的线程调度指令。
42.根据权利要求27所述的方法,其中,所述指令的至少一个是下列指令之一:设定时间条件指令,用于设定与事件相关的条件;设定条件数据指令,用于设定与事件条件相关的数据;设定矢量指令,用于设定与事件相关的连续点矢量;源事件使能指令,用于使能事件源以发生事件;以及线程事件使能指令,用于使能线程以对事件作出反应。
43.根据权利要求27所述的方法,包括操作所述解码单元,以连接前缀指令的操作数与后续执行的指令的操作数。
44.根据权利要求27所述的方法,包括在所述输入部从六十四位指令缓冲器接收指令。
45.根据权利要求27所述的方法,包括使用执行单元同时执行至少两个十六位指令,所述执行单元包括两个相应的并行流水线,各个流水线根据权利要求27所述的方法来操作。
46.根据权利要求45所述的方法,其包括在以双发射模式和以单发射模式来操作执行单元之间选择,其中,在所述双发射模式中,所述执行单元可用于在单周期中将两个十六位指令发射到两个相应的流水线中;而在所述单发射模式中,所述执行单元可用于在单周期中仅将一个十六位指令发射到流水线中。
47.根据权利要求45所述的方法,其包括操作一个所述流水线,以在单周期中执行三十二位指令。
48.根据权利要求40所述的方法,其包括在相应组的十二个操作数寄存器中存储与相应线程相关的操作数。
49.根据权利要求27所述的方法,其中,所述处理器是接口处理器,并且所述方法包括使用所述处理器在第一外部设备与第二外部设备之间对接。
50.根据权利要求49所述的处理器,其中,所述第一外部设备是另一个处理器,并且所述第二外部设备是外围设备。
51.根据权利要求49所述的处理器,其中,所述第一和第二外部设备都是其它处理器。
52.根据权利要求49所述的处理器,其中,至少一个所述指令是以下指令之一:输入指令,用于将数据从其中一个所述外部设备输入到所述接口处理器;输出指令,用于将数据从所述接口处理器输出到其中一个所述外部设备。
53.一种移动终端,具有:移动应用程序处理器;至少一个外围设备;以及连接在所述移动应用程序处理器与所述外围设备之间的接口处理器,所述接口处理器具有用于在处理器中解码指令的解码单元,并且所述解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;
其中,所述操作码解码逻辑可用于使用所述输入部的五位确定操作码,并且所述操作数解码逻辑可用于由所述输入部的剩余十一位确定三个四位操作数元素,所述三个操作数元素的每一个都具有十二个可能的二进制值中的一个值;以及
所述操作数解码逻辑可用于解码所述十一位的编码组,从而确定所述三个操作数元素中的每一个的第一部分,并且可用于逐位读取所述十一位的逐位组,从而确定所述三个操作数元素中的每一个的第二部分。
54.一种互连的处理器阵列,至少一个所述处理器具有用于在处理器中解码指令的解码单元,所述解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;
其中,所述操作码解码逻辑可用于使用所述输入部的五位确定操作码,并且所述操作数解码逻辑可用于由所述输入部的剩余十一位确定三个四位操作数元素,所述三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;以及
所述操作数解码逻辑可用于解码所述十一位的编码组,以确定所述三个操作数元素中的每一个的第一部分,并且可用于逐位读取所述十一位中的逐位组,以确定所述三个操作数元素中的每一个的第二部分。
55.一种包括用于解码指令的解码单元的处理器,所述解码单元包括操作码解码逻辑、操作数解码逻辑以及十六位输入部;
其中,所述操作码解码逻辑可用于使用所述输入部的五位确定操作码,并且所述操作数解码逻辑可用于由所述输入部的剩余十一位确定三个四位操作数元素,所述三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;以及
所述操作数解码逻辑可用于解码所述十一位的编码组,从而确定所述三个操作数元素中的每一个的第一部分,并且可用于逐位读取所述十一位的逐位组,从而确定所述三个操作数元素中的每一个的第二部分。
56.一种用于在处理器中解码指令的解码单元,所述解码单元包括:
十六位输入装置;
操作码解码装置,用于使用所述输入装置的五位确定操作码;以及
操作数解码装置,用于从所述输入装置的剩余十一位确定三个四位操作数元素,所述三个操作数元素中的每一个都具有十二个可能的二进制值中的一个值;
其中,所述操作数解码装置用于解码所述十一位的编码组,以确定所述三个操作数元素中的每一个的第一部分,并且用于逐位读取所述十一位的逐位组,以确定所述三个操作数元素中的每一个的第二部分。
CN2008800227357A 2007-05-09 2008-05-02 紧凑指令组编码 Active CN101720460B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/797,968 US7676653B2 (en) 2007-05-09 2007-05-09 Compact instruction set encoding
US11/797,968 2007-05-09
PCT/EP2008/055436 WO2008138781A1 (en) 2007-05-09 2008-05-02 Compact instruction set encoding

Publications (2)

Publication Number Publication Date
CN101720460A true CN101720460A (zh) 2010-06-02
CN101720460B CN101720460B (zh) 2013-02-13

Family

ID=39651396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800227357A Active CN101720460B (zh) 2007-05-09 2008-05-02 紧凑指令组编码

Country Status (6)

Country Link
US (1) US7676653B2 (zh)
EP (1) EP2145249B1 (zh)
JP (1) JP5222941B2 (zh)
KR (1) KR101528614B1 (zh)
CN (1) CN101720460B (zh)
WO (1) WO2008138781A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003840A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于执行检查以优化指令流的装置和方法
CN110175048A (zh) * 2019-05-15 2019-08-27 童先娥 一种指令处理方法及处理器
CN110995285A (zh) * 2019-12-27 2020-04-10 成都达安众科技有限公司 一种uhf rfid分步式指令解码方法及芯片
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101084728B1 (ko) 2009-12-24 2011-11-22 서울대학교산학협력단 동적 암시 어드레싱 모드를 지원하는 파이프라인 방식의 프로세서
US20120284488A1 (en) * 2011-05-03 2012-11-08 Qualcomm Incorporated Methods and Apparatus for Constant Extension in a Processor
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US20150019845A1 (en) * 2013-07-09 2015-01-15 Texas Instruments Incorporated Method to Extend the Number of Constant Bits Embedded in an Instruction Set
US10061592B2 (en) * 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US10394568B2 (en) 2015-09-30 2019-08-27 International Business Machines Corporation Exception handling for applications with prefix instructions
US10761852B2 (en) 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US10877759B2 (en) 2015-09-30 2020-12-29 International Business Machines Corporation Managing the capture of information in applications with prefix instructions
US9870305B2 (en) 2015-09-30 2018-01-16 International Business Machines Corporation Debugging of prefixed code
US10089077B1 (en) 2017-01-10 2018-10-02 Apple Inc. Parallel processing circuitry for encoded fields of related threads
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
JP3505266B2 (ja) * 1995-06-15 2004-03-08 三洋電機株式会社 プログラム実行装置
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
GB2329495B (en) 1996-06-10 2000-09-20 Lsi Logic Corp An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
JP3472504B2 (ja) * 1998-03-11 2003-12-02 松下電器産業株式会社 命令解読方法、命令解読装置及びデータ処理装置
JP4457474B2 (ja) * 2000-04-04 2010-04-28 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003840A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于执行检查以优化指令流的装置和方法
CN107003840B (zh) * 2014-12-23 2021-05-25 英特尔公司 用于执行检查以优化指令流的装置和方法
CN110175048A (zh) * 2019-05-15 2019-08-27 童先娥 一种指令处理方法及处理器
CN110995285A (zh) * 2019-12-27 2020-04-10 成都达安众科技有限公司 一种uhf rfid分步式指令解码方法及芯片
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法

Also Published As

Publication number Publication date
CN101720460B (zh) 2013-02-13
KR101528614B1 (ko) 2015-06-12
JP2010526383A (ja) 2010-07-29
US7676653B2 (en) 2010-03-09
US20080282066A1 (en) 2008-11-13
EP2145249A1 (en) 2010-01-20
JP5222941B2 (ja) 2013-06-26
WO2008138781A1 (en) 2008-11-20
KR20100017744A (ko) 2010-02-16
EP2145249B1 (en) 2015-12-09

Similar Documents

Publication Publication Date Title
CN101720460B (zh) 紧凑指令组编码
US5961628A (en) Load and store unit for a vector processor
EP2062134B1 (en) Device, method and machine readable medium for processing data using scalar/vector instructions
EP2289003B1 (en) Method & apparatus for real-time data processing
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
JP2001202245A (ja) 改良式命令セットアーキテクチャを有するマイクロプロセッサ
WO2000038082A1 (en) Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US20120284489A1 (en) Methods and Apparatus for Constant Extension in a Processor
KR20100075494A (ko) 중첩된 피연산자들을 갖는 simd 내적 연산들
CN100444107C (zh) 优化的处理器和指令对准
EP1680735A2 (en) Apparatus and method that accomodate multiple instruction sets and multiple decode modes
US20110072238A1 (en) Method for variable length opcode mapping in a VLIW processor
US7461235B2 (en) Energy-efficient parallel data path architecture for selectively powering processing units and register files based on instruction type
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
TW200540713A (en) Apparatus and method for dual data path processing
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
WO2014202825A1 (en) Microprocessor apparatus
US20050055539A1 (en) Methods and apparatus for general deferred execution processors
US20040093484A1 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
TW201643692A (zh) 用於執行自旋迴路跳位的裝置及方法
Assaf et al. General Architecture and Instruction Set Enhancements for Multimedia Applications

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