CN103593221B - 用于动态数据配置的方法和设备 - Google Patents
用于动态数据配置的方法和设备 Download PDFInfo
- Publication number
- CN103593221B CN103593221B CN201310350624.1A CN201310350624A CN103593221B CN 103593221 B CN103593221 B CN 103593221B CN 201310350624 A CN201310350624 A CN 201310350624A CN 103593221 B CN103593221 B CN 103593221B
- Authority
- CN
- China
- Prior art keywords
- data format
- data
- processor
- equipment
- binary code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
提供了一种用于动态数据配置的方法和设备。编译设备可从由用于执行二进制代码的执行设备支持的多个数据格式中选择当执行二进制代码时显示最优性能的数据格式,并可产生使用选择的数据格式的二进制代码。执行设备可执行由编译设备提供的二进制代码。
Description
本申请要求于2012年8月16日在韩国知识产权局提交的第10-2012-0089561号韩国专利申请的优先权利益,该申请的公开通过引用包含于此。
技术领域
以下描述的示例实施例涉及一种用于配置动态数据的方法和设备,更具体地说,涉及一种用于配置在单指令多数据(SIMD)处理器中使用的动态数据的方法和设备。
背景技术
单指令多数据(SIMD)处理器用于通过使用单指令同时处理多数据来增强处理能力。
SIMD方案被用于增强各种处理器(例如,中央处理单元(CPU)、图形处理单元(GPU)等)的性能。CPU和GPU可以是采用了SIMD方案的SIMD处理器的示例。在服务器、膝上型计算机、桌上型计算机和诸如平板电脑和电话的移动计算装置中使用CPU、GPU等。
为了在SIMD处理器中处理数据,需要将通过指令处理的多数据进行配置。SIMD处理器可使用单指令处理多数据,以增强计算机系统的性能。
基于SIMD处理器的特性,可支持适合于处理数据的数据格式。
发明内容
在一个或多个实施例的方面中,提供了一种由编译设备通过编译源代码产生二进制代码的方法,所述方法包括:从多个数据格式中选择适合于处理器的数据格式,所述处理器被用于执行二进制代码;产生用于使用所述选择的数据格式处理数据的二进制代码。
所述方法还可包括:产生表示所述选择的数据格式的信息。
处理器可以是单指令多数据(SIMD)处理器。
处理器可使用所述多个数据格式中的每个数据格式来使用SIMD方案并行处理数据。
所述多个数据格式可包括结构数组(AoS)格式和数组结构(SoA)格式中的至少一个。
所述方法还可包括:使用处理器执行二进制代码。
所述执行的步骤可包括:基于所述选择的数据格式加载数据;通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据;基于所述选择的数据格式来存储所述处理的数据。
所述方法还可包括:产生表示所述选择的数据格式的信息;使用处理器基于所述信息执行二进制代码。
所述选择的步骤可包括:预测所述多个数据格式中的每个数据格式的性能;基于预测的性能从所述多个数据格式中选择提供最佳性能的数据格式作为适合于处理器的数据格式。
在一个或多个实施例的方面中,提供了一种由执行设备执行二进制代码的方法,所述方法包括:接收二进制代码和表示选择的数据格式的信息;使用处理器执行二进制代码,其中,从由处理器支持的多个数据格式中选择所述数据格式。
所述执行的步骤可包括:基于所述选择的数据格式加载数据;通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据;基于所述选择的数据格式存储所述处理的数据。
在一个或多个实施例的方面中,提供了一种计算机系统,包括:编译设备,用于从多个数据格式中选择适合于处理器的数据格式,并产生使用选择的数据格式的二进制代码,其中,所述处理器被用于执行二进制代码,所述二进制代码用于处理数据;执行设备,用于使用处理器执行二进制代码。
编译设备可产生表示所述选择的数据格式的信息。
执行设备可使用处理器基于所述信息执行二进制代码。
在一个或多个实施例的方面中,提供了一种编译设备,包括:存储单元,用于存储源代码;处理器,用于从存储单元读取源代码,从多个数据格式中选择适合于执行设备的数据格式,并产生二进制代码,所述执行设备用于执行二进制代码,所述二进制代码用于使用所述选择的数据格式处理数据。
处理器可产生表示所述选择的数据格式的信息。
编译设备还可包括:收发器,用于将二进制代码和表示所述选择的数据格式的信息发送到执行设备。
执行设备的处理器可以是SIMD处理器。
执行设备的处理器可使用所述多个数据格式中的每个数据格式来使用SIMD方案并行处理数据。
所述多个数据格式可包括AoS格式和SoA格式中的至少一个。
在一个或多个实施例的方面中,提供了一种执行设备,包括:收发器,用于接收二进制代码和表示数据格式的信息;处理器,用于执行二进制代码,其中,从由处理器支持的多个数据格式中选择所述数据格式。
处理器可基于所述选择的数据格式加载数据,可通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据,并可基于所述选择的数据格式存储所述处理的数据。
根据一个或多个实施例的方面,提供了存储用于实现一个或多个实施例的方法的计算机可读指令的至少一个非暂时性计算机可读介质。
附图说明
从以下结合附图的示例实施例的描述中,这些和/或其他方面和优点将变得清楚并更易于理解,其中:
图1示出根据示例实施例的计算机系统的配置的示图;
图2示出图1的计算机系统的编译设备的框图;
图3示出图1的计算机系统的执行设备的框图;
图4示出根据示例实施例的结构数组(AoS)格式的示图;
图5示出根据示例实施例的数组结构(SoA)格式的示图;
图6示出根据示例实施例的执行使用AoS格式的处理时的性能的示图;
图7示出根据示例实施例的执行使用SoA格式的处理时的性能的示图;
图8示出图2的编译设备的处理器的框图;
图9示出根据示例实施例的用于处理图形的源代码的示图;
图10示出根据示例实施例的包括条件分支语句的源代码的示图;
图11示出图3的执行设备的处理器的示图;
图12示出根据示例实施例的二进制代码处理方法的流程图。
具体实施方式
现在将详细参照示例实施例,示例实施例的示例在附图中被示出,其中,相同标号始终表示相同元件。下面通过参照附图描述示例实施例以解释本公开。
在下文,像素的描述可应用于顶点。此外,顶点的描述可应用于像素。
图1示出根据示例实施例的计算机系统100的配置的示图。
图1的计算机系统100可在对源代码的编译期间预先分析源代码中的算法的特性。计算机系统100可基于该分析的结果选择用于并行处理的有效数据格式。可通过使用选择的数据格式的并行处理方案(并行处理配置)来使计算机系统100的处理能力最大化。在该情况下,并行处理方案可包括例如单指令多数据(SIMD)方案(单指令多数据(SIMD)配置)的并行处理。算法的特性的示例可包括可应用SIMD处理的指令、指令执行的条件、执行依赖于条件状态的指令或指令块。因此,分支是算法的特性。
如图1中所示,计算机系统100可包括编译设备110和执行设备120。
编译设备110可通过编译源代码来产生二进制代码。例如,编译设备110可以是用于通过执行编译器而基于源代码来产生二进制代码的计算机。
编译设备110可从多个数据格式中选择适合于可用于执行二进制代码的执行设备120或处理器的数据格式。编译设备110可通过编译源代码来产生用于使用选择的数据格式处理数据的二进制代码,并可产生表示选择的数据格式的信息。在此情况下,执行设备120的处理器可用于执行二进制代码。执行设备120的处理器可包括例如可采用SIMD方案(配置)的中央处理单元(CPU)或图形处理单元(GPU)。
编译设备110可向执行设备120提供产生的二进制代码和产生的信息。
执行设备120可执行二进制代码。执行设备120可以是例如用于执行二进制代码的计算机。执行设备120可使用执行设备120的处理器基于表示选择的数据格式的信息而执行二进制代码。
编译设备110和执行设备120可在物理上被配置为单个设备。
图2示出图1的编译设备110的框图。
在图2中,编译设备110可包括处理器210、存储单元220和收发器230。
存储单元220可存储源代码和二进制代码。
处理器210可通过编译源代码产生二进制代码和表示数据格式的信息。处理器210可从存储单元220读取源代码。处理器210可将产生的二进制代码和产生的信息存储在存储单元220中。
处理器210可确定与输入到处理器210的源代码相应的最有效的数据格式。处理器210可从多个数据格式中选择适合于可用于执行二进制代码的执行设备120或处理器的数据格式。处理器210可通过编译源代码产生用于使用选择的数据格式处理数据的二进制代码,并可产生表示选择的数据格式的信息。在此情况下,执行设备120的处理器可用于执行二进制代码。
收发器230可将二进制代码和表示数据格式的信息发送到执行设备120。
图3示出图1的执行设备120的框图。
在图3中,执行设备120可包括处理器310和收发器320。
收发器320可从编译设备110接收代码和表示数据格式的信息。
处理器310可包括例如可采用SIMD方案(配置)的CPU或GPU。处理器310可基于表示数据格式的信息执行二进制代码。在服务器、膝上型计算机、桌上型计算机和诸如平板电脑和电话的移动计算装置中使用CPU、GPU等。
多个数据格式中的每个可对应于组合将要被处理器310处理的数据的方式。处理器310可使用多个数据格式中的每个来通过使用SIMD方案(配置)并行处理数据。
所述多个数据格式可包括结构数组(AoS)格式和数组结构(SoA)格式中的至少一个。AoS格式可表示在AoS方案(AoS配置)中使用的数据格式,SoA格式可表示在SoA方案(SoA配置)中使用的数据格式。下面将分别参照图4和图5来进一步描述AoS格式和SoA格式。
此外,由处理器310使用的多个数据格式还可包括标量格式。标量格式可不采用针对处理器310的SIMD架构的格式。针对SIMD架构的格式可包括例如AoS格式、SoA格式等。
可在使用包括AoS格式、SoA格式等的SIMD数据格式没有益处时,或者在使用SIMD格式的包括计算时间或计算功率的额外成本(额外资源)大于使用SIMD格式的益处时,由处理器310选择标量格式。因为不是所有数据或程序指令都可适合于或有利于使用SIMD指令进行处理,因此可使用标量格式。
可由处理器310支持多个数据格式中的每个数据格式。处理器310可被设计为同时或选择性地处理AoS格式、SoA格式等。此外,处理器310可被设计为在使用包括AoS格式、SoA格式等的SIMD格式没有益处时,或者在使用SIMD格式的包括计算时间或计算功率的额外成本(额外资源)大于使用SIMD格式的益处时,选择性地处理标量格式。
表示选择的数据格式的信息可包括一个或多个比特。例如,当表示选择的数据格式的信息的二进制值为“00”时,可确定选择了标量格式。当表示选择的数据格式的信息的二进制值为“01”时,可确定选择了AoS格式。此外,当表示选择的数据格式的信息的二进制值为“10”时,可确定选择了SoA格式。此外,当表示选择的数据格式的信息的二进制值为“11”时,可确定选择了另一SIMD格式。
图4示出根据示例实施例的AoS格式的示图。
可在三维(3D)图形领域中使用AoS方案(AoS配置)。
在AoS方案中,可以以单结构组合图形对象的颜色或位置,并且所述结构可被同时处理。在此情况下,图形对象可以是例如像素或顶点。位置的要素可以是例如x坐标值、y坐标值、z坐标值和w坐标值。颜色的要素可以是例如红色(R)、绿色(G)、蓝色(B)和阿尔法(A)。
在图4中,每行可对应于执行指令,每列可表示由执行设备120的处理器310基于对应于每行的指令所处理的数据。例如,当处理器310使用SIMD方案同时处理32比特数据时,四行中的每行可表示通过SIMD方案处理的8比特数据。
例如,在图4中,第一行中的'x1'、'y1'、'z1'和'w1'可分别表示通过第一指令处理的第一像素的x坐标值、y坐标值、z坐标值和w坐标值。类似地,第二行、第三行和第四行的符号可分别表示通过第二指令、第三指令和第四指令处理的第二像素、第三像素和第四像素的坐标值。
当使用AoS方案时,处理器310可同时处理单个像素的x、y、z和w中的每个的操作,并可顺序处理多个像素中的每个像素的操作。AoS方案的优点在于,仅将一个指令用于像素的所有(或许多)元素(例如,x、y、z和w)。当使用AoS方案时,与一个SIMD指令相关联的像素的数量小于与当使用SoA时的指令相关联的像素的数量。
AoS方案可具有自然地处理3D图形中的数据的优点。在3D图形中,AoS方案可用于自然地表现像素的颜色和四维(4D)位置。然而,AoS方案的缺点在于,当在3D图形的操作中没有使用所有要素时AoS方案的效率低。例如,当在AoS方案中单指令没有同时应用于像素的四个要素时,执行设备120的效率会降低。更具体地说,在一些应用中,可不使用AoS方案中的w坐标值,但是由于用于执行AoS格式的代码的SIMD方案是用于同时处理x值、y值、z值和w值的SIMD配置,因此必须为w值分配槽位(slot)。因此,在一些应用中,w值可能成为冗余值,从而在3D图形的操作中没有使用所有要素。
图5示出根据示例实施例的SoA格式的示图。
SoA方案(SoA配置)可用于3D图形领域。
在SoA方案中,可在单结构中组合需要由执行设备120的处理器310处理的每个像素或顶点的要素,并且所述结构可被同时处理。要素可以是例如位置的要素或颜色的要素。像素的位置可包括例如x、y、z或w的要素。像素的颜色可包括例如R、G、B或A的要素。
在图5中,每行可对应于执行指令,每列可表示由处理器310基于对应于每行的指令所处理的数据。例如,当处理器310使用SIMD方案同时处理32比特数据时,四行中的每行可表示通过SIMD方案处理的8比特数据。
例如,在图5中,第一行中的'x1'、'x2'、'x3'和'x4'可分别表示由第一指令处理的第一像素至第四像素中的每个像素的x坐标值。此外,第二行中的'y1'、'y2'、'y3'和'y4'可分别表示由第二指令处理的第一像素至第四像素中的每个像素的y坐标值。此外,第三行中的'z1'、'z2'、'z3'和'z4'可分别表示由第三指令处理的第一像素至第四像素中的每个像素的z坐标值。此外,第四行中的'w1'、'w2'、'w3'和'w4'可分别表示由第四指令处理的第一像素至第四像素中的每个像素的w坐标值。
SoA方案的优点在于,当处理器310对多个像素或多个顶点执行相同指令时,SoA方案可将执行设备120的效率增加到最大水平。例如,当相同操作被应用于单个数组时,SoA方案可很有效地使用并行指令执行相同操作。在此情况下,数组可以是像素等的数组。例如,在不包括w值的应用中,不用必须为w值分配槽位。而是,可使用SoA方案并行地处理另一组x值、y值或z值。然而,当在SoA方案中由于执行代码中的条件语句而发生分支时,会难以控制数据处理,并且执行设备120的性能会降低。例如,当基于SoA方案中的条件执行应用于数组的一部分的操作时,执行设备120的性能会降低。
如图6和图7中所示,可将AoS方案的性能和SoA方案的性能进行比较。
参照图6和图7,执行设备120的处理器310可使用单指令同时处理最多16个数据。图6和图7分别示出当AoS方案被用于处理数据时的操作流,以及当SoA方案被用于处理数据时的操作流。
将参照图6描述使用AoS方案执行处理的性能。
当使用AoS方案时,处理器310可同时处理四个像素中的每个像素的x坐标值、y坐标值、z坐标值和w坐标值。然而,如图6中所示,当实际处理像素的x坐标值、y坐标值、z坐标值时,在由指令处理的16个数据中可能只有12个数据是有效的。
在图6中,处理器310可通过三个阶段执行12个像素中的每个像素的x坐标值、y坐标值和z坐标值的操作,其中,第一个四个像素对应于第一阶段、中间的四个像素对应于第二阶段,最后的四个像素对应于第三阶段。此外,在图6中,示出三种不同类型的线。图6中的每种类型的线可表示单个SIMD指令的目标。在图6的示例中,相同操作被应用于所有x坐标,相同操作被应用于所有y坐标,并且相同操作被应用于所有z坐标。然而,应用于所有x坐标的操作可与应用于所有y坐标的操作不同,而应用于所有y坐标的操作可与应用于所有z坐标的操作不同。然而,两个或更多个操作可以是相同操作。
将参照图7描述使用SoA方案执行处理的性能。
当使用SoA方案时,处理器310可同时处理最多16个像素的x坐标值、y坐标值、z坐标值或w坐标值。然而,如图7中所示,当实际处理12个像素的x坐标值、y坐标值、z坐标值时,在由指令处理的16个数据中可能仅有12个数据有效。
在图7中,处理器310可通过三个阶段执行12个像素的x坐标值、y坐标值和z坐标值的操作,其中,第一阶段执行所有x像素,第二阶段执行所有y像素,第三阶段执行所有z像素。在图7中,示出了三种不同类型的线。图7中的每种类型的线可表示单个SIMD指令的目标。在图7的示例中,相同操作被应用于所有x坐标,相同操作被应用于所有y坐标,并且相同操作被应用于所有z坐标。然而,应用于所有x坐标的操作可与应用于所有y坐标的操作不同,而应用于所有y坐标的操作可与应用于所有z坐标的操作不同。然而,两个或更多个操作可以是相同操作。
图8示出编译设备110的处理器210的框图。
处理器210可区分启用基于用于有效使用SIMD方案的SIMD处理器的执行设备120的数据格式与其他数据格式。
在图8中,处理器210可包括比较器840和多个分析器。所述多个分析器可包括例如第一分析器810、第二分析器820和第三分析器830。然而,实施例不限于三个分析器,并且额外的分析器可包括在处理器210中。
多个分析器可分别动态地预测多个数据格式的性能。例如,当由执行设备120执行使用数据格式处理数据的二进制代码时,数据格式的性能可以是处理器210的性能或二进制代码的性能。
例如,第一分析器810可以是标量分析器。第一分析器810可通过预测用于使用标量方案处理二进制代码的处理性能(处理效率)来分析执行设备120的性能,其中,可通过执行设备120执行对二进制代码的处理。第二分析器820可以是例如AoS分析器。第二分析器820可通过预测用于使用AoS方案处理二进制代码的处理性能(处理效率)来分析执行设备120的性能,其中,可通过执行设备120执行对二进制代码的处理。此外,第三分析器830可以是例如SoA分析器。第三分析器830可通过预测用于使用SoA方案处理二进制代码的处理性能(处理效率)来分析执行设备120的性能,其中,可通过执行设备120执行对二进制代码的处理。
多个分析器可使用源代码产生用于每个数据格式的二进制代码。多个分析器可使用产生的二进制代码分析和预测执行设备单元的性能。
为了分析和预测性能,编译操作的分析方案可应用于每个二进制代码。具体地说,多个分析器中的每个分析器可将编译操作的分析方案应用于由多个分析器中的每个分析器使用多个数据格式之一产生的二进制代码,并可分析或预测产生的二进制代码的性能。编译操作的分析方案可包括1)指令利用、2)由条件分支导致的额外成本(额外资源)中的至少一个。例如,多个分析器可基于通常使用的指令的利用并基于由条件分支导致的额外成本来预测性能。额外成本可以是额外计算时间或额外计算功率。将参照图9和图10进一步描述性能预测。
比较器840可基于由多个分析器分析或预测的多个数据格式的性能,从多个数据格式中选择提供最佳性能或最优性能的数据格式作为适合于可用于执行二进制代码的处理器310或执行设备120的数据格式。
多个数据格式可向比较器840提供二进制代码。比较器840可从二进制代码中选择与选择的数据格式相应的二进制代码。比较器可输出选择的二进制代码。
可选择地,编译设备110的用户(而非多个分析器和/或比较器840)可从多个数据格式中选择适合于可用于执行二进制代码的处理器310或执行设备120的单个数据格式。处理器210可产生用于使用由用户选择的数据格式处理数据的二进制代码,并可产生表示选择的数据格式的信息。在此情况下,用户可以是例如源代码的编程人员。
多个分析器和比较器840可分别表示由处理器210执行的函数、库、服务、处理、线程或模块。
图9示出根据示例实施例的用于处理图形的源代码的示图。
当图9的源代码被编译并且二进制代码被产生时,图8的比较器840可使用指令利用来预测性能。
指令利用可表示用于每个要素的资源的利用。
类似于在GPU中经常使用的像素着色器,在表示4D的要素中可主要使用仅与3D相应的要素。当使用AoS方案时,如图6中所示,只可使用可用资源的75%。相反,当使用SoA方案时,可使用全部的可用资源。因此,可使用SoA方案更有效地处理图9的源代码。
图10示出根据示例实施例的包括条件分支语句的源代码的示图。
当图10的源代码被编译并且二进制代码被产生时,图8的比较器840可使用由源代码中的条件分支导致的额外成本来预测性能。
条件分支语句可以是在用于并行处理的方案中最难的问题之一。可基于运行时间来确定预定指令是否基于给定条件被执行,但是难以预先预测预定指令是否将被执行。
已经对于通过预测指令是否将被执行来提高性能进行了大量研究。比较器840可使用各种传统研究结果来计算由条件分支导致的额外成本。
在下文,将描述计算图10的包括简单条件分支的源代码的额外成本的示例。
当使用AoS方案时,可通过分支仅执行函数一次。在此情况下,可执行函数“func_A”或“func_B”。
当使用SoA方案时,在最坏的情况下,可执行函数“func_A”和“func_B”两者。与SoA方案相应的分析器可分析每个函数所需要的资源。基于分析的结果,与SoA方案相应的分析器可为当执行所有函数时的指令利用和当仅执行单个函数时的指令利用中的每个指令利用替换合适的概率函数,并可计算额外成本。在此情况下,与SoA方案相应的分析器可以是例如多个分析器中的用于使用SoA格式预测二进制代码的性能的分析器。
多个分析器可分别计算由使用相应的数据格式的二进制代码的条件分支导致的额外成本。比较器840可比较多个数据格式的额外成本,并可从多个数据格式中选择适合于将执行二进制代码的处理器310的数据格式。
图11示出图3的处理器310的示图。
执行设备120的处理器310可以是例如动态SIMD架构的处理器。在图11中,处理器310可包括指令获取单元1110、数据加载单元1120和数据存储单元1130。二进制代码可被提供给指令获取单元1110,表示选择的数据格式的信息可被提供给数据加载单元1120和数据存储单元1130。
可通过将基于选择的数据格式动态地控制数据的加载和存储的函数添加到现有的SIMD处理器来配置处理器310。可通过转换指令水平的加载和/或存储器的格式来基于处理器执行动态控制。此外,可通过转换格式并将格式存储在连接的硬件部分接口或功能接口部分来执行动态控制。
处理器310可使用相同方案处理针对算法操作的指令,而不管选择的数据格式如何。在此情况下,算法操作可包括例如“加法”、“乘法”等。
处理器310可提供与加载操作和存储操作关联的匹配于选择的数据格式的处理方案。如图4和图5中所示,AoS格式和SoA格式之间的关系可对应于转置矩阵的变形。换句话说,加载指令和存储指令可被设计为实现转置。处理器310可基于选择的数据格式而支持操作所需要的数据的动态准备。此外,处理器310可基于将被处理的算法的特性来转换将被处理的数据的输入格式和结果格式。在示例中,当处理器310是CPU时,可不确定将在处理器310中执行的输入和/或输出。当没有确定输入和/或输出时,格式可被转换为加载和/或存储指令水平,并且操作可基于数据格式被执行。在另一示例中,当处理器310是GPU时,可确定将在处理器310中执行的输入和/或输出。当确定了输入和/或输出时,处理器310可在着色器处理输入数据之前转换输入数据的数据格式,并可准备将被处理的数据。此外,处理器310可通过使用没有任何改变的现有指令来处理内部算法操作。
指令获取单元1110可从二进制代码获取指令。
数据加载单元1120可基于选择的数据格式加载数据。例如,数据的加载可表示将数据放置在处理器310的寄存器的操作数部分中。寄存器可包括多个操作数部分。寄存器可以是例如累加器。操作数部分可包括比特。
当数据被加载时,处理器310可通过将由获取的指令指示的操作应用于加载的数据来处理加载的数据。例如,处理器310可将由获取的指令指示的操作应用于加载的数据,并可将应用了所述操作的数据(即,更新的数据)存储在寄存器或累加器中。存储了更新的数据的寄存器或累加器可以与加载了数据的寄存器或累加器相同或不同。
数据存储单元1130可基于选择的数据格式存储处理的数据。处理的数据的存储可指示将寄存器或累加器中的数据存储在存储器中。
图12示出根据示例实施例的二进制代码处理方法的流程图。
参照图12,在操作1210,编译设备110的处理器210可从编译设备110的存储单元220读取源代码。
在操作1220,处理器210可从多个数据格式中选择适合于可用于执行二进制代码的执行设备120的处理器310的数据格式。操作1220可包括操作1222和操作1224。
在操作1222,处理器210的多个分析器可分别预测多个数据格式的性能。
在操作1224,处理器210的比较器840可基于预测的多个数据格式的性能,从多个数据格式中确定提供最佳性能的数据格式作为适合于可用于执行二进制代码的处理器310的数据格式。
可由处理器310使用多个数据格式中的每个数据格式来使用SIMD方案对数据进行并行处理。然而,如果使用在SIMD方案中使用的数据格式没有益处,则可使用标量格式来处理数据。虽然没有在图12中示出,但是执行设备120的收发器320可将表示可由处理器310处理的多个数据格式的信息发送到编译设备110的收发器230。
在操作1230,处理器210可产生用于使用选择的数据格式处理数据的二进制代码。
在操作1240,处理器210可产生表示选择的数据格式的信息。
在操作1250,收发器230可将二进制代码发送到收发器320。
在操作1255,收发器230可将表示选择的数据格式的信息发送到收发器320。可同时执行操作1250和操作1255。
在操作1260,处理器310可执行二进制代码。操作1260可包括操作1262、1264和1266。
在操作1262,执行设备120的数据加载单元1120可基于选择的数据格式加载数据。
在操作1264,处理器310可通过将由指令指示的操作应用于加载的数据来处理加载的数据。
在操作1266,执行设备120的数据存储单元1130可基于选择的数据格式存储处理的数据。
上述操作1210至操作1266中的至少一个可以以不同于图12中示出的顺序来执行,或者可以并行执行。
示例实施例可被应用到用于基于SIMD处理器执行操作的设备和系统,例如渲染系统(诸如开放式图形库(OpenGL)、OpenGL|ES等)、并行计算系统(诸如开放式计算语言(OpenCL)、统一计算设备架构(CUDA)等)。
根据示例实施例,可通过编译设备自动处理与数据格式相关联的作业,因此可开发一种便于编程人员的开发环境,并可增强执行设备的处理器的效率。
此外,根据示例实施例,即使在标准语言(诸如OpenGL、OpenGL|ES等)的数据格式不能由编程人员转换时,也可转换标准语言的内部数据格式。因此,可增强执行设备的处理器的效率。
此外,当增强了处理器的效率时,可缩短处理时间,并还可减少使用的功率的量。
根据示例实施例的方法可被记录在非暂时性计算机可读介质中,所述非暂时性计算机可读介质包括用于实现由计算装置(诸如计算机)实施的各种操作的程序(计算机可读)指令。计算装置可具有一个或多个处理器。所述介质还可单独包括数据文件、数据结构等或者包括与程序指令结合的数据文件、数据结构等。记录在介质上的程序指令可以是为了示例实施例的目的专门设计和构建的程序指令,或者可以是计算机软件领域的技术人员公知和可用的程序指令。非暂时性计算机可读介质的示例包括:磁介质(诸如硬盘、软盘和磁带);光介质(诸如CD ROM盘和DVD);磁光介质(诸如光盘);以及被专门配置为存储和执行程序指令的硬件装置(诸如只读存储器(ROM)、随机存取存储器(RAM)、闪速存储器等)。程序指令的示例包括机器代码(诸如由编译器产生的)和包含可由计算机使用解释器执行的更高级代码的文件两者。非暂时性计算机可读介质还可以是分布网络,从而程序指令以分布方式被存储和执行。程序指令可由一个或多个处理器或处理装置执行。计算机可读介质还可以以至少一个专用集成电路(ASIC)或场可编程门阵列(FPGA)来实现。描述的硬件装置可被配置为用作用于执行上述示例实施例的操作的一个或多个软件模块,反之亦然。
虽然已经示出和描述了示例实施例,但是本领域技术人员应清楚,在不脱离本公开的原理和精神的情况下,可对这些示例实施例进行改变,本公开的范围由权利要求及其等同物限定。
Claims (18)
1.一种由编译设备通过编译源代码产生二进制代码的方法,所述方法包括:
基于针对处理器预测的处理性能从多个数据格式中选择数据格式,所述处理器被用于执行二进制代码;
产生用于使用所述选择的数据格式处理数据的二进制代码,
其中,所述选择的步骤包括:
预测所述多个数据格式中的每个数据格式的性能,
基于预测的每个数据格式的性能从所述多个数据格式中选择提供最佳性能的数据格式。
2.如权利要求1所述的方法,还包括:
产生表示所述选择的数据格式的信息。
3.如权利要求1所述的方法,其中:
处理器包括单指令多数据SIMD处理器,
处理器使用所述多个数据格式中的每个数据格式来使用SIMD方案并行处理数据。
4.如权利要求1所述的方法,其中,所述多个数据格式包括结构数组AoS格式和数组结构SoA格式中的至少一个。
5.如权利要求1所述的方法,还包括:
使用处理器执行二进制代码。
6.如权利要求5所述的方法,其中,所述执行的步骤包括:
基于所述选择的数据格式加载数据;
通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据;
基于所述选择的数据格式来存储所述处理的数据。
7.如权利要求1所述的方法,还包括:
产生表示所述选择的数据格式的信息;
使用处理器基于所述产生的信息执行二进制代码。
8.一种由执行设备执行二进制代码的方法,所述方法包括:
基于预测的处理性能接收二进制代码和表示选择的数据格式的信息;
使用处理器执行二进制代码,
其中,基于预测的每个数据格式的性能,从由处理器支持的多个数据格式中选择具有预测的最佳处理性能的数据格式。
9.如权利要求8所述的方法,其中,所述执行的步骤包括:
基于所述选择的数据格式加载数据;
通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据;
基于所述选择的数据格式存储所述处理的数据。
10.一种计算机系统,包括:
编译设备,用于基于针对处理器预测的处理性能从多个数据格式中选择数据格式,并通过编译源代码来产生使用所述选择的数据格式的二进制代码;
执行设备,用于通过使用处理器执行所述产生的二进制代码,
其中,编译设备预测所述多个数据格式中的每个数据格式的性能,基于预测的每个数据格式的性能从所述多个数据格式中选择提供最佳性能的数据格式。
11.如权利要求10所述的计算机系统,其中:
编译设备产生表示所述选择的数据格式的信息,
执行设备使用处理器基于所述信息执行二进制代码。
12.一种编译设备,包括:
存储单元,用于存储源代码;
处理器,用于从存储单元读取源代码,基于针对执行设备预测的处理性能从多个数据格式中选择数据格式,并产生二进制代码,所述执行设备用于执行二进制代码,所述二进制代码用于使用所述选择的数据格式处理数据,
其中,处理器预测所述多个数据格式中的每个数据格式的性能,基于预测的每个数据格式的性能从所述多个数据格式中选择提供最佳性能的数据格式。
13.如权利要求12所述的编译设备,其中,处理器产生表示所述选择的数据格式的信息。
14.如权利要求13所述的编译设备,还包括:
收发器,用于将二进制代码和表示所述选择的数据格式的信息发送到执行设备。
15.如权利要求12所述的编译设备,其中:
执行设备的处理器包括单指令多数据SIMD处理器,
执行设备的处理器使用所述多个数据格式中的每个数据格式来使用SIMD方案并行处理数据。
16.如权利要求12所述的编译设备,其中,所述多个数据格式包括结构数组AoS格式和数组结构SoA格式中的至少一个。
17.一种执行设备,包括:
收发器,用于接收二进制代码和表示选择的数据格式的信息,其中,基于预测的处理性能选择所述选择的数据格式;
处理器,用于执行二进制代码,
其中,从由处理器支持的多个数据格式中选择具有预测的最佳处理性能的数据格式。
18.如权利要求17所述的执行设备,其中,处理器基于所述选择的数据格式加载数据,通过将由指令指示的操作应用于所述加载的数据来处理所述加载的数据,并基于所述选择的数据格式存储所述处理的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120089561A KR101893796B1 (ko) | 2012-08-16 | 2012-08-16 | 동적 데이터 구성을 위한 방법 및 장치 |
KR10-2012-0089561 | 2012-08-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103593221A CN103593221A (zh) | 2014-02-19 |
CN103593221B true CN103593221B (zh) | 2018-05-11 |
Family
ID=49000336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310350624.1A Active CN103593221B (zh) | 2012-08-16 | 2013-08-13 | 用于动态数据配置的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9342282B2 (zh) |
EP (1) | EP2698707B1 (zh) |
JP (1) | JP6375102B2 (zh) |
KR (1) | KR101893796B1 (zh) |
CN (1) | CN103593221B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102101834B1 (ko) | 2013-10-08 | 2020-04-17 | 삼성전자 주식회사 | 영상 처리 장치 및 방법 |
CN107491288B (zh) * | 2016-06-12 | 2020-05-08 | 合肥君正科技有限公司 | 一种基于单指令多数据流结构的数据处理方法及装置 |
JP6864224B2 (ja) | 2017-01-27 | 2021-04-28 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
JP7035751B2 (ja) * | 2018-04-12 | 2022-03-15 | 富士通株式会社 | コード変換装置、コード変換方法、及びコード変換プログラム |
KR102319115B1 (ko) * | 2020-02-05 | 2021-11-01 | 한국전자통신연구원 | 컨텍스트 스위칭에 영향받지 않는 하버드 아키텍처의 캐시 특성을 활용한 에뮬레이팅 환경 탐지 방법 및 그 시스템 |
CN112925523B (zh) * | 2021-03-02 | 2024-06-21 | 京东科技控股股份有限公司 | 对象比较方法、装置、设备及计算机可读介质 |
CN114298890B (zh) * | 2021-12-02 | 2024-01-30 | 格兰菲智能科技有限公司 | 数据处理装置及其方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101233488A (zh) * | 2005-07-29 | 2008-07-30 | 微软公司 | 作为数据对象的编译器支持程序 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862729B1 (en) * | 2000-04-04 | 2005-03-01 | Microsoft Corporation | Profile-driven data layout optimization |
US7143404B2 (en) * | 2003-03-31 | 2006-11-28 | Intel Corporation | Profile-guided data layout |
US7415703B2 (en) | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US8484441B2 (en) | 2004-03-31 | 2013-07-09 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths |
US20050289329A1 (en) | 2004-06-29 | 2005-12-29 | Dwyer Michael K | Conditional instruction for a single instruction, multiple data execution engine |
FR2895104A1 (fr) | 2005-12-19 | 2007-06-22 | Dxo Labs Sa | Procede pour fournir des donnees a un moyen de traitement numerique |
US20080162522A1 (en) | 2006-12-29 | 2008-07-03 | Guei-Yuan Lueh | Methods and apparatuses for compaction and/or decompaction |
US8145625B2 (en) * | 2007-07-13 | 2012-03-27 | Intel Corporation | Methods and systems for optimizing data accesses |
US8122442B2 (en) * | 2008-01-31 | 2012-02-21 | Oracle America, Inc. | Method and system for array optimization |
JP5077952B2 (ja) * | 2008-04-08 | 2012-11-21 | 日本電信電話株式会社 | 処理装置、処理方法およびそのプログラム |
GB0809189D0 (en) | 2008-05-20 | 2008-06-25 | Aspex Semiconductor Ltd | Improvements relating to single instruction multiple data (SIMD) architectures |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
GB2464292A (en) | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8418155B2 (en) | 2009-02-10 | 2013-04-09 | International Business Machines Corporation | Generating parallel SIMD code for an arbitrary target architecture |
US8484276B2 (en) | 2009-03-18 | 2013-07-09 | International Business Machines Corporation | Processing array data on SIMD multi-core processor architectures |
US9569270B2 (en) | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8539201B2 (en) | 2009-11-04 | 2013-09-17 | International Business Machines Corporation | Transposing array data on SIMD multi-core processor architectures |
US8910135B2 (en) * | 2010-11-02 | 2014-12-09 | Advanced Micro Devices, Inc. | Structure layout optimizations |
US9389845B2 (en) * | 2011-10-24 | 2016-07-12 | Infosys Limited | System and method for dynamically generating a user personalized downloadable executable file |
-
2012
- 2012-08-16 KR KR1020120089561A patent/KR101893796B1/ko active IP Right Grant
-
2013
- 2013-08-08 US US13/962,364 patent/US9342282B2/en active Active
- 2013-08-13 CN CN201310350624.1A patent/CN103593221B/zh active Active
- 2013-08-15 JP JP2013168838A patent/JP6375102B2/ja active Active
- 2013-08-16 EP EP13180661.4A patent/EP2698707B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101233488A (zh) * | 2005-07-29 | 2008-07-30 | 微软公司 | 作为数据对象的编译器支持程序 |
Non-Patent Citations (1)
Title |
---|
《Quasidynamic Layout Optimizations for Improving Data Locality》;Ismail Kadayif,et al;《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》;20041130;第15卷(第11期);摘要,第996第左栏第1-2段,第1000页右栏第4段,第1003页左栏第3-4段 * |
Also Published As
Publication number | Publication date |
---|---|
JP6375102B2 (ja) | 2018-08-15 |
CN103593221A (zh) | 2014-02-19 |
EP2698707A1 (en) | 2014-02-19 |
KR101893796B1 (ko) | 2018-10-04 |
US9342282B2 (en) | 2016-05-17 |
US20140052967A1 (en) | 2014-02-20 |
KR20140023561A (ko) | 2014-02-27 |
EP2698707B1 (en) | 2016-05-25 |
JP2014038624A (ja) | 2014-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103593221B (zh) | 用于动态数据配置的方法和设备 | |
EP3420527B1 (en) | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform | |
CN103608777B (zh) | 图形处理单元中的存储器共享 | |
CN102576314B (zh) | 具有横跨多个处理器的数据并行线程之映射处理逻辑 | |
CN106462393B (zh) | 用于统一应用编程接口和模型的系统和方法 | |
US8990827B2 (en) | Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels | |
CN109144702B (zh) | 一种用于行列并行粗粒度可重构阵列多目标优化自动映射调度方法 | |
EP2656208B1 (en) | Agile communication operator | |
EP1026585A2 (en) | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications | |
CN109871936A (zh) | 用于处理神经网络中的卷积运算的方法和装置 | |
US20200387564A1 (en) | Integer matrix multiplication engine using pipelining | |
CN103946795B (zh) | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 | |
CN104731561B (zh) | 在simd处理单元中的任务执行 | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
Neely et al. | Application modernization at LLNL and the Sierra center of excellence | |
Haris et al. | SECDA-TFLite: A toolkit for efficient development of FPGA-based DNN accelerators for edge inference | |
Rivi et al. | Gpu accelerated particle visualization with splotch | |
US20230128127A1 (en) | Compute element processing using control word templates | |
EP4384902A1 (en) | Parallel processing architecture using distributed register files | |
KR20230101851A (ko) | 컴파일러를 이용한 고도의 병렬 처리 아키텍처 | |
Siddiqui et al. | Design space exploration of embedded applications on heterogeneous cpu-gpu platforms | |
Krömer et al. | An implementation of differential evolution for independent tasks scheduling on GPU | |
US20220308872A1 (en) | Parallel processing architecture using distributed register files | |
Diakité et al. | Assessing new approaches to schedule a batch of identical intree-shaped workflows on a heterogeneous platform | |
US20230221931A1 (en) | Autonomous compute element operation using buffers |
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 |