CN101432710A - 改进的可置换地址的处理器及方法 - Google Patents
改进的可置换地址的处理器及方法 Download PDFInfo
- Publication number
- CN101432710A CN101432710A CNA2007800156287A CN200780015628A CN101432710A CN 101432710 A CN101432710 A CN 101432710A CN A2007800156287 A CNA2007800156287 A CN A2007800156287A CN 200780015628 A CN200780015628 A CN 200780015628A CN 101432710 A CN101432710 A CN 101432710A
- Authority
- CN
- China
- Prior art keywords
- register
- processor
- data
- word
- mapping
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000011068 loading method Methods 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 claims description 35
- 230000005055 memory storage Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 18
- 230000008707 rearrangement Effects 0.000 claims description 11
- 230000003760 hair shine Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 5
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101001039157 Homo sapiens Leucine-rich repeat-containing protein 25 Proteins 0.000 description 1
- 102100040695 Leucine-rich repeat-containing protein 25 Human genes 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/768—Data position reversal, e.g. bit reversal, byte swapping
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/766—Generation of all possible permutations
Abstract
适应处理器以处理大量不同的数据格式,包括从第一存储装置载入第一格式的数据字;在它到达运算单元之前,将第一格式的数据字重新排序为与运算单元的自然顺序相容的第二格式;以及向量处理运算单元中的数据字。
Description
技术领域
本发明涉及一种在存储装置和运算单元之间实现的可置换地址模式处理器及方法。
背景技术
早先的计算机或处理器仅仅具有一个计算单元,因此,例如在一个像素具有八位(字节)时每次进行一个像素的图像处理。随着图像尺寸的不断增长,出现了对于高性能高密度流水线的向量处理处理器的需要。向量处理器是可以在一个指令中在整个向量上操作的处理器。单指令多数据(SIMD)是面向向量的处理的另一形式,面向向量的处理可以在像素级应用并行。该方法适合于不依赖于前一操作结果的图像操作。由于SIMD处理器可以在不同的数据组上并行解决类似的问题,因此它可以被表征为比单个计算单元处理器快n倍,这里n是SIMD中的计算单元的数目。对于SIMD操作,存储器读取必须每个周期将数据给到每个计算单元或利用n速度的优点。典型地,例如,在32位(四个字节)机器中,在来自存储器的两条总线上载入数据到两个32位(四个字节)寄存器中的行中,该字节处于四个相邻的列中,每个字节具有与其相关的计算单元。然后,在一个周期中,单个指令可以指示所有计算单元以其自然(native)模式对寄存器字节中的数据逐字节地执行相同的操作,并在存储器中存储该32位结果。在2D图像处理应用中,例如,其对于垂直边缘过滤具有很好的效果。但是对于在列中存储数据的水平边缘过滤来说,在可以开始操作之前,必须加载所有的寄存器,以及在完成之后,不得不每次一个字节地存储结果。这是费时且低效的,以及随着计算单元数码的增加而变得更加严重。
在适应“小字节序”(little endian)和“大字节序”(big endian)数据类型时,SIMD或向量处理机器也遇到问题。“小字节序”和“大字节序”涉及的是多字节类型中哪些字节是最高有效位,并描述在处理器存储器中存储字节序列的顺序。在小字节序的系统中,在最低的存储器地址(第一),存储该序列中的最低有效字节。“大字节序”相反:它在最低存储器地址存储中存储该序列中的最有效字节。当前,系统对从用户界面到操作系统到加密到低层信号处理的所有层级提供服务。这些导致“混合字节序”应用,因为通常较高层级的用户界面和操作系统使用“小字节序”,而信号处理和加密使用“大字节序”。因此在处理数据之前,程序员必须提供指令以从一种变换为另一种,或配置该处理,以利用它给出的数据形式来工作。
SIMD操作中遇到的另一问题是,该数据为了算法中的下一个步骤而实际上已被扩展或调换或置换。在该数据处于由算法中的下一步骤调用的格式之前,这需要单独的步骤,涉及到流水线停滞。
发明内容
因此,本发明的目的是提供一种具有可置换地址模式的改进的处理器和方法。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,其提高诸如SIMD的面向向量的处理器的效率。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,在运算单元之外在地址模式中实现置换,由此避免管线停滞。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,其可以统一数据表现(presentation),由此统一问题的解决方案,减小编程工作和投放市场的时间。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,可以统一数据表现,由此统一问题的解决方案,利用更多算术单元和更快的存储结果。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,可以在负载上置换该数据,以其自然的形式有效地利用算术单元,并随后在存储时置换回其初始形式,使得负载、解决方案和存储操作更快和更有效。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,容易适合于混合字节序模式。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,能够快速、容易和有效地重新排序计算操作之间的数据。
本发明的再一目的是提供具有可置换地址模式的这种改进的处理器和方法,为了快速、容易的处理,能够使任意形式的数据重新排序为机器的自然域(domain)形式,然后如果希望,重新排序回其初始形式。
本发明源于如下认识,通过从存储装置加载数据字,并在它到达运算单元之前将它重新排序为与面向向量的运算单元的自然顺序相容的格式,以及对该运算单元中的数据字进行向量处理,处理器和方法可以处理大量不同的数据格式。参见美国专利号5,961,628,Nguyen等人的名称为LOAD AND STORE UNIT FOR A VECTORPROCESSOR,和VECTOR VS.SUPERSCALAR AND VLIWARCHITECTURES FOR EMBEDDED MULTIMEDLABENCHMARKS,作者Christoforos Kozyrakis和David Patterson,在the Proceedingsof the 35th International SymposiumonMicroarchitecture,Istanbul,Turkey,November 2002,11 pages,在此通过这些参考文献将其全部引入。
但是,在其他实施例中,该主题发明不必实现所有这些目的,以及由此权利要求不应该限于能实现这些目的的结构或方法。
本发明的特点在于具有可置换地址模式的处理器,包括具有寄存器堆的运算单元。互连寄存器堆与存储装置的至少一个加载总线和至少一个存储总线。以及至少一个总线中的置换电路,用于重新排序在该寄存器堆和存储装置之间传送的字的数据元。
在优选实施例中,该加载和存储总线可以包括置换电路。可以有两个加载总线,其每一个可以包括置换电路。该置换电路可以包括用于重新排序在该寄存器堆和存储装置之间传送的字的数据元和/或调换电路,用于重新排序在该寄存器堆和存储装置之间传送的字的数据元。该寄存器堆可以包括至少一个寄存器。该映射电路可以包括至少一个映射寄存器。该映射寄存器可以包括用于每个数据元的字段。该映射寄存器可以从运算单元加载。该映射寄存器可以用大字节序、小字节序映射缺省地加载。该数据元可以是字节。
本发明的特点使处理器适应于处理大量不同的数据格式的方法,包括从存储装置加载具有字的数据寄存器,在它到达运算单元数据寄存器堆之前将它重新排序为与面向向量的运算单元的自然顺序相容的第二格式,以及向量处理所述运算单元中的数据寄存器。
在优选实施例中,该向量处理的结果可以被存储在第二数据寄存器装置中。该存储结果可以被重新排序为第一格式。该第二存储装置和第一存储装置可以被包括在相同的存储器中。
附图说明
从优选实施例的以下描述和附图,所属领域的技术人员将想到其他目的、特点和优点,其中:
图1是根据本发明具有可置换地址模式的处理器的示意性框图;
图2是图1的处理器的更详细的视图;
图3是根据本发明的大字节序载入映射的示意图;
图4是根据本发明的小字节序载入映射的示意图;
图5是根据本发明的另一载入映射的示意图;
图6是根据本发明的存储映射的示意图;
图7是根据本发明的调换的示意图;
图8A-C图示了本发明对于图像边缘过滤的应用;
图9是根据本发明的映射电路的更详细示意图;
图10是根据本发明的调换电路的更详细示意图;以及
图11是根据本发明的方法的流程图。
具体实施方式
除了下面公开的优选实施例或实施例以外,本发明可以是其他实施例和能够用多种方式实施或进行。因此,应当理解,本发明不被在以下描述或图中所示的结构细节和部件布置所限制。如果在此仅仅描述了一个实施例,那么权利要求不仅限于那个实施例。此外,权利要求不应被限制性地解读,除非有清楚的和令人信服的证据表明某种排除、限制或放弃。
图1示出了根据本发明的处理器10,具有外部存储装置、存储器12。处理器10典型地包括以普通方式工作的运算单元14、数字数据地址发生器16和序列发生器18。数据地址发生器16是相对于存储器12的所有加载和存储的控制器,序列发生器18控制指令的顺序。具有存储总线20和一个或多个加载总线22和24,其将各种运算单元14和数据地址发生器16与外部储存器12互连。根据本发明,在一个或多个总线20、22和24中,布置了置换电路26a、b、c。
图2中,运算单元14典型地包括数据寄存器堆30和一个或多个计算单元32,该计算单元32可以包含,例如,乘法累加器电路36、运算逻辑单元38和移位器40,结果总线21为所有上述部件提供服务。与现有技术相同,数据地址发生器16包括指针寄存器42和数据地址发生器(DAG)寄存器44。序列发生器18包括指令译码电路48和序列发生器电路50。由置换电路26a例示的每个置换电路26a、26b和26c可以包括映射电路54a、b和调换电路56a、b中的一个或两个。如相对于映射电路54a说明的每个相关映射电路与一组寄存器57a相关联,寄存器57a包括缺省寄存器58a和附加映射寄存器,如映射A寄存器60a和映射B寄存器62a。每个映射寄存器包含用于大量不同的映射变换的指令。例如,缺省寄存器58a和58b可以被设为执行大字节序变换。大字节序变换是这样的变换,其中序列中的最低存储地址字节被载入寄存器的最高有效字节段中以及最高地址位置中的信息被载入该寄存器的最低有效字节位置。
例如,如图3所示,在存储器12中存储有两个数据字70和72,在字节的情况下,每个数据字具有被标识为0,1,2和3的四个字节数据元。在字70中,字节0,1,2和3分别包含值5,44,42和10,而在字72中,数据序列或字节0,1,2,3包含值66,67,68和69。在数据地址发生器44中有两个指针寄存器,指针寄存器74和76。指针寄存器74对字70进行寻址,而指针寄存器76对字72进行寻址。根据缺省寄存器58a中的指令,根据矩阵80,字70将被映射到数据寄存器78,或字70中的字节0将被映射至数据寄存器78的段0,字70的字节1将被映射到数据寄存器78的段1,字70的字节2将被映射至数据寄存器78的段2和字70的字节3将被映射至数据寄存器78的段3。以此方式,最低地址——具有值5的字节0,结束在数据寄存器78的最有效字节段和最高存储地址中,值10的第三字节结束在最低有效字节段——数据寄存器78的段3中。可以看出,利用相同的大字节序变换,矩阵82中应用的映射寄存器58b中的指令的应用将具有值66,67,68和69的字72的字节0,1,2和3分别移动到数据寄存器84中。亦即,具有值66的字72的零字节处于寄存器84的最高有效字节段以及,字72的最高地址字节3的值69处于数据寄存器84的最低有效字节段。
在图4中,利用缺省寄存器58a和58b中的默认指令,以类似方式完成小字节序变换。在该小字节序变换中,在矩阵80和矩阵82的最终布置中,最低存储地址字节结束在每个数据寄存器78和84的最低有效字节段。
图3和4分别图示的大字节序和小字节序映射是简单的,但是本发明的映射不局限于那些,用本发明可以完成任意方式的扩展或混合。例如,如图5所示,映射寄存器60a可以对逻辑矩阵80a进行编程,从而在最高有效字节段中放置字70的字节3,在接下来的两个段中放置字节1,在最低有效字节段中放置字节0,并忽略字节2。类似地,在字72中,映射寄存器60b可以使得字72的字节1被放入数据寄存器84的最高有效字节段中,字节0被放入下一段中,字节3被放入下一个段中以及字节2被放入最低有效字节段中。置换电路可被用于加载总线22和24中的一个或二者,以及也可以被用于存储总线。
在图6中,数据寄存器92可以将字90传递到存储器12,映射A或映射B寄存器58c或68c将提供映射矩阵94,该映射矩阵94仅仅简单地忽略数据寄存器92中的最高有效字节段和下一段的内容,并将数据寄存器92的最低有效字节段中的值放置在字90的字节位置0和3中,同时将寄存器92的段2的值放置在字90的字节位置1和2中。尽管从寄存器和部分存储器或存储装置发生映射,但是调换电路56a,56b和56c进行的调换实际上可以从存储装置或存储器到多个寄存器或从多个寄存器到存储装置。例如,在图7中,指针寄存器74和指针寄存器76对存储器12中的位置100和102进行寻址。存储器100中的字是四个字节例如A,B,C和D的32位字,同样,存储器102中的字是具有四个字节E、F、G和H的32位字。被标识为“高调换”101的调换获取存储器字节A、B、C、D,并将它们载入四个数据寄存器106,108,110和112的第一列104中。指针寄存器76从存储位置102获取四个字节E、F、G和H,并将它们放置在相同的四个数据寄存器106,108,110和112的下一列114中。DAG指针寄存器74和76接下来可以指向存储器12中的存储位置116和118,以在列120和122中分别放置它们的字节I、J、K、L以及M、N、O、P。在“低调换”模式103中,字节A、B、C、D将被放入列120中,字节E、F、G、H将被放入列122中,字节I、J、K、L将被放入列104中,和字节N、M、O、P将被放入列114中。
关于图8A、8B和8C,描述了表现出其显著通用性和益处的本发明的一个应用。在图8A中,示出了由十六个子块132组成的图像的宏块130。每个4×4子块包括十六个像素。例如,包含所示的像素值p0-p3的子块32a,包含四行像素134,136,138和140。为了去除边缘142的边缘效应,执行垂直与水平143过滤。由于每一行包含所有相同的数据,由此可以在用于高速处理的面向向量的机器中进行单指令多数据操作,因此垂直过滤足够容易。因此,分别通过四个不同的算术单元152,154,156和158,可以在每一列144,146,148,150上同时进行过滤算法。而当并行处理结束时,例如,在行140中,将出现全部结果,并且将在一个周期中被递交到下一操作寄存器或存储寄存器。通过机器以用于处理的自然顺序排列该数据的图8A中出现的另一个优点是,例如,一旦当两个DAG指针寄存器74和76加载行134和136时,算术单元152-158就可以工作。
相反,对于水平过滤,在图8B中,在算术单元168,170,172,174可以开始操作之前,所有四行160,162,164,166必须被加载。此外,当过滤操作结束时,与图8A中容易地读出行140中的像素p0的情况相反,由于列176中的输出p0处于四个不同的寄存器,它们必须被每次放入一个字节。为了做到这点,必须有附加的编程来处理该数据的非自然布局。通过使用置换电路,例如,调换电路26a或26b之一,如图8C所示,可以通过四个算术单元数据寄存器R0、R1、R2和R3的加载来调换行160,162,164,166中的像素数据,由此使得它目前与图8A的处理机器的自然域对准。现在,加载进行得更加迅速,运算单元可以更快的开始工作,以及结果可以每次输出整个字四个字节。
尽管在到目前为止的例子中,通过字节操作的方面解释本发明,但是这不是本发明的必需限制。其他更大的或更小的数据元可以被使用,以及典型地可以使用多个字节,在一种应用中,例如,两个字节或十六位可以是数据元。因此,利用该可置换地址模式,如SIMD的面向向量的处理的效率被大大提高。由于置换在运算单元之外在地址模式中发生,因此该置换是特别有效的。它们由此避免了流水线停滞并且没有干扰算术单元的操作。在加载或存储操作的地址模式过程中,在DAG 16和序列发生器18的控制下在运行中完成该转换或置换。本发明允许统一的数据表现,因此统一了问题解决方法。这不仅减轻了编程工作,而且缩短了新设备投放市场的时间。如刚刚说明的,处理器的自然域中的这些统一的数据表现也使算术单元的使用和存储变得更快。其容易适应于大字节序、小字节序或混合字节序的操作。能够将任意形式的数据重新排序为用于快速处理的机器的自然域形式,如果希望,那么其可以随后被重新排序回到其初始形式,或用于后续运算操作或在存储器中永久或临时存储使用的某些其他形式。
在图9中示出了映射电路54a、b、c的一种实施方式,MAPA/MAPB寄存器中的一个,例如60a,被编程。这里再一次,包括用于每个数据元的字段180,182,184和186,所述数据元例如是,典型地可从运算单元14加载的字节。映射寄存器60a驱动开关188,190,192,194。在操作中,具有寄存器204的四个部分196,198,200,202中的四个字节A、B、C和D的32位字被映射到寄存器204a,以便寄存器部分196a、198a、200a、202a分别接收字节C、D、A和B。这通过将每一字段180,182,184,186中的指令应用到开关188,190,192和194来完成。例如,用于字段180的指令是1告知开关188连接C,这使能寄存器204的部分200中的字节C的输入1;字段182提供0到开关190,这促使它从寄存器204的部分202传递字节D到寄存器204a的部分198a等。调换电路56a、b、c的一种实施方式可以包括简单的硬布线网络210,在图10中,其分别将寄存器212中的字节A、B、C、D的行连接到寄存器222,224,226和228的第一部分214,216,218和220。来自寄存器228的E、F、G和H同样通过网络210硬布线连接。
在图11中示出了根据本发明的方法。开始,240,为向量处理242加载并重新排序数据,然后对该数据进行向量处理244,随后该数据被重新排序用于存储246。该数据可以以任意格式进入并将会被重新格式化为向量处理机器的自然域。在例如SIMD处理的向量处理之后,如果是其希望的格式或它可以被再次重新排序为初始格式或某些其他格式,那么该数据可以被原样存储。其可以被存储在初始存储器中或其它存储装置中,如对于后续处理将很快被使用的运算单元中的寄存器堆。
尽管在某些图中示出了和在其它部分没有示出本发明的具体特点,但是这些仅仅是为了方便起见,根据本发明,每一特征可以与任意或所有其他特点相结合。在此使用的单词“including”、“comprising”、“having”和“with”将被广泛地和全面地理解,以及并不局限于任意物理关联。此外,在该主题应用中公开的任意实施例不被认为是仅仅可能的实施例。
此外,在本专利的专利申请的法律程序中出现的任何修改不是提出的该申请中任意权利要求元素的放弃:所属领域的技术人员不能合理地期望草拟一个将字面上包含所有可能等价的权利要求,在该修改的时候,许多等效权利将不可预见,并超出所放弃权利的公平解释(如果有的话),在该改正下的基本原理可以不超过与许多等效权利相关的关系,和/或有许多其他原因,本申请人不能预期描述用于修改的任意权利要求元素的某些无实质替代。
在以下权利要求范围内所属领域的技术人员将容易想到其他实施例。
Claims (16)
1、一种具有可置换地址模式的处理器,包括:
包括寄存器堆的运算单元;
互连所述寄存器堆与存储装置的至少一条加载总线和至少一条存储总线;以及
至少一条所述总线中的置换电路,用于重新排序在所述寄存器堆和存储装置之间传送的字的数据元。
2.如权利要求1的处理器,其中每个所述加载和存储总线包括所述置换电路。
3.如权利要求1的处理器,其中存在两条加载总线,以及其每一个都包括置换电路。
4.如权利要求1的处理器,其中所述置换电路包括映射电路,用于重新排序在所述寄存器堆和存储装置之间传送的字的数据元。
5.如权利要求1的处理器,其中所述置换电路包括调换电路,所述调换电路用于重新排序在所述寄存器堆和存储装置之间传送的字的数据元。
6.如权利要求4的处理器,其中所述寄存器单元包括至少一个寄存器。
7.如权利要求5的处理器,其中所述寄存器堆包括至少一个寄存器。
8.如权利要求4的处理器,其中所述映射电路包括至少一个映射寄存器。
9.如权利要求8的处理器,其中所述映射寄存器包括用于每个数据元的字段。
10.如权利要求8的处理器,其中能够从所述运算单元加载所述映射寄存器。
11.如权利要求8的处理器,其中至少一个所述映射寄存器是用大字节序小字节序映射缺省加载的。
12.如权利要求1的处理器,其中所述数据元是字节。
13.一种使处理器适于处理多种不同数据格式的方法,包括:
用来自存储装置的字加载数据寄存器;
在该字到达运算单元数据寄存器堆之前,将该字重新排序为与面向向量的运算单元的自然顺序相容的第二格式;以及
向量处理所述运算单元中的数据寄存器字。
14.如权利要求13的方法,在第二数据寄存器装置中存储该向量处理的结果。
15.如权利要求13的方法,其中该存储结果可以被重新排序为所述第一格式。
16.如权利要求13的方法,其中所述第二存储装置和所述第一存储装置被包括在相同的存储器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/368,879 US20070226469A1 (en) | 2006-03-06 | 2006-03-06 | Permutable address processor and method |
US11/368,879 | 2006-03-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101432710A true CN101432710A (zh) | 2009-05-13 |
Family
ID=38475418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800156287A Pending CN101432710A (zh) | 2006-03-06 | 2007-03-01 | 改进的可置换地址的处理器及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070226469A1 (zh) |
EP (1) | EP1999607A4 (zh) |
JP (1) | JP2009529188A (zh) |
CN (1) | CN101432710A (zh) |
TW (1) | TW200821917A (zh) |
WO (1) | WO2007103195A2 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200739363A (en) * | 2006-04-04 | 2007-10-16 | Nat Univ Chung Cheng | Flexible load and storage device for multimedia applications |
JP5633122B2 (ja) * | 2009-06-16 | 2014-12-03 | 富士通セミコンダクター株式会社 | プロセッサ及び情報処理システム |
US8868885B2 (en) * | 2010-11-18 | 2014-10-21 | Ceva D.S.P. Ltd. | On-the-fly permutation of vector elements for executing successive elemental instructions |
KR101918464B1 (ko) | 2011-09-14 | 2018-11-15 | 삼성전자 주식회사 | 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치 |
US20160306566A1 (en) * | 2013-12-26 | 2016-10-20 | Shih-Lien L. Lu | Data reorder during memory access |
JP6253514B2 (ja) | 2014-05-27 | 2017-12-27 | ルネサスエレクトロニクス株式会社 | プロセッサ |
US10671387B2 (en) * | 2014-06-10 | 2020-06-02 | International Business Machines Corporation | Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
JP2017199045A (ja) * | 2014-09-02 | 2017-11-02 | パナソニックIpマネジメント株式会社 | プロセッサ及びデータ並び替え方法 |
US10169014B2 (en) * | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9594668B1 (en) | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
US20170123792A1 (en) * | 2015-11-03 | 2017-05-04 | Imagination Technologies Limited | Processors Supporting Endian Agnostic SIMD Instructions and Methods |
CN105426160B (zh) * | 2015-11-10 | 2018-02-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US20170185413A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Processing devices to perform a conjugate permute instruction |
US10459700B2 (en) | 2016-03-14 | 2019-10-29 | International Business Machines Corporation | Independent vector element order and memory byte order controls |
US10101997B2 (en) | 2016-03-14 | 2018-10-16 | International Business Machines Corporation | Independent vector element order and memory byte order controls |
JP2018132901A (ja) * | 2017-02-14 | 2018-08-23 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US20190272175A1 (en) * | 2018-03-01 | 2019-09-05 | Qualcomm Incorporated | Single pack & unpack network and method for variable bit width data formats for computational machines |
TWI810262B (zh) * | 2019-03-22 | 2023-08-01 | 美商高通公司 | 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5975365A (ja) * | 1982-10-22 | 1984-04-28 | Hitachi Ltd | ベクトル処理装置 |
JP2633331B2 (ja) * | 1988-10-24 | 1997-07-23 | 三菱電機株式会社 | マイクロプロセッサ |
GB9402470D0 (en) * | 1994-02-09 | 1994-03-30 | Texas Instruments Ltd | Improvements in or relating to mask generation |
US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
GB9509988D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Matrix transposition |
US6381690B1 (en) * | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
US5819117A (en) * | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
US5815421A (en) * | 1995-12-18 | 1998-09-29 | Intel Corporation | Method for transposing a two-dimensional array |
WO1997044739A1 (en) * | 1996-05-23 | 1997-11-27 | Advanced Micro Devices, Inc. | Apparatus for converting data between different endian formats and system and method employing same |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US5961628A (en) * | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
KR100283412B1 (ko) * | 1998-12-15 | 2001-03-02 | 김영환 | 프레임버퍼의 인터페이스 제어장치 |
US6725369B1 (en) * | 2000-04-28 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Circuit for allowing data return in dual-data formats |
US6804771B1 (en) * | 2000-07-25 | 2004-10-12 | University Of Washington | Processor with register file accessible by row column to achieve data array transposition |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US20030221089A1 (en) * | 2002-05-23 | 2003-11-27 | Sun Microsystems, Inc. | Microprocessor data manipulation matrix module |
US20050097127A1 (en) * | 2003-10-30 | 2005-05-05 | Microsoft Corporation | Reordering data between a first predefined order and a second predefined order with secondary hardware |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
KR100574973B1 (ko) * | 2004-02-20 | 2006-05-02 | 삼성전자주식회사 | 서로 다른 엔디안 포멧들사이에서 데이터를 변환하기 위한장치와 방법, 그리고 상기 장치를 구비하는 시스템 |
US20070011442A1 (en) * | 2005-07-06 | 2007-01-11 | Via Technologies, Inc. | Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment |
-
2006
- 2006-03-06 US US11/368,879 patent/US20070226469A1/en not_active Abandoned
-
2007
- 2007-03-01 WO PCT/US2007/005412 patent/WO2007103195A2/en active Application Filing
- 2007-03-01 EP EP07752132A patent/EP1999607A4/en not_active Withdrawn
- 2007-03-01 CN CNA2007800156287A patent/CN101432710A/zh active Pending
- 2007-03-01 JP JP2008558318A patent/JP2009529188A/ja active Pending
- 2007-03-06 TW TW096107728A patent/TW200821917A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20070226469A1 (en) | 2007-09-27 |
TW200821917A (en) | 2008-05-16 |
WO2007103195A2 (en) | 2007-09-13 |
WO2007103195A3 (en) | 2008-04-17 |
JP2009529188A (ja) | 2009-08-13 |
EP1999607A2 (en) | 2008-12-10 |
EP1999607A4 (en) | 2009-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101432710A (zh) | 改进的可置换地址的处理器及方法 | |
US11687341B2 (en) | Multi-variate strided read operations for accessing matrix operands | |
CN1914592B (zh) | 执行具有单元大小控制的紧缩数据操作的方法和设备 | |
CN204945992U (zh) | 一种处理器 | |
WO2013054468A1 (ja) | 転置演算装置とその集積回路、および転置処理方法 | |
JPH087083A (ja) | 算術及び論理混合組合せを形成する3入力算術論理装置 | |
JPH07271969A (ja) | レジスタ対から条件付きでメモリへ記憶させる装置 | |
CN104838357A (zh) | 瓦解的多嵌套循环的向量化 | |
JPH087084A (ja) | 第1、第2及び第3の入力の第1のブール組合せプラス第1、第2及び第3の入力の第2のブール組合せの和を形成する3入力算術論理装置 | |
JPH07287567A (ja) | 複数の独立区分と各区分からの結果を記憶するレジスタとを有する算術論理装置 | |
CN101401064B (zh) | 用于单向旋转器的基于寄存器的移位的装置和方法 | |
US7162617B2 (en) | Data processor with changeable architecture | |
CN110968348A (zh) | 用于执行将矩阵变换为行交错格式的指令的系统和方法 | |
JPH086544A (ja) | 直交データ変換用回転レジスタ | |
CN100437547C (zh) | 具有级联simd结构的数字信号处理器及其信号处理方法 | |
US20220206796A1 (en) | Multi-functional execution lane for image processor | |
CN107003986A (zh) | 用于利用索引和立即数实行向量重组的方法和装置 | |
TW201741868A (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
CN110058886A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
JPS6049332B2 (ja) | マイクロプログラム制御方式 | |
CN108509219A (zh) | 去交织跨距数据元素处理器、方法、系统和指令 | |
JP7213095B2 (ja) | ベクトルレジスタのアクセス | |
CN107077333A (zh) | 用于实行向量位聚集的方法和装置 | |
Hansson et al. | Case study of efficient parallel memory access programming for the embedded heterogeneous multicore DSP architecture ePUMA | |
JP2005267362A (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090513 |