CN113836049B - 存储器访问方法和电子装置 - Google Patents

存储器访问方法和电子装置 Download PDF

Info

Publication number
CN113836049B
CN113836049B CN202111094313.4A CN202111094313A CN113836049B CN 113836049 B CN113836049 B CN 113836049B CN 202111094313 A CN202111094313 A CN 202111094313A CN 113836049 B CN113836049 B CN 113836049B
Authority
CN
China
Prior art keywords
page
target element
memory
segment
cache
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
CN202111094313.4A
Other languages
English (en)
Other versions
CN113836049A (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.)
Hexaflake Nanjing Information Technology Co Ltd
Original Assignee
Hexaflake Nanjing Information Technology Co Ltd
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 Hexaflake Nanjing Information Technology Co Ltd filed Critical Hexaflake Nanjing Information Technology Co Ltd
Priority to CN202111094313.4A priority Critical patent/CN113836049B/zh
Publication of CN113836049A publication Critical patent/CN113836049A/zh
Priority to PCT/CN2022/107136 priority patent/WO2023040460A1/zh
Application granted granted Critical
Publication of CN113836049B publication Critical patent/CN113836049B/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
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling 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)
  • 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示出了根据本公开的一个实施例的图像数据的页分配示意图;
图5示出了根据本公开的一个实施例的访问存储器的方法的示意流程图;
图6示出了图4中的图像数据的缓存行分配示意图;
图7示出了图4中的图像数据在存储器中的一维存储示意图;以及
图8示出了根据本公开的一些实施例的存储器访问装置的示意框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中示出了本公开的优选实施例,然而应该理解,本公开可以以各种形式实现而不应被这里阐述的实施例限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所提及的,当张量数据表示多维张量时,编程人员通常需要知晓这种多维张量到一维数据的映射,即多维张量到存储器中的一维数据的物理地址的正确映射,这给编程人员增加了严重的认知负担。此外,还可能增加了软件的运行时开销。
在本公开的一些实施例中,通过使用与张量对应的具有多个维度的逻辑地址以将逻辑地址自动转换为与张量数据在存储器中的对应物理地址,编程人员可以无需知晓张量数据与物理地址的映射关系,而只需要了解数据在多维张量中的位置,例如坐标。这样,可以显著减少编程人员的认知负担,并且显著减少应用程序或软件的开发时间并且增加开发效率。
图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的整数。PE单元230中的每个PE可以是单指令多线程(SIMT)装置。在PE中,每个线程可以具有自己的寄存器堆(register file),并且每个PE的所有线程还共享一个统一寄存器堆(uniform register file)。多个PE可以并行地执行相同或不同的处理工作,可以并行地进行下文所述的地址转换和存储器中目标数据的访问,从而减少处理时间。可以理解,多个PE处理的目标元素并不相同,并且目标元素所在的段、页、缓存行和元素的属性、尺寸、维度排序等可以有所不同,如下文具体描述。
每个线程可以在自己的寄存器堆与存储器子系统之间做线程级的数据交换。每个线程有自己的算数逻辑执行单元并使用自己的存储地址,其采用典型的寄存器存取架构(load-store architecture)。每个执行单元包括一个支持多种数据类型的浮点/定点单元以及一个算数逻辑单元。
大多数的指令执行算数和逻辑运算,例如,浮点和定点数的加、减、乘、除,或者逻辑与、或、非等。操作数来自于寄存器。存储器读写指令可以提供寄存器与片上/片外存储器之间的数据交换。一般地,PE中所有的执行单元可以同步地执行相同指令。通过使用谓词(predicate)寄存器,可以屏蔽部分执行单元,从而实现分支指令的功能。
在一个实施例中,图2的加速器子系统200可以例如执行如下操作:1)组建页表项内容和初始状态;2)将诸如图1中的设备存储器50之类的片外存储器上的数据搬运至片上存储器,例如L2高速缓存250;3)启动和执行程序;4)定义各个段并对张量以及存储的属性进行描述;5)在程序执行完成时,将执行结果的数据写入至片外存储器。
可以理解,在公开的实施例中,加速器子系统200所处理的数据主要针对多维张量。例如,在一个实施例中,张量可以是四维张量,其具有四个维度D1、D2、D3和D4,并且张量在各维上的尺寸可以不同。在另一些实施例中,张量可以是一维、二维、三维或更多维张量,本公开对此不进行限制。
此外,在本公开的实施例中,张量内部可以支持诸如uint8、int8、bfloat16、float16、uint16、int16、float32、int32、uint32以及其他自定义元素类型,本公开对此也不进行限制。对于张量的寻址而言,其以元素为基本单位。例如,如果元素类型为int8,则元素以字节为单位。再例如,如果元素类型为int16,则寻址基本单位为双字节,依此类推。
在一些情形中,张量所包含的数据量可能较大,而L2高速缓存250的容量有限,因此无法将张量整体加载至片上的L2高速缓存250。在本公开的一些实施例中,为了便于张量的并行处理,可以将张量划分为至少一个段。在张量仅包括一个段的情形下,张量即为段。而在张量包括多个段的情形下,段为张量的一部分。CPU 20可以通过指令指定段的各个部分由哪个PE进行处理。
图3示出了根据本公开的一个实施例的三维张量300的示意框图。三维张量300具有三个维度D1、D2和D3,并且包括第一段S1、第二段S2和第三段S3。CPU 20可以指定段S1的张量元素由PE_1、PE_2、PE_3、PE_4、PE_5、PE_6、PE_7和PE_8处理。此外,CPU20还指定了第二段S2的张量元素由PE_1-PE_4处理。在本公开的实施例中,每个段所具有的尺寸可以不同,因此编程人员可以基于设计需要灵活配置段。实际上,页的划分可以在任意一个或多个维上实施,并且各维上划分的页数是相互独立的。
在一个实施例中,可以将张量数据存储于片上的高速存储器,例如L2高速缓存250。但由于片上的高速存储器的容量较少,因此在张量规模较大时,编程人员可以将张量划分为多个段,每个段描述张量一部分。核心程序(kernel)可以分多次启动,每次由DMA控制器240提前将张量的一个段由片外存储搬运到片内存储,并供kernel操作使用。在多次启动kernel后,张量包含的所有段均被处理,整个运行过程结束。当片上的高速存储器足以容纳kernel所要访问的所有张量时,一个张量仅需要一个段描述即可,kernel也只需要启动一次。
进一步地,在本公开的一些实施例中,在一个段内,还可以设置至少一个页以进一步细分张量。例如,在第一段S1中,具有4个页P[1]、P[2]、P[3]和P[4]。第二段S2仅具有一个页。在本公开的实施例中,每个段所具有的页的数目可以不同,因此编程人员可以基于设计需要灵活配置段内页的尺寸。例如,将页配置为适于整体存入L2高速缓存250。
如上所述,当对张量寻址时,最小的寻址单元是以元素为单元。一个页通常可以包括多个元素。目标元素所在的页在本文中被称为“目标元素页”。在本公开的一些实施例中,页可以包括多个缓存行。目标元素页可以位于L2高速缓存250中时,如果PE经由L1高速缓存260读取目标元素,则L2高速缓存250需要将L2高速缓存250中的包括目标元素在内的一小部分的物理地址连续的数据整体传输至L1高速缓存260。这一小部分数据也被称为缓存行(cache line)数据,而这种缓存机制基于空间邻近性原理。PE从L1高速缓存260读取数据仅需几个时钟周期,而L1高速缓存260从L2高速缓存250读取数据可能需要几十个甚至上百个时钟周期。因此,期望减少L1高速缓存260从L2高速缓存250读取数据的次数。虽然在此以“缓存行”来描述从L2高速缓存250到L1高速缓存260的最小传输数据单位,但在本公开中,这部分数据可以并不必然按行或列排列,一个“缓存行”里面的数据分布在多个维上,且各维上分布的数据尺寸不限于1。PE对一个段内的数据进行并行处理,PE的分配在数据的逻辑地址空间展开,独立于段的物理存储结构,具体如下文描述。
在图3中,第一页P[1]中的第一组缓存行被指定由PE_1处理,第二组缓存行被指定由PE_2处理。虽然在此以顺序示出了张量由多个PE依序处理,但是可以理解张量数据的处理独立于PE的顺序,本公开对此不进行限制。例如图3中的PE_2表示部分的张量数据可以由PE_M处理,其中M表示不大于N的任意整数。
图4示出了根据本公开的一个实施例的图像数据400的页分配示意图。图像数据是典型的二维张量。在一个实施例中,图像数据400例如为8*8像素。换言之,图像数据400在第一维D1具有8个像素,并且在第二维D2也具有8个像素。因此,图像数据400具有像素P00、P01……P77。在图4的实施例中,图像数据400仅具有一个段,但是按两个维度分为4个页P[1]、P[2]、P[3]和P[4]。4个页可以按第二维D2划分以分配给PE_1和PE_2处理,也可以按第一维D1划分以分配给PE_1和PE_2处理。此外,还可以按对角线划分。本公开对此不进行限制。
图5示出了根据本公开的一些实施例的对存储器进行访问的方法500的流程图。在一个实施例中,方法500例如可以由诸如GPU之类的加速器子系统实施,因此上面针对图1-图3描述的各个方面可以选择性地适用于方法500。
在502,加速器子系统将张量中的第一段中的目标元素的逻辑地址转换为目标元素在存储器中的物理地址。目标元素为待获取并且将由PE处理的张量元素。例如图4中的像素P01。在一个实施例中,当核心程序访问张量的段时,核心程序可以被部署至一个或多个PE上,每个PE通过段访问其所描述张量数据的部分或全部元素。每个PE在段内访问的张量数据的起始点由段结构中的基准点(anchor)坐标定义。在一些实施例中,在处理相同的张量的相同段时,对于不同PE来说,其段结构中基准点坐标的定义也不尽相同。
在一个实施例中,目标元素的逻辑地址可以表示为seg:RF:imm,其中seg表示段基址寄存器,RF表示偏移寄存器,imm表示偏移立即数。从张量角度而言,逻辑地址可以包括第一段在张量中的段基准数据和偏移数据,偏移数据表示目标元素在第一段的多个维度中的各维上的偏移量。段基准数据为段起始点的地址。
在一个实施例中,第一段包括至少一个页,加速器子系统200可以至少根据目标元素页的各维的尺寸,将逻辑地址转换为线性地址。线性地址包括目标元素页的一维页标识和目标元素在目标元素页内的一维偏移值。具体而言,加速器子系统200可以根据第一段内各维上页的页尺寸得到目标元素在各维上所处的页序号偏移,由此获得目标元素所处的页的一维标识。例如,目标元素位于图3中的张量的最上层,通过上述方式可以确定目标元素的页标识为P[1]。
此外,加速器子系统还可以得到目标元素在该页内部各维上的相对偏移量,并以此为基础,确定目标元素相对于页的起始位置的一维线性偏移量。页的一维标识以及页内的一维线性偏移量共同构成目标元素的线性地址。
加速器子系统200根据针对目标元素页的页表项,将线性地址转换为物理地址,页表项包括至少一个页中的每个页的页物理地址。具体而言,在一个实施例中,加速器子系统200在获取目标元素的页标识之后,可以根据页标识查找页表装置220中对应的项,获取页的物理地址。该物理地址加上目标元素在目标元素页的一维线性偏移量即为目标元素的物理地址。该物理地址可以表示片外的设备存储器50或片上的存储器,例如L2高速缓存250上的目标元素的存储地址。备选地,目标元素页的页表项也可以存储相对于其它页的物理地址,并且基于目标元素页相对于其它页的偏移、其它页的物理地址和一维线性偏移量来获得目标元素的物理地址。
除了物理地址之外,页表项还可以包括其它属性,例如状态,用于表示页是否加载完毕,即是否可用。本公开对此不进行限制。虽然在此示出了地址的二级转换,但是本公开不限于此。备选地,也可以经过更多级转换。例如,分级计算页偏移、缓存行偏移、元素偏移,并且依次与物理地址相加以得到目标元素的最终的物理地址。
在一个实施例中,加速器子系统200将多个页中的第一页从片外的存储器移入片上的存储器,并且建立与第一页对应的第一页表项,第一页表项存储第一页在存储器中的物理地址。如果将多个页中的第一页从存储器移入片外存储器,则加速器子系统200可以删除与第一页对应的第一页表项。
加速器子系统将第一段S1中的目标元素的逻辑地址转换为在片上虚拟存储器中的物理地址。片上虚拟存储器可以包括片上的L2高速缓存250和片外的设备存储器50。逻辑地址包括第一段在张量中的段基准数据和偏移数据,偏移数据表示目标元素在第一段的多个维度中的各维上的偏移量。
在504,加速器子系统可以使用目标元素的物理地址访问存储器。这样,编程人员在编程时可以使用段基准数据和相对于段基准数据的多维偏移量来从张量的视角使用张量数据,而无需知晓张量数据与存储器中的物理地址的一一映射关系。
上面描述了根据本公开的一些实施例的将多维张量的逻辑地址转换为物理地址的数据寻址方式。然而在张量的处理过程中,还可以进一步考虑诸如L1高速缓存260从L2高速缓存250获取张量数据的空间邻近性因素。L1高速缓存260从高速缓存250获取张量数据时,最小的获取单位为缓存行。换言之,当L1高速缓存260从高速缓存获取元素时,并非只是获取目标元素,而是将其附近的张量元素一起读取至L1高速缓存260。这个获取的数据的最小量是一个缓存行。例如参考图4,当缓存行按行排布时,如果期望获得目标元素P00,则L1高速缓存260会从L2高速缓存250一起读取元素P00-P03,这是因为在此情形下的缓存行包括元素P00-P03。
然而在张量处理过程中,往往是目标元素附近的元素具有较大相关性,并且被处理的概率较大。例如,图像的像素经常是按照像素间的曼哈顿距离存取,相邻的像素通常会在一起处理。当目标元素P00被处理时,目标元素P00附近的元素P01和P10有较大概率被处理。以P10举例而言,由于L1高速缓存260在从L2高速缓存250读取目标元素P00时,仅一同读取了同一缓存行内的P01、P02和P03,因此当PE试图从L1高速缓存260读取P10时,L1高速缓存260会再次从L2高速缓存250读取P10所在的缓存行。这会造成数据处理速度的降低以及存储带宽的潜在浪费。
在本公开的一些实施例中,在上面的多维张量寻址方法的基础上,提出一种多维张量的逆交叉寻址的方法。具体而言,至少一个页中的每个页包括多个缓存行,张量的多个元素在缓存行中的维度布置顺序不同于张量的多个缓存行在至少一个页中的维度布置顺序。图6示出了图4中的图像数据的缓存行分配示意图。下面结合图6和图4来描述逆交叉寻址。如图4所示,图像数据400包括仅一个段,并且该段包括4个页P[1]、P[2]、P[3]和P[4]。图像数据400为二维张量,因此图像数据400包括第一维D1和第二维D2。
在一个实施例中,图像数据400的页首先按照第一维D1排列,并且在到达第一维D1的边界之后,在第二维D2延伸一页,并且继续按第一维D1排列。如图4所示,图像数据400的页的布置顺序是P[1]、P[2]、P[3]和P[4]。然而,在本公开的一些实施例中,张量的多个元素在缓存行中的维度布置顺序不同于张量的多个缓存行在至少一个页中的维度布置顺序,例如参见图6。
图6示出了图4中的图像数据的缓存行分配示意图。图6示出了4个缓存行C[1]、C[2]、C[3]和C[4],并且每个缓存行包括4个元素。例如,第一缓存行C[1]包括元素P00、P10、P01和P11。与图4中的页的布置顺序相似,在图6中,缓存行C[1]、C[2]、C[3]和C[4]也是先沿着第一维D1布置,直至到达第一维D1的边界。缓存行随后在第二维D2延伸一个缓存行,并且继续沿着第一维D1布置,直至到达第一维D1的边界。如图6所示,页600的缓存行的布置顺序是C[1]、C[2]、C[3]和C[4]。在一个实施例中,可以使用如下三个域来描述图4和图6的图像数据的逻辑地址:addr[5:4]、add[3:2]和addr[1:0],其中addr[5:4]表示页的域,即页地址;add[3:2]表示缓存行的域,即,页内缓存行的地址;addr[1:0]表示缓存行内元素或元素序列的地址。
然而,在缓存行的内部,张量元素的布置顺序与缓存行在页内或者页在第一段内的布置顺序截然相反,是为逆交叉寻址。以第一缓存行C[1]为例说明,元素首先按照第二维D2布置然后按第一维D1布置。即,元素P00、P10、P01和P11在缓存行C[1]内依序布置。图7更为形象地示出了图4中的图像数据在存储器中的一维存储示意图。如图7所示,图像数据700在存储器中实际上按一维顺序排列,并且元素P00、P10、P01和P11依次被布置在存储器中。因此,当目标元素为P00时,L1高速缓存从L2高速缓存读取元素P00、P10、P01和P11。这样,就可以提高目标元素的命中,并且相应地减少访问目标元素的时间并且从而减少张量的整体处理时间。因此使用目标元素的物理地址将包括目标元素的缓存行从存储器读取至L1高速缓存,存储器是L2高速缓存或片外存储器。此外,有些目标元素可能会被经常使用,因此期望将其常驻在L1高速缓存中。在一些实施例中,可以在段属性中将包含该目标元素的缓存行的替换规则设置为常驻于L1高速缓存中,这里依赖的是数据访问的时间局部性原理。
虽然在此以二维张量示出了逆交叉寻址,但是可以理解本公开不限于此。缓存行内的元素的维度顺序可以是不同于缓存行在页内的维度顺序或页在段内的维度顺序的任意顺序。在另一些实施例中,在3维或4维张量的情形下,缓存行内的元素维度顺序、页内的缓存行维度顺序和段内的页维度顺序可以两两不同。
此外,每个段中的页数,每个页中的缓存行数以及每个缓存行中的元素的个数也不限于图中示例的数目。
虽然在图6的实施例中将缓存行内的元素示出为方块布置,但是可以理解本公开不限于此。缓存行内的元素也可以按行、按列或是以其它顺序布置在存储器的一维物理区域内。这可以给编程人员进一步的灵活性,使得编程人员可以基于张量元素的使用关系灵活调整缓存行内的元素布置,从而减少程序的运行时间和响应速度。
上面具体介绍了在本公开的一些实施例中的张量分级结构,即张量-段-页-缓存行-元素。张量可以包括至少一个段,段可以包括至少一个页,页可以包括至少一个缓存行,并且缓存行可以包括至少一个元素。张量、段、页和缓存行都可以包括一个或多个维度。可以理解,段的维度数目和尺寸不高于张量的维度数目和尺寸,页的维度数目和尺寸不高于段的维度数目和尺寸,并且缓存行的维度数目和尺寸不高于页的维度数目和尺寸。为了确保程序的正确运行,可以在访问存储器的数据之前,加速器子系统40可以使用逻辑地址确定待访问的地址是否越过张量边界。例如可以检测段基准数据与目标元素的坐标或偏移量之和是否超出各维的尺寸。如果越过边界,则生成存储器访问异常信号。通过检测越界情形的发生,可以确保对寻址的准确性和对存储器中的张量元素存取的正确性。
下面介绍从逻辑地址到物理地址的具体寻址过程的一个示例。诸如CPU 20之类的主机向SP 210传输指令时,指令可以包括张量的各种信息,例如张量描述项。张量描述项例如包括段标识、PE掩码、基准点、起始页号、页数、每页维度、段属性、维度属性等。段标识用于在一次运行过程中索引该段。PE掩码表示待分配的PE。每个比特位对应一个PE。PE掩码被置为1表示分配对应的PE,否则不被分配PE。例如bit0为1,则表示PE_1被分配。一种可能是指定两个PE(PE_1和PE_2),其掩码为0x03。也可以指定4个PE(PE_2、PE_3、PE_5、PE_6),则掩码为0x36,或者只指定PE_8,掩码为0x80。其他情况依此类推,可以根据应用需求及资源可用情况进行任意组合。
基准点表示为各个PE指定的张量内的起始坐标点。例如基准点可以是(0,0,0,0)或(0,4,0,0)。多个PE可以具有相同或不同的基准点,由于基准点实际上是构成目标元素逻辑地址的组成部分,因此段基准数据不同的情形下,不同的PE的相同坐标偏移实际上被映射到不同的物理地址。在PE处理完一个目标元素之后,可以使用相对于基准点的偏移继续访问下一目标元素。备选地,也可以使用新的基准点来访问下一目标元素。
起始页号表示PE处理的元素的起始页。由于段内包含的页标识是连续的,因此在知道段内总页数的情况下,只需要指定段内的起始页标识即可访问段内所有页。页数表示每个维度上划分的页数的乘积。在图4中,在D1和D2两个维度各划分了两个页,因此段内总共包含了2*2=4个页。具体表示为(2,2,0,0)。
每页维度表示元素在页内各维上分布的个数。例如在图4中,段在各维上的元素分布为(8,8,0,0),页在各维上的分布为(2,2,0,0),因此页内各维上的元素分布为(8/2,8/2,0,0),即(4,4,0,0)。每个页内有4x4=16个元素。
段属性包括段中页使用的状态标志、元素大小、元素数据编码类型以及转换标志,段内缓存行的替换规则等。维属性可以用于独立设置各维的属性,包括长模式,流(streaming)模式,地址的符号属性以及缓存行内逆交叉寻址的位宽等信息。长模式表示张量在一个维度的尺寸显著高于其它维度的尺寸。流模式表示可以在核心程序不停止的情形下支持无限长的张量数据的计算。地址的符号属性表示相对于基准点的坐标偏移值可以为正也可以为负,换言之在同一维度上可以正向偏移也可以负向偏移。
页的属性包括页标识、物理基址、状态字段和维度信息等。页标识用于索引对应的页表项。物理基址描述页在诸如L2高速缓存之类的片上存储器或片外的存储器内的物理首地址。状态字段表示页是否被占用或可用。维度信息主要包括维度的数目以及各维的尺寸,该字段可以由段定义。页的属性例如可以被存储在页表装置220内。
参见图4,在一个实施例中,对目标元素P36进行寻址。即PE访问存储器以获取目标元素P36。图像数据400在存储器中以逆交叉的方式被存储。假设图像数据400是一个四维张量,并且页和缓存行均按D1->D2->D3->D4的维度顺序布置,而缓存行内的元素则按D4->D3->D2->D1的维度顺序布置。PE接收到的加载数据指令表示目标元素在D1维上的地址为6,在D2维上的地址为3。由于每页维度为(4,4,0,0),因此目标元素P36落在坐标为(6/4,3/4,0,0)=(1,0,0,0)的页上,即页P[2]上。
在页P[2]内部,目标元素P36的逻辑地址偏移为(6%4,3%4,0,0)=(2,3,0,0),而缓存行中各维上元素的个数为(2,2,0,0),因此目标元素P36落在页P[2]中坐标为(2/2,3/2,0,0)=(1,1,0,0)的缓存行上,即缓存行C[4]中。
在缓存行C[4]中,各维上元素的个数为(2,2,0,0),因此缓存行内部的偏移为(3%2,2%2,0,0)=(1,0,0,0),即缓存行内偏移量为1的地址上。由于图像数据400是以逆交叉的方式被存储,因此在计算过程将3和2的位置实际上进行了对调,从而得到目标元素P36在缓存行C[4]内部的真实物理偏移量,也即线性地址。
通过查阅页表项,可以获得页P[2]的物理地址为2’b10000。因此目标元素P36存储地址的页的域addr[5:4]=1,缓存行的域addr[3:2]=3,缓存行内的偏移addr[1:0]=1,因此,目标元素P36的存储地址值为addr[5:0]=6’b01_11_01=6’b011_101=6’o35。由此得到目标元素在存储器中的真实物理地址。
图8示出了根据本公开的一些实施例的存储器访问装置800的示意框图。装置800可以被实现为或者被包括在图2的加速器子系统200中。装置800可以包括多个模块,以用于执行如图5中所讨论的方法500中的对应步骤。
如图8所示,装置800存储器包括转换单元802和访问单元804。转换单元802用于将张量中的第一段中的目标元素的逻辑地址转换为目标元素在存储器中的物理地址,逻辑地址包括第一段在张量中的段基准数据和偏移数据,偏移数据表示目标元素在第一段的多个维度中的各维上的偏移量。访问单元804用于使用目标元素的物理地址访问存储器。编程人员可以从多维张量角度考虑数据,而无需知晓这种多维张量到一维数据的映射,即多维张量到存储器中的一维数据的物理地址的正确映射,从而降低了编程人员的认知负担,增加了开发效率并且减少开发时间。
在一些实施例中,第一段包括至少一个页,至少一个页包括目标元素所在的目标元素页。转换单元802进一步用于至少根据目标元素页的各维的尺寸,将逻辑地址转换为线性地址,线性地址包括目标元素页的一维页标识和目标元素在目标元素页内的一维偏移值;以及根据针对目标元素页的页表项,将线性地址转换为物理地址,页表项包括目标元素页的页物理地址。通过将逻辑地址转换为线性地址并且再转换为物理地址,简化了计算操作,从而节省了转换时间并且相应地提高了张量处理效率。
在一些实施例中,转换单元802进一步用于:从页表项查找与目标元素页对应的页物理地址;以及将页物理地址与一维偏移值相加,以获得目标元素的物理地址。通过将页物理地址与一维偏移值相加,进一步简化了计算操作,从而进一步节省了转换时间并且相应地提高了张量处理效率。
在一些实施例中,至少一个页中的每个页包括多个缓存行,张量的多个元素在缓存行中的维度布置顺序不同于张量的多个缓存行在至少一个页中的维度布置顺序或不同于至少一个页在第一段中的维度布置顺序,访问单元804进一步用于:使用目标元素的物理地址将包括目标元素的缓存行从存储器读取至一级高速缓存,存储器是二级高速缓存或片外存储设备。通过在在同一缓存行内交叉存储多个维上的相邻数据,,可以确保张量处理过程中高速缓存的邻近性原理被极大地被利用,从而极大地地提高了一级高速缓存的命中率并且极大地减少了读取数据的时间,并且相应地减少了张量处理时间。
在一些实施例中,至少一个页中的第一页包括沿第一维度设置第一缓存行和第二缓存行以及沿第一维度设置的第三缓存行和第四缓存行,第一缓存行和第三缓存行沿与第一维度不同的第二维度设置,并且第二缓存行和第四缓存行沿第二维度设置;第一缓存行包括沿第二维度设置的第一元素和第二元素以及沿第二维度设置的第三元素和第四元素,第一元素和第三元素沿第一维度设置,并且第二元素和第四元素沿第一维度设置;目标元素是第一元素、第二元素、第三元素和第四元素之一。访问单元804进一步用于:至少将第一元素、第二元素、第三元素和第四元素存储至一级高速缓存。
在一些实施例中,至少一个页中的第一页包括第一多个缓存行,第一多个缓存行包括目标元素。至少一个页中的第二页包括第二多个缓存行,第二多个缓存行包括另一目标元素。第二页的尺寸不同于第一页的尺寸,或第二多个缓存行中的每个缓存行的尺寸不同于第一多个缓存行中的每个缓存行的尺寸,或第一多个缓存行的多个元素的维度布置顺序不同于第二多个缓存行的多个元素的维度布置顺序。转换单元802还用于将另一目标元素的逻辑地址与目标元素并行地转换为另一目标元素在存储器中的另一物理地址,另一目标元素的逻辑地址包括段基准数据和另一偏移数据,另一偏移数据表示另一目标元素在第一段的多个维度中的各维上的偏移值。访问单元804还用于使用另一目标元素的物理地址与目标元素并行地访问存储器。由于页、缓存行和元素的尺寸和布置方式都可以灵活设置,这极大地增加了编程人员在处理张量数据时的灵活性,从而可以更有效率地处理张量数据,并且减少处理时间。
在一些实施例中,访问单元804进一步用于使用目标元素的物理地址访问存储器中所存储的张量的一部分。通过将张量划分为多个段,可以良好地适配硬件性能,从而可以基于硬件设置来灵活地处理张量数据。
在一些实施例中,存储器访问装置800还包括未示出的确定单元和生成单元。确定单元用于确定逻辑地址是否超出张量的逻辑边界。生成单元用于如果逻辑地址超出逻辑边界,则生成存储器访问异常信号。通过检测是否越界,可以在处理之前就确保张量处理的正确性。
在一些实施例中,确定单元进一步用于:确定段基准数据与各维的偏移值之和是否超出段的各维的尺寸。通过基于逻辑地址确认是否越界,可以简化检测的步骤,降低计算量和处理时间。
在一些实施例中,存储器访问装置800还包括未示出的留置单元。留置单元用于基于第一段的段属性,将目标元素留置在一级高速缓存中。段属性包括针对目标元素所在的缓存行在一级高速缓存中的替换规则。由于某些元素具有较高的使用频率,因此并不期望频繁地将其移入和移出一级高速缓存,而是期望尽可能地保留在一级高速缓存中。通过设置替换规则,可以有效地提升目标元素被留置在一级高速缓存中的概率,从而减少元素传输时间并且相应地减少张量处理时间。
在一些实施例中,第一段包括多个页,存储器访问装置800还包括建立单元。建立单元用于如果将多个页中的第一页移入片外存储器或片上存储器,则建立与第一页对应的第一页表项,第一页表项存储第一页在存储器中的物理地址。通过在页被移入时建立页表项,一方面可以有效地并且正确地进行寻址,另一方面也可以减少页表装置以及片内高速存储的用量,从而减少成本。
在一些实施例中,第一段包括多个页,存储器访问装置800还包括删除单元。删除单元用于如果将多个页中的第一页从片上存储器或片外存储器移出,则删除与第一页对应的第一页表项,第一页表项存储第一页在存储器中的物理地址。通过及时删除不被使用的页及页表项,可以减少页表装置以及片内高速存储的用量,从而减少成本。
在一些实施例中,第一段包括目标元素页,目标元素页包括目标元素。确定单元进一步用于基于目标元素的逻辑地址,确定目标元素页是否位于存储器中。存储器访问装置800还包括移入单元。移入单元用于如果目标元素页不位于存储器中,则从片外存储器将目标元素页移入存储器。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (19)

1.一种用于访问存储器的方法,其特征在于,包括:
至少根据张量中的第一段中的目标元素所在的目标元素页的各维的尺寸和针对所述目标元素页的页表项,将所述目标元素的逻辑地址转换为所述目标元素在所述存储器中的物理地址,所述逻辑地址包括所述第一段在所述张量中的段基准数据和偏移数据,所述偏移数据表示所述目标元素在所述第一段的多个维度中的各维上的偏移值;以及
使用所述目标元素的物理地址访问所述存储器。
2.根据权利要求1所述的方法,其特征在于,所述第一段包括至少一个页,所述至少一个页包括所述目标元素所在的所述目标元素页,将所述目标元素的逻辑地址转换为所述物理地址包括:
至少根据所述各维的尺寸,将所述逻辑地址转换为线性地址,所述线性地址包括所述目标元素页的一维页标识和所述目标元素在所述目标元素页内的一维偏移值;以及
根据所述页表项,将所述线性地址转换为所述物理地址,所述页表项包括所述目标元素页的页物理地址。
3.根据权利要求2所述的方法,其特征在于,根据所述页表项将所述线性地址转换为所述物理地址包括:
从所述页表项查找与所述目标元素页对应的页物理地址;以及
将所述页物理地址与所述一维偏移值相加,以获得所述目标元素的物理地址。
4.根据权利要求2或3所述的方法,其特征在于,所述至少一个页中的每个页包括多个缓存行,所述张量的多个元素在所述缓存行中的维度布置顺序不同于所述张量的多个缓存行在所述至少一个页中的维度布置顺序或不同于所述至少一个页在所述第一段中的维度布置顺序,使用所述目标元素的物理地址访问所述存储器包括:
使用所述目标元素的物理地址将包括所述目标元素的缓存行从所述存储器读取至一级高速缓存,所述存储器是二级高速缓存或片外存储设备。
5.根据权利要求4所述的方法,其特征在于,所述至少一个页中的第一页包括沿第一维度设置第一缓存行和第二缓存行以及沿所述第一维度设置的第三缓存行和第四缓存行,所述第一缓存行和所述第三缓存行沿与所述第一维度不同的第二维度设置,并且所述第二缓存行和所述第四缓存行沿所述第二维度设置;
所述第一缓存行包括沿所述第二维度设置的第一元素和第二元素以及沿所述第二维度设置的第三元素和第四元素,所述第一元素和所述第三元素沿所述第一维度设置,并且所述第二元素和所述第四元素沿所述第一维度设置;
所述目标元素是所述第一元素、所述第二元素、所述第三元素和所述第四元素之一;
使用所述目标元素的物理地址从所述存储器读取包括所述目标元素的缓存行至一级高速缓存包括:
至少将所述第一元素、所述第二元素、所述第三元素和所述第四元素存储至所述一级高速缓存。
6.根据权利要求2或3所述的方法,其特征在于,
所述至少一个页中的第一页包括第一多个缓存行,所述第一多个缓存行包括所述目标元素;
所述至少一个页中的第二页包括第二多个缓存行,所述第二多个缓存行包括另一目标元素;
所述第二页的尺寸不同于所述第一页的尺寸,或所述第二多个缓存行中的每个缓存行的尺寸不同于所述第一多个缓存行中的每个缓存行的尺寸,或所述第一多个缓存行的多个元素的维度布置顺序不同于所述第二多个缓存行的多个元素的维度布置顺序;以及
所述方法还包括:
将所述另一目标元素的逻辑地址与所述目标元素并行地转换为所述另一目标元素在所述存储器中的另一物理地址,所述另一目标元素的逻辑地址包括所述段基准数据和另一偏移数据,所述另一偏移数据表示所述另一目标元素在所述第一段的多个维度中的各维上的偏移值;以及
使用所述另一目标元素的物理地址与所述目标元素并行地访问所述存储器。
7.根据权利要求1-3中任一项所述的方法,其特征在于,使用所述目标元素的物理地址访问所述存储器包括:
使用所述目标元素的物理地址访问所述存储器中所存储的所述张量的一部分。
8.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
确定所述逻辑地址是否超出所述张量的逻辑边界;以及
如果所述逻辑地址超出所述逻辑边界,则生成存储器访问异常信号。
9.根据权利要求8所述的方法,其特征在于,确定所述逻辑地址是否超出所述张量的逻辑边界包括:
确定所述段基准数据和所述偏移数据之和是否超出所述第一段的逻辑边界。
10.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
基于所述第一段的段属性,将所述目标元素留置在一级高速缓存中,所述段属性包括针对所述目标元素所在的缓存行在所述一级高速缓存中的替换规则。
11.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一段包括多个页,所述存储器是片上存储器,所述方法还包括:
如果将所述多个页中的第一页移入所述存储器或片外存储器,则建立与所述第一页对应的第一页表项,所述第一页表项存储所述第一页在所述存储器或所述片外存储器中的物理地址。
12.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一段包括多个页,所述存储器是片上存储器,所述方法还包括:
如果将所述多个页中的第一页从所述存储器或片外存储器移出,则删除与所述第一页对应的第一页表项,所述第一页表项存储所述第一页在所述存储器或所述片外存储器中的物理地址。
13.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
基于所述目标元素的逻辑地址,确定所述目标元素页是否位于所述存储器中;以及
如果所述目标元素页不位于所述存储器中,则从片外存储器将所述目标元素页移入所述存储器。
14.一种计算机可读存储介质,存储多个程序,所述多个程序被配置为一个或多个处理引擎执行,其特征在于,所述多个程序包括用于执行权利要求1-13中任一项所述的方法的指令。
15.一种电子设备,其特征在于,包括:
流处理器;
页表装置,耦合至所述流处理器;
存储器;
处理引擎单元,耦合至所述流处理器、所述存储器和所述页表装置,被配置为执行权利要求1-13中任一项所述的方法。
16.一种存储器访问装置,其特征在于,包括:
转换单元,用于至少根据张量中的第一段中的目标元素所在的目标元素页的各维的尺寸和针对所述目标元素页的页表项,将所述目标元素的逻辑地址转换为所述目标元素在所述存储器中的物理地址,所述逻辑地址包括所述第一段在所述张量中的段基准数据和偏移数据,所述偏移数据表示所述目标元素在所述第一段的多个维度中的各维上的偏移量;以及
访问单元,用于使用所述目标元素的物理地址访问所述存储器。
17.根据权利要求16所述的存储器访问装置,其特征在于,所述第一段包括至少一个页,所述至少一个页包括所述目标元素所在的所述目标元素页,所述转换单元进一步用于:
至少根据所述各维的尺寸,将所述逻辑地址转换为线性地址,所述线性地址包括所述目标元素页的一维页标识和所述目标元素在所述目标元素页内的一维偏移值;以及
根据所述页表项,将所述线性地址转换为所述物理地址,所述页表项包括所述目标元素页的页物理地址。
18.根据权利要求17所述的存储器访问装置,其特征在于,所述转换单元进一步用于:
从所述页表项查找与所述目标元素页对应的页物理地址;以及
将所述页物理地址与所述一维偏移值相加,以获得所述目标元素的物理地址。
19.根据权利要求17或18所述的存储器访问装置,其特征在于,所述至少一个页中的每个页包括多个缓存行,所述张量的多个元素在所述缓存行中的维度布置顺序不同于所述张量的多个缓存行在所述至少一个页中的维度布置顺序或不同于所述至少一个页在所述第一段中的维度布置顺序,所述访问单元进一步用于:
使用所述目标元素的物理地址将包括所述目标元素的缓存行从所述存储器读取至一级高速缓存,所述存储器是二级高速缓存或片外存储器。
CN202111094313.4A 2021-09-17 2021-09-17 存储器访问方法和电子装置 Active CN113836049B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111094313.4A CN113836049B (zh) 2021-09-17 2021-09-17 存储器访问方法和电子装置
PCT/CN2022/107136 WO2023040460A1 (zh) 2021-09-17 2022-07-21 存储器访问方法和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111094313.4A CN113836049B (zh) 2021-09-17 2021-09-17 存储器访问方法和电子装置

Publications (2)

Publication Number Publication Date
CN113836049A CN113836049A (zh) 2021-12-24
CN113836049B true CN113836049B (zh) 2023-08-08

Family

ID=78959889

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111094313.4A Active CN113836049B (zh) 2021-09-17 2021-09-17 存储器访问方法和电子装置

Country Status (2)

Country Link
CN (1) CN113836049B (zh)
WO (1) WO2023040460A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836049B (zh) * 2021-09-17 2023-08-08 海飞科(南京)信息技术有限公司 存储器访问方法和电子装置
CN114091085B (zh) * 2022-01-10 2022-04-15 北京一流科技有限公司 用于二元操作的数据访问控制系统及其方法
CN114489798B (zh) * 2022-01-25 2024-04-05 海飞科(南京)信息技术有限公司 用于确定张量元素的越界状态的方法和电子装置
CN114579929B (zh) * 2022-03-14 2023-08-08 海飞科(南京)信息技术有限公司 加速器执行的方法和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038018A (zh) * 2016-02-03 2017-08-11 谷歌公司 访问多维张量中的数据
CN111061655A (zh) * 2017-12-28 2020-04-24 贵阳忆芯科技有限公司 存储设备的地址转换方法与设备
CN112119459A (zh) * 2018-03-16 2020-12-22 赛灵思公司 用于张量数据的存储器布置
CN114556311A (zh) * 2020-02-14 2022-05-27 谷歌有限责任公司 具有多级多步的直接存储器存取架构

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9946539B1 (en) * 2017-05-23 2018-04-17 Google Llc Accessing data in multi-dimensional tensors using adders
US10534607B2 (en) * 2017-05-23 2020-01-14 Google Llc Accessing data in multi-dimensional tensors using adders
CN113836049B (zh) * 2021-09-17 2023-08-08 海飞科(南京)信息技术有限公司 存储器访问方法和电子装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038018A (zh) * 2016-02-03 2017-08-11 谷歌公司 访问多维张量中的数据
CN111061655A (zh) * 2017-12-28 2020-04-24 贵阳忆芯科技有限公司 存储设备的地址转换方法与设备
CN112119459A (zh) * 2018-03-16 2020-12-22 赛灵思公司 用于张量数据的存储器布置
CN114556311A (zh) * 2020-02-14 2022-05-27 谷歌有限责任公司 具有多级多步的直接存储器存取架构

Also Published As

Publication number Publication date
CN113836049A (zh) 2021-12-24
WO2023040460A1 (zh) 2023-03-23

Similar Documents

Publication Publication Date Title
CN113836049B (zh) 存储器访问方法和电子装置
CN106991011B (zh) 基于cpu多线程与gpu多粒度并行及协同优化的方法
US8301672B2 (en) GPU assisted garbage collection
US20130226535A1 (en) Concurrent simulation system using graphic processing units (gpu) and method thereof
CN103425533A (zh) 用于管理嵌套执行流的方法和系统
CN114489798B (zh) 用于确定张量元素的越界状态的方法和电子装置
CN114579929B (zh) 加速器执行的方法和电子设备
US11934867B2 (en) Techniques for divergent thread group execution scheduling
CN114610394B (zh) 指令调度的方法、处理电路和电子设备
CN114218153B (zh) 用于存储管理的方法、介质、程序产品、系统和装置
US20230289292A1 (en) Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks
TW202109286A (zh) 純函數語言神經網路加速器系統及結構
US9772864B2 (en) Methods of and apparatus for multidimensional indexing in microprocessor systems
CN114218152B (zh) 流处理方法、处理电路和电子设备
CN114035980B (zh) 基于便笺存储器来共享数据的方法和电子装置
CN114201444B (zh) 用于存储管理的方法、介质、程序产品、系统和装置
US9268601B2 (en) API for launching work on a processor
CN113961506B (zh) 加速器和电子装置
CN114510271A (zh) 用于在单指令多线程计算系统中加载数据的方法和装置
CN114489799A (zh) 处理方法、处理装置及相关产品
Miki et al. An extension of OpenACC directives for out-of-core stencil computation with temporal blocking
CN113010173A (zh) 并行处理中矩阵数据广播的方法
CN113094099A (zh) 矩阵数据广播架构
Hussain et al. Pams: Pattern aware memory system for embedded systems
US20230144553A1 (en) Software-directed register file sharing

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: 40066058

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant