当前位置: 首页 > 专利查询>英特尔公司专利>正文

减少应用中对共享存储器单元执行的顺序操作的数量制造技术

技术编号:10386263 阅读:121 留言:0更新日期:2014-09-05 12:28
提供用于减少应用中对共享存储器单元执行的顺序操作(如原子操作)的数量的方法和装置。转换单元可检测应用中对相同存储器执行的多个原子操作,并将多个原子操作替换为等效的单个原子操作。在一些实施例中,该应用包括着色器代码。在一些实施例中,多个原子操作中的每一个将存储在同一存储器中的值增加一更新量。转换单元可计算所有原子操作的部分前缀总和,并将多个原子操作替换为单个原子操作,以将存储在存储器中的值加上一所述更新量的和。

【技术实现步骤摘要】
【国外来华专利技术】【专利摘要】提供用于减少应用中对共享存储器单元执行的顺序操作(如原子操作)的数量的方法和装置。转换单元可检测应用中对相同存储器执行的多个原子操作,并将多个原子操作替换为等效的单个原子操作。在一些实施例中,该应用包括着色器代码。在一些实施例中,多个原子操作中的每一个将存储在同一存储器中的值增加一更新量。转换单元可计算所有原子操作的部分前缀总和,并将多个原子操作替换为单个原子操作,以将存储在存储器中的值加上一所述更新量的和。【专利说明】减少应用中对共享存储器单元执行的顺序操作的数量背景本专利技术涉及减少应用中对共享存储器单元执行的顺序操作(如原子操作)的数量。相对于传统顺序处理,并行处理可被应用在计算机系统中以获得更快的应用程序执行。例如,单指令多数据(SMD)指令是并行处理的示例,在该并行处理过程中,单个指令同时运行在多个数据上。这样的SMD指令可以帮助加速应用程序中的数据处理,这些应用程序包括:多媒体、视频、音频的编码与解码、三维(3-D)图形和图像处理。然而,在支持并行处理的计算机系统中,访问计算机系统中的同一存储器单元的特定程序操作可能需要被同步以确保没有意外结果(例如,如果程序操作并行地访问同一存储器单元,会造成的数据损坏)。例如,程序操作需要被同步,因为可能需要在程序操作的存储器单元中存储的结果来执行另一个程序操作。对访问同一存储器单元的程序操作的同步可以通过将这些程序操作放在关键区域而实现。在关键区域里,操作按顺序执行(例如使用原子操作)而不是同时并行,以保证共享存储器单元被程序操作串行地访问,从而避免数据损坏或者其它意外结果。一般来说,原子操作可以是一个或更多的计算机操作(例如,读、改、然后写进存储器单元),这些计算机操作是计算机系统强制(例如,使用锁变量)在后续计算机操作的执行之前完成的操作。因此,通过将访问同一存储器单元的程序操作放在关键的区域,上述共享存储器单元被程序操作串行地访问从而避免了数据损坏或者其它意外结果。然而,访问同一存储器单元的同步程序操作可能会降低并行处理体系结构的效率。附图简要说明图1是示出减少应用程序中对共享存储器单元执行的顺序操作(如原子操作)的数量的示例性过程的框图;图2示出用于检测应用中对存储器执行的多个原子操作、并将这多个原子操作替换为等效的单个原子操作的示例性代码;图3是示出用于执行图1的示例过程100的示例性系统的框图;图4是示出当该应用包括着色器代码时可用于执行图1的示例性过程的示例性编译器系统的框图;图5是示出本专利技术的示例性系统的框图;以及图6是示例性小形状因数设备的框图,在其中可具体化图5的系统的多个组件。具体描述本专利技术的各种实现方式提供了减少应用中对共享存储器单元执行的顺序操作(如原子操作)的数量的方法和装置。图1展示了示例过程100,该过程减少应用中对共享存储器单元执行的顺序操作(如原子操作)的数量。该过程100可被实现为一组可执行的逻辑指令,该组可执行的逻辑指令存储在机器可读或者计算机可读存储介质(如随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),闪存,固件等等)、使用电路技术的固定功能的硬件(如专用集成电路(ASIC),互补金属氧化物半导体(CMOS)或晶体管一晶体管逻辑(TTL)技术)、或它们的任意组合中。例如,可通过任何一个或多个编程语言的组合来编写执行显示在过程100中的操作的计算机程序代码,编程语言包括:面向对象的编程语言(如C++等),或相似的传统面向过程的编程语言(如“C”编程语言或类似编程语言),或用于图形的编程语言(如高级着色器语言(HLSL)(通过微软DirectX),OpenGL着色器语言(GLSL)(通过0PENGL)),或是开放运算语言(OpenCL)。不仅如此,在一些实施例中,过程100的各个方面可以被实现为使用任何前述电路技术的嵌入式图形驱动器逻辑。在阶段105,将应用输入到转换单元。在一些实现方式中,该应用包括着色器代码,可将该着色器代码输入到诸如图形驱动器或OpenCL运行时驱动器之类的驱动器,例如,此驱动器包括转换单元。在一些实施例中,该应用程序由在计算机设备存储器中存储该应用程序的操作系统加载。被认为涵盖在本专利技术保护范围之内的计算设备包括个人计算机(PO、膝上型计算机、超级本、平板计算机、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、蜂窝电话/PDA结合体、电视、智能设备(例如,智能手机,智能平板,智能电视)、移动因特网设备(MID)、消息收发设备、数据通信设备等等。在一些实施例中,计算设备将包括:耦合到处理器的主存储器;由处理器执行的操作系统;和图形电路/处理器(如图形处理单元GPU)以将已编译的着色器代码指令存储在寄存器中以在显示器或屏幕上显示应用的对象。在一些实施例中,涵盖在本专利技术的保护范围内的计算设备包括:图形处理单元(GPGPU)上的通用计算。在阶段110,转换单元检测应用中的将对同一存储器执行的多个原子操作并将其替换为等效的单个原子操作。例如,在一些实施例中,在阶段105输入到转换单元的应用可以包括N个原子操作,这N个原子操作用于增加存储在地址上的值(例如,“在地址X上原子性地加B1 ”,“在地址X上原子性地加a2”,——,“在地址X上原子性地加aN”)。每一个原子操作可包括存储器读写操作。阶段110的转换单元可检测这些将对同一存储器地址X执行的原子操作并计算所有原子操作的部分前缀总和,将N个原子操作替换为单个原子操作,该单个原子操作将存储在地址X上的值增加N个增量的和。在一些实施例中,N等于SMD执行引擎宽度。因此,由于在SMDn机器上以锁步方式执行N个操作,所以可以计算出N个数据元素的局部部分前缀总和。因此,可计算局部部分前缀总和最大为SIMD的执行引擎长度(如在SMD16执行引擎中,是16个元素的前缀和)。因此,对由一个SMD执行引擎执行的数据计算局部部分前缀总和。图2展示了用于检测应用中对同一存储器执行的多个原子操作并将其替换为等效的单个原子操作的示例性代码。在阶段115,编译在阶段110转换的操作。在一些实现方式中,当经转换的应用程序包括着色器代码时,可以通过及时(JIT)编译器将经转换的操作编译成图形硬件的机器语言从而由图形电路(如GPU)执行。在一些实施例中,转换单元和编译器在驱动内部是一个整体。在一些实施例中,GPU包括转换单元和编译器。在阶段120,执行经编译的代码(例如在并行处理环境中)。在一些实现方式中,经编译的代码由GPU执行。图3展示了示例性系统300,其用于执行图1中的示例性过程100。该系统300包括处理器或中央处理单元(CPU)305。在一些实现方式中,系统300可包括多个处理器。所述CPU305可以通过CPU总线320耦合到总线控制器310。所述总线控制器310可包括存储器控制器315。在一些实现方式中,存储器控制器315可在总线控制器310外部。存储器控制器315通过存储器总线330将设备连接至系统存储器325。在一些实现方式中,所述系统存储器325可被描述为系统300的“主存储器”。在一些实现方式中,系统存储器325可存储将由处理器(如CPU305或图形电路340)执行的应用程序(本文档来自技高网...
减少应用中对共享存储器单元执行的顺序操作的数量

【技术保护点】
一种系统,包括:存储设备,用于存储应用;中央处理器,用于将所述应用从所述存储设备装载到转换单元;图形驱动器,包括所述转换单元和编译器,所述转换单元用于检测所述应用中的要对存储器执行的多个原子操作,并将所述应用中的所述多个原子操作替换为等效的单个原子操作以产生经转换的应用,所述编译器用于编译所述经转换的应用;以及图形处理器,用于执行所述经转换的应用。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:T·简扎克M·塔格斯基
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1