CN1127018C - 为多个电路模块分配指令的方法和装置 - Google Patents

为多个电路模块分配指令的方法和装置 Download PDF

Info

Publication number
CN1127018C
CN1127018C CN99808943A CN99808943A CN1127018C CN 1127018 C CN1127018 C CN 1127018C CN 99808943 A CN99808943 A CN 99808943A CN 99808943 A CN99808943 A CN 99808943A CN 1127018 C CN1127018 C CN 1127018C
Authority
CN
China
Prior art keywords
instruction
word
internal memory
command
control
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
CN99808943A
Other languages
English (en)
Other versions
CN1310818A (zh
Inventor
C·哈马
M·雅各布松
S·哈坎松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Clastres LLC
WIRELESS PLANET LLC
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN1310818A publication Critical patent/CN1310818A/zh
Application granted granted Critical
Publication of CN1127018C publication Critical patent/CN1127018C/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
    • 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/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Advance Control (AREA)
  • Read Only Memory (AREA)

Abstract

一种将指令存储在内存字中的指令存储器。每个指令有一个标号字段和操作字段。为减少存储在指令存储器中的信息数量,对指令进行合并。控制单元对指令进行翻译并存储指令在被合并清楚时的顺序。控制单元根据标号字段中的信息将操作字段安排为控制字中的指令。当指令被压缩到指令存储器中时,不是并行执行的指令可以被存储在相同的内存字中,并行执行的指令可以被存储在不同的内存字中。控制字中指令的顺序由标号字段中的信息来决定,例如该指令是否与前面的指令并行执行等。一些指令组通过解码产生实时的控制字或是跳转指令的目标的控制字,它们被排在内存字的边缘,以便使那些形成控制字的指令能够在一个单时钟周期内被读出。可以通过在前面的存储器字中插入一个特定的编码或一个无效指令将指令组排列在内存字的边界。指令可以被放置在一个指令组中,以进一步较少指令存储器的大小。如果一个条件指令是一组指令中的第一条指令,则该条件适用与该组中的所有指令。如果条件指令不是指令序列中的第一条指令,则该条件仅适用于其前面紧相连接的一条指令。

Description

为多个电路模块分配指令的方法和装置
发明背景
本发明涉及数据处理,更具体涉及存储于一个单片存储器中的指令。
随着半导体技术的发展,可以做到将复杂的电路模块集成于单一的芯片、芯片组或电路板中。一个单片可以有输入输出单元、数据路径操作器、内存单元和控制单元。不同的电路模块执行不同功能(或操作)。控制结构的工作是保证特定的电路模块在特定的时间里进行特定的操作。
一个电路模块的例子是加法器。加法器是用于计数、过滤和做乘法。寄存器常用于加法器的输入和输出来保证输入和输出在相同的时间到达。另一个电路模块的例子是乘法器。乘法器是用于数字信号处理操作来进行相关、卷积、滤波和频率分析。
其它电路模块的例子包括奇偶发生器、比较器、0/1检测器、布尔运算器、算术逻辑单元(ALUs)和移位器。奇偶发生器是用来确定在一个输入字中1的个数是奇数还是偶数。比较器用于比较两个二进制数字值的大小。0/1检测器用于确定一个数字是否全部由1和全部由0组成。二进制计数器是用于进行一个二进制数字序列的循环。移位器对算术移位、逻辑移位和旋转功能来讲是很重要的。
在其它组件中,内存单元是用于存储输入到电路模块和从电路模块输出的指令。内存单元通常分为三类:随机存取存储器、串行存取存储器和内容存取存储器(content memory)。随机存取存储器常被定义为存取时间与数据的物理位置无关的存储器。在通常的随机存取存储器的类别中,有两个子类:只读存储器(ROM)和读/写存储器。术语RAM常指读/写存储器。RAM常用于存储电路模块的输出。
短语″数据处理″是指在两个电路模块中移动数据以实现特定的功能。这种数据移动是通过一个在每一个时钟周期开始时发出新的指令的控制结构来协调的。有些系统采用一个SISD(单指令流单数据流)控制单元,其中每次处理一个指令。因为仅有一个指令,SISD系统的效率通常可以通过增加指令字的长度或增加时钟频率来得到提高。
在超级标量(superscalar)系统中,控制单元可以通过同时执行两个或多个指令(并行),在同一时钟周期内操作两个或多个电路模块。如果有N个电路模块,在理论上超标量系统可以在同一个时钟周期内操作N个电路模块。因为有多个指令,超标量控制单元通常比SISD控制单元更有效。
术语″流水线技术″是指从一个单片存储器取回(获取)指令并对这些指令进行解码来及时组织这些指令,对不同的电路模块进行操作。控制单元可以把解码的指令存储在一个如同流水线级的指令路径中。指令路径可以分为不同的级,如指令获取、指令解码、寄存器读取、执行、和/或写。控制单元可以进行比较操作,允许忽略或保证在适当的序列中产生某些操作。
大多数的系统使用通常所谓的甚长指令字(VLIW)控制器。在一个VLIW控制器中,控制程序以特定的字的形式被存储在一个单片存储器中,每一个字对应于一个单独的时钟周期。每一个VLIW针对每个电路模块,即使是那些对于当前的VLIW来讲是非活动的电路模块,都有至少一个位字段。VLIW控制器的一个问题是当电路模块增加时,控制程序的长度和规模也会增加。在特别复杂的系统中,没有足够的芯片空间来存储控制程序。如果没有超比例地大量增加芯片来存储指令,要管理每一个电路模块是不可能的。
在大多数的系统中,在每一个时钟周期中只有小的电路模块子集是活动的。结果是,每个VLIW中只有一小部分是实际使用的。换句话说,控制字比需要的要长,有价值的的芯片区域被浪费了。在一些应用中,这种情况不可能再适用于单片上的指令存储器。这就需要能够管理多个电路模块和能够发出并行指令而不浪费有用芯片区域的控制结构和指令存储器。
概述
对于常规的控制单元和指令存储器,这些或其它的缺陷、问题和限制可以通过合并指令从而减少存储于指令存储器中的信息量来克服。控制单元翻译这些指令并恢复由合并而移除的顺序。
按照本发明的一个方面,指令被连续地存储到指令存储器中的内存字中。每个指令都有一个标号字段和操作字段。一个控制单元接收一个指令组,这组指令被统称为一个内存字。控制单元解码这些指令并根据标号字段中的信息把操作字段作为指令安排到控制字中。控制单元把控制字存储在一个寄存器中并从寄存器中把控制字分配到多个电路模块中。
当指令被压缩到指令存储器中时,非并行执行的指令可以存储在相同的内存字中。并行的指令可以存储在不同的内存字中。指令在控制字中的顺序由标号字段中的信息来决定,比如当前指令是否是与前面的指令是并列执行的等。
按照本发明的另一个方面,经解码后形成时敏(time sensitive)控制字或作为跳转指令的目标的控制字的指令组被排列在内存字的边缘。如果指令组起始于一个内存字,结束于另一个内存字,控制单元就要读入这两个内存字。如果这组指令是跳转指令的目标,需要两个时钟周期才能使指令组完全可用。在实时的应用中,要等待两个时钟周期才能使指令组完全可用是不利的。然而,如果指令组被排列在内存字的边缘,控制单元只需读入一个内存字,控制字会很快变得可用。在一个特别的实施方案中,一个特殊代码或一个非法指令被插入到前面的内存字中,以使该指令组在下一个内存字的起始处开始。
按照本发明的另一个方面,指令被放置在一个指令组中,以便进一步减小指令存储器的大小。例如,一个条件指令为一条要求一个特定的电路模块进行条件衡量的指令。如果条件为真,则执行其它指令。在本发明得一个规范的实施方案中,如果一个条件指令是一个指令组的第一条指令,那么该条件适用于该组中所有的指令。如果条件指令不是指令组中的第一条指令,则条件仅适用于其前面紧相连接的一条指令。换句话说,指令在组中的位置体现出附加的信息。
本发明的一个优势是指令存储器不用浪费有用的芯片区域去为非活动的电路模块存储指令。指令存储器最小化,以便使得所用的芯片区域最少。
本发明的另一个优势是在一个特定的系统中,不管并行的数目(独立路径或流水线的数目)的多少,都可使用同样的控制器和同样的一套指令。
本发明的另一个重要的优势是同样的控制字段可以与重复使用许多相同的电路模块的略有不同的芯片一同使用。电路模块的重复使用对于减少开发新系统所需的时间和费用是很重要的。
本发明的另一个优势是在实时应用中,指令组可以排列在内存字的边缘以使其可以在一个单独得时钟周期里被读取。
附图简述
借助于下面的附图可以更容易地了解本发明的上述的和其它的属性,特征和优势,其中:
图1是一个具有控制单元的系统的方框图;
图2概要示出将指令作为内存字存储在指令存储器中;
图3概要示出控制单元对指令进行的排序;
图4概要示出当一条指令表明形成下一个的内存字的指令组起始于内存不同位置并且该指令组没有排列在内存字的边缘时,控制单元对其进行的指令排序;
图5概要示出在一个指令存储器中存储形成一个控制字的指令组,该指令组是有选择地排列在内存字的边缘;和,
图6概要示出当一条指令表明一个形成下一个的内存字的指令组起始于内存不同位置,并且该指令组是有选择地排列在内存字的边缘时,控制单元进行的指令排序。
发明详述
在下面的说明中,为了对本发明有一个透彻的了解,对本发明的特定的细节进行了阐述。然而,对于在该领域的熟练人员来讲,本发明很明显是可以用于这些特定细节之外的其它的实施方案中。在其它的实例中,众所周知的方法的细节说明和电路被省略,以便使不必要的细节对本发明的描述造成混淆。
图1是一个具有控制单元20的系统的方框图。控制单元20有一个解码器22和一个序列发生器24。指令存储器10是一个用来以位字段形式存储指令的芯片存储器。一些指令是控制-转移指令,例如跳转或调用指令,一些指令是ALU类指令,例如算术和逻辑操作。每个指令至少有两个部分:一个标号字段和一个操作字段。
控制单元20传送一个地址41到指令存储器10来取回指令42。控制单元20从指令存储器10中接收到一套统称为内存字的指令。控制器20利用解码器22对内存字进行解码。一个序列发生器24根据标号字段的信息把操作字段以指令的形式安排在控制字中。序列发生器24把每个指令字存储在流水线寄存器(图中没有显示)中。指令的顺序取决于指令42、来源于芯片60的其余部分的条件61,和来源于电路模块51-59的条件。
一个控制字是一套并行(或在一个单独时钟周期)执行的指令。指令被解码形成控制字作为内存字的一部分被连续地存储到指令存储器10中。通过去除不必要的位字段和合并同一内存字中那些可能或不可能并列执行的指令来减小指令存储器10大小。一个被解码形成控制字的指令组可以起始于一个内存字而结束于下一个内存字。因为指令被压缩到指令存储器10中,一个指令的标识不再是由它在内存字中的位的位置来提供。取而代之的是,序列发生器24利用每个指令的标识字段来及时组织解码后的指令并恢复其由合并而移除的顺序。
当控制单元20从指令存储器10接收到一套指令时,控制单元20可以利用标识字段来识别相应的操作字段的长度。例如,如果每个标识字段表明该指令是否是同前面的指令是并行执行的,控制单元20就可以用这个信息来辨别一个解码后产生控制字的指令组的起始和结尾。控制单元20可以利用标识字段、操作字段、或指令在一个指令组中的位置,来确定将要执行相应的操作字段的电路模块。如果一个指令组没有指向特定电路模块的指令,则控制单元20就会得知该电路模块暂时是非活动的。如果一个电路模块是非活动的,它将一直保持为非活动状态直到有一个控制字通过一条指令指向它。
控制单元20为时钟30的每一个时钟周期发出一个控制字到控制总线43上。控制单元20从存储器10预取指令42,其速率足以在时钟30的每个周期中得到一个完整的控制字。控制字被送到电路模块51,52,53,和59。控制字可以指示电路模块51,52,53,或59在系统数据总线44上发送或取得数据。控制字可以指示电路模块51,52,53,或59处理或管理数据总线44上的接收到的数据。控制单元20可以有多序列发生器和/或多流水线寄存器。系统可以有多重控制总线和/或多数据总线。
控制单元20给活动的电路模块发出带有指令的控制字。如果一个形成控制字的指令组没有一条指向一个特定电路模块的指令,那么控制单元20就会得知该电路模块暂时是非活动的。如果一个电路模块是非活动的,则电路模块会一直保持非活动状态,直到有一个控制字带有一条指向它的指令为止。例如,如果控制单元20解码一个形成一个控制字的指令组并且该组指令包含针对电路模块51和52的指令,但是没有指令指向53和59,则控制单元20发出一个带有指向电路模块51和52的指令的控制字。
图2概要示出把指令作为内存字存储到指令存储器中。如图2中所示,指令存储器10存有内存字11,12,13,14,15,…,和19。指令71,72,…,和85被解码并排列形成控制字。在一些应用中,控制字有一个受诸如数据和控制总线等可用硬件资源限制的最大长度。控制字的最大长度也受在一个单独时钟周期内控制单元从指令存储器中所能读取的位数的限制。
在一个典型的实施方案中,控制字长度是基本长度如8位或16位的倍数。例如,在图2中,在一个单独时钟周期内读取的最大数据长度为64位。内存字长是64位而指令是16或32位长。一个指令组被解码形成一个可以是16,32,48,或64位长的控制字,也就是,一个,两个,三个,或四个指令长。一个控制字可能开始于一个内存字而结束于下一个控制字。例如,如果指令71形成第一个控制字,指令72,73,74,和75可以形成下一个控制字。
内存字11是由指令71,72,73,和74形成的。指令71,72,73,和74可以形成控制字。如果指令71,72,73,和74解码形成一个控制字,那么指令71,72,73,和74在同一个时钟周期中执行(并行)。每个指令至少由两个部分:一个标号字段和一个操作字段。在一个典型的实施方案中,标号字段的长度是4-7位。标号字段可以确定操作字段应指向那一个电路模块。例如,如果指令71被指向电路模块51,则指令71的标号字段确定电路模块51为执行该操作的电路模块。如果内存字11没有指向一个特定电路模块的指令,则控制单元20会得知该电路模块暂时是非活动的。有些指令是指向控制单元20的。如果一条指令是指向控制单元20,则无需发送控制总线43上的指令。
控制字的长度是有个标号字段呈现的信息来决定的。标号字段可以提供在常规下要通过指令在一个长控制字中的位的位置来提供的信息。除了确定操作字段要指向的电路模块之外,标号字段还可以指明一条指令是否与紧相连接的前面一条指令并行执行。如果两条指令是并行执行的,则它们产生同一控制字的局部。指令的解码和排序是由控制单元20来执行的。例如,如果指令71,72,73,74产生一个控制字,则指令72,73,和74的标号字段表明指令72,73,和74是应与前面一条紧相连接的指令并行执行的。然而,如果指令74不是同一个控制字的部分,则指令74的标号字段表明指令74不是与前面紧相连接的指令73并行执行的。
一个控制字可以有几种不同类型的指令。一条指令通常是四中基本操作中的一种。移动指令控制电路模块间的数据移动。操作指令控制由电路模块执行的操作。程序流指令控制指令的排序。条件指令用来评价条件。一条指令也可以是几种不同类型的组合。
在本发明的一个典型的实施方案中,指令被放置在一个指令组中,指令组经解码产生一个控制字以便传授附加的信息并进一步减少指令存储器的大小。例如,附加信息产生的操作可以由其在指令组中的位置来决定。例如,如果条件指令是组中的第一条指令,那么条件适用于该组中的所有的指令。就是说,如果条件为真,下面的所有指令都将被执行。另一方面,如果条件指令不是组中的第一条指令,则该条件仅使用于前面紧相连接的指令。
图3概要示出控制单元对指令进行排序的过程。指令在控制单元中的排序由来自于电路模块和芯片其余部分的指令和条件来决定。在一个典型的实施方案中,有三个流水线阶段:指令获取阶段,指令解码阶段,和执行/写入阶段。在指令获取阶段,从指令存储器中读出一个内存字,产生内存字的指令被存储到流水线寄存器中。在解码阶段,控制单元读出每个标号字段并根据标号字段中的信息将每个相应的操作字段放置到控制字中,操作字段被放置到控制字中以便恢复指令在被压缩到指令存储器中时所移除的位置信息。在执行/写入阶段,控制字被传递给电路模块。电路模块进行数据移动和其它的操所。结果数据被存储到目的寄存器或存储器中。
在图3所示的例子中,控制单元在时钟周期0中取得内存字11(示于图2中)。如上面所述,控制单元以每一个时钟周期内足以得到一个完整的控制字的速率从指令存储器中预取内存字并将其存储到一个流水线寄存器中。在时钟周期1中,控制单元取得内存字12(示于图2中)而内存字11被解码。在时钟周期2中,控制单元取得内存字13(示于图2中)而内存字12被解码,如果可得到一个完整的控制字,则指令被传递给电路模块。在时钟周期3中,控制单元取得内存字14(示于图2中),解码内存字13,执行下一个控制字。在时钟周期4中,控制单元取得内存字15(示于图2中),解码内存字14,执行下一个控制字。注意在有些情况下,一个控制字可能开始于一个内存字而结束于下一个内存字。在所示的例子中,指令81,82,和83被解码形成一个控制字。这样,即使指令81在时钟周期3中被解码,也要等到时钟周期5时才可执行。将要并行操作的指令得要等到所有这些指令都是可用时方可执行。
通常,按照与存入存储器10时的相同的顺序,指令被解码产生控制字。然而,存储器10中可以有些指令表明下一个控制字开始于存储器的不同的位置。例如,一个经解码产生一个控制字的指令组可以是一个跳转指令的目标。如果其中一条指令是跳转指令的目标,则该指令组应排列在内存字的边缘。
图4概要示出当一条指令表明一个产生下一个控制字的指令组开始于存贮器的不同的位置并且该指令组并不是排列在内存字的边缘时,控制单元对指令的排序。在所示的例子中,指令81是由指令81,82,和83的形成的控制字中的第一条指令。在图2所示的例子中,指令81存储在内存字13中,而指令82和83存储在内存字14中。
在时钟周期0内,如果执行一条跳转指令并且指令81是跳转指令的目标,则控制单元读取的下一个内存字是内存字13。然而,指令81,82,和83不是全部存储在内存字13中。这意味着要使该控制字完全可用,需要占用两个时钟周期。在时钟周期2期间,控制单元读取内存字14。因为读入产生该控制字所需的指令要占用两个时钟周期,在时钟周期3中控制字还没有就绪。在实时的应用中,一个控制字应该是对每一个时钟周期来讲都是就绪的。这样,那些经解码形成时间敏感的控制字的指令组应该排列在内存字的边缘,以便在一个单独的时钟周期内指令组可以被读取。
图5概要示出的是将一个产生一个控制字的指令组存储到一个指令存储器的过程,该指令组在指令存储器中是有选择地排放在内存字的边缘。在所示的例子中,指令81是由指令81,82,和83形成的控制字中的第一条指令。在图2中,指令81是内存字13中的最后一条指令。在图5中,指令90被插入到内存字13中。结果,指令81是内存字14中的第一条指令。
有许多不同的插入填充一个内存字的方法。指令90可以是任意一个通过编程使控制单元识别的特殊的指令代码。另一种插入一个信息字的方法是使用一个非法代码。控制单元可以通过仅查看指令标号字段的几个位既可识别指令的标号字段指令90为一个非法指令。
控制单元确定指令90为非法指令的另一种方法是,指令90是否超过一个可解码产生控制字的指令组的最大长度和一个控制字的最大长度中的一个。如果指令77,78,79和80形成一个控制字,那么指令90会超过一个最大长度。如果标号字段的一个位表示指令90是可以与指令77,78,79,和80并列执行的,则控制单元就会得知指令90是一个非法指令,而下一个控制字开始于下一个内存字的起始处。
另一个插入信息字的方法是用一个程序流指令。在一些典型的实施方案中,程序流指令常常是一个指令组的第一条指令。如果一个程序流指令不是一个指令组中的第一条指令,那么控制单元就会知道该程序流指令是一条非法指令。指令组也可以被编排以使得每个内存字只有一个程序流指令。如果有多于一个的程序流指令,则控制单元就会得知第二个程序流指令是一个非法指令。当控制单元读到一个特殊的代码或一条非法指令时,控制单元就会得知下一个控制字开始于下一个内存字的起始处。
图6概要示出当一个指令表示一个产生下一个控制字的指令组开始于存储器的不同位置而该指令组是被有选择地排放在内存字的边缘时,控制单元对指令进行的排序。在所示的例子中,指令81是由指令81,82,和83形成的控制字的第一条指令。如同图5中所存储的那样,指令81是内存字14中的第一条指令。结果,该组指令81,82,和83可以在一个单独的时钟周期内被读取。
在时钟周期0中,如果执行一条跳转指令而指令81是跳转指令的目标,则控制单元读取的下一个内存字是内存字14。在时钟周期1中,控制单元读取内存字14。与图4不同,产生控制字的指令组在一个单独的时钟周期被读取。在时钟周期2中,内存字14被解码,而在时钟周期3中,由指令81,82,和83形成的控制字被执行。与图4不同,每一个周期有一个控制字就绪。尽管控制字可能开始于一个内存字而结束于下一个内存字,那些经解码形成时间敏感的控制字的指令组应该排放在内存字的边缘。
因为标号字段可以提供关于指令的长度和操作字段指向的电路模块的信息,指令存储器和控制单元可以同其它的电路模块一起重复使用。类似地,电路模块也可以同其它的指令存储器和控制单元一起重复使用。
前面的对于首选的实施方案的描述是为了能够使任何该技术领域的熟练人员利用本发明。对那些在该项技术上熟练的人员来讲,显然很容易对这些实施方案加以修改,可以在不背离本发明的范围和实质的前提下使用这些原理。这样,本发明不局限于所介绍的实施方案,但是不能超出下面的权利声明的最大范围。

Claims (15)

1.一种为多个电路模块分配指令的装置,装置包括:
一个指令存储器,用于在内存字中连续存储多个指令,多个指令中每一个包括一个标号字段和一个操作字段;
一个控制单元,用于从指令存储器中检索内存字,解码内存字,基于标号字段中的信息将操作字段安排为控制字中的指令,和存储控制字到一个寄存器中;和
和寄存器连接,用于从寄存器分配控制字给多个电路模块的。
2.如权利要求1的装置,其中,可以通过在一个内存字中合并那些并列执行的指令和不被并列执行的指令来减小指令存储器的大小。
3.如权利要求2的装置,其中一个被解码形成控制字的指令组的标号字段表示控制字起始于第一内存字而结束于第二内存字。
4.如权利要求3的装置,其中每个标号字段表明一条具体指令是否与指令存储器中的上一条指令是并列执行的。
5.如权利要求1的装置,其中一个经解码后形成控制字的指令组包括一个标记,所述标记将指令组和一个分开第一内存字和第二内存字的内存字边界对齐,这样确保该指令组不是起始于所述第一内存字而结束于所述第二内存字。
6.如权利要求5的装置,其中将指令组和内存字边界对齐的标记,包括一个插入第一内存字中的特殊代码,所述特殊代码向控制单元指明下一个控制字起始于第二内存字。
7.如权利要求5的装置,其中将指令组和内存字边界对齐的标记,包括一个被插在第一内存字中的非法指令,所述非法指令向控制单元指明下一个控制字始于第二内存字。
8.如权利要求7的装置,其中每个控制字有一个预定最大的允许长度,由于包括非法指令使控制字的长度超过了所述预定最大允许长度,控制单元识别出所述非法指令。
9.如权利要求1的装置,其中有不同类型的指令,有一种类型为跳转指令,所述跳转指令指明下一个控制指令始于一个目标指令而非下一个连续指令;和,
所述目标指令在一个指令组中,和将目标指令与下一个存储字分开的存储字边界相对齐。
10.如权利要求1的装置,其中其中有不同类型的指令,有一种类型为指示一个电路模块评估一个条件的指令,如果条件为真,至少一条存储在指令存储器的其它的指令被执行,如果条件被假,则至少有一条指令不被执行。
11.如权利要求10的装置,其中如果一条条件指令是一个经解码后形成控制字的指令组中的第一条指令,则该条件适用于该指令组中的所有指令。
12.如权利要求10的装置,其中如果一条条件指令不是一个经解码后形成控制字的指令组中的第一条指令,则该条件不能适用于该指令组中的所有指令。
13.一种为电路模块提供指令的方法,该方法包括以下步骤:
在一个指令存储器中以内存字的形式存储多条指令,指令包括一个标号字段和一个操作字段;
从指令存储器中取回一个内存字;
解码内存字;
基于标号字段中的信息,将一条指令的操作字段放置到寄存器的一个位置;和,
从寄存器中将指令提供给电路模块。
14.如权利要求13的方法,进一步包括如下步骤:
通过合并一个内存字中那些可能或不可能并行执行的指令来减小指令存储器的大小。
15.如权利要求14的方法,进一步包括一个填充一个内存字的步骤,以使得一个将被并行执行的指令组存储在同一个内存字中。
CN99808943A 1998-05-29 1999-05-18 为多个电路模块分配指令的方法和装置 Expired - Fee Related CN1127018C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/086,618 US6345355B1 (en) 1998-05-29 1998-05-29 Method and apparatus for distributing commands to a plurality of circuit blocks
US09/086,618 1998-05-29

Publications (2)

Publication Number Publication Date
CN1310818A CN1310818A (zh) 2001-08-29
CN1127018C true CN1127018C (zh) 2003-11-05

Family

ID=22199787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN99808943A Expired - Fee Related CN1127018C (zh) 1998-05-29 1999-05-18 为多个电路模块分配指令的方法和装置

Country Status (8)

Country Link
US (1) US6345355B1 (zh)
EP (1) EP1080399A2 (zh)
JP (1) JP4169931B2 (zh)
KR (1) KR100612193B1 (zh)
CN (1) CN1127018C (zh)
AU (1) AU765179B2 (zh)
CA (1) CA2333563C (zh)
WO (1) WO1999063417A2 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP1102165A1 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Microprocessor with execution packet spanning two or more fetch packets
CN105446700B (zh) * 2014-05-30 2018-01-02 华为技术有限公司 一种指令执行方法以及顺序处理器
CN109947479A (zh) * 2019-01-29 2019-06-28 安谋科技(中国)有限公司 指令执行方法及其处理器、介质和系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692139A (en) 1988-01-11 1997-11-25 North American Philips Corporation, Signetics Div. VLIW processing device including improved memory for avoiding collisions without an excessive number of ports
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0825529A3 (en) 1990-05-04 1998-04-29 International Business Machines Corporation System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5163139A (en) 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
DE69130757T2 (de) * 1990-11-30 1999-07-29 Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa Ausführungsvorrichtung für bedingte Verzweigungsbefehle
US5446850A (en) 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
JP2642529B2 (ja) 1991-04-30 1997-08-20 株式会社東芝 並列プロセッサーの命令分配処理装置
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JPH0793152A (ja) 1993-09-20 1995-04-07 Fujitsu Ltd マイクロプロセッサ制御装置
DE69422780T2 (de) 1993-11-05 2000-08-17 Intergraph Corp., Huntsville Superskalare Rechnerarchitektur mit Softwarescheduling
JPH07219769A (ja) 1994-02-07 1995-08-18 Mitsubishi Electric Corp マイクロプロセッサ
US6009508A (en) * 1994-06-21 1999-12-28 Sgs-Thomson Microelectronics Limited System and method for addressing plurality of data values with a single address in a multi-value store on FIFO basis
US5724331A (en) * 1994-08-25 1998-03-03 Discovision Associates Disk drive system having improved cartridge-loading apparatus including direct drive gear train and methods for making and operating same
US5742784A (en) 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
WO1999063417A2 (en) 1999-12-09
KR100612193B1 (ko) 2006-08-16
EP1080399A2 (en) 2001-03-07
WO1999063417A3 (en) 2000-03-16
CA2333563A1 (en) 1999-12-09
JP2002517811A (ja) 2002-06-18
CN1310818A (zh) 2001-08-29
CA2333563C (en) 2011-07-12
US6345355B1 (en) 2002-02-05
AU4661499A (en) 1999-12-20
AU765179B2 (en) 2003-09-11
KR20010043891A (ko) 2001-05-25
JP4169931B2 (ja) 2008-10-22

Similar Documents

Publication Publication Date Title
US6275920B1 (en) Mesh connected computed
CN100390729C (zh) 利用规格字段指令编码的处理器
CN1074771A (zh) 带有并行执行指令的装置的微处理机
EP0454984B1 (en) General purpose compounding technique for instruction-level processors
CN1267819C (zh) 计算机系统内部处理指令的装置
US6173388B1 (en) Directly accessing local memories of array processors for improved real-time corner turning processing
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
CN1021144C (zh) 带有指令标识装置的数据处理系统
US7383422B2 (en) Very long instruction word (VLIW) computer having an efficient instruction code format
CN1126027C (zh) 处理不同宽度的命令的vliw处理器
Li et al. Accelerating binarized neural networks via bit-tensor-cores in turing gpus
EP0405759A2 (en) Sort accelerator using rebound sorter as merger
Stehle et al. ParPaRaw: Massively parallel parsing of delimiter-separated raw data
CN1127018C (zh) 为多个电路模块分配指令的方法和装置
CN1194301C (zh) 用于计算机算术运算的部分匹配部分输出高速缓冲存储器
CN1426547A (zh) 基于流水线体系结构的微控制器的对抗方法
CN1816798A (zh) 用于单指令多数据管理的方法和计算机程序
CN1196522A (zh) 带转移模式字段的转移历史表
Hall A reversible instruction set architecture and algorithms
CN1531680A (zh) 在程序控制流中实现改变的装置和方法
CN1650258A (zh) 可扩展处理器中的自动任务分配
CN1089921C (zh) 中央处理装置
EP0365186A2 (en) Apparatus for enhanced tagged data processing in a generalized computer execution unit
CN115729752A (zh) 一种寄存器检查方法及装置、存储介质
CN116910770B (zh) 一种基于密度的固件基址识别系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: UNWIRED PLANET INC.

Free format text: FORMER OWNER: CLUSTER CO., LTD.

Effective date: 20130715

Owner name: CLUSTER CO., LTD.

Free format text: FORMER OWNER: TELEFONAKTIEBOLAGET LM ERICSSON (SE) S-126 25 STOCKHOLM, SWEDEN

Effective date: 20130715

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

Effective date of registration: 20130715

Address after: Nevada

Patentee after: Wireless Planet LLC

Address before: Delaware

Patentee before: Clastres LLC

Effective date of registration: 20130715

Address after: Delaware

Patentee after: Clastres LLC

Address before: Stockholm

Patentee before: Telefonaktiebolaget LM Ericsson

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

Granted publication date: 20031105

Termination date: 20160518

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