CN107111485A - 三维莫顿坐标转换处理器、方法、系统和指令 - Google Patents
三维莫顿坐标转换处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN107111485A CN107111485A CN201580059019.6A CN201580059019A CN107111485A CN 107111485 A CN107111485 A CN 107111485A CN 201580059019 A CN201580059019 A CN 201580059019A CN 107111485 A CN107111485 A CN 107111485A
- Authority
- CN
- China
- Prior art keywords
- coordinates
- instruction
- compressed data
- data operation
- given
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 125
- 238000000034 method Methods 0.000 title claims description 53
- 238000003860 storage Methods 0.000 claims abstract description 123
- 230000004044 response Effects 0.000 claims abstract description 33
- 230000001052 transient effect Effects 0.000 claims description 14
- 238000013500 data storage Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 7
- 239000013598 vector Substances 0.000 description 90
- 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 76
- 238000010586 diagram Methods 0.000 description 44
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 23
- 210000004027 cell Anatomy 0.000 description 21
- 230000008859 change Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000003491 array Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 210000004940 nucleus Anatomy 0.000 description 6
- 241001269238 Data Species 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 101100194363 Schizosaccharomyces pombe (strain 972 / ATCC 24843) res2 gene Proteins 0.000 description 4
- 230000032683 aging Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 210000001519 tissue Anatomy 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 208000034530 PLAA-associated neurodevelopmental disease Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 208000024754 bloodshot eye Diseases 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- DMBHHRLKUKUOEG-UHFFFAOYSA-N diphenylamine Chemical compound C=1C=CC=CC=1NC1=CC=CC=C1 DMBHHRLKUKUOEG-UHFFFAOYSA-N 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007087 memory ability Effects 0.000 description 1
- 230000005055 memory storage Effects 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
- 238000012856 packing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 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/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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
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)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
处理器包括多个紧缩数据寄存器、解码单元和执行单元。解码单元用于解码三维(3D)莫顿坐标转换指令。3D莫顿坐标转换指令用于指示用于包括多个3D莫顿坐标的源紧缩数据操作数,并且用于指示一个或多个目的地存储位置。执行单元与紧缩数据寄存器和解码单元耦合。响应于解码单元解码3D莫顿坐标转换指令,执行单元用于将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中。一个或多个结果紧缩数据操作数用来包括多个三个3D坐标的集合。三个3D坐标的集合中的每一个将对应于3D莫顿坐标中的不同的一个。
Description
背景
技术领域
本文中所描述的各实施例一般涉及处理器。具体而言,本文中所描述的实施例一般涉及在处理器内的不同坐标系统之间转换。
背景信息
计算机系统和其他电子设备通常利用组织在数据结构中的数据。数据结构可以表示数据的特定排列或组织。在计算机系统中经常使用的一个常见类型的数据结构是数组,例如二维(2D)数组。
图1示出其中数据项(例如,值7、16、24、27等等)被排列在两个维度中的二维(2D)数组100的示例。典型地,2D数据结构可以表示表、矩阵等等。在图示中,由第一维度或x轴102和第二维度或y轴104来定义两个维度。x轴和y轴相互垂直并且定义在其中排列数据项的2D网格。2D数组中的数据项可以由沿着两条轴的x和y指数或坐标的值来标识。x坐标表示从两条轴相交的原点测量的沿x轴的距离和/或相对位置,而y坐标表示从原点测量的沿y轴的距离和/或相对位置。在示出的示例中,x坐标和y坐标具有0、1、2和3的值。典型地,坐标或指数可以表示行数和列数。作为示例,具有14的值的数据项可以由x,y坐标(1,2)标识,x,y坐标(1,2)可以指示在第2列第3行中的数据项。构想了其他示例,其中2D数据结构表示笛卡尔坐标系统,并且坐标可以表示笛卡尔坐标系统中的点的位置。
在计算机系统和其他电子设备内,可以将此类数组和其他数据结构存储在存储器或其他线性存储设备中。将2D和其他多维数组存储在存储器中的不同方式是可能的。例如,可以将2D数组按照行主序(row-major order)存储。在行主序中,数组的行在存储器中是连续的。例如,可以将数据项按照27、3、8、11、9、24、7、1、8、14、16、2、7、16、4和20的顺序存储在存储器中。替代地,可以将2D数组按照列主序(column-major order)存储在存储器中。在列主序中,数组的列在存储器中是连续的。例如,可以将数据项按照27、9、8、7、3、24、14、16、8、7、16、4、11、1、2和20的顺序存储在存储器中。
附图说明
通过参考用于说明实施例的以下描述和所附附图,可最佳地理解本发明。在附图中:
图1示出二维(2D)数组的示例。
图2示出映射到图1的2D数组的莫顿(Morton)序曲线的示例。
图3是用于执行3D莫顿坐标转换指令的实施例的处理器的实施例的框图。
图4是执行3D莫顿坐标转换指令的实施例的方法的实施例的流程框图。
图5是3D莫顿坐标转换操作的示例实施例的框图,3D莫顿坐标转换操作用于将存储在32位数据元素中的3D莫顿坐标转换为存储在三个结果紧缩数据操作数的对应的数据元素中的三个对应的3D坐标。
图6是3D莫顿坐标转换操作的示例实施例的框图,3D莫顿坐标转换操作用于将存储在64位数据元素中的3D莫顿坐标转换为存储在三个结果紧缩数据操作数的对应的数据元素中的三个对应的3D坐标。
图7是3D莫顿坐标转换操作的示例实施例的框图,3D莫顿坐标转换操作用于将存储在32位数据元素中的3D莫顿坐标转换为存储在单个结果紧缩数据操作数的对应的32位数据元素的不同部分中的三个对应的3D坐标。
图8是3D莫顿坐标转换操作的示例实施例的框图,3D莫顿坐标转换操作用于将存储在64位数据元素中的3D莫顿坐标转换为存储在单个结果紧缩数据操作数的对应的64位数据元素的不同部分中的三个对应的3D坐标。
图9是用于执行莫顿坐标转换指令的实施例的合适的处理器的更详细的示例实施例的框图。
图10是坐标转换指令的实施例的框图。
图11A-11C是示出根据本发明的多个实施例的通用向量友好指令格式及其指令模板的框图。
图12A-B是示出根据本发明的多个实施例的示例性专用向量友好指令格式和操作码字段的框图。
图13A-D是示出根据本发明的多个实施例的示例性专用向量友好指令格式及其多个字段的框图。
图14是寄存器架构的实施例的框图。
图15A是示出有序流水线的实施例以及寄存器重命名的乱序发布/执行流水线的实施例的框图。
图15B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。
图16A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓存的本地子集的实施例的框图。
图16B是图16A的处理器核的部分的展开图的实施例的框图。
图17是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。
图18是计算机架构的第一实施例的框图。
图19是计算机架构的第二实施例的框图。
图20是计算机架构的第三实施例的框图。
图21是计算机架构的第四实施例的框图。
图22是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文中公开了用于将三维(3D)莫顿坐标转换为三个3D坐标(例如,x、y和z坐标)的3D莫顿坐标转换指令、用于执行该指令的处理器、当处理或执行指令时由处理器执行的方法、以及包括用于处理或执行该指令的一个或多个处理器的系统。在以下描述中,阐述了多个特定细节(例如,特定指令操作、数据格式、处理器配置、微架构细节、操作序列等)。然而,在没有这些特定细节的情况下,也可实践实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免混淆对本描述的理解。
一个挑战是将数据项存储在存储器或线性存储设备中的方式可能显著地影响使用这些数据项的算法的性能。一方面,数据项一般需要被从存储器读取到处理器中,但是一次只有有限数量的位可以被从存储器读取到处理器中。例如,通常处理器一次(例如,在单个读取操作中)只能从存储器读取连续数据的512位。不同的数据项将被按照连续的顺序读取,取决于数据项是按照行主序、列主序还是其他顺序存储的。例如,如果数据项是按照行主序存储的,则可以按照27、3、8、11、9、24等等的顺序读取数据项,直到512位的最大值。相反,如果数据项是按照行主序存储的,则可以按照27、9、8、7、3、24等等的顺序读取数据项,直到512位的最大值。一般而言,从存储器的每个读取操作可能只能从数组获得感兴趣的数据项中的一些。作为示例,尤其当数组是大的时(例如,至少具有多于512位),如果按照行主序存储数据项,则甚至可能不能在同一读取操作中获得来自数组的第一列的在不同行但相同列中的相邻数据(例如,数据项27和9),即使这些数据项在数组中相互毗邻。当数据是按照列主序时并且对于3D和4D数组的数据的存储可能遇到类似的情形。
在存储器中排列数据项的方式一般也影响有效地将数据项高速缓存在处理器的一个或多个高速缓存中的能力。对高速缓存中的数据项的访问通常具有低于对存储器中的数据项的访问的等待时间。然而,即使感兴趣的数据项在高速缓存中,如果数据项分散在许多不同的高速缓存行中,往往可能产生较差的高速缓存利用率。通常,每个高速缓存行存储已经从存储器读取的512位的连续数据。如果没有按照对于使用数据的相关算法有效的方式在存储器中排列数据项,则数据项在高速缓存行中可能是稀疏的。在更严重的情形下,每个高速缓存行可能只保存单个感兴趣的数据项。相反,如果将按照对于特定算法高度有效的方式在存储器中排列数据项,则感兴趣的数据项可以被更密集地紧缩在高速缓存行内,每个高速缓存行包括从多个到许多感兴趣的数据项。这可以帮助改善高速缓存的有效性。类似地,如果按照对于特定算法高度有效的方式在存储器中排列数据项,则在每个读取操作中至少按平均更多感兴趣的数据项可以被读取到处理器中。因此,将会允许按照对于特定算法有效的方式在存储器中排列数据的方法可以帮助改善性能。
存在多种不同类型的尝试处理相对于其他数据具有多维位置或接近度的数据的算法。作为一个示例,图像处理算法(例如,红眼减弱、压缩等等)经常尝试一起或同时处理毗邻的、相邻的或以其他方式接近的像素的组的数据。算法可能相对地对相邻像素块的数据而不是在单个行或列中的所有像素的数据(例如,可能是在行主或列主排列中的情形)更感兴趣。类似地,在许多视频处理算法(例如,压缩、视频监视分析、机器人视觉等等)中,通常一起或同时处理相邻像素组的数据或顺序视频帧的对应的像素中的数据。例如,经常通过存储此类像素之间的区别而不是绝对像素值来实现压缩。也趋向于利用具有多维位置的数据的其他应用或算法的示例包括但不限于层析成像分析、地震分析、几何建模、矩阵操作(例如,矩阵乘和/或转置)、有限元分析、光线跟踪、傅里叶变换、并行数据构建应用、以及图形应用等等。然而,如上所讨论的,尤其当涉及相对大的数组时,行主序的、列主序的、和多种其他排列的数据经常不为频繁利用具有多维位置的数据的应用提供有效的数据排列。因此,保留多维位置的组织数据的其他方式往往将为某些应用提供某些优势。
Z顺序的曲线,也被称为莫顿序曲线,是连续的填充空间的曲线或函数,其能够将多维数据映射到单个维度同时保留数据的多维位置或接近度。换言之,莫顿序曲线可以按照保留数据的多维位置的方式将2D、3D、4D或其他多维空间中的数据映射到线性列表或排列的数据上(例如,具有多维空间中的位置的数据在莫顿曲线提供的线性列表或排列中也具有位置)。沿着莫顿序曲线的数据的顺序被称为Z曲线顺序或莫顿序。莫顿序反映在每个点的莫顿代码或莫顿坐标中。Z顺序曲线具有作为基础单元的线性地连接四个点的Z形曲线。整体Z顺序空间填充曲线是通过将多个或许多这些Z形曲线或单元连接在一起以填充2D、3D、4D或其他多维空间而形成的。
图2示出映射到图1的2D数组100的Z顺序曲线或莫顿序曲线206的示例。如图所示,在线性排列中可以将数个Z形曲线或单元(在该示例中四个)连接在一起以穿过或填充2D数组中的所有点。在该示例中,由于2D数组中存在十六个数据项,每个具有四个点的四个Z形单元完全遍历十六个数据项2D数组。在图示中,坐标以十进制记数示出(例如,1、2、3等等)。坐标的等效的二进制表示207也被示出在十进制坐标旁边的括号中(例如,10,11)。作为示例,十进制坐标值2相当于二进制指数值“10”。
将莫顿序曲线映射到数组涉及确定数组的点或数据项的莫顿代码或坐标208。可以通过以固定模式交织多个多维坐标的二进制表示的位来计算沿着莫顿序曲线的各个点的莫顿坐标。例如,如果x坐标的第一和第二位分别表示为x1和x2,并且如果y坐标的第一和第二位分别表示为y1和y2,则可以通过将这些位交织为顺序x1y1x2y2来计算点的莫顿坐标。为了进一步说明,可以通过交织这些坐标的二进制表示(即,01,00)的位以得到值“0001”的莫顿坐标208来得出点(x=l,y=0)的莫顿坐标。类似地,在3D和4D中,可以分别通过交织三个和四个坐标的二进制表示的位来得出3D或4D莫顿坐标。在相反的方向中,计算多个多维坐标的二进制表示涉及将莫顿坐标的位逆固定解交织为分开的坐标。例如,可以通过将位x1y1x2y2解交织以生成x1x2的x坐标和y1y2的y坐标而将莫顿坐标x1y1x2y2转换为x和y坐标的二进制表示。为了进一步说明,可以将莫顿坐标“0001”转换为x坐标“01”和y坐标“00”的二进制表示。类似地,在3D和4D中,可以通过将3D或4D莫顿坐标的位解交织来得出三个或四个不同坐标的二进制表示。
部分地由于其表示数据中的多维位置的能力,可以将2D、3D或4D数组重新排列为对应的2D、3D或4D莫顿序表示以帮助改善某些类型的应用的性能。例如,在应用处理数据之前,可以在存储器中将数据从2D、3D或4D数组重新排列为对应的2D、3D或4D莫顿序表示。在该应用处理了数据之后,可能想要将2D、3D或4D莫顿序表示转换回2D、3D或4D数组。在其他情形下,最初可以按2D、3D或4D莫顿序表示组织数据,并且为了改善性能或为了其他原因可以将数据重新排列为2D、3D或4D数组。在任意情况下,通常期望在莫顿序排列和多维数组和/或多维空间之间转换。此类转换一般往往是计算密集的。能够加速此类转换的指令可以帮助改善性能。
图3是用于执行3D莫顿坐标转换指令312的实施例的处理器310的实施例的框图。在一些实施例中,该处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。该处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一者,或具有不同架构的组合(例如,不同的核可具有不同的架构)。
在操作期间,处理器310可以接收3D莫顿坐标转换指令312。例如,可从互连上的存储器取出或以其他方式接收该指令。指令可表示宏指令、汇编语言指令、机器代码指令、或其他指令、或处理器的指令集的控制信号。
再次参考图3,该处理器包括解码单元或解码器314。解码单元可接收并解码3D莫顿坐标转换指令。3D莫顿坐标转换指令可以是处理器的指令集的一部分。解码单元可输出反映、表示相对较高级的3D莫顿坐标转换指令和/或从相对较高级的3D莫顿坐标转换指令导出的一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等)。可使用各种不同机制来实现该解码单元,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和适于实现解码单元的其他机制。
在一些实施例中,作为被直接提供给解码单元的3D莫顿坐标转换指令的替代方案,可以任选地使用指令仿真器、翻译器、变形器、解释器或其它指令转换模块。各种类型的合适的指令转换模块可以以软件、硬件、固件或其组合来实现。在一些实施例中,该指令转换模块可位于处理器之外,例如,在单独的管芯上和/或在存储器中(例如,作为静态的、动态的或运行时仿真模块)。作为示例,指令转换模块可接收可以是第一指令集中的3D莫顿坐标转换指令,并且可将该3D莫顿坐标转换指令仿真、变换、变形、解释或以其它方式转换为可以是第二不同指令集中的一个或多个对应的中间指令或控制信号。可将第二指令集中的该一个或多个中间指令或控制信号提供给解码单元,该解码单元可将它们解码为可由处理器的原生硬件(例如,一个或多个执行单元)执行的一个或多个较低级指令或控制信号。
再次参考图3,该处理器还包括一组紧缩数据寄存器318。紧缩数据寄存器中的每一个都可以表示可用于存储紧缩数据、向量数据、或单指令多数据(SIMD)数据的管芯上的存储位置。在SIMD架构中,紧缩数据指令、向量指令或者SIMD指令可同时或并行地对多个数据元素或者多对数据元素进行操作。处理器可具有并行执行硬件,该并行执行硬件响应于紧缩数据指令来同时或并行地执行多个操作。多个数据元素可在一个寄存器或存储器位置内被紧缩为紧缩数据或向量数据。在紧缩数据中,寄存器或者其他存储位置的位可逻辑地分成数据元素序列。例如,256位宽紧缩数据寄存器可具有四个64位宽数据元素、八个32位数据元素、十六个16位数据元素等。每一数据元素可表示单一独立的一段数据(例如,像素颜色、坐标等),该段数据可单独地操作和/或与其他数据独立地操作。紧缩数据寄存器可表示对软件和/或编程者可见的架构可见或架构寄存器,并且/或者是由处理器的指令集中的指令所指示以便标识操作数的寄存器。这些架构寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)。可以使用已知技术将紧缩数据寄存器在不同的微架构中以不同的方式实现,并且不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、以及它们的组合。
在一些实施例中,该指令可以明确指定(例如通过一个或多个字段或位集合)或者以其它方式指示(例如隐含指示)用来包括多个3D莫顿坐标的源紧缩数据操作数320,并且可以指定或以其它方式指示其中将存储一个或多个结果紧缩数据操作数324的一个或多个目的地存储位置。作为一个示例,该指令可具有操作数指定字段以指定寄存器、存储器位置、或其他存储位置以用于源和结果操作数中的一个或多个。替代地,该操作数中的一个或多个可任选地对于该指令是隐含的(例如,对该指令的操作码是隐含的)。作为另一选项,也可以将用于源操作数的存储位置作为结果操作数重新使用(例如,使用最初用于源操作数而后来用于结果操作数的同一存储位置对于指令可以是隐含的)。如图所示,在一些实施例中,可以可选地将源紧缩数据操作数320存储在第一紧缩数据寄存器中。如图进一步所示,在一些实施例中,可以将一个或多个结果紧缩数据操作数324存储在一个或多个紧缩数据寄存器中。替代地,在一些实施例中,用于源紧缩数据操作数的紧缩数据寄存器可任选地被重新用于存储结果紧缩数据操作数。在一方面,源/目的地寄存器可隐式地或隐含地被理解成用于源操作数和结果操作数两者。此外,由于存储器位置或其他存储位置可任选地用于这些操作数中的一个或多个,对紧缩数据寄存器的使用不是必须的。
再次参考图3,执行单元316与解码单元314以及紧缩数据寄存器318耦合。该执行单元可接收表示3D莫顿坐标转换指令312和/或从该3D莫顿坐标转换指令312导出的一个或多个经解码或以其他方式转换的指令或控制信号。该执行单元还可以接收用来包括多个3D莫顿坐标的源紧缩数据操作数320。响应于3D莫顿坐标转换指令和/或作为其结果(例如,响应于从该指令解码的一个或多个指令或控制信号),执行单元用于将一个或多个结果紧缩数据操作数324存储在由该指令指示的一个或多个目的地存储位置中。在一些实施例中,该一个或多个结果紧缩数据操作数可以包括三个3D坐标的多个集合。在一些实施例中,三个3D坐标可以表示3D空间、3D数组或其他3D数据结构的x、y和z坐标。在本文中广泛地使用x、y和z以指定三个不同的维度,并且不限于是这些维度为3D空间,而是它们可以表示感兴趣的任何其他期望的属性(例如,压强、时间、温度等等)。3D坐标的集合中的每一个(例如,x、y、z坐标的每个集合)可以对应于3D莫顿坐标中的不同的一个。在一些实施例中,结果可以是针对图5-8所示出或描述的那些结果中的任一者,但是本发明的范围不限于此。
在一些实施例中,指令可以使执行单元执行对3D莫顿坐标中的每一个的位的三路按位固定解交织。例如,可以将从第一位开始的给定的莫顿坐标的每个第三位的值存储为串接在一起,作为一个或多个结果紧缩数据操作数中的第一对应坐标(例如,x坐标),可以将从第二位开始的给定的莫顿坐标的每个第三位的值存储为串接在一起,作为在一个或多个结果紧缩数据操作数中的第二对应坐标(例如,y坐标),以及可以将从第三位开始的给定的莫顿坐标的每个第三位的值存储为串接在一起,作为在一个或多个结果紧缩数据操作数中的第三对应坐标(例如,z坐标)。注意,存在3位的跨度以及0位、1位和2位的偏移。为了进一步说明,执行单元可以将至少在位置0、3、6、9、12、15和18(并且在一些实施例中还可选地在位置21、24、27中的一个或多个)处的位的值存储在对应于3D坐标的集合的第一3D坐标(例如,x坐标)的连续最低阶位串中,3D坐标的集合对应于给定的3D莫顿坐标。类似地,执行单元可以将至少在位置1、4、7、10、13、16和19(并且在一些实施例中还可选地在位置22、25、28中的一个或多个)处的位的值存储在对应于对应的3D坐标的集合的第二3D坐标(例如,y坐标)的连续最低阶位串中。同样,执行单元可以将至少在位置2、5、8、11、14、17和20(并且在一些实施例中还可选地在位置23、26、29中的一个或多个)处的位的值存储在对应于对应的3D坐标的集合的第三3D坐标(例如,z坐标)的连续最低阶位串中。
在一些实施例中,可以将三个结果紧缩数据操作数存储在由坐标转换指令指示的三个对应的目的地存储位置(例如,紧缩数据寄存器)中。在一些实施例中,三个结果紧缩数据操作数中的每一个可以任选地包括多个3D坐标,多个3D坐标全部对应于相同的维度(例如,第一结果操作数中的所有x坐标、第二结果操作数中的所有y坐标、第三结果操作数中的所有z坐标)。替代地,可以将单个结果紧缩数据操作数存储在由坐标转换指令指示的单个目的地存储位置(例如,单个紧缩数据寄存器)中。在一些实施例中,可以任选地将每个三个3D坐标的集合(例如,x坐标、y坐标、和z坐标)存储在单个数据元素中并与对应的3D莫顿坐标在相同相对位置中(例如,可以将x、y、z坐标元任选地存储在单个32位结果数据元素中)。
执行单元和/或处理器可包括用于响应于3D莫顿坐标转换指令和/或作为其结果(例如,响应于从该3D莫顿坐标转换指令解码的一个或多个指令或控制信号)而执行该3D莫顿坐标转换指令和/或存储结果的具体的或特定的逻辑(例如,潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的晶体管、集成电路或其他硬件)。作为示例,执行单元可包括逻辑单元、算术逻辑单元等等。在一些实施例中,执行单元可利用复用器以执行三路按位固定解交织。在其他实施例中,各种不同类型的掩码和逻辑操作可以用于执行三路按位固定解交织。
为避免使描述模糊,已示出和描述了相对简单的处理器310。然而,处理器可以任选地包括其他组件。此类组件的可能的示例包括但不限于针对图9和/或图16-19中的任一个所示出和描述的组件。各种不同的实施例可以包括此类组件的各种不同的组合和配置。此类组件可以相互耦合以允许它们根据它们的操作来操作。在一些实施例中,可以将所有组件包括在处理器的至少一个核、一些核、核的子集或所有核中。在各种实施例中,处理器可以具有至少一个、两个、四个、八个、十六个、三十二个或更多核。
图4是执行3D莫顿坐标转换指令的实施例的方法430的实施例的流程框图。在各种实施例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。在一些实施例中,可由图3的处理器执行图4的方法和/或可在图3的处理器内执行图4的方法。本文中针对图3的处理器所描述的组件、特征和具体可选细节也可任选地应用于图4的方法。可替代地,图4的方法可由类似的或不同的处理器或装置执行,和/或在类似的或不同的处理器或装置内执行。此外,图3的处理器可以执行与图4的那些方法相同、类似或不同的方法。
该方法包括在框432处接收3D莫顿坐标转换指令。在各方面,可以在处理器或其一部分(例如,指令取出单元、解码单元、总线接口单元等等)处接收该指令。在各方面中,可从处理器外或管芯外的源(例如,从存储器、互连等)或从处理器上或管芯上的源(例如,从指令高速缓存、指令队列等)接收该指令。3D莫顿坐标转换指令可以指定或以其他方式指示包括多个3D莫顿坐标的源紧缩数据操作数,并且可以指定或以其他方式指示一个或多个目的地存储位置。
在框434处,响应于3D莫顿坐标转换指令和/或作为其结果,可以将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中。在一些实施例中,结果可以包括多个三个3D坐标的集合。三维坐标的集合中的每一个对应于三维莫顿坐标中的不同的一个。在一些实施例中,源紧缩数据操作数和一个或多个结果紧缩数据操作数可以是图5-8中的那些操作数中的任一个,但是本发明的范围不限于此。
所示的方法涉及架构操作(例如,那些从软件角度可见的操作)。在其他实施例中,该方法可以可选地包括一个或多个微架构操作。作为示例,指令可以被预取、被存储在指令高速缓存中、被指令取出单元取出、被解码、被调度,源操作数可以被访问、相对于其他指令被乱序执行,执行单元可以执行微架构操作以实现该指令等等。
图5是示出3D莫顿坐标转换操作540的示例实施例的框图,3D莫顿坐标转换操作540用于将每个存储在源紧缩数据操作数520的不同的32位数据元素中的3D莫顿坐标(m)转换为每个存储在三个结果紧缩数据操作数542、544、546中的不同的一个的对应的32位数据元素中的三个对应的3D坐标(x、y和z)。响应于3D莫顿坐标转换到三个3D坐标指令的示例实施例可以执行操作。
指令可以指定或以其他方式指示源紧缩数据操作数520。源紧缩数据操作数具有多个3D莫顿坐标(m)。3D莫顿坐标中的每一个存储在源紧缩数据操作数的不同的32位数据元素中。在特定示出的实施例中,源紧缩数据操作数是具有十六个32位数据元素的512位源紧缩数据操作数,但是本发明的范围不限于此。十六个32位数据元素包括十六个对应的3D莫顿坐标(m1到m16)。在其他实施例中,可任选地使用其他宽度的源紧缩数据操作数和/或其他数量的3D莫顿坐标。例如,在各种实施例中,源紧缩数据操作数的宽度可以是64位、128位、256位、512位或1024位,但是本发明的范围并不限于此。在该示例实施例中,数据元素为32位数据元素,但是本发明的范围并不限于此。其他大小的数据元素也是合适的,诸如例如,64位数据元素。源紧缩数据操作数中的数据元素和/或3D莫顿坐标的数量可以是源紧缩数据操作数的以位表示的宽度除以数据元素中的每一个的以位表示的宽度。在各实施例中,在源紧缩数据操作数中可存在至少两个、至少四个、至少八个、至少十六个、至少三十二个、或多于三十二个数据元素和/或3D莫顿坐标。
在该示例实施例中,响应于指令,可以生成(例如,由执行单元516进行)和存储三个结果紧缩数据操作数542、544、546。具体地,可以生成第一结果紧缩数据操作数520、第二结果紧缩数据操作数544和第三结果紧缩数据操作数546。可以将这三个结果紧缩数据操作数存储在可以由指令指定或以其他方式指示的三个对应的目的地存储位置中。在各实施例中,目的地存储位置可以是紧缩数据寄存器、存储器位置、其它存储位置、或其组合。
三个结果紧缩数据操作数包括从多个3D莫顿坐标转换而来的多个三个3D坐标的集合。具体地,三个结果紧缩数据操作数包括与源紧缩数据操作数中的3D莫顿坐标的数量相同的数量的三个3D坐标的集合。3D莫顿坐标中的每一个对应于并且可以被转换为结果紧缩数据操作数中的不同的对应的三个3D坐标的集合(例如,在操作数内的相同相对位位置中)。例如,可以将源紧缩数据操作数的最低有效(最右边)32位数据元素中的3D莫顿坐标(m1)转换为第一结果紧缩数据操作数的最低有效(最右边)32位数据元素中的第一对应3D坐标(x1)、第二结果紧缩数据操作数的最低有效32位数据元素中的第二对应3D坐标(y1)和第三结果紧缩数据操作数的最低有效32位数据元素中的第三对应3D坐标(z1)。类似地,可以将源紧缩数据操作数的最高有效(最左边)32位数据元素中的3D莫顿坐标(m16)转换为第一结果紧缩数据操作数的最高有效32位数据元素中的第一对应3D坐标(x16)、第二结果紧缩数据操作数的最高有效32位数据元素中的第二对应3D坐标(y16)和第三结果紧缩数据操作数的最高有效32位数据元素中的第三对应3D坐标(z16)。可以将所有其他坐标相似地或类似地转换。注意,通常为了从整体算法角度利用效率的优势,指令/操作可以将相同类型的坐标存储在同一结果紧缩数据操作数中(例如,所有x坐标在一个结果紧缩数据操作数中、所有y坐标在另一个结果紧缩数据操作数中、以及所有z坐标在又一结果紧缩数据操作数中),但这不是必须的。
如前所述,通过执行将对应的3D莫顿坐标的位固定三路按位解交织为三个连续位串,每个位串对应于三个3D坐标中的不同的一个,三个3D坐标的集合中的每一个可以从对应的3D莫顿坐标生成。在示出的示例实施例中,3D莫顿坐标(m)每个是30位,并且三个对应的3D坐标(x、y和z)中的每一个各自为10位,但是本发明的范围不限于此。每个10位的三个集合是能够作为莫顿坐标被包含在单个32位数据元素中的最大相同集合大小(即,10+10+10=30,并且32-30=2)。在其他实施例中,结果紧缩数据操作数中的三个3D坐标中的每一个可以表示为是7位、8位、9位或10位的相同数量的位,并且3D莫顿坐标中的每一个可以具有该数量的三倍的位。对于许多应用,三个3D坐标的位的数量将是9位或10位以允许表示更大的坐标系统。
以下可以表示将存储在32位源数据元素(SRC1)中的给定的3D莫顿坐标(例如,m1)转换为各自存储在不同的对应结果(RES1,RES2,RES3)的数据元素中的三个对应的10位3D坐标(x1,y1,z1)的操作,其中“0:27:3”中的“3”表示以3位的跨度跳过位:
SRC1[0:27:3]→RES1[0:9]=x1
SRC1[1:28:3]→RES2[0:9]=y1
SRC1[2:29:3]→RES3[0:9]=z1
这指示10位x坐标可以存储30位3D莫顿坐标(m)的在位置0、3、6、9、12、15、18、21、24和27处的位的值,10位y坐标可以存储在位置1、4、7、10、13、16、19、22、25和28处的位的值,以及10位z坐标可以存储在位置2、5、8、11、14、17、20、23、26和29处的位的值。为了进一步说明,以下表1列出3D莫顿坐标(m)和其对应的三个3D坐标(x,y,z)的一个可能的示例,最低阶位在右边,对应于x坐标的位在莫顿坐标中被加粗。
表1坐标转换的示例
坐标 | 位串 |
m | **011 100 000 110 011 010 101 010 100 001 |
x | 1000101001 |
y | 1001110100 |
z | 0101001010 |
在示出的实施例中,结果紧缩数据操作数中的每一个可选地具有与源紧缩数据操作数相同的宽度,但是这不是必须的。由于三个3D坐标中的每一个只具有3D莫顿坐标的三分之一数量的位,在需要时可以任选地使用更小的结果紧缩数据操作数。例如,结果紧缩数据操作数可以任选地具有源紧缩数据操作数的位数的一半,并且可以将三个3D坐标中的每一个存储在任选地仅具有源紧缩数据操作数的数据元素的位数的一半的数据元素中。例如,结果紧缩数据操作数可以任选地是具有16位数据元素的256位结果紧缩数据操作数。
图6是示出3D莫顿坐标转换操作647的示例实施例的框图,3D莫顿坐标转换操作647用于将每个存储在源紧缩数据操作数620的不同的64位数据元素中的3D莫顿坐标(m)转换为每个存储在三个结果紧缩数据操作数642、644、646中的不同的一个的对应的64位数据元素中的三个对应的3D坐标(x、y和z)。响应于3D莫顿坐标转换到三个3D坐标指令的示例实施例可以执行该操作。
图6的操作与图5的操作具有某些类似性,并且主要区别于3D莫顿坐标与对应的3D坐标的宽度,并且主要区别于数据元素是64位数据元素而不是32位数据元素。为了避免混淆描述,主要描述图6的操作的不同和/或附加特性,而不重复相对于图5的操作的所有任选的类似或通用的特性和细节。然而,应该理解,前面描述的图5的操作的特征和细节,包括变型和替代,也可以任选地应用于图6的操作,除非另行指出或者以其它方式显而易见。
如前所述,指令可以指定或以其他方式指示源紧缩数据操作数620。在该实施例中,3D莫顿坐标中的每一个存储在源紧缩数据操作数的不同的64位数据元素中。在特定示出的实施例中,源紧缩数据操作数是具有八个64位数据元素和/或八个3D莫顿坐标(m1到m8)的512位源紧缩数据操作数,但是本发明的范围不限于此。在其他实施例中,源紧缩数据操作数可以是宽于或窄于512位(例如,128位、256位、1024位等等)。
在该示例实施例中,响应于指令,可以生成(例如,由执行单元616进行)和存储三个结果紧缩数据操作数642、644、646。三个结果紧缩数据操作数包括从源紧缩数据操作数中的3D莫顿坐标生成或转换而来并且与3D莫顿坐标的数量相同的数量的三个3D坐标的集合。3D莫顿坐标中的每一个对应于并且可以被转换为结果紧缩数据操作数中的不同的对应的三个3D坐标的集合(例如,在操作数内的相同相对位位置中)。例如,可以将源紧缩数据操作数的最低有效(最右边)64位数据元素中的3D莫顿坐标(m1)转换为第一结果紧缩数据操作数的最低有效64位数据元素中的第一对应3D坐标(x1)、第二结果紧缩数据操作数的最低有效64位数据元素中的第二对应3D坐标(y1)和第三结果紧缩数据操作数的最低有效64位数据元素中的第三对应3D坐标(z1)。可以相似地或类似地将其他3D莫顿坐标转换为存储在结果紧缩数据操作数中的对应的三个3D坐标的集合。
如前所述,通过执行将对应的3D莫顿坐标的位固定三路按位解交织为三个连续位串,每个位串对应于三个3D坐标中的不同的一个,三个3D坐标的集合中的每一个可以从对应的3D莫顿坐标生成。在示出的示例实施例中,3D莫顿坐标(m)每个是63位,并且三个对应的3D坐标(x、y和z)中的每一个各自为21位,但是本发明的范围不限于此。每个21位的三个集合是能够作为莫顿坐标被包含在单个64位数据元素中的最大相同集合大小(即,21+21+21=63,并且64-63=1)。在其他实施例中,结果紧缩数据操作数中的三个3D坐标中的每一个可以表示为从12位到21位范围、从15位到21位范围、或从18位到21位范围的相同数量的位,并且3D莫顿坐标中的每一个可以具有该数量的三倍的位。一般而言,更大数量的位允许表示更多的数据点和/或更大的坐标系统。
以下可以表示将存储在64位源数据元素(SRC1)中的给定的3D莫顿坐标(例如,m1)转换为各自存储在不同的对应结果(RES1,RES2,RES3)的数据元素中的三个对应的21位3D坐标(x1,y1,z1)的操作,其中“0:60:3”中的“3”表示以3位的跨度跳过位:
SRC1[0:60:3]→RES1[0:20]=x1
SRC1[1:61:3]→RES2[0:20]=y1
SRC1[2:62:3]→RES3[0:20]=z1
21位x坐标可以存储30位3D莫顿坐标(m)的在位置0、3、6、9、12以此类推到60处的位的值,21位y坐标可以存储在位置1、4、7、10、13以此类推到61处的位的值,以及10位z坐标可以存储在位置2、5、8、11、14以此类推到62处的位的值。
图7是示出3D莫顿坐标转换操作750的示例实施例的框图,3D莫顿坐标转换操作750用于将每个存储在源紧缩数据操作数720的不同的32位数据元素中的3D莫顿坐标(m)转换为每个存储在单个结果紧缩数据操作数748的对应的32位数据元素的不同的连续位部分中的三个对应的3D坐标(x、y和z)。响应于3D莫顿坐标转换到三个3D坐标指令的示例实施例可以执行操作。
图7的操作与图5的操作具有某些类似性,并且主要区别于三个3D坐标的集合存储在单个结果紧缩数据操作数的数据元素的三个不同部分中,而不是每个存储在不同结果紧缩数据操作数中的不同数据元素中。为了避免混淆描述,主要描述图7的操作的不同和/或附加特性,而不重复相对于图5的操作的所有任选的类似或通用的特性和细节。然而,应该理解,前面描述的图5的操作的特征和细节,包括变型和替代,也可以任选地应用于图7的操作,除非另行指出或者以其它方式显而易见。
如前所述,指令可以指定或以其他方式指示源紧缩数据操作数720。在该实施例中,3D莫顿坐标中的每一个存储在源紧缩数据操作数的不同的32位数据元素中。在特定示出的实施例中,源紧缩数据操作数是具有十六个32位数据元素和/或十六个3D莫顿坐标(m1到m16)的512位源紧缩数据操作数,但是本发明的范围不限于此。在其他实施例中,源紧缩数据操作数可以宽于或窄于512位(例如,128位、256位、1024位等等)并且具有更少或更多数据元素和/或3D莫顿坐标。
在该示例实施例中,响应于指令,可以生成(例如,由执行单元716进行)和存储单个结果紧缩数据操作数748。结果紧缩数据操作数包括从源紧缩数据操作数中的3D莫顿坐标生成或转换而来并且与3D莫顿坐标的数量相同的数量的三个3D坐标的集合。源紧缩数据操作数中的3D莫顿坐标中的每一个对应于并且可以被转换为结果紧缩数据操作数中的不同的对应的三个3D坐标的集合(例如,在操作数内的相同相对位位置中)。例如,可以将源紧缩数据操作数的最低有效(最右边)32位数据元素中的3D莫顿坐标(m1)转换为结果紧缩数据操作数的最低有效32位数据元素中的三个坐标(x1,y1,z1)的集合。可以相似地或类似地将其他3D莫顿坐标转换为各自存储在结果紧缩数据操作数的不同数据元素中的对应的三个3D坐标的集合。
如前所述,通过执行将对应的3D莫顿坐标的位固定三路按位解交织为三个连续位串,每个位串对应于三个3D坐标中的不同的一个,三个3D坐标的集合中的每一个可以从对应的3D莫顿坐标生成。在示出的示例实施例中,3D莫顿坐标(m)每个是30位,并且三个对应的3D坐标(x、y和z)中的每一个各自为10位,但是本发明的范围不限于此。在其他实施例中,结果紧缩数据操作数中的三个3D坐标中的每一个可以表示为从7位到10位范围、或从9位到10位范围的相同数量的位,并且3D莫顿坐标中的每一个可以具有该数量的三倍的位。一般而言,更大数量的位允许表示更多的数据点和/或更大的坐标系统。
以下可以表示将存储在32位源数据元素(SRC1)中的给定的3D莫顿坐标(例如,m1)转换为各自存储在单个结果紧缩数据操作数中的单个结果数据元素(RES1)的不同连续位部分中的三个对应的10位3D坐标(x1,y1,z1)的操作,其中“0:27:3”中的“3”表示以3位的跨度跳过位:
SRC1[0:27:3]→RES1[0:9]=x1
SRC1[1:28:3]→RES1[10:19]=y1
SRC1[2:29:3]→RES 1[20:29]=z1
这指示RES1的位[0:9]中的10位x坐标可以存储30位3D莫顿坐标(m)的在位置0、3、6、9、12、15、18、21、24和27处的位的值,RES1的位[10:19]中的10位y坐标可以存储在位置1、4、7、10、13、16、19、22、25和28处的位的值,以及RES1的位[20:29]中的10位z坐标可以存储在位置2、5、8、11、14、17、20、23、26和29处的位的值。为了进一步说明,以下表2列出3D莫顿坐标(m)和其对应的三个3D坐标(x,y,z)的一个可能的示例,最低阶位在右边,x坐标的位在莫顿坐标中被加粗。
表2
坐标 | 位串 |
m | **110 001 000 011 110 010 101 010 001 100 |
z|y|x | **1000101001 1001110100 0101001010 |
图8是示出3D莫顿坐标转换操作852的示例实施例的框图,3D莫顿坐标转换操作852用于将每个存储在源紧缩数据操作数820的不同的64位数据元素中的3D莫顿坐标(m)转换为每个存储在单个结果紧缩数据操作数848的对应的64位数据元素的不同的连续位部分中的三个对应的3D坐标(x、y和z)。响应于3D莫顿坐标转换到三个3D坐标指令的示例实施例可以执行该操作。
图8的操作与图7的操作具有某些类似性,并且主要区别于使用64位数据元素和对应地更宽的3D莫顿坐标和3D坐标。为了避免混淆描述,主要描述图8的操作的不同和/或附加特性,而不重复相对于图7的操作的所有任选的类似或通用的特性和细节。然而,应该理解,前面描述的图7的操作的特征和细节,包括变型和替代,也可以任选地应用于图8的操作,除非另行指出或者以其它方式显而易见。
如前所述,指令可以指定或以其他方式指示源紧缩数据操作数820。在该实施例中,3D莫顿坐标中的每一个存储在源紧缩数据操作数的不同的64位数据元素中。在特定示出的实施例中,源紧缩数据操作数是具有八个64位数据元素和/或八个3D莫顿坐标(m1到m8)的512位源紧缩数据操作数,但是本发明的范围不限于此。在其他实施例中,源紧缩数据操作数可以宽于或窄于512位(例如,128位、256位、1024位等等)并且具有更少或更多数据元素和/或3D莫顿坐标。
在该示例实施例中,响应于指令,可以生成(例如,由执行单元816进行)和存储单个结果紧缩数据操作数848。结果紧缩数据操作数包括从源紧缩数据操作数中的3D莫顿坐标生成或转换而来并且与3D莫顿坐标的数量相同的数量的三个3D坐标的集合。源紧缩数据操作数中的3D莫顿坐标中的每一个对应于并且可以被转换为结果紧缩数据操作数中的不同的对应的三个3D坐标的集合(例如,在操作数内的相同相对位位置中)。例如,可以将源紧缩数据操作数的最低有效(最右边)64位数据元素中的3D莫顿坐标(m1)转换为结果紧缩数据操作数的最低有效64位数据元素中的三个坐标(x1,y1,z1)的集合。可以相似地或类似地将其他3D莫顿坐标转换为各自存储在结果紧缩数据操作数的不同数据元素中的对应的三个3D坐标的集合。
如前所述,通过执行将对应的3D莫顿坐标的位固定三路按位解交织为三个连续位串,每个位串对应于三个3D坐标中的不同的一个,三个3D坐标的集合中的每一个可以从对应的3D莫顿坐标生成。在示出的示例实施例中,3D莫顿坐标(m)每个是33位,并且三个对应的3D坐标(x、y和z)中的每一个各自为21位,但是本发明的范围不限于此。在其他实施例中,结果紧缩数据操作数中的三个3D坐标中的每一个可以表示为从12位到21位范围、从15位到21位范围、或从18位到21位范围的相同数量的位,并且3D莫顿坐标中的每一个可以具有该数量的三倍的位。
以下可以表示将存储在64位源数据元素(SRC1)中的给定的3D莫顿坐标(例如,m1)转换为各自存储在单个结果紧缩数据操作数中的单个结果数据元素(RES1)的不同连续位部分中的三个对应的21位3D坐标(x1,y1,z1)的操作,其中“0:60:3”中的“3”表示以3位的跨度跳过位:
SRC1[0:60:3]→RES1[0:20]=x1
SRC1[1:61:3]→RES1[21:41]=y1
SRC1[2:62:3]→RES1[42:62]=z1
图9是用于执行莫顿坐标转换指令的实施例的合适的处理器的更详细的示例实施例的框图。处理器包括核980。处理器可以任选地具有多个核(例如,至少两个、至少四个、至少八个、至少三十个等等)。在一些情形下,所有核可以与示出的核相同,或者在其他情形下,一些核可以是不同的(例如,具有不同的组件或指令集)。在一些情形下,所有核可能能够执行本文中所公开的莫顿坐标转换,或者在其他情形下,只有一些核可以执行本文中所公开的莫顿坐标转换。核980包括用于预测分支程序流的分支预测单元981。分支预测单元与指令预取单元982耦合。指令预取单元可以通过与其耦合的存储器单元989从外部存储器预取或以其他方式接收指令,包括莫顿坐标转换指令。第1级(L1)指令高速缓存与指令预取单元耦合。L1指令高速缓存可以高速缓存或以其他方式存储被预取的或以其他方式接收的指令,包括莫顿坐标转换指令。指令取出单元984与L1指令高速缓存和解码单元914耦合。指令取出单元可以从L1指令高速缓存取出或以其他方式接收指令,包括莫顿坐标转换指令,并且可以向解码单元提供包括莫顿坐标转换指令的指令。解码单元可以与本文中所描述的其他解码单元相同或类似。
该处理器包括一个或多个寄存器堆单元918。通常,寄存器堆单元可以包括各种不同类型的寄存器,诸如例如,紧缩数据寄存器、通用寄存器、状态或标志寄存器、控制或配置寄存器等等。在使用乱序(OOO)执行的实施例中,处理器还可以任选地包括与寄存器堆单元耦合的寄存器重命名和/或分配器单元以在寄存器(例如,与莫顿坐标转换指令相关联的紧缩数据寄存器)上分配资源和执行寄存器重命名。此外,在OOO执行的情形下,处理器可以任选地包括与解码单元、重命名/分配单元耦合的一个或多个调度器单元986和一个或多个执行单元916。调度器单元可以调度在执行单元上的操作。至少一个执行单元可以与本文中所公开的其他执行单元相同或相似。通常,处理器可以任选地具有多个不同类型的执行单元,诸如例如,整数执行单元、浮点执行单元、向量执行单元、一个或多个存储器访问单元987或总线接口单元等等。在使用乱序(OOO)执行的实施例中,处理器还可以任选地包括与寄存器堆单元和重命名/分配器单元985耦合的引退或提交单元991以引退或提交指令。处理器可以包括L1数据高速缓存单元974以高速缓存或以其他方式存储包括数据元素和/或用于包括莫顿坐标转换指令的指令的操作数的数据。可以任选地包括第2级(L2)高速缓存单元990并且可以任选地由多个核共享L2高速缓存单元990。L2高速缓存单元可以存储数据和包括莫顿坐标转换指令的指令。处理器还可以任选地包括一个或多个变换后备缓冲器(未示出)以高速缓存地址变换数据。在使用乱序(OOO)执行的实施例中,处理器还可以任选地包括重排序缓冲器(未示出)以将执行结果和/或一个或多个预留站(未示出)重排序。处理器的各种实施例可以包括这些组件中的一些或全部的各种不同的组合和配置。多个实施例不限于任何已知的这种组合或配置。
图10是3D莫顿坐标转换指令1012的实施例的框图。指令包括操作代码或操作码1080。该操作码可表示可用于标识要执行的指令和/或操作(例如,将3D莫顿坐标转换为3D坐标)的多个位或者一个或多个字段。
指令还包括源操作数说明符1082以明确地指定用于存储源紧缩数据操作数的寄存器、存储器位置或其他存储位置。指令还包括第一目的地存储位置说明符1084以明确地指定用于存储第一结果紧缩数据操作数的寄存器或其他存储位置、可选的第二目的地存储位置说明符1086以明确地指定用于存储可选的第二结果紧缩数据操作数的寄存器或其他存储位置、以及可选的第三目的地存储位置说明符1088以明确地指定用于存储可选的第三结果紧缩数据操作数的寄存器或其他存储位置。作为示例,这些说明符中的每一个可包括一组位或者一个或多个字段以明确指定寄存器的地址、存储器位置或者其他存储位置。替代地,如前所述,在需要时可以任选地使用单个结果紧缩数据操作数和单个对应的目的地存储位置。此外,代替针对这些存储位置中的每一个具有明确说明符的指令,,指令可以可选地具有一个或多个隐含存储位置(例如,对指令的操作码隐含)以用于源操作数和目的地存储位置中的一个或多个。例如,对指令的操作码而言,为源操作数或目的地存储位置中的一个使用给定的固定寄存器可以是隐含的,以便不需要明确指定给定的固定寄存器。作为另一个示例,为源操作数并作为存储结果操作数中的一个的目的地存储位置重复使用同一个寄存器或其他存储位置(例如,一旦被指令明确指定)可以是隐含的(例如,隐含的源/目的地寄存器)。在一些实施例中,指令可以具有其他字段或位,诸如例如,用于指示32位或64位执行状态或模式的位。应当理解,这只是合适的3D莫顿坐标转换指令的一个说明性示例。替代的实施例可包括所示字段/说明符的子集,可添加附加的字段/说明符,可重叠某些字段/说明符等。此外,字段/说明符的所示顺序以及布置不是必需的。可以以各种方式重新安排字段/说明符。此外,字段/说明符不需要包括连续的位序列,相反地可包括非连续的或分开的位。在一些实施例中,指令格式可以具有如本文别处所公开的VEX或EVEX编码或指令格式和属性,但是本发明的范围不限于此。下面进一步讨论了关于VEX与EVEX编码与格式的进一步细节。
指令集包括一个或多个指令格式。给定指令格式定义各种字段(位的数量、位的位置)以指定将要执行的操作(操作码)以及将对其执行该操作的操作数,等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有指令格式的字段的不同子集(所包括的字段通常按相同的顺序,但是至少一些字段具有不同的位的位置,因为有较少的字段被包括)和/或定义为具有以不同的方式来解释的给定字段。如此,ISA的每一条指令使用给定的指令格式来表达(并且如果经定义,则按照该指令格式的指令模板中的给定指令模板),并包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定的操作码和指令格式,该指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中的出现将具有选择特定操作数的操作数字段中的特定内容。已发布和/或出版了被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案的SIMD扩展集(例如,参见2011年10月的《64和IA-32架构软件开发者手册》(“64and IA-32Architectures Software Developers Manual”);并且参见2011年6月的《高级向量扩展编程参考》(“Advanced Vector Extensions Programming Reference))。”
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。
VEX指令格式
VEX编码允许指令具有两个以上操作数,并且允许SIMD向量寄存器比128位长。VEX前缀的使用提供了三操作数(或者更多)句法。例如,先前的两操作数指令执行改写源操作数的操作(诸如A=A+B)。VEX前缀的使用使操作数能执行非破坏性操作,诸如A=B+C。
图11A示出示例性AVX指令格式,包括VEX前缀1102、实操作码字段1130、Mod R/M字节1140、SIB字节1150、位移字段1162以及IMM8 1172。图11B示出来自图11A的哪些字段构成完整操作码字段1174和基础操作字段1142。图11C示出来自图11A的哪些字段构成寄存器索引字段1144。
VEX前缀(字节0-2)1102以三字节形式进行编码。第一字节是格式字段1140(VEX字节0,位[7:0]),该格式字段1140包含显式的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)进行编码,由此可通过增加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编码第一源寄存器操作数且对具有两个或两个以上源操作数的指令有效,第一源寄存器操作数以反转(1补码)形式被指定;2)VEX.vvvv编码目的地寄存器操作数,目的地寄存器操作数针对特定向量位移以1补码的形式被指定;或者3)VEX.vvvv不编码任何操作数,保留该字段,并且应当包含1111b。如果VEX.L 1168大小字段(VEX字节2,位[2]-L)=0,则它指示128位向量;如果VEX.L=1,则它指示256位向量。前缀编码字段1125(VEX字节2,位[1: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指令模板。在向量友好指令格式的上下文中的术语“通用”指不束缚于任何专用指令集的指令格式。
尽管将描述其中向量友好指令格式支持以下情况的本发明的实施例,即:64字节向量操作数长度(或大小)与32位(4字节)或64位(8字节)数据元素宽度(或大小)(并且由此,64字节向量由16个双字大小的元素或者替代地8个四字大小的元素组成);64字节向量操作数长度(或大小)与16位(2字节)或8位(1字节)数据元素宽度(或大小);32字节向量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或大小);以及16字节向量操作数长度(或大小)与32位(4字节)、64位(8字节)、16位(2字节)、或8位(1字节)数据元素宽度(或大小);但是,替代实施例可支持更大、更小、和/或不同的向量操作数大小(例如,256字节向量操作数)与更大、更小或不同的数据元素宽度(例如,128位(16字节)数据元素宽度)。
图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可高达三个源和一个目的地寄存器,但是替代实施例可支持更多或更少的源和目的地寄存器(例如,可支持高达两个源,其中这些源中的一个源还用作目的地,可支持高达三个源,其中这些源中的一个源还用作目的地,可支持高达两个源和一个目的地)。
修饰符(modifier)字段1246-其内容将指定存储器访问的以通用向量指令格式出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器访问1205的指令模板与存储器访问1220的指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样(例如,源和/或目的地是寄存器)。尽管在一个实施例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支持更多、更少或不同的方式来执行存储器地址计算。
扩充操作字段1250-其内容区分除基础操作以外还要执行各种不同操作中的哪一个操作。该字段是针对上下文的。在本发明的一个实施例中,此字段被划分为类字段1268、α字段1252以及β字段1254。扩充操作字段1250允许在单条指令而非2条、3条或4条指令中执行多组共同的操作。
比例字段1260-其内容允许用于存储器地址生成(例如,用于使用2比例*索引+基址的地址生成)的索引字段的内容的按比例缩放。
位移字段1262A-其内容用作存储器地址生成的一部分(例如,用于使用2比例*索引+基址+位移的地址生成)。
位移因数字段1262B(注意,位移字段1262A直接在位移因数字段1262B上的并置指示使用一个或另一个)-其内容用作地址生成的一部分,它指定通过存储器访问的大小(N)按比例缩放的位移因数,其中N是存储器访问中的字节数量(例如,用于使用2比例*索引+基址+按比例缩放的位移的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的内容乘以存储器操作数总大小(N)以生成要在计算有效地址时使用的最终位移。N的值由处理器硬件在运行时基于完整操作码字段1274(稍候在本文中描述)和数据操纵字段1254C确定。位移字段1262A和位移因数字段1262B不用于无存储器访问1205指令模板,和/或不同的实施例可以实现仅一者或两者都不实现,从这个意义上说,位移字段1262A和位移因数字段1262B是任选的。
数据元素宽度字段1264-其内容区分将使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令,在其他实施例中仅用于指令中的一些)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的,在这个意义上该字段是任选的。
写掩码字段1270-其内容在每一数据元素位置的基础上控制目的地向量操作数中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码操作,而B类指令模板支持合并写掩码操作和归零写掩码操作两者。当合并时,向量掩码允许在执行任何操作期间保护目的地中的任何元素集免于更新(由基础操作和扩充操作指定);在另一实施例中,保持其中对应掩码位具有0的目的地的每一元素的旧值。相反,当归零时,向量掩码允许在执行任何操作期间使目的地中的元素的任何集合归零(由基础操作和扩充操作指定);在一个实施例中,目的地的元素在对应掩码位具有0值时被设为0。该功能的子集是控制执行的操作的向量长度的能力(即,从第一个到最后一个要修改的元素的跨度),然而,被修改的元素不一定要是连续的。如此,写掩码字段1270允许部分向量操作,包括加载、存储、算术、逻辑等等。尽管描述了其中写掩码字段1270的内容选择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此写掩码字段1270的内容间接地标识了要执行的掩码操作)的本发明的实施例,但是替代实施例相反或另外允许掩码写字段1270的内容直接地指定要执行的掩码操作。
立即数字段1272-其内容允许对立即数的指定。该字段在实现不支持立即数的通用向量友好格式中不存在且在不使用立即数的指令中不存在,在这个意义上该字段是任选的。
类字段1268-其内容在不同类的指令之间进行区分。参考图12A-B,该字段的内容在A类和B类指令之间进行选择。在图12A-B中,使用圆角方形来指示在字段中存在专用值(例如,在图12A-B中,分别是针对类字段1268的A类1268A和B类1268B)。
A类指令模板
在A类非存储器访问1205的指令模板的情况下,α字段1252被解释为RS字段1252A,其内容区分将执行不同的扩充操作类型中的哪一种(例如,分别为无存储器访问的舍入型操作1210以及无存储器访问的数据变换型操作1215指令模板指定的舍入1252A.1和数据变换1252A.2),而β字段1254区别将执行指定的类型的操作中的哪一个。在无存储器访问1205的指令模板中,比例字段1260、位移字段1262A以及位移比例字段1262B不存在。
无存储器访问的指令模板-完全舍入控制型操作
在无存储器访问的完整舍入控制型操作1210指令模板中,β字段1254被解释为舍入控制字段1254A,其内容提供静态舍入操作。尽管在本发明的所描述的实施例中,舍入控制字段1254A包括抑制所有浮点异常(SAE)字段1256和舍入操作控制字段1258,但是替代实施例可以支持将这两个概念编码为同一个字段,或仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段1258)。
SAE字段1256-其内容区分是否禁用异常事件报告;当SAE字段1256的内容指示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处理程序。
舍入操作控制字段1258-其内容区分执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。如此,舍入操作控制字段1258允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段1250的内容优先于该寄存器值。
无存储器访问的指令模板-数据变换型操作
在无存储器访问的数据变换型操作1215指令模板中,β字段1254被解释为数据变换字段1254B,其内容区分将执行数个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在A类存储器访问1220的指令模板的情况下,α字段1252被解释为驱逐提示字段1252B,其内容区分要使用驱逐提示中的哪一个(在图12A中,为存储器访问时效性的1225指令模板和存储器访问非时效性的1230的指令模板分别指定时效性的1252B.1和非时效性的1252B.2),而β字段1254被解释为数据操纵字段1254C,其内容区分要执行大量数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换、以及目的地的向下转换)。存储器访问1220指令模板包括比例字段1260,并且任选地包括位移字段1262A或位移比例字段1262B。
向量存储器指令使用转换支持来执行来自存储器的向量加载并将向量存储到存储器。如同寻常的向量指令,向量存储器指令以数据元素式的方式与存储器来回传输数据,其中实际传输的元素由选为写掩码的向量掩码的内容规定。
存储器访问的指令模板-时效性的
时效性的数据是可能足够快地重新使用以从高速缓存受益的数据。然而,这是提示,且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
存储器访问的指令模板-非时效性的
非时效性数据是不大可能足够快地重复使用以从第1级高缓存中的高速缓存操作获益且应当给予驱逐优先级的数据。然而,这是提示,且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类指令模板的情况下,α字段1252被解释为写掩码控制(Z)字段1252C,其内容区分由写掩码字段1270控制的写掩码应当是合并还是归零。
在B类非存储器访问1205指令模板的情况下,β字段1254的部分被解释为RL字段1257A,其内容区分将执行不同的扩充操作类型中的哪一种(例如,分别为无存储器访问的写掩码控制部分舍入控制型操作1212指令模板和无存储器访问的写掩码控制VSIZE型操作1217指令模板指定的舍入1257A.1和向量长度(VSIZE)1257A.2),而β字段1254的其余部分区分将执行指定类型的操作中的哪一个。在无存储器访问1205的指令模板中,比例字段1260、位移字段1262A以及位移比例字段1262B不存在。
在无存储器访问的写掩码控制部分舍入控制型操作1210指令模板中,β字段1254的其余部分被解释为舍入操作字段1259A,并且异常事件报告被禁用(给定的指令不报告任何种类的浮点异常标志,并且不引发任何浮点异常处理程序)。
舍入操作控制字段1259A-正如舍入操作控制字段1258,其内容区分执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1259A允许在每一指令的基础上改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段1250的内容优先于该寄存器值。
在无存储器访问的写掩码控制VSIZE型操作1217指令模板中,β字段1254的其余部分被解释为向量长度字段1259B,其内容区分将执行数个数据向量长度中的哪一个(例如,128、256或512字节)。
在B类存储器访问1220指令模板的情况下,β字段1254的部分被解释为广播字段1257B,其内容区分是否将执行广播类型数据操纵操作,而β字段1254的其余部分被解释为向量长度字段1259B。存储器访问1220指令模板包括比例字段1260,并且任选地包括位移字段1262A或位移比例字段1262B。
就通用向量友好指令格式1200而言,完整操作码字段1274示出为包括格式字段1240、基础操作字段1242以及数据元素宽度字段1264。尽管示出了其中完整操作码字段1274包括所有这些字段的一个实施例,但是,在不是支持所有这些字段的实施例中,完全操作码字段1274包括少于全部这些字段。完全操作码字段1274提供操作代码(操作码)。
扩充操作字段1250、数据元素宽度字段1264以及写掩码字段1270允许以通用向量友好指令格式逐指令地指定这些特征。
写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为这些指令允许基于不同的数据元素宽度应用该掩码。
在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些实施例中,不同处理器或者处理器内的不同核可支持仅A类、仅B类、或者可支持两类。举例而言,旨在用于通用计算的高性能通用乱序核可仅支持B类,旨在主要用于图形和/或科学(吞吐量)计算的核可仅支持A类,并且旨在用于两者的核可支持两者(当然,具有来自两类的模板和指令的一些混合、但是并非来自两类的所有模板和指令的核在本发明的范围内)。同样,单一处理器可包括多个核,所有核支持相同的类或者其中不同的核支持不同的类。举例而言,在具有单独的图形和通用核的处理器中,图形核中的旨在主要用于图形和/或科学计算的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计算的仅支持B类的乱序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一处理器可包括既支持A类又支持B类的一个或多个通用有序或乱序核。当然,在本发明的不同实施例中,来自一类的特征也可在其他类中实现。可使以高级语言撰写的程序成为(例如,及时编译或者静态编译)各种不同的可执行形式,包括:1)仅具有目标处理器支持以执行的类的指令的形式;或者2)具有使用所有类的指令的不同组合而编写的替代例程且具有选择这些例程以基于由当前正在执行代码的处理器支持的指令而执行的控制流代码的形式。
示例性专用向量友好指令格式
图13是示出根据本发明的多个实施例的示例性专用向量友好指令格式的框图。图13示出专用向量友好指令格式1300,其指定位置、大小、解释、字段的次序、以及那些字段中的一些字段的值,在这个意义上向量友好指令格式1300是专用的。专用向量友好指令格式1300可以被用来扩展x86指令集,并且由此,这些字段中的一些与用于现有的x86指令集及其扩展(例如,AVX)中的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段、以及立即数字段一致。示出来自图12的字段,来自图13的字段映射到来自图12的字段。
应当理解,虽然出于说明的目的在通用向量友好指令格式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位字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个位(rrr、xxx、以及bbb)进行编码,由此可通过增加EVEX.R、EVEX.X以及EVEX.B来形成Rrrr、Xxxx以及Bbbb。
REX’字段1210-这是REX’字段1210的第一部分,并且是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’位字段(EVEX字节1,位[4]–R’)。在本发明的一个实施例中,该位与以下指示的其他位一起以位反转的格式存储以(在公知x86的32位模式下)与实操作码字节是62的BOUND指令进行区分,但是在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编码第一源寄存器操作数且对具有两个或两个以上源操作数的指令有效,第一源寄存器操作数以反转(1补码)形式被指定;2)EVEX.vvvv编码目的地寄存器操作数,目的地寄存器操作数针对特定向量位移以1补码的形式被指定;或者3)EVEX.vvvv不编码任何操作数,保留该字段,并且应当包含1111b。由此,EVEX.vvvv字段1320对以反转(1补码)的形式存储的第一源寄存器说明符的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前缀的益处(EVEX前缀只需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以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具有暗示没有写掩码用于特定指令的特殊行为(这可以各种方式实现,包括使用硬连线成全部为1的写掩码或者旁路掩码硬件的硬件来实现)。
实操作码字段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;当它包含1(舍入1257A.1)时,β字段1254的其余部分(EVEX字节3,位[6-5]–S2-1)被解释为舍入操作字段1259A,而当RL字段1257A包含0(VSIZE1257.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的框图。在所示出的实施例中,有32个512位宽的向量寄存器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;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图15A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图15B是示出根据本发明的各实施例的要被包括在处理器中的有序架构核的和示例性寄存器重命名的乱序发布/执行架构核的示例性实施例的框图。图15A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集的情况下,将描述乱序方面。
在图15A中,处理器流水线1500包括取出级1502、长度解码级1504、解码级1506、分配级1508、重命名级1510、调度(也称为分派或发布)级1512、寄存器读取/存储器读取级1514、执行级1516、写回/存储器写入级1518、异常处理级1522以及提交级1524。
图15B示出了包括耦合到执行引擎单元1550的前端单元1530的处理器核1590,且执行引擎单元和前端单元两者都耦合到存储器单元1570。核1590可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核1590可以是专用核,诸如例如网络或通信核、紧缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核、等等。
前端单元1530包括耦合至指令高速缓存单元1534的分支预测单元1532,指令高速缓存单元1534耦合至指令转换后备缓冲器(TLB)1536,指令转换后备缓冲器1536耦合至指令取出单元1538,指令取出单元1538耦合至解码单元1540。解码单元1540(或解码器)可解码指令,并生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元1540可使用各种不同的机制来实现。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核1590包括(例如,在解码单元1540中或以其他方式在前端单元1530内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元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,其中数据高速缓存单元耦合到第2级(L2)高速缓存单元1576。在一个示例性实施例中,存储器访问单元1564可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1570中的数据TLB单元1572。指令高速缓存单元1534还耦合到存储器单元1570中的第2级(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,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如第1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图16A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图16A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1602的连接及其第2级(L2)高速缓存的本地子集1604的框图。在一个实施例中,指令解码器1600支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1606允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1608和向量单元1610使用分开的寄存器集合(分别为标量寄存器1612和向量寄存器1614),并且在这些寄存器之间转移的数据被写入到存储器并随后从第1级(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宽ALU 1628),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该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的集合可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。尽管在一个实施例中,基于环的互连单元1712将集成图形逻辑1708、共享高速缓存单元1706的集合以及系统代理单元1710/集成存储器控制器单元1714互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1706和核1702-A-N之间的一致性。
在一些实施例中,核1702A-N中的一个或多个能够实现多线程。
系统代理1710包括协调和操作核1702A-N的那些组件。系统代理单元1710可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于调节核1702A-N和集成图形逻辑1708的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核1702A-N在架构指令集方面可以是同构的或异构的;即,这些核1702A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图18-21是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般都是合适的。
现在参见图18,所示是根据本发明的一个实施例的系统1800的框图。系统1800可以包括一个或多个处理器1810、1815,这些处理器耦合到控制器中枢1820。在一个实施例中,控制器中枢1820包括图形存储器控制器中枢(GMCH)1890和输入/输出中枢(IOH)1850(其可以在分开的芯片上);GMCH 1890包括存储器和图形控制器,存储器1840和协处理器1845耦合到该存储器和图形控制器;IOH 1850将输入/输出(I/O)设备1860耦合到GMCH1890。可替代地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1840和协处理器1845直接耦合到处理器1810、以及在单一芯片中具有IOH 1850的控制器中枢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,总线桥1918将第一总线1916耦合至第二总线1920。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器的一个或多个附加处理器1915耦合到第一总线1916。在一个实施例中,第二总线1920可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1920,各种设备包括例如,键盘和/或鼠标1922、通信设备1927以及存储单元1928,存储单元1928诸如,可包括指令/代码和数据1930的磁盘驱动器或其他大容量存储设备。此外,音频I/O 1924可以被耦合至第二总线1920。注意,其他架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图19中的点对点架构。
现在参考图20,所示为根据本发明的实施例的更具体的第二示例性系统2000的框图。图19和20中的相似元件具有相似的附图标记,并且图19的特定方面已经从图20中省略以避免混淆图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-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非暂态有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图22是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图22示出可以使用x86编译器2204来编译高级语言2202形式的程序以生成可由具有至少一个x86指令集核的处理器2216原生地执行的x86二进制代码2206。具有至少一个x86指令集核的处理器2216表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器2204表示用于生成x86二进制代码2206(例如,目标代码)的编译器,该x86二进制代码2206可利用或不利用附加的链路处理而在具有至少一个x86指令集核的处理器2216上执行。类似地,图22示出可以使用替代的指令集编译器2208来编译高级语言2202的程序以生成可由不具有至少一个x86指令集核的处理器2214(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码2210。指令转换器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是处理器或其他装置,其包括多个紧缩数据寄存器和用于解码三维(3D)莫顿坐标转换指令的解码单元。3D莫顿坐标转换指令用于指示用来包括多个3D莫顿坐标的源紧缩数据操作数,并且用于指示一个或多个目的地存储位置。执行单元与紧缩数据寄存器和解码单元耦合。响应于解码单元解码3D莫顿坐标转换指令,执行单元用于将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中。一个或多个结果紧缩数据操作数用来包括多个三个3D坐标的集合。三个3D坐标的集合中的每一个用来对应于3D莫顿坐标中的不同的一个。
示例2包括示例1的处理器,其中执行单元用于:响应于解码单元解码3D莫顿坐标转换指令,通过执行将对应的3D莫顿坐标的位三路按位解交织为三个连续位串,每个连续位串对应于三个3D坐标中的不同的一个,来生成三个3D坐标的集合中的每一个。
示例3包括示例1到2中的任一项的处理器,其中响应于解码单元解码3D莫顿坐标转换指令,执行单元用于存储。执行单元还用于将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15和18处的位的值作为第一连续位串存储在一个或多个结果紧缩数据操作数中,第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,给定的三个3D坐标的集合对应于给定的3D莫顿坐标。执行单元还用于将至少在给定的3D莫顿坐标的位置1、4、7、10、13、16和19处的位的值作为第二连续位串存储在一个或多个结果紧缩数据操作数中,第二连续位串对应于给定的三个3D坐标的集合的第二3D坐标。执行单元还用于将至少在给定的3D莫顿坐标的位置2、5、8、11、14、17和20处的位的值作为第三连续位串存储在一个或多个结果紧缩数据操作数中,第三连续位串对应于给定的三个3D坐标的集合的第三3D坐标。
示例4包括示例1到2中的任一项的处理器,其中执行单元用于:响应于解码单元解码3D莫顿坐标转换指令,将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15、18、21、24、27、30和33处的位的值作为第一连续位串存储在一个或多个结果紧缩数据操作数中,第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,给定的三个3D坐标的集合对应于给定的3D莫顿坐标。执行单元还用于将至少在给定的3D莫顿坐标的位置1、4、7、10、13、16、19、22、25、28、31和34处的位的值作为第二连续位串存储在一个或多个结果紧缩数据操作数中,第二连续位串对应于给定的三个3D坐标的集合的第二3D坐标。执行单元还用于将至少在给定的3D莫顿坐标的位置2、5、8、11、14、17、20、23、26、29、32和35处的位的值作为第三连续位串存储在一个或多个结果紧缩数据操作数中,第三连续位串对应于给定的三个3D坐标的集合的第三3D坐标。
示例5包括示例1的处理器,其中执行单元用于:响应于解码单元解码3D莫顿坐标转换指令,将三个结果紧缩数据操作数存储在由3D莫顿坐标转换指令指示的三个目的地存储位置中。结果紧缩数据操作数中的每一个中的3D坐标可选地对应于相同维度。
示例6包括示例5的处理器,其中可选地对3D莫顿坐标转换指令隐含的是,用于存储源紧缩数据操作数的紧缩数据寄存器还被用作三个目的地存储位置中的一个以存储结果紧缩数据操作数中的一个。
示例7包括示例1的处理器,其中响应于解码单元解码3D莫顿坐标转换指令,执行单元用于将单个结果紧缩数据操作数存储在将由3D莫顿坐标转换指令指示的单个目的地存储位置中。每个三个3D坐标的集合可选地用来被存储在单个结果紧缩数据操作数的与具有对应的3D莫顿坐标的源紧缩数据操作数的数据元素在相同相对位置中的不同数据元素中。
示例8包括示例1的处理器,其中给定的3D莫顿坐标用来被存储在源紧缩数据操作数中的32位数据元素中。对应于给定的3D莫顿坐标的给定的三个3D坐标的集合中的每个3D坐标可选地包括从七到十、或从八到十、或从九到十位。
示例9包括示例1的处理器,其中给定的3D莫顿坐标用来被存储在源紧缩数据操作数中的64位数据元素中。对应于给定的3D莫顿坐标的给定的三个3D坐标的集合中的每个3D坐标可选地包括从十五到二十一或从十八到二十一位。
示例10包括示例1的处理器,进一步包括可选的用于预测分支的分支预测单元,以及可选的与分支预测单元耦合的指令预取单元。指令预取单元用于预取包括4D莫顿坐标转换指令的指令。第1级(L1)指令高速缓存可选地被指令预取单元包括并且与指令预取单元耦合。L1指令高速缓存用于存储包括4D莫顿坐标转换指令的指令。可选的L1数据高速缓存可以被包括以存储数据。可选的第2级(L2)高速缓存可以被包括以存储数据和包括4D莫顿坐标转换指令的指令。可选的指令取出单元与L1指令高速缓存和解码单元耦合以从L1指令高速缓存中取出4D莫顿坐标转换指令并且向解码单元提供4D莫顿坐标转换指令。可选的寄存器重命名单元与紧缩数据寄存器耦合以将紧缩数据寄存器重命名。
示例11是处理器中的方法,包括接收三维(3D)莫顿坐标转换指令。3D莫顿坐标转换指令指示包括多个3D莫顿坐标的源紧缩数据操作数,并且指示一个或多个目的地存储位置。方法还包括将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中。一个或多个结果紧缩数据操作数包括多个三个3D坐标的集合。三维坐标的集合中的每一个对应于三维莫顿坐标中的不同的一个。
示例12包括示例11的方法,进一步包括通过执行将对应的3D莫顿坐标的位三路按位解交织为三个连续位串,每个连续位串对应于三个3D坐标中的不同的一个,来生成三个3D坐标的集合中的每一个。
示例13包括示例11的方法,其中存储一个或多个结果紧缩数据操作数可选地包括将三个结果紧缩数据操作数存储在由3D莫顿坐标转换指令指示的三个目的地存储位置中。结果紧缩数据操作数中的每一个中的3D坐标可选地全部对应于相同维度。
示例14包括示例11的方法,其中存储一个或多个结果紧缩数据操作数可选地包括将单个结果紧缩数据操作数存储在由3D莫顿坐标转换指令指示的单个目的地存储位置中。每个三个3D坐标的集合可选地在单个结果紧缩数据操作数的与具有对应的3D莫顿坐标的源紧缩数据操作数的数据元素在相同相对位置中的不同数据元素中。
示例15包括示例11的方法,进一步包括接收源紧缩数据操作数,源紧缩数据操作数具有存储在32位数据元素中的给定的3D莫顿坐标。此外,可选地存储包括存储对应于给定的3D莫顿坐标的给定的三个3D坐标的集合,其中每个3D坐标包括从七到十位。
示例16包括示例11的方法,其中存储一个或多个结果紧缩数据操作数包括将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15和18处的位的值作为第一连续位串存储在一个或多个结果紧缩数据操作数中,第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,给定的三个3D坐标的集合对应于给定的3D莫顿坐标。此外,可选地将至少在给定的3D莫顿坐标的位置1、4、7、10、13、16和19处的位的值作为第二连续位串存储在一个或多个结果紧缩数据操作数中,第二连续位串对应于给定的三个3D坐标的集合的第二3D坐标。此外,可选地将至少在给定的3D莫顿坐标的位置2、5、8、11、14、17和20处的位的值作为第三连续位串存储在一个或多个结果紧缩数据操作数中,第三连续位串对应于给定的三个3D坐标的集合的第三3D坐标。
示例17包括示例11的方法,进一步包括接收源紧缩数据操作数,源紧缩数据操作数具有存储在64位数据元素中的给定的3D莫顿坐标。方法还包括存储对应于给定的3D莫顿坐标的给定的三个3D坐标的集合,其中每个3D坐标包括从十五到二十一位。
示例18包括示例11的方法,其中存储一个或多个结果紧缩数据操作数包括将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15、18、21、24、27、30和33处的位的值作为第一连续位串存储在一个或多个结果紧缩数据操作数中,第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,给定的三个3D坐标的集合对应于给定的3D莫顿坐标。此外,可选地将至少在给定的3D莫顿坐标的位置1、4、7、10、13、16、19、22、25、28、31和34处的位的值作为第二连续位串存储在一个或多个结果紧缩数据操作数中,第二连续位串对应于给定的三个3D坐标的集合的第二3D坐标。此外,可选地将至少在给定的3D莫顿坐标的位置2、5、8、11、14、17、20、23、26、29、32和35处的位的值作为第三连续位串存储在一个或多个结果紧缩数据操作数中,第三连续位串对应于给定的三个3D坐标的集合的第三3D坐标。
示例19是处理指令的系统,系统包括互连和与互连耦合的处理器。处理器用于接收指令,该指令用于指示用于包括多个数据元素的源紧缩数据操作数、并且用于指示一个或多个目的地存储位置。响应于指令,处理器将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中。一个或多个结果紧缩数据操作数包括源紧缩数据操作数中的每个数据元素的对应的三个位串的集合。每个三个位串的集合用来包括第一位串、第二位串和第三位串。每个第一位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置0、3、6、9、12、15和18处的位的值。每个第二位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置1、4、7、10、13、16和19处的位的值。每个第三位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置2、5、8、11、14、17和20处的位的值。系统还包括可选的与互连耦合的动态随机存取存储器(DRAM)。
示例20包括示例19的系统,其中响应于指令,处理器用于将三个结果紧缩数据操作数存储在三个目的地存储位置中,其中三个结果紧缩数据操作数中的一个用于存储第一位串的全部。
示例21是一种制品,该制品包括非暂态机器可读存储介质。非暂态机器可读存储介质存储指令。指令用于指示用来包括多个数据元素的源紧缩数据操作数,并且用于指示一个或多个目的地存储位置。指令如果被机器执行,将使得机器执行包括将一个或多个结果紧缩数据操作数存储在一个或多个目的地存储位置中的操作。一个或多个结果紧缩数据操作数包括源紧缩数据操作数中的每个数据元素的对应的三个位串的集合。每个三个位串的集合用来包括第一位串、第二位串和第三位串。每个第一位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置0、3、6、9、12、15和18处的位的值。每个第二位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置1、4、7、10、13、16和19处的位的值。每个第三位串用来包括至少在源紧缩数据操作数的对应的数据元素的位置2、5、8、11、14、17和20处的位的值。
示例22包括示例21的制品,其中响应于指令,处理器用于将单个结果紧缩数据操作数存储在单个目的地存储位置中。
示例23是处理器或其他装置,其用于执行示例11到18中的任一项的方法。
示例24是处理器或其他设备,其包括用于执行示例11到18中的任一项的方法的装置。
示例25是包括用于执行示例11到18中的任一项的方法的模块和/或单元和/或逻辑和/或电路和/或设备的任何组合的处理器或其他装置。
示例26是制品,其包括可选地非暂态机器可读介质,该非暂态机器可读介质可选地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其他机器执行该指令时,该指令用于使该机器执行示例11到18中的任一项的方法。
示例27是基本上如本文中所述的处理器或其他装置。
示例28是用于执行基本上如本文中所述的任意方法的处理器或其他装置。
Claims (24)
1.一种处理器,包括:
多个紧缩数据寄存器;
解码单元,用于解码三维(3D)莫顿坐标转换指令,所述3D莫顿坐标转换指令用于指示用来包括多个3D莫顿坐标的源紧缩数据操作数,并且用于指示一个或多个目的地存储位置;以及
执行单元,与所述紧缩数据寄存器和所述解码单元耦合,所述执行单元用于,响应于所述解码单元解码所述3D莫顿坐标转换指令,将一个或多个结果紧缩数据操作数存储在所述一个或多个目的地存储位置中,其中所述一个或多个结果紧缩数据操作数用来包括多个三个3D坐标的集合,其中所述三个3D坐标的集合中的每一个用来对应于所述3D莫顿坐标中的不同的一个。
2.如权利要求1所述的处理器,其特征在于,所述执行单元用于:响应于所述解码单元解码所述3D莫顿坐标转换指令,通过执行将所述对应的3D莫顿坐标的位三路按位解交织为三个连续位串,每个连续位串对应于所述三个3D坐标中的不同的一个,来生成所述三个3D坐标的集合中的每一个。
3.如权利要求1所述的处理器,其特征在于,所述执行单元用于响应于所述解码单元解码所述3D莫顿坐标转换指令:
将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15和18处的位的值作为第一连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,所述给定的三个3D坐标的集合对应于所述给定的3D莫顿坐标;
将至少在所述给定的3D莫顿坐标的位置1、4、7、10、13、16和19处的位的值作为第二连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第二连续位串对应于所述给定的三个3D坐标的集合的第二3D坐标;以及将至少在所述给定的3D莫顿坐标的位置2、5、8、11、14、17和20处的位的值作为第三连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第三连续位串对应于所述给定的三个3D坐标的集合的第三3D坐标。
4.如权利要求1所述的处理器,其特征在于,所述执行单元用于响应于所述解码单元解码所述3D莫顿坐标转换指令:
将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15、18、21、24、27、30和33处的位的值作为第一连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,所述给定的三个3D坐标的集合对应于所述给定的3D莫顿坐标;
将至少在所述给定的3D莫顿坐标的位置1、4、7、10、13、16、19、22、25、28、31和34处的位的值作为第二连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第二连续位串对应于所述给定的三个3D坐标的集合的第二3D坐标;以及
将至少在所述给定的3D莫顿坐标的位置2、5、8、11、14、17、20、23、26、29、32和35处的位的值作为第三连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第三连续位串对应于所述给定的三个3D坐标的集合的第三3D坐标。
5.如权利要求1所述的处理器,其特征在于,所述执行单元用于:响应于所述解码单元解码所述3D莫顿坐标转换指令,将三个结果紧缩数据操作数存储在由所述3D莫顿坐标转换指令指示的三个目的地存储位置中,以及其中所述结果紧缩数据操作数中的每一个中的3D坐标对应于相同维度。
6.如权利要求5所述的处理器,其特征在于,对所述3D莫顿坐标转换指令隐含的是,用于存储所述源紧缩数据操作数的紧缩数据寄存器还被用作所述三个目的地存储位置中的一个以存储所述结果紧缩数据操作数中的一个。
7.如权利要求1所述的处理器,其特征在于,所述执行单元用于:响应于所述解码单元解码所述3D莫顿坐标转换指令,将单个结果紧缩数据操作数存储在由所述3D莫顿坐标转换指令指示的单个目的地存储位置中,以及其中每个三个3D坐标的集合用来被存储在所述单个结果紧缩数据操作数的与具有对应的3D莫顿坐标的所述源紧缩数据操作数的数据元素在相同相对位置中的不同数据元素中。
8.如权利要求1到7中的任一项所述的处理器,其特征在于,给定的3D莫顿坐标用来被存储在所述源紧缩数据操作数中的32位数据元素中,以及其中对应于所述给定的3D莫顿坐标的给定的三个3D坐标的集合中的每个3D坐标包括从七到十位。
9.如权利要求1到7中的任一项所述的处理器,其特征在于,给定的3D莫顿坐标用来被存储在所述源紧缩数据操作数中的64位数据元素中,以及其中对应于所述给定的3D莫顿坐标的给定的三个3D坐标的集合中的每个3D坐标包括从十五到二十一位。
10.如权利要求1到7中的任一项所述的处理器,进一步包括:
分支预测单元,用于预测分支;
指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括所述4D莫顿坐标转换指令的指令;
第1级(L1)指令高速缓存,与所述指令预取单元耦合,所述L1指令高速缓存用于存储包括所述4D莫顿坐标转换指令的指令;
L1数据高速缓存,用于存储数据;
第2级(L2)高速缓存,用于存储数据和包括所述4D莫顿坐标转换指令的指令;
指令取出单元,与所述L1指令高速缓存和所述解码单元耦合,用于从所述L1指令高速缓存中取出所述4D莫顿坐标转换指令并且向所述解码单元提供所述4D莫顿坐标转换指令;以及
寄存器重命名单元,与所述紧缩数据寄存器耦合,用于将所述紧缩数据寄存器重命名。
11.一种处理器中的方法,包括:
接收三维(3D)莫顿坐标转换指令,所述3D莫顿坐标转换指令指示包括多个3D莫顿坐标的源紧缩数据操作数,并且指示一个或多个目的地存储位置;以及
将一个或多个结果紧缩数据操作数存储在所述一个或多个目的地存储位置中,所述一个或多个结果紧缩数据操作数包括多个三个3D坐标的集合,其中所述三维坐标的集合中的每一个对应于所述三维莫顿坐标中的不同的一个。
12.如权利要求11所述的方法,进一步包括通过执行将对应的3D莫顿坐标的位三路按位解交织为三个连续位串,每个连续位串对应于所述三个3D坐标中的不同的一个,来生成所述三个3D坐标的集合中的每一个。
13.如权利要求11所述的方法,其特征在于,存储所述一个或多个结果紧缩数据操作数包括将三个结果紧缩数据操作数存储在由所述3D莫顿坐标转换指令指示的三个目的地存储位置中,以及其中所述结果紧缩数据操作数中的每一个中的3D坐标全部对应于相同维度。
14.如权利要求11所述的方法,其特征在于,存储所述一个或多个结果紧缩数据操作数包括将单个结果紧缩数据操作数存储在由所述3D莫顿坐标转换指令指示的单个目的地存储位置中,并且包括将每个三个3D坐标的集合存储在所述单个结果紧缩数据操作数的与具有对应的3D莫顿坐标的所述源紧缩数据操作数的数据元素在相同相对位置中的不同数据元素中。
15.如权利要求11所述的方法,进一步包括接收所述源紧缩数据操作数,所述源紧缩数据操作数具有存储在32位数据元素中的给定的3D莫顿坐标,以及其中存储包括存储对应于所述给定的3D莫顿坐标的给定的三个3D坐标的集合,其中每个3D坐标包括从七到十位。
16.如权利要求11所述的方法,其特征在于,存储所述一个或多个结果紧缩数据操作数包括:
将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15和18处的位的值作为第一连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,所述给定的三个3D坐标的集合对应于所述给定的3D莫顿坐标;
将至少在所述给定的3D莫顿坐标的位置1、4、7、10、13、16和19处的位的值作为第二连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第二连续位串对应于所述给定的三个3D坐标的集合的第二3D坐标;以及
将至少在所述给定的3D莫顿坐标的位置2、5、8、11、14、17和20处的位的值作为第三连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第三连续位串对应于所述给定的三个3D坐标的集合的第三3D坐标。
17.如权利要求11所述的方法,进一步包括接收所述源紧缩数据操作数,所述源紧缩数据操作数具有存储在64位数据元素中的给定的3D莫顿坐标,以及其中存储包括存储对应于所述给定的3D莫顿坐标的给定的三个3D坐标的集合,其中每个3D坐标包括从十五到二十一位。
18.如权利要求11所述的方法,其特征在于,存储所述一个或多个结果紧缩数据操作数包括:
将至少在给定的3D莫顿坐标的位置0、3、6、9、12、15、18、21、24、27、30和33处的位的值作为第一连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第一连续位串对应于给定的三个3D坐标的集合的第一3D坐标,所述给定的三个3D坐标的集合对应于所述给定的3D莫顿坐标;
将至少在所述给定的3D莫顿坐标的位置1、4、7、10、13、16、19、22、25、28、31和34处的位的值作为第二连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第二连续位串对应于所述给定的三个3D坐标的集合的第二3D坐标;以及
将至少在所述给定的3D莫顿坐标的位置2、5、8、11、14、17、20、23、26、29、32和35处的位的值作为第三连续位串存储在所述一个或多个结果紧缩数据操作数中,所述第三连续位串对应于所述给定的三个3D坐标的集合的第三3D坐标。
19.一种用于处理指令的系统,包括:
互连;
处理器,与所述互连耦合,所述处理器用于接收指令,所述指令用于指示用来包括多个数据元素的源紧缩数据操作数、并且用于指示一个或多个目的地存储位置,响应于所述指令,所述处理器将一个或多个结果紧缩数据操作数存储在所述一个或多个目的地存储位置中,其中所述一个或多个结果紧缩数据操作数包括所述源紧缩数据操作数中的每个数据元素的对应的三个位串的集合,其中每个三个位串的集合用来包括第一位串、第二位串和第三位串,其中每个第一位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置0、3、6、9、12、15和18处的位的值,其中每个第二位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置1、4、7、10、13、16和19处的位的值,以及其中每个第三位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置2、5、8、11、14、17和20处的位的值;以及
动态随机存取存储器(DRAM),与所述互连耦合。
20.如权利要求19所述的系统,其特征在于,所述处理器用于:响应于所述指令,将三个结果紧缩数据操作数存储在三个目的地存储位置中,其中所述三个结果紧缩数据操作数中的一个用于存储所述第一位串的全部。
21.一种制品,包括非暂态机器可读介质,所述非暂态机器可读介质存储指令,
所述指令用于指示用来包括多个数据元素的源紧缩数据操作数,并且用于指示一个或多个目的地存储位置,并且所述指令如果被机器执行,将使得所述机器执行操作,所述操作包括:
将一个或多个结果紧缩数据操作数存储在所述一个或多个目的地存储位置中,所述一个或多个结果紧缩数据操作数包括所述源紧缩数据操作数中的每个数据元素的对应的三个位串的集合,其中每个三个位串的集合用来包括第一位串、第二位串和第三位串,其中每个第一位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置0、3、6、9、12、15和18处的位的值,其中每个第二位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置1、4、7、10、13、16和19处的位的值,以及其中每个第三位串用来包括至少在所述源紧缩数据操作数的对应的数据元素的位置2、5、8、11、14、17和20处的位的值。
22.如权利要求21所述的制品,其特征在于,响应于所述指令,所述处理器用于将单个结果紧缩数据操作数存储在单个目的地存储位置中。
23.一种设备,所述设备包括用于执行如权利要求11-18中的任一项所述的方法的装置。
24.一种制品,包括可选地非暂态机器可读介质,所述非暂态机器可读介质可选地存储或以其他方式提供指令,所述指令如果被机器执行,用于使所述机器执行如权利要求11-18中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/541,855 US9772848B2 (en) | 2014-11-14 | 2014-11-14 | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US14/541,855 | 2014-11-14 | ||
PCT/US2015/055592 WO2016077019A1 (en) | 2014-11-14 | 2015-10-14 | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107111485A true CN107111485A (zh) | 2017-08-29 |
Family
ID=55954835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580059019.6A Pending CN107111485A (zh) | 2014-11-14 | 2015-10-14 | 三维莫顿坐标转换处理器、方法、系统和指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9772848B2 (zh) |
EP (1) | EP3218815A4 (zh) |
JP (1) | JP6696674B2 (zh) |
KR (1) | KR20170066482A (zh) |
CN (1) | CN107111485A (zh) |
TW (1) | TWI582692B (zh) |
WO (1) | WO2016077019A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021139796A1 (zh) * | 2020-01-08 | 2021-07-15 | Oppo广东移动通信有限公司 | 莫顿码的构建方法、编码器、解码器、及存储介质 |
CN113473153A (zh) * | 2020-03-30 | 2021-10-01 | 鹏城实验室 | 一种点云属性预测方法、编码方法、解码方法及其设备 |
Families Citing this family (5)
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 |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-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 |
EP3779886A4 (en) * | 2018-04-10 | 2021-06-16 | Panasonic Intellectual Property Corporation of America | TRIMDIMENSIONAL DATA CODING AND DECODING PROCESS AND TRIDMENSIONAL DATA ENCODING AND DECODING DEVICE |
US12062214B2 (en) * | 2021-12-27 | 2024-08-13 | Advanced Micro Devices, Inc. | Systems and method for generating Morton code |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100106944A1 (en) * | 2004-07-13 | 2010-04-29 | Arm Limited | Data processing apparatus and method for performing rearrangement operations |
CN102999315A (zh) * | 2006-09-22 | 2013-03-27 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
US20130124835A1 (en) * | 1994-12-02 | 2013-05-16 | Alexander Peleg | Method and Apparatus for Packing Packed Data |
US9116790B2 (en) * | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
Family Cites Families (78)
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 |
JPH06223198A (ja) | 1993-01-26 | 1994-08-12 | Hitachi Ltd | 光線追跡による画像生成装置及び方法 |
US5650862A (en) | 1994-07-25 | 1997-07-22 | Canon Kabushiki Kaisha | Image signal processing apparatus with improved pixel parallel/line parallel conversion |
HU228534B1 (en) | 1995-02-03 | 2013-03-28 | Koninkl Philips Electronics Nv | Method and apparatus for encoding pixel colour values of digital video images |
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 |
TW337580B (en) * | 1996-07-24 | 1998-08-01 | Hitachi Ltd | Disc reproducing method and disc reproducing apparatus |
US6058465A (en) | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US6182203B1 (en) | 1997-01-24 | 2001-01-30 | Texas Instruments Incorporated | Microprocessor |
US6879341B1 (en) * | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
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 |
AU2001239926A1 (en) * | 2000-02-25 | 2001-09-03 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US6990555B2 (en) * | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
US6788303B2 (en) | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
US7283987B2 (en) * | 2001-03-05 | 2007-10-16 | Sap Ag | Compression scheme for improving cache behavior in database systems |
US6957408B1 (en) * | 2002-01-22 | 2005-10-18 | Cadence Design Systems, Inc. | Method and apparatus for routing nets in an integrated circuit layout |
IL145245A0 (en) | 2001-09-03 | 2002-06-30 | Jtc 2000 Dev Delaware Inc | System and method including vector-matrix multiplication |
US8281108B2 (en) * | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
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 |
US7239989B2 (en) * | 2003-07-18 | 2007-07-03 | Oracle International Corporation | Within-distance query pruning in an R-tree index |
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 |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
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 |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
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 |
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 |
DE602006016256D1 (de) * | 2006-06-28 | 2010-09-30 | St Microelectronics Nv | Verfahren und Anordnung für Cachespeicherverwaltung und entsprechende Prozessorarchitektur |
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 |
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 |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US20090254736A1 (en) * | 2008-04-07 | 2009-10-08 | Arm Limited | Data processing system for performing data rearrangement operations |
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 |
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 |
WO2010082886A1 (en) * | 2009-01-19 | 2010-07-22 | Telefonaktiebolaget Lm 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 |
WO2012011859A1 (en) | 2010-07-21 | 2012-01-26 | Telefonaktiebolaget L M Ericsson (Publ) | Picture coding 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 |
US9116834B2 (en) | 2011-03-23 | 2015-08-25 | Asml Netherlands B.V. | Methods and apparatus for calculating electromagnetic scattering properties of a structure and for reconstruction of approximate structures |
EP2624126B1 (en) | 2011-04-07 | 2016-11-02 | VIA Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
GB2491688B (en) | 2011-05-05 | 2014-08-27 | Advanced Risc Mach Ltd | Method of and apparatus for encoding and decoding data |
US8780112B2 (en) | 2011-06-08 | 2014-07-15 | Pacific Data Images Llc | Coherent out-of-core point-based global illumination |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | 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 | 編解碼裝置及其執行與驅動方法 |
JP5988222B2 (ja) * | 2011-10-18 | 2016-09-07 | パナソニックIpマネジメント株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
US9100184B2 (en) | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
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 |
WO2014185900A1 (en) | 2013-05-15 | 2014-11-20 | 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 |
US9514563B2 (en) | 2013-08-30 | 2016-12-06 | Arm Limited | Graphics processing systems |
US9960099B2 (en) | 2013-11-11 | 2018-05-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Thermally conductive molding compound structure for heat dissipation in semiconductor packages |
US10083195B2 (en) * | 2014-04-24 | 2018-09-25 | Futurewei Technologies, Inc. | System and method for composing a multidimensional index key in data blocks |
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 |
US20160139919A1 (en) | 2014-11-14 | 2016-05-19 | Intel Corporation | Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
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 |
-
2014
- 2014-11-14 US US14/541,855 patent/US9772848B2/en active Active
-
2015
- 2015-10-07 TW TW104133040A patent/TWI582692B/zh not_active IP Right Cessation
- 2015-10-14 JP JP2017521521A patent/JP6696674B2/ja active Active
- 2015-10-14 CN CN201580059019.6A patent/CN107111485A/zh active Pending
- 2015-10-14 EP EP15859106.5A patent/EP3218815A4/en not_active Withdrawn
- 2015-10-14 WO PCT/US2015/055592 patent/WO2016077019A1/en active Application Filing
- 2015-10-14 KR KR1020177011422A patent/KR20170066482A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124835A1 (en) * | 1994-12-02 | 2013-05-16 | Alexander Peleg | Method and Apparatus for Packing Packed Data |
US20100106944A1 (en) * | 2004-07-13 | 2010-04-29 | Arm Limited | Data processing apparatus and method for performing rearrangement operations |
CN102999315A (zh) * | 2006-09-22 | 2013-03-27 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
US9116790B2 (en) * | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021139796A1 (zh) * | 2020-01-08 | 2021-07-15 | Oppo广东移动通信有限公司 | 莫顿码的构建方法、编码器、解码器、及存储介质 |
CN113473153A (zh) * | 2020-03-30 | 2021-10-01 | 鹏城实验室 | 一种点云属性预测方法、编码方法、解码方法及其设备 |
CN113473153B (zh) * | 2020-03-30 | 2023-04-25 | 鹏城实验室 | 一种点云属性预测方法、编码方法、解码方法及其设备 |
Also Published As
Publication number | Publication date |
---|---|
US9772848B2 (en) | 2017-09-26 |
JP6696674B2 (ja) | 2020-05-20 |
WO2016077019A1 (en) | 2016-05-19 |
EP3218815A1 (en) | 2017-09-20 |
TW201633114A (zh) | 2016-09-16 |
JP2017534981A (ja) | 2017-11-24 |
KR20170066482A (ko) | 2017-06-14 |
TWI582692B (zh) | 2017-05-11 |
EP3218815A4 (en) | 2018-07-18 |
US20160139929A1 (en) | 2016-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105278917B (zh) | 无局部性提示的向量存储器访问处理器、方法、设备、制品和电子设备 | |
CN104094218B (zh) | 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法 | |
CN104137055B (zh) | 点积处理器、方法、系统和指令 | |
CN104126168B (zh) | 打包数据重新安排控制索引前体生成处理器、方法、系统及指令 | |
CN104040482B (zh) | 用于在打包数据元素上执行增量解码的系统、装置和方法 | |
CN104137060B (zh) | 高速缓存协处理单元 | |
CN104081341B (zh) | 用于多维数组中的元素偏移量计算的指令 | |
CN104350492B (zh) | 在大寄存器空间中利用累加的向量乘法 | |
CN107111484A (zh) | 四维莫顿坐标转换处理器、方法、系统和指令 | |
CN104011643B (zh) | 打包数据重新安排控制索引产生处理器、方法、系统及指令 | |
CN104137061B (zh) | 用于执行向量频率扩展指令的方法、处理器核和计算机系统 | |
CN104011644B (zh) | 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令 | |
CN104011646B (zh) | 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令 | |
CN104011665B (zh) | 超级乘加(超级madd)指令 | |
CN107077334A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
CN104094182B (zh) | 掩码置换指令的装置和方法 | |
CN104185837B (zh) | 在不同的粒度等级下广播数据值的指令执行单元 | |
CN107111485A (zh) | 三维莫顿坐标转换处理器、方法、系统和指令 | |
CN104081337B (zh) | 用于响应于单个指令来执行横向部分求和的系统、装置和方法 | |
CN104011671B (zh) | 用于执行置换操作的设备和方法 | |
CN104321740B (zh) | 利用操作数基础系统转换和再转换的向量乘法 | |
CN109992304A (zh) | 用于加载片寄存器对的系统和方法 | |
CN104011616B (zh) | 改进置换指令的装置和方法 | |
CN104350461B (zh) | 具有不同的读和写掩码的多元素指令 | |
CN107111489A (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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20210723 |
|
AD01 | Patent right deemed abandoned |