器计算设备130上执行的进程直接寻址的在本地可寻址的存储器名字空间231的一部分的存储器进行通信的存储器管理单元。
[0045]为了降低接收命令223与提供响应225之间的等待时间,在一个实施例中,远程存储器接口 131可以与作为服务器计算设备130的一部分的联网硬件直接通信。例如,远程存储器接口 131可以是包括到服务器计算设备130的网络接口的直接连接的专用处理器。这样的专用处理器可类似于公知的存储器管理单元处理器(MMU),它可以是独立的处理器或可以与其他处理器(如一个或多个CPU)集成在一起。远程存储器接口 121也可以是包括到服务器计算设备120的网络接口的直接连接的专用处理器,从而降低通信的另一端上的等待时间。
[0046]在另一实施例中,以上描述的由远程存储器接口 131提供的功能可被实现在操作系统中或在服务器计算设备130上执行的实用程序中。类似地,以上描述的由远程存储器接口 121提供的功能可同样被实现在操作系统中或在服务器计算设备120上执行的实用程序中。在这样的实施例中,这样的远程存储器接口所生成的以及定向到它的通信可通过缩减的网络栈来提供降低的等待时间。例如,表示这样的远程存储器接口的计算机可执行指令被提供有对联网硬件的直接访问,如通过具有内置驱动程序或适当的功能。
[0047]如本领域技术人员将认识到的,上述机制与传统虚拟存储器机制不同,且不是将数据从存储器对换到的存储介质的简单替换。因此,因为响应225可基本上比在传统虚拟存储器上下文中更快地提供,轻量挂起和恢复可被应用于发出命令(如命令223)的正在执行的进程。更具体而言,且如本领域技术人员将认识到的,在虚拟存储器上下文中,在向存储器请求不再存储在这样的存储器中而是改为对换到盘中的数据时,发出请求的进程的执行可被挂起,直至这样的数据从较慢的盘对换回存储器。在这样的对换完成时,发出请求的进程可被恢复且所请求的数据可被提供给它,诸如例如通过被加载到一个或多个处理单元的适当的寄存器。但使用上述机制,数据可以从基本上比从较慢盘介质(甚至物理上作为这样的进程在其上执行的计算设备的一部分的盘)对换更快地从远程物理存储器获得。因此,轻量挂起和恢复可被用来避免在恢复更完全地挂起的执行线程或其他类似处理时的不必要的延迟。
[0048]例如,在一个实施例中,命令223可基于标识由命令223指定的或命令223定向到的信息的存储器地址、页、或其他类似位置被确定为定向到可寻址远程存储器235。在这样的实施例中,如果确定命令223定向到在本地可寻址的存储器名字空间231的由远程存储器支持的部分235,则CPU 132所执行的进程可被置于挂起状态,与传统挂起状态相比,它可从该挂起状态中更迅速地恢复。更具体而言,正被执行的进程可基于该正在执行的进程所指定的存储器位置自身确定命令223定向到部分235。因此,正在执行的进程可自动将自身置于挂起状态,与传统挂起状态相比,该挂起状态可被更迅速地恢复。或者,这样的确定可由CPU 132或具有将正在执行的进程自动置于挂起状态的能力的其他类似组件做出。
[0049]在另一实施例中,远程存储器接口 131或另一存储器管理组件可以检测命令223被定向到部分235且可相应地通知正在执行的进程。更具体而言,且如上所示,命令223定向到的存储器位置可被检测到,且根据这些存储器位置,可以作出与命令223是否要被定向到部分235有关的确定。如果作出命令223被定向到部分235的确定,则可生成给正在执行的进程或进程管理组件的通知。响应于这样的通知,取决于通知被直接提供给正在执行的进程还是提供给进程管理组件,正在执行的进程可以将自身置于挂起状态或者它可被置于该挂起状态,与传统挂起状态相比,可以从该挂起状态更迅速地恢复。
[0050]转向图3a和3b,分别在此示出的流程图301和302解说了物理上安装在远程计算设备上的存储器可被在本地执行的进程使用的示例性步骤序列。首先转向图3a,一开始,在步骤310,可接收寻址到本地远程存储器接口的网络通信。一旦接收到,这些网络通信就可被组装成适当的以网络为中心的命令,如上述加载命令或存储命令。这样的组装可作为步骤315的一部分发生,且如上所示,可能需要将网络通信从无论什么格式解除封装,这些格式对于用来已在各计算设备之间建立通信的给定网络协议是适当的。在步骤320,适当的命令可以用本地存储器来执行。例如,如果接收到的命令是指定数据要以特定存储器地址开始而被存储的存储命令,则在步骤320,这样的数据可被存储在以与接收到的命令所指定的地址相称的地址或其他相似存储器位置处开始的本地存储器中。类似地,如果接收到的命令是请求已被存储在以指定地址或其他类似存储器位置开始的本地存储器中的数据的加载命令,则在步骤320,存储在本地存储器的相称位置中的数据可被获得。在一个实施例中,接收到的命令可以指定要结合本地存储器使用的地址,而在其他实施例中,接收到的命令所指定的地址可根据已被定义为要共享的存储器的地址范围、页、或其他位置来转换。
[0051]在步骤320执行所请求的命令可造成响应,诸如例如确收响应(如果数据被存储在本地存储器中)或包括请求从本地存储器读取的数据的响应。这样的响应可以在步骤325处接收。在步骤330,这样的响应可被转换成网络通信,它随后可被定向到该计算设备的通过它接收到在步骤310所接收的网络通信的远程存储器接口。如上所示,在步骤330,将响应转换成网络通信可包括根据通过它建立了与其他计算设备的通信的网络所实现的网络协议将响应分组化,包括例如施加适当的分组报头、将数据分成与最大传输单元相称的大小、提供适当的地址信息、以及其他类似动作。网络通信一旦被生成,就可在步骤335被传送到该计算设备的在步骤310从中接收到网络通信的远程存储器接口。相关处理然后可结束于步骤340。
[0052]转向图3b,类似的一组步骤可在步骤350开始,从本地进程接收定向到在本地可寻址的存储器名字空间的以存储器为中心的命令,如加载或存储命令。该请求可以指定在本地可寻址的存储器名字空间中的一个或多个地址或其他类似位置标识符。因此,一开始,在一个实施例中,在步骤355,作出与步骤350的以存储器为中心的命令所指定的地址是否在由远程存储器接口(如以上详细描述的)支持的地址范围中有关的检查。在步骤355,如果确定以存储器为中心的命令被定向到处于由在本地安装的存储器所支持的在本地可寻址的存储器名字空间的地址范围中的地址,则与远程存储器共享相关的处理可在步骤385结束,如在流程图302中所示。相反,然而,在步骤355,如果确定以存储器为中心的命令被定向到处于由远程存储器接口支持的在本地可寻址的存储器名字空间的地址范围中的地址,则处理可进至步骤360。
[0053]在步骤360,在步骤350接收到的请求被定向到的地址可被转换成其存储器被用来存储该请求定向到的数据的一个或多个远程计算设备的标识。更具体而言,在一个实施例中,远程存储器接口每次接收到存储命令并将数据存储在远程计算设备的存储器中时,如按以上详细描述的方式,远程存储器接口可记录存储命令定向到的在本地可寻址的存储器名字空间的地址与这样的数据被最终存储到其存储器的远程计算设备的标识符(如网络地址)之间的关联。随后,在从在本地执行的进程发出针对在本地可寻址的存储器名字空间的同一地址的加载命令时,远程存储器接口可以参考先前记录的关联,并且确定它应当与哪一远程计算设备通信以便得到该数据。另外,在一个实施例中,在首次接收到针对在本地可寻址的存储器名字空间中的特定地址的存储命令时,远程存储器接口可能寻求将这样的数据存储到可通过存储器共享控制器标识给远程存储器接口的远程计算设备的共享存储器中,或共享存储器可由远程存储器接口从存储器共享控制器所标识的计算设备之间选择。一旦远程计算设备被标识,在步骤360,处理可进至步骤365。在步骤365,在步骤350接收到的请求可被转换成可被寻址到在步骤360所标识的计算设备标识的远程存储器接口的网络通信。如上所示,这样的转换可包括根据将在本地计算设备和包括存储器的远程计算设备之间通过其携带通信的网络所使用的协议将请求分组化或以其他方式生成数据流。
[0054]响应于传输,在步骤365,定向到本地计算设备上的远程存储器接口的响应性网络通信可在步骤370处被接收。在步骤375,这些网络通信可被组装成对在步骤350接收到的请求的响应,如按上文详细描述的方式。在步骤380,这样的响应可被提供给生成在步骤350接收到的请求的正在执行的进程。相关处理然后可结束于步骤385。
[0055]转向图4,示出了示例性计算设备,该计算设备可包括通用计算设备(诸如可执行以上详述的某些机制)以及专用计算设备(诸如上述交换机)。示例性计算设备400可包括但不限于,一个或多个中央处理单元(CPU) 420、系统存储器430和将包括该系统存储器在内的各种系统组件耦合至处理单元420的系统总线421。系统总线421可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。取决于特定物理实现,CPU 420、系统存储器430和计算设备400的其他组件中的一个或多个可以在物理上位于同处,诸如在单个芯片上。在这一情况下,系统总线421