CN117171067A - 跨操作系统域的全局虚拟地址空间 - Google Patents

跨操作系统域的全局虚拟地址空间 Download PDF

Info

Publication number
CN117171067A
CN117171067A CN202310647580.2A CN202310647580A CN117171067A CN 117171067 A CN117171067 A CN 117171067A CN 202310647580 A CN202310647580 A CN 202310647580A CN 117171067 A CN117171067 A CN 117171067A
Authority
CN
China
Prior art keywords
virtual address
virtual
address
determining
memory
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
Application number
CN202310647580.2A
Other languages
English (en)
Inventor
B·霍尔农
P·埃斯特普
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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
Priority claimed from US17/900,400 external-priority patent/US20230393970A1/en
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN117171067A publication Critical patent/CN117171067A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请的实施例是关于跨操作系统域的全局虚拟地址空间。在一些实例中公开的是使用组合来自多个CXL装置的存储器区段的存储器的全局共享区域来解决以上问题的方法、系统、装置和机器可读媒体。每一存储器区段为相同大小且在其自身的物理地址空间中自然地对准。所述全局共享区域是连续的且在虚拟地址空间中自然地对准。通过以这种方式组织这一全局共享区域,可使用一连串的三个表将所述全局共享区域中的虚拟地址快速地转译为物理地址。这防止TLB颠簸且改进计算系统的性能。

Description

跨操作系统域的全局虚拟地址空间
优先权申请
本申请要求2022年6月2日提交的美国临时申请序号63/348,079的优先权权益,所述申请以全文引用的方式并入本文中。
技术领域
实施例涉及跨计算装置的存储器共享。一些实施例涉及用于跨多个操作系统(OS)域的全局共享虚拟地址空间的虚拟寻址方案。
背景技术
可将用于计算机或其它电子装置的存储器装置分类为易失性和非易失性存储器。易失性存储器需要电力来维持其数据,且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)等等。非易失性存储器可在未供电时保持所存储数据,且包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、静态RAM(SRAM)、可擦除可编程ROM(EPROM)、电阻可变存储器、相变存储器、存储级存储器、电阻式随机存取存储器(RRAM)和磁阻式随机存取存储器(MRAM)等等。持久存储器为系统的架构特性,其中存储于媒体中的数据可在系统重置或电力循环之后获得。在一些实例中,非易失性存储器媒体可用于构建具有持久存储器模型的系统。
存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令和/或指令以在操作计算机或电子系统时供主机使用。举例来说,数据、命令和/或指令可在计算或其它电子系统的操作期间在主机与存储器装置之间传送。
可应用各种协议或标准以促进主机与一或多个其它装置(诸如存储器缓冲器、加速器或其它输入/输出装置)之间的通信。在实例中,诸如计算高速链路(CXL)的无序协议可用于提供高带宽和低时延连接性。
发明内容
根据本公开的实施例,提供一种方法。方法包括在多处理器、近存储器计算系统的存储器管理单元(MMU)处执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;和确定虚拟地址在全局共享虚拟地址空间内。方法进一步包括响应于确定虚拟地址在全局共享虚拟地址空间内,确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID。方法进一步包括响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID,执行以下步骤:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;和基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
根据本公开的实施例,提供一种近存储器计算系统的计算装置。计算装置包括存储器管理单元(MMU),所述存储器管理单元配置成执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;和确定虚拟地址在全局共享虚拟地址空间内。操作进一步包括响应于确定虚拟地址在全局共享虚拟地址空间内,确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID。操作进一步包括响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID,执行以下步骤:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;和基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
根据本公开的实施例,提供一种非暂时性计算机可读媒体,其存储指令。在由近存储器计算系统的计算装置的存储器管理单元(MMU)执行时,所述指令使计算装置执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;和确定虚拟地址在全局共享虚拟地址空间内。操作进一步包括:响应于确定虚拟地址在全局共享虚拟地址空间内,确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID。操作进一步包括响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID,执行以下步骤:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;和基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
附图说明
在未必按比例绘制的图式中,相似标号在不同视图中可描述类似组件。具有不同字母后缀的相似标号可表示类似组件的不同情况。图式借助于实例而非限制性地总体上说明本文件中所论述的各种实施例。
图1大体上说明根据本公开的一些实例的包含主机装置和存储器系统的计算系统的实例的框图。
图2大体上说明使用CXL链路连接主机装置和CXL装置的CXL系统的实例。
图3说明根据本公开的一些实例的具有多个主机的系统,所述主机各自具有多个CXL装置。
图4说明根据本公开的一些实例的展示装置共享存储器的不同放置的两个不同CXL装置的存储器映射。
现转向图5,根据本公开的一些实例展示虚拟到物理转译的第一部分的实例图。
图6说明根据本公开的一些实例的在两个阶段中将虚拟装置ID映射到物理地址的逻辑图。
图7说明根据本公开的一些实例的服务存储器请求的方法的流程图。
图8说明可在其上执行本文中所论述的技术(例如,方法)中的任一种或多种的实例机器的框图。
具体实施方式
计算高速链路(CXL)为配置成用于主机装置与其它装置(诸如加速器、存储器缓冲器和智能I/O装置)之间的高带宽、低时延连接性的开放标准互连。CXL设计成通过支持异构处理和存储器系统来促进高性能计算工作负载。CXL启用一致性和基于PCI高速(PCIe)的I/O语义之上的存储器语义以用于优化性能。
在一些实例中,CXL在诸如人工智能、机器学习、分析、云基础架构、边缘计算装置、通信系统等的应用程序中使用。这类应用程序中的数据处理可使用各种标量、向量、矩阵和空间架构,其可部署于CPU、GPU、FPGA、智能NIC和可使用CXL链路耦合的其它加速器中。
CXL支持使用一组协议的动态多路复用,所述协议包含输入/输出(基于PCIe的CXL.io)、高速缓存(CXL.cache)和存储器(CXL.memory)语义。在实例中,CXL可用于维持CPU(例如,主机装置或主机处理器)与所附接的CXL装置上的任何存储器之间的统一的一致存储器空间。这一配置允许CPU和其它装置共享资源且在同一存储器区域上操作以获得更高的性能、减少的数据移动和减少的软件堆叠复杂性。在实例中,CPU主要负责维持或管理CXL环境中的一致性。因此,可利用CXL来帮助减少装置成本和复杂性,以及在传统上与跨I/O链路的一致性相关联的开销。
CXL在PCIe PHY上运行且提供与PCIe的完全互操作性。在实例中,CXL装置以PCIeGen 1数据速率开始链路训练,且如果其链路伙伴能够支持CXL,那么将CXL协商为其操作协议(例如,使用在PCIe 5.0规范中定义的替代协议协商机制)。因此,装置和平台可通过利用PCIe基础架构而更容易地采用CXL,且不必设计和验证PHY、信道、信道扩展装置或PCIe的其它上部层。
在实例中,CXL支持单层级切换以使得能够扇出到多个装置。这使得平台中的多个装置能够迁移到CXL,同时维持后向兼容性和CXL的低时延特性。
在实例中,CXL可提供支持多逻辑装置(MLD)和单逻辑装置的池化的标准化计算结构,诸如使用连接到若干主机装置或节点(例如,根端口)的CXL开关。这一特征使得服务器能够池化可根据工作负载指派的资源,诸如加速器和/或存储器。举例来说,CXL可帮助促进资源分配或专用和释放。在实例中,CXL可根据需要帮助将存储器分配和解除分配到各种主机装置。这一灵活性帮助设计者避免超量配给,同时确保最佳性能。
本文中所提及的一些计算密集型应用程序和操作可能需要或使用较大数据集。存储这类数据集的存储器装置可配置成用于低时延和高带宽和持久性。加载-存储互连架构的一个问题包含保证持久性。CXL可使用架构式流程和软件的标准存储器管理接口来帮助解决所述问题,诸如可使得持久性存储器能够从基于控制的方法移动到直接存储器管理。
CXL装置可以计算能力为特色,其中CXL装置可具有存储器和计算资源两者。这些CXL装置可被称为“近存储器计算”装置,且以这些装置为特征的系统可被称为近存储器计算系统。这一术语反映以下事实:与传统的计算机架构相比,计算资源在物理上更接近于其正使用的存储器移动。这一布置减少数据移动和数据移动的相关联成本和损失,诸如增加的时延。这些近存储器计算装置中的许多装置可在单一主机上彼此互连。多个主机还可使用一或多个开关彼此连接。互连系统一起可以具有计算和存储器能力的网络为特色。在所述系统上执行的任务或进程可产生跨多个计算单元执行的线程或工作单元以加快所述任务。在这些实例中,在可由所有线程或工作单元存取的CXL装置中的一或多个上具有共享存储器可为有利的。在其它实例中,允许两个不同进程的两个不同线程利用共享存储器空间以允许进程间通信可为有利的。
在传统架构中,通常由线程使用接着映射到物理地址的虚拟地址来进行存储器存取。存取可接着路由到正确的存储器位置且由线程所服务的存储器服务。虚拟地址与物理地址之间的映射为所述进程提供可在不连续物理资源之中扩展的连续虚拟存储器区域。这使得操作系统(OS)的存储器分配和解除分配更容易。虚拟到物理转译通常使用将每一虚拟地址映射到对应物理地址的转译表。为了加速这一进程,转译表高速缓存或转译后备缓冲器(TLB)高速缓存最近使用的虚拟到物理存储器映射,以避免必须从较慢存储器或存储装置加载额外转译。虽然TLB较快,但其仅可存储逻辑到物理映射表的一部分。
如所提到,在一些情况下,跨多个近存储器计算装置的存储器的全局共享区域可以是合乎需要的。为了提供这一点,可限定由利用跨所有进程使用相同虚拟地址空间的这一池的所有进程参考的全局共享虚拟地址空间。亦即,从使用共享全局存储器区域的任何OS域中的任何进程发出的同一虚拟地址将存取同一物理存储器位置。传统的转译技术可能不足以处置一些CXL实施方案的庞大规模,这可能使得存储器的太字节或拍字节可供这种共享方案中的一或多个进程使用。在这些大型系统中,使用x86系统的传统4k页面大小可产生数十亿的潜在表条目。除非系统执行表现特别良好的进程,其重复地存取少量存储器、存取页面以使得所述进程花费大量时间存取同一页面,或系统分配大量存储器以增加TLB的大小,否则性能将较差,因为TLB将很可能由于TLB未命中将很大程度上超过TLB命中而反复地颠簸。
在一些实例中公开的是使用组合来自多个CXL装置的存储器区段的存储器的全局共享区域来解决以上问题的方法、系统、装置和机器可读媒体。每一存储器区段为相同大小且在其自身的物理地址空间中自然地对准。全局共享区域是连续的且在虚拟地址空间中自然地对准。通过以这种方式组织这一全局共享区域,可使用一连串的三个表将全局共享区域中的虚拟地址快速地转译为物理地址。这防止TLB颠簸且改进计算系统的性能。
图1大体上说明包含主机装置102和存储器系统104的计算系统100的实例的框图。主机装置102包含中央处理单元(CPU)或处理器110和主机存储器108。在实例中,主机装置102可包含主机系统,诸如服务器计算机、工作台、个人膝上型计算机、台式计算机、数码相机、智能手机、存储卡读取器和/或支持物联网的装置,以及各种其它类型的主机,且可包含存储器存取装置,例如处理器110。处理器110可包含一或多个处理器核心、并行处理器的系统或其它CPU布置。
存储器系统104包含控制器112、缓冲器114、高速缓存器116和第一存储器装置118。第一存储器装置118可包含例如一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。第一存储器装置118可包含易失性存储器和/或非易失性存储器,且可包含包括一或多个不同存储器类型或模块的多芯片装置。在实例中,计算系统100包含与存储器系统104和主机装置102介接的第二存储器装置120。
主机装置102可包含系统背板且可包含多个处理资源(例如,一或多个处理器、微处理器或某一其它类型的控制电路系统)。计算系统100可任选地包含用于主机装置102、存储器系统104、控制器112、缓冲器114、高速缓存器116、第一存储器装置118、第二存储器装置120的单独集成电路,其中的任一个或多个可包括可连接且一起使用的相应小芯片。在实例中,计算系统100包含服务器系统和/或高性能计算(HPC)系统和/或其一部分。虽然图1中所展示的实例说明具有冯诺依曼(Von Neumann)架构的系统,但本公开的实施例可实施与非冯诺依曼架构中,所述非冯诺依曼架构可不包含通常与冯诺依曼架构相关联的一或多个组件(例如,CPU、ALU等)。
在实例中,第一存储器装置118可提供用于计算系统100的主存储器,或第一存储器装置118可包括供计算系统100使用的辅助存储器或存储装置。在实例中,第一存储器装置118或第二存储器装置120包含一或多个存储器单元阵列,例如易失性和/或非易失性存储器单元。举例来说,阵列可为具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。举例来说,存储器装置可包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和快闪存储器等等。
在第一存储器装置118包含持久或非易失性存储器的实施例中,第一存储器装置118可包含快闪存储器装置,诸如NAND或NOR快闪存储器装置。第一存储器装置118可包含其它非易失性存储器装置,诸如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)、“新兴”存储器装置,诸如包含可展现滞后特性的铁电电容器的铁电RAM装置、3D交叉点(3D XP)存储器装置等,或其组合。
在实例中,控制器112包括媒体控制器,诸如非易失性存储器高速(NVMe)控制器。控制器112可配置成对第一存储器装置118执行诸如复制、写入、读取、错误校正等的操作。在实例中,控制器112可包含专门设置的电路系统和/或指令以执行各种操作。亦即,在一些实施例中,控制器112可包含电路系统和/或可配置成执行指令以控制数据和/或与数据相关联的地址的移动,诸如在缓冲器114、高速缓存器116和/或第一存储器装置118或第二存储器装置120当中。
在实例中,处理器110和控制器112中的至少一个包括用于存储器系统104的命令管理器(CM)。CM可诸如从主机装置102接收针对第一存储器装置118或第二存储器装置120中的特定逻辑行地址的读取命令。在一些实例中,CM可至少部分地基于存储在控制器112的寄存器中的指标而确定逻辑行地址与第一行相关联。在实例中,CM可从主机装置102接收针对逻辑行地址的写入命令,且所述写入命令可与第二数据相关联。在一些实例中,CM可配置成将与第一存储器装置118或第二存储器装置120相关联的存取命令发出到非易失性存储器且在发出读取命令与写入命令之间发出所述存取命令。在一些实例中,CM可将与第一存储器装置118或第二存储器装置120相关联的存取命令发出到非易失性存储器且在发出读取命令与写入命令之间发出所述存取命令。
在实例中,缓冲器114包括数据缓冲器电路,其包含物理存储器的临时存储数据的区域,例如当数据从一个位置移动到另一位置时。缓冲器114可包含先入先出(FIFO)缓冲器,其中首先处理最旧(例如,先入)的数据。在一些实施例中,缓冲器114包含硬件移位寄存器、循环缓冲器或列表。
在实例中,高速缓存器116包括物理存储器的用于临时存储有可能再次使用的特定数据的区域。高速缓存器116可包含数据条目池。在一些实例中,高速缓存器116可配置成根据写回策略操作,其中数据写入到高速缓存器而不同时写入到第一存储器装置118。因此,在一些实施例中,写入到高速缓存器116的数据在第一存储器装置118中可不具有对应的数据条目。
在实例中,控制器112可接收涉及高速缓存器116的写入请求,且使与写入请求中的每一个相关联的数据写入到高速缓存器116。控制器112可类似地接收读取请求,且使存储在例如第一存储器装置118或第二存储器装置120中的数据被检索且经由接口106写入到例如主机装置102。
在实例中,接口106可包含允许在主机装置102与存储器系统104之间传送信息的任何类型的通信路径、总线等。接口的非限制性实例可包含外围组件互连(PCI)接口、外围组件互连高速(PCIe)接口、串行高级技术附件(SATA)接口、通用串行总线(USB)接口、雷电接口和/或微型串行高级技术附件(mSATA)接口等等。在实例中,接口106包含遵从计算高速链路(CXL)协议标准的PCIe 5.0接口。因此,在一些实施例中,接口106支持至少32GT/s的传送速度。
如本文在其它地方所类似地描述,CXL为设计成增强计算性能的高速中央处理单元(CPU)到装置和CPU到存储器互连件。CXL技术维持CPU存储器空间(例如,主机存储器108)与所附接的装置或加速器上的存储器(例如,第一存储器装置118或第二存储器装置120)之间的存储器一致性,这允许资源共享以获得更高的性能、减少的软件堆叠复杂性和较低的总体系统成本。随着加速器越来越多地用来补充CPU以支持诸如人工智能和机器学习的新兴数据丰富和计算密集型应用程序,CXL设计成用于高速通信的行业开放标准接口。
图2大体上说明使用CXL链路206连接主机装置202和CXL装置204的CXL系统200的实例。在实例中,根据图1中的计算系统100的实例,主机装置202包括或对应于主机装置102,且CXL装置204包括或对应于存储器系统104。存储器系统命令管理器可包括主机装置202或CXL装置204的一部分。在实例中,CXL链路206可使用高速缓存(例如,CXL.cache)、存储器存取(例如,CXL.mem)和数据输入/输出事务(例如,CXL.io)的多路复用协议来支持通信。CXL.io可包含基于PCIe的协议,其用于诸如装置发现、配置、初始化、I/O虚拟化和使用非一致加载-存储、生产者-消费者语义的直接存储器存取(DMA)的功能。CXL.cache可使得装置能够使用请求和响应协议高速缓存来自主机存储器(例如,来自主机存储器212)的数据。CXL.memory可使得主机装置202能够使用附接到CXL装置204的存储器,例如,在虚拟化存储器空间中或使用虚拟化存储器空间。在实例中,CxL.memory事务可为在主机装置202的下游或外部运行的存储器加载和存储操作。
在图2的实例中,主机装置202包含主机处理器214(例如,其包括一或多个CPU或核心)和IO装置228。主机装置202可包括或可耦合到主机存储器212。主机装置202可包含配置成促进与CXL装置204的基于CXL的通信和事务的各种电路系统或逻辑。举例来说,主机装置202可包含配置成根据CXL.cache和CXL.mem语义实施事务的一致性和存储器逻辑218,且主机装置202可包含配置成根据CXL.io语义实施事务的PCIe逻辑220。在实例中,主机装置202可配置成使用例如它的一致性和存储器逻辑218来管理在CXL装置204处高速缓存的数据的一致性。
主机装置202可进一步包含配置成调变CXL链路206上的通信(例如,使用PCIe PHY和逻辑PHY层208)的主机多路复用器216。协议的多路复用确保时延敏感协议(例如,CXL.cache和CXL.memory)具有与本机处理器间链路相同或类似的时延。在实例中,CXL限定了时延敏感协议的响应时间的上限,以帮助确保装置性能不会受到实施一致性和存储器语义的不同装置之间的时延变化的不利影响。
在实例中,对称高速缓存一致性协议可能难以在主机处理器之间实施,因为不同架构可使用不同解决方案,这继而可损害后向兼容性。CXL可通过合并主机装置202处的一致性功能来解决这一问题,诸如使用一致性和存储器逻辑218。
CXL装置204可包含加速器装置,其包括各种加速器逻辑222。在实例中,CXL装置204可包括或可耦合到CXL装置存储器226。CXL装置204可包含配置成使用CXL链路206来促进与主机装置202的基于CXL的通信和事务的各种电路系统或逻辑。举例来说,加速器逻辑222可配置成根据CXL.cache、CXL.mem和CXL.io语义实施事务。CXL装置204可包含CXL装置多路复用器224,其配置成使用CXL PCIe PHY和逻辑PHY层210来控制CXL链路206上的通信。加速器逻辑222可为可执行一或多个任务的一或多个处理器。加速器逻辑222可为通用处理器或设计成加速一或多个特定工作负载的处理器。
图3说明根据本公开的一些实例的具有多个主机的系统300,所述主机各自具有多个CXL装置。主机装置310、312、314和316可各自具有诸如CXL装置322到352的多个CXL装置,如所展示。主机装置310可使用节点开关318连接到主机装置312。同样地,主机装置314和主机装置316可使用节点开关320连接。节点开关318和320可使用一或多个刻度(scale)开关321互连。在一些实例中,每一CXL装置322到352可由装置ID限定,例如,装置324可被指派装置ID 01。在一些实例中,每一装置可具有物理装置ID和虚拟装置ID两者以支持装置的虚拟化(例如,用于高可用性应用程序中的故障转移)。节点开关318、320和刻度开关321可部分地基于虚拟和物理装置ID而在主机与装置之间路由CXL请求。
如先前所描述,有效的虚拟共享全局存储器区域可用于允许来自不同OS域的进程在分布式应用程序上进行协作。OS域为由同一OS例项控制的一或多个主机装置的群组。举例来说,每一主机装置可为单独OS域。从使用共享全局存储器区域的任何OS域中的任何进程发出的同一虚拟地址将存取同一物理存储器位置。如此存取的物理存储器位置可能与正存取它的进程在同一装置上,或在不同装置上。通过对在N个装置(例如,CXL装置322到352)上相同的二次幂存储器区域大小进行分组来定义虚拟共享全局存储器区域。区域的地址偏移位之上的对数底数为二的N个位用于识别物理存储器所在的装置的虚拟装置ID。类似地,通过对在N个装置上相同的二次幂存储器区域大小进行分组来定义物理共享全局存储器区域。区域的地址偏移位之上的对数底数为二的N个位用作物理装置ID。
图3说明由虚拟地址空间365中的16个区段组成的全局虚拟区域,所述区段接着映射到物理上跨多个主机和装置安置的全局物理地址空间360中的物理地址。映射到全局物理地址空间360的物理存储器位置在图式中用“S”标记。在一些实例中,在装置和/或主机中的一或多个上执行的多个应用程序可利用这一全局共享空间,但在其它实例中,仅可向某些进程提供存取。举例来说,可向协作进程授予存取,且可不向非协作进程授予存取。协作进程的实例可包含同一应用程序的不同线程。
虽然图3说明将单个块分配到每一装置的实例,在其它实例中,可将多个块分配到单个装置。当虚拟地址块和物理地址块两者由自然对准的二次幂大小的存储器组成时,可使用一组简单表将虚拟地址转译为物理地址。这些相同转译可用于OS域页表中,以使得能够从不使用简单表的处理元件存取这一区域。
图4说明根据本公开的一些实例的展示装置共享存储器的不同放置的两个不同CXL装置的存储器映射。第一装置(装置A)405包含一段直接附接的主机存储器、装置专用存储器、不分配任何内容的存储器孔、全局共享存储器(CXL存储器)和其它本地存储器。第二装置(装置B)410包含相同分配,但直接附接的主机存储器较大,这将全局共享存储器推送到较高地址范围。图4说明虽然每一节点对于全局共享存储器区域可具有不同起始偏移,但可使用一种机构将物理区段号映射到装置,使得所有OS域皆可存取特定存储器位置。在一些实例中,较简单机构可迫使全局共享存储器区域在所有节点的相同偏移处开始。
希望寻址全局共享存储器的应用程序可通过提供全局共享虚拟存储器地址作为命令的部分来发出存储器命令(加载、存储等)。CXL装置、主机或开关内的逻辑可将虚拟存储器地址转换为物理地址。从虚拟地址到物理地址的转译可在两个步骤中发生。第一,与装置相关联的存储器管理单元(MMU)确定虚拟地址是否映射到全局共享区域中的地址,且如果是,那么它是映射到本地区段还是远程区段。第二,如果所述地址映射到本地区段,那么MMU将虚拟地址映射到本地物理地址;如果它映射到远程区段,那么将请求转发到确定哪些远程装置代管目标区段的缩放接口出口块。从此处,将请求转发到物理存储器所在的装置。
如所提到,虚拟地址包含经编码虚拟装置ID值。MMU首先需要确定转译下的虚拟地址的虚拟装置ID值是映射到本地装置还是远程装置。这一映射是通过从虚拟地址提取虚拟装置识别(VDID)字段且将其与指派到产生存储器请求的装置的VDID进行比较来实现。通过用本地物理ID替换VDID且用物理区段号替换虚拟区段号,将对由本地装置代管的虚拟地址的请求转换为物理地址。
图5说明根据本公开的一些实例的虚拟到物理转译逻辑500的第一部分的实例图。将存储器请求的虚拟地址和请求程序的CXL进程地址ID(PASID)传递到图5中所展示的虚拟到物理转译逻辑500。全局共享范围检查组件512基于虚拟地址确定虚拟地址是否为全局虚拟地址空间的部分。在一些实例中,还通过传统的虚拟到物理转译高速缓存组件510(例如,TLB)并行地处理虚拟地址。这是因为,在全局共享范围检查组件512完成其分析之前,还不知道虚拟地址是否为全局虚拟地址空间的部分,或其是否为用于装置的专用虚拟地址。通过将虚拟地址并行地处理为潜在的全局共享范围和潜在的本地专用地址两者,系统不会因首先检查一个地址而导致性能损失。在其它实例中,仅在全局共享范围检查指示虚拟地址不是全局虚拟共享区域的部分时才可执行虚拟到物理转译高速缓存组件510检查。
虚拟到物理转译高速缓存检查组件510可指示地址不处于高速缓存,或者如果地址处于高速缓存,那么为主机物理地址。另一方面,如果虚拟地址在全局共享虚拟地址空间内,那么全局共享范围检查组件512可输出地址是远程还是本地的指示,且如果其为本地的,那么为主机物理地址,且如果其为远程的,那么为全局唯一区域识别符(GURGNID)。在一些实例中,虚拟到物理转译高速缓存组件510并不存储全局虚拟物理地址空间的转译。在虚拟地址映射到全局虚拟地址空间的情况下,虚拟到物理转译高速缓存组件510将具有高速缓存未命中,且HPA到DPA组件516和全局区域检测组件514将不会逐出虚拟到物理转译高速缓存组件510中的任何条目。这是为了防止先前论述的颠簸问题。
在一些实例中,全局共享范围检查组件512可利用具有每一全局共享虚拟区域的条目的表或其它数据结构。作为一个实例,表可包含以下字段中的一或多个:
全局共享范围检查逻辑512可遍历表的所有条目以确定是否存在虚拟地址在存储器基数低与存储器基数低+大小字段之间的记录,以确定虚拟地址是否在基数与基数+大小之间。如果虚拟存储器地址不是基数与基数+大小之间的地址,那么在表中检查下一记录以用于下一共享虚拟池。如果没有记录匹配,那么地址为本地的,且不采取进一步动作。然而,如果虚拟存储器地址在特定记录的基数与基数+大小之间,那么全局共享范围检查逻辑512通过将虚拟地址位移位特定记录的shift字段且接着应用特定记录的mask字段而从虚拟地址提取装置VID。全局共享范围检查逻辑512接着将所得VID与特定记录的Local_VID字段进行比较。如果VID匹配Local_VID字段,那么由虚拟地址参考的全局共享存储器是装置本地的,且将物理地址给定为Physical Page Address。如果VID并不匹配Local_VID字段,那么提取特定记录的GURGNID且将其发送到HPA到DPA组件516。
HPA到DPA 516组件针对由虚拟到物理转译高速缓存或全局共享范围检查512提供的物理地址将CXL主机物理地址(HPA)转换为CXL装置物理地址(DPA)。如果虚拟存储器地址为全局共享范围的部分且其不由本地装置提供,那么设定远程旗标,且代替获得主机物理地址,HPA到DPA组件516接收GURGNID。在这些情况下,HPA到DPA组件516并不将HPA转换为DPA,而是实际上对GURGNID进行传递。
将对映射到远程装置(绕过本地转译高速缓存器)的虚拟地址的请求路由到刻度出口端口组件610,在其中确定目的地装置和装置物理地址。在一些实例中,为了改进可扩展性,在请求离开装置之前不需要用于远程存取的完整物理地址。通过将这些表放置在出口块中,能够减少此信息的副本数目。当装置具有多个请求程序时,在每一请求块处均不需要它。这一布置使得总体方案更具可扩展性。图6说明根据本公开的一些实例的用于在两个阶段中将虚拟装置ID映射到物理地址的刻度出口端口组件610的图。如图6中所展示,将物理或虚拟地址连同GURGNID一起传递到刻度出口端口组件610的全局地址索引查找组件612。GURGNID为通过全局地址索引查找组件612维持的刻度出口全局范围表的索引。全局地址索引查找组件612使用GURGNID来寻找刻度出口全局范围表中的相关条目。在一些实例中,所述表具有含有以下的条目:
将虚拟装置ID添加到表条目中的Base字段以产生另一索引。这一第二索引用于索引到刻度出口全局装置ID映射中。将这一第二索引以及地址传递到物理装置ID和区域查找组件614。物理装置ID和区域查找组件614使用所述索引作为到其维持的第三表的条目。在一些实例中,这一第三表中的每一条目可包含以下字段。
由物理装置ID和区域查找组件614根据dest_phys_segment、dest_did和虚拟地址内的偏移创建物理地址。来自全局范围表的sizeW用于将dest_phys_segment和destination DID向上移位(例如,至少20位)且掩蔽虚拟地址的上部位。W指示这一字段指定区段的位宽度,且所述值可用于将地址中的装置ID位移位到位零。经掩码虚拟地址和经移位位接着与逻辑或运算组合。在一些实例中,DEST_DID包括最上部位。将物理地址传递到HPA到FPA 616,其将主机物理地址转换为网状架构物理地址(FPA)且确定用于将物理地址路由到恰当目的地装置的路由信息。接着将存储器存取路由到目的地装置且完成存储器存取。
所公开的方法和系统可显著减少支持共享的分区物理地址空间的系统中的较大虚拟分段地址空间的地址转译高速缓存性能问题。所公开的方法、系统和装置从虚拟地址移除硬编码字段以移除对分配虚拟存储器的OS的约束。所公开的方法和系统可由存储器管理单元(MMU)执行,所述存储器管理单元可为图1到3或图8中所展示的一或多个处理单元内的逻辑。
图7说明根据本公开的一些实例的服务存储器请求的方法700的流程图。在操作710处,系统可接收存储器操作请求(例如,读取、存储等)。操作请求可包含将映射到待执行所述操作的存储器的物理地址的虚拟地址。在操作712处,系统确定虚拟地址是否在全局存储器范围内的全局共享虚拟地址空间中。举例来说,通过将虚拟地址与第一表的条目进行比较,直到找到表中的条目或直到已检查所有条目,其中虚拟地址在由表条目指定的范围(例如,通过基地址和大小值)之间。如果已检查所有条目且虚拟地址不在任何条目的任何范围内,那么虚拟地址不在共享全局范围中,且在操作714处,可正常处置存储器操作(例如,使用TLB)。
如果虚拟存储器地址在共享全局虚拟地址范围内,那么在操作716处,系统确定共享全局虚拟地址是否映射到当前装置内的物理存储器,或全局虚拟地址是否映射到不同装置内的物理存储器。在一些实例中,这可通过利用来自第一表中的匹配条目的值来进行。匹配条目可包含可用于确定虚拟装置ID的移位值和掩码值。将来自虚拟地址的这一虚拟装置ID与当前装置的虚拟ID(其也可存储在表条目中)进行比较。如果它们匹配,那么存储器为本地全局共享存储器。在这些实例中,接着在操作724处,来自第一表的条目包含与虚拟地址一起使用以产生物理地址的物理页地址。
如果它们不匹配,那么物理存储器位于不同装置中。在操作718处,系统可从第一表中的条目确定全局唯一区域ID(例如,GURGNID)。在操作720处,系统可确定对应于GURGNID的区域的基地址和大小。举例来说,GURGNID可用作到第二表中的索引以寻找第二表条目。第二表条目可具有基地址和大小。在操作722处,系统可确定物理区段和目的地物理装置ID。系统可利用基地址和虚拟装置ID索引到第三表中,第三表条目存储目的地物理区段和目的地物理装置ID。
在操作724处,系统可建构物理地址。可根据dest_phys_segment、dest_did和虚拟地址内的偏移来创建物理地址。来自全局范围表的sizeW用于将dest_phys_segment和destination DID向上移位(例如,至少20位)且掩蔽虚拟地址的上部位。经掩码虚拟地址和经移位位接着与逻辑或运算组合。在一些实例中,DEST_DID包括最上部位。将物理地址传递到HPA到FPA 616,其确定用于将物理地址路由到恰当目的地装置的路由信息。接着将存储器存取路由到目的地装置,且在操作726处完成存储器存取。
图8说明其上可执行本文中所论述的技术(例如,方法)中的任一种或多种的实例机器800的框图。在替代实施例中,机器800可操作为独立装置,或可连接(例如,联网)到其它机器。在联网部署中,机器800可在服务器-客户端网络环境中以服务器机器、客户端机器的容量操作。在实例中,机器800可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器800可呈以下形式:近存储器计算装置(例如,CXL装置)、主机、开关、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、智能手机、网站设备、网络路由器、开关或桥接器,或能够执行指定要采取的动作的指令(按序或以其它方式)的任何机器。此外,虽然仅示出单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文论述的方法论中的任一种或多种的任何机器集合,诸如云计算、软件即服务(SaaS)、其它计算机集群配置。在一些实例中,机器800可为、包含或实施主机装置102、存储器系统104、第二存储器装置120、主机装置202、CXL装置204、装置存储器226、刻度开关321、节点开关318、320、CXL装置322到352、主机装置310、312、314、316,实施逻辑500、600,实施图4的存储器布局和/或图7的方法。
如本文中所描述,实例可包含一或多个逻辑单元、组件或机构(在下文中称为“组件”)或可对其进行操作。组件是能够执行指定的操作的有形实体(例如,硬件),且可以某种方式配置或布置。在实例中,电路可以指定方式布置(例如,在内部或相对于诸如其它电路的外部实体)为组件。在实例中,一或多个计算机系统(例如,独立客户端或服务器计算机系统)或一或多个硬件处理器的全部或部分可由固件或软件(例如,指令、应用程序部分或应用程序)配置为用于执行指定操作的组件。在实例中,软件在由组件的底层硬件执行时使硬件执行组件的指定操作。
因此,术语“组件”被理解成涵盖有形实体,即以物理方式建构、特定地配置成(例如,硬连线的)或临时地(例如,暂时地)配置成(例如,经编程)以指定方式操作或执行本文中所述的任何操作的部分或全部的实体。考虑到其中组件是临时配置的实例,组件中的每一个不必在任何一个时刻具现化。举例来说,在组件包括使用软件配置的通用硬件处理器的情况下,通用硬件处理器可以在不同时间配置为相应的不同组件。软件可以相应地配置硬件处理器,例如,以在一个时刻构成特定模块且在不同时刻构成不同组件。
机器(例如,计算机系统)800可包含一或多个硬件处理器,诸如处理器802。处理器802可为中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合。机器800可包含主存储器804和静态存储器806,其中的一些或全部可经由互链件(例如,总线)808彼此通信。主存储器804的实例可包含同步动态随机存取存储器(SDRAM),诸如双数据速率存储器,诸如DDR4或DDR5。互联件808可为一或多个不同类型的互联件,使得可使用第一类型的互联件连接一或多个组件,并且可使用第二类型的互链件连接一或多个组件。实例互联件可包含存储器总线、外围组件互连件(PCI)、外围组件互连高速(PCIe)总线、通用串行总线(USB)等。
机器800可进一步包含显示单元810、字母数字输入装置812(例如,键盘)和用户接口(UI)导航装置814(例如,鼠标)。在实例中,显示单元810、输入装置812和UI导航装置814可为触摸屏显示器。机器800可另外包含存储装置(例如,驱动单元)816、信号产生装置818(例如,扬声器)、网络接口装置820以及一或多个传感器821,诸如全球定位系统(GPS)传感器、指南针、加速计或其它传感器。机器800可包含输出控制器828,诸如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
存储装置816可包含机器可读媒体822,在所述机器可读媒体上存储体现本文中所描述的技术或功能中的任一个或多个或者由本文中所描述的技术或功能中的任一个或多个利用的一或多组数据结构或指令824(例如,软件)。指令824还可在其由机器800执行期间完全或至少部分地驻存于主存储器804、静态存储器806或硬件处理器802内。在实例中,硬件处理器802、主存储器804、静态存储器806或存储装置816中的一个或任何组合可以构成机器可读媒体。
虽然机器可读媒体822被说明为单个媒体,但术语“机器可读媒体”可包含被配置成存储一或多个指令824的单个媒体或多个媒体(例如,集中或分布式数据库,和/或相关联的高速缓存器和服务器)。
术语“机器可读媒体”可包含能够存储、编码或携载用于由机器800执行的指令且使机器800执行本公开的技术中的任一种或多种,或能够存储、编码或携载由这类指令使用或与这类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器以及光学和磁性媒体。机器可读媒体的特定实例可包含:非易失性存储器,诸如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,诸如内部硬盘和可拆卸式磁盘;磁光盘;随机存取存储器(RAM);固态硬盘(SSD);以及CD-ROM和DVD-ROM磁盘。在一些实例中,机器可读媒体可包含非暂时性机器可读媒体。在一些实例中,机器可读媒体可包含并非暂时性传播信号的机器可读媒体。
可使用传输媒体经由网络接口装置820在通信网络826上进一步传输或接收指令824。机器800可与有线或无线地利用若干传送协议(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)中的任一个的一或多个其它机器通信。实例通信网络可包含:局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络,和无线数据网络,诸如已知为的电气电子工程师学会(IEEE)802.11标准家族、IEEE 802.15.4标准家族、5G新无线电(NR)标准家族、长期演进(LTE)标准家族、通用移动电信系统(UMTS)标准家族、对等(P2P)网络,等等。在实例中,网络接口装置820可包含一或多个物理插口(例如,以太网、共轴或手机插口)或一或多个天线以连接到通信网络826。在实例中,网络接口装置820可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种无线地通信。在一些实例中,网络接口装置820可使用多种用户MIMO技术无线地通信。
其它注释和实例
实例1为一种方法,其包括:在多处理器、近存储器计算系统的存储器管理单元(MMU)处执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;确定虚拟地址在全局共享虚拟地址空间内;响应于确定虚拟地址在全局共享虚拟地址空间内:确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID;响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;及基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
在实例2中,实例1的标的物包含,其中近存储器计算系统包括使用至少一个开关连接的多个主机,多个主机包括经由本地通信总线耦合到主机的多个计算装置,多个计算装置各自包括一或多个处理器和一或多个存储器装置。
在实例3中,实例1到2的标的物包含,其中确定虚拟地址在全局共享虚拟地址空间内的操作包括确定虚拟地址在由全局共享区域数据结构的多个条目中的条目中的基地址和大小限定的存储器区内,多个条目中的每一条目描述不同全局虚拟存储器地址空间中的虚拟地址空间。
在实例4中,实例3的标的物包含,其中确定对应于虚拟地址的虚拟装置ID的操作包括将虚拟地址移位全局共享区域数据结构的多个条目中的条目中所指定的位数,且应用全局共享区域数据结构的多个条目中的条目中所指定的掩码以产生对应于虚拟地址的虚拟装置ID。
在实例5中,实例3到4的标的物包含,其中确定全局唯一范围ID的操作包括从全局共享区域数据结构的多个条目中的条目读取全局唯一范围ID。
在实例6中,实例1到5的标的物包含,其中确定对应于全局唯一范围ID的区域的基地址包括利用全局唯一范围ID作为确定全局范围信息表的条目的索引,条目包含基地址;且其中确定对应于全局唯一范围ID的区域的大小包括从条目读取大小。
在实例7中,实例1到6的标的物包含,其中使用目的地物理区段、目的地物理装置识别符和虚拟地址的部分来确定物理地址包括将目的地物理装置识别符与目的地物理区段移位区的大小,且对用掩码掩蔽的虚拟地址进行或运算,所述掩码被创建以掩蔽经移位目的地物理装置识别符和目的地物理区段的对应位位置。
在实例8中,实例1到7的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;确定第二虚拟地址不在全局共享虚拟地址空间内;及响应于确定第二虚拟地址不在全局共享虚拟地址空间内,使用转译后备缓冲器将第二虚拟地址转换为第二物理地址。
在实例9中,实例8的标的物包含,其中归因于转译后备缓冲器内缺乏全局共享虚拟地址空间的虚拟地址条目而增加转译后备缓冲器的命中百分比。
在实例10中,实例1到9的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;通过使第二虚拟地址与全局共享区域表的记录匹配而确定第二虚拟地址在全局共享虚拟地址空间内;响应于确定第二虚拟地址在全局共享虚拟地址空间内:基于全局共享区表的记录而确定对应于第二虚拟地址的第二虚拟装置ID;确定对应于第二虚拟地址的第二虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID;及响应于确定对应于第二虚拟地址的虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID,使用全局共享区域表的记录来确定第二虚拟地址的第二物理地址。
实例11为一种近存储器计算系统的计算装置,计算装置包括:存储器管理单元(MMU),其配置成执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;确定虚拟地址在全局共享虚拟地址空间内;响应于确定虚拟地址在全局共享虚拟地址空间内:确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID;响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;及基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
在实例12中,实例11的标的物包含,其中近存储器计算系统包括使用至少一个开关连接的多个主机,多个主机包括经由本地通信总线耦合到主机的多个计算装置,多个计算装置各自包括一或多个处理器和一或多个存储器装置。
在实例13中,实例11到12的标的物包含,其中确定虚拟地址在全局共享虚拟地址空间内的操作包括确定虚拟地址在由全局共享区域数据结构的多个条目中的条目中的基地址和大小限定的存储器区内,多个条目中的每一条目描述不同全局虚拟存储器地址空间中的虚拟地址空间。
在实例14中,实例13的标的物包含,其中确定对应于虚拟地址的虚拟装置ID的操作包括将虚拟地址移位全局共享区域数据结构的多个条目中的条目中所指定的位数,且应用全局共享区域数据结构的多个条目中的条目中所指定的掩码以产生对应于虚拟地址的虚拟装置ID。
在实例15中,实例13到14的标的物包含,其中确定全局唯一范围ID的操作包括从全局共享区域数据结构的多个条目中的条目读取全局唯一范围ID。
在实例16中,实例11到15的标的物包含,其中确定对应于全局唯一范围ID的区域的基地址包括利用全局唯一范围ID作为确定全局范围信息表的条目的索引,条目包含基地址;且其中确定对应于全局唯一范围ID的区域的大小包括从条目读取大小。
在实例17中,实例11到16的标的物包含,其中使用目的地物理区段、目的地物理装置识别符和虚拟地址的部分来确定物理地址包括将目的地物理装置识别符与目的地物理区段移位区的大小,且对用掩码掩蔽的虚拟地址进行或运算,所述掩码被创建以掩蔽经移位目的地物理装置识别符和目的地物理区段的对应位位置。
在实例18中,实例11到17的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;确定第二虚拟地址不在全局共享虚拟地址空间内;及响应于确定第二虚拟地址不在全局共享虚拟地址空间内,使用转译后备缓冲器将第二虚拟地址转换为第二物理地址。
在实例19中,实例18的标的物包含,其中归因于转译后备缓冲器内缺乏全局共享虚拟地址空间的虚拟地址条目而增加转译后备缓冲器的命中百分比。
在实例20中,实例11到19的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;通过使第二虚拟地址与全局共享区域表的记录匹配而确定第二虚拟地址在全局共享虚拟地址空间内;响应于确定第二虚拟地址在全局共享虚拟地址空间内:基于全局共享区表的记录而确定对应于第二虚拟地址的第二虚拟装置ID;确定对应于第二虚拟地址的第二虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID;及响应于确定对应于第二虚拟地址的虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID,使用全局共享区域表的记录来确定第二虚拟地址的第二物理地址。
实例21为一种非暂时性计算机可读媒体,其存储指令,所述指令在由近存储器计算系统的计算装置的存储器管理单元(MMU)执行时使计算装置执行包括以下的操作:从在近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;确定虚拟地址在全局共享虚拟地址空间内;响应于确定虚拟地址在全局共享虚拟地址空间内:确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID;响应于确定对应于虚拟地址的虚拟装置ID并不匹配对应于MMU的装置的本地虚拟装置ID:基于虚拟地址确定全局唯一范围ID;确定对应于全局唯一范围ID的区域的基地址和大小;使用基地址和虚拟装置ID确定目的地物理区段和目的地物理装置识别符;使用目的地物理区段、目的地物理装置识别符、大小和虚拟地址的一部分来建构物理地址;及基于物理地址路由对虚拟地址的请求,物理地址属于计算系统的单个全局物理地址空间的部分。
在实例22中,实例21的标的物包含,其中近存储器计算系统包括使用至少一个开关连接的多个主机,多个主机包括经由本地通信总线耦合到主机的多个计算装置,多个计算装置各自包括一或多个处理器和一或多个存储器装置。
在实例23中,实例21到22的标的物包含,其中确定虚拟地址在全局共享虚拟地址空间内的操作包括确定虚拟地址在由全局共享区域数据结构的多个条目中的条目中的基地址和大小限定的存储器区内,多个条目中的每一条目描述不同全局虚拟存储器地址空间中的虚拟地址空间。
在实例24中,实例23的标的物包含,其中确定对应于虚拟地址的虚拟装置ID的操作包括将虚拟地址移位全局共享区域数据结构的多个条目中的条目中所指定的位数,且应用全局共享区域数据结构的多个条目中的条目中所指定的掩码以产生对应于虚拟地址的虚拟装置ID。
在实例25中,实例23到24的标的物包含,其中确定全局唯一范围ID的操作包括从全局共享区域数据结构的多个条目中的条目读取全局唯一范围ID。
在实例26中,实例21到25的标的物包含,其中确定对应于全局唯一范围ID的区域的基地址包括利用全局唯一范围ID作为确定全局范围信息表的条目的索引,条目包含基地址;且其中确定对应于全局唯一范围ID的区域的大小包括从条目读取大小。
在实例27中,实例21到26的标的物包含,其中使用目的地物理区段、目的地物理装置识别符和虚拟地址的部分来确定物理地址包括将目的地物理装置识别符与目的地物理区段移位区的大小,且对用掩码掩蔽的虚拟地址进行或运算,所述掩码被创建以掩蔽经移位目的地物理装置识别符和目的地物理区段的对应位位置。
在实例28中,实例21到27的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;确定第二虚拟地址不在全局共享虚拟地址空间内;及响应于确定第二虚拟地址不在全局共享虚拟地址空间内,使用转译后备缓冲器将第二虚拟地址转换为第二物理地址。
在实例29中,实例28的标的物包含,其中归因于转译后备缓冲器内缺乏全局共享虚拟地址空间的虚拟地址条目而增加转译后备缓冲器的命中百分比。
在实例30中,实例21到29的标的物包含,其中所述操作进一步包括:从在近存储器计算系统的处理器上执行的进程接收对第二虚拟地址的第二请求;通过使第二虚拟地址与全局共享区域表的记录匹配而确定第二虚拟地址在全局共享虚拟地址空间内;响应于确定第二虚拟地址在全局共享虚拟地址空间内:基于全局共享区表的记录而确定对应于第二虚拟地址的第二虚拟装置ID;确定对应于第二虚拟地址的第二虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID;及响应于确定对应于第二虚拟地址的虚拟装置ID匹配对应于MMU的装置的本地虚拟装置ID,使用全局共享区域表的记录来确定第二虚拟地址的第二物理地址。
实例31为至少一个机器可读媒体,其包含指令,所述指令在由处理电路系统执行时使处理电路系统执行操作以实施实例1到30中的任一个。
实例32为一种设备,其包括用以实施实例1到30中的任一个的构件。
实例33为一种系统,其用以实施实例1到30中的任一个。
实例34为一种方法,其用以实施实例1到30中的任一个。

Claims (20)

1.一种方法,其包括:
在多处理器、近存储器计算系统的存储器管理单元MMU处执行包括以下的操作:
从在所述近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;
确定所述虚拟地址在全局共享虚拟地址空间内;
响应于确定所述虚拟地址在所述全局共享虚拟地址空间内:
确定对应于所述虚拟地址的虚拟装置ID并不匹配对应于所述MMU的装置的本地虚拟装置ID;
响应于确定对应于所述虚拟地址的所述虚拟装置ID并不匹配对应于所述MMU的所述装置的所述本地虚拟装置ID:
基于所述虚拟地址确定全局唯一范围ID;
确定对应于所述全局唯一范围ID的区域的基地址和大小;
使用所述基地址和所述虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;
使用所述目的地物理区段、所述目的地物理装置识别符、大小和所述虚拟地址的一部分来建构物理地址;及
基于所述物理地址路由对所述虚拟地址的所述请求,所述物理地址属于所述计算系统的单个全局物理地址空间的部分。
2.根据权利要求1所述的方法,其中所述近存储器计算系统包括使用至少一个开关连接的多个主机,所述多个主机包括经由本地通信总线耦合到所述主机的多个计算装置,所述多个计算装置各自包括一或多个处理器和一或多个存储器装置。
3.根据权利要求1所述的方法,其中确定所述虚拟地址在所述全局共享虚拟地址空间内的所述操作包括确定所述虚拟地址在由全局共享区域数据结构的多个条目中的条目中的基地址和大小限定的存储器区域内,所述多个条目中的每一条目描述不同全局虚拟存储器地址空间的虚拟地址空间。
4.根据权利要求3所述的方法,其中确定对应于所述虚拟地址的所述虚拟装置ID的所述操作包括将所述虚拟地址移位所述全局共享区域数据结构的所述多个条目中的所述条目中所指定的位数,且应用所述全局共享区域数据结构的所述多个条目中的所述条目中所指定的掩码以产生对应于所述虚拟地址的所述虚拟装置ID。
5.根据权利要求3所述的方法,其中确定所述全局唯一范围ID的所述操作包括从所述全局共享区域数据结构的所述多个条目中的所述条目读取所述全局唯一范围ID。
6.一种近存储器计算系统的计算装置,所述计算装置包括:
存储器管理单元MMU,其配置成执行包括以下的操作:
从在所述近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;
确定所述虚拟地址在全局共享虚拟地址空间内;
响应于确定所述虚拟地址在所述全局共享虚拟地址空间内:
确定对应于所述虚拟地址的虚拟装置ID并不匹配对应于所述MMU的装置的本地虚拟装置ID;
响应于确定对应于所述虚拟地址的所述虚拟装置ID并不匹配对应于所述MMU的所述装置的所述本地虚拟装置ID:
基于所述虚拟地址确定全局唯一范围ID;
确定对应于所述全局唯一范围ID的区域的基地址和大小;
使用所述基地址和所述虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;
使用所述目的地物理区段、所述目的地物理装置识别符、大小和所述虚拟地址的一部分来建构物理地址;及
基于所述物理地址路由对所述虚拟地址的所述请求,所述物理地址属于所述计算系统的单个全局物理地址空间的部分。
7.根据权利要求6所述的计算装置,其中所述近存储器计算系统包括使用至少一个开关连接的多个主机,所述多个主机包括经由本地通信总线耦合到所述主机的多个计算装置,所述多个计算装置各自包括一或多个处理器和一或多个存储器装置。
8.根据权利要求6所述的计算装置,其中确定所述虚拟地址在所述全局共享虚拟地址空间内的所述操作包括确定所述虚拟地址在由全局共享区域数据结构的多个条目中的条目中的基地址和大小限定的存储器区域内,所述多个条目中的每一条目描述不同全局虚拟存储器地址空间的虚拟地址空间。
9.根据权利要求8所述的计算装置,其中确定对应于所述虚拟地址的所述虚拟装置ID的所述操作包括将所述虚拟地址移位所述全局共享区域数据结构的所述多个条目中的所述条目中所指定的位数,且应用所述全局共享区域数据结构的所述多个条目中的所述条目中所指定的掩码以产生对应于所述虚拟地址的所述虚拟装置ID。
10.根据权利要求8所述的计算装置,其中确定所述全局唯一范围ID的所述操作包括从所述全局共享区域数据结构的所述多个条目中的所述条目读取所述全局唯一范围ID。
11.根据权利要求6所述的计算装置,其中确定对应于所述全局唯一范围ID的所述区域的所述基地址包括利用所述全局唯一范围ID作为确定全局范围信息表的条目的索引,所述条目包含所述基地址;且
其中确定对应于所述全局唯一范围ID的所述区域的大小包括从所述条目读取所述大小。
12.根据权利要求6所述的计算装置,其中使用所述目的地物理区段、所述目的地物理装置识别符和所述虚拟地址的所述部分来确定所述物理地址包括将所述目的地物理装置识别符和所述目的地物理区段移位所述区域的所述大小,且对用掩码掩蔽的所述虚拟地址进行或运算,所述掩码被创建以掩蔽所述经移位目的地物理装置识别符和目的地物理区段的对应位位置。
13.根据权利要求6所述的计算装置,其中所述操作进一步包括:
从在所述近存储器计算系统的所述处理器上执行的所述进程接收对第二虚拟地址的第二请求;
确定所述第二虚拟地址不在所述全局共享虚拟地址空间内;及
响应于确定所述第二虚拟地址不在所述全局共享虚拟地址空间内,使用转译后备缓冲器将所述第二虚拟地址转换为第二物理地址。
14.根据权利要求13所述的计算装置,其中归因于所述转译后备缓冲器内缺乏所述全局共享虚拟地址空间的虚拟地址条目而增加所述转译后备缓冲器的命中百分比。
15.根据权利要求6所述的计算装置,其中所述操作进一步包括:
从在所述近存储器计算系统的所述处理器上执行的所述进程接收对第二虚拟地址的第二请求;
通过将所述第二虚拟地址与全局共享区域表的记录匹配而确定所述第二虚拟地址在所述全局共享虚拟地址空间内;
响应于确定所述第二虚拟地址在所述全局共享虚拟地址空间内:
基于所述全局共享区域表的所述记录而确定对应于所述第二虚拟地址的第二虚拟装置ID;
确定对应于所述第二虚拟地址的所述第二虚拟装置ID匹配对应于所述MMU的所述装置的所述本地虚拟装置ID;及
响应于确定对应于所述第二虚拟地址的所述虚拟装置ID匹配对应于所述MMU的装置的所述本地虚拟装置ID,使用所述全局共享区域表的所述记录来确定所述第二虚拟地址的第二物理地址。
16.一种非暂时性计算机可读媒体,其存储指令,所述指令在由近存储器计算系统的计算装置的存储器管理单元MMU执行时使所述计算装置执行包括以下的操作:
从在所述近存储器计算系统的处理器上执行的进程接收对虚拟地址的请求;
确定所述虚拟地址在全局共享虚拟地址空间内;
响应于确定所述虚拟地址在所述全局共享虚拟地址空间内:
确定对应于所述虚拟地址的虚拟装置ID并不匹配对应于所述MMU的装置的本地虚拟装置ID;
响应于确定对应于所述虚拟地址的所述虚拟装置ID并不匹配对应于所述MMU的所述装置的所述本地虚拟装置ID:
基于所述虚拟地址确定全局唯一范围ID;
确定对应于所述全局唯一范围ID的区域的基地址和大小;
使用所述基地址和所述虚拟装置ID来确定目的地物理区段和目的地物理装置识别符;
使用所述目的地物理区段、所述目的地物理装置识别符、大小和所述虚拟地址的一部分来建构物理地址;及
基于所述物理地址路由对所述虚拟地址的所述请求,所述物理地址属于所述计算系统的单个全局物理地址空间的部分。
17.根据权利要求16所述的非暂时性计算机可读媒体,其中确定对应于所述全局唯一范围ID的所述区域的所述基地址包括利用所述全局唯一范围ID作为确定全局范围信息表的条目的索引,所述条目包含所述基地址;且
其中确定对应于所述全局唯一范围ID的所述区的大小包括从所述条目读取所述大小。
18.根据权利要求16所述的非暂时性计算机可读媒体,其中使用所述目的地物理区段、所述目的地物理装置识别符和所述虚拟地址的所述部分来确定所述物理地址包括将所述目的地物理装置识别符和所述目的地物理区段移位所述区域的所述大小,且对用掩码掩蔽的所述虚拟地址进行或运算,所述掩码被创建以掩蔽所述经移位目的地物理装置识别符和目的地物理区段的对应位位置。
19.根据权利要求16所述的非暂时性计算机可读媒体,其中所述操作进一步包括:
从在所述近存储器计算系统的所述处理器上执行的所述进程接收对第二虚拟地址的第二请求;
确定所述第二虚拟地址不在所述全局共享虚拟地址空间内;及
响应于确定所述第二虚拟地址不在所述全局共享虚拟地址空间内,使用转译后备缓冲器将所述第二虚拟地址转换为第二物理地址。
20.根据权利要求19所述的非暂时性计算机可读媒体,其中归因于所述转译后备缓冲器内缺乏所述全局共享虚拟地址空间的虚拟地址条目而增加所述转译后备缓冲器的命中百分比。
CN202310647580.2A 2022-06-02 2023-06-02 跨操作系统域的全局虚拟地址空间 Pending CN117171067A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US63/348,079 2022-06-02
US17/900,400 US20230393970A1 (en) 2022-06-02 2022-08-31 Global virtual address space across operating system domains
US17/900,400 2022-08-31

Publications (1)

Publication Number Publication Date
CN117171067A true CN117171067A (zh) 2023-12-05

Family

ID=88935788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310647580.2A Pending CN117171067A (zh) 2022-06-02 2023-06-02 跨操作系统域的全局虚拟地址空间

Country Status (1)

Country Link
CN (1) CN117171067A (zh)

Similar Documents

Publication Publication Date Title
EP3748510B1 (en) Network interface for data transport in heterogeneous computing environments
US20210105207A1 (en) Direct memory access (dma) engine with network interface capabilities
US12086446B2 (en) Memory and storage pool interfaces
CN106462524B (zh) 使用混合存储器立方体链路的互连系统及方法
US10019276B2 (en) Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
US11422944B2 (en) Address translation technologies
US20210200667A1 (en) Memory thin provisioning using memory pools
US20220050722A1 (en) Memory pool management
US20220004488A1 (en) Software drive dynamic memory allocation and address mapping for disaggregated memory pool
US12039201B2 (en) Control parameter address virtualization
US20240069795A1 (en) Access request reordering across a multiple-channel interface for memory-based communication queues
KR20230041593A (ko) 프로그래밍가능한 인터리브 입도를 갖는 cxl 타입-2 디바이스들을 위한 확장가능한 주소 디코딩 체계
TWI785320B (zh) 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法
US20190018790A1 (en) Method and apparatus for two-layer copy-on-write
EP2979193B1 (en) Shared memory system
US20190042456A1 (en) Multibank cache with dynamic cache virtualization
US11989135B2 (en) Programmable address range engine for larger region sizes
US12008243B2 (en) Reducing index update messages for memory-based communication queues
US20230393970A1 (en) Global virtual address space across operating system domains
CN117171067A (zh) 跨操作系统域的全局虚拟地址空间
WO2022039863A1 (en) Adaptive routing for pooled and tiered data architectures
US20240069805A1 (en) Access request reordering for memory-based communication queues
CN114258534B (zh) 阶层式存储器系统
US12130754B2 (en) Adaptive routing for pooled and tiered data architectures
US12111758B2 (en) Synchronized request handling at a memory device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication