CN101027635A - 其中功能单元共用读取端口的数据处理电路 - Google Patents

其中功能单元共用读取端口的数据处理电路 Download PDF

Info

Publication number
CN101027635A
CN101027635A CNA2005800320526A CN200580032052A CN101027635A CN 101027635 A CN101027635 A CN 101027635A CN A2005800320526 A CNA2005800320526 A CN A2005800320526A CN 200580032052 A CN200580032052 A CN 200580032052A CN 101027635 A CN101027635 A CN 101027635A
Authority
CN
China
Prior art keywords
functional unit
register
inbound port
result
port
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.)
Pending
Application number
CNA2005800320526A
Other languages
English (en)
Inventor
A·A·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.)
Koninklijke Philips NV
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 CN101027635A publication Critical patent/CN101027635A/zh
Pending 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
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种数据处理电路,包括具有读取端口和写入端口的寄存器文件(14)。多个功能单元(21a-c)被耦合以从读取端口的相同组合中接收操作对象数据。每个功能单元耦合到各个写入端口以写入各自的结果。指令发布槽具有用于向所述组合读取端口和向各个写入端口供给寄存器选择信息的输出(11)。该发布槽的输出还提供操作代码。该多个中的功能单元(21a-c)被设置成通过每个使用来自所述组合的相同操作对象执行各自操作而响应该操作代码的至少一个值,并且每个功能单元在各个写入端口处产生各自的结果。

Description

其中功能单元共用读取端口的数据处理电路
本发明涉及一种数据处理电路和使用这种数据处理电路运行程序的方法。
从美国专利第6076154号中可以知道,提供了一种具有多个发布槽(issue slot)的VL IW数字处理电路。VLIW(超长指令字)处理器使用指令发布电路与多个功能单元并行,该指令发布电路发布包括多个操作的指令。在该指令发布单元的各个发布槽中发布规定各个操作的信息。每个发布槽提供一个识别该操作的操作代码,和多个寄存器选择代码,用于在寄存器文件中规定寄存器的位置,必须根据其来加载指定操作的操作对象和/或写入指定操作的结果。寄存器文件可以包括一个或多个独立的寄存器文件部分,其在它们自身的权限内是每个寄存器文件。该操作对象的寄存器选择代码被提供到该寄存器文件的读取端口。相应地,该读取端口提供该操作对象。操作代码被提供到功能单元,其对该操作对象应用该指定的操作并且向寄存器文件的写入端口应用该操作的结果。来自发布槽的寄存器选择代码被供给到该写入端口以控制该被写入结果的寄存器。
在许多实际VLIW处理器中,各组功能单元耦合到各个发布槽。一组中的功能单元具有耦合到该寄存器文件的相同读取端口的操作对象输入和耦合到该寄存器文件的相同写入端口的结果输出。当一组功能单元连接到一个发布槽时,该操作代码确定该组中的哪个功能单元将执行操作并且响应于该操作代码而写入该操作的结果。如果该相关功能单元能够执行不同的操作,该操作代码还在该功能单元内选择该操作。
该VLIW处理器的使用具有能够并行运行指令的优点,其减少了运行程序所需的时间。然而,这是以更多硬件的代价换来的,例如实现超过单个指令发布处理器中所需的多个发布槽。VLIW处理器用于运行完成给定任务的程序所消耗的总功率数一般至少与利用单个指令发布处理器执行相同任务所消耗的功率相同。通常每个程序的功率更高,因为在许多指令中,还有一些发布槽未被使用。而且,被VLIW处理器执行给定任务所占用的存储空间一般至少与单个指令发布处理器运行相同任务的程序所用的存储空间相同。通常由于未使用的代码空间,所需的存储空间会更大。
其中,本发明的一个目的是减少存储用于使可编程处理器电路执行给定任务的程序所需的存储空间量。
其中,本发明的一个目的是减少存储使可编程处理器电路执行给定任务所需的总功率量。
在权利要求1中给出了本发明的数据处理电路。根据本发明,对应于一个发布槽的多个功能单元从一个寄存器文件的一个或多个读取端口接收至少一个、优选为两个或更多操作对象。该多个功能单元在该寄存器文件的不同写入端口产生各个结果。发布到该多个功能单元的操作代码控制该多个功能单元是否和/或在哪个组合中使用来自一个或多个共用读取端口的一个或多个操作对象同步执行操作。从而单个的发布命令使用对于不同功能单元的至少一个、优选为两个或更多共用操作对象的共用寄存器地址来同步地控制多个功能单元。以这种方式,在用于该数据处理电路的程序中需要更少的命令,这减少了存储该程序所需的存储量和执行该指令组合所需的功率消耗。一个命令包括一个操作代码及其相应的寄存器地址以输入操作对象和结果。
优选地,更多的功能单元与该多个功能单元并行耦合到该发布槽,从而除了该包括使用相同操作对象同步执行多个操作的操作之外,还可以选择其他的操作。优选地,该操作代码的不同值从该功能单元组中选择各个不同的、不必须是不重叠的多个,其中包括使用相同的操作对象同步执行不同的操作。这就增加了使用在程序中控制多个功能单元的命令和对该不同功能单元的操作对象使用共用寄存器地址的机率。这就使得在程序中需要更少的命令。
优选地,同时支持仅促使一个功能单元使用来自一个或多个读取端口的操作对象一次执行一个操作的第一操作代码,和促使多个功能单元使用来自一个或多个读取端口的共用操作对象同步执行操作的第二操作代码。这就使得能够在程序中仅需要一个功能单元的结果的情况下,避免使用包括多个功能单元的操作。这样还使得能够限制导致多个功能单元使用共用操作对象同步执行的操作代码数量,而不会丧失在其需要时执行任何操作的性能。以这种方式,可以通过引入仅对于最常用的发生组合(occurring combination)进行同步执行的操作代码而将指令总数保持为较少。
在一个实施例中,该写入端口具有各个不同的结果字长。从而从相同的操作对象产生不同字长的不同操作例如乘法和加法,可以使用相同的操作对象同步执行。优选地,该寄存器文件包括分别耦合到该各个写入端口的多个部分,每个部分包含各自字长的寄存器以接收不同的结果。
在另一实施例中,另一功能单元耦合到该具有互相不同字长的寄存器文件部分的写入端口,以便分别用第一和第二比特大小将表示相同结果的版本写入到第一和第二写入端口中。这使得能够不需要额外的用于转换的指令而使用一个操作的结果。这就减少了程序中的指令数量。在另一实施例中,该结果的最高有效部分和最低有效部分被写入到不同的写入端口,并且完整的结果被以更大的字长写入到寄存器文件部分的第三写入端口中。这使得能够不需要额外的用于转换的指令而使用一个操作的结果。
下面将使用以下附图以非限制性示例的形式来描述本发明的这些和其它目的和有利方面。
图1示出了一个数据处理电路。
图2a-c示出了功能单元组。
图3示出了一个数据处理电路。
图4-7示出了一个功能单元的各部分。
图1示出了一个数据处理电路,包括指令发布电路10、功能单元组12和寄存器文件14。指令发布电路10具有多个发布槽,每个发布槽包含耦合到功能单元组12中的各个单元和寄存器文件14的一组命令线11。
寄存器文件14包含多个寄存器(未分别示出)。寄存器文件14具有多个读取端口和多个写入端口(未详细示出)。每个读取端口包含用于接收寄存器地址的连接和用于返回存储在寻址寄存器中的数据位的连接。每个写入端口包含用于接收寄存器地址的连接和用于接收必须存储在寻址寄存器中的数据位的连接。为了清楚起见,在各个寄存器文件14的发布槽11中示出了单线(single line),但是应当理解,每个单线表示到各个读取和/或写入端口的多个连接以寻址多个寄存器。
每组功能单元12具有分别耦合到各个发布槽的命令输入端,和耦合到寄存器文件14的操作对象输入端和结果输出端。虽然明确显示了两组功能单元12,但是可以存在更多单元,每个耦合到一个发布槽。为了清楚起见,对于各个寄存器文件14和功能单元12之间的每个端口示出了单线,但是应当理解,每个单线表示通往和/或来自各个读取和写入端口的多个连接,用于提供位和/或从寻址寄存器接收位。
指令发布电路本身是已知的。指令发布电路10典型地耦合到指令存储器(未示出),并且典型地包含产生指令在指令存储器中的地址的程序计数器(未示出)。指令发布电路10接收这些指令和从一个指令获取多个命令。指令发布电路10并行在各个发布槽11中发布该命令。每个命令包含一个被应用到一组功能单元12的操作代码,和被应用到寄存器文件14的多个寄存器选择代码。每个寄存器选择代码指示了被应用该寄存器选择代码的寄存器文件中的被选择寄存器。来自一个发布槽的该寄存器选择代码用于选择被用作该操作的输入的操作对象的寄存器位置和其中将存储该操作的结果的寄存器的寄存器位置。虽然这些寄存器选择代码在概念上属于单个命令,但是应当认识到,在实践中,用于一个命令的不同寄存器选择代码可以相互在时间上错开发布,因为会在该命令执行期间的不同阶段需要它们。这种情况会在流水线操作期间发生,例如当在不同指令循环中发布同一命令的不同部分时。
图2a示出了功能单元组12中的一个例子。组12包括两个功能单元21a、b。两个输入连接20被显示为用于从该寄存器文件(未示出)接收各个操作对象。输入连接20耦合到两个功能单元21a、b。两个输出连接26被显示为用于向该第一寄存器文件(未示出)供给结果。每个输出连接与该功能单元21a、b中各个的输出耦合。虽然是使用了单线来表示该连接,但是应当理解,每个连接典型地包括多个导线,每个导线用于一个位,从而该寄存器文件的每个连接包括例如32个导线。
在操作中,用于图2的组的每个命令包含两个操作对象的寄存器地址和两个结果的寄存器地址。当指令发布电路10遇到具有命令的指令时,指令发布电路10向一组功能单元12发布该命令的操作代码,向寄存器文件14的读取端口发布两个操作对象寄存器地址,和向寄存器文件14的写入端口发布两个结果寄存器地址。相应地,寄存器文件14取回两个操作对象。寄存器文件14将来自其读取端口的这些操作对象应用到两个功能单元21a、b。
该命令的操作代码可以取不同的值以选择不同的操作。至少一个值使得两个功能单元21a、b对从寄存器文件14中找到的相同操作对象执行各个操作。响应于该操作代码的值,功能单元21a、b将结果写入到各个写入端口的连接26中。
在一个实施例中,第一功能单元21a包括加法电路,第二功能单元21b包括减法电路,从而将操作对象的和与差作为各自的结果输出。该加法和减法电路可以是各个功能单元中的各个可编程算术单元(或算术和逻辑单元)的一部分。在这种情况下,功能单元21a、b可以被设置成选择响应于该操作代码而将在相同操作对象上执行的各个算术操作。
在另一实施例中,第一功能单元21a包括选择和输出作为两个操作对象中最小数的一个操作对象的电路,第二功能单元21b包括选择和输出作为两个操作对象中最大数的那个操作对象的电路,从而将该操作对象的最小值和最大值作为各个结果输出。在另一实施例中,第一功能单元21a包括加法电路,第二功能单元21b包括移位电路,从而将该操作对象的和以及一个操作对象的移位结果作为各个结果输出。
当然,本发明不限于在图中显示的特定类型的功能单元组。例如,可以将多于两个的读取端口耦合到功能单元组12和该组中的每个功能单元21a、b。以这种方式,可以将功能单元设置成响应于操作代码的特定值而执行更复杂的操作。
图2b示出了一个可选实施例,其中三个功能单元21a-c各自耦合,每个耦合到寄存器文件(未示出)的读取端口的相同连接20。该组具有到寄存器文件(未示出)的各个写入端口的三个连接26。全部三个功能单元21a-c都耦合到发布槽以接收操作代码。在这个实施例中,用于该功能单元的每个命令包含三个结果寄存器地址。该结果寄存器地址通过发布槽11分别发布到寄存器文件的三个写入端口。功能单元21a-c通过使用来自连接20的相同操作对象执行各个操作而响应该操作代码的至少一个值。应当理解,任意更大数量的功能单元都可以耦合到该相同的读取端口和各自的写入端口,以便响应于操作代码而执行各自的操作。
图2c示出了一个实施例,其中在功能单元21a-c的结果输出之间增加了一个三对二多路复用电路27。在这个实施例中,组12具有耦合到寄存器文件(未示出)的各个写入端口的两个输出26。在这个实施例中,用于功能单元的每个命令包括两个结果寄存器地址,并且操作代码控制将把哪一个功能单元21a-c的结果写入到寄存器文件中。该操作代码控制多路复用电路27以便将所选择功能单元21a-c的结果提供到写入端口的连接26。每个功能单元21a-c可以被设置成响应于操作代码而禁用其自身,如果该操作代码指示不将该功能单元21a-c的结果提供到写入端口。当然,可以以这种方式组合比三个更大数量的N个功能单元21a-c,并且可以使用到各个写入端口的大于1且小于N的任意数量M个连接。该多路复用电路可以被设置成在其输入和输出之间实施任意连接。但是在一个实施例中,该多路复用电路被设置成仅提供部分连接,例如通过总是将一个功能单元21a连接到一个输出26,并且操作代码选择其他功能单元21b-c中的一个连接到另一输出26。
在这个实施例中,可以使用不同的操作代码从N个功能单元21a-c(例如N=3)中选择不同的多个M个功能单元(例如M=2),以便部分地使用来自相同读取端口的操作对象产生M个结果。
在一些实施例中,组12耦合到多个读取端口,例如三个或更多读取端口,不需要所有功能单元21a-c响应于操作代码的特定值而使用来自所有读取端口的操作对象。例如,响应于操作代码的一个特定值,仅有来自读取端口的多个核心操作对象被所有功能单元使用,其余的操作对象仅被所选择的功能单元使用。
此外,不需要所有操作代码值都具有使得多个功能单元操作以产生结果的效应。至少一部分操作代码值可以具有仅激活组12中的一个功能单元21a-c或者能够并行写入结果的少于数量M个功能单元21a-c,以使其使用该操作对象产生结果。为此,可以在该组中提供一个虚拟功能单元,该虚拟功能单元被设计成响应于这种操作代码值而在未使用的写入端口处输出标准结果。
该图中示出了一个实施例,其中用于该操作代码的组12的输入被直接连接到不同的功能单元21a-c。在这个实施例中,每个功能单元21a-c(和可选的多路复用器27)包含解码电路(未示出),用于将操作代码转译成用于处理该操作对象的功能单元21a-c的操作电路(未示出)的控制信号。在另一实施例中,可以提供一个公共解码电路,用于将操作代码转译成用于多个功能单元21a-c的操作电路(未示出)的控制信号。
在一个实施例中,一个组中的不同功能单元21a-c的每个是可编程的,也就是说,每个都能够执行不同的可选择操作。在这种实施例中,一个命令的操作代码可以包括不同的域(field),每个域包括一个操作代码,该操作代码能够选择任一个可选择操作以用于该组中的一个功能单元21a-c。然而,这会导致相当大数量的操作代码。因此,优选地,选择可用的操作代码以便仅使得单个功能单元21a-c的可选择操作的所有可能组合中被选择的一个可用。例如,第一操作代码值可以是使得单个功能单元执行其可选择操作中的任何一个而使其他功能单元21a-c不被激活,以及多个第二操作代码值中的每个值激活该功能单元21a-c的组合以使用相同的操作对象执行不同的操作。在这种情况下,该多个不同的第二操作代码值可以显著小于可能组合的总数,操作代码仅对于例如在典型程序中频繁发生的组合可用。
虽然本发明是相对于具有寄存器文件的实施例描述的,其中所有寄存器存储相同长度的字,但是这不是必须的。在另一实施例中,寄存器文件14可以由多个部分构成(每个在其自身权限内形成一个寄存器文件,具有读取和写入端口)。每个部分分别包括各自字长的寄存器,不同部分的各自的字长可以是不同的。
图3示出了一种数据处理电路,包括指令发布电路10、功能单元组12以及第一和第二寄存器文件14a、b。每个寄存器文件14a、b包含多个寄存器(未单独显示)。第一寄存器文件14a中的每个寄存器存储第一多个位(例如32位)。第二寄存器文件14b中的每个寄存器存储第二多个位(例如64位)。
每个寄存器文件14a、b具有多个读取端口和多个写入端口(未具体显示)。每个读取端口包含用于接收寄存器地址的连接和用于返回存储在寻址寄存器中的数据位的连接。每个写入端口包含用于接收寄存器地址的连接和用于接收存储在寻址寄存器中的数据位的连接。
为了清楚起见,在各个寄存器文件14a、b的发布槽11中示出了单线,但是应当理解,每个单线表示到各个读取和/或写入端口的用于寻址多个寄存器的多个连接。每组功能单元12具有分别耦合到一个发布槽的命令输入端,和耦合到寄存器文件14a、b的操作对象输入端和结果输出端。虽然明确显示了两组功能单元12,但是可以存在更多单元,每个耦合到一个发布槽。为了清楚起见,在各个寄存器文件14a、b和功能单元12之间显示为单线,但是应当理解,每个单线表示通往和/或来自各个读取和写入端口的多个连接,用于提供位和/或从多个寄存器接收位。
当在图3的电路中使用图2a-c所示类型的组12时,不同的功能单元21a-c可以被设置成产生具有互相不同的字长的结果。例如,一个功能单元可以是具有n位操作对象字和产生n位结果字的算术单元,而另一个功能单元21a-c可以是具有n位操作对象字和产生2n位结果字的乘法器(例如n=32)。
图4示出了一个功能单元组12的示例,其中单独示出了从寄存器文件14a、b(未示出)的读取端口供给各个操作对象的连接。其中显示了四个用于接收操作对象的输入连接20、24。三个第一输入连接20耦合到第一寄存器文件14a(未示出),一个第二输入连接耦合到第二寄存器文件14b。两个第一输出连接耦合到该第一寄存器文件14a,一个第二输出连接耦合到该第二寄存器文件14b。虽然使用了单线来表示该连接,但是应当理解,每个连接典型地包含各自的多个导线,每个导线用于各自的位,从而到第一寄存器文件14a的每个连接包含例如32个导线,到第二寄存器文件14b的每个连接包含例如64个导线。
典型地,组12将包含至少部分耦合到相同操作对象输入20和设置成产生各自结果的多个功能单元,如参照图2a-c所述。
图5示出了一个实施例,其中组12中的至少一个功能单元使用由另一个功能单元产生的结果。该功能单元包含乘法器30、加法器32和结果分离器34。第一寄存器文件14a(未示出)的第一和第二读取端口的数据部分20耦合到乘法器30的各个输入。每个输入包含用于并行供给第一多个N位的导线(例如N=32)。乘法器30的输出和来自第二寄存器文件14b(未示出)的读取端口的数据部分24耦合到加法器32的输入。加法器32的每个输入包含用于并行供给第一多个2*N位的导线(例如2*N=64)。加法器32的输出包含用于并行供给2*N位加法结果的导线(例如2*N=32)。加法器32的输出耦合到第二寄存器文件14b(未示出)的写入端口的数据部分26。结果分离器34将来自乘法器30的输出的导线的支路分离成两组,分别是N个最高有效位和N个最低有效位。用于该MADD指令的命令可以表示为:
MADD R1,R2,R3,R4,R5,R6
这里,MADD是该操作代码的符号表示,R1、R2是被应用到第一寄存器文件14a的读取端口的寄存器地址的符号表示,R3是被应用到第二寄存器文件14b的读取端口的寄存器地址的符号表示,R4、R5是被应用到第一寄存器文件14a的写入端口的寄存器地址的符号表示,R6是被应用到第二寄存器文件14b的写入端口的寄存器地址的符号表示。被指令发布电路10获得的命令优选地包含多个位,该多个位能够被分成表示操作代码和各个寄存器地址的各个域。
可以理解,该MADD命令包括都是被该发布指令中的寄存器地址单独选择的三个结果寄存器。该不同的结果寄存器可以被该稍后的指令单独寻址以使用该结果(的一部分)。在另一实施例中,该两个N位输出可以被组合成单个的2*N输出,耦合到具有2*N位字的寄存器文件14b。
在一组中可以存在额外的功能单元用于向不同的写入端口写多个结果。在这种情况下,可以提供多路复用器以选择是否将在相同操作对象上操作的多个不同功能单元耦合到各个写入端口,或者是否将一个产生多个结果的功能单元耦合到该不同的写入端口。当然,这种额外的功能单元可以单独使用(即,不耦合到该共用相同操作对象的不同功能单元所耦合到的相同写入端口)。这种额外的功能单元与耦合到该共用相同操作对象的不同功能单元所耦合到的相同写入端口的结果输出的组合具有这样的优点:可以更有效地使用该写入端口。
图6示出了响应于另一种MADD(乘加)指令而激活的功能单元的一部分。该功能单元包含乘法器30、加法器32和结果分离器34。第一寄存器文件14a(未示出)的第一和第二读取端口的数据部分20耦合到乘法器30的各个输入。每个输入包含用于并行供给第一多个N位的导线(例如N=32)。乘法器30的输出和来自第二寄存器文件14b(未示出)的读取端口的数据部分24耦合到加法器32的输入。加法器32的每个输入包含用于并行供给第一多个2*N位的导线(例如2*N=64)。加法器32的输出包含用于并行供给2*N位加法结果的导线(例如2*N=32)。加法器32的输出耦合到第二寄存器文件14b(未示出)的写入端口的数据部分26,和第二寄存器文件14b的各个数据部分22,其分别接收该结果的N个最高有效位和该结果的N个最低有效位。结果分离器34将来自加法器32的输出的导线的支路分离成两组,分别是N个最高有效位和N个最低有效位。用于该MADD指令的命令可以表示为:
MADD R1,R2,R3,R4,R5,R6
这里,MADD是该操作代码的符号表示,R1、R2是被应用到第一寄存器文件14a的读取端口的寄存器地址的符号表示,R3是被应用到第二寄存器文件14b的读取端口的寄存器地址的符号表示,R4、R5是被应用到第一寄存器文件14a的写入端口的寄存器地址的符号表示,R6是被应用到第二寄存器文件14b的写入端口的寄存器地址的符号表示。被指令发布电路10获得的命令优选地包含多个位,该多个位能够被分成表示操作代码和各个寄存器地址的各个域。
可以理解,该MADD命令具有两次写入同一结果的效果:一次完整写入第二寄存器文件14b中的寄存器中,一次分两部分写入第一寄存器文件14a中的各个寄存器。这涉及到都是被该发布指令中的寄存器地址单独选择的三个结果寄存器。这给了为处理电路编译指令程序的编译器完全的优化寄存器使用的自由。该不同的结果寄存器可以由稍后的指令单独寻址以使用该结果(的一部分),而不需要在先的转换。N位结果寄存器可以例如用于一组功能单元中,而2*N位结果寄存器可以例如用于另一组功能单元中。
应当理解,该MADD命令仅仅是可以应用于该发布槽的命令的一个示例。不同的命令也是可用的。该不同的命令由该命令的操作代码部分(由该MADD命令的示例中的MADD符号表示)标识。取决于该指定的命令,可以激活一个功能单元的不同电路(在图3中未示出),或者可以激活连接到相同发布槽的一组功能单元中的不同功能单元。典型地,该功能单元(或功能单元组)包含多路复用器以确定将哪个电路的输出应用到该功能单元和/或该功能单元中的其他电路的输出。该图仅显示了包括有该MADD命令的电路。其他命令可以使用与操作对象寄存器一样多或更少或更多的寄存器,和/或可以使用与结果寄存器一样多或更少或更多的寄存器。当使用更少的寄存器时,可以发布缺省的寄存器选择代码,并且寄存器文件14a、b可以被设置成响应于这些选择代码而供给缺省数据,或者响应于缺省的选择代码而阻止对任意寄存器的内容的修改。
图7示出了响应于MSHADD指令(乘-移位-加)而激活的功能单元的一部分。该功能单元包含位于乘法器30和加法器32之间的桶式移位器,用于将该乘积移位多个位的位置,其由来自第一寄存器文件14a的读取端口的数据部分20的另一操作对象控制。该MSHADD指令使用被该发布槽所允许的最大数量的输入和输出。
虽然本发明是参照特定实施例描述的,但是应当理解,本发明并不限于这些实施例。例如,代替两个寄存器文件14a、b,可以使用更大数量的寄存器文件,例如一组具有N位寄存器的寄存器文件和一组具有2*N位寄存器的寄存器文件。在这种情况下,不同(组)的功能单元及其相应的发布槽可以耦合到各个不同的寄存器文件。单个组的功能单元甚至可以连接到具有N位或2*N位寄存器的多个寄存器文件。
优选地,所有发布槽具有相同的宽度,每个支持相同数量的操作对象寄存器(具有各自不同的操作对象大小)和相同数量的结果寄存器(具有各自不同的操作对象大小)。这样具有在编译期间可以自由将指令分配到不同发布槽而优化处理器速度。优选地,每个发布槽支持三个结果寄存器,其中两个是N位宽,一个是2*N位宽(例如N=32)。已经发现,这样在包括多个结果的总开销(overhead)与在多个发布槽中具有相同数量的结果寄存器的可编程性之间提供了一个良好的折衷。优选地,使用四个操作对象寄存器,其中三个是N位宽,一个是2*N位宽。已经发现,这样在包括多个结果的总开销与在多个发布槽中具有相同数量的结果寄存器的可编程性之间提供了一个良好的折衷。
在另一实施例中,可以在一个发布槽中使用多于两个多位操作对象和/或结果大小。例如,除了具有32位寄存器的寄存器文件和具有64位寄存器的寄存器文件之外,可以在一个发布槽中提供和寻址具有8位寄存器的寄存器文件。
优选地,使用连接到相同功能单元和由相同发布槽控制的至少两个寄存器文件,其中在一个寄存器文件中的每个寄存器的位数N是在另一个寄存器文件中的每个寄存器的位数2N的一半。这使得能够以与一个指令的结果相同的大小来写入一个结果的双精度形式和该结果的两个单精度部分。然而,在不脱离本发明的情况下,可以使用寄存器大小不是相差2的倍数的寄存器文件。例如,第一寄存器文件中的寄存器大小可以是N+1位,而第二寄存器文件中的寄存器大小可以是2*N+1位,以便能够表示在每个寄存器中的溢出。

Claims (11)

1.一种数据处理电路,该数据处理电路包括:
-具有读取端口和写入端口的寄存器文件(14);
-多个功能单元(21a-c),每个耦合以便至少从包含至少一个该读取端口的相同组合中接收操作对象数据,每个功能单元耦合到各个写入端口以写入各自的结果;
-至少一个指令发布槽,具有用于向所述组合和向各个写入端口供给寄存器选择信息的输出(11),和用于操作代码的输出(11),该多个功能单元(21a-c)耦合到该用于操作代码的输出(11),并且被设置成通过每个使用来自所述组合的相同操作对象执行各自操作而响应该操作代码的至少一个值,该多个功能单元(21a-c)中的每个产生各自的结果,通过在各个写入端口处理所述相同的操作对象而获得。
2.根据权利要求1所述的数据处理电路,包括一组(12)功能单元(21a-c),其包括所述多个功能单元(21a-c)和至少一个附加功能单元(21a-c),每个所述功能单元(21a-c)组(12)被耦合以至少从所述至少一个读取端口的相同组合接收操作对象数据,并且每个所述功能单元(21a-c)组(12)被耦合到至少一个写入端口以写入各自的结果,每个所述组(12)被耦合到该输出(11)以供给操作代码,并且被设置成通过每个执行被该操作代码选择的操作而响应该操作代码。
3.根据权利要求2所述的数据处理电路,包括耦合到包含N个功能单元(21a-c)的功能单元(21a-c)组(12)和M个写入端口之间的多路复用电路(27),其中N是大于2的整数,M是大于1且小于N的整数,其中不同的操作代码值从被设置成响应该操作代码各个值的组中选择各自不同的、但是不必须是不重叠的多个M个功能单元(21a-c)到每个值,以便使得来自各自多个(21a-c)中的M个功能单元(21a-c)使用来自所述读取端口和功能单元(21a-c)的所述相同组合的操作对象执行操作,该多路复用电路(27)被设置成将来自被该操作代码的各个值所选择的功能单元(21a-c)的M个结果提供到各自的写入端口。
4.根据权利要求1所述的数据处理电路,其中来自该多个中的功能单元(21a-c)被设置成响应操作代码的各个其他值,以便响应于每个各自的其他值,各个功能单元(21a-c)使用来自所述至少一个读取端口的相同组合执行各自的操作,该多个中除了所述各个功能单元(21a-c)之外的功能单元(21a-c)不使用来自所述至少一个读取端口的相同组合的操作对象以响应于各自的其他值而在写入端口处产生结果。
5.根据权利要求1所述的数据处理电路,其中至少一个读取端口的组合包含两个读取端口,来自该两个读取端口的至少两个操作对象被该多个功能单元(21a-c)中的每个使用以响应该操作代码的所述至少一个值。
6.根据权利要求1所述的数据处理电路,其中该写入端口具有各自的结果字长,至少一个该写入端口具有与至少一个另外的写入端口的结果字长不同的结果字长。
7.根据权利要求6所述的数据处理电路,其中该寄存器文件包括耦合到该各个写入端口的多个部分(14a、b),每个部分包含与所述部分被耦合到的写入端口的字长对应的各自字长的寄存器。
8.根据权利要求1所述的数据处理电路,其中该寄存器文件包括第一和第二寄存器文件部分(14a、b),具有相互不同位尺寸的第一和第二寄存器,并且该写入端口包括第一和第二写入端口用于分别向该第一和第二寄存器文件写入结果;该数据处理电路包括耦合到该第一和第二写入端口和该指令发布槽的附加功能单元(32),该附加功能单元被设置成响应于该特定的操作产生结果和分别将表示具有第一和第二位尺寸的结果文本写入到该第一和第二写入端口中。
9.根据权利要求8所述的数据处理电路,其中该第一多个位包括比第二多个位更少的位,该第一寄存器文件部分(14a)具有附加写入端口,该第一写入端口和附加写入端口从该发布槽并行接收各自的寄存器选择代码,该功能单元(32)具有耦合到该第一写入端口和附加写入端口的输出,该附加功能单元(32)被设置成分别将该结果的最高有效部分和最低有效部分写入到该第一写入端口和附加写入端口中。
10.根据权利要求8所述的数据处理电路,其中该第二寄存器文件的寄存器具有该第一寄存器文件的寄存器的位尺寸的两倍大小。
11.一种使用包含多个功能单元(21a-c)的处理电路执行计算机程序的方法,该方法包括:
-发布表示操作代码、操作对象寄存器地址和结果寄存器地址的指令;
-使用该操作对象寄存器的地址选择寄存器,和从该选择的寄存器供给操作对象;
-通过在各个功能单元中同步执行多个操作而响应于所述操作代码,每个操作使用来自该选择寄存器的至少一个操作对象的至少一个相同组合;
将来自该各个功能单元的各个结果写入到被该结果寄存器地址选择的各个寄存器中。
CNA2005800320526A 2004-09-22 2005-09-21 其中功能单元共用读取端口的数据处理电路 Pending CN101027635A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP04104582 2004-09-22
EP04104582.4 2004-09-22

Publications (1)

Publication Number Publication Date
CN101027635A true CN101027635A (zh) 2007-08-29

Family

ID=34929596

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2005800320526A Pending CN101027635A (zh) 2004-09-22 2005-09-21 其中功能单元共用读取端口的数据处理电路

Country Status (8)

Country Link
US (1) US8108658B2 (zh)
EP (1) EP1794672B1 (zh)
JP (1) JP5346467B2 (zh)
KR (1) KR101311187B1 (zh)
CN (1) CN101027635A (zh)
AT (1) ATE456829T1 (zh)
DE (1) DE602005019180D1 (zh)
WO (1) WO2006033078A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731560A (zh) * 2013-12-20 2015-06-24 三星电子株式会社 支持多线程处理的功能单元、处理器及其操作方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US9402062B2 (en) * 2007-07-18 2016-07-26 Mediatek Inc. Digital television chip, system and method thereof
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
GB2488985A (en) * 2011-03-08 2012-09-19 Advanced Risc Mach Ltd Mixed size data processing operation with integrated operand conversion instructions
JP6237241B2 (ja) * 2014-01-07 2017-11-29 富士通株式会社 処理装置
JP2021166010A (ja) * 2020-04-08 2021-10-14 富士通株式会社 演算処理装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
JPH0764789A (ja) * 1993-08-25 1995-03-10 Mitsubishi Electric Corp 並列処理プロセッサおよびそのプロセッシングユニットならびにこの並列処理プロセッサの動作方法
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
WO1999064954A2 (en) * 1998-06-08 1999-12-16 Koninklijke Philips Electronics N.V. Processor with memory and data prefetch unit
KR100345173B1 (ko) * 2000-06-12 2002-07-24 주식회사 테크라프 폐전지 처리방법
DE60143945D1 (de) * 2000-07-18 2011-03-10 Cornell Res Foundation Inc Medizinische verwendung von agonisten des mu-opioid rezeptors
US20040014848A1 (en) * 2000-09-11 2004-01-22 Kazuya Tanaka Organic Hydrophicizing agent for aluminiferous metals
JP3754418B2 (ja) * 2000-11-27 2006-03-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多くのオペランドを扱う命令を有するデータ処理装置
CN1214321C (zh) * 2000-12-11 2005-08-10 皇家菲利浦电子有限公司 信号处理设备
AU2003253159A1 (en) * 2002-09-24 2004-04-19 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
US20040128475A1 (en) * 2002-12-31 2004-07-01 Gad Sheaffer Widely accessible processor register file and method for use

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731560A (zh) * 2013-12-20 2015-06-24 三星电子株式会社 支持多线程处理的功能单元、处理器及其操作方法
CN104731560B (zh) * 2013-12-20 2020-02-07 三星电子株式会社 支持多线程处理的功能单元、处理器及其操作方法

Also Published As

Publication number Publication date
DE602005019180D1 (de) 2010-03-18
EP1794672A2 (en) 2007-06-13
ATE456829T1 (de) 2010-02-15
WO2006033078A2 (en) 2006-03-30
WO2006033078A3 (en) 2006-05-11
KR101311187B1 (ko) 2013-09-26
KR20070067687A (ko) 2007-06-28
US8108658B2 (en) 2012-01-31
JP2008513878A (ja) 2008-05-01
EP1794672B1 (en) 2010-01-27
JP5346467B2 (ja) 2013-11-20
US20090070559A1 (en) 2009-03-12

Similar Documents

Publication Publication Date Title
US6044451A (en) VLIW processor with write control unit for allowing less write buses than functional units
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US8069337B2 (en) Methods and apparatus for dynamic instruction controlled reconfigurable register file
US6002880A (en) VLIW processor with less instruction issue slots than functional units
KR100715055B1 (ko) Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법
US6848041B2 (en) Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
KR100190738B1 (ko) 데이타 처리 시스템 및 방법
US6360312B1 (en) Processor for making more efficient use of idling components and program conversion apparatus for the same
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
US20090300331A1 (en) Implementing instruction set architectures with non-contiguous register file specifiers
CN101027635A (zh) 其中功能单元共用读取端口的数据处理电路
CN101097512A (zh) 用于实施混洗和其他操作的执行单元
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US20030221089A1 (en) Microprocessor data manipulation matrix module
US20040059894A1 (en) Process for running programs on processors and corresponding processor system
CN101246435A (zh) 一种支持高级语言部分语句功能的处理器指令集
WO2005036384A2 (en) Instruction encoding for vliw processors
JP2004005738A5 (zh)
JP2004005738A (ja) データ処理装置及び命令セット拡張方法
JPH0511979A (ja) 演算処理装置
JP2007310726A (ja) 多機能マイクロコントローラーシステム、そのコマンド、及びコマンド実行方法
KR20080052224A (ko) SIMD/SISD/Row/Column 동작을 할 수있는 SIMD 병렬 프로세서

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication