CN114035980A - 基于便笺存储器来共享数据的方法和电子装置 - Google Patents
基于便笺存储器来共享数据的方法和电子装置 Download PDFInfo
- Publication number
- CN114035980A CN114035980A CN202111314187.9A CN202111314187A CN114035980A CN 114035980 A CN114035980 A CN 114035980A CN 202111314187 A CN202111314187 A CN 202111314187A CN 114035980 A CN114035980 A CN 114035980A
- Authority
- CN
- China
- Prior art keywords
- virtual address
- data
- address region
- program
- thread
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000004590 computer program Methods 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 27
- 238000013507 mapping Methods 0.000 claims description 14
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 230000002401 inhibitory effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000002829 reductive effect Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及基于便笺存储器来共享数据的方法和电子装置。在一种用于基于便笺存储器来共享数据的方法中,基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给程序,虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储。将虚拟地址区域设置为便笺存储器属性;以及基于虚拟地址区域,管理在程序中的第一线程和第二线程之间共享的数据。进一步,提供了相应的电子装置、计算机可读存储介质、计算机程序产品、以及加速器系统。利用本公开的示例性实现方式,可以从多种物理存储设备中分配存储空间,以便用于在程序中的多个线程之间共享数据。
Description
技术领域
本公开的实施方式一般地涉及电子领域,更具体而言涉及一种用于基于便笺存储器来共享数据的方法和电子装置。
背景技术
目前已经提出了诸如图形处理器(GPU)之类处理器系统,此类处理系统中的多个处理器核可以提供并行的多线程处理方式,因而可以提供更高的处理速度。这些处理系统可以将复杂的计算分解为较小的任务,并且由多核进行并行处理,从而减少处理时间。
在一些情形下,可以在诸如GPU之类的多核处理器中运行大量线程,此时大量线程之间通常需要进行数据共享。目前已经提出了基于高速缓存来共享数据的技术方案。然而,由于高速缓存仅包括较小存储空间并且涉及复杂的管理过程,期望可以以更加有效和方便的方式在多个线程之间共享数据。
发明内容
本公开的实施方式提供了一种基于便笺存储器来共享数据的技术方案。
在第一方面,提供了一种用于基于便笺存储器来共享数据的方法。该方法包括:基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给程序,虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储;将虚拟地址区域设置为便笺存储器属性;以及基于虚拟地址区域,管理在程序中的第一线程和第二线程之间共享的数据。
根据本公开的一个示例性实现方式,将虚拟地址区域分配给程序包括:基于定义确定用于指定与虚拟地址区域相对应的物理存储设备的等级;以及从多个物理设备中的具有等级的物理设备中,选择虚拟地址区域以用于分配给程序。
根据本公开的一个示例性实现方式,选择虚拟地址区域以用于分配给程序进一步包括:基于定义确定虚拟地址区域的大小;以及响应于确定大小不高于阈值大小,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,进一步包括:响应于确定大小高于阈值大小,从多个物理设备中的具有等级的物理设备和低于等级的物理设备中,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,基于虚拟地址区域,在程序中的第一线程和第二线程之间共享数据包括:修改与虚拟地址区域相关联的交换策略,以使得虚拟地址区域中的数据不被交换到另一物理存储设备,另一物理存储设备的等级低于与虚拟地址区域相对应的物理存储设备的等级。
根据本公开的一个示例性实现方式,基于虚拟地址区域,在程序中的第一线程和第二线程之间共享数据包括:响应于确定第一线程向虚拟地址区域中的高速缓存线写入数据,将高速缓存线设置为“脏”标记;以及禁止将高速缓存线中的数据写入至与虚拟地址区域相关联的下一等级的存储设备。
根据本公开的一个示例性实现方式,进一步包括:响应于确定高速缓存线中的数据将被交换至另一物理存储设备,向另一物理存储设备回写高速缓存线中的数据。
根据本公开的一个示例性实现方式,基于虚拟地址区域,在程序中的第一线程和第二线程之间共享数据包括:将虚拟地址区域中的数据块设置为“未使用”;以及响应于确定第一线程从被设置为“未使用”的数据块中读取数据,调取读取异常处理。
根据本公开的一个示例性实现方式,进一步包括:响应于确定程序结束,释放虚拟地址区域。
根据本公开的一个示例性实现方式,将虚拟地址区域分配给程序包括:基于程序中的定义,将虚拟地址区域的格式设置为以下任一维度的张量:1维、2维、3维以及4维。
根据本公开的一个示例性实现方式,该方法在加速器系统处的多个处理引擎中的一个处理引擎处被执行,虚拟地址区域经由地址映射表被映射至多个物理存储设备,以及地址映射表被存储在加速器系统中。
根据本公开的一个示例性实现方式,将虚拟地址区域分配给程序包括:在虚拟存储中的被分配给处理引擎的部分中,确定虚拟地址区域;以及向程序提供与虚拟地址区域相关联的地址偏移。
在第二方面,提供了一种计算机可读存储介质。该介质存储多个程序,多个程序被配置为一个或多个处理引擎执行,多个程序包括用于执行本公开的第一方面的方法的指令。
在第三方面,提供了一种计算机程序产品。该计算机程序产品包括多个程序,多个程序被配置为一个或多个处理引擎执行,多个程序包括用于执行本公开的第一方面的方法的指令。
在第四方面,提供了加速器系统,包括:处理器;以及与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述处理器执行时使得所述设备执行。
在第五方面,提供了一种用于基于便笺存储器来共享数据的装置。该装置包括:分配单元,被配置用于基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给程序,虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储;设置单元,被配置用于将虚拟地址区域设置为便笺存储器属性;以及共享单元,被配置用于基于虚拟地址区域,管理在程序中的第一线程和第二线程之间共享的数据。
根据本公开的一个示例性实现方式,分配单元包括:等级确定单元,被配置用于基于定义确定用于指定与虚拟地址区域相对应的物理存储设备的等级;以及选择单元,被配置用于从多个物理设备中的具有等级的物理设备中,选择虚拟地址区域以用于分配给程序。
根据本公开的一个示例性实现方式,选择单元包括:大小确定单元,被配置用于基于定义确定虚拟地址区域的大小;以及第一选择单元,被配置用于响应于确定大小不高于阈值大小,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,选择单元包括第二选择单元,被配置用于响应于确定大小高于阈值大小,从多个物理设备中的具有等级的物理设备和低于等级的物理设备中,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,管理单元包括:修改单元,被配置用于修改与虚拟地址区域相关联的交换策略,以使得虚拟地址区域中的数据不被交换到另一物理存储设备,另一物理存储设备的等级低于与虚拟地址区域相对应的物理存储设备的等级。
根据本公开的一个示例性实现方式,管理单元包括:写入单元,被配置用于响应于确定第一线程向与虚拟地址区域相关联的高速缓存线写入数据,将高速缓存线设置为“脏”标记;以及禁止单元,被配置用于禁止将高速缓存线中的数据回写至虚拟地址区域。
根据本公开的一个示例性实现方式,管理单元包括:回写单元,被配置用于响应于确定高速缓存线中的数据将被交换至另一物理存储设备,向另一物理存储设备回写高速缓存线中的数据。
根据本公开的一个示例性实现方式,管理单元包括:初始设置单元,被配置用于将虚拟地址区域中的数据块设置为“未使用”;以及调取单元,被配置用于响应于确定第一线程从被设置为“未使用”的数据块中读取数据,调取读取异常处理。
根据本公开的一个示例性实现方式,管理单元包括:释放单元,被配置用于响应于确定程序结束,释放虚拟地址区域。
根据本公开的一个示例性实现方式,分配单元包括:格式设置单元,被配置用于基于程序中的定义,将虚拟地址区域的格式设置为以下任一维度的张量:1维、2维、3维以及4维。
根据本公开的一个示例性实现方式,该装置在加速器系统处的多个处理引擎中的一个处理引擎处被实现,虚拟地址区域经由地址映射表被映射至多个物理存储设备,以及地址映射表被存储在加速器系统中。
根据本公开的一个示例性实现方式,分配单元包括:地址确定单元,被配置用于在虚拟存储中的被分配给处理引擎的部分中,确定虚拟地址区域;以及偏移单元,被配置用于向程序提供与虚拟地址区域相关联的地址偏移。
利用本公开的示例性实现方式,用户可以在程序中指定虚拟存储空间,以用于在程序所涉及的多个线程之间共享数据。以此方式,虚拟存储空间的大小不再受到诸如处理器等计算设备中的高速缓存的大小的限制,而是可以以更加灵活和有效的方式来提供更多的共享存储空间。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了本公开的多个实施方式能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一个实施方式的芯片示意图;
图3示出了根据本公开的一个实施方式的虚拟存储的示意图;
图4示出了根据本公开的一个实施方式的用于基于便笺存储器在线程之间共享数据的示意框图;
图5示出了根据本公开的一个实施方式的用于基于便笺存储器在线程之间共享数据的方法的流程图;
图6示出了根据本公开的一个实施方式的虚拟地址区域的工作过程的示意框图;
图7示出了根据本公开的一个实施方式的用于在不同等级的物理存储设备之间交换数据的示意框图;以及
图8示出了根据本公开的一个实施方式的用于在线程之间共享数据的装置的示意框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中示出了本公开的优选实施方式,然而应该理解,本公开可以以各种形式实现而不应被这里阐述的实施方式限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施方式”和“一个实施方式”表示“至少一个示例实施方式”。术语“另一实施方式”表示“至少一个另外的实施方式”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
首先参见图1描述用于执行本公开的多个示例性实现方式的环境的概要。图1示出了本公开的多个实施方式能够在其中实现的示例环境100的示意图。示例环境100例如可以包括诸如计算机之类的具有计算能力的电子设备。在一个实施方式中,示例环境100例如包括中央处理器(CPU)120、系统存储器110、北桥/存储器桥130、加速器系统140、外部存储设备150和南桥/输入输出(IO)桥160。系统存储器110例如可以包括诸如动态随机存取存储器(DRAM)之类的易失性存储器。北桥/存储器桥130例如集成了内存控制器、PCIe控制器等,其负责CPU 120和高速接口之间的数据交换以及桥接CPU 120和南桥/IO桥160。南桥/IO桥160用于计算机的低速接口,例如串行高级技术接口(SATA)控制器等。加速器系统140例如可以包括诸如图形处理器(GPU)和人工智能(AI)加速器等用于对图形、视频等数据进行加速处理的装置或芯片。外部存储设备150例如可以是诸如DRAM之类的位于加速器系统140外部的易失性存储器。
在本公开中,外部存储设备150也被称为片外存储器,即,位于加速器系统140的芯片外部的存储器。相对而言,加速器系统140的芯片内部也具有易失性存储器,例如一级(L1)高速缓存(cache)以及可选的二级(L2)高速缓存。将在下文结合本公开的一些实施方式具体描述。虽然在图1中示出了本公开的多个实施方式能够在其中实现的一种示例环境100,但是本公开不限于此。本公开的一些实施方式也可以在诸如ARM架构和RISC-V架构之类的具有诸如GPU之类的加速器系统的其他应用环境中使用。
图2示出了根据本公开的一个实施方式的加速器系统200的示意框图。加速器系统200例如可以是图1中加速器系统140的芯片的一种具体实现方式。加速器系统200例如包括诸如GPU之类的加速器系统芯片。根据本公开的一个示例性实现方式,加速器系统200可以包括系统处理器(SP)210、页表装置220、处理引擎(Processing Engine,PE)单元230、直接存储器访问(DMA)控制器240、L1高速缓存260和L2高速缓存250。
加速器系统200可以由诸如CPU 120之类的主机设备控制,并且接收来自CPU 120的指令。SP 210对来自CPU 120的指令进行分析,并且将经分析的操作指派给PE单元230、页表装置220和DMA控制器240进行处理。页表装置220用于管理加速器系统200可访问的虚拟存储。在本公开中,除了L1高速缓存260,虚拟存储例如可以包括L2高速缓存250和诸如图1中的外部存储设备150之类的片外存储器。页表装置220由SP 210、PE单元230和DMA控制器240共同维护。
PE单元230可以包括多个处理引擎PE_1、PE_2……PE_N,其中N表示大于1的整数。PE单元230中的每个PE可以是单指令多线程(SIMT)装置。在PE中,每个线程可以具有自己的寄存器堆(register file),并且每个PE的所有线程还共享统一寄存器堆(uniformregister file)。多个PE可以并行地执行相同或不同的处理工作。例如,PE可以针对待处理的数据执行排序、卷积等处理。
用户(例如,程序员)可以编写应用程序来实现特定的目的。对于需要较大计算量的应用程序而言,可以将该应用程序划分为多个部分,并且分别在多个PE处并行地运行多个部分。进一步,可以在每个PE处启动一个或多个线程。每个线程可以具有自己的算数逻辑执行单元并使用自己的存储地址,其例如可以采用典型的寄存器存取架构(load-storearchitecture)。每个执行单元可以包括一个支持多种数据类型的浮点/定点单元以及一个算数逻辑单元。大多数的指令用于执行算数和逻辑运算,例如,浮点和定点数的加、减、乘、除,或者逻辑与、或、非等。操作数来自于寄存器。存储器读写指令可以提供寄存器与片上/片外存储器之间的数据交换。
根据本公开的一个示例性实现方式,图2的加速器系统200可以执行应用程序以便处理数据,例如张量数据等。根据本公开的一个示例性实现方式,张量可以具有一个或多个维度。例如张量可以是四维张量,其具有四个维度D1、D2、D3和D4,并且张量在各个维度上的大小可以不同。在另一些实施方式中,张量可以是1维、2维、3维或更多维张量,本公开对此不进行限制。
此外,在本公开的实施方式中,张量内部可以支持诸如uint8、int8、bfloat16、float16、uint16、int16、float32、int32、uint32以及其他自定义元素类型,本公开对此也不进行限制。对于张量的寻址而言,其以元素为基本单位。例如,如果元素类型为int8,则元素以字节为单位。再例如,如果元素类型为int16,则寻址基本单位为双字节,依此类推。
在一些情形中,可以将应用程序划分为多个程序部分,以便分别在多个PE处并行地执行。将会理解,用户可以指定在PE处启动多个(例如,数十、数百个甚至更多个)线程来并行地执行某些操作。在执行过程中,多个线程之间可能需要共享数据,因而需要为这些线程提供共享空间。目前已经提供了基于加速器系统中的高速缓存来在线程之间共享数据的技术方案。然而,高速缓存的大小通常存在限制并且有时难以满足待共享数据的大小。此外,已有技术方案的共享方式可能涉及频繁的数据交换因而难以保证运行效率。
为了至少部分地解决已有技术方案的上述以及其他缺陷,根据本公开的一个示例性实现方式,提供了一种基于虚拟存储中的便笺存储器来在线程之间共享数据的技术方案。首先参见图3描述虚拟存储的概要。图3示出了根据本公开的一个实施方式的虚拟存储300的示意框图。在此,虚拟存储300可以利用虚拟地址来表示,并且虚拟存储300可以被映射至多种类型的物理存储设备,例如,L1高速缓存260、L2高速缓存250以及外部存储设备150等中的至少任一项。
如图3所示,虚拟存储300可以按照段来组织,每个程序(例如,来自应用程序的Kernel程序)可以使用一个或多个段(例如,图3中由Kernel 1、Kernel 2和Kernel 3可以使用不同数量的段)。每个段可以包括一个或多个页(例如,图3中由Kernel 1使用的段包括页P1、P2、P3和P4),在此,页的大小由应用程序来定义并且是可以是可变的。
进一步,每个Kernel程序可以由一个或多个PE来执行,例如,可以由8个PE(即,PE_1、PE_2、PE_3、PE_4、PE_5、PE_6、PE_7、PE_8)来执行Kernel 1,并且可以由4个PE(即,PE_1、PE_2、PE_3、PE_4)来执行Kernel 2。将会理解,为了提高数据处理性能,在每个PE处可以由多个线程来以并行方式处理数据。此时,多个线程经常需要交换数据。例如,在排序操作中可以将待排序数据划分为多个部分,并且分别由多个线程来处理多个部分的数据。继而可以由某个(某些)线程来处理经过初步排序的各部分数据。此时,需要在多个线程之间共享数据。
在如图3所示的虚拟存储300中,可以按照程序的定义来将一部分区域设置为便笺存储器,以用于在由程序启动的多个线程时间共享数据。首先参见图4描述根据本公开的一个示例性实现方式的概要。图4示出了根据本公开的一个实施方式的用于基于便笺存储器在线程之间共享数据的示意框图400。可以为每个PE分配相应的虚拟存储,并且可以将加速器系统可访问的虚拟存储430中的某个虚拟地址区域440分配给程序,以便在由程序启动的多个线程(例如,第一线程410和第二线程420)之间共享数据。在此的程序例如图3所示的Kernel程序,并且虚拟地址区域440中的存储空间可以是分别来自多个物理存储设备(例如,L2高速缓存250和外部存储设备150等)中的至少任一项的可用存储空间。
进一步,为了区分用于数据共享的虚拟地址区域440与普通存储空间,可以为该虚拟地址区域440设置便笺存储器属性450,该便笺存储器属性450可以指示需要以不同的存储器管理方式来管理虚拟地址区域440,以便使得该虚拟地址区域440中的数据尽量位于具有较高等级(也即,较高访问速度)的物理存储设备(例如,在被加载至L1高速缓存之后尽量长时间被保留在该L1高速缓存)中。以此方式,可以确保多个线程以较高的速度针对虚拟地址区域440中的数据进行读写从而实现数据共享的目的。
进一步,根据本公开的一个示例性实现方式,虚拟地址区域440中的存储空间可以来自于多个等级的物理存储设备。以此方式,可以确保为了数据共享目的来提供较大的存储空间。相对于已有技术方案中的仅在高速缓存(例如,L1高速缓存260)中分配共享存储区域的技术方案而言,本公开的实现方式可以在尽量确保数据访问效率的同时提供更大的共享存储空间。
在下文中,将参见图5描述根据本公开的一个示例性实现方式的更多细节。图5示出了根据本公开的一个实施方式的用于基于便笺存储器在线程之间共享数据的方法500的流程图。在框510处,可以基于程序中的定义,将由加速器系统可访问的虚拟存储430中的虚拟地址区域440分配给程序,在此该虚拟地址区域440被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储。
根据本公开的一个示例性实现方式,可以向用户提供用于定义共享存储区域的关键字。例如,可以使用“ScrathPadMemoryLevel”(或者其他关键字)来指定与虚拟地址区域440相对应的物理存储设备的等级。此时,用户可以通过该关键字来指定使用哪个等级的物理存储设备中的存储空间来提供共享区域。例如,用户可以指定使用L2高速缓存250和外部存储设备150中的至少任一项来提供共享区域。
当进程间共享仅涉及较小数据量时,可以指定由L2高速缓存250来提供共享区域;并且当进程间共享涉及较大数据量时,可以指定由外部存储设备150来提供共享区域,以此类推。在程序运行时,无论虚拟地址区域位于何处,虚拟地址区域中的将被共享的数据需要被加载至L1高速缓存中以便于线程间数据交换。通常而言,L2高速缓存已经可以提供较为充足的共享区域来用于交换数据。当L2高速缓存的存储空间不足时,可以指定由外部存储设备150中的存储空间来充当共享区域。
在程序运行时,可以解析输入的Kernel程序中的相关定义,进而确定程序员期望使用哪个等级的物理存储设备来提供共享区域。基于程序中的定义所指定的物理存储设备的等级,可以方便地从多个物理设备中选择相应的存储设备。例如,用户可以指定由L2高速缓存250和外部存储设备150中的至少一个来提供共享区域。利用本公开的示例性实现方式,在线程之间共享数据的共享区域的大小不再局限于L1高速缓存260内部,而是可以从具有更多存储空间的多种物理存储设备中选择可用存储空间。以此方式,可以以更高的效率来服务于涉及大量数据共享的程序。
根据本公开的一个示例性实现方式,可以提供默认分配方式。例如,可以按照如下顺序来优先地使用访问速度较快的物理存储设备:L1高速缓存260、L2高速缓存250以及外部物理存储设备150。以此方式,可以在无需用户指定的情况下自动从具有较高访问速度的物理存储设备中分配共享空间。
根据本公开的一个示例性实现方式,可以经由地址映射表460来在虚拟存储430和多个物理存储存储设备之间建立映射。在此地址映射表460可以包括多个条目,并且每个条目可以包括虚拟标识符(用于标识由加速器系统可访问的虚拟地址)以及真实地址(用于指向物理存储设备中的物理地址)之间的映射关系。以此方式,可以方便地在虚拟存储430和各个物理存储设备之间建立映射,从而使得加速器系统在无需知晓所访问数据的真实地址的情况下,运行程序。
进一步,在此的多个条目所指向的存储区域可以具有相同或者不同的大小。例如,当程序需要使用较大存储空间时,一个虚拟标识符可以指向例如10M(或者其他数值)的物理存储空间;当程序需要使用较小存储空间时,虚拟标识符可以指向例如4k(或者其他数值)的物理存储空间。以此方式,每个虚拟地址区域不必具有相同的大小,而是可以根据具体需要来指定。由此,地址映射表460本身的数据量可以保持在较低的水平,因而可以被存储至加速器系统的具有较高访问速度的物理存储设备(例如,L2高速缓存250)中。以此方式,可以进一步提高加速器系统的访问速度进而提高整体性能。
根据本公开的一个示例性实现方式,用户可以在程序中定义所需要的虚拟地址区域440的大小。例如,可以使用关键字“ScrathPadMemorySize”(或者其他关键字)来指定虚拟地址区域440的大小。在程序运行时,可以自动检测用户指定的大小是否越界,也即是否超过预定的阈值大小。在此阈值大小例如可以基于L1高速缓存260或者L2高速缓存250的大小来确定。根据本公开的一个示例性实现方式,可以将阈值大小设置为L1高速缓存260的某个百分比(例如,40%或者其他数值)。当用户指定的大小低于该百分比时,可以从L1高速缓存260中选择与大小相匹配的虚拟地址区域,此时L1高速缓存260中的剩余存储空间仍然可以确保加速器系统的其他工作需求。以此方式,可以在不干扰加速器系统的正常操作的情况下,满足进程间共享数据的需求。
根据本公开的一个示例性实现方式,如果用户定义的大小高于阈值大小,则认为用户要求的存储空间过大并且将会影响加速器系统的正常操作。此时,可以从用户期望的存储设备以及其他具有较低等级的物理存储设备中选择满足用户要求大小的虚拟地址区域。假设程序中的关键字表示用户期望从L2高速缓存250中分配大小为“size”的虚拟地址区域,并且“size”的数值高于预定阈值大小。此时,可以分别从外部存储设备150和L2高速缓存250两者中分配虚拟地址区域440,并且来自两个等级的高速缓存的存储空间的总数为“size”。利用本公开的示例性实现方式,可以在加速器系统的整体处理性能和用户需求之间进行平衡,以便在不影响整体性能的情况下尽量满足用户需求。
根据本公开的一个示例性实现方式,可以在加速器系统处的多个处理引擎中的一个处理引擎处执行方法500。具体地,在由图2所示处理引擎单元230中的PE_1执行程序的情况下,可以在该PE_1处执行方法500。以此方式,可以确保可以在处理引擎本地管理由该处理引擎所执行的程序,从而提高程序的运行效率。
根据本公开的一个示例性实现方式,可以基于程序中的定义,来设置虚拟地址区域440的格式。假设程序目的在于处理张量数据,则可以按照将被处理的张量的维度,将虚拟地址区域440的格式设置为以下任一维度的张量:1维、2维、3维以及4维或者其他维度。利用本公开的示例性实现方式,可以按照用户定义来设置虚拟地址区域440的格式,以使得所分配的共享区域可以适合于用户需求,从而在多个线程之间传递所需格式的数据。
根据本公开的一个示例性实现方式,除了用户指定的虚拟地址区域440以外,可以向程序分配用于执行其他任务的其他虚拟地址空间。此时,可以利用地址偏移来标识用作共享空间的虚拟地址区域440。具体地,可以在如图3所示的虚拟存储中的被分配给处理引擎PE_1的部分中,确定虚拟地址区域440的位置。进一步,可以向程序提供与虚拟地址区域440相关联的地址偏移。以此方式,在执行线程之的间数据共享时,第一线程410和第二线程420可以经由该地址偏移来访问虚拟地址区域440,从而以简单并且有效的方式指向共享空间。
将会理解,在此可以基于张量数据的格式来确定偏移的格式。假设张量数据涉及1维格式,则此时可以使用1维地址偏移;假设张量数据涉及2维格式,则此时可以使用2维地址偏移,以此类推。以此方式,可以按照与将被共享的数据格式相匹配的方式来设置地址偏移,进而使得程序可以准确地定位虚拟地址区域440的位置。
上文已经描述了如何根据程序中的定义来向程序分配虚拟地址区域440。在图5中的框520处,可以将虚拟地址区域440设置为便笺存储器属性450。具体地,可以向该虚拟地址区域440所在的位置设置标识符,以便表示便笺存储器属性450。将会理解,在此的便笺存储器属性450可以表示一种特殊的存储器管理策略,当程序运行时,该存储器管理策略可以确保程序中的多个线程可以以高效的方式共享数据。
在图5的框530处,可以基于虚拟地址区域440,管理在程序中的第一线程410和第二线程420之间共享的数据。将会理解,虚拟地址区域440是用于数据共享的专门临时区域,因而在程序运行初期并不需要初始化虚拟地址区域440中的数据。根据本公开的一个示例性实现方式,在一个线程向虚拟地址区域440写入数据之后,由另一线程从虚拟地址区域440中读出被写入的数据,以便实现进程间数据共享的目的。在下文中,将参见图6描述用于基于虚拟地址区域440来在线程410和420之间共享数据的更多细节。
图6示出了根据本公开的一个实施方式的虚拟地址区域的的工作过程示意框图600。如图6所示,虚拟地址区域440可以包括多个数据块,可以针对各个数据块设置标记620来表示状态。例如,在初始阶段,标记620可以被设置为“未使用”,以便指示此时数据块610中的数据没有准备就绪用于线程间共享。假设数据块610用于从第二线程420向第一线程410传输数据,如果确定第一线程410从“未使用”的数据块610(也即,尚未被第二线程420写入数据)中读取数据,则可以调取读取异常处理。例如,可以通知第一线程410继续等待,直到第二线程420向数据块610写入待共享的数据。
将会理解,由于第一线程410和第二线程420在程序运行期间将会不断进行数据交换,因而需要确保被分配的虚拟地址区域440中的数据尽量位于L1高速缓存260中以便提供较高的访问速度。此时,可以修改与虚拟地址区域440相关联的交换策略,以使得虚拟地址区域440中的数据尽量不被交换到访问速度较低的其他物理存储设备。假设最初利用L2高速缓存250中的存储空间提供虚拟地址区域440,则在程序运行过程中将虚拟地址区域440中的数据加载至L1高速缓存260之后,在存储资源的管理过程中可以尽量将虚拟地址区域440中的数据保留在L1高速缓存260中,而不将数据交换至具有较低访问速度的L2高速缓存250和外部存储设备150。
随着加速器系统的运行,可以使用最近最少使用(LRU)原则来管理存储资源。此时,可以对被标记为便笺存储器的存储空间进行特殊处理,以使得虚拟地址区域440中的数据尽量保持在具有较高访问速度的物理存储设备中。例如,可以设置阈值时间,并且只有当数据满足LRU原则并且超过阈值时间时,才将该数据交换至具有较低访问速度的物理存储设备。根据本公开的一个示例性实现方式,还可以基于其他规则来确保尽量将虚拟地址区域440中的数据保持在访问速度较快的物理存储设备中。
利用本公开的示例性实现方式,在程序运行期间,可以确保各个线程可以利用具有较高访问速度的物理存储设备中的存储空间作为共享区域,从而降低数据共享涉及的读写操作的时间开销,进而提高线程间数据共享的效率。
在此,虚拟地址区域440中的数据是用于线程间数据共享的临时数据并且仅在程序运行期间是有效的,因而当虚拟地址区域440中的数据没有被交换至低速物理存储设备时,不必向低速物理存储设备回写数据。具体地,如果确定某个线程向与虚拟地址区域440中的数据块610相关联的高速缓存线写入数据,可以将高速缓存线设置为“脏”,以便指示高速缓存线中的内容已经被修改。此时,可以禁止将高速缓存线中的数据回写至虚拟地址区域440。利用本公开的示例性实现方式,可以尽量减少不必要的数据写入操作所占用的时间开销,从而提高加速器系统的性能。
根据本公开的一个示例性实现方式,可以仅在虚拟地址区域440中的数据被交换至低速物理存储设备时,执行回写操作。在下文中,将参见图7描述有关数据交换的更多细节。图7示出了根据本公开的一个实施方式的用于在不同等级的物理存储设备之间交换数据的示意框图700。如图7所示,假设数据块610被加载至L1高速缓存260中的高速缓存线710,并且该高速缓存线710中的数据将被移出至具有较低访问速度的L2高速缓存250中的物理存储块720中。此时,可以向L2高速缓存250中的物理存储块720回写数据,换言之,可以向物理存储块720写入高速缓存线710中的数据。根据本公开的一个示例性实现方式,可以仅回写被标记为“脏”的数据。
利用本公开的示例性实现方式,只有当较高速度的物理存储设备中的数据被移出至较低速度的物理存储设备才执行数据回写,一方面可以确保虚拟地址区域440中的“脏”数据不会丢失,另一方面可以确保不会出现向较低速度的物理存储设备中重复写入数据的无用开销。
根据本公开的一个示例性实现方式,虚拟地址区域440中的数据是程序运行期间的临时数据并且这些数据仅对于程序有用,因而当程序结束时,可以释放虚拟地址区域440。换言之,可以将该虚拟地址区域440标记为“空闲”以便用作其他目的。利用本公开的示例性实现方式,可以按照程序中的定义,在程序启动时分配虚拟地址区域440用于由程序调用的多个线程之间的数据共享。进一步,可以在程序结束时释放虚拟地址区域440。以此方式,可以随着不同程序的运行而不断地分配和释放相应的虚拟地址区域,从而达到由不同程序在不同时间段循环使用空闲存储空间的目的。
上文已经描述了根据本公开的一个示例性实现方式的用于基于便笺存储器来共享数据的一般原理。在下文中,将仅以数据排序程序为示例描述如何使用虚拟地址区域440来在多个线程之间共享数据。在此的数据排序程序可以基于多种方式来实现,例如,可以基于冒泡排序、归并排序和/或其他任意排序算法来实现。假设排序程序的目的在于将大量数据(例如,10000个数字)排序,此时程序可以将待排序数字划分为多个部分,并且分别指定由不同的线程来处理每个部分。具体地,可以将10000个数字划分为两部分,由线程T1和线程T2来分别处理10000/2=5000个数据,并且排序程序可以指定可容纳10000个数据的虚拟地址区域来作为共享区域。
当线程T1和T2分别完成各自的5000个数据的局部排序时,两个线程T1和T2可以分别向虚拟地址区域的相应位置处写入排序后的5000个数据。进一步,某个线程(例如,线程T1或者T2)可以对经过初步排序的5000+5000=10000个数据执行排序,以便获得最终排序后的10000个数据。将会理解,尽管此时要执行多次排序,线程T1和T2可以并行地运行以提供局部排序的数据序列。相对于利用单个线程来对10000个原始数据进行整体排序而言,利用虚拟地址区域来辅助多个线程并行地执行排序操作可以提高排序效率并且降低排序时间。
在上述排序的示例中,10000个数据将会占用较大的存储空间。将会理解,传统的基于L1高速缓存来提供共享区域的技术方案并不能提供如此大小的存储空间,进而导致需要在不同速度的物理存储设备之间的频繁交换数据,这将会大大降低排序性能。
不同于传统的技术方案,根据本公开的一个示例性实现方式,可以基于被映射至一个或多个物理存储设备的虚拟地址区域来提供共享空间,因而所提供的共享空间的大小并不受限于L1高速缓存的限制,而是可以便于扩展。以此方式,可以提供更大的共享空间进而提高数据处理效率。进一步,针对便笺存储器的特殊存储器交换策略可以确保共享空间尽量位于具有较高访问速度的物理存储设备中。因而可以降低对于片外存储设备的读写频率,在提高读写效率的同时降低加速器系统的能耗。
将会理解,上文仅以排序程序为示例描述了如何基于便笺存储器在多个线程之间共享数据,还可以在用于实现其他目的的程序中使用便笺存储器。根据本公开的一个示例性实现方式,当使用寄存器堆来存储局部变量是,寄存器堆的数量可能会出现不足。此时,可以使用虚拟地址区域来用于存储局部变量。将会理解,尽管上文示意性示出了经由虚拟地址区域440来在两个线程之间共享数据的示例,根据本公开的一个示例性实现方式,还可以经由虚拟地址区域440在更多线程之间共享数据。
根据本公开的一个示例性实现方式,虚拟存储是片上张量虚拟存储。具体地,该虚拟存储可以用于存储程序运行期间涉及的多种张量数据。进一步,可以在大于两个线程的更多线程之间共享数据。例如,可以基于所述虚拟地址区域,管理在第一线程、第二线程、以及所述程序中的一个或多个其他线程之间共享的数据。
根据本公开的一个示例性实现方式,可以在PE上运行最多两个程序(program)。换言之,可以在PE上并行地运行两个kernel程序。此时,虚拟地址区域可以在PE上运行的一个kernel程序的多个线程执行共享数据,也即,不能在并行运行的两个不同kernel程序调用的多个线程之间共享数据。
相比于常规的便笺存储器,本公开的便笺存储器不再局限于固定大小的片上存储,而是提供了一种可以扩展的虚拟存储方式。此时,基于便笺存储器是在PE中运行的kernel程序所私有的。当kernel程序启动时,便笺存储器中的数据值是未定义的,并且该数据值由kernel的线程来定义。当kernel程序结束时,便笺存储器中的数据将被丢弃,也即不会被回写到其他级别的存储设备中。
根据本公开的一个示例性实现方式,可以定义便笺存储器属性并且将该属性赋予由kernel程序调用的某些段,该属性被提供给硬件。在硬件执行kernel时,该属性被用于控制存储器的交换策略。在此,便笺存储器可以被映射到L2高速缓存或者DRAM存储器。相对于访问其他类型的存储器,针对便笺存储器的访问在L1高速缓存将被特殊处理,以便在高速缓存交换时具有更高的优先级,例如,便笺存储器中的数据在L1高速缓存中可以驻留更长的时间。
进一步,针对便笺存储器的访问在L1高速缓存可以延迟写回,直到必须被替换时才将脏数据写出到其他等级的存储器。在kernel程序结束时,可以将被加载到L1高速缓存中的与便笺存储器对应的数据设为无效(包括脏数据)。因为当kernel程序结束时,这些数据将不再被需要。便笺存储器可以被定义为存储结构化的张量格式,例如,可以包括1维、2维、3维或4维张量。此外,在kernel程序运行时,可以自动检测出便笺存储段的访问越界。
图8示出了根据本公开的一个实施方式的用于在线程之间共享数据的装置800的示意框图。装置800可以被实现为或者被包括在图2的加速器系统200中。装置800可以包括多个单元,以用于执行如图5中所讨论的方法500中的对应步骤。
如图8所示,装置800包括:分配单元810,被配置用于基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给程序,虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储;设置单元820,被配置用于将虚拟地址区域设置为便笺存储器属性;以及共享单元830,被配置用于基于虚拟地址区域,管理在程序中的第一线程和第二线程之间共享的数据。
根据本公开的一个示例性实现方式,分配单元810包括:等级确定单元,被配置用于基于定义确定用于指定与虚拟地址区域相对应的物理存储设备的等级;以及选择单元,被配置用于从多个物理设备中的具有等级的物理设备中,选择虚拟地址区域以用于分配给程序。
根据本公开的一个示例性实现方式,选择单元包括:大小确定单元,被配置用于基于定义确定虚拟地址区域的大小;以及第一选择单元,被配置用于响应于确定大小不高于阈值大小,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,选择单元包括第二选择单元,被配置用于响应于确定大小高于阈值大小,从多个物理设备中的具有等级的物理设备和低于等级的物理设备中,选择与大小相匹配的虚拟地址区域。
根据本公开的一个示例性实现方式,管理单元830包括:修改单元,被配置用于修改与虚拟地址区域相关联的交换策略,以使得虚拟地址区域中的数据不被交换到另一物理存储设备,另一物理存储设备的等级低于与虚拟地址区域相对应的物理存储设备的等级。
根据本公开的一个示例性实现方式,管理单元830包括:写入单元,被配置用于响应于确定第一线程向虚拟地址区域中的高速缓存线写入数据,将高速缓存线设置为“脏”标记;以及禁止单元,被配置用于禁止将高速缓存线中的数据写入至与虚拟地址区域相关联的下一等级的存储设备。
根据本公开的一个示例性实现方式,管理单元830包括:回写单元,被配置用于响应于确定高速缓存线中的数据将被交换至另一物理存储设备,向另一物理存储设备回写高速缓存线中的数据。
根据本公开的一个示例性实现方式,管理单元830包括:初始设置单元,被配置用于将虚拟地址区域中的高速缓存线设置为“未使用”;以及调取单元,被配置用于响应于确定第一线程从被设置为“未使用”的高速缓存线中读取数据,调取读取异常处理。
根据本公开的一个示例性实现方式,管理单元830包括:释放单元,被配置用于响应于确定程序结束,释放虚拟地址区域。
根据本公开的一个示例性实现方式,分配单元810包括:格式设置单元,被配置用于基于程序中的定义,将虚拟地址区域的格式设置为以下任一维度的张量:1维、2维、3维以及4维。
根据本公开的一个示例性实现方式,该装置800在加速器系统处的多个处理引擎中的一个处理引擎处被实现,虚拟地址区域经由地址映射表被映射至多个物理存储设备,以及地址映射表被存储在加速器系统中。
根据本公开的一个示例性实现方式,分配单元810包括:地址确定单元,被配置用于在虚拟存储中的被分配给处理引擎的部分中,确定虚拟地址区域;以及偏移单元,被配置用于向程序提供与虚拟地址区域相关联的地址偏移。
根据本公开的一个示例性实现方式,虚拟存储是片上张量虚拟存储,并且管理单元830进一步配置用于:基于虚拟地址区域,管理在第一线程、第二线程、以及程序中的其他线程之间共享的数据。
根据本公开的一个示例性实现方式,提供了一种计算机可读存储介质。该介质存储多个程序,多个程序被配置为一个或多个处理引擎执行,多个程序包括用于执行上文描述的方法的指令。
根据本公开的一个示例性实现方式,提供了一种计算机程序产品。该计算机程序产品包括多个程序,多个程序被配置为一个或多个处理引擎执行,多个程序包括用于执行上文描述的方法的指令。
根据本公开的一个示例性实现方式,提供了加速器系统。该加速器系统包括:处理器;以及与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述处理器执行时使得所述设备执行上文描述的方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施方式的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (21)
1.一种用于基于便笺存储器来共享数据的方法,包括:
基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给所述程序,所述虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储;
将所述虚拟地址区域设置为便笺存储器属性;以及
基于所述虚拟地址区域,管理在所述程序中的第一线程和第二线程之间共享的数据。
2.根据权利要求1所述的方法,其中将所述虚拟地址区域分配给所述程序包括:
基于所述定义确定用于指定与所述虚拟地址区域相对应的物理存储设备的等级;以及
从所述多个物理设备中的具有所述等级的物理设备中,选择所述虚拟地址区域以用于分配给所述程序。
3.根据权利要求2所述的方法,其中选择所述虚拟地址区域以用于分配给所述程序进一步包括:
基于所述定义确定所述虚拟地址区域的大小;以及
响应于确定所述大小不高于阈值大小,选择与所述大小相匹配的所述虚拟地址区域。
4.根据权利要求3所述的方法,其中选择与所述大小相匹配的所述虚拟地址区域进一步包括:响应于确定所述大小高于所述阈值大小,
从所述多个物理设备中的具有所述等级的物理设备和低于所述等级的物理设备中,选择与所述大小相匹配的所述虚拟地址区域。
5.根据权利要求1所述的方法,其中基于所述虚拟地址区域,在所述程序中的第一线程和第二线程之间共享数据包括:
修改与所述虚拟地址区域相关联的交换策略,以使得所述虚拟地址区域中的数据不被交换到另一物理存储设备,所述另一物理存储设备的等级低于与所述虚拟地址区域相对应的物理存储设备的等级。
6.根据权利要求1所述的方法,其中基于所述虚拟地址区域,在所述程序中的第一线程和第二线程之间共享数据包括:
响应于确定所述第一线程向与所述虚拟地址区域相关联的高速缓存线写入数据,将所述高速缓存线设置为“脏”标记;以及
禁止将所述高速缓存线中的所述数据回写至所述虚拟地址区域。
7.根据权利要求6所述的方法,进一步包括:
响应于确定所述高速缓存线中的数据将被交换至另一物理存储设备,向所述另一物理存储设备回写所述高速缓存线中的所述数据。
8.根据权利要求1所述的方法,其中基于所述虚拟地址区域,在所述程序中的第一线程和第二线程之间共享数据包括:
将所述虚拟地址区域中的数据块设置为“未使用”;以及
响应于确定所述第一线程从被设置为“未使用”的数据块中读取数据,调取读取异常处理。
9.根据权利要求1所述的方法,进一步包括:响应于确定所述程序结束,释放所述虚拟地址区域。
10.根据权利要求1所述的方法,其中将所述虚拟地址区域分配给所述程序包括:基于所述程序中的所述定义,将所述虚拟地址区域的格式设置为以下任一维度的张量:1维、2维、3维以及4维。
11.根据权利要求11所述的方法,其中所述方法在所述加速器系统处的多个处理引擎中的一个处理引擎处被执行,所述虚拟地址区域经由地址映射表被映射至所述多个物理存储设备,以及所述地址映射表被存储在所述加速器系统中。
12.根据权利要求11所述的方法,其中将所述虚拟地址区域分配给所述程序包括:
在所述虚拟存储中的被分配给所述处理引擎的部分中,确定所述虚拟地址区域;以及
向所述程序提供与所述虚拟地址区域相关联的地址偏移。
13.根据权利要求1所述的方法,其中所述虚拟存储是片上张量虚拟存储,并且所述方法进一步包括:
基于所述虚拟地址区域,管理在所述第一线程、所述第二线程、以及所述程序中的其他线程之间共享的数据。
14.一种计算机可读存储介质,存储多个程序,所述多个程序被配置为一个或多个处理引擎执行,所述多个程序包括用于执行权利要求1-13中任一项所述的方法的指令。
15.一种计算机程序产品,所述计算机程序产品包括多个程序,所述多个程序被配置为一个或多个处理引擎执行,所述多个程序包括用于执行权利要求1-13中任一项所述的方法的指令。
16.一种加速器系统,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述处理器执行时使得所述设备执行权利要求1-13中任一项所述的方法。
17.一种用于基于便笺存储器来共享数据的装置,包括:
分配单元,被配置用于基于程序中的定义,将由加速器系统可访问的虚拟存储中的虚拟地址区域分配给所述程序,所述虚拟地址区域被映射至以下多个物理存储设备中的任一项:二级高速缓存以及外部存储;
设置单元,被配置用于将所述虚拟地址区域设置为便笺存储器属性;以及
管理单元,被配置用于基于所述虚拟地址区域,管理在所述程序中的第一线程和第二线程之间共享的数据。
18.根据权利要求17所述的装置,其中所述分配单元包括:
确定单元,被配置用于基于所述定义确定用于指定与所述虚拟地址区域相对应的物理存储设备的等级;以及
选择单元,被配置用于从所述多个物理设备中的具有所述等级的物理设备中,选择所述虚拟地址区域以用于分配给所述程序。
19.根据权利要求17所述的装置,其中所述管理单元包括:
修改单元,被配置用于修改与所述虚拟地址区域相关联的交换策略,以使得所述虚拟地址区域中的数据不被交换到另一物理存储设备,所述另一物理存储设备的等级低于与所述虚拟地址区域相对应的物理存储设备的等级。
20.根据权利要求17所述的装置,其中所述管理单元包括:
写入单元,被配置用于响应于确定所述第一线程向所述虚拟地址区域中的高速缓存线写入数据,将所述高速缓存线设置为“脏”标记;以及
禁止单元,被配置用于禁止将所述高速缓存线中的所述数据写入至与所述虚拟地址区域相关联的下一等级的存储设备。
21.根据权利要求20所述的装置,其中所述管理单元进一步包括:
回写单元,被配置用于响应于确定所述高速缓存线中的数据将被交换至另一物理存储设备,向所述另一物理存储设备回写所述高速缓存线中的所述数据;以及
释放单元,被配置用于响应于确定所述程序结束,释放所述虚拟地址区域。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111314187.9A CN114035980B (zh) | 2021-11-08 | 2021-11-08 | 基于便笺存储器来共享数据的方法和电子装置 |
PCT/CN2022/108045 WO2023077880A1 (zh) | 2021-11-08 | 2022-07-26 | 基于便笺存储器来共享数据的方法和电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111314187.9A CN114035980B (zh) | 2021-11-08 | 2021-11-08 | 基于便笺存储器来共享数据的方法和电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114035980A true CN114035980A (zh) | 2022-02-11 |
CN114035980B CN114035980B (zh) | 2023-11-14 |
Family
ID=80143340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111314187.9A Active CN114035980B (zh) | 2021-11-08 | 2021-11-08 | 基于便笺存储器来共享数据的方法和电子装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114035980B (zh) |
WO (1) | WO2023077880A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023077880A1 (zh) * | 2021-11-08 | 2023-05-11 | 海飞科(南京)信息技术有限公司 | 基于便笺存储器来共享数据的方法和电子装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728706A (ja) * | 1993-07-14 | 1995-01-31 | Sumitomo Electric Ind Ltd | キャッシュメモリ装置 |
US20030088752A1 (en) * | 2001-11-07 | 2003-05-08 | Philip Harman | Computer system with virtual memory and paging mechanism |
US6941545B1 (en) * | 1999-01-28 | 2005-09-06 | Ati International Srl | Profiling of computer programs executing in virtual memory systems |
US20100257322A1 (en) * | 2009-04-07 | 2010-10-07 | Robert Graham Isherwood | Method and apparatus for ensuring data cache coherency |
US20110078358A1 (en) * | 2009-09-25 | 2011-03-31 | Shebanow Michael C | Deferred complete virtual address computation for local memory space requests |
US20110087840A1 (en) * | 2009-10-09 | 2011-04-14 | Glasco David B | Efficient line and page organization for compression status bit caching |
US20140012940A1 (en) * | 2012-07-03 | 2014-01-09 | Fusion-Io, Inc. | Systems, Methods and Apparatus for a Virtual Machine Cache |
US20150347768A1 (en) * | 2013-12-19 | 2015-12-03 | Intel Corporation | Policy-Based Trusted Inspection of Rights Managed Content |
US20160314069A1 (en) * | 2015-04-21 | 2016-10-27 | Oracle International Corporation | Non-Temporal Write Combining Using Cache Resources |
WO2019159472A1 (ja) * | 2018-02-15 | 2019-08-22 | ソニー株式会社 | メモリ管理装置及びメモリ管理方法、並びに情報処理装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117588A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Access request for a data processing system having no system memory |
US7017024B2 (en) * | 2002-12-12 | 2006-03-21 | International Business Machines Corporation | Data processing system having no system memory |
US20040117587A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Hardware managed virtual-to-physical address translation mechanism |
US10310973B2 (en) * | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
CN103268297A (zh) * | 2013-05-20 | 2013-08-28 | 浙江大学 | 基于异构多核平台的加速核虚拟便笺存储器的方法 |
CN105868028B (zh) * | 2015-01-23 | 2021-05-18 | 深圳市链科网络科技有限公司 | 一种进程间共享数据的方法、装置及终端 |
CN104881330B (zh) * | 2015-05-22 | 2018-08-21 | 大唐移动通信设备有限公司 | 一种多进程共享数据的方法和装置 |
US9858199B1 (en) * | 2016-03-30 | 2018-01-02 | Amazon Technologies, Inc. | Memory management unit for shared memory allocation |
CN114035980B (zh) * | 2021-11-08 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 基于便笺存储器来共享数据的方法和电子装置 |
-
2021
- 2021-11-08 CN CN202111314187.9A patent/CN114035980B/zh active Active
-
2022
- 2022-07-26 WO PCT/CN2022/108045 patent/WO2023077880A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728706A (ja) * | 1993-07-14 | 1995-01-31 | Sumitomo Electric Ind Ltd | キャッシュメモリ装置 |
US6941545B1 (en) * | 1999-01-28 | 2005-09-06 | Ati International Srl | Profiling of computer programs executing in virtual memory systems |
US20030088752A1 (en) * | 2001-11-07 | 2003-05-08 | Philip Harman | Computer system with virtual memory and paging mechanism |
US20100257322A1 (en) * | 2009-04-07 | 2010-10-07 | Robert Graham Isherwood | Method and apparatus for ensuring data cache coherency |
US20110078358A1 (en) * | 2009-09-25 | 2011-03-31 | Shebanow Michael C | Deferred complete virtual address computation for local memory space requests |
US20110087840A1 (en) * | 2009-10-09 | 2011-04-14 | Glasco David B | Efficient line and page organization for compression status bit caching |
US20140012940A1 (en) * | 2012-07-03 | 2014-01-09 | Fusion-Io, Inc. | Systems, Methods and Apparatus for a Virtual Machine Cache |
US20150347768A1 (en) * | 2013-12-19 | 2015-12-03 | Intel Corporation | Policy-Based Trusted Inspection of Rights Managed Content |
US20160314069A1 (en) * | 2015-04-21 | 2016-10-27 | Oracle International Corporation | Non-Temporal Write Combining Using Cache Resources |
WO2019159472A1 (ja) * | 2018-02-15 | 2019-08-22 | ソニー株式会社 | メモリ管理装置及びメモリ管理方法、並びに情報処理装置 |
Non-Patent Citations (1)
Title |
---|
陈逸飞;李宏亮;刘骁;高红光;: "一种阵列众核处理器的多级指令缓存结构" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023077880A1 (zh) * | 2021-11-08 | 2023-05-11 | 海飞科(南京)信息技术有限公司 | 基于便笺存储器来共享数据的方法和电子装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023077880A1 (zh) | 2023-05-11 |
CN114035980B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2542973B1 (en) | Gpu support for garbage collection | |
US5581736A (en) | Method and system for dynamically sharing RAM between virtual memory and disk cache | |
US8266337B2 (en) | Dynamic logical data channel assignment using channel bitmap | |
US20170371654A1 (en) | System and method for using virtual vector register files | |
US20230196502A1 (en) | Dynamic kernel memory space allocation | |
US8108617B2 (en) | Method to bypass cache levels in a cache coherent system | |
US7290112B2 (en) | System and method for virtualization of processor resources | |
CN113836049B (zh) | 存储器访问方法和电子装置 | |
WO2023103392A1 (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
CN114667508A (zh) | 为加速器取回数据的方法和系统 | |
US7865631B2 (en) | Dynamic logical data channel assignment using time-grouped allocations | |
WO2023142403A1 (zh) | 用于确定张量元素的越界状态的方法和电子装置 | |
CN114035980B (zh) | 基于便笺存储器来共享数据的方法和电子装置 | |
US12099866B2 (en) | Address mapping-aware tasking mechanism | |
WO2023103397A1 (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
KR20240023642A (ko) | 메모리-로컬 컴퓨팅을 위한 아토믹 메모리 동작들의 동적 병합 | |
CN115686740A (zh) | 用于交叉地址空间数据移动的可缩放访问控制检查 | |
US11847074B2 (en) | Input/output device operational modes for a system with memory pools | |
US20220197649A1 (en) | General purpose register hierarchy system and method | |
Tanaka | PRESTOR-1: a processor extending multithreaded architecture | |
Očkay et al. | Memory partitions and access patterns used for optimization of GPU processing | |
CN114281414A (zh) | Aigpu架构中urf寄存器的数据写入方法 |
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: 40067449 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |