CN117573576A - 在内存中配置嵌入表的方法、访问内存的方法和计算设备 - Google Patents
在内存中配置嵌入表的方法、访问内存的方法和计算设备 Download PDFInfo
- Publication number
- CN117573576A CN117573576A CN202311538002.1A CN202311538002A CN117573576A CN 117573576 A CN117573576 A CN 117573576A CN 202311538002 A CN202311538002 A CN 202311538002A CN 117573576 A CN117573576 A CN 117573576A
- Authority
- CN
- China
- Prior art keywords
- memory
- embedded table
- embedded
- entry
- physical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013519 translation Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 13
- 230000002776 aggregation Effects 0.000 claims description 7
- 238000004220 aggregation Methods 0.000 claims description 7
- 239000006185 dispersion Substances 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002730 additional effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
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
技术领域
本发明的实施例总体涉及计算机技术领域,并且更具体地涉及一种在内存中配置嵌入表的方法、访问内存的方法和计算设备。
背景技术
用户访问内存时,需要首先将用户输入的虚拟地址(Virtual Address,VA)转换为物理地址(Physical Address,PA),以便基于物理地址对内存进行访问。传统的用于虚拟地址到物理地址的转换方法包括:由处理器(诸如中央处理单元(CPU)或图形处理单元(GPU))将虚拟地址发送到内存管理单元(MMU),由内存管理单元基于页表项(PTE)将虚拟地址转换为物理地址。
然而,在执行例如近存运算(Near Memory Computing,NMC)等需要批量转换虚拟地址到物理地址的运算时,内存管理单元的吞吐率严重低于运算需要的虚拟地址到物理地址的转换的吞吐率需求,也就是说,内存管理单元的处理能力难以满足近存运算的需求,使得运算效率低、滞后性严重。若开发具有高吞吐率的专用内存管理单元,所要开发的专用内存管理单元面积大,且在进行诸如非近存运算时难以完全利用,容易造成资源浪费。
发明内容
针对上述问题,本发明提供了一种在内存中配置嵌入表的方法、访问内存的方法和电子设备,使得能够实现虚拟地址到物理地址的批量转换,提高运算效率。
根据本发明的第一方面,提供了一种用于在内存中配置嵌入表的方法,包括:确定嵌入表的大小、以及布局方式,嵌入表包括多个表项;以及至少基于内存的剩余空间,将嵌入表配置在内存中,以用于至少基于所接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换。
在一些实施例中,确定嵌入表的大小、以及布局方式包括:基于计算任务,确定数据访问模式;以及基于所确定的数据访问模式,确定嵌入表的布局方式。
在一些实施例中,嵌入表的布局方式包括:横向平铺表项的布局方式、纵向平铺表项的布局方式、横向平铺表项与纵向平铺表项组合的布局方式。
在一些实施例中,确定嵌入表的大小包括:确定嵌入表中表项的数量;确定每个表项的占用空间;以及基于表项的数量、以及每个表项的占用空间,确定嵌入表的大小。
在一些实施例中,至少基于内存的剩余空间,将嵌入表配置在内存中包括:读取内存的剩余空间;将嵌入表的大小与所读取的内存的剩余空间进行比较;以及响应于嵌入表的大小小于或者等于所读取的内存的剩余空间,将嵌入表配置在内存中。
根据本发明的第二方面,提供了一种访问内存的方法,包括:获取内存中所配置的嵌入表的初始位置、以及内存的缓存行的宽度,嵌入表包括多个表项;以及响应于接收到与虚拟地址有关的表项的索引,至少基于接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换,以便基于物理地址访问内存。
在一些实施例中,访问内存的方法还包括:确定嵌入表的表项类型,其中至少基于接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换包括:基于接收到的与虚拟地址有关的表项的索引、嵌入表的初始位置、内存的缓存行的宽度、以及表项类型,确定物理地址。
在一些实施例中,确定物理地址包括:基于表项类型确定表项的索引的粒度;以及通过针对嵌入表的初始位置与内存的缓存行的宽度的乘积、以及表项的索引和表项的索引的粒度的乘积进行求和,确定物理地址。
在一些实施例中,访问内存的方法还包括:响应于基于物理地址访问内存,针对内存中的数据进行聚合或分散运算。
根据本发明的第三方面,提供了一种计算设备,包括:主机端,被配置为分配嵌入表,以便将嵌入表配置在内存中;设备端,被配置为根据本发明的第二方面的方法访问内存,以便进行聚合或分散运算。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了根据本公开的实施例近存运算的原理示意图。
图2示例性地示出了根据本发明的实施例的计算设备的示意图。
图3示出了根据本发明的实施例的用于在内存中配置嵌入表的方法的流程图。
图4A-4F示出了根据本发明的实施例的示例性嵌入表的示意图。
图5示出了根据本发明的实施例的访问内存的方法的流程图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,在传统的用于虚拟地址到物理地址的转换的方案中,由内存管理单元基于页表中记录的虚拟地址与物理地址的映射关系实现虚拟地址到物理地址的转换。然而,由于内存管理单元是针对传统的以计算核(computing core)为中心的系统进行设计的,其处理能力主要能够满足为计算核服务。随着近存运算的推出和运用,其能够例如通过特殊指令使内存中的数据在不经过计算核的情况下直接完成运算,在这种情况下,计算核只为数据运算提供控制逻辑。
图1示出了根据本公开的实施例近存运算的原理示意图。
近存运算,通常是对数据进行简单的运算,以使得与数据相关的运算能够尽量在内存中完成。例如,参照图1。如示例一所示,近存运算可以是指:在内存中嵌入一个嵌入表(embedding table),以对该嵌入表中的多个表项中的数据进行聚合,并将经聚合得到的结果数据连续存储到内存的结果缓冲区中,相当于对数据进行搬运。在另一示例中,如示例二所示,近存运算还可以是指:将内存的结果缓冲区中连续存储的结果数据分散写回内存的嵌入表中。
进一步地,如图1所示,在执行近存运算时,计算核会向内存发出指令,但数据不经过计算核。也就是说,当进行近存运算或类似的运算时,计算核基本不做运算,而是通过指令向存储系统(memory system)分配与运算有关的任务。例如,计算核基于接收到的用户操作中的虚拟地址,将虚拟地址发送到内存管理单元以转换成物理地址,然后由存储系统中的二级缓存(L2 Cache)基于经转换得到的物理地址访问内存,以读取相应的数据进行运算,从而实现对数据的近存运算。由于近存运算包括大规模的数据搬运或聚合,需要批量转换虚拟地址到物理地址,此时内存管理单元的吞吐率严重低于进行近存运算所需要的虚拟地址到物理地址的转换的吞吐率。但若开发具有高吞吐率的专用内存管理单元,其将占用大量芯片面积,且在进行诸如非近存运算时难以完全利用,容易造成资源浪费。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,结合本发明的发明构思,考虑到虚拟地址到物理地址的转换的本质是一种数学运算,并且由于计算核在近存运算过程中主要负责发指令,而其上配置的矢量运算单元(vector engine)基本不参与运算,本发明的示例实施例提出了一种用于在内存中配置嵌入表的方案。在该方案中,通过确定嵌入表的大小、以及布局方式,嵌入表包括多个表项;以及至少基于内存的剩余空间,将嵌入表配置在内存中,使得能够利用计算核上配置的矢量运算单元至少基于所接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的批量转换。由此,本发明的方案能够利用计算核上配置的矢量运算单元的运算能力实现虚拟地址到物理地址的批量转换,同时不影响计算核本身的计算处理。进一步地,本发明的方案通过数学运算的方式基于虚拟地址计算得到相对应的物理地址,无需经由内存管理单元实现虚拟地址到物理地址的转换,提高了运算效率。
下面将结合图2至图3详细描述根据本发明的实施例的在内存中配置嵌入表的方案。
图2示例性地示出了根据本发明的实施例的计算设备200的示意图。应理解,计算设备200还可以包括未示出的附加单元,本发明的范围在此方面不受限制。
如图2所述,计算设备200可以包括主机端210和设备端220。
关于主机端210,其可以被配置为:确定嵌入表的大小、以及布局方式,其中嵌入表包括多个表项;以及至少基于内存的剩余空间,将嵌入表配置在内存中。
关于设备端220,其可以被配置为:获取内存中所配置的嵌入表的初始位置、以及内存的缓存行的宽度;至少基于接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换,以便基于物理地址访问内存。根据本发明的实施例,设备端220还可以被配置为:发出与运算有关的指令;以及响应于基于物理地址访问内存,针对内存中的数据进行聚合或分散运算。
图3示出了根据本发明的实施例的用于在内存中配置嵌入表的方法300的流程图。方法300可以在如图2所示的计算设备200处执行。应当理解,方法300还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤302,由主机端确定嵌入表的大小、以及布局方式,其中嵌入表包括多个表项。
关于嵌入表,其可以是指配置在内存中的、包括多个表项的表格,其中每个表项对应于内存的物理地址空间的一个物理地址。
关于嵌入表的布局方式,其可以包括:横向平铺表项的布局方式、纵向平铺表项的布局方式、横向平铺表项与纵向平铺表项组合的布局方式。
关于横向平铺表项的布局方式,其是指嵌入表中的表项按照由左至右逐行进行排列。关于纵向平铺表项的布局方式,其是指嵌入表中的表项由下至上地逐列进行排列。在本发明的又一些实施例中,还可以采用上述两种方式的组合对嵌入表中的表项进行排列,这里不作限制。
通常,内存通常具有多个内存通道。根据本发明的实施例,当内存中的所有内存通道都被使用以配置嵌入表时,嵌入表可以跨所有内存通道采用横向平铺表项的布局方式或纵向平铺表项的布局方式。图4A和图4B示出了使用所有内存通道进行配置的示例性嵌入表400A和400B,其中,嵌入表400A采用了横向平铺表项的布局方式,嵌入表400B采用了纵向平铺表项的布局方式。根据本发明的实施例,当内存中的仅一个内存通道被使用以配置嵌入表时,嵌入表可以在该一个内存通道内采用横向平铺表项的布局方式或纵向平铺表项的布局方式。图4C示出了使用一个内存通道进行配置的示例性嵌入表400C,其中嵌入表400C采用了横向平铺表项的布局方式。根据本发明的实施例,当内存中的部分内存通道被使用以配置嵌入表时,嵌入表则可以依次在每个内存通道内采用期望的布局方式,例如,针对每个内存通道采用同一布局方式,或者交替地采用不同布局方式。图4D和图4E示出了使用部分内存通道进行配置的示例性嵌入表400D和嵌入表400E,其中嵌入表400D和嵌入表400E采用了不同的布局方式。应理解,上述图4A至图4E所示的嵌入表的布局方式仅是示例性的,本领域的技术人员根据本发明的上述原理还可以使得嵌入表具有其他呈现形式的布局方式。
根据本发明的实施例,嵌入表的布局方式可以与例如计算任务有关。也就是说,可以基于计算任务来确定嵌入表的布局方式。在一些实施例中,确定嵌入表的布局方式可以包括:基于计算任务,确定数据访问模式;以及基于所确定的数据访问模式,确定嵌入表的布局方式。
关于计算任务,其可以是涉及虚拟化、或多任务并行的计算任务,或者涉及将访问的数据分解到不同内存通道的计算任务。
关于数据访问模式,其可以指示访问嵌入表的计算核的数量。根据本发明的实施例,可以基于访问嵌入表的计算核的数量,确定用于配置嵌入表的内存通道的数量。换言之,可以基于数据访问模式确定用于配置嵌入表的内存通道的数量。响应于所确定的内存通道的数量,然后可以确定嵌入表的布局方式。例如,当访问嵌入表的计算核的数量为1时,用于配置嵌入表的内存通道的数量为1,也就是说,嵌入表被配置在仅一个内存通道内,此时,可以使嵌入表采用横向平铺表项的布局方式(如图4C所示)或纵向平铺表项的布局方式(未示出)进行配置。在又一示例中,当有多个计算核访问嵌入表时,需要多个内存通道配置嵌入表,也就是说,嵌入表被配置在部分或全部内存通道中。此时可以针对每个内存通道采用同一布局方式(如图4D所示)或交替地采用不同布局方式(如图4E所示),或者跨这些内存通道对嵌入表进行布局,例如使嵌入表跨内存通道、以横向平铺表项的布局方式(如图4A所示)或纵向平铺表项的布局方式(如图4B所示)进行布局。
例如,当计算任务涉及虚拟化时,可以确定数据访问模式为访问内存的全部内存通道中的一个或部分,也就是说,将嵌入表配置在一个或部分内存通道中,由此可以确定嵌入表的布局方式为例如如图4C至图4E中任一所示的布局方式。
在又一些示例中,若基于计算任务确定期望将访问的数据分解到内存的所有内存通道中,以提高内存带宽,则可以使嵌入表具有如图4A或图4B所示的布局方式;若基于计算任务确定期望将访问的数据集中在一个内存通道中,则可以使嵌入表具有如图4C所示的布局方式。
根据本发明的一些实施例,嵌入表的布局方式可以动态地调整。例如,可以基于不同的计算任务,动态地调整嵌入表的布局方式。
关于嵌入表的大小,其可以与嵌入表中表项的数量、每个表项的占用空间有关。根据本发明的实施例,确定嵌入表的大小可以包括:确定嵌入表中表项的数量;确定每个表项的占用空间;以及基于表项的数量、以及每个表项的占用空间,确定嵌入表的大小。例如,当嵌入表中的每个表项的占用空间相同,嵌入表的大小=表项的数量*每个表项的占用空间。
根据本发明的实施例,进一步地,需要确定内存具有足够的剩余空间,以便将嵌入表完整地配置在内存中。回到图3,在步骤304,由主机端至少基于内存的剩余空间,将嵌入表配置在内存中,以用于至少基于所接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换。
根据本发明的实施例,可以通过将嵌入表的大小与内存的剩余空间进行比较,以确定是否能够将该嵌入表配置到内存中。例如,在一些实施例中,至少基于内存的剩余空间将嵌入表配置在内存中可以包括:读取内存的剩余空间;将嵌入表的大小与所读取的内存的剩余空间进行比较;以及响应于嵌入表的大小小于或者等于所读取的内存的剩余空间,将嵌入表配置在内存中。若嵌入表的大小大于内存的剩余空间,则表示嵌入表无法被配置到内存中,例如需要释放内存中的部分空间,以便将嵌入表配置到内存中。
应理解,这里内存的剩余空间是指内存中连续的、未被占用的空间。
图4F示出了根据本发明的实施例的示例性嵌入表400F的示意图。
如图4F所示,在内存物理地址空间中配置有嵌入表400F。嵌入表400F包括n个表项,表项0至表项n-1。其中,图4F的嵌入表400F采用了如上所述的横向平铺表项的布局方式,即其所包括的N个表项从表项0开始逐行排列,每行有w个表项。
进一步地,如图4F所示,嵌入表400F中的每个表项对应于内存的物理地址空间中的某一物理地址。因此,根据本发明的发明构思,获取与接收到的虚拟地址对应的表项的物理地址,即实现了虚拟地址到物理地址的转换,从而能够直接基于所获取的表项的物理地址来访问内存。下面将结合图5详细描述基于图4F的嵌入表400F访问内存的方案。
图5示出了根据本发明的实施例的访问内存的方法500的流程图。方法500可以在如图2所示的计算设备200处执行。应当理解,方法500还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤502,由设备端获取内存中所配置的嵌入表的初始位置、以及内存的缓存行的宽度。
关于所配置的嵌入表的初始位置,其是指嵌入表与内存的初始位置的距离,如由图4F中的A所示。
关于内存的缓存行的宽度,如由图4F中的B所示,其可以基于内存通道的数量、以及每个通道最小粒度的尺寸确定。根据本发明的实施例,当每个通道最小粒度的尺寸相同时,内存的缓存行的宽度=内存通道的数量*通道最小粒度的尺寸。
根据本公开的实施例,基于所配置的嵌入表的初始位置、以及内存的缓存行的宽度,可以确定嵌入表的起始地址。具体地,嵌入表的起始地址=所配置的嵌入表的初始位置(即,图4F的A)*内存的缓存行的宽度(即,图4F的B)。换言之,图4F中所示的A*B的区域可以对应于内存物理地址空间中已经被占用的部分。
此外,根据本公开的实施例,上述所配置的嵌入表的初始位置、以及内存的缓存行的宽度可以在由主机端配置嵌入表时确定,并由主机端发送给设备端。
在步骤504,由设备端响应于接收到与虚拟地址有关的表项的索引,至少基于接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换,以便基于物理地址访问内存。
关于至少基于接收到的与虚拟地址有关的表项的索引和嵌入表实现虚拟地址到物理地址的转换,其可以包括:至少基于接收到的与虚拟地址有关的表项的索引、嵌入表的初始位置、以及内存的缓存行的宽度,确定物理地址。
关于与虚拟地址有关的表项的索引,其可以用于指示表项中的虚拟地址。根据本发明的实施例,与虚拟地址有关的表项的索引可以是由用户输入到设备端中。具体地,响应于由用户输入的与虚拟地址有关的表项的索引,确定该索引指示的表项中的虚拟地址,以便基于所确定的虚拟地址计算物理地址。例如,由用户输入的索引为1,基于索引1以及与索引1对应的表头,可以确定索引1所指示的表项中的虚拟地址。
根据本发明的一些实施例,嵌入表的表项的物理地址与嵌入表的表项类型有关。在这种情况下,可以基于接收到的与虚拟地址有关的表项的索引、嵌入表的初始位置、内存的缓存行的宽度、以及表项类型,确定物理地址。
关于嵌入表的表项类型,其可以是例如浮点(float)、半精度浮点(half float)。表项的索引的粒度可以由表项类型确定。例如,若表项类型为浮点(float),则表项的索引的粒度为4个字节。在又一示例中,一个表项包括8个浮点,则该表项的索引的粒度为32个字节。通常,表项的索引的粒度与表项中的元素类型、元素数量有关。根据本发明的实施例,嵌入表的表项类型可以通过由用户输入来确定。
关于确定物理地址,其可以指:基于表项类型确定表项的索引的粒度;以及通过针对嵌入表的初始位置与内存的缓存行的宽度的乘积、以及表项的索引和表项的索引的粒度的乘积进行求和,确定物理地址。换言之,可以通过下述公式一计算得到如图4F的嵌入表400F中表项的物理地址:
嵌入表的表项的物理地址=
嵌入表的初始位置*内存的缓存行的宽度+公式一
与虚拟地址有关的表项的索引*表项的索引的粒度其中,如上所述,与虚拟地址有关的表项的索引由用户输入。
基于如上公式一,可以通过计算的方式得到与虚拟地址对应的嵌入表的表项的物理地址,从而实现了利用内存中配置的嵌入表完成虚拟地址到物理地址的转换。并且,这一虚拟地址到物理地址的转换可以在计算核的矢量运算单元中完成,使得可以实现虚拟地址到物理地址的批量转换,且无需经由内存管理单元来实现地址的转换,因而效率更高。
进一步地,根据本发明的实施例,然后可以基于由上述公式一计算得到的物理地址,访问内存,并针对内存中的数据进行聚合或分散运算。
综上,本发明的实施例提供了在内存中配置嵌入表,以及基于配置在内存中的嵌入表计算与虚拟地址对应的物理地址,并基于计算得到的物理地址访问内存,以实现诸如近存运算的方案。
根据本发明的实施例,可以例如由主机端将嵌入表配置在内存中,并获取与嵌入表有关的配置信息,例如,嵌入表的初始位置、内存的缓存行的宽度等。根据本发明的一些实施例,可以由主机端确定所要配置的嵌入表的大小、以及布局方式,以及至少基于内存的剩余空间,将嵌入表配置在内存中。
根据本发明的实施例,可以例如由主机端将所获取的获取与嵌入表有关的配置信息发送到设备端。也就是说,设备端可以经由主机端获取内存中所配置的嵌入表的初始位置、以及内存的缓存行的宽度。
根据本发明的实施例,例如由用户将与虚拟地址有关的表项的索引输入到设备端,也就是说,由设备端接收与虚拟地址有关的表项的索引。
根据本发明的实施例,由设备端至少基于与虚拟地址有关的表项的索引、与嵌入表有关的配置信息计算得到与虚拟地址对应的物理地址。具体地,由设备端基于公式:嵌入表的表项的物理地址=嵌入表的初始位置*内存的缓存行的宽度+与虚拟地址有关的表项的索引*表项的索引的粒度,计算得到与由用户输入的表项的索引所指示的虚拟地址相对应的物理地址。根据本发明的实施例,可以由设备端处的计算核的矢量运算单元执行上述关于物理地址的计算,以实现虚拟地址到物理地址的转换。
根据本发明的实施例,由设备端发出与诸如近存运算有关的指令。例如,由设备端处的计算核发出与诸如近存运算有关的指令。
根据本发明的实施例,响应于与诸如近存运算有关的指令,在设备端处进行近存运算。根据本发明的一些实施例,响应于接收到的指令,可以由设备端基于计算得到的物理地址访问内存,以针对内存中的数据进行聚合或分散运算。例如,可以由设备端处的内存系统中的诸如二级缓存(L2 Cache)基于计算得到的物理地址访问内存,以读取相应的数据进行运算,并将运算结果再写回内存中,从而在设备端处实现对数据的近存运算。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
以上仅为本发明的可选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种在内存中配置嵌入表的方法,其特征在于,包括:
确定嵌入表的大小、以及布局方式,所述嵌入表包括多个表项;以及
至少基于所述内存的剩余空间,将所述嵌入表配置在所述内存中,以用于至少基于所接收到的与虚拟地址有关的表项的索引和所述嵌入表实现虚拟地址到物理地址的转换。
2.根据权利要求1所述的方法,其特征在于,确定嵌入表的大小、以及布局方式包括:
基于计算任务,确定数据访问模式;以及
基于所确定的数据访问模式,确定所述嵌入表的布局方式。
3.根据权利要求1或2所述的方法,其特征在于,所述嵌入表的布局方式包括:横向平铺表项的布局方式、纵向平铺表项的布局方式、横向平铺表项与纵向平铺表项组合的布局方式。
4.根据权利要求1所述的方法,其特征在于,确定嵌入表的大小包括:
确定所述嵌入表中表项的数量;
确定每个表项的占用空间;以及
基于所述表项的数量、以及每个表项的占用空间,确定嵌入表的大小。
5.根据权利要求1所述的方法,其特征在于,至少基于所述内存的剩余空间,将所述嵌入表配置在所述内存中包括:
读取内存的剩余空间;
将所述嵌入表的大小与所读取的内存的剩余空间进行比较;以及
响应于所述嵌入表的大小小于或者等于所读取的内存的剩余空间,将所述嵌入表配置在所述内存中。
6.一种访问内存的方法,其特征在于,包括:
获取内存中所配置的嵌入表的初始位置、以及内存的缓存行的宽度,所述嵌入表包括多个表项;以及
响应于接收到与虚拟地址有关的表项的索引,至少基于接收到的与虚拟地址有关的表项的索引和所述嵌入表实现虚拟地址到物理地址的转换,以便基于所述物理地址访问内存。
7.根据权利要求6所述的方法,其特征在于,还包括:确定所述嵌入表的表项类型,其中
至少基于接收到的与虚拟地址有关的表项的索引和所述嵌入表实现虚拟地址到物理地址的转换包括:
基于接收到的与虚拟地址有关的表项的索引、所述嵌入表的初始位置、所述内存的缓存行的宽度、以及所述表项类型,确定物理地址。
8.根据权利要求7所述的方法,其特征在于,确定物理地址包括:
基于所述表项类型确定所述表项的索引的粒度;以及
通过针对所述嵌入表的初始位置与内存的缓存行的宽度的乘积、以及所述表项的索引和所述表项的索引的粒度的乘积进行求和,确定物理地址。
9.根据权利要求6所述的方法,其特征在于,还包括:
响应于基于所述物理地址访问内存,针对内存中的数据进行聚合或分散运算。
10.一种计算设备,其特征在于,包括:
主机端,被配置为分配嵌入表,以便将所述嵌入表配置在内存中;
设备端,被配置为根据权利要求6-9任一所述的方法访问内存,以便进行聚合或分散运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311538002.1A CN117573576A (zh) | 2023-11-16 | 2023-11-16 | 在内存中配置嵌入表的方法、访问内存的方法和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311538002.1A CN117573576A (zh) | 2023-11-16 | 2023-11-16 | 在内存中配置嵌入表的方法、访问内存的方法和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117573576A true CN117573576A (zh) | 2024-02-20 |
Family
ID=89891200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311538002.1A Pending CN117573576A (zh) | 2023-11-16 | 2023-11-16 | 在内存中配置嵌入表的方法、访问内存的方法和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573576A (zh) |
-
2023
- 2023-11-16 CN CN202311538002.1A patent/CN117573576A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8041920B2 (en) | Partitioning memory mapped device configuration space | |
CN103049406B (zh) | 用于i/o流量的一致性开关 | |
CN102023932B (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
KR100914081B1 (ko) | 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환 | |
US11093388B2 (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
CN102483719A (zh) | 基于块的非透明高速缓存 | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
KR20160064720A (ko) | 캐시 메모리 장치 및 이를 포함하는 전자 시스템 | |
JP2024054306A (ja) | ハードウェアベースのメモリ圧縮 | |
CN115757260B (zh) | 数据交互方法、图形处理器及图形处理系统 | |
CN105453066A (zh) | 处理器和存储器控制方法 | |
CN114490449B (zh) | 一种内存访问方法、装置及处理器 | |
CN117573576A (zh) | 在内存中配置嵌入表的方法、访问内存的方法和计算设备 | |
CN104049951A (zh) | 在解决存储器访问故障的同时重播存储器事务 | |
CN116185910B (zh) | 访问设备内存、管理设备内存的方法、设备和介质 | |
US20220317925A1 (en) | Methods and apparatus for offloading tiered memories management | |
US20210373790A1 (en) | Inference in memory | |
CN104049905A (zh) | 在异构处理器之间迁移不同尺寸的页 | |
US20220058123A1 (en) | Methods and nodes for handling memory | |
CN116450055A (zh) | 一种多处理卡间的存储区域分配方法和系统 | |
deMercado et al. | COMMIINigATMS CAMARA' |
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 |