CN101371248A - 可配置的单指令多数据单元 - Google Patents
可配置的单指令多数据单元 Download PDFInfo
- Publication number
- CN101371248A CN101371248A CNA2007800021542A CN200780002154A CN101371248A CN 101371248 A CN101371248 A CN 101371248A CN A2007800021542 A CNA2007800021542 A CN A2007800021542A CN 200780002154 A CN200780002154 A CN 200780002154A CN 101371248 A CN101371248 A CN 101371248A
- Authority
- CN
- China
- Prior art keywords
- data
- lut
- instruction
- memory location
- csimd
- 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
- 238000000034 method Methods 0.000 claims abstract description 40
- 241001269238 Data Species 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 21
- 101100365087 Arabidopsis thaliana SCRA gene Proteins 0.000 description 5
- 101150105073 SCR1 gene Proteins 0.000 description 5
- 101100134054 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) NTG1 gene Proteins 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000009183 running Effects 0.000 description 1
- 241000894007 species Species 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/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
-
- 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)
- Image Processing (AREA)
Abstract
本发明披露了处理一个可配置单指令多数据(CSIMD)指令的方法和装置。在本方法里,有一个存储信息的查找表格(LUT)(430)支持随机访问与多个处理元件(PE)(410)相关的存储位置,并通过PE执行指令差异。一个CSIMD指令(500)被接收,其包括一个命令(510)和一个查找表格(LUT)索引,将由PE执行。使用LUT索引随机访问存储位置,接收到的CSIMD指令的命令有差别地由PE并行运行。
Description
技术领域
本发明通常涉及并行处理器特别涉及单指令多数据(SIMD)处理器。
发明背景
并行处理通常是指通过将程序分成多个程序段(其可以通过多个处理器同时执行)以提高程序执行速度的概念。根据应用类型,不同的并行处理器构造有不同的结果,并要求不同的程序分段。例如,程序可以被分割成几部分,它们可以同时运行,并可以完全独立运行。这种并行处理被称为多输入流、多输出流(MIMD)。这种方法增加了灵活性,但由于竞态条件(race condition)以增加复杂性为代价,其中在MIMD处理器的处理单元之间的时序差异(timing discrepancy)和数据相关性(data dependency)可能使运行程序部分失去其正确的次序,导致运行中断。另一种并行处理器被称为单指令流、多数据流(SIMD)。当在大量数据上执行相同操作时(例如图像处理),这种并行处理单元特别有用,其中一种操作可以被统一应用在所有图像像素上或部分上。
依照一个现有构造,图1描述一个SIMD单元100。SIMD单元100包括多个并行运行的处理部件(PE)110a-110n。同时各自有存储组120a-120n,在所述例子里它们是存储堆栈。每个存储组包括多个存储地址,地址0、地址1、...地址M。PE110可以是任何执行引擎,如运算处理器,其执行诸如加、减、乘和除的命令。或者,PE110同样可以是逻辑和位操作单元,其执行诸如ADD、OR、EXCLUSIVE-OR等操作。每个处理部件110通过各个读取和写入操作,可以从各个存储组120接收多个数据输入以及将数据写到各个存储组120。
图2显示一个SIMD指令200的例子,其可以由图1的SIMD单元100执行。指令200包括几个部分210-250。依照,部分210-250的组成部分和次序根据SIMD单元100的实施不同而不同。在此例子里,指令200包括一个命令指令(CMD)部分210、数据源部分220、230(分别是SRC0和SRC1)、一个目标地址部分240(DST)和一个其它控制部分250(MISC)。
CMD部分210显示将被执行的命令类型,SCR0部分220和SRC1部分230提供在各个存储组内数据的源地址,CMD命令将在其上执行。DST部分240提供在各个存储组内数据的目标地址,在数据源SCR0和SCR1上执行CMD命令的数据结果将被写入其中。MISC部分250提供进一步指令差异(instruction variances)以便给PE执行,如执行的CMD命令结果在写入程序之前是否完全执行或转移,或者源数据是否是源部分(SRC0或SRC1)本身,而不是来自存储组。
图3描述一种在如图1配置100的SIMD单元上执行如在图2所示指令的方法300。在步骤310,一个SIMD指令(200)由SIMD单元接收。指令可以被解析以分割成指令部分。或者,指令可以被解析然后提供给SIMD单元。在步骤320,PE接收到指令命令。在步骤330,PE从其各个存储组取回数据。在指令的SRC0和SRC1部分内显示的存储组地址内的数据是从每个存储组取得。PE读取各个源数据。
在步骤340,PE执行指令。即命令指令是由每个PE执行。MISC控制信息被传递到PE。指令差异的执行是由不同MISC控制信息设定控制。所有PE必须在任何运行周期内执行相同的操作。在步骤350,结果被写到目标地址。每个PE写数据写到指令(图2的200)DST部分指示的存储地址内,在每个PE的各个存储组内。不利的是,以上图1到图3的SIMD单元构造被限制在读取和写入一个仅与各个PE相关的存储组。此外,每个PE必须在取回的数据上执行相同的指令差异。
所以,需要一个在以上配置上提供更大灵活性的SIMD单元。
发明概述
依照本发明的一个方面,提供一种处理可配置单指令多数据(CSIMD)指令的方法。本方法包括以下步骤:提供一个存储信息的查找表格(LUT)以支持随机访问与多个处理元件(PE)相关的存储位置并通过PE执行指令差异;接收一个将由PE执行的CSIMD指令,其包括一个命令和一个查找表格(LUT)索引;使用LUT索引随机访问存储位置,PE有差别地并行执行接收到的CSIMD指令。
存储在LUT内的信息取决于应用需要。
存储在LUT内的信息包括指令差异、从存储位置取回的随机源数据、以及反写到存储位置的随机目标数据。从存储位置取回的数据和反写到存储位置的数据可以通过指定地址和组信息而实现。
依照LUT索引,PE可以执行指令差异、随机源数据取回和随机目标写入。
LUT索引(图5的520)指向的一个LUT行还包括有关至少一些源数据的信息,以便PE能够从与PE相关的各个存储位置读取。LUT索引指向的一个LUT行包括有关目标数据的信息,以便Ps能够被写到与PE相关的各个存储位置。
本方法还包括步骤将PE执行每个命令的结果写到各个目标存储位置。CSIMD指令可以包括目标存储位置。
LUT在各个行包括存储地址,使用LUT索引可访问到它们,以随机访问存储在存储位置内的源数据。
在LUT内的源和/或目标数据位置,其可能包括行地址和列组,可以被提供给一个随机数据存取控制(RDAC)单元。RDAC单元可以从源数据位置读取数据,并传送数据到各个PE。RDAC单元可以从各个PE传送数据,并写到目标数据位置。
本方法可以还包括步骤:提供LUT内的MISC控制信息给至少一个PE以允许每个PE有差别地执行命令。
存储位置包括行地址和列组。
CSIMD指令还包括一个或多个源数据位置、目标数据位置和MISC控制信息。
依照本发明的另一个方面,提供一种处理可配置单指令多数据(CSIMD)指令的装置。本装置包括:
多个处理元件(PE);
一个存储信息的查找表格(LUT)以支持随机访问与处理元件(PE)相关的存储位置并通过PE执行指令差异;
PE接收一个CSIMD指令,其包括一个命令和一个查找表格(LUT)索引,将由PE执行,使用LUT索引随机访问存储位置,PE有差别地并行执行接收到的CSIMD指令的命令。
存储在LUT内的信息取决于应用需要。
存储在LUT内的信息包括指令差异、从存储位置取回的随机源数据、以及反写到存储位置的随机目标数据。
从存储单元取回的数据和反写到存储位置的数据可以通过指定行地址和列组信息而实现。
依赖于LUT索引,PE可以执行指令差异、随机源数据取回和随机目标反写。
LUT索引指向的一个LUT行还包括有关至少一些源数据的信息,以便PE能够从与PE相关的各个存储位置读取。
LUT索引指向的一个LUT行可能包括有关目标数据的信息,以便PE能够写到与PE相关的各个存储位置。
本装置可能还包括将PE执行每个命令的结果写到各个目标存储位置的装置。
CSIMD指令包括目标存储位置。
LUT包括使用LUT索引可访问的存储地址和/或组、或行和列,以随机访问存储在所述存储位置内的源数据。
本装置可以还包括一个随机数据存取控制(RDAC)单元,其被提供给至少一个源和目标数据位置,其可能是LUT内的行地址和列组。RDAC单元可以从源数据位置读取数据,并传送数据到各个PE。RDAC单元可以从各个PE传送数据,并写到目标数据位置。
提供LUT内MISC控制信息给至少一个PE,以允许每个PE有差别地执行命令。
所述存储位置的地址包括行地址和列组。
CSIMD指令可以还包括一个或多个源数据位置、目标数据位置和MISC控制信息。
附图说明
以下参考附图描述本发明的实施例,其中:
图1是显示一个现有单指令、多数据(SIMD)单元的模块图;
图2是描述由图1所示SIMD单元使用的一个指令例子的模块图;
图3是一个高级流程图,描述图1SIMD单元执行图2SIMD指令的方法;
图4是依照本发明一个实施例描述一个可配置SIMD(CSIMD)单元的简略模块图;
图5是描述图4CSIMD单元使用的指令例子的模块图;
图6是描述图4CSIMD单元执行图5指令的方法的流程图;
图7是显示图4CSIMD单元执行一个CSIMD指令的详细方法的流程图;以及
图8是显示存储位置内的数据如何被提供给图4CSIMD单元的一个处理元件的流程图。
具体实施方式
以下描述处理一个可配置单指令多数据(CSIMD)指令的方法和装置。在以下描述里,众多具体细节,包括查找表格结构、索引、指针等将被描述。但是,从本披露,本领域技术人员将会明白,可以作出修改和/或替换,而不会偏移本发明的范围和精神。在其它情况下,可以忽略详细细节而不会混淆本发明。在任何一个或多个附图里具有相同或类似的参考编号的步骤和/或特征,为便于描述,那些步骤和/或特征具有相同的功能或操作,除非出现相反情况。
在此说明书的上下文里,单词“包括”是一个开放式非独占的含义:“原则上包括,但不一定唯一”,而不是“由...组成”或“只由...组成”。
1.可配置的SIMD单元
图4简略描述一个可配置的SIMD(CSIMD)单元400,并同时显示一个CSIMD指令500。CSIMD单元400包括多个并行安置的PE 410a-410n,其可以同时执行由PE 410接收到的一个指令500。PE 410具有输入,用来接收有关处理不同命令差异(command variances)和不同随机源数据位置的进一步信息,并用来接收将在其上执行命令的源数据。有许多方法用来执行命令差异。例如但不限于此示例,假设有8个PE,应用必须执行一个加法(如CMD是“CSIMD-ADD”,操作是“result=source0+source1”)。但是,一些PE要求执行稍微不同的操作,如“result=(source0>>2)+source1”。如果是这样,一个执行可以使用8-比特数据来执行这种差异,如“11011000”,每个比特与一个PE相关。比特值“1”可能表示前一个常规ADD,而“0”表示后一个特定ADD。在此符号里,PE0、PE1、PE3和PE4执行常规ADD,而其它PE执行特定ADD。在此例子里,值“11011000”可以被安排到LUT的MISC列内。在CSIMD单元400内,来自LUT 430的进一步信息不仅被用来从随机存储位置获取源数据,而且一旦接收到相同指令命令CMD 510时被用来允许PE 410之间的细微差别操作。PE 410包括至少一个输出用于传送,例如一个执行指令的数据结果。
在所述CSIMD单元400内有一个存储模块420。存储模块420包括多个寄存器文件(RF)存储组423(列),每个组423有多个地址426(行)。每个地址426可能有由此读取的数据,或者可能有被写到那个地址426的数据。每个存储组423被指定,或与一个特定PE 410相关。取决于应用需要,PE 410可能是从各个指定的存储组或从基于应用要求的任何组内的一个地址426读取数据、或写数据到指定存储组或基于应用要求的任何组内的一个地址426。不同应用可能需要不同操作,这取决于应用如何执行。例如在一个应用里,在视频压缩算法里的次像素插值(sub-pixelinterpolation),其可能是由CSIMD执行,这就需要来自每个PE不同存储组的源数据。
CSIMD单元400还包括一个有行列的查找表格(LUT)430。LUT 430的一个行被一个LUT索引查询,其包含在CSIMD指令500内。索引被用来识别LUT 430的一个特定行。LUT 430的大小和内容可能根据CSIMD单元400设计应用的不同而不同。例如,在所述CSIMD单元400内,LUT430包括一个地址(ADDR)列、一个组(BANK)列、以及一个其它(MISC)列。ADDR和BANK信息涉及存储模块420内的源和/或目标数据位置。在图4内LUT 430仅是一个例子。如图4所示的LUT 430的结构可以变化,而不会偏移本发明的范围和精神。源数据(SCR0和SCR1)和结果可以从任何存储组423的任何地址取回、或写到任何存储组423的任何地址。在此例子里,LUT 430可能分别有SCR0、SCR1和结果的addr0、addr1、addr2、bank0、bank1和bank2列。图5的CSIMD指令500仅是一个例子。例如,CSIMD指令500可能仅包括一个具有更多MISC控制信息的源数据位置、或三个不具有MISC控制信息的源数据位置。CSIMD指令500的结构和内容取决于应用需要。在应用开始前,LUT内容可以被载入一次,或在应用执行期间被时时更新。
LUT 430的MISC列提供有关如何处理由PE 410执行的命令差异的其它信息。在CSIMD单元400内,来自LUT 430的进一步信息不仅被用来处理执行命令的结果,而且在接收到相同的指令命令CMD 510后允许在PE 410中间的不同操作。例如,在数据结果被写到存储模块420内的一个位置之前,MISC控制信息可能显示命令执行的数据结果是否被完全获得或转移。LUT 430被配置以传送数据到每个PE410、以及一个随机数据存取控制(RADC)单元440(图中由虚线显示)。例如,在LUT 430内MISC列有N个比特,每个比特被传递给PE410。数据比特“1”可能显示一个将被执行的具体操作,而数据比特“0”可能显示另一个将被执行的具体操作。
RDAC单元440是一个接口,其依照来自LUT 430的指令部分和额外信息,控制PE 410从存储模块420的存储位置读取的数据、和/或写到存储模块420的存储位置的数据。例如,在LUT 430内的addr和bank包括N对数据,每对数据是存储行和存储组,由此每个PE应该获得诸如源数据0(SRC0)。利用此信息,RDAC单元440知道如何从每个存储(RF)位置路由源数据到合适的PE。RDAC单元440包括一个行控制单元和一个列控制单元,其驱动控制信号到存储模块420,从而从对应的行和组取回数据或写入数据到对应的行和组。RDAC单元440是存储控制单元,可以被称为一个存储控制器。
2.CSIMD指令
图5描述一个指令500的例子,其可以在如图4所示的CSIMD单元400上被执行。CSIMD指令500包括几个部分,如命令指令(CMD)部分510,其显示将由PE 410执行的命令类型。CMD部分510作为一个输入提供给PE 410。一个索引部分520(INDEX)显示将被访问的LUT 430的行。LUT行拥有关于第一存储位置(SRC0)的信息,其或者是一个行和列或者是一个地址和组(如行=地址,列=组),包含将从PE 410读取的数据或将被提供给PE 410的数据,以及显示PE 410如何差别地执行的信息(MISC)。LUT索引520作为一个输入提供给LUT 430。LUT 430的输出被提供给RDAC单元440和PE 410。CSIMD指令500也包括一个源数据(SCR1)部分530,其指定将从PE 410读取数据的和提供给PE 410数据的第二存储位置。第二存储位置可以在各个PE 410的指定存储组内找到。SRC1部分530作为一个输入提供给RDAC单元440。CSIMD指令500还包括一个目标数据(DST)部分540显示目标位置,其可能是指定存储组的目标地址,执行命令的结果被写到其中。DST部分540作为一个输入提供给RDAC单元440。
图6描述一种处理可配置单指令多数据(CSIMD)指令的方法600。在步骤610,提供一个查找表格(LUT)。LUT存储信息以支持随机访问与PE相关的存储位置(如行和/或组),并通过PE执行指令差异。存储位置可能包括行地址和列组(行和列)。存储在LUT内的信息取决于应用需要。存储在LUT内的信息可能包括指令差异、从存储位置取回的随机源数据以及写到存储位置的随机目标数据。从存储位置取回的数据和写到存储位置的数据是通过指定行和组的信息而实现。LUT索引指向的一个LUT行还包括有关至少一些源数据的信息,以便PE能够从与PE相关的各个存储位置读取。LUT索引指向的一个LUT行可以包括有关目标数据的信息,以便PE能够写到与PE相关的各个存储位置(如组)。LUT可能包括各个组内的、使用LUT索引可访问的存储地址,以便可以随机访问存储在存储位置内的源数据。
在步骤620,接收到一个CSIMD指令。指令包括一个命令和一个LUT索引,其将由PE执行。可选地,CSIMD指令可能还包括源、目标和MISC控制信息。在步骤630,使用LUT索引以随机访问存储位置,接收到的CSIMD指令的命令由PE并行执行。依照LUT索引和内容,PE执行指令差异、随机源数据取回和随机目标反写。
每个PE如何执行取决于从LUT获得的信息与CSIMD指令。CSIMD指令可能包括目标存储位置。在LUT内至少一个源和目标数据位置,其可能是行地址和列组,可以被提供给一个随机数据存取控制(RDAC)单元。RDAC单元可以从源数据位置读取数据,并传送数据到各个PE。RDAC单元还可以从各个PE传送数据,并写到目标数据位置。本方法还包括步骤:提供MISC控制信息给至少一个PE以在PE之间执行不同操作、并处理执行命令结果,处理是在结果被写到目标存储位置之前发生。
3.详细运作
图7描述了一种处理可配置单指令多数据(CSIMD)指令的方法700。指令是由图4 CSIMD单元400执行。在步骤710,一个CSIMD指令是由CSIMD单元400接收。指令通常被解析而分成各个部分,以便分配到CSIMD单元的各个部分。在步骤710后,之间有一些并行执行路径或分支在步骤710和780。在一个并行路径的步骤720上,指令的CMD部分被发送到PE。参照图4描述的实施例,CMD部分被直接提供给PE。或者,每个PE可以独立接收命令指令。处理从步骤720继续行进到步骤780。
在包括步骤730、740和750的并行分支上,在步骤730,CSIMD的INDEX部分是指LUT索引。INDEX基本上是一个数,其也可能是LUT的行数。例如,如果INDEX是123,在LUT的第123行内的信息被取回。即在CSIMD指令的INDEX部分内的信息被用来访问LUT内适当的行。在步骤740,依照LUT取回SRC0数据。如图4所示,LUT 430提供存储模块(SRC0)内第一存储位置的一个地址和组。在步骤750,在SRC0内的源数据被发送到PE。依照LUT从存储模块访问SRC0。在LUT内有N个地址和N个组,其中N是一个正整数。每个地址-组对给N个PE410a-410n中的一个PE。特别地,SCR0地址和组被提供给RDAC单元,其随后从SRC0访问和读取源数据,然后提供各个数据给PE。处理从步骤750继续行进到步骤780。
沿着步骤730,在步骤760上,不同的指令差异可以提供给PE。LUT的存取行包括PE如何有差别地执行的其它(MISC)控制信息。例如,MISC控制信息可以告诉单个PE如何处理命令执行的结果然后将结果写到存储模块。例如,在LUT 430内MISC列可以有N个比特,每个比特被传递给PE410。数据比特“1”表示一个将被执行的具体操作,而数据比特“0”表示另一个将被执行的具体操作。处理继续行进到步骤780。
在步骤710和780的另一个并行分支上,在步骤770,在CSIMD指令的SRC1部分上的源数据被发送到PE。特别地,在SRC1部分上的数据被发送到RDAC单元,以便从第二存储地址取回数据。在第二存储地址上的数据是从被指定给各个PE自身的存储储组取出,数据随后被提供各个PE。然后,在第二存储地址内的数据被提供给各个PE。处理持续进行到步骤780。
在步骤780,指令被执行。PE在第一和第二数据源上执行命令指令。如之前所述,在常规SIMD指令内的MISC控制信息是CMD部分510的指令差异。例如,ADD指令可以执行“SRC0+SRC1”、或执行“|SRC0+SRC1|”、或执行“(SRC0>>2)+SRC1”等。在此例子里,所有PE进行相同的操作。在图4LUT内的“MISC”允许在PE中间的不同指令差异。例如,PE0-7执行“(SRC0+SRC1)>>1”,PE8-15执行“SRC0+SRC1”等。
在步骤790,指令执行的结果被写到DST位置。来自CSIMD指令的DST部分的信息被提供给RDAC单元440,以便控制目标数据位置,命令执行的结果将被写入其中。在此例子里,每个PE写到一个专用于各个PE的存储组内的存储地址。命令指令的结果被写到存储模块内指定的各个目标地址。接着,处理终止。
图8描述一种将存储位置内的数据提供给一个CSIMD单元的一个PE的方法800。在步骤810,CSIMD单元接收到的指令被解析而分成各个部分。至少一个解析部分是一个索引(INDEX)对应LUT内一个参考值。LUT INDEX显示行数,从该行数获得在此行上的信息。在步骤820,依照LUT索引,可以访问一个LUT行。LUT表格的行包括的信息可以识别至少一个源数据位置(SCR0,SCR1等),其可能是存储地址和/或组。在步骤830,从LUT获得识别源数据的信息。在步骤840,来自非指定数据源的数据被提供给PE。在识别出的数据源位置内的数据被提供给CSIMD单元内的每个PE。为每个PE由LUT识别出的数据源是来自不为各个PE指定的存储位置。接着,处理终止。
使用一个LUT 430,可以允许随机读取源数据和随机写入结果到存储模块420的任何位置。同样,在PE之间可以执行不同的指令差异。对CSIMD指令格式和LUT内容没有任何限制。而且,可以预定义LUT内容,从而在应用开始之前,LUT可以被配置一次,或可以在应用执行中间改变,这取决于应用需要。
以上已经描述了本发明有关处理可配置单指令多数据(CSIMD)指令的方法和装置的一些实施例。鉴于前述,根据本披露,本领域技术人员将会明白,在不偏移本发明的范围和精神情况下,可以作出明显的修改和/或替换。
Claims (32)
1.一种处理可配置单指令多数据(CSIMD)指令的方法,所述方法包括以下步骤:
提供一个存储信息的查找表格(LUT)以支持随机访问与多个处理元件(PE)相关的存储位置,并由所述PE执行指令差异;
接收一个CSIMD指令,其包括一个命令和一个所述查找表格(LUT)的索引,将由所述PE执行;以及
使用所述LUT索引随机访问所述存储位置,所述PE有差别地并行执行所述接收到的CSIMD指令的所述命令。
2.根据权利要求1所述的方法,其中存储在所述LUT内的所述信息取决于应用需要。
3.根据权利要求1或2所述的方法,其中存储在所述LUT内的所述信息包括指令差异、从所述存储位置取回的随机源数据、以及反写到所述存储位置的随机目标数据。
4.根据权利要求3所述的方法,其中从存储位置取回的数据和反写到存储位置的数据通过指定地址和组、或行和组的信息而实现。
5.根据权利要求1所述的方法,其中所述PE依照所述LUT索引执行指令差异、随机源数据取回和随机目标反写。
6.根据权利要求1所述的方法,其中所述LUT索引指向的一个LUT行还包括有关至少一些源数据的信息,以便所述PE能够从与所述PE相关的各个存储位置读取。
7.根据权利要求1-6中任何一个权利要求所述的方法,其中所述LUT索引指向的一个LUT行包括有关目标数据的信息,以便所述PE能够写到与所述PE相关的各个存储位置。
8.根据权利要求1或5所述的方法,还包括步骤:将所述PE执行每个命令的结果写到各个目标存储位置。
9.根据权利要求8所述的方法,其中所述CSIMD指令包括所述目标存储位置。
10.根据权利要求1所述的方法,其中所述LUT包括在各个行内的存储地址和组,使用所述LUT索引可访问到它们,以提供随机访问存储在所述存储位置内的源数据。
11.根据权利要求1所述的方法,其中提供所述LUT内至少一个所述源和目标数据地址和/或组到一个随机数据存取控制(RDAC)单元。
12.根据权利要求11所述的方法,其中所述RDAC单元从所述数据源位置读取数据,并传送所述数据到各个PE。
13.根据权利要求11所述的方法,其中所述RDAC单元从各个PE传送数据,并写到所述数据目标位置。
14.根据任何前述权利要求所述的方法,还包括以下步骤:
在所述LUT内提供MISC控制信息给至少一个所述PE,以允许每个PE有差别地执行命令。
15.根据任何前述权利要求所述的方法,其中所述存储位置包括行地址和列组。
16.根据权利要求1所述的方法,其中所述CSIMD指令还包括一个或多个源数据位置、目标数据位置和MISC控制信息。
17.一种处理可配置单指令多数据(CSIMD)指令的装置,包括:
多个处理元件(PE);
一个存储信息的查找表格(LUT),以支持随机访问与所述PE相关的存储位置,并由所述PE执行指令差异。
所述PE接收一个CSIMD指令,其包括一个命令和一个所述查找表格(LUT)索引,将由所述PE执行,使用所述LUT索引随机访问所述存储位置,所述PE有差别地并行执行所述接收到的CSIMD指令的所述命令。
18.根据权利要求17所述的装置,其中存储在所述LUT内的所述信息取决于应用需要。
19.根据权利要求17或18所述的装置,其中存储在所述LUT内的所述信息包括指令差异、从所述存储位置取回的随机源数据、以及反写到所述存储位置的随机目标数据。
20.根据权利要求19所述的装置,其中从存储位置取回的数据和反写到存储位置的数据通过指定地址和组、或行和列的信息而实现。
21.根据权利要求17所述的装置,其中依赖于所述LUT索引,所述PE执行指令差异、随机源数据取回和随机目标反写。
22.根据权利要求17所述的装置,其中所述LUT索引指向的一个LUT行还包括有关至少一些源数据的信息,以便所述PE能够从与所述PE相关的各个存储位置读取。
23.根据权利要求17到22中任何一个权利要求所述的装置,其中所述LUT索引指向的一个LUT行包括有关目标数据的信息,以便所述PE能够写到与所述PE相关的各个存储位置。
24.根据权利要求17或21所述的装置,还包括将所述PE执行每个命令的结果写到各个目标存储位置的装置。
25.根据权利要求24所述的装置,其中所述CSIMD指令包括所述目标存储位置。
26.根据权利要求17所述的装置,其中所述LUT包括存储地址和/或组、或行和/或列,使用所述LUT索引可访问它们,以便随机访问存储在所述存储位置内的源数据。
27.根据权利要求17所述的装置,还包括一个随机数据存取控制(RDAC)单元,其被提供所述LUT内至少一个所述数据源和目标位置。
28.根据权利要求27所述的装置,其中所述RDAC单元从所述数据源位置读取数据,并传送所述数据到各个PE。
29.根据权利要求27所述的装置,其中所述RDAC单元从各个PE传送数据,并写到所述数据目标位置。
30.根据权利要求17到29中任何一个权利要求所述的装置,其中在LUT内提供MISC控制信息给至少一个所述PE,以允许每个PE有差别地执行命令。
31.根据权利要求17到30中任何一个权利要求所述的装置,其中所述存储位置包括行地址和列组。
32.根据权利要求17所述的装置,其中所述CSIMD指令还包括一个或多个源数据位置、目标数据位置和MISC控制信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/538,070 US7441099B2 (en) | 2006-10-03 | 2006-10-03 | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit |
US11/538,070 | 2006-10-03 | ||
PCT/CN2007/070540 WO2008043287A1 (en) | 2006-10-03 | 2007-08-23 | Configurable single instruction multiple data unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101371248A true CN101371248A (zh) | 2009-02-18 |
CN101371248B CN101371248B (zh) | 2010-12-15 |
Family
ID=39262389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800021542A Expired - Fee Related CN101371248B (zh) | 2006-10-03 | 2007-08-23 | 可配置的单指令多数据单元 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7441099B2 (zh) |
CN (1) | CN101371248B (zh) |
WO (1) | WO2008043287A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102770855A (zh) * | 2009-12-02 | 2012-11-07 | 株式会社Mush-A | 数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法 |
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7991909B1 (en) * | 2007-03-27 | 2011-08-02 | Xilinx, Inc. | Method and apparatus for communication between a processor and processing elements in an integrated circuit |
US7917876B1 (en) | 2007-03-27 | 2011-03-29 | Xilinx, Inc. | Method and apparatus for designing an embedded system for a programmable logic device |
KR102357863B1 (ko) * | 2014-12-15 | 2022-02-04 | 삼성전자주식회사 | 메모리 접근 방법 및 장치 |
US11940945B2 (en) * | 2021-12-31 | 2024-03-26 | Ceremorphic, Inc. | Reconfigurable SIMD engine |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2211638A (en) | 1987-10-27 | 1989-07-05 | Ibm | Simd array processor |
US5828894A (en) * | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
US5526501A (en) * | 1993-08-12 | 1996-06-11 | Hughes Aircraft Company | Variable accuracy indirect addressing scheme for SIMD multi-processors and apparatus implementing same |
CA2129882A1 (en) * | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
US5680597A (en) | 1995-01-26 | 1997-10-21 | International Business Machines Corporation | System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions |
US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
JP2003216950A (ja) * | 2002-01-28 | 2003-07-31 | Ricoh Co Ltd | パターンマッチングなどを行なうためのsimd型マイクロプロセッサ |
GB2419006B (en) | 2002-04-22 | 2006-06-07 | Micron Technology Inc | Providing a register file memory with local addressing in a SIMD parallel processor |
US20030221089A1 (en) * | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
US6915411B2 (en) * | 2002-07-18 | 2005-07-05 | International Business Machines Corporation | SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath |
JP2007503039A (ja) * | 2003-08-15 | 2007-02-15 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 並列処理アレイ |
GB2409061B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | Table lookup operation within a data processing system |
JP2005182499A (ja) * | 2003-12-19 | 2005-07-07 | Matsushita Electric Ind Co Ltd | 並列演算装置 |
GB0420004D0 (en) * | 2004-09-09 | 2004-10-13 | Koninkl Philips Electronics Nv | Interconnections in SIMD processor architectures |
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
-
2006
- 2006-10-03 US US11/538,070 patent/US7441099B2/en active Active
-
2007
- 2007-08-23 CN CN2007800021542A patent/CN101371248B/zh not_active Expired - Fee Related
- 2007-08-23 WO PCT/CN2007/070540 patent/WO2008043287A1/en active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102770855A (zh) * | 2009-12-02 | 2012-11-07 | 株式会社Mush-A | 数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法 |
CN102770855B (zh) * | 2009-12-02 | 2015-06-17 | 株式会社Mush-A | 数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法 |
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
Also Published As
Publication number | Publication date |
---|---|
WO2008043287A1 (en) | 2008-04-17 |
US7441099B2 (en) | 2008-10-21 |
CN101371248B (zh) | 2010-12-15 |
US20080082797A1 (en) | 2008-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101371248B (zh) | 可配置的单指令多数据单元 | |
US8422330B2 (en) | Memory controller and memory controlling method | |
US20080022069A1 (en) | Register file regions for a processing system | |
US4910667A (en) | Vector processor with vector buffer memory for read or write of vector data between vector storage and operation unit | |
KR20060135642A (ko) | 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법 | |
US20070011442A1 (en) | Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment | |
CN101379481A (zh) | 处理元件、混合模式并行处理器系统、处理元件方法、混合模式并行处理器方法、处理元件程序、以及混合模式并行处理器程序 | |
CN107315566B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
US8345113B2 (en) | Image processing apparatus and image processing system | |
KR20080020066A (ko) | 동일한 픽셀 데이터 그룹에 포함되는 픽셀 데이터들을메모리의 동일한 뱅크 어드레스로 매핑하는 매핑 방법 및비디오 시스템 | |
JP4901754B2 (ja) | 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット | |
US20060149938A1 (en) | Determining a register file region based at least in part on a value in an index register | |
CN102402415A (zh) | 一种动态可重构阵列内数据缓存的装置及方法 | |
GB2251770A (en) | Graphics accelerator system using parallel processed pixel patches | |
JP2001084229A (ja) | Simd型プロセッサ | |
US6741257B1 (en) | Graphics engine command FIFO for programming multiple registers using a mapping index with register offsets | |
US8478946B2 (en) | Method and system for local data sharing | |
US20090235010A1 (en) | Data processing circuit, cache system, and data transfer apparatus | |
US20140047212A1 (en) | Semiconductor device | |
EP1462932A2 (en) | Vector processor and register addressing method | |
US20070016717A1 (en) | Cache system | |
US20020156992A1 (en) | Information processing device and computer system | |
US6772271B2 (en) | Reduction of bank switching instructions in main memory of data processing apparatus having main memory and plural memory | |
JP2003216950A (ja) | パターンマッチングなどを行なうためのsimd型マイクロプロセッサ | |
CN108230537B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101215 |
|
CF01 | Termination of patent right due to non-payment of annual fee |