CN102047241B - 本地与全局数据共享 - Google Patents

本地与全局数据共享 Download PDF

Info

Publication number
CN102047241B
CN102047241B CN200980119960.7A CN200980119960A CN102047241B CN 102047241 B CN102047241 B CN 102047241B CN 200980119960 A CN200980119960 A CN 200980119960A CN 102047241 B CN102047241 B CN 102047241B
Authority
CN
China
Prior art keywords
thread
simd
privately owned
processor
processing unit
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
Application number
CN200980119960.7A
Other languages
English (en)
Other versions
CN102047241A (zh
Inventor
M·J·曼托
B·恩贝林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN102047241A publication Critical patent/CN102047241A/zh
Application granted granted Critical
Publication of CN102047241B publication Critical patent/CN102047241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

本发明揭露一种图形处理单元,该图形处理单元具有处理器,该处理器具有一个或多个SIMD处理单元,以及对应该一个或多个SIMD处理单元之一的本地数据共享,该本地数据共享包括供分配至一个或多个执行波阵面(wavefront)的各线程群组的一个或多个低延迟可访问存储区,以及全局数据共享,该全局数据共享包括供各线程群组的一个或多个低延迟存储区。

Description

本地与全局数据共享
技术领域
本发明一般涉及优化图形处理单元中执行线程之间的数据共享。
背景技术
图形处理单元(graphics processing unit;GPU)是为图形处理操作优化的专用集成电路。在执行具有苛刻的图形处理需求的应用,例如视频游戏应用,的计算设备中(例如个人电脑、渲染农场(rendering farm)或服务器、手持设备、数字电视等)经常包含有图形处理单元(GPU)。
为提升处理效率,图形处理单元(GPU)通常利用单指令多数据(single instruction multiple data;“SIMD”,或“向量”)指令执行并行线程,以实现数据级并行。这使得SIMD处理器能够例如通过对单个SIMD通道(lane)上的各像素运行独立的线程操作而对多个像素数据执行相同的指令。但是,在未执行计算复杂且成本昂贵的数据存储和检索指令的情况下,在任一SIMD通道内生成的数据通常无法被其他SIMD通道访问。
因此,需要提供一种改进技术,以实现SIMD通道之间的数据共享。
发明内容
本发明实施例包含一种图形处理单元,该图形处理单元包括:多个SIMD处理单元,各SIMD处理单元包括:多个线程处理器,多个通用寄存器(general purpose register;GPR)文件,各GPR文件与该多个线程处理器之一通信,以及本地数据共享(local data share;LDS),该本地数据共享与该多个线程处理器的各线程处理器通信;以及全局数据共享(global data share;GDS),该全局数据共享与该多个SIMD处理单元的各SIMD处理单元中该多个线程处理器的各线程处理器通信。
本发明实施例还包含一种制造方法,其包括多个SIMD处理单元,各SIMD处理单元包括:多个线程处理器,多个通用寄存器(GPR)文件,各GPR文件与该多个线程处理器之一通信,以及本地数据共享(LDS),该本地数据共享与该多个线程处理器的各线程处理器通信;以及形成全局数据共享(GDS),该全局数据共享与该多个SIMD处理单元的各SIMD处理单元中该多个线程处理器的各线程处理器通信。
本发明实施例还包含一种计算机可读介质,其上存储有计算机可执行指令,若由计算设备执行该些指令,则使该计算设备执行一种方法,该方法包括:将图像的一组像素分配至一组SIMD处理器;将该组像素的像素子集分配至各该组SIMD处理器的各SIMD处理器的各处理通道;将该像素子集存储在与各处理通道关联的通用寄存器(GPR)文件中;基于该像素子集计算逐通道(per-lane)本地结果;以及将该逐通道本地结果自该GPR文件写入与该处理通道关联的本地数据共享(LDS)的私有区域,该LDS仅与包含该处理通道的该SIMD处理器关联。
下面参照附图进一步详细描述本发明的特征和优点,以及本发明不同实施例的结构和操作。应当注意的是,本发明并不限于这里所述的特定实施例。这里所提出的实施例仅仅是出于说明目的。基于这里所包含的教导,其他实施例对于相关领域的技术人员将显而易见。
附图说明
包含于此并构成说明书一部分的附图显示本发明实施例,并进一步与书面描述一起用于解释本发明的原理,并使相关领域的技术人员能够制造和使用本发明。
图1显示依据本发明实施例的计算架构;
图2显示依据本发明实施例的本地数据共享;
图3显示依据本发明实施例的全局数据共享;
图4显示依据本发明实施例的利用该计算架构改进图像处理算法的步骤流程图;以及
图5显示可实施本发明实施例的示例计算机系统。
下面参照附图进一步详细描述本发明的特征和优点,以及本发明不同实施例的结构和操作。应当注意的是,本发明并不限于这里所述的特定实施例。这里所提出的实施例仅仅是出于说明目的。基于这里所包含的教导,其他实施例对于相关领域的技术人员将显而易见。
具体实施方式
I介绍
以下参照附图对本发明示例实施例作详细描述,所述附图说明与本发明一致的示例实施例。本发明还可具有其他实施例,并可在本发明的精神和范围内修改该些实施例。因此,所作详细描述并非意图限制本发明。相反,本发明的范围由所附权利要求定义。
对于本领域技术人员显而易见的是,如下所述的本发明可在软件、硬件、固件和/或附图所示的实体等诸多不同的实施例中实施。专门控制硬件以实施本发明的任意实际的软件代码并不限制本发明。因此,对本发明的操作行为描述的前提是在给定的详细程度下可对所述实施例进行修改和变更。此外,对于本领域的技术人员显而易见的是,可通过使用计算机可读代码(如上所述),包含通用编程语言(例如C或C++),Verilog HDL、VHDL、Altera HDL(AHDL)等硬件描述语言(HDL),或其他可用的编程和/或原理图撷取工具(例如电路撷取工具)部分地实施本发明的各种实施例的模拟、综合和/或制造。
该计算机可读代码可设置于任意已知的计算机可用介质中,包含半导体、磁盘、光盘(例如CD-ROM、DVD-ROM),并作为计算机数据信号实施于计算机可用(例如可读)传输介质中(例如载波或任意其他介质,包含数字介质、光学介质或基于模拟的介质)。因此,该代码可在包含Internet以及互联网的通信网络上传输。应当理解,由上述系统和技术实现的功能和/或提供的结构可表示在以程序代码实施的核心中(例如GPU核心),并可转换成硬件作为集成电路生产的一部分。
图1显示依据本发明实施例的计算架构100。架构100包含一个或多个SIMD处理器102a-102m。依据本发明实施例,各SIMD处理器包含一个或多个线程处理器,在SIMD 0102a中显示为104a0-104an,在SIMD m 102m中显示为104m0-104mn。此外,依据本发明实施例,各线程处理器也关联一通用寄存器(GPR)文件,在SIMD 0 102a中显示为106a0-106an,在SIMD m 102m中显示为106m0-106mn。尽管该些附图标记显示本发明的范围内考虑了多个SIMD处理器,各具有多个线程处理器和GPR文件,但文中偶尔会通过引用基本附图标记(例如102、104和106)而涉及单个SIMD处理器、线程处理器和GPR文件。
通常将单个线程处理器104和与其关联的GPR文件106的结合称作SIMD处理通道(或简称为“通道”或“SIMD通道”)。相关领域的技术人员应了解,与该线程处理器104和GPR文件106关联的其他元素可构成单个SIMD通道的一部分,并且图1所示的特定实施例仅为示例,而非限制本发明。
依据本发明实施例,架构100进一步包含多个本地数据共享(“LDS”)108a-108m,各SIMD处理器102关联一LDS 108。而且,架构100包含一全局数据共享(“GDS”)110,其可由各SIMD处理器102的各线程处理器104访问。该LDS和GDS将在后面进一步详细讨论。
在架构100上执行一进程(process)时,该进程可生成线程集(collection of thread)以在一SIMD处理器102上执行。在SIMD处理器102中,为该线程集中的各线程分配一特定的SIMD通道,因而将各线程分配至一特定的线程处理器104和GPR文件106。依据本发明实施例,由同一进程生成的该线程集作为“波阵面”分配至一SIMD处理器102,从而允许暂时掩蔽该波阵面中单个线程的执行。依据本发明实施例,可将多个波阵面分配至一SIMD处理器102,如同将任意其他线程集分配至一SIMD处理器102一样。将SIMD处理器102中运行的所有线程,包括多个波阵面,或其任意子集,统称为一线程群组(group)。
II通用寄存器
依据本发明实施例,各SIMD处理器102包含一个或多个线程处理器104,各线程处理器与一GPR文件106关联。如上所述,可将一波阵面分配至一SIMD处理器。该波阵面中的各线程被分配至一特定的SIMD通道执行,因而被分配至与该SIMD通道关联的一特定线程处理器104和GPR文件106。线程处理器104上执行的线程能够读写同一通道的GPR文件106的寄存器。相关领域的技术人员应了解,目前有多种寄存器访问实施技术能够使线程处理器104与GPR文件106通信,从而访问GPR文件106的寄存器,并且本发明的实施例不限于任意特定的实施技术。
依据本发明实施例,各GPR文件106包含与线程处理器104上执行的一线程关联的指定私有空间或寄存器区块。依据本发明进一步实施例,GPR文件106被提前分割(segment)为多个私有寄存器区块(private register block)。线程处理器104中执行的多个新线程于首次执行时被分配一私有寄存器区块,并成为可写访问该私有寄存器区块的唯一线程。
依据本发明另一实施例,GPR文件106包含共享全局池(sharedglobal pool),在线程处理器104上执行的任意线程,无论其与哪个波阵面关联,都能够读写该共享全局池。该功能允许相邻线程访问保留全局区,因而允许读取、修改和写入顺序无关(order-independent)的相关全局数据。该功能还允许分配至同一SIMD通道但属于不同波阵面的多个线程之间的快速共享。
III本地数据共享
如上所述,各SIMD处理器102包含一LDS 108。该LDS 108可供同一SIMD处理器102内的各线程处理器104直接访问。依据本发明一实施例,LDS 108被分割为多个私有写空间,各私有写空间对应并保留给一线程处理器104的一个执行线程。依据本发明另一实施例,各私有写空间对应一线程处理器104。相关领域的技术人员应了解,LDS 108的分割方式可变化,并且上述分割方式仅为示例,而非限制本发明。
依据本发明一实施例,被分配至LDS 108的一私有写空间的线程处理器104上运行的线程能够读写该所分配的私有写空间。此外,任意线程处理器104能够读取LDS 108的任意私有写空间,从而能够使多个线程处理器104在SIMD处理器102内共享数据。相关领域的技术人员应了解,尽管LDS 108采用“所有者-写(owner-write)”模式操作,但还可采用其他访问模式,并且该“所有者-写”模式仅为示例,而非限制本发明。
依据本发明另一实施例,分配至LDS 108的一私有写空间的单个线程能够读写该所分配的私有写空间。在SIMD 102上执行的任意线程,包含在其他线程处理器104上执行的那些线程,则能够自该所分配的私有写空间读取数据。
提供具有“所有者-写”模式的LDS 108不仅能够使单个线程处理器104上执行的多个线程之间共享数据,如同上面所述的GPR共享一样,而且能够使SIMD 102的所有线程处理器104上运行的所有线程之间共享数据。其允许在一波阵面内的线程與在同一波阵面内的其他线程共享数据。此外,该行为允许同一SIMD 102上执行的任意波阵面内运行的线程访问属于该线程群组中任意其他波阵面的线程的数据。
图2显示依据本发明实施例对应图1的LDS 108a-108m的LDS存储器写架构200。相关领域的技术人员应了解,图2所示的数据宽度和逻辑布局并不一定严格按照如图所示实施,并且可容纳不同数目的数据宽度和逻辑布局。单个SIMD处理器102内的所有GPR文件106集在图2中显示为GPRs 201。
依据本发明一实施例,将数据自GPRs 201写入LDS 203是通过将该数据写至对应一线程向量写位置的LDS内地址实现的,它是为特定的执行线程保留的一节LDS。将其称作在该LDS内该线程的私有写空间。相关领域的技术人员应了解,可使用多种寻址模式,并且这里所述的寻址模式仅为示例,而非限制本发明。
依据本发明进一步实施例,该LDS内的私有写空间是可变的。例如,但不限于,私有写空间被分配为每个线程一个寄存器,容纳高达16个波阵面,或是,16个寄存器以及仅一个波阵面。本领域的技术人员应了解,为每个线程分配的寄存器数目以及该LDS可容纳的最终的波阵面总数有多种组合,并且上面提供的群组仅为示例,而非限制本发明。在其他实施例中,还可将该多个波阵面分成大小可变的线程群组。
依据本发明另一实施例,设置一个或多个复用器(multiplexer)202,以将数据自GPRs 201写入LDS 203。安排写操作时,自GPRs 201读取数据并将其写入LDS 203。在一实施例中,在单个时钟周期内将四个线程的数据自GPRs 201写入LDS 203。
如前所述,依据本发明一实施例,每个SIMD处理器102具有一LDS存储器108/203。依据本发明另一实施例,SIMD处理器102内执行的各波阵面被分配至LDS 108内一波阵面存储区。构成该波阵面的各线程被分配至此较大的波阵面存储区内的一特定存储区。此避免线程向非分配存储区或由其相应波阵面的其他线程共享的存储区写入数据,但允许线程在其所分配的存储区内交换数据。
例如,但不限于,将LDS存储器203分割成对应各波阵面的存储区以对其索引(index)。例如,存储区206对应波阵面0。当写入存储区206时,将波阵面0的线程0-3安排写入存储块索引(bank index)0处的LDS 203,如204处所示。一实施例中,该写操作发生于单个时钟周期内。对波阵面0内的每组四个线程重复该进程,接着在下一时钟周期内将下一组四个线程写至下一存储块(bank)。相关领域的技术人员应了解,这里提出的时序和存储容量值仅为示例,而非限制本发明。
依据本发明进一步实施例,可使用专门的广播读模式,以自该LDS快速读取数据,该数据被返回至波阵面中的所有线程,或返回至共享寄存器。一实施例中,该广播读模式执行一至四个dword数据的快速读取,并在四个时钟周期内将该数据返回至各波阵面内的所有线程。
依据本发明另一实施例,实施屏障(barrier)指令。该屏障指令出现于自同一进程生成的所有线程内(例如线程群组或波阵面),该屏障指令迫使所有线程在继续执行之前同步至该屏障点(barrier point)。例如,但不限于,使用该屏障指令可避免访问该LDS时出现危险(hazard)状况。例如,如果一线程执行读取该LDS数据的指令,而该LDS正由来自另一波阵面的不同线程写入,则这时无法知道是否能够获得该线程希望读取的数据。通过将提供所述数据的写指令置于屏障指令之前,并将读指令置于该屏障指令之后,可保证该读指令将自LDS获得正确的数据。相关领域的技术人员应了解,该屏障指令可具有其他用途,包含,例如但不限于,避免其他访问危险。
IV全局数据共享
图3显示依据本发明实施例支持来自所有SIMD处理单元的读写操作的GDS 300。另外,依据本发明进一步实施例,SIMD处理单元可通过广播自该GDS 300请求数据,从而利用来自该GDS 300的广播数据更新系统中所有的GPR文件。
相关领域的技术人员应了解,图3所示的数据宽度和逻辑布局并不一定严格按照如图所示实施,并且可容纳不同数目的数据宽度和逻辑布局。
V示例应用
图4显示依据本发明实施例利用该私有GPR空间、全局GPR空间、LDS和GDS的所述功能的示例应用的流程图400。例如,但不限于,该流程图400可用于在一个操作周期内计算图像上的属性,例如该图像的最大和最小亮度值。相关领域的技术人员应了解,其他应用也可利用该私有GPR空间、全局GPR空间、LDS和GDS的配置,并且流程图400仅为示例,而非限制本发明。
该方法从步骤402开始执行,接着前进至步骤404,在步骤404中,将该图像的像素子集分配至一个或多个波阵面。在各波阵面中,将分配至该波阵面的像素子集分配至该波阵面的各线程,其中,该波阵面已分配至一SIMD处理器102。该波阵面的各线程在该所分配的SIMD处理器102的一通道内执行,该通道对应特定的线程处理器104以及与其关联的GPR文件106。由于在单个SIMD处理器102中可执行一个或多个波阵面,因此执行流程图400的步骤的多个线程可被分配至同一SIMD处理器102中的同一通道。
在步骤406中,将各线程的相应像素子集存储在与其关联的GPR文件106中。接着,在步骤408中,线程处理器104上的各线程计算逐线程私有结果。以最大和最小亮度值为例,线程处理器104计算分配至该执行线程的像素子集的最大和最小亮度值。波阵面的各通道原子地(atomically)将其结果与存储在各通道的全局GPR空间中的逐通道结果结合。在安排完成该图像的所有像素后,缩减阶段(reductionphase)开始将存储在该全局寄存器中的“本地结果”写入LDS 108的该线程私有区域。
接着,在步骤412中,对于各SIMD 102,配置一个通道以读取由SIMD 102的各通道生成的全部本地结果,并将该数据缩减,以获得SIMD本地结果。例如,对应单个线程处理器104的通道被分配用以缩减所述本地结果,以获得所述SIMD本地结果。该线程处理器104将LDS 108的所有本地结果读入其GPR文件106,并在所有该本地结果中计算最大和最小亮度值。该计算结果成为该SIMD本地结果。在步骤414中,该线程处理器104将该SIMD本地结果写入GDS 110的私有区域。
类似地,在步骤416中,单个线程处理器104自GDS 110读取并收集所有SIMD本地结果,并缩减该数据以获得最终结果。例如,单个线程处理器104将所有SIMD本地结果自GDS 110读入其GPR文件106,并在所有该SIMD本地结果中计算最大和最小亮度值。该计算结果成为该缩减的最终结果。接着,在步骤418中,将该最终结果存储至一存储器位置(memory location)。依据本发明另一实施例,该步骤418使用计算的最终结果被作为中间结果存储回该GDS,并在该存储操作后接着执行广播读,以导入(populate)GPR文件106中供第二次执行流程图400所述的操作。
VI计算机系统实施
可由软件、固件、硬件或其组合实施本发明的不同态样。图5显示示例计算机系统500,其中,本发明或其部分作为计算机可读代码实施。根据该示例计算机系统500描述本发明的不同实施例。阅读本说明之后,对于相关领域的技术人员而言,如何利用其他计算机系统和/或计算机架构实施本发明将变得显而易见。
计算机系统500包含一个或多个处理器,例如处理器504。处理器504可为专用或通用处理器。处理器504连接至通信基础设施506(例如总线或网络)。
计算机系统500还包含主要存储器508,较佳为随机访问存储器(random access memory;RAM);并且还可包含次要存储器510。次要存储器510例如可包含硬盘驱动器512、可移除存储驱动器514和/或存储卡(memory stick)。可移除存储驱动器514可包括软盘驱动器、磁带驱动器、光盘驱动器、快闪存储器等等。可移除存储驱动器514通过现有方式读取和/或写入可移除存储单元518。可移除存储单元518可包括软盘、磁带、光盘等等,其由可移除存储驱动器514读写。相关领域的技术人员应了解,可移除存储单元518包含计算机可用存储介质,其中存储有计算机软件和/或数据。
在替代实施中,次要存储器510可包含可将计算机程序或其他指令载入计算机系统500的其他类似装置。此类装置可包含,例如可移除存储单元522以及接口520。此类装置例如可包含程序磁带盒(program cartridge)和磁带盒接口(例如可在视频游戏设备中找到)、可移除存储芯片(例如EPROM或PROM)及相关插座,以及允许将软件和数据传输至计算机系统500的其他可移除存储单元522和接口520。
计算机系统500还可包含通信接口524。通信接口524允许计算机系统500与外部设备之间传输软件和数据。通信接口524可包含调制解调器、网络接口(例如以太网卡)、通信端口、PCMCIA插槽和卡等等。经由通信接口524传输的软件和数据为信号形式,其可为电子信号、电磁信号、光信号或其他能够由通信接口524接收的信号。这些信号经由通信路径526提供至通信接口524。通信路径526传输信号,并可使用电线或线缆、光纤、电话线、蜂窝电话链路、RF链路或其他通信沟道实现。
本文中,术语“计算机程序介质”和“计算机可用介质”一般指例如可移除存储单元518、可移除存储单元522以及安装在硬盘驱动器512中的硬盘等介质。在通信路径526上传输的信号还可实施这里所述的逻辑。计算机程序介质和计算机可用介质还可指存储器,例如主要存储器508和次要存储器510,其可为存储器半导体(memorysemiconductor)(例如DRAM等)。该些计算机程序产品是为计算机系统500提供软件的装置。
计算机程序(还称作计算机控制逻辑或数据和/或指令)存储在主要存储器508和/或次要存储器510中。计算机程序还可经由通信接口524接收。此类计算机程序于执行时能够使计算机系统500实施这里所讨论的本发明。尤其是,该些计算机程序于执行时能够使处理器504实施本发明的进程。因此,此类计算机程序代表计算机系统500的控制器。利用软件实施本发明时,该软件可存储在计算机程序产品中,并通过可移除存储驱动器514、接口510、硬盘驱动器512或通信接口524载入计算机系统500。
本发明还针对计算机程序产品,其包括存储在任意计算机可用介质上的软件。在一个或多个数据处理设备中执行此类软件时,此类软件使数据处理设备如这里所述操作,或如上所述允许计算设备(例如ASIC或处理器)的综合和/或制造,从而执行如这里所述的本发明的实施例。本发明的实施例采用已知或未知的任意计算机可用或可读介质。计算机可用介质例如包含,但不限于,主存储设备(例如任意类型的随机访问存储器)、辅助存储设备(例如硬盘驱动器、软盘、CD ROM、ZIP盘、磁带、磁存储设备、光存储设备、MEMS、纳米技术存储设备等等)以及通信介质(例如有线和无线通信网络、局域网、广域网、企业内部网等等)。
VII结论
尽管上面描述了本发明的不同实施例,但应当理解,这些实施例仅为示例,而非限制本发明。相关领域的技术人员应当理解,可在所附权利要求所定义的本发明的精神和范围内对本发明进行形式和细节上的各种修改。应当理解,本发明并不限于这些示例。本发明可适用于如这里所述操作的任意元件。因此,本发明的广度和范围不应当限于示例实施例,而是仅依据权利要求及其等同所定义。

Claims (13)

1.一种图形处理单元,包括: 
多个SIMD处理单元,各SIMD处理单元包括: 
多个线程处理器, 
多个通用寄存器GPR文件,各GPR文件与该多个线程处理器之一通信,以及 
本地数据共享LDS,该本地数据共享与该多个线程处理器双向通信,其中,该多个线程处理器被分配用于执行多个线程,其中,该LDS具有被分配至该多个线程处理器之一的私有写空间,其中,该LDS仅通过该多个线程处理器之一迫使写访问该私有写空间,并且其中,该多个线程处理器能够读取该私有写空间;以及 
全局数据共享GDS,该全局数据共享与该多个SIMD处理单元的各SIMD处理单元中该多个线程处理器的各线程处理器通信。 
2.如权利要求1所述的图形处理单元,其中,各GPR文件包括:多个寄存器的私有区块,各寄存器的私有区块被分配至与该GPR文件关联的该线程处理器上执行的一个或多个线程中的一个,其中,仅该分配的线程能够读或写与其关联的寄存器私有区块;以及 
寄存器的全局区块,其中,该一个或多个线程的任意线程能够读与写该全局区块。 
3.如权利要求1所述的图形处理单元,其中,该私有写空间的大小是可变的。 
4.如权利要求1所述的图形处理单元,其中,该GDS包括: 
私有写空间,该私有写空间被分配至该多个SIMD处理单元的该多个线程处理器之一。 
5.如权利要求4所述的图形处理单元,其中,该GDS仅通过该多个SIMD处理单元的该多个线程处理器之一迫使写访问该私有写空 间,并且其中,该多个SIMD处理单元能够读取该私有写空间。 
6.一种制造图形处理单元的方法,包括: 
物理地形成多个SIMD处理单元,各SIMD处理单元包括: 
多个线程处理器, 
多个通用寄存器GPR文件,各GPR文件与该多个线程处理器之一通信,以及 
本地数据共享LDS,该本地数据共享与该多个线程处理器双向通信,其中,该多个线程处理器被分配用于执行多个线程,其中,该LDS具有被分配至该多个线程处理器之一的私有写空间,其中,该LDS仅通过该多个线程处理器之一迫使写访问该私有写空间,并且其中,该多个线程处理器能够读取该私有写空间;以及 
物理地形成全局数据共享GDS,该全局数据共享与该多个SIMD处理单元的各SIMD处理单元中该多个线程处理器的各线程处理器通信。 
7.如权利要求6所述的方法,其中,物理地形成该多个SIMD处理单元的各SIMD处理单元包括: 
物理地形成该多个GPR文件的各GPR文件,各GPR文件包括: 
寄存器的私有区块,该寄存器的私有区块被分配至与该GPR文件关联的该线程处理器上执行的一个或多个线程的第一线程,其中,仅该第一线程能够写入该私有区块,并且其中,该一个或多个线程的任意线程能够读取该私有区块;以及 
寄存器的全局区块,其中,该一个或多个线程的任意线程能够读写该全局区块。 
8.如权利要求6所述的方法,其中,该私有写空间的大小是可变的。 
9.如权利要求6所述的方法,其中,该GDS包括: 
私有写空间,该私有写空间被分配至该多个SIMD处理单元的该 多个线程处理器之一。 
10.如权利要求6所述的方法,其中,该方法通过综合硬件描述语言指令执行。 
11.一种用于图形处理单元的方法,包括: 
将图像的一组像素分配至一组SIMD处理器; 
将该组像素的像素子集分配至该组SIMD处理器的各SIMD处理器的处理通道上执行的各线程; 
将该像素子集存储在与各处理通道关联的通用寄存器GPR文件中; 
基于该GPR文件的私有空间中的该像素子集计算逐线程私有结果; 
累积各同一通道的线程计算的各线程私有结果,以生成逐通道本地结果,其存储在该GPR文件的全局空间中; 
将该逐通道本地结果自该GPR文件的该全局空间写入与该处理通道关联的本地数据共享LDS的私有区域,该LDS仅与包含该处理通道的该SIMD处理器关联; 
将各逐通道本地结果自该LDS读入第一单个处理通道的第一单个GPR文件; 
缩减来自该LDS的所有逐通道本地结果的结果,以获得SIMD本地结果; 
将该SIMD本地结果自该第一单个GPR文件写入与该第一单个处理通道关联的全局数据共享GDS的私有区域; 
将各SIMD本地结果自该GDS读入第二单个处理通道的第二单个GPR文件; 
缩减来自该GDS的所有SIMD本地结果的结果,以获得最终结果;以及 
写入该最终结果。 
12.如权利要求11所述的方法,其中,写入该最终结果包括: 
将该最终结果写入存储器位置。 
13.如权利要求12所述的方法,其中,写入该最终结果包括将该最终结果写回至该GDS,该方法进一步包括: 
写入该最终结果后,执行广播读指令; 
响应该广播读指令将该GDS的该最终结果导入该GPR;以及 
在随后的计算中使用该最终结果作为中间结果以计算随后的逐线程私有结果。 
CN200980119960.7A 2008-05-30 2009-06-01 本地与全局数据共享 Active CN102047241B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5753408P 2008-05-30 2008-05-30
US61/057,534 2008-05-30
PCT/US2009/003315 WO2009145917A1 (en) 2008-05-30 2009-06-01 Local and global data share

Publications (2)

Publication Number Publication Date
CN102047241A CN102047241A (zh) 2011-05-04
CN102047241B true CN102047241B (zh) 2014-03-12

Family

ID=41377444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980119960.7A Active CN102047241B (zh) 2008-05-30 2009-06-01 本地与全局数据共享

Country Status (6)

Country Link
US (2) US9619428B2 (zh)
EP (2) EP3413206B1 (zh)
JP (1) JP5461533B2 (zh)
KR (1) KR101474478B1 (zh)
CN (1) CN102047241B (zh)
WO (1) WO2009145917A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110023904A (zh) * 2016-11-23 2019-07-16 超威半导体公司 双模式本地数据存储

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US20100250564A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution
US20120017062A1 (en) * 2010-07-19 2012-01-19 Advanced Micro Devices, Inc. Data Processing Using On-Chip Memory In Multiple Processing Units
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8752064B2 (en) * 2010-12-14 2014-06-10 Advanced Micro Devices, Inc. Optimizing communication of system call requests
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US9547880B2 (en) 2012-04-09 2017-01-17 Intel Corporation Parallel processing image data having top-left dependent pixels
US10062135B2 (en) * 2013-07-31 2018-08-28 National Technology & Engineering Solutions Of Sandia, Llc Graphics processing unit management system for computed tomography
US9633411B2 (en) * 2014-06-26 2017-04-25 Qualcomm Incorporated Load scheme for shared register in GPU
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US9760969B2 (en) * 2015-03-09 2017-09-12 Mediatek Inc. Graphic processing system and method thereof
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
US9779469B2 (en) * 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
GB2546308B (en) 2016-01-15 2019-04-03 Advanced Risc Mach Ltd Data processing systems
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) * 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10552934B2 (en) * 2016-07-01 2020-02-04 Intel Corporation Reducing memory latency in graphics operations
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10033482B2 (en) * 2016-08-03 2018-07-24 Samsung Electronics Co., Ltd System and method for providing interference parameter estimation for multi-input multi-output (MIMO) communication system
US10223822B2 (en) * 2016-12-22 2019-03-05 Apple Inc. Mid-render compute for graphics processing
US10580104B2 (en) * 2017-04-17 2020-03-03 Intel Corporation Read/write modes for reducing power consumption in graphics processing units
US10922258B2 (en) * 2017-12-22 2021-02-16 Alibaba Group Holding Limited Centralized-distributed mixed organization of shared memory for neural network processing
GB2578932B (en) 2019-02-14 2021-02-24 Imagination Tech Ltd Allocation of memory
US11029954B2 (en) * 2019-04-22 2021-06-08 Samsung Electronics Co., Ltd. Per-lane dynamic indexing in temporary registers
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
US10891708B1 (en) 2019-11-25 2021-01-12 Arm Limited Shader program execution in graphics processing
US11361400B1 (en) 2021-05-06 2022-06-14 Arm Limited Full tile primitives in tile-based graphics processing
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files
CN117132450B (zh) * 2023-10-24 2024-02-20 芯动微电子科技(武汉)有限公司 一种可实现数据共享的计算装置和图形处理器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1170171A (zh) * 1995-11-22 1998-01-14 任天堂株式会社 带三维图形和数字音频信号处理协处理器的视频游戏系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU645785B2 (en) 1990-01-05 1994-01-27 Maspar Computer Corporation Parallel processor memory system
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
JPH06332700A (ja) * 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
US5655132A (en) 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
JPH09198361A (ja) 1996-01-23 1997-07-31 Kofu Nippon Denki Kk マルチプロセッサシステム
JP3923574B2 (ja) 1996-12-02 2007-06-06 株式会社日立製作所 並列データ処理機能を備えた検査装置及び検査方法
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
AU2002233500A1 (en) * 2001-02-14 2002-08-28 Clearspeed Technology Limited An interconnection system
JP2003030047A (ja) 2001-07-16 2003-01-31 Fujitsu Ltd キャッシュ装置およびキャッシュ方法
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
JP4699685B2 (ja) 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
JP2005189975A (ja) * 2003-12-24 2005-07-14 Toshiba Corp 画像処理装置、画像処理方法およびプログラム
US20050251649A1 (en) 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7634621B1 (en) * 2004-07-13 2009-12-15 Nvidia Corporation Register file allocation
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7522168B2 (en) * 2005-09-27 2009-04-21 Sony Computer Entertainment Inc. Cell processor task and data management
US8316220B2 (en) * 2005-09-27 2012-11-20 Sony Computer Entertainment Inc. Operating processors over a network
US7480768B2 (en) 2005-09-30 2009-01-20 Intel Corporation Apparatus, systems and methods to reduce access to shared data storage
US7750915B1 (en) * 2005-12-19 2010-07-06 Nvidia Corporation Concurrent access of data elements stored across multiple banks in a shared memory resource
US7970956B2 (en) 2006-03-27 2011-06-28 Ati Technologies, Inc. Graphics-processing system and method of broadcasting write requests to multiple graphics devices
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US8108872B1 (en) * 2006-10-23 2012-01-31 Nvidia Corporation Thread-type-based resource allocation in a multithreaded processor
US20080109795A1 (en) * 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7940261B2 (en) * 2007-01-10 2011-05-10 Qualcomm Incorporated Automatic load balancing of a 3D graphics pipeline
US8248422B2 (en) * 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1170171A (zh) * 1995-11-22 1998-01-14 任天堂株式会社 带三维图形和数字音频信号处理协处理器的视频游戏系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110023904A (zh) * 2016-11-23 2019-07-16 超威半导体公司 双模式本地数据存储
CN110023904B (zh) * 2016-11-23 2021-11-02 超威半导体公司 双模式本地数据存储

Also Published As

Publication number Publication date
CN102047241A (zh) 2011-05-04
EP2289001B1 (en) 2018-07-25
EP2289001A1 (en) 2011-03-02
EP2289001A4 (en) 2012-12-05
US9619428B2 (en) 2017-04-11
US20170212757A1 (en) 2017-07-27
JP5461533B2 (ja) 2014-04-02
KR101474478B1 (ko) 2014-12-19
KR20110015439A (ko) 2011-02-15
US10140123B2 (en) 2018-11-27
EP3413206A1 (en) 2018-12-12
US20090300621A1 (en) 2009-12-03
JP2011522325A (ja) 2011-07-28
WO2009145917A1 (en) 2009-12-03
EP3413206B1 (en) 2020-10-28

Similar Documents

Publication Publication Date Title
CN102047241B (zh) 本地与全局数据共享
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US7725518B1 (en) Work-efficient parallel prefix sum algorithm for graphics processing units
EP0725367B1 (en) Computer 3D rendering method and apparatus
CN103761215B (zh) 基于图形处理器的矩阵转置优化方法
CN103793893A (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
US20070294514A1 (en) Picture Processing Engine and Picture Processing System
CN112328172B (zh) 数据存储方法、装置及数据读取方法、装置
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren
US8370845B1 (en) Method for synchronizing independent cooperative thread arrays running on a graphics processing unit
CN110223216B (zh) 一种基于并行plb的数据处理方法、装置及计算机存储介质
CN102023843A (zh) 函数的调用方法、装置及智能卡
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
US20060155906A1 (en) Data processor with a built-in memory
CN115758989B (zh) 用于修复数字芯片版图设计规则时序违例的方法及系统
US8473948B1 (en) Method for synchronizing independent cooperative thread arrays running on a graphics processing unit
US8539207B1 (en) Lattice-based computations on a parallel processor
CN103150157A (zh) 基于访存分歧的gpu核心程序重组优化方法
CN1329819C (zh) 互换地址寄存器所存内容的方法和设备
CN116360672A (zh) 访问存储器的方法、装置和电子设备
CN102200961B (zh) 一种动态可重构处理器内子单元的扩展方法
JP2004118713A (ja) 画像処理装置
CN111651273B (zh) 一种基于gpu的大容量短突发信号接收机设计
CN106055292B (zh) 图像拼接方法、装置及显示设备
CN117950739A (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