CN101208658A - 数据访问和置换单元 - Google Patents

数据访问和置换单元 Download PDF

Info

Publication number
CN101208658A
CN101208658A CNA2006800112405A CN200680011240A CN101208658A CN 101208658 A CN101208658 A CN 101208658A CN A2006800112405 A CNA2006800112405 A CN A2006800112405A CN 200680011240 A CN200680011240 A CN 200680011240A CN 101208658 A CN101208658 A CN 101208658A
Authority
CN
China
Prior art keywords
data processing
processing unit
permutation
data
circuit
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
CNA2006800112405A
Other languages
English (en)
Inventor
S·诺尔斯
S·菲利克斯
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.)
Icera LLC
Original Assignee
Icera LLC
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 Icera LLC filed Critical Icera LLC
Publication of CN101208658A publication Critical patent/CN101208658A/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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

按照本发明的实施例,公开了数据处理单元、操作数据处理单元的方法、计算机程序产品和指令。在按照本发明的一个实施例中,提供了用于计算机处理器的数据处理单元,数据处理单元包括深度寄存器访问机制,它能够对所访问的计算机处理器的寄存器文件中至少一个数据运算对象执行置换运算,置换运算是与(i)用于数据运算对象的寄存器访问和(ii)对运算对象执行数据处理运算串行地执行的。

Description

数据访问和置换单元
技术领域
本发明涉及用于计算机处理器的数据处理单元、操作该数据处理单元的方法、利用用于计算机处理器的指令组的计算机程序产品、和指令。
背景
数字信号处理应用代码典型地通常把数据向量与系数向量组合在一起来对向量执行算术处理。一个普通的例子是卷积处理,但其它向量处理也共享类似的特性。数据与系数向量的大小是变化的,并且常常是相当长的,所以,由机器严格完成向量功能通常是不实际的。已经发现,代之以由机器直接对较小的向量块进行运算的方法是实际的。
在一个已知的方法中,单指令多数据(SIMD)技术把被包含在指令中的单个运算施加到一个或多个短数据向量的每个元素上。SIMD机器的寄存器被设计成保持这样的短的数据向量;例如,64比特寄存器可以包含四个16比特数据单元,它们形成短向量或较长向量的一部分。SIMD技术通过提高处理器的每个周期的运算,成为提高数字信号处理器性能的有效的方式。
所以,数字信号处理程序典型地使用短向量SIMD机器来执行长向量运算。为了做到这一点,程序结构常常必须把算术运算与向量置换运算相交织。例如,为了从算法中较长的向量收集元素以作为运算对象而提供到机器的短向量数据通道;或为了把来自短向量运算的最终得到的元素分配到长向量结果中的不同的位置,向量置换可能是必须的。
概要
按照本发明的一方面,提供了用于计算机处理器的数据处理单元,该数据处理单元包括寄存器访问装置,它能够响应于数据访问指令对从计算机处理器的寄存器文件中所访问的至少一个数据运算对象执行置换运算,置换运算与用于数据运算对象的寄存器访问和对数据运算对象执行数据处理操作串行地执行。
优选地,数据处理单元能够对单个向量寄存器运算对象执行置换运算。优选地,它还能够对多个向量寄存器运算对象执行组合置换运算。更优选地,对所述多个向量寄存器运算对象的组合置换运算可以与对单个向量寄存器运算对象的置换运算同时发生。在优选实施例中,数据处理单元因此能够对第一和第二运算对象或运算对象组执行不同的置换运算。寄存器访问装置优选地能够根据被发布到计算机处理器的单个程序指令执行与寄存器访问串行的置换运算。在优选实施例中,数据处理单元能够对单个数据处理指令的数据运算对象执行多个接连的运算。
在所公开的实施例中,置换运算在数据处理运算之前执行。然而,本领域技术人员将会看到,按照本发明的数据处理单元可以代之以在数据处理运算执行之后执行置换运算。在某些实施例中,硬件提供第一置换运算,它在执行数据处理运算之前执行,以及提供第二置换运算,它在执行数据处理运算之后执行。
优选地,置换运算的类型是根据数据处理指令的运算码部分从多个置换运算类型中选择的。所执行的数据处理运算可以从一个或多个算术运算、逻辑运算、随后的置换运算、和处理器存储器读出或写入操作中进行选择。
在所公开的实施例中,寄存器访问装置包括寄存器文件读出级和纵横复接器级(这里也称为纵横开关级)。在这种情形下,寄存器访问装置包括一组纵横控制输入,用于确定从多种置换运算的类型中选择的置换运算的类型。多种置换运算的类型可包括滚动置换、分类置换、改组(shuffle)置换、广播(broadcast)置换、选择置换、和另一种类型的置换。置换运算的类型可以根据指令的运算码部分从多种置换运算类型中进行选择。即,在指令中的置换运算码由译码器进行译码,译码器把一组控制输入提供到寄存器访问装置的相关的输入端。
在某些实施例中,执行通道包括SIMD(单指令多数据)电路。
寄存器访问装置典型地能够对第一对源运算对象执行第一种类型的置换运算,和对至少一个第二源运算对象执行第二种类型的置换运算。在优选实施例中,执行单元能够实施单指令多数据执行。例如,第一种类型的置换运算可包括来自包含滚动置换、分类置换、和改组置换的组中的置换,第二种类型的置换运算可包括广播置换,而第一和第二种置换运算的结果都被提供到SMID执行通道。
优选实施例在以下方面找到具体的应用,即需要数据处理单元执行来自一个包含快速傅利叶变换、Viterbi编码、Turbo编码、有限冲击响应滤波器算法或另一种通信算法的组的算法的至少一部分。
虽然不打算作为限制,但公开的实施例的第一和第二种类型的置换运算包括具有一个或两个64比特数据寄存器源变元的运算。例如第一种类型的置换运算允许滚动运算,以便从两个64比特源数值形成单个64比特结果,该64比特结果相应于向左滚动整数个16比特半字段的源数值。在另一个例子中,第一种类型的置换运算允许分类运算,以便从两个64比特源数值形成单个64比特结果,该64比特结果是可被选择作为分类结果的最高位或最低位64比特。第二种类型的置换运算可以允许广播运算,该运算能够在64比特结果中在四个16比特的通路(lane)上重复所选择的16比特的半个字。
按照本发明的另一方面,提供了用于对计算机处理器数据处理单元进行操作的方法,该方法包括响应于数据访问指令对由计算机处理器的寄存器文件所访问的多个数据运算对象中至少一个数据运算对象执行置换运算,置换运算与(i)访问寄存器以得到数据运算对象和(ii)对数据运算对象执行数据处理运算串行地执行。
按照本发明的另一方面,提供了计算机程序产品,它包括程序代码装置,后者包括指令序列,其中该计算机程序产品适合于在计算机上运行,以使得可执行单个数据访问指令,从而使得对于所访问的至少一个数据运算对象,执行由数据访问指令的至少一个部分所确定的那种类型的置换运算,该置换运算与(i)访问寄存器以得到数据运算对象和(ii)对于数据运算对象执行数据处理运算是串行地执行的。
按照本发明的另一方面,提供了一种方法,包括响应于单个指令而执行串行化的寄存器访问、向量置换和数据处理运算的执行。
按照本发明的另一方面,提供了计算机处理器,包括,以串行连接方式的寄存器访问单元、向量置换能力、和至少一个执行通道,该设备还包括译码单元,用来响应单个指令以控制访问至少一个向量运算对象,有选择地置换至少一个向量运算对象,以及执行至少一个另外的运算。
按照本发明的另一方面,提供了指令,其中包括:数据访问运算码部分,它规定一种类型的数据访问;置换运算码部分,它规定一种类型的置换运算;执行运算码部分,它规定另一个运算;以及至少一个数据运算对象源指定。
按照本发明的另一方面,提供了用于计算机的数据处理单元,它包括:寄存器文件;寄存器访问与置换装置,它能够根据数据访问指令访问在所述寄存器文件中的至少一个数据运算对象,所述寄存器访问与置换装置包括置换电路,用来根据所述指令的置换运算码部分而选择地置换所述所访问的数据运算对象;以及数据执行通道,它被安排成与所述寄存器访问与置换装置串联,所述数据执行通道用来根据所述指令的执行运算码部分以便对所述选择地置换的数据运算对象执行运算。
在优选实施例中,所述寄存器访问与置换装置包括被连接在所述寄存器文件与所述执行通道之间的译码器寄存器文件读出(和写入)级。优选地,所述寄存器访问与置换装置包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的至少一个复接器级。典型地,所述寄存器访问与置换装置还包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的列复接器级。更优选地,所述寄存器访问与置换装置还包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的纵横复接器级。在优选实施例中,纵横复接器级被连接在所述列复接器级与所述执行通道之间。
按照本发明的另一方面,置换控制输入被提供到一个或多个所述译码器寄存器文件读出级、所述复接器级、所述列复接器级、和所述纵横复接器级。
按照本发明的另一方面,旁路电路被连接在所述执行通路的输出端与所述寄存器访问与置换装置的输入端之间。
在具体的优选实施例中,数据处理单元包括第一和第二寄存器访问与置换装置。第一寄存器访问与置换装置可被安排成访问第一和第二运算对象和执行从一个或多个滚动、分类和改组中选择的置换。第二寄存器访问与置换装置可被安排成访问至少一个另外的运算对象和执行广播置换。
在以上的实施例中,第一和第二寄存器访问与置换装置每个包括以下的一个或多个级:(i)连接在所述寄存器文件与所述执行通道之间的译码器寄存器文件读出级;以及(ii)连接在所述译码器寄存器文件读出级与所述执行通道之间的至少一个复接器级。优选地,复接器级包括以下的一个或多个级:(i)连接在所述译码器寄存器文件读出级与执行通道之间的列复接器级;以及(ii)连接在所述列复接器级与所述执行通道之间的纵横复接器级。
本发明的另一方面提供数据访问和置换电路,它能够响应单个指令而访问和选择地置换数据运算对象并把所述选择地置换的运算对象提供到SIMD执行通道。
本发明的附加优点和新颖的特性,部分地将在接着的说明中阐述,和部分地对于本领域技术人员在阅读下面的说明和附图后将变得很明白;或通过本发明的实践而学到。
附图简述
为了更好地了解本发明,和为了显示本发明可以如何付诸实践,现在将参考仅仅作为例子的附图,图上:
图1显示包括置换单元的现有技术设备的基本结构;
图2显示按照本发明的实施例成行置换的寄存器访问的基本体系结构;
图3A到3C显示按照本发明的实施例可用于执行可以“成行”执行的、所谓的“滚动”或“滑动窗口”置换的示例性操作;
图4A和4B显示按照本发明的实施例可用于“成行”执行广播置换的示例性操作;
图5到8显示按照本发明的实施例可以“成行”执行的示例性的所谓的“改组”或“交织”的操作;
图9到11显示按照本发明的实施例可以“成行”执行的示例性的所谓的“分类”或“去交织”的操作;
图12A-12C和13显示按照本发明的实施例支持图5A到8的改组操作的子寄存器访问模式子组;
图14显示按照本发明的实施例支持图9A到11的分类操作的子寄存器访问模式和其它类似的模式。
图15显示按照本发明的实施例其中可以使用成行置换的计算机系统的结构性框图;
图16显示按照本发明的实施例能够成行置换的处理器数据通道的框图;
图17和18显示按照本发明的实施例用于实施图16的寄存器访问功能的示例性硬件;
图19是显示按照本发明的实施例实现各种类型的置换的图17上可能的复接器控制输入的表;以及
图20显示可以按照本发明的实施例使用的通用指令格式。
详细说明
在按照本发明的实施例中,SIMD处理器通过使用由单个指令驱动的两级数据通道,在寄存器访问期间以算术运算来顺序执行某些类型的向量置换。这种类型的操作在这里被称为“成行(in line)”操作。因此处理器消除了或减小了对于被包括在程序中与SIMD存储器访问、逻辑、和算术指令并列的明显置换指令的需要。相反,每个指令可以规定SIMD操作和要在SIMD操作之前所施加的相关运算对象的置换(如果需要的话)。所以,程序的大小被减小,而设备性能提高。
与按照本发明的实施例中SIMD处理器在寄存器访问期间以算术运算执行成行置换相对比,现有技术的SIMD处理器需要被包括在程序中的与相关的算术运算并列的明显置换指令。现有技术SIMD处理器的基体体系结构与按照本发明的实施例之间的对比可以从图1和2看到。图1显示现有技术SIMD处理器的基本体系结构,其中来自寄存器文件101的数据由互相并行地排列的置换单元102或执行单元103使用。正如可以看到的,由置换单元102置换的数据在它以后可被执行单元103作为运算对象使用之前,必须沿通道104被反馈到寄存器文件。相反,图2显示按照本发明的实施例的体系结构,其中来自寄存器文件201的运算对象被传送通过被置换单元202,然后置换单元202把所置换的运算对象直接馈送到执行单元203。在本发明的实施例中,在把所置换的运算对象提供到执行单元之前,不需要把所置换的运算对象送回到寄存器文件。图1的现有技术处理器的并行体系结构102-103因此由图2的实施例的串行体系结构202-203替代,正如在下面看到的,该串行体系结构可以通过使用图16-18的硬件实施。按照本发明的实施例的串行体系结构具有许多性能优点,特别是对信号处理算法,这种算法使用数据运算对象的经常的置换,以便把机器硬件的短向量宽度与在处理器存储器或寄存器文件中较长的向量宽度匹配。在流水线处理器中,可能有由于置换与SIMD执行的串行化造成的附加滞后的代价,但信号处理程序可被组织成使得这种附加滞后不会抵消本发明的实施例的性能优点。寄存器访问、向量置换和执行(尤其是SIMD执行)的串行化在这里有时被称为“深度寄存器访问”。
在按照本发明的实施例中,成行向量置换可被施加到可以是数据处理指令的指令的一个或多个运算对象。在使用具有两个源运算对象和一个结果运算对象的指令的SIMD设备中,把某些类型的置换加到一个源运算对象而把不同类型的置换加到另一个源运算对象是特别有利的。
按照本发明的实施例,发现有三类顺序置换对数字信号处理是特别有用的:广播、滚动和分类。第四类置换,被称为改组置换,可以经常用作为分类的替代(要对发布的算法或它的数据作某些重新安排),但最终比起分类置换还是不太有利的:因为它需要更灵活的寄存器文件访问能力。无论如何,改组这种类型有时可以在本发明的实施例中找到应用。
在第一类顺序置换中,按照本发明的实施例提供成行的广播置换。这个实施例对于执行诸如有限冲击响应(FIR)滤波器那样的卷积处理是特别有用,它典型地把单个系数单元与长数据向量的每个单元相组合。为了有效地使用机器的短向量(例如,SIMD)寄存器,每个寄存器装入了几个这样的系数单元。所以,广播置换的目的是从短向量寄存器运算对象中提取单个元素,并把它复制到被传送到SIMD执行单元的短向量的所有元素中。
在第二类顺序置换中,按照本发明的实施例提供成行的滚动置换。这个实施例对于执行诸如某些FIR滤波器那样的“滑动窗口”算法是特别有用的。在这样的滤波器中,两个长向量按元素被成对组合;然后一个向量移动一个元素的位置,并重复进行按元素成对的运算;然后,向量再次被移位,并重复进行按元素成对的运算;依此类推。在常规的设备中,当系数的数目很大和要被滤波的数据向量很大时,系数和数据向量必须存放在处理器的外部存储器中,而不是在寄存器中。对于SIMD设备,这样的“滑动窗口”算法通常是指处理器能够按任意向量元素对准(“非对准”访问)从存储器装载短向量,例如,按16比特对准的64比特字。在传统的设备中,这意味着,随着滑动窗口移过短向量的宽度,每个元素必须从外部存储器被装载多次(例如,对于64比特字以16比特对准四次)。因为外部存储器装载数量很大,所以,在功率和存储器带宽方面常规的技术是昂贵的。而且,要设计能够进行非对准访问的存储器系统通常是更困难和昂贵的。
作为对比,按照本发明的实施例的滚动置换允许重复的和系统的非对准访问外部存储器被少得多的对准的存储器访问所替代。在滚动置换实施例中,短向量运算对象是从寄存器文件中两个相邻短向量的级联中提取的。所以,这种类型的置换运算需要读出两个相邻的寄存器值,然后施加置换,以便提取单个短向量,后者被传送到执行单元。例如,两个64比特寄存器值(每个包含4个元素向量,每个元素16比特)可以一起滚动,以便使用图3A-C所示的变换之一来形成64比特的单个4元素向量。代替重复处理外部存储器,这时处理器访问寄存器文件,它通常有更多的可用带宽,以及每次访问的功耗较低。而且,因为它不需要支持非对准访问,处理器存储器系统可以被简化。
在第三类顺序置换中,按照本发明的实施例提供成行的分类和或改组置换。在改组置换中,两个向量的元素被交织;而在分类置换中,偶数和奇数元素被分开(去交织)。这些类型的置换在快速傅利叶变换、Viterbi、和Turbo码算法、以及其它通用算法中找到应用。通常,编程员可以选择安排一种算法以便主要或全部使用分类而不用改组,或反之亦然。
在按照本发明的实施例的成行分类置换中,一个长向量的两个短向量段从两个相邻的寄存器读出,并应用分类运算以便把它们组合成一个短向量运算对象,以用于以后的SIMD算术运算。无论被分类的长向量的有效长度是多少,要被组合的两个短向量段总是可以方便地被安排在相邻的寄存器中。这个特性不会自然地适用于改组,正如通过比较图14与图12A-13而可以看到的。所以,改组通常需要读出两个非相邻的寄存器值(分开的程度取决于长向量的大小),使得分类更优于改组,如前所述。但是,它可以简化编程员的工作,使其能够使用改组和分类的自由混合,这样,访问非相邻的寄存器对的外加复杂性在本发明的某些实施例中可以被证明是正当的。
按照本发明的实施例,把数据寄存器作为源运算对象使用的数据处理指令使用成行置换运算(被称为深度寄存器访问运算),以便对当寄存器被读出时产生的数值执行选择的置换运算。在优选实施例中,专门的汇编语言语义被用来表示由深度寄存器访问执行的置换和表示它使用哪些寄存器。深度寄存器访问有两种形式,对被发送到执行单元的每个数据运算对象具有一种形式;第一种形式被表示为DRA0访问,以及第二种形式被表示为DRA1访问。每个数据寄存器源可被看作为由多个通路宽度元素组成的短向量,例如4行,每行16比特,包括一个64比特寄存器源。寄存器源及其组成单元都可被称为“运算对象”,这取决于上下文。在DRA0访问中,置换运算对于寄存器源的元素的改组和分类、以及多倍的元素(通路)宽度的元素滚动,都是可用的。改组和分类分别是指来自一个或两个寄存器源的通路宽度元素的交织与去交织。滚动是指来自两个寄存器源的级联的通路宽度元素的相邻的寄存器宽度组的选择。在DRA1访问中,对于把从选择的通路中挑选的元素广播到寄存器运算对象的所有的通路,置换运算是可用的。
表1详细列出按照本发明的实施例的DRA0运算的例子,它可被用于对第一数据寄存器源变元执行滚动和分类置换。在表1上,用于第一个64比特数值,Value0,的寄存器通路被标号为0,1,2,3,其中通路0表示Value0的最低位比特0到15,通路1表示比特16到31,通路2表示比特32到47,通路3表示比特48到63;而用于第二个64比特数值Value1的寄存器通路被标号为A,B,C,D,其中通路A表示Value1的最低位比特0到15,通路B表示比特16到31,通路C表示比特32到47,通路D表示比特48到63。所显示的置换组利用寄存器$di和$dj,其中i=0..63以及i=((i+1)%64)。表1的各列显示对于DRA0运算的汇编语义、意义、通路、和操作。
表1:DRA0运算
DRA0汇编语义 意义  运算
$Di:$Dj:ROLL_3H 滚动3行 C,B,A,3  Roll3Half(value0,value1)
$Di:$Dj:ROLL_2H 滚动2行 B,A,3,2  Roll2Half(value0,value1)
$Di:$Dj:ROLL_1H 滚动1行 A,3,2,1  Roll1Half(value0,value1)
$Di:$Dj:SORT_4MH 分类半数值的最高位字节 D,B,3,1  Sort4MHalf(value0,value1)
$Di:$Dj:SORT_4LH 分类半数值的最低位字节 C,A,2,0  Sort4LHalf(value0,value1)
图3A到3C显示按照本发明的实施例的表1的置换运算。如图3A到3C所示,表1上的Roll3Half,Roll2Half,和Roll1Half运算取两个64比特值,和形成相应于源数值(分别)向左滚动三个、两个、或一个16比特字段的单个64比特结果。术语半(或半个字)按惯例是指16比特值。在表1上的Sort4Mhalf和Sort4Lhalf运算把两个64比特值组合成一个64比特结果,从而(分别)产生最高位或最低位64比特结果。表1的分类置换以图9的方式用图形表示。
下面的表2详细列出按照本发明的实施例的DRA1运算的例子,它可被用于对于第二数据寄存器源变元执行广播置换。在表2上,用于64比特数值value的寄存器通路的标号为0,1,2,和3,其中通路0表示value的最低位比特0到15,通路1表示比特16到31,通路2表示比特32到47,通路3表示比特48到63。所显示的置换组利用寄存器$di,其中i=0...63。表2的各列显示对DRA1运算的汇编语义、意义、通路、和操作。
表2:DRA1运算
DRA1汇编语义 意义  行  运算
$Di:BCAST_3H 广播行3  3,3,3,3  BcastHalf(SelectHalf(value,3))
$Di:BCAST_2H 广播行2  2,2,2,2  BcastHalf(SelectHalf(value,2))
$Di:BCAST_1H 广播行1  1,1,1,1  BcastHalf(SelectHalf(value,1))
$Di:BCAST_0H 广播行0  0,0,0,0  BcastHalf(SelectHalf(value,0))
$Di:BCAST_1W 广播字1  3,2,3,2  BcastWord(SelectWord(value,1))
$Di:BCAST_0W 广播字0  1,0,1,0  BcastWord(SelectWord(value,0))
图4A和4B显示按照本发明的实施例的表2的置换运算。如图4A所示,在表2上的BCastHalf运算选择四个可能的16比特半字源数值中的一个数值,以及把它复制到结果中的四个16比特通路中。如图4B所示,在表2上的BCastWord运算选择两个可能的字源数值中的一个数值,以及把它复制成横跨结果中的两个32比特通路。
通过扩展表1和2的运算,图5A到11显示可以按照本发明的实施例执行的成行的改组和分类置换的例子。
图5A到8显示对被存储在64比特寄存器的阵列中的16比特元素的向量的改组,它可以按照本发明的实施例“成行”地执行。图5A显示用于对两个向量进行交织的改组,每个向量包含两个16比特元素;图5B和5C显示用于对两个向量进行交织的改组的替换的表示,每个向量包含四个16比特元素;图6A和6B显示用于对两个向量进行交织的改组的替换的表示,每个向量包含八个16比特元素;图7显示用于对两个向量进行交织的改组,每个向量包含十六个16比特元素;以及图8显示用于对两个向量进行交织的改组,每个向量包含三十二个16比特元素。
图9A到11显示对被存储在64比特寄存器的阵列中的16比特元素的向量的分类,它可以按照本发明的实施例“成行”地执行。图9A显示用于对两个向量进行去交织的分类,每个向量包含两个16比特元素;图9B和9C显示用于对两个向量进行去交织的分类的替换的表示,每个向量包含四个16比特元素;图10A和10B显示用于对两个向量进行去交织的分类的替换的表示,每个向量包含八个16比特元素;以及图11显示用于对两个向量进行去交织的分类,每个向量包含十六个16比特元素。
图12A-12C和13显示按照本发明的实施例的支持图5A到8的改组运算的子寄存器访问模式组。图12A显示用于改组具有两个16比特元素的向量的子寄存器访问模式,如图5A所示;图12B显示用于改组具有四个16比特元素的向量的子寄存器访问模式,如图5B和5C所示;图12C显示用于改组具有八个16比特元素的向量的子寄存器访问模式,如图6A和6B所示;以及图13显示用于改组具有十六个16比特元素的向量的子寄存器访问模式,如图7所示。在图12A到13的每个图上,需要访问在每个图的左半部分上表示的两个寄存器中的四个寄存器单元(即,图12A上的单元1218-1221,图12B上的单元1201-1204,图12C上的单元1210-1213,和图13上的单元1314-1317),或需要访问在每个图的右半部分上表示的、两个寄存器中的四个寄存器单元(即,图12A上的单元1222-1225,图12B上的单元1205-1208,图12C上的单元1226-1229,和图13上的单元1330-1333)。另外,在每个图上的箭头1209、1234和1335表示相对于阵列基元的对每个子寄存器访问模式的对准范围。
图14显示按照本发明的实施例的支持图9A到11的分类运算的子寄存器访问模式。对于图9A到11的所有的分类运算,只需要一种模式。只需要访问四个单元1401-1404,或访问四个单元1405-1408。因为源寄存器总是是相邻的,与一个跨越的寄存器对(诸如上面提到的改组所要求的)情形相比,相关性检验是更简单的,寄存器访问也是这样。
图15显示按照本发明的实施例的可以使用成行置换的计算机系统的体系结构性框图。取指令单元1502从指令存储器1501得到指令,并把它们传送到指令译码单元1503。指令译码单元1503译码指令的各个分量,包括与该或每个运算对象有关的位置信息,并据此提供控制输出。指令译码单元1503从指令中得到将要供该指令的操作使用的至少一个运算对象的地址;并且该地址被用来1508从寄存器文件1504得到相应的数据。指令译码单元1503还从指令中得到置换操作码,它可被用来1507确定由置换单元1505对于由同一个指令从寄存器文件1504得到的数据所执行的置换运算的性质。指令译码单元1503还从指令中得到一个执行操作码,它可被用来1509确定由SIMD执行单元1506对经由置换单元1505提供的向量运算对象的每个元素所执行的运算的性质。因此,数据访问的类型和位置、在访问的向量元素上置换的特性、和对置换过的向量的元素随后执行的SIMD运算的性质在单个指令中被规定。
图16显示按照本发明的实施例的其中可以使用成行的置换的、相应于图15上的寄存器文件1504、置换单元1505、和执行单元1506的组合的处理器数据通道1610的框图。在本实施例中,使用数据寄存器作为源运算对象的数据处理指令可使用深度寄存器访问设备1646A,B来对在寄存器被读出时产生的数值执行选择的置换运算。
在本例中,图16的实施例的处理器数据通道1610被形成流水线,以使得在由环路包围的每个通道上有至少一组流水线寄存器,该环路经由旁路复接器1647通过深度寄存器访问块1646A和1646B以及通过执行通路1626-1629从执行通路传送输出Z0-Z3。本领域技术人员将会看到,可以使用任何适当的流水线方案。
在图16的实施例的读出单元1632中,三个64比特短向量寄存器数值从数据寄存器文件1638被读出,并由按照指令中的置换操作码实施上述各种成行的置换运算的深度寄存器访问单元1646A和1646B来对其进行置换,以便形成两个64比特向量运算对象1639和1640。这两个被置换的向量运算对象接通路方式被传递到三个SIMD执行通路1626-1629,以用于按照在指令中的执行操作码进一步处理。按通路方式的结果Z0-Z3共同形成单个64比特结果向量,它经由写通道1641被返回而写入到寄存器文件1638,以及可以任选地被直接旁路到深度寄存器访问单元1646A和1646B,以用于立即执行随后的流水线操作。
按照本发明的实施例,将会看到可以对于图16的数据处理单元作出修改。例如,可以使用任何数目的SIMD执行通路1626-1629;这些通路可以对任何宽度的运算对象进行运算;而且置换单元可以对对象子组进行置换运算,而不一定需要置换所有的运算对象。另外,置换不一定必须是所显示的那些,而也可以是它们的组合;或这样的置换的选择和集合;或其它类型的置换。另外,置换运算可以由处在执行行1626-1629下面的单元执行。这样的“后执行”置换单元可以单独地使用或除了在数据执行(诸如借助深度寄存器访问装置1646)之前被执行的、至今描述的“预执行”置换以外被使用。在由“后执行”置换单元置换后,运算对象然后被写回到寄存器文件1638,或经由复接器1647被旁路。此外,用于成行置换单元的控制信息可以从所存储的“配置”数据中部分地或全部地得到,而不是从逐个周期地发布的指令中载送的信息得到。这样的配置信息可以在例如程序控制下被上载到处理器控制寄存器,以及然后可以在多个处理器周期内把静态“伪指令”提供到置换单元,直至新的配置被上载为止,或直至可以超过静态配置信息的特定指令被发布为止。
图17和18显示按照本发明的实施例的用于实施图16的深度寄存器访问功能1626A和1646B和用于读出图16的寄存器1638的示例性硬件。图17显示使用深度寄存器访问以便从数据寄存器文件1638获取示例性64比特向量SRC0的硬件;而图18显示使用深度寄存器访问以便从数据寄存器文件16468获取示例性64比特向量SRC1的硬件。在图17和18中,在1773,1774的Index0和在1875,1876的Index1,每个指向数据寄存器文件1638中的64比特向量。数据寄存器文件1638包含64个向量(在本例中),这样,Index0和Index1的每个包括6比特,其在图17和18上编号为0到5。图17和18的译码器1777和1878是简单的32行输出1行的译码器,而访问64个16比特的字是安排成成对的32行。译码器1777和1878是寄存器文件读出级1779,1880的一部分,它们后面是列复接器级1781,1882以及运算对象纵横开关级1783,1884,后者分别具有64或32根交叉线。图17的输入端1785提供深度寄存器访问的使能信号,这些访问使用对所访问数据向量的滚动和分类置换;附加的纵横控制输入端1787必须适当地设置,以便按照图19的表确定所使用的深度寄存器访问的类型。按照本发明的实施例,输入Xbar0_ctl3,Xbar0_ctl2,和Xbar0_ctl1,Xbar0_ctl0以及控制输入1785的数值确定深度寄存器访问是否为正常的访问,或深度寄存器访问是否涉及到诸如滚动或分类置换那样的置换。图18的输入端1886为使用对访问的数据向量的广播置换的深度寄存器访问提供使能信号,并为正常的寄存器访问(即,不用置换的访问)提供使能信号。图17和18的输出1788和1889分别是64比特向量SRC0和SRC1的4个通路。这些输出通常被表示为图16上的置换的输出1639和1640,其显示每个四元素向量的一个元素如何按通路方式提供到SIMD电路。
在图17的输入另外地显示一个单元1796,它只是一个5比特加法器,用来执行以32为模的算术运算并在溢出事件时能够返绕(Wrapping);以及显示一个被连接到列复接器级的控制输入逻辑级1799,该级支持对第一深度寄存器访问单元1646A中可得到的不同类型的置换运算进行选择。在所公开的实施例的功能方面在图17与18之间的这些和其它最小差别是本领域技术人员容易理解的。
按照本发明的实施例,由图17和18的硬件使用来控制要被使用的深度寄存器访问类型的输入的数值(诸如图19的Xbar0输入的数值,或用于控制图17和18的复接器的其它输入),可以由指令中预定位置处的代码值确定。即,在指令分组中预定的比特位置处的指定的比特可被使用来确定在指令中要被使用的深度寄存器访问的类型。因此,例如,图15的实施例的指令译码单元1503可以使用在指令的特定的字段中找到的或与其它指令信息相组合地被编码的置换运算码的值,来控制图17或18的纵横中的复接器选择。指定的比特的数值可被译码,并可能与被存储在处理器中的其它配置信息相组合,以便来确定图19的Xbar0输入的数值,从而确定该指令要使用深度寄存器访问的哪种形式,诸如要施加的分类、滚动、广播、或改组的类型。例如,图20显示可以按照本发明的实施例所使用的通用指令格式,不过将会看到,也可以使用其它的指令格式。指令2001包括字段2002,它包括规定执行操作的类型(例如,装载、存储、SIMD加法、SIMD乘法等)的比特;字段2003,它包括规定要施加的置换的类型(例如,分类、滚动、广播等)的比特;以及字段2004,规定源在寄存器文件中运算对象和结果的位置。
因此可以看到,图16到19的实施例显示在寄存器文件、置换单元、和执行单元之间的串行的、成行连接;这与图2的实施例上所显示的方式是类似的。具体地,参照图16到18,相应于图2的寄存器文件201的图16的数据寄存器文件读出1638,与相应于图2的置换单元202的深度寄存器访问装置1646A和1646B串行地放置;它又与一起相应于图2的执行单元203的SIMD执行行1626-1629串联。本领域技术人员将会看到,虽然以上描述了被认为是最好的模式以及执行本发明的其它适当的模式,但本发明不应当限于在优选实施例的说明中公开的具体的设备配置或方法。本领域技术人员将会看到,本发明具有宽广的应用范围,以及实施例允许在不背离本发明概念下的各种各样的修改。

Claims (68)

1.一种用于计算机处理器的数据处理单元,该数据处理单元包括:
寄存器访问电路,能够响应数据访问指令而访问一个或多个数据运算对象;
置换电路,能够响应所述数据访问指令而执行置换运算;以及
执行电路,
所述电路被安排成使得在使用时,置换运算与(i)寄存器访问和(ii)对该或每个所访问的运算对象执行数据处理运算是串行地执行的。
2.按照权利要求1的数据处理单元,其中所述电路能够访问单个向量寄存器运算对象和对所述单个向量寄存器运算对象执行置换运算。
3.按照权利要求1的数据处理单元,其中所述电路能够访问多个向量寄存器运算对象和对所述多个向量寄存器运算对象执行组合置换运算。
4.按照权利要求1的数据处理单元,其中所述电路能够对于第一和第二运算对象或运算对象组执行不同的置换运算。
5.按照权利要求1的数据处理单元,包括译码器,能够对来自单个程序指令的寄存器访问信息和置换信息进行译码。
6.按照权利要求5的数据处理单元,包括译码器,能够对来自所述单个程序指令的数据处理信息进行译码。
7.按照权利要求1的数据处理单元,其中所述电路可配置成对单个指令的数据运算对象执行多个相继的数据处理运算。
8.按照权利要求1的数据处理单元,其中所述置换电路可连接在所述寄存器访问电路与所述执行电路之间,以使得所访问的运算对象在提供到所述执行电路之前被提供到所述置换电路。
9.按照权利要求1的数据处理单元,其中所述执行电路可连接在所述寄存器访问电路与所述置换电路之间,以使得所访问的运算对象在传送通过所述执行电路之后被提供到所述置换电路。
10.按照权利要求1的数据处理单元,其中所述置换电路和所述执行电路是可连接的,以使得在使用时,第一置换运算在数据处理运算执行之前进行,和第二置换运算在数据处理运算执行之后进行。
11.按照权利要求1的数据处理单元,其中所述电路能够执行从以下的一个或多个运算中选择的数据处理运算:算术运算、逻辑运算、随后的置换运算、和处理器存储器读出或写入操作。
12.按照权利要求1的数据处理单元,其中寄存器访问电路包括寄存器文件读电路。
13.按照权利要求1的数据处理单元,其中寄存器访问电路包括寄存器文件写电路。
14.按照权利要求1的数据处理单元,其中寄存器访问电路包括一组控制输入,用于确定从多个访问操作中选择的访问操作的类型。
15.按照权利要求1的数据处理单元,其中所述置换电路包括一个或多个的(i)列复接器级和(ii)纵横复接器级。
16.按照权利要求1的数据处理单元,其中置换电路包括一组控制输入,用于确定从多种置换运算中选择的置换运算的类型。
17.按照权利要求1的数据处理单元,其中置换电路支持从一个或多个以下的置换中选择的置换运算类型:滚动置换、分类置换、改组置换、广播置换、选择置换、和另外的类型的置换。
18.按照权利要求1的数据处理单元,其中执行电路能够单指令多数据执行。
19.按照权利要求1的数据处理单元,其中置换电路能够对第一源运算对象对执行第一类型的置换运算和对第二源运算对象执行第二类型的置换运算。
20.按照权利要求19的数据处理单元,其中第一类型的置换运算包括来自包含滚动置换和分类置换的组的置换。
21.按照权利要求19的数据处理单元,其中第二类型的置换运算包括广播置换。
22.按照权利要求19的数据处理单元,其中用于对所述第一源运算对象对执行所述第一类型置换的所述置换电路的一部分可连接成接收第一和第二64比特源运算对象。
23.按照权利要求22的数据处理单元,其中所述置换电路的所述部分可连接成提供滚动的输出,包括从两个64比特源值得到的单个64比特结果,该64比特结果相应于源数值滚动了16比特的半字段的一个整数。
24.按照权利要求22的数据处理单元,其中用于执行所述第一类型的置换的所述置换电路的一部分可连接成提供分类输出,包括从两个64比特源数值得到的单个64比特结果,该64比特结果可选择成为分类的结果的最高位或最低位64比特。
25.按照权利要求19的数据处理单元,其中用于执行所述第二类型的置换的所述置换电路的一部分可连接成提供广播输出,该输出在64比特结果中在多个16比特通路上重复所选择的16比特的半个字。
26.一种操作用于计算机处理器的数据处理单元的方法,该方法包括:
响应数据访问指令,对从计算机处理器的寄存器文件访问的至少一个数据运算对象执行置换运算,置换运算是与(i)访问寄存器以得到所述至少一个数据运算对象和(ii)对所述至少一个数据运算对象执行数据处理运算串行地执行的。
27.按照权利要求26的方法,其中置换运算是对单个向量寄存器运算对象执行的。
28.按照权利要求26的方法,其中置换运算是对多个向量寄存器运算对象执行的。
29.按照权利要求26的方法,还包括:
根据单个程序指令执行与访问寄存器串行的置换运算。
30.按照权利要求26的方法,还包括:
对单个指令的数据运算对象执行多个接连的数据处理运算。
31.按照权利要求26的方法,其中置换运算在执行数据处理运算之前执行。
32.按照权利要求26的方法,其中置换运算在执行数据处理运算之后执行。
33.按照权利要求26的方法,其中第一置换运算在执行数据处理运算之前执行和第二置换运算在执行数据处理运算之后执行。
34.按照权利要求26的方法,还包括:
根据所述指令的操作码部分从多个置换运算类型中选择置换运算的类型。
35.按照权利要求26的方法,还包括从以下的运算中选择执行的数据处理运算:算术运算、逻辑运算、随后的置换运算、和处理器存储器读出或写入操作。
36.按照权利要求26的方法,还包括使用一组置换控制输入以便至少部分地确定从多个置换运算类型中选择的置换运算的类型。
37.按照权利要求36的方法,其中可用的多个置换运算类型包括从以下置换中选择的一个或多个:滚动置换、分类置换、改组置换、广播置换、选择置换、和另外的类型的置换。
38.按照权利要求26的方法,还包括根据数据处理指令的操作码部分来确定一组置换控制输入的数值。
39.按照权利要求26的方法,其中数据处理单元实施单指令多数据执行。
40.按照权利要求26的方法,其中执行置换和数据处理运算,包括执行来自一个组中的算法的至少一个部分,该组包括:快速傅利叶变换;Viterbi编码;Turbo编码;有限冲击响应滤波器算法;另一个通信算法。
41.按照权利要求26的方法,其中第一类型的置换运算是对于第一源运算对象对执行的,和第二类型的置换运算是对于第二源运算对象执行的。
42.按照权利要求41的方法,其中执行第一类型的置换运算包括执行来自一个包含滚动置换和分类置换的组的置换。
43.按照权利要求41的方法,其中执行第二类型的置换运算包括执行广播置换。
44.按照权利要求41的方法,其中执行一个或多个的、该第一和第二类型的置换运算,包括使用64比特数据寄存器源变元。
45.按照权利要求44的方法,其中执行第一类型的置换运算允许执行滚动运算,以便从两个64比特源数值形成单个64比特结果,该64比特结果相应于源数值滚动了16比特元素的一个整数。
46.按照权利要求44的方法,其中执行第一类型的置换运算允许执行分类运算,以便从两个64比特源数值形成单个64比特结果,该64比特结果可选择为最高位或最低位64比特分类结果。
47.按照权利要求44的方法,其中执行第一类型的置换运算包括执行改组运算,以用于交织两个向量,每个向量包含16比特元素的一个整数。
48.按照权利要求47的方法,其中16比特元素的整数是2的整数幂。
49.按照权利要求44的方法,其中执行第二类型的置换运算允许执行广播运算,该运算能够在64比特结果中在多个16比特通路上重复16比特的半字。
50.计算机程序产品,包括程序代码装置,它包括指令序列,其中计算机程序产品适合于在计算机上运行,以使得由该序列的数据访问指令的至少一部分确定的置换运算是对从寄存器文件访问的一个或多个数据运算对象执行的,该置换运算是与(i)对数据运算对象的寄存器访问和(ii)对数据运算对象执行数据处理运算串行地执行的。
51.一种用于计算机的数据处理单元,包括:
寄存器文件;
寄存器访问和置换设备,它能够根据数据访问指令而访问在所述寄存器文件中的至少一个数据运算对象,所述寄存器访问和置换设备包括置换电路,用来根据所述指令的置换操作码部分而选择地置换所述访问的数据运算对象;以及
数据执行通道,被安排成与所述寄存器访问和置换设备串联,所述数据执行通道用来根据所述指令的执行操作码部分对所述选择地置换的数据运算对象执行运算。
52.如在权利要求51中的数据处理单元,其中所述寄存器访问和置换设备包括被连接在所述寄存器文件与所述执行通道之间的译码器寄存器文件读出级。
53.如在权利要求52中的数据处理单元,其中所述寄存器访问和置换设备包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的至少一个复接器级。
54.如在权利要求52中的数据处理单元,其中所述寄存器访问和置换设备还包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的列复接器级。
55.如在权利要求52中的数据处理单元,其中所述寄存器访问和置换设备包括被连接在所述译码器寄存器文件读出级与所述执行通道之间的纵横复接器级。
56.如在权利要求52中的数据处理单元,其中置换控制输入被提供到所述译码器寄存器文件读出级。
57.如在权利要求53中的数据处理单元,其中置换控制输入被提供到所述复接器级。
58.如在权利要求54中的数据处理单元,其中置换控制输入被提供到所述列复接器级。
59.如在权利要求55中的数据处理单元,其中置换控制输入被提供到所述纵横复接器级。
60.如在权利要求51中的数据处理单元,包括被连接在所述执行通道的输出端与所述寄存器文件访问和置换设备的输入端之间的旁路电路。
61.如在权利要求51中的数据处理单元,包括第一和第二寄存器访问和置换电路。
62.如在权利要求61中的数据处理单元,其中所述第一寄存器访问和置换电路被安排成访问第一和第二运算对象,以及执行从一个或多个滚动、分类、改组中选择的置换。
63.如在权利要求61中的数据处理单元,其中所述第二寄存器访问和置换电路被安排成访问至少一个运算对象,以及执行广播置换。
64.如在权利要求61中的数据处理单元,其中所述第一和第二寄存器访问和置换电路的每个包括以下的一个或多个:
(i)被连接在所述寄存器文件与所述执行通道之间的译码器寄存器文件读出级;
(ii)被连接在所述译码器寄存器文件读出级与所述执行通道之间的至少一个复接器级。
65.如在权利要求64中的数据处理单元,其中所述至少一个复接器级包括以下的一个或多个:
(i)被连接在所述译码器寄存器文件读出级与执行通道之间的列复接器级;
(ii)被连接在所述列复接器级与所述执行通道之间的纵横复接器级。
66.如在权利要求51中的数据处理单元,其中所述执行通道包括SIMD电路。
67.一种指令,包括:
(i)规定数据访问的类型的数据访问操作码部分;
(ii)规定置换运算的类型的置换操作码部分;
(iii)规定另外的操作的执行操作码部分;以及
至少一个数据运算对象源的指示。
68.一种用于计算机处理器的数据处理单元,包括以串联连接方式的寄存器访问单元、向量置换电路、和至少一个执行通道;该设备还包括译码单元,用来响应单个指令而控制对至少一个向量运算对象的访问、选择置换至少一个向量运算对象、以及执行至少一个另外的操作。
CNA2006800112405A 2005-04-08 2006-04-06 数据访问和置换单元 Pending CN101208658A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/102,266 US7933405B2 (en) 2005-04-08 2005-04-08 Data access and permute unit
US11/102,266 2005-04-08

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310617531.0A Division CN103744639A (zh) 2005-04-08 2006-04-06 数据访问和置换单元

Publications (1)

Publication Number Publication Date
CN101208658A true CN101208658A (zh) 2008-06-25

Family

ID=36577535

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310617531.0A Pending CN103744639A (zh) 2005-04-08 2006-04-06 数据访问和置换单元
CNA2006800112405A Pending CN101208658A (zh) 2005-04-08 2006-04-06 数据访问和置换单元

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310617531.0A Pending CN103744639A (zh) 2005-04-08 2006-04-06 数据访问和置换单元

Country Status (9)

Country Link
US (1) US7933405B2 (zh)
EP (1) EP1866744A2 (zh)
JP (1) JP5047944B2 (zh)
KR (1) KR20070118623A (zh)
CN (2) CN103744639A (zh)
BR (1) BRPI0609742A2 (zh)
CA (1) CA2600744A1 (zh)
TW (1) TWI476681B (zh)
WO (1) WO2006106342A2 (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025067A (zh) * 2011-12-29 2014-09-03 英特尔公司 具有由向量冲突指令和置换指令共享的全连接互连的处理器
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令
CN105723333A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 在执行单元与向量数据存储器之间具有合并电路系统的向量处理引擎以及相关的方法
CN105723330A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 采用抽头延迟线进行相关向量处理操作的向量处理引擎(vpe)、以及相关向量处理器系统和方法
CN105723328A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 在向量数据存储器与执行单元之间的数据流路径中采用格式转换电路系统的向量处理引擎和相关方法
CN105723331A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 采用抽头延迟线用于滤波器向量处理操作的向量处理引擎(vpe)以及相关的向量处理系统和方法
CN105765523A (zh) * 2013-11-15 2016-07-13 高通股份有限公司 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法
CN107092465A (zh) * 2011-12-23 2017-08-25 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN104350461B (zh) * 2011-12-23 2017-10-27 英特尔公司 具有不同的读和写掩码的多元素指令
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10025591B2 (en) 2011-12-23 2018-07-17 Intel Corporation Instruction for element offset calculation in a multi-dimensional array

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783862B2 (en) * 2006-08-07 2010-08-24 International Characters, Inc. Method and apparatus for an inductive doubling architecture
US20080079712A1 (en) * 2006-09-28 2008-04-03 Eric Oliver Mejdrich Dual Independent and Shared Resource Vector Execution Units With Shared Register File
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ
US20090106526A1 (en) * 2007-10-22 2009-04-23 David Arnold Luick Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing
US8169439B2 (en) * 2007-10-23 2012-05-01 International Business Machines Corporation Scalar precision float implementation on the “W” lane of vector unit
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
GB2456775B (en) * 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US7904699B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating instruction-based persistent vector multiplexer control
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
US7814303B2 (en) * 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US20110072236A1 (en) * 2009-09-20 2011-03-24 Mimar Tibet Method for efficient and parallel color space conversion in a programmable processor
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
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
KR20120134549A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
GB2497070B (en) 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN104126168B (zh) * 2011-12-22 2019-01-08 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
WO2013095564A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US8959275B2 (en) 2012-10-08 2015-02-17 International Business Machines Corporation Byte selection and steering logic for combined byte shift and byte permute vector unit
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US10061581B2 (en) * 2014-01-31 2018-08-28 Qualcomm Incorporated On-the-fly conversion during load/store operations in a vector processor
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9785437B2 (en) 2014-12-23 2017-10-10 Intel Corporation Method and apparatus for performing a vector bit reversal and crossing
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) * 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10459731B2 (en) 2015-07-20 2019-10-29 Qualcomm Incorporated Sliding window operation
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US20170177352A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Store Operations
US20170177355A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instruction and Logic for Permute Sequence
KR102659495B1 (ko) * 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
KR102035792B1 (ko) * 2019-06-10 2019-10-23 한화시스템(주) Fpga를 이용한 2차원 슬라이딩 테스트 윈도를 생성하기 위한 장치 및 그 방법
US11385897B2 (en) * 2019-10-01 2022-07-12 Marvell Asia Pte, Ltd. Merge execution unit for microinstructions
CN111782148B (zh) * 2020-06-30 2023-09-05 中国工商银行股份有限公司 数据存储控制方法和装置、以及电子设备和存储介质
US20210216318A1 (en) * 2020-08-28 2021-07-15 Martin Langhammer Vector Processor Architectures

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5848286A (en) * 1994-03-29 1998-12-08 Cray Research, Inc. Vector word shift by vo shift count in vector supercomputer processor
FR2723223B1 (fr) * 1994-07-29 1996-08-30 Sgs Thomson Microelectronics Procede de brouillage numerique et application a un circuit programmable
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
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
US5815572A (en) * 1995-08-31 1998-09-29 Lucent Technologies Inc. Video scrambling
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US5991865A (en) * 1996-12-31 1999-11-23 Compaq Computer Corporation MPEG motion compensation using operand routing and performing add and divide in a single instruction
US5922066A (en) * 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US5881307A (en) * 1997-02-24 1999-03-09 Samsung Electronics Co., Ltd. Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
TW364269B (en) * 1998-01-02 1999-07-11 Winbond Electronic Corp Discreet cosine transform/inverse discreet cosine transform circuit
US6223320B1 (en) * 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6178500B1 (en) * 1998-06-25 2001-01-23 International Business Machines Corporation Vector packing and saturation detection in the vector permute unit
US6327651B1 (en) * 1998-09-08 2001-12-04 International Business Machines Corporation Wide shifting in the vector permute unit
US6411652B1 (en) * 1998-10-23 2002-06-25 International Business Machines Corp. Motion estimation
FR2785406B1 (fr) * 1998-10-30 2004-09-10 Thomson Marconi Sonar Sas Memoire a acces vectoriel
FR2785741B1 (fr) * 1998-11-09 2001-01-26 Canon Kk Dispositif et procede de codage et d'entrelacement pour des turbocodes series ou hybrides
US6578061B1 (en) * 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
US6311280B1 (en) * 1999-02-22 2001-10-30 Nband Communications Low-power memory system with incorporated vector processing
US6446195B1 (en) * 2000-01-31 2002-09-03 Intel Corporation Dyadic operations instruction processor with configurable functional blocks
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
JP3515720B2 (ja) * 1999-11-22 2004-04-05 松下電器産業株式会社 ビタビ復号器
US20010034754A1 (en) * 2000-03-17 2001-10-25 Elwahab Amgad Mazen Device, system and method for providing web browser access and control of devices on customer premise gateways
US6718456B1 (en) * 2000-06-02 2004-04-06 Sun Microsystems, Inc. Parallel pack instruction method and apparatus
AU2001269394A1 (en) * 2000-07-28 2002-02-13 Delvalley Limited A method of processing data
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
DE10138650A1 (de) * 2001-08-07 2003-02-27 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Verschlüsseln eines diskreten Signals sowie Verfahren und Vorrichtung zur Entschlüsselung
US7142670B2 (en) * 2001-08-14 2006-11-28 International Business Machines Corporation Space-efficient, side-channel attack resistant table lookups
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US6931511B1 (en) * 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
GB2394571B (en) * 2002-10-23 2005-08-10 Motorola Inc Arrangement system and method for vector permutation in single-instruction multiple-data microprocessors
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US7126991B1 (en) * 2003-02-03 2006-10-24 Tibet MIMAR Method for programmable motion estimation in a SIMD processor
US7321910B2 (en) * 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7502943B2 (en) * 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7529368B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7900055B2 (en) * 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7529367B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7392400B2 (en) * 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7539876B2 (en) * 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7310724B2 (en) * 2003-06-30 2007-12-18 Intel Corporation Parallel execution of enhanced EFI based BIOS drivers on a multi-processor or hyper-threading enabled platform
US7577824B2 (en) * 2003-09-08 2009-08-18 Altera Corporation Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US7124318B2 (en) * 2003-09-18 2006-10-17 International Business Machines Corporation Multiple parallel pipeline processor having self-repairing capability
US7313788B2 (en) * 2003-10-29 2007-12-25 International Business Machines Corporation Vectorization in a SIMdD DSP architecture
US7014122B2 (en) * 2003-12-24 2006-03-21 International Business Machines Corporation Method and apparatus for performing bit-aligned permute
US7240236B2 (en) * 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
US20050226337A1 (en) * 2004-03-31 2005-10-13 Mikhail Dorojevets 2D block processing architecture
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7284092B2 (en) * 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
US7725678B2 (en) * 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104350461B (zh) * 2011-12-23 2017-10-27 英特尔公司 具有不同的读和写掩码的多元素指令
CN107092465B (zh) * 2011-12-23 2021-06-29 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
US10037208B2 (en) 2011-12-23 2018-07-31 Intel Corporation Multi-element instruction with different read and write masks
US10025591B2 (en) 2011-12-23 2018-07-17 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
CN107092465A (zh) * 2011-12-23 2017-08-25 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
US10678541B2 (en) 2011-12-29 2020-06-09 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
CN104025067A (zh) * 2011-12-29 2014-09-03 英特尔公司 具有由向量冲突指令和置换指令共享的全连接互连的处理器
CN104025067B (zh) * 2011-12-29 2017-12-26 英特尔公司 具有由向量冲突指令和置换指令共享的全连接互连的处理器
CN105723331A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 采用抽头延迟线用于滤波器向量处理操作的向量处理引擎(vpe)以及相关的向量处理系统和方法
CN105765523A (zh) * 2013-11-15 2016-07-13 高通股份有限公司 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法
US9880845B2 (en) 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US9977676B2 (en) 2013-11-15 2018-05-22 Qualcomm Incorporated Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
CN105765523B (zh) * 2013-11-15 2018-07-17 高通股份有限公司 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法
CN105723328A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 在向量数据存储器与执行单元之间的数据流路径中采用格式转换电路系统的向量处理引擎和相关方法
CN105723330A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 采用抽头延迟线进行相关向量处理操作的向量处理引擎(vpe)、以及相关向量处理器系统和方法
CN105723333B (zh) * 2013-11-15 2018-09-07 高通股份有限公司 在执行单元与向量数据存储器之间具有合并电路系统的向量处理引擎以及相关的方法
CN105723333A (zh) * 2013-11-15 2016-06-29 高通股份有限公司 在执行单元与向量数据存储器之间具有合并电路系统的向量处理引擎以及相关的方法
CN104951401B (zh) * 2014-03-28 2018-08-03 英特尔公司 排序加速处理器、方法、系统和指令
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10656944B2 (en) 2014-12-27 2020-05-19 Intel Corporation Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array

Also Published As

Publication number Publication date
CN103744639A (zh) 2014-04-23
WO2006106342A8 (en) 2007-11-29
US20060227966A1 (en) 2006-10-12
EP1866744A2 (en) 2007-12-19
BRPI0609742A2 (pt) 2011-10-18
US7933405B2 (en) 2011-04-26
KR20070118623A (ko) 2007-12-17
WO2006106342A3 (en) 2007-03-15
JP2008535115A (ja) 2008-08-28
WO2006106342A2 (en) 2006-10-12
TWI476681B (zh) 2015-03-11
CA2600744A1 (en) 2006-10-12
JP5047944B2 (ja) 2012-10-10
TW200701059A (en) 2007-01-01

Similar Documents

Publication Publication Date Title
CN101208658A (zh) 数据访问和置换单元
US11941399B2 (en) Exposing valid byte lanes as vector predicates to CPU
CN1914592B (zh) 执行具有单元大小控制的紧缩数据操作的方法和设备
CN110955453A (zh) 用于执行矩阵压缩和解压缩指令的系统和方法
EP4290371A2 (en) Systems and methods for performing instructions to transform matrices into row-interleaved format
EP3623941B1 (en) Systems and methods for performing instructions specifying ternary tile logic operations
US20040123071A1 (en) Cellular engine for a data processing system
US20070250683A1 (en) Alignment and ordering of vector elements for single instruction multiple data processing
GB2577943A (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN109992304A (zh) 用于加载片寄存器对的系统和方法
CN110955454A (zh) 用于执行快速转换片并且将片用作一维向量的指令的系统
CN109952559A (zh) 具有单独可选元素及成组复制的流式传输引擎
EP3623940A2 (en) Systems and methods for performing horizontal tile operations
US20230229730A1 (en) Variable position shift for matrix processing
US20240063827A1 (en) Butterfly network on load data return
CN113849769A (zh) 矩阵转置和乘法
CN110058886A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
CN109614145B (zh) 一种处理器核心结构及数据访存方法
CN106610817A (zh) 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法
US20230214236A1 (en) Masking row or column positions for matrix processing
EP3944077B1 (en) Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order
US10496411B2 (en) Functional unit for instruction execution pipeline capable of shifting different chunks of a packed data operand by different amounts
JP5760532B2 (ja) プロセッサ装置及びその演算方法
JPH0330182B2 (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
ASS Succession or assignment of patent right

Owner name: HUIDA TECHNOLOGY ENGLAND CO., LTD.

Free format text: FORMER OWNER: ICERA INC.

Effective date: 20130118

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130118

Address after: London, England

Applicant after: ICERA Inc.

Address before: Bristol

Applicant before: Icera Inc.

Effective date of registration: 20130118

Address after: Bristol

Applicant after: Icera Inc.

Address before: Bristol

Applicant before: Icera Inc.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20080625