CN116303129A - 基于本地共享内存的Varying变量存储方法、装置及存储介质 - Google Patents
基于本地共享内存的Varying变量存储方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116303129A CN116303129A CN202310262986.9A CN202310262986A CN116303129A CN 116303129 A CN116303129 A CN 116303129A CN 202310262986 A CN202310262986 A CN 202310262986A CN 116303129 A CN116303129 A CN 116303129A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- varying variable
- local shared
- varying
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于本地共享内存的Varying变量存储方法、装置及存储介质,通过使用独立的本地共享内存来存放Varying变量以提升Shader程序访问Varying变量的效率,同时复用现有Cache技术加速Varying变量的访问,进而解决了已有技术中Varying变量访问效率低,数据通路长,栈空间大小固定的技术缺陷。
Description
技术领域
本发明涉及数据存储、交换技术领域,尤其涉及一种基于本地共享内存的Varying变量存储方法、装置及存储介质。
背景技术
当前MVP微架构中使用空间大小固定的片内local memory(SRAM)来存放线程栈和Varying变量,在Local memory中存放Varying变量的技术方案存在一定的缺陷:(1)数据通路比较长,从DDR加载Varying变量时需要先载入寄存器,再从寄存器中存入Local memory,当GPU Shader程序使用Varying变量时又需要从Local memory中载入寄存器,存在反复加载的问题;(2)由于跟线程栈共用同一块空间,需要给Varying变量和线程栈分配固定空间,在使用较少Varying变量的情况下,未使用的空间无法被线程栈复用,存在空间浪费。
发明内容
本发明针对上述问题,提供了一种基于本地共享内存的Varying变量存储方法、装置及存储介质,旨在用独立的本地共享内存(Local SharedMemory)来存放Varying变量的方案代替原有Varying变量存在Local Memory中的方案。
本发明的第一方面,提供了一种基于本地共享内存的Varying变量存储方法,方法包括以下步骤:
基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
当GPU Shader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
本发明进一步的技术方案是:当GPU Shader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
本发明的第二方面,一种基于本地共享内存的Varying变量存储装置,包括:
Varying变量存放模块,用于基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
Varying变量访问模块,用于当GPU Shader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
本发明进一步的技术方案是:所述Varying变量访问模块中,当GPU Shader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
本发明的第三方面,提供了一种基于本地共享内存的Varying变量存储装置,包括:处理器;以及存储器,其中,所述存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行上述基于本地共享内存的Varying变量存储方法。
本发明的第四方面,一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述基于本地共享内存的Varying变量存储方法。
本发明提供的一种基于本地共享内存的Varying变量存储方法、装置及存储介质,通过使用独立的本地共享内存(Local Shared Memory)来存放Varying变量以提升Shader程序访问Varying变量的效率,同时复用现有Cache技术加速Varying变量的访问,进而解决了已有技术中Varying变量访问效率低,数据通路长,栈空间大小固定的技术缺陷。另外,对于原有Local Memory,由于只存放线程栈,没有了固定地址分配的限制,可以根据线程栈的实际大小及线程数量,在编译期间灵活配置使用。
附图说明
图1是本发明实施例中原有的Varying变量存储方法示意图;
图2是本发明实施例中基于本地共享内存的Varying变量存储方法示意图;
图3是本发明实施例中基于本地共享内存的Varying变量存储装置结构示意图;
图4是本发明实施例中计算机设备的架构图。
具体实施方式
为进一步对本发明的技术方案作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的步骤。
本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或硬件获取模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本发明实施例针对一种基于本地共享内存的Varying变量存储方法、装置及存储介质,提供了如下实施例:
基于本发明的实施例1
本实施例用于说明基于本地共享内存的Varying变量存储方法,包括:
基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
当GPU Shader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
优选地,当GPU Shader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
具体实施过程中,旨在用独立的本地共享内存(Local Shared Memory)来存放Varying变量的方案代替原有Varying变量存在Local Memory中的方案。原有技术方案如图1所示。Varying需要先被全部加载到Local Memory中,这个过程就需要先经过Cache和Register再存入Local Memory中。接下来在GPU Shader使用Varying变量的时候,再从Local Memory中加载到寄存器中。这个过程中需要反复使用load和store指令来加载存储Varying变量,造成指令数量偏多,且运行效率低下的后果。因此通过新增独立的LocalShared Memory来存储Varying变量可以解决前述原有技术方案的这种缺陷。如图2所示,基于当前MVP微架构的设计,增加一个独立Local Shared Memory。同时,增加一条专门的指令来加载DDR中的Varying变量直接到Local Shared Memory,不使用load和store指令通过寄存器加载。在GPU Shader需要使用Varying变量时,仍然使用load和store指令直接访问Local Shared Memory。并且由于Local Shared Memory复用了当前已有的Cache,可以进一步提升访问效率。优化后:Varying变量的存储过程变为专门的Varying变量加载指令负责将Varying变量从DDR中直接搬到Local Shared Memory中,不经过Cache和Register。Varying变量的访问过程变为通过load/store指令经过Cache加载到Register中直接使用。对于Local Memory,由于只存放线程栈,没有了固定地址分配的限制,可以根据线程栈的实际大小及线程数量,在编译期间灵活配置使用。
基于本发明的实施例2
本发明实施例二所提供的一种基于本地共享内存的Varying变量存储装置300可执行本发明实施例1所提供的基于本地共享内存的Varying变量存储方法,具备执行方法相应的功能模块和有益效果,该装置可以由软件和/或硬件(集成电路)的方式实现,并一般可集成于服务器或终端设备中。图3是本发明实施例2中的一种基于本地共享内存的Varying变量存储装置300的结构示意图。参照图3,本发明实施例的基于本地共享内存的Varying变量存储装置300具体可以包括:
Varying变量存放模块310,用于基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
Varying变量访问模块320,用于当GPU Shader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
在一些优选实施例中,所述Varying变量访问模块320中,当GPU Shader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
除了上模块以外,装置300还可以包括其他部件,然而,由于这些部件与本公开实施例的内容无关,因此在这里省略其图示和描述。
一种基于本地共享内存的Varying变量存储装置300的具体工作过程参照上述一种基于本地共享内存的Varying变量存储方法实施例1的描述,不再赘述。
基于本发明的实施例3
根据本发明实施例的系统也可以借助于图4所示的计算设备的架构来实现。图4示出了该计算设备的架构。如图4所示,计算机系统410、系统总线430、一个或多个CPU 440、输入/输出420、存储器450等。存储器450可以存储计算机处理和/或通信使用的各种数据或文件以及CPU所执行包括实施例1方法的程序指令。图4所示的架构只是示例性的,在实现不同的设备时,根据实际需要调整图4中的一个或多个组件。存储器450作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于本地共享内存的Varying变量存储方法对应的程序指令/模块(例如,基于本地共享内存的Varying变量存储装置300中的Varying变量存放模块310和Varying变量访问模块320)。一个或多个CPU 440通过运行存储在存储器450中的软件程序、指令以及模块,从而执行本发明系统的各种功能应用以及数据处理,即实现上述的基于本地共享内存的Varying变量存储方法,该方法包括:
基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
当GPU Shader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
当然,本发明实施例所提供的服务器,其处理器不限于执行如上所述的方法操作,还可以执行本发明任意实施例所提供的基于本地共享内存的Varying变量存储方法中的相关操作。
存储器450可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器450可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器450可进一步包括相对于一个或多个CPU 440远程设置的存储器,这些远程存储器可以通过网络连接至装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入/输出420可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输入/输出420还可包括显示屏等显示设备。
基于本发明的实施例4
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中所述的基于本地共享内存的Varying变量存储方法,
本发明实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
存储介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
综合上述各实施例提供的基于本地共享内存的Varying变量存储方法、装置及存储介质,通过使用独立的本地共享内存(Local Shared Memory)来存放Varying变量以提升Shader程序访问Varying变量的效率,同时复用现有Cache技术加速Varying变量的访问,进而解决了已有技术中Varying变量访问效率低,数据通路长,栈空间大小固定的技术缺陷。另外,对于原有Local Memory,由于只存放线程栈,没有了固定地址分配的限制,可以根据线程栈的实际大小及线程数量,在编译期间灵活配置使用。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (6)
1.一种基于本地共享内存的Varying变量存储方法,其特征在于,方法包括:
基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
当GPUShader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
2.根据权利要求1所述的基于本地共享内存的Varying变量存储方法,其特征在于,当GPUShader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
3.一种基于本地共享内存的Varying变量存储装置,其特征在于,包括:
Varying变量存放模块,用于基于MVP微架构中的Varying变量存放,增加一个独立的本地共享内存,并相应地增加一条指令用于加载所述Varying变量直接到所述本地共享内存;
Varying变量访问模块,用于当GPUShader需访问所述Varying变量时,使用load或store指令访问所述本地共享内存。
4.根据权利要求3所述的基于本地共享内存的Varying变量存储装置,其特征在于,所述Varying变量访问模块中,当GPUShader需访问所述Varying变量时,通过load或store指令访问所述本地共享内存并经过缓存加载到寄存器中直接使用。
5.一种基于本地共享内存的Varying变量存储装置,其特征在于,包括:处理器;以及存储器,其中,所述存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行权利要求1-2中任一项所述的基于本地共享内存的Varying变量存储方法。
6.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-2中任一项所述的基于本地共享内存的Varying变量存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310262986.9A CN116303129A (zh) | 2023-03-17 | 2023-03-17 | 基于本地共享内存的Varying变量存储方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310262986.9A CN116303129A (zh) | 2023-03-17 | 2023-03-17 | 基于本地共享内存的Varying变量存储方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303129A true CN116303129A (zh) | 2023-06-23 |
Family
ID=86786618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310262986.9A Pending CN116303129A (zh) | 2023-03-17 | 2023-03-17 | 基于本地共享内存的Varying变量存储方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303129A (zh) |
-
2023
- 2023-03-17 CN CN202310262986.9A patent/CN116303129A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102018126150A1 (de) | Einrichtung, verfahren und systeme für multicast in einem konfigurierbaren räumlichen beschleuniger | |
CN107391400B (zh) | 一种支持复杂访存指令的内存扩展方法和系统 | |
CN111078287B (zh) | 一种向量运算协处理方法与装置 | |
US11231852B2 (en) | Efficient sharing of non-volatile memory | |
CN111208933B (zh) | 数据访问的方法、装置、设备和存储介质 | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
CN112035397A (zh) | 包括fpga的电子系统及其操作方法 | |
CN106557436A (zh) | 终端的内存压缩功能使能方法及装置 | |
EP3846036B1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
US8397217B2 (en) | Integrating templates into tests | |
CN111158756A (zh) | 用于处理信息的方法和装置 | |
US10083125B2 (en) | Method to efficiently implement synchronization using software managed address translation | |
US11748108B2 (en) | Instruction executing method and apparatus, electronic device, and computer-readable storage medium | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
KR20210095599A (ko) | 명령 수행 결과를 라이트백하기 위한 장치 및 방법, 프로세싱 장치 | |
CN103377060B (zh) | 一种计算机程序加速方法和系统 | |
CN116303129A (zh) | 基于本地共享内存的Varying变量存储方法、装置及存储介质 | |
CN111352644A (zh) | 小程序更新方法、装置、服务器及存储介质 | |
CN103809987A (zh) | 一种soc芯片更换自身内部fpga ip程序的方法 | |
US10310857B2 (en) | Systems and methods facilitating multi-word atomic operation support for system on chip environments | |
CN110968339A (zh) | 前端构建工具的方法、装置以及电子设备 | |
CN114764354B (zh) | 基于paas的依赖管理方法、装置、电子设备及介质 | |
CN105404591A (zh) | 处理器系统及其存储器控制方法 | |
CN113961452A (zh) | 硬中断方法和相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |