CN1573686A - 信息处理装置以及机器语言程序变换装置 - Google Patents
信息处理装置以及机器语言程序变换装置 Download PDFInfo
- Publication number
- CN1573686A CN1573686A CNA2004100484260A CN200410048426A CN1573686A CN 1573686 A CN1573686 A CN 1573686A CN A2004100484260 A CNA2004100484260 A CN A2004100484260A CN 200410048426 A CN200410048426 A CN 200410048426A CN 1573686 A CN1573686 A CN 1573686A
- Authority
- CN
- China
- Prior art keywords
- simd
- machine language
- language program
- order
- relevant
- 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
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种信息处理装置,包括:在具有SIMD运算器(14)的信息处理装置(10)中由机器语言程序输入SIMD命令,将其按照规定的次数循环输出的SIMD处理分割装置(12);对于由SIMD处理分割装置(11)输出的有关存储器存取的SIMD命令,按照该SIMD命令的循环次数,变换该SIMD命令有关的存储器地址,付与SIMD运算器(14)的存储器地址变换装置(12);具有多个SIMD运算器用的寄存器组(144),由SIMD处理分割装置(11)按照SIMD命令的循环次数,通过SIMD运算器(14)变换使用的寄存器组的寄存器切换装置(143)。由此,对于进行SIMD型运算的信息处理装置,能执行并列度不同的机器语言程序。
Description
技术领域
本发明涉及一种包含SIMD(单指令流/多数据流)命令的机器语言程序的处理技术。特别涉及即使机器语言程序的并列度与信息处理装置中的处理器数非对应的情况下,该机器语言程序仍可能执行的技术,以及产生改变了并列度的新机器语言程序的技术。
背景技术
进行图像处理等的媒体处理时,经常对多个数据进行同样的运算。此种情况下,通过构成对多个数据进行同样运算的硬件,能高速地进行媒体处理。这样的体系结构被称为“SIMD型体系结构”。作为SIMD型体系结构的例子,有在大型计算机上经常使用的向量型计算机和用同一命令控制多个处理器的SIMD型多处理器,用单处理器的一条命令进行多个数据处理的SIMD命令等。
进行媒体处理的处理器,根据其目的变化所要求的特性。例如:需要进行高速处理时,需要增多一次能够处理的数据量。相反,处理的数据并非很多,通过减小硬件从而削减电力消耗为优先考虑的情况下,减少一次能够处理的数据即可。此处,一次能够处理的数据量被称为“并列度”。对于进行媒体处理的处理器,通过增减并列度,能够取得性能和硬件量的平衡。
但是,进行媒体处理的运算中经常包含特殊的运算。因此,进行媒体处理的处理器中,为对此种特殊的运算高速处理,很多配备了专用的命令。但是,媒体处理的程序设计中采用高级语言的情况下,就不能有效利用此种特殊的运算,不能充分发挥其性能。因此编写包含很多特殊运算的程序时,为了重视其性能,较多地采用机器语言程序记述运算。
对于SIMD型体系结构的机器语言编程,改变并列度会产生各种各样的问题。例如:SIMD型多处理器中,各命令成为与处理器数成比例的并列处理,并列数变化,即如果处理器数变化,并列处理的动作就会不同。特别是,对于有关存储器存取的命令,按照处理器数的变化,如果没有适当地改变地址偏移,就会访问错误的存储器地址的数据。
因此,变化SIMD型体系结构的并列度的情况下,与此对应有必要变更机器语言程序。以往为了实现此目的,采用高级语言将逐次编程变换(向量化)为SIMD处理,生成新的机器语言程序。
上述方法,由高级语言编程与逐次编程相对应,但与在进行媒体处理等进行的SIMD型体系结构的机器语言编程不相对应。因此,SIMD型体系结构的机器语言编程中并列度变化的情况下,多数需要采用人工的方法,对机器语言程序记述进行变更。
另外,通过事先准备各种各样并列度的机器语言程序,没有必要每次变更机器语言程序记述,就能与各种各样并列度的SIMD型体系结构相对应。例如:在并列度可动态变更的硬件等中,必须保持与多个并列度相对应的多个机器语言程序。因此,需要更多的存储空间,这是与装置的小型化·低成本化的要求相悖的。
发明内容
鉴于以上问题,本发明的目的在于对于根据包含SIMD命令的机器语言程序进行SIMD型运算的信息处理装置,即使该机器语言程序的并列度与该信息处理装置有关的SIMD型体系结构的并列度不相对应的情况下,该机器语言程序也可能执行。另外还提供变更原机器语言程序有关的并列度,生成新机器语言程序的程序变换装置。
为了解决上述问题,本发明的信息处理装置,具有SIMD运算器,根据包含SIMD命令的机器语言程序进行SIMD型运算;还包括SIMD处理分割装置,其从上述机器语言程序输入一条或者连续多条SIMD命令,将该一条或者连续多条SIMD命令以相当于处理分割数的次数重复输出;从上述SIMD处理分割装置输出的SIMD命令由上述SIMD运算器执行。
由此,通过SIMD处理分割装置,从机器语言程序输入一条或者连续多条SIMD命令,该一条或者多条SIMD命令以相当于处理分割数的次数重复输出。然后,重复输出的SIMD命令由SIMD运算器执行。如此通过多次重复执行同一SIMD命令,高并列度的SIMD命令能在低并列度的SIMD运算器中,分为多个执行时钟执行。即有关本发明的信息处理装置,即使作为输入的机器语言程序的并列度与SIMD运算器的并列度不相对应的情况下,也能够执行该机器语言程序。
作为优选,上述信息处理装置还包括存储器地址变换装置,其对于从上述SIMD处理分割装置输出的SIMD命令中有关存储器存取的命令,根据有关该SIMD命令的重复输出的顺序数,将有关该SIMD命令的原存储器地址变换为新存储器地址。
由此,由存储器地址变换装置,将从SIMD处理分割装置重复输出的有关SIMD命令的原存储器地址,变换为有关该SIMD命令的重复输出的顺序数对应的新存储器地址。如此,通过将原存储器地址变换为新存储器地址,当SIMD命令分割执行时,能访问正确的存储器地址。
作为优选,上述信息处理装置还包括寄存器切换装置,其具有相当于上述处理分割数的个数的上述SIMD运算器用的寄存器组,根据有关由上述SIMD处理分割装置重复输出SIMD命令的顺序数,切换由上述SIMD运算器所使用的上述寄存器组。
由此,通过寄存器切换装置,因为SIMD运算器使用的寄存器组按照该SIMD命令的有关重复输出的顺序数进行变换,所以能够避免被其它SIMD命令的执行结果错误地覆盖。
作为优选,上述信息处理装置还包括SIMD处理分割数计算装置,根据上述SIMD运算器的并列度信息以及上述机器语言程序中所表示的上述机器语言程序的并列度信息,计算出上述处理分割数。
另一方面,为了解决上述问题,本发明的机器语言程序变换装置,包括:SIMD处理分割装置,其输入包含SIMD命令的原机器语言程序,产生中间机器语言程序,相当于将该原机器语言程序中所包含的命令列全体以相当于处理分割数的次数进行重复的命令列;和存储器地址变换装置,,对于由上述SIMD处理分割装置产生的中间机器语言程序中所包含的SIMD命令中有关存储器存取的命令,将有关该SIMD命令的原存储器地址变换为新存储器地址;将由上述存储器地址变换装置进行存储器地址变换处理后的上述中间机器语言程序,作为新机器语言程序输出。
由此,通过SIMD处理分割装置,将原机器语言程序中所包含的命令列全体以相当于处理分割数的次数进行重复,生成相当于此重复结果的中间机器语言程序,对于其中有关存储器存取的命令,由存储器地址变换装置将其原存储器地址变换为新存储器地址,作为新机器语言程序输出。由此通过重复执行原机器语言程序,就可能将高并列度的SIMD命令在低并列度的SIMD运算器中分为多个执行时钟执行。然后,对于有关存储器存取的SIMD命令,通过将其原存储器地址变换为新存储器地址,当SIMD命令被分割执行的情况,就能够访问正确的存储器地址。这样,有关本发明的机器语言程序变换装置,变换原机器语言程序的并列度,能够自动生成新机器语言程序。
具体讲,上述中间机器语言程序由将上述原机器语言程序中所包含的命令列全体以相当于上述处理分割数的次数重复输出的命令列所构成;上述存储器地址变换装置,对于上述中间机器语言程序中所包含的有关存储器存取的SIMD命令,根据有关该SIMD命令的重复输出的顺序数,将有关该SIMD命令的原存储器地址变换为新存储器地址。
再具体讲,上述中间机器语言程序由将上述原机器语言程序中所包含的命令列全体作为子程序,将该子程序只调用相当于上述处理分割数的次数的循环命令列所构成;上述存储器地址变换装置,将有关上述原存储器地址的地址偏移,改写成表示上述循环命令列执行时的循环次数的变量。
附图说明
图1是有关本发明的第1实施方式的信息处理装置的构成图。
图2是表示SIMD运算器的几个构成例子的图。
图3是表示机器语言程序的例子的图。
图4是说明图1中SIMD处理分割装置的动作的图。
图5是说明图1中存储器地址变换装置的动作的图。
图6是表示存储器地址变换的第1例的图。
图7是表示存储器地址变换的第2例的图。
图8是本发明第2以及第3实施方式有关的机器语言程序变换装置的构成图。
图9是说明有关第2实施方式的SIMD处理分割装置的动作的图。
图10是说明有关第2实施方式的存储器地址变换装置的动作的图。
图11是说明有关第3实施方式的SIMD处理分割装置的动作的图。
图12是说明有关第3实施方式的存储器地址变换装置的动作的图。
图中:10-信息处理装置,11-SIMD处理分割数计算装置,12-SIMD处理分割装置,13-存储器地址变换装置,14-SIMD运算器,141-处理器元件,142-数据存储器,143-寄存器切换装置,144-寄存器组,D10-机器语言程序,20-机器语言程序变换装置,22-SIMD处理分割装置,23-存储器地址变换装置,D30-原机器语言程序,D32-中间机器语言程序,D40-新机器语言程序。
具体实施方式
以下,对于本发明的实施方式,参照附图加以说明。
(第1实施方式)
图1表示有关本发明的第1实施方式的信息处理装置的构成。有关本实施方式的信息处理装置10,包括:SIMD处理分割数计算装置11(以下有时简称计算装置11)、SIMD处理分割装置12(以下有时简称分割装置12)、存储器地址变换装置13(以下有时简称变换装置13)和SIMD运算器14,其执行机器语言程序D10。信息处理装置10,例如作为MPEG(运动图像专家组)的编码使用。计算装置11、分割装置12以及变换装置13,也可由硬件构成或者程序处理的任何一个实现。
输入到信息处理装置10的机器语言程序D10,包含表示机器语言程序D10有关的SIMD处理的并列度的程序并列度信息D11(以下称为信息D11)、至少包含一条由SIMD运算器14执行的SIMD命令的SIMD命令列D12。程序能够适当指定信息D11。即与SIMD运算器的并列度的大小无关,能记述同一命令动作。另外,作为指定信息D11的方法,有使用后述的专用命令的方法和在指定的寄存器和存储器地址中存储信息D11的方法等。
以下依次说明信息处理装置10的各个构成元素的概要。
SIMD处理分割数计算装置11,根据机器语言程序D10中的信息D11以及表示SIMD运算器14的并列度的SIMD运算器并列度信息D20(以下称为信息D20),计算表示几次分割执行SIMD处理的SIMD处理分割数D21(以下称为分割数D21)。此处,由信息D20表示的SIMD运算器14的并列度,具体说是指SIMD运算器14中处理器元件141的个数。例如图2(a)所示的SIMD运算器14的情况,4个处理器元件141,和同图(b)中所示的SIMD运算器14的情况,8个处理器元件141,能分别独立地访问数据存储器142。即同图(a)(b)的SIMD运算器14的并列度分别为“4”和“8”。另外,作为获取信息D20的方法,有使用专用命令的方法和从指定的寄存器和存储器地址获取的方法等。
信息D11,在机器语言程序D10中以具体的数值表示。例如图3中所示的机器语言程序D10的例子中,程序前面的VECTOR命令中记述信息D11。VECTOR命令位于机器语言程序D10的前面,是信息处理装置10中指定程序并列度的专用命令。此种情况,作为信息11指定为“8”。
分割数D21能由信息D11的值除以信息D20的值计算出。具体说,由图2(a)所示的SIMD运算器14处理图3所示的机器语言程序D10的情况下,分割数D21为“2”(8/4=2)。因为分割数D21在机器语言程序D10的执行过程中不变化,所以程序开始执行时只计算一次即可。另外,通常设计SIMD运算器14的体系结构使上述除法计算结果为整数。即使除法计算结果为非整数的情况下,本发明也能适用。例如:8并列的机器语言程序在5并列的SIMD运算器执行的情况,停用SIMD运算器的处理器元件的任何一个使其成为4并列。但是,采用此种方法处理效率降低,通常不采用如此的体系结构。以后只讨论除法计算结果为整数的情况。
返回图1中,SIMD处理分割装置12输入SIMD命令列D12中所包含的各个SIMD命令,只按照由计算装置11计算出的分割数D21表示的次数,将输入的各个SIMD命令循环输出。此时,将该循环输出有关的顺序数作为命令产生次数D22(以下称为次数D22)计数。SIMD处理分割装置12的动作的具体例子如图4所示。即SIMD处理分割装置12,如果输入SIMD命令(图中表示为命令1),将同一SIMD命令(命令1)逐条在每个执行时钟下,按照分割数D21所表示的次数只循环2次输出。次数D22,在SIMD命令(命令1)的第1次的输出时为“1”,第2次输出时为“2”。
存储器地址变换装置13,如图5所示,基于分割数D21以及次数D22,将由分割装置12输出的SIMD命令(有关存储器存取的命令)有关的原存储器地址,变换为作为实际的数据的参照的新存储器地址,对SIMD运算器14逐次输出。对此存储器地址变换的具体例将在后面叙述。
返回图1中,SIMD运算器14包括:多个处理器元件141、各个处理器元件141能独立地访问数据的数据存储器142、寄存器切换装置143,执行从存储器地址变换装置13输出的SIMD命令。其中,寄存器切换装置143具有SIMD运算器14使用的多个寄存器组144。寄存器切换装置143按照次数D22切换寄存器组144。SIMD运算器14使用切换的寄存器组144进行SIMD运算。如此,通过SIMD命令执行时适当切换SIMD运算器14所使用的寄存器组,就能够避免由于SIMD处理分割带来的寄存器的覆盖问题。另外寄存器切换装置143至少具备比分割数D21个数多的寄存器组144。
接着对于通过存储器地址变换装置13具体的存储器地址变换方法,以并列度为“8”的SIMD命令在并列度为“4”的SIMD运算器14上执行的情况为例进行说明。
图6表示存储器地址变换的第1例。本例中,SIMD运算器14的数据存储器142,单位地址能够存储4个并列的数据。机器语言程序D10中的SIMD命令(图中表示为命令1),是对于由原存储器地址“ADR”所指定的8并列的数据(图中编为1至8号作为参照)进行SIMD处理指示的命令。由此原存储器地址ADR指定的8并列的数据,在该SIMD运算器14的数据存储器142中,作为2个4并列的数据,被存储在连续2个存储器地址中。应当正确地参照此分割存储的数据,对于由SIMD处理分割装置12产生的2个SIMD命令之中的一个,其存储器地址由“ADR”变换为“ADR+1”。
本例的情况,假定原存储器地址为ADRorg,次数D22为n,新存储器地址ADRnew能够由
ADRnew=ADRorg+n-1
得到。另外,将分割数D21作为DIV,也可由
ADRnew=ADRorg+DIV-n得到。
图7表示存储器地址变换的第2例。本例中,SIMD运算器的数据存储器142,单位地址中存储一个数据。机器语言程序D10中的SIMD命令(图中表示为命令1),是对于由原存储器地址“ADR”所指定的8并列的数据(图中编为1至8号参照)进行SIMD处理指示的命令。由此原存储器地址ADR指定的8并列的数据,在该SIMD运算器14的数据存储器142中,被存储在连续8个存储器地址中。应当正确地参照此分割存储的数据,对于由SIMD处理分割装置12产生的2个SIMD命令之中的一个,其存储器地址由“ADR”变换为“ADR+4”。
本例的情况,假定原存储器地址为ADRorg,次数D22为n,以及数据存储器142的并列度为SPNUM,新存储器地址ADRnew能够由
ADRnew=ADRorg+(n-1)*SPNUM得到。另外,将分割数D21作为DIV,也可由
ADRnew=ADRorg+(DIV-n)*SPNUM得到。另外此处所谓数据存储器142的并列度SPNUM,是指SIMD运算器14中有效动作的处理器141的个数,除以数据存储器142的单位地址中可能存储的数据数所得到的数值。
另一方面,由存储器地址变换装置13进行存储器地址变换带来的地址偏移的改写,具体地说如下进行。SIMD命令中,存储器地址以“[A,B]”表示。此处A是程序表示的程序存储器地址,一般地,以“寄存器+常数”的形式表示。另外B是地址偏移,通常由程序写入常数“0”。另外关于B也能够由程序不表示为明确的值。通过以上的方法,例如存储器存取命令写成“LD[b0+1,0],R0”。此处,存储器地址变换装置13根据需要,改写相当于上述的B的部分。上述第2例的情况,进行了存储器地址变换的存储器存取命令,变为“LD[b0+1,4],R0”。
以上,根据本实施方式,与机器语言程序D10的并列度无关,能由规定的并列度的SIMD运算器14实际执行机器语言程序D10。由此,不需要进行机器语言程序D10的改写。另外,并列度可动态变化,例如以节省电力方式运行时,半数的处理器元件被停用的信息处理装置中,就没必要存储对应于可能变化的并列度的多个机器语言程序。
另外图4中,SIMD处理分割装置12表示为逐条输入SIMD命令,本发明中并不限于此。即SIMD处理分割装置12也可以输入连续多条SIMD命令列,将该命令列按规定的次数循环输出。
另外作为SIMD处理分割数D21,通过赋予其常数,能够省略SIMD处理分割数计算装置11。此时,例如通过将分割数D21赋予常数“2”,信息处理装置10,通常将输入的机器语言程序D10的并列度分为一半来执行。
另外,机器语言程序D10中,不包含关于存储器存取的SIMD命令的情况下,因为不需要进行存储器地址变换处理,所以也可以省略存储器地址变换装置13。
还有,也可以通过采用与寄存器切换装置143不同的其它方法,避免寄存器的覆盖问题。即使对于此种情况,由本发明也能够得到上述的效果。
(第2实施方式)
图8表示有关本发明的第2实施方式的机器语言程序变换装置的构成。有关本实施方式的机器语言程序变换装置20,包括:SIMD处理分割数指定装置21(以下有时简称为指定装置21)、SIMD处理分割装置22(以下有时简称分割装置22)、存储器地址变换装置23(以下有时简称变换装置23),其将包含SIMD命令的原机器语言程序D30作为输入,减小该原机器语言程序D30的并列度,作为新机器语言程序D40输出。另外,对于指定装置21、分割装置22以及变换装置23,可由硬件构成以及程序处理的任何一个来实现。
以下依次说明信息处理装置20的各个构成元件的概要。
SIMD处理分割数指定装置21取得由程序指定的SIMD处理的分割数,设定SIMD处理分割数D31(以下称为分割数D31)。SIMD处理的分割数的指定,作为机器语言程序变换装置20启动时的选项,能采用以常数指定的方法等实现。
SIMD处理分割装置22,将原机器语言程序D30中所包含的命令列全体,只进行相当于分割处理数D31所表示的处理分割数的次数的循环,作为中间机器语言程序D32输出。图9表示SIMD处理分割装置22的动作的具体例。在该图的例中,将原机器语言程序D30中的命令列全体,按照分割数D31表示的次数只循环2次输出。
返回到图8,存储器地址变换装置23,对于中间机器语言程序D32中所包含的SIMD命令之中的有关存储器存取的命令,按照该SIMD命令的循环输出有关的顺序数,将有关该SIMD命令的原存储器地址变换为新存储器地址,输出新机器语言程序D40。图10表示存储器地址变换装置23的动作的具体例。在该图的例中,中间机器语言程序D32中所包含的存储器存取命令(同图中表示为命令2)有关的存储器偏移,按照该存储器存取命令的循环输出有关的顺序数(循环次数)改写。另外,从原存储器地址到新存储器地址的变换,能按照和第1实施方式中说明的方法同样进行。
由以上产生的新机器语言程序D40能在一般的SIMD运算器上执行。即对于执行新机器语言程序D40的SIMD运算器,没有必要特别包括第1实施方式有关的SIMD运算器具有的寄存器切换装置。
以上根据本实施方式,能够变换原机器语言程序D30的程序并列度自动产生新机器语言程序D40。另外因为原机器语言程序D40,是原机器语言程序D30中所包含的命令列全体按规定次数连续地表示的程序,通过执行该新机器语言程序D40的SIMD运算器,能并列处理其连续位置前后的多个命令。即新机器语言程序D40,能由原机器语言程序D30单纯地按照指定次数循环执行,以比有关的时间还少的时间执行而得到。
另外,SIMD处理分割装置22也能以并非在原机器语言程序D30中所包含的命令列全体,而是以其一部分命令作为单位,将该命令列循环输出。只是此时,执行产生的新机器语言程序D40的SIMD运算器,有必要包括例如第1实施方式中所说明的寄存器切换装置,另外SIMD处理分割装置22有必要输出控制寄存器变换的命令。
(第3实施方式)
有关本发明的第3实施方式的机器语言程序变换装置,和图8所示的有关第2实施方式的机器语言程序变换装置20具有同样的构成。只是SIMD处理分割装置22以及存储器地址变换装置23的动作,与第2实施方式不同。以下,对有关本实施方式的机器语言程序变换装置20中的SIMD处理分割装置22以及存储器地址变换装置23的动作加以说明。
SIMD处理分割装置22,将原机器语言程序D30中所包含的命令列全体作为子程序,此子程序只进行相当于由分割数D31表示的处理分割数的次数的循环,产生循环命令列,作为中间机器语言程序D32输出。图11表示SIMD处理分割装置22的动作的具体例。在该图的例中,将原机器语言程序D30中的命令列全体作为子程序sub,按照由分割数D31表示的次数只调用子程序sub2次的函数main,作为中间机器语言程序D32而产生。
存储器地址变换装置23对于中间机器语言程序D32中所包含的SIMD命令之中有关存储器存取的命令,将该SIMD命令的地址偏移改写为表示循环命令列执行时的循环次数的变量,输出新机器语言程序D40。图12表示存储器地址变换装置23的动作的具体例。在该图的例中,将中间机器语言D32中所包含的存储器存取命令(同图中表示为命令2)有关的地址偏移,改写到存储循环计数的专用的寄存器1c中。另外本例中,假设执行新机器语言程序D40的SIMD运算器具有专用的寄存器1c,执行地址偏移的改写。代替此专用的寄存器1c,也可采用通用的寄存器表示。
以上由本实施方式,能产生比第2实施方式小的新机器语言程序D40。即使用者重视程序大小的情况下,可以选择按照本实施方式的新机器语言程序D40,重视处理性能的情况下,可以选择按照第2实施方式的新机器语言程序D40,使用者可以分别选择。
另外,SIMD处理分割装置22也可以不将原机器语言程序D30中所包含的命令列全体而是将其一部分命令列作为子程序。只是此时,如上所述,执行产生的新机器语言程序D40的SIMD运算器有必要包括寄存器切换装置,还有SIMD处理分割装置22有必要输出控制寄存器变换的命令。
另外,第2以及第3有关的机器语言程序变换装置20和执行由该机器语言程序变换装置20产生的新机器语言程序D40的SIMD运算器的组合,能构成象第1实施方式的信息处理装置。此时的信息处理装置与第1实施方式不同,将输入的机器语言程序全体变换后,执行变换后的机器语言程序。
正如以上的说明,根据本发明,对于包含SIMD命令的机器语言程序的输入,通过配备将其变换为相当于处理分割数的次数的循环处理的SIMD处理分割装置,不需要变更与某一并列度的SIMD运算器相适应的机器语言程序的内容,能够在只减小并列度的其它的SIMD运算器上执行。另外,SIMD命令中,对于有关存储器存取的命令,按照循环次数有关的顺序数,通过配备将该SIMD命令的原存储器地址变换为新存储器地址的存储器地址变换装置,在只减小了并列度的其它的SIMD运算器上执行该机器语言程序的情况下,根据SIMD运算器的存储器构成,能正确地进行该SIMD命令的存储器存取。
Claims (7)
1、一种信息处理装置,具有SIMD运算器,根据包含SIMD命令的机器语言程序进行SIMD型运算,其特征在于,
包括SIMD处理分割装置,其从所述机器语言程序输入一条或者连续多条SIMD命令,将该一条或者连续多条SIMD命令以相当于处理分割数的次数重复输出;
从所述SIMD处理分割装置输出的SIMD命令由所述SIMD运算器执行。
2、根据权利要求1所述的信息处理装置,其特征在于,
包括存储器地址变换装置,其对于从所述SIMD处理分割装置输出的SIMD命令中有关存储器存取的命令,根据有关该SIMD命令的重复输出的顺序数,将有关该SIMD命令的原存储器地址变换为新存储器地址。
3、根据权利要求1所述的信息处理装置,其特征在于,
包括寄存器切换装置,其具有相当于所述处理分割数的个数的所述SIMD运算器用的寄存器组,根据有关由所述SIMD处理分割装置重复输出SIMD命令的顺序数,切换由所述SIMD运算器所使用的所述寄存器组。
4、根据权利要求1所述的信息处理装置,其特征在于,
包括SIMD处理分割数计算装置,根据所述SIMD运算器的并列度信息以及所述机器语言程序中所表示的所述机器语言程序的并列度信息,计算出所述处理分割数。
5、一种机器语言程序变换装置,其特征在于,包括:
SIMD处理分割装置,其输入包含SIMD命令的原机器语言程序,产生中间机器语言程序,相当于将该原机器语言程序中所包含的命令列全体以相当于处理分割数的次数进行重复的命令列;和
存储器地址变换装置,对于由所述SIMD处理分割装置产生的中间机器语言程序中所包含的SIMD命令中有关存储器存取的命令,将有关该SIMD命令的原存储器地址变换为新存储器地址;
将由所述存储器地址变换装置进行存储器地址变换处理后的所述中间机器语言程序,作为新机器语言程序输出。
6、根据权利要求5所述的机器语言程序变换装置,其特征在于,
所述中间机器语言程序由将所述原机器语言程序中所包含的命令列全体以相当于所述处理分割数的次数重复输出的命令列所构成;
所述存储器地址变换装置,对于所述中间机器语言程序中所包含的有关存储器存取的SIMD命令,根据有关该SIMD命令的重复输出的顺序数,将有关该SIMD命令的原存储器地址变换为新存储器地址。
7、根据权利要求5所述的机器语言程序变换装置,其特征在于,
所述中间机器语言程序由将所述原机器语言程序中所包含的命令列全体作为子程序,将该子程序只调用相当于所述处理分割数的次数的循环命令列所构成;
所述存储器地址变换装置,将有关所述原存储器地址的地址偏移,改写成表示所述循环命令列执行时的循环次数的变量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003157487A JP2004362086A (ja) | 2003-06-03 | 2003-06-03 | 情報処理装置および機械語プログラム変換装置 |
JP2003157487 | 2003-06-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1573686A true CN1573686A (zh) | 2005-02-02 |
CN1297889C CN1297889C (zh) | 2007-01-31 |
Family
ID=33487403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100484260A Expired - Fee Related CN1297889C (zh) | 2003-06-03 | 2004-06-03 | 信息处理装置以及机器语言程序变换装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040250048A1 (zh) |
JP (1) | JP2004362086A (zh) |
CN (1) | CN1297889C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416216B (zh) * | 2006-03-30 | 2012-11-21 | 日本电气株式会社 | 并行图像处理系统控制方法和设备 |
CN102197369B (zh) * | 2008-10-08 | 2015-04-22 | 瑞士优北罗股份有限公司 | 用于执行simd乘法-累积运算的装置及方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7694114B2 (en) | 2005-06-09 | 2010-04-06 | Qualcomm Incorporated | Software selectable adjustment of SIMD parallelism |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
US8135941B2 (en) * | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
JP2010086256A (ja) * | 2008-09-30 | 2010-04-15 | Mitsubishi Electric Corp | 並列処理型プロセッサ |
JP5121671B2 (ja) * | 2008-10-30 | 2013-01-16 | 株式会社東芝 | 画像処理プロセッサ |
PL3226078T3 (pl) | 2014-11-28 | 2020-10-19 | Canon Kabushiki Kaisha | Wkład i tworzące elektrofotograficzny obraz urządzenie |
US10909037B2 (en) * | 2017-04-21 | 2021-02-02 | Intel Corpor Ation | Optimizing memory address compression |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0268651A (ja) * | 1988-09-02 | 1990-03-08 | Fujitsu Ltd | くり返し制御構造の並列処理方式 |
JP2518902B2 (ja) * | 1988-09-19 | 1996-07-31 | 富士通株式会社 | 並列計算機におけるイベントスケジュ―リング処理方式 |
JPH02158859A (ja) * | 1988-12-12 | 1990-06-19 | Matsushita Electric Ind Co Ltd | 割当プロセッサ数決定装置 |
JPH04152465A (ja) * | 1990-10-16 | 1992-05-26 | Fujitsu Ltd | データ処理システム及びデータ処理方法 |
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 |
JP3130446B2 (ja) * | 1995-05-10 | 2001-01-31 | 松下電器産業株式会社 | プログラム変換装置及びプロセッサ |
US6026486A (en) * | 1996-05-23 | 2000-02-15 | Matsushita Electric Industrial Co., Ltd. | General purpose processor having a variable bitwidth |
JP3178403B2 (ja) * | 1998-02-16 | 2001-06-18 | 日本電気株式会社 | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US6199067B1 (en) * | 1999-01-20 | 2001-03-06 | Mightiest Logicon Unisearch, Inc. | System and method for generating personalized user profiles and for utilizing the generated user profiles to perform adaptive internet searches |
WO2000062182A2 (en) * | 1999-04-09 | 2000-10-19 | Clearspeed Technology Limited | Parallel data processing apparatus |
JP2001309386A (ja) * | 2000-04-19 | 2001-11-02 | Mitsubishi Electric Corp | 画像処理装置 |
-
2003
- 2003-06-03 JP JP2003157487A patent/JP2004362086A/ja active Pending
-
2004
- 2004-05-12 US US10/843,434 patent/US20040250048A1/en not_active Abandoned
- 2004-06-03 CN CNB2004100484260A patent/CN1297889C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416216B (zh) * | 2006-03-30 | 2012-11-21 | 日本电气株式会社 | 并行图像处理系统控制方法和设备 |
CN102197369B (zh) * | 2008-10-08 | 2015-04-22 | 瑞士优北罗股份有限公司 | 用于执行simd乘法-累积运算的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20040250048A1 (en) | 2004-12-09 |
JP2004362086A (ja) | 2004-12-24 |
CN1297889C (zh) | 2007-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | Optimizing depthwise separable convolution operations on gpus | |
Gondimalla et al. | SparTen: A sparse tensor accelerator for convolutional neural networks | |
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
Cho et al. | MEC: Memory-efficient convolution for deep neural network | |
Abdelfattah et al. | Fast batched matrix multiplication for small sizes using half-precision arithmetic on GPUs | |
CN1434380A (zh) | 图像处理装置和方法以及用于该装置的编译程序 | |
Bach et al. | Optimized HPL for AMD GPU and multi-core CPU usage | |
Koza et al. | Compressed multirow storage format for sparse matrices on graphics processing units | |
US10067910B2 (en) | System and method for GPU maximum register count optimization applied to general matrix-matrix multiplication | |
CN1297889C (zh) | 信息处理装置以及机器语言程序变换装置 | |
Jenkins et al. | Enabling fast, noncontiguous GPU data movement in hybrid MPI+ GPU environments | |
CN1265294C (zh) | 基4和混合基(4+2)fft处理器地址映射方法和系统 | |
Lai et al. | Accelerating Strassen-Winograd's matrix multiplication algorithm on GPUs | |
Browne et al. | Forest packing: Fast parallel, decision forests | |
Yang et al. | Isosceles: Accelerating sparse cnns through inter-layer pipelining | |
JP2023519665A (ja) | 並列処理中の電力の影響を減らすための処理データストリームの変更 | |
CN1716184A (zh) | 处理器和流水线重配置控制方法 | |
Li et al. | GPU matrix multiplication | |
CN1319801A (zh) | 用于循环冗余校验的有效计算方法及装置 | |
CN1149472C (zh) | 更名装置及处理器 | |
EP4268140A1 (en) | Tensor controller architecture | |
Lee et al. | MVP: An efficient CNN accelerator with matrix, vector, and processing-near-memory units | |
Cicek et al. | Energy efficient boosting of GEMM accelerators for DNN via reuse | |
Endo | Applying recursive temporal blocking for stencil computations to deeper memory hierarchy | |
Chen et al. | Exploiting hierarchical parallelism and reusability in tensor kernel processing on heterogeneous HPC systems |
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: 20070131 Termination date: 20100603 |