CN116662224A - 内存访问的方法、装置、存储介质及计算机程序产品 - Google Patents
内存访问的方法、装置、存储介质及计算机程序产品 Download PDFInfo
- Publication number
- CN116662224A CN116662224A CN202210146330.6A CN202210146330A CN116662224A CN 116662224 A CN116662224 A CN 116662224A CN 202210146330 A CN202210146330 A CN 202210146330A CN 116662224 A CN116662224 A CN 116662224A
- Authority
- CN
- China
- Prior art keywords
- page table
- memory
- routing information
- mmu
- processor
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 416
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000004590 computer program Methods 0.000 title claims abstract description 11
- 238000013519 translation Methods 0.000 claims abstract description 39
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 abstract description 35
- 238000013461 design Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 30
- 206010010099 Combined immunodeficiency Diseases 0.000 description 21
- 238000004891 communication Methods 0.000 description 18
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000001360 collision-induced dissociation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种内存访问的方法、装置、存储介质及计算机程序产品,属于计算机技术领域。通过在内存页表中增加路由信息,以使得MMU在对VA进行地址翻译的过程中查询内存页表获得路由信息,这样MMU在查询内存页表得到PA后,可以直接按照路由信息来路由PA,无需SAD进一步对PA进行解码。简单来说,本方案设计了一套带路由信息的内存页表,降低了内存访问的复杂度。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种内存访问的方法、装置、存储介质及计算机程序产品。
背景技术
目前,在进行内存访问时,处理器大多采用虚拟地址(virtual address,VA)来进行内存寻址,使用VA可以创建比实际的物理地址(physical address,PA)大得多的寻址空间。在采用VA进行内存寻址的过程中,处理器需要将VA转换为PA,然后基于PA进行内存访问。
相关技术中,计算节点内的各处理器包括核(core)、内存管理单元(memorymanagement unit,MMU)、***地址解码器(system address decoder,SAD)和本地代理(home agent,HA)等。在进行内存访问的过程中,核(core)获取应用程序发起的内存访问请求,向MMU发送该内存访问请求,该内存访问请求携带一个VA。MMU通过查询内存页表,将该VA转换为待访问的内存数据的PA,将该PA发送到SAD。SAD通过查表来确定该PA所归属的HA,将该PA路由到所确定的HA,即对该PA进行解码并路由。HA基于该PA获取内存数据,将所获取的内存数据返回给核。
由此可见,相关技术中MMU所获得的PA不能够直接进行内存访问,还需要SAD对PA进行解码,内存访问的过程较为复杂。
发明内容
本申请实施例提供了一种内存访问的方法、装置、存储介质及计算机程序产品,能够无需SAD解码和路由PA,降低内存访问的复杂度。所述技术方案如下:
第一方面,提供了一种内存访问的方法,该方法应用于计算***。该计算***包括第一计算节点,第一计算节点包括第一处理器,第一处理器包括第一MMU和第一核。该方法包括:
第一MMU接收第一核发送的第一内存访问请求,第一内存访问请求携带第一虚拟地址VA;第一MMU按照第一VA查询第一内存页表,得到第一查询结果,第一查询结果包括第一路由信息和第一PA;第一MMU向第一路由信息所指示的目标模块发送第二内存访问请求,第二内存访问请求携带第一PA,第二内存访问请求用于指示目标模块基于第一PA获取内存数据,以及将该内存数据返回给第一核。其中,第一PA即该内存数据的PA。
也即是,通过在内存页表中增加路由信息,以使得MMU在对VA进行地址翻译的过程中查询内存页表获得路由信息,这样MMU在查询内存页表得到PA后,可以直接按照路由信息来路由PA,无需SAD进一步对PA进行解码,降低了内存访问的复杂度。
可选地,本方案支持访问本地内存以及跨节点访问内存。在访问不同内存的情况下,第一查询结果所包括的第一路由信息有所不同。接下来将分情况进行介绍。
第一种情况为访问本地内存的情况。在这种情况下,目标模块为第一计算节点内的HA。也即是,在访问本地内存的情况下,由第一MMU完成对第一VA的地址转换,并按照所获得的第一路由信息将第一PA路由到本节点的某个HA,进而通过该HA从所管辖的内存空间中获取该内存数据。
可选地,目标模块为第一处理器的第一HA,第一路由信息包括第一HA的标识。也即是,在不跨处理器的情况下,第一路由信息无需包括第一处理器的标识。
或者,第一计算节点还包括第二处理器,目标模块为第二处理器的第二HA,第一路由信息包括第二处理器的标识和第二HA的标识。也即是,在跨处理器的情况下,第一路由信息需要包括第二处理器的标识。
可选地,第一MMU按照第一VA查询第一内存页表,得到第一查询结果,包括:第一MMU从第一内存页表中查询第一VA对应的第一页表项(page table entry,PTE);第一MMU获取第一PTE中的第一指示信息,第一指示信息指示访问本地内存且第一PTE记录有第一路由信息;第一MMU基于第一指示信息,获取第一PTE中的物理页帧号和第一路由信息;第一MMU将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。也即是,第一MMU在按照第一VA查询到第一内存页表中的最后一级页表时,从最后一级页表的PTE中获取到第一路由信息,并拼接出内存数据的PA(即第一PA)。
第二种情况为跨节点访问内存的情况。在这种情况下,计算***还包括第二计算节点,第二计算节点包括第三处理器,第二计算节点内存储有该内存数据;目标模块为第三处理器的第三HA,第一路由信息包括第二计算节点的标识、第三处理器的标识和第三HA的标识。也即是,在跨节点访问内存的情况,由第一MMU完成对第一VA的地址转换,并按照所获得的第一路由信息将第一PA路由到远端节点的某个HA,进而通过该HA从所管辖的内存空间中获取该内存数据。可选地,第二计算节点包括第一内存空间,第一内存空间包括第二计算节点向第一计算节点提供的内存,第一内存空间内存储有该内存数据,第三HA从第一内存空间中获取该内存数据。在一定程度上,可以认为第一计算节点访问第一内存空间是感知不到跨节点的。
可选地,第一MMU按照第一VA查询第一内存页表,得到第一查询结果,包括:第一MMU从第一内存页表中查询第一VA对应的第一PTE;第一MMU获取第一PTE中的第二指示信息,第二指示信息指示跨节点访问内存且第一PTE记录有第一路由信息;第一MMU基于第二指示信息,获取第一PTE中的物理页帧号和第一路由信息;第一MMU将物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。也即是,第一MMU在按照第一VA查询到第一内存页表中的最后一级页表时,从最后一级页表的PTE中获取到第一路由信息,并拼接出内存数据的PA。
需要说明的是,第一MMU在进行地址翻译的过程中需要基于各级页表的PA查询相应页表。本方案除了无需SAD解码和路由内存数据的PA之外,还可以无需SAD解码和路由页表的PA。接下来将对此进行介绍。
可选地,第一计算节点还包括第四处理器,第一内存页表包括第一级页表,第一内存访问请求还携带第一级页表的PA和第二路由信息,第二路由信息指示第四处理器的第四HA,第四HA所管辖的内存空间内存储有第一级页表;第一MMU按照第一VA查询第一内存页表,包括:第一MMU将第一级页表的PA路由到第二路由信息所指示的第四HA,以通过第四HA从第一级页表查询第一VA对应的表项。也即是,第一级页表的PA也无需通过SAD解码和路由,第一MMU在查询第一页页表的过程中,直接按照第二路由信息的指示来路由第一级页表的PA即可。
可选地,第一级页表的PA在第四HA所管辖的内存空间内唯一,且在第一计算节点的内存空间内不唯一。这样在第一内存访问请求携带第二路由信息的实现方式中,通过第二路由信息即能够准确定位到第一级页表。当然,第一级页表的PA在第一计算节点的内存空间内也可以唯一。
可选地,第一内存访问请求包括控制寄存器(control register,CR3)字段,CR3字段携带第一级页表的PA和第二路由信息。也即是,本方案通过扩展CR3字段使得第一级页表的PA按照第二路由信息的指示进行路由。
可选地,第一MMU将第一级页表的PA路由到第二路由信息所指示的第四HA之前,还包括:第一MMU获取CR3字段中的第四指示信息,第四指示信息指示CR3字段携带第二路由信息;第一MMU基于第四指示信息,获取CR3字段中的第二路由信息。也即是,通过CR3字段中的第四指示信息来指示无需SAD解码和路由。
可选地,第一内存页表为多级页表,多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。这样,第一MMU在查询到除最后一级页表之外的各级页表的情况下,都可以获取到下一级页表存储位置的路由信息,第一MMU按照获取到的路由信息来路由下一级页表的PA即可,无需SAD解码和路由下一级页表的PA。也即是,本方案通过扩展除最后一级页表之外的各级页表的页目录项,以记录指示下一级页表存储位置的路由信息。
可选地,多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。
第二方面,提供了一种内存访问的装置,所述内存访问的装置具有实现上述第一方面中内存访问的方法行为的功能。所述内存访问的装置包括一个或多个模块,该一个或多个模块用于实现上述第一方面所提供的内存访问的方法。
也即是,提供了一种内存访问的装置,计算***包括第一计算节点,第一计算节点包括第一处理器,第一处理器包括第一MMU和第一核,该装置用于第一MMU,该装置包括:
接收模块,用于接收第一核发送的第一内存访问请求,第一内存访问请求携带第一VA;
地址转换模块,用于按照第一VA查询第一内存页表,得到第一查询结果,第一查询结果包括第一路由信息和第一PA;
发送模块,用于向第一路由信息所指示的目标模块发送第二内存访问请求,第二内存访问请求携带第一PA,第二内存访问请求用于指示目标模块基于第一PA获取内存数据,以及将该内存数据返回给第一核。
可选地,目标模块为第一计算节点内的HA。
可选地,目标模块为第一处理器的第一HA,第一路由信息包括第一HA的标识。
可选地,第一计算节点还包括第二处理器,目标模块为第二处理器的第二HA,第一路由信息包括第二处理器的标识和第二HA的标识。
可选地,地址转换模块包括:
第一页表查询子模块,用于从第一内存页表中查询第一VA对应的第一PTE;
第一获取子模块,用于获取第一PTE中的第一指示信息,第一指示信息指示访问本地内存且第一PTE记录有第一路由信息;
第二获取子模块,用于基于第一指示信息,获取第一PTE中的物理页帧号和第一路由信息;
第一拼接子模块,用于将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。
可选地,计算***还包括第二计算节点,第二计算节点包括第三处理器,第二计算节点内存储有该内存数据;
目标模块为第三处理器的第三HA,第一路由信息包括第二计算节点的标识、第三处理器的标识和第三HA的标识。
可选地,第二计算节点包括第一内存空间,第一内存空间包括第二计算节点向第一计算节点提供的内存,第一内存空间内存储有该内存数据。
可选地,地址转换模块包括:
第二页表查询子模块,用于从第一内存页表中查询第一VA对应的第一PTE;
第三获取子模块,用于获取第一PTE中的第二指示信息,第二指示信息指示跨节点访问内存且第一PTE记录有第一路由信息;
第四获取子模块,用于基于第二指示信息,获取第一PTE中的物理页帧号和第一路由信息;
第二拼接子模块,用于将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。
可选地,第一计算节点还包括第四处理器,第一内存页表包括第一级页表,第一内存访问请求还携带第一级页表的PA和第二路由信息,第二路由信息指示第四处理器的第四HA,第四HA所管辖的内存空间内存储有第一级页表;
地址转换模块包括:
第一级页表查询子模块,用于将第一级页表的PA路由到第二路由信息所指示的第四HA,以通过第四HA从第一级页表查询第一VA对应的表项。
可选地,第一级页表的PA在第四HA所管辖的内存空间内唯一,且在第一计算节点的内存空间内不唯一。
可选地,第一内存访问请求包括CR3字段,该CR3字段携带第一级页表的PA和第二路由信息。
可选地,地址转换模块还包括:
第五获取子模块,用于获取该CR3字段中的第四指示信息,第四指示信息指示该CR3字段携带第二路由信息;
第六获取子模块,用于基于第四指示信息,获取该CR3字段中的第二路由信息。
可选地,第一内存页表为多级页表,该多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。
可选地,该多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。
第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器用于存储执行上述第一方面所提供的内存访问的方法的程序,以及存储用于实现上述第一方面所提供的内存访问的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的内存访问的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的内存访问的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案至少能够带来以下有益效果:
通过在内存页表中增加路由信息,以使得MMU在对VA进行地址翻译的过程中查询内存页表获得路由信息,这样MMU在查询内存页表得到PA后,可以直接按照路由信息来路由PA,无需SAD进一步对PA进行解码。简单来说,本方案设计了一套带路由信息的内存页表,降低了内存访问的复杂度。
附图说明
图1是本申请实施例提供的一种内存访问的方法所涉及的***架构图;
图2是本申请实施例提供的一种计算***的架构示意图;
图3是本申请实施例提供的一种计算机设备的结构示意图;
图4是本申请实施例提供的一种内存访问的方法流程图;
图5是本申请实施例提供的一种CR3字段的结构示意图;
图6是本申请实施例提供的另一种CR3字段的结构示意图;
图7是本申请实施例提供的又一种CR3字段的结构示意图;
图8是本申请实施例提供的一种PDPTE/PDE的结构示意图;
图9是本申请实施例提供的另一种PDPTE/PDE的结构示意图;
图10是本申请实施例提供的又一种PDPTE/PDE的结构示意图;
图11为本申请实施例提供的一种PTE的结构示意图;
图12是本申请实施例提供的另一种PTE的结构示意图;
图13是本申请实施例提供的又一种PTE的结构示意图;
图14是本申请实施例提供的又一种PTE的结构示意图;
图15是本申请实施例提供的一种地址转换的流程示意图;
图16是本申请实施例提供的另一种计算***的架构示意图;
图17是本申请实施例提供的一种内存访问的装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
图1是本申请实施例提供的一种内存访问的方法所涉及的***架构图。该***架构包括一个或多个计算节点,该***可称为计算***、计算中心、数据中心等。参见图1,以该***架构包括多个计算节点为例,各计算节点包括至少一个处理器,各处理器包括至少一个核、MMU等。在本申请实施例中,各处理器还包括HA。可选地,一个处理器具有一个HA,或者,一个HA供同一计算节点内的各处理器使用。
其中,核用于获取应用程序发起的内存访问请求,向MMU发送该内存访问请求,该内存访问请求携带一个VA。MMU用于接收核发送的内存访问请求,按照该VA查询内存页表,得到查询结果,该查询结果包括一个路由信息和待访问的内存数据的PA。
可选地,本方案支持访问本地内存以及跨节点访问内存。在访问不同内存的情况下,第一查询结果所包括的第一路由信息有所不同。接下来简单介绍两种情况。
第一种情况为访问本地内存的情况。这种情况下,上述路由信息所指示的目标模块为本计算节点内的一个HA。该HA用于基于内存数据的PA可直接从本地内存中获得该内存数据。
第二种情况为跨节点访问内存的情况。这种情况下,本计算节点可以访问另一计算节点的内存。上述路由信息所指示的目标模块为另一计算节点内某处理器的HA。该HA用于基于内存数据的PA可直接从所管辖的内存空间中获得该内存数据。
在本申请实施例中,处理器还包括内存控制器(memory controller,MC)。本文中的HA均是通过MC访问内存的,在后文中不再重复赘述。其中,内存如动态随机存取存储器(dynamic random access memory,DRAM)等。另外,计算节点还包括网卡(networkinterface card,NIC),本文中计算节点间的通信可通过网卡实现。
图2是本申请实施例提供的一种计算***的架构示意图。参见图2,为了统一互连方式,提升路由寻址效率,采用分层的思想,将计算***划分为全局域、本地域和组件域,并设计不同类型的端口用于连通不同层级的域。一个全局域包括一个计算节点,一个本地域包括同一计算节点内的各逻辑模块,一个组件域包括同一逻辑模块内的功能引擎(engine,Egn)和端口。不同的计算节点以不同的全局标识(global identity,GID)进行标识,同一计算节点内不同的逻辑模块以不同的本地标识(local identity,LID)进行标识,同一逻辑模块内不同的功能引擎和端口均以不同的组件标识(component identity,CID)进行标识。也即是,计算节点、逻辑模块以及功能模块的路由寻址方式均采用相同的编址规则,即采用统一的通信协议,在交互的过程中无需复杂的协议转换。其中,逻辑模块如处理器、处理器的外设等,外设如各种外设组件高速互连(peripheral component interconnect-express,PCIe)设备、网卡(network interface card,NIC)等。功能引擎如处理器内的核、MMU、SMMU、HA与MC等,以及PCIe设备内具备处理能力的功能模块。端口分为全局端口(global port,G_P)和本地端口(local port,L_P),全局端口用于连通不同的全局域,本地端口用于连通同一全局域内不同的本地域。全局端口如网卡内的端口,本地端口如处理器内的超通道互连(ultra path interconnect,UPI)接口。在本申请实施例中,以GID、LID和CID进行路由的方式称为统一组件互连(unified component interconnect,UCI)路由方式。
基于此,图1和图2可结合起来应用,以提升内存访问效率。也即是,本申请实施例可以以全局标识(global identity,GID)、本地标识(local identity,LID)和组件标识(component identity,CID)来表示路由信息。GID、LID和CID为统一路由编址,打破了处理器内的组件之间、处理器之间、计算节点之间交互过程中复杂的协议转换,提升了交互过程中的寻址效率。
当然,用于表示路由信息的标识也可以为其他形式的标识,例如,计算节点以互联网协议(Internet protocol,IP)地址进行标识,处理器以节点ID(node ID)进行标识,处理器内的组件以网格ID(mesh ID)进行标识,外设内的组件由总线-设备-功能(bus-device-function,BDF)构成对应的ID,从而能够兼容相关技术。
请参考图3,图3是根据本申请实施例示出的一种计算机设备的结构示意图。可选地,该计算机设备为图1或图2中所示的任一计算节点,该计算机设备包括一个或多个处理器301、通信总线302、存储器303以及一个或多个通信接口304。
处理器301为一个通用中央处理器(central processing unit,CPU)、网络处理器(network processing,NP)、微处理器、或者为一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。可选地,上述PLD为复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线302用于在上述组件之间传送信息。可选地,通信总线302分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,存储器303为只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、电可擦可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、光盘(包括只读光盘(compact disc read-only memory,CD-ROM)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器303独立存在,并通过通信总线302与处理器301相连接,或者,存储器303与处理器301集成在一起。
通信接口304使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口304包括有线通信接口,可选地,还包括无线通信接口。其中,有线通信接口例如以太网接口等。可选地,以太网接口为光接口、电接口或其组合。无线通信接口为无线局域网(wireless local area networks,WLAN)接口、蜂窝网络通信接口或其组合等。
可选地,在一些实施例中,计算机设备包括多个处理器,如图3中所示的处理器301和处理器305。这些处理器中的每一个为一个单核处理器,或者一个多核处理器。可选地,这里的处理器指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还包括输出设备306和输入设备307。输出设备306和处理器301通信,能够以多种方式来显示信息。例如,输出设备306为液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备307和处理器301通信,能够以多种方式接收用户的输入。例如,输入设备307是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器303用于存储执行本申请方案的程序代码310,处理器301能够执行存储器303中存储的程序代码310。该程序代码中包括一个或多个软件模块,该计算机设备能够通过处理器301以及存储器303中的程序代码310,来实现下文图4实施例提供的内存访问的方法。
图4是本申请实施例提供的一种内存访问的方法流程图,该方法应用于计算***。请参考图4,该方法包括如下步骤。
步骤401:第一MMU接收第一核发送的第一内存访问请求,第一内存访问请求携带第一VA。
在本申请实施例中,该计算***包括第一计算节点,第一计算节点包括第一处理器,第一处理器包括第一MMU和第一核。第一核获取应用程序发起的内存访问请求,该内存访问请求携带第一VA。第一核对应有转译后备缓存器(translation lookaside buffer,TLB),第一核首先通过TLB查询第一VA对应的第一PTE。若TLB中未缓存该VA对应的第一PTE,说明TLB未命中,则第一核向第一MMU发送第一内存访问请求,第一内存访问请求携带第一VA。第一MMU接收该第一内存访问请求。需要说明的是,第一VA是应用程序发起内存访问请求时生成的VA。另外,本方案中的内存访问的过程包括地址转换(即地址翻译)和获取内存数据,第一MMU用于进行地址转换,第一内存访问请求实质上是请求第一MMU执行地址转换。在一些实施例中,第一内存访问请求也可以称为地址转换请求。
可选地,第一核包括地址生成单元(address generate unit,AGU),第一核通过AGU获取第一VA后,从对应的TLB查询第一VA对应的第一PTE。
步骤402:第一MMU按照第一VA查询第一内存页表,得到第一查询结果,第一查询结果包括第一路由信息和第一PA。
由前述可知,在本申请实施例中,内存页表中记录有路由信息,那么,第一MMU按照第一VA查询第一内存页表所得到第一查询结果除了包括第一PA之外,还包括第一路由信息。其中,第一PA为待访问的内存数据的PA,第一路由信息指示一个目标模块,该目标模块即第一MMU将要把第一PA路由到的模块,这样就无需SAD。
接下来介绍第一MMU按照第一VA查询第一内存页表的详细过程。
在本申请实施例中,第一内存页表为一级页表或多级页表。在多级页表的情况下,该多级页表包括第一级页表、第二级页表等。第一VA包括多个索引字段和一个地址偏移字段,该多个索引字段包括第一索引字段、第二索引字段等。第一内存访问请求除了携带第一VA之外,还携带第一级页表的PA,第一MMU按照第一级页表的PA查询第一级页表,从第一级页表中获取第一VA中第一索引字段对应的页目录项,第一MMU获取该页目录项中记录的PA,该PA即为下一级页面的PA。第一MMU按照下一级页表的PA查询下一级页表(即第二级页表),从第二级页表中获取第一VA中第二级索引对应的页目录项,第一MMU获取该页目录项中记录的PA。以此类推,直至第一MMU查询到最后一级页表,从最后一级页表中获取第一VA中最后一级索引字段对应的页表项,该页表项为第一VA对应的第一PTE。第一MMU基于第一PTE,确定第一查询结果。
一级页表与多级页表的不同在于,一级页表包括第一级页表,第一VA包括第一索引字段和地址偏移字段,第一MMU从第一级页表中获取第一VA中第一索引字段对应的页表项,该页表项即为第一VA对应的第一PTE。
由上述两段描述可知,第一MMU在进行地址翻译的过程中需要基于各级页表的PA查询相应页表。相关技术中,第一MMU在获取到任一页表的PA之后,通过SAD解码并路由该页表的PA,而本方案除了无需SAD解码和路由内存数据的PA之外,还可以无需SAD解码和路由页表的PA。接下来将对此进行介绍。
可选地,第一计算节点还包括第四处理器,第一内存页表包括第一级页表,第一内存访问请求还携带第一级页表的PA和第二路由信息,第二路由信息指示第四处理器的第四HA,第四HA所管辖的内存空间内存储有第一级页表。第一MMU按照第一VA查询第一内存页表的过程包括:第一MMU将第一级页表的PA路由到第二路由信息所指示的第四HA,以通过第四HA从第一级页表查询第一VA对应的表项。也即是,第一级页表的PA也无需通过SAD解码和路由,第一MMU在查询第一页页表的过程中,直接按照第二路由信息的指示来路由第一级页表的PA即可。
需要说明的是,第四处理器与第一处理器相同或不同,在第四处理器即第一处理器的情况下,第四HA即第一处理器的HA。简单来说,第一级页表存储在第一处理器的第一HA所管辖的内存空间内,或者,存储在第一计算节点内其他处理器的HA所管辖的内存空间内。可选地,在第四处理器与第一处理器不同的情况下,第二路由信息包括第四处理器的标识和第四HA的标识。在第四处理器与第一处理器相同的情况下,第二路由信息包括第四HA的标识,或还包括第四处理器的标识。另外,在第一内存访问请求不携带第二路由信息的情况下,第一级页表的PA通过SAD解码并路由,即兼容相关技术。
可选地,第一级页表的PA在第四HA所管辖的内存空间内唯一,且允许在第一计算节点的内存空间内不唯一。这样在第一内存访问请求携带第二路由信息的实现方式中,通过第二路由信息即能够准确定位到第一级页表。当然,第一级页表的PA在第一计算节点的内存空间内也可以唯一。
可选地,第一内存访问请求包括CR3字段,CR3字段携带第一级页表的PA和第二路由信息。也即是,本方案通过扩展CR3字段使得第一级页表的PA按照第二路由信息的指示进行路由。需要说明的是,CR3字段也是应用程序发起内存访问请求时生成的字段。
可选地,第一MMU将第一级页表的PA路由到第二路由信息所指示的第四HA之前,获取CR3字段中的第四指示信息,第四指示信息指示CR3字段携带第二路由信息。第一MMU基于第四指示信息,获取CR3字段中的第二路由信息。也即是,通过CR3字段中的第四指示信息来指示无需SAD解码和路由。
可选地,CR3字段包括第一路由指示位,第一路由指示位携带第四指示信息。例如,第一路由指示位的值为1,指示CR3字段携带第二路由信息,无需SAD解码和路由。第一路由指示位的值为0,指示CR3字段不携带第二路由信息,需要SAD解码和路由,即兼容相关技术。需要说明的是,在无需兼容相关技术的实现方式中,CR3字段无需第一路由指示位,表示默认CR3字段中记录有第二路由信息。
图5是本申请实施例提供的一种CR3字段的结构示意图。该CR3字段为相关技术中的一种CR3字段,共64位。本文对该CR3字段的64位进行简单介绍,详细介绍请参照https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-softw sof-developer-vol-3a-part-1-manual.html。其中,
bit0至2:未被使用(ignored,Ign.)。
bit3至4:已被使用的标志位。
bit5至11:未被使用(Ign.)。
bit12至M-1:第一级页表的PA,如页面映射四级或五级页表的基地址(address ofPML4or PML5 table,Addr of PML4 or PML5 Tbl)。其中,PML的英文全称为page maplevel,中文全称为页面映射级别。
bitM至bit63:预留位(reserved,Rsvd),未被使用。
图6是本申请实施例提供的另一种CR3字段的结构示意图。该CR3字段为本方案所扩展的CR3字段。图6与图5的不同在于:
bit0:第一路由指示位。bit0=0,表示SAD路由方式,兼容相关技术,即该CR3字段未记录第二路由信息。
图7是本申请实施例提供的又一种CR3字段的结构示意图。该CR3字段为本方案所扩展的CR3字段。图7与图6的不同在于:
bit0:第一路由指示位。bit0=1,表示UCI路由方式,即该CR3字段记录有第二路由信息。
bit36至63:第二指示信息。其中,bit36至47携带某HA的标识,如上述第四HA的CID,该CID占12位。bit48至63携带某处理器的标识,如上述第四处理器的LID,该LID占16位。
需要说明的是,在图6和图7中以CR3的bit0为第一路由指示位为例进行了介绍。在其他实施例中,也可以以CR3中任意一个未被使用的比特位作为第一路由指示位,例如,bit1、bit2、bit5等。另外,图7的设计导致第一级页表的PA所占的比特位数受到一定约束,在一个CID占12bit,一个LID占16bit的情况下,当第一级页表的PA的比特位数超过36bit时,例如达到最大值52bit时,第一级页表的PA需要满足64KB对齐标准(aligned)。而图7所示的CR3字段中的PA的比特位数较少,满足4KB aligned即可。简单来说,PA的比特位数越多,对齐标准相对越高。
假设第一内存页表为多级页表,可选地,该多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。这样,第一MMU在查询到除最后一级页表之外的各级页表的情况下,都可以获取到下一级页表存储位置的路由信息,第一MMU按照获取到的路由信息来路由下一级页表的PA即可,无需SAD解码和路由下一级页表的PA。也即是,本方案通过扩展除最后一级页表之外的各级页表的页目录项,以记录指示下一级页表存储位置的路由信息。其中,除最后一级页表之外的各级页表的页目录项如PDPTE、PDE等。PDPTE的英文全称为page directory PTE,PDE的英文全称为pagedirectory entry。
需要说明的是,在某级页表与其下一级页表存储在不同处理器的HA所管辖的内存空间内的情况下,指示下一级页表存储位置的路由信息包括一个处理器的标识(如LID)和一个HA的标识(如CID)。在某级页表与其下一级页表存储在同一处理器的HA所管辖的内存空间内的情况下,说明这相邻两级页表不跨HA,或者说不跨处理器,那么指示下一级页表存储位置的路由信息可以省略,或者,包括该HA的标识和/或该处理器的标识。
可选地,该多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。第五指示信息与前述CR3字段中的第四指示信息的作用类似,这里不再详细介绍。
可选地,该多级页表中除最后一级页表之外的各级页表的各页目录项包括第二路由指示位,第二路由指示位携带第五指示信息。例如,第二路由指示位的值为1,指示相应页目录项记录有指示下一级页表存储位置的路由信息,无需SAD解码和路由。第二路由指示位的值为0,指示相应页目录未记录指示下一级页表存储位置的路由信息,需要SAD解码和路由,兼容相关技术。需要说明的是,在无需兼容相关技术的实现方式中,该多级页表中除最后一级页表之外的各级页表的各页目录项无需第二路由指示位,表示默认相应页目录项记录有指示下一级页表存储位置的路由信息。
图8是本申请实施例提供的一种PDPTE/PDE的结构示意图。图8所示为相关技术中的PDPTE/PDE,均为64位。本文对PDPTE/PDE的64位进行简单介绍,详细介绍请参照https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-softw sof-developer-vol-3a-part-1-manual.html。其中,
bit0至7:已被使用的标志位。
bit8至11:未被使用(Ign.)。
bit12至M-1:下一级页表的PA,也称为页帧地址(address of 4KB page frame,Addr of 4KB PF),页表首地址、页表基地址等。
bitM至51:预留位(Rsvd),未被使用。
bit52至58:未被使用(Ign.)。
bit59至62:保护字,也称为保护键(protection key,PK)、保护钥匙等。
bit63:已被使用的标志位。
图9是本申请实施例提供的另一种PDPTE/PDE的结构示意图。该PDPTE/PDE为本方案所扩展的PDPTE/PDE。图9与图8的不同在于:
bit8:第二路由指示位。bit8=0,表示SAD路由方式,兼容相关技术,即PDPTE/PDE未记录指示下一级页表存储位置的路由信息。
图10是本申请实施例提供的又一种PDPTE/PDE的结构示意图。该PDPTE/PDE为本方案所扩展的PDPTE/PDE。图10与图9的不同在于:
bit8:第二路由指示位。bit8=1,表示UCI路由方式,即相应页目录项记录有指示下一级页表存储位置的路由信息。
bit47至58:指示下一级页表存储位置的路由信息。示例性地,该路由信息包括某HA的标识,如一个CID,该CID占12位。若该路由信息还包括某处理器的标识,如一个LID,该LID占16位,那么可能这64位不够。在这64位不够用的情况下,如需要携带的路由信息和下一级页表的PA等超过64位,则需要扩展PDPTE/PDT为128bit等。
基于前述介绍,第一MMU在查询内存页表的过程中,通过扩展内存页表以携带路由信息,这样即无需SAD解码和路由各级页表的PA。通过CR3字段、PDPTE、PDE等中的第二路由指示位来指示SAD路由方式或UCI路由方式,从而能够兼容相关技术。
在第一MMU按照前述过程查询到最后一级页表的情况下,第一MMU从最后一级页表获取第一VA对应的第一PTE,基于第一PTE确定第一查询结果,第一查询结果包括第一路由信息和第一PA。其中,第一路由信息指示第一MMU将要把第一PA路由到的目标模块。由前述介绍可知,本方案支持访问本地内存和跨节点访问内存,基于此,第一查询结果所包括的第一路由信息为两种情况。接下来对这两种情况进行详细介绍。
第一种情况为访问本地内存的情况。在这种情况下,第一路由信息所指示的目标模块为第一计算节点内的HA。
可选地,目标模块为第一处理器的第一HA,第一路由信息包括第一HA的标识。也即是,由于通常一个处理器包括一个HA,因此,在不跨HA(也即不跨处理器)的情况下,第一路由信息无需包括第一处理器的标识。当然,第一路由信息也可以还包括第一处理器的标识。
或者,第一计算节点还包括第二处理器,目标模块为第二处理器的第二HA,第一路由信息包括第二处理器的标识和第二HA的标识。也即是,在跨HA(也即跨处理器)的情况下,第一路由信息需要包括第二处理器的标识。
可选地,第一MMU按照第一VA查询第一内存页表,得到第一查询结果的一种实现方式为:第一MMU从第一内存页表中查询第一VA对应的第一PTE,获取第一PTE中的第一指示信息,第一指示信息指示访问本地内存且第一PTE记录有第一路由信息。第一MMU基于第一指示信息,获取第一PTE中的物理页帧号和第一路由信息,将该物理页帧号与第一VA中的地址偏移字段(offset)进行拼接,以得到第一PA。也即是,第一MMU在按照第一VA查询到第一内存页表中的最后一级页表时,从最后一级页表的PTE中获取到第一路由信息,并拼接出第一PA。其中,物理页帧号(physical page frame number,PFN)也可以是指页面基地址(pagebase_address,PBA)。在访问本地内存的情况下,内存数据的PA由page base_address和offset拼接得到。
可选地,第一PTE包括第一指示位和第二指示位,第一指示位和第二指示位可携带第一指示信息。其中,第一指示位的值为0,指示访问本地内存,第二指示位的值为1,指示第一PTE记录有第一路由信息。第一MMU查询到第一PTE之后,获取第一PTE中的第一指示位和第二指示位。若第一指示位的值为0,则第一MMU获取第一PTE中的物理页帧号,将该物理页帧号与第一VA中的地址偏移字段进行拼接,得到第一PA。若第二指示位的值为1,则第一MMU获取第一PTE中的第一路由信息。
也即是,第一MMU在依次解析第一PTE的多个比特位的过程中,在解析出第一指示位后,若第一指示位的值为0,说明访问本地内存,则第一MMU继续解析出第一PTE中的物理页帧号,以与第一VA中的地址偏移字段进行拼接。在解析出第二指示位后,若第二指示位的值为1,说明第一PTE记录有第一路由信息,则第一MMU继续解析出第一PTE中的第一路由信息。
可选地,第一PTE中的第一指示位的值为1,指示跨节点访问内存。若第二指示位的值为0,则指示第一PTE中未记录第一路由信息,内存数据的PA仍需要SAD解码和路由,即兼容相关技术。需要说明的是,在无需兼容相关技术的实现方式中,第一PTE无需第二指示位,表示默认第一PTE中记录有第一路由信息。
图11为本申请实施例提供的一种PTE的结构示意图。该PTE为相关技术中的一种PTE,共64位。本文对该PTE的64位进行简单介绍,详细介绍请参照https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-softwsof-developer-vol-3a-part-1-manual.html。其中,
bit0至8:已被使用的标志位。
bit9至11:未被使用(Ign.)。
bit12至M-1:物理页帧号(PFN),也称为页帧地址(address of 4KB page frame,Addr of 4KB PF),page_table的首地址或基地址等。
bitM至51:预留位(Rsvd),未被使用。
bit52至58:未被使用(Ign.)。
bit59至62:保护键(PK)。
bit63:已被使用的标志位。
图12是本申请实施例提供的另一种PTE的结构示意图。该PTE为本方案所扩展的PTE。图12与图11的不同在于:
bit9:第一指示位。bit9=0,表示访问本地内存。
bit10:第二指示位。bit10=0,表示SAD路由方式,兼容相关技术,即该PTE未记录第一路由信息。
图13是本申请实施例提供的又一种PTE的结构示意图。该PTE为本方案所扩展的PTE。图13与图12的不同在于:
bit9:第一指示位。bit9=0,表示访问本地内存。
bit10:第二指示位。bit10=1,表示统一组件互连(UCI)路由方式,即该PTE记录有第一路由信息。
bit47至bit58:第一路由信息。第一路由信息包括某HA的标识,如第一HA的CID。需要说明的是,本文以一个CID占12bit为例进行介绍,12bit并不用于限制本申请实施例,在其他实施例中,一个CID也可以占8bit、14bit等。另外,在第一路由信息还包括处理器的标识的情况下,如包括第一处理器或第二处理器的本地标识(local identity,LID),如果64位的PTE不够用,则需要扩展PTE的位数,例如将PTE扩展为128bit。
还需要说明的是,在图12和图13中以PTE的bit9为第一指示位、bit10为第二指示位为例进行了介绍。在其他实施例中,也可以以PTE中其他的任意两个未被使用的比特位作为第一指示位和第二指示位,例如,bit9和bit11,或者bit10和bit11等。另外,图13的设计导致页帧地址的比特位数受到一定约束,在一个CID占12bit,PTE携带CID但不携带LID的情况下,当页帧地址(即一个PA)的比特位数超过36bits时,例如达到最大值52bit时,页帧地址需要满足64KB aligned。
第二种情况为跨节点访问内存的情况。计算***还包括第二计算节点,第二计算节点包括第三处理器。在跨节点访问内存的情况下,目标模块为第三处理器的第三HA,第一路由信息包括第二计算节点的标识、第三处理器的标识和第三HA的标识。
可选地,第二计算节点包括第一内存空间,第一内存空间包括第二计算节点向第一计算节点提供的内存,第一内存空间内存储有该内存数据。即,第一计算节点能够访问第一内存空间。
可选地,第一MMU按照第一VA查询第一内存页表,得到第一查询结果的一种实现方式为:第一MMU从第一内存页表中查询第一VA对应的第一PTE,获取第一PTE中的第二指示信息,第二指示信息指示跨节点访问内存且第一PTE记录有第一路由信息。第一MMU基于第二指示信息,获取第一PTE中的物理页帧号和第一路由信息,将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。也即是,第一MMU在按照第一VA查询到第一内存页表中的最后一级页表时,从最后一级页表的PTE中获取到第一路由信息,并拼接出第一PA。第一PA由PFN和offset拼接得到。
由前述可知,在一种实现方式中,第一PTE包括第一指示位和第二指示位,第一指示位可携带第二指示信息。其中,第一指示位的值为1,指示跨节点访问内存且第一PTE记录有第一路由信息。第一MMU查询到第一PTE之后,获取第一PTE中的第一指示位。若第一指示位为1,则第一MMU获取第一PTE中的第一路由信息和物理页帧号,将该物理页帧号与第一VA中的地址偏移字段进行拼接,得到第一PA。
也即是,第一MMU在依次解析第一PTE的多个比特位的过程中,在解析出第一指示位后,若第一指示位的值为1,说明跨节点访问内存且第一PTE记录有第一路由信息,则第一MMU继续解析出第一PTE中的第一路由信息和物理页帧号,以与第一VA中的地址偏移字段进行拼接。
需要说明的是,在跨节点访问内存的情况下,第一PTE均记录有第一路由信息,即跨节点访问内存均需要通过第一路由信息来路由,无需SAD。
由前述可知,本方案通过扩展PTE以携带第一路由信息,由于在跨节点访问内存的情况下,第一路由信息所占的比特位较多,64bit的PTE可能不够用,例如第一路由信息包括GID+LID+CID,因此,需要将PTE扩展为128bit等。
图14是本申请实施例提供的又一种PTE的结构示意图。图14所示的PTE为本方案所扩展的128bit的PTE。图14与图13不同的地方在于,总比特位不同,另外,图14所示PTE中的bit9=1,不限定bit10的值,且记录有GID+LID+CID。其中,GID占24bit,LID占16bit,CID占12bit。需要说明的是,图14中GID、LID和CID在PTE中的位置仅作为示例性说明,并不用于限制本申请实施例。
由前述可知,本方案既支持访问本地内存,还支持跨节点访问内存,为了便于不同访问情况下的地址转换,本方案中设计了两套内存页表,例如,用于地址转换的第一内存页表包括两套内存页表。其中,第一套内存页表用于访问本地内存过程中的地址转换,第一套内存页表中的最后一级页表可称为page_table(P_T)。第二套内存页表用于跨节点访问内存过程中的地址转换,第二套内存页表中的最后一级页表可称为UCI page table(UCI P_T)。为了便于区分,page_table中的表项称为PTE,UCI page table中的表项称为UCIPTE。在本申请实施例中,VA包括directory(Dir)字段,通过VA中的Dir字段的不同取值,来索引到不同的页表。例如,若Dir字段的取值在第一范围内,则索引到第一套内存页表中的最后一级页表。若Dir字段的取值在第二范围内,则索引到第二套内存页表中的最后一级页表。
接下来请参照图15对本申请实施例中的地址转换再次进行解释说明。图15是本申请实施例提供的一种地址转换的流程示意图。参见图15,假设第一内存页表为四级页表,应用程序发起的内存访问请求携带待转换的第一VA和CR3字段。其中,以第一VA共48bit为例,第一VA包括四个索引字段和一个地址偏移字段(offset,Ofs)。这四个索引字段分别为PML4、目录指针(directory pointer,Dir Ptr)、Dir、Tbl(table)。该CR3字段携带第一级页表的PA。
在访问本地内存的情况下,第一MMU基于CR3中第一级页表的PA查询第一级页表,从第一级页表中获取PML4字段对应的页目录项PML4E,获取PML4E中记录的第二级页表的PA。第一MMU基于第二级页表的PA查询第二级页表,从第二级页表中获取Dir Ptr字段对应的页目录项PDPTE,获取PDPTE中记录的第三级页表的PA。第一MMU基于第三级页表的PA查询第三级页表,从第三级页表中获取Dir字段对应的页目录项PDE,获取PDE中记录的第四级页表的PA。访问本地内存中使用的第四级页表属于第一套内存页表。第一MMU基于第四级页表的PA查询第四级页表(P_T),从第四级页表中获取Tbl字段对应的页表项PTE,该PTE即第一PTE。在第一PTE指示通过SAD路由的情况下,第一MMU从第一PTE中获取页面基地址(PBA)。在第一PTE指示通过UCI路由的情况下,第一MMU从第一PTE中获取PBA和第一路由信息。第一MMU将PBA与offset进行拼接,得到内存数据的PA。其中,第一路由信息包括一个处理器的标识(如LID,可选地)和一个HA的标识(如CID)。也即是,在访问本地内存并通过UCI路由的情况下,在一种实现方式中,第一MMU查询第一内存页表能够得到LID+CID+PBA+offset。
在跨节点访问内存的情况下,与访问本地内存不同的是,第一MMU在从第三级页表中获取Dir字段对应的页目录项PDE之后,获取PDE中记录的第四级页表的PA。该第四级页表属于第二套内存页表。第一MMU基于第四级页表的PA查询第四级页表(UCI P_T),从第四级页表中获取Tbl字段对应的第一UCIPTE。第一UCIPTE中记录有第一路由信息和PFN。第一MMU基于第一UCIPTE中的第一指示位(此情况下值为1),获取第一UCIPTE中的第一路由信息和PFN。第一MMU将PFN与offset进行拼接,并按照第一路由信息路由PFN+offset。可选地,第一路由信息包括一个计算节点的GID、一个处理器的LID和一个HA的CID。也即是,在跨节点访问内存的情况下,在一种实现方式中,第一MMU查询第一内存页表能够得到GID+LID+CID+PFN+offset。
需要说明的是,在以上实施例中,以对64位宽的CR3、PDPTE/PDE和PTE的扩展为例进行了介绍,在具体实现中,也可以对32位宽的CR3、PDPTE/PDE和PTE等进行扩展,以使得MMU在对VA进行地址转换的过程中获得各PA的路由信息。
步骤403:第一MMU向第一路由信息所指示的目标模块发送第二内存访问请求,第二内存访问请求携带第一PA,第二内存访问请求用于指示目标模块基于第一PA获取内存数据,以及将该内存数据返回给第一核。
在本申请实施例中,第一MMU查询第一内存页表得到第一查询结果之后,向第一路由信息所指示的目标模块发送第二内存访问请求,第二内存访问请求携带第一PA。
在访问本地内存的情况下,若目标模块为第一处理器的第一HA,则第一MMU通过第一处理器的内部连线向第一HA发送第二内存访问请求。第一HA接收到第二内存访问请求之后,基于第一PA,从第一HA所管辖的内存空间内获取内存数据,并将该内存数据返回给第一核。若目标模块为第二处理器的第二HA,则第一MMU通过第一处理器的UPI接口向第二HA发送第二内存访问请求。第二HA接收到第二内存访问请求之后,基于第一PA,从第二HA所管辖的内存空间内获取内存数据,并将该内存数据返回给第一核。可选地,第二HA通过第二处理器的UPI接口将该内存数据返回给第一核。
在跨节点访问内存的情况下,目标模块为第二计算节点内第三处理器的第三HA。第一MMU通过计算节点间的互连端口(如网卡的端口)向第三HA发送第二内存访问请求。第三HA接收到第二内存访问请求之后,基于第一PA,从第三HA所管辖的内存空间中获取内存数据,并将该内存数据返回给第一核。可选地,第三HA将该内存数据返回给第三HA对应的核,由该核通过计算节点间的互连端口将该内存数据返回给第一核。可选地,第三HA所管辖的内存空间包括第一内存空间,第三HA从第一内存空间中获取该内存数据。
由前述可知,第一核在获取应用程序发起的内存访问请求之后,首先查询TLB,在TLB未命中的情况下,第一核向第一MMU发送第一内存访问请求。可选地,若TLB中缓存有该VA对应的第一页表项,说明书TLB命中,则第一核无需向第一MMU发送第一内存访问请求,第一核基于该页表项中记录的信息来获取内存数据。例如,在访问本地内存的情况下,TLB中的第一页表项中记录有PBA以及第一PA的路由信息(如本端LID+CID),PBA与offset拼接为第一PA,第一核通过该路由信息所指示的HA从本地内存中获取第一PA的内存数据即可。在跨节点访问内存的情况下,TLB中的第一页表项记录有PFN以及第一PA的路由信息(如远端GID+LID+CID),PFN与offset拼接为第一PA,第一核将第一PA路由到该路由信息所指示的HA,该HA基于该PA从所管辖的内存空间中获取内存数据,将该内存数据返回给第一核。
在以上介绍的实施例中,第二计算节点为第一计算节点提供有可访问的内存,第一计算节点能够跨节点访问第二计算节点的内存。可选地,第一计算节点为第二计算节点提供有可访问的内存,第二计算节点也能够跨节点访问第一计算节点的内存。示例性地,第二计算节点包括第五处理器(可与第三处理器为同一个),第五处理器包括第二MMU和第二核。第二MMU接收第二核发送的第三内存访问请求,第三内存访问请求携带第二VA。第二MMU按照第二VA查询第二内存页表,得到第二查询结果,第二查询结果包括第三路由信息和第二PA。第二MMU向第三路由信息所指示的某HA发送第四内存访问请求,第四内存访问请求携带第二PA,第四内存访问请求用于指示该HA获取第二PA对应的内存数据,以及将获取的内存数据返回给第二核。具体实现过程与步骤401至步骤403的过程类似,这里不再详细赘述。
需要说明的是,本申请实施例不限定MMU在处理器中的位置,MMU可以位于核的旁边,也可以位于HA的旁边,以加快查询内存页表的效率。可选地,一个核对应一个MMU,或者,一个处理器具有一个MMU池,该MMU池包括多个MMU,该多个MMU为该处理器的各个核提供地址转换功能。
以上介绍了处理器进行内存访问的过程,即处理器的核通过MMU和HA等进行内存访问的过程,在该过程中,MMU能够在地址转换的过程中获得路由信息。可选地,处理器的外设在进程内存访问的过程中,也能够通过处理器内的***内存管理单元(system MMU,SMMU)在地址转换的过程中获得路由信息,例如,用于SMMU进行地址转换的内存页表也记录有路由信息,SMMU进行地址转换的原理与MMU进行地址转换的原理类似,这里不详细介绍。需要说明的是,在本文中为了便于区分,外设进行内存访问所使用的VA称为IOVA,即MMU用于对VA进行地址转换,SMMU用于对IOVA进行地址转换。
图16是本申请实施例提供的另一种计算***的架构示意图。参见图16,该计算***包括计算节点0、计算节点1等。各计算节点以GID进行标识,计算节点内的处理器(如CPU)、外设(如Dev、NIC)等以LID进行标识,处理器内的组件和外设内的组件以CID进行标识。计算节点之间可按照GID+LID+CID的路由信息,通过G_P和UCI网络等进行交互。计算节点内的处理器、外设等之间可按照LID+CID的路由信息,通过L_P等进行交互。由图16可以看出,MMU、SMMU在进行地址转换的过程中所得到的各PA无需SAD解码和路由,内存访问的过程更加简单快速。并且通过UCI路由方式,无需复杂的协议转换,加快了通信效率。
综上所述,在本申请实施例中,通过在内存页表中增加路由信息,以使得MMU在对VA进行地址翻译的过程中查询内存页表获得路由信息,这样MMU在查询内存页表得到PA后,可以直接按照路由信息来路由PA,无需SAD进一步对PA进行解码。简单来说,本方案设计了一套带路由信息的内存页表,降低了内存访问的复杂度,且支持跨节点访问内存。
图17是本申请实施例提供的一种内存访问的装置的结构示意图,该内存访问的装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为图1至图3所示的任一计算节点。在本申请实施例中,计算***包括第一计算节点,第一计算节点包括第一处理器,第一处理器包括第一MMU和第一核,该装置用于第一MMU。参见图17,该装置包括:接收模块1701、地址转换模块1702和发送模块1703。
接收模块1701,用于接收第一核发送的第一内存访问请求,第一内存访问请求携带第一VA;
地址转换模块1702,用于按照第一VA查询第一内存页表,得到第一查询结果,第一查询结果包括第一路由信息和第一PA;
发送模块1703,用于向第一路由信息所指示的目标模块发送第二内存访问请求,第二内存访问请求携带第一PA,第二内存访问请求用于指示目标模块基于第一PA获取内存数据,以及将该内存数据返回给第一核。
可选地,目标模块为第一计算节点内的HA。
可选地,目标模块为第一处理器的第一HA,第一路由信息包括第一HA的标识。
可选地,第一计算节点还包括第二处理器,目标模块为第二处理器的第二HA,第一路由信息包括第二处理器的标识和第二HA的标识。
可选地,地址转换模块1702包括:
第一页表查询子模块,用于从第一内存页表中查询第一VA对应的第一PTE;
第一获取子模块,用于获取第一PTE中的第一指示信息,第一指示信息指示访问本地内存且第一PTE记录有第一路由信息;
第二获取子模块,用于基于第一指示信息,获取第一PTE中的物理页帧号和第一路由信息;
第一拼接子模块,用于将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。
可选地,计算***还包括第二计算节点,第二计算节点包括第三处理器,第二计算节点内存储有该内存数据;
目标模块为第三处理器的第三HA,第一路由信息包括第二计算节点的标识、第三处理器的标识和第三HA的标识。
可选地,第二计算节点包括第一内存空间,第一内存空间包括第二计算节点向第一计算节点提供的内存,第一内存空间内存储有该内存数据。
可选地,地址转换模块1702包括:
第二页表查询子模块,用于从第一内存页表中查询第一VA对应的第一PTE;
第三获取子模块,用于获取第一PTE中的第二指示信息,第二指示信息指示跨节点访问内存且第一PTE记录有第一路由信息;
第四获取子模块,用于基于第二指示信息,获取第一PTE中的物理页帧号和第一路由信息;
第二拼接子模块,用于将该物理页帧号与第一VA中的地址偏移字段进行拼接,以得到第一PA。
可选地,第一计算节点还包括第四处理器,第一内存页表包括第一级页表,第一内存访问请求还携带第一级页表的PA和第二路由信息,第二路由信息指示第四处理器的第四HA,第四HA所管辖的内存空间内存储有第一级页表;
地址转换模块1702包括:
第一级页表查询子模块,用于将第一级页表的PA路由到第二路由信息所指示的第四HA,以通过第四HA从第一级页表查询第一VA对应的表项。
可选地,第一内存访问请求包括CR3字段,该CR3字段携带第一级页表的PA和第二路由信息。
可选地,地址转换模块1702还包括:
第五获取子模块,用于获取该CR3字段中的第四指示信息,第四指示信息指示该CR3字段携带第二路由信息;
第六获取子模块,用于基于第四指示信息,获取该CR3字段中的第二路由信息。
可选地,第一内存页表为多级页表,该多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。
可选地,该多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。
在本申请实施例中,通过在内存页表中增加路由信息,以使得MMU在对VA进行地址翻译的过程中查询内存页表获得路由信息,这样MMU在查询内存页表得到PA后,可以直接按照路由信息来路由PA,无需SAD进一步对PA进行解码。简单来说,本方案设计了一套带路由信息的内存页表,降低了内存访问的复杂度。
需要说明的是:上述实施例提供的内存访问的装置在进行内存访问时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存访问的装置与内存访问的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))或半导体介质(例如:固态硬盘(solid state disk,SSD))等。值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请实施例中涉及到的内存数据、路由信息等都是在充分授权的情况下获取的。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (26)
1.一种内存访问的方法,其特征在于,计算***包括第一计算节点,所述第一计算节点包括第一处理器,所述第一处理器包括第一内存管理单元MMU和第一核,所述方法包括:
所述第一MMU接收所述第一核发送的第一内存访问请求,所述第一内存访问请求携带第一虚拟地址VA;
所述第一MMU按照所述第一VA查询第一内存页表,得到第一查询结果,所述第一查询结果包括第一路由信息和第一物理地址PA;
所述第一MMU向所述第一路由信息所指示的目标模块发送第二内存访问请求,所述第二内存访问请求携带所述第一PA,所述第二内存访问请求用于指示所述目标模块基于所述第一PA获取内存数据,以及将所述内存数据返回给所述第一核。
2.如权利要求1所述的方法,其特征在于,所述目标模块为所述第一计算节点内的本地代理HA。
3.如权利要求2所述的方法,其特征在于,所述目标模块为所述第一处理器的第一HA,所述第一路由信息包括所述第一HA的标识。
4.如权利要求2所述的方法,其特征在于,所述第一计算节点还包括第二处理器,所述目标模块为所述第二处理器的第二HA,所述第一路由信息包括所述第二处理器的标识和所述第二HA的标识。
5.如权利要求2-4任一所述的方法,其特征在于,所述第一MMU按照所述第一VA查询第一内存页表,得到第一查询结果,包括:
所述第一MMU从所述第一内存页表中查询所述第一VA对应的第一页表项PTE;
所述第一MMU获取所述第一PTE中的第一指示信息,所述第一指示信息指示访问本地内存且所述第一PTE记录有所述第一路由信息;
所述第一MMU基于所述第一指示信息,获取所述第一PTE中的物理页帧号和所述第一路由信息;
所述第一MMU将所述物理页帧号与所述第一VA中的地址偏移字段进行拼接,以得到所述第一PA。
6.如权利要求1所述的方法,其特征在于,所述计算***还包括第二计算节点,所述第二计算节点包括第三处理器,所述第二计算节点内存储有所述内存数据;
所述目标模块为所述第三处理器的第三HA,所述第一路由信息包括所述第二计算节点的标识、所述第三处理器的标识和所述第三HA的标识。
7.如权利要求6所述的方法,其特征在于,所述第一MMU按照所述第一VA查询第一内存页表,得到第一查询结果,包括:
所述第一MMU从所述第一内存页表中查询所述第一VA对应的第一PTE;
所述第一MMU获取所述第一PTE中的第二指示信息,所述第二指示信息指示跨节点访问内存且所述第一PTE记录有所述第一路由信息;
所述第一MMU基于所述第二指示信息,获取所述第一PTE中的物理页帧号和所述第一路由信息;
所述第一MMU将所述物理页帧号与所述第一VA中的地址偏移字段进行拼接,以得到所述第一PA。
8.如权利要求1-7任一所述的方法,其特征在于,所述第一计算节点还包括第四处理器,所述第一内存页表包括第一级页表,所述第一内存访问请求还携带所述第一级页表的PA和第二路由信息,所述第二路由信息指示所述第四处理器的第四HA,所述第四HA所管辖的内存空间内存储有所述第一级页表;
所述第一MMU按照所述第一VA查询第一内存页表,包括:
所述第一MMU将所述第一级页表的PA路由到所述第二路由信息所指示的所述第四HA,以通过所述第四HA从所述第一级页表查询所述第一VA对应的表项。
9.如权利要求8所述的方法,其特征在于,所述第一内存访问请求包括控制寄存器CR3字段,所述CR3字段携带所述第一级页表的PA和所述第二路由信息。
10.如权利要求9所述的方法,其特征在于,所述第一MMU将所述第一级页表的PA路由到所述第二路由信息所指示的所述第四HA之前,还包括:
所述第一MMU获取所述CR3字段中的第四指示信息,所述第四指示信息指示所述CR3字段携带所述第二路由信息;
所述第一MMU基于所述第四指示信息,获取所述CR3字段中的所述第二路由信息。
11.如权利要求1-10任一所述的方法,其特征在于,所述第一内存页表为多级页表,所述多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。
12.如权利要求11所述的方法,其特征在于,所述多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,所述第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。
13.一种内存访问的装置,其特征在于,计算***包括第一计算节点,所述第一计算节点包括第一处理器,所述第一处理器包括第一内存管理单元MMU和第一核,所述装置用于所述第一MMU,所述装置包括:
接收模块,用于接收所述第一核发送的第一内存访问请求,所述第一内存访问请求携带第一虚拟地址VA;
地址转换模块,用于按照所述第一VA查询第一内存页表,得到第一查询结果,所述第一查询结果包括第一路由信息和第一物理地址PA;
发送模块,用于向所述第一路由信息所指示的目标模块发送第二内存访问请求,所述第二内存访问请求携带所述第一PA,所述第二内存访问请求用于指示所述目标模块基于所述第一PA获取内存数据,以及将所述内存数据返回给所述第一核。
14.如权利要求13所述的装置,其特征在于,所述目标模块为所述第一计算节点内的本地代理HA。
15.如权利要求14所述的装置,其特征在于,所述目标模块为所述第一处理器的第一HA,所述第一路由信息包括所述第一HA的标识。
16.如权利要求14所述的装置,其特征在于,所述第一计算节点还包括第二处理器,所述目标模块为所述第二处理器的第二HA,所述第一路由信息包括所述第二处理器的标识和所述第二HA的标识。
17.如权利要求14-16任一所述的装置,其特征在于,所述地址转换模块包括:
第一页表查询子模块,用于从所述第一内存页表中查询所述第一VA对应的第一页表项PTE;
第一获取子模块,用于获取所述第一PTE中的第一指示信息,所述第一指示信息指示访问本地内存且所述第一PTE记录有所述第一路由信息;
第二获取子模块,用于基于所述第一指示信息,获取所述第一PTE中的物理页帧号和所述第一路由信息;
第一拼接子模块,用于将所述物理页帧号与所述第一VA中的地址偏移字段进行拼接,以得到所述第一PA。
18.如权利要求13所述的装置,其特征在于,所述计算***还包括第二计算节点,所述第二计算节点包括第三处理器,所述第二计算节点内存储有所述内存数据;
所述目标模块为所述第三处理器的第三HA,所述第一路由信息包括所述第二计算节点的标识、所述第三处理器的标识和所述第三HA的标识。
19.如权利要求18所述的装置,其特征在于,所述地址转换模块包括:
第二页表查询子模块,用于从所述第一内存页表中查询所述第一VA对应的第一PTE;
第三获取子模块,用于获取所述第一PTE中的第二指示信息,所述第二指示信息指示跨节点访问内存且所述第一PTE记录有所述第一路由信息;
第四获取子模块,用于基于所述第二指示信息,获取所述第一PTE中的物理页帧号和所述第一路由信息;
第二拼接子模块,用于将所述物理页帧号与所述第一VA中的地址偏移字段进行拼接,以得到所述第一PA。
20.如权利要求13-19任一所述的装置,其特征在于,所述第一计算节点还包括第四处理器,所述第一内存页表包括第一级页表,所述第一内存访问请求还携带所述第一级页表的PA和第二路由信息,所述第二路由信息指示所述第四处理器的第四HA,所述第四HA所管辖的内存空间内存储有所述第一级页表;
所述地址转换模块包括:
第一级页表查询子模块,用于将所述第一级页表的PA路由到所述第二路由信息所指示的所述第四HA,以通过所述第四HA从所述第一级页表查询所述第一VA对应的表项。
21.如权利要求20所述的装置,其特征在于,所述第一内存访问请求包括控制寄存器CR3字段,所述CR3字段携带所述第一级页表的PA和所述第二路由信息。
22.如权利要求21所述的装置,其特征在于,所述地址转换模块还包括:
第五获取子模块,用于获取所述CR3字段中的第四指示信息,所述第四指示信息指示所述CR3字段携带所述第二路由信息;
第六获取子模块,用于基于所述第四指示信息,获取所述CR3字段中的所述第二路由信息。
23.如权利要求13-22任一所述的装置,其特征在于,所述第一内存页表为多级页表,所述多级页表中除最后一级页表之外的各级页表的各页目录项记录有指示下一级页表存储位置的路由信息。
24.如权利要求23所述的装置,其特征在于,所述多级页表中除最后一级页表之外的各级页表的各页目录项还记录有第五指示信息,所述第五指示信息指示相应页目录项记录有指示下一级页表存储位置的路由信息。
25.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-12任一所述的方法的步骤。
26.一种计算机程序产品,其特征在于,所述计算机程序产品内存储有计算机指令,所述计算机指令被处理器执行时实现权利要求1-12任一所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210146330.6A CN116662224A (zh) | 2022-02-17 | 2022-02-17 | 内存访问的方法、装置、存储介质及计算机程序产品 |
PCT/CN2022/137088 WO2023155552A1 (zh) | 2022-02-17 | 2022-12-07 | 内存访问的方法、装置、存储介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210146330.6A CN116662224A (zh) | 2022-02-17 | 2022-02-17 | 内存访问的方法、装置、存储介质及计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662224A true CN116662224A (zh) | 2023-08-29 |
Family
ID=87577472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210146330.6A Pending CN116662224A (zh) | 2022-02-17 | 2022-02-17 | 内存访问的方法、装置、存储介质及计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116662224A (zh) |
WO (1) | WO2023155552A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630727B (zh) * | 2014-11-07 | 2018-08-14 | 华为技术有限公司 | 多SoC节点之间的访问方法、装置和*** |
EP3324296B1 (en) * | 2015-08-20 | 2019-12-04 | Huawei Technologies Co., Ltd. | File data access method and computer system |
EP3893119B1 (en) * | 2019-02-21 | 2023-07-26 | Huawei Technologies Co., Ltd. | System on chip, routing method for access command and terminal |
CN111290829B (zh) * | 2020-01-15 | 2023-05-02 | 海光信息技术股份有限公司 | 访问控制模组、虚拟机监视器及访问控制方法 |
-
2022
- 2022-02-17 CN CN202210146330.6A patent/CN116662224A/zh active Pending
- 2022-12-07 WO PCT/CN2022/137088 patent/WO2023155552A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023155552A1 (zh) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3577575B2 (ja) | アドレス変換を行う装置及び方法 | |
US7330958B2 (en) | Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries | |
US8151085B2 (en) | Method for address translation in virtual machines | |
CN113868155B (zh) | 一种内存空间扩展方法、装置及电子设备和存储介质 | |
KR102281928B1 (ko) | 가변 변환 색인 버퍼(tlb) 인덱싱 | |
US20080320216A1 (en) | Translation Lookaside Buffer and Related Method and Program Product Utilized For Virtual Addresses | |
JPH03194632A (ja) | 変換予見にもとづくキャッシュアクセス | |
US20210089470A1 (en) | Address translation methods and systems | |
JP7062695B2 (ja) | 論理ディレクトリを使用したキャッシュ構造 | |
CN111949572A (zh) | 页表条目合并方法、装置及电子设备 | |
US10853271B2 (en) | System architecture with query based address translation for access validation | |
CN115827502A (zh) | 一种内存访问***、方法及介质 | |
CN115774683A (zh) | 用于超级用户模式中获取物理地址的方法及相应处理器 | |
US20020144078A1 (en) | Address translation | |
CN113722247B (zh) | 物理内存保护单元、物理内存权限控制方法和处理器 | |
WO2024078006A1 (zh) | 芯片的地址重构方法、装置以及电子设备、存储介质 | |
CN116662224A (zh) | 内存访问的方法、装置、存储介质及计算机程序产品 | |
CN116594925A (zh) | 一种地址转换***、处理器、地址转换方法及电子设备 | |
CN115952084A (zh) | 验证访存部件的方法及*** | |
JPH07281947A (ja) | 入出力アドレス用変換装置 | |
WO2023093122A1 (zh) | 处理器、地址转换的方法、装置、存储介质及程序产品 | |
JP2002312239A (ja) | プロセッサ、システムオンチップ装置及びアクセス方法 | |
US11474953B2 (en) | Configuration cache for the ARM SMMUv3 | |
US11782846B2 (en) | Digital signal processor, DSP system, and method for accessing external memory space | |
WO2024139790A1 (zh) | 一种页表缓存方法以及存储*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |