CN116383101A - 内存访问方法、内存管理单元、芯片、设备和存储介质 - Google Patents
内存访问方法、内存管理单元、芯片、设备和存储介质 Download PDFInfo
- Publication number
- CN116383101A CN116383101A CN202211677756.0A CN202211677756A CN116383101A CN 116383101 A CN116383101 A CN 116383101A CN 202211677756 A CN202211677756 A CN 202211677756A CN 116383101 A CN116383101 A CN 116383101A
- Authority
- CN
- China
- Prior art keywords
- address
- address translation
- cache unit
- memory
- target
- 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 66
- 238000013519 translation Methods 0.000 claims abstract description 240
- 238000006243 chemical reaction Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 29
- 230000002093 peripheral effect Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003863 physical function Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/1009—Address translation using page tables, e.g. page table structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请提供一种内存访问方法、内存管理单元、芯片、设备和存储介质,处理芯片中包含多个内存管理单元,每个内存管理单元中包括第一地址转换缓存单元,处理芯片中包括供多个内存管理单元共享的第二地址转换缓存单元。目标内存管理单元接收目标外部设备发送的包括虚拟内存地址的数据写请求,若在目标第一地址转换缓存单元和第二地址转换缓存单元中均未查询到与虚拟内存地址对应的地址转换表项,则查询页表,将从页表中查询的地址转换表项分别存入目标第一地址转换缓存单元和第二地址转换缓存单元,以及向对应的物理内存地址中写入数据。通过增加每个内存管理单元可用的地址转换缓存单元的数量,可用降低对页表的遍历次数,提升IO性能。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种内存访问方法、内存管理单元、芯片、设备和存储介质。
背景技术
内存管理单元(Memory Management Unit,简称MMU),用于将cpu核访问的虚拟内存地址转换为实际的物理内存地址。而在进行I/O设备(通常统称为外设,即外部设备)和内存的数据传输的时候,为了提高数据传输速率,降低cpu核的负载,可以使用直接内存访问(Direct Memory Access,简称DMA)技术,将外设与内存之间的数据传输工作交给DMA控制器,此时,在DMA场景下,需要使用的内存管理单元是IOMMU(Input/Output MemoryManagement Unit),它的作用简单来说就是把外设(device)访问的虚拟内存地址转化成物理内存地址。具体地,IOMMU基于DMA映射(DMA remapping)功能,通过遍历页表获取外设访问的虚拟内存地址(IO Virtual Address,简称IOVA)到物理内存地址(Hardware PhysicalAddress/Host Physical Address,简称HPA)的地址转换关系,而页表遍历通常需经过数百个时钟周期(CYCLE),会加长DMA请求的延迟。为了进一步优化性能,在IOMMU中引入了旁路快表缓存/地址转换缓存(IO Translation Lookaside Buffer,简称IOTLB)单元,它是用于改进虚拟内存地址到物理内存地址转换速度的缓存单元,用来缓存一部分近期常访问的页表内容,即缓存被查询过的一些地址转换表项(IOTLB entry),以提高IO效率。
实际上,比如在一个服务器中,往往存在多个IOMMU,每个IOMMU都拥有各自的IOTLB,IOMMU只能访问其自身的IOTLB,无法跨总线访问其他IOMMU的IOTLB。实际应用中,可能会出现如下情形:在IOMMU1下连接有多个外设,在IOMMU2下仅连接一个外设甚至未连接外设,在该情形下,由于IOMMU1下连接的所有外设都消耗IOMMU1中的IOTLB1,使得IOTLB1会被很快消耗完,即IOTLB1会很快被占满,之后便需要频繁查询页表。而IOMMU2中的IOTLB2则可能处于闲置状态,导致整机的IOTLB利用率很低。
发明内容
本发明实施例提供一种内存访问方法、内存管理单元、芯片、设备和存储介质,用以降低页表遍历次数,提升IO性能。
第一方面,本发明实施例提供一种内存访问方法,应用于处理芯片中包含的目标内存管理单元,所述目标内存管理单元是所述处理芯片中包含的至少一个内存管理单元中的任一个,每个所述内存管理单元中均包括第一地址转换缓存单元;所述方法包括:
接收目标外部设备发送的数据写请求,所述数据写请求中包括虚拟内存地址,所述目标外部设备与所述目标内存管理单元连接;
若在目标第一地址转换缓存单元中未查询到与所述虚拟内存地址对应的地址转换表项,则查询第二地址转换缓存单元中是否包含所述地址转换表项;其中,所述地址转换表项中包含与所述虚拟内存地址对应的物理内存地址,所述第二地址转换缓存单元分别与所述至少一个内存管理单元连接,所述目标第一地址转换缓存单元是所述目标内存管理单元中的第一地址转换缓存单元;
若在所述第二地址转换缓存单元中未查询到所述地址转换表项,则查询页表以确定与所述虚拟内存地址对应的地址转换表项;
将从所述页表中查询的所述地址转换表项分别存入所述目标第一地址转换缓存单元和所述第二地址转换缓存单元;
向所述物理内存地址中写入与所述数据写请求对应的数据。
第二方面,本发明实施例提供一种内存管理单元,包括:
第一地址转换缓存单元和地址转换处理单元;其中,所述地址转换处理单元与第二地址缓存单元连接,所述第二地址缓存单元分别与位于同一处理芯片内的不同地址转换处理单元连接,所述不同地址转换处理单元分别位于所述处理芯片内的不同内存管理单元中;
所述地址转换处理单元,用于执行如第一方面所述的内存访问方法。
第三方面,本发明实施例提供一种处理芯片,包括:
至少一个如第二方面所述的内存管理单元,以及第二地址转换缓存单元;
所述第二地址缓存单元分别与每个内存管理单元连接。
第四方面,本发明实施例提供一种电子设备,包括:至少一个如第三方面所述的处理芯片,内存和外部设备。
第五方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被如第四方面所述的电子设备中的内存管理单元执行时,使所述内存管理单元执行如第一方面所述的内存访问方法。
在本发明实施例提供的方案中,比如一个服务器中设置有多个处理器芯片(比如CPU芯片),每个处理器芯片中包含多个内存管理单元(比如多个IOMMU),每个内存管理单元中包括一个第一地址转换缓存单元(比如第一IOTLB)。在此基础上,在处理器芯片中额外设置一个供其中多个内存管理单元共享的第二地址转换缓存单元(比如第二IOTLB)。这样可以扩展外设的可用IOTLB数量,以便降低对页表的遍历次数。
具体地,基于上述处理器芯片的组成架构,当目标内存管理单元接收到其连接的目标外部设备的数据写请求时,首先依次在目标第一地址转换缓存单元以及第二地址转换缓存单元中查询是否存在与其中携带的IOVA对应的地址转换表项,若不存在,才执行查询页表的过程。在从页表中获得与该IOVA对应的地址转换表项后,一方面基于该地址转换表项中包含的HPA执行相应的数据写入内存的处理,另一方面,将该地址转换表项分别存入目标第一地址转换缓存单元以及第二地址转换缓存单元中,这样,在下一次需要对该IOVA进行地址转换时,便可以基于目标第一地址转换缓存单元以及第二地址转换缓存单元中对该地址转换表项的缓存结果,快速完成地址转换,降低对页表的遍历次数,提升IO性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为外设通过IOMMU访问内存的原理示意图;
图2为本发明实施例提供的一种处理芯片的组成示意图;
图3为本发明实施例提供的一种内存访问方法的流程图;
图4为本发明实施例提供的一种内存访问方法的流程图;
图5为本发明实施例提供的一种内存访问方法的应用示意图;
图6为本发明实施例提供的一种内存访问方法的应用示意图;
图7为本实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
先对本发明实施例中涉及到的一些技术术语进行简要说明。
IOMMU:Input/Output Memory Management Unit,一种内存管理单元,用于实现外设访问的虚拟内存地址到物理内存地址的地址转换。
IOVA:IO Virtual Address,虚拟内存地址。
HPA:Hardware Physical Address或者Host Physical Address,物理内存地址。
外设:外部设备的简称,连接在IOMMU上,以通过IOMMU实现对内存的访问。
Root Port:根端口,处理芯片(比如CPU芯片)提供的连接外设的接口,位于根节点(Root Complex)中。一般支持某种总线协议,比如PCI(Peripheral ComponentInterconnect)协议。
page table:页表,操作系统为每个进程/虚拟机(Virtual Machine,简称VM)维护相对应的一个页表,用于存储虚拟内存地址与物理内存地址之间的映射关系。不同进程/虚拟机可以访问的物理内存地址相互隔离,但是不同进程/虚拟机可以访问相同的虚拟内存地址。由于不同进程/虚拟机的页表不同,所以即使不同进程/虚拟机访问相同虚拟内存地址,转换到的物理内存地址也是不同的。
IOTLB:IO Translation Lookaside Buffer,旁路快表缓存/地址转换缓存单元,用于缓存IOMMU最近转换过的虚拟内存地址与物理内存地址之间的映射关系,即描述该映射关系的地址转换表项(IOTLB entry)。
PF:Physical Function,物理功能,简单来说就是物理外设。
VF:Virtual Function,虚拟功能,简单来说就是虚拟外设,可以是利用某种虚拟化技术,比如SR-IOV(Single Root I/O Virtualization)技术,对一个物理外设进行虚拟化处理,得到对应的一个或多个虚拟外设,以分配给相应的一个或多个虚拟机使用。
下面先结合图1示例说明传统的一种外设通过IOMMU访问内存的过程。
如图1所示,在一个CPU芯片内,包括了一个根节点(Root Complex),在该根节点内包括了一个内存管理单元(IOMMU)以及连接该IOMMU的根端口(Root Port)。外设通过该根端口与IOMMU连接,在图1中,外设比如是PCI桥(PCI Bridge)、GPU、网卡等。
如图1所示,在IOMMU中,包括IOTLB以及DMAR(DMA remapping)单元。IOMMU通过DMAR单元,利用IOTLB以及页表完成外设访问的虚拟内存地址向物理内存地址的转换。实际应用中,虚拟内存地址也可以称为DMA地址。
另外,实际应用中,DMAR进行遍历页表以查询与当前待转换的虚拟内存地址对应的物理内存地址的过程中,可以使用到page walk cache和page walk engine两个硬件单元,简单来说,page walk engine用于完成对页表的完整遍历工作,page walk cache用于缓存近期访问过的某一级页表。实际应用中,页表可以是多级页表。
实际上,如图1所示,页表是存储在内存(Memory)中的。因此,在进行页表遍历即查询页表的过程中,若使用的是多级页表,那么进行多次内存访问操作才能查询到与当前的虚拟内存地址对应的物理内存地址。
可以理解的是,在图1示意的CPU芯片中,可以包括一个或多个cpu核(core),基于某cpu核的控制,外设可以发起对内存的数据读写操作。
具体地,外设可以向IOMMU发送DMA数据读写请求,该数据读写请求中包括虚拟内存地址。IOMMU首先在IOTLB中查询是否存在与该虚拟内存地址对应的地址转换表项,若存在,则基于查询到的地址转换表项中所包含的物理内存地址,完成相应的数据读写操作,即向该物理内存地址中写入数据或读取其中存储的数据。若不存在,则IOMMU进行页表查询,以从页表中查询到上述地址转换表项,进而基于查询到的地址转换表项中所包含的物理内存地址,完成相应的数据读写操作,同时,还可以将从页表中查询到的该地址转换表项存入IOTLB中。这样,在下次接收到与该虚拟内存地址对应的数据读写请求时,便可以基于IOTLB中存储的该地址转换表项快速地完成虚拟内存地址向物理内存地址的转换。
由于页表中存储的地址转换表项的数量远远大于IOTLB中能够存储的地址转换表项数量,且页表位于内存中,IOTLB位于IOMMU本地,因此,IOMMU查询IOTLB的速率远高于查询页表的速率。
虽然基于IOTLB可以提高地址转换效率,但是,IOTLB与TLB类似,通过N-way set-associative(n路组相连)的方式进行设计,其成本高昂。扩展IOTLB的大小,不仅会增加硬件的制造成本,同时会增加CPU芯片的整体功耗,且IOTLB的查找(lookup)速度会随着IOTLB容量的增加随之降低。
实际应用中,一个IOMMU通过某根端口可以连接一个或多个外设,这些外设都消耗该IOMMU内的IOTLB,会使得该IOTLB很快被占满,从而导致对页表的遍历次数会增多,使得IO性能下降。
为提高IO性能,降低页表遍历次数,本发明实施例提供了一种新的处理芯片的组成架构。
如图2所示,该新的处理芯片中包括至少一个内存管理单元,比如图中示意的IOMMU1、IOMMU2、IOMMU3、IOMMU4,其中,每个内存管理单元中均包括一个第一地址转换缓存单元,比如图中示意的L1-IOTLB1、L1-IOTLB2、L1-IOTLB3、L1-IOTLB4。实际应用中,这些不同内存管理单元中的第一地址转换缓存单元的容量可以是相同的。当然,每个内存管理单元中还包括地址转换处理单元,比如图中示意的DMAR单元。
除此之外,在该处理芯片中还包括一个第二地址转换缓存单元,比如图中示意的L2-IOTLB。L2-IOTLB通过某种高速总线,分别与上述不同内存管理单元连接。
具体地,第二地址转换缓存单元可以与不同内存管理单元中的地址转换处理单元连接。这样,一个内存管理单元中的地址转换处理单元分别连接本地的第一地址转换缓存单元以及第二地址转换缓存单元。
实际上,第二地址转换缓存单元中包括一个控制接口,用于连接到上述高速总线上。同理,每个内存管理单元内也有相应的连接接口,以连接到该高速总线上,具体地,如图2所示,该连接接口可以连接在地址转换处理单元上。
实际应用中,第二地址转换缓存单元的容量可以大于第一地址转换缓存单元的容量,两者容量的大小可以预先设定。
在一些实际应用场景中,出于不明显增加整体硬件成本开销的目的,可以降低每个第一地址转换缓存单元的容量,使用节省下来的资源,构造第二地址转换缓存单元以及上述控制接口和高速总线。
举例来说,假设一个传统的处理芯片中包括4个IOMMU,每个IOMMU中包括的IOTLB为4MB容量,那么总硬件开销为4MB*4=16MB。假设现在一个新的处理芯片中包括4个IOMMU,每个IOMMU中包括的第一IOTLB为3MB容量,相当于削减出一共4MB的容量,用以构造出第二IOTLB。此时,总硬件开销为3MB*4+4MB=16MB。可见并未明显增加硬件成本开销。当然,由于还需要在新的处理芯片中构造出上述高速总线和访问接口,所以实际的硬件成本开销会高一些,但是这个总线和访问接口的开销并不大。
第二地址转换缓存单元的容量可以大于第一地址转换缓存单元的容量的情形下,上述第二地址转换缓存单元的查询速度一般会慢于原生的第一地址转换缓存单元(比如L1-IOTLB),这是由于IOTLB的查询速度会随着容量增加而降低,但仍远高于查询页表。
另外,可以理解的是,图2所示的处理芯片中还可以包括如图1中所示的多个cpu核,根端口、根节点等部件,图中未示意。
下面结合以下实施例介绍基于图2所示的处理芯片的内存访问过程。
图3为本发明实施例提供的一种内存访问方法的流程图,该方法可以由目标内存管理单元执行,目标内存管理单元可以是图2所示处理芯片中包含的任一个内存管理单元。如图3所示,该方法可以包括如下步骤:
301、目标内存管理单元接收目标外部设备发送的数据写请求,数据写请求中包括虚拟内存地址,目标外部设备与目标内存管理单元连接。
302、目标内存管理单元若在目标第一地址转换缓存单元中未查询到与虚拟内存地址对应的地址转换表项,则查询第二地址转换缓存单元中是否包含该地址转换表项,其中,地址转换表项中包含与虚拟内存地址对应的物理内存地址,目标第一地址转换缓存单元是目标内存管理单元中的第一地址转换缓存单元。
303、目标内存管理单元若在第二地址转换缓存单元中未查询到所述地址转换表项,则查询页表以确定与虚拟内存地址对应的地址转换表项。
304、目标内存管理单元将从页表中查询的所述地址转换表项分别存入目标第一地址转换缓存单元和第二地址转换缓存单元,以及向物理内存地址中写入与数据写请求对应的数据。
本实施例中,假设目标外部设备(比如网卡、GPU等)通过某根端口(root port)与某处理芯片中包含的目标内存管理单元连接。并假设目标内存管理单元中包括目标第一地址转换缓存单元。
实际应用中,该处理芯片中会包含一个或多个处理器单元,比如CPU芯片中包括多个cpu核。目标外部设备可以在某cpu核的控制下触发对内存的访问。比如,cpu核上运行的某个进程或某虚拟机向目标外部设备发送数据写入指令,其中携带有虚拟内存地址,实际上,该数据写入指令中还可以包括该进程或虚拟机的标识。之后,目标外部设备向目标内存管理单元发送相应的数据写请求,比如DMA写请求,其中携带有上述虚拟内存地址,还可以携带有该进程或虚拟机的标识。
之后,目标内存管理单元首先依次在本地的目标第一地址转换缓存单元和第二地址转换缓存单元中查询是否存在与该虚拟内存地址对应的地址转换表项,若未查询到,可以认为是第一次访问这个虚拟内存地址,则遍历与该进程或虚拟机对应的页表,以得到该地址转换表项。之后,将从页表中获得的该地址转换表项分别存入目标第一地址转换缓存单元和第二地址转换缓存单元中,并根据获得的该地址转换表项中所包含的与该虚拟内存地址对应的物理内存地址,进行相应的数据写入操作,即将上述数据写请求中包含的数据写入内存中该物理内存地址所对应的存储空间中。
在实际应用中,内存管理单元通过上述高速总线对第二地址转换缓存单元进行的基本操作主要有两种,一种是写入操作,即store操作(亦即save new IOTLB entry);一种是读取操作,即load操作(亦即lookup IOTLB)。总线上针对每种操作都会设置有对应的操作指令:store指令、load指令,通过相应的操作指令完成对第二地址转换缓存单元的读、写操作。
基于此,目标内存管理单元在得到上述地址转换表项时,将该地址转换表项存入自身的目标第一地址转换缓存单元中,并发地,将该地址转换表项通过总线的store指令存储到第二地址转换缓存单元中。
可以理解的是,在接收到上述数据写请求后,目标内存管理单元若在目标第一地址转换缓存单元中查询到与上述虚拟内存地址对应的地址转换表项,则根据此时查询到的地址转换表项中包含的物理内存地址对内存进行相应的数据写入处理。或者,若在目标第一地址转换缓存单元中未查询到所述地址转换表项,但是在第二地址转换缓存单元中查询到了该地址转换表项,则根据从第二地址转换缓存单元中查询到的地址转换表项中包含的物理内存地址对内存进行相应的数据写入处理。也就是说,目标第一地址转换缓存单元的查询顺序优先于第二地址转换缓存单元。
由此可知,假设目标第一地址转换缓存单元因为容量小而导致上述地址转换表项在此前某时刻被从目标第一地址转换缓存单元中删除,但是该地址转换表项可能还仍旧存储在第二地址转换缓存单元中,如果从第二地址转换缓存单元中查询到该地址转换表项,则也不需要进行页表的遍历。所以,通过增加每个内存管理单元可用的地址转换缓存单元的数量即在处理芯片中增加一个供多个内存管理单元共用的大容量的地址转换缓存单元,可用降低内存管理单元对页表的遍历次数,提升IO性能。
上述实施例中介绍了数据写入内存的过程,在该过程中可以生成地址转换表项,并将其存入内存管理单元本地的第一地址转换缓存单元中以及存入供不同内存管理单元共享的第二地址转换缓存单元中。下面结合图4所示实施例介绍从内存中读取数据的过程,为便于描述,假设读取过程中使用的虚拟内存地址与上述写入过程中用的虚拟内存地址相同。
图4为本发明实施例提供的一种内存访问方法的流程图,该方法可以由目标内存管理单元执行,目标内存管理单元可以是图2所示处理芯片中包含的任一个内存管理单元。如图4所示,该方法可以包括如下步骤:
401、目标内存管理单元接收目标外部设备发送的数据读请求,数据读请求中包括虚拟内存地址。
402、目标内存管理单元若在目标第一地址转换缓存单元中未查询到与虚拟内存地址对应的地址转换表项,则查询第二地址转换缓存单元中是否包含该地址转换表项,以及在页表中查询该地址转换表项。
403、目标内存管理单元若从第二地址转换缓存单元中获取到所述地址转换表项,则停止查询页表,以及根据从第二地址转换缓存单元中获取到的地址转换表项,从相应物理内存地址中读取数据。
本实施例中,当目标内存管理单元接收到目标外部设备发送的数据读请求,比如DMA读请求时,先在目标第一地址转换缓存单元中查询是否存在与其中携带的虚拟内存地址对应的地址转换表项。若不存在,比如可能因为目标第一地址转换缓存单元被存满导致该地址转换表项被移除(evict),则目标内存管理单元可以并发地执行如下两个动作:
第一、遍历页表;
第二、通过总线向第二地址转换缓存单元发送load指令,该load指令中可以携带上述虚拟内存地址以及上述进程或虚拟机标识等索引信息,以使第二地址转换缓存单元确定本地是否包含与该虚拟内存地址对应的地址转换表项。若第二地址转换缓存单元反馈该地址转换表项(比如由于上文中的store操作不久前发生过),此时目标内存管理单元取消页表遍历操作,直接将第二地址转换缓存单元反馈的地址转换表项存入到本地的目标第一地址转换缓存单元中,并利用该地址转换表项中的物理内存地址进行DMA读操作,以读取其中存储的数据,将读取的数据发送给目标外部设备。
需要说明的是,上述目标内存管理单元并发地执行上述两个动作仅为一种可选实施方式,这种实施方式下,可以保证更好的时效性。当然,在另一可选实施方式下,也可以先查询第二地址转换缓存单元中是否包含上述地址转换表项,若没有,再执行遍历页表的操作。
以上实施例中提到,如果地址转换缓存单元已经被占满,则有些此前存入的地址转换表项将会被删除。
针对上述目标第一地址转换缓存单元来说,可选地,目标内存管理单元可以在每向其中写入一个地址转换表项时,记录相应的写入时间,从而,当目标第一地址转换缓存单元被占满时,可以基于写入时间,将最早写入的地址转换表项删除,以便写入一个新的地址转换表项。或者,可选地,目标内存管理单元还可以记录已经写入目标第一地址转换缓存单元中各地址转换表项的最新查询时间、被查询次数,以最新查询时间、被查询次数作为相应地址转换表项的使用频率参数。在目标第一地址转换缓存单元被占满时,可以优先删除被查询次数少的地址转换表项,或者,也可以优先删除最新查询时间比较久远的地址转换表项。当然,该实施例中,也可以结合地址转换表项的写入时间来决策。
若最终确定需要从目标第一地址转换缓存单元中删除某地址转换表项,则可选地,目标内存管理单元可以向第二地址转换缓存单元发送指示存储该地址转换表项的存入指令,以使第二地址转换缓存单元在确定未存储该地址转换表项时存储该地址转换表项。
在实际应用中,由于第二地址转换缓存单元供多个内存管理单元共享,可以用于存储各个内存管理单元传输来的地址转换表项,因此可能会存在某地址转换表项已经被从第二地址转换缓存单元中移除,但是该地址转换表项还保存在某第一地址转换缓存单元中的情形。基于此,目标内存管理单元确定需要从目标第一地址转换缓存单元中删除某地址转换表项时,向第二地址转换缓存单元发送指示存储该地址转换表项的存入指令,以便尽量延迟该地址转换表项在地址转换缓存单元中的保存时长。
第二地址转换缓存单元接收上述存入指令后,首先确定本地是否还存储有该地址转换表项,若已经存储了,则忽略该存入指令,若没有存储,则存储该地址转换表项。
综上,在本发明实施例中,通过扩展外部设备通过内存管理单元进行地址转换时能够可用的地址转换缓存单元的数量,可以降低页表遍历次数,提升IO性能。
下面结合几个具体的应用场景,介绍本发明实施例提供的内存访问方法在一些应用场景下的具体实施过程。
场景一:高速云计算场景中,假设一个服务器中包括由图5中示意的一块CPU芯片,这块CPU芯片插在服务器的主板上,在该CPU芯片中包含了多个核心(core),比如图5中示意的N个核心。另外,假设该CPU芯片中包括了多个内存管理单元,如图5中示意了其中的两个:IOMMU1和IOMMU2。每个内存管理单元中包括了一个第一地址转换缓存单元(IOTLB1、IOTLB2)以及地址转换处理单元(DMAR)。并且,在图5中,假设IOMMU1连接在根端口1上,IOMMU2连接在根端口2上。
假设有一个物理网卡插入到该服务器的主板上,通过虚拟化技术,生成图5中示意的N个虚拟网卡,并将N个虚拟网卡一一对应地分配给N个虚拟机(VM,图5中未示意出)使用,这N个VM一一对应地运行在图中示意的N个cpu核上。另外,所有的虚拟网卡均接入到同一根端口1上,因而被单个IOMMU1接管了N个VM的IO流量,所有虚拟网卡的DMA读写请求均消耗IOMMU1中的IOTLB1。而CPU芯片中的其他IOMMU比如IOMMU2,因为对应的根端口2没有外设相连,IOTLB2处于闲置状态,因此整机的IOTLB的利用率会很低。比如假设一共20个IOMMU,除IOMMU1外的剩下19个IOMMU中的IOTLB均处于闲置状态,则整机的IOTLB的利用率只有约5%,造成了资源的极大浪费。
而随着CPU芯片中core密度的不断提升,单个CPU芯片承载的计算量呈不断上升趋势。在上述多个虚拟网卡仍旧连接在一个根端口的情形下,单个IOMMU的IOTLB容量无法满足日益增长的计算量需求,并且每个IOMMU中的IOTLB容量的提升是无法赶上core密度的提升的。在IOTLB挤兑即占满的情况下,将不断产生大量的地址转换表项的移除,从而造成额外的页表遍历,对IO性能产生不利影响。
在这种情形下,采用本发明实施例提供的方案,在CPU芯片内额外设置一个供各IOMMU共享的一个大容量的IOTLB,并基于前述实施例提供的内存访问方法,便可以降低对页表的遍历次数,提升IO性能。
假设在本实施例中将额外设置的这个供多个IOMMU共享的IOTLB称为L2-IOTLB。以运行在图5中示意的cpu核1上的VM1为例,假设VM1使用虚拟网卡1,则VM1的数据写入过程可以是:
VM1向虚拟网卡1触发数据写请求,其中携带有虚拟内存地址和VM1的标识,以及需要写入内存的数据;
虚拟网卡1向所连接的IOMMU1发送DMA写请求,其中携带有上述虚拟内存地址和VM1的标识;
IOMMU1在本地的IOTLB1中查询是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则查询L2-IOTLB中是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则遍历与该VM1标识对应的页表1,以从中查询与该虚拟内存地址对应的地址转换表项1;
IOMMU1在从页表1中获得该地址转换表项1后,将地址转换表项1分别存入IOTLB1和L2-IOTLB中,以及基于地址转换表项1中的物理内存地址,将需要写入的数据写入对应的物理内存地址中。
实际上,使用不同虚拟网卡的各个VM都可以出发上述数据写入过程,以利用同一IOMMU1完成数据写内存操作。由于所有VM共用一个IOMMU1,假设IOTLB1中可以存储1000条地址转换表项,那么很快IOTLB1就会被存满。而由于L2-IOTLB的容量更大,比如可以存储4000条地址转换表项,且将地址转换表项存入IOTLB1时也会存入L2-IOTLB中,所以同一地址转换表项在L2-IOTLB中保留的时间可能更长。那么当后续需要使用这条地址转换表项进行地址转换处理时,还可以在L2-IOTLB中查询到,那么便需要执行遍历页表的过程,降低了页表的遍历次数。
可以理解的是,实际应用中,可能会为不同虚拟网卡分配不同的内存区域,所以使用不同虚拟网卡的VM的内存访问区域是不同的,即不同VM对应的物理内存地址的范围是不同的,需要为不同VM维护各自对应的不同的页表,该页表的差异性主要体现为物理内存地址的不同,虚拟内存地址可以相同。
所以上述数据读写请求中携带的VM标识,便用于区别不同的VM所对应的页表以及页表中的地址转换表项。比如同一虚拟内存地址IOVAi,在VM1对应的页表1中所对应的物理内存地址为HPAi1,在VM2对应的页表2中所对应的物理内存地址为HPAi2。
在上述场景中,数据读取的过程,可以参考前述其他实施例中介绍的数据读取过程执行,在此不展开赘述。
场景二:异构计算场景。
在异构计算场景中,主要是使用其他类型的处理器来辅助cpu核的计算。比如在图像或视频数据处理任务中,cpu核可以控制网卡将接收到的图像或视频数据写入内存,并将写入内存时使用的虚拟内存地址告知GPU,GPU根据该虚拟内存地址,最终从内存中读取相应的图像或视频数据进行计算处理,以实现GPU帮助cpu核进行计算处理的目的。
为便于理解,结合图6来示例说明一种异构计算场景。
在图6中,假设某cpu核上运行有VM1,该VM1可以使用网卡和GPU这两种外设,并且,假设网卡通过根端口1连接到IOMMU1上,GPU通过根端口2连接在IOMMU2上,假设IOMMU1中包括IOTLB1,IOMMU2中包括IOTLB2。VM1对应有页表1。
在不使用本发明实施例提供的方案的情形下,数据读写过程如下:
VM1向网卡触发数据写请求,其中携带有虚拟内存地址和VM1的标识,以及需要写入内存的数据;
网卡向所连接的IOMMU1发送DMA写请求,其中携带有上述虚拟内存地址和VM1的标识;
IOMMU1在本地的IOTLB1中查询是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则遍历与该VM1标识对应的页表1,以从中查询与该虚拟内存地址对应的地址转换表项1,将获取的地址转换表项1存入IOTLB1中,以及基于地址转换表项1中的物理内存地址,将需要写入的数据写入对应的物理内存地址中;
IOMMU1向GPU触发数据读请求,其中携带有上述虚拟内存地址和VM1的标识;
GPU在本地的IOTLB2中查询是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则遍历与该VM1标识对应的页表1,以从中查询与该虚拟内存地址对应的地址转换表项1,以及基于查询到的地址转换表项1中的物理内存地址,从该物理内存地址中读取数据进行计算处理。
由此可见,同一VM下操作的不同外设有一定概率会访问到相同的地址,由于不同外设所连接的IOMMU是物理上分离,只能各自使用自己内部的IOTLB,在他们都需要对相同的虚拟内存地址进行页表遍历的情况下,同一虚拟内存地址的重复页表遍历动作会导致IO性能下降。
但是,若在该场景中采用本发明实施例提供的方案,在CPU芯片内额外设置一个供各IOMMU共享的一个大容量的IOTLB,并基于前述实施例提供的内存访问方法,便可以降低对页表的遍历次数,提升IO性能。
假设在本实施例中将额外设置的这个供多个IOMMU共享的IOTLB称为L2-IOTLB。图6示意的异构计算场景下,数据读写过程如下:
VM1向网卡触发数据写请求,其中携带有虚拟内存地址和VM1的标识,以及需要写入内存的数据;
网卡向所连接的IOMMU1发送DMA写请求,其中携带有上述虚拟内存地址和VM1的标识;
IOMMU1在本地的IOTLB1中查询是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则查询L2-IOTLB中是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则遍历与该VM1标识对应的页表1,以从中查询与该虚拟内存地址对应的地址转换表项1,将获取的地址转换表项1存入IOTLB1中,以及基于地址转换表项1中的物理内存地址,将需要写入的数据写入对应的物理内存地址中;
IOMMU1向GPU触发数据读请求,其中携带有上述虚拟内存地址和VM1的标识;
GPU在本地的IOTLB2中查询是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,若没有,则并发地查询L2-IOTLB中是否存在与该虚拟内存地址和VM1标识对应的地址转换表项1,以及遍历与该VM1标识对应的页表1;若从L2-IOTLB中查询到地址转换表项1,则停止遍历页表1,将地址转换表项1存入IOTLB1中以及基于查询到的地址转换表项1中的物理内存地址,从该物理内存地址中读取数据进行计算处理。
由此可见,如果L2-IOTLB中保存有上述地址转换表项1,则对页表1的遍历便会终止,并发地进行L2-IOTLB和页表1的查询,不会产生额外的时间损耗,保证了IO性能,降低了相同虚拟内存地址的重复遍历页表的次数。
图7为本发明实施例提供的一种电子设备的结构示意图,如图7所示,该电子设备中包括至少一个处理芯片(比如图中示意的处理芯片1和处理芯片2)、内存和外部设备。其中,每个处理芯片中可以包括至少一个内存管理单元,每个内存管理单元中包括第一地址转换缓存单元以及地址转换处理单元。另外,每个处理芯片中还包括供其中各个内存管理单元共享的第二地址转换缓存单元,通过总线与各内存管理单元连接。
不同的外部设备(比如图7中示意的外部设备1、外部设备2)可以通过根端口连接到不同的内存管理单元上。
每个内存管理单元中包含的地址转换处理单元,可以被配置为执行前述实施例中提供的内存访问方法。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备中的内存管理单元执行时,使所述内存管理单元至少可以实现如前述实施例中提供的内存访问方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种内存访问方法,其特征在于,应用于处理芯片中包含的目标内存管理单元,所述目标内存管理单元是所述处理芯片中包含的至少一个内存管理单元中的任一个,每个所述内存管理单元中均包括第一地址转换缓存单元;所述方法包括:
接收目标外部设备发送的数据写请求,所述数据写请求中包括虚拟内存地址,所述目标外部设备与所述目标内存管理单元连接;
若在目标第一地址转换缓存单元中未查询到与所述虚拟内存地址对应的地址转换表项,则查询第二地址转换缓存单元中是否包含所述地址转换表项;其中,所述地址转换表项中包含与所述虚拟内存地址对应的物理内存地址,所述第二地址转换缓存单元分别与所述至少一个内存管理单元连接,所述目标第一地址转换缓存单元是所述目标内存管理单元中的第一地址转换缓存单元;
若在所述第二地址转换缓存单元中未查询到所述地址转换表项,则查询页表以确定与所述虚拟内存地址对应的地址转换表项;
将从所述页表中查询的所述地址转换表项分别存入所述目标第一地址转换缓存单元和所述第二地址转换缓存单元;
向所述物理内存地址中写入与所述数据写请求对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述第二地址转换缓存单元的容量大于所述第一地址转换缓存单元。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在所述目标第一地址转换缓存单元中查询到所述地址转换表项,则根据所述地址转换表项中包含的所述物理内存地址对内存进行与所述数据写请求对应的数据写入处理;或者,
若在所述第二地址转换缓存单元中查询到所述地址转换表项,则根据所述地址转换表项中包含的所述物理内存地址对内存进行与所述数据写请求对应的数据写入处理;
其中,所述目标第一地址转换缓存单元的查询顺序优先于所述第二地址转换缓存单元。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述目标外部设备发送的数据读请求,所述数据读请求中包括所述虚拟内存地址;
若在所述目标第一地址转换缓存单元中未查询到所述地址转换表项,则查询所述第二地址转换缓存单元中是否包含所述地址转换表项,以及,在所述页表中查询所述地址转换表项;
若从所述第二地址转换缓存单元中获取到所述地址转换表项,则停止查询所述页表;
根据查询到的所述地址转换表项,从所述物理内存地址中读取数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定从所述目标第一地址转换缓存单元中删除所述地址转换表项,则向所述第二地址转换缓存单元发送指示存储所述地址转换表项的存入指令,以使所述第二地址转换缓存单元在确定未存储所述地址转换表项时存储所述地址转换表项。
6.一种内存管理单元,其特征在于,包括:
第一地址转换缓存单元和地址转换处理单元;其中,所述地址转换处理单元与第二地址缓存单元连接,所述第二地址缓存单元分别与位于同一处理芯片内的不同地址转换处理单元连接,所述不同地址转换处理单元分别位于所述处理芯片内的不同内存管理单元中;
所述地址转换处理单元,用于执行如权利要求1至5中任一项所述的内存访问方法。
7.根据权利要求6所述的内存管理单元,其特征在于,所述内存管理单元包括IOMMU,所述第一地址转换缓存单元包括第一IOTLB,所述第二地址转换缓存单元包括第二IOTLB。
8.一种处理芯片,其特征在于,包括:
至少一个如权利要求6所述的内存管理单元,以及第二地址转换缓存单元;
所述第二地址缓存单元分别与每个内存管理单元连接。
9.一种电子设备,其特征在于,包括:
至少一个如权利要求8所述的处理芯片,内存和外部设备。
10.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被如权利要求9所述的电子设备中的内存管理单元执行时,使所述内存管理单元执行如权利要求1至5中任一项所述的内存访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211677756.0A CN116383101A (zh) | 2022-12-26 | 2022-12-26 | 内存访问方法、内存管理单元、芯片、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211677756.0A CN116383101A (zh) | 2022-12-26 | 2022-12-26 | 内存访问方法、内存管理单元、芯片、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116383101A true CN116383101A (zh) | 2023-07-04 |
Family
ID=86969956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211677756.0A Pending CN116383101A (zh) | 2022-12-26 | 2022-12-26 | 内存访问方法、内存管理单元、芯片、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116383101A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421096A (zh) * | 2023-12-19 | 2024-01-19 | 麒麟软件有限公司 | 基于jailhouse虚拟机监控器SMMU使用方法 |
-
2022
- 2022-12-26 CN CN202211677756.0A patent/CN116383101A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421096A (zh) * | 2023-12-19 | 2024-01-19 | 麒麟软件有限公司 | 基于jailhouse虚拟机监控器SMMU使用方法 |
CN117421096B (zh) * | 2023-12-19 | 2024-04-05 | 麒麟软件有限公司 | 基于jailhouse虚拟机监控器SMMU使用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US8904045B2 (en) | Opportunistic improvement of MMIO request handling based on target reporting of space requirements | |
WO2021061466A1 (en) | Memory management unit, address translation method, and processor | |
US11853223B2 (en) | Caching streams of memory requests | |
CN115292214A (zh) | 页表预测方法、存储访问操作方法、电子装置和电子设备 | |
WO2023125524A1 (zh) | 数据存储方法、系统、存储访问配置方法及相关设备 | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
CN116383101A (zh) | 内存访问方法、内存管理单元、芯片、设备和存储介质 | |
US7913059B2 (en) | Information processing device, data transfer method, and information storage medium | |
CN115811509A (zh) | 一种总线通信方法及相关设备 | |
US20230350811A1 (en) | Real time input/output address translation for virtualized systems | |
US10754791B2 (en) | Software translation prefetch instructions | |
US8850159B2 (en) | Method and system for latency optimized ATS usage | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
WO2021061374A1 (en) | Multi-core processor and inter-core data forwarding method | |
WO2024103911A1 (zh) | 一种地址翻译方法及设备 | |
WO2023241655A1 (zh) | 数据处理方法、装置、电子设备以及计算机可读存储介质 | |
WO2024067018A1 (zh) | 一种内存管理方法和相关设备 | |
CN114780466B (zh) | 一种基于dma的数据复制延时的优化方法 | |
CN117271107A (zh) | 数据处理方法、装置、电子设备以及计算机可读存储介质 | |
KR20230162100A (ko) | 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들 | |
CN114780452A (zh) | 一种TLB entry合并方法及一种地址转换方法 | |
CN117093132A (zh) | 数据处理方法、装置、处理器及计算机系统 | |
CN117539608A (zh) | 计算系统、主运算装置、从属运算装置及相关方法 | |
CN116745754A (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 |