CN107924306A - 使用simd指令的表查找 - Google Patents
使用simd指令的表查找 Download PDFInfo
- Publication number
- CN107924306A CN107924306A CN201680044676.8A CN201680044676A CN107924306A CN 107924306 A CN107924306 A CN 107924306A CN 201680044676 A CN201680044676 A CN 201680044676A CN 107924306 A CN107924306 A CN 107924306A
- Authority
- CN
- China
- Prior art keywords
- subset
- index
- crossbar switch
- instruction
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 description 14
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000004087 circulation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/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
-
- 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
Abstract
系统及方法涉及查找表的条目。处理器接收一或多个单指令多数据SIMD指令,包含指定索引的第一子集的第一SIMD指令。使用交叉开关通过索引的所述第一子集查找表条目的第一子集。所述第一SIMD指令的第一向量输出是基于所述交叉开关的输出是否属于表条目的所需子集。类似地,第二、第三及第四SIMD指令指定索引的对应第二、第三及第四子集,以使用所述交叉开关查找其余表条目。所述交叉开关的大小是基于索引的所述子集中的用于查找表条目的索引的数目。
Description
技术领域
所公开的方面涉及使用单指令多数据(SIMD)指令的表查找操作。更具体地说,示例性方面涉及指定用于查找表条目的子集的索引子集的SIMD指令。
背景技术
单指令多数据(SIMD)指令可用于采用数据并行性的处理系统。举例来说,当需要对数据向量的两个或更多个数据元素执行同一或共同任务时,存在数据并行性。代替使用多个指令,可通过使用单个SIMD指令并行地对数据元素中的两个或更多个执行共同任务,所述单个SIMD指令定义将对多个数据元素执行的共同任务。
一些处理系统可支持SIMD表查找操作,其中SIMD指令可包括对应于需要查找的表的两个或两个以上条目的两个或两个以上索引。然而,在SIMD指令中指定索引的次序不必对应于表条目布置在存储器或存储位置中的次序。举例来说,如果第一索引值对应于第一表条目,那么第一索引值可出现在SIMD指令中的第二位置或第二SIMD通道中。
为了在SIMD表查找操作中将索引映射到表条目,常规处理系统可包含交叉开关。交叉开关可使用交换器或多路复用器实施。举例来说,为了使用N个索引查找N个表条目,可使用N个N输入多路复用器实施N×N交叉开关。每个N输入多路复用器可接受所有N个表条目作为输入,并且基于N个索引值中的特定一者来选择N个表条目中的一者作为输出。尽管交叉开关实施方案实现所需功能性,但是其引发用于实施N个N输入多路复用器的大量硬件成本。此外,由于要操作的数据向量的大小(例如,数据向量中的数据元素的数目)增加,交叉开关实施方案不易扩展。
另一常规方法涉及将包括多个表条目的表存储在存储器系统中。SIMD指令可指定存储器地址,而不是每个表条目的索引。在一些实施方案中,通过假设所有表条目的共同基地址,可指定偏移值,而不是完整存储器地址。在任一情况下,SIMD指令可实施为使用存储器地址或偏移从存储器位置收集表条目的一组加载指令。然而,为每个SIMD表查找指令实施一组并行加载操作是复杂且昂贵的操作,其无法扩展到较大的向量长度或表条目的数目。
因此,本领域需要SIMD表查找操作的有效且高度可扩展的实施方案。
发明内容
示例性方面涉及用于查找表的条目的系统及方法。处理器接收一或多个单指令多数据(SIMD)指令,包含指定索引的第一子集的第一SIMD指令。使用交叉开关通过索引的第一子集查找表条目的第一子集。第一SIMD指令的第一向量输出是基于交叉开关的输出是否属于表条目的所需子集。类似地,第二、第三及第四SIMD指令指定索引的对应第二、第三及第四子集,以使用交叉开关查找其余表条目。交叉开关的大小是基于索引的子集中的用于查找表条目的索引的数目。
举例来说,示例性方面涉及通过处理器查找存储于存储器中的表的条目的方法。所述方法包括接收指定索引的第一子集的第一单指令多数据(SIMD)指令;在由处理器实施的交叉开关中通过索引的第一子集查找表条目的第一子集;及基于交叉开关的输出生成第一SIMD指令的第一向量输出。
另一示例性方面包含设备,所述设备包括存储器,其包括表;及处理器,其经配置以执行第一单指令多数据(SIMD)指令。处理器包括交叉开关,其经配置以通过由第一SIMD指令指定的索引的第一子集查找表的表条目的第一子集;及逻辑,其用于基于交叉开关的输出生成第一SIMD指令的第一向量输出。
另一示例性方面涉及系统,其包括,系统,其包括用于存储表的装置;用于接收指定索引的第一子集的第一单指令多数据(SIMD)指令的装置;用于通过索引的第一子集查找表条目的第一子集以生成经查找表条目的装置;及用于基于经查找表条目生成第一SIMD指令的第一向量输出的装置。
又一示例性方面涉及一种非暂时性计算机可读储存媒体,其包括可由处理器执行的指令,所述指令在由所述处理器执行时致使所述处理器执行用于查找表的条目的操作,所述非暂时性计算机可读储存媒体包括用于接收指定索引的第一子集的第一单指令多数据(SIMD)指令的代码;用于在交叉开关中通过索引的第一子集查找表条目的第一子集的代码;及用于基于交叉开关的输出生成第一SIMD指令的第一向量输出的代码。
附图说明
呈现随附图式以辅助描述本发明的方面且仅仅为了说明而非限制所述方面而提供随附图式。
图1说明根据示例性方面的用于使用SIMD指令执行表查找的处理系统。
图2说明示例性交叉开关结构。
图3说明使用SIMD指令的执行表查找的方法。
图4说明其中可有利地采用本发明的方面的示例性处理装置400。
具体实施方式
在以下针对本发明的特定方面的描述及相关图式中公开本发明的各方面。可在不脱离本发明的范围的情况下设计替代性方面。另外,将不会详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
此外,词“示例性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示例性”的任何方面不必解释为比其它方面优选或有利。同样,术语“本发明的方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。
本文中所使用的术语仅出于描述特定方面的目的,且并不意图限制本发明的方面。如本文所使用,单数形式“一”及“所述”希望还包含复数形式,除非上下文另外清楚地指示。应进一步理解,术语“包括(comprises、comprising)”及/或“包含(includes、including)”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
另外,就待由(例如)计算装置的元件执行的动作序列来说描述许多方面。将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、由正由一或多个处理器执行的程序指令或由所述两者的组合来执行。另外,本文中所描述的这些动作序列可被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各个方面可以数个不同形式来体现,预期所有形式属于所主张的标的物的范围内。另外,对于本文所描述的方面中的每一者,任何此类方面的对应形式可在本文中描述为(例如)“经配置以”执行所描述动作的“逻辑”。
本发明的示例性方面涉及用于表查找的SIMD指令,这减小了使用常规交叉开关实施方案的完整表查找的复杂性。在一个方面中,示例性SIMD指令可涉及减少查找时间及交叉开关复杂性的部分表查找。举例来说,代替使用单个SIMD指令对包括N个表条目的表执行完整表查找,可使用一或多个SIMD指令(例如,用于查找N个表条目的第一子集的偶数条目及查找N个表条目的第一子集的奇数条目的不同SIMD指令)对N个表条目的第一子集执行部分表查找。类似地,一或多个SIMD指令(例如,用于查找偶数条目及查找奇数条目的不同SIMD指令)可用于对其它子集,例如,N个表条目的第二子集执行部分表查找。不同子集,例如第一及第二子集不重叠(例如,第一子集可涉及N个表条目的下半部,并且第二子集可涉及N个表条目的上半部)。
在一些方面中,用于查找不同子集的SIMD指令可仅指定(举例来说)偶数索引或奇数索引,并且可取决于SIMD指令涉及的表条目的子集实施表查找操作。因此,第一SIMD指令可指定对应于表条目的下半部的偶数索引,而第二SIMD指令可指定对应于表条目的下半部的奇数索引。第三SIMD指令可指定对应于表条目的上半部的偶数索引,并且第四SIMD指令可指定对应于表条目的上半部的奇数索引。与用于以常规方式实施完整表查找相比,如本领域中已知的使用Benes或Clos网络实施的交叉开关可用较少级或复杂性实施,以将表查找分解成此不连续的表查找操作(例如,偶数或奇数索引)。
在一个方面中,每个索引可为多位值,使得每个索引的一部分可用于确认查找操作涉及表条目的正确或所需子集。举例来说,第一SIMD指令可包含对应于第一子集的M个表条目的M个索引的第一子集。比较逻辑可用于确定M个索引映射到所预期的或所需的第一子集的M个表条目。可检查M个索引的一或多个最高有效位(MSB)以确保其对应于第一子集的M个表条目。M个索引的其余位可用于,举例来说,通过使用M×M交叉开关查找第一子集内的M个表条目,所述M×M交叉开关将小于可实施用于以常规方式执行完整表查找的N×N交叉开关。
现在参考图1,说明根据示例性方面的设备或处理系统100。处理系统100包括存储器103及处理器101。尽管存储器103被展示为不同于处理器101,但这仅仅是出于说明的目的,并且在一些方面中,存储器103可为处理器101的一部分(例如,存储器103可为处理器101中包含的用于存储表的一组寄存器或其它装置)。处理器101可以包含用于执行SIMD指令以根据示例性方面执行表查找的逻辑。
在所说明的实例中,存储器103被展示为包含表102。表102包括16个表条目T0到T15(并非全部已明确地展示)。SIMD指令可用于使用16个对应索引0到15并行查找16个表条目T0到T15中的两个或多于两个。在示例性方面中,代替使用用于查找所有16个指令(例如,通过16×16交叉开关)的单个SIMD指令(例如,指定16个索引),多个SIMD指令可用于用较小交叉开关(例如,4×4交叉开关),例如,交叉开关104对表102执行部分查找。
更详细地说,图1中所示的SIMD指令106是可由处理器101(例如,从指令高速缓冲存储器,未展示)接收的四个可能SIMD指令中的一个。四个SIMD指令的组合可用于查找表102的所有16个表条目。SIMD指令106包含索引0到15的第一子集。更具体地说,SIMD指令106指定四个通道106a到106d(从右到左),所述通道各自包含一个索引值。类似于SIMD指令106的另外三个SIMD指令可将索引的其它子集指定到表102的其余条目。使用四个SIMD指令的表查找可在一或多个循环中执行,并且可被实施为环路。更多此SIMD指令可用于查找大于表102的表大小。因此,示例性实施方案是可扩展的。
如先前所描述,在一个方面中,SIMD指令106可指定索引的第一子集,其中索引的第一子集可为不连续的索引。如所说明,指令106的通道106a指定索引4,通道106b指定索引2,通道106c指定索引6,及通道106d指定索引0。在SIMD指令106中指定的所有四个索引是不连续的,并且此外,所述四个索引对应于表条目的特定子集,即,表条目T0到T15的下半部(T0到T7)。交叉开关104(将参考图2进一步解释)可用于查找分别对应于通道106a到106d中的索引4、2、6、0(从右到左)的表条目T4、T2、T6及T0。在示例性方面中,验证表示表102的条目的交叉开关104的输出是否属于表条目的正确或所需子集(例如,即表条目T0-T15的下半部(T0到T7)或上半部(T8到T15)),表102的所述条目通过对应SIMD指令所提供的索引的子集查找。如果交叉开关104的输出属于所需子集,那么展示为结果112的对应输出向量生成为等于交叉开关104的输出;否则,输出向量或结果112生成为等于零值。因此,处理器101包含用于如下基于交叉开关104的输出生成结果112的逻辑,例如与门110。结果112可为,举例来说,用于存储由处理器101执行的指令的结果的寄存器(例如,处理器101的寄存器组(未展示)的一部分)。
在一个方面中,如果SIMD指令106被视为可用于查找表102的所有16个索引的四个SIMD指令中的第一个,那么第一SIMD指令包含用于查找表条目的第一子集中的表条目(即,表条目T0到T15的下半部(T0到T7))的索引的第一子集(即,偶数索引)。第二SIMD指令可包含用于查找表条目的第一子集中的表条目的索引的第二子集(即,奇数索引)。第三及第四SIMD指令可类似地包含用于查找表条目的第二子集(即,表条目T0到T15的上半部(T8到T15))的索引的第三及第四子集(即,分别偶数及奇数索引)。
为了确保查找表条目的正确或所需子集(例如,在第一SIMD指令106的情况下下半部T0到T7),比较器108用于检查索引的子集是否处于对应于所需子集的范围内。在实例中,如果4个位,那么在二进制符号中,[3∶0]用于表示索引0到15。4位索引的最高有效位或位[3]是用于表条目的第二子集或上半部T8到T15的“1”,及用于表条目的第一子集或下半部T0到T7的“0”。因此,比较器108可经配置以将通道106a到106d中的索引的子集中的每一者的位[3]与子表选择值“0”相比较,以确保SIMD指令106指定用于特定操作的索引的正确子集。子表选择值可由SIMD指令106的操作数或由编程器或编译器供应。如果比较器108显示索引的子集对应于表条目的所需子集(如在所说明的实例中),那么比较器108输出值“1”,其为与门110的输入。与门110还接收交叉开关104的输出作为另一输入,并且如果验证交叉开关104的输出属于表条目的所需子集,那么将所述输出传递到结果112上。结果112是SIMD指令106的输出向量,所述SIMD指令包括分别对应于索引4、2、6及0的子集的表条目的第一子集中的表条目T4、T2、T6及T0。换句话说,如果交叉开关104的输出属于表条目的正确或所需子集,那么与门110将结果112生成为等于交叉开关104的输出。
如果另一方面比较器108显示索引的子集不对应于表条目的所需子集(例如,对应于表条目T8到T15的上半部,子表选择值是“1”),那么与门110的输出所有都为“0”,从而致使零值写入到结果112。换句话说,如果交叉开关104的输出不属于表条目的正确或所需子集,那么与门110将结果112生成为等于零值。在以多个循环或通过使用多个指令(例如,上文所论述的第一至第四SIMD指令)执行完整表查找的情况下,可采用写入结果“0”的此特征,以便从不是用于部分表查找的特定指令的焦点的表条目的子集中清零比重。此外,本领域技术人员将理解,任何数目的位可用于子表选择。举例来说,如果表102是较大表,比如32条目表的一部分,那么索引可为5位或更多位宽,并且位[5∶4]可用于将查找集中于完整表T0到T31的第一子集表条目T0到T7上。
现在参考图2,展示交叉开关104的放大图。如先前所述,可基于如本领域中已知的Benes网络或Clos网络实施用于表查找的交叉开关。在图2中,4×4交叉开关216对应于可实际上在交叉开关104中实施的逻辑。图2还用虚线展示8×8交叉开关214以及用虚线展示行202及210。如下文将进一步解释,图2中的虚线对应于实际上不在交叉开关104中实施,但被展示为说明交叉开关104的示例性实施方案中的硬件节省的特征。
更详细地说,如果交叉开关104已用于使用包括八个索引的SIMD指令对表条目T0到T7的整个第一子集或下半部进行表查找,那么可能已实施8×8交叉开关214来使用所有八个对应索引在行202处查找表条目的第一子集的所有八个表条目,以生成包括行202的经查找表条目的输出行210。因此,行202被展示为包括所有八个表条目T0到T7作为可输入到8×8交叉开关214的潜在表条目。然而,可避免用于在行210处生成八个输出(经查找表条目)的在行202处具有八个表条目T0到T7的8×8交叉开关214。因此,以虚线展示可避免的输入行202、输出210以及交换器(展示为框,其可举例来说使用用于传递或移动交叉开关中的数据的多路复用器或类似逻辑实施,如本领域中已知)及8×8交叉开关214的相关连接。替代地,下文所描述的4×4交叉开关216可实际上在交叉开关104中实施,因此图2中以实线展示对应输入、输出、传递元件及4×4交叉开关216的相关连接。
如先前所解释,由于示例性SIMD指令106仅指定偶数索引,因此需要查找仅对应于偶数索引的表条目的第一子集中的偶数表条目(即,T0、T2、T4及T6)。因此,仅表条目的第一子集中的偶数表条目(即,T0、T2、T4及T6)在行204处输入到4×4交叉开关216,并且用实线在对应框中展示。对应地,可仅通过偶数索引查找行204的偶数表条目,因此可避免用于查找其余表条目的逻辑(如上所述,以虚线展示)。以实线展示用于仅通过四个偶数索引查找行204的表条目的交换器(框)及4×4交叉开关216中的相关连接,其中输出行212包括分别使用SIMD指令106的通道106a到106d中的索引4、2、6及0查找的表条目(参看图1)。具体来说,粗线用于突出显示实例路径,所述实例路径在用于生成输出行212中的经查找表条目T4、T2、T6、T0(从右到左)的跨越交换器的三个级的输入行204中的表条目T0、T2、T4及T6之后。在本发明中避免从输入行202到输出行212的路径中所涉及的交换器或连接的进一步详细描述,因为本领域技术人员将理解这些细节。因此,组合参考图1到2,可基于比较器108及与门110将输出行212的经查找表条目提供到结果112。
因此,交叉开关104可实施在4×4交叉开关216中以实线展示的逻辑,以执行用于SIMD指令106的查找操作。如可了解,4×4交叉开关216是与8×8交叉开关214相比具有更少级及交换器的简化交叉开关网络。一般来说,用于示例性表查找的交叉开关的大小可基于由对应SIMD指令指定的索引的数目(例如,使用在第一SIMD指令106中指定的4个索引的用于查找表102的4×4交叉开关)。对应地,在(例如,不连续表条目的)示例性部分查表操作的实施方案中减小硬件成本。
继续参考图2,用于上述第二SIMD指令的查找操作可涉及用于查找表条目的第一子集中的奇数表条目(即,表条目T0到T15的第一子集T0到T7中的表条目T1、T3、T5及T7)的索引的第二子集(例如,奇数索引)。因此,分别代替图2中所示的偶数表条目T0、T2、T4、T6,奇数表条目T1、T3、T5及T7可提供于行204中。类似于查找用于上述第一SIMD指令106的偶数表条目T0、T2、T4、T6的论述,可实施4×4交叉开关216以使用在第二SIMD指令中指定的奇数索引来查找表条目T1、T3、T5及T7。仅在4×4交叉开关216中以实线展示的交换器及相应同样可用于基于在第二SIMD指令中指定的特定奇数索引而跨越4×4交叉开关216的级实施不同路径。将避免查找用于第二SIMD指令的表条目的另外细节,因为这些细节类似于上文提供用于第一SIMD指令的详细描述。
类似地,索引的第三子集及索引的第四子集(例如,偶数索引8、10、12、14及奇数索引9、11、13、15)可用于针对第三及第四SIMD指令的对应实施方案使用4×4交叉开关216查找提供于行204中的表条目的第二子集中的表条目(分别是表条目T0到T15的第二子集T8到T15中的T8、T10、T12、T14及T9、T11、T13、T15)。
因此,应了解,各方面包含用于执行本文中所公开的过程、功能及/或算法的各种方法。举例来说,如图3中所说明,一个方面可包含用于通过处理器(例如,处理器101)查找存储于存储器(例如,存储器103)中的表的条目(例如,表102包括条目T0到T15)的方法300。
更详细地说,方法300的块302包含接收指定索引的第一子集的第一单指令多数据(SIMD)指令。举例来说,块302可包含从指令高速缓冲存储器接收SIMD指令106,SIMD指令106包括索引的第一子集(例如,下半部T0到T7),其中索引的第一子集不连续,举例来说,为偶数索引(例如,索引0、2、4、6)。
块304包含在由处理器实施的交叉开关中通过索引的第一子集查找表条目的第一子集。举例来说,块304可涉及使用交叉开关104的4×4交叉开关216,使用由SIMD指令106指定的索引的第一子集查找表102的下半部的表条目。交叉开关的大小可基于索引的第一子集中的多个索引(例如,4×4交叉开关基于索引的第一子集中的4个索引)。
块306包含基于交叉开关的输出生成第一SIMD指令的第一向量输出(例如,结果112)。举例来说,如果4×4交叉开关216的输出行212属于表条目的所需子集(例如,使用与门110及子表选择108,如上所述),那么块306可包含将第一向量输出生成为等于4×4交叉开关216的输出行212。否则,如果4×4交叉开关216的输出行212不属于表条目的所需子集,那么块306可包含将第一向量输出生成为等于零值。
在另外的方面中,方法300可包含接收指定索引的第二子集(例如,奇数索引1、3、5、7)的第二SIMD指令;及在交叉开关中通过索引的第二子集查找表条目的第一子集,其中索引的第一子集及索引的第二子集是不重叠的。另外,方法300还可包含接收指定索引的第三子集(例如,偶数索引8、10、12、14)的第三SIMD指令;及在交叉开关中查找表条目的第二子集(例如,上半部T8到T15),其中表条目的第一子集(例如,下半部T0到T7)及表条目的第二子集是不重叠的。类似地,方法300可进一步包含接收指定索引的第四子集(例如,奇数索引9、11、13及15)的第四SIMD指令;及在交叉开关中查找表条目的第二子集,其中索引的第三子集及索引的第四子集是不重叠的。
此外,还将理解示例性方面包含用于执行本文所描述的功能的不同装置。举例来说,从以上描述可看出,处理系统100可包括用于执行示例性方面的功能的装置。在一个实例中,处理系统100可包含用于存储表(例如,表102)的装置(例如,存储器103)。处理系统100还可包含用于接收指定索引的第一子集(例如,索引0、2、4、6)的第一单指令多数据(SIMD)指令(例如,SIMD指令106)的装置(例如,处理器101)。处理系统100可包含用于通过索引的第一子集(例如,交叉开关104)查找表条目的第一子集的装置,及用于基于交叉开关的输出生成第一SIMD指令的第一向量输出的装置(例如,与门110、结果112)。
参考图4,根据示例性方面配置的处理装置400的特定说明性方面的框图。举例来说,处理装置400可经配置以执行图3的方法300。处理装置400包含处理器101(其中仅展示4×4交叉开关104,但是为清楚起见,已从图4省略图1中所示的处理器101的其余细节)。如图4中所示,处理器101可与存储器103(其可包含表102,为清楚起见,所述表在此视图中未展示)通信。
图4还展示耦合到处理器101及显示器428的显示器控制器426。译码器/解码器(编解码器)434(例如,音频及/或语音编解码器)可耦合到处理器101。还说明例如无线控制器440(其可包含调制解调器)等其它组件。扬声器436及麦克风438可耦合到编解码器434。图4还指示无线控制器440可耦合到无线天线442。在特定方面中,处理器101、显示器控制器426、存储器103、编解码器434及无线控制器440包含在系统级封装或芯片上系统装置422中。
在特定方面中,输入装置430及电影444耦合到芯片上系统装置422。此外,在特定方面中,如图4中所说明,显示器428、输入装置430、扬声器436、麦克风438、无线天线442及电源444在芯片上系统装置422外部。然而,显示器428、输入装置430、扬声器436、麦克风438、无线天线442及电源444中的每一者可耦合到芯片上系统装置422的组件,例如接口或控制器。
应注意,尽管图4描绘无线通信装置,但处理器101及存储器103还可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。此外,处理装置400的至少一或多个示例性方面可集成在至少一个半导体裸片中。
本领域技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号及芯片。
此外,本领域技术人员将了解,结合本文所公开的方面描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的这种可互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路及步骤。此类功能性是实施为硬件还是软件取决于具体应用及施加于整个系统的设计约束。本领域技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本发明的范围。
结合本文中所公开的方面描述的方法、序列及/或算法可直接以硬件、以由处理器执行的软件模块或以硬件及软件模块的组合来体现。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体中。示例性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。
因此,本发明的方面可包含体现用于执行用于使用SIMD指令查找表的条目的操作的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含于本发明的方面中。
虽然前述公开展示本发明的说明性方面,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可在其中做出各种改变及修改。无需以任何特定次序来执行根据本文中所描述的本发明的方面的方法权利要求的功能、步骤及/或动作。此外,虽然可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。
Claims (30)
1.一种通过处理器查找存储在存储器中的表的条目的方法,所述方法包括:
接收指定索引的第一子集的第一单指令多数据SIMD指令;
在由所述处理器实施的交叉开关中通过索引的所述第一子集查找表条目的第一子集;及
基于所述交叉开关的输出生成所述第一SIMD指令的第一向量输出。
2.根据权利要求1所述的方法,其进一步包括如果所述交叉开关的所述输出属于表条目的所需子集,那么将所述第一向量输出生成为等于所述交叉开关的所述输出。
3.根据权利要求1所述的方法,其进一步包括如果所述交叉开关的所述输出不属于表条目的所需子集,那么将所述第一向量输出生成为等于零值。
4.根据权利要求1所述的方法,其中索引的所述第一子集是不连续的。
5.根据权利要求1所述的方法,其进一步包括接收指定索引的第二子集的第二SIMD指令,及在所述交叉开关中通过索引的所述第二子集查找表条目的所述第一子集。
6.根据权利要求5所述的方法,其中索引的所述第一子集及索引的所述第二子集是不重叠的。
7.根据权利要求5所述的方法,其中索引的所述第一子集包括偶数索引,并且索引的所述第二子集包括奇数索引。
8.根据权利要求1所述的方法,其进一步包括接收指定索引的第三子集的第三SIMD指令,及在所述交叉开关中查找表条目的第二子集,其中表条目的所述第一子集及表条目的所述第二子集是不重叠的。
9.根据权利要求8所述的方法,其进一步包括接收指定索引的第四子集的第四SIMD指令;及在所述交叉开关中查找表条目的所述第二子集。
10.根据权利要求9所述的方法,其中索引的所述第三子集及索引的所述第四子集是不重叠的。
11.根据权利要求9所述的方法,其中索引的所述第三子集包括偶数索引,并且索引的所述第四子集包括奇数索引。
12.根据权利要求1所述的方法,其中所述交叉开关的大小是基于索引的所述第一子集中的索引的数目。
13.一种设备,其包括:
存储器,其包括表;及
处理器,其经配置以执行第一单指令多数据SIMD指令,其中所述处理器包括:
交叉开关,其经配置以通过由所述第一SIMD指令指定的索引的第一子集查找所述表的表条目的第一子集;及
逻辑,其用于基于所述交叉开关的输出生成所述第一SIMD指令的第一向量输出。
14.根据权利要求13所述的设备,其中所述逻辑包括与门,用于在所述交叉开关的所述输出属于表条目的所需子集的情况下将所述第一向量输出生成为等于所述交叉开关的所述输出。
15.根据权利要求14所述的设备,其中所述与门经配置以在所述交叉开关的所述输出不属于表条目的所需子集的情况下将所述第一向量输出生成为等于零值。
16.根据权利要求13所述的设备,其中索引的所述第一子集是不连续的。
17.根据权利要求13所述的设备,其中所述处理器进一步经配置以执行第二SIMD指令,其中所述交叉开关进一步经配置以通过由所述第二SIMD指令指定的索引的第二子集查找表条目的所述第一子集。
18.根据权利要求17所述的设备,其中索引的所述第一子集及索引的所述第二子集是不重叠的。
19.根据权利要求17所述的设备,其中索引的所述第一子集包括偶数索引,并且索引的所述第二子集包括奇数索引。
20.根据权利要求13所述的设备,其中所述处理器进一步经配置以执行第三SIMD指令,其中所述交叉开关进一步经配置以通过由所述第三SIMD指令指定的索引的第三子集查找表条目的第二子集,其中表条目的所述第一子集及表条目的所述第二子集是不重叠的。
21.根据权利要求20所述的设备,其中所述处理器进一步经配置以执行第四SIMD指令,其中所述交叉开关进一步经配置以通过由所述第四SIMD指令指定的索引的第四子集查找表条目的所述第二子集。
22.根据权利要求21所述的设备,其中索引的所述第三子集及索引的所述第四子集是不重叠的。
23.根据权利要求21所述的设备,其中索引的所述第三子集包括偶数索引,并且索引的所述第四子集包括奇数索引。
24.根据权利要求13所述的设备,其中所述交叉开关的大小是基于索引的所述第一子集中的索引的数目。
25.根据权利要求13所述的设备,其集成到选自由以下各者组成的群组的装置中:机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理PDA、固定位置数据单元及计算机。
26.一种系统,其包括:
用于存储表的装置;
用于接收指定索引的第一子集的第一单指令多数据SIMD指令的装置;
用于通过索引的所述第一子集查找表条目的第一子集以生成经查找表条目的装置;及
用于基于所述经查找表条目生成所述第一SIMD指令的第一向量输出的装置。
27.一种非暂时性计算机可读储存媒体,其包括可由处理器执行的指令,所述指令在由所述处理器执行时致使所述处理器执行用于查找表的条目的操作,所述非暂时性计算机可读储存媒体包括:
用于接收指定索引的第一子集的第一单指令多数据SIMD指令的代码;
用于在交叉开关中通过索引的所述第一子集查找表条目的第一子集的代码;及
用于基于所述交叉开关的输出生成所述第一SIMD指令的第一向量输出的代码。
28.根据权利要求27所述的非暂时性计算机可读储存媒体,其进一步包括用于在所述交叉开关的所述输出属于表条目的所需子集的情况下将所述第一向量输出生成为等于所述交叉开关的所述输出。
29.根据权利要求27所述的非暂时性计算机可读储存媒体,其进一步包括如果所述交叉开关的所述输出不属于表条目的所需子集,那么将所述第一向量输出生成为等于零值。
30.根据权利要求27所述的非暂时性计算机可读储存媒体,其中索引的所述第一子集是不连续的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/826,199 US20170046156A1 (en) | 2015-08-14 | 2015-08-14 | Table lookup using simd instructions |
US14/826,199 | 2015-08-14 | ||
PCT/US2016/041698 WO2017030675A1 (en) | 2015-08-14 | 2016-07-11 | Table lookup using simd instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924306A true CN107924306A (zh) | 2018-04-17 |
CN107924306B CN107924306B (zh) | 2021-07-20 |
Family
ID=56511930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680044676.8A Active CN107924306B (zh) | 2015-08-14 | 2016-07-11 | 使用simd指令的表查找 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20170046156A1 (zh) |
EP (1) | EP3335108B1 (zh) |
JP (1) | JP2018523245A (zh) |
KR (1) | KR20180039078A (zh) |
CN (1) | CN107924306B (zh) |
WO (1) | WO2017030675A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10483981B2 (en) * | 2016-12-30 | 2019-11-19 | Microsoft Technology Licensing, Llc | Highspeed/low power symbol compare |
CN109086126B (zh) * | 2018-06-15 | 2022-01-21 | 创新先进技术有限公司 | 任务调度处理方法、装置、服务器、客户端及电子设备 |
JP7088868B2 (ja) * | 2019-03-22 | 2022-06-21 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、通信方法及びプログラム |
US20230393855A1 (en) * | 2022-06-06 | 2023-12-07 | Advanced Micro Devices, Inc. | Register based simd lookup table operations |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266758B1 (en) * | 1997-10-09 | 2001-07-24 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US20050027967A1 (en) * | 2003-07-30 | 2005-02-03 | Zeev Sperber | Apparatus and method for two micro-operation flow using source override |
CN101371248A (zh) * | 2006-10-03 | 2009-02-18 | 香港应用科技研究院有限公司 | 可配置的单指令多数据单元 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
CN103080899A (zh) * | 2010-07-13 | 2013-05-01 | 超威半导体公司 | 图形处理器中simd单元的动态启用和禁用 |
US20140019718A1 (en) * | 2012-07-10 | 2014-01-16 | Shihjong J. Kuo | Vectorized pattern searching |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN103793876A (zh) * | 2012-10-26 | 2014-05-14 | 辉达公司 | 分布式拼接式进行高速缓存 |
CN103970506A (zh) * | 2008-03-28 | 2014-08-06 | 英特尔公司 | 用于实现高效同步和并行归约操作的向量指令 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7739319B2 (en) * | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
US9519617B2 (en) * | 2011-07-14 | 2016-12-13 | Texas Instruments Incorporated | Processor with instruction variable data distribution |
-
2015
- 2015-08-14 US US14/826,199 patent/US20170046156A1/en not_active Abandoned
-
2016
- 2016-07-11 EP EP16742126.2A patent/EP3335108B1/en active Active
- 2016-07-11 CN CN201680044676.8A patent/CN107924306B/zh active Active
- 2016-07-11 WO PCT/US2016/041698 patent/WO2017030675A1/en active Application Filing
- 2016-07-11 KR KR1020187004324A patent/KR20180039078A/ko unknown
- 2016-07-11 JP JP2018506579A patent/JP2018523245A/ja active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266758B1 (en) * | 1997-10-09 | 2001-07-24 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US20050027967A1 (en) * | 2003-07-30 | 2005-02-03 | Zeev Sperber | Apparatus and method for two micro-operation flow using source override |
CN101371248A (zh) * | 2006-10-03 | 2009-02-18 | 香港应用科技研究院有限公司 | 可配置的单指令多数据单元 |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
CN103970506A (zh) * | 2008-03-28 | 2014-08-06 | 英特尔公司 | 用于实现高效同步和并行归约操作的向量指令 |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
CN103080899A (zh) * | 2010-07-13 | 2013-05-01 | 超威半导体公司 | 图形处理器中simd单元的动态启用和禁用 |
US20140019718A1 (en) * | 2012-07-10 | 2014-01-16 | Shihjong J. Kuo | Vectorized pattern searching |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN103793876A (zh) * | 2012-10-26 | 2014-05-14 | 辉达公司 | 分布式拼接式进行高速缓存 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
Non-Patent Citations (1)
Title |
---|
刘胜: "超宽SIMD DSP片上并行数据访存关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
EP3335108A1 (en) | 2018-06-20 |
WO2017030675A1 (en) | 2017-02-23 |
EP3335108B1 (en) | 2019-12-18 |
KR20180039078A (ko) | 2018-04-17 |
JP2018523245A (ja) | 2018-08-16 |
US20170046156A1 (en) | 2017-02-16 |
CN107924306B (zh) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924306A (zh) | 使用simd指令的表查找 | |
US10127282B2 (en) | Partitionable ternary content addressable memory (TCAM) for use with a bloom filter | |
KR101921373B1 (ko) | 상태 기계 엔진들에 대한 결과들 생성 | |
Lehtonen et al. | Stateful implication logic with memristors | |
Ullah et al. | E-TCAM: An efficient SRAM-based architecture for TCAM | |
CN104272278B (zh) | 用于更新共享高速缓冲存储器的方法和多线程处理系统 | |
CN115100018A (zh) | 用于处理图像的图像处理器和方法 | |
US20150331799A1 (en) | Pre-decoding analysis based configuration information cache management method and system | |
CN110325972A (zh) | 存储器阵列页面表格寻选 | |
CN109003640A (zh) | 存储器中子阵列之间的数据传送 | |
CN107851023A (zh) | 基于指令编码确定预提取指令 | |
CN104425002B (zh) | 时钟控制全自旋逻辑电路 | |
CN103827818A (zh) | Fifo加载指令 | |
US20210082520A1 (en) | Processor in non-volatile storage memory | |
JP5027515B2 (ja) | 任意のアルゴリズムを並列計算するための再構成可能な論理回路装置 | |
CN103814372A (zh) | 快速最小值和最大值搜索指令 | |
CN105677755A (zh) | 一种处理图数据的方法及装置 | |
US10489155B2 (en) | Mixed-width SIMD operations using even/odd register pairs for wide data elements | |
JP2007522571A5 (zh) | ||
Nguyen et al. | An efficient I/O architecture for RAM-based content-addressable memory on FPGA | |
CN107851026A (zh) | 电力高效获取适应 | |
CN111566614B (zh) | 位宽匹配电路、数据写入装置、数据读出装置和电子设备 | |
JP6229990B2 (ja) | 連想記憶装置、インデックス生成器、及び登録情報更新方法 | |
JP2018014153A (ja) | 半導体装置 | |
CN105144084A (zh) | 提高处理器中返回分支指令的执行速度的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |