CN107111489B - 莫顿坐标调整处理器、方法、系统和指令 - Google Patents
莫顿坐标调整处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN107111489B CN107111489B CN201580059140.9A CN201580059140A CN107111489B CN 107111489 B CN107111489 B CN 107111489B CN 201580059140 A CN201580059140 A CN 201580059140A CN 107111489 B CN107111489 B CN 107111489B
- Authority
- CN
- China
- Prior art keywords
- instruction
- packed data
- morton
- processor
- data operand
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 56
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000003860 storage Methods 0.000 claims description 54
- 230000008859 change Effects 0.000 claims description 21
- 230000015654 memory Effects 0.000 description 166
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 72
- 238000010586 diagram Methods 0.000 description 53
- 238000007667 floating Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 20
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000003491 array Methods 0.000 description 9
- 230000003416 augmentation Effects 0.000 description 9
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000002829 reductive effect Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000003247 decreasing effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000032683 aging Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 241000593989 Scardinius erythrophthalmus Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 201000005111 ocular hyperemia Diseases 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/30018—Bit or string 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种处理器包括解码单元,所述解码单元用于对指令进行解码,所述指令用于指示包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标将被映射到的多个点的多维空间的维数、所述多维空间的给定维度、以及目的地。执行单元与所述解码单元耦合。所述执行单元响应于所述解码单元对所述指令进行解码而将结果紧缩数据操作数存储在所述目的地。所述结果操作数将包括多个莫顿坐标,所述莫顿坐标各自对应于所述源操作数的所述莫顿坐标中的一个不同莫顿坐标。所述结果操作数的莫顿坐标将被映射到所述多维空间中的与所述源操作数的对应莫顿坐标将被映射到的点相差所述给定维度的固定变化的点。
Description
技术领域
本文描述的实施例总体上涉及处理器。特别地,本文描述的实施例总体上涉及莫顿(Morton)坐标在处理器中的使用。
背景信息
计算机系统和其他电子装置经常利用按照数据结构组织的数据。数据结构可以表示数据的特定安排或组织。通常在计算机系统中使用的一种常见类型的数据结构是数组,诸如二维(2D)数组。
图1示出了二维(2D)数组100的示例,其中数据项(例如值7、16、24、27等)被安排在两个维度上。代表性地,2D数据结构可以表示表格、矩阵等。在该图示中,所述两个维度由第一维度或x轴102以及第二维度或y轴104限定。x轴和y轴相互垂直并且限定将所述数据项安排在其中的2D网格。2D数组中的数据项可以通过沿着两个轴的x和y索引或坐标的值来标识。x坐标表示从两轴相交的原点测量的沿着x轴的距离和/或相对位置,而y坐标表示从所述原点沿着y轴测量的距离和/或相对位置。在所示示例中,x坐标和y坐标具有为0、1、2和3的值。代表性地,坐标或索引可以表示行数和列数。作为示例,具有值14的数据项可以由可以指示所述数据项位于第2列第3行的x,y坐标(1,2)来标识。类似地,具有值24的数据项可以通过将y坐标递减一个单位获得x,y坐标(1,1)来标识。可设想其他示例,其中2D数据结构表示笛卡尔(Cartesian)坐标系,并且坐标可以表示笛卡尔坐标系中的点的位置。
在计算机系统和其他电子装置中,这样的数组和其他数据结构可以被存储在存储器或其他线性存储装置中。用于将2D和其他多维数组存储在存储器中的不同方式是可能的。例如,2D数组能够以行优先次序存储。以行优先次序,在存储器中数组的行是连续的。例如,数据项可以按照次序27、3、8、11、9、24、7、1、8、14、16、2、7、16、4和20存储在存储器中。可替代地,2D数组能够以列优先次序存储。以列优先次序,在存储器中数组的列是连续的。例如,数据项可以按照次序27、9、8、7、3、24、14、16、8、7、16、4、11、1、2和20存储在存储器中。
附图说明
可以通过参考以下说明和用于展示多个实施例的附图来最佳地理解本发明。在附图中:
图1示出了二维(2D)数组的示例。
图2A示出了映射到图1的2D数组的莫顿次序曲线的示例。
图2B是示出示例2D、3D和4D莫顿坐标的框图。
图3是可操作用于执行莫顿坐标调整指令的实施例的处理器的实施例的框图。
图4是执行莫顿坐标调整指令的实施例的方法的实施例的方框流程图。
图5是将源3D莫顿坐标调整到结果/经调整3D莫顿坐标以反映给定或所指示的维度减一的示例实施例的框图。
图6是示出用于将源紧缩数据操作数中的2D莫顿坐标调整为结果紧缩数据操作数中的对应经调整2D莫顿坐标以反映所指示的给定维度减小的2D莫顿坐标调整操作的示例实施例的框图。
图7是示出用于将源紧缩数据操作数中的3D莫顿坐标调整为结果紧缩数据操作数中的对应经调整3D莫顿坐标以反映所指示的给定维度减小的3D莫顿坐标调整操作的示例实施例的框图。
图8是适用于莫顿坐标调整指令的一个或多个实施例的立即数的特定示例实施例的框图。
图9是可操作用于执行莫顿坐标调整指令的实施例的合适处理器的更详细的示例实施例的框图。
图10是莫顿坐标调整指令的实施例的框图。
图11A至图11C是示出根据本发明的多个实施例的通用向量友好指令格式及其指令模板的框图。
图12A和图12B是示出根据本发明的多个实施例的示例特定向量友好指令格式和操作码字段的框图。
图13A至图13D是示出根据本发明的多个实施例的示例特定向量友好指令格式及其字段的框图。
图14是寄存器架构的实施例的框图。
图15A是示出有序流水线的实施例和寄存器重命名乱序发出/执行流水线的实施例的框图。
图15B是处理器核的实施例的框图,所述处理器核包括耦合到执行引擎单元的前端单元,并且所述前端单元和执行引擎单元都耦合到存储器单元。
图16A是单个处理器核的实施例、和其与管芯上互连网络的连接以及其二级(L2)高速缓存的本地子集的框图。
图16B是图16A的处理器核的一部分的放大视图的实施例的框图。
图17是可以具有多于一个核的、可以具有集成存储器控制器的、以及可以具有集成图形的处理器的实施例的框图。
图18是计算机架构的第一实施例的框图。
图19是计算机架构的第二实施例的框图。
图20是计算机架构的第三实施例的框图。
图21是计算机架构的第四实施例的框图。
图22是根据本发明的多个实施例的用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。
具体实施方式
本文公开了莫顿坐标调整指令、用于执行所述指令的处理器、当处理或执行所述指令时由所述处理器执行的方法、以及结合用于处理或执行所述指令的一个或多个处理器的系统。在下面的描述中,阐述了许多具体细节(例如,具体的指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他情况下,未详细示出公知的电路、结构和技术,以避免模糊对本说明书的理解。
一个挑战在于,数据项存储在存储器或线性存储装置中的方式可能会显著影响使用所述数据项的算法的性能。一方面,一般需要将数据项从存储器读入处理器,但是一次只能从存储器将有限数量的位读入处理器。例如,通常处理器仅能够一次从存储器读取512位的连续数据(例如,在单次读取操作中)。取决于数据项是以行优先次序、列优先次序、还是其他次序存储的,将以连续的次序读取不同的数据项。例如,如果数据项是以行优先次序存储的,则可以按照次序27、3、8、11、9、24等读取数据项,直到最大的512位。相反,如果数据项是以行优先次序存储的,则可以按照次序27、9、8、7、3、24等读取数据项,直到最大的512位。一般地,从存储器的每次读取操作可能仅能够从数组中获得感兴趣的一些数据项。作为示例,尤其是当数组大(例如,至少具有多于512位)时,如果数据项是以行优先次序存储的话,甚至不可能在同一读取操作中从所述数组的第一列获得在不同行但在相同列中的相邻数据(例如,数据项27和9),即使这些数据项在数组中彼此相邻。当数据是以列优先次序时,以及对于3D和4D数组的数据的存储,可能会遇到类似的情况。
所述数据项被安排在存储器中的方式通常还影响将数据项有效地高速缓存在处理器的一个或多个高速缓存中的能力。对所述(多个)高速缓存中的数据项的访问通常比对存储器中的数据项的访问具有更低的延迟。然而,即使感兴趣的数据项位于所述(多个)高速缓存中,如果数据项被分散在许多不同的高速缓存线之间,则趋向于导致较差的高速缓存利用。通常,每个高速缓存线存储已经从存储器读取的512位的连续数据。如果数据项没有以对于使用所述数据的相关算法有效的方式安排在存储器中,则数据项在所述高速缓存线中可能是稀疏的。在严重的情况下,每个高速缓存线可以仅保存感兴趣的单个数据项。相反,如果所述数据项是以对于特定算法高效的方式安排在存储器中,则感兴趣的数据项可以被更密集地紧缩到所述高速缓存线中,其中每个高速缓存线包含多个到许多感兴趣的数据项。这可以有助于提高所述(多个)高速缓存的有效性。类似地,如果所述数据项是以对于特定算法高效的方式安排在存储器中,则在每次读取操作中至少平均地可以将更多的感兴趣的数据项目读入处理器。因此,允许以对特定算法有效的方式将数据安排在存储器中的途径可以有助于提高性能。
存在各种不同类型的趋向于对相对于其他数据具有多维局部性或邻近性的数据进行处理的算法。作为一个示例,图像处理算法(例如,减少红眼、压缩等)通常趋向于一起或同时处理相邻、附近或邻近像素组的数据。所述算法对于相邻像素的块的数据而不是对于单行或列中的所有像素的数据(例如,可能是行优先次序或列优先次序安排中的情况)可能相对更为感兴趣。类似地,在许多视频处理算法(例如,压缩、视频监控分析、机器人视觉等)中,通常一起或同时处理用于附近像素组的数据和/或连续视频帧的对应像素中的数据。例如,通常通过存储这样的像素之间的差异而不是绝对像素值来实现压缩。还趋向于利用具有多维局部性的数据的其他应用或算法的示例包括但不限于:断层照相分析、地震分析、几何建模、矩阵运算(例如,矩阵相乘和/或转置)、有限元分析、射线跟踪、傅里叶变换、并行数据构建应用、以及图形应用等。然而,如以上所讨论的,尤其是当涉及相对较大的数组时,行优先次序、列优先次序、以及数据的各种其他安排通常不能为大量利用具有多维局部性的数据的应用提供对所述数据的有效安排。其结果是,保留多维局部性的组织所述数据的其他方式将趋向于为某些应用程序提供某些优势。
Z次序曲线(也称为莫顿次序曲线)是能够在保留数据的多维局部性或邻近性的同时将多维数据或空间(例如,笛卡尔坐标系数据或空间和/或n维数欧几里德(Euclidian)数据或空间)映射到单一维度的连续空间填充曲线或函数。也就是说,莫顿次序曲线可以将2D、3D、4D或其他多维空间中的数据以保留数据的多维局部性的方式映射到数据的线性列表或安排上(例如,在多维空间中具有局部性的数据在由莫顿曲线提供的线性列表或安排中也具有局部性)。沿莫顿次序曲线的数据的次序称为Z曲线次序或莫顿次序。莫顿次序被反映在每个点的莫顿代码或莫顿坐标或莫顿索引中。Z次序曲线具有线性地连接四个点的作为基本单位的Z形曲线。通过将这些Z形曲线或单元中的多个或许多Z形曲线或单元连接在一起以填充2D、3D、4D或其他多维空间来形成整个Z次序空间填充曲线。
图2A示出了映射到图1的2D数组100的Z次序曲线或莫顿次序曲线206的示例。如图所示,多个Z形曲线或单元(在该示例中为四个)可以以线性安排的方式连接在一起以遍历或填充2D数组中的所有点。在该示例中,由于在2D数组中存在十六个数据项,所以各自具有四个点的四个Z形单元完全遍历2D数组中的十六个数据项。在图示中,坐标是以十进制计数法示出的(例如,0、1、2、3等)。坐标的等价二进制表示207也被显示十进制坐标旁边的括号中(例如,000、001、010、011等)。作为示例,十进制坐标值2等价于二进制坐标值“010”。
将莫顿次序曲线映射到数组涉及确定所述数组的点或数据项的莫顿代码或坐标208。可以通过以固定模式使多个多维坐标的二进制表示的位交织来计算沿莫顿次序曲线的单独点的莫顿坐标。例如,如果将x坐标的第一、第二和第三位分别表示为x1、x2和x3,并且如果y坐标的第一、第二和第三位分别表示为y1、y2、y3,则可以通过使所述位交织或“混洗”成次序x1y1x2y2x3y3来计算点的莫顿坐标。为了进一步说明,可以通过使这些坐标的二进制表示的位(即,001,000)交织以获得值为“000001”的莫顿坐标208来找到点(x=1,y=0)的莫顿坐标。从右到左,第一、第三和第五位对应于x坐标,而第二、第四和第六位对应于y坐标。在图示中,最右侧示出最低有效位或最低阶位。类似地,在3D和4D中,可以通过分别使用于三个和四个坐标的二进制表示的位交织来找到3D或4D莫顿坐标。可以类似地完成更高的维度。在相反方向上,计算多维坐标的二进制表示涉及将莫顿坐标的位的反向固定解交织或“去混洗”成分开的坐标。例如,莫顿坐标x1y1x2y2x3y3可以通过对位x1y1x2y2进行解交织来转换成x和y坐标的二进制表示,以生成为x1x2x3的x坐标和为y1y2y3的y坐标。为了进一步说明,莫顿坐标“000001”可以被转换成x坐标“001”和y坐标“000”的二进制表示。类似地,在3D和4D中,可以通过对3D或4D莫顿坐标的位进行解交织或去混洗来找到三个或四个不同坐标的二进制表示。
图2B是示出示例6位2D莫顿坐标208-1、示例9位3D莫顿坐标208-2、以及示例12位4D莫顿坐标208-3的框图。在该示例中,x、y和z坐标各自仅用三个位表示。在其他实施例中,3D莫顿坐标中的x、y和z坐标各自可以具有其他数量的位。例如,对于2D莫顿坐标,x、y和z坐标各自可以具有约七至十六位,以允许具有两倍的位的2D莫顿坐标适应32位数据元素,或者可以具有约七至三十二位,以允许具有两倍的位的3D莫顿坐标适应64位数据元素。同样,对于3D莫顿坐标,x、y和z坐标各自可以具有约七至十位,以允许具有三倍的位的3D莫顿坐标适应32位数据元素,或者可以具有约七至二十一位,以允许3D莫顿坐标适应64位数据元素。类似地,对于4D莫顿坐标,x、y和z坐标各自可以具有约六至八位,以允许具有四倍的位的4D莫顿坐标适应32位数据元素,或者可以具有约六至十六位,以允许4D莫顿坐标适应64位数据元素。
部分由于其表示数据的多维局部性的能力,2D、3D、4D和/或其他多维数组可以被重新安排到对应的2D、3D、4D和/或其他多维莫顿次序表示,以便帮助提高某些类型的应用的性能。例如,在应用对数据进行处理之前,可以在存储器中将数据从2D、3D或4D数组重新安排到对应的2D、3D或4D莫顿次序表示。在所述应用使用莫顿次序对数据进行处理之后,在某些情况下,可能希望的是将2D、3D或4D莫顿次序表示转换回2D、3D或4D数组。在其他情形下,为了提高性能或出于其他原因,数据可能最初是以2D、3D或4D莫顿次序表示来组织的、并且被重新安排到2D、3D或4D数组。在任何情况下,总有时候在莫顿次序安排与多维数组和/或多维空间之间进行转换是合适的。然而,这样的转换一般趋向于是计算密集的(例如,一般趋向于涉及许多不同坐标的位的交织或解交织)。
在其他情况下,虽然数据是根据多维莫顿次序安排来排序的,在多维空间坐标中来回移动时在多维莫顿坐标中来回移动可能是适当的。例如,在分别对应于具有不同坐标的多维空间中的点的一对多维莫顿次序坐标之间移动可能是适当的。例如,如图2A所示,在参考号203处,可能希望的是从分别对应于2D数组中的点的2D莫顿坐标“000110”和2D莫顿坐标“000011”移动,其中x坐标从x=2减一到x=1,而多维空间中的所有其他坐标(在这种情况下只有y坐标)保持不变。作为另一示例,如图2A所示,在参考号205处,可能希望的是从分别对应于2D数组中的点的2D莫顿坐标“001101”和2D莫顿坐标“000111”移动,其中y坐标从y=2减一到y=1,而多维空间中的所有其他坐标(在这种情况下只有x坐标)保持不变。注意到,在这两个示例中,初始和最终的2D莫顿坐标在莫顿次序中不是相继的(例如,它们分别从“6”变为“3”和从“13”变为“7”),尽管在其他情况下,初始和最终的2D莫顿坐标在莫顿次序可以是相继的。
存在各种各样的不同原因,其中在多维莫顿坐标中以这种方式来回移动可能是所希望或适当的。本发明的范围不限于任何已知的此类原因。代表性地,作为一个可能的示例,在特定算法中可能希望的是减小2D矩阵或数组的行索引和/或列索引,以便在对图像进行处理时减少2D图像的给定行或列中的像素数等。在一些情况下,可能更有用的是(例如,值得计算开销和时间),将多维莫顿次序安排完全转换成多维空间安排,以使得按莫顿次序以这种方式来回移动是不需要的。然而,在其他情况下,可能不值得为完全转换成多维莫顿次序安排花费计算开销和/或时间,但能够在与多维空间中的坐标之一的差异(例如减小一个单位)(例如,在4D空间中的x、y、z或t坐标之一的减一)相对应的莫顿坐标之间移动仍然可以是有用的。
由于多维莫顿坐标是通过使单独多维坐标的位交织或混洗形成的,一种可能的途径是使用一个或多个指令来将所述位解交织或去混洗到分开的多维坐标中,使用一个或多个指令使所述多维坐标之一递减(例如,使x坐标递减),并且然后使用一个或多个指令使分开的多维坐标的位(包括递减的x坐标的位)重新交织或重新混洗以确定新的对应多维莫顿坐标。然而,这样的解交织和重新交织和/或这样的对使用多个指令的需求可能趋向于花费更多的时间和/或消耗更多的处理资源和/或消耗更多的功率。本文公开的是多个单一指令,所述指令可以用于当改变(例如,递减)多维空间的坐标(例如,使x坐标递减、使y坐标递减、使z坐标递减、或使t坐标递减等)时来加速确定新的多维莫顿坐标。
图3是可操作用于执行莫顿坐标调整指令312的实施例的处理器310的实施例的框图。在一些实施例中,所述处理器可以是通用处理器(例如,在台式机、膝上型计算机或其他计算机中使用的类型的通用微处理器或中央处理单元(CPU))。可替代地,所述处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)、以及控制器(例如微控制器)。所述处理器可以具有以下各项中的任一项:各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构,或者具有不同架构的组合(例如,不同的核可以具有不同的架构)。
在操作过程中,处理器310可以接收莫顿坐标调整指令312。例如,可以从互连上的存储器获取或以其他方式接收所述指令。所述指令可以表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。
再次参考图3,所述处理器包括解码单元或解码器314。所述解码单元可以接收莫顿坐标调整指令并对其进行解码。莫顿坐标调整指令可以是所述处理器的指令集的一部分。所述解码单元可以输出反映、表示相对较高级别的莫顿坐标调整指令的和/或从其导出的一个或多个相对较低级别的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等)。所述解码单元可以使用各种不同的机制来实现,包括但不限于:微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及适于实现解码单元的其他机制。
在一些实施例中,代替直接提供给解码单元的莫顿坐标调整指令,可以可选地使用指令仿真器、翻译器、变形器、解释器或其他指令转换模块。各种类型的合适的指令转换模块能够以软件、硬件、固件或其组合来实现。在一些实施例中,指令转换模块可以被定位在所述处理器外部,例如在分开的管芯上和/或在存储器(例如,静态、动态或运行时仿真模块)中。作为示例,指令转换模块可以接收莫顿坐标调整指令(其可以是第一指令集),并且可以对莫顿坐标调整指令进行仿真、翻译、变形、解释或以其他方式转换成一个或多个对应中间指令或控制信号(其可以是不同的第二指令集)。所述第二指令集的一个或多个中间指令或控制信号可以被提供给解码单元,所述解码单元可以将它们解码成可由处理器的本机硬件(例如,一个或多个执行单元)执行的一个或多个低级指令或控制信号。
再次参考图3,处理器还包括一组紧缩数据寄存器318。所述紧缩数据寄存器各自可以表示可操作用于存储紧缩数据、向量数据或单指令多数据(SIMD)数据的管芯上存储位置。在SIMD架构中,紧缩数据指令、向量指令或SIMD指令可以对多个数据元素或多对数据元素同时或并行地进行操作。处理器可以具有并行执行硬件,该并行执行硬件响应于紧缩数据指令以同时或并行地执行多个操作。多个数据元素可以作为紧缩数据或向量数据被紧缩在一个寄存器或存储器位置内。在紧缩数据中,寄存器或其他存储位置的位可以在逻辑上划分为数据元素序列。例如,256位宽的紧缩数据寄存器可以具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。所述数据元素各自可以表示分开的单件数据(例如,像素颜色、坐标等),所述单件数据可以分开地和/或独立于其他数据元素地操作。所述紧缩数据寄存器可以表示软件和/或编程器可见的架构可见或架构寄存器、和/或由处理器的指令集的用于标识操作数的指令指示的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。紧缩数据寄存器可以使用已知技术在不同的微体系结构中以不同的方式实现,并且不限于任何特定类型的设计。适合类型的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、及其组合。
在一些实施例中,所述指令可以明确地指定(例如,通过一个或多个字段或一组位)、或者以其他方式指示(例如,隐含地指示)源紧缩数据操作数320。所述源紧缩数据操作数可以包括多个莫顿坐标。所述指令还可以明确地指定(例如,通过一个或多个字段或一组位)、或者以其他方式指示有待存储结果紧缩数据操作数324的目的存储位置。作为一个示例,所述指令可以具有多个操作数指定字段来指定用于所述源紧缩数据操作数和目的存储位置中的一者或多者的寄存器、存储器单元或其他存储位置。可替代地,所述源紧缩数据操作数和目的存储位置中的一者或多者可以可选地对所述指令隐含(例如,对所述指令的操作数隐含)。作为另一选项,用于所述源紧缩数据操作数的存储位置还可以被重新用作结果紧缩数据操作数的目的存储位置(例如,初始对于源操作数和随后对于结果操作数使用相同的存储位置对于指令可以是隐含的)。如图所示,在一些实施例中,源紧缩数据操作数320可以可选地存储在第一紧缩数据寄存器中,并且结果紧缩数据操作数可以可选地存储在第二紧缩数据寄存器中,然而这不是必需的。可替代地,可以可选地使用存储器位置或其他存储位置。
在一些实施例中,所述指令还可以指定或以其他方式指示具有所述源紧缩数据操作数的所述莫顿坐标所映射到的点的多维空间的维数。在一些实施例中,所述指令可操作用于将所述多维空间的所述维数指示为至少两个不同维度中的任一者(例如,二维和三维中的任一者)、或者在一个实施例中指示为至少三个不同维度中的任一者(例如,二维、三维和四维中的任一者)。在一些实施例中,所述指令可以具有用于指示所述维数的立即数(例如,1位可以指示至少两个不同维度中的任一者,或者2位可以指示至少三个或至少四个不同维数中的任一者)。可替代地,指令(例如,操作码)可以专用于给定维数,并且所述指令(例如,操作码)可以隐含地指示所述维数。例如,指令集可以包括具有用于不同维数(例如,二维、三维、四维等)的不同操作码的不同指令。
在一些实施例中,所述指令还可以指定或以其他方式指示多维空间的给定维度。所述给定维度可以表示在其上坐标位置中存在固定变化(例如在给定维度上的坐标单位递减)的维度。例如,2D、3D或4D空间或坐标系的x坐标(或y坐标)可以减一。在一些实施例中,所述指令可以具有用于指示所述给定维度的一个或多个位(例如,立即数)。例如,在2D空间中,可以使用1位来将给定维度指示为两个维度中的任一者。作为另一示例,在3D或4D空间中,可以使用2位来将所述维度指示为两个或三个相应维度中的任一者。
再次参考图3,执行单元316与解码单元314和紧缩数据寄存器318相耦合。所述执行单元可以接收表示莫顿坐标调整指令312和/或从其导出的一个或多个经解码或转换的指令或控制信号。所述执行单元还可以接收将包括莫顿坐标的源紧缩数据操作数320。所述执行单元响应于和/或作为所述指令的结果(例如,响应于从所述指令解码的一个或多个指令或控制信号)而可操作用于将结果紧缩数据操作数324存储在由所述指令指示的目的地存储位置中。所述结果紧缩数据操作数可以包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标。在一些实施例中,所述结果紧缩数据操作数的所述莫顿坐标可以被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差由所述指令指示的给定维度的固定变化的点。在一些实施例中,所述固定变化可以是给定维度上的坐标的单位递减(例如,所述点的x坐标可以减一(例如,从x=7到x=6))。在一些实施例中,可以生成所述结果紧缩数据操作数的所述莫顿坐标,而不会对源紧缩数据操作数的与不同维度相对应的对应莫顿坐标的位进行解交织(例如,不会对与x和y维或x、y和z维相对应的不同交织位进行解交织)。也就是说,给定坐标可以在莫顿坐标中原位或在适当位置递减。在一些实施例中,结果紧缩数据操作数中的至少一个莫顿坐标可能不与源紧缩数据操作数的对应莫顿坐标成相继莫顿次序(例如,在图2A中,可以从相对位置13处的莫顿坐标变换到相对位置7处的莫顿坐标,如参考号205所示)。在一些实施例中,结果可以是图5-7所示出和描述的结果中的任一者,然而本发明的范围不限于此。
所述执行单元和/或处理器可以包括可操作用于执行所述莫顿坐标调整指令、和/或响应于所述莫顿坐标调整指令和/或因其而存储所述结果(例如,响应于从所述莫顿坐标调整指令解码的一个或多个指令或控制信号)的具体或特定逻辑(例如,晶体管、集成电路或与固件(例如,存储在非易失性存储器中的指令)和/或软件潜在组合的其他硬件)。作为示例,所述执行单元可以包括逻辑单元、算术逻辑单元等。在一些实施例中,所述执行单元可以利用一个或多个掩码、一个或多个移位电路、以及一个或多个逻辑电路(例如,AND、NOT等)来执行所述指令。可替代地,可以可选地使用本领域已知的其他位操控电路。
为了避免模糊描述,已经示出和描述了相对简单的处理器310。然而,处理器可以可选地包括其他组件。这些组件的可能实例包括但不限于图9和/或图16-19中任一者所示出和描述的组件。各种不同的实施例可以包括这样的组件的各种不同的组合和配置。这样的组件可以彼此耦合,以便允许它们根据其操作进行操作。在一些实施例中,所有组件可以被包含在处理器的至少一个核、一些核、核的子集或所有核中。在多个不同实施例中,处理器可以具有至少一个、二个、四个、八个、十六个、三十二个、或更多个核。
图4是执行莫顿坐标调整指令的实施例的方法430的实施例的方框流程图。在多个不同实施例中,所述方法可以由处理器、指令处理设备、或其他数字逻辑装置执行。在一些实施例中,图4的方法可以由图3的处理器执行和/或在其内执行。本文中针对图3的处理器所描述的组件、特征和特定可选细节也可选地适用于图4的方法。可替代地,图4的方法可以由相似或不同的处理器或设备和/或在其内执行。此外,图3的处理器可以执行与图4的方法相同、相似或不同的方法。
所述方法包括在框432处接收莫顿坐标调整指令。在多个不同方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收所述指令。在多个不同方面,可以从处理器外和/或管芯外的源(例如,从存储器、互连等)、或者从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收指令。所述指令可以指定或以其他方式指示包括多个莫顿坐标的源紧缩数据操作数,可以指定或以其他方式指示具有所述莫顿坐标被映射到的多个点的多维空间的维数,可以指定或以其他方式指示所述多维空间的给定维度,并且可以指定或以其他方式指示目的地存储位置。
在框434处,响应于所述指令和/或作为其结果(例如,响应于执行指令),可以将结果紧缩数据操作数存储在所述目的地存储位置中。在一些实施例中,所述结果紧缩数据操作数可以包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标(例如,在在源操作数和结果操作数内的相同的位位置或相对位置)。在一些实施例中,所述结果紧缩数据操作数的所述莫顿坐标可以被映射到所述多维空间中的可与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差由所述指令指示的给定维度的固定变化的点。
在一些实施例中,所述固定变化可以是单位递减(例如,所述点的x坐标可以减一)。在一些实施例中,所述指令操作用于将所述多维空间的所述维数指示为至少两个不同维度(例如,二维和三维)中的任一者、或者在一个情况下指示为至少三个不同维度(例如,二维、三维和四维)中的任一者。在一些实施例中,所述指令可以具有用于指示所述维数的立即数(例如,1位可以指示至少两个不同维度中的任一者,或者2位可以指示至少三个不同维数中的任一者)。在一些实施例中,所述指令可以具有用于指示给定维度(例如,在多个不同实施例中为至少两个、三个或四个不同的可能维度中的任一者)的一个或多个位(例如,立即数)。在一些实施例中,可以生成所述结果紧缩数据操作数的所述莫顿坐标,而不会对源紧缩数据操作数的与不同维度相对应的对应莫顿坐标的位进行解交织(例如,不会对与x和y维或x、y和z维相对应的不同交织位进行解交织)。在一些实施例中,所述源紧缩数据操作数和一个或多个结果紧缩数据操作数可以是图5-7中的任一者,然而本发明的范围不限于此。
所示的方法涉及多项架构操作(例如,从软件角度看可见的架构操作)。在其他实施例中,所述方法可以可选地包括一项或多项微架构操作。作为示例,所述指令可以被预取、存储在指令高速缓存中、由指令获取单元获取、解码、调度,源操作数可以被访问、相对于其他指令乱序地执行,执行单元可以执行用于实现所述指令的多项微架构操作等。
图5是将源3D莫顿坐标508调整到结果/经调整3D莫顿坐标508*以反映给定或所指示的维度减一的示例实施例的框图。源3D莫顿坐标具有9位,其中x、y和z坐标各自使用3位。如本文所使用的,x和y和z广泛地用于表示任何期望的坐标或维度。它们不限于任何已知的量,例如熟悉的笛卡尔坐标系中的空间坐标,而是可以用于潜在包括空间、时间、压力、温度、强度、电压等的任何期望的量。具体地,位0中的x1、位3中的x2和位6中的x3对应于x坐标或维度。同样地,位1中的y1、位4中的y2和位7中的y3对应于y维。类似地,位2中的z1、位5中的z2和位8中的z3对应于z维。其他实施例可以使用其他数量的位来表示所述坐标。例如,如果将3D莫顿坐标包含在32位数据元素中,则可以使用7位到10位。作为另一示例,如果要将3D莫顿坐标包含在64位数据元素中,则可以使用7位到21位或12位到21位。
在所示实施例中,使z维递减。在其他实施例中,可以使x维或y维递减。由于使z维递减,可以只需要调整源莫顿坐标中与z维相对应的位来实现z维的递减。y维和z维的位保持不变。
在一些实施例中,如参考号540所示,为了调整所述莫顿坐标以实现给定或所指示维度的递减(例如,在这种情况下为z维),可以设置与所述给定或所指示维度相对应的所有最低有效归零位(即,为二进制零的位),所述最低有效归零位比对应于所述给定或所指示维度的最低有效设置位更低有效。换句话说,这些尾随归零位可以从最初的二进制零改为二进制一。另外,如参考号542所示,对应于所述给定或所指示维度的最低有效设置位可以被清零或归零(即,从最初的二进制一改为二进制零)。这有效地调整了莫顿坐标,以反映所述给定或所指示维度减一。
考虑到图示中所示的具体示例位,在源3D莫顿坐标508中,位8中的z3是z维上的最低有效设置位,因为位5中的z2和位2中的z1都被清零或归零。因此,如参考号542和结果/经调整3D莫顿坐标508*的位8所示,z3可以被清零或归零。此外,如参考号540和结果/经调整3D莫顿坐标508*的位5和为2所示,z2和z1可以被设置成二进制一。这只是一个说明性示例,但类似的改变可以用于其他位串并且表示其他维度(例如,x或y维)上的递减。
注意到,可以调整或改变莫顿坐标,而不需要对各种不同维度或坐标的位进行解交织、改变和重新交织。相反,这些位可以在莫顿坐标中原位或在适当位置进行操控。有利地,这可以有助于减少所需的计算量和/或指令量和/或功率消耗。
图6是示出用于将源紧缩数据操作数620中的2D莫顿坐标(m)调整为结果紧缩数据操作数中的对应经调整2D莫顿坐标以反映所指示的给定维度减小的2D莫顿坐标调整操作650的示例实施例的框图。可以响应于莫顿坐标调整指令的示例实施例来执行所述操作。
所述指令可以指定或以其他方式指示源紧缩数据操作数620。所述源紧缩数据操作数具有多个2D莫顿坐标(m)。在具体示出的实施例中,源紧缩数据操作数具有数量N个2D莫顿坐标,标记为m1到mN。通常,所述莫顿坐标各自可以被存储在源紧缩数据操作数的不同数据元素中。在多个不同实施例中,源紧缩数据操作数的宽度可以是64位、128位、256位、512位或1024位,然而本发明的范围不限于此。在一些实施例中,源紧缩数据操作数的数据元素可以是32位数据元素或64位数据元素,然而本发明的范围不限于此。源紧缩数据操作数中的数据元素和/或莫顿坐标的数量可以是源紧缩数据操作数的位宽除以每个数据元素的位宽。在多个不同实施例中,源紧缩数据操作数中可以存在至少两个、至少四个、至少八个、至少十六个、至少三十二个、或多于三十二个的数据元素和/或莫顿坐标。
在图示中,示出了6位2D莫顿坐标的示例值。具体地,m1具有值为“000100”的6位2D莫顿坐标,m2具有值为“000110”的6位2D莫顿坐标,m3具有值为“001100”的6位2D莫顿坐标,并且mN具有值为“001110”的6位2D莫顿坐标。这些值各自以“y3x3y2x2y1x1”的格式写,其中最低有效位在右侧,并且其中x维的最低有效位是右侧的第一位。
在一些实施例中,所述指令还可以指定或以其他方式指示具有所述源紧缩数据操作数的莫顿坐标所映射到的点的多维空间的维数646。在该示例中,所述指令指示二维(2D)的维数。换句话说,源紧缩数据操作数的2D莫顿坐标被映射到2D空间中的点。其他实施例可以指示其他维数(例如,3D、4D等)。在多个不同实施例中,所述维数可以由所述指令的灵活字段或位灵活地指示或指定、或者可以对所述指令是隐含的(例如,对操作码是隐含的)。
在一些实施例中,所述指令还可以指定或以其他方式指示旨在递减或改变的给定维度648。在该示例中,所述指令指示旨在使x维减一。在替代实施例中,所述指令代替地指示旨在使y维减一。
可以响应于所述指令而(例如,由执行单元616)生成和存储结果紧缩数据操作数624。所述结果紧缩数据操作数可以被存储在可由所述指令指定或以其他方式指示的目的地存储位置。在多个不同实施例中,所述目的地存储位置可以是紧缩数据寄存器、存储器位置或其他存储位置。
所述结果紧缩数据操作数可以包括多个经调整2D莫顿坐标(m*)。在具体示出的实施例中,源紧缩数据操作数具有数量N个2D莫顿坐标,标记为m1 *到mN *。所述结果紧缩数据操作数的经调整2D莫顿坐标(m*)各自对应于源紧缩数据操作数的2D莫顿坐标(m)中的一个不同莫顿坐标(例如,在操作数内的对应位位置和/或相对位置)。在一些实施例中,所述结果紧缩数据操作数的经调整2D莫顿坐标(m*)可以被映射到所述多维空间中的与所述源紧缩数据操作数的对应2D莫顿坐标(m)将被映射到的点相差由所述指令指示的给定维度(例如,x维)的固定变化(例如,减一)的点。
如先前所提及的,在一些实施例中,为了调整所述莫顿坐标以实现给定或所指示维度的递减(例如,在这种情况下为x维),可以设置与所述给定或所指示维度相对应的所有最低有效归零位(即,为二进制零的位),所述最低有效归零位比对应于所述给定或所指示维度的最低有效设置位更低有效。换句话说,这些尾随归零位可以从最初的二进制零改为二进制一。另外,对应于所述给定或所指示维度的最低有效设置位可以被清零或归零(即,从最初的二进制一改为二进制零)。这有效地调整了2D莫顿坐标,以反映所述给定或所指示维度减一。
在图示中,示出了经调整6位2D莫顿坐标(m*)的对应示例值。具体地,m1 *具有值为“000001”的6位2D莫顿坐标,m2 *具有值为“000011”的6位2D莫顿坐标,m3 *具有值为“001001”的6位2D莫顿坐标,并且mN *具有值为“001011”的6位2D莫顿坐标。这些值仅是示例,但是示出了如何可以选择性地调整对应于所指示的给定维度(例如,在该示例中为x维)的位,同时使与其他非递减维度相对应的位保持不变。
图7是示出用于将源紧缩数据操作数720中的3D莫顿坐标(m)调整为结果紧缩数据操作数中的对应经调整3D莫顿坐标以反映所指示的给定维度减小的3D莫顿坐标调整操作752的示例实施例的框图。可以响应于莫顿坐标调整指令的示例实施例来执行所述操作。
图7的操作与图6的操作具有一定的相似之处,并且区别主要在于坐标是3D而不是2D。为了避免模糊描述,将主要描述用于图7的操作的不同的和/或附加的特征,而不重复与图6的操作相关的所有可选的相似或共同的特征和细节。然而,应当理解的是,除非另有说明或以其他方式清楚地显示,否则图6的前述特征和细节(包括变型和替代)也可以可选地适用于图7的操作。
如前所述,所述指令可以指定或以其他方式指示源紧缩数据操作数720。所述源紧缩数据操作数具有多个3D莫顿坐标(m)。除了具有3D莫顿坐标而不是2D莫顿坐标之外,源紧缩数据操作数可以与图6的源紧缩数据操作数相似或相同。在图示中,示出了9位3D莫顿坐标的示例值。具体地,m1具有值为“000101000”的9位3D莫顿坐标,并且mN具有值为“100111010”的9位3D莫顿坐标。如前所述,这些值各自以“y3x3y2x2y1x1”的格式被写。
在一些实施例中,所述指令还可以指定或以其他方式指示具有所述源紧缩数据操作数的所述莫顿坐标所映射到的点的多维空间的维数746。在该示例中,所述指令指示三维(3D)的维数。换句话说,源紧缩数据操作数的3D莫顿坐标被映射到3D空间(例如,3D笛卡尔坐标系和/或3D欧几里得空间)中的点。其他实施例可以指示其他维数(例如,2D、4D、5D等)。在多个不同实施例中,所述维数可以由所述指令的灵活字段或位灵活地指示或指定、或者可以对所述指令是隐含的(例如,对操作码是隐含的)。
在一些实施例中,所述指令还可以指定或以其他方式指示将递减或改变的给定维度748。在该示例中,所述指令指示将使x维减一。在替代实施例中,所述指令代替地指示将使y维减一。
可以响应于所述指令而(例如,由执行单元716)生成和存储结果紧缩数据操作数724。所述结果紧缩数据操作数可以包括多个经调整3D莫顿坐标m1 *至mN *,所述莫顿坐标各自对应于所述源紧缩数据操作数的3D莫顿坐标(m)中的一个不同莫顿坐标。在一些实施例中,所述结果紧缩数据操作数的经调整3D莫顿坐标(m*)可以被映射到所述多维空间中的与所述源紧缩数据操作数的对应3D莫顿坐标(m)将被映射到的点相差所指示的给定维度(例如,x维)的固定变化(例如,减一)的点。
所述莫顿坐标可以如前所述地进行调整。在图示中,示出了经调整9位3D莫顿坐标(m*)的对应示例值。具体地,m1具有值为“000100001”的9位2D莫顿坐标,并且mN具有值为“100110011”的9位3D莫顿坐标。这些值仅是示例,但是示出了如何可以选择性地调整对应于所指示的给定维度(例如,在该示例中为x维)的位,同时使与其他非递减维度相对应的位保持不变。
以下示出了用于实现名称为zorderprev的莫顿坐标调整指令的实施例的伪代码的一个可能示例。在一些实施例中,执行单元的硬件或逻辑可以被设计为使用移位逻辑、掩码逻辑、以及用于实现与所述伪代码中示出的逻辑操作相似或相同的逻辑操作(例如,AND、NOT等)的逻辑来实现所述指令。可替代地,本领域技术人员将理解基于本公开实现所述指令的其它设计。
zorderprev dst,src1,imm8
dst=src1;
unsigned long mask=1<<imm8[2:3];
while(mask&&!(mask&dst)){//查找尾随零
dstΛ=mask;//将它们变为一
mask=mask<<imm8[0:1];}//将掩码移位到下一个坐标值
if(mask)dst&=-mask;//第一个非零变为零(借位)
图8是适用于莫顿坐标调整指令的一个或多个实施例的立即数854的特定示例实施例的框图。所述立即数的一个或多个位可以表示维数说明符846。例如,在图示中,立即数的两个位(例如为[1:0])可以表示维数说明符846。所述维数说明符可以指定具有与所述指令相关联的莫顿坐标所映射到的点的多维度空间的维数。在一个实施例中,这两个位可以具有用于指定或指示2D的维数的第一二进制值(例如,“10”)、用于指定或指示3D的维数的不同的第二二进制值(例如,“11”)。在一些实施例中,这两个位可以可选地具有用于指定或指示4D的仍然不同的第三二进制值(例如,“00”)。在一些实施例中,这两个位可以可选地具有用于指定或指示仍然不同的维数(例如,5D)的仍然不同的第四二进制值(例如,“01”)。在其他实施例中,所述指令可操作用于仅允许一个维数、或者仅允许两个不同的维数。所述多维度空间的这些不同维数还可以被认为是莫顿坐标的维数(例如,不论莫顿坐标是2D、3D、4D等)。
所述立即数的一个或多个位可以表示维度说明符848。例如,在图示中,立即数的两个位(例如为[3:2])可以表示维度说明符848。所述维度说明符可以指定或指示有待改变(例如,递减)的维度。在一个实施例中,这两个位可以具有用于指定或指示第一维度(例如,x维)的第一二进制值(例如,“00”)、可以具有用于指定或指示第二维度(例如,y维)的不同的第二二进制值(例如,“01”)、并且可以具有用于指定或指示第三维度(例如,z维)的仍然不同的第三二进制值(例如,“10”)。可替代地,如果所述指令仅用于支持两个不同的维度,则单个位可以可选地用于指示这两个不同维度中的任一者。在一些实施例中(例如,在4D的情况下),这两个位可以具有用于指定或指示第四维度(例如,t维)的仍然不同的第四二进制值(例如,“11”)。
所示的立即数是8位立即数,然而本发明的范围不限于此。替代实施例可以使用2位、4位、6位、16位或其他立即数。在其他实施例中,维数说明符和/或维度说明符各自可以使用更少或更多的位。此外,可以可选地使用与所示的位不同的位。
图9是可操作用于执行莫顿坐标调整指令的实施例的合适处理器的更详细的示例实施例的框图。所述处理器包括核980。所述处理器可以可选地具有多个核(例如至少两个、至少四个、至少八个、至少三十个等)。在一些情况下,所有核都可以与所示的核相同,或者在其他情况下,一些核可以是不同的(例如,具有不同的组件或指令集)。在某些情况下,所有的核都可以执行如本文所公开的莫顿坐标调整指令,或者在其他情况下,只有一些核可以。核980包括用于预测分支程序流的分支预测单元981。所述分支预测单元与指令预取单元982耦合。所述指令预取单元可以通过与其耦合的存储器单元989从外部存储器预取或以其他方式接收包括所述莫顿坐标调整指令的多个指令。一级(L1)指令高速缓存与所述指令预取单元耦合。L1指令高速缓存可以高速缓存或以其他方式存储经预取或以其他方式接收的包括所述莫顿坐标调整指令的指令。指令获取单元984与L1指令高速缓存和解码单元914耦合。所述指令获取单元可以从L1指令高速缓存中获取或以其他方式接收包括莫顿坐标标调指令的多个指令,并且将包括莫顿位调整指令的所述指令提供给所述解码单元。所述解码单元可以与本文所描述的其他解码单元相同或相似。
所述处理器包括一个或多个寄存器堆单元918。通常,所述(多个)寄存器堆单元可以包括各种不同类型的寄存器,例如紧缩数据寄存器、通用寄存器、状态或标志寄存器、控制或配置寄存器等。在使用乱序(OOO)执行的实施例中,所述处理器还可以可选地包括与所述(多个)寄存器堆单元耦合的寄存器重命名和/或分配器单元,所述寄存器重命名和/或分配器单元用于分配资源并且对多个寄存器(例如,与所述莫顿坐标调整指令相关联的紧缩数据寄存器)执行寄存器重命名。此外,在OOO执行的情况下,所述处理器可以可选地包括与所述解码单元、重命名/分配单元以及一个或多个执行单元916耦合的一个或多个调度器单元986。所述(多个)调度器单元可以对所述执行单元的操作进行调度。所述执行单元中的至少一者可以与本文所描述的其他执行单元相同或相似。通常,所述处理器可以可选地具有多个不同类型的执行单元,例如整数执行单元、浮点执行单元、向量执行单元、一个或多个存储器存取单元987或总线接口单元等。在使用乱序(OOO)执行的实施例中,所述处理器还可以可选地包括与所述寄存器堆单元和重命名/分配器单元985耦合的用于引退或提交指令的引退或提交单元991。所述处理器可以包括用于缓冲或以其他方式存储包括多个数据元素和/或操作数的数据的L1数据高速缓存单元974,所述数据元素和/或操作数用于包括所述莫顿坐标标调指令的多个指令。可以可选地包括二级(L2)高速缓存单元990,并且可以可选地由多个核共享。所述L2高速缓存单元可以存储数据和包括所述莫顿坐标调整指令的多个指令。所述处理器还可以可选地包括用于高速缓存地址翻译数据的一个或多个翻译后备缓冲器(translation lookaside buffer,未示出)。在使用乱序(OOO)执行的实施例中,所述处理器还可以可选地包括用于对多个执行结果进行重新排序的重排序缓冲器(未示出)和/或一个或多个预留站(未示出)。处理器的各种实施例可以包括这些组件中的一些或全部组件的各种不同的组合和配置。实施例不限于任何已知的这种组合或配置。
图10是莫顿坐标调整指令1012的实施例的框图。所述指令包括操作代码或操作码1080。所述操作码可以表示可操作用于标识有待执行的指令和/或操作(例如,基于多维空间或多维坐标系中的给定坐标的单位递减来调整莫顿坐标)的多个位或一个或多个字段。
所述指令还包括用于明确地指定用于存储源紧缩数据操作数的寄存器、存储器位置或其他存储位置的源操作数说明符1082。所述指令还包括用于明确地指定用于存储结果紧缩数据操作数的目的地寄存器或其他目的地存储位置的可选的目的地存储位置说明符1084。作为示例,这些说明符各自可以包括用于明确地指定寄存器、存储器位置或其他存储位置的地址的一组位或一个或多个字段。可替代地,代替指令具有用于这些存储位置中的每一个的明确说明符,所述指令可以可选地具有用于所述源操作数和目的地存储位置中的一者或多者的一个或多个隐含存储位置(例如,对所述指令的操作码是隐含的)。例如,对所述源操作数和目的地存储位置之一使用给定的固定寄存器的操作数对于所述指令可以是隐含的,从而给定的固定寄存器不需要被明确指定。作为另一示例,将相同寄存器或其他存储位置(例如,由所述指令一次明确指定)重新使用用于所述源操作数和目的地存储位置两者来存储所述结果紧缩数据操作数可以是隐含的(例如,隐式源/目的地寄存器)。
在一些实施例中,所述指令可以可选地包括坐标说明符1086。所述坐标说明符可以指定2D、3D、4D或其他多维空间的有待递减或减小的特定坐标。例如,所述坐标说明符可以指定将减小x坐标、或者将减小y坐标。在一些实施例中,所述指令可以可选地包括维数说明符1088。所述维数说明符可以指定莫顿曲线或坐标的维数(例如,源紧缩数据操作数中的莫顿坐标是2D、3D、4D还是其他多维度莫顿坐标)。在一些实施例中,坐标指定符1086和维数说明符1088可以可选地包括在所述指令的立即数中(例如,4位、6位或8位立即数)。可替代地,坐标指定符和维数说明符中的一者或多者可以是所述指令的其他非立即数的位。在又一替代实施例中,可以可选地为所述指令固定(例如,为操作码固定)所述坐标和/或维数中的一者或多者。例如,可以为一个维数(例如,2D)提供一个指令(例如,一个操作码),可以为另一维数(例如3D)提供另一个指令(例如,另一个操作码),等等。作为另一示例,可以为一个坐标(例如,x坐标)提供一个指令(例如,一个操作码),可以为另一坐标(例如y坐标)提供另一个指令(例如,另一个操作码),等等。
应当理解的是,这仅仅是合适指令的一个说明性示例。替代实施例可以包括所示字段/说明符的子集,可以添加附加字段/说明符,可以与某些字段/说明符重叠等。例如,所述指令可以可选地具有其他字段或位,例如,用于指示32位或64位执行状态或模式的位。此外,不所示的字段/说明符的次序和安排不是必须的。所述字段/说明符可以不同地重新安排。此外,字段/说明符不需要包括连续的位序列,而是可以包括非连续或分开的位。在一些实施例中,指令格式可以具有如本文别处所公开的VEX或EVEX编码或指令格式和属性,然而本发明的范围不限于此。以下将进一步讨论有关VEX和EVEX编码和格式的进一步细节。
指令集包括一个或多个指令格式。给定指令格式限定各个字段(位的数目、位的位置)以便在其他事物中指定有待执行的操作(操作码)以及对其有待执行所述操作的所述(多个)操作数。。通过指令模板(或子格式)的定义,一些指令格式被进一步细分。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包含的字段通常是按相同的次序,但是至少有一些具有不同的位位置,因为包含较少的字段)和/或被定义为具有不同解释的给定字段。因此,使用给定的指令格式(并且如果定义了就以所述指令格式的指令模板中的给定指令格式)来表示ISA的每个指令,并且所述指令包括用于指定操作和操作数的多个字段。例如,示例性ADD指令具有特定的操作码和指令格式,所述指令格式包括用于指定用于选择操作数(源1/目的地和源2)的操作码字段和操作数字段;并且指令流中此ADD指令的出现将在选择特定操作数的操作数字段中具有特定内容。已经发布和/或公布了一组引用高级向量扩展(AVX)(AVX1和AVX2)以及使用向量扩展(VEX)编码方案的SIMD扩展(例如,参见和IA-32架构软件开发人员手册,2011年10月;以及参见高级向量扩展编程参考,2011年6月)。
示例性指令格式
本文描述的所述(多个)指令的实施例能够以不同的格式实现。另外,以下详述示例性系统、架构、以及流水线。所述(多个)指令的实施例可以在这样的系统、架构、以及流水线上执行,但不限于所详述的实施例。
VEX指令格式
VEX编码允许指令具有多于两个的操作数,并且允许SIMD向量寄存器长于128位。VEX前缀的使用提供了三个操作数(或更多)的语法。例如,以前的两个操作数指令执行诸如A=A+B的操作,这重写了源操作数。使用VEX前缀允许操作数执行诸如A=B+C的非破坏性操作。
图11A示出了包括VEX前缀1102、实际操作码字段1130、Mod R/M字节1140、SIB字节1150、移位字段1162以及IMM8 1172的AVX指令格式。图11B示出了图11A中的哪些字段组成完整的操作码字段1174和基础操作字段1142。图11C示出了图11A中哪些字段组成寄存器索引字段1144。
VEX前缀(字节0-2)1102以三字节形式编码。第一字节是格式字段1140(VEX字节0,位[7:0]),其包含显式C4字节值(用于区分C4指令格式的唯一值)。第二和第三字节(VEX字节1-2)包括提供特定能力的多个位字段。具体地,REX字段1105(VEX字节1,位[7-5])由VEX.R位字段(VEX字节1,位[7]-R)、VEX.X位字段(VEX字节1,位[6]-X)和VEX.B位字段(VEX字节1,位[5]-B)组成。指令的其他字段对如本领域已知的(rrr,xxx和bbb)编码寄存器索引的低3位进行编码,以便可以通过添加VEX.R、VEX.X、以及VEX.B来形成Rrrr、Xxxx、以及Bbbb。操作码映射字段1115(VEX字节1,位[4:0]-mmmmm)包括用于对隐含的前导操作码字节进行编码的内容。W字段1164(VEX字节2,位[7]-W)用符号VEX.W表示,并且根据指令提供不同的功能。VEX.vvvv 1120(VEX字节2,位[6:3]-vvvv)的作用可以包括以下内容:1)VEX.vvvv对第一源寄存器操作数进行编码,以反向(1s补码)形式指定,并且对于具有2个或更多个源操作数的指令有效;2)VEX.vvvv对目的地寄存器操作数进行编码,对于某些向量移位以1s补码形式指定;或者3)VEX.vvvv不对任何操作数进行编码,所述字段被保留并且应包含1111b。如果VEX.L 1168大小字段(VEX字节2,位[2]-L)=0,则VEX.L表示128位向量;如果VEX.L=1,则VEX.L表示256位向量。前缀编码字段125(VEX字节2,位[l:0]-pp)为所述基础操作字段提供多个附加位。
实际操作码字段1130(字节3)也称为操作码字节。在此字段中指定所述操作码的一部分。
MOD R/M字段1140(字节4)包括MOD字段1142(位[7-6])、Reg字段1144(位[5-3])、以及R/M字段1146(位[2-0])。Reg字段1144的作用可以包括如下:对目的地寄存器操作数或源寄存器操作数(Rrrr的rrr)进行编码,或者被视为操作码扩展并且不用于对任何指令操作数进行编码。R/M字段1146的作用可以包括如下:对引用存储器地址的指令操作数进行编码,或对目的地寄存器操作数或源寄存器操作数进行编码。
比例索引基址(SIB)-比例字段1150(字节5)的内容包括用于存储器地址生成的SS1152(位[7-6])。关于寄存器索引Xxxx和Bbbb,先前已经参考SIB.xxx 1154(位[5-3])和SIB.bbb 1156(位[2-0])的内容。
移位字段1162和立即数字段(IMM8)1172包含地址数据。
通用向量友好指令格式
向量友好指令格式是适用于向量指令的指令格式(例如,存在某些特定于向量操作的字段)。虽然描述了通过所述向量友好指令格式使向量运算和标量运算均受支持的实施例,但是替代实施例仅使用向量运算向量友好指令格式。
图12A和图12B是示出根据本发明的多个实施例的通用向量友好指令格式及其指令模板的框图。图12A是示出根据本发明的多个实施例的通用向量友好指令格式及其A类指令模板的框图;而图12B是示出根据本发明的多个实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,为通用向量友好指令格式1200限定了A类和B类指令模板,所述指令模板都不包括存储器访问1205指令模板和存储器访问1220指令模板。在向量友好指令格式的上下文中的术语“通用”是指不绑定到任何特定指令集的指令格式。
虽然将描述本发明的实施例,其中向量友好指令格式支持以下各项:具有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小)(并且因此,64字节向量由16个双字大小元素或者8个四字大小元素组成);具有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节向量操作数长度(或大小);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16字节向量操作数长度(或大小);替代实施例可以支持具有更多、更少或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)的更多、更少和/或不同的向量操作数大小(例如,256字节向量操作数)。
图12A中的A类指令模板包括:1)在无存储器访问1205指令模板中,示出了无存储器访问,完全舍入控制式操作1210指令模板和无存储器访问,数据变换式操作1215指令模板;以及2)在存储器访问1220指令模板中,示出了存储器访问,时效性的1225指令模板和存储器访问,非时效性的1230指令模板。图12B中的B类指令模板包括:1)在无存储器访问1205指令模板中,示出了无存储器访问,写掩码控制、部分舍入控制式操作1212指令模板和无存储器访问、写掩码控制、vsize式操作1217指令模板;以及2)在存储器访问1220指令模板中,示出了存储器访问,写掩码控制1227指令模板。
通用向量友好指令格式1200包括以下按照图12A和图12B所示的次序列出的以下字段。
格式字段1240-该字段中的特定值(指令格式标识符值)唯一地标识所述向量友好指令格式,并且因此在指令流中出现向量友好指令格式的指令。如此,在仅具有通用向量友好指令格式的指令集不需要该字段的情况下,该字段是任性的。
基础操作字段1242-其内容区分不同的基础操作。
寄存器索引字段1244-其内容直接或通过地址生成来指定源操作数和目的地操作数的位置,无论是在寄存器还是存储器中。这些包含足够数量的位以从PxQ(例如32x512、16x128、32x1024、64x1024)寄存器堆中选择N个寄存器。虽然在一个实施例中,N可以是多达三个源和一个目的地寄存器,但替代实施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多达两个源(其中这些源之一也用作目的地),可以支持多达三个来源(其中一个源也用作目的地),可以支持多达两个源和一个目的地)。
修饰符字段1246-其内容区分通用向量指令格式的指令的出现,所述指令指定来自不是通用向量指令格式的指令的存储器访问;也就是说,在无存储器访问1205指令模板语存储器访问1220指令模板之间。存储器访问操作读取和/或写存储器层级(在一些情况下,使用多个寄存器中的值指定所述源和/或目的地址),而无存储器访问操作不读取和/或写存储器层级(例如,所述源和目的地是寄存器)。虽然在一个实施例中,该字段还选择三种不同的方式来执行存储器地址计算,但替代实施例可以支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段1250-其内容区分各种不同操作中除了基础操作之外的哪一种有待被执行。该字段是特定于上下文的。在本发明的一个实施例中,该字段被划分为类字段1268、阿尔法字段1252、以及贝塔字段1254。扩充操作字段1250允许在单个指令而不是2个、3个或4个指令中执行常见的操作组。
比例字段1260-其内容允许索引字段的内容按比例缩放以用于存储器地址生成(例如,对于地址生成,使用2比例*索引+基址)。
移位字段1262A-其内容作存储器地址生成的一部分(例如,对于地址生成,使用2比例*索引+基址+移位)。
移位因子字段1262B(注意,移位字段1262A直接并置在移位因子字段1262B上指示使用了一者或另一者)-其内容用作地址生成的一部分;所述移位因子字段指定有待由存储器访问(N)的大小来缩放的移位因子,其中N是存储器访问中的字节数(例如,对于地址生成,使用2比例*索引+基址+经缩放移位)。冗余的低次序位被忽略,并且因此,移位因子字段的内容乘以存储器操作数总大小(N),以便产生用于计算有效地址的最终移位。基于完整的操作码字段1274(在本文后面描述)和数据操作字段1254C,由运行时的处理器硬件确定N的值。移位字段1262A和移位因子字段1262B从不用于无存储器访问1205指令模板和/或不同实施例可以仅实现两者之一或一个都不实现的意义上说是可选的。
数据元素宽度字段1264-其内容区分多个数据元素宽度中的哪一个有待被使用(在一些实施例中,针对所有指令;在其他实施例中,仅针对一些指令)。该字段从其在如果仅支持一个数据元素宽度和/或使用所述操作码的一些方面来支持多个数据元素宽度的情况下则不需要的意义上说是可选的。
写掩码字段1270-其内容基于每个数据元素位置控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并写掩码,而B类指令模板支持合并和归零写掩码。当合并时,向量掩码允许在执行(由所述基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集合免受更新;在另一实施例中,在对应的掩码位具有0的情况下保留目的地的每个元素的旧值。相比之下,当归零时,向量掩码允许在执行(由所述基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素归零;在一个实施例中,当对应的掩码位具有0值时,将目的地的元素设置为0。该功能的子集是控制正在执行的操作的向量长度(即正在修改的元素的跨度,从第一个到最后一个)的能力;然而,所修改的元素不必是连续的。因此,写掩模字段1270允许部分向量操作,包括加载、存储、算术、逻辑等。虽然描述了本发明的多个实施例,其中写掩模字段的1270内容选择多个写掩码寄存器中的包含有待使用的写掩码的一个写掩码寄存器(并且因此写掩码字段的1270内容间接地标识要执行的掩码),替代实施例代替地或另外允许掩模写字段的1270内容直接指定有待执行的掩码。
立即数字段1272-其内容允许立即数的指定。该字段从其不存在于不支持立即数的通用向量友好格式的实现中并且不存在于不使用立即数的指令中的意义上说是可选的。
类字段1268-其内容区分不同类别的指令。参考图12A和图12B,该字段的内容在A类和B类指令之间进行选择。在图12A和图12B中,使用圆角方格指示字段(例如,图12A和图12B中分别为类字段1268的A类字段1268A和B类字段1268B)中存在特定值。
A类指令模板
在无存储器访问1205A类指令模板的情况下,阿尔法字段1252被解释为RS字段1252A,其内容区分所述不同扩充操作类型中的哪一种有待执行(例如,舍入1252A.1和数据变换1252A.2分别被指定用于无存储器访问舍入式操作1210和无存储器访问数据变换式操作1215指令模板),而贝塔字段1254区分所指定类型的操作中的哪一个有待执行。在无存储器访问1205指令模板中,不存在比例字段1260、移位字段1262A、以及移位比例字段1262B。
无存储器访问指令模板-完全舍入控制式操作
在无存储器访问完全舍入控制式操作1210指令模板中,贝塔字段1254被解释为舍入控制字段1254A,其(多项)内容提供静态舍入。虽然在本发明的所描述的实施例中,舍入控制字段1254A包括抑制所有浮点异常(SAE)字段1256和舍入操作控制字段1258,但替代实施例可以支持并可以将这两个概念编码到同一个字段中、或者仅具有这些概念/字段中的一者或另一者(例如,可以只具有舍入操作控制字段1258)。
SAE字段1256-其内容区分是否禁用异常事件报告;当SAE字段的1256内容表示抑制被启用时,给定指令不会报告任何类型的浮点异常标志并且不引发任何浮点异常处理程序。
舍入操作控制字段1258-其内容区分一组舍入操作中的哪一个要执行(例如,上入、下舍、朝向零舍入以及舍入到最近整数)。因此,舍入操作控制字段1258允许基于每个指令改变舍入模式。在本发明的其中处理器包括用于指定舍入模式的控制寄存器的一个实施例中,舍入操作控制字段的1250内容覆盖所述寄存器的值。
无存储器访问指令模板-数据变换式操作
在无存储器访问数据变换式操作1215指令模板中,贝塔字段1254被解释为数据变换字段1254B,其内容区分多项数据变换的哪一项有待执行(例如,无数据变换、混合、广播)。
在存储器访问1220A类指令模板的情况下,阿尔法字段1252被解释为驱逐提示字段1252B,其内容区分驱逐提示中的哪一个有待使用(在图12A中,时效性的1252B.1和非时效性的1252B.2分别被指定用于存储器访问时效性的1225指令模板和存储器访问非时效性的1230指令模板),而贝塔字段1254被解释为数据操控字段1254C,其内容区分多项数据操作操作(也称为原语)中的哪一些有待执行(例如,无操控;广播;源的向上转换;以及目的地的向下转换)。存储器访问1220指令模板包括比例字段1260、以及可选的移位字段1262A或移位比例字段1262B。
向量存储器指令通过转换支持对来存储器执行向量加载和矢量存储。与常规向量指令一样,向量存储器指令以数据元素方式传送来自存储器的数据或将数据传送到存储器,实际传送的元素由被选择为写掩码的向量掩码的内容决定。
存储器访问指令模板-时效性的
时效性的数据是可能很快重新使用足以从高速缓存中受益的数据。然而,这是一个提示,并且不同的处理器能够以不同的方式实现所述时效性的数据,包括完全忽略提示。
存储器访问指令模板-非时效性的
非时效性的数据是在一级高速缓存中不太可能很快重新使用足以从高速缓存中受益的数据,并且应优先考虑驱逐。然而,这是一个提示,并且不同的处理器能够以不同的方式实现所述时效性的数据,包括完全忽略提示。
B类指令模板
在B类指令模板的情况下,阿尔法字段1252被解释为写掩码控制(Z)字段1252C,其内容区分由写掩码字段1270控制的写掩码应为合并还是归零。
在无存储器访问1205B类指令模板的情况下,贝塔字段1254的一部分被解释为RL字段1257A,其内容区分所述不同扩充操作类型中的哪一种有待执行(例如,舍入1257A.1和向量长度(VSIZE)1252A.2分别被指定用于无存储器访问写掩码操作部分舍入控制式操作1212指令模块和无存储器访问写掩码控制VSIZE式操作1217指令模板),而贝塔字段1254的其余部分区分所指定类型的操作中的哪一个有待执行。在无存储器访问1205指令模板中,不存在比例字段1260、移位字段1262A、以及移位比例字段1262B。
在无存储器访问写掩码操作部分舍入控制式操作1210指令模块中,贝塔字段1254的其余部分被解释为舍入操作字段1259A,并且异常事件报告被禁用(给定指令不报告任何类型的浮点异常标志并且不引发任何浮点异常处理程序)。
舍入操作控制字段1259A(就像舍入操作控制字段1258一样)-其内容区分一组舍入操作中的哪一个要执行(例如,上入、下舍、朝向零舍入以及舍入到最近整数)。因此,舍入操作控制字段1259A允许基于每个指令改变舍入模式。在本发明的其中处理器包括用于指定舍入模式的控制寄存器的一个实施例中,舍入操作控制字段的1250内容覆盖所述寄存器的值。
在无存储器访问写掩码控制VSIZE式操作1217指令模板中,贝塔字段1254的其余部分被解释为向量长度字段1259B,其内容区分多个数据向量长度的哪一个有待执行(例如,128、256或512字节)。
在存储器访问1220B类指令模板的情况下,贝塔字段1254的一部分被解释为广播字段1257B,其内容区分是否要执行广播式数据操纵操作,而贝塔字段1254的其余部分被解释为向量长度字段1259B。存储器访问1220指令模板包括比例字段1260、以及可选的移位字段1262A或移位比例字段1262B。
关于通用向量友好指令格式1200,示出了包括格式字段1240、基础操作字段1242以及数据元素宽度字段1264的完整操作码字段1274。尽管示出了完整操作码字段1274包括所有这些字段的一个实施例,但在不支持所有这些字段的实施例中完整操作码字段1274包括比所有这些字段更少的字段。完整操作码字段1274提供操作代码(操作码)。
扩充操作字段1250、数据元素宽度字段1264以及写掩码字段1270允许基于每个指令以通用向量友好指令格式指定这些特征。
写掩码字段和数据元素宽度字段的组合创建了多个类型化指令,因为它们允许基于不同数据元素宽度应用掩码。
在A类和B类中发现的各种指令模板在不同情况下都是有益的。在本发明的一些实施例中,不同处理器或处理器内的不同的核仅支持A类、仅支持B类或支持两类。例如,旨在用于通用计算的高性能通用乱序核可以仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可以仅支持A类,并且旨在用于支持两者的核可以支持两者(当然,具有来自两类的模板和指令的一些混合而不是来自两类的所有模板和指令的核是在本发明的范围内)。此外,单个处理器可以包括多个核,所有这些核都支持相同的类,或者其中不同的核支持不同的类。例如,在具有分开的图形核和通用核的处理器中,旨在主要用于图形和/或科学计算的图形核之一可以仅支持A类,而通用核中的一者或多者可以是高性能通用核,其中乱序执行和寄存器重命名旨在用于仅支持类B的通用计算。不具有分开的图形核的另一处理器可以包括支持A类和B类两者的更为通用的有序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可以在另一类中实现。以高级语言写的程序将被放入(例如,及时编译或静态编译)到各种不同的可执行形式中,包括:1)仅具有由用于执行的目标处理器支持的类的指令的形式;或2)具有使用所有类别的指的不同组合写的替代例程并且具有控制流程代码的形式,所述控制流程代码基于当前正在执行代码的处理器所支持的指令来选择要执行的例程。
示例性特定向量友好指令格式
图13是示出根据本发明的多个实施例的示例特定向量友好指令格式的框图。图13示出了特定向量友好指令格式1300,所述特定向量友好指令格式从其指定所述字段的位置、大小、解释和次序以及某些字段的值的意义上说是特定的。可以使用特定向量友好指令格式1300来扩展x86指令集,并且因此所述字段中的一些字段与现有的x86指令集及其扩展(例如,AVX)中使用的字段相似或相同。该格式与现有的带有扩展的x86指令集的前缀编码字段、实际操作码字节字段、MOD R/M字段、SIB字段、移位字段、以及立即数字段保持一致。示出了来自图12的从图13映射到其中的字段。
应当理解的是,尽管为了说明的目的地,在通用向量友好指令格式1200的上下文中参考特定向量友好指令格式1300来描述本发明的实施例,但是本发明不限于特定向量友好指令格式1300,除非声称。例如,通用向量友好指令格式1200考虑了各种字段的各种可能的大小,而特定向量友好指令格式1300被示出为具有特定大小的字段。作为特定示例,虽然数据元素宽度字段1264被示为特定向量友好指令格式1300中的一位字段,但本发明不限于此(即,通用向量友好指令格式1200考虑了其他大小的数据元素宽度字段1264)。
通用向量友好指令格式1200包括以下按照图13A所示的次序列出的以下字段。
EVEX前缀(字节0-3)1302以四字节形式编码。
格式字段1240(EVEX字节0,位[7:0])-第一字节(EVEX字节0)是格式字段1240,并且所述第一字节包含0x62(在本发明的一个实施例中,用于区分向量友好指令格式的唯一值)。
第二至第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。
REX字段1305(EVEX字节1,位[7-5])由EVEX.R位字段(EVEX字节1,位[7]-R)、EVEX.X位字段(EVEX字节1,位[6]-X)和1257BEX字节1,位[5]-B)组成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并且使用1s补码形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。指令的其他字段对如本领域已知的(rrr,xxx和bbb)编码寄存器索引的低3位进行编码,以便可以通过添加EVEX.R、EVEX.X、以及EVEX.B来形成Rrrr、Xxxx、以及Bbbb。
REX’字段1210-这是REX’字段1210的第一部分并且是用于对扩展的32寄存器集的较高16或较低16进行编码的EVEX.R’位字段(EVEX字节1,位[4]-R’)。在本发明的一个实施例中,该位以及如下所指示的其他位以位反转格式存储,以(在众所周知的x86 32位模式中)从BOUND指令区分谁的实际操作码字节为62,但是在MOD R/M字段中不接受MOD字段中的11的值;本发明的替代实施例不以反转格式存储该位和下面的指示的其他位。使用值1来对较低的16个寄存器进行编码。换句话说,R’Rrrr是通过将EVEX.R’、EVEX.R和来自其他字段的另一RRR组合而形成的。
操作码映射字段1315(EVEX字节1,位[3:0]-mmmm)-其内容对隐含的前导操作码字节(0F、0F 38、或0F 3)进行编码。
数据元素宽度字段1264(EVEX字节2,位[7]-W)-用符号EVEX.W表示。EVEX.W用于定义数据类型(32位数据元素或64位数据元素)的粒度(大小)。
EVEX.vvvv 1320(EVEX字节2,位[6:3]-vvvv)-EVEX.vvvv的作用可以包括以下内容:1)EVEX.vvvv对第一源寄存器操作数进行编码,以反向(1s补码)形式指定,并且对于具有2个或更多个源操作数的指令有效;2)EVEX.vvvv对目的地寄存器操作数进行编码,对于某些向量移位以1s补码形式指定;或者3)EVEX.vvvv不对任何操作数进行编码,所述字段被保留并且应包含1111b。因此,EVEX.vvvv字段1320对以反转(1s补码)形式存储的第一源寄存器说明符的4个低次序位进行编码。取决于指令,使用另外不同的EVEX位字段将说明符大小扩展到32个寄存器。
EVEX.U 1268类字段(EVEX字节2,位[2]-U)-如果EVEX.U=0,则所述类字段表示A类或EVEX.U0;如果EVEX.U=1,则所述类字段表示B类或EVEX.U1。
前缀编码字段1325(EVEX字节2,位[1:0]-pp)-为所述基础操作字段提供多个附加位。除了为EVEX前缀格式的传统SSE指令提供支持之外,所述前缀编码字段还具有压缩SIMD前缀的优点(而不是要求一个字节来表示SIMD前缀,EVEX前缀只需要2位)。在一个实施例中,为了支持使用传统格式和EVEX前缀格式的SIMD前缀(66H、F2H、F3H)的传统SSE指令,这些传统SIMD前缀被编码到SIMD前缀编码字段中;并且在运行时在提供给解码器的PLA之前扩展到传统SIMD前缀中(因此,PLA可以同时执行这些传统指令的传统格式和EVEX格式,而无需修改)。虽然较新的指令可以将EVEX前缀编码字段的内容的直接用作操作码扩展,但是为了一致性,某些实施例以类似的方式扩展但允许由这些传统SIMD前缀指定不同的含义。替代实施例可以重新设计PLA以支持2位SIMD前缀编码,并且因此不需要扩展。
阿尔法字段1252(EVEX字节3,位[7]-EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX写掩码控制和EVEX.N;也用α表示)-如前所述,该字段是特定于上下文的。
贝塔字段1254(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ表示)-如前所述,该字段是特定于上下文的。
REX’字段1210-这是REX’字段的其余部分并且是可以用于对扩展的32寄存器集的较高16或较低16进行编码的EVEX.V’位字段(EVEX字节3,位[3]-V’)。该位是以位反转格式存储的。使用值1来对较低的16个寄存器进行编码。换句话说,V’VVVV是通过组合EVEX.V’、EVEX.vvvv形成的。
写掩码字段1270(EVEX字节3,位[2:0]-kkk)-其内容指定写掩码寄存器中的寄存器的索引,如前所述。在本发明的一个实施例中,特定值EVEX.kkk=000具有特定的行为,意味着没有写掩码用于特定指令(这能够以各种方式实现,包括使用硬连线到所有或绕过掩码硬件的硬件的写掩码)。
实际操作码字段1330(字节4)也称为操作码字节。在此字段中指定所述操作码的一部分。
MOD R/M字段1340(字节5)包括MOD字段1342、Reg字段1344、以及R/M字段1346。如前所述,MOD字段的1342内容在存储器访问和无存储器访问操作之间进行区分。Reg字段1344的作用可以归结为两种情况:对目的地寄存器操作数或源寄存器操作数进行编码,或者被视为操作码扩展并且不用于对任何指令操作数进行编码。R/M字段1346的作用可以包括如下:对引用存储器地址的指令操作数进行编码,或对目的地寄存器操作数或源寄存器操作数进行编码。
比例索引基址(SIB)字节(字节6)-如前所述,比例字段的1250内容用于存储器地址生成。SIB.xxx 1354和SIB.bbb 1356-这些字段的内容先前已经参考了寄存器索引Xxxx和Bbbb。
移位字段1262A(字节7-10)-当MOD字段1342包含10时,字节7-10是移位字段1262A,并且所述移位字段与传统32位移位(disp32)一样工作并且以字节粒度工作。
移位因子字段1262B(字节7)-当MOD字段1342包含01时,字节7是移位因子字段1262B。这个字段的位置与传统的x86指令集8位移位(disp8)的位置相同,所述字段以字节粒度工作。由于disp8是扩展符号,它只能在-128和127字节偏移之间寻址;就64字节高速缓存线而言,disp8使用只能设置四个非常有用的值-128、-64、0和64的8位;由于通常需要更大的范围,因此使用disp32;然而,disp32需要4个字节。与disp8和disp32相比,移位因子字段1262B是disp8的重新解释;当使用移位因子字段1262B时,实际移位由移位因子字段的内容乘以存储器操作数访问(N)的大小来确定。这种类型的移位称为disp8*N。这减少了平均指令长度(用于移位的单个字节,但具有更大的范围)。这样的压缩移位是基于有效移位是存储访问粒度的倍数的假设,并且因此地址偏移的冗余低次序位不需要进行编码。换句话说,移位因子字段1262B代替传统的x86指令集8位移位。因此,移位因子字段1262B以与x86指令集8位移位相同的方式进行编码(因此ModRM/SIB编码规没有变化),只有disp8超载到disp8*N除外。换句话说,编码规则或编码长度没有变化,但只有在由硬件解释移位值(这需要通过按存储器操作数的大小来缩放移位来获得字节地址偏移)时如此。
立即数字段1272如前所述地操作。
完整操作码字段
图13B是示出根据本发明的一个实施例的构成完整操作码字段1274的特定向量友好指令格式1300的字段的框图。具体地,完整操作码字段1274包括格式字段1240、基础操作字段1242以及数据元素宽度(W)字段1264。基础操作字节1242包括前缀编码字段1325、操作数映射字段1315、以及实际操作码字段1330。
寄存器索引字段
图13C是示出根据本发明的一个实施例的构成完整寄存器索引字段1244的特定向量友好指令格式1300的字段的框图。具体地,寄存器索引字段1244包括REX字段1305、REX’字段1310、MODR/M.reg字段1344、MODR/M.r/m字段1346、VVVV字段1320、xxx字段1354、以及bbb字段1356。
扩充操作字段
图13D是示出根据本发明的一个实施例的构成完整扩充操作字段1250的特定向量友好指令格式1300的字段的框图。当类(U)字段1268包含0时,所述字段表示EVEX.U0(A类1268A);当所述字段包含1时,所述字段表示EVEX.U1(B类1268B)。当U=0并且MOD字段1342包含11(表示无存储器访问操作)时,阿尔法字段1252(EVEX字节3,位[7]-EH)被解释为rs字段1252A。当rs字段1252A包含1(舍入1252A.1)时,贝塔字段1254(EVEX字节3,位[6:4]-SSS)被解释为舍入控制字段1254A。舍入控制字段1254A包括一位SAE字段1256和两位舍入操作字段1258。当rs字段1252A包含0(数据变换1252A.2)时,贝塔字段1254(EVEX字节3,位[6:4]-SSS)被解释为三位数据变换字段1254B。当U=0并且MOD字段1342包含00、01或10(表示存储器访问操作)时,阿尔法字段1252(EVEX字节3,位[7]-EH)被解释为驱逐提示(EH)字段1252B,并且贝塔字段1254(EVEX字节3,位[6:4]-SSS)被解释为三位数据操控字段1254C。
当U=1时,阿尔法字段1252(EVEX字节3,位[7]-EH)被解释为写掩码控制(Z)字段1252C。当U=1并且MOD字段1342包含11(表示无存储器访问操作)时,贝塔字段1254的一部分(EVEX字节3,位[4]-S0)被解释为RL字段1257A;当所述RL字段包含1(舍入1257A.1)时,贝塔字段1254的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为舍入操作字段1259A,而当RL字段1257A包含0(VSIZE 1257.A2)时,贝塔字段1254的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段1259B(EVEX字节3,位[6-5]-L1-0)。当U=1并且MOD字段1342包含00、01或10(表示存储器访问操作)时,贝塔字段1254(EVEX字节3,位[6:4]-SSS)被解释为向量长度字段1259B(EVEX字节3,位[6-5]-L1-0)和广播字段1257B(EVEX字节3,位[4]-B)。
示例性寄存器架构
图14是根据本发明一个实施例的方法的寄存器架构1400的框图。在所示的实施例中,存在512位宽的32个向量寄存器1410;这些寄存器的参考号为zmm0到zmm31。较低的16个zmm寄存器的次序较低的256位叠加在寄存器ymm0-16上。较低的16个zmm寄存器的次序较低的128位(ymm寄存器的次序较低的128位)叠加在寄存器xmm0-15上。特定向量友好指令格式1300对这些叠加的寄存器堆进行操作,如下表所示。
换句话说,向量长度字段1259B在最大长度与一个或多个其他较短长度之间进行选择,其中每个这样的较短长度是前一长度的一半长度;并且没有向量长度字段1259B的指令模板对最大向量长度进行操作。进一步地,在一个实施例中,特定向量友好指令格式1300的B类指令模板对紧缩或标量单/双精度浮点数据以及紧缩或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶的数据元素位置执行的操作;取决于所述实施例,次序较高的数据元素位置或者在所述指令之前保持不变或者被归零。
写掩码寄存器1415-在所示实施例中,存在8个写掩码寄存器(k0至k7),每个写掩码寄存器的大小为64位。在替代实施例中,写掩码寄存器1415的大小为16位。如前所述,在本发明的一个实施例中,向量掩模寄存器k0不能用作写掩码;当通常指示k0的编码用于写掩码时,所述向量掩模寄存器选择0xFFFF的硬连线写掩码,有效地禁止所述指令的写掩码。
通用寄存器1425-在所示实施例中,存在十六个64位通用寄存器,所述通用寄存器与现有的x86寻址模式一起使用以对多个存储器操作数进行寻址。这些寄存器用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8到R15作为参考标记。
标量浮点堆栈寄存器堆(x87堆栈)1445,在其上重叠有MMX紧缩整数平面寄存器堆1450-在所示实施例中,x87堆栈是用于使用x87指令集扩展对32位/64位/80位浮点数据字节执行标量浮点运算的八元素堆栈;而MMX寄存器用于对64位紧缩整数数据执行操作,以及为在MMX寄存器与XMM寄存器之间执行的某些操作保存操作数。
本发明的替代实施例可以使用更宽或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器、以及计算机架构
处理器核能够以不同的方式实现,用于不同的目的地以及在不同的处理器中。例如,这样的核的实施方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实施方式可以包括:1)CPU,所述CPU包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,所述协处理器包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统架构,所述计算机系统架构可以包括:1)位于与CPU分开的芯片上的协处理器;2)位于与CPU相同的封装中的分开管芯上的协处理器;3)位于与CPU相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑或专用核);以及4)芯片上的系统,所述系统可以包括位于相同管芯上的所描述的CPU(有时称为(多个)应用核或(多个)应用处理器)、上述协处理器、以及附加功能。接下来描述示例性核架构,之后是示例性处理器和计算机架构的描述。
示例性核架构
有序和乱序核框图
图15A是示出根据本发明的多个实施例的示例性有序流水线和示例性寄存器重命名乱序发出/执行流水线两者的框图。图15B是示出根据本发明的多个实施例的有序架构核的实施例和有待包含在处理器中的示例性寄存器重命名乱序发出/执行架构核两者的框图。图15A和图15B中的实线框展示了有序流水线和有序核,而虚线框的可选添加展示了寄存器重命名乱序发出/执行流水线和核。假定有序方面是乱序方面的子集,将描述乱序方面。
在图15A中,处理器流水线1500包括获取阶段1502、长度解码阶段1504、解码阶段1506、分配阶段1508、重命名阶段1510、调度(也称为分派或发出)阶段1512、寄存器读取/存储器读取阶段1514、执行阶段1516、回写/存储器写阶段1518、异常处理阶段1522以及提交阶段1524。
图15B示出了处理器核1590,所述处理器核包括耦合到执行引擎单元1550的前端单元1530,并且所述执行引擎单元和前端单元都耦合到存储器单元1570。核1590可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核心、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,核1590可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1530包括耦合到指令高速缓存单元1534的分支预测单元1532,所述指令高速缓存单元被耦合到指令翻译后备缓冲器(TLB)1536,所述指令转换后备缓冲器被耦合到指令获取单元1538,所述指令获取单元被耦合到解码单元1540。解码单元1540(或解码器)可以对指令进行解码并且生成从原始指令解码出的、或以其他方式反映原始指令或从原始指令衍生出的作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。解码单元1540可以使用各种不同的机制来实现。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑数组(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1590包括微代码ROM或存储用于某些宏指令的微码的其他介质(例如,在解码单元1540中或者在前端单元1530内)。解码单元1540被耦合到执行引擎单元1550中的重命名/分配器单元1552。
执行引擎单元1550包括耦合到引退单元1554的重命名/分配器单元1552和一组一个或多个调度器单元1556。所述(多个)调度器单元1556表示任何数量的不同调度器,包括预留站、中央指令窗口等。所述(多个)调度器单元1556被耦合到物理寄存器堆单元1558。所述(多个)物理寄存器堆单元1558各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为有待执行的下一指令的地址的指令指针)等。在一个实施例中,所述(多个)物理寄存器堆单元1558包括向量寄存器单元、写掩码码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、以及通用寄存器。所述(多个)物理寄存器堆单元1558被引退单元1554重叠,所述引退单元用于展示可以实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲区、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元1554和(多个)物理寄存器堆单元1558被耦合到(多个)执行群集1560。所述(多个)执行群集1560包括一组一个或多个执行单元1562和一组一个或多个存储器访问单元1564。执行单元1562可以执行各种操作(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。虽然一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可以仅包括执行所有功能的一个执行单元或多个执行单元。所述(多个)调度器单元1556、(多个)物理寄存器堆单元1558、以及(多个)执行集群1560被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实现了其中只有该流水线的执行集群具有(多个)存储器访问单元1564的某些实施例)。还应当理解的是,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发出/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元1564被耦合到存储器单元1570,所述存储器单元包括耦合到数据高速缓存单元1574的数据TLB单元1572,所述数据高速缓存单元被耦合到二级(L2)高速缓存单元1576。在一个示例性实施例中,存储器访问单元1564可以包括各自被耦合到存储器单元1570中的数据TLB单元1572的加载单元、存储地址单元、以及存储数据单元。指令高速缓存单元1534被进一步耦合到存储器单元1570中的二级(L2)高速缓存单元1576。L2高速缓存单元1576被耦合到一个或多个其他级的高速缓存并且最终被耦合到主存储器。
作为示例,示例性寄存器重命名乱序发出/执行核架构可以如下实现流水线1500:1)指令获取单元1538执行获取阶段1502和长度解码阶段1504;2)解码单元1540执行解码阶段1506;3)重命名/分配器单元1552执行分配阶段1508和重命名阶段1510;4)所述(多个)调度器单元1556执行调度阶段1512;5)所述(多个)物理寄存器堆单元1558和存储位置1570执行寄存器读/写阶段1514;执行集群1560执行执行阶段1516;6)存储器单元1570和所述(多个)物理寄存器堆单元1558执行回写/存储器写阶段1518;7)各种单元可以涉及异常处理阶段1522;以及8)引退单元1554和所述(多个)物理寄存器堆单元1558执行提交阶段1524。
核1590可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,例如NEON)),包括本文所描述的所述(多个)指令。在一个实施例中,核1590包括支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用紧缩数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解的是,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据高速缓存单元1534/1574和共享的L2高速缓存单元1576,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,例如一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在所述核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在所述核和/或处理器的外部。
特定示例性有序核架构
图16A和图16B示出了更特定的示例性有序核架构的框图,该核是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核)之一。取决于应用,所述逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必需I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图16A是根据本发明的多个实施例的单个处理器核、和其与管芯上互连网络1602的连接以及其二级(L2)高速缓存1604的本地子集的框图。在一个实施例中,指令解码器1600支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1606允许对高速缓存存储器的低时延访问进入标量单元和向量单元。虽然在一个实施例中(为了简化设计),标量单元1608和向量单元1610使用分开的寄存器堆(分别为标量寄存器1612和向量寄存器1614),并且在它们之间传送的数据被写存储器并且然后从一级(L1)高速缓存1606中回读,但本发明的替代实施例可以使用不同的途径(例如,使用单个寄存器堆或者包括允许数据在两个寄存器堆之间传送而未被书写和回读的通信路径)。
L2高速缓存1604的本地子集是全局L2高速缓存的一部分,所述全局L2高速缓存被划分为多个分开的本地子集,每个处理器核一个。每个处理器核具有到其本身的L2高速缓存1604的本地子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1604中并且可以被快速访问,与其他处理器核并行地访问其本地L2的高速缓存子集。由处理器核写的数据被存储在其本身的L2高速缓存子组1604中,并且如果需要,则从其他子集划掉。所述环形网络确保共享数据的相干性。所述环形网络是双向的,允许诸如处理器核、L2高速缓存和其他逻辑块的媒介在芯片内彼此通信。每个环形数据路径在每个方向为1012位宽。
图16B是根据本发明的多个实施例的图16A中的处理器核的一部分的放大视图。图16B包括L1高速缓存1604的L1数据高速缓存1606A部分、以及关于向量单元1610和向量寄存器1614的更多细节。具体地,向量单元1610是16位宽向量处理单元(VPU)(参见16位宽ALU1628),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持用混合单元1620对寄存器输入进行混合、用转换单元1622A-B进行数字转换、以及用复制单元1624对存储器输入进行复制。写掩码寄存器1626允许预测结果向量写。
具有集成存储器控制器和图形的处理器
图17是根据本发明的多个实施例的可以具有多于一个核的、可以具有集成存储器控制器的、以及可以具有集成图形的处理器1700的框图。图17中的实线框展示了具有单个核1702A、系统媒介1710、一组一个或多个总线控制器单元1716的处理器1700,而虚线框的可选添加展示了具有多个核1702A-N、系统媒介1710中的一组一个或多个集成存储器控制器单元1714以及专用逻辑1708的替代处理器1700。
因此,处理器1700的不同实施方式可以包括:1)CPU,其中专用逻辑1708是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),并且核1702A-N是一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合);2)协处理器,其中核1702A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1702A-N是大量通用有序核。因此,处理器1700可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。所述处理器可以在一个或多个芯片上实现。处理器1700可以是一个或多个衬底的一部分和/或可以使用诸如例如BiCMOS、CMOS或NMOS的多种加工技术中的任何一种技术在一个或多个衬底上被实现。
存储器层级包括所述核内的一个或多个级别的高速缓存,一组或一个或多个共享高速缓存单元1706、以及外部存储器(未示出),所述外部存储器被耦合到所述一组集成存储器控制器单元1714。所述一组共享高速缓存单元1706可以包括一个或多个中级高速缓存,如二级(L2)、三级(L3)、四级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环形的互连单元1712将集成图形逻辑1708、所述一组共享高速缓存单元1706、以及系统媒介单元1710/(多个)集成存储器控制器单元1714互连,但替代实施例可以使用任何数量的用于互连这样的单元的已知技术。在一个实施例中,维持一个或多个高速缓存单元1706与核1702A-N之间的相干性。
在一些实施例中,所述核1702A-N中的一个或多个核能够进行多线程。系统媒介1710包括协调和操作核1702A-N的那些组件。系统媒介单元1710可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1702A-N和集成图形逻辑1708的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核1702A-N可以是同质的或异构的;也就是说,核1702A-N中的两个或更多个核能够执行相同的指令集,而其他的核能够仅执行所述指令集的子集或不同指令集。
示例性计算机架构
图18-21是示例性计算机架构的框图。本领域已知的用于膝上型计算机、台式机,手持PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其他电子装置的其他系统设计和配置也是合适的。一般,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常是合适的。
现在参考图18,示出的是根据本发明的一个实施例的系统1800的框图。系统1800可以包括耦合到控制器集线器1820的一个或多个处理器1810、1815。在一个实施例中,控制器集线器1820包括图形存储器控制器集线器(GMCH)1890和输入/输出集线器(IOH)1850(其可以在分开的芯片上);GMCH 1890包括存储器和图形控制器,存储器1840和协处理器1845被耦合到所述图形控制器;IOH 1850将输入/输出(I/O)装置1860耦合到GMCH 1890。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器1840和协处理器1845通过IOH 1850直接耦合到单个芯片中的处理器1810和控制器集线器1820。
图18中用虚线表示附加处理器1815的可选特性。每个处理器1810、1815可以包括本文描述的一个或多个处理核,并且可以是某一版本的处理器1700。
存储器1840可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1820经由多点总线(例如前端总线(FSB)、诸如快速路径互连(QPI)的点对点接口或类似连接件1895)与(多个)处理器1810、1815通信。
在一个实施例中,协处理器1845是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1820可以包括集成图形加速器。
就一系列指标量度(包括体系结构、微体系结构、热、功耗特性等)而言,物理资源1810、1815之间存在多种差异。
在一个实施例中,处理器1810执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在所述指令中。处理器1810将这些协处理器指令识别为应由附连的协处理器1845执行的类型。相应地,处理器1810将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发出到协处理器1845。(多个)协处理器1845接受并执行接收到的协处理器指令。
现在参考图19,示出了根据本发明的实施例的更具体的第一示例性系统1900的框图。如图19所示,多处理器系统1900是点对点互连系统,且包括经由点对点互连1950耦合的第一处理器1970和第二处理器1980。处理器1970和1980各自可以是某一版本的处理器1700。在本发明的一个实施例中,处理器1970和1980分别是处理器1810和1815,而协处理器1938是协处理器1845。在另一实施例中,处理器1970和1980分别是处理器1810和1845。
处理器1970和1980被示出为分别包括集成存储器控制器(IMC)单元1972和1982。处理器1970还包括作为其总线控制器单元的一部分的点对点(P-P)接口1976和1978;类似地,第二处理器1980包括P-P接口1986和1988。处理器1970、1980可以使用P-P接口电路1978、1988通过点对点(P-P)接口1950交换信息。如图19所示,IMC 1972和1982将处理器联接到对应存储器、即存储器1932和存储器1934上,所述存储器可以是主存储器的本地附接到对应处理器上的部分。
处理器1970、1980可以各自使用点对点接口电路1976、1994、1986、1998经由单独的P-P接口1952、1954来与芯片组1990交换信息。芯片组1990可以可选地经由高性能接口1939与协处理器1938交换信息。在一个实施例中,协处理器1938是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1990可以经由接口1996耦合至第一总线1916。在一个实施例中,第一总线1916可以是外围部件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,尽管本发明的范围不限于此。
如图19所示,不同I/O装置1914可以连同总线桥接器1918耦合到第一总线1916,所述总线桥接器可以将第一总线1916耦合到第二总线1920。在一个实施例中,一个或多个附加处理器1915(例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、字段可编程门阵列、或任何其他处理器)被耦合到第一总线1916。在一个实施例中,第二总线1920可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合至第二总线1920,所述装置包括例如键盘和/或鼠标1922、多个通信装置1927、以及可以包括指令/代码数据1930的存储单元1928(如磁盘驱动器或者其他大容量存储装置)。进一步地,音频I/O 1924可以耦合至第二总线1920。注意到,其他架构是可能的。例如,替代图19的点对点体系结构,系统可以实现多站式总线或其他这样的架构。
现在参考图20,示出了根据本发明的实施例的更具体的第二示例性系统2000的框图。图19和图20中的相同元件具有相同的参考数字,并且已经从图20中省略了图19的某些方面以避免使图20的其他方面模糊。
图20展示了处理器1970、1980可以分别包括集成存储器和I/O控制逻辑(“CL”)1972和1982。因此,CL 1972、1982包括集成存储器控制器单元并且包括I/O控制逻辑。图20展示了不仅存储器1932、1934被耦合至CL 1972、1982,而且I/O装置2014也被耦合至控制逻辑1972、1982。传统I/O装置2015被耦合至芯片组1990。
现在参考图21,示出的是根据本发明的实施例的SoC 2100的框图。图17中的相似元件具有相同的附图标记。此外,虚线框是关于更先进的SoC的可选特征。在图21中,(多个)互连单元2102被耦合到:应用处理器2110,所述应用处理器包括一组一个或多个核202A-N和一个或多个共享高速缓存单元1706;系统媒介单元1710;(多个)总线控制器单元1716;(多个)集成存储器控制器单元1714;一组或一个或多个协处理器2120,所述协处理器可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元2130;直接存储器访问(DMA)单元2132;以及显示单元2140,所述显示单元用于耦合到一个或多个外部显示器。在一个实施例中,所述(多个)协处理器2120是专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例能够以硬件、软件、固件或这些实现途径的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、以及至少一个输出装置。
诸如图19所示的代码1930的程序代码可以被应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息能够以已知的方式应用于一个或多个输出装置。出于此应用的目的,处理系统包括具有处理器(例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码能够以高级程序或面向对象的编程语言来实现,以与处理系统通信。如果需要,程序代码还能够以汇编或机器语言实现。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可以由机器可读介质上所存储的表属性指令实现至少一个实施例的一个或多个方面,该指令代表处理器内的各种逻辑,当被机器读取时该指令使该机器制作用于执行在此所描述的技术的逻辑。此类表示(称为“IP核”)可以被存储在有形的机器可读介质上并提供给各顾客或制造设施以加载至实际制作该逻辑或处理器的制作机器中。
这样的机器可读存储介质可以包括但不限于:由机器或装置制造或形成的物品的非瞬态有形安排,包括诸如硬盘的存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、CD可擦写光盘(CD-RW)、和磁光盘;半导体器件,例如只读存储器(ROM);随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦可编程只读存储器(EPROM);闪存存储器;电可擦可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(如硬件描述语言(HDL))的非瞬态有形机器可读介质,所述非瞬态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这样的实施例也可以被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况下,可以使用指令转换器将指令从源指令集转换为目标指令集。例如,所述指令转换器可以将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或以其他方式转换为有待由核处理的一个或多个其他指令。指令转换器能够以软件、硬件、固件或其组合来实现。指令转换器可以位于处理器上、处理器外、或者部分在处理器上并且部分在处理器外。
图22是对照根据本发明的多个实施例的用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用的框图。在所示实施例中,指令转换器是软件指令转换器,然而可替代地,指令转换器能够以软件、固件、硬件或其各种组合来实现。图22示出了可以使用x86编译器2204来编译高级语言2202的程序以生成x86二进制代码2206,所述x86二进制代码可以由具有至少一个x86指令集核的处理器2216本机执行。具有至少一个x86指令集核的处理器2216表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的Intel处理器基本相同功能的任何处理器:(1)Intel x86指令集核的指令集的实质部分、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的Intel处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的Intel处理器基本相同的结果。x86编译器2204表示可操作用于生成x86二进制代码2206(例如,目标代码)的编译器,所述x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核的处理器2216上执行。类似地,图22示出了可以使用替代指令集编译器2208来编译高级语言2202的程序以生成替代指令集二进制代码2210,可以由不具有至少一个x86指令集核的处理器2214(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代指令集二进制代码。指令转换器2212用于将x86二进制代码2206转换为可由不具有x86指令集核的处理器2214本机执行的代码。此经转换的代码不太可能与替代指令集二进制代码2210相同,因为能够实现这一点的指令转换器很难制作;然而,经转换的代码将完成一般操作,并且由来自所述替代指令集的指令构成。因此,指令转换器2212表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的处理器或其他电子装置执行x86二进制代码2206的软件、固件、硬件或其组合。
对于图5-10中任一者描述的组件、特征和细节也可以可选地应用于图3-4中的任一者。此外,对于所述设备中的任一者描述的组件、特征和细节也可以可选地应用于在多个实施例中可由和/或用这样的设备执行的任何方法。本文描述的任何处理器可以包括在本文所公开的片上系统(SoC)和/或计算机系统的任一者中和/或在其他计算机系统(例如,台式机或蜂窝电话)和/或其他SoC中。在一些实施例中,所述计算机系统可以包括互连、与所述互连耦合的处理器、以及与所述互连耦合的动态随机存取存储器(DRAM)。可替代地,代替DRAM,可以使用不需要刷新的其他类型的易失性存储器,或者可以使用闪存存储器。可以可选地与SoC中的处理器集成或包括在管芯上或芯片上的其他组件的示例包括但不限于:存储器控制器、存储器(例如,只读存储器(ROM))、随机存取存储器(RAM)、和/或闪存存储器)、图形装置(例如,图形处理单元(GPU)、图形核、或图形处理器等)、数字信号处理器、图像信号处理器、液晶显示器(LCD)或其他显示控制器、以及用于为一个或多个外部接口(例如通用串行总线(USB)、通用异步接收器/发射器(UART)、火线、以太网、蓝牙等)提供控制的一个或多个输入和/或输出(I/O)控制器。用于蜂窝电话的SoC还可以可选地包括长期演进(LTE)调制解调器、传感器引擎、以及卫星导航系统控制器(例如,全球定位卫星(GPS)、伽利略和/或北斗)。在一些实施例中,所述指令可以具有本文公开的指令格式的特征或细节,然而这不是必需的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生词。这些术语并不旨在作为彼此的同义词。而是,在多个实施例中,“连接”可以用于指示两个或更多个元件彼此直接进行物理的、和/或电学的接触。“耦合”可以意指两个或更多个元件彼此进行直接物理和/或电气接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但仍彼此合作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
术语“和/或”可能已被使用。如本文所使用的,术语“和/或”是指一个或另一个或两者(例如,A和/或B表示A或B或A和B两者)。
在以上说明中,阐述了许多特定细节以便提供对这些实施例的透彻理解。然而,可以在没有这些具体细节的一些具体细节的情况下实践其他实施例。本发明的范围不是通过上面提供的具体实施例来确定,而是由下面的权利要求来确定的。在其他情况下,已知的电路、结构、装置和操作已经以框图形式和/或没有细节地示出,以避免模糊对说明书的理解。在认为适当的情况下,参考数字或参考数字的终端部分已经在附图中重复,以指示对应的或类似的元件,所述元件可以具有相似或相同的特性,除非另有说明或清楚地显现。
某些操作可以由硬件组件执行、或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行这些操作的指令。还可以通过硬件和软件的组合来可选地执行所述操作。可以包括特定的或具体的电路或其他逻辑(例如,可能与固件和/或软件组合的硬件)的处理器、机器、电路或硬件可操作用于执行和/或处理所述指令并且响应于所述指令而存储结果。
一些实施例包括一种制品(例如,计算机程序产品),所述制品包括机器可读介质。所述介质可以包括以机器可读的形式提供(例如存储)信息的机制。机器可读介质可以提供或已经在其上存储有指令或指令序列,所述指令或指令序列如果和/或当被机器执行时可操作用于使所述机器执行和/或导致所述机器执行本文公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可以包括非瞬态机器可读存储介质。例如,所述非瞬态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非瞬态存储器、非瞬态数据存储装置等。非瞬态机器可读存储介质不由瞬态传播信号组成。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固体物质。
合适的机器的示例包括但不限于:通用处理器、专用处理器、数字逻辑电路、集成电路、片上系统(SoC)等。合适的机器的其他示例包括:计算机系统或包括处理器、数字逻辑电路或集成电路的其他电子装置。这样的计算机系统或电子装置的示例包括但不限于:台式计算机、膝上型计算机、笔记本电脑、平板计算机、上网本、蜂窝电话(例如,智能电话)、服务器、网络装置(例如,路由器和交换机)、移动互联网装置(MID)、媒体播放器、智能电视、上网机、机顶盒、以及视频游戏控制器。
在整个说明书中,引用“一个实施例”、“实施例”,“一个或多个实施例”、“一些实施例”例如指示特定特征可以在本发明的实践中被包括但未必是必须的。类似地,在描述中,为了简化本公开并有助于理解各种发明性方面,各种特征有时在单个实施例、图或其描述中分组在一起。然而,本公开的方法并不被解释为反映本发明要求比每个权利要求中明确陈述的更多特征的意图。相反,正如以下的权利要求书所反映的,发明性方面在于少于单个公开的实施例的全部特征。因此,据此明确地将具体实施方式之后的权利要求结合到具体实施方式中,其中每一项权利要求独立地代表本发明的一个单独的实施例。
示例实施例
以下示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种处理器,所述处理器包括多个紧缩数据寄存器、以及解码单元,所述解码单元用于对指令进行解码。所述指令用于指示将包括多个莫顿坐标的源紧缩数据操作数、可选地具有所述莫顿坐标将被映射到的多个点的多维空间的维数、所述多维空间的给定维度、以及目的地存储位置。所述处理器还包括执行单元,所述执行单元与所述紧缩数据寄存器和所述解码单元耦合。所述执行单元用于响应于所述解码单元对所述指令进行解码而将结果紧缩数据操作数存储在所述目的地存储位置。所述结果紧缩数据操作数将包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标。所述结果紧缩数据操作数的所述莫顿坐标将被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差由所述指令指示的给定维度的固定变化的点。
示例2包括如示例1所述的处理器,其中,所述执行单元用于存储所述结果紧缩数据操作数,在所述结果紧缩数据操作数中,所述给定维度的所述固定变化是所述给定维度的单位递减。
示例3包括如示例1所述的处理器,其中,所述执行单元用于通过以下方式生成所述结果紧缩数据操作数的每个莫顿坐标:设置与所述源紧缩数据操作数的每个对应莫顿坐标的给定维度相对应的所有最低阶(最低有效)归零位,所述最低阶归零位比与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的每个最低阶设置位更低阶(低有效)。而且,清除与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的最低阶(或最低有效)设置位。
示例4包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对要将所述多维空间的所述维数指示为至少二维和三维中的任一者的指令进行解码。
示例5包括如示例4所述的处理器,其中,所述解码单元用于对要将所述多维空间的所述维数指示为所述二维、所述三维、以及可选的四维中的任一者的指令进行解码。
示例5包括如示例4所述的处理器,其中,所述解码单元用于对要将所述多维空间的所述维数指示为所述二维、所述三维、以及可选的四维中的任一者的指令进行解码。
示例7包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对将具有用于指示所述多维空间的所述维数的操作码的指令进行解码。
示例8包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对将可选地具有立即数或其他位集的指令进行解码,所述立即数或其他位集将包括用于将所述给定维度指示为至少两个不同维度中的任一者的至少两个位。
示例9包括如示例1至3中任一项所述的处理器,其中,所述解码单元用于对将具有用于将所述给定维度指示为至少三个不同维度或者在一些情况下可选的四个不同维度中的任一者的至少两个位的指令进行解码。
示例10包括如示例1至9中任一项所述的处理器,其中,所述执行单元用于生成所述结果紧缩数据操作数的所述莫顿坐标,而不对所述源紧缩数据操作数的与不同维度相对应的所述莫顿坐标的位进行解交织。
示例11包括如示例1至10中任一项所述的处理器,其中,所述执行单元用于存储所述结果紧缩数据操作数,所述结果紧缩数据操作数具有不与所述源紧缩数据操作数的对应莫顿坐标成连续莫顿次序的至少一个莫顿坐标。
示例12包括如示例1至11中任一项所述的处理器,进一步包括分支预测单元,所述分支预测单元用于对多个分支进行预测。可选的指令预取单元与所述分支预测单元耦合。所述指令预取单元用于预取包括所述指令的多个指令。可选的一级(L1)指令高速缓存与所述指令预取单元耦合。所述L1指令高速缓存用于存储包括所述指令的多个指令。可选的L1数据高速缓存用于存储数据。可选的二级(L2)高速缓存与所述L1指令高速缓存和所述L1数据高速缓存耦合。所述L2指令高速缓存用于存储数据和多个指令。可选的指令获取单元与所述L1指令高速缓存和所述解码单元耦合,用于从所述L1指令高速缓存获取所述指令并且向所述解码单元提供所述指令。可选的寄存器重命名单元与所述紧缩数据寄存器耦合,用于对所述紧缩数据寄存器进行重命名。
示例13是一种用于处理器中的方法,所述方法包括接收指令。所述指令指示包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标被映射到的多个点的多维空间的维数、所述多维空间的给定维度、以及目的地存储位置。所述方法还包括响应于执行所述指令而将结果紧缩数据操作数存储在所述目的地存储位置中。所述结果紧缩数据操作数包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标。所述结果紧缩数据操作数的所述莫顿坐标被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差由所述指令指示的给定维度的固定变化的点。
示例14包括如示例13所述的方法,其中,存储所述结果紧缩数据操作数包括存储其中所述固定变化是所述给定维度的单位递减的所述结果紧缩数据操作数。
示例15包括如示例13所述的方法,进一步包括通过以下方式生成所述结果紧缩数据操作数的每个莫顿坐标:设置与所述源紧缩数据操作数的每个对应莫顿坐标的给定维度相对应的所有最低阶归零位,所述最低阶归零位比与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的每个最低阶设置位更低阶。此外,清除与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的最低阶设置位。
示例16包括如示例13所述的方法,其中,接收包括接收能够将所述多维空间的所述维数指示为至少二维和三维中的任一者的指令。
示例17包括如示例13所述的方法,其中,接收包括接收具有指示所述多维空间的所述维数的立即数的指令。
示例18包括如示例13所述的方法,其中,接收包括接收具有指示所述多维空间的所述维数的操作码的指令。
示例19包括如示例13所述的方法,其中,接收包括接收具有能够将所述给定维度指示为至少三个不同维度中的任一者的至少两个位的指令。
示例20包括如示例13至19中任一项所述的方法,进一步包括生成所述结果紧缩数据操作数的所述莫顿坐标,而不对所述源紧缩数据操作数的与不同维度相对应的所述莫顿坐标的位进行解交织。
示例21是一种用于处理多个指令的系统,所述系统包括互连、和与所述互连耦合的处理器。所述处理器用于接收指令,所述指令用于指示将包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标将被映射到的点的多维空间的给定维度、以及目的地紧缩数据寄存器。所述处理器用于响应于所述指令而将结果紧缩数据操作数存储在所述目的地紧缩数据寄存器中。所述结果紧缩数据操作数将包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标。所述结果紧缩数据操作数的所述莫顿坐标将被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差给定维度减一的点。所述系统还包括与互连耦合的动态随机存取存储器(DRAM)。
示例22包括如示例19所述的系统,其中,所述处理器响应于允许多维空间的维数为多个不同维数中的任一者的指令。
示例23是一种制品,所述制品包括非瞬态机器可读存储介质。所述非瞬态机器可读存储介质存储指令。所述指令用于指示将包括多个莫顿坐标的源紧缩数据操作数。多维空间的给定维度具有所述莫顿坐标将被映射到的点。所述指令如果由机器执行则用于使所述机器执行多项操作,所述操作包括将结果紧缩数据操作数存储在目的地存储位置中。所述结果紧缩数据操作数将包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标。所述结果紧缩数据操作数的所述莫顿坐标将被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标将被映射到的点相差由所述指令指示的所述给定维度减一的点。
示例24包括如示例21所述的制品,其中,所述指令的操作码允许所述多维空间的多个不同维数,并且其中所述指令具有用于指示所述多维空间的维数的一个或多个位。
示例25是一种操作用于执行如示例13至20中任一项所述的方法的处理器或其他设备。
示例26是一种包括用于执行如示例13至20中任一项所述的方法的装置的处理器或其他设备。
示例27是一种包括用于执行如示例13至20中任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或装置的任何组合的处理器或其他设备。
实施例28是一种制品,所述制品包括可选的非瞬态机器可读介质,所述非瞬态机器可读介质可选地存储或以其他方式提供指令,所述指令如果和/或当由处理器、计算机系统、电子设备或其他机器执行时操作用于使机器执行如示例13至20中任一项所述的方法。
示例29是一种计算机系统或其他电子设备,所述计算机系统或其他电子设备包括互连、与所述互连耦合的如权利要求1至12中任一项所述的处理器、与所述互连耦合的可选的动态随机存取存储器(DRAM),与所述互连耦合的可选的无线收发器、与所述互连耦合的可选的图像传感器、以及与所述互连耦合的可选的触摸屏控制器。
示例30是一种基本如本文所述的处理器或其他设备。
示例31是一种操作用于执行基本如本文所述的任一方法的处理器或其他设备。
Claims (25)
1.一种处理器,包括:
多个紧缩数据寄存器;
解码单元,所述解码单元用于对指令进行解码,其中所述指令用于指示用来包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标会被映射到的多个点的多维空间的维数、所述多维空间的给定维度、以及目的地存储位置;以及
执行单元,所述执行单元与所述紧缩数据寄存器和所述解码单元耦合,所述执行单元用于响应于所述解码单元对所述指令进行解码而将结果紧缩数据操作数存储在所述目的地存储位置中,其中所述结果紧缩数据操作数用来包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标,其中所述结果紧缩数据操作数的所述莫顿坐标会被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标会被映射到的点相差由所述指令指示的所述给定维度的固定变化的点。
2.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储所述结果紧缩数据操作数,在所述结果紧缩数据操作数中,所述给定维度的所述固定变化是所述给定维度的单位递减。
3.如权利要求1所述的处理器,其特征在于,所述执行单元用于通过以下方式生成所述结果紧缩数据操作数的每个莫顿坐标:
设置与所述源紧缩数据操作数的每个对应莫顿坐标的给定维度相对应的所有最低阶归零位,所述最低阶归零位比与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的每个最低阶设置位更低阶;以及
清除与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的所述最低阶设置位。
4.如权利要求1至3中任一项所述的处理器,其特征在于,所述解码单元用于对将所述多维空间的所述维数指示为至少二维和三维中的任一者的指令进行解码。
5.如权利要求4所述的处理器,其特征在于,所述解码单元用于对将所述多维空间的所述维数指示为所述二维、所述三维、以及四维中的任一者的指令进行解码。
6.如权利要求1至3中任一项所述的处理器,其特征在于,所述解码单元用于对用来具有用于指示所述多维空间的维数的立即数的指令进行解码。
7.如权利要求1至3中任一项所述的处理器,其特征在于,所述解码单元用于对用来具有用于指示所述多维空间的维数的操作码的指令进行解码。
8.如权利要求1至3中任一项所述的处理器,其特征在于,所述解码单元用于对用来具有立即数的指令进行解码,所述立即数用来包括用于将所述给定维度指示为至少两个不同维度中的任一者的至少两个位。
9.如权利要求1至3中任一项所述的处理器,其特征在于,所述解码单元用于对用来具有用于将所述给定维度指示为至少三个不同维度中的任一者的至少两个位的指令进行解码。
10.如权利要求1至3中任一项所述的处理器,其特征在于,所述执行单元用于生成所述结果紧缩数据操作数的所述莫顿坐标,而不对所述源紧缩数据操作数的与不同维度相对应的所述莫顿坐标的位进行解交织。
11.如权利要求1至3中任一项所述的处理器,其特征在于,所述执行单元用于存储所述结果紧缩数据操作数,所述结果紧缩数据操作数具有不与所述源紧缩数据操作数的对应莫顿坐标成连续莫顿次序的至少一个莫顿坐标。
12.如权利要求1至3中任一项所述的处理器,进一步包括:
分支预测单元,所述分支预测单元用于对多个分支进行预测;
指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括所述指令的多个指令;
一级L1指令高速缓存,与所述指令预取单元耦合,所述L1指令高速缓存用于存储包括所述指令的多个指令;
L1数据高速缓存,所述L1数据高速缓存用于存储数据;
二级L2高速缓存,与所述L1指令高速缓存和所述L1数据高速缓存耦合,所述L2高速缓存用于存储数据和多个指令;
指令获取单元,与所述L1指令高速缓存和所述解码单元耦合,所述指令获取单元用于从所述L1指令高速缓存获取所述指令并且向所述解码单元提供所述指令;以及
寄存器重命名单元,与所述紧缩数据寄存器耦合,所述寄存器重命名单元用于对所述紧缩数据寄存器进行重命名。
13.一种用于处理器中的方法,所述方法包括:
接收指令,所述指令指示包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标被映射到的多个点的多维空间的维数、所述多维空间的给定维度、以及目的地存储位置;以及
响应于执行所述指令而将结果紧缩数据操作数存储在所述目的地存储位置中,所述结果紧缩数据操作数包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标,其中所述结果紧缩数据操作数的所述莫顿坐标会被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标被映射到的点相差由所述指令指示的所述给定维度的固定变化的点。
14.如权利要求13所述的方法,其特征在于,存储所述结果紧缩数据操作数包括存储其中所述固定变化是所述给定维度的单位递减的所述结果紧缩数据操作数。
15.如权利要求13所述的方法,进一步包括通过以下方式生成所述结果紧缩数据操作数的每个莫顿坐标:
设置与所述源紧缩数据操作数的每个对应莫顿坐标的给定维度相对应的所有最低阶归零位,所述最低阶归零位比与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的每个最低阶设置位更低阶;以及
清除与所述源紧缩数据操作数的每个莫顿坐标的给定维度相对应的所述最低阶设置位。
16.如权利要求13所述的方法,其特征在于,接收包括接收能够将所述多维空间的所述维数指示为至少二维和三维中的任一者的指令。
17.如权利要求13所述的方法,其特征在于,接收包括接收具有指示所述多维空间的所述维数的立即数的指令。
18.如权利要求13所述的方法,其特征在于,接收包括接收具有指示所述多维空间的所述维数的操作码的指令。
19.如权利要求13所述的方法,其特征在于,接收包括接收具有能够将所述给定维度指示为至少三个不同维度中的任一者的至少两个位的指令。
20.如权利要求13所述的方法,进一步包括生成所述结果紧缩数据操作数的所述莫顿坐标,而不对所述源紧缩数据操作数的与不同维度相对应的所述莫顿坐标的位进行解交织。
21.一种处理器,包括,
指令取出单元,用于取出指令,所述指令用于指示用来包括多个莫顿坐标的源紧缩数据操作数、具有所述莫顿坐标会被映射到的多个点的多维空间的给定维度、以及目的地存储位置;以及
执行单元,用于将结果紧缩数据操作数存储在所述目的地存储位置中,其中所述结果紧缩数据操作数用来包括多个莫顿坐标,所述莫顿坐标各自对应于所述源紧缩数据操作数的所述莫顿坐标中的一个不同莫顿坐标,其中所述结果紧缩数据操作数的所述莫顿坐标会被映射到所述多维空间中的与所述源紧缩数据操作数的对应莫顿坐标会被映射到的点相差由所述指令指示的所述给定维度减一的点。
22.如权利要求21所述的处理器,其特征在于,所述指令的操作码允许所述多维空间的多个不同维数,并且其中所述指令具有用于指示所述多维空间的维数的一个或多个位。
23.一种用于计算的设备,包括用于执行如权利要求13至20中任一项所述的方法的装置。
24.一种机器可读介质,所述机器可读介质存储指令,所述指令如果由机器执行则用于使所述机器执行如权利要求13至20中任一项所述的方法。
25.一种电子装置,包括互连、与所述互连耦合的如权利要求1至12中任一项所述的处理器、以及与所述互连耦合的动态随机存取存储器DRAM。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/542,004 US9772850B2 (en) | 2014-11-14 | 2014-11-14 | Morton coordinate adjustment processors, methods, systems, and instructions |
US14/542,004 | 2014-11-14 | ||
PCT/US2015/055593 WO2016077020A1 (en) | 2014-11-14 | 2015-10-14 | Morton coordinate adjustment processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107111489A CN107111489A (zh) | 2017-08-29 |
CN107111489B true CN107111489B (zh) | 2021-02-09 |
Family
ID=55954836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580059140.9A Active CN107111489B (zh) | 2014-11-14 | 2015-10-14 | 莫顿坐标调整处理器、方法、系统和指令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9772850B2 (zh) |
EP (1) | EP3218816B1 (zh) |
JP (1) | JP6708334B2 (zh) |
KR (1) | KR102275561B1 (zh) |
CN (1) | CN107111489B (zh) |
BR (1) | BR112017010075A2 (zh) |
SG (1) | SG11201703089PA (zh) |
TW (1) | TWI599950B (zh) |
WO (1) | WO2016077020A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US9772849B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
KR102537530B1 (ko) * | 2015-10-26 | 2023-05-26 | 삼성전자 주식회사 | 가속 구조를 생성하는 방법 및 장치 |
WO2018183754A1 (en) * | 2017-03-29 | 2018-10-04 | Mou Zhijing George | Method and system for real time 3d-space search and point-cloud registration using a dimension-shuffle transform |
CN110941789B (zh) * | 2018-09-21 | 2023-12-15 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
WO2021145573A1 (ko) * | 2020-01-16 | 2021-07-22 | 엘지전자 주식회사 | 포인트 클라우드 데이터 처리 장치 및 방법 |
CN113473153B (zh) * | 2020-03-30 | 2023-04-25 | 鹏城实验室 | 一种点云属性预测方法、编码方法、解码方法及其设备 |
CN111813840B (zh) * | 2020-05-29 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
GB2608107B (en) | 2021-06-18 | 2023-06-14 | Imagination Tech Ltd | Mapping multi-dimensional coordinates to a 1D space |
US12062214B2 (en) * | 2021-12-27 | 2024-08-13 | Advanced Micro Devices, Inc. | Systems and method for generating Morton code |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473093A (zh) * | 2009-06-30 | 2012-05-23 | 英特尔公司 | 对多个通道中的紧缩数据解压缩 |
US8990518B2 (en) * | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US20160139931A1 (en) * | 2014-11-14 | 2016-05-19 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5321797A (en) | 1990-06-11 | 1994-06-14 | Eastman Kodak Company | Apparatus and method for performing coordinate transformation employing stored values and interpolation |
EP1265132A3 (en) | 1994-12-02 | 2005-02-09 | Intel Corporation | Microprocessor with packing operation of composite operands |
EP0754393B1 (en) * | 1995-02-03 | 2000-04-05 | Philips Electronics N.V. | Video image colour encoding |
GB9509987D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US5614913A (en) | 1995-06-07 | 1997-03-25 | Trimble Navigation | Optimization of survey coordinate transformations |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
JPH10275080A (ja) | 1997-01-24 | 1998-10-13 | Texas Instr Inc <Ti> | マイクロプロセッサ |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
ATE557343T1 (de) | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand |
KR100324253B1 (ko) | 1999-12-10 | 2002-02-25 | 윤덕용 | 마이크로 프로세서를 위한 저전력 인스트럭션 디코딩 방법 |
US6745319B1 (en) | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US6788303B2 (en) | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
IL145245A0 (en) | 2001-09-03 | 2002-06-30 | Jtc 2000 Dev Delaware Inc | System and method including vector-matrix multiplication |
US6920446B1 (en) | 2002-03-21 | 2005-07-19 | Ncr Corporation | Representing spatial objects in a defined space |
US7937559B1 (en) | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
GB2409059B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409064B (en) | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
US7949856B2 (en) | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US7353860B2 (en) | 2004-06-16 | 2008-04-08 | Intel Corporation | Heat dissipating device with enhanced boiling/condensation structure |
US9557994B2 (en) | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US8543579B2 (en) * | 2005-06-17 | 2013-09-24 | International Business Machines Corporation | Range query methods and apparatus |
GB0524804D0 (en) | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
WO2007120304A2 (en) | 2005-12-02 | 2007-10-25 | Gauda, Inc. | Optical proximity correction on hardware or software platforms with graphical processing units |
US7545382B1 (en) | 2006-03-29 | 2009-06-09 | Nvidia Corporation | Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation |
US7787691B2 (en) * | 2006-04-11 | 2010-08-31 | Telefonaktiebolaget Lm Ericsson (Publ) | High quality image processing |
US7493475B2 (en) | 2006-11-15 | 2009-02-17 | Stmicroelectronics, Inc. | Instruction vector-mode processing in multi-lane processor by multiplex switch replicating instruction in one lane to select others along with updated operand address |
US8284188B1 (en) * | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US8243083B1 (en) * | 2007-12-04 | 2012-08-14 | Nvidia Corporation | System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner |
US8773422B1 (en) * | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
US8688723B2 (en) | 2007-12-21 | 2014-04-01 | Hewlett-Packard Development Company, L.P. | Methods and apparatus using range queries for multi-dimensional data in a database |
US8219564B1 (en) | 2008-04-29 | 2012-07-10 | Netapp, Inc. | Two-dimensional indexes for quick multiple attribute search in a catalog system |
US9442960B2 (en) | 2008-05-16 | 2016-09-13 | Lawrence Livermore National Security, Llc | High performance data layout and processing |
US7750842B2 (en) * | 2008-09-18 | 2010-07-06 | Raytheon Company | Parallel processing to generate radar signatures for multiple objects |
US9069686B2 (en) | 2008-11-28 | 2015-06-30 | Intel Corporation | Digital signal processor having instruction set with one or more non-linear functions using reduced look-up table with exponentially varying step-size |
US20100146241A1 (en) * | 2008-12-09 | 2010-06-10 | Novafora, Inc. | Modified-SIMD Data Processing Architecture |
US8321492B1 (en) * | 2008-12-11 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm |
US8577164B2 (en) * | 2009-01-19 | 2013-11-05 | Telefonaktiebolaget L M Ericsson (Publ) | Image processing |
US8055687B2 (en) | 2009-01-20 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | System and method for determining intervals of a space filling curve in a query box |
US8385669B2 (en) | 2009-03-04 | 2013-02-26 | Microsoft Corporation | Scalable mutable tiled multi-resolution texture atlases |
US20120233210A1 (en) | 2011-03-12 | 2012-09-13 | Matthew Thomas Bogosian | Storage of Arbitrary Points in N-Space and Retrieval of Subset thereof Based on Criteria Including Maximum Distance to an Arbitrary Reference Point |
DK2596640T3 (en) * | 2010-07-21 | 2016-12-05 | ERICSSON TELEFON AB L M (publ) | PICTURE encoding and decoding |
GB2484489A (en) | 2010-10-12 | 2012-04-18 | Advanced Risc Mach Ltd | Instruction decoder using an instruction set identifier to determine the decode rules to use. |
US8836714B2 (en) * | 2010-10-29 | 2014-09-16 | The University Of Utah Research Foundation | Rapid, interactive editing of massive imagery data |
IL218588A (en) | 2011-03-23 | 2015-09-24 | Asml Netherlands Bv | A method and system for calculating the electromagnetic scattering properties of a structure and for reconstructing approximate structures |
EP2508979B1 (en) | 2011-04-07 | 2018-10-10 | VIA Technologies, Inc. | Efficient conditional alu instruction in read-port limited register file microprocessor |
US8780112B2 (en) | 2011-06-08 | 2014-07-15 | Pacific Data Images Llc | Coherent out-of-core point-based global illumination |
US9116790B2 (en) | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
TWI455018B (zh) | 2011-10-03 | 2014-10-01 | Via Tech Inc | 編解碼裝置及其執行與驅動方法 |
CN104011670B (zh) | 2011-12-22 | 2016-12-28 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
US9100184B2 (en) | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
US9396512B2 (en) | 2012-03-09 | 2016-07-19 | Nvidia Corporation | Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit |
US8700661B2 (en) | 2012-04-12 | 2014-04-15 | Navteq B.V. | Full text search using R-trees |
US8694575B2 (en) | 2012-06-11 | 2014-04-08 | The Johns Hopkins University | Data-intensive computer architecture |
TWI472957B (zh) | 2012-10-04 | 2015-02-11 | Chip Goal Electronics Corp | 具有旋轉校正功能的動作感測裝置與方法 |
US9298457B2 (en) | 2013-01-22 | 2016-03-29 | Altera Corporation | SIMD instructions for data compression and decompression |
US9411593B2 (en) * | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9183652B2 (en) * | 2013-05-15 | 2015-11-10 | Intel Corporation | Variable rasterization order for motion blur and depth of field |
US10394848B2 (en) * | 2013-07-29 | 2019-08-27 | Amazon Technologies, Inc. | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
US10083195B2 (en) | 2014-04-24 | 2018-09-25 | Futurewei Technologies, Inc. | System and method for composing a multidimensional index key in data blocks |
US20160139924A1 (en) | 2014-11-14 | 2016-05-19 | Intel Corporation | Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates |
US20160139921A1 (en) | 2014-11-14 | 2016-05-19 | Intel Corporation | Vector instruction to compute coordiante of next point in a z-order curve |
US9772849B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US20160139919A1 (en) | 2014-11-14 | 2016-05-19 | Intel Corporation | Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates |
-
2014
- 2014-11-14 US US14/542,004 patent/US9772850B2/en active Active
-
2015
- 2015-10-07 TW TW104133042A patent/TWI599950B/zh active
- 2015-10-14 BR BR112017010075-4A patent/BR112017010075A2/pt not_active Application Discontinuation
- 2015-10-14 KR KR1020177011251A patent/KR102275561B1/ko active IP Right Grant
- 2015-10-14 WO PCT/US2015/055593 patent/WO2016077020A1/en active Application Filing
- 2015-10-14 EP EP15859165.1A patent/EP3218816B1/en active Active
- 2015-10-14 CN CN201580059140.9A patent/CN107111489B/zh active Active
- 2015-10-14 SG SG11201703089PA patent/SG11201703089PA/en unknown
- 2015-10-14 JP JP2017522152A patent/JP6708334B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473093A (zh) * | 2009-06-30 | 2012-05-23 | 英特尔公司 | 对多个通道中的紧缩数据解压缩 |
US8990518B2 (en) * | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US20160139931A1 (en) * | 2014-11-14 | 2016-05-19 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
Non-Patent Citations (1)
Title |
---|
Neighbor-Finding Based on Space-Filling Curves;Hue-Ling Chen 等;《information systems,pergamon press》;20050501;第205-226页 * |
Also Published As
Publication number | Publication date |
---|---|
SG11201703089PA (en) | 2017-05-30 |
CN107111489A (zh) | 2017-08-29 |
EP3218816A1 (en) | 2017-09-20 |
JP2017534116A (ja) | 2017-11-16 |
BR112017010075A2 (pt) | 2018-02-14 |
TWI599950B (zh) | 2017-09-21 |
WO2016077020A1 (en) | 2016-05-19 |
EP3218816A4 (en) | 2018-07-25 |
EP3218816B1 (en) | 2021-09-22 |
JP6708334B2 (ja) | 2020-06-10 |
TW201633115A (zh) | 2016-09-16 |
US20160139931A1 (en) | 2016-05-19 |
KR102275561B1 (ko) | 2021-07-12 |
US9772850B2 (en) | 2017-09-26 |
KR20170065587A (ko) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111489B (zh) | 莫顿坐标调整处理器、方法、系统和指令 | |
KR101748538B1 (ko) | 벡터 인덱싱 메모리 액세스 플러스 산술 및/또는 논리 연산 프로세서들, 방법들, 시스템들 및 명령어들 | |
CN107908427B (zh) | 用于多维数组中的元素偏移量计算的指令 | |
KR102283947B1 (ko) | 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어 | |
CN108681465B (zh) | 用于产生整数序列的处理器、处理器核及系统 | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
WO2013095635A1 (en) | Instruction for merging mask patterns | |
WO2013095552A1 (en) | Vector instruction for presenting complex conjugates of respective complex numbers | |
US9772848B2 (en) | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions | |
CN107111554B (zh) | 用于在加载数据元素以供执行时考虑空间局部性的装置和方法 | |
KR20170097011A (ko) | 벡터 비트 반전 및 크로싱을 수행하기 위한 방법 및 장치 | |
WO2013095629A1 (en) | Apparatus and method for vector instructions for large integer arithmetic | |
CN114721624A (zh) | 用于处理矩阵的处理器、方法和系统 | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
KR101826707B1 (ko) | 마스킹된 결과 요소들로의 전파를 이용하여 연속 소스 요소들을 마스킹되지 않은 결과 요소들에 저장하기 위한 프로세서, 방법, 시스템 및 명령어 | |
EP3218798A1 (en) | Machine level instructions to compute a 3d z-curve index from 3d coordinates | |
WO2013095605A1 (en) | Apparatus and method for sliding window data gather |
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 |