CN1662904A - 具有级联simd结构的数字信号处理器 - Google Patents
具有级联simd结构的数字信号处理器 Download PDFInfo
- Publication number
- CN1662904A CN1662904A CN038138506A CN03813850A CN1662904A CN 1662904 A CN1662904 A CN 1662904A CN 038138506 A CN038138506 A CN 038138506A CN 03813850 A CN03813850 A CN 03813850A CN 1662904 A CN1662904 A CN 1662904A
- Authority
- CN
- China
- Prior art keywords
- data
- vector
- data routing
- file
- digital signal
- 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
Links
- 230000008520 organization Effects 0.000 title description 6
- 239000013598 vector Substances 0.000 claims description 160
- 238000000034 method Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 15
- 230000009977 dual effect Effects 0.000 abstract 1
- 230000008901 benefit Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 229920006395 saturated elastomer Polymers 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003442 weekly effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
数字信号处理器(DSP)包含以级联方式连接的双SIMD单元,并且其中级联的第一SIMD级段的结果可以存储在级联中第二SIMD级段的寄存器堆中。每个SIMD级段包含用于存储操作数和中间结果的自身资源(例如,其自身寄存器堆),以及用于解码可在该级段执行的操作的自身资源。在每个级段内,组织硬件资源以SIMD方式操作,使得独立的SIMD操作可以被同时执行,其中级联的每个级段均执行一个操作。流过级联的中间操作数和结果被存储在级段的寄存器堆中,并且可以从那些寄存器堆访问。数据也可以从存储器直接进入级联中各级段的寄存器堆。
Description
相关专利申请的交叉引用
本专利申请是2000年2月29日提交的美国专利申请09/514,497的部分延续,这里完整地参考引用了该申请的公开内容。本专利申请要求2002年6月26日的临时专利申请60/391,778的优先权。
技术领域
本发明涉及数字信号处理系统,尤其涉及改进数字信号处理器体系结构。
背景技术
数字信号处理的特征在于操作随时间连续演变的数据元素集合。这些数据集合对应于模拟域中信号的数字表示,并且被称为向量。数字信号处理算法的特征在于频繁对向量中每个元素进行相同的计算。例如,过滤算法可以把向量中的各个元素乘以不同的系数,并且把各部分结果累积成单个最终结果。
基本信号处理算法(称为信号处理内核)的特征在于对向量元素执行操作序列。如上所述,一个例子是乘法的执行后跟累加的执行。关于这种操作序列的执行,实现数字信号处理器的现有技术包含使用相同算术/逻辑单元以与序列中操作数量一样多的次数执行操作序列(例如,在一个周期的乘法操作后跟下一个周期的累加操作),或者把硬件构造为流水线,其中操作数从一端进入,随着数据流过流水线而执行操作,并且在流水线的另一端获得结果(例如,乘加流水线)。
现有技术,尤其是上述流水线方案的显著限制是,由于传统流水线结构,执行组成信号处理内核的各操作的灵活性受到约束。现有技术的模式不允许收集中间结果以用于流水线中进一步的处理(或许按照与产生中间结果的顺序不同的顺序),或用于在任意时间点改变流水线中的操作序列。这些限制需要更复杂的指令序列,并且通常需要更多处理周期,从而约束了可从功能单元获得的最大性能。
为在可编程处理器上执行数字信号处理算法,数据元素的向量可以组合成较小子集,例如,每个子集有四个元素,并且可以对子集的所有元素同时(并行)执行计算。两个可选模式同时被用于组合数据元素和指定这样的操作。
在第一方案中,向量的一个子集中的数据元素位于分立的寄存器中,并且一不同指令指定对每个元素执行的操作。尽管多个指令被用于指定对数据元素同时执行的操作,但是所有这些指令均对应于单个程序流,并且因而被看作单个实体。这种方法被称作超长指令字(VLIW),指的是单个超长指令字包含多个基本指令的情况。在对向量的子集进行计算的情况下,由于对所有数据元素执行相同操作,所有基本指令相同;这些基本指令间的唯一差异是操作数和结果的位置。这种方法用于不同的数字信号处理器,诸如德州仪器公司的C64,StarCore的SC140,以及模拟器件公司的ADSP 2116x。
在第二方案中,向量的一个子集中的所有数据元素位于相同寄存器(“宽寄存器”)中,并且单指令指定对所有这种单元执行的操作。这种方法被称作具有子字并发的单指令多数据(SIMD)。术语SIMD是指对所有操作只使用一个指令,而术语子字并发是指在相同寄存器中多个数据元素的级联。这种方法被用于各种面向多媒体和信号处理的微处理器扩展,诸如Intel公司的MMX以及摩托罗拉公司的ALTIVEC。
这些方案存在各种限制。具体地,具有子字并发的SIMD的使用需要把数据元素按正确的顺序放置在宽寄存器内,并且还需要根据需要到处移动数据元素的机构。这些需要转化成附加硬件资源和执行周期。另一方面,VLIW方案的使用需要编码多个执行相同操作的指令,因而导致较长指令(所谓VLIW),其往往需要指令存储器中的更多空间。
发明内容
本发明涉及改进的数字信号处理器结构。
在本发明各种实施例中,一种用于处理数字信号信息的方法使用具有与第二数据路径级联连接的第一数据路径的处理器。这个新颖配置允许第一SIMD指令在第一数据路径中与第二数据路径中的第二SIMD指令并行地执行。
第一数据路径和第二数据路径均可以包含其自身的寄存器堆。此外,在第一数据路径中执行的指令可以使向量信息被载入第一数据路径的寄存器堆以对其进行操作。在第一数据路径中执行的操作的结果被传送到第二数据路径的寄存器堆。在第二数据路径中操作被传送到第二数据路径的寄存器堆的结果。此外,传送到第二数据路径的寄存器堆的结果可以被零扩展或符号扩展以具有等于第二数据路径宽度的位长。在第二数据路径中执行的操作的结果可以被传送回第二数据路径的寄存器堆,存储器,或第一数据路径的寄存器堆。
传送到存储器或第一数据路径的寄存器堆的数据可以被降低尺寸。尺寸降低操作可以包含例如饱和,舍入,截断,位提取,或其组合。
已知或以后开发的寄存器堆结构的任何组合均可用于实现本发明。例如,寄存器堆可以被组织成多个寄存器组,宽寄存器或其单元能任意寻址的寄存器堆。使用具有多个指针的指针寄存器可以实现这种任意寻址,其中每个指针指向寄存器堆的一个单元。如果使用任意寻址,则SIMD指令的操作数可以使用指针寄存器指定,并且/或者指针寄存器可以用于存储结果数据。
此外,专用硬件可以用于把多个数值合并并且把单个结果放入专用寄存器。
第一数据路径的宽度可以不同于第二数据路径的宽度。在这里讨论的不同示例性实施例中,第一数据路径的宽度是16位并且第二数据路径的宽度是40位。然而,其它宽度(例如分别24和50位)可以根据应用而使用。
本发明的这些和其它方面,特性和优势将通过以下优选实施例的详细描述变得清楚,该详细描述将结合附图进行阅读。
附图说明
下面将参照附图通过优选实施例详细描述本发明,其中:
图1是说明使用本发明的单指令多数据(SIMD)数字信号处理器(DSP)或媒体处理器的示意图;
图2的示意图根据本发明示出了16位元素向量的向量数据文件的一个实施例,该实施例包含8项指针地址文件,512项向量数据文件,以及对一个任意4元素子向量的访问;
图3根据本发明示出了包含三个向量的数据寄存器分区的说明性例子;
图4根据本发明示出了针对一个向量的数据寄存器分区的另一个说明性例子;
图5是地址递增器的可选实施例的示意图,用于根据本发明说明新地址复用器,以及步进(stride)和模运算寻址能力;
图6是具有级联SIMD结构的示例性数字信号处理器的框图;
图7是使用宽寄存器的具有级联SIMD结构的示例性数字信号处理器的框图;
图8是使用任意向量寻址的具有级联SIMD结构的示例性数字信号处理器的框图;以及
图9是仅在第一数据路径使用任意向量寻址的具有级联SIMD结构的示例性数字信号处理器的框图。
具体实施方式
本发明提供向量寄存器堆以包含向量数据,最好用于单指令多数据(SIMD)处理。本发明还提供寄存器堆,用于访问包含在其中的向量的任意子向量。下面将根据处理器电路描述本发明,其中处理器电路具有带预定数量单元的部件,地址线路或指定规模的部件。这些部件或向量的规模,地址,输入数量,输出数量,单元数量等等仅仅是说明性的,并且不得解释为对本发明的限制。
在本发明的一个说明性实施例中,公开了一个向量寄存器堆,它被构造成用于存放总尺寸等于或小于512元素的一或多个向量,其中每次访问读或写4个16位元素。向量是由表示数量的元素的线性数组组成的数据结构。用于访问向量寄存器堆的地址由包含在整体但分别访问的指针阵列中的地址指针指定。每个指针指定四个元素之一的地址,其中可在每个访问端口处在每个存取周期读或写所述4个元素。指针文件包含多个指针。根据包含在控制SIMD处理程序的指令中的信息选择每次访问所需要的指针数量,例如,四个。因此,寄存器堆具有间接寻址类型。在用于确定文件的向量数据阵列部分的访问地址之后,指针阵列部分的内容可以被更新(在指令控制下),例如用递增值更新(以允许向量的顺序访问),或用读取的向量的内容更新(以允许表查找访问或数据收集访问)。本发明的其它实施例还提供用于步进访问,模运算(循环)访问,或其它访问方法的更新。本发明的程序允许计算地址值,以及把更新的数值加载到指针地址文件以供使用。
应当理解,图1-5说明的单元可以通过硬件,软件或其组合的各种形式实现。这些单元可以在一或多个适当编程的通用数字计算机中,或通过具有处理器和存储器以及输入/输出接口的存储设备上的软件实现。本发明也可以在硬件上实现。当在硬件上实现时,计算(包含地址更新)可以有利地处理为满流水线速率的流水线化操作。
现在参照附图,其中相似数字代表附图中相同或类似的单元,并且从图1开始,示出了示例性处理器100。处理器100可以包含媒体处理器,SIMD处理器或数字信号处理器(DSP),最好包含向指令单元102提供指令的指令存储器101。指令单元102把例如存储在指令存储器101中的程序排序,并且向处理器100的其它单元或部件提供解码控制。要处理的数据被保存在多端口数据存储器105中,该多端口数据存储器例如具有两个读数据端口153和154,以及两个写数据端口151和152,每个端口通过数据地址单元106提供的地址来访问。数据通过读端口154从存储器105移动到向量寄存器堆103的写端口133,以便被向量寄存器堆103使用,向量寄存器堆103经由写端口132被向量算术单元104使用。计算的结果通过写端口132被存储在向量寄存器堆103中。存储在向量寄存器堆103中的文件可以用于进一步的计算,或通过连接到总线111和写端口152的读端口131移动到数据存储器105。通过输入110从外部存储器或I/O设备提供处理器100的程序和输入数据,并且通过输出总线109把结果发送到外部存储器或I/O。
算术单元141-144均对通过读端口134和135从寄存器堆103读取的两个子向量的每个子向量的一个元素进行操作,算术单元141-144均可以执行彼此相同的功能。产生结果的四元素子向量,该子向量接着通过写端口132被回写到寄存器堆103。如果期望的子向量更容易地在端口132,134,135的每个上选出,则在单元104中执行的计算可以进行得更快速。
参照图2,现在更详细描述向量寄存器堆103(图1)。向量寄存器堆103包含针对访问端口131-135(图1)之一的逻辑。应当注意,为了简单,图2中的数据总线207代表图1中108所示的两个数据总线之一。并且,输入端口210是图1示出的两个输入端口131或132之一。例如,向量地址指针阵列202被说明为由8个字组成,每个字由4个9位字段组成。由处理器100(图1)的指令单元102产生的3位地址(指针选择)寻址向量地址指针阵列202,3位地址通过字解码器201选择8个字中的一个字。向量数据被包含在向量数据文件206中,在一个实施例中,向量数据文件包含512个均为16位的元素。总线210用于加载来自数据存储器105的指针字和数据文件,或来自算术单元104(图1)的向量算术计算结果。从向量数据文件206读取的数据由4个串联向量元素R1,R2,R3,R4组成,这些向量元素被放置在读数据总线207上,以便由向量算术单元104使用,或存储在数据存储器105(图1)中。从向量数据文件206读取的64位中的36位也被连接到36复用器205(例如,4个组,每组9个复用器)的第一输入,用于将在下面描述的地址更新。
用于选择组成向量数据文件206的每个读或写操作的4个向量元素(R1-R4)中的每一个的地址,来自于通过读总线203从向量指针阵列202读取的向量指针字的字段之一。每个字段与指令单元102(图1)产生的适当使能208进行逻辑与,以形成用于访问向量数据文件206的地址。使能的地址被同时连接到4增量阵列204的输入。增量地址被连接到复用器205的第二输入。通过复用器控制信号211在复用器205的第一和第二输入之间进行选择。复用器205的输出被连接到地址指针阵列202的输入,使得输出能够被写入阵列202。从指针阵列202读取的指针数据字可通过总线209被发送到数据存储器105(图1)。阵列逻辑设计领域的技术人员可以发现,这种在用于寻址数据阵列后(递增后)递增地址指针数值的方案可以被修改,以通过直接连接递增器阵列204到读总线203的输出并且连接其输出到地址使能级段230之前(递增前),在使用之前递增。
向量数据文件206的元素空间(例如,512字)最好由软件细分并分配给所实现的特定算法所需的数据向量。放到指针阵列202所存储的向量指针文件中的值定义多达8个的向量中的每个的起始地址。最好使用例如VPTRLOAD的程序指令把这些值载入指针阵列202。参照图2,指令VPTRLOAD的执行将要加载的值放到总线210上,并且将要加载的指针字的地址放到字地址解码器201的“指针选择”输入上。放在总线210上的值可以来自数据存储器105,或是算术或逻辑计算单元104(图1)输出的结果。
参照图3,向量数据文件206的一个实施例的示例性划分被示出为保持3个小向量。每个元素的9位地址由6位(64行)行地址和3位(8列)列地址组成。例子中的第一向量303由4个元素311组成,其中第一元素在行3列3中。第二元素在行3,列4中,诸如此类。对地址向量303,最好由软件程序设置向量指针阵列202。该程序将指针阵列的字地址″1″设置成指向向量303的4个元素。在向量地址指针文件202中,字地址″1″的36位被分成4个9位字段305,这些字段已经如图3所示进行了初始化。尽管实际会存储9位二进制数(或其它长度的字),但在指针的每个字段305中的值被示出为行,列值。例如,在3,3处的元素的元素地址实际被存储成二进制的000011011。第二向量307具有从8,1起始的12个元素。指针字地址″4″被用于寻址这个具有所示数值的向量的起始4元素。第三向量309由3个元素组成,第一元素在位置11,5,并且其它如图所示。由于没有第四元素,第四指针字段被设置成0,0,尽管无关。
对于图2中示出的实施例,向量数据文件206的基本操作包含例如顺序读,顺序写,间接读和间接写。访问的间接模式是本发明的一个重要特性,并且允许对向量数据文件206中的任意元素集合进行寻址以形成子向量。例如,这些子向量可以用于进行向量值的表查找,或把元素收集到子向量中以用于SIMD处理。本发明的其它用途可以包含例如向量的条状提取(strip-mining)。向量的条状提取包含通过把结果子向量间接读和回写(存储)到数据存储器105以便以后用于例如过滤的后续程序步骤,从而总成本子向量。
在对向量寄存器堆103(图1)执行指定逻辑周期的操作期间,可以执行下列操作:指定指针阵列202上的操作(读或写操作),提供对指针阵列的索引(是地址,例如,0和7之间的字地址),从指针阵列202读取对应于所提供的索引的指针阵列202的4个指针项,使用从指针阵列读取的4个指针项产生一组针对向量数据文件206(最好由如图所示一组4个地址使能信号208触发)的地址(图中所示为4个),从向量数据文件206读取对应于所提供的地址组的向量数据文件206的元素,以及提供控制信号以有选择地控制指针阵列中对应于所提供索引的指针项的更新。这些控制信号至少包含具有″是″或″否″值的“储存(putaway)控制”信号,其中如果等于″是″,该信号规定总线250上复用器的输出值要通过写端口251回写到指针地址阵列202。控制信号也包含复用器控制信号211,以确定从指针文件202读取的、对应于所提供的地址使能信号208组的增量地址,或从向量数据寄存器堆206读取的数据是否要被连接到总线250。
再次参照图2,其它操作(诸如递增操作,步进操作或增量模运算寻址操作)可以在由向量地址指针文件202提供的地址组上执行,并且可使用复用器电路205选择性地输出该操作的数据结果,或从向量数据文件206的元素读取的数据。在这种情况下,指针阵列(202)中对应于所提供的索引的指针项的更新可以使用由复用器电路205选择性输出的数据。
这些操作由指令触发,该指令包含对向量寄存器堆103中向量数据的操作。对总线210上的数据源以及总线209和207上的数据目的地的指定也从指令流中导出。
顺序向量读取从指针阵列202中的8个地址字(0-7)之一中的起始地址开始。为了示例说明,会使用在图3示出的向量文件206划分,并且将描述第二向量307的读取以解释本发明的其它特性以及细节。
参照图1,2和3,第一操作周期指定指针阵列202的字地址″4″的读取,所有4个地址的使能,向量数据文件206的读取,复用器控制211取值1(例如,选择复用器的左支),以及″是″储存值(putaway value)。储存值是指令中的一个位,用于指定复用器205的输出是否将被回写到指针地址阵列202。储存值被实现成控制信号,该控制信号确定总线250上的值是否将通过写端口251被写入指针阵列202。这将产生向量指针字地址″4″的第一个9位,它是从向量数据文件206读取的第一个子向量元素的地址。向量数据文件206中8,1处的元素被读取并且放置在总线207的R1上。类似地,指针字″4″中的第二字段指定数据文件中8,2处的元素被读取并且放置在总线207的R2上,对于第三和第四元素也类似。读取的4个16位数据值(R1-R4)被装配成一个子向量,并且通过读数据总线207传递到数据存储器105或向量算术单元104。同时,从指针字″4″读取的值被递增器204递增到下一个顺序数值(通过加4,因为一次处理4个元素)。
由于复用器控制211选择递增值并且储存控制指定更新值将被放回指针阵列202中,数值(8,5),(8,6),(8,7)和(8,8)通过复用器205被存储回指针文件字地址4。本领域技术人员理解,4(二进制000000100)与表示行8列1的值(二进制001000001)相加将产生表示行8列5(8,5)的二进制001000101,并且对于其它3个数值也是类似的。
下一个操作周期的控制值与第一周期相同,但由于更新的指针值被用于访问向量数据文件206,向量的下4个元素被装配并且放在总线207上。对于附加周期(针对这个例子,总共为3)重复这个相同控制数值,以顺序读取整个元素向量(在这种情况下为12个元素)并且把向量放置于总线207上。
向量的顺序写入或加载非常类似于读取。再次使用图3的第二向量作为一个例子,访问向量数据文件206中的数据的第一操作周期指定指针阵列202的字地址4的读取,所有4个地址的使能208,向量数据文件206的写,复用器控制211取值1(例如,选择左支),以及″是″储存控制值。这个值将产生向量指针字地址″4″的第一个9位,它是写入数据文件206的第一个子向量元素的地址。总线210的第一个16位被写入向量数据文件206中8,1处的元素。类似地,指针字地址″4″中的第二字段指定数据文件206中8,2处的元素将通过来自总线210的第二个16位被写入。对于第三和第四元素是类似的。从总线210上的64位取得的4个16位数据值现在被写入向量数据文件206。同时,从指针字地址″4″读取的值已经被递增器204递增到下一个顺序数值(通过加4,因为一次处理4个元素)。由于复用器控制211选择递增值并且储存控制值指定更新的数值将被放回指针阵列202中,数值(8,5),(8,6),(8,7)和(8,8)通过复用器205被存储回指针文件字地址″4″。相同控制字被再重复两次,并且总线210上的下两个值被存储在数据文件中以构成12元素向量。
间接寻址操作模式(间接读和间接写)可以说明性地用于以下操作:
1)通过向量数据206文件中存储为向量的地址列表进行的任意子向量访问;
2)信号样本被放入指针寄存器202的情况下进行的针对数据的访问,在这种情况下,每个信号值可以访问许多算法中需要的向量元素以选择过滤系数;以及
3)数据收集操作,用以把分散数据转换成顺序的可SIMD处理的数据。
这不是详尽的列举,因为间接命令也可以用于其它任务。
继续参照图2并使用图4中说明的示例性划分描述间接读取。第一向量403的4个元素包含对应于向量数据文件206中的地址(8,3),(8,5),(9,2)和(9,3)的二进制元素值。访问向量寄存器数据文件206中数据的第一操作周期的控制指定指针阵列202的字地址″1″的读取,所有4地址的使能208,向量数据文件206的读取,复用器控制211取值0(选择右支),以及″是″储存控制值。这个数值将导致向量数据文件206中位置8,3处的16位元素被从向量数据文件206读取,并且放置于总线207的R1上。这个数值的9个位也被连接到复用器205中的第一个。如上所述,这9位具有对应于向量数据文件206中元素的地址的二进制数值。类似地,其它3个元素处每个数值的9位被连接到复用器205。由于复用器选择控制211指定选择右并且储存控制指定″是″,则包含在位置(8,3),(8,5),(9,2)和(9,3)中的数值被写入指针字地址″1″的4个字段。
第二控制周期指定指针阵列202的字地址″4″的读取,所有4地址的使能208,向量数据文件206的读取,复用器控制值211为0(选择右支),以及″否″储存控制值。第二操作周期导致其地址现在在指针文件字地址″1″处的4个元素的读取,并且被从向量数据文件206读取并放置于总线207上。这是其在向量数据文件206中的位置对应于向量数据文件206中位置(8,3),(8,5),(9,2)和(9,3)的低阶9位的值的4个元素。
间接写(“数据分散”)操作按类似顺序控制。注意,执行数据分散操作的能力需要将64位写端口261(图2)分成4个16位端口(总共64位),使得每个元素地址230可以指定对向量数据文件206中任何16位数据元素的写入。使用这种能力,元素1地址指定64位总线210的第一个16位中的向量元素R1被写入数据文件206的位置,元素2地址指定64位总线的第二个16位中的向量元素R2被写入数据文件206的位置,对于R3和R4也诸如此类。由于硬件成本原因,简化实施例可以省略这种能力。在所述实施例中,访问向量寄存器数据文件206中数据的第一操作周期的控制指定指针阵列202的字地址″1 ″的读取,所有4地址的使能208,向量数据文件206的读取,复用器控制数值211为0(选择右支),以及″是″储存控制值。这读取所指定的4个元素中的数值,并且把数值回写入指针阵列字地址″1″。第二周期控制指定指针阵列202的字地址″1″的读取,所有4地址的使能208,向量数据文件206的写入,复用器控制211值为0(选择右支),以及″否″储存控制值。这取得总线210上的4个元素,并且把它们放置在由第一周期中读取的地址指定的向量数据文件206的4个元素中。
使用任意指针指定数据文件中计算的起始点的能力使得极其容易和快速地将一个向量“滑过”另一个向量或其自身,以用于诸如过滤和卷积的计算。
本领域技术人员会理解,图2中示出的地址生成和使用的逻辑可以被复制以用于向量数据文件206的多端口访问。图2的实施例针对多端口操作的第一扩展是使文件206的读和写端口(分别为262和261)能同时操作,即一个两端口文件,其中一个端口专用于读取,另一个端口专用于写入。通过这样的结构,当旧数据被读端口262读取并且放在总线207上时,新数据通过写端口261可以从总线210被载入向量数据文件206,经过处理并且把结果回写到数据存储器105。这允许任意规模的向量顺序通过(streamed though)处理单元。
参照图5,给出对图2的实施例的修改以提供例如步进和模运算寻址的其它寻址模式。其它寻址模式也可以用适当逻辑或软件实现。图2的地址递增器204和复用器205可以被图5中示出的硬件替换。包含递增器504和复用器505。输入包含从指针文件(202)读取的元素地址508,来自寄存器堆206的向量数据,输出是被存储在指针文件202中的更新地址总线250。对于步进访问,最好由程序把步进值存储在步进寄存器501中,并且访问按上面针对顺序访问描述的方式进行。然而,对指针文件值相加(相减)步进值而不是固定数值4。例如,模运算(循环)寻址由例如在起始点寄存器503和指针文件202(图2)中加载循环缓冲区的起始地址的程序执行。向量的结束点被加载在结束点寄存器502中。使用步进寄存器501数值继续操作以按上述递增地址。每个周期,比较相等电路506比较更新地址与结束点地址以确定是否已经到达向量的结束点。如果已经到达,则调整复用器505以向指针文件202提供来自起始点地址寄存器503的起始点地址以作为新地址,而不是提供更新地址。
本发明提供了超过现有技术的许多优点。例如,由于本发明提供的灵活寻址,数据存储器105的寻址被简化。其它优点可以包含如下。复杂循环和表查找的数据寻址可以方便地在少数指令中指定,本发明使得程序的规模更小,因此提高了指令存储器101的效率。本发明允许向量地址文件206中的每个元素能够独立于向量地址文件206中的任何其他元素内容地包含数据阵列202中任意元素的任意地址。例如,两个元素可以具有相同地址,同时消除了有关地址指向数据文件中顺序数据元素的任何要求。本发明可以实现其它优点和好处。
根据本发明的其它实施例,数字信号处理器(DSP)包含级联连接的双SIMD单元,并且其中级联的第一SIMD级段的结果可以存储在级联的第一SIMD级段的寄存器堆中。每个SIMD级段包含其自身的用于存储操作数和中间结果(例如,其自身寄存器堆),以及用于解码可在该级段中执行的操作的资源。在每个级段内,硬件资源被构造成以SIMD方式操作,使得独立的SIMD操作可以被同时执行,其中级联的每个级段均执行一个操作。流过级联的中间操作数和结果被存储在级段的寄存器堆中,并且可以从那些寄存器堆访问。数据也可以从存储器直接进入级联中级段的寄存器堆。
应当理解,本发明提供了超过传统方案的显著优势。例如,由于SIMD功能单元级联连接,并且可以在信号处理内核的计算时同时使用,因此不需要使用相同算术/逻辑单元执行离散操作序列。此外,由于级联中各个级段以独立于前一级段的方式(例如,每个级段执行其自身的指令)进行操作,并且数据能够从任一级段的寄存器堆传送到存储器/从该寄存器堆传送到该存储器,所以本发明也改进了上面描述的流水线方案。
另外,通过使用单指令指定所有操作,本发明的各种实施例改进了传统的VLIW方案,并且同时允许针对操作数规定独立的寄存器。此外,本发明的各种实施例通过允许使用灵活机构选择SIMD指令所使用的数据元素,改进了具有子字并发的SIMD方案,但不需要单个寄存器中数据元素的串联。
参照图6,示例性数字信号处理器1100包含以SIMD方式对从这里称作向量元素寄存器堆(VER)1120的寄存器堆获得的16位数据值1122-1128执行4个操作,从而产生4个中间结果的16位数据路径1110。VER 1120每周期能够传送8个操作数并接收4个值。在16位数据路径1110中产生的4个结果被放在另一个寄存器堆中,其中每个元素1152-1158是40位宽,所述另一个寄存器堆这里被称作向量累加器寄存器堆(VAR)1160。16位数据路径1110内的每个功能单元(FU16)1132-1138包含例如16位乘16位乘法器,和执行算术、逻辑、移位,并且选择对16位数据内容的操作的16位ALU。4个16位数据元素可以被从存储器传送到VER 1120,并且4个16位数据元素可以被从VER 120传送到存储器。
其间,40位数据路径1140同时也以SIMD方式对从VAR 1160获得的40位值1152-1158执行4个操作,从而产生被放回VAR 1160的4个结果。VAR 1160每周期也能够传送8个操作数并接收4个值。40位数据路径1140内的每个功能单元(FU40)1152-1158包含例如执行算术、逻辑、移位,并且选择对40位数据的操作的40位ALU。此外,附加专用硬件(Red 1171-1174)可以用于把4个值合并成单个结果(称为“缩减”的操作),从而把结果放置在专用的特殊寄存器RR 1175中。4个40位数据元素可以被并行地从VAR 1160传送到存储器。
具有这个结构的其它功能可选地包含在执行缩减数据值长度的操作(例如,舍入,截断,饱和,位提取或其组合)之后从40位VAR1160传送数据值到16位VER 1120的能力,该操作在标记为R/S/T1163-1169的块中执行。
因此,两个独立的4元素SIMD指令可以通过这个硬件结构在任何周期同时执行,两个SIMD计算数据路径的每个均执行一个指令。
应当理解,可以在来自第一数据路径的结果被放在第二数据路径的寄存器堆之前对该结果执行适当宽度扩展,并且可以在来自第二数据路径的结果被移动到第一数据路径的寄存器堆或存储器时对该结果执行适当长度缩减。
此外,尽管图6分别示出了16位和40位的数据路径宽度,然而应当理解,可以把这些数据路径的宽度实现为不同数值对。例如,24位数据路径可以与50位数据路径配对。应当理解,数据路径的宽度在不偏离本发明的实质和范围的前提下可以随设计选择发生改变。
图6示出的结构的典型应用是在16位数据路径1110中计算16位乘法操作,从而产生32位结果,之后是40位数据路径1140中的40位累加操作。针对此计算,16位数据值被从存储器传送到VER 1120,乘法操作在16位数据路径中执行,并且在扩展到40位(例如,符号扩展或零扩展)之后,32位结果被放入VAR 1160。来自VAR 1160的40位数据被相加(累加),并且结果被放入VAR 1160以便以后使用。当一系列累加操作完成时,把最终结果从VAR 1160传送到存储器,该结果可以是40位数值,或是通过缩减数据值长度的操作(例如,舍入,截断,饱和,位提取或其组合)而得到的32位数值。
为了提供SIMD操作所需的8个数据值,并且保存由SIMD操作产生的4个值,可以通过本领域当前为这些目的而实施的若干方式中的任意方式组织寄存器堆。例如,寄存器堆可以由4个小的寄存器“组”构成(诸如图6示出的寄存器组1122-1128),其中每个寄存器组具有两个读端口和一个写端口。这些寄存器组的每个只向SIMD数据路径中的一个功能单元提供数据。此方案需要在一个SIMD操作中使用的每组4个值在其使用之前,按SIMD操作使用数值的顺序适当地分布在4个寄存器组上。类似地,立即放置在寄存器堆中的4个数值必须被分布在各寄存器组上。
寄存器堆的另一个可选方式包含“宽”寄存器的使用,其中每个寄存器包含多个数据值(元素)。如图7所示,VER 1220和VAR 1260分别包含宽寄存器1225和1265。在这个实施例中,为检索用于执行SIMD操作的8个数值,只有两个寄存器(两个读端口)被访问。类似地,只有一个寄存器(一个写端口)被访问以放置由SIMD操作产生的4个结果。这对应于称为“子字并发”的方案。结果,VER 1220和VAR 1260均具有两个读端口和一个写端口。此方案需要将一个SIMD操作中使用的各4数值组的每组在其使用之前,按SIMD操作使用数值的顺序一起放置在一个单独寄存器中。类似地,单个寄存器被访问以立即将由SIMD操作产生的4个数值放置在寄存器堆中。
图8图解了寄存器堆的更灵活的可选方式,其包含使用上面描述的类型的8读4写寄存器堆,包含指针寄存器。在这种情况下,根据指针寄存器内容的指定,在堆中的任意寄存器中间按任意顺序任意选择在SIMD指令中使用的数值组。这种方案所提供的灵活性允许以更复杂的寄存器堆(更多端口)为代价提供更强力的数据操作机构。如上面进一步描述的,通过指针寄存器间接执行对寄存器堆的访问。即,每个指针寄存器(1350和1355)包含针对寄存器堆(分别为1330和1360)的索引,从而允许选择寄存器堆中的任意寄存器。两个寄存器指针可以用于从寄存器堆读取数据,并且第三个指针寄存器可以用于指定在寄存器堆中放置数据的位置。此外,可根据在SIMD数据路径中执行的操作自动递增指针寄存器(1350和1355),使得后续SIMD操作能够访问来自寄存器堆的数据结构化阵列,而无需显式的数据处理操作。
本领域技术人员明白,已知或以后开发的寄存器堆结构的任意组合可以用于实现本发明。例如,图9示出两个SIMD级段的级联,其中16位数据路径1410包含使用上面描述的指针寄存器结构灵活访问16位数据的12端口寄存器堆(VER 1330),而40位数据路径(VAR 1440)中的寄存器堆具有均包含4个元素,使得仅需要两个读端口和一个写端口(子字并发)的寄存器。
图9中示出的2级段级联结构提供比现有技术水平更大的灵活性,和执行数字信号处理算法的更强计算性能。级联中两个SIMD级段的组合允许同时执行通过两个独立SIMD指令(每个数据路径一个指令)指定的高达8个的数字信号处理算术/逻辑操作。
上述例子说明了本发明的一些主要优点,但是它们不是限定性的。此外,所描述和图解的一些特性的选择是出于说明简单而不是设计最优的目的。例如,在特定级段的功能单元的确切数量可以比图中描述的功能单元的数量更多或少。此外,数据路径(16位或40位)中执行的实际操作由其中使用本发明的具体信号处理应用确定,并且应当理解,功能单元可以包含将在特定处理器上运行的应用所需的任意逻辑和算术操作。
尽管本发明的示例性实施例已经在这里参照附图加以描述,然而应当理解,本发明不限于那些精确实施例,并且本领域技术人员在不偏离本发明的范围或实质的前提下,可以对其进行各种其它改变和修改。
Claims (47)
1.一种使用处理器处理数字信号信息的方法,其中处理器具有级联连接到第二数据路径的第一数据路径,所述方法包括步骤:
在第一数据路径中执行第一SIMD指令;以及
与第一SIMD指令并行地在第二数据路径中执行第二SIMD指令。
2.如权利要求1所述的方法,其中第一数据路径和第二数据路径均包含其自身的寄存器堆。
3.如权利要求2所述的方法,其中执行第一SIMD指令包含把向量信息加载到第一数据路径的寄存器堆。
4.如权利要求2所述的方法,还包括把在第一数据路径中执行的操作的结果传送到第二数据路径的寄存器堆的步骤。
5.如权利要求4所述的方法,其中在第二数据路径中操作传送到第二数据路径的寄存器堆的结果。
6.如权利要求4所述的方法,其中传送到第二数据路径的寄存器堆的结果被零扩展或符号扩展以具有等于第二数据路径宽度的位长。
7.如权利要求2所述的方法,还包括把在第二数据路径中执行的操作的结果传送到第二数据路径的寄存器堆的步骤。
8.如权利要求2所述的方法,还包括把在第二数据路径中执行的操作的结果传送到存储器的步骤。
9.如权利要求2所述的方法,还包括把在第二数据路径中执行的操作的结果传送到第一数据路径的寄存器堆的步骤。
10.如权利要求2所述的方法,其中传送到存储器或第一数据路径的寄存器堆的数据被降低尺寸。
11.如权利要求10所述的方法,其中尺寸降低包含饱和,舍入,截断和位提取中的至少一个。
12.如权利要求2所述的方法,其中至少一个寄存器堆被组织成多个寄存器组。
13.如权利要求2所述的方法,其中至少一个寄存器堆被组织成宽寄存器。
14.如权利要求2所述的方法,其中至少一个寄存器堆被组织成其单元能任意寻址的寄存器堆。
15.如权利要求14所述的方法,其中使用具有多个指针的指针寄存器实现任意寻址,每个指针指向寄存器堆的一个单元。
16.如权利要求15所述的方法,其中使用指针寄存器指定SIMD指令的操作数。
17.如权利要求15所述的方法,其中使用指针寄存器指定要存储的结果数据。
18.如权利要求2所述的方法,还包括步骤:
使用专用硬件把多个数值合并成单个结果;以及
把单个结果放置到专用寄存器中。
19.如权利要求1所述的方法,其中第一数据路径的宽度不同于第二数据路径的宽度。
20.如权利要求19所述的方法,其中第一数据路径的宽度小于第二数据路径的宽度。
21.如权利要求20所述的方法,其中第一数据路径的宽度是16位,并且第二数据路径的宽度是40位。
22.一种数字信号处理器,包括:
第一数据路径,用于执行第一SIMD指令;以及
被连接到第一数据路径的第二数据路径,用于与第一SIMD指令并行地执行第二SIMD指令。
23.如权利要求22所述的数字信号处理器,其中第一数据路径和第二数据路径均包含其自身的寄存器堆。
24.如权利要求23的数字信号处理器,其中向量信息被存储在第一数据路径的寄存器堆中。
25.如权利要求23所述的数字信号处理器,其中在第一数据路径中执行的操作的结果被传送到第二数据路径的寄存器堆。
26.如权利要求25所述的数字信号处理器,其中在第二数据路径中操作传送到第二数据路径的寄存器堆的结果。
27.如权利要求25所述的数字信号处理器,其中传送到第二数据路径的寄存器堆的结果被零扩展或符号扩展以具有等于第二数据路径宽度的位长。
28.如权利要求23所述的数字信号处理器,其中在第二数据路径中执行的操作的结果被放在第二数据路径的寄存器堆中。
29.如权利要求23所述的数字信号处理器,其中在第二数据路径中执行的操作的结果被传送到存储器。
30.如权利要求23所述的数字信号处理器,其中在第二数据路径中执行的操作的结果被传送到第一数据路径的寄存器堆。
31.如权利要求23的数字信号处理器,其中尺寸降低单元被连接到第二数据路径的寄存器堆,用于降低传送到存储器或第一数据路径的寄存器堆的数据的位长。
32.如权利要求31所述的数字信号处理器,其中尺寸降低单元被构造成用于执行饱和,舍入,截断和位提取中的至少一个。
33.如权利要求23所述的数字信号处理器,其中至少一个寄存器堆被组织成多个寄存器组。
34.如权利要求23所述的数字信号处理器,其中至少一个寄存器堆被组织成宽寄存器。
35.如权利要求23所述的数字信号处理器,其中至少一个寄存器堆被组织成其单元能任意寻址的寄存器堆。
36.如权利要求35所述的数字信号处理器,其中通过使用具有多个指针的指针寄存器实现任意寻址,每个指针指向寄存器堆的一个单元。
37.如权利要求36所述的数字信号处理器,其中使用指针寄存器指定SIMD指令的操作数。
38.如权利要求36所述的数字信号处理器,其中使用指针寄存器指定要存储的结果数据。
39.如权利要求23所述的数字信号处理器,其中专用硬件被用于把多个数值合并成放入专用寄存器的单个结果。
40.如权利要求22所述的数字信号处理器,其中第一数据路径的宽度不同于第二数据路径的宽度。
41.如权利要求40所述的数字信号处理器,其中第一数据路径的宽度小于第二数据路径的宽度。
42.如权利要求41所述的数字信号处理器,其中第一数据路径的宽度是16位,并且第二数据路径的宽度是40位。
43.一种机器可读的程序存储设备,其有形地体现了可在机器上执行的指令程序,该指令程序用于执行各方法步骤,以使用具有级联连接到第二数据路径的第一数据路径的处理器处理数字信号信息,所述方法步骤包括:
在第一数据路径中执行第一SIMD指令;以及
与第一SIMD指令并行地在第二数据路径中执行第二SIMD指令。
44.一种用于处理向量的方法,包括步骤:
加载向量;
访问向量的任意部分;以及
使用所访问的向量部分执行指定操作。
45.一种用于处理使用了均包括多个数据元素的数据向量的操作的系统,包括:
向量数据文件,包括多个存储单元,用于存储数据向量的数据元素;
通过总线连接到向量数据文件的指针阵列,指针阵列包含多个指针项,每个指针项标识向量数据文件中的至少一个存储单元;以及
所述至少一个存储单元,用于存储数据向量的最少一个数据元素,其中对于指针阵列中的最少一个具体指针项,由该具体指针项标识的至少一个存储单元在向量数据文件中具有任意起始地址。
46.一种用于处理使用了均包括多个数据元素的数据向量的操作的方法,包括:
提供向量数据文件,该向量数据堆包括多个存储单元,用于存储数据向量的数据元素;以及
提供具有多个指针项的指针阵列,其中每个指针项标识向量数据文件中的至少一个存储单元,用于存储数据向量的至少一个数据元素,其中对于指针阵列中的至少一个具体指针项,由该具体指针项标识的至少一个存储单元在向量数据文件中具有任意起始地址。
47.一种用于处理使用了均包括多个数据元素的数据向量的操作的系统,包括:
向量数据文件,包括多个存储单元,用于存储数据向量的数据元素;
通过总线连接到向量数据文件的指针阵列,该指针阵列包含多个指针项,其中每个指针项标识向量数据文件中的至少一个存储单元;以及
所述至少一个存储单元,用于存储数据向量的至少一个数据元素,其中对于指针阵列中的至少一个具体指针项,由该具体指针项标识的至少一个存储单元在向量数据文件中具有任意起始地址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39177802P | 2002-06-26 | 2002-06-26 | |
US60/391,778 | 2002-06-26 | ||
US10/456,793 | 2003-06-07 | ||
US10/456,793 US7308559B2 (en) | 2000-02-29 | 2003-06-07 | Digital signal processor with cascaded SIMD organization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1662904A true CN1662904A (zh) | 2005-08-31 |
CN100437547C CN100437547C (zh) | 2008-11-26 |
Family
ID=30003208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038138506A Expired - Fee Related CN100437547C (zh) | 2002-06-26 | 2003-06-24 | 具有级联simd结构的数字信号处理器及其信号处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7308559B2 (zh) |
CN (1) | CN100437547C (zh) |
AU (1) | AU2003249378A1 (zh) |
WO (1) | WO2004004191A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103570A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | Simd向量的同步化 |
CN104281437A (zh) * | 2013-07-08 | 2015-01-14 | Arm有限公司 | 具有单指令多数据处理电路的数据处理装置 |
CN107851017A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法 |
CN112328537A (zh) * | 2014-11-14 | 2021-02-05 | 马维尔亚洲私人有限公司 | 在64位数据路径上实现128位simd操作 |
CN112368676A (zh) * | 2019-09-29 | 2021-02-12 | 深圳市大疆创新科技有限公司 | 处理数据的方法和设备 |
CN115934102A (zh) * | 2022-12-29 | 2023-04-07 | 格兰菲智能科技有限公司 | 通用寄存器动态分配方法、装置、计算机设备和存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7793084B1 (en) | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
US7302627B1 (en) * | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7850400B2 (en) * | 2004-11-25 | 2010-12-14 | Freyssinet International (Stup) | Stabilized soil structure and facing elements for its construction |
US8024549B2 (en) * | 2005-03-04 | 2011-09-20 | Mtekvision Co., Ltd. | Two-dimensional processor array of processing elements |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
KR101586770B1 (ko) * | 2008-10-14 | 2016-01-19 | 고쿠리츠다이가쿠호징 나라 센탄카가쿠기쥬츠 다이가쿠인 다이가쿠 | 데이터 처리 장치 |
US8635431B2 (en) | 2010-12-08 | 2014-01-21 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
US10803009B2 (en) * | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
US10353709B2 (en) | 2017-09-13 | 2019-07-16 | Nextera Video, Inc. | Digital signal processing array using integrated processing elements |
US11132198B2 (en) * | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
US11561794B2 (en) * | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6123275A (ja) | 1984-07-11 | 1986-01-31 | Nec Corp | ベクトル処理装置 |
US4745547A (en) * | 1985-06-17 | 1988-05-17 | International Business Machines Corp. | Vector processing |
JPS62115571A (ja) * | 1985-11-15 | 1987-05-27 | Fujitsu Ltd | ベクトルアクセス制御方式 |
JPS62120574A (ja) | 1985-11-20 | 1987-06-01 | Fujitsu Ltd | ベクトル処理装置 |
DE58908974D1 (de) * | 1989-11-21 | 1995-03-16 | Itt Ind Gmbh Deutsche | Datengesteuerter Arrayprozessor. |
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5669013A (en) | 1993-10-05 | 1997-09-16 | Fujitsu Limited | System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions |
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US5689677A (en) * | 1995-06-05 | 1997-11-18 | Macmillan; David C. | Circuit for enhancing performance of a computer for personal use |
US6049859A (en) * | 1996-01-15 | 2000-04-11 | Siemens Aktiengesellschaft | Image-processing processor |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US5933650A (en) | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6044448A (en) * | 1997-12-16 | 2000-03-28 | S3 Incorporated | Processor having multiple datapath instances |
US6288723B1 (en) | 1998-04-01 | 2001-09-11 | Intel Corporation | Method and apparatus for converting data format to a graphics card |
US6272616B1 (en) * | 1998-06-17 | 2001-08-07 | Agere Systems Guardian Corp. | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths |
US6052766A (en) * | 1998-07-07 | 2000-04-18 | Lucent Technologies Inc. | Pointer register indirectly addressing a second register in the processor core of a digital processor |
US6308252B1 (en) | 1999-02-04 | 2001-10-23 | Kabushiki Kaisha Toshiba | Processor method and apparatus for performing single operand operation and multiple parallel operand operation |
-
2003
- 2003-06-07 US US10/456,793 patent/US7308559B2/en not_active Expired - Fee Related
- 2003-06-24 AU AU2003249378A patent/AU2003249378A1/en not_active Abandoned
- 2003-06-24 WO PCT/US2003/020102 patent/WO2004004191A2/en not_active Application Discontinuation
- 2003-06-24 CN CNB038138506A patent/CN100437547C/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103570A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | Simd向量的同步化 |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
CN102103570B (zh) * | 2009-12-22 | 2015-08-12 | 英特尔公司 | Simd向量的同步化 |
CN104281437A (zh) * | 2013-07-08 | 2015-01-14 | Arm有限公司 | 具有单指令多数据处理电路的数据处理装置 |
CN104281437B (zh) * | 2013-07-08 | 2018-09-18 | Arm 有限公司 | 具有单指令多数据处理电路的数据处理装置 |
CN112328537A (zh) * | 2014-11-14 | 2021-02-05 | 马维尔亚洲私人有限公司 | 在64位数据路径上实现128位simd操作 |
CN107851017A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法 |
CN112368676A (zh) * | 2019-09-29 | 2021-02-12 | 深圳市大疆创新科技有限公司 | 处理数据的方法和设备 |
WO2021056541A1 (zh) * | 2019-09-29 | 2021-04-01 | 深圳市大疆创新科技有限公司 | 处理数据的方法和设备 |
CN115934102A (zh) * | 2022-12-29 | 2023-04-07 | 格兰菲智能科技有限公司 | 通用寄存器动态分配方法、装置、计算机设备和存储介质 |
CN115934102B (zh) * | 2022-12-29 | 2023-12-12 | 格兰菲智能科技有限公司 | 通用寄存器动态分配方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2004004191A3 (en) | 2004-04-29 |
AU2003249378A8 (en) | 2004-01-19 |
CN100437547C (zh) | 2008-11-26 |
US7308559B2 (en) | 2007-12-11 |
US20040078554A1 (en) | 2004-04-22 |
AU2003249378A1 (en) | 2004-01-19 |
WO2004004191A2 (en) | 2004-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100437547C (zh) | 具有级联simd结构的数字信号处理器及其信号处理方法 | |
KR100447294B1 (ko) | 임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 | |
JP3916680B2 (ja) | プロセッサ | |
US8738892B2 (en) | Very long instruction word (VLIW) computer having efficient instruction code format | |
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN100342325C (zh) | 减少多线程处理器中寄存器文件端口的方法和装置 | |
US6163836A (en) | Processor with programmable addressing modes | |
EP0428326A1 (en) | Processor array system | |
JP4130654B2 (ja) | 拡張可能なプロセッサアーキテクチャ中にアドバンスド命令を追加するための方法および装置 | |
CN108205448B (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
KR20180062910A (ko) | 신경 메모리 및 신경 메모리로부터 수신된 데이터의 행의 멀티-워드 거리의 회전을 집단적으로 수행하는 신경 처리 유닛들의 어레이를 갖는 신경망 유닛 | |
CN101379481A (zh) | 处理元件、混合模式并行处理器系统、处理元件方法、混合模式并行处理器方法、处理元件程序、以及混合模式并行处理器程序 | |
US6542918B1 (en) | Prefix sums and an application thereof | |
Padegs et al. | The IBM System/370 vector architecture: Design considerations | |
CN100410919C (zh) | 处理器 | |
US6694407B1 (en) | Cache memory with data transfer control and method of operating same | |
US7441099B2 (en) | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
WO2000068783A2 (en) | Digital signal processor computation core | |
EP0363174A2 (en) | Branch on bit processing | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
US20040128475A1 (en) | Widely accessible processor register file and method for use | |
US6859872B1 (en) | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation | |
JP3737573B2 (ja) | Vliwプロセッサ |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081126 Termination date: 20110624 |