CN102354300B - 存取方法以及共享存储器系统 - Google Patents

存取方法以及共享存储器系统 Download PDF

Info

Publication number
CN102354300B
CN102354300B CN201110282817.9A CN201110282817A CN102354300B CN 102354300 B CN102354300 B CN 102354300B CN 201110282817 A CN201110282817 A CN 201110282817A CN 102354300 B CN102354300 B CN 102354300B
Authority
CN
China
Prior art keywords
shared storage
access
data
around
block
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
CN201110282817.9A
Other languages
English (en)
Other versions
CN102354300A (zh
Inventor
焦阳
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.)
Via Technologies Inc
Original Assignee
Via Technologies 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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN102354300A publication Critical patent/CN102354300A/zh
Application granted granted Critical
Publication of CN102354300B publication Critical patent/CN102354300B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Image Input (AREA)

Abstract

存取方法以及共享存储器系统,用来提供各种系统与方法来存取图形处理单元中的共享存储器。其中一实施例包括判断将读取自共享存储器的数据是否对齐共享存储器的边界,其中,数据包括多个数据区块。判断即将被安排来处理的数据区块所采用的拌和类型。根据数据是否对齐共享存储器的边界且根据判断获得的拌和类型,决定执行一或多个环绕功能的顺序。通过执行一或多个环绕功能以及读取多个数据区块来存取共享存储器,以根据拌和类型来建立数据。

Description

存取方法以及共享存储器系统
技术领域
本发明涉及一种在图形处理单元(graphics processing unit,GPU)中的图形管线(pipeline),特别涉及一种在图形处理单元内执行共享存储器存取的系统与方法。
背景技术
计算机图形处理系统处理大量的数据,其中包括纹理数据(texture data)。纹理是一个数字图像,通常为矩形,其具有一个(u,v)坐标空间。纹理的最小可寻址单元是一纹理图像单元(texel),根据其位置分配到一特定(u,v)坐标。在一纹理映射(texture mapping)操作中,当提供一图形模型以建立一目标图像时,纹理被映射在此图形模型的表面。在此目标图像中,像素设置在(x,y)坐标系统上的特定坐标。纹理映射的目的是在物件的表面上提供逼真的外观。
所提出的Direct3D 11规格定义了新类型的着色器/渲染器(shader),即已知的运算着色器(compute shader),其提供多线程(multi-thread)支持以帮助图形进阶应用的发展,例如视频游戏。运算着色器提供了对于例如在图形处理器中所使用的单指令多数据(singleinstruction/multiple data,SIMD)内核的运算功率与频宽的存取。运算着色器被调用作为多线程,其中,这些线程被划分为多个线程组。当存在同步化操作以提供线程执行的安排时,此同步化手段可以是频宽与存储器的加强行为。
发明内容
本发明提供一种存取方法,用以存取图形处理单元中的共享存储器。此存取方法包括判断将读取自共享存储器的数据是否对齐共享存储器的边界,其中,数据包括多个数据区块。此存取方法还包括判断即将被安排来处理的数据区块所采用的拌和类型。根据数据是否对齐共享存储器的边界且根据判断获得的拌和类型,决定执行一或多个环绕功能的顺序。此存取方法还包括通过执行一或多个环绕功能以及读取多个数据区块来存取共享存储器,以根据拌和类型来建立数据。
本发明也提供一种共享存储器系统。此共享存储器系统包括共享存储器与存储器控制器。共享存储器其耦接运算着色器以及在图形处理单元(graphics processing unit,GPU)管线中的多个元件。存储器控制器判断关于共享存储器而将被存取的数据是否对齐共享存储器的边界,其中,此数据包括多个区块。存储器控制器包括拌和模块与存储器存取模块。拌和模块判断即将被安排来处理的多个数据区块所采用的类型。存储器存取模块则根据类型来存取共享存储器,其中,存储器存取模块使用一或多个环绕操作来存取该共享存储器。
本发明还提供一种存取方法,用以存取图形处理单元中的共享存储器。此存取方法包括判断在共享存储器中将被处理的数据的类型,其中,数据被划分成多个存取槽、多个通道、以及多个跨步。根据此类型,决定执行多个存取槽环绕、多个通道环绕、以及多个跨步环绕中的一个或多个的顺序。此存取方法还包括根据此顺序来执行多个存取槽环绕、多个通道环绕、以及多个跨步环绕中的一个或多个。
附图说明
图1表示根据本发明实施例的图形系统,在其中实施共享存储器;
图2是表示图1的图形管线的各种元件;
图3A及图3B表示图1的共享存储器的各种元件;
图4表示根据本发明一实施例,对应图1的共享存储器而执行存储器存取的方法;
图5表示根据本发明另一实施例,对应图1的共享存储器而执行存储器存取的方法;
图6表示将一对准的4x4像素区块由系统存储器载入共享存储器的示意图;
图7表示使用存取槽环绕、通道环绕、以及跨步环绕来将一非对准的4x4像素区块由系统存储器载入共享存储器的示意图;以及
图8-图14表示利用存取槽环绕、通道环绕、以及跨步环绕来存取图1的共享存储器的各种实施例。
【主要元件符号说明】
图1:
100~图形处理器系统;    101~系统存储器;
102~图形处理器;        104~计算内核;
106~执行单元集用场控制与顶点/串流快取单元;
108~图形管线;
110~图形处理单元(GPU);
112~共享存储器;
图2:
202~输入组译器;        204~顶点着色器;
205~外壳着色器;        206~镶嵌单元;
207~域着色器;          208~几何着色器;
210~光栅处理器;        212~像素着色器;
214~一般目的(GP)着色器;
216~显示装置;
第3A-3B图:
302~共通寄存器文件(CRF);
304~存储器控制器;      306~拌和模块;
308~存储器存取模块;    310~输出拌和模块;
图4:
402、404、406、408~步骤方块;
图5:
502、504、506~步骤方块;
图6-图7:
101~系统存储器;        112~共享存储器;
702~数据区块702;
图8-图14:
101~系统存储器;        112~共享存储器;
310~输出拌和模块;。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一优选实施例,并配合附图,作详细说明如下。
已知设备在存取图形管线上的共享存储器方面的已知缺点是,当典型地逐个撷取数据的区块以建立需要的区块时,存取非对齐的数据可能需要多个存储器存取周期。在本发明中将叙述存取共享存储器以在图形管线中实行线程的系统与方法,其提供了在存取与运用可变的数据尺寸的适应性,而减少所需的存储器周期数量,其中此可变的数据尺寸是跨越存储于图形处理单元(graphics processing unit,GPU)的共享存储器内的多个通道(lane)。共享存储器系统的示范实施例被配置给在线程实行期间的存储器读取/写入操作,且包括划分成多个存储器库与偏移量的一随机存取存储器(RAM)。
在线程实行时,所述的共享存储器系统可在如同线程启动及线程同步的操作期间中被使用。在视频解码期间,例如数据可能需要根据特定类型来被读取且配置,使得可能需要拌和(swizzling)操作。此外,非对齐的数据区块可能被撷取,其偏移量与存储器库边界或是配置在共享存储器内的像素区块没有对齐。为了说明,参阅图7,其显示一个4x4像素区块的2维阵列。在一些情况下,将被存取的数据区块702可能与多个4x4像素区块部分重叠,因此其被描述成一非对齐数据区块,这是因为数据区块702没有完全地位于一特定4x4像素区块中。
在图7的非限制的例子中,非对齐的4x4像素区块702可能通过一系列的存储槽、通道、以及跨步环绕操作来存取,这些操作于后文说明。通过使用此处所述的各种共享存储器存取手段,可存取不同尺寸的非对齐数据区块。例如,一个16x1数据区块可被存取,且跨越多个通道的1x16区块也可被存取。通过使用所述的存储器存取手段,可用有效的方法来执行不同的尺寸数据的读取及写入。
参阅图1,其表示根据本发明实施例的一图形平台(platform)的功能方块图,在其中实施根据本发明实施的一共享存储器系统。在一些实施中,图形处理系统100可配置为一计算机系统。图形处理器-系统100包括图形处理单元(GPU)110,GPU 110还包括图形处理器102。图形处理器102也包括一多执行单元(multiple execution unit(EU))的计算内核104,计算内核104可以为一软件可编程内核处理器,且在一实施例中,计算内核104包括一个一般目的(general propose,GP)的着色器。
图形处理器102包括一执行单元集用场(execution unit pool,EUP)控制与顶点/串流(vertrex/stream)快取单元106(在此称为执行单元集用场控制单元106)以及一图形管线108。计算内核104包括多个执行单元的集用池,以满足与不同着色器程序相关联的着色器任务所利用的计算需求,包括顶点着色器(vertrex shader)、几何着色器(geometry shader)、和/或像素着色器(pixel shader),用来处理给图形管线108的数据。图形处理器102还包括共享存储器112,其与由GP着色器对线程的执行有关,GP着色器将于文后描述。
图2是表示图1中图形管线108的各种元件。具体而言,图2所表示的元件包括图形管线108的元件,其全部或部分元件与GP着色器214配合使用。图形管线108包括输入组译器(assembler)202,其使用索引缓冲区来提取或一般地接收来自系统存储器101的顶点数据,并组译基元(primitive)以进一步在计算内核104中处理。需注意,系统存储器101可包括其他存储器次系统中的本地存储器(local memory),例如串流及顶点快取列(cache)。经过组译的基元被传送至顶点着色器204。
顶点着色器204通过执行例如转换(transformation)、愈合(skinning)、与打亮(lighting)来处理顶点。图形管线108还包括外壳着色器(hull shader)205、镶嵌单元(tessellator)206、以及域着色器(domain shader)207。一般而言,这些着色器205、207、及207系利用来增加特定表面的平滑度。简单来说,外壳着色器205是针对曲线控制点的选择,且是每一片面(patch)所需要的,其使用来自顶点着色器204的片面控制点来作为输入。在其他的功能中,外壳着色器205计算镶嵌系数,其被传送至镶嵌单元206。这提供了适合的镶嵌,可用于连续的视点相关精确度等级(view-dependent level of detail(LOD))。来自域着色器207的数据被传送至几何着色器208。
几何着色器208接收关于一全基元的多个顶点以作为输入,且能输出多个顶点以形成单一拓扑(topology),例如三角片带(triangle strip)、直线片带(line strip)、以及点列表(point list)等等。几何着色器208执行各种功能(包括阴影锥产生(shadow volume generation)),并输出信息至光栅处理器(rasterizer)210。光栅处理器210执行剪辑与基元安排,并判断何时和/或如何去调用像素着色器212。像素着色器212调用被光栅处理器210输出的基元所包含的每一像素。GP着色器214执行例如模糊效果的后端处理,且通常被调用作为多个线程,而这些线程被划分为多个线程群组。最后,表示在一场景中物体的表面(或体积)的几何被转译为存储在帧缓冲器的像素(图片元素),接着显示装置216上显示。
参阅图3A,共享存储器112可利用来存储撷取自系统存储器101的数据以在图形管线108中处理,且同样地,可自共享存储器112读取数据并将读取获得的数据存储回系统存储器101。在一些实施例中,此共享存储器系统可实施作为GP着色器214所使用之一执行单元(EU)共享存储器缓冲器。定义存储器存取的指令可由一执行单元来调用。一线程处理路径包括共通寄存器文件(common register file,CRF)302以及一执行单元(EU)数据路径。EU数据路径包括多个算术逻辑单元(arithmetic logic unit,ALU)(未显示)。如图3A所示,共享存储器112可包括多个存储器通道(lane),也称为在水平方向上的RAM存储器库。为了说明,假设共享存储器112包括总共16条的通道,编号由0至15。共享存储器112也包括在垂直方向上的多个跨步(stride)或RAM偏移量(offset)。
一特定执行单元(EU)指令可被调用以指示一存储器存取,而此存储器存取包括对共享存储器112内一特定地址的读取和/或写入操作。由此指令所指示的读取/写入地址指向共享存储器内通道为基础的标量(又称之为纯量)数据(lane-based scalar data)的一起始位置。在一些实施例中,此地址可包括一RAM偏移量组件以及一RAM存储器库组件。举例来说,考虑一地址0b0110-0011。依据此特定的实施,此地址可关于共享存储器内等于6的RAM偏移量(可称为RAM偏移量6)与等于3的存储器库数值(可称为RAM存储器库3)。对于接续的数据,存储器根据以1增加的通道偏移来移动。此外,对于举例所示的共享存储器112架构,根据被调用的特定存储器存取指令,RAM存储器库朝着到达存储器库15而环绕,而RAM偏移量可维持不变。各种使用环绕操作的存储器存取架构在后文说明。
参阅图3B的示意图以及在图4的流程图,共享存储器系统可包括存储器控制器304,用以控制对共享存储器112的存取以及执行数据流控制。存储器控制器304用来判断将读取自共享存储器112的数据或将写入至共享存储器112的数据是否对齐(align)共享存储器112的一特定像素区块或边界(图4的步骤方块402)。在一些实施例中,共享存储器112的边界包括由共享存储器112本身的尺寸所定义的边界和/或由共享存储器112内多个像素区块所定义的边界。存储器控制器304还包括拌和(swizzle)模块306,用来判断在即将安排来处理的多个数据区块所采用的拌和类型(swizzle pattern,又称之为拌和模式、拌和型样、拌和型态)(步骤方块404)。根据数据如何对齐共享存储器112的边界,此拌和模块306还用来判断执行一或多个环绕功能的顺序(步骤方块406)。环绕功能包括一存取槽环绕功能(slot warpfunction)、一通道环绕功能(lane warp function),以及一跨步环绕功能(stridewarp function),而执行的存储器存取可包括任何这些功能的结合。
存储器控制器304还包括存储器存取模块308,其执行对应共享存储器112的实际读取/写入操作。存储器存取模块308通过执行一或多个环绕功能以及读取数据区块来存取共享存储器112,以根据拌和模块306决定的拌和类型来建立数据(步骤方块408)。
图5是表示根据存取共享存储器112的另一实施例。尤其是图5是表示存取在图形处理单元(GPU)中一共享随机存取存储器(RAM)的数据的方法。开始在步骤方块502,判断在共享存储器112中将被处理的数据的类型,其中,此数据被划分成多个处理槽、通道、以及跨步。根据此类型,在步骤方块504中决定执行一或多个处理槽环绕、通道环绕、以及跨步环绕的顺序。在步骤方块506中,根据决定的顺序来执行一或多个处理槽环绕、通道环绕、以及跨步环绕。
应注意到,假使在软件中实现,上述的每一步骤方块可表示包括程序指令的一个模块、数据段以及部分编码,以实现特定逻辑功能。此程序指令可用源编码的类型来实现,而此源编码包括由程序语言来编写的叙述;或者是此程序指令可用机器编码来实现,而此机器编码包括可由一适当执行系统(例如在计算机系统或其他如图1所示的系统内的处理器)所识别的数值指令。机器编码可由源编码等等转换获得。假使在硬件中时间,每一步骤方块可表示一电路或者是一些互相连接的电路,以实践实现特定逻辑功能。
图6是表示将来自系统存储器101的一对齐的4x4像素区块载入至共享存储器112。对于对齐多个4x4像素方块中的一个的数据而言,数据可由系统存储器101载入至共享存储器112,而不需使用环绕操作。如在一非限制的例子中,系统存储器101包括多个4x4像素区块的2维阵列。应注意到,非只可使用4x4区块,数据而也可使用8x8区块、12x12区块、或16x16区块而由系统存储器101载入至共享存储器112。对于对齐一4x4区块的多个数据区块而言,不需要环绕操作来将数据由系统存储器101转移至共享存储器112。
图7是表示使用存取槽环绕、通道环绕、以及跨步环绕的组合将来自系统存储器101的一非对齐的4x4像素区块载入至共享存储器112。如图所示,系统存储器101可包括多个4x4像素方块,以Q[0,0]、Q[1,0]、Q[2,0]、Q[3,0]、Q[0,1]、Q[1,1]、Q[2,1]、及Q[3,1]来标示。在一非限制的例子中,将撷取自系统存储器101以及写入至共享存储器112的非对齐数据不会符合这些4x4像素方块中的一个。关于这一点,数据可能以在一非对齐位置上的一4x4区块来读取自或写入至共享存储器112。对于一些实施而言,左上方像素的地址被指定,另外,对于在4x4像素区块中的一4-位偏移量,其中,2个最大有效位表示一存取槽环绕数值,而2个最小有效位表示一通道环绕数值。举例来说,开始于在共享存储器112中基础地址A、数值等于1的存取槽环绕、数值等于2的通道环绕、以及数值等于4的跨步环绕的像素区块Q[0,0],在4x4区块中的数据根据一特定顺序来存取。
如本领域技术人员将了解,能在系统存储器101与共享存储器112之间转移存储于非对齐存储器位置的数据对于各种图形处理操作而言是有帮助的。通过LUMA的视频解码帧间预测(inter-prediction),例如,数据载入至共享存储器112且被处理,且GP着色器214将参考数据载入至像素区块。举例来说,这可包括4x4或8x8区块。为了详细说明,假设参考数据包括一8x8像素区块,根据移动向量(motion vector)这需要一参考数据的13x13区块。
如前所述并参阅图7,一“非对齐”区块是与跨越或环绕共享存储器边界的数据相关联,而“对齐”的多个区块是指符合在共享存储器中一或多个像素区块的邻近区域的区块。在一些例子中,执行单元将对齐的数据载入存储器,且4x4像素区块可越过一RAM进入点而被载入至16个存储器库。在载入操作期间可实施一存取槽环绕和/或通道环绕操作,以确保任何的8x8区块、12x12区块、或16x16区空可在行方向与列方向上被存取。然而,对于4x4区块为基础的处理,一般不需要实施载入/存储存取槽/通道环绕。
为了进一步说明,考虑对在一像素区块(例如4x4或8x8)中每一区块的图形操作,二分之一或四分之一采样是根据邻近像素来计算获得。为了读取在8x8或16x16像素区块中行方向与列方向上的数据,共享存储器通过一系列的数据旋转与数据移动来存取。此外,之后共享存储器的读取/写入可使用各种共享存储器读取/写入指令,来处理在行方向与列方向上的数据。关于此点,可载入来自共享存储器中的装置存储器(例如4x4、8x8、12x12、或16x16区块)的数据。
以下将更详细地说明已叙述基本的架构以实施共享存储器系统,执行共享存储器存取的方法的各种例子。尤其是,将说明包含牵涉图3A的共享存储器112的一系列存取槽、通道、以及跨步环绕功能的各种读取/写入操作。应注意到,对于下文所述的共享存储器操作,根据一特定类型来利用一或多个环绕操作以读取或写入数据。对于一些实施例而言,环绕操作包括下列中的一或多个:存取槽环绕、通道环绕、以及跨步环绕。根据由RAM偏移量数值、存取槽环绕数值、通道环绕数值、以及跨步环绕数值所指定的一特定类型,数据可读取自共享存储器或写入至共享存储器。
回来参阅图3A,对于示范的实施例,组成共享存储器112的多个RAM存储器库分组为多个存取槽,例如,使得一获得的存取槽包括四个RAM存储器库,且一共享存储器操作的起始点由RAM偏移量与一指令所提供的地址来决定。根据此,将被存取的下一数据由通道环绕数值、存取槽环绕数值、以及跨步环绕数值来决定。尤其是,执行一或多个存取槽环绕、通道环绕、以及跨步环绕的程序可由指明通道环绕数值、存取槽环绕数值、以及跨步环绕数值的一或多个指令来开始实施。关于此点,关于以一图形管线中不同的元件来存取共享存储器112的适应性可通过提供将被指定的不同存取类型来达成。这可由根据处理所需的数据类型对环绕的顺序进行调整来实现。现在将参阅图8-图14,其说明利用存取槽环绕、通道环绕、以及跨步环绕以存取图1中共享存储器的各种实施例。
连续读取/写入操作
一共享存储器存取技术系针对有关于共享存储器112的连续读取/写入操作。由EU指令所提供的读取/写入操作指向在共享存储器112内通道为基础的标量数据的起始位置。对于连续的共享存储器读取操作而言,自跨越一有效地址的存储器地址的范围读取内容至一较高范围,其中,此共享存储器地址一般是标量数值。
参阅图8,被读取的数据包括多个数据区块,且存储在共享存储器112内的连续存储器位置。对于一些实施来说,连续的读取操作可被一指令所调用,藉以使得操作数(operand,又称之为运算元)对应上述有效地址以及较高范围。假使数据将被写入至共通寄存器文件(CRF)302,基底地址设置在由操作数Rs1的最小有效通道数来的第一个有效通道。在一些实施例中,此地址以下式来计算:线程(又称之为执行绪)群组基底地址(thread group baseaddress)+Rs1[0]+目前地址<<4+存储器库。由EU指令所提供读取/写入地址指向共享存储器112内通道为基础的标量数据的起始位置。
如一非限制的实施例,考虑地址0b0110-0011的情况,其指向共享存储器112内RAM偏移量6以及存储器库3。对于后续的每一32-位标量数据,地址(包括RAM偏移量以及通道偏移量,此两者都可是整数数值)将以1来增加。如图8所示的非限制的例子,来自RAM偏移量6及存储器库3至15的数据以及来自RAM偏移量7及存储器库0至2的数据将被取出,且写入至目标通道(DST)0至15。为了表明牵涉读取/写入连续操作,此地址被提供为源地址1(寄存通道0,Rs.0),且加上目前(IMM)范围以产生最后地址(ADDR)。
读取/写入环绕操作
参阅图9,另一共享存储器存取技术是针对有关于读取/写入环绕操作,其中,RAM偏移量维持不变。关于此实施例,将被读取或写入的数据配置成跨越共享存储器112中的数个RAM存储器库或通道。读取/写入地址由一EU指令所指示,且指向共享存储器112内通道为基础的标量数据的起始位置。举例来说,地址0b0110-0011指向共享存储器112中的RAM偏移量6与存储器库3。对于后续的每一32-位标量数据,通道或存储器库偏移量以1来增加,且朝着第16个RAM存储器库而环绕。对于此读取/写入操作,RAM偏移量维持不变。在图9所示的例子中,32-位数据的16个存储器库跨越RAM偏移量6与存储器库3至15,且环绕至存储器库0至2。在这些共享存储器地址的数据被取出,且写入目标通道(DST)0至15。在一些实施例中,此地址被提供为源地址1(寄存通道0,Rs.0),且加上(IMM)范围以产生最后地址(ADDR)。
读取/写入存取槽环绕操作
参阅图10,其表示读取/写入存取槽环绕操作。对于读取写入存取槽环绕操作,数据根据出于一存取槽观点及一通道观点的环绕操作而读取自或写入至共享存储器。尤其是,在一已知存取槽中,执行通道环绕。例如,对于包括4个存储器库的存取槽1002,一通道环绕包括在一已知存取槽中在到达第4个通道后而环绕回第1个通道。例如,涉及一特定存取槽(例如存取槽2)的一通道环绕可包括存取通道3及4且接着存取1及2。同样地,一存取槽环绕包括在到达在共享存储器112中的最后一个存取槽后而环绕回至第一个存取槽。参阅图10,其表示4个存取槽。在到达第4个存取槽1002后而向左移动,接着存取第1个存取槽。一跨步环绕包括在到达共享存储器112中的最大RAM偏移量后而环绕回第一个跨步或者RAM偏移量。根据一实施,写入地址由一EU指令以操作数类型来指示,且指向共享存储器112中的RAM偏移量。
在此实施例中,实施两个拌和文件以提供一个4-通道存取槽为基础的循环位移量(2位,0~3)以及在存取操循环位移量(2位,0~3)中的通道,以提供能指定关于数据的特定拌和类型的适应性。假设RAM偏移量数值等于6,等于1的存取槽环绕数值与通道环绕数值导致数值“S”写入至图10所示的位置。因此,对于此共享存储器操作,数据的环绕具有两个观点,一个是关于存取槽环绕,而另一个是关于通道环绕。所导致的类型也如图所示。
读取/写入环绕存取槽增量操作
读取/写入环绕存取槽操作的一种变化是涉及一增量操作,在此称为读取/写入环绕存取槽增量操作,参阅图11,由EU指令所提供的读取/写入地址指向共享存储器内的RAM偏移量。如上述读取/写入环绕存取槽操作,包含两个额外的拌和文件以提供一个4-通道存取槽为基础的循环位移量(2位,0~3)以及在存取槽循环位移量(2位,0~3)中的通道。此外,也包含一跨步数值,以允许在RAM偏移量方向上存取共享存储器112。在所示的一非限制的例子,指定等于1的存取槽环绕数值、等于2的通道环绕数值、以及等于2的跨步环绕数值。即是,对于在共享存储器112中每一标量数值而言,RAM偏移以跨步环绕数值所指的量来增加。
读取环绕存取槽环绕增量操作
参阅图12,另一操作为伴随滑动增量的读取环绕/存取槽环绕操作,其调用来存取共享存储器112。关于此操作,由一EU指令提供读取操作,其指向在共享存储器中的一RAM偏移量。同样地,包含两个额外的拌和文件以提供一个4-通道存取槽为基础的循环位移量(2位,0~3)以及在在一已知的存取槽(2位,0~3)中的通道为基础的循环位移量。在此操作中,跨步环绕数值指示一RAM偏移量以进行往返改变。参阅图1的共享存储器112,为了详细说明,假设共享存储器112以一2D阵列来制作。
跨步数值用来提供在共享存储器112的垂直或Y方向上的数据读取或写入。应注意到此操作提供对数据的任何非对齐区块的存取。例如,当执行像移动补偿的这种处理时,则可涉及存取非对齐区块。关于此点,一数据区块(例如不符合在共享存储器112内一像素区块的一连续部分的4x4区块)可有效地读取或写入至共享存储器而不需以一连续方式来逐个处理每一数据区块。通过存取槽环绕操作、通道环绕操作、以及跨步环绕操作的使用,可存取在共享存储器内的数据。如所示的非限制的例子,其指明等于1的存取槽环绕数值、等于2的通道环绕数值、以及等于4的跨步环绕数值。
当自共享存储器112读取数据且入至一共通寄存器文件(common registerfile,CRF)302时,可能需要额外的拌和来进一步配置数据以在共通寄存器文件302中处理。关于这点,一些实施例还包括图3B之一输出拌和模块310,其支持三种拌和类型:垂直类型、水平类型、水平拌和类型。对于如同视频解码转换的操作,可能必须在相邻的四个4x4区块上执行4x4或8x8转移。第13-14图说明由输出拌和模块310所执行的水平操作以及水平拌和操作。
如图所示,数据由系统存储器101载入至共享存储器112,以作为包括对准的4x4数据区块的1D阵列。数据可通过配置输出拌和模块310以在水平模块下操作而读取自共享存储器112以作为一对准的4x4区块。此数据接着写入至共通寄存器文件302。关于此点,输出拌和模块310允许任何四个4x1或1x4区块被撷取且写入至共通寄存器文件302而不会发生冲突。同样地,任何两个8x1或1x8区块可被撷取而不会发生冲突。参阅图14,输出拌和模块310可支持一水平拌和类型,藉此使得读取自系统存储器101且存储至共享存储器112的数据在写入至共通寄存器文件302之前经历了一水平拌和。
这里所述的任何元件包括软件或编码,且可收录于由一指令执行系统所使用或与一指令执行系统所连接的任何计算机可读介质,例如在一计算机系统或任何系统内的处理器。在本说明书的内容中,一计算机可读取媒介可以是任何实体媒体,其可包含、存储、或维持由一指令执行系统所使用或与一指令执行系统所连接的软件或编码。例如,一计算机可读介质可存储由一处理装置(例如图1的图形处理器102)所执行的一或多个程序。
例如但并非限制,计算机可读介质可以是电子、磁性、光学、或半导体系统、设备、或装置。计算机可读介质的更具体例子可包括下列:具有一或多导线的电子连接、可携式计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、可抹除可编程只读存储器(EPROM、EEPROM、或快闪存储器)、以及便携式光盘只读存储器(CDROM)。
本发明虽以优选实施例揭露如上,然其并非用以限定本发明的范围,本领域技术人员在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视所附权利要求书所界定者为准。

Claims (18)

1.一种存取方法,用以存取一图形处理单元中的一共享存储器,该存取方法包括:
判断将读取自该共享存储器的一数据是否对齐该共享存储器的一边界,其中,该数据包括多个数据区块;
判断即将被安排来处理的所述数据区块所采用的一混合类型;
根据该数据是否对齐该共享存储器的该边界且根据判断获得的该混合类型,决定执行一或多个环绕功能的一顺序;以及
通过执行该一个或多个环绕功能以及读取所述数据区块来存取该共享存储器,以根据该混合类型来建立该数据。
2.如权利要求1所述的存取方法,其中,该共享存储器包括多个存储器库以及多个偏移量。
3.如权利要求2所述的存取方法,其中,所述存储器库被分组成多个存取槽,且所述存取槽根据多个存取槽数值来存取。
4.如权利要求3所述的存取方法,其中,所述偏移量根据多个跨步数值而往返改变。
5.如权利要求3所述的存取方法,其中,通过执行该一个或多个环绕功能以及读取所述数据区块来存取该共享存储器的步骤包括以下一或多个:
一存取槽环绕;
一通道环绕;以及
一跨步环绕。
6.一种共享存储器系统,包括:
一共享存储器,耦接一运算着色器以及在一图形处理单元(graphicsprocessing unit,GPU)管线中的多个元件;以及
一存储器控制器,判断关于该共享存储器而将被存取的数据是否对齐该共享存储器的一边界,其中,且该数据包括多个区块,该存储器控制器包括;
一混合模块,用以判断即将被安排来处理的所述多个区块所采用的一类型;以及
一存储器存取模块,用以根据将被存取的数据是否对齐该共享存储器的边界且根据该类型来存取该共享存储器,其中,该存储器存取模块使用一或多个环绕操作来存取该共享存储器。
7.如权利要求6所述的共享存储器系统,其中,该共享存储器的该边界包括以下的任一个:
由该共享存储器的尺寸所定义的边界;以及
由该共享存储器内多个像素区块所定义的边界。
8.如权利要求6所述的共享存储器系统,其中,该共享存储器包括多个水平存储器库以及多个垂直偏移量。
9.如权利要求8所述的共享存储器系统,其中,所述水平存储器库被划分为多个存取槽,且每一该存取槽包括一既定数量的所述水平存储器库。
10.如权利要求8所述的共享存储器系统,其中,所述垂直偏移量被划分成多个跨步。
11.如权利要求6所述的共享存储器系统,其中,该存储器存取模块通过以一顺序执行该一个或多个环绕操作来存取该共享存储器,且该顺序以该数据的该类型为依据。
12.如权利要求6所述的共享存储器系统,其中,所述环绕操作包括:
一存取槽环绕;
一通道环绕;以及
一跨步环绕。
13.如权利要求6所述的共享存储器系统,其中,存取该共享存储器包括读取自该共享存储器以及写入至该共享存储器中的一个。
14.如权利要求6所述的共享存储器系统,其中,该存储器存取模块还用来将读取自该共享存储器的数据写入至一共通寄存器文件,且根据将数据写入至该共通寄存器文件,该混合模块对被写入的数据执行一混合功能。
15.如权利要求14所述的共享存储器系统,其中,该混合功能包括以下的任一个:
一水平混合操作;以及
一垂直混合操作。
16.一种存取方法,用以存取一图形处理单元中的一共享存储器,该存取方法包括:
判断在该共享存储器中被实施将执行的存储器操作的一数据是否对齐该共享存储器的一边界;
判断在该共享存储器中将被处理的该数据的一类型,其中,该数据被划分成多个存取槽、多个通道、以及多个跨步;
根据该类型,决定执行多个存取槽环绕、多个通道环绕、以及多个跨步环绕中的一个或多个的一顺序;以及
根据该顺序来执行所述存取槽环绕、所述通道环绕、以及所述跨步环绕中的一个或多个,
其中,反应于判断出该数据非对齐该共享存储器的该边界,根据该顺序来执行所述存取槽环绕、所述通道环绕、以及所述跨步环绕中的一个或多个。
17.如权利要求16所述的存取方法,其中,该共享存储器的该边界包括以下一或多个:
由该共享存储器的尺寸所定义的边界;以及
由该共享存储器内多个像素区块所定义的边界。
18.如权利要求16所述的存取方法,其中,根据该顺序来执行所述存取槽环绕、所述通道环绕、以及所述跨步环绕中的一个或多个的步骤,由指定多个存取槽环绕数值、多个通道环绕数值、以及多个跨步环绕数值的一或多个指令来开始实施。
CN201110282817.9A 2010-10-15 2011-09-22 存取方法以及共享存储器系统 Active CN102354300B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/905,595 US8547385B2 (en) 2010-10-15 2010-10-15 Systems and methods for performing shared memory accesses
US12/905,595 2010-10-15

Publications (2)

Publication Number Publication Date
CN102354300A CN102354300A (zh) 2012-02-15
CN102354300B true CN102354300B (zh) 2015-01-07

Family

ID=45577866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110282817.9A Active CN102354300B (zh) 2010-10-15 2011-09-22 存取方法以及共享存储器系统

Country Status (3)

Country Link
US (1) US8547385B2 (zh)
CN (1) CN102354300B (zh)
TW (1) TWI460678B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9299124B2 (en) * 2012-06-07 2016-03-29 Qualcomm Incorporated Padding for multi-channel memory
US9747107B2 (en) * 2012-11-05 2017-08-29 Nvidia Corporation System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
US9478000B2 (en) * 2013-09-27 2016-10-25 Intel Corporation Sharing non-page aligned memory
KR102202575B1 (ko) 2013-12-31 2021-01-13 삼성전자주식회사 메모리 관리 방법 및 장치
KR102521654B1 (ko) * 2016-01-25 2023-04-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
WO2017129325A1 (en) * 2016-01-29 2017-08-03 Fotonation Limited A convolutional neural network
US9665799B1 (en) * 2016-01-29 2017-05-30 Fotonation Limited Convolutional neural network
US10497089B2 (en) * 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
US10310856B2 (en) 2016-11-09 2019-06-04 Arm Limited Disabling thread execution when executing instructions in a data processing system
US10127626B1 (en) * 2017-07-21 2018-11-13 Arm Limited Method and apparatus improving the execution of instructions by execution threads in data processing systems
WO2020103766A1 (en) * 2018-11-23 2020-05-28 Huawei Technologies Co., Ltd. Filter independent l1 mapping of convolution data into general purpose register
CN111352723A (zh) * 2018-12-21 2020-06-30 创发信息科技(苏州)有限公司 跨进程共享存储器动态分配的方法
US20230289304A1 (en) * 2022-03-10 2023-09-14 Nvidia Corporation Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101061460A (zh) * 2004-09-21 2007-10-24 皇家飞利浦电子股份有限公司 用于混移运算的微处理器设备和方法
CN101211315A (zh) * 2006-12-28 2008-07-02 英特尔公司 利用多区块访问存储器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI267036B (en) * 2005-02-24 2006-11-21 Asustek Comp Inc Method and apparatus for capturing full-screen frames
TWI281636B (en) * 2005-08-18 2007-05-21 Silicon Integrated Sys Corp Motherboard and computer system with multiple integrated graphics processors and related method
US7872657B1 (en) * 2006-06-16 2011-01-18 Nvidia Corporation Memory addressing scheme using partition strides
US7898551B2 (en) * 2006-06-20 2011-03-01 Via Technologies, Inc. Systems and methods for performing a bank swizzle operation to reduce bank collisions
TWI358044B (en) * 2007-01-24 2012-02-11 Via Tech Inc Image revealing method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101061460A (zh) * 2004-09-21 2007-10-24 皇家飞利浦电子股份有限公司 用于混移运算的微处理器设备和方法
CN101211315A (zh) * 2006-12-28 2008-07-02 英特尔公司 利用多区块访问存储器

Also Published As

Publication number Publication date
US8547385B2 (en) 2013-10-01
CN102354300A (zh) 2012-02-15
TWI460678B (zh) 2014-11-11
TW201220246A (en) 2012-05-16
US20120092356A1 (en) 2012-04-19

Similar Documents

Publication Publication Date Title
CN102354300B (zh) 存取方法以及共享存储器系统
EP3286721B1 (en) Virtual image processor instruction set architecture (isa) and memory model and exemplary target hardware having a two-dimensional shift array structure
US10334194B2 (en) Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register
CN107438860B (zh) 用于高性能功率高效的可编程图像处理的架构
US20210165656A1 (en) Two dimensional masked shift instruction
US9785423B2 (en) Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
CN102016926B (zh) 具有混合精度指令执行的可编程串流处理器
US9978116B2 (en) Core processes for block operations on an image processor having a two-dimensional execution lane array and a two-dimensional shift register
KR20180100374A (ko) 이미지 프로세서용 컴파일러 관리 메모리
US7466318B1 (en) Avoiding unnecessary uncovered texture fetches
US10996988B2 (en) Program code transformations to improve image processor runtime efficiency
TWI670968B (zh) 影像處理器輸入輸出單元
CN109643463A (zh) 预设图形处理器内的分级式深度逻辑
KR20190107101A (ko) 지원 내부 네트워크 및 구성 가능한 개수의 활성 코어들을 갖는 이미지 프로세서
CN101271584A (zh) 可编程图形处理单元计算核心的常量缓冲的方法和系统
CN109844802A (zh) 用于在图形处理器中提高线程并行性的机制
TW201724010A (zh) 對於具有較寬單指令多資料(simd)執行寬度之3d管線增加執行緒酬載的技術
WO2016148821A1 (en) Corner texel addressing mode
US20210157600A1 (en) Issuing execution threads in a data processor
WO2016204887A1 (en) Hierarchical quadrant based coverage testing for rasterization
JP4749824B2 (ja) グラフィックスシステム
CN117546199A (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
C14 Grant of patent or utility model
GR01 Patent grant