CN100390729C - 利用规格字段指令编码的处理器 - Google Patents

利用规格字段指令编码的处理器 Download PDF

Info

Publication number
CN100390729C
CN100390729C CNB988114925A CN98811492A CN100390729C CN 100390729 C CN100390729 C CN 100390729C CN B988114925 A CNB988114925 A CN B988114925A CN 98811492 A CN98811492 A CN 98811492A CN 100390729 C CN100390729 C CN 100390729C
Authority
CN
China
Prior art keywords
instruction
processor
bundles
type
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
CNB988114925A
Other languages
English (en)
Other versions
CN1279783A (zh
Inventor
詹姆斯·M·赫尔
肯特·菲尔登
汉斯·穆尔德
哈什瓦德翰·莎朗潘尼
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.)
Idea Corp USA
Original Assignee
Idea Corp USA
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25488837&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN100390729(C) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Idea Corp USA filed Critical Idea Corp USA
Publication of CN1279783A publication Critical patent/CN1279783A/zh
Application granted granted Critical
Publication of CN100390729C publication Critical patent/CN100390729C/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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline or 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

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

本发明所开发的具有大寄存器堆(10)的处理器利用规格字段将一组最常用的指令序列编码成长指令字格式。处理器的指令集包括一些各自属于多个不同类型的指令。处理器的执行单元类似地也分为一些不同类型,每个类型的指令可以在一个或多个类型的执行单元上执行。这些指令组合到一些称为指令束的128位长的排列好的容纳槽中,每个指令束包括多个指令隙和一个规定指令隙与执行单元类型之间的对应关系的规格字段。

Description

利用规格字段指令编码的处理器
本发明涉及处理器体系结构技术领域,具体地说,与可提高处理器操作效率的指令编码方法和装置有关。
在高速计算机处理器技术领域,已有各种途径来解决怎样使指令编码最好的问题。早期,Intel公司制造的处理器采用可变长度编码,不同的指令用不同的位长度编码。虽然这个途径在计算机工业中得到广泛的采纳,但这种Intel体系结构(iA)编码方法是通过精简指令集计算(RISC)机器加以改善的。
在一个RISC机器中,所有的字段均匀编码,每个指令具有固定的长度(例如32个位)。对于编码采用三个操作数的指令这些固定的指令字段的32位长度提供了足够的位置,或者说“空间”,其中每个操作数含有一个5位的寄存器标识符。因此,RISC途径对操作码位组、立即值、偏置等编码提供了的足够空间。
近来,在计算机工业中已经研究了对具有在单个机器周期内处理许多指令能力的高效率并行处理机器的要求。这些机器通常称为超长指令字(VLIW)或宽字计算机处理器,能同时处理几个指令。举例来说,在美国专利No.4,833,599中所揭示的一种VLIW多处理器每个时钟周期能处理1024位的指令。
在VLIW或宽字机器中所出现的问题之一是怎样对要访问大寄存器堆(例如有128个寄存器)的指令编码。一种方法是Hewlett-Packard公司在他们初创的宽字设计中所采用的,将指令组合在含有三个42位指令的单个128位的条目内(剩余2个位)。这128位的条目内的三个指令每个在类型上都有限制。也就是说,第一个指令限制为存储器型指令,第二个指令必需是整数型指令,而第三个指令限制为浮点型指令。
这种宽字、固定的128位格式的根本问题是大大地扩展了码字,从而导致对一些指令字节打包很不经济。例如,一个LOAD指令可能只有一、两个字节长,但是在这种现有技术的宽字格式中仍然必需占用42个位。在一些指令序列中,每个相继的128位指令条目内只使用一、两个指令,因此这种低效率就更为严重。
熟悉超标量处理器的人员可以理解,RISC机器在需要同时处理大量指令时也遇到困难。例如,一个设计成并行处理许多指令的RISC处理器需要大量的多路复用器和相关的布线,以将各种指令传送给适当的功能单元。这实际上也就限制了能予以并行处理的指令的数目。
因此,有必要开发一种处理器,这种处理器能减少过去这些指令编码方法和装置中的浪费,并提高效率。正如下面将看到的那样,本发明提供了一种能同时执行经高效率对指令编码的多个接连的指令的处理器。
这里所揭示的处理器用规格(template)字字段在长指令字格式下对一些最有用的指令序列进行编码。在一个实施例中,本发明的处理器包括一个具有128个寄存器的寄存器堆。处理器的指令组包括一些对这128个寄存器定址的指令,其中每个指令是多种不同指令类型中的一种。处理器的各执行单元同样也分为几种不同类型,其中每种指令可以用一种或几种执行单元执行。
按照本发明,指令组合到称为指令束(bundle)的长为128位的排列好的容纳槽(container)中。每个指令束包括第一、第二、第三三个指令隙(instruction slot)和一个规定这些指令隙与执行单元类型对应关系的规格字段。本发明所采用的改进的指令编码方案与现有技术的相比具有较大的灵活性和较高的效率。
下面将结合附图对本发明进行详细说明,但这只是说明性的,这些具体的实施例不应认为是对本发明的限制。在这些附图中:
图1例示了按照本发明的处理器的一个实施例的一种体系结构寄存器模型;
图2示出了本发明的一个实施例的指令类型与执行单元类型之间的关系;
图3为示出按照本发明的一个实施例的一种用于指令编码的指令束格式的示意图;以及
图4示出了对于本发明的一个实施例的对指令隙映射进行编码的规格字段。
本发明包括利用规格字段进行指令编码的处理器。以下的说明中,设定了一些具体的细节,例如寄存器堆模型、位长度、具体编码方案等,以便清楚、透彻地了解本发明。然而熟悉数据处理技术的人员将能理解,本发明的实现并不需要符合这些细节。在其它例子中,对于众所周知的信号、器件和电路没有进行详细说明,以免反而不能突出本发明的主题。
图1例示了在本发明的处理器的一实施例中所用的体系结构寄存器模型。熟悉处理器设计领域的人员可以理解,一个处理器的体系结构状态包括各个处理器寄存器和存储器的内容。按照隐埋在处理器内的控制执行次序的一组规则,指令执行的结果在体系结构上是可以反映出来的。如图所示,体系结构寄存器模型10包括一个为所有的整数和多媒体计算提供中心资源的通用寄存器堆12。这些通用寄存器是一组共128个(64位)寄存器,编号为gr0至gr127,可为所有程序和所有特权级别所用。
应用寄存器模型10还包括一个用于所有浮点运算的浮点寄存器组14。这些浮点寄存器编号为fr0至fr127,在本发明的处理器的一种实现方式中类似地构成了一个有128个(82位)寄存器的组。图1中还示出了编号为pr0至pr63的判定寄存器15。判定寄存器15是一些用于判断和分支的单位寄存器。这些寄存器用来保持比较指令的结果,通常用于指令的条件执行。
分支寄存器堆17用来保持分支信息。例如,分支寄存器br0至br7都是64位寄存器,可以用来规定间接分支的分支目标地址。
图1中还示出了一个指令指针18,用来保持含有当前正在执行的指令的“指令束”地址。正如稍后将详细说明的那样,术语“指令束”是指组名在一个128位的字段内的三个指令和一个规格字段。
最后,寄存器模型10还包括一个应用寄存器堆19,它包括一些用于应用可视处理器功能的专用数据寄存器和控制寄存器。通常,这些寄存器由应用软件访问。可以理解,图1所示的寄存器模型可以包括其他一些类型的实现各种处理器功能的寄存器。列出本发明的处理器内所用的各种寄存器对于理解本文所揭示的新颖概念来说并不是实质性的。
现在参见图2,图中示出了表20,其列出本发明的一个实施例中的指令类型和执行指令的执行单元类型。每个指令归于六个不同类型中的一个类型。这六个不同类型的指令为:整数算术逻辑单元(ALU)指令,非ALU整数指令,存储器指令,浮点指令,分支指令,以及长立即指令。可执行这些不同类型的指令的相应类型的执行单元示于表20的最右边的那一列。这些不同类型的执行单元为:整数执行单元(I单元),存储器执行单元(M单元),浮点执行单元(F单元),以及分支执行单元(B单元)。
图3示出了在本发明的处理器内是怎样对指令编码的。图3例示了一个128位(排列成16个字节)指令束30,含有三个41位的指令隙、一个4位的规格字段和一个结束位(5位)。图3这种指令束30的格式示为结束位占用位位置0,规格字段占用位位置1-4,而指令隙1、2和3分别占用位位置5-45、46-86和87-127。
按照图3所示的指令格式,处理器指令集内的所有指令都是41位长。4位的规格字段允许对多种由不同类型的指令构成的指令序列进行编码。也就是说,规格字段规定各指令隙与执行单元类型的一一对应关系。规格字段还规定了指令束内的指令组边界。一个指令组是一组可同时执行的静连续指令(statically coniguous instruction)。例如,一个指令组没有读后写或写后写寄存器寄存器的相互依赖关系。一个指令组含有至少一个指令,而对最大的指令数没有体系结构上的限制。熟悉这技术的人员因此可理解,指令组的边界与指示束的边界没有固定的关系,它们直接由规格字段和S位静态地指出。
S位规定在当前指令束的最后一个指令(即指令隙2)后是否出现一个指令组边界。例如,在一种当前的实现方式中,如果S位置为“0”,就表示当前这个指令组将延伸入紧接的下个指令束的第一个指令(即指令隙0)。也就是说,在这个指令束的最后一个指令后没有指令组边界。相反,如果S位设置为“1”,就表示在指令束内的最后一个指令后出来一个指令组边界。
现在参见图4,图中示出了为本发明的处理器的一个实施例设计的规格字段编码和指令隙映射。如上面所述,规格字段规定了两个属性:指令束内的指令组边界,以及指令隙至执行单元类型的映射。应注意的是,并不是这两个属性的所有组合都是允许的。在本实施例中所规定的组合方式例示于图4的表40。熟悉计算机技术的人员可以理解,表40提供了对于通常在现代计算机程序中所遇到的最有用的一些指令序列的指令编码。
表40的右边三列相应于一个指令束内的三个指令隙。右边三列的每一列内列出的是受指令隙控制的执行单元类型。例如,规格6规定在指令隙0内的指令由处理器的存储器执行单元执行,在指令隙1内的指令由浮点执行单元执行,而在指令隙2内的指令由整数执行单元执行。
注意,表40包括分别与规格1和规格5关联的分开两个指令隙的双线42和43。双线42分开规格1内的指令隙1和2,而双线43分开规格5内的指令隙0和1。这些双线表示在这一点出现一个指令组边界。基本上,双线起着一个在两个相邻指令之间的结束位的作用。这意味着,例如在规格5的情况下,指令隙0的指令允许取决于指令隙1的指令。通过对规格字段编码来规定一个指令束内的两个指令之间的结束点,使编译器可以向硬件指出在代码内哪里有依从关系。熟悉计算机体系结构的人员可以理解,除了可以规定指令束间的指令组边界(通过S位)外还可以规定指令束内的指令组边界(通过规格字段1和5)是一个极有价值的处理器功能。
在一个指令束内,执行次序是从指令隙0至指令隙2。如果S位为0,含有当前指令束内最后一个指令(指令隙2)的指令组就要延续到紧接着的下个指令束内的第一个指令(指令隙0)。但是,如果S位为1,在当前指令束的最后一个指令后就出现一个指令组边界。可以理解,使用结束位在执行一个高度连贯的代码中是很有益的。例如,一个包括一个LOAD后接一个ADD再接一个STORE操作的序贯代码可以简单地依次列出,再在这三个操作后用一个S位。过去,对于序列中的每个指令都必需占用一个完全的128位条目,即使是对这个指令的编码可能只要占用一个或两个字节。
还应理解的是,按照本发明得到的程序包括一系列指令,它们按束封装并组织成由S位静态分界各指令组并且用规格规定一个指令束内的S位。指令组和指令组内的指令排序如下。指令束按最低到最高的存储器地址的次序排列。对于指令束内的指令,较低存储器地址的排在较高存储器地址的前面。
存储器内指令束的字节次序是小的在前。这意味着规格字段和S位包含在指令束的字节0内。在一个指令束内,指令和指令组按从指令隙0至指令隙2的次序排列,如图3所示。
可以将一个普通的编译器与本发明的处理器配合使用。然而,很明显要将它加以修改,以便利用上述指令编码方案的优点。概括地说,这个编译器应设计成利用规格字段来提供尽可能紧凑的代码。
熟悉该技术领域的专业人员可以理解,在图4的表40中呈现的没有使用的规格值是在所例示的实施例中所保留的。这些未使用的规格值呈现为规格3、A、D和F的一些空行。这些空的规格可用于对处理器体系结构的进一步扩展。在处理器内规定这些未使用的规格值将引起非法操作故障。
还应指出的是,对于规格2来说,在指令隙1的列中的L单元标志表示一个长立即型指令的位置标志符。此外,对于本发明的一个实施例来说,在规格2的指令隙2的列内的I单元标志限制在这个特定指令隙内只可以编入movl、break和nop这些操作。在这个指令隙内编入其他指令会导致非法操作故障。另一个限制是,在所列举的这个实施例中,如果将一个movl指令码编入一个规格2之外的I单元指令隙,就会导致非法操作故障。

Claims (31)

1.一种处理器,包括:
一个具有多个寄存器的寄存器堆;
多个执行单元,每个执行单元是多个类型中的一个类型,其中:所述执行单元被配置为接收指令集,该指令集包括访问这些寄存器的指令,每个指令是多个指令类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及
其中还把这些指令编码成一些指令束,每个指令束包括组合在一个N位字段内的多个指令和一个规格字段,这些指令分别配置在这个N位字段的一些指令隙内,而规格字段规定指令隙与执行单元类型之间对应关系,以便在指令束内的具有特定指令类型的指令被与该指令束相关联的规格字段所指定的适当执行单元所执行。
2.权利要求1的处理器,其中:所述规格字段还规定在指令束内的指令组的边界,其中一个指令组包括一组同时执行的静态接连的指令。
3.权利要求2的处理器,其中:所述指令类型包括整数算术逻辑单元、存储器、浮点和分支指令。
4.权利要求3的处理器,其中:所述指令类型还包括非算术逻辑单元整数和长立即指令。
5.权利要求4的处理器,其中:所述执行单元类型包括整数、存储器、浮点和分支执行单元。
6.权利要求5的处理器,其中:所述规格字段包括一个4位字段。
7.任何权利要求1、2、3、4、5或6的处理器,其中:所述指令束包括第一、第二和第三指令隙,每个指令束有128位长。
8.权利要求7的处理器,其中:所述第一、第二和第三指令隙各有41位长。
9.权利要求7的处理器,其中:所述指令束还包括一个规定一个指令束间指令组边界的结束位。
10.权利要求9的处理器,其中:如果所述结束位处在一个第一状态,那么当前指令束的最后一个指令后就出现一个指令组边界。
11.权利要求10的处理器,其中:如果所述结束位处在一个第二状态,那么一个含有当前指令束的最后一个指令的指令组延伸入与紧接的下个指令束有关的第一指令隙。
12.权利要求11的处理器,其中:所述当前指令束的最后一个指令包括第三指令隙。
13.权利要求9的处理器,还包括一个存储指令束的存储器,这些指令束在存储器内排列的字节次序以低地址的在前为格式,规格字段和结束位包含在指令束的第一个字节内。
14.权利要求13的处理器,其中:所述指令束在存储器内按从最低到最高存储器地址的次序排列。
15.权利要求14的处理器,其中:所述指令束内具有最低存储器地址的指令排在所述指令束内具有最高存储器地址的指令之前。
16.权利要求1的处理器,其中:所述多个寄存器包括128个寄存器。
17.一种处理器,包括:
一个具有多个寄存器的寄存器堆;
多个执行单元,每个执行单元是多个类型中的一个类型,其中:所述执行单元被配置为接收指令集,该指令集包括访问这些寄存器的指令,每个指令是多个指令类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及
并且其中还把这些指令编码成一些指令束,每个指令束包括组合在一个N位字段内的多个指令和一个规格字段,这些指令分别配置在这个N位字段的一些指令隙内,规格字段规定指令隙与执行单元类型之间的对应关系,规格字段的至少一个编码还规定本指令束内指令组的边界,而一个指令组包括一组同时执行的静态接连的指令,以便在指令束内的具有特定指令类型的指令被与该指令束相关联的规格字段所指定的适当执行单元所执行。
18.权利要求17的处理器,其中:所述指令束各有128位长,包括第一、第二和第三指令隙。
19.权利要求17的处理器,其中:所述指令类型包括整数算术逻辑单元、存储器、浮点和分支指令。
20.权利要求19的处理器,其中:所述指令类型还包括非算术逻辑单元整数和长立即指令。
21.权利要求20的处理器,其中:所述执行单元类型包括整数、存储器、浮点和分支执行单元。
22.权利要求17的处理器,其中:每个指令束还包括一个规定一个指令束间指令组边界的结束位。
23.权利要求22的处理器,其中:如果所述结束位处在一个第一状态,那么当前指令束的最后一个指令后就出现一个指令组边界。
24.权利要求23的处理器,其中:如果所述结束位处在一个第二状态,那么一个含有当前指令束的最后一个指令的指令组延伸入紧接的下个指令束有关的第一指令隙。
25.权利要求24的处理器,其中:所述当前指令束的最后一个指令包括第三指令隙。
26.权利要求22的处理器,还包括:一个存储指令束的存储器,这些指令束在存储器内排列的字节次序以低地址的在前为格式,规格字段和结束位包含在指令束的第一个字节内。
27.权利要求26的处理器,其中:所述指令束在存储器内按从最低到最高存储器地址的次序排列。
28.权利要求27的处理器,其中:所述指令束内具有最低存储器地址的指令排在所述指令束内具有最高存储器地址的指令之前。
29.权利要求17的处理器,其中:所述多个寄存器包括128个寄存器。
30.一种处理器,包括:
一个具有多个寄存器的寄存器堆;
多个执行单元,每个执行单元是多个类型中的一个类型,其中:所述执行单元被配置为接收指令集,该指令集包括访问这些寄存器的指令,每个指令是多个指令类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及
这些指令编码成一些指令束,每个指令束包括组合在一个N位字段内的多个指令、一个结束位和一个规格字段,这些指令分别配置在这个N位字段的一些指令隙内,规格字段规定指令隙与执行单元类型之间的对应关系,规格字段的至少一个编码还规定本指令束内指令组的边界,一个指令组包括一组同时执行的静态接连的指令,结束位规定指令束间指令组边界,以便在指令束内的具有特定指令类型的指令被与该指令束相关联的规格字段所指定的适当执行单元所执行。
31.一种处理器,包括:
一个具有多个寄存器的寄存器堆;
多个执行单元,每个执行单元是多个类型中的一个类型,其中:所述执行单元被配置为接收指令集,该指令集包括访问这些寄存器的指令,每个指令是多个指令类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及
这些指令还编码成一些指令束,每个指令束包括组合在一个N位字段内的多个指令和一个规格字段,这些指令分别配置在这个N位字段的一些指令隙内,规格字段规定指令隙与执行单元类型之间的对应关系,而未使用的规格字段的编码可用于处理器的进一步扩展,以便在指令束内的具有特定指令类型的指令被与该指令束相关联的规格字段所指定的适当执行单元所执行。
CNB988114925A 1997-10-13 1998-10-08 利用规格字段指令编码的处理器 Expired - Fee Related CN100390729C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/949,279 1997-10-13
US08/949,279 US5922065A (en) 1997-10-13 1997-10-13 Processor utilizing a template field for encoding instruction sequences in a wide-word format

Publications (2)

Publication Number Publication Date
CN1279783A CN1279783A (zh) 2001-01-10
CN100390729C true CN100390729C (zh) 2008-05-28

Family

ID=25488837

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB988114925A Expired - Fee Related CN100390729C (zh) 1997-10-13 1998-10-08 利用规格字段指令编码的处理器

Country Status (8)

Country Link
US (1) US5922065A (zh)
EP (1) EP1023660B1 (zh)
CN (1) CN100390729C (zh)
AU (1) AU9796498A (zh)
DE (1) DE69833008T2 (zh)
GB (1) GB0009284D0 (zh)
HK (1) HK1034333A1 (zh)
WO (1) WO1999019793A1 (zh)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP1186995B1 (en) * 1993-11-05 2003-09-03 Intergraph Corporation Instruction memory with associative cross-bar switch
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6081884A (en) * 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
US7111231B1 (en) 1999-02-24 2006-09-19 Intellisync Corporation System and methodology for dynamic application environment employing runtime execution templates
US7039790B1 (en) * 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
US6618801B1 (en) * 2000-02-02 2003-09-09 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information
US6721875B1 (en) * 2000-02-22 2004-04-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form
US6351796B1 (en) 2000-02-22 2002-02-26 Hewlett-Packard Company Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US7181595B1 (en) * 2000-05-11 2007-02-20 Mindspeed Technologies, Inc. Method for decoding composite VLIW packets utilizing a tree structure
US6687806B1 (en) * 2000-06-15 2004-02-03 Advanced Micro Devices, Inc. Apparatus and method for generating 64 bit displacement and immediate values
US6415376B1 (en) 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
US6799262B1 (en) * 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6779106B1 (en) 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US6912647B1 (en) * 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US7330830B1 (en) * 2000-10-25 2008-02-12 Thomson Financial Inc. Distributed commerce system
US7305360B1 (en) 2000-10-25 2007-12-04 Thomson Financial Inc. Electronic sales system
US7028164B2 (en) * 2000-12-29 2006-04-11 Stmicroelectronics, Inc. Instruction fetch apparatus for wide issue processors and method of operation
GB2374950B (en) * 2001-04-23 2005-11-16 Imagination Tech Ltd Expanded functionality of processor operations within a fixed width instruction encoding
JP4542722B2 (ja) * 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
US7062634B1 (en) * 2002-01-29 2006-06-13 Stmicroelectronics Limited Processor and a method for handling and encoding no-operation instructions
US6948053B2 (en) 2002-02-25 2005-09-20 International Business Machines Corporation Efficiently calculating a branch target address
US7577944B2 (en) * 2002-03-18 2009-08-18 Hewlett-Packard Development Company, L.P. Unbundling, translation and rebundling of instruction bundles in an instruction stream
EP1367484B1 (en) 2002-05-31 2013-07-24 STMicroelectronics Limited Instruction encoding
US7203821B2 (en) * 2003-01-08 2007-04-10 Sun Microsystems, Inc. Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US9047094B2 (en) * 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
GB2414308B (en) * 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US20080162819A1 (en) * 2006-02-03 2008-07-03 Luick David A Design structure for self prefetching l2 cache mechanism for data lines
US7447879B2 (en) * 2006-02-09 2008-11-04 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US8812822B2 (en) * 2006-02-09 2014-08-19 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US20080162894A1 (en) * 2006-12-11 2008-07-03 Luick David A structure for a cascaded delayed execution pipeline
US8756404B2 (en) * 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US20080141252A1 (en) * 2006-12-11 2008-06-12 Luick David A Cascaded Delayed Execution Pipeline
US8001361B2 (en) * 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US20090198976A1 (en) * 2008-02-06 2009-08-06 Austel Vernon R Method and structure for high-performance matrix multiplication in the presence of several architectural obstacles
US20090210669A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Prioritizing Floating-Point Instructions
US8108654B2 (en) * 2008-02-19 2012-01-31 International Business Machines Corporation System and method for a group priority issue schema for a cascaded pipeline
US8095779B2 (en) * 2008-02-19 2012-01-10 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
US20090210672A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7877579B2 (en) * 2008-02-19 2011-01-25 International Business Machines Corporation System and method for prioritizing compare instructions
US7984270B2 (en) * 2008-02-19 2011-07-19 International Business Machines Corporation System and method for prioritizing arithmetic instructions
US20090210666A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Resolving Issue Conflicts of Load Instructions
US7865700B2 (en) * 2008-02-19 2011-01-04 International Business Machines Corporation System and method for prioritizing store instructions
US20090210677A1 (en) * 2008-02-19 2009-08-20 Luick David A System and Method for Optimization Within a Group Priority Issue Schema for a Cascaded Pipeline
US7870368B2 (en) * 2008-02-19 2011-01-11 International Business Machines Corporation System and method for prioritizing branch instructions
US7882335B2 (en) * 2008-02-19 2011-02-01 International Business Machines Corporation System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline
US7996654B2 (en) * 2008-02-19 2011-08-09 International Business Machines Corporation System and method for optimization within a group priority issue schema for a cascaded pipeline
KR101645001B1 (ko) 2009-02-18 2016-08-02 삼성전자주식회사 Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013179085A1 (en) * 2012-05-29 2013-12-05 Freescale Semiconductor, Inc. Processing system and method of instruction set encoding space utilization
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
EP2866138B1 (en) * 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures
FR3021427B1 (fr) * 2014-05-22 2016-06-24 Kalray Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions
US10606587B2 (en) * 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
FR3056782B1 (fr) * 2016-09-26 2019-12-13 Airbus Operations Generation de codes applicatifs a partir d'une specification formelle

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
DE69431998T2 (de) * 1993-11-05 2004-08-05 Intergraph Hardware Technologies Co., Las Vegas Superskalare Rechnerarchitektur mit Softwarescheduling
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5826054A (en) * 1996-05-15 1998-10-20 Philips Electronics North America Corporation Compressed Instruction format for use in a VLIW processor
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs

Also Published As

Publication number Publication date
WO1999019793A1 (en) 1999-04-22
DE69833008T2 (de) 2006-08-31
US5922065A (en) 1999-07-13
DE69833008D1 (de) 2006-02-02
HK1034333A1 (en) 2001-10-19
EP1023660A1 (en) 2000-08-02
GB0009284D0 (en) 2000-05-31
CN1279783A (zh) 2001-01-10
AU9796498A (en) 1999-05-03
EP1023660B1 (en) 2005-12-28
EP1023660A4 (en) 2001-08-01

Similar Documents

Publication Publication Date Title
CN100390729C (zh) 利用规格字段指令编码的处理器
EP0454985B1 (en) Scalable compound instruction set machine architecture
US5465377A (en) Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US7953955B2 (en) Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
EP0073424B1 (en) Central processing unit for executing instructions of variable length
US20060174089A1 (en) Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
EP1247196A1 (en) System for dynamic vliw sub-instruction selection for execution time parallelism in an indirect vliw processor
CN110321159A (zh) 用于实现链式区块操作的系统和方法
WO2000038082A1 (en) Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
WO2004053718A1 (en) Cellular engine for a data processing system
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US5265258A (en) Partial-sized priority encoder circuit having look-ahead capability
WO2003058433A1 (en) Multiple function unit processor using distributed variable length instruction words
EP0206653B1 (en) Method and means for loading and storing data in a reduced instruction set computer
US6105126A (en) Address bit decoding for same adder circuitry for RXE instruction format with same XBD location as RX format and dis-jointed extended operation code
EP0843848A2 (en) Vliw processor which processes compressed instruction format
CA1254661A (en) Method and means for instruction combination for code compression
EP0363174A2 (en) Branch on bit processing
CN112130899A (zh) 一种堆栈计算机
CN109918339B (zh) 一种针对粗粒度可重构结构的基于相似性的指令压缩方法
CA2040637C (en) Compounding preprocessor for cache
JPH01133138A (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
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1034333

Country of ref document: HK

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

Granted publication date: 20080528

Termination date: 20171008

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