CN113678104A - 设备内符号数据移动系统 - Google Patents
设备内符号数据移动系统 Download PDFInfo
- Publication number
- CN113678104A CN113678104A CN202080027910.2A CN202080027910A CN113678104A CN 113678104 A CN113678104 A CN 113678104A CN 202080027910 A CN202080027910 A CN 202080027910A CN 113678104 A CN113678104 A CN 113678104A
- Authority
- CN
- China
- Prior art keywords
- thread
- memory system
- memory
- data
- associating
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0669—Configuration or reconfiguration with decentralised address assignment
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Traffic Control Systems (AREA)
Abstract
一种设备内符号数据移动系统具有机壳,该机壳包括被配置为提供第一线程和第二线程的处理系统。所述机壳内的数据移动器子系统耦合至所述处理系统。在由所述第一线程传输的通信中,所述数据移动器子系统识别向所述第二线程传送数据的请求,所述数据在存储器组构管理数据库中被存储在存储器系统的与所述第一线程相关联的第一部分中。然后,所述数据移动器子系统修改所述存储器组构管理数据库中的符号引用信息,以便使所述存储器系统的所述第一部分与所述第一线程断开关联,并使所述存储器系统的所述第一部分与所述第二线程相关联,这允许所述第二线程使用请求/响应操作来引用所述数据。
Description
背景技术
本公开总体上涉及信息处理系统,并且更具体地,涉及通过符号引用信息修改技术在信息处理系统内的数据移动。
随着信息的价值和使用不断增加,个人和企业寻求额外的处理和存储信息的方法。用户可用的一个选项是信息处理系统。信息处理系统通常为商业、个人或其他目的处理、编译、存储和/或传递信息或数据,从而使用户能够利用信息的价值。因为技术和信息处理需求并要求在不同的用户或应用程序之间变化,所以信息处理系统在处理什么信息,如何处理信息,处理、储存或传递多少信息,以及处理、储存或传递信息的速度和效率方面也可能有所不同。信息处理系统的变化使得信息处理系统可以是通用的,也可以被配置用于特定用户或特定用途,如金融交易处理、机票预订、企业数据存储或全球通信。另外,信息处理系统可以包括各种硬件和软件部件,这些部件可以被配置为处理、存储和传递信息,并且可以包括一个或多个计算机系统、数据存储系统和网络系统。
信息处理系统,例如服务器设备,通常操作以提供数据的移动。例如,服务器设备中所包括的处理器系统可以操作以提供多个虚拟机和/或其他应用程序,并且这些虚拟机可以包括彼此传送数据的线程。在由服务器设备提供的虚拟机上所包括的线程之间的数据传送相对较慢,消耗存储器带宽,和/或引入本领域已知的其他数据传送效率低下。
另外,随着网络系统和存储系统的速度赶上处理系统/存储器系统对,建立在处理系统/存储器系统对为“快”而网络系统和存储系统为“慢”的范式上的传统处理系统/存储器系统组合正在被重新思考。例如,已经引入了诸如Gen-Z存储器组构之类的存储器组构,以通过统一通信路径和简化处理系统/存储器系统通信所需的软件来消除瓶颈并提高相对于传统系统的效率。正如掌握了本公开的本领域技术人员所理解的那样,此类存储器组构通过将处理系统/计算功能与存储器系统/介质功能解耦合来将处理系统/存储器系统的可按字节寻址的加载/存储模型扩展到整个系统,从而允许处理系统和存储器系统充当使用相同语言并通过简化的、高性能的、低延时的通信路径进行通信的对等体,这些通信路径不会产生与传统系统相关联的转换惩罚和软件开销。
然而,本公开的发明人发现,在由服务器设备提供的虚拟机上所包括的线程之间并通过此类存储器组构进行的数据传送仍然存在效率低下的问题。例如,从由服务器设备提供的第一虚拟机上所包括的第一线程到由该服务器设备提供的第二虚拟机中所包括的第二线程的数据传送可以包括第一线程生成存储器加载指令并将所述存储器加载指令传输给与提供第一虚拟机的处理系统相关联的存储器组构请求者。响应于接收到该存储器加载指令,存储器组构请求者然后将向与存储器系统相关联的存储器组构响应者传输存储器组构请求。然后,存储器组构响应者将从存储器系统中的存储器设备中检索在存储器组构请求中所请求的数据,并将该数据作为存储器组构响应中的有效载荷传输给存储器组构请求者。然后,存储器组构请求者将把存储器组构响应中的数据加载到由提供第一虚拟机的处理系统所利用的本地存储器系统中,这允许第一线程将该数据(例如,通过复制引擎)传送到第二线程(例如,通过将该数据复制到由提供第二虚拟机的处理系统所利用的本地存储器系统)。因此,在由同一服务器设备提供的虚拟机上所包括的线程之间并通过存储器组构进行的数据移动需要若干读取、写入、复制和/或其他数据传送操作,而本公开的发明人已经发现这些操作是不必要的。
因此,期望能提供一种改进的设备内数据移动系统。
发明内容
根据一个实施例,一种信息处理系统(IHS)包括处理系统;以及存储器系统,所述存储器系统耦合至所述处理系统并且包括指令,所述指令在由所述处理系统执行时,使所述处理系统提供数据移动器引擎,所述数据移动器引擎被配置为:在由包括在机壳内的至少一个处理系统提供的第一线程所传输的通信中识别向由包括在所述机壳内的所述至少一个处理系统提供的第二线程传送数据的请求,其中所述数据在存储器组构管理数据库中被存储在存储器系统的与所述第一线程相关联的第一部分中;以及在所述存储器组构管理数据库中修改符号引用信息,以便使所述存储器系统的所述第一部分与所述第一线程断开关联,并使所述存储器系统的所述第一部分与所述第二线程相关联,其中使所述存储器系统的所述第一部分与所述第二线程相关联允许所述第二线程使用请求/响应操作来引用所述数据。
附图说明
图1是示出了信息处理系统(IHS)的一个实施例的示意图。
图2是示出了网络系统的一个实施例的示意图。
图3是示出了可以包括在图2的网络化系统中并且可以提供本公开的设备内符号数据移动系统的服务器设备的一个实施例的示意图。
图4是示出了可以包括在图2的网络系统中的存储器系统的一个实施例的示意图。
图5是示出了用于提供设备内符号数据移动的方法的一个实施例的流程图。
图6A是示出了图3的服务器设备在图5的方法期间操作的一个实施例的示意图。
图6B是示出了图4的存储器系统在图5的方法期间操作的一个实施例的示意图。
图7是示出了图3的服务器设备在图5的方法期间操作的一个实施例的示意图。
图8是示出了图3的服务器设备在图5的方法期间操作的一个实施例的示意图。
图9是示出了图4的存储器系统在图5的方法期间操作的一个实施例的示意图。
图10A是示出了图3的服务器设备在图5的方法期间操作的一个实施例的示意图。示意图。
图10B是示出了图4的存储器系统在图5的方法期间操作的一个实施例的示意图。
图10C是示出了图4的存储器系统在图5的方法期间操作的一个实施例的示意图。
图10D是示出了图3的服务器设备在图5的方法期间操作的一个实施例的示意图。示意图。
具体实施方式
出于本公开的目的,信息处理系统可以包括可操作用于出于商业、科学、控制或其他目的而运算、计算、确定、分类、处置、传输、接收、检索、发起、切换、存储、显示、传递、显现、检测、记录、重现、处理或利用任何形式的信息、情报或数据的任何工具或工具集合。例如,信息处理系统可以是个人计算机(例如台式计算机或膝上型计算机)、平板计算机、移动设备(例如个人数字助理(PDA)或智能手机)、服务器(例如刀片服务器或机架式服务器)、网络存储设备或任何其他合适的设备,并且可以在大小、形状、性能、功能和价格上有所不同。信息处理系统可以包括随机存取存储器(RAM)、一个或多个处理资源(如中央处理单元(CPU)或硬件或软件控制逻辑、ROM和/或其他类型的非易失性存储器。信息处理系统的附加部件可以包括一个或多个磁盘驱动器、一个或多个与外部设备通信的网络端口、以及各种输入和输出(I/O)设备,如键盘、鼠标、触摸屏和/或视频显示器。信息处理系统还可以包括可操作用于在各种硬件部件之间传输通信的一条或多条总线。
在一个实施例中,图1的IHS 100包括与总线104连接的处理器102。总线104充当处理器102与IHS 100的其他部件之间的连接。输入设备106耦合至处理器102,以向处理器102提供输入。输入设备的示例可以包括键盘、触摸屏、指向设备(如鼠标、轨迹球和触控板)和/或本领域内已知的各种其他输入设备。程序和数据存储在大容量存储设备108上,该存储设备耦合至处理器102。大容量存储设备的示例可以包括硬盘、光盘、磁光盘、固态存储设备和/或本领域内已知的各种其他大容量存储设备。IHS 100还包括显示器110,该显示器通过视频控制器112耦合至处理器102。系统存储器114耦合至处理器102,以便为处理器提供快速存储,从而方便处理器102执行计算机程序。系统存储器的示例可以包括随机存取存储器(RAM)设备(如动态RAM(DRAM)、同步DRAM(SDRAM))、固态存储器设备和/或本领域内已知的各种其他存储器设备。在一个实施例中,机壳116容纳IHS 100的部分或全部部件。应理解,在上述部件与处理器102之间可以部署其他总线和中间电路,以促进这些部件与处理器102之间的互连。
现在参考图2,其示出了网络系统200的一个实施例。在所示实施例中,网络系统200包括多个服务器设备202a、202b直至202c。在一个实施例中,任何或全部的服务器设备202a-c可以由上文参考图1讨论的IHS 100提供,和/或可以包括IHS 100的一些或全部部件。然而,虽然作为服务器设备进行了示出和讨论,但是掌握了本公开的本领域技术人员将认识到,网络系统200中提供的服务器设备202a-c可以由可被配置为类似于下文讨论的那样进行操作的任何设备提供。虽然下文只示出和讨论了三个服务器设备202a-c,但是掌握了本公开的本领域技术人员将认识到,在网络系统200(例如,数据中心)中可以(并且通常将)提供更多的服务器设备,同时保持在本公开的范围内。
在所示实施例中,服务器设备202a-c各自耦合至网络204,该网络包括在网络系统200中并且可以由例如局域网(LAN)、互联网和/或对掌握了本公开的本领域技术人员而言显而易见的任何其他网络(或网络的组合)提供。此外,网络系统200的所示实施例包括通过网络204耦合至服务器设备202a-c的存储器系统206。在一个实施例中,存储器系统206可以由上文参考图1讨论的IHS 100提供,和/或可以包括IHS 100的一些或全部部件。在具体示例中,存储器系统206可以由一个或多个单独的服务器设备提供,作为服务器设备202、204和206中的一个或多个的逻辑部分,和/或以对掌握了本公开的本领域技术人员而言显而易见的各种其他方式提供。在下文讨论的实施例中,存储器系统206提供了连接到网络的存储器组构,该存储器组构可由任何一个服务器设备202a-c通过网络204加以利用。
例如,连接到网络的存储器组构可以是由Gen-Z联盟创建并商业化的Gen-Z存储器组构,并且掌握了本公开的本领域技术人员将认识到,Gen-Z存储器组构通过将服务器设备202a-c中的处理系统/计算功能与存储器系统206中的存储器系统/介质功能解耦合来将处理系统/存储器系统的可按字节寻址的加载/存储模型扩展到整个网络系统200,从而允许处理系统和存储器系统充当使用相同语言并通过简化的、高性能的、低延时的通信路径进行通信的对等体,这些通信路径不会产生与传统系统相关联的转换惩罚和软件开销,因此通过统一通信路径和简化处理系统/存储器系统通信所需的软件而消除瓶颈并提高效率。然而,掌握了本公开的本领域技术人员将认识到,其他类型的存储器组构也将属于本公开的范围。此外,虽然服务器设备202a-c被示出为各自通过网络204耦合至存储器系统206,但是掌握了本公开的本领域技术人员将认识到,在其他实施例中,存储器系统206可以被提供在服务器设备中,同时仍然实现下文描述的功能,同时也保持在本公开的范围内。因此,虽然已经示出和描述了具体的网络系统200,但是掌握了本公开的本领域技术人员将认识到,本公开的设备内符号数据移动系统可以利用各种其他部件和部件配置,同时也保持在本公开的范围内。
现在参考图3,示出了服务器设备300的一个实施例,该服务器设备可以提供上文参考图2讨论的任何服务器设备202a-c。因此,服务器设备300可以由上文参考图1讨论的IHS 100提供,和/或可以包括IHS 100的一些或全部部件。此外,虽然作为服务器设备300进行了示出和讨论,但是掌握了本公开的本领域技术人员将认识到,下文讨论的服务器设备300的功能可以由被配置为类似于下文讨论的那样进行操作的任何设备提供。在所示实施例中,服务器设备300包括容纳服务器设备300的部件的机壳302,下文只对其中的一些部件进行讨论。
例如,如图3所示,机壳302可以容纳多个处理系统304、306直至308,其中每个处理系统304、306和308包括各自的存储器组构逻辑子系统304a、306a和308a。特别地,处理系统304、306和308可以由中央处理单元(CPU)设备、片上系统(SOC)设备和/或其他不包括介质控制器设备(如下文所述,其可在由处理系统利用的存储器组构存储器系统中提供)的处理系统提供。因此,分别包括在处理系统304、306和308中的存储器组构逻辑子系统304a、306a和308a可以实现下文讨论的存储器组构功能中的至少一些。在一个具体示例中,存储器组构是Gen-Z存储器组构,并且存储器组构逻辑子系统操作以提供用于利用Gen-Z存储器组构的Gen-Z逻辑,但是掌握了本公开的本领域技术人员将认识到,本公开的教导可以利用其他存储器组构和存储器组构逻辑子系统,同时保持在其范围内。虽然没有示出,但是处理系统304、306和308中的每一个可以耦合至一个或多个本地存储器系统,该一个或多个本地存储器系统被提供在服务器设备300中并且包括指令,这些指令在由处理系统304、306和308执行时,允许处理系统304、306和308执行下文讨论的任何功能(例如,提供虚拟机、应用程序、线程、数据移动器引擎等)。
在一些实施例中,机壳302可以容纳数据移动器处理系统(并未示出,但是其可以包括上文参考图1讨论的处理器102)以及数据移动器存储器系统(并未示出,但是其可以包括上文参考图1讨论的存储器114),该数据移动器存储器系统耦合至数据移动器处理系统并且包括指令,这些指令在由数据移动器处理系统执行时,使数据移动器处理系统提供数据移动器引擎310,该数据移动器引擎被配置为执行下文讨论的数据移动器引擎和/或服务器设备的功能。在所示实施例中,数据移动器引擎310被示出为与处理系统304、306和308分开,因此,可以由耦合至这些处理系统304、306和308的单独数据移动器硬件和软件(例如,提供在外围部件互连高速(PCIe)卡上的现场可编程门阵列(FPGA)和/或本领域内已知的其他子系统)提供。然而,在其他实施例中,数据移动器引擎310可以与处理系统304、306和308中的任何一个或每一个集成,可以包括在其中,和/或以其他方式成为其一部分。因此,在这些实施例中,数据移动器引擎310可以由服务器设备300中的本地存储器系统上的指令提供,该本地存储器系统被处理系统304、306和308中的任何或每一个利用,被作为处理系统304、306和308中的任何或每一个的一部分的FPGA提供,和/或被以对掌握了本公开的本领域技术人员而言显而易见的各种方式提供。
在一些实施例中,除了下文讨论的设备内符号数据移动操作之外,数据移动器引擎310还可被配置为针对处理系统304、306和308(例如,向其本地存储器系统)执行读取、写入、复制和/或其他数据移动操作,以便例如减轻处理系统304、306和308不得不使用处理周期来执行这些操作的问题。然而,掌握了本公开的本领域技术人员将认识到,下文讨论的数据移动器引擎310的功能可以由其本身和/或与其他功能一起提供,同时也保持在本公开的范围内。虽然已经描述了数据移动器引擎实现方式和功能的几个示例,但是掌握了本公开的本领域技术人员将认识到,数据移动器引擎310的各种不同功能可以以各种方式实现,而这些方式也将属于本公开的范围。
在所示实施例中,机壳302容纳存储器组构管理子系统312,该存储器组构管理子系统被配置为向服务器设备300提供存储器组构管理操作。例如,当存储器组构是上述的Gen-Z存储器组构时,存储器组构管理子系统312可以包括Gen-Z存储器管理单元(Gen-ZZMMU),在下文提供的示例中,该Gen-Z存储器管理单元作为向处理系统304、306和308提供对Gen-Z存储器组构的访问的Gen-ZZMMU请求者进行操作。然而,掌握了本公开的本领域技术人员将认识到,本公开的教导可以利用用于其他存储器组构的其他存储器组构管理子系统,同时也保持在其范围内。
机壳302还可以容纳存储系统(并未示出,但是其可以包括上文参考图1讨论的存储108),该存储系统耦合至数据移动器引擎310(例如,通过存储系统与数据移动器处理系统之间的耦合)并且耦合至存储器组构管理子系统312,并且包括存储器组构管理数据库314,该存储器组构管理数据库被配置为存储由下文讨论的数据移动器引擎310和/或存储器组构管理子系统312利用的任何信息(例如,存储器组构引用指针、存储器组构页所有权信息等)。虽然已经示出了具体的服务器设备300,但是掌握了本公开的本领域技术人员将认识到,服务器设备(或根据本公开的教导以类似于下文针对服务器设备300所描述的方式操作的其他设备)可以包括各种部件和/或部件配置,以用于提供传统的服务器设备功能以及下文讨论的功能,同时也保持在本公开的范围内。
现在参考图4,示出了存储器系统400的一个实施例,其可以提供上文参考图2讨论的存储器系统206。因此,该存储器系统可由上文参考图1讨论的IHS 100提供,和/或可以包括IHS 100的一些或全部部件,并且在具体示例中可以由一个或多个单独的服务器设备、一个或多个服务器设备202、204和206提供,和/或以对掌握了本公开的本领域技术人员而言显而易见的各种其他方式提供。此外,虽然作为存储器系统进行了示出和讨论,但是掌握了本公开的本领域技术人员将认识到,下文讨论的存储器系统的功能可以由被配置为类似于下文讨论的那样进行操作的任何设备提供。在所示实施例中,存储器系统400包括容纳存储器系统400的部件的机壳402,下文只对其中的一些部件进行讨论。
例如,机壳402可以容纳一个或多个存储器设备404,这些设备可以由动态随机存取存储器(DRAM)设备、存储类存储器(SCM)设备、固态驱动器(SSD)设备阵列和/或对掌握了本公开的本领域技术人员而言显而易见的任何其他存储器设备来提供。在所示实施例中,机壳402容纳了耦合至存储器设备404的介质控制器设备406。虽然被示出为耦合至一个或多个存储器设备404的单个介质控制器设备406,但是掌握了本公开的本领域技术人员将认识到,可以为存储器设备404提供多个介质控制器设备,同时也保持在本公开的范围内。例如,可以为每种存储器设备技术提供单独的介质控制器设备(例如,可以为DRAM设备提供第一介质控制器设备,可以为SCM设备提供第二介质控制器设备,等等)。然而,虽然已经讨论了存储器设备和介质控制器设备的几个具体示例,但是掌握了本公开的本领域技术人员将认识到,各种各样的存储器设备和/或介质控制器设备部件和/或配置也将属于本公开的范围。
在所示实施例中,机壳402容纳了存储器组构管理子系统408,该存储器组构管理子系统被配置为向存储器系统400提供存储器组构管理操作。例如,当存储器组构是如上文讨论的Gen-Z存储器组构时,存储器组构管理子系统408可以包括Gen-Z存储器管理单元(Gen-Z ZMMU),在下文提供的示例中,该Gen-Z存储器管理单元作为Gen-Z ZMMU响应者进行操作,该Gen-Z ZMMU响应者与向处理系统304、306和308提供对Gen-Z存储器组构的访问的Gen-Z ZMMU请求者一起进行操作。然而,掌握了本公开的本领域技术人员将认识到,本公开的教导可以利用用于其他存储器组构的其他存储器组构管理子系统,同时也保持在其范围内。虽然已经示出了具体的存储器系统400,但是掌握了本公开的本领域技术人员将认识到,存储器系统(或根据本公开的教导以类似于下文针对存储器系统400所描述的方式操作的其他系统)可以包括各种部件和/或部件配置,以用于提供传统的存储器系统功能以及下文讨论的功能,同时也保持在本公开的范围之内。
现在参考图5,示出了用于提供设备内符号数据移动的方法的一个实施例。如下所述,本公开的系统和方法提供了数据“传送”,同时避免了需要执行读取、写入、复制和/或其他传统的数据传送操作,这些数据传送操作通过在请求传送该数据的线程与请求将该数据传送至的线程之间改变存储器组构中存储器系统的各部分的分配来实际在存储器组构地址空间之间移动数据。例如,由服务器设备中的处理系统提供的第一虚拟机中所包括的第一线程可以请求将数据传送到由该服务器设备中的处理系统提供的第二虚拟机中所包括的第二线程,并且数据移动器引擎(例如,包括在提供第一线程的处理系统中,包括在耦合至提供第一线程的处理系统的硬件/软件中,等等)可以识别该传送数据的请求。作为响应,数据移动器引擎修改数据库中的符号引用信息,以便使存储器组构存储器系统的第一部分与第一线程断开关联,并使存储器组构存储器系统的第一部分与第二线程相关联,这允许第二线程使用请求/响应操作在存储器组构存储器系统中引用该数据。因此,提供了更高效的设备内的基于存储器组构的数据传送,其消除了执行实际在存储器组构地址空间之间移动数据的传统数据传送操作的需要,同时通过修改符号引用信息来提供这种数据移动的效果,以便重新分配存储器组构的各部分。
方法500开始于框502,在该框中,各个虚拟机中所包括的线程被分配给存储器组构中存储器系统的相应部分。在一个实施例中,在框502处,任何或全部处理系统304、306和308可以操作以提供虚拟机或其他应用程序(例如,通过执行它们所连接至的本地存储器系统上的指令),并且正如掌握了本公开的本领域技术人员所理解的那样,那些虚拟机/应用程序可以包括线程或被配置为类似于下文讨论的那样利用存储器组构存储器系统的各部分的其他虚拟机/应用程序部件。参考图6A,并且出于下文所提供的示例的目的而言,处理系统304被示出为提供包括线程600a的虚拟机(VM)600(例如,通过执行本地存储器系统上所包括的指令),并且处理系统306被示出为提供包括线程602a的虚拟机(VM)602(例如,通过执行本地存储器系统上所包括的指令)。然而,虽然包括相应线程的两个虚拟机被示出为由不同的处理系统提供,但是掌握了本公开的本领域技术人员将认识到,那些虚拟机及其线程可以在同一处理系统上提供,同时也保持在本公开的范围内。
在一个实施例中,在框502处,任何或全部的虚拟机、应用程序、线程和/或其他虚拟机/应用程序部件可以被分配以存储器组构中存储器系统的各部分。例如,服务器设备300中的存储器组构管理子系统312可以通过例如与存储器系统206/400中存储器组构管理子系统408通信来操作,以使介质控制器设备406向线程600a和602a提供对存储器设备404中所包括的存储器系统地址空间的分配,从而将存储器系统206/400的不同部分分配给线程600a和602a。
在一个具体示例中,Gen-Z ZMMU可以为存储器组构中各个页面提供Gen-Z孔,这些Gen-Z孔基本上作为存储器组构的页面目录进行操作,该目录由存储器组构管理器管理/编程,并使用Gen-Z孔、特定的存储器组构资源和存储器区域来公告。此外,一旦被映射并公告给服务器设备,服务器设备就可以作为其正常启动存储器发现过程的一部分(例如,使用固件并通过e820/ACPI表映射)发现该存储器,并在服务器设备的物理地址空间映射中提供其地址区域,从而使该存储器被其操作系统发现。然后,操作系统的存储器管理器将从系统物理地址空间(包括通过Gen-Z ZMMU孔所发现的空间)内的各个区域分配一个或多个虚拟机线程。
此外,服务器设备300中的存储器组构管理子系统312可以存储以下各项:关于在存储器组构管理数据库314(该存储器组构管理数据库可以包括例如将第一线程映射到存储器系统206/400的第一部分的引用指针以及将第二线程映射到存储器系统206/400的第二部分的引用指针)中存储器系统各部分的分配的符号引用信息、提供存储器系统206/400的第一部分的第一线程所有权的页所有权信息和提供存储器系统206/400的第二部分的第二线程所有权的页所有权信息、和/或将由掌握了本公开的本领域技术人员识别为提供将存储器组构存储器系统的各部分分配给线程的任何其他符号引用信息。
参考图6B,并且出于下文所提供的示例的目的,线程600a被示出为已经被分配了第一线程存储器空间604(例如,由介质控制器设备406响应于如上所述的存储器组构管理子系统312与408之间的通信),并且线程602a被示出为已经被分配了第二线程存储器空间606(例如,由介质控制器设备406响应于如上所述的存储器组构管理子系统312与408之间的通信)。正如掌握了本公开的本领域技术人员所理解的那样,可通过由存储器设备404提供的不同存储器地址范围、由存储器设备404提供的不同存储器页面和/或对于掌握了本公开的本领域技术人员而言显而易见的存储器设备404的其他不同部分来定义第一线程存储器空间604和第二线程存储器空间606。在下文的示例中,第一线程存储器空间604和第二线程存储器空间606是相等大小的存储器空间,但是掌握了本公开的本领域技术人员将认识到,线程可以被分配以不同大小的存储器空间,并且下文关于相等大小的存储器空间的讨论适用于本公开的特定实施例。特别地,分配给线程602a的存储器系统400的部分可以大于第二线程存储器空间606,而第二存储器线程空间606提供分配给线程602a的存储器系统400的那部分的子集,其存储了在方法500期间被“传送”的数据。
然后,方法500进行到框504,在该框中,第一线程传输通信,该通信包括将存储在其被分配的存储器系统部分中的数据传送到第二线程的请求。在一个实施例中,在框504处或之前,由服务器设备300中的处理系统提供的虚拟机中所包括的任何线程可以请求向由服务器设备300中的处理系统提供的另一虚拟机中所包括的另一线程传送数据。掌握了本公开的本领域技术人员将认识到,各种各样的情景可能要求由服务器设备300中的处理系统提供的虚拟机中所包括的线程之间传送数据,并且由这些情景中的任何情景产生的数据传送请求都被设想为落入本公开的范围。继续上文的示例,并参考图7,线程602a被示出为通过处理系统306中所包括的存储器组构逻辑子系统306a来传输传送数据的请求700,而数据移动器引擎310可以访问该请求700。在一个实施例中,由第一线程在框504处提供的传送数据的请求可以在进程间通信(IPC)中提供,其中包括仅引用数据描述符传送消息,该进程间通信识别第二线程,并且如掌握了本公开的本领域技术人员所理解的,不包括待传送数据,而是包括对该数据在存储器组构存储器系统中的位置的引用。例如,在框504处由线程602a提供的传送数据的请求700可以包括IPC,该IPC识别线程600a,并且不包括待传送数据,而是包括对在存储器系统400中存储该数据的存储器设备404中的第二线程存储器空间606的引用。
然后,方法500进行到框506,在该框中,数据移动器子系统在由第一线程传输的通信中识别传送数据的请求。在一个实施例中,在框506处,数据移动器引擎310可以操作以识别由任何处理系统304、306和308提供的任何虚拟机中所包括的任何线程传输的传送数据的请求。继续上文提供的示例,并参考图7,数据移动器引擎310可操作以识别由线程602a传输的传送数据的请求700。在一些实施例中,数据移动器引擎310可被配置为探听在由任何处理系统304、306和308提供的任何虚拟机中所包括的任何线程传输的通信,以便识别传送数据的请求。例如,数据移动器引擎310可以操作以探听由线程602a传输的传送数据的请求700,以便识别该数据将要被传送到的线程600a、用于待传送数据的数据地址、针对待传送数据的数据引用,和/或对于掌握了本公开的本领域技术人员而言显而易见的任何其他数据传送信息。然而,虽然已经描述了对传送数据的请求进行识别的具体示例,但是掌握了本公开的本领域技术人员将认识到,可以以各种方式识别传送数据的请求,这些方式也将属于本公开的范围。
然后,方法500进行到判定框508,在该判定框中,确定所请求的数据传送是否是在存储器组构中存储器系统的各部分之间进行的。在一个实施例中,在判定框508处,数据移动器引擎310可以操作以确定在框506处确定的传送数据的请求中所包括的信息是否规定在存储器组构存储器系统(例如,存储器系统206/400)的各部分之间传送数据。例如,在判定框508处,数据移动器引擎310可以使用在框506处识别的传送数据的请求中所包括的信息来确定待传送数据的当前位置、以及该数据将被传送到的位置。在一些示例中,传送数据的请求可以识别待传送数据的当前位置以及该数据将被传送到的位置。然而,在其他示例中,待传送数据的当前位置可以通过识别请求数据传送的线程,并访问存储器组构管理数据库314以确定分配给该线程的存储器系统206/400的部分来确定,而数据将要被传送到的位置可以通过识别数据将要被传送到的线程,并访问存储器组构管理数据库314以确定分配给该线程的存储器系统206/400的部分来确定。然而,虽然已经提供了一些具体的示例,但是掌握了本公开的本领域技术人员将认识到,确定所请求的数据传送是否在存储器组构中的存储器系统的各部分之间进行的可以以各种方式执行,这些方式也将属于本公开的范围。
如果在判定框508处确定所请求的数据传送不是在存储器组构中的存储器系统的各部分之间进行的,则方法500进行到框510,在该框中,数据移动器子系统执行传统的复制操作。在一个实施例中,数据移动器引擎310可以确定所请求的数据传送是到和/或来自本地存储器系统(即,服务器设备300中所包括的本地存储器系统),并且在框510处,数据移动器引擎310可以操作以执行传统的复制操作。例如,如果在判定框508处确定所请求的数据传送是在服务器设备300中的本地存储器系统之间,则在框510处,数据移动器引擎310可以从服务器设备300中的本地存储器系统(例如,被线程602a所利用)读取并复制该数据,并将该数据写入服务器设备300中的本地存储器系统(例如,被线程600a所利用)。在另一个示例中,如果在判定框508处确定所请求的数据传送是从服务器设备300中的本地存储器系统到存储器组构存储器系统(例如,存储器系统206/400),则在框510处,数据移动器引擎310可以从服务器设备300中的本地存储器系统(例如,被线程602a所利用)读取并复制该数据,并将该数据提供给存储器组构管理子系统312以供写入存储器系统206/400(例如,被线程600a利用的第一线程存储器空间604)。在另一个示例中,如果在判定框508处确定所请求的数据传送是从存储器组构存储器系统(例如,存储器系统206/400)到服务器设备300中的本地存储器系统,则在框510处,数据移动器引擎310可以通过存储器系统206/400(例如,被线程602a利用的第二线程存储器空间606)从存储器组构管理子系统312请求并接收该数据,并从服务器设备300中的本地存储器系统(例如,被线程600a所利用)写入该数据。然而,虽然已经提供了几个示例,但是掌握了本公开的本领域技术人员将认识到,各种传统的复制操作可以在框510处执行,同时也保持在本公开的范围内。
如果在判定框508处确定所请求的数据传送是在存储器组构中的存储器系统的各部分之间进行的,则方法500进行到框512,在该框中,数据移动器子系统修改符号引用信息以使存储器系统的第一部分与第一线程断开关联,并使存储器系统的第一部分与第二线程相关联。例如,如果在判定框508处确定所请求的数据传送是在被分配给线程602a的第二线程存储器空间606与被分配给线程602a的第二线程存储器空间606之间,则在框512处,数据移动器引擎310可以操作以访问存储器组构管理数据库314并在存储器组构管理数据库314中执行符号引用信息修改操作800,如图8所示。在一个实施例中,可以对以下各项执行符号引用信息修改操作800:与存储器系统各部分的分配相关联并在框502处被存储在存储器组构管理数据库314(如上所述,该存储器组构管理数据库可以包括将线程600a映射到存储器系统206/400中所包括的存储器设备404中的第一线程存储器空间604的引用指针以及将线程602a映射到存储器系统206/400中所包括的存储器设备404中的第二线程存储器空间606的引用指针)中的符号引用信息、提供存储器系统206/400中所包括的存储器设备404中的第一线程存储器空间604的线程600a所有权并且提供存储器系统206/400中所包括的页所有权存储器设备404中的第二线程存储器空间606的线程602a所有权的信息、和/或将由掌握了本公开的本领域技术人员识别为提供将存储器组构存储器系统的各部分分配给线程的任何其他符号引用信息。
例如,在框512处,对存储器组构管理数据库314中的符号引用信息的修改可以包括:数据移动器引擎310使线程602a与其在框502处在存储器系统206/400中所包括的存储器设备404中被分配的的第二线程存储器空间606断开关联,并且使线程600a与存储器系统206/400中所包括的存储器设备404中的第二线程存储器空间606相关联。在一个具体示例中,使线程602a与第二线程存储器空间606断开关联以及使线程600a与第二线程存储器空间606相关联可以包括:改变将线程602a映射到第二线程存储器空间606的引用指针以使得该引用指针将线程600a映射到第二线程存储器空间606,以及改变提供第二线程存储器空间606的线程602a所有权页所有权信息以使得线程600a拥有第二线程存储器空间606。然而,虽然已经描述了具体的符号引用信息修改操作,但是掌握了本公开的本领域技术人员将认识到,第二线程存储器空间606可以以各种方式与线程602a断开关联并与线程600a相关联,这些方式也将属于本公开的范围。
方法500进行到框514,在该框中,数据移动器子系统修改符号引用信息以使存储器系统的第二部分与第二线程断开关联,并使存储器系统的第二部分与第一线程相关联。继续上文提供的示例,在框514处,对存储器组构管理数据库314中的符号引用信息的修改可以包括:数据移动器引擎310使线程600a与其在框502处在存储器系统206/400中所包括的存储器设备404中被分配的第一线程存储器空间604断开关联,并且使线程602a与存储器系统206/400中所包括的存储器设备404中的第一线程存储器空间604相关联。在一个具体示例中,使线程600a与第一线程存储器空间604断开关联以及使线程602a与第一线程存储器空间604相关联可以包括:改变将线程600a映射到第一线程存储器空间604的引用指针以使得该引用指针将线程602a映射到第一线程存储器空间604,以及改变提供第一线程存储器空间604的线程600a所有权的页所有权信息以使得线程602a拥有第一线程存储器空间604。然而,虽然已经描述了具体的符号引用信息修改操作,但是掌握了本公开的本领域技术人员将认识到,第一线程存储器空间604可以以各种方式与线程600a断开关联并与线程602a相关联,这些方式也将属于本公开的范围。
正如掌握了本公开的本领域技术人员将理解的那样,在框512和514处执行的符号引用信息修改可以基本上同时执行和/或作为类似操作的一部分执行,使得存储器系统中的存储器设备404中的第一线程存储器空间604和第二线程存储器空间606的分配(即,分别分配给线程600a和602a)被“调换”,如图9所示(掌握了本公开的本领域技术人员将认识到,这完全通过修改存储器组构管理数据库314中的符号引用信息来完成,并且不要求在存储器系统206/400内执行数据移动动作)。因此,框512和514可以规定:调换存储器组构管理数据库314中的将线程600a映射到第一线程存储器空间604的引用指针和将线程602a映射到第二线程存储器空间606的引用指针,使得线程600a被映射到第二线程存储器空间606,并且线程602a被映射到第一线程存储器空间604:以及调换提供第一线程存储器空间604的线程600a所有权的页所有权信息和提供第二线程存储器空间606的线程602a所有权的页所有权信息,使得线程600a拥有第二线程存储器空间604,而线程602a拥有第一线程存储器空间604。
在许多实施例中,存储器系统206/400的正被调换的各部分可以是存储器系统206/400的相等大小的部分,使得向第二线程传送数据的第一线程不会由于方法500而损失所分配的存储器。因此,第一线程存储器空间604可以与第二线程存储器空间606的大小相等,使得线程602a在将第二线程存储器空间606中的数据“传送”给线程600a时不会损失所分配的存储器。在一些实施例中,被提供给在方法500期间正“传送”数据的第一线程的已被分配给第二线程的存储器部分可以被选择为具有与在“传送”之前存储该数据的已被分配给第一线程的那部分存储器部分(例如,上述示例中的第二线程存储器空间606)相同的大小。因此,基于第一线程存储器空间604当前被分配给线程600a并且大小等于存储正被线程602a“传送”的数据的第二线程存储器空间606,可以在方法500期间识别该第一线程存储器空间以重新分配给线程602a。然而,虽然已经描述了具有相等大小的存储器空间分配的调换的具体示例,但是掌握了本公开的本领域技术人员将认识到,可以调换不同大小的存储器空间。此外,在一些实施例中,可以跳过框514,使得第一线程(例如,下文的实施例中的线程602a)最终失去所分配的存储器作为符号引用信息修改数据“传送”的一部分。
方法500进行到框516,在该框中,第二线程访问存储器系统的第一部分中的数据。在一个实施例中,在框516,线程600a现在可以通过例如请求/响应操作来访问第二线程存储器空间606中的数据。图10A示出了线程600a生成存储器加载指令并通过处理系统304中的存储器组构逻辑子系统304a和通过数据移动器引擎310将所述存储器加载指令传输给存储器组构管理子系统312,其中该存储器加载指令请求由线程602a“传送”的数据,如上文所讨论的。然后,存储器组构管理子系统312可以充当存储器组构请求者(例如,Gen-Z请求者),并利用存储器组构管理数据库314中的符号引用信息来生成存储器组构请求(例如,Gen-Z请求),该请求通过网络204传输到存储器系统206。如图10B和10C所示,存储器组构管理子系统408可以充当存储器组构响应者(例如,Gen-Z响应者),并且通过介质控制器设备406并从存储器设备404中的第二线程存储器空间606检索数据,生成包括从第二线程存储器空间606检索到的数据作为其有效载荷的存储器组构响应(例如,Gen-Z响应),并通过网络204将该存储器组构响应传输到服务器设备300。图10D示出了存储器组构管理子系统312如何可以充当存储器组构请求者,以将从第二线程存储器空间606检索到的数据(通过数据移动器引擎310和处理系统304中的存储器组构逻辑子系统304a)加载到为虚拟机600提供并可被线程600a访问的本地存储器系统中。然而,虽然已经描述了由第二线程访问存储器系统的第一部分中的数据的具体示例,但是掌握了本公开的本领域技术人员将认识到,可以以各种方式访问通过本文描述的符号引用信息修改而传送的数据,这些方式也将属于本公开的范围。
因此,已经描述了各种系统和方法,其提供了数据“传送”,同时避免了需要读取、写入、复制和/或执行其他传统的数据传送操作,这些数据传送操作通过在请求传送该数据的线程与请求将该数据传送至的线程之间改变存储器组构中的存储器系统的各部分的分配来实际在存储器组构地址空间之间移动数据。因此,由服务器设备中的处理系统提供的第一虚拟机中所包括的第一线程可以请求向由该服务器设备中的处理系统提供的第二虚拟机中所包括的第二线程传送数据,并且数据移动器子系统可以识别该传送数据的请求。作为响应,数据移动器子系统可以修改数据库中的符号引用信息,以便将存储器组构存储器系统的被分配给第一线程并存储待传送数据的第一部分与存储器组构存储器系统的被分配给第二线程的某个相等大小的部分进行调换,这允许第二线程使用请求/响应操作来引用存储器组构存储器系统的第一部分中的数据。因此,提供了更高效的设备内的基于存储器组构的数据传送,其消除了执行实际在存储器组构地址空间之间移动数据的传统数据传送操作的需要,同时通过对存储器组构的各部分进行重新分配的符号引用修改来提供这种数据移动的效果。
此外,本公开与以下美国专利申请一起提交:美国专利申请号16/395,902(代理人案号16356.2039US01),其在2019年4月26日提交,并针对基于控制器的设备间符号数据移动技术;以及美国专利申请号16/396,140(代理人案号16356.2041US01),其在2019年4月26日提交,并针对基于切换的设备间符号数据移动技术;其中每一项美国专利申请都包括利用与本公开所包括的一些实施例中描述的那些符号数据移动系统类似的符号数据移动系统的实施例。掌握了本公开的本领域技术人员将认识到本公开的实施例可以如何与上述讨论的部分或全部公开内容相结合,因此,这些公开内容通过引用全部并入本文。
尽管已经示出和描述了说明性实施例,但是在上述公开内容中设想了广泛的修改、改变和替代,并且在某些情况下,可以采用实施例的一些特征而无需相应使用其他特征。因此,应理解,对所附的权利要求进行宽泛的解释,并以与本文所公开的实施例范围相一致的方式进行解释是适当的。
Claims (20)
1.一种设备内符号数据移动系统,其包括:
机壳;
至少一个处理系统,其包括在所述机壳内,并且被配置为:
提供第一线程;以及
提供第二线程;
数据移动器子系统,其包括在所述机壳内并且耦合至所述至少一个处理系统,其中所述数据移动器子系统被配置为:
在由所述第一线程传输的通信中,识别向所述第二线程传送数据的请求,其中所述数据在存储器组构管理数据库中被存储在存储器系统的与所述第一线程相关联的第一部分中;以及
在所述存储器组构管理数据库中修改符号引用信息,以便使所述存储器系统的所述第一部分与所述第一线程断开关联,并使所述存储器系统的所述第一部分与所述第二线程相关联,其中使所述存储器系统的所述第一部分与所述第二线程相关联允许所述第二线程使用请求/响应操作来引用所述数据。
2.如权利要求1所述的系统,其中所述数据移动器子系统被配置为:
在所述存储器组构管理数据库中修改所述符号引用信息,以便使所述存储器系统的第二部分与所述第二线程断开关联,并使所述存储器系统的所述第二部分与所述第一线程相关联。
3.如权利要求2所述的系统,其中所述存储器系统的所述第一部分和所述存储器系统的所述第二部分具有相同大小。
4.如权利要求2的系统,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及使所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换将所述第一线程映射到所述存储器系统的所述第一部分的引用指针和将所述第二线程映射到所述存储器系统的所述第二部分的引用指针。
5.如权利要求2的系统,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及使所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换提供所述存储器系统的所述第一部分的第一线程所有权的页所有权和提供所述存储器系统的所述第二部分的第二线程所有权的页所有权,使得所述第二线程拥有所述存储器系统的所述第一部分,并且所述第一线程拥有所述存储器系统的所述第二部分。
6.如权利要求1所述的系统,其中所述存储器系统通过网络耦合至所述机壳。
7.一种信息处理系统(IHS),其包括:
处理系统;以及
存储器系统,所述存储器系统耦合至所述处理系统并且包括指令,所述指令在由所述处理系统执行时,使所述处理系统提供数据移动器引擎,所述数据移动器引擎被配置为:
在由包括在机壳内的至少一个处理系统提供的第一线程所传输的通信中识别向由包括在所述机壳内的所述至少一个处理系统提供的第二线程传送数据的请求,其中所述数据在存储器组构管理数据库中被存储在存储器系统的与所述第一线程相关联的第一部分中;以及
在所述存储器组构管理数据库中修改符号引用信息,以便使所述存储器系统的所述第一部分与所述第一线程断开关联,并使所述存储器系统的所述第一部分与所述第二线程相关联,其中使所述存储器系统的所述第一部分与所述第二线程相关联允许所述第二线程使用请求/响应操作来引用所述数据。
8.如权利要求7所述的IHS,其中所述数据移动器子系统被配置为:
在所述存储器组构管理数据库中修改所述符号引用信息,以便使所述存储器系统的第二部分与所述第二线程断开关联,并使所述存储器系统的所述第二部分与所述第一线程相关联。
9.如权利要求8所述的IHS,其中所述存储器系统的所述第一部分和所述存储器系统的所述第二部分具有相同大小。
10.如权利要求8的IHS,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及使所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换将所述第一线程映射到所述存储器系统的所述第一部分的引用指针和将所述第二线程映射到所述存储器系统的所述第二部分的引用指针。
11.如权利要求8的IHS,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及使所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换提供所述存储器系统的所述第一部分的第一线程所有权的页所有权和提供所述存储器系统的所述第二部分的第二线程所有权的页所有权,使得所述第二线程拥有所述存储器系统的所述第一部分,并且所述第一线程拥有所述存储器系统的所述第二部分。
12.如权利要求7所述的IHS,其中所述存储器系统通过网络耦合至所述机壳。
13.如权利要求7所述的IHS,其中所述数据移动器子系统被配置为:
确定向所述第二线程传送数据的所述请求是将所述数据从第一存储器组构位置传送到第二存储器组构位置的请求,并且作为响应,修改所述存储器组构管理数据库中的所述符号引用信息。
14.一种用于提供设备内符号数据移动的方法,其包括:
通过数据移动器子系统在由包括在机壳内的至少一个处理系统提供的第一线程所传输的通信中识别向由包括在机壳内的所述至少一个处理系统提供的所述第二线程传送数据的请求,其中所述数据在存储器组构管理数据库中被存储在存储器系统的与所述第一线程相关联的第一部分中;以及
由所述数据移动器子系统在所述存储器组构管理数据库中修改符号引用信息,以便使所述存储器系统的所述第一部分与所述第一线程断开关联,并使所述存储器系统的所述第一部分与所述第二线程相关联,其中使所述存储器系统的所述第一部分与所述第二线程相关联允许所述第二线程使用请求/响应操作来引用所述数据。
15.如权利要求14所述的方法,其还包括:
由所述数据移动器子系统在所述存储器组构管理数据库中修改所述符号引用信息,以便使所述存储器系统的第二部分与所述第二线程断开关联,并使所述存储器系统的所述第二部分与所述第一线程相关联。
16.如权利要求15所述的方法,其中所述存储器系统的所述第一部分和所述存储器系统的所述第二部分具有相同大小。
17.如权利要求15的方法,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及使所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换将所述第一线程映射到所述存储器系统的所述第一部分的引用指针和将所述第二线程映射到所述存储器系统的所述第二部分的引用指针。
18.如权利要求15的方法,其中使所述存储器系统的所述第一部分与所述第一线程断开关联、使所述存储器系统的所述第一部分与所述第二线程相关联、使所述存储器系统的所述第二部分与所述第二线程断开关联、以及所述存储器系统的所述第二部分与所述第一线程相关联包括:
调换提供所述存储器系统的所述第一部分的第一线程所有权的页所有权和提供所述存储器系统的所述第二部分的第二线程所有权的页所有权,使得所述第二线程拥有所述存储器系统的所述第一部分,并且所述第一线程拥有所述存储器系统的所述第二部分。
19.如权利要求14所述的方法,其中所述存储器系统通过网络耦合至所述机壳。
20.如权利要求14所述的方法,其还包括:
由所述数据移动器子系统确定向所述第二线程传送数据的所述请求是将所述数据从第一存储器组构位置传送到第二存储器组构位置的请求,并且作为响应,修改所述存储器组构管理数据库中的所述符号引用信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/396,433 US11157191B2 (en) | 2019-04-26 | 2019-04-26 | Intra-device notational data movement system |
US16/396,433 | 2019-04-26 | ||
PCT/US2020/029720 WO2020219810A1 (en) | 2019-04-26 | 2020-04-24 | Intra-device notational data movement system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113678104A true CN113678104A (zh) | 2021-11-19 |
Family
ID=70968984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080027910.2A Pending CN113678104A (zh) | 2019-04-26 | 2020-04-24 | 设备内符号数据移动系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11157191B2 (zh) |
EP (1) | EP3959611A1 (zh) |
CN (1) | CN113678104A (zh) |
TW (1) | TWI785320B (zh) |
WO (1) | WO2020219810A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11263019B2 (en) * | 2019-07-24 | 2022-03-01 | Vmware, Inc. | Method for converting device tree data into ACPI data for edge device operating in a network |
US11860783B2 (en) * | 2022-03-11 | 2024-01-02 | Microsoft Technology Licensing, Llc | Direct swap caching with noisy neighbor mitigation and dynamic address range assignment |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5884040A (en) | 1995-01-11 | 1999-03-16 | Sony Corporation | Per-packet jamming in a multi-port bridge for a local area network |
CN1312549C (zh) * | 1995-02-13 | 2007-04-25 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
JPH11502350A (ja) * | 1996-01-09 | 1999-02-23 | フィリップス エレクトロニクス ネムローゼ フェンノートシャップ | イントラプロセス更新動作及びインタープロセス適合動作による並列の順次のプロセスの同期方法及びシステム |
US6349355B1 (en) * | 1997-02-06 | 2002-02-19 | Microsoft Corporation | Sharing executable modules between user and kernel threads |
JP4214712B2 (ja) * | 2002-05-16 | 2009-01-28 | 株式会社日立製作所 | データベースのページ確保処理方法 |
JP4297846B2 (ja) * | 2004-07-27 | 2009-07-15 | 富士通株式会社 | アドレス変換バッファ制御装置およびアドレス変換バッファ制御方法 |
US7856636B2 (en) * | 2005-05-10 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Systems and methods of sharing processing resources in a multi-threading environment |
US7685330B2 (en) | 2006-03-09 | 2010-03-23 | International Business Machines Corporation | Method for efficient determination of memory copy versus registration in direct access environments |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US8161228B2 (en) * | 2009-03-19 | 2012-04-17 | Samsung Electronics Co., Ltd. | Apparatus and method for optimized NAND flash memory management for devices with limited resources |
US8495435B2 (en) * | 2010-09-22 | 2013-07-23 | Intel Corporation | Dynamic physical memory replacement through address swapping |
US8769549B2 (en) | 2012-04-30 | 2014-07-01 | National Instruments Corporation | Graphical programming system enabling data sharing from a producer to a consumer via a memory buffer |
US9558560B2 (en) * | 2014-03-14 | 2017-01-31 | Intel Corporation | Connected component labeling in graphics processors |
US9292380B2 (en) * | 2014-04-06 | 2016-03-22 | Freescale Semiconductor,Inc. | Memory access scheme for system on chip |
US10754796B2 (en) * | 2018-08-29 | 2020-08-25 | Red Hat, Inc. | Efficient user space driver isolation by CPU page table switching |
US11010084B2 (en) * | 2019-05-03 | 2021-05-18 | Dell Products L.P. | Virtual machine migration system |
-
2019
- 2019-04-26 US US16/396,433 patent/US11157191B2/en active Active
-
2020
- 2020-03-31 TW TW109111025A patent/TWI785320B/zh active
- 2020-04-24 EP EP20730130.0A patent/EP3959611A1/en active Pending
- 2020-04-24 CN CN202080027910.2A patent/CN113678104A/zh active Pending
- 2020-04-24 WO PCT/US2020/029720 patent/WO2020219810A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2020219810A1 (en) | 2020-10-29 |
TWI785320B (zh) | 2022-12-01 |
US11157191B2 (en) | 2021-10-26 |
US20200341673A1 (en) | 2020-10-29 |
EP3959611A1 (en) | 2022-03-02 |
TW202111541A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324832B2 (en) | Address based multi-stream storage device access | |
US9760497B2 (en) | Hierarchy memory management | |
JP5276218B2 (ja) | リアルタイムでlunをファイルに、またはファイルをlunに変換すること | |
JP5159884B2 (ja) | 論理区分の間におけるネットワーク・アダプタ・リソース割振り | |
US8943294B2 (en) | Software architecture for service of collective memory and method for providing service of collective memory using the same | |
US11010084B2 (en) | Virtual machine migration system | |
US10824574B2 (en) | Multi-port storage device multi-socket memory access system | |
CN114860329B (zh) | 动态一致性偏置配置引擎及方法 | |
US8612691B2 (en) | Assigning memory to on-chip coherence domains | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
US7793051B1 (en) | Global shared memory subsystem | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
WO2023124304A1 (zh) | 芯片的缓存系统、数据处理方法、设备、存储介质及芯片 | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US11003378B2 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US11003488B2 (en) | Memory-fabric-based processor context switching system | |
US11106543B2 (en) | Application image cloning system | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
CN117785758B (zh) | Cxl模组、控制器、任务处理方法、介质和系统 | |
US11983182B2 (en) | System and method to enable a data analytics in a smart data accelerator interface device | |
EP4322001A1 (en) | Memory expansion method and related device | |
US20210373790A1 (en) | Inference in memory | |
TW202340931A (zh) | 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 | |
JP2021536643A (ja) | ハイブリッドメモリシステムインタフェース |
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 |