CN103946797B - 用于转换矢量指令的系统、装置和方法 - Google Patents
用于转换矢量指令的系统、装置和方法 Download PDFInfo
- Publication number
- CN103946797B CN103946797B CN201180074953.7A CN201180074953A CN103946797B CN 103946797 B CN103946797 B CN 103946797B CN 201180074953 A CN201180074953 A CN 201180074953A CN 103946797 B CN103946797 B CN 103946797B
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- code
- processor
- converted
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 218
- 238000006243 chemical reaction Methods 0.000 title claims description 37
- 238000000034 method Methods 0.000 title claims description 31
- 238000003860 storage Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 32
- 230000009466 transformation Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 6
- 238000003672 processing method Methods 0.000 claims 7
- 238000007792 addition Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000005611 electricity Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 235000008708 Morus alba Nutrition 0.000 description 1
- 240000000249 Morus alba Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/30181—Instruction operation extension or modification
-
- 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/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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
矢量转换指令用于对要转换的代码区的开始和结束进行分界。代码区包括在源处理器的指令集中定义的第一矢量指令集。处理器接收矢量转换指令和分界的代码区,并将代码区转换成经转换的代码。经转换的代码包括在目标处理器的指令集中定义的第二矢量指令集。经转换的代码由目标处理器执行以产生结果值,结果值与执行代码区的源处理器产生的原始结果值相同。目标处理器在不是矢量寄存器的位置存储结果值,该位置与源处理器存储原始结果值的原始位置相同。
Description
技术领域
本发明的实施例一般涉及计算机处理器架构,更具体而言,涉及当被执行时导致特定结果的指令。
相关技术的描述
许多处理器具有单指令多数据(SIMD)架构。该SIMD架构通常有助于显著提高处理速度。在SIMD架构中,与仅在一个数据元素或一对数据元素上操作的标量指令不同,矢量指令(也称为打包数据指令或SIMD指令)可在多个数据元素、或多对数据元素上同时和/或并行地操作。处理器可具有并行执行硬件,该并行执行硬件响应于矢量指令来同时或并行地执行多个操作。
在SIMD架构中,可将多个数据元素打包在一个寄存器或存储器位置内作为打包数据或矢量数据。在矢量数据中,寄存器或其他存储位置的比特可被逻辑地划分成多个固定大小的数据元素的序列。数据元素中的每一个可表示个体数据片,该个体数据片连同通常具有相同大小的其他数据元素一起被存储在寄存器或存储位置中。例如,256比特宽寄存器可具有四个64比特宽矢量元素,八个32比特宽矢量元素,十六个16比特宽矢量元素,或三十二个8比特宽矢量元素。每一矢量元素可表示独立个体的一段数据(例如,像素颜色等),该段数据可单独地操作和/或与其他数据独立地操作。
代表性地,矢量加法指令可以指定在来自两个源矢量操作数的所有相应数据元素对上执行单个矢量操作(例如,加法)以生成目的或结果矢量。这些源矢量操作数是相同大小,可包含相同宽度的数据元素,如此,可各自包含相同数量的数据元素。两个源矢量操作数中的相同的比特位置中的源数据元素可以表示相应的数据元素对。可以分开地或独立地对这些相应的源数据元素对中的每一个执行矢量操作,以便生成匹配数量的结果数据元素,且因而每一对相应的源数据元素可以具有相应的结果数据元素。通常,这样的指令的结果数据元素是以相同的次序,且它们常常具有相同的大小。
不同的处理器族可支持不同的矢量指令集。不同的矢量指令集可具有不同的矢量宽度、不同的格式,且在被执行时进行不同的操作。结果,为一个处理器编写矢量代码的编程者可能需要为另一个处理器手动重写该代码。重写代码可能耗时且易于出错。
附图说明
在各个附图的图形中,本发明的各实施例是作为示例而不是显示说明的,在附图中,类似的参考编号表示类似的元件。应注意,在本公开中对“一”或“一个”实施例的不同引用不一定指相同实施例,且这种引用表示至少一个。此外,当参考一个实施例描述特定特征、结构或特性时,认为在本领域技术人员学识范围内,可以与其他实施例一起实施这样的特征、结构或特性,不论是否有明确描述。
图1是具有含一个或多个矢量转换指令的指令集的处理器的实例实施例的框图。
图2A-2B示出实例转换操作的示例。
图3A-3C示出矢量转换指令及其操作的示例实施例。
图4是具有执行单元的指令处理装置的示例实施例的框图,该执行单元可操作用于执行包含矢量转换指令的示例实施例的指令。
图5是包括存储有矢量转换指令的有形、非瞬态机器可访问和/或机器可读存储介质的制品(例如,计算机程序产品)的框图。
图6是示出用于处理指令转换指令的方法的示例实施例的流程图。
图7示出根据本发明一个实施例的系统的框图。
图8示出根据本发明的实施例的第二系统的框图。
图9是根据本发明的实施例的第三系统的框图。
图10是根据本发明的实施例的片上系统(SoC)的框图。
图11是根据本发明的实施例的单核处理器和多核处理器的框图,具有集成的存储器控制器和图形器件;
图12是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。
具体实施方式
在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的各实施例可以在不具有这些具体细节的情况下得到实施。在其他实例中,公知的电路、结构和技术未被详细示出以免混淆对本描述的理解。
在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的各实施例可以在不具有这些具体细节的情况下得到实施。在其他实例中,公知的电路、结构和技术未被详细示出以免混淆对本描述的理解。
图1是处理器100的示例实施例的框图。该处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一个或多个实施例中,处理器100可以是通用处理器(例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的类型的通用微处理器),尽管这不是必需的。替换地,指令处理处理装置可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。
处理器100具有指令集架构(ISA)101。指令集体系结果101表示与编程相关的处理器100的架构的一部分指令集架构101通常包括本地指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以及处理器100的外部输入和输出(I/O)。指令集架构101与微架构不同,微架构通常表示选择用于实现指令集架构的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的指令集架构。例如,加利福尼亚州圣克拉拉的英特尔公司的某些微处理器和加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的某些微处理器使用本质上不同的内部微架构来实现x86指令集的类似部分。
指令集架构101包括架构寄存器(例如,架构寄存器文件)106。架构寄存器106可包括通用寄存器和矢量寄存器、标量浮点寄存器、写掩码寄存器及其它寄存器。矢量寄存器中的每一个可用于存储矢量、矢量数据或SIMD数据(例如,数据元素阵列)。架构寄存器106表示板上处理器存储位置。架构寄存器106此处也可以被简称为寄存器。短语架构寄存器、寄存器文件、以及寄存器在本文中用于表示对软件和/或编程器(例如,软件可见的)和/或由宏指令指定来标识操作数(operand)的寄存器,除非另外予以指定或清楚明显可知。这些寄存器与给定微架构(例如,临时寄存器、重排序缓冲器、引退(retirement)寄存器等)中的其他非架构寄存器形成对比。
所示的指令集架构101还包括由处理器100支持的指令集102。指令集102包括若干不同类型的指令。指令集102的这些指令表示宏指令(例如,提供给处理器100以供执行的指令),与微指令或微操作(例如,从处理器100的解码器129解码宏指令得到的)不同。
指令集102还包括一个或多个操作掩码矢量指令103。经掩码的矢量指令103可类似于在背景部分中提及的矢量指令类似,且具有几个显著的差别。类似于前述矢量指令,经掩码的矢量指令103中的每一个可用于导致或致使处理器100在该指令指示的一个或多个操作数的数据元素上执行矢量操作。然而,经掩码的矢量指令103中的每一个可使用一个或多个掩码以掩码、断言(predicate)或有条件地控制矢量处理。可将掩码存储在写掩码寄存器中(该写掩码寄存器是架构寄存器106的一部分),且可表示掩码操作数、断言操作数或条件操作控制操作数。
掩码可用于按数据元素粒度掩码或有条件地控制矢量处理。例如,掩码可用于对是否将在来自单个源矢量操作数的个体数据元素或来自两个源矢量操作数的个体相应数据元素对上执行的经掩码的矢量指令103的矢量操作的结果存储在矢量结果中进行掩码。掩码矢量指令103可允许与数据元素分开地且独立地断言或有条件控制对每个数据元素或每对相对应数据元素的矢量处理。经掩码的矢量指令103、操作和掩码可提供某些优点,诸如增加的代码密度和/或较高的指令吞吐量。
再次参考图1,指令集102还包括一个或多个矢量转换指令104、诸如矢量转换_开始(VTRANSLATE_BEGIN)105A和矢量转换_结束(VTRANSLATE_END)105B。矢量转换_开始105A和矢量转换_结束105B可用于导致或致使处理器将源指令集的矢量指令转换成目标指令集的矢量指令。在一个实施例中,目标指令集可由处理器100执行。在替换实施例中,目标指令集可由不同于处理器100的另一个处理器执行。在一些实施例中,矢量转换_开始105A和矢量转换_结束105B可具有与经掩码的矢量指令103相同的格式;然而,矢量转换_开始105A和矢量转换_结束105B用作分界,且可保留经掩码的矢量指令103中的一些字段(例如,源操作数、目的地、写掩码等)不使用(例如,清零)。
处理器100还包括执行逻辑109。执行逻辑109可操作用于执行或处理指令集102的指令。执行逻辑109可包括执行单元、功能单元、算术逻辑单元、逻辑单元、算术单元等。处理器100还包括解码器,用以将宏指令解码成微指令或微操作以供执行逻辑109执行。
为了进一步解释矢量转换指令104的实施例,考虑将矢量指令从一个矢量宽度转换成另一个矢量宽度的示例是有帮助的。图2A是示出512比特矢量加法操作203的示例实施例的框图。可响应于矢量指令(诸如图1的经掩码的矢量指令103之一)或作为其结果执行矢量加法操作203。在该示例中,矢量加法操作203将第一512比特矢量操作数201的每个元素加至第二512比特操作数202的每个对应的元素。第一和第二操作数201和202中的每个元素是64比特四字。结果矢量也是512比特矢量,包含八个四字。
作为说明,512比特矢量加法指令(其执行512比特矢量加法操作203)可被转换成两个256比特矢量加法指令(每个执行256比特矢量加法操作206)。当执行经转换的矢量指令的目标处理器具有256比特宽矢量寄存器而不是512比特宽矢量寄存器时,这可能是有用的。256比特矢量加法操作206中的每一个在第一和第二操作数201和202中的元素的不同半部分上操作。操作206的结果矢量在被组合时的数据元素与操作203在相应数据元素位置的结果矢量相同。
注意,还可在相反方向上执行转换。例如,可将两个256比特矢量加法指令转换成一个512比特加法指令以允许在具有512比特宽矢量寄存器的目标处理器上有效率地执行矢量操作。
在图2A的示例中,当使用具有清零的掩码的矢量加法指令(即,所有的掩码比特被清零,这等价于非掩码或无掩码)时,执行转换。还可在使用具有置位的掩码的矢量加法指令(即掩码比特中的至少一个被置位)时,执行转换。
在图2B的示例中,512比特矢量加法指令使用掩码205“01110100”来执行512比特矢量加法操作207。作为示例,可在512比特矢量加法指令的写掩码字段中指定掩码205。掩码比特中的每一个对应于第一和第二操作数201和202在相应的数据元素位置中的数据元素。每个掩码比特允许指定两个不同可能性(例如,执行操作对不执行操作,存储操作的结果对不存储操作的结果等)中的任一个。在该示例中,掩码205包含8个比特。每个掩码比特具有操作数201的八个数据元素之一与操作数202的八个数据元素之一的有序对应。512比特矢量加法指令(以及掩码205)可被转换成两个256比特矢量加法指令,每个指令关于掩码比特执行相应半部分的256比特矢量加法操作208。
根据所示的示例,矢量加法操作207是经掩码的矢量操作,该掩码的矢量操作可操作用于根据掩码205的对应比特提供的条件操作控制或断言有条件地将来自第一和第二操作数201和202的相应数据元素对的和存储在结果矢量中。该矢量加法操作207可指定在每个相应的数据元素对上、与其它对分离或独立于其它对、以垂直方式有条件地执行单个操作(在这种情况下是加法)。结果矢量与源操作数的尺寸相同且具有与源操作数相同数量的数据元素。掩码205八个比特中的每一个被置位(即,具有二进制值1)或者被清除(即,具有二进制值0)。根据所示的协定,当掩码比特被置位(例如,1)时,执行第一和第二操作数的相应数据元素的加法,且总和(示为加下划线)被存储在结果矢量的相应数据元素中。
相反,当给定的掩码比特被清零(即,0)时,不允许加法的结果被存储在结果矢量的相应数据元素中,或者不在第一和第二操作数的对应数据元素上执行加法。相反,可将另一个值存储在结果矢量的相应数据元素中。例如,如图所示,来自第二操作数202的相应数据元素的值可被存储在结果矢量的相应数据元素中。这称为合并-掩码。或者,可将零值存储在结果矢量的相应数据元素中。这称为填零-掩码。与所示相反的协定也是可能的,其中比特被清零(即,0)以允许存储结果,或被置位(即,1)以不允许存储结果。
在一些实施例中,掩码可包括多个掩码元素(也称为断言元素、条件控制元素或标志),且每个掩码元素具有一个以上的比特。如果期望在两个以上的不同选项中进行选择,则每个掩码元素具有两个或更多比特可能是有用的。
作为指令转换的另一个示例,图2B的512比特示例加法指令可被转换成标量加法指令的序列以供不支持使用掩码(例如,掩码205)的目标处理器执行。相反,来自一个处理器的指令集的标量加法指令序列可被转换成经掩码的矢量加法指令以供支持经掩码的矢量指令的另一个处理器执行。
作为指令转换的又一个示例,处理器可支持包括矢量乘法-加法(multiple-and-add)指令作为单元指令的指令集。矢量乘法-加法指令在由处理器执行时将第一矢量操作数与第二矢量操作数相乘并将结果加至第三矢量操作数。在另一个指令集中,矢量乘法-加法操作需要由两个单独的指令实施:矢量乘法指令和矢量加法指令。本文描述的矢量转换指令104(图1)可将一个指令集的矢量乘法-加法指令转换成另一个指令集的矢量乘法操作和矢量加法操作,且反之亦然。
图3A-3C示出使用图1所示的矢量转换指令104的示例。在图3A和3B的两个替换实施例中,矢量转换指令104包括矢量转换_开始105A和矢量转换_结束105B,分别用作要转换的代码区之前和之后的分界。代码区可包含指令序列。要转换的指令中的一些或全部可在一个或多个函数内。要转换的指令可包括源处理器支持但(要在其上执行经转换的指令的)目标处理器不支持的矢量指令和/或标量指令。另外,要转换的指令可包括一个或多个新矢量指令,源处理器和目标处理器的下层物理硬件(例如,解码器)不支持新矢量指令。
例如,要转换的代码区可包括源处理器和目标处理器不支持的新矢量指令,诸如VGATHER。如图3C所示,在代码区被转换后,VGATHER指令可被转换成负载指令序列以供由目标处理器执行。增加新指令的能力为编程者提供强大工具,而不需要硬件设计者重新设计硬件以支持这些新指令。
在一些实施例中,矢量转换_开始105A和矢量转换_结束105B由编程者(或源代码生成器)用来分界包含从一个处理器世代升级或以其它方式更新到下一处理器世代的矢量指令的代码区。这些处理器世代可共享同一基本指令组。然而,每一处理器世代可支持更高级或不同的矢量指令集。通过在不同指令集之间自动转换这些矢量指令,编程者仅需要编写一次矢量指令集。
为了使转换正确且有效率地执行,在一个实施例中,编程者(或源代码生成器)需要确保以下条件:
1.分界代码(即将转换的代码)不包含自修改和交叉修改代码。即,分界代码不会被同一程序中的任何其它代码修改。
2.分界代码不包含任何交叉线程通信,包括同步原语。
3.经转换的代码的功能要求(即,转换的结果)将在矢量转换_结束105B指令处产生相同的存储器输出。例如,如果分界的代码在矢量转换_结束105B指令处产生在存储器地址X处的值V,则经转换的代码也需要在存储器地址X处产生值V。
4.在经转换的代码的执行期间,允许经转换的代码将临时值推入程序栈,并且从程序栈弹出临时值。即,(经转换的代码驻留其中的)程序不使用的所有存储器地址是可读且可写的。
5.在V被读取之前,分界代码区内的代码读取的任何矢量寄存器V必须被写入(初始化)到分界的代码区中。在执行矢量转换_结束之后,分界的代码区内写入的任何寄存器W具有未定义值。即,从存储器(或标量寄存器文件)读取至分界代码的所有输入,并且在存储器(或标量寄存器文件)中产生所有输出。这允许经转换的代码将矢量寄存器用于存储临时值。
图4是具有执行单元440的指令处理装置415的示例实施例的框图,该执行单元440可操作用于执行包含图1的矢量转换指令104的示例实施例的指令。在一些实施例中,指令处理装置415可以是处理器(例如,图1的处理器100或类似装置),和/或可被包括在该处理器(例如,图1的处理器100或类似装置)中。替换地,指令处理装置415可被包括在不同的处理器或电子系统中。
指令处理装置415接收包括由图1的矢量转换指令104分界的多个指令的代码区。这些多个指令被称为分界指令或分级代码区。可从存储器、指令队列、指令获取单元或其它源接收分界指令。分界指令包括一个或多个矢量指令;其中的一些或全部可以是图1所示的经掩码的矢量指令103。分界的指令由转换逻辑418处理,该转换逻辑418可在编译时间、安装时间、加载时间或运行时间被调用。转换逻辑418可由以下中的任一个调用:编译器、安装器、加载器和运行时间解释器(例如,诸如JAVA虚拟机之类的进程虚拟机)。当被调用时,转换逻辑418分析分界指令并调用转换库420以执行转换。转换库420可被存储在与转换逻辑418耦合的存储器413中。转换库420可以是二进制代码库。转换库420可被编译器、安装器、加载器和运行时间解释器共享。
在一个实施例中,转换库420可由编译器在编译时间、安装器在安装时间、加载器在加载时间和/或解释器或程序(包含分界指令)本身在运行时间调用。例如,编译器可将以高级编程语言编写的程序编译成按二进制代码的中间形式。如果中间的二进制代码包含分界指令,则编译器可进一步在编译时间利用转换库420将分界指令编译成经转换的指令。经转换的指令由在其上执行转换指令的目标处理器的指令集支持。作为另一个示例,安装器可将二进制代码形成的应用安装到将运行该应用的目标处理器上。如果安装的应用包含分界指令,则安装器在安装时间中可调用转换库420将它们转换成经转换的指令。类似地,加载器可将二进制代码加载到将运行代码的目标处理器的存储器。如果加载的代码包含分界指令,则加载器在加载时间中可调用转换库420将它们转换成经转换的指令。在运行时间,运行时间解释器可解释二进制代码以供目标处理器执行。如果经解释的代码包含分界指令,则解释器在运行时间期间可调用转换库420来将它们转换成经转换的指令。
指令处理装置415的所示实施例包括解码器430,该解码器430可以是图1的解码器129或一个类似解码器。解码器430接收高级机器指令或宏指令形式的经转换的指令,并且将所述指令解码以生成较低级微操作、微代码进入点、微指令或其他较低级指令或控制信号,它们反映了原始的高级指令和/或从原始的高级指令导出。较低级指令或控制信号可通过较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器430可使用各种不同的机制来实现。合适机制的示例包括但不限于微代码、随机存取存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
指令处理装置415还包括与解码器430耦合的执行单元440。执行单元440可从解码器430接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了图1的矢量转换指令所分界的指令或者是从该指令导出的。
当执行单元440执行经转换的代码时,它从存储器450和/或标量寄存器文件接收输入。标量寄存器文件可以是图1的架构寄器106的一部分。来自执行经转换的代码的执行单元440的输出被存储在存储器450和/或标量寄存器文件460中。在执行期间,执行单元440可使用存储器450,矢量寄存器文件470和/或标量寄存器文件460的一部分(只要标量寄存器文件460中的原始值被保留)以推入和弹出临时值。在图4中,与临时指相关联的虚线指示将存储器450、矢量寄存器文件470和/或标量寄存器文件460用于临时值是任选的且不是必须的。正如本文中所使用的,术语输入和输出与“临时值”不同。临时值是在经转换的代码的执行期间存储到栈或从栈访问的中间结果。输入指的是在经转换的代码的开始处的位置(即在矢量转换_开始105A)读取的值,而输出指的是从经转换的代码的开始处的位置(即矢量转换_结束105B)读取的值。如上所述,作为分界代码区的条件之一,矢量寄存器文件460不能用于存储输入和输出,但可用于存储临时值。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置415。应当理解,其他实施例可具有超过一个执行单元。例如,装置可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。这些单元中的至少一个可响应于如本文公开的矢量转换指令的实施例。指令处理装置或处理器的再其他实施例可具有多个核、逻辑处理器或执行引擎。可用于执行一个或多个矢量转换指令的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。
指令处理装置415或处理器415还可以可任选地包括一个或多个其他已知的组件。例如,其它实施例可包括指令获取逻辑、调度逻辑、分支预测逻辑、指令和数据缓存、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级缓存、指令调度逻辑、引退逻辑、寄存器重命名逻辑等中的一个或多个或它们的各种组合。应意识到实际上在处理器中存在这些组件的多种不同的组合和配置,并且本发明的范围不限于任意已知的这些组合配置。
图5是包括有形、非瞬态机器可读(例如,机器可访问)存储介质500的制品(例如,计算机程序产品)的框图,其存储矢量转换指令510,诸如如图1所示的矢量转换_开始105A和矢量转换_结束105B。存储介质500还存储矢量指令520,其可包括图1所示的一个或多个经掩码的矢量指令103。将意识到用于执行本文描述的一个或多个操作或方法的其它指令或指令序列(例如,编译器、安装器、加载器、运行时间解释器、转换库等)也可被存储在存储介质500中。
在各实施例中,有形、非瞬态机器可读存储介质可包括软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器或它们的组合。有形介质可包括一个或多个固态有形材料,例如半导体材料、相变材料、磁性材料、光盘的光学透明固体材料等等。
适当的机器的示例包括但不限于指令处理设备、指令执行设备、处理器以及具有一个或多个指令处理设备、指令执行设备或处理器的各种电子设备。这种电子设备的几个代表示例包括但不限于计算机系统、台式机、膝上型计算机、笔记本、服务器、网络设备、路由器、开关、上网本、上网计算机、移动互联网设备(MID)、蜂窝电话和媒体播放器。这样的电子设备通常包括与诸如例如一个或多个有形非瞬态机器可读存储介质等的一个或多个其他组件耦合的一个或多个处理器。处理器和其它组件的耦合一般是通过一个或多个总线和桥(也称总线控制器)达成的。因而,电子设备的存储设备或存储介质可以存储在该电子设备的一个或多个处理器上执行的指令和/或指令序列。
图6是处理矢量转换指令(诸如图1的矢量转换指令104)的示例实施例的方法600的示例实施例的流程图。在各实施例中,方法600的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法600可由图1的处理器100、图4的指令处理装置415或类似的处理器或指令处理装置执行。或者,方法600可由处理器或指令处理装置的不同实施例执行。此外,图1的处理器100和图4的指令处理装置415可执行与图6的方法600的操作和方法相同、类似或不同的操作和方法的实施例。
方法600包括处理器接收代码区和一对矢量转换指令,诸如图1所示的矢量转换_开始105A和矢量转换_结束105B。处理器可以是源处理器或目标处理器。矢量转换指令分界代码区的开始和结束。代码区包括在源处理器的指令集中定义的第一矢量指令集。处理器将代码区转换成经转换的代码(框620)。经转换的代码包括在目标处理器的指令集中定义的第二矢量指令集。经转换的代码由目标处理器执行以产生结果值(框630),结果值与执行代码区的源处理器产生的原始结果值相同。目标处理器在不是矢量寄存器的位置存储结果值(框640),该位置与源处理器用于存储原始结果值的原始位置相同。该位置可以是存储器地址或标量寄存器。
本发明的实施例提供用于转换矢量代码的简单、轻量级方法。可利用低开销或无开销地转换矢量代码。可在编译时间、安装时间、加载时间或运行时间执行转换。本发明的实施例还运行编程者为一个指令集架构仅写入一次矢量代码段,且使得矢量代码由具有多个不同指令集架构的多个处理器执行的矢量代码。因此,当程序被移动以运行在具有较宽矢量大小和/或支持更复杂矢量指令的新指令集架构上时,编程者不需要重写程序。当程序被移动以运行在具有较小矢量大小和/或不支持程序中的某些矢量指令的较早世代的处理器上时,编程者不需要重写程序。另外,本发明的实施例允许新指令和功能被编程者使用,而不使下层硬件实际解码和执行新指令。这向编程者提供在不对物理硬件作任何修改的情况下利用强大指令编写程序的工具。
示例性计算机系统和处理器-图7-11
图7-11是示例性计算机系统和处理器。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够纳入本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参考图7,所示出的是根据本发明实施例的系统1300的框图。系统1300可包括耦合至图形存储器控制器中枢(GMCH)1320的一个或多个处理器1310、1315。附加处理器1315的可选性质用虚线表示在图7中。
每一处理器1310、1315可以是处理器1700的某种版本。然而,应该注意,集成图形逻辑和集成存储器控制单元未必存在于处理器1310、1315中。.
图7示出GMCH1320可耦合至存储器1340,该存储器1340可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
GMCH1320可以是芯片组或芯片组的一部分。GMCH1320可以与(多个)处理器1310、1315进行通信,并控制处理器1310、1315与存储器1340之间的交互。GMCH1320还可担当(多个)处理器1310、1315和系统1300的其它元件之间的加速总线接口。对于至少一个实施例,GMCH1320经由诸如前端总线(FSB)1395之类的多站总线与(多个)处理器1310、1315进行通信。
此外,GMCH1320耦合至显示器1345(诸如平板显示器)。GMCH1320可包括集成图形加速器。GMCH1320还耦合至输入/输出(I/O)控制器中枢(ICH)1350,该输入/输出(I/O)控制器中枢(ICH)1350可用于将各种外围设备耦合至系统1300。在图7的实施例中作为示例示出了外部图形设备1360以及另一外围设备1370,该外部图形设备1360可以是耦合至ICH1350的分立图形设备。
替代地,系统1300中还可存在附加或不同的处理器。例如,附加(多个)处理器1315可包括与处理器1310相同的附加(多个)处理器、与处理器1310异类或不对称的附加(多个)处理器、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括架构、微架构、热、功耗特征等等优点的度量谱,(多个)物理资源1310、1315之间存在各种差别。这些差别会有效显示为处理元件1310、1315之间的不对称性和异类性。对于至少一个实施例,各种处理元件1310、1315可驻留在同一管芯封装中。
现在参照图8,所示出的是根据本发明一实施例的第二系统1400的框图。如图8所示,多处理器系统1400是点对点互连系统,且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。如图8所示,处理器1470和1480中的每个可以是处理器1700的某一版本。
替代地,处理器1470、1480中的一个或多个可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。
虽然仅以两个处理器1470、1480来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理元件。
处理器1470还可包括集成存储器控制器中枢(IMC)1472和点对点(P-P)接口1476和1478。类似地,第二处理器1480包括IMC1482和P-P接口1486和1488。处理器1470、1480可以经由使用点对点(PtP)接口电路1478、1488的点对点(PtP)接口1450来交换数据。如图8所示,IMC1472和1482将处理器耦合到相应的存储器,即存储器1442和存储器1444,这些存储器可以是本地附连到相应处理器的主存储器部分。
处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454与芯片组1490交换信息。芯片组1490还可经由高性能图形接口1439与高性能图形电路1438交换数据。
共享高速缓存(未示出)可以被包括在任一处理器之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1490可经由接口1496耦合至第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图8所示,各种I/O设备1414可连同总线桥1418一起耦合到第一总线1416,总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1426以及可以包括代码1430的诸如盘驱动器或其它海量存储设备的数据存储单元1428。进一步地,音频I/O1424可以耦合到第二总线1420。注意,其它架构是可能的。例如,代替图8的点对点架构,系统可实现多点总线或者其他此类架构。
现在参照图9,所示出的是根据本发明实施例的第三系统1500的框图。图8和9中的类似元件使用类似附图标记,且在图9中省略了图8的某些方面以避免混淆图9的其它方面。
图9示出处理元件1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。对于至少一个实施例,CL1472、1482可包括诸如以上结合图8、9和14所描述的存储器控制器中枢逻辑(IMC)。此外。CL1472、1482还可包括I/O控制逻辑。图15不仅解说了耦合至CL1472、1482的存储器1442、1444,而且还解说了同样耦合至控制逻辑1472、1482的I/O设备1514。传统I/O设备1515被耦合至芯片组1490。
现在参考图10,所示为根据本发明的一实施例的SoC1600的框图。图11中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图10中,互连单元1602被耦合至:应用处理器1610,包括一个或多个核1702A-N的集合和共享高速缓存单元1706;系统代理单元1710;总线控制器单元1716;集成存储器控制器单元1714;一个或多个媒体处理器1620的集合,可包括集成图形逻辑1708、用于提供静态和/或视频照相机功能的图像处理器1624、用于提供硬件音频加速的音频处理器1626、以及用于提供视频编码/解码加速的视频处理器1628;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及显示单元1640,用于耦合至一个或多个外部显示器。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用至输入数据以执行本文描述的功能并产生输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的粒子有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含矢量友好指令格式的指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图12是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图12示出可以使用x86编译器1804来编译高级语言1802的程序,以便生成可以由具有至少一个x86指令集核1816的处理器本地执行的x86二进制代码1806(假设指令中的一些是以矢量友好指令格式编译)。具有至少一个x86指令集核1816的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1804表示用于生成x86二进制代码1806(例如,对象代码)的编译器,该二进制代码1816可通过或不通过附加的关联处理在具有至少一个x86指令集核2216的处理器上执行。类似地,图12示出高级语言1802的程序可使用替换指令集编译器1808来编译以生成替换指令集二级制代码1810,替换指令集二级制代码1810可由不具有至少一个x86指令集核的处理器1814(诸如,具有执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来本地执行。指令转换器1812被用来将x86二进制代码1806转换成可以由不具有x86指令集核1814的处理器原生执行的代码。该转换后的代码不大可能与替换性指令集二进制代码1810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1812通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1806的软件、固件、硬件或其组合。
本文公开的矢量友好指令格式的指令的某些操作可由硬件组件执行,且可体现在机器可执行指令中,该指令用于导致或至少致使电路或其它硬件组件以执行该操作的指令编程。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。这些操作还可任选地由硬件和软件的组合执行。执行逻辑和/或处理器可包括响应于从机器指令导出的机器指令或一个或多个控制信号以存储指令指定的结果操作数的专用或特定电路或其它逻辑。例如,本文公开的指令的实施例可在图7-11的一个或多个系统中执行,且矢量友好指令格式的指令的实施例可存储在将在系统中执行的程序代码中。另外这些附图的处理元件可利用本文详细描述的详细描述的流水线和/或架构(例如有序和无序架构)之一。例如,有序架构的解码单元可解码指令、将经解码的指令传送到矢量或标量单元等。
上述描述旨在说明本发明的优选实施例。根据上述讨论,还应当显而易见的是,在发展迅速且进一步的进展难以预见的此技术领域中,本领域技术人员可在安排和细节上对本发明进行修改,而不背离落在所附权利要求及其等价方案的范围内的本发明的原理。例如,方法的一个或多个操作可组合或进一步分开。
可选实施例
尽管已经描述了将本地执行矢量友好指令格式的实施例,但本发明的可选实施例可通过运行在执行不同指令集的处理器(例如,执行美国加利福亚州桑尼维尔的MIPS技术公司的MIPS指令集的处理器、执行加利福亚州桑尼维尔的ARM控股公司的ARM指令集的处理器)上的仿真层来执行矢量友好指令格式。同样,尽管附图中的流程图示出本发明的某些实施例的特定操作顺序,按应理解该顺序是示例性的(例如,可选实施例可按不同顺序执行操作、组合某些操作、使某些操作重叠等)。
在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。
应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其它实施方式对本领域内技术人员而言将是显而易见的。因此,本发明的范围应参考所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。
Claims (18)
1.一种指令处理方法,包括:
接收代码区和一对矢量转换指令,所述矢量转换指令对所述代码区的开始和结束进行分界,所述代码区包括在源处理器的指令集中定义的第一矢量指令集;
将所述代码区转换成经转换的代码,所述经转换的代码包括在目标处理器的指令集中定义的第二矢量指令集;
由目标处理器执行经转换的代码以产生结果值,所述结果值与执行所述代码区的源处理器产生的原始结果值相同;以及
将结果值存储在不是矢量寄存器的位置,所述位置与源处理器用于存储原始结果值的原始位置相同。
2.如权利要求1所述的指令处理方法,其特征在于,所述代码区不包含自修改代码且不能由代码区外的代码修改。
3.如权利要求1所述的指令处理方法,其特征在于,所述代码区不包含交叉线程通信。
4.如权利要求1所述的指令处理方法,其特征在于,所述第一矢量指令集指定与所述第二矢量指令集指定的矢量宽度不同的矢量宽度。
5.如权利要求1所述的指令处理方法,其特征在于,执行经转换的代码的所述目标处理器不从目标处理器的任意矢量寄存器接收对经转换的代码的输入,并且不将经转换的代码生成的最终输出存储到所述矢量寄存器中的任一个中,所述方法还包括:
在经转换的代码的执行期间,将临时值存储在矢量寄存器中。
6.如权利要求1所述的指令处理方法,其特征在于,转换所述代码区还包括:
利用转换库转换代码区,所述转换库被编译器、安装器、加载器和运行时间解释器所共享,所述编译器、安装器、加载器和运行时间解释器运行在目标处理器上且能够调用代码区的转换。
7.如权利要求1所述的指令处理方法,其特征在于,所述代码区还包括未在源处理器的指令集中定义的第三矢量指令集,其中转换代码区还包括:
将所述第三矢量指令集转换成目标处理器的指令集中定义的指令。
8.一种指令处理装置,包括:
转换逻辑单元,被配置成用于接收代码区和一对矢量转换指令,所述矢量转换指令对所述代码区的开始和结束进行分界,并且将所述代码区转换成经转换的代码,其中所述代码区包括在源处理器的指令集中定义的第一矢量指令集,并且经转换的代码包括在目标处理器的指令集中定义的第二矢量指令集;
解码逻辑单元,耦合到所述转换逻辑单元,并被配置成用于解码经转换的代码;
执行逻辑单元,耦合到所述解码逻辑单元,并被配置成用于执行经转换的代码以产生结果值,并将所述结果值存储在不是矢量寄存器的位置,其中所述结果值与执行代码区的源处理器产生的原始结果值相同,并且所述位置与源处理器用于存储原始结果值的原始位置相同。
9.如权利要求8所述的指令处理装置,其特征在于,所述第一矢量指令集指定与所述第二矢量指令集指定的矢量宽度不同的矢量宽度。
10.如权利要求8所述的指令处理装置,其特征在于,还包括:
多个矢量寄存器,所述矢量寄存器用于在经转换的代码的执行期间存储临时值,其中所述矢量寄存器不存储对经转换的代码的输入,并且不存储经转换的代码生成的最终输出。
11.如权利要求8所述的指令处理装置,其特征在于,还包括:
存储器,用于存储转换库,所述转换逻辑单元利用所述转换库来转换代码区,所述转换库被运行在目标处理器上且能够调用转换逻辑单元的编译器、安装器、加载器和运行时间解释器共享。
12.一种计算机系统,包括:
互连;
处理器,与所述互连耦合,所述处理器包括:
转换逻辑单元,被配置成用于接收代码区和一对矢量转换指令,所述矢量转换指令对所述代码区的开始和结束进行分界,并且将所述代码区转换成经转换的代码,其中所述代码区包括在源处理器的指令集中定义的第一矢量指令集,并且经转换的代码包括在目标处理器的指令集中定义的第二矢量指令集;
解码逻辑单元,耦合到所述转换逻辑单元,并被配置成用于解码经转换的代码;
执行逻辑单元,耦合到所述解码逻辑单元,并被配置成用于执行经转换的代码以产生结果值,并将所述结果值存储在不是矢量寄存器的位置,其中所述结果值与执行代码区的源处理器产生的原始结果值相同,并且所述位置与源处理器用于存储原始结果值的原始位置相同;以及
动态随机存取存储器(DRAM),耦合到所述互连。
13.如权利要求12所述的计算机系统,其特征在于,所述处理器还包括:
存储器,用于存储转换库,所述转换逻辑单元利用所述转换库转换代码区,所述转换库被运行在目标处理器上且能够调用转换逻辑单元的编译器、安装器、加载器和运行时间解释器共享。
14.如权利要求12所述的计算机系统,其特征在于,所述代码区不包含自修改代码且不能由代码区外的代码修改。
15.如权利要求12所述的计算机系统,其特征在于,所述代码区不包含交叉线程通信。
16.如权利要求12所述的计算机系统,其特征在于,所述第一矢量指令集指定与所述第二矢量指令集指定的矢量宽度不同的矢量宽度。
17.如权利要求12所述的计算机系统,其特征在于,执行经转换的代码的所述目标处理器不从目标处理器的任意矢量寄存器接收对经转换的代码的输入,并且不将经转换的代码生成的最终输出存储到所述矢量寄存器中的任一个中,其中目标处理器在经转换的代码的执行期间将临时值存储在矢量寄存器中。
18.如权利要求12所述的计算机系统,其特征在于,所述代码区还包括不是在源处理器的指令集中定义的第三矢量指令集,且其中所述转换逻辑单元将第三矢量指令集转换成不是在目标处理器的指令集中定义的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/063434 WO2013085491A1 (en) | 2011-12-06 | 2011-12-06 | System, apparatus and method for translating vector instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103946797A CN103946797A (zh) | 2014-07-23 |
CN103946797B true CN103946797B (zh) | 2017-07-04 |
Family
ID=48575079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180074953.7A Active CN103946797B (zh) | 2011-12-06 | 2011-12-06 | 用于转换矢量指令的系统、装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9424042B2 (zh) |
CN (1) | CN103946797B (zh) |
TW (1) | TWI556163B (zh) |
WO (1) | WO2013085491A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2523823B (en) * | 2014-03-07 | 2021-06-16 | Advanced Risc Mach Ltd | Data processing apparatus and method for processing vector operands |
US9946549B2 (en) | 2015-03-04 | 2018-04-17 | Qualcomm Incorporated | Register renaming in block-based instruction set architecture |
US10025727B2 (en) * | 2016-02-05 | 2018-07-17 | Honeywell International Inc. | Relay mechanism to facilitate processor communication with inaccessible input/output (I/O) device |
US10167800B1 (en) * | 2017-08-18 | 2019-01-01 | Microsoft Technology Licensing, Llc | Hardware node having a matrix vector unit with block-floating point processing |
US10635439B2 (en) * | 2018-06-13 | 2020-04-28 | Samsung Electronics Co., Ltd. | Efficient interface and transport mechanism for binding bindless shader programs to run-time specified graphics pipeline configurations and objects |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US7428630B2 (en) * | 2000-10-09 | 2008-09-23 | Altera Corporation | Processor adapted to receive different instruction sets |
CN101488083A (zh) * | 2007-12-26 | 2009-07-22 | 英特尔公司 | 用于转换向量数据的方法、装置和指令 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5530881A (en) * | 1991-06-06 | 1996-06-25 | Hitachi, Ltd. | Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs |
JPH0877143A (ja) * | 1994-09-02 | 1996-03-22 | Kofu Nippon Denki Kk | ベクトルデータ処理装置 |
US5680338A (en) * | 1995-01-04 | 1997-10-21 | International Business Machines Corporation | Method and system for vector processing utilizing selected vector elements |
US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7962906B2 (en) * | 2007-03-15 | 2011-06-14 | International Business Machines Corporation | Compiler method for employing multiple autonomous synergistic processors to simultaneously operate on longer vectors of data |
US8495602B2 (en) * | 2007-09-28 | 2013-07-23 | Qualcomm Incorporated | Shader compile system and method |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US8060724B2 (en) * | 2008-08-15 | 2011-11-15 | Freescale Semiconductor, Inc. | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US8904366B2 (en) * | 2009-05-15 | 2014-12-02 | International Business Machines Corporation | Use of vectorization instruction sets |
US8555034B2 (en) * | 2009-12-15 | 2013-10-08 | Oracle America, Inc. | Execution of variable width vector processing instructions |
-
2011
- 2011-12-06 CN CN201180074953.7A patent/CN103946797B/zh active Active
- 2011-12-06 US US13/993,603 patent/US9424042B2/en active Active
- 2011-12-06 WO PCT/US2011/063434 patent/WO2013085491A1/en active Application Filing
-
2012
- 2012-11-13 TW TW101142217A patent/TWI556163B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US7428630B2 (en) * | 2000-10-09 | 2008-09-23 | Altera Corporation | Processor adapted to receive different instruction sets |
CN101488083A (zh) * | 2007-12-26 | 2009-07-22 | 英特尔公司 | 用于转换向量数据的方法、装置和指令 |
Also Published As
Publication number | Publication date |
---|---|
WO2013085491A1 (en) | 2013-06-13 |
TW201342219A (zh) | 2013-10-16 |
CN103946797A (zh) | 2014-07-23 |
TWI556163B (zh) | 2016-11-01 |
US9424042B2 (en) | 2016-08-23 |
US20130283022A1 (en) | 2013-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104115115B (zh) | 用于多精度算术的simd整数乘法累加指令 | |
CN103970509B (zh) | 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质 | |
CN104919416B (zh) | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 | |
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN103562856B (zh) | 用于数据元素的跨步图案聚集及数据元素的跨步图案分散的系统、装置及方法 | |
CN104335183B (zh) | 用于测试事务性执行状态的方法、装置和系统 | |
JP6373425B2 (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
CN104603746B (zh) | 由读和写掩码控制的向量移动指令 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
CN108139913A (zh) | 处理器操作的配置模式 | |
CN104813279B (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
CN107077321A (zh) | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 | |
CN107003921A (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN107918546A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN108351784A (zh) | 用于在乱序处理器中进行有序处理的指令和逻辑 | |
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
CN105247479B (zh) | 指令次序实施指令对、处理器、方法和系统 | |
CN108351781A (zh) | 用于利用monitor和mwait架构的用户级线程同步的方法和设备 | |
CN104011666B (zh) | 具有独立进位链的加法指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |