CN1484786A - 在单指令多数据通路结构中的非整数倍大小阵列循环处理 - Google Patents

在单指令多数据通路结构中的非整数倍大小阵列循环处理 Download PDF

Info

Publication number
CN1484786A
CN1484786A CNA018216390A CN01821639A CN1484786A CN 1484786 A CN1484786 A CN 1484786A CN A018216390 A CNA018216390 A CN A018216390A CN 01821639 A CN01821639 A CN 01821639A CN 1484786 A CN1484786 A CN 1484786A
Authority
CN
China
Prior art keywords
data path
sum
array
parallel
circulation pass
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
CNA018216390A
Other languages
English (en)
Inventor
Լ����L���׸���
约翰·L·雷福德
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.)
ChipWrights Design Inc
Original Assignee
ChipWrights Design Inc
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 ChipWrights Design Inc filed Critical ChipWrights Design Inc
Publication of CN1484786A publication Critical patent/CN1484786A/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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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)
  • 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)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

说明了一种在循环处理操作期间,控制SIMD处理器中的处理器数据通路的启动的方法。所述方法所使用的信息包括数据项和存储器(20)之间的分配,阵列的大小和在循环处理操作中数据通路的剩余并行遍数的数目。也提供一个计算机指令(12),其中包括循环处理指令,用于在处理数据项阵列期间指定多个数据通路之一的启动。该指令包括一个指定剩余并行循环遍数的数目以处理所述阵列的计数字段和一个指定串行循环遍数的数目以处理所述阵列的计数字段。可使用不同的指令来处理并行数据通路的遍数的不同分配。所述指令也使用关于数据通路总数(18)的信息。

Description

在单指令多数据通路结构中的 非整数倍大小阵列循环处理
技术领域
本发明涉及在单指令多数据通路(single instruction multiple datapath,SIMD)处理器结构中的一个数据项阵列(an array of data items)上的循环处理操作。
背景技术
并行处理是处理数据项阵列的有效方法。SIMD处理器为一种并行处理器阵列结构,其中一个单指令可控制多个数据通路。每一数据通路在一给定时间内只能处理一个数据项。举一个简单的例子,在一个具有四个数据通路的SIMD处理器中,在两遍循环操作中的四个数据通路的每一个中可处理一个八数据项阵列中的数据项。数据通路和数据项之间的分配是可变的,但是一种方法为,在第一遍(pass),第一数据通路处理阵列的第一数据项,第二数据通路处理阵列的第二数据项,第三数据通路处理阵列的第三数据项,第四数据通路处理阵列的第四数据项。在第二遍,第一数据通路处理第五数据项,第二数据通路处理第六数据项,第三数据通路处理第七数据项,第四数据通路处理第八数据项。
当阵列中的数据项数目不是数据通路数目的整数倍时就会有问题产生。例如,通过修改上述的简单例子,从而得到四个数据通路和一个具有七个资料项的阵列,则在第二遍期间,第四数据通路没有阵列第八项的元素可处理。其结果是,除非在第二遍期间禁用第四数据通路,否则第四数据通路可能错误地改写存储器中其他的数据结构。
一种避免这种错误地改写的方法是强制要求阵列的大小,也就是要求数据项阵列中包含的数据项数目为数据通路数目的整数倍。这种方法是假设程序员事先控制好数据项如何在阵列中分配,可是他们并不是总能这样做。
典型地,数据通路SIMD处理器中的每一数据通路都有一个相关的处理器启动位来控制数据通路启动或禁用。例如当一个数据通路将以别的方式超出阵列时,可允许禁用该数据通路。
发明内容
总的来说,本发明的特点在于提供一种方法,用来控制是否启动正在运算阵列中的数据元素的SIMD处理器中的多个处理器数据通路之一,该方法包括基于关于SIMD处理器和阵列的参数以及阵列的数据项相对的数据通路的处理状态的信息来决定是否启动该数据通路。
在优选实施例中,信息包括数据项和存储器之间的分配,由数据通路执行循环处理操作的并行循环遍数的总数、阵列的大小、数据通路的数目(也就是SIMD处理器中有多少数据通路)。处理状态是循环处理操作中数据通路的剩余并行遍数循环遍数的数目。
数据项和存储器之间的分配可能是单一间隔(unity-stride),相邻(contiguous)或条状间隔(striped-stride)。
在另一方面,本发明的特点是一个计算机指令包括一个循环处理指令,该循环处理指令在处理数据项阵列期间,能指定多个处理器数据通路之一的启动。
在优选实施例中,该指令包括能指定剩余并行循环遍数的数目以处理阵列的并行计数字段和能指定串行循环遍数数目以处理阵列的串行计数字段。
在另一方面,本发明的特点是提供一个处理器,包括寄存器文件(registerfile)和与该寄存器文件连接的算术逻辑单元,以及一个程序处理存储器,用于存储处理数据阵列期间使处理器启动多个处理器数据通路之一的循环处理指令。
本发明实施例的各个方面可具有下列一个或更多的优点。
不必事先了解阵列的数据项数目就可以禁用数据通路。
本方法可容易地扩展至多种存储器分配结构。
因为由也可节省寄存器空间的简单且功能强大的单指令来指定所需许多操作,所述操作用于决定是否启动和禁用数据通路,所以循环处理指令可节省指令存储器。循环处理指令挽救了程序员,使其不必强制使数据项阵列中数据项的数目为数据通路数目的整数倍。
通过参考下列详细说明、附图和权利要求,本发明其它特点和优点将会更加清楚。
附图说明
图1是单指令多数据通路(SIMD)处理器的方块图。
图2是循环处理期间,具有4个数据通路的SIMD处理器以存储器的单一间隔分配来处理阵列中的30个数据项的表格。
图3是循环处理指令的语法。
图4是循环处理期间,具有4个数据通路的SIMD处理器以存储器的相邻间隔分配来处理阵列中的30个数据项的表格。
图5是含循环分支的循环处理指令的语法。
图6是循环处理期间控制SIMD处理器的数据通路启动的处理的流程图。
不同附图中的相同附图标记表示相同元件。
具体实施方式
参考图1,单指令多数据通路(SIMD)处理器10包括指令高速缓冲存储器12,控制逻辑14,串行数据通路,和标注为18a,18b,18c,...,18n的多个并行数据通路。并行数据通路18写入存储器20。每一数据通路18有与其相连的处理器启动(PE)位22。具体地说,并行数据通路18a连接到处理器PE位22a,并行数据通路18b连接到处理器PE位22b,以下类推。当启动PE位时,启动所连接的并行数据通路,并且并行数据通路写入数据项。例如,如果启动PE位22a时,可由并行数据通路18a写入数据项;如果启动PE位22b时,可由并行数据通路18b写入数据项。如果启动PE位22n时,并行数据通路18n写入数据项。当禁用PE位时,其所连接的并行数据通路禁用,并且并行数据通路不能写入数据项。
在运算时,控制逻辑14从指令高速缓冲存储器12获得指令。指令被馈送给串行数据通路16,该串行数据通路16提供该指令给并行数据通路18。除非某一特定数据通路的处理器启动位被禁用,否则每一数据通路18被同时读取和写入。
在数据项阵列的循环处理操作期间,可能需要禁用一个或更多数据通路18,以避免未使用到的数据通路超出阵列末端和错误地改写存储器中另一数据结构。在循环处理操作期间,基于SIMD处理器和阵列的参数以及阵列中数据项相对的数据通路的处理状态的信息来快速地决定数据通路的启动与禁用,而不需要由人工来决定。此信息包括:(1)循环处理操作时发生的并行循环遍数总数,(2)在串行数据通路设计中所执行的循环遍数的数目(这表示阵列的大小),(3)在循环处理操作时剩余并行遍数的数目,(4)用于在数据通路间分配阵列的数据项的存储器分配,和(5)并行数据通路的数目。提供了基于该信息在循环处理期间启动或禁用一个数据通路(由此启动或禁用该数据通路)的处理器启动位的指令。
有许多种方法来分配用于SIMD处理器中的数据项阵列的处理的存储器。最简单的存储器分配方法是数据通路数目(NDP)的每一个占用该循环的第NDP次迭代。这种存储器分配类型称为“单一间隔”。
参考图2,例如,表格图解表示循环处理期间,具有4个标号为DP0、DP1、DP2和DP3的数据通路的SIMD处理器以图示存储器分配的单一间隔分别处理阵列中标号为0到29的30个数据项。为了处理此阵列,执行8遍并行循环。在第1遍并行循环中,由数据通路0、1、2和3来处理数据项0、1、2和3。在第2遍并行循环中,由数据通路0、1、2和3来处理数据项4、5、6和7。在最后一遍并行循环中,也就是第8遍并行循环,由数据通路0和1来处理数据项28和29,而数据通路2和3必须禁用以免超出阵列和重写存储器中存储的其它数据。
图2所示表格说明了为何这种存储器分配类型被称为单一间隔。在给定任一遍并行循环中的每一并行数据通路正在处理的数据项之间的“间隔“为1。也就是说在一遍并行循环中正由并行数据通路处理的任意两个数据项差值为1(或单一)。
单一间隔分配中,在处理多个数据项时,提出了一种模型。具体地说,该模型图解表示只有在最后一遍并行循环中的两个数据通路需要被禁用(很明显地,图2所示的模型是简单的;当数据通路的数目和阵列大小增加时,模型变得较复杂但仍可及时识别)。从该模型可知在串行计算机中所执行的循环遍数总数(这表示阵列的大小),剩余并行循环遍数的数目,和数据通路的数目,并提供了一条指令来决定在特定的某遍并行循环期间,是否禁用特定的数据通路。
参考图3,循环处理器启动指令30包括表示在循环处理操作期间剩余并行循环遍数的数目的字段C,和表示在串行计算机结构中对阵列中全部数据项进行业务处理所需的遍数总数目的字段L。指令30包括存储器分配指定x。在图2所示的例子中,存储器分配指定x将参考单一间隔存储器分配,即由于共有30个数据项在串行计算机结构中要求30遍循环,所以U和L=30。PE[i,j]表示在第j遍并行循环期间,数据通路i的处理器启动位的状态。
参考图2所举的单一间隔的例子,串行循环遍数的总数除以数据通路的数目,并把所得值上舍入为下一整数,由此来决定并行循环遍数的总数。因而,在并行循环遍数的总数等于30/4的例子中,所得值上舍入为下一整数8。
如果并行循环遍数的总数减去剩余并行循环遍数的数目,全部由数据通路的总数加上数据通路索引来相乘,所得到的数比串行循环遍数总数还少时,则利用由单一间隔例子中表示的模型得到的经验以及C和L的值,启动与表示数据通路的数据通路索引i和数据项j相关联的处理器启动位,即PE[i,j]。
可替换的是,SIMD处理器10可使用相邻间隔存储器分配。参考图4,示出了具有4个数据通路(DP0-DP3)和实现相邻间隔存储器分配的SIMD处理器10如何处理阵列中30个数据项(0-29)的表格。为了处理此阵列中的全部30个数据项,执行8遍并行。在第1遍并行循环中,分别由数据通路0、1、2和3来处理数据项0、8、16和24。在第2遍并行循环中,由数据通路0、1、2和3来处理数据项1、9、17和25。继续该处理,即产生一个模型。在该特定例子中,在第7遍和第8遍并行循环中,禁用数据通路3以免改写超出阵列中30个数据项的末端的存储器。在每一遍启动其它所有数据通路。
当邻近数据项被用于处理某一特定的数据项时,相邻间隔存储器分配很有用。比如,如果数据通路0正在处理第5遍并行循环中的数据项4,则其已具有来自第4遍并行循环的数据项3,并将使用下一遍并行循环中的数据项5。因为每一数据通路正在访问阵列的相邻区域,所以这种存储器分配被称作相邻间隔分配。
在相邻间隔存储器分配中,提出一个模型,表示在这个例子的最后二遍并行循环的执行期间,需要禁用一个单数据通路。再参考图3,存储器分配指定x=CONT表示相邻间隔存储器分配的结构。参考图4所述例子,串行循环遍数的总数除以数据通路的数目,并把所得值上舍入为下一整数,由此来决定处理数据项阵列所需的并行循环遍数的总数。因而,在并行循环遍数的总数等于30/4的例子中,所得值上舍入为8。
如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少,则根据相邻间隔存储器分配模型以及C值和L值,启动与数据通路索引i和数据项j相关联的处理器启动位,即PE[i,j]。
交叉存取式存储器允许一次执行多个存储器存取。交叉存取式存储器的内存条的数目M一般而言为2的次方,因为这允许使用最低地址位来完成内存条的选取。如果读写指令的间隔也是2的次方,因为所有的地址都试图要存取相同内存条,则存储器交叉存取就没有任何帮助。例如,M=4而且间隔也为4,而读或写的地址将是0、4、8等等,则它们全部必须由内存条0来处理;而内存条1、2、3将是空闲的。
为了避免所有的数据项由相同的内存条处理,间隔的值可以被选成奇数。因为任何奇数均与2的任意次方互质,所以如果M是2的次方,则间隔选为奇数可均匀地扩展M个内存条中的地址。以30项的阵列为例,采用相邻分配时,间隔为9而非8。数据通路0将对应阵列的0到8项,数据通路1将与阵列的9到17项关联,数据通路2将对应阵列的18到26项,数据通路3将被分配到阵列的26到29项。数据通路3对于最后6项,也就是阵列的30到35项将被关闭。这种存储器分配被称作条状间隔存储器分配。
在条状间隔存储器分配结构中,由串行数据通路的总数除以数据通路的数目,并把所得值上舍入至下一个奇数,来决定处理数据项阵列所需的并行循环遍数数目。
再参考图3,存储器指定x=S表示条状间隔分配。如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少,则启动与数据通路i和数据项j相关联的处理器启动位,即PE[i,j]。
参考图5,示出了结合循环分支指令70的循环处理器启动指令。该被结合的指令70,依据存储器分配结构、并行循环遍数的总数和剩余并行循环遍数的数目,来设定先前所述的处理器启动位和检测剩余并行循环遍数的数目是否为零。如果剩余并行循环遍数的数目大于零,则执行分支(即“go to PC+displacement”),以执行下一遍循环操作。否则,退出循环,且处理继续。另一例子中,减少剩余并行循环遍数的数目且继续循环处理操作。
参考图6,在循环处理期间,控制SIMD处理器中数据通路的启动的处理100判断(步骤102)用于对阵列中全部数据项进行业务处理的串行循环遍数的数目。处理判断(步骤104)用于对阵列进行业务处理的剩余并行循环遍数的数目。处理然后测试(步骤106)存储器分配结构是否为单一间隔分配。如果存储器分配是单一间隔分配,且如果并行循环遍数的总数减去剩余并行循环遍数的数目,全部乘以数据通路的总数加上数据通路索引比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤108)。
如果存储器分配不是单一间隔,则处理测试(步骤110)存储器分配结构是否为相邻间隔分配。如果存储器分配为相邻间隔分配,且如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍教的数目比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤112)。
最后,如果存储器分配不是单一或相邻间隔分配时,处理测试(步骤114)存储器分配结构是否为条状间隔分配。如果存储器分配为条状间隔分配,且并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤116)。
本发明的许多实施例已描述如上。然而,应理解在不脱离本发明的精神和范围的情况下,可做各种更改。例如为了处理更多的数据项,依据采用的存储器分配结构,在一个模型发展了的时间前,可一直使用查询表。一旦模型发展了,以这里描述的方法来决定数据通路的启动。因此,其余的实施例均在所附权利要求保护范围内。

Claims (20)

1.一种控制方法,用于控制是否启动SIMD处理器中的多个处理器数据通路之一,这些数据通路正在运行阵列中的数据元素,所述方法包括:
基于关于SIMD处理器和阵列的参数以及阵列中数据项相对的数据通路的处理状态的信息来决定是否启动该数据通路。
2.根据权利要求1所述的方法,其中所述信息包括所述数据项和存储器之间的分配。
3.根据权利要求2所述的方法,其中所述信息包括所述分配是否为单一、相邻、或条状间隔。
4.根据权利要求1所述的方法,其中所述信息包括所述数据通路执行循环处理操作的并行循环遍数的总数。
5.根据权利要求1所述的方法,其中所述信息表示所述阵列的大小。
6.根据权利要求1所述的方法,其中所述处理状态为所述循环处理操作中剩余并行循环遍数的数目。
7.根据权利要求1所述的方法,其中所述信息包括所述处理器数据通路的数目。
8.根据权利要求1所述的方法,其中所述信息包括所述数据项和存储器之间的分配,所述数据通路执行循环处理操作的并行循环遍数的总数,所述阵列的大小,所述循环处理操作中所述数据通路的剩余并行遍数的数目,和所述处理器数据通路的数目。
9.根据权利要求8所述的方法,其中所述数据项和所述存储器之间的分配为单一间隔。
10.根据权利要求9所述的方法,其中由串行循环遍数的总数除以所执行数据通路的总数,并上舍入到下一个整数来决定所述循环遍数的总数。
11.根据权利要求10所述的方法,其中启动包括:
确定所述并行循环遍数的总数减去剩余循环遍数的数目乘以所执行数据通路的总数加上数据通路的数目是否小于所述串行循环遍数的总数。
12.根据权利要求8所述的方法,其中所述数据项和所述存储器之间的分配为相邻间隔。
13.根据权利要求12所述的方法,其中由所述串行循环遍数的总数除以数据通路的数目,并上舍入到下一个整数值来决定所述并行循环遍数的总数。
14.根据权利要求13所述的方法,其中启动包括:
确定所述并行循环遍数的总数乘以数据通路的数目加上所述并行循环遍数的总数减去所述剩余并行循环遍数的数目是否小于所述串行循环遍数的总数。
15.根据权利要求8所述的方法,其中所述分配为条状间隔。
16.根据权利要求15所述的方法,其中启动包括:
确定所述并行循环遍数的总数乘以数据通路的数目加上所述并行循环遍数的总数减去所述剩余并行循环遍数的数目是否小于所述串行循环遍数的总数。
17.一种计算机指令,包括:
循环处理指令,用于在处理数据项阵列期间指定多个处理器数据通路之一的启动。
18.根据权利要求17所述的指令,进一步包括:
指定所述剩余并行循环遍数的数目以处理所述阵列的并行计数字段。
19.根据权利要求17所述的指令,其中所述指令更包括:
指定所述串行循环遍数的数目以处理所述阵列的串行计数字段。
20.一种处理器,包括:
寄存器文件;
连接到所述寄存器文件的算术逻辑单元,和程序控制存储器,用于存储处理数据阵列期间使处理器启动多个处理器数据通路之一的循环处理指令。
CNA018216390A 2000-11-13 2001-11-09 在单指令多数据通路结构中的非整数倍大小阵列循环处理 Pending CN1484786A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/711,556 2000-11-13
US09/711,556 US6732253B1 (en) 2000-11-13 2000-11-13 Loop handling for single instruction multiple datapath processor architectures

Publications (1)

Publication Number Publication Date
CN1484786A true CN1484786A (zh) 2004-03-24

Family

ID=24858560

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA018216390A Pending CN1484786A (zh) 2000-11-13 2001-11-09 在单指令多数据通路结构中的非整数倍大小阵列循环处理

Country Status (8)

Country Link
US (2) US6732253B1 (zh)
JP (1) JP2004513455A (zh)
KR (1) KR20030072354A (zh)
CN (1) CN1484786A (zh)
AU (1) AU2002234101A1 (zh)
DE (1) DE10196879T5 (zh)
TW (1) TW563063B (zh)
WO (1) WO2002039271A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103314357A (zh) * 2010-12-16 2013-09-18 想象技术有限公司 用于在微处理器中使用多个阶段执行来对指令发布进行调度的方法和设备
CN103491315A (zh) * 2013-08-09 2014-01-01 北京中传视讯科技有限公司 视频数据处理方法、装置以及包括该装置的电子设备

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7337437B2 (en) * 1999-12-01 2008-02-26 International Business Machines Corporation Compiler optimisation of source code by determination and utilization of the equivalence of algebraic expressions in the source code
US8176108B2 (en) * 2000-06-20 2012-05-08 International Business Machines Corporation Method, apparatus and computer program product for network design and analysis
WO2002046917A1 (en) * 2000-12-07 2002-06-13 Koninklijke Philips Electronics N.V. Digital signal processing apparatus
GB2382672B (en) * 2001-10-31 2005-10-05 Alphamosaic Ltd Repeated instruction execution
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
US7903555B2 (en) * 2003-12-17 2011-03-08 Intel Corporation Packet tracing
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
EP1825433A4 (en) * 2004-11-23 2010-01-06 Efficient Memory Technology METHOD AND APPARATUS FOR MULTIPLE INTERLAYING ADDRESSING INTERLACES OF PAGINATED MEMORIES AND INTELLIGENT MEMORY BANKS
US8190809B2 (en) * 2004-11-23 2012-05-29 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US7913069B2 (en) * 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US7493475B2 (en) * 2006-11-15 2009-02-17 Stmicroelectronics, Inc. Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
US9164770B2 (en) 2009-10-23 2015-10-20 Mindspeed Technologies, Inc. Automatic control of multiple arithmetic/logic SIMD units
KR20120074762A (ko) * 2010-12-28 2012-07-06 삼성전자주식회사 재구성 가능한 심드 아키텍처 기반의 컴퓨팅 장치 및 방법
US20150100758A1 (en) * 2013-10-03 2015-04-09 Advanced Micro Devices, Inc. Data processor and method of lane realignment
KR102202575B1 (ko) 2013-12-31 2021-01-13 삼성전자주식회사 메모리 관리 방법 및 장치
KR102332523B1 (ko) 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4101960A (en) 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4138720A (en) 1977-04-04 1979-02-06 Burroughs Corporation Time-shared, multi-phase memory accessing system
US4181942A (en) 1978-03-31 1980-01-01 International Business Machines Corporation Program branching method and apparatus
JPS5616248A (en) 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
US4435758A (en) 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4434461A (en) 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
SE8104981L (sv) 1981-08-21 1982-07-26 Ibm Svenska Ab Metod och anordning for adressering av ett minne
US4604695A (en) 1983-09-30 1986-08-05 Honeywell Information Systems Inc. Nibble and word addressable memory arrangement
DE3479356D1 (en) 1983-12-23 1989-09-14 Hitachi Ltd A data processor with control of the significant bit lenghts of general purpose registers
US5045995A (en) * 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
GB2177526B (en) 1985-06-24 1990-02-14 Pixar Selective operation of processing elements in a single instruction, multiple data stream (simd)computer system
US4896258A (en) 1985-07-04 1990-01-23 Hitachi, Ltd. Data processor provided with instructions which refer to both tagged and tagless data
US4773038A (en) 1986-02-24 1988-09-20 Thinking Machines Corporation Method of simulating additional processors in a SIMD parallel processor array
US4985832A (en) 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
US5230079A (en) 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
GB2211638A (en) 1987-10-27 1989-07-05 Ibm Simd array processor
GB2201015B (en) 1987-02-10 1990-10-10 Univ Southampton Parallel processor array and array element
JPS63245529A (ja) 1987-03-31 1988-10-12 Toshiba Corp レジスタ退避復元装置
US5111389A (en) 1987-10-29 1992-05-05 International Business Machines Corporation Aperiodic mapping system using power-of-two stride access to interleaved devices
US5121498A (en) 1988-05-11 1992-06-09 Massachusetts Institute Of Technology Translator for translating source code for selective unrolling of loops in the source code
US5038282A (en) 1988-05-11 1991-08-06 Massachusetts Institute Of Technology Synchronous processor with simultaneous instruction processing and data transfer
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5224214A (en) 1990-04-12 1993-06-29 Digital Equipment Corp. BuIffet for gathering write requests and resolving read conflicts by matching read and write requests
US5193202A (en) * 1990-05-29 1993-03-09 Wavetracer, Inc. Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor
US5157785A (en) 1990-05-29 1992-10-20 Wavetracer, Inc. Process cell for an n-dimensional processor array having a single input element with 2n data inputs, memory, and full function arithmetic logic unit
EP0463973A3 (en) 1990-06-29 1993-12-01 Digital Equipment Corp Branch prediction in high performance processor
AU665521B2 (en) 1990-10-03 1996-01-11 Thinking Machines Corporation Parallel computer system
US5361363A (en) 1990-10-03 1994-11-01 Thinking Machines Corporation Input/output system for parallel computer for performing parallel file transfers between selected number of input/output devices and another selected number of processing nodes
JPH04293135A (ja) 1991-03-20 1992-10-16 Yokogawa Hewlett Packard Ltd メモリアクセス方式
US5361367A (en) 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
JPH07500437A (ja) * 1991-10-24 1995-01-12 インテル コーポレイシヨン データ処理システム
US5551039A (en) * 1992-02-03 1996-08-27 Thinking Machines Corporation Compiling a source code vector instruction by generating a subgrid loop for iteratively processing array elements by plural processing elements
US5659778A (en) * 1992-02-03 1997-08-19 Tm Patents, L.P. System and method of mapping an array to processing elements
JP2642039B2 (ja) 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
WO1994003860A1 (en) 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5479624A (en) 1992-10-14 1995-12-26 Lee Research, Inc. High-performance interleaved memory system comprising a prime number of memory modules
US5542074A (en) 1992-10-22 1996-07-30 Maspar Computer Corporation Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount
JPH06162228A (ja) 1992-11-26 1994-06-10 Sharp Corp データフロープロセッサ装置
GB2273377A (en) * 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
US5696958A (en) 1993-01-11 1997-12-09 Silicon Graphics, Inc. Method and apparatus for reducing delays following the execution of a branch instruction in an instruction pipeline
CA2116985C (en) 1993-03-11 1999-09-21 Cynthia J. Burns Memory system
JPH0756892A (ja) 1993-08-10 1995-03-03 Fujitsu Ltd マスク付きベクトル演算器を持つ計算機
US5479324A (en) * 1993-12-17 1995-12-26 Barry; James E. Illuminated gas tank or shell
JP3415693B2 (ja) 1993-12-23 2003-06-09 ノキア モービル フォーンズ リミテッド インターリーブプロセス
US5524223A (en) 1994-01-31 1996-06-04 Motorola, Inc. Instruction accelerator for processing loop instructions with address generator using multiple stored increment values
EP0671685B1 (en) 1994-03-08 1998-11-04 Digital Equipment Corporation Method and apparatus for detecting and executing cross-domain calls in a computer system
US5590352A (en) 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5659722A (en) 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
EP0681236B1 (en) 1994-05-05 2000-11-22 Conexant Systems, Inc. Space vector data path
US5590356A (en) 1994-08-23 1996-12-31 Massachusetts Institute Of Technology Mesh parallel computer architecture apparatus and associated methods
US5608886A (en) 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5758176A (en) 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
WO1996012228A1 (en) 1994-10-14 1996-04-25 Silicon Graphics, Inc. Redundant mapping tables
JPH08249306A (ja) 1995-03-09 1996-09-27 Sharp Corp データ駆動型情報処理装置
US5737572A (en) 1995-06-06 1998-04-07 Apple Computer, Inc. Bank selection logic for memory controllers
US5638533A (en) 1995-10-12 1997-06-10 Lsi Logic Corporation Method and apparatus for providing data to a parallel processing array
US6292879B1 (en) 1995-10-25 2001-09-18 Anthony S. Fong Method and apparatus to specify access control list and cache enabling and cache coherency requirement enabling on individual operands of an instruction of a computer
US5822606A (en) 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5727229A (en) * 1996-02-05 1998-03-10 Motorola, Inc. Method and apparatus for moving data in a parallel processor
US5924117A (en) 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US5946222A (en) 1996-12-20 1999-08-31 Oak Technology, Inc. Method and apparatus for performing a masked byte addition operation
US5870581A (en) 1996-12-20 1999-02-09 Oak Technology, Inc. Method and apparatus for performing concurrent write operations to a single-write-input register file and an accumulator register
JPH10254839A (ja) 1997-03-11 1998-09-25 Sony Corp Simd制御並列プロセッサおよび演算方法
US6381668B1 (en) 1997-03-21 2002-04-30 International Business Machines Corporation Address mapping for system memory
JPH10289305A (ja) 1997-04-11 1998-10-27 Mitsubishi Electric Corp 画像処理装置および画像処理方法
US6049330A (en) 1997-08-28 2000-04-11 Oak Technology, Inc. Method and apparatus for optimizing storage of compressed images in memory
WO1999014685A1 (fr) 1997-09-16 1999-03-25 Hitachi, Ltd. Machine de traitement des donnees et systeme de traitement des donnees
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6216223B1 (en) 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
JPH11272546A (ja) 1998-03-23 1999-10-08 Nec Corp 可変長レジスタ装置
US6067609A (en) 1998-04-09 2000-05-23 Teranex, Inc. Pattern generation and shift plane operations for a mesh connected computer
US6121905A (en) 1998-05-11 2000-09-19 Oak Technology, Inc. Method and apparatus for decoding JPEG symbols
US6130631A (en) 1998-05-11 2000-10-10 Oak Technology, Inc. Method and apparatus utilizing a simplified content-addressable memory for JPEG decoding
US6052703A (en) 1998-05-12 2000-04-18 Oak Technology, Inc. Method and apparatus for determining discrete cosine transforms using matrix multiplication and modified booth encoding
US6175892B1 (en) 1998-06-19 2001-01-16 Hitachi America. Ltd. Registers and methods for accessing registers for use in a single instruction multiple data system
US6282628B1 (en) 1999-02-24 2001-08-28 International Business Machines Corporation Method and system for a result code for a single-instruction multiple-data predicate compare operation
WO2001031473A1 (en) 1999-10-26 2001-05-03 Arthur D. Little, Inc. Multiplexing n-dimensional mesh connections onto (n + 1) data paths
US6452864B1 (en) 2000-01-31 2002-09-17 Stmicroelectonics S.R.L. Interleaved memory device for sequential access synchronous reading with simplified address counters
US6282623B1 (en) 2000-02-04 2001-08-28 Motorola Inc. Method for digital signal processing, DSP, mobile communication and audi o-device
EP1130517B1 (en) 2000-03-02 2004-05-26 STMicroelectronics S.r.l. Redundancy architecture for an interleaved memory
JP2002007359A (ja) 2000-06-21 2002-01-11 Sony Corp Simd制御並列処理方法および装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103314357A (zh) * 2010-12-16 2013-09-18 想象技术有限公司 用于在微处理器中使用多个阶段执行来对指令发布进行调度的方法和设备
CN103314357B (zh) * 2010-12-16 2016-01-20 想象技术有限公司 用于在微处理器中使用多个阶段执行来对指令发布进行调度的方法和设备
CN103491315A (zh) * 2013-08-09 2014-01-01 北京中传视讯科技有限公司 视频数据处理方法、装置以及包括该装置的电子设备

Also Published As

Publication number Publication date
DE10196879T5 (de) 2004-04-15
AU2002234101A1 (en) 2002-05-21
WO2002039271A1 (en) 2002-05-16
KR20030072354A (ko) 2003-09-13
US6732253B1 (en) 2004-05-04
US20040158691A1 (en) 2004-08-12
JP2004513455A (ja) 2004-04-30
TW563063B (en) 2003-11-21

Similar Documents

Publication Publication Date Title
CN1484786A (zh) 在单指令多数据通路结构中的非整数倍大小阵列循环处理
US6076152A (en) Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
EP1582980B1 (en) Context switching method, device, program, recording medium, and central processing unit
RU2450339C2 (ru) Мультипроцессорная архитектура, оптимизированная для потоков
US7926060B2 (en) iMEM reconfigurable architecture
EP0735463A2 (en) Computer processor having a register file with reduced read and/or write port bandwidth
RU2000132719A (ru) Смешанный файл векторных/скалярных регистров
CN1809810A (zh) 指令控制数据处理设备
CN1711563A (zh) 令牌触发多线程操作的方法和装置
US6785781B2 (en) Read/write alignment scheme for port reduction of multi-port SRAM cells
EP1979808A4 (en) MULTIPROCESSOR ARCHITECTURE OPTIMIZED BY UNITS OF EXECUTION
US7908603B2 (en) Intelligent memory with multitask controller and memory partitions storing task state information for processing tasks interfaced from host processor
US20020103978A1 (en) Microcontroller circuit and method for accessing external memory in a page mode of operation
EP0138352B1 (en) Method of operating a data processing system via depictor-linked microcode and logic circuitry
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
US20050172088A1 (en) Intelligent memory device with wakeup feature
US20050172087A1 (en) Intelligent memory device with ASCII registers
US7823161B2 (en) Intelligent memory device with variable size task architecture
US20050108290A1 (en) Logic computing system and method
WO2007029169A2 (en) Processor array with separate serial module
CN1437723A (zh) 外部微代码
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
CN1261865C (zh) 内存源操作数的选择电路及选择方法
JP2005535045A (ja) Vliw命令を処理するためのプロセッサおよび方法
CN1703670A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication