CN114201444B - 用于存储管理的方法、介质、程序产品、系统和装置 - Google Patents
用于存储管理的方法、介质、程序产品、系统和装置 Download PDFInfo
- Publication number
- CN114201444B CN114201444B CN202111480059.1A CN202111480059A CN114201444B CN 114201444 B CN114201444 B CN 114201444B CN 202111480059 A CN202111480059 A CN 202111480059A CN 114201444 B CN114201444 B CN 114201444B
- Authority
- CN
- China
- Prior art keywords
- page
- value
- reference counter
- data
- chip 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 82
- 238000007726 management method Methods 0.000 claims description 19
- 230000000903 blocking effect Effects 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 description 26
- 238000010586 diagram Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 13
- 238000013459 approach Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述了一种用于存储管理的方法、介质、程序产品、系统和装置。在本公开的一些实施例中,确定应用程序所要访问的页,页中存储有数据;基于要被启动来运行所述应用程序的处理引擎的数目,设置所述页对应的第一引用计数器的值;基于所述应用程序在所述处理引擎上对页的访问状态来更新所述第一引用计数器的值;以及基于所述第一引用计数器的更新后的值,释放或替换所述页存储的数据。通过对第一引用计数器的维护,可以提高对页的重新使用率,并且提高片上存储器的存储空间的重新使用率。
Description
技术领域
本公开的实施例一般地涉及电子领域,更具体而言涉及一种用于存储管理的方法、介质、程序产品、系统和装置。
背景技术
目前已经提出了诸如图形处理器(GPU)之类处理器系统,此类处理系统中的多个处理器核可以提供并行的多线程处理方式,因而可以提供更高的处理速度。这些处理系统可以将复杂的计算分解为较小的任务,并且由多核、多线程进行并行处理,从而减少处理时间。
在一些情形中,程序要处理的数据(例如张量数据)的数据量可能较大,而片上存储器(例如,L2高速缓存)的容量有限,因此无法同时将大量数据加载到片上存储器,这将会影响到数据的并行处理效率。
发明内容
本公开的实施例提供了一种用于存储管理的方案。
在第一方面,提供了一种存储管理方法。该方法包括确定应用程序所要访问的页,页中存储有数据;基于要被启动来运行应用程序的处理引擎的数目,设置页对应的第一引用计数器的值;基于应用程序在处理引擎上对页的访问状态来更新第一引用计数器的值;以及基于第一引用计数器的更新后的值,释放或替换页中的数据。
根据该方案,第一计数器的值可以反映出页被PE的使用情况,例如还要被多少PE使用以及有多少PE已经使用过这个页,避免了在页未被使用完毕就被删除或替换。通过对第一引用计数器的维护,可以提高对页的重新使用率,并且提高片上存储器的存储空间的重新使用率。
在一些实施例中,该方法还包括:基于页中的数据在片上存储器或片外存储器中的就绪状态,设置页对应的第二引用计数器的值;以及基于第二引用计数器的值来在处理引擎上运行应用程序。
在一些实施例中,设置页对应的第二引用计数器的值包括:如果页中的数据在片上存储器或片外存储器中未就绪,将第二引用计数器设置为第一值;以及如果页中的数据在片上存储器或片外存储器中已就绪,将第二引用计数器设置为第二值。
在一些实施例中,运行应用程序包括:如果第二引用计数器为第一值,阻止应用程序在处理引擎上对页执行访问操作;以及如果第二引用计数器为第二值,允许应用程序在处理引擎上对页执行访问操作。
在一些实施例中,设置页对应的第一引用计数器的值包括:将第一引用计数器的值设置为等于处理引擎的数目。
在一些实施例中,更新第一引用计数器的值包括:如果应用程序在处理引擎中的一个处理引擎上对所述页的访问操作完成,将第一引用计数器的值减一。
在一些实施例中,释放或替换页中的数据包括:如果第一引用计数器的更新后的值指示没有要要对页执行访问操作的处理引擎,从片上存储器释放页或替换页中的数据。
在一些实施例中,另一应用程序要访问页,并且从片上存储器释放页或替换页中的数据包括:如果第一引用计数器的更新后的值指示没有要要对页执行访问操作的处理引擎,并且第二引用计数器的值指示页可访问,用另一应用程序要访问的数据替换页中的数据。
在一些实施例中,页在页表中具有对应的页表项,并且被映射到物理存储空间中的物理地址。
在本公开的第二方面,提供一种计算机可读存储介质。存储多个程序,多个程序被配置为一个或多个处理单元执行,多个程序包括用于执行第一方面的方法的指令。
在本公开的第三方面,提供一种计算机程序产品。计算机程序产品包括多个程序,多个程序被配置为一个或多个处理单元执行,多个程序包括用于执行第一方面的方法的指令。
在本公开的第四方面,提供一种加速器系统。加速器系统包括:处理单元;以及与处理单元耦合的存储器,存储器具有存储于其中的指令,指令在被处理单元执行时执行第一方面的方法。
在本公开的第五方面,提供一种用于存储管理的装置。该装置包括页确定单元,被配置为确定应用程序所要访问的页,页中存储有数据;第一计数器设置单元,被配置为基于要被启动来运行应用程序的处理引擎的数目,设置页对应的第一引用计数器的值;第一计数器更新单元,被配置为基于应用程序在处理引擎上对页的访问状态来更新第一引用计数器的值;以及数据释放或替换单元,被配置为基于第一引用计数器的更新后的值,释放或替换页中的数据。
在一些实施例中,该装置还包括:第二计数器设置单元,被配置为基于页中的数据在片上存储器或片外存储器中的就绪状态,设置页对应的第二引用计数器的值;以及程序运行单元,被配置为基于第二引用计数器的值来在处理引擎上运行应用程序。
在一些实施例中,第二计数器设置单元包括:第一值设置单元,被配置为如果页中的数据在片上存储器或片外存储器中未就绪,将第二引用计数器设置为第一值;以及第二值设置单元,被配置为如果页中的数据在片上存储器或片外存储器中已就绪,将第二引用计数器设置为第二值。
在一些实施例中,程序运行单元包括:访问阻止单元,被配置为如果第二引用计数器为第一值,阻止应用程序在处理引擎上的执行访问操作;以及访问开始单元,被配置为如果第二引用计数器为第二值,允许应用程序在处理引擎上对页执行访问操作。
在一些实施例中,第一计数器设置单元被配置为:将第一引用计数器的值设置为等于处理引擎的数目。
在一些实施例中,第一计数器更新单元被配置为:如果应用程序在处理引擎中的一个处理引擎上对页的访问操作完成,将第一引用计数器的值减一。
在一些实施例中,数据释放或替换单元被配置为:如果第一引用计数器的更新后的值指示没有要对页执行访问操作的处理引擎,从片上存储器释放页或替换页中的数据。
在一些实施例中,另一应用程序要访问该页,并且数据释放或替换单元被配置为:如果第一引用计数器的更新后的值指示没有要对页执行访问操作的处理引擎,并且第二引用计数器的值指示页可访问,用所述另一应用程序要访问的数据替换所述页中的数据。
提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的芯片示意框图;
图3示出了根据本公开的一些实施例的并行处理引擎结构的示意框图;
图4示出了根据本公开的一些实施例的片上虚拟存储空间的示例;
图5示出了根据本公开的一些实施例的存储管理的方法的示意流程图;
图6示出了根据本公开的另一些实施例的存储管理的方法的示意流程图;
图7示出了根据本公开的一些实施例的用于存储管理的装置的示意框图;以及
图8示出了根据本公开的另一些实施例的用于存储管理的装置的示意框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中示出了本公开的优选实施例,然而应该理解,本公开可以以各种形式实现而不应被这里阐述的实施例限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一些实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所提及的,在应用程序的执行时要访问的数据(例如张量数据)的数据量可能较大,而片上存储器(例如,L2高速缓存)的容量有限,因此无法同时将大量数据加载到片上存储器,这将会影响到数据的并行处理效率。
在本公开的一些实施例中,提出了片上虚拟存储的方案。不同于利用二级存储器件(如硬盘、远程存储器等)来扩展主存空间的虚拟存储技术,在本公开的实施例中,将加速器系统的片上存储器和片外存储器合并为统一的虚拟存储空间。在该虚拟存储空间中对应用程序要访问的数据进行寻址,这样为应用程序提供了更大的统一可寻址的存储空间,扩展了可使用的内存空间,提高并行处理效率,特别是对于诸如张量数据等大尺寸数据的并行处理效率。
图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。示例环境100例如可以是诸如计算机之类的具有计算能力的电子设备。在一些实施例中,示例环境100例如包括中央处理器(CPU)20、系统存储器10、北桥/存储器桥30、加速器系统40、设备存储器50和南桥/输入输出(IO)桥60。系统存储器10例如可以是诸如动态随机存取存储器(DRAM)之类的易失性存储器。北桥/存储器桥30例如集成了内存控制器、PCIe控制器等,其负责CPU 20和高速接口之间的数据交换以及桥接CPU 20和南桥/IO桥60。南桥/IO桥60用于计算机的低速接口,例如串行高级技术接口(SATA)控制器等。加速器系统40例如可以包括诸如图形处理器(GPU)和人工智能(AI)加速器等用于对图形、视频等数据进行加速处理的装置或芯片。设备存储器50例如可以是诸如DRAM之类的位于加速器系统40外部的易失性存储器。
在本公开中,设备存储器50也被称为片外存储器,即,位于加速器系统40的芯片外部的存储器。相对而言,加速器系统40的芯片内部也具有易失性存储器,例如一级(L1)高速缓存(cache)以及可选的二级(L2)高速缓存。这将在下文结合本公开的一些实施例具体描述。
虽然在图1中示出了本公开的多个实施例能够在其中实现的一种示例环境100,但是本公开不限于此。本公开的一些实施例也可以在诸如ARM架构和RISC-V架构之类的具有诸如GPU之类的加速器系统的一些应用环境中使用。
图2示出了根据本公开的一些实施例的加速器系统200的示意框图。加速器系统200例如可以是图1中加速器系统40的芯片的一种具体实现方式。加速器系统200例如是诸如GPU之类的加速器系统芯片。在一些实施例中,加速器系统200包括流处理器(SP)210、页表装置220、处理引擎(PE)单元230、直接存储器访问(DMA)控制器240、L1高速缓存(cache)260和L2高速缓存250。
加速器系统200可以由诸如CPU 20之类的主机设备控制,并且接收来自CPU 20的指令。SP 210对来自CPU 20的指令进行分析,并且将经分析的操作指派给PE单元230、页表装置220和DMA控制器240进行处理。
页表装置220维护页表,以用于管理加速器系统200可访问的片上虚拟存储。如下文将详细描述的,在本公开的实施例中,诸如L2高速缓存250之类的片上存储器以及诸如图1中的设备存储器50之类的片外存储器构成虚拟存储系统,具有统一的虚拟寻址空间。页表装置220中的页表可以由SP 210、PE单元230和DMA控制器240共同访问和更新。
PE单元230可以包括一个或多个处理引擎(processing engine,PE)PE_1、PE_2……PE_N,其中N表示大于等于1的整数。每个处理引擎可以与对应的L1高速缓存关联。例如,如图1所示,PE_1可以与L1_1关联,PE_2可以与L1_2关联,等等。PE单元230中的每个PE可以是单指令多线程(SIMT)装置。图3示出了根据本公开一些实施例的SIMT的并行PE结构300的示意图。图3所示的并行PE结构300可以被实现在PE单元230中的PE内。
如图所示,在PE中可以存在一个或多个线程320-1、320-2、…320-M,其中M为大于等于1的整数,每个线程要处理的数据来自相应的缓冲区310-1、310-2、…310-M。PE中的每个线程可以具有自己的寄存器堆(register file),并且每个PE的所有线程还共享一个统一寄存器堆(uniform register file)(未示出)。
多个PE可以并行地执行相同或不同的处理工作,可以并行地进行地址转换和存储器中目标数据的访问,从而减少处理时间。例如,在执行机器学习(DL)等计算任务时,PE可以针对待处理的数据执行排序、卷积等处理。
用户(例如,程序员)可以编写应用程序来实现特定的目的。对于需要较大计算量的应用程序而言,可分别在多个PE处并行地运行应用程序,以分别处理不同的数据部分。应用程序也称为内核程序(kernel)。进一步,可以在每个PE处启动一个或多个线程。每个线程可以在自己的寄存器堆与存储器子系统之间做线程级的数据交换。将会理解,用户可以指定在PE处启动多个(例如,数十、数百个甚至更多个)线程来并行地执行某些操作。每个线程有自己的算数逻辑执行单元并使用自己的存储地址,其采用典型的寄存器存取架构(load-store architecture)。每个执行单元包括一个支持多种数据类型的浮点/定点单元以及一个算数逻辑单元。
大多数的指令执行算数和逻辑算子,例如,浮点和定点数的加、减、乘、除,或者逻辑与、或、非等。操作数来自于寄存器。存储器读写指令可以提供寄存器与片上/片外存储器之间的数据交换。一般地,PE中所有的执行单元可以同步地执行相同指令。通过使用谓词(predicate)寄存器,可以屏蔽部分执行单元,从而实现分支指令的功能。
在一些实施例中,加速器系统200所处理的数据可以是多维张量数据,也可以是一维张量数据。例如,在一些实施例中,张量可以是四维张量,其具有四个维度D1、D2、D3和D4,并且张量在各维上的尺寸可以不同。在另一些实施例中,张量可以是一维、二维、三维或更多维张量,本公开对此不进行限制。
此外,在本公开的实施例中,张量内部可以支持诸如uint8、int8、bfloat16、float16、uint16、int16、float32、int32、uint32以及其他自定义元素类型,本公开对此也不进行限制。对于张量的寻址而言,其以元素为基本单位。例如,如果元素类型为int8,则元素以字节为单位。再例如,如果元素类型为int16,则寻址基本单位为双字节,依此类推。
在典型的计算系统中,片上存储速度更快且功耗更低,但是其容量有限,而片外存储的存取时延更长且功耗更高,其带宽也相对较低。典型地,片上存储一般都设计成高速缓存(cache)且不可显式寻址。在一个典型的计算机系统中,主存一般都是片外存储,其数据存取使用物理地址。
如以上提及的,不同于已有的片上存储映射与管理方式,在本公开的实施例中,使用了虚拟存储的方式来管理片上存储而不是采用L2高速缓存方式,片上存储与片外存储形成可统一寻址的虚拟存储空间,为程序提供了虚拟片上存储视角。应用程序要访问的要访问的数据通过页表来管理,该页表指示数据在虚拟存储空间中的逻辑地址与在片上存储器或片外存储器上的物理地址之间的映射关系。
由此,在应用程序被运行时,借助页表来访问数据,该数据可以被物理存储在片上存储器或片外存储器中。统一的虚拟片上存储空间不仅有利于存储空间管理,也有利于程序的设计和运行。例如,应用程序可以使用逻辑地址来寻址要访问的数据,而不需要知道数据的物理地址信息,也无需知道虚拟存储的数据被存储在哪个物理介质上。这有利于编程人员对要处理的不同数据进行方便、灵活的配置,只需要限定每个应用程序要处理的数据部分对应的逻辑地址即可。程序的运行不需要管理数据的迁移。
下文将借助图4和图5来描述根据本公开的一些实施例的在虚拟存储空间中的存储管理。图4示出了根据本公开的一些实施例的部分的虚拟存储空间400的示意框图。图5示出了存储管理的示例过程500的流程图。过程500可以被实现在加速器系统200中。
虚拟存储空间400被映射到片上存储器和片外存储器。片上存储器指的是加速器系统200的芯片上存储器,例如图2中的L2高速缓存,其可以是静态随机存取存储器(SRAM)或者其他类型的片上存储器。片外存储器例如是加速器系统200的芯片外存储器,例如图1中的设备存储器50,其可以是动态随机存取存储器(DRAM)或者其他类型的片外存储器。
在过程500中,在框510,基于在应用程序的执行时要访问的数据来创建针对虚拟存储空间的页表,例如针对虚拟存储空间400的页表。页表至少指示要访问的数据在虚拟存储空间400中的逻辑地址与在片上存储器或片外存储器上的物理地址之间的映射关系。在框520,在应用程序被运行时,利用页表来访问数据。
在一些实施例中,在加速器系统200中,例如在页表装置220中维护页表。在一些实施例中,SP 210可以接收主机发送的命令序列,以发起应用程序的运行。SP 210可以根据在应用程序的执行时要访问的数据,来创建数据对应的页表,以指示数据的逻辑地址与物理地址之间的映射关系。
在一些实施例中,在不同应用程序中可以灵活定义要访问的数据在虚拟存储空间中的存储结构。具体地,在应用程序的执行时要访问的数据可以按段和页来在虚拟存储空间400中组织。在本文中,“段”有时也称为存储段或数据段,“页”有时也称为存储页或数据页。
数据可以被划分为一个或多个段,并且每个段可以包括一个或多个页。段的数目和大小,页的数目和大小可以根据应用程序来确定。应用程序在每个PE中的运行可以使用一个或多个段,每个段可以包括一个或多个页。在应用程序的运行时要访问的数据可以包括应用程序所要处理的数据,例如张量数据或者其他形式的数据。在应用程序的运行时要访问的数据还可以包括应用程序相关的程序指令。
由于在虚拟存储空间中可以通过逻辑地址来寻址数据在片上存储器或片外存储器中的物理地址,在编写程序时候编程人员不需要关心数据实际的物理存储位置。这给编程人员对数据的段和页的定义提供了极大地灵活度,并且也可以充分利用片上存储空间。在诸如机器学习等处理任务中,可能需要执行较多的矩阵乘法运算。因此,将数据划分为较大的分块(例如,较大的段或页)由不同PE并行执行,将非常有利于提高计算性能。
此外,由于不需要知道数据所在的各个段和页的物理地址信息,编程人员可以在应用程序中通过逻辑地址来指定要处理的数据部分。例如,编程人员只需要配置好在应用程序要处理的总体数据(例如,张量数据)以及结构属性信息,以及各个PE相应要处理的数据部分即可。在加速器系统200上运行程序时可以通过建立页表来将逻辑地址映射到片上或片外存储器的物理地址。
作为示例,在图4中,虚拟存储空间400用于存储具有三个维度D1、D2和D3的张量数据,其示意性示出了单个应用程序数据(程序)存储空间的第一段S1、第二段S2和第三段S3。不同的应用程序可以使用不同数量的段。数据的每个段所具有的尺寸可以不同,因此编程人员可以基于设计需要灵活配置段。在一些实施例中,一个应用程序占用的段的数目可以是有上限的,例如可以规定一个应用程序可以占用最多16个段。
在一些实施例中,在一个段内,还可以设置至少一个页以进一步细分数据。对于张量数据,页的划分可以在任意一个或多个维上实施,并且各维上划分的页数是相互独立的。例如,图4中的段S1,可以具有4个页P[1]、P[2]、P[3]和P[4];第二段S2仅具有一个页,等等。在此,页的大小由应用程序来定义并且是可以是可变的。在本公开的实施例中,每个段所具有的页的数目可以不同,因此编程人员可以基于设计需要灵活配置段内页的尺寸。例如,因为在运行应用程序时,要将整页上的数据加载到片上存储器,因此可以将页的尺寸配置为适于整体存入片上存储器,从而可以充分利用片上存储空间。
进一步,每个段可以由一个或多个PE来访问,包括读取、写入或执行。例如,可以由8个PE(即,PE_1、PE_2、PE_3、PE_4、PE_5、PE_6、PE_7、PE_8)来访问段S1,其中段S1存储这些PE在运行时要处理的张量形式的数据。将会理解,为了提高数据处理性能,在每个PE处可以由多个线程来以并行方式处理数据。例如,在图4中,可以指定段S1的数据由PE_1、PE_2、PE_3、PE_4、PE_5、PE_6、PE_7和PE_8处理。除应用程序要处理的数据之外,段内还可以存储应用程序本身。例如,段S2可以用于存储一个或多个应用程序的程序指令。段S2中存储的程序指令可以由一个或多个PE执行。
在建立页表时,加速器系统200中的SP 210可以页表中建立与数据所划分的页的页标识(也称为“页号”)分别对应的页表项,每个页表项至少指示对应的页在片上存储器或片外存储器上的物理地址之间的映射关系。页的页标识(或页号)由要访问的数据的逻辑地址推导得到。
在定义逻辑地址时,每个段可以具有段标识和基准地址数据,被称为锚点(anchor)或基准点。例如,如果一个段被划分为多个部分,用于在不同PE上执行,基准地址数据可以表示为各个PE指派的数据的起始坐标点。例如,基准地址数据可以是对张量的各个维度的坐标,(0,0,0,0)或(0,4,0,0)。多个PE可以具有相同或不同的基准地址数据。
一个段内的数据可以在该段内相对于基准地址数据进行寻址。一个段内的数据的逻辑地址可以包括所在的段的段标识、基准地址数据和段内偏移地址,其中段内偏移地址可以包括数据所在页的页标识,以及该页在段内相对于基准地址数据的偏移值。
在一些实施例中,在页表中,每个页表项可以包括该页的页标识以及该页被映射到的物理地址,其可以是片上存储器或片外存储器中的物理地址。在一些实施例中,页表中建立的页表项的数目可以是有上限的,其数目可以根据实际应用配置。在一些实施例中,页表被存储在片上存储器中,以便于后续对页表的快速访问。
在页表被建立后,在运行应用程序时,利用页表来访问数据。例如,SP 210可以从主机接收到命令序列,其中包括存储映射信息和其他命令,例如初始化命令等。SP 210可以基于存储映射信息创建页表并存储在页表装置230中。SP 210可以控制应用程序在PE上运行。
在运行时,如果一个PE在运行应用程序时要访问目标段中的数据,该数据所在目标页的页标识(或页号)由逻辑地址推导得到。逻辑地址还更具体用于确定数据在页内的页内偏移地址。页内偏移地址可以用于指示要访问的数据在一个页内的起始位置。PE可以通过页表装置230访问页表,根据页标识定位相应的页表项,在页表项内读取目标页在片上存储器或片外存储器中的物理地址。在一些实现中,PE中可以包括地址转换器,用于执行逻辑地址与物理地址之间的转换。PE可以使用所确定的物理地址来访问片上存储器或片外存储器,以访问对应的数据部分。
在运行应用程序时,通过物理地址和页内偏移地址来访问数据。数据的访问方式可以包括直接访问和间接访问。直接访问指的是无论数据位于片外存储器或片上存储器,可以从片外存储器或片上存储器进行直接访问。间接访问指的是首先将要访问的数据加载到片上存储器,然后再进行访问。间接访问对于存储数据的目标页被映射到片外存储器的情况,需要进行数据从片外到片上的加载。数据的访问方式可以是默认的,或者可以是由程序员根据需要进行设置。
在一些实施例中,在采用直接访问方式的情况下,所构建的页表指示数据在虚拟存储空间中的逻辑地址与在片上存储器或片外存储器上的物理地址之间的映射关系。在运行应用程序时,如果通过所确定的物理地址发现目标页被映射到片外存储器或片上存储器,那么可以基于物理地址和页内偏移地址,直接读取位于片外存储器或片上存储器的目标页的数据,或者可以直接将数据写入片外存储器或片上存储器。例如,如果目标页的数据包括应用程序要处理的数据,可以将要处理的数据从片外存储器或片上存储器读取到寄存器,或者可以将要处理的数据从寄存器写入到片外存储器或片上存储器。又例如,如果目标页的数据包括应用程序的程序指令,可以直接从片外存储器或片上存储器指取程序指令并执行,或者可以直接将程序指令写入到片外存储器或片上存储器。
在一些实施例中,在采用间接访问方式的情况下,首先确保要访问的数据被放入片上存储器,然后再执行后续访问操作。在这种情况下,所构建的页表指示数据在虚拟存储空间中的逻辑地址与在片上存储器的物理地址之间的映射关系。如果在运行应用程序时要对被映射到片外存储器中的目标页进行读取,可以使用目标页在片外存储器中的物理地址,将目标页的数据从片外存储器加载到片上存储器以用于访问。在一些实施例中,SP 210可以指令加速器系统200中的DMA控制器240从片外存储器读取数据并缓存到片上存储器。在一些实施例中,DMA操作与应用程序的运行可以并行操作,以实现流处理。在被加载到片上存储器后,可以通过页表可以确定被加载到片上存储器的目标页的物理地址,并确定要读取的数据的页内偏移地址。可以基于目标页在片上存储器中的物理地址以及所确定的页内偏移地址,从片上存储器读取数据。
在一些实施例中,如果在运行应用程序时要对目标页进行写入,并且目标页被映射到片外存储器,在应用程序运行时目标页的数据可以通过目标页在片上存储器中的物理地址以及所确定的页内偏移地址,被首先写入到片上存储器。在应用程序运行完成后,由SP210使用目标页在片外存储器中的物理地址,将目标页的数据从片上存储器冲刷到片外存储器。例如,SP 210可以通过FLUSH命令来执行数据从片上存储器到片外存储器的冲刷。这样可以释放更多的片上存储空间以供运行时使用。
在一些实施例中,除记录页的逻辑地址与物理地址之间的映射外,页表中的每个页表项还指示对应页的一个或多个引用计数器的值。如下文参考图6更详细描述的,引用计数器的值可以用于管理页的数据相关性,并且每个页表项中的引用计数器的值可以基于对应页在片上存储器或片外存储器上被引用的状态而更新,特别是可以基于以下至少一项而更新:对应页的数据在片上存储器或片外存储器中的就绪状态,或者要访问对应页的PE对该页的访问状态。
在一些实施例中,可以将张量数据存储于片上的高速存储器,例如L2高速缓存250。但由于片上的高速存储器的容量较少,因此在张量规模较大时,编程人员可以将张量划分为多个段,每个段描述张量一部分。应用程序可以多次启动,每次由DMA控制器240提前将张量的一个段由片外存储搬运到片内存储,并供应用程序操作使用。在多次启动应用程序后,张量包含的所有段均被处理,整个运行过程结束。当片上的高速存储器足以容纳应用程序所要访问的所有张量时,一个张量仅需要一个段描述即可,应用程序也只需要启动一次。
在并行处理的加速系统中,相同的应用程序可以被运行在一个或多个PE上。这些应用程序被编写为要处理特定数据,例如张量数据。如前所述,在虚拟存储空间中数据可以按页存储,并可以在被写入片上存储器后由应用程序在运行时使用。因此,同一个页可能会被不同PE使用。在这种情况下,对页的管理是重要的。在本公开的另一些实施例中,还提出了利用与页对应的引用计数器来管理虚拟存储空间中的页上的数据相关性。
图6示出了根据本公开的另一些实施例的用于存储管理的过程600的流程图。过程600可以被实现在加速器系统200中。
如图6所示,在框610,确定应用程序所要访问的页,该页中存储有数据。在加速器系统200中,SP 210可以接收主机发送的命令序列,以发起应用程序的运行。通过分析命令序列,SP 210可以确定要运行的应用程序所要访问的页。
在一些实施例中,一个应用程序可以访问一个或多个页。在此,“访问”页或“访存”页指的是对存储空间中的页进行数据读取、数据写入或执行其中的指令,并且在此存储空间可以是利用如前所述的片上虚拟化技术得到的虚拟存储空间,或是在加速器系统中没有利用这样的片上虚拟化技术的存储空间。
作为一个示例,在与机器学习模型相关的任务中,一个应用程序可能被配置为执行矩阵乘法运算,那么该应用程序可能要访问三个用于存储数据的页,其中第一页存放矩阵A,第二页存放矩阵B,并且第三页存放矩阵A乘以矩阵B的结果。在一些实施例中,可以从关于应用程序的命令序列确定所要访问的页的寻址信息。例如,存放矩阵A的第一页可以位于段1(S1)中的页P[1],存放矩阵B的第二页可以位于段2(S2)中的页P[2],存放矩阵乘结果的第三页可以位于段3(S3)中的页P[5]。在一些实施例中,PE可以从存放程序指令的页中取出指令并执行指令。
在框620,基于要被启动来运行应用程序的PE的数目,设置页对应的第一引用计数器的值。
应用程序可以在一个或多个PE上执行对数据的访问操作。在本公开的实施例中,通过设置引用计数器(v-counter)来管理对页的访问,以避免在页中的数据还没有被相关的PE使用完就被删除或替换。
在一些实施例中,引用计数器的值可以在页表中维护。在页表中,每个页表项对应一个页,并且包括该页的地址信息,完成如前所述的逻辑地址到物理地址之间的转换,并且还可以包括引用计数器的值。在一些实施例中,每个页可以对应于一个或多个引用计数器,这些引用计数器可以被设置各自的值,如下文将描述的。
在一些实施例中,页对应的第一引用计数器(被表示为v-counter[1])的值可以基于要运行应用程序的PE的数目,以便维护对PE对页的访问。在一些实施例中,第一引用计数器的值可以被设置为等于要运行应用程序的PE的数目。
在一些实施例中,还可以设置页对应的另一引用计数器(在本文中有时称为第二引用计数器)的值,以用于表征页中的数据在片上存储器或片外存储器中的就绪状态。通过对第二引用计数器的值的维护,可以避免页中的数据还未准备好时就被访问,例如被用于后续计算。
具体地,在确定要访问的页后,SP 210可以基于页在片上存储器或片外存储器中的就绪状态来设置页对应的第二引用计数器的值。当应用程序在PE上被启动时,可以基于第二引用计数器的值来执行访问操作。
取决于实际存储方式以及各个应用程序的执行方式,页中的数据可能原本被存储在片上存储器,也可能被存储在片外存储器。对于用于存储处理结果的页,例如上文示例中用于存储矩阵乘的结果的页,在矩阵乘的计算结束之后该页中的数据才会被完全写入到片上存储器。
在一些实施例中,如果对数据的访问是直接访问,那么可以考虑数据在片上存储器或片外存储器上的就绪状态来设置第二引用计数器的值。在一些实施例中,如果对数据的访问是间接访问,即需要将数据从片外存储器加载到片上存储器以降低存储时延,那么可以考虑数据在片上存储器中的就绪状态来设置第二引用计数器的值。也就是说,
在一些实施例中,如果确定页中的数据在片上存储器或片外存储器中未就绪,第二引用计数器的值可以被设置为第一值,例如可以被置位为1,以指示该页的数据还不能被访问。例如,如果要将页中的数据从片外存储器移动到片上存储器再访问,或者要等待计算结束后才能获得页中的数据,那么在开始移动或计算时将该页对应的第二引用计数器的值设置为1,以避免在移动或计算未完成时其他实体对该页的访问。在一些实施例中,如果页中的数据在片上存储器或片外存储器中已就绪,将第二引用计数器设置为指示该页可访问或数据已就绪的第二值,例如可以被设置为0。
在一些实施例中,可以由SP 210将第二引用计数器设置为第一值(例如1)。继续上文的示例,如果第一页P[1]中的矩阵A被物理存储在片外存储器中,SP 210可以将页表中与第一页对应的页表项中的第二引用计数器(例如,表示为v-counter[0])设置为1,以指示该页正在被加载,并且SP 210可以指示DMA控制器240将矩阵A加载到片上存储器。在完成矩阵A的数据加载后,DMA控制器240可以将该第一页对应的页表项中的v-counter[0]设置为0。对于用于存放矩阵B的第二页P[2],也可以类似地设置第二引用计数器v-counter[0]的值。
对于用于存放的矩阵乘的结果的第三页P[5],如果在PE上运行的应用程序要向该页写入结果,那么该PE可以首先将第三页P[5]对应的页表项中的第一计数器(如v-counter[0],对于写者来说,它被称为第一计数器,而对于读者来说,它被称为第二计数器)设置为PE的数目,以避免结果还未完全被写入时该页就被访问。在结果写入完成后,该PE可以将将第三页P[5]对应的页表项中的v-counter[0]设置0。
对于要访问某个页的PE,可以通过计数器的值来确定该页中的数据是否已经准备就绪。具体地,如果发现第二引用计数器的值指示页中的数据还不可访问(例如,值为1或PE的个数),那么对该页的访问需要等待。PE可以先阻止应用程序执行访问操作。在一些实施例中,PE可以定期查询页表中对应的页表项,以确定页中的数据的就绪状态。在一些实施例中,如果通过第二引用计数器的值发现页中的数据未就绪,也可以发送中断到主机,以告诉主机该页中的数据尚未准备好。
以上讨论了页对应的一些引用计数器的值的设置。为更好理解,将以一个具体示例来描述。仍然假设一个应用程序被配置为执行矩阵A和矩阵B的乘法,并且该应用程序要在4个PE上运行。下面是SP210的命令流的示例。
·LOAD P[0](其中P[0]可以包括应用程序和静态全局参数);
·LOAD P[1](矩阵A,即要处理的输入数据);
o将页P[1]对应的计数器v-counter[0]设置为1,并启动DMA控制器240从片外存储器加载矩阵A到片上存储器,
o将页P[1]对应的计数器v-counter[1]设置为所使用的PE数目(例如,等于4)
·LOAD P[2](矩阵B,即要处理的输入数据);
o将页P[2]对应的计数器v-counter[0]设置为1,并启动DMA控制器240从片外存储器加载矩阵B到片上存储器,
o将页P[2]对应的计数器v-counter[1]设置为所使用的PE数目(例如,等于4)
·INIT P[5](用来存储矩阵A乘以矩阵B的结果)
o将页P[5]对应的计数器v-counter[0]赋初值,例如4。
在确定要使用的页准备好之后,应用程序可以开始在所选定的一个或多个PE上执行访问操作。
在过程600中,在框630,基于应用程序在PE上对页的访问状态来更新第一引用计数器的值。如前所述,第一引用计数器的值基于PE的数目而被设置。通过实时更新,第一引用计数器的值可以用于反映应用程序在PE上对该第一引用计数器所对应页的实时访问状态。
在一些实施例中,如果某个PE已经完成应用程序对某个页的访问操作,那么该PE可以更新对应页的第一引用计数器的值,以反映该PE已完成对页的使用。例如,该PE可以将第一引用计数器的值减一。随着各个PE上运行的应用程序对某个页的访问操作不断被完成,第一引用计数器的值递减。
在所有PE完成应用程序对某个页的访问操作后,第一引用计数器的值可以被更新到能够指示没有要访问该页的PE。例如,如果一个页对应的第一引用计数器(例如,v_counter[1])的值被设置为4,那么在4个PE上均完成应用程序对某个页的访问操作后,第一引用计数器v_counter[1]的值为0,指示没有PE要访问该页。
在框640,基于第一引用计数器的更新后的值,释放或替换页中的数据。在一些实施例中,如果第一引用计数器的更新后的值指示没有要对该页执行访问操作的PE,例如第一引用计数器的值为0,那么意味着相关PE均已完成了对该页的使用。该页中的数据可以被释放,例如从片上存储器被删除,或者被用其他数据替换。释放或替换的选择取决于具体应用。
第一计数器的值可以反映出页被PE的使用情况,例如还要被多少PE使用以及有多少PE已经使用过这个页,避免了在页未被使用完毕就被删除或替换。通过对第一引用计数器的维护,可以提高对页的重新使用率,并且提高片上存储器的存储空间的重新使用率。
继续上文的SP 210的命令流的示例。在执行LOAD P[1],LOAD P[2]以及INIT P[5]后,SP 210继续执行以下命令流:
·LAUNCH应用程序在所选PE上运行
oLAUNCH命令为P[0]、1、2、5建立逻辑地址-物理地址映射,
oPE查询各个页的v_counter[0]的值,并且PE上的应用程序的访问操作参考这些页的v_counter[1]的值,
o矩阵乘计算完成后,结果被放入P[5]中,
o每个PE完成计算任务时将所访问的页对应的v_counter[1]或v_counter[0]减1。
·FLUSH P[5],更新P[0]、1、2、5的状态并将P[5]中的矩阵乘的结果写入外部存储器。在片上存储器中的P[5]数据被释放。
在上文的示例中,如果在加速器系统200中还有应用程序要访问P[5]中的运算结果。由于P[5]的结果本身位于片上存储器,P[5]对应的第一引用计数器(对于读者来说)(v_counter[0])的值是0,那么在该应用程序在PE上被运行时可以直接使用P[5]中的数据。也就是说,可以不用将P[5]中的结果写入外部存储器而后再次加载到片上存储器。
在一些实施例中,如果应用程序要访问一个页,例如要将新的数据写入到该页,那么在该应用程序的运行时也要查询该页对应的引用计数器的值。如果该页对应的第一引用计数器的值指示没有要对该页执行访问操作的PE,并且第二引用计数器的值指示该页可访问,例如该页对应的第一和第二引用计数器的值均为0,那么可以将应用程序要访问的数据替换该页中已有的数据,并且同步更新该页对应的第一引用计数器的值。注意,这里的应用程序可以是先前访问过该页的同一应用程序的另一次运行,或者可以是不同的应用程序。
以上讨论了页对应的一些引用计数器的使用。该页对应的引用计数器可以用于管理对该页的各种使用。
在一些实施例中,在页表的页表项中可以维护多个引用计数器,例如两个或更多个(例如,3个)引用计数器。在维护多个引用计数器的值的情况下,可以根据需要选用一些计数器的值来指示页中的数据的就绪状态,和应用程序在各个PE上对页的访问状态。未被使用的引用计数器的值可以被初始化为0。这样,可以通过判断页对应的全部计数器的值为0,来确定该页是否可访问、可被删除或替换。
此外,应当理解,上文所给出的计数器的值均是示例,可以设置其他值,只要能够反映出所指示的状态即可。
图7示出了根据本公开的一些实施例的用于存储管理的装置700的示意框图。装置700可以被实现为或者被包括在图2的加速器系统200中。装置700可以包括多个模块,以用于执行如图5中所讨论的方法500中的对应步骤。
如图7所示,装置700包括创建单元710,被配置为基于在应用程序的执行时要访问的数据来创建针对虚拟存储空间的页表。虚拟存储空间被映射到片上存储器和片外存储器。页表至少指示数据在虚拟存储空间中的逻辑地址与在片上存储器或片外存储器上的物理地址之间的映射关系。装置700还包括访问单元720,被配置为在应用程序被执行时,利用页表来访问数据。
在一些实施例中,数据被划分为至少一个段,每个段包括至少一个页。在一些实施例中,创建单元710被配置为:在页表中建立与数据所划分的页分别对应的页表项,每个页表项至少指示对应的页在虚拟存储空间中的逻辑地址与在片上存储器或片外存储器上的物理地址之间的映射关系。
在一些实施例中,页表中的每个页表项还指示对应页的引用计数器的值。在一些实施例中,每个页表项中的引用计数器的值基于以下至少一项而更新:对应页的数据在片上存储器或片外存储器中的就绪状态,或者要访问对应页的处理引擎对该页的访问状态。
在一些实施例中,数据在虚拟存储空间中的逻辑地址指示数据所在的段的段标识、基准地址数据、所在页的页标识、以及该页相对于基准地址数据的偏移值。
在一些实施例中,数据包括张量数据和/或程序指令。
在一些实施例中,页表被存储在片上存储器中。
在一些实施例中,访问单元包括:逻辑地址确定单元,被配置为根据数据在虚拟存储空间中的逻辑地址确定目标页;地址转换单元,被配置为使用页表,确定目标页在片上存储器或片外存储器中的物理地址;以及页内偏移地址确定单元,被配置为根据逻辑地址确定数据的页内偏移地址;以及基于地址的访问单元,被配置为使用目标页的物理地址和页内偏移地址访问数据。
在一些实施例中,基于地址的访问单元被配置为:如果目标页的访问包括对目标页的读取,使用物理地址以及页内偏移地址直接从片上存储器或片外存储器读取数据;以及如果目标页的访问包括对目标页的写入,使用物理地址以及页内偏移地址直接向片上存储器或片外存储器写入数据。
在一些实施例中,目标页被映射到片外存储器中,并且使用页表确定的物理地址包括目标页在片上存储器中的物理地址。基于地址的访问单元还可以被配置为:如果目标页的访问包括对目标页的读取,使用目标页在片外存储器中的物理地址将目标页的数据从片外存储器加载到片上存储器,并且基于目标页在片上存储器中的物理地址和页内偏移地址从片上存储器读取数据;以及如果目标页的访问包括对目标页的写入,使用目标页在片上存储器中的物理地址和页内偏移地址将数据写入片上存储器,并且使用目标页在片外存储器中的物理地址将目标页的数据从片上存储器冲刷到片外存储器。
图8示出了根据本公开的另一些实施例的用于存储管理的装置800的示意框图。装置800可以被实现为或者被包括在图2的加速器系统200中。装置800可以包括多个模块,以用于执行如图6中所讨论的方法600中的对应步骤。
如图8所示,装置800包括页确定单元810,被配置为确定应用程序所要访问的页,页中存储有数据。装置800还包括第一计数器设置单元820,被配置为基于要被启动来运行应用程序的处理引擎的数目,设置页对应的第一引用计数器的值。装置800还包括第一计数器更新单元830,被配置为基于应用程序在处理引擎上对页的访问状态来更新第一引用计数器的值。装置800还包括数据释放或替换单元840,被配置为基于第一引用计数器的更新后的值,释放或替换页中的数据。
在一些实施例中,装置800还可以包括:第二计数器设置单元,被配置为基于页中的数据在片上存储器或片外存储器中的就绪状态,设置页对应的第二引用计数器的值;以及程序运行单元,被配置为基于第二引用计数器的值来在处理引擎上运行应用程序。
在一些实施例中,第二计数器设置单元包括:第一值设置单元,被配置为如果页中的数据在片上存储器或片外存储器中未就绪,将第二引用计数器设置为第一值;以及第二值设置单元,被配置为如果页中的数据在片上存储器或片外存储器中已就绪,将第二引用计数器设置为第二值。
在一些实施例中,程序运行单元包括:访问阻止单元,被配置为如果第二引用计数器为第一值,阻止应用程序在处理引擎上对页执行访问操作;以及访问开始单元,被配置为如果第二引用计数器为第二值,允许应用程序开始在处理引擎上对页执行访问操作。
在一些实施例中,第一计数器设置单元820被配置为:将第一引用计数器的值设置为等于处理引擎的数目。
在一些实施例中,第一计数器更新单元830被配置为:如果应用程序在处理引擎中的一个处理引擎上对页的访问操作完成,将第一引用计数器的值减一。
在一些实施例中,数据释放或替换单元840被配置为:如果第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,从片上存储器释放页或替换页中的数据。
在一些实施例中,另一应用程序要访问页。在一些实施例中,数据释放或替换单元840被配置为:如果第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,并且第二引用计数器的值指示页可访问,用另一应用程序要访问的数据替换页中的数据。
在一些实施例中,页在页表中具有对应的页表项,并且被映射到物理存储空间中的物理地址。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (17)
1.一种存储管理方法,包括:
确定应用程序所要访问的页,所述页中存储有张量数据;
基于要被启动来运行所述应用程序的处理引擎的数目,设置所述页对应的第一引用计数器的值;
基于所述页中的张量数据在片上存储器或片外存储器中的就绪状态,设置所述页对应的第二引用计数器的值;
基于所述第二引用计数器的值来在所述处理引擎上运行所述应用程序;
基于所述应用程序在所述处理引擎上对所述页的访问状态来更新所述第一引用计数器的值;以及
基于所述第一引用计数器的更新后的值,释放或替换所述页中的所述张量数据。
2.根据权利要求1所述的方法,其中设置所述页对应的所述第二引用计数器的值包括:
如果所述页中的张量数据在所述片上存储器或所述片外存储器中未就绪,将所述第二引用计数器设置为第一值;以及
如果所述页中的张量数据在所述片上存储器或所述片外存储器中已就绪,将所述第二引用计数器设置为第二值。
3.根据权利要求2所述的方法,其中运行所述应用程序包括:
如果所述第二引用计数器为所述第一值,阻止所述应用程序在所述处理引擎上对所述页执行访问操作;以及
如果所述第二引用计数器为所述第二值,允许所述应用程序在所述处理引擎上对所述页执行访问操作。
4.根据权利要求1所述的方法,其中设置所述页对应的第一引用计数器的值包括:
将所述第一引用计数器的所述值设置为等于所述处理引擎的数目。
5.根据权利要求1所述的方法,其中更新所述第一引用计数器的值包括:
如果所述应用程序在所述处理引擎中的一个处理引擎上对所述页的访问操作完成,将所述第一引用计数器的值减一。
6.根据权利要求1所述的方法,其中释放或替换所述页中的张量数据包括:
如果所述第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,从所述片上存储器释放所述页或替换所述页中的张量数据。
7.根据权利要求1所述的方法,其中另一应用程序要访问所述页,并且从所述片上存储器释放所述页或替换所述页中的张量数据包括:
如果所述第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,并且所述第二引用计数器的值指示所述页可访问,用所述另一应用程序要访问的张量数据替换所述页中的张量数据。
8.根据权利要求1所述的方法,其中所述页在页表中具有对应的页表项,并且被映射到物理存储空间中的物理地址。
9.一种计算机可读存储介质,存储多个程序,所述多个程序被配置为一个或多个处理单元执行,所述多个程序包括用于执行权利要求1-8中任一项所述的方法的指令。
10.一种加速器系统,包括:
处理单元;以及
与所述处理单元耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述处理单元执行时执行权利要求1-8中任一项所述的方法。
11.一种用于存储管理的装置,包括:
页确定单元,被配置为确定应用程序所要访问的页,所述页中存储有张量数据;
第一计数器设置单元,被配置为基于要被启动来运行所述应用程序的处理引擎的数目,设置所述页对应的第一引用计数器的值;
第一计数器更新单元,被配置为基于所述应用程序在所述处理引擎上对所述页的访问状态来更新所述第一引用计数器的值;
数据释放或替换单元,被配置为基于所述第一引用计数器的更新后的值,释放或替换所述页中的张量数据;
第二计数器设置单元,被配置为基于所述页中的张量数据在片上存储器或片外存储器中的就绪状态,设置所述页对应的第二引用计数器的值;以及
程序运行单元,被配置为基于所述第二引用计数器的值来在所述处理引擎上运行所述应用程序。
12.根据权利要求11所述的装置,其中所述第二计数器设置单元包括:
第一值设置单元,被配置为如果所述页中的张量数据在所述片上存储器或所述片外存储器中未就绪,将所述第二引用计数器设置为第一值;以及
第二值设置单元,被配置为如果所述页中的张量数据在所述片上存储器或所述片外存储器中已就绪,将所述第二引用计数器设置为第二值。
13.根据权利要求12所述的装置,其中所述程序运行单元包括:
访问阻止单元,被配置为如果所述第二引用计数器为所述第一值,阻止所述应用程序在所述处理引擎上对所述页执行访问操作;以及
访问开始单元,被配置为如果所述第二引用计数器为所述第二值,允许所述应用程序在所述处理引擎上对所述页执行访问操作。
14.根据权利要求11所述的装置,其中所述第一计数器设置单元被配置为:
将所述第一引用计数器的所述值设置为等于所述处理引擎的数目。
15.根据权利要求11所述的装置,其中所述第一计数器更新单元被配置为:
如果所述应用程序在所述处理引擎中的一个处理引擎上对所述页的访问操作完成,将所述第一引用计数器的值减一。
16.根据权利要求11所述的装置,其中所述数据释放或替换单元被配置为:
如果所述第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,从所述片上存储器释放所述页或替换所述页中的张量数据。
17.根据权利要求11所述的装置,其中另一应用程序要访问所述页,并且所述数据释放或替换单元被配置为:
如果所述第一引用计数器的更新后的值指示没有要对所述页执行访问操作的处理引擎,并且所述第二引用计数器的值指示所述页可访问,用所述另一应用程序要访问的张量数据替换所述页中的张量数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480059.1A CN114201444B (zh) | 2021-12-06 | 2021-12-06 | 用于存储管理的方法、介质、程序产品、系统和装置 |
PCT/CN2022/107493 WO2023103397A1 (zh) | 2021-12-06 | 2022-07-22 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480059.1A CN114201444B (zh) | 2021-12-06 | 2021-12-06 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114201444A CN114201444A (zh) | 2022-03-18 |
CN114201444B true CN114201444B (zh) | 2023-11-14 |
Family
ID=80650755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111480059.1A Active CN114201444B (zh) | 2021-12-06 | 2021-12-06 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114201444B (zh) |
WO (1) | WO2023103397A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201444B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
CN104991869A (zh) * | 2015-07-31 | 2015-10-21 | 成都腾悦科技有限公司 | 一种微处理器存储管理方法 |
CN107729168A (zh) * | 2016-08-12 | 2018-02-23 | 谷歌有限责任公司 | 混合存储器管理 |
CN108139983A (zh) * | 2015-09-25 | 2018-06-08 | 英特尔公司 | 用于在多级系统存储器中固定存储器页面的方法和设备 |
CN113157606A (zh) * | 2021-04-21 | 2021-07-23 | 上海燧原科技有限公司 | 一种缓存器实现方法、装置和数据处理设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089370B2 (en) * | 2003-09-30 | 2006-08-08 | International Business Machines Corporation | Apparatus and method for pre-fetching page data using segment table data |
CN100590609C (zh) * | 2008-02-22 | 2010-02-17 | 浙江大学 | 一种基于非连续页的动态内存管理方法 |
US8151032B2 (en) * | 2008-06-26 | 2012-04-03 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
US9678863B2 (en) * | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US9703492B2 (en) * | 2015-05-19 | 2017-07-11 | International Business Machines Corporation | Page replacement algorithms for use with solid-state drives |
US9720846B2 (en) * | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
JP6939023B2 (ja) * | 2017-03-31 | 2021-09-22 | 日本電気株式会社 | データ管理システム、ストレージ装置、バックアップ装置、方法およびプログラム |
CN114201444B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
-
2021
- 2021-12-06 CN CN202111480059.1A patent/CN114201444B/zh active Active
-
2022
- 2022-07-22 WO PCT/CN2022/107493 patent/WO2023103397A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
CN104991869A (zh) * | 2015-07-31 | 2015-10-21 | 成都腾悦科技有限公司 | 一种微处理器存储管理方法 |
CN108139983A (zh) * | 2015-09-25 | 2018-06-08 | 英特尔公司 | 用于在多级系统存储器中固定存储器页面的方法和设备 |
CN107729168A (zh) * | 2016-08-12 | 2018-02-23 | 谷歌有限责任公司 | 混合存储器管理 |
CN113157606A (zh) * | 2021-04-21 | 2021-07-23 | 上海燧原科技有限公司 | 一种缓存器实现方法、装置和数据处理设备 |
Non-Patent Citations (1)
Title |
---|
汤显 ; 孟小峰 ; .FClock:一种面向SSD的自适应缓冲区管理算法.计算机学报.2010,(第08期),第148-159页. * |
Also Published As
Publication number | Publication date |
---|---|
WO2023103397A1 (zh) | 2023-06-15 |
CN114201444A (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10037228B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US8327109B2 (en) | GPU support for garbage collection | |
CN113836049B (zh) | 存储器访问方法和电子装置 | |
CN114667508B (zh) | 为加速器取回数据的方法和系统 | |
GB2493607A (en) | Eliminating redundant instruction processing in an SIMT processor | |
US20180052685A1 (en) | Processor and method for executing instructions on processor | |
CN114218153B (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
US11947821B2 (en) | Methods and systems for managing an accelerator's primary storage unit | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
US12019560B2 (en) | Virtual partitioning a processor-in-memory (“PIM”) | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
CN114201444B (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
CN114489798B (zh) | 用于确定张量元素的越界状态的方法和电子装置 | |
US11372768B2 (en) | Methods and systems for fetching data for an accelerator | |
CN116762068A (zh) | 地址映射感知任务分配机制 | |
CN114218152B (zh) | 流处理方法、处理电路和电子设备 | |
CN114035980B (zh) | 基于便笺存储器来共享数据的方法和电子装置 | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
CN114510271B (zh) | 用于在单指令多线程计算系统中加载数据的方法和装置 | |
CN114281414B (zh) | Aigpu架构中urf寄存器的数据写入方法 | |
US20230393849A1 (en) | Method and apparatus to expedite system services using processing-in-memory (pim) | |
KR20210119272A (ko) | 스토리지 및 메모리에서의 코히어런스 멀티프로세싱 가능 컴퓨팅 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40069193 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |