一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

人工神经网络(ANN)应用程序中的存储器即服务的制作方法

2022-02-20 00:21:32 来源:中国专利 TAG:

人工神经网络(ann)应用程序中的存储器即服务
1.相关申请案
2.本技术要求于2019年5月28日提交的题为“人工神经网络(ann)应用程序中的存储器即服务(memory as a service for artificial neural network(ann)applications)”的、序列号为16/424,429的美国专利申请的优先权,其全部内容通过引用并入本文。
技术领域
3.本文公开的至少一些实施例涉及由操作系统和人工神经网络(ann)提供的存储器服务。


背景技术:

4.在一些计算机系统中,操作系统允许应用程序使用存储器的虚拟地址来将数据存储在计算机系统的一或多个存储器子系统的存储器组件中,或者从其中检索数据。操作系统定义连接到计算机系统的中央处理单元(cpu)和/或图形处理单元(gpu)和/或片上系统(soc)的一或多个存储器子系统的虚拟存储器地址和物理存储器地址之间的映射。这种映射可以通过使用页表来定义。页表条目指定虚拟存储器页面的一组虚拟存储器地址与物理存储器页面的相应一组物理存储器地址之间的映射。通过将虚拟存储器地址转译成存储器子系统的相应物理存储器地址,页表可用于实现虚拟存储器地址所请求的存储器存取。
5.计算机处理器可以具有存储器管理单元(mmu),该mmu被配置为根据由操作系统定义的页表来执行虚拟存储器地址到物理存储器地址的转译。存储器管理单元(mmu)可以具有转译后备缓冲器(tlb),该tlb被配置为缓存最近使用的页表条目。存储器管理单元(mmu)可以执行其它与存储器相关的任务,诸如高速缓存控制和/或存储器保护。
6.一般来说,计算机存储器的虚拟地址空间可以分成预定大小的页面。虚拟存储器的页面由虚拟存储器地址的集合表示;虚拟存储器地址可以被映射到存储器子系统中的一页物理存储器的物理存储器地址;页表条目定义了虚拟存储器页面与物理存储器页面之间的地址映射。
7.在一些计算机系统中,操作系统可以使用分页技术经由存储器模块中的存储器页面来存取存储或存储器装置中的数据页面。在不同的时间实例中,存储器模块中的相同存储器页面可用作存取计算机系统中的存储或存储器装置或另一个存储或存储器装置中的不同存储器页面的代理。
8.远程直接存储器存取(rdma)是这样一种技术,即允许从一台计算机到另一台计算机的直接存储器存取,而不涉及相关计算机的任何操作系统(例如,在操作系统被执行以协商和设置rdma操作的存储器资源之后)。在rdma操作(例如,读取或写入)之前,执行命令以通过一或多个网络装置在两台计算机之间建立存储器映射。当在计算机上运行的应用程序执行rdma操作时,应用程序数据直接通过计算机网络传递,从而减少延迟并且实现快速数据传输。rdma使用网络适配器向或自应用程序存储器传输数据,无需在应用程序存储器与操作系统的数据缓冲区之间复制数据。
附图说明
9.这些实施例是通过示例而非限制的方式在附图中示出的,在附图中,相同的附图标记指示相似的元件。
10.图1示出了一种系统,其中计算装置或服务器计算机可以从另一计算装置和/或另一服务器计算机借用存储器和/或向另一计算装置和/或另一服务器计算机出借存储器。
11.图2示出了根据一个实施例的通过通信网络连接实现操作系统间存储器服务的借用者装置和出借者装置。
12.图3示出了根据一个实施例的使用借用存储器的技术。
13.图4示出了根据一个实施例的物理存储器区域的使用,以便于存取不同的借用存储器区域。
14.图5示出了根据一个实施例的物理存储器区域的另一种使用,以便于存取不同的借用存储器区域。
15.图6示出了计算系统中的借用者-出借者存储器层次结构。
16.图7示出了通过通信网络连接实现操作系统间存储器服务的方法。
17.图8示出了根据一个实施例的服务一页借用存储器的方法。
18.图9示出了具有不同关键度级别的存储器区域的借用者装置,基于该存储器区域,可以节流存储器即服务的网络流量。
19.图10示出了根据一个实施例的在存储器映射中标记存储器区域的关键度级别。
20.图11示出了根据一个实施例的标识存储器区域的关键度级别的方法。
21.图12示出了根据一个实施例的节流存储器即服务的网络通信的方法。
22.图13至15示出了根据一些实施例的存取借用存储器的硬件加速配置。
23.图16和17示出了根据一些实施例的硬件加速配置,以提供对出借存储器的存取。
24.图18示出了根据一个实施例的通过存储器管理单元加速对借用存储器的存取的方法。
25.图19和20示出了根据一些实施例的被配置为执行智能内容迁移的借用者装置和出借者装置。
26.图21至24示出了根据一些实施例的内容移动。
27.图25示出了根据一些实施例的在具有借用存储器的计算系统中迁移内容的方法。
28.图26和27示出了基于在不同计算机的本地存储器上选择性地托管虚拟地址区域的分布式计算。
29.图28和29示出了在应用程序执行的不同阶段在不同的计算机上选择性地运行应用程序。
30.图30和31示出了在不同计算机上托管的虚拟机中运行应用程序。
31.图32示出了一种基于存储器即服务(maas)的分布式计算方法。
32.图33示出了被配置为标识子区域内容的高速缓存状态的存储器状态映射。
33.图34示出了使用存储器状态映射来存取可以在子区域级别迁移的借用存储器。
34.图35示出了针对借用存储器的细粒度数据迁移而配置的借用者装置和出借者装置。
35.图36示出了借用存储器的细粒度数据迁移方法。
36.图37示出了通过存储器即服务在装置和设备/服务器上配置的人工神经网络。
37.图38示出了具有替代模块的人工神经网络。
38.图39示出了被配置为基于人工神经网络处理计算的计算装置和设备/服务器。
39.图40示出了一种使用具有借用存储器的人工神经网络的方法。
具体实施方式
40.本文公开的至少一些实施例提供了通过通信网络连接的操作系统间存储器服务的技术,使得借用者装置可以通过使用通信链路和出借者装置的存储器来扩展其存储器容量。借用者装置和/或出借者装置的操作系统可以被配置为无缝地弥合通信链路上的间隙,使得在借用者装置上运行的应用程序可以无差别地使用其本地存储器和借用存储器。本地存储器物理安装在借用者装置中;并且借用存储器物理地安装在出借者装置中,出借者装置通过通信连接而连接到借用者装置。
41.任选地,借用者装置中的借用存储器和/或本地存储器的一部分可以通过计算机网络借给另一个装置。借用者装置可以有多个出借者装置。因此,借用者-出借者装置层级可以形成在装置之间的通信链路的层级上。
42.借用者装置的操作系统可以使用虚拟到物理的存储器映射来弥合本地存储器和借用存储器之间的差异。例如,借用者装置的操作系统可以操纵页表条目(pte),以响应借用者装置的转译后备缓冲器(tlb)中的未命中,该未命中可以用于确定页面错误,从而在通过通信链路存取借用存储器时使用借用者装置的本地存储器的一部分作为孔、代理和/或高速缓存。出借者装置和借用者装置之间的高速缓存一致性可以放宽,以提高带宽利用率。由于本地存储器和借用存储器区域之间的差异被借用者装置的操作系统与在借用者装置上运行的应用程序屏蔽,因此在借用者装置上运行的应用程序可以以与存取在借用者装置中配置的本地随机存取存储器相同的方式字节存取借用存储器。
43.操作系统的存储器服务可用于在计算机系统中、在由多个操作系统通过非相干通信链路共享的统一地址空间下,构建多级字节可寻址存储器。例如,可穿戴计算装置可以通过个人区域网或局域网从移动计算装置借用存储器。可穿戴计算装置可以是智能手表、运动跟踪装置或智能眼镜,并且移动计算装置可以是智能手机、触摸板计算机或笔记本计算机等。可穿戴计算装置和/或移动计算装置可以通过局域网从计算设备借用存储器。例如,计算设备可以是小型服务器、台式计算机、存储器设备或存储设备等。移动计算装置和/或计算设备可以通过互联网和/或通过云计算从服务器计算机或服务器农场借用存储器。
44.在存储器资源的出借者-借用者的多级层次结构中,每个后续的较高级别装置(例如,移动计算装置、计算设备、服务器计算机或农场)可以使用它们的存储器容量来按需增加较低级别的装置(例如,可穿戴计算装置、移动计算装置、计算设备)和/或相同级别的装置的存储器容量。iot装置将构成环境,诸如建筑材料(混凝土墙、道路等)。可能是低密度、但体积庞大的廉价存储器技术将允许以非常低的成本在结构中集成低密度存储器(和计算)。因此,我们将有某种“存储器物质”(或者可能是计算物质)作为任何装置都可以使用的环境的一部分。
45.任选地,根据某些装置和/或网络连接的可用性,可以选择跳过层次结构中的某些级别。例如,可穿戴计算装置可以从计算设备借用存储器,而无需通过移动计算装置;并且
移动计算装置可以通过互联网从服务器计算机或服务器农场借用存储器,而无需经过局域网中的计算设备。
46.在设备和云级别上,存储器资源可以通过存储器即服务(maas)作为实用程序进行调配。根据需要,这种布置可以为诸如可穿戴计算装置、移动计算装置和/或物联网计算装置之类的低级计算装置提供巨大的持久存储容量和存储资源。在低级计算装置上运行的应用程序可以使用操作系统提供的存储器服务以透明的方式使用借用存储器,就好像借用存储器是借用者装置的本地存储器的一部分。因此,应用程序中不需要特殊编程来使用借用存储器。
47.在借用者装置上运行的应用程序可以使用借用存储器持久地存储数据,从而消除或减少通过文件系统存储数据的操作需求。例如,出借者设备/服务器可以提供持久随机存取存储器或存储容量,以向借用者装置提供存储器资源,并管理存储在所提供的存储器资源中的数据的持久性和/或冗余性,使得可将借用存储器视为借用者装置中的虚拟非易失性随机存取存储器。
48.任选地,作为服务提供的存储器可以包括客户机/借用者之间的存储器页面共享语义、锁定机制、超时机制等。
49.例如,作为借用者装置,手机可以通过无线局域网(wlan)(例如,通过家庭wi-fi接入点)从用作出借者装置的存储器装置获得8万亿字节(tb)的可观察存储器。在手机操作系统下运行的应用程序可以观察到8tb的存储器,方式与在具有8tb本地存储器的手机上运行的应用程序相同。可替代地,手机可以通过蜂窝通信网络从配置为出借者装置的服务器或云计算基础设施获得8tb的可观察存储器。任选地,手机可以从存储器设备借用8tb可观察存储器的一部分,从服务器或云计算基础设施借用8tb可观察存储器的一部分。手机的操作系统可以在手机上虚拟地提供8tb的可观察存储器,使得在手机上运行的应用程序可以使用虚拟/远程存储器,即使手机可能只有8兆字节(mb)的物理本地存储器也可以。8tb的借用存储器将手机的存储器容量扩展到8tb以上;对于在借用存储器的手机上运行的应用程序来说,手机的存储器容量似乎与拥有8tb以上本地随机存取存储器的手机相同。
50.因为借用者装置在借用存储器时通常不立即使用借用存储器,所以出借者装置不必在借用存储器时阻止分配借给借用者装置的存储器。出借者装置可以实现存储器的精简配置(例如,精简配置存储器),并且响应于借用者装置使用越来越多的借用存储器来递增地分配存储器。
51.在借用者装置的操作系统下运行的应用程序可以按需读写从借用者装置借用的存储器页面。出借者装置中的物理页面分配和/或借用者装置中的相应分配可以被配置为响应于页面上的写操作来执行。借用者装置的本地存储器的一部分可以被配置为高速缓存、代理和/或存取借用页面的孔。当在借用者装置上运行的应用程序存取虚拟页面时,借用者装置的操作系统可以将所存取的虚拟页面的内容迁移到本地存储器。当本地存储器页面已经一段时间没有被存取和/或将要被用于托管另一页面的内容时,借用者装置的操作系统可以将本地存储器中的虚拟页面的内容驱逐或迁移到借用者装置上的借用存储器。任选地,借用者装置的操作系统可以使用借用者装置的本地随机存取存储器的一部分作为关键数据的快速缓冲器,并且使用物理上驻留在远程出借者装置中的借用存储器来保存不太关键的数据。可以在需要时将不太关键的数据和/或不太常用的数据迁移到借用者装置的
本地随机存取存储器。
52.通常,层级中较低级别装置的出借者装置本身可以是借用者-出借者装置层次结构中较高级别的借用者装置。例如,作为借用者装置的手机可以从作为出借者装置的存储器设备借用8tb的存储器。作为借用者装置,存储器设备可以从服务器借用4tb存储器,并将从服务器借用的4tb存储器和4tb本地存储器合并到借给手机的8tb存储器中。在一些实施方式中,从服务器借用的4tb存储器可以被手机标识,使得当手机与设备之间的连接不可用时,手机可以使用到服务器的替代连接来继续使用4tb存储器,而不经过存储器设备。然而,替代连接可能比到存储器设备的连接慢,这是因为设备可能比远程服务器更靠近手机。
53.出借者装置的操作系统和借用者装置的操作系统可以相互通信,以便于通过出借者装置与借用者装置之间的通信链路进行无缝存储器存取。因此,在借用者装置上运行的应用程序开始使用存储器之前,没有必要在借用者装置中预先分配物理存储器。随着借用者装置上运行的应用程序占用空间的增加,页面逐出(eviction)流量和出借者装置存储器可用性决定了借用存储器的使用大小。取消对应用程序的出借者装置中的物理存储器预分配的要求(例如,在rdma协议的情况下所要求的)消除了对特殊编程的需要(例如,在rdma之上的消息传递接口(mpi)),并且允许应用程序以其原始代码在不同配置的装置中运行,同时利用横向扩展应用程序容量的所有好处,就像在rdma的情况下一样。
54.一般来说,出借者装置可以被配置为针对特定借用者装置以被动模式或主动模式操作。出借者装置可以针对不同的借用者装置以不同的模式运行。
55.在被动模式下,出借者装置的操作系统通过链接观察由借用者装置的操作系统高速缓存或迁移的存储器页面,并相应地修改其自己的对应于这些页面的页表条目。例如,可以通过总线监听或硬件监控来观察借用者操作系统执行的页面移动。
56.借用者装置的操作系统被配置为维护借用者装置的本地存储器和物理上驻留在出借者装置中的借用存储器的页表。一般来说,当借用者装置上运行的应用程序正在存取借用存储器的页面时,该页面的内容当前可能存储在借用者装置的本地存储器的页面中,也可能不存储在借用者装置的本地存储器的页面中。
57.当借用者装置存取在借用者装置的本地存储器中不存在的页面时,发生页面错误。出于我们的目的,我们认为页面错误发生在两种情况下:1)被存取的页面根本不存在;以及2)被存取的页面存在但不在本地存储器中。
58.如果页面不存在,它就不会被写入或读取。该页面没有页表条目(pte)。这是第一次存取该页面。如果在这样的页面上执行读取操作,则没有必要分配实际页面。一些操作系统(例如linux)可以提供一个用零填充的假页面,因为该页面从未被写入,因此不包含任何数据。因此,在这种页面上执行的读取操作结果为零。在这种情况下,os执行该页面错误的处理程序:tlb未命中会导致页面遍历,这决定了在没有pte的页面上执行读取操作。因此,返回一个到零页面的映射。
59.如果第一次在页面上执行写操作,这是真正的错误。真正的错误会在本地存储器中产生新的pte和页面分配。这种情况下的页面错误处理程序示例:tlb未命中导致页面遍历,这决定了在没有pte的页面上执行写操作。因此,操作系统分配新页面,生成pte,并将pte安装在页表中。在tlb高速缓存pte后,错误得到解决。
60.当在存取借用页面时发生页面错误并且页面内容当前不在借用者装置的本地存
储器中时(例如,在已经将借用页面的内容迁移/驱逐到出借者装置之后),借用者装置的操作系统可以通过借用者装置与出借者装置之间的通信链路与出借者装置通信,以检索或迁移借用页面的内容。
61.缓存操作可以结合上述两种情况下的处理来执行。例如,出借者装置可以保留页面副本。如果借用者装置没有进一步修改页面(例如,只对页面执行读取操作),该副本可能会很有用。在这种情况下,不需要驱逐,因为页面的真实副本已经存在于出借者装置上。类似地,当借用者装置与出借者装置之间的通信链路可以自由使用时,借用者装置可以执行页面的推测驱逐。
62.任选地,出借者装置和/或借用者装置可以配置有固件/硬件,其加速在出借者装置与借用者装置之间迁移内容的操作。
63.任选地,出借者装置的操作系统可以被配置为维护和操作其自己的一组页表和相关资源,诸如页表遍历器、转译后备缓冲器(tlb)、内容可寻址存储器(cam)、查找表等。
64.出借者装置的操作系统监控来自从出借者装置借用存储器的任何借用者装置的存储器存取请求。其可以被配置为在借用者装置之间提供页面共享的语义(例如原子、锁、信号量、标志、超时等)。因此,根据出借者装置中的页表,借用存储器的地址空间在借用者装置之间是统一的。通过出借者装置、与不同的实例应用程序在不同的借用者装置上运行而共享借用存储器,分布式应用程序可以利用统一的地址空间。
65.任选地,出借者装置可以被配置为接受来自借用者装置的请求,以产生关于借给借用者装置的存储器的特定区域的计算结果。因此,出借者装置不仅提供存储器资源,还提供用于处理借给借用者装置的存储器中的数据的计算能力。
66.借用者装置和出借者装置的操作系统提供的存储器服务允许在借用者装置上运行的应用程序以字节粒度寻址借用存储器,并以页面粒度解决错误。
67.借用者装置的操作系统可以通过借用者装置与出借者装置之间的通信链路将页面从本地存储器驱逐或迁移到出借者装置。借用者装置的操作系统可以基于页面的不频繁使用和/或基于该页面比其它页面使用得更少,或者基于关键度或任何其它可能的可测量系统参数,来标识用于从借用者装置的本地随机存取存储器驱逐或迁移到其借用存储器的页面。借用者装置的操作系统可以决定驱逐或迁移借用页面,以释放本地存储器用于其它用途,诸如新的本地页面分配或从借用者装置迁移页面。作为这种方法的结果,当前页面所有者(借用者或出借者)拥有该页面的真实副本。其它装置可能仍然会缓存它,以防在所有者释放页面后页面仍然没有被修改。例如,当借用者从出借者那里获得该页面时,出借者不再拥有该页面。但是,出借者不能删除页面副本,但可以保留它:如果页面在驱逐时没有被修改,就没有必要通过链接将它传输回出借者。如果出借者也想修改或提供给其它借用者怎么办?在这种情况下,所有的写操作都必须发生在出借者身上,以便合并来自不同借用者的写请求。
68.为了驱逐或迁移页面,借用者装置的操作系统将页面内容传送给出借者装置,使得出借者装置将页面存储在出借者装置的存储器中。然后,借用者装置的操作系统可以更新页表,以指示该页面现在在出借者装置中,而不在借用者装置的本地存储器中。
69.在活动模式下,出借者装置的操作系统可以被配置为监控借用者装置上的页表,标识未使用的页面,并针对其它存储器用户重新使用未使用的页面。
70.出借者装置与借用者装置之间的交互可以通过虚拟化来实现,这允许出借者装置监控借用者装置中的页表使用。
71.例如,借用者装置的操作系统可以部分虚拟化以用于出借者装置的操作系统中的操作。借用者装置的操作系统的一些存储器管理代码/子例程可以通过虚拟化被配置为在出借者装置上运行和/或作为出借者装置的操作系统的一部分。在这样的实施方式中,借用者装置的操作系统可以将存储器存取请求扩展到出借者装置的操作系统,以执行这样的子例程,这些子例程可以在出借者装置的操作系统级别由硬件/固件加速。
72.例如,出借者装置的操作系统可以创建虚拟存储装置并将虚拟存储器装置提供给借用者装置。借用者装置可以按需请求虚拟存储器装置,并使虚拟存储器装置可用于服务在借用者装置上运行的应用程序的存储器资源需求。
73.在一些情况下,如果在借用者装置上运行的应用程序可以容忍或接受由借用者装置与出借者装置之间的通信链路引起的延迟,则可以直接通过通信链路存取借用页面,而无需将整个页面迁移到出借者。在其它实施方式中,可以在子页面级别上配置内容迁移;并且仅迁移正在被存取和/或预测要被存取的页面部分。任选地,操作系统可以使用远程直接存储器存取(rdma)技术来实现直接存储器存取。任选地,这种直接存储器存取可以在存储器控制器和/或存储器管理单元处实现,从而避免标准rdma协议及其开销。
74.在一些实施方式中,借用者装置的操作系统被配置为动态调整虚拟存储器页面的物理位置。一页虚拟存储器由该页面的虚拟存储器地址指定。虚拟存储器页面可以最初位于借用者装置的本地存储器中,随后被移动到由出借者装置借给借用者装置的存储器中,接着被移动到借用者装置的另一本地页面中。
75.为了将虚拟页面从出借者装置迁移到借用者装置,借用者装置从出借者装置获取页面的内容,将内容存储在其本地存储器中,并更新相关页表以建立本地物理页面与虚拟页面之间的映射。一旦将虚拟页面迁移到借用者装置,出借者装置可以释放先前用于虚拟页面的物理存储器和/或擦除存储在那里的数据。任选地,出借者装置的操作系统可以保留先前用于虚拟页面的页面,并将其内容作为虚拟页面的备份副本。
76.相反,借用者装置的操作系统可以将虚拟页面从借用者装置迁移到出借者装置。例如,借用者装置的操作系统可以请求在出借者装置中分配借用页面,并且传输虚拟页面的内容以将其存储在出借者装置上的借用存储器中。一旦将虚拟页面的内容存储在出借者装置中,借用者装置的操作系统可以更新其虚拟页面的页表,以标识虚拟页面与其在借用存储器中的物理位置之间的映射,从而完成页面到出借者装置的迁移。在虚拟页面迁移之后,先前用于托管虚拟页面的本地存储器可以用于托管另一个虚拟页面。在这样的实施方式中,没有必要静态地将虚拟存储器或虚拟存储器地址空间的预定部分映射到出借者装置中的借用存储器。
77.此外,虚拟页面不必托管在预定的出借者装置中。例如,借用者装置的操作系统可以将虚拟页面从第一出借者装置迁移到借用者装置,然后将虚拟页面从借用者装置迁移到第二出借者装置。在一些情况下,借用者装置的操作系统可以请求将虚拟页面从第一出借者装置迁移到第二出借者装置,而无需将页面内容下载到借用者装置,然后将该内容上传到第二出借者装置。
78.使用存储器即服务(maas)技术,移动装置供应商可以在操作系统级别上销售具有
万亿字节存储器容量的移动装置,这将由包括云计算基础设施在内的出借者装置上的新兴存储器提供支持。例如,当智能手机连接到计算机网络或互联网或本地存储器设备或实现本文描述的maas概念的任何其它装置时,配置有128mb本地存储器的智能手机中的应用程序可以存取64tb随机存取存储器。
79.图1示出了一种系统,其中计算装置或服务器计算机可以从另一计算装置和/或另一服务器计算机借用存储器和/或向另一计算装置和/或另一服务器计算机出借存储器。
80.图1示出了计算装置(101和103)和服务器计算机(105和107),作为经由计算机网络和/或互联网(109)连接的借用者装置和出借者装置的示例,互联网可以包括蜂窝通信网络,诸如第五代蜂窝网络。
81.计算装置(101和103)和服务器计算机(105和107)中的每一个可以从另一个装置借用存储器和/或向另一个装置出借存储器。计算装置(101和103)和服务器计算机(105和107)中的每一个可以具有一或多个通信装置(例如,117、137、157和177),以彼此或与系统中的另一个计算装置或服务器计算机建立一或多个通信链路。计算装置(101和103)和服务器计算机(105和107)中的每一个可以具有一或多个处理器(例如,115、135、155和175),其被配置为执行指令,诸如操作系统(例如,113、133、153和173)的指令以及在操作系统下运行的应用程序或程序。
82.计算装置(101和103)和服务器计算机(105和107)中的每一个可以具有耦合(例如,经由存储器总线)到相应处理器(例如,115、135、155和175)的本地随机存取存储器(例如,111、131、151和171)。
83.在一些示例中,装置a(101)或装置b(103)可以是可穿戴计算装置、物联网计算装置、移动计算装置等。
84.在一些示例中,服务器p(105)或服务器q(107)可以是小型服务器、个人计算机、存储器设备、存储设备、网络存储装置、服务器计算机、服务器农场等。
85.在一个示例中,装置a(101)可以使用有线连接、无线个人区域网(wpan)、无线局域网(wlan)和/或无线广域网(wwan)连接到装置b(105)、服务器p(105)和/或服务器q(107)。
86.在另一个示例中,装置b(105)可以使用有线连接、无线局域网(wlan)和/或无线广域网(wwan)连接到服务器p(105)和/或服务器q(107)。
87.在另一个示例中,服务器p(105)可以使用有线连接、局域网、无线局域网(wlan)、无线广域网(wwan)和/或互联网连接到服务器q(107)。
88.服务器p(105)可以从服务器q(107)借用存储器,并将借用存储器和/或本地存储器借给装置(101和103)(和/或类似装置)。装置b(103)可以从服务器p(105)和/或服务器q(107)借用存储器,并将借用存储器和/或本地存储器借给装置a(101)(和/或类似装置)。
89.一般来说,计算装置可以将存储器借给一或多个借用者装置,并从一或多个出借者装置借用存储器。
90.操作系统(113、133、157和173)被配置为向应用程序和程序提供存储器服务,使得应用程序和程序可以在不知道其物理分配的情况下使用虚拟存储器,使得这一虚拟存储器可以部分分配在借用存储器中,部分分配在本地存储器(111、131、151和171)中。操作系统和支持硬件承担了应用程序和程序管理虚拟存储器分配的负担,这为应用程序和程序提供了便利,使其不需要特殊的代码段或指定的指令来处理本地存储器和借用存储器分配的差
异。
91.在一个示例中,服务器q(107)的本地存储器(171)的一部分被借给服务器p(105)。服务器p(105)将借用存储器的一部分和/或其本地存储器的一部分(151)借给装置b(103),而装置b又将其借用存储器的一部分和/或其本地存储器的一部分(131)借给装置a(101)。因此,由操作系统(113)分配给在装置a(101)的处理器(115)上运行的应用程序的虚拟存储器可以部分驻留在装置a(101)的本地存储器(111)中,部分驻留在装置b(103)的本地存储器(131)中,部分驻留在服务器p(105)的本地存储器(151)中,和/或部分驻留在服务器q(107)的本地存储器(171)中。操作系统(113、133、157和173)被配置为彼此协作,以提供存储器服务和/或在各种装置(例如,111、131、151和/或171)的本地存储器中由应用程序使用的虚拟存储器的物理分配,使得被编程为在装置a及其本地存储器(101)上运行的应用程序也可以在没有修改的情况下运行,其中其虚拟存储器部分地分配在由装置b(103)、服务器p(105)和/或服务器q(107)借给装置a(101)的借用存储器(131、151和/或171)中。
92.图2示出了借用者装置(201)和出借者装置(203),它们通过通信网络连接(诸如通过局域网、广域网和/或蜂窝通信网络(诸如第五代蜂窝网络)的有线或无线连接(205))实现操作系统间存储器服务。
93.在图2中,借用者装置(201)从出借者装置(203)借用存储器;并且出借者装置(203)将存储器(202)出借给借用者装置(201)。例如,借用者装置(201)可以是图1的系统中的装置a(101)、装置b(103)或服务器p(105);并且出借者装置(203)可以是图1的系统中的装置b(103)、服务器p(105)或服务器p(105)。进一步地,出借者装置功能可以在借用者装置(201)中实现,使其能够向另一装置出借存储器。类似地,借用者装置功能可以在出借者装置(203)中实现,使其能够从另一装置借用存储器。
94.在图2中,借用者装置(201)具有通信装置(217)、一或多个具有存储器管理单元(mmu)(216)的处理器(215)和本地随机存取存储器(211)。在一些实施例中,处理器(215)和本地存储器(211)可以在单独的计算机芯片中和/或形成在单独的集成电路管芯上,并且在其它实施例中,可以封装在同一计算机芯片中和/或形成在同一集成电路管芯上(例如,在片上系统(soc)中)。
95.借用者装置(201)的操作系统(213)包括被配置为维护存储器映射(207)的存储器服务模块(209)。存储器映射(207)标识虚拟存储器与物理存储器之间的映射,其中物理存储器可以部分在借用者装置(201)的本地存储器(211)中,以及部分在出借者装置(203)的出借存储器(202)中。操作系统(213)向在借用者装置(201)上运行的一或多个应用程序(例如,212)提供虚拟存储器服务。处理器(215)可以通过执行应用程序代码(212)的指令来运行应用程序(212)。应用程序存储器读写指令可以使用虚拟存储器。存储器管理单元(mmu)(216)根据存储器映射(207)将虚拟存储器地址转译成物理存储器地址。
96.当借用者装置(201)从出借者装置(203)借用存储器时,借用存储器(204)虚拟地在借用者装置(201)中,并且在物理上作为本地随机存取存储器(231)中的出借存储器(202)在出借者装置(203)中。任选地,出借者装置(203)可以在存储装置(234)中配置出借存储器(202)的一部分或其全部,该存储装置经由外围总线和/或装置控制器耦合到出借者装置(203)的处理器(235)。例如,出借者装置(203)的操作系统(233)可以以类似于将存储器资源作为虚拟存储器分配给在出借者装置(203)上运行的应用程序(例如,232)的方式,
将其存储器资源的一部分作为虚拟存储器分配给借用者装置(201)的操作系统(213)。因此,借用者装置(201)的操作系统(213)使用的借用存储器(204)可以在统一的虚拟存储器地址空间中,作为应用程序(232)使用的虚拟存储器和/或出借者装置(203)的其它借用者使用的借用存储器。可替代地,出借者装置(203)的操作系统(233)可以为借用存储器(204)创建虚拟存储器组件;并且借用者装置(201)的操作系统(213)可以使借用者装置(201)中的虚拟存储器组件可存取。用于虚拟存储器组件的虚拟存储器控制器可以在操作系统(213)中实现,以存取借用者装置(201)可存取的虚拟存储器组件。mmu 216可以实现硬件块来加速虚拟存储器控制器,并且通过这样做,提高虚拟存储器组件存取的速度。
97.在一些示例中,借用存储器(204)是隐式的,使得它与在借用者装置201上运行的应用程序的剩余虚拟存储器无法区分。仅当通过读取存储器映射207将虚拟页面地址转译为物理地址时,并且在该转译时,物理地址看起来在出借存储器202中时,区别才出现。在其它示例中,如果虚拟存储器属于如出借者装置(203)提供的借用存储器(204),则操作系统(213)存储虚拟存储器的部分的显式标识。在所有情况下,操作系统213将存储器映射(207)配置为存取出借者装置(203)以从虚拟存储器读取和向虚拟存储器写入,作为在迁移到该装置之后物理上在出借者装置(203)的出借存储器(202)中或借用者装置(201)中的借用存储器(204)。
98.存储器映射(207)可以通过页表来实现。一部分页表被高速缓存在存储器管理单元(mmu)(216)中,使得当在处理器(215)中执行的指令存取在存储器管理单元(mmu)(216)中高速缓存的那部分页表中定义的虚拟地址时,存储器管理单元(mmu)(216)将虚拟地址转译成物理地址。成功的地址转译允许处理器(215)继续进行存储器存取,而不需要执行操作系统(213)的代码。
99.当存储器管理单元(mmu)(216)不能使用高速缓存在存储器管理单元(mmu)(216)中的页表成功转译虚拟存储器地址时,生成页表条目高速缓存未命中,这使得处理器(215)执行操作系统(213)的存储器服务(209)的指令来解决这一高速缓存未命中。在一些实施方式中,mmu含有硬件ip,其被设计为解决mmu(216)的高速缓存中的页表条目高速缓存未命中。作为mmu的一部分,这一ip从存储在物理存储器211中的页表中提取所需的页表条目。如果所需条目不存在,或者如果所需条目存在,但是它将虚拟页面地址转译为物理出借存储器202中的地址,则为该页面生成页面错误。这一错误可以由mmu 216和通信装置217直接在硬件中解决。可替代地,这一错误可以由操作系统213和存储器服务209在以下硬件块的软件辅助下解决:mmu 216、处理器215、通信装置217。
100.当操作系统(213)或mmu 216的存储器服务(209)确定被存取的虚拟存储器地址在借用存储器(204)中时,存储器服务(209)或mmu 216可以分配本地物理存储器211的物理页面,经由通信装置217和237以及计算机网络连接205与出借者装置(203)通信,以将借用存储器(204)的页面从物理借用存储器202迁移到物理本地存储器211中,生成将虚拟页面映射到所分配的本地物理页面的页表条目,并将页表条目加载到存储器管理单元(mmu)(216)中。因此,在页面错误之前,借用存储器(204)的虚拟页面物理上位于出借者装置(203)中的出借存储器(202)中。在处理页面错误之后,虚拟页面位于本地存储器(211)中。出借者装置203的出借存储器202中的页面内容仍然可以被保存以供将来使用和其它目的。
101.当没有可用于迁移的空闲本地页面时,存储器服务(209)可以将当前在本地存储
器(211)中的所选虚拟页面驱逐到出借存储器(202)。当将所选虚拟页面驱逐到出借者装置(203)时,存储器服务(209)与出借者装置(203)通信,以将虚拟页面的内容从本地存储器(211)传输到出借存储器(202)并更新存储器映射(207)。在从本地存储器(211)逐出虚拟页面之后,可以释放本地存储器(211)中用于被驱逐出的虚拟页面的空间。
102.例如,存储器服务(209)可以被配置为驱逐最不频繁使用的虚拟页面或最近最少使用的虚拟页面。
103.在图2中,出借者装置(203)具有通信装置(237)、一或多个具有存储器管理单元(mmu)(236)的处理器(235)和本地随机存取存储器(231)。任选地,出借者装置(203)包括一或多个存储装置(234),该一或多个存储装置通过外围总线和/或计算机网络连接到处理器(235)。例如,存储装置(234)可以是固态驱动器(ssd)或硬盘驱动器(hd)。
104.出借者装置(203)的操作系统(233)包括被配置为维护存储器映射(227)的存储器服务模块(229)。存储器映射(227)标识虚拟存储器与物理存储器之间的映射。存储器映射可以存储在存储器231中,或者专用于它的存储器,诸如内容可寻址存储器或专用高速缓存。操作系统(233)以类似于借用者装置(201)服务于其应用程序(212)的方式服务于在出借者装置(203)上运行的一或多个应用程序(232)。
105.任选地,出借者装置(203)在统一的虚拟存储器空间中向借用者装置(201)提供出借存储器(202)。借用者装置(201)的存储器服务(209)以与应用程序(232)使用由存储器服务(229)提供的虚拟存储器的方式相同的方式使用借用存储器(204)。例如,出借者装置(203)的存储器服务(229)可以将虚拟存储器分配给在出借者装置(203)上运行的应用程序(232),并将虚拟存储器分配为借用者装置(201)的存储器服务(209)使用的借用存储器(204),就好像存储器服务(209)是在出借者装置上运行的应用程序一样。因此,在出借者装置(203)和借用者装置(201)(以及从出借者装置(203)借用存储器的其它装置)上运行的应用程序(232)可以在统一的虚拟地址空间中操作。可以基于统一的虚拟地址空间来配置协作计算。进一步地,当出借者装置(203)从另一装置/服务器(例如,105或107)借用存储器时,借用存储器也可以在统一的虚拟地址空间中提供。统一的地址空间可以便于计算装置之间的数据共享和协作计算。
106.出借者装置(203)的存储器服务(229)可以维护存储器映射(227),包括对应于由借用装置(201)存取的借用存储器(204)的出借存储器(202)的虚拟地址与出借存储器(202)的物理地址之间的映射。例如,在存取借用页面时可以将由借用者装置(201)标识的虚拟页面的页表条目加载到存储器管理单元(mmu)(236)中,以便于虚拟页面的地址与出借存储器(202)的物理地址之间的转译,供出借者装置(203)的处理器代表借用者装置(201)执行计算。任选地,出借者装置(203)可以包括类似于存储器管理单元(236)的硬件,以便于使用存储器映射(227)在出借者装置(203)与借用者装置(201)之间优化和/或加速数据传输,该存储器映射标识借用者装置(201)已知的借用存储器(204)与出借者装置(203)中物理可存取的出借存储器(202)之间的映射。
107.图3示出了根据一个实施例的实现借用存储器的技术。例如,图3的技术可以在图2所示的借用者装置(201)中实现。
108.图3示出了存储器(211)、被配置为使用物理地址(例如,257)存取存储器(211)的存储器管理单元(mmu)(216)、以及定义虚拟地址区域(例如,261、263、265
……
)和虚拟存储
器区域被映射到的地址区域(例如,物理地址区域(例如,281、283
……
)与借用存储器区域(例如,273、275
……
)之间的映射的存储器映射(207)。
109.例如,借用存储器地址区域(例如,273
……
275)可以被配置为将由出借者装置(203)分配的虚拟地址区域标识为提供/借给借用者装置(201)的存储器。
110.例如,虚拟地址区域a(261)与存储器映射(207)中的物理地址区域(281)相关联,以指示虚拟存储器区域当前直接映射到本地物理存储器(211)的相应区域。
111.例如,虚拟地址区域b(263)在存储器映射(207)中与借用存储器地址区域x(273)和物理地址区域s(283)相关联,以指示虚拟地址区域b(263)被映射到借用存储器地址区域x(273)并且物理地驻留在物理地址区域s(283)中。因此,对虚拟地址区域b(263)的存取可以通过存取本地存储器(211)中的物理地址区域s(283)来实现。虚拟地址区域c(265)在存储器映射(207)中与借用存储器地址区域y(275)相关联,并且不与存储器映射(207)中的任何物理地址区域相关联。因此,为了存取虚拟地址区域c(265),借用者装置需要与出借者装置通信。
112.物理地址区域s(283)中的内容可以被驱逐到出借者装置以释放物理地址区域s(283)。一旦将物理地址区域s(283)释放,它可以用于另一个借用存储器地址区域的物理放置,诸如借用存储器地址区域y(275)。一旦借用存储器地址区域y(275)的内容从出借者装置迁移到借用者装置到物理地址区域s(283),物理地址区域s(283)可以用于提供对虚拟地址区域c(265)的存取,该虚拟地址区域c映射到统一地址空间的借用存储器地址区域y(275)并且物理上位于借用者装置的物理地址区域s(283)中,如图4所示。
113.在图5中,存储器管理单元(mmu)(例如,类似于图3中所示的216)具有转译后备缓冲器(tlb)(例如,类似于图3中所示的251),其可以存储虚拟到物理存储器映射(253)(例如,由借用者装置(201)的操作系统(213)维护的存储器映射(207)的一部分)。当借用者装置(201)的处理器(215)执行使用虚拟地址(255)的指令时,tlb(251)使用虚拟到物理存储器映射(253)来将虚拟地址(255)转译成物理地址(257);并且存储器管理单元(mmu)(216)可以使用物理地址(257)来存取存储器(211)中的存储器页面(259)(例如,通过存储器总线)。
114.加载在tlb(251)中的虚拟到物理存储器映射(253)通常是由借用者装置(201)的操作系统(213)管理的存储器映射(207)的一部分。当借用者装置(201)的处理器(215)执行使用在tlb(251)中的虚拟到物理存储器映射(253)中未覆盖的虚拟地址的指令时,存储器管理单元(mmu)(216)可以使处理器(215)执行操作系统(213),该操作系统被编程为替换tlb(251)中的虚拟到物理存储器映射(253)的一部分,使得tlb(251)中更新的虚拟到物理存储器映射(253)包括用于将虚拟地址(例如,255)转译成物理地址(例如,257)的数据。
115.存储器管理单元(mmu)(216)通常被配置为经由耦合在借用者装置(201)的存储器管理单元(mmu)(216)与借用者装置(201)的本地存储器(211)之间的存储器总线来存取存储器(211)。当虚拟地址(255)最初在映射到借用存储器地址区域(例如,275)的虚拟地址区域(例如,265)中时,操作系统(213)可以将这一区域的内容从出借者装置的借用存储器迁移到存储器(211)中的物理地址区域(例如,283),并且更新tlb(251)中的虚拟到物理存储器映射(253),以允许将虚拟地址(255)直接转换成对应于虚拟地址(255)的物理地址(257),而无需将其转译成借用存储器地址区域(例如,275)。
116.在一些实施例中,存储器管理单元(mmu)(216)还被配置为使用通信装置(217)通过计算机网络连接(例如,205)存取借用存储器(204),而无需显式迁移。在这种情况下,操作系统(213)没有必要迁移虚拟地址区域(例如,265)的内容。借用存储器(204)的物理地址(257)可以包括用于通信装置(217)存取出借者装置(203)中的出借存储器(202)中的存储器页面(260)的信息。使用物理地址(257)并经由通信装置(217)做出的存储器存取请求可以在出借者装置(203)中通过其操作系统(233)进行处理。可替代地,通信装置(237)和/或存储器管理单元(mms)(236)可以被配置为处理对出借存储器(202)的这种存取请求(例如,用于读取或写入),而无需执行操作系统(233)(例如,基于高速缓存在出借者装置(203)的mms(236)的tlb中的虚拟到物理存储器映射或在出借者装置(203)中配置的硬件加速组件来执行类似的操作。
117.虚拟到物理存储器映射(253)可以以页表条目的形式实现。
118.图6示出了计算系统中的借用者-出借者存储器层次结构。
119.在图6中,出借者装置(203)可以以类似于图2中借用者装置(201)从出借者装置(203)借用存储器的方式从一或多个出借服务器(245)借用存储器。出借者装置(203)将其至少一些它的本地物理存储器(例如,图2中所示的231)和/或其从出借者服务器(例如,245)借用的一些存储器汇集成可用于借给借用者装置(201)的可用存储器(239)。一或多个借用者装置(201)可以从出借者装置(203)借用存储器。
120.典型的借用存储器(204)可以具有多个借用存储器区域(295、297
……
299)和多个本地存储器区域(291、293
……
)。借用者装置(201)中的借用存储器区域(295、297
……
299)可以通过从出借者装置的借用存储器迁移到借用者装置(291、293
……
)的本地存储器区域来存取。当借用存储器区域(295、297
……
299)没有在借用者装置(201)中使用时,它们可以被驱逐回到出借者装置(203),如图4和5所示。
121.类似地,出借者装置(203)可以在其本地存储器或者从出借者服务器(245)借用的本地存储器中托管借给借用者装置(201)的区域(例如,299)。
122.一般来说,可以使用多于一个的出借者装置(203)向借用者装置(201)提供存储服务;并且在该层次结构中可以配置多于一个的出借者服务器(245)。
123.任选地,在层次结构中作为服务提供的存储器(例如,295、297
……
299)被配置在统一的虚拟地址空间中。因此,在处理存储器中的数据时,借用者装置(201)、出借者装置(203)和出借者服务器(245)可以通过参考统一的虚拟地址空间中的虚拟地址来协作。
124.例如,图6中的借用者装置(201)可以是图1的系统中的装置a(101)或装置b(103)。
125.例如,图6中的出借者装置(203)可以是图1的系统中的装置b(103)或服务器p(105)。
126.例如,图6中的出借者服务器(245)可以是图1的系统中的服务器p(105)或q(107)。
127.图7示出了通过通信网络连接实现操作系统间存储器服务的方法。例如,图7的方法可以在图1的系统中实现,其中具有图2所示的借用者-出借者配置,和/或图6所示的借用者-出借者存储器层次结构。
128.在框301处,建立从借用者装置(201)到出借者装置(203)的通信连接(205)。
129.在框303处,借用者装置(201)与出借者装置(203)通信,以从出借者装置(203)借用一定量的存储器。出借者装置(203)可以将借用者装置(201)借用的借用存储器(203)分
配作为被借用存储器(204)用作虚拟存储器的借用存储器(204)。通过借用/出借存储器,装置(201和203)建立一种配置,其中借用者装置(201)的处理器可以读取和/或写入借用存储器(204)/出借存储器(202)。在一些情况下,出借存储器(202)本身是从另一个出借者装置(例如,245)借用的存储器。
130.在框305处,借用者装置(201)的操作系统(213)扩展借用者装置(201)的虚拟/逻辑地址空间以覆盖借用存储器(204)。借用者装置(201)的处理器(215)上运行的应用程序(例如,212)可以使用空间中的虚拟地址,而无需区分借用存储器(204)和本地存储器(211)。
131.在框307处,借用者装置(201)的操作系统(213)生成将逻辑地址空间的扩展部分映射到借用存储器(204)的存储器映射(207)(例如,以页表的形式)。
132.在框309处,借用者装置(201)的操作系统(213)将逻辑地址空间的扩展部分分配给应用程序(212)。
133.在框311处,借用者装置(201)的操作系统(213)通过存取借用者装置(201)的物理存储器(211)的一部分来提供对借用存储器(212)的存取服务。
134.图8示出了根据一个实施例的服务一页借用存储器的方法。例如,图8的方法可以在图1的系统中实现,其中具有图2所示的借用者-出借者配置,和/或图6所示的借用者-出借者存储器层次结构。例如,图8的方法可以用于实现图7的方法的框311。
135.在框331处,借用者装置(201)为借用存储器页面(204)保留借用者装置(201)的物理存储器(211)的页面。
136.在框333处,借用者装置(201)的处理器存取对应于借用存储器(204)中的存储器页面(260)的虚拟存储器地址(255)。借用存储器页面(204)在物理上可以在出借者装置(203)的出借存储器(202)中。
137.在框335处,借用者装置(201)的存储器管理单元(mmu)(216)确定在转译后备缓冲器(tlb)(251)中没有页表条目可用于将虚拟存储器地址(255)转译成本地物理存储器地址。这种确定(例如,tlb未命中)导致借用者装置(201)运行其操作系统(213)来搜索存储器映射中的页表条目。
138.在框337处,在借用者装置(201)上运行的操作系统(213)标识存储器映射中的页表条目,该页表条目将该页面的虚拟存储器地址转译成该页面的借用存储器地址。
139.在框339处,在借用者装置(201)上运行的操作系统(213)与出借者装置通信,并将具有借用存储器地址的借用页面的物理内容迁移到本地存储器,并将该内容放置在本地存储器的可用物理地址处。当没有足够的本地存储器用于从出借者装置到借用者装置的借用页面的页面迁移时,可能需要执行从借用者装置到出借者装置的不同借用页面的借用页面驱逐。
140.在框341处,在借用者装置(201)上运行的操作系统(213)生成页表条目,该页表条目将借用页面的虚拟地址(例如,255)映射到本地存储器中的物理地址(257)。
141.在框343处,在借用者装置(201)上运行的操作系统(213)将页表条目加载到转译后备缓冲器(tlb)(251)中,这允许处理器使用转译后的物理存储器地址(257)继续存取虚拟存储器地址(255)。
142.在一些情况下,借用者装置(201)和出借者装置(203)之间的计算机网络连接
(205)具有有限的和/或退化的通信带宽。借用者装置(201)可以基于存储器区域的关键度来节流分配给不同存储器区域的网络流量/带宽。
143.例如,借用存储器(204)的页面可以基于存储在存储器中的内容的类别、使用借用存储器的应用程序的优先级等级和/或由应用程序建议的数据关键度级别,用关键度指示符来标记。当借用者装置(201)和出借者装置(203)之间的连接带宽退化时,通过分配更少的通信带宽用于获取、退出、驱逐和/或迁移这些页面,可以将最不关键的页面配置为更难存取。鉴于借用者装置(201)和出借者装置(203)之间的连接带宽的退化,可以减慢和/或暂时切断对最不关键页面的存取。
144.停止存储器的操作可以通过暂停或挂起试图从该存储器中按需加载的应用程序来准备。在此期间,应用程序可能不会向前推进。当切断应用程序对借用存储器的存取时,可以执行适度的退化。可以让应用程序知道加载或存储操作可能导致挂起;可以使用完全不同的编程范例。例如,每个存储器存取都可以包装在一个try-catch异常包装器中。然而,这种方法成本很高。进一步地,可以处理应用程序可以被处以适度地处理这种异常。例如,应用程序可以保持某个上下文打开,并管理该上下文,与中止的加载/存储操作相关,通知数据移动基础结构该加载/存储最终是否仍需要服务。
145.当根据关键度节流借用存储器页面时,在借用存储器(204)上运行的应用程序仍然可以适度地退化而没有灾难性的故障,并且以较少的可达/可用内容继续减少的功能。
146.例如,媒体库可以基于使用频率、使用历史和/或预测使用来区分其内容的优先级。优先级可用于确定存储内容的借用存储器页面的关键度。因此,可以限制和/或切断对借用存储器中不太关键的内容的存取,从而减少对媒体库可用性的影响。
147.图9示出了具有不同关键度级别(或优先权级别)的存储器区域的借用者装置(201),基于该存储器区域,可以节流存储器即服务的网络流量。例如,借用者装置(201)可以以图2所示的方式实现,和/或可以在图6所示的层次结构中或在图1所示的系统中借用存储器。
148.在图9中,借用存储器(204)中的存储器区域(295、297
……
299)可以分别用关键度级别(401、403
……
405)来标记。关键度级别(401、403
……
405)对存储器区域(295、297
……
299)中的相对优先级进行排序。用于借用者装置(201)和其出借者装置(例如,203)之间的通信的网络带宽可以根据关键度级别(401、403
……
405)来分配。
149.例如,当多个区域(例如,295、297)需要从出借者装置(203)迁移到借用者装置(201)时,区域(例如,295、297)可以根据它们的关键度级别(例如,401、403)以顺序迁移。在这样的布置中,对高关键度级别的存储器区域的重复请求可能无限期地延迟对低关键度存储器区域的存取。
150.可替代地,带宽可以在不同关键度级别的多个区域(例如,295、297)之间共享。例如,在给定时间段内允许不同区域通过网络连接(205)的数据通信量可以根据基于存储器区域的关键度确定的比率来分配。因此,获取低关键度级别的存储器页面的内容将比获取高关键度级别的存储器页面的内容花费的时间更长。但是,低关键度页面的获取不会被高关键度页面的获取完全阻止。进一步地,可以基于总可用带宽来调整该比率,使得当总可用带宽退化时,存取高关键度页面的性能比存取低关键度页面的性能退化不那么严重。因此,可以通过选择性地降低不太关键的方面的存取速度来优化在借用者装置中运行的应用程
序的用户体验。
151.在图9中,本地存储器(211)中的存储器区域(例如,291
……
293)中的内容也可以用关键度级别(例如,407
……
409)来标记。关键度级别(例如,407
……
409)可用于在预期总可用带宽显著退化的情况下,安排不太关键的内容到借用存储器(204)的预测驱逐或迁移。
152.例如,在子页面粒度的带宽共享的特定模型中,可以使用链路级带宽管理能力或链路上的强制分块。这种实施方式可能导致潜在低效的非节流场景。可替代地,当管理的粒度是页面(而不是子页面)时,获取页面的速率可能较慢,而不是获取单个页面所花的实际时间。对于某些实施方式,获取低关键度级别的存储器页面的内容可能比获取高关键度级别的存储器页面的内容花更费的时间长。在其它实施方式中,获取低关键度页面所花费的持续时间可以基本上保持恒定,但是可以获取低关键度页面组的速率相对于高关键度页面组而言可能较慢。
153.例如,在一些情况下,借用者装置(201)从几个出借者装置(例如,103、105和/或107)借用存储器。例如,借用者装置(201)可以指示一个出借者(例如,105或107)将借给借用者装置(201)的存储器页面直接转移或复制到另一个出借者(例如,103或105)。可替代地,借用者装置(201)可以将存储器页面从一个出借者(例如,105或107)迁移到本地存储器,然后将该页面驱逐到另一个出借者(例如,103或105)。
154.图10示出了根据一个实施例的在存储器映射中标记存储器区域的关键度级别(或优先级)。例如,图10的存储器映射可以用来实现图9中的关键度标记。
155.在图10中,虚拟存储器地址区域(261、263、265
……
)可以以类似于图3、4或5中的方式的方式映射到物理地址区域(282、283)和借用存储器地址区域(273、275
……
)。例如,存储器映射(207)可以以页表的形式指定。
156.进一步地,对于虚拟地址区域(261、263、265
……
)中的每一个,存储器映射(207)可以包括关键度级别(例如,411、413或415)。关键度级别(例如,411、413或415)可用于确定虚拟地址区域(例如,261、263或265)可用于在借用者装置(201)与出借者装置(203)之间传送数据的带宽份额。
157.图11示出了根据一个实施例的标识存储器区域的关键度级别/优先级的方法。例如,图11的方法可用于确定图9和10中的任何关键度(例如,401至415)。
158.在图11中,可以基于内容类别(431)、控制内容的应用程序(例如,212)的优先级(433)和/或应用程序(例如,212)为内容请求的优先级来确定存储器区域的内容的关键度级别(421)。
159.不同的内容类别可以具有预定的权重。当应用程序分配用于存储数据的存储器页面时,应用程序可以标识存储器页面的内容类别(431),诸如应用程序状态、历史/日志数据、媒体、传感器数据等。操作系统(213)可以基于内容类别(431)为关键度分配预定的权重。
160.不同的应用程序可以为其关键度预先设定权重。用户装置的用户可能更看重一个应用程序(212)的体验,而不是另一个应用程序的体验,从而定制不同应用程序的权重分配。在一些情况下,不同的应用程序可能存在相互依赖性。因此,可以为向其它应用程序提供重要服务的应用程序分配更高的优先级(433)。
161.同一应用程序和同一内容类别(431)的不同数据子集可以具有不同的优先级
(435)。当应用程序(212)被编程为请求定制优先级(435)时,应用程序(212)可以基于操作系统(213)可能不可用的信息做出改进的预测(例如,439)。当应用程序(212)不请求定制优先级(435)时,操作系统(213)可以跟踪应用程序(212)的存储器使用情况,并请求内容的基于使用情况的优先级(435)。
162.可以使用预定的功能来组合内容类别(431)、应用程序优先级(433)
……
和/或所请求的优先级(435),以生成关键度级别(421)。例如,可以为内容类别(431)、应用程序优先级(433)
……
请求优先级(435)计算权重,并将其相加以获得作为关键度级别(421)的总权重。例如,优先级(433
……
435)可以被相加以生成权重,该权重被应用于通过乘法来增加或减少内容类别(431)的权重。
163.图12示出了根据一个实施例的节流存储器即服务的网络通信的方法。例如,图12的方法可以在图2、6或9所示的借用者装置(201)中实现。例如,在借用存储器时,图12的方法可以实现为图1的装置a(101)、装置b(103)或服务器p(105)。
164.在框451处,在借用者装置(201)与出借者装置(203)之间建立通信连接(例如,205)。例如,连接(205)可以通过图1所示的网络和/或互联网(109)。
165.在框453处,借用者装置(201)与出借者装置(203)通信,以获得借用者装置(201)使用由出借者装置(203)借出的一定量的存储器(202)的许可,以供借用者装置(201)通过通信连接(205)存取。
166.在框455处,借用者装置(201)的操作系统将虚拟存储器分配给在借用者装置(201)中运行的应用程序(例如,212)。
167.在框457处,借用者装置(201)的操作系统将虚拟存储器配置为至少部分基于出借者装置(203)借给借用者装置(201)的存储器量(202)。
168.在框459处,借用者装置(201)确定应用程序(例如,212)使用的存储器区域(例如,291至299、261至265、273至275和281至283)中的内容的关键度级别(例如,401至415)。
169.在框461处,借用者装置(201)基于关键度级别将通信连接(212)的网络带宽分配给存储器区域在存取出借者装置(203)通过通信连接(205)借给借用者装置(201)的存储器量(202)时使用的数据通信。
170.出借者装置(203)出借的存储器可以部分地由出借者装置(203)从另一装置(例如,245)借用。
171.可以至少部分地基于内容的类别(431)、控制内容的应用程序(例如,212)的优先级(433)、或应用程序(例如,212)为内容请求的优先级(435)或其任意组合来标识关键度级别(例如,401至415、421)。
172.例如,应用程序(例如,212)可以基于内容的使用历史、内容在后续时间段中的预测使用(例如,439)或内容的使用频率(例如,437)或其任意组合来请求存储在存储器区域中的内容的优先级(435)。在一些情况下,操作系统(213)可以收集使用历史,确定预测的使用(例如,439)和/或使用频率(例如,437),和/或代表应用程序(例如,212)计算请求的优先级(435)。
173.为了分配网络带宽,借用者装置(201)的操作系统(213)或借用者装置(201)的通信装置(217)可以根据与存储器区域中的内容的关键级别相对应的比率,在存取由出借者装置(203)借给借用者装置(201)的存储器量(202)时,节流/控制存储器区域在一段时间内
通过通信连接使用的数据通信量。因此,在该时间段期间,用于存储器区域的通信可被视为根据该比率而被允许;并且不同存储器区域的数据通信的平均速度可以被控制成与该比率成比例。
174.在一些情况下,借用者装置(201)可以预测通信连接的网络带宽在随后一段时间内的退化。作为响应,操作系统(213)可以根据存储器区域中内容的关键度,调整借用者装置的本地存储器(211)与出借者装置(203)借给借用者装置(201)的存储器量(203)之间的虚拟存储器的托管。
175.例如,借用者装置(201)的操作系统(213)可以标识具有低于第二存储器区域的关键度级别的第一存储器区域。操作系统(213)可以重新配置虚拟存储器的托管,使得与第一存储器区域相关联的虚拟存储器区域从托管或高速缓存在本地存储器(211)中迁移到托管在由出借者装置(203)借给借用者装置(201)的存储器量(202)中;并且与第二存储器区域相关联的虚拟存储器区域可以从托管在由出借者装置(2030借给借用者装置(201)的存储器量(202)中迁移到托管或高速缓存在借用者装置(201)的本地存储器(211)中。
176.在一些实施例中,计算装置的存储器管理单元(mmu)被配置为加速通过网络连接对借用存储器的存取。
177.例如,借用者装置(201)的存储器管理单元(mmu)(216)不仅可以被配置为通过存储器总线存取借用者装置(201)的本地随机存取存储器(211),还可以使用通信装置(217)通过网络连接(205)存取托管在出借者装置(203)的出借存储器(202)中的借用存储器(204)。存储器管理单元(mmu)(216)可以根据由存储器管理单元(mmu)(216)从虚拟地址(255)转译的物理地址(257)使用通信装置(217)来存取出借者装置(203)中的出借存储器(202),而无需使借用者装置(201)的处理器(215)执行其操作系统(213)的指令。
178.例如,由操作系统(213)在存取出借存储器(202)时执行的一些例行操作可以在存储器管理单元(mmu)(216)中实现,使得例行操作可以在处理器(215)未在其执行单元中执行指令的情况下执行。这种mmu实施方式/支持可以提高处理器(215)存取物理上在出借者装置(203)的出借存储器(202)中的借用存储器(204)的效率。
179.通常,操作系统(213)可以被编程为处理比存储器管理单元(mmu)(216)所能处理的更多的情况。例如,当通过网络连接(205)存取出借存储器(202)的通信遇到超出存储器管理单元(mmu)(216)处理能力的异常情况时,可以执行操作系统(213)来处理这种情况。
180.图13至15示出了根据一些实施例的存取借用存储器的硬件加速配置。例如,图13至15的技术可以在图1或6的系统中实现,其中具有图2的存储器服务技术和图3的存储器映射技术。
181.在图13中,借用者装置(201)的存储器管理单元(mmu)(216)被配置为具有到本地随机存取存储器(211)的连接和到借用者装置(201)的通信装置(217)的连接。在一些情况下,通信装置(217)是存储器管理单元(mmu)(216)的一部分。
182.高速缓存在转译后备缓冲器(tlb)(251)中的虚拟到物理存储器映射(253)包含将虚拟地址(256)转译成物理地址(257)的信息。
183.当在借用者装置(201)的执行单元(215)中执行指令时,存储在多个寄存器(501)中的一个寄存器中和/或由执行单元生成的虚拟地址(255)可用于加载指令、检索操作数和/或存储计算结果。在这种情况下,借用者装置(201)存取由虚拟地址(255)标识的虚拟存
储器。
184.当由虚拟地址(255)标识的虚拟存储器托管在本地存储器(211)中的存储器页面(259)中时,物理地址(257)被配置为足以使存储器管理单元(216)为存储器操作(例如,读或写)寻址存储器页面(259)。
185.当由虚拟地址(255)标识的虚拟存储器托管在出借者装置(203)物理内部的出借存储器(202)中的存储器页面(260)中时,物理地址(257)被配置为包括足够的信息,便于通信装置(217)通过计算机网络连接(205)向出借者装置(203)发送存取请求。
186.例如,当由虚拟地址(255)标识的虚拟存储器托管在出借存储器(202)中的存储器页面(260)中时,物理地址(257)可以包括出借者装置(203)的网络地址和出借者装置(203)的操作系统所服务的虚拟存储器空间中的虚拟存储器地址。存储器管理单元(mmu)(216)请求通信装置(217)使用网络地址向出借者装置(203)发送存取请求;并且存取请求包括标识出出借者装置(203)中的存储器页面(260)的虚拟地址。
187.当通信装置(237)接收到存取请求时,通信装置(237)可以被配置为以类似于处理器(235)指示存储器管理单元(mmu)(236)存取虚拟地址的方式,指示存储器管理单元(mmu)(236)存取由来自借用者装置(201)的存取请求中包括的虚拟地址所标识的存储器页面(260)。在一些情况下,通信装置(237)是存储器管理单元(mmu)(236)的一部分。
188.例如,当使用出借者装置(203)的虚拟到物理存储器映射将虚拟地址转译成存储器页面(260)的物理地址时,存储器管理单元(mmu)(236)执行地址转译并使用物理存储器地址来存取存储器页面(260)。当用于虚拟地址转译的虚拟到物理存储器映射还没有在出借者装置(203)的存储器管理单元(mmu)(236)中时,可以执行出借者装置(203)的操作系统(233)以将虚拟到物理存储器映射的相关部分加载到出借者装置(203)的存储器管理单元(mmu)(236)中,使得存储器管理单元(mmu)(236)可以执行地址转译以存取存储器页面(260)。
189.在一些情况下,出借者装置(203)可以将借用者装置(201)使用的虚拟地址托管在存储装置(232)中。响应于存储器管理单元(mmu)(236)中转译虚拟地址的错误/页面错误,存储器管理单元(mmu)236)使处理器(235)执行操作系统(233),该操作系统将数据内容从存储装置(232)加载到出借存储器(202)中,更新存储器管理单元(mmu)236)的转译后备缓冲器(tlb),以便于存取。可替代地,操作系统(233)可以直接从存储装置服务存取请求,而不将其高速缓存或缓冲或重新托管在出借者装置(203)的本地存储器(231)中。
190.在一些情况下,出借者装置(203)可以将借用者装置(201)使用的虚拟地址托管在另一个出借者装置(例如,205)中。在这种情况下,出借者装置(203)可以以类似于借用者装置(201)存取出借者装置(203)的方式存取其出借者(例如,205)。
191.任选地,当借用者装置(201)的执行单元(215)中的一个执行单元中被存取的虚拟地址(255)被转译成物理地址(257)以便通过通信装置(217)存取时,通信装置(217)可以将虚拟地址区域从出借者装置(203)迁移到通信装置(217)的缓冲器(505)中,如图14所示。
192.例如,当虚拟存储器页面中的虚拟地址(256)被存取时,通信装置(217)可以将整个页面(或其一部分)迁移到通信装置(217)的缓冲器(505)中,以预期对该页面的进一步存取。
193.可替代地,借用者装置(201)的存储器管理单元(mmu)(216)可以被配置为保留一
部分本地随机存取存储器(211)作为缓存一部分出借存储器(203)的缓冲器,如图15所示。
194.任选地,借用者装置(201)的存储器管理单元(mmu)(216)可以进一步被配置为以类似于图5所示的方式管理虚拟物理存储器页面(253)中标识的虚拟存储器区域的托管的调整。
195.例如,当存储器管理单元(mmu)(216)确定托管在出借者装置(203)的出借存储器(202)中的虚拟区域比托管在本地存储器(211)中的虚拟区域更频繁和/或最近被存取时,存储器管理单元(mmu)(216)可以使用通信装置(217)将更频繁和/或最近被存取的虚拟区域迁移到托管在本地存储器(211)中,并且驱逐不太频繁和/或最近存取的虚拟区域,使其托管在出借存储器(202)中。因此,存储器管理单元(mmu)(216)可以优化高速缓存在转译后备缓冲器(tlb)(251)中的虚拟到物理存储器映射(253)中标识的虚拟存储器区域的托管,并根据调整更新高速缓存在转译后备缓冲器(tlb)(251)中的虚拟到物理存储器映射(253)。借用者装置(213)的操作系统(213)可用于进一步调整其它虚拟存储器区域的托管。
196.图16和17示出了根据一些实施例的硬件加速配置,以提供对出借存储器的存取。例如,图13、14或15所示的出借者装置(203)的配置可以用图16或17的配置来代替。
197.在图16中,出借者装置(203)具有外围总线(511)和存储器总线(513)。
198.出借者装置(203)的通信装置(237)和存储装置(232)经由外围总线(511)连接到出借者装置(203)的处理器(235)。出借者装置(203)的本地随机存取存储器(231)经由存储器总线(513)连接到处理器。
199.操作系统(233)可以最初存储在存储装置(232)中,随后加载到随机存取存储器(231)中以供执行。
200.当通信装置(237)接收到标识由操作系统(233)为借用者装置(201)使用的借用存储器(204)分配的虚拟存储器地址(509)的存储器存取请求(507)时,通信装置(237)被配置为请求处理器(235)根据存储器存取请求(509)进行处理。
201.在通信装置(237)接收存取请求(507)时,在出借者装置(203)中运行的操作系统(233)可以将虚拟地址(509)托管在存储装置(232)或随机存取存储器(231)中(例如,经由存储器映射(227)的配置)。
202.如果虚拟地址(509)托管在存储器(231)中,并且存储器管理单元(mmu)(236)具有存储器映射(227)的高速缓存部分来转译虚拟地址(509),则处理器(235)可以通过存取从存储器映射(227)的高速缓存部分确定的存储器页面(260)的物理地址来处理存取请求(507)。
203.如果虚拟地址(509)托管在存储器(231)中,并且存储器管理单元(mmu)(236)不具有用于转译虚拟地址(509)的存储器映射(227)的高速缓存部分,则处理器(235)可以执行操作系统(233)来更新存储器映射(227)的高速缓存部分,使得存储器管理单元(mmu)(236)可以将虚拟地址(509)转译成存储器页面(260)的物理地址。
204.如果虚拟地址(509)托管在诸如硬盘驱动器或固态驱动器的存储装置(232)中,则存储器管理单元(mmu)(236)不具有用于转译虚拟地址(509)的存储器映射(227)的高速缓存部分(例如,通过生成页面错误)。作为响应,存储器管理单元(mmu)(236)使处理器(235)执行操作系统(233),该操作系统可以被配置为通过存取存储装置(232)和/或将虚拟存储器区域(例如,虚拟存储器页面)迁移到随机存取存储器(231)中来实现存取请求(507)。
205.如果虚拟地址(509)驻留在另一个出借者装置(例如,245)中,则出借者装置(203)将虚拟地址(509)转译成标识其出借者装置(例如,245)的网络地址的物理地址和由其出借者装置(例如,245)分配的虚拟地址(其可以任选地被配置为与统一地址空间中的虚拟地址(509)相同)。然后,出借者装置(203)可以以类似于借用者装置(201)存取出借者装置(203)的方式存取其出借者装置(例如,245)。
206.存取请求(507)可以以对应于在借用者装置(201)的处理器(215)中的指令执行期间所请求的存储器存取的形式来配置。例如,当借用者装置(201)的处理器(215)请求从虚拟地址(255)加载指令时,存取请求(507)被配置为请求从虚拟地址(509)检索指令(其可以任选地被配置为与统一地址空间中的虚拟地址(255)相同)。
207.例如,当借用者装置(201)的处理器(215)请求从虚拟地址(255)加载操作数时,存取请求(507)被配置为请求从虚拟地址(509)检索操作数;并且当借用者装置(201)的处理器(215)请求在虚拟地址(255)存储计算结果时,存取请求(507)被配置为请求从虚拟地址(509)检索操作数。
208.任选地,存取请求(507)可以被配置为实现虚拟地址区域的迁移。例如,当虚拟地址(509)被存取时,通信装置(237)被配置为自动促进出借者装置(203)与借用者装置(201)之间的虚拟存储器区域的迁移。
209.任选地,通信装置(237)被实现为出借者装置(203)的存储器管理单元(mmu)(236)的一部分。
210.任选地,存储器管理单元(mmu)(236)被配置为包括网络控制器(523)以操作通信装置(237),如图17所示。
211.在图17中,存储器管理单元(mmu)(236)具有存储器控制器(521),其被配置为使用存储器(231)的物理地址来存取存储器页面(260)。进一步地,存储器管理单元(mmu)(236)具有网络控制器(521),其被配置为处理基于网络的存储器存取请求(例如,507)。这种基于网络的存储器存取请求(507)可以是来自借用者装置(例如201)或出借者装置(例如245)的请求。
212.图18示出了根据一个实施例的通过存储器管理单元加速对借用存储器的存取的方法。例如,图18的方法可以在图1所示的装置a(101)或装置b(103)或服务器p(105)中实现。例如,图18的方法可以在图2、6、9、13、14或15所示的借用者装置(201)中实现。例如,图18的方法可以在图2、3或13至17所示的存储器管理单元(216)或存储器管理单元(236)中实现。
213.在图18中的框531处,存储器管理单元(例如,216或236)在存储器管理单元(例如,216或236)的转译后备缓冲器(例如,253)中高速缓存虚拟到物理存储器映射(例如,253)。
214.例如,虚拟到物理存储器映射(例如,253)可以是由其中配置了存储器管理单元(例如,216或236)的计算装置(例如,201或203)的操作系统(例如,213或233)管理的页表的一部分。
215.在框533处,存储器管理单元(例如,216或236)接收存取虚拟存储器地址(例如,255或509)的请求,以便在微处理器(例如,215或235)中执行指令。
216.例如,虚拟存储器地址(255)可以存储在寄存器(501)中,用于在处理器(215)中执行指令。虚拟存储器地址(255)可用于从虚拟存储器地址(255)加载指令,从虚拟存储器地
址(255)加载指令的操作数,或者存储指令执行后由执行单元(503)生成的计算结果。
217.在一些情况下,虚拟存储器地址(509)在通信装置(237)中在从到借用者装置(例如,201)的网络连接的存储器存取请求下被接收;并且通信装置(237)被配置为请求存储器管理单元(236)处理存取请求(507)。
218.在框535处,存储器管理单元(例如,216或236)使用高速缓存在转译后备缓冲器(例如,253)中的虚拟到物理存储器映射(例如,253)将虚拟存储器地址(例如,255)转译成物理存储器地址(例如,257)。
219.在框537处,确定物理存储器地址(例如,257)是否用于本地存储器(例如,211或231)。
220.例如,存储器管理单元(例如,216或236)可以经由存储器控制器(例如,521)连接到存储器总线(例如,511),并且经由网络控制器(523)连接到计算机网络(例如,109)。
221.在框539处,如果确定(537)将物理存储器地址(例如,257)用于本地存储器(例如,211或231)(例如,第一存储器类型),则存储器管理单元(例如,216或236)指示连接到存储器总线(513)的存储器控制器(521)存取物理地址(257)处的存储器页面(259)。
222.在框541处,如果确定(537)不将物理存储器地址(例如,257)用于本地存储器(例如,211或231)(例如,第二存储器类型),则存储器管理单元(例如,216或236)指示连接到计算机网络连接(205)的网络控制器(523)根据物理地址(257)存取存储器页面(260)。
223.被配置为执行图18的方法的存储器管理单元(mmu)(216或236)可以用在借用者装置(201)或为另一装置(例如245)借用存储器的出借者装置(203)的微处理器(215或235)中。
224.具有这种存储器管理单元(mmu)(216或236)的通信装置(例如201或203)可以具有耦合到本地随机存取存储器(例如211或213)的存储器总线,以及至少一个微处理器(例如215或235)。微处理器(例如215)可以进一步具有寄存器(例如501)和执行单元(例如503)。
225.计算装置(例如,201或203)具有包括指令的操作系统(例如,213或233),当由至少一个微处理器(例如,215或235)执行时,这些指令使得计算装置使用通信装置(例如,217或237)通过网络连接(205)从出借者装置(例如,203或245)借用一定量的存储器。
226.执行单元(503)被配置为至少使用映射到从出借者装置(例如,203或245)借用的存储器量的虚拟存储器地址来执行指令。
227.例如,在从寄存器(501)中检索用于在执行单元(503)中执行指令的第一虚拟存储器地址(255)之后,存储器管理单元(mmu)(215)将第一虚拟存储器地址(255)转译成第一物理地址(257)和第二虚拟存储器地址(509),该第一物理地址通过网络连接(205)标识出出借者装置(例如,203或245)。存储器管理单元(mmu)(215)指示通信装置(217)使用第二虚拟存储器地址存取由出借者装置(203)通过网络连接(205)借给计算装置(201)的存储器(260)。
228.例如,第一物理地址(257)可以包括出借者装置(203)的计算机网络地址。
229.在执行单元(503)中执行指令可以生成在第一虚拟存储器地址(255)处读取或写入的存储器操作;并且存储器管理单元(253)被配置为生成对第二虚拟存储器地址(509)处的存储器操作的请求(507),并且指示通信装置(217)通过通信连接(205)将该请求(507)发送到出借者装置(203)。
230.在操作上,第二虚拟存储器地址(509)可以等于第一虚拟存储器地址(255),使得出借者装置(203)和借用者装置(201)可以使用统一的虚拟地址空间。例如,操作系统可以被配置为基于由出借者装置(203)在统一的虚拟地址空间中指定的虚拟存储器地址来接收借用存储器量(204)的标识;并且操作系统可以被配置为直接从统一的虚拟地址空间中的虚拟存储器地址向应用程序分配虚拟存储器。
231.任选地,存储器管理单元(217)包括缓冲器(505);并且存储器管理单元(216)进一步被配置为响应于从寄存器(501)接收到第一虚拟存储器地址(255),指示通信装置(217)与出借者装置(203)通信,以在缓冲器(505)中为出借者装置(203)借给借用者装置(201)的存储器(202)的一部分量建立高速缓存。例如,当使用页表中的虚拟地址(255)时,通信装置(217)可以根据页表对存储器页面进行高速缓存。
232.任选地,存储器管理单元(217)进一步被配置为动态地改变虚拟存储器与物理存储器之间的存储器映射。例如,由一组虚拟存储器地址标识的虚拟存储器可以最初被映射(例如,在转译后备缓冲器(tlb)(251)中)到由出借者装置(203)借给借用者装置的存储器(202);并且可以改变映射以将虚拟存储器重新映射到本地随机存取存储器的一部分(211)。
233.例如,存储器管理单元(217)可以交换在转译后备缓冲器(tlb)(251)中高速缓存的虚拟到物理存储器映射(253)中标识的两个虚拟存储器区域的映射,使得最初映射到本地存储器(211)中的区域的第一虚拟存储器区域被重新映射到出借者装置(203)中的出借存储器(202)中的区域,并且最初映射到出借者装置(203)中的出借存储器(202)中的区域(或另一区域)上的第二虚拟存储器区域被重新映射到本地存储器(211)中的区域(或另一区域)。
234.例如,存储器管理单元(217)可以进一步被配置为基于过去一段时间内的存储器使用历史或随后一段时间内的预测存储器使用来标识用于交换的第一虚拟存储器区域和第二存储器区域。例如,最近最少使用和/或最不频繁使用的虚拟存储器页面可以从本地存储器(211)交换到出借存储器(202);并且最近使用和/或最频繁使用的虚拟存储器页面可以从出借存储器(202)交换到本地存储器(211)。
235.可以在借用者装置和/或出借者装置上配置人工智能(ai)代理,以预测存储器即服务(maas)的网络连接退化。响应于该预测并且在网络连接性退化发生之前的时间段内,借用者装置和/或出借者装置的操作系统可以标识在网络退化或中断的时间段内可能需要通过网络连接迁移的内容,并且在网络退化或中断之前开始内容迁移,使得相关内容可以在网络退化或中断期间被本地存取,并且使得可将重要数据备份在安全的位置。
236.例如,在网络退化或中断期间预测将在借用者装置中使用的数据可以基于预测的使用和/或数据的关键度被预取给借用者装置。
237.例如,在网络退化或中断期间(例如,由于借用者装置断电或借用者装置可能经历的危险情况),可能在借用者装置中丢失和/或预测需要在出借者装置中备份的某些数据可以被复制到出借者装置,以最小化数据丢失的可能性。
238.例如,当手机检测到用户将驾车通过蜂窝数据连接不可靠的山区时,在手机中运行的ai代理可以将借用者装置地图和/或山区服务的其它关键数据预取到本地存储器或存储中。预测在该时间段内未使用的数据可以被复制到或交换到由出借者装置/服务器借给
借用者装置的存储器中,以在手机中为预取的内容腾出空间。
239.例如,无人机可以被安排出发执行关键任务;并且基于计划的任务/操作,无人机可以预取将在该特定任务/操作中使用的数据(例如,特征获取库和/或人工神经网络模型,以检测某些对象,例如坦克)。
240.例如,手机或可穿戴装置可以检测到电池电量低于阈值水平(例如,50%);并且响应于在网络退化或中断的时间段期间可能发生的预测中断(例如,基于电力使用历史和/或位置历史/时间表确定),装置可以将某些重要数据推送到其从出借者装置或服务器借用的存储器,以避免数据丢失。
241.图19和20示出了根据一些实施例的被配置为执行智能内容迁移的借用者装置和出借者装置。
242.例如,图19至20的技术可以在图1或6的系统中实现,其中具有图2的存储器服务技术和图3的存储器映射技术。可以通过结合图13至18讨论的存储器管理单元(216和236)来加速内容迁移。
243.在图19中,借用者装置(201)具有人工智能(ai)代理(571),其任选地被配置为操作系统(213)的一部分。ai代理(571)被配置为基于由操作系统(213)收集的各种信息,诸如存储器使用历史(573)、位置历史(575)、预定操作(577)、电池功率水平(579)(例如,当借用者装置(201)通过电池供电时)、电池使用历史等,生成内容迁移决策(580)。
244.ai代理(571)可以被配置为基于由操作系统(213)收集的信息(573、575、577
……
和/或579),对在预测的网络退化/中断的时间段中使用不同存储器区域的可能性进行排名。例如,可以训练人工神经网络,以基于信息(573、575、577
……
和/或579)的定时,生成对网络中使用不同存储器区域(例如,图10所示的263、265
……
)的可能性进行排序的分数。
245.基于不同存储器区域在随后的时间段中被使用的可能性和/或存储器区域的内容的关键度(例如,图11中所示的421),ai代理(571)可以生成迁移决策(580)以改变虚拟存储器区域所托管的物理存储器区域。
246.例如,可能在网络退化或中断期间使用的虚拟存储器区域可以从托管在物理上位于另一装置(例如,103、105、107)中的借用存储器(204)上迁移到托管在借用者装置(201)的本地随机存取存储器(211)或本地存储装置(232)上。例如,本地存储装置(232)可以是闪存驱动器/存储器、固态驱动器、硬盘驱动器等。
247.例如,直到网络退化或中断之后才可能在借用者装置(201)中使用的虚拟存储器区域可以在相反的方向上迁移,从托管在借用者装置(201)的本地随机存取存储器(211)或本地存储装置(232)上,到托管在物理上位于另一装置(例如,103、105、107或203)中的借用存储器(204)上。从本地存储器/本地存储到借用存储器/出借存储器的迁移也可以用作将重要数据保存或备份到比借用者装置(201)更可靠的位置(例如,出借者装置或服务器)以保存数据的方式。
248.ai代理(571)可以被配置为不仅基于虚拟存储器区域被使用的可能性,而且基于虚拟存储器区域对于与虚拟存储器区域相关联的期望功能的关键度(421),以及在预测的网络退化或中断的时间段期间网络连接的性能水平,来对用于迁移的虚拟存储器区域进行评分。对迁移虚拟存储器区域的好处进行评分可以用主动迁移虚拟存储器区域的成本来衡量,这会降低预取/迁移期间的性能和/或在最终不使用迁移的数据时产生不必要的成本。
当好处分数高于迁移虚拟存储器区域的成本分数时,ai代理(571)可以决定将虚拟存储器区域迁移到一或多个出借者装置(例如,103、105、107或203)。
249.任选地,ai代理(571)可以至少部分地在出借者装置(例如,103、105、107或203)中实现,如图20所示。
250.例如,出借者装置(例如,203)可以包括监控借用者装置(例如,201)所使用的出借存储器(202)的使用的ai代理(572)。出借者装置(例如203)的操作系统(233)可以跟踪借用者装置(201)的存储器使用历史(573)、借用者装置(201)的位置历史(575)、借用者装置(201)的预定操作(577)等。借用者装置(201)可以提供与借用者装置(201)的状态相关的某些信息,诸如借用者装置(201)的电池功率水平(579)、借用者装置(201)的当前位置、借用者装置(201)的预定操作(577)。
251.例如,借用者装置(201)可以通过将信息(例如,573至579)存储在出借者装置(203)借给借用者装置(201)的借用存储器(204)中来共享关于其操作的信息(例如,573至579)。因此,出借者装置(203)和借用者装置(201)可以通过存储即服务(maas)共享信息(例如,573至579)。
252.进一步地,ai代理(571和/或572)可以被配置为在出借存储器(202)/借用存储器(204)中运行。因此,出借者装置(203)和借用者装置(201)可以以协作方式运行ai代理(571和/或572)。
253.例如,借用者装置(201)可以执行ai代理(571)来提供和/或更新关于借用者装置(201)的信息,诸如位置历史(575)和电池功率水平(579),然后请求借用者装置(201)执行ai代理(571/572)来做出迁移决策(580)。
254.例如,借用者装置(201)可以分配虚拟存储器区域用于运行ai代理(571)。虚拟存储器区域最初可以托管(或高速缓存)在借用者装置(201)的本地存储器(211)中,以提供和/或更新信息(例如,573、575、557
……
和/或579),这些信息也可以存储在虚拟存储器区域中。随后,借用者装置(201)可以将虚拟存储器区域迁移到借用存储器(204);并且将虚拟存储器区域的内容存储在出借者装置(203)的出借存储器(202)中。出借者装置(203)可以继续执行ai代理(571)(例如,作为ai代理(572)),以做出迁移决策(580)。借用者装置(201)可以进一步运行ai代理(571)来为未来的迁移决策(580)提供附加信息和/或更新状态。因此,借用者装置(201)可以提供由ai代理(571/572)使用的数据;并且出借者装置(203)可以提供处理数据的计算能力。
255.在一些实施例中,计算装置(例如,图1中的201和203,或101至107)被配置有存储器即服务,其允许在计算装置之间自由地迁移虚拟存储器区域的托管。当虚拟存储器区域被托管在其中一个装置上时,当前托管虚拟存储器区域的装置作为出借者向虚拟存储器区域的其它计算装置提供其存储器资源。当虚拟存储器区域的托管被迁移到另一个装置时,该装置作为出借者向虚拟存储器区域的其它计算装置提供其存储器资源。给定的计算装置可以作为一组虚拟存储器区域的出借者和另一组虚拟存储器区域的借用者;并且对于特定的虚拟存储器区域,计算装置作为借用者或出借者的角色可以不时地动态改变。具有大的本地存储器资源的计算装置可以比其它计算装置托管更多的虚拟存储器区域。计算装置可以通过存储器即服务(maas)共享它们的本地存储器资源。当网络连接(例如,205)可用时,虚拟存储器区域可以从一个装置自由迁移到另一个装置(例如,在图1所示的系统中)。
256.图21至24示出了根据一些实施例的内容移动。
257.图21示出了借用者装置(201)为虚拟地址区域(581)借用出借者装置(203)的存储器资源。借用者装置(201)存储将虚拟地址区域(581)与出借者装置标识符(583)相关联的存储器映射(207)。
258.例如,出借者装置标识符(583)可以是出借者装置的互联网协议(ip)地址、出借者装置的主机名(203)、出借者装置的统一资源定位符(url)(203)、通用唯一标识符(uuid)等。
259.基于出借者装置标识符(583),借用者装置(201)可以存取出借者装置(203)中的物理存储器区域(586)。例如,借用者装置(201)的mmu(216)或者在借用者装置(201)的处理器(215)中运行的借用者装置(201)的操作系统(213)可以生成如图17所示的存储器存取请求(507)。在虚拟地址区域(581)中的虚拟地址(509)中存储数据或从中加载数据的请求(507)根据出借者装置标识符(583)在网络连接(205)上传输。接收请求(507)的借用者装置(201)可以将数据存储在由出借者装置(203)的操作系统(233)维护的存储器映射(227)所标识的存储器区域(586)中的存储器页面(例如,图17中所示的260)中,或者从该存储器页面加载数据。
260.在图21中,出借者装置(203)的存储器映射(227)将虚拟地址区域(581)与出借者装置标识符(583)相关联,该标识符指示虚拟地址区域(581)托管在出借者装置(203)中。出借者装置(203)的存储器映射(227)将虚拟地址区域(581)映射到物理地址区域(586),这允许出借者装置(203)的mmu(236)将虚拟地址区域(581)中的虚拟地址(509)转译成物理地址区域(585)中的物理地址。物理地址区域(585)可以标识出借者装置(203)的本地存储器(593或231)中的存储器区域(586)。物理地址区域(585)中的物理地址可用于存取存储器区域(586)中的存储器页面(260)。
261.图22示出了将虚拟地址区域的托管从出借者装置(203)迁移到借用者装置(201)的结果。在将内容从出借者装置(203)的本地存储器(593或231)中的存储器区域(586)复制到借用者装置(201)的本地存储器(591或211)中的存储器区域(588)之后,借用者装置(201)可以更新其存储器映射(207)以将虚拟地址区域(581)与借用者装置标识符(582)相关联,该标识符指示虚拟地址区域(581)托管在借用者装置(201)中。进一步地,存储器映射(207)将虚拟地址区域(581)映射到物理地址区域(587)。因此,可以将虚拟地址区域(581)中的虚拟地址(256)转译成物理地址区域(587)中的物理地址(257)(例如,如图3所示)。
262.在图22中,出借者装置(203)更新其存储器映射(227)以关联借用者装置(582),这指示虚拟地址区域(581)托管在借用者装置(201)中。进一步地,虚拟地址区域(581)不再映射到存储器区域(586)的物理地址区域(585)。因此,可以释放先前用于托管虚拟地址区域(581)的存储器区域(586),并且可以用于托管另一个虚拟地址区域。
263.图22的配置反映了出借者装置(203)为虚拟地址区域(581)借用存储器区域(588)。当出借者装置(203)存取虚拟地址区域(581)中的虚拟地址时,出借者装置(203)可以以类似于以图21的配置借用者装置(201)存取出借者装置(203)借给借用者装置(201)的存储器(586)的方式,存取出借者装置(203)借给借用者装置(201)的存储器(588)。因此,出借者/借用者的角色可以通过迁移虚拟地址区域的托管来颠倒(581);并且对于不同装置的位置存储器中托管的不同虚拟地址区域,给定装置可以具有不同的出借者/借用者角色。
264.图23示出了一种配置,其中虚拟地址区域(581)与借用者装置标识符(582)相关联,因此被托管在借用者装置(201)的本地存储器(591或211)中的存储器区域(588)中。然而,出借者装置(203)的存储器映射(227)进一步将虚拟地址区域(581)与出借者装置(203)的本地存储器(593或231)中的存储器区域(586)的物理地址区域(585)相关联。因此,出借者装置(203)的存储器区域(586)中的内容可以用作借用者装置(201)中的存储器区域(588)中的内容的备份副本、高速缓存副本或镜像副本,其中虚拟地址区域(581)被正式托管。
265.类似地,图24示出了一种配置,其中虚拟地址区域(581)与出借者装置标识符(583)相关联,因此被托管在出借者装置(203)的本地存储器(593或231)中的存储器区域(586)中。然而,借用者装置(201)的存储器映射(207)进一步将虚拟地址区域(581)与借用者装置(201)的本地存储器(591或211)中的存储器区域(588)的物理地址区域(587)相关联。因此,借用者装置(203)的存储器区域(588)中的内容可以用作出借者装置(203)中的存储器区域(586)中的内容的备份副本、高速缓存副本或镜像副本,其中虚拟地址区域(581)被正式托管。
266.任选地,装置(201和203)还可以被配置为托管、备份、高速缓存或镜像本地存储装置(例如,232)中的内容。
267.使用图21至24的技术,可以根据迁移决策(580)在不同的装置(例如,201和203)中迁移、镜像、备份或高速缓存虚拟地址区域(581)的内容。
268.图25示出了根据一些实施例的在具有借用存储器的计算系统中迁移内容的方法。
269.例如,图25的方法可以在图1、2、13、14、21、22、23或24所示的计算系统中实现。
270.在框601处,第一计算装置(例如,201)和第二计算装置(例如,203)经由计算机网络(例如,109)连接。
271.在框603处,第一计算装置(例如,201)和第二计算装置(例如,203)通过计算机网络(例如,109)上的虚拟存储器地址来提供用于存取的存储器资源。
272.例如,第一计算装置(例如,201)可以从第二计算装置(例如,203)借用存储器(例如,如图21或24所示);并且第二计算装置(例如,203)可以从第一计算装置(例如,201)借用存储器(例如,如图22或23所示)。
273.在框605处,第一计算装置(例如,201)和第二计算装置(例如,203)将虚拟存储器地址的第一部分(例如,263)映射到第一计算装置(201)(例如,图3所示的区域283、存储器211、单元259)中,并将虚拟存储器地址的第二部分(例如,265)映射到第二计算装置(203)(例如,图3所示的区域275、存储器202、单元260)中。
274.在框607处,第一计算装置(例如,201)和第二计算装置(例如,203)预测第一计算装置(例如,201)和第二计算装置(例如,203)之间的网络连接(例如,205)退化的时间段。
275.在框609处,第一计算装置(例如,201)和第二计算装置(例如,203)基于时间段的预测,对第一虚拟存储器地址区域(581)的内容做出迁移决策(580)。
276.在框611,第一计算装置(例如,201)和第二计算装置(例如,203)在时间段之前并响应于迁移决策,在第一计算装置(例如,201)和第二计算装置(例如,203)之间传送虚拟存储器地址区域(581)的内容。
277.例如,配置在第一计算装置(例如,201)和第二计算装置(例如,203)中的ai代理
(571/572)可以基于存储器使用历史(573)、位置历史(575)、预定操作(577)、电池功率水平(579)、电池使用历史等做出迁移决策(580)。
278.例如,ai代理(571/572)可以预测虚拟存储器地址区域(581)的使用;并且该使用被预测为在网络退化的时间段期间发生在第一计算装置(例如,201)中。当虚拟存储器地址区域(581)当前正被映射到第二计算装置(203)的本地存储器(或存储)(593)时,可以做出迁移决策(580)以使内容在本地存储器(或存储)(591)中可用,使得即使当网络连接(205)在网络退化的预测时间段期间不可用时,内容也是可存取的。
279.在另一个示例中,ai代理(571/572)可以预测虚拟存储器地址区域(581)的内容可能在该时间段期间丢失(例如,由于缺乏电池电力或危险情况)。当虚拟存储器地址区域(581)当前正被映射到第一计算装置(201)的本地存储器(或存储)(591)时,可以做出迁移决策(580)以使内容在本地存储器(或存储)(593)中可用,使得即使当网络连接(205)在备份内容的预测时间段期间不可用时,内容也被保留。
280.响应于迁移决策(580),并且在将虚拟地址区域(581)的迁移内容存储到第一计算装置(例如,201)的本地存储器(或存储)(591)中之后,虚拟存储器地址区域(581)的存储器映射可以通过将虚拟存储器地址区域(581)映射到第一计算装置(例如,201)的本地存储器(或存储)(591)中来改变,如图22或23所示。
281.类似地,响应于迁移决策(580),并且在将虚拟地址区域(581)的迁移内容存储到第二计算装置(例如,203)的本地存储器(或存储)(593)中之后,虚拟存储器地址区域(581)的存储器映射可以通过将虚拟存储器地址区域(581)映射到第二计算装置(例如,203)的本地存储器(或存储)(593)中来改变,如图21或24所示。
282.当虚拟存储器地址区域(581)被映射到第一计算装置(201)的本地存储器(或存储)(591)上时,虚拟存储器地址区域(581)在第二计算装置(203)的存储器映射(227)中与第一计算装置(201)的标识符(582)相关联,如图22和23所示;并且当虚拟存储器地址区域(581)被映射到第二计算装置(203)的本地存储器(或存储)(593)上时,虚拟存储器地址区域(581)在第一计算装置(201)的存储器映射(207)中与第二计算装置(203)的标识符(583)相关联,如图21和24所示。
283.任选地,虚拟存储器地址区域(581)被映射到第一计算装置(201)的本地存储器(或存储)(591)中,虚拟存储器地址区域(581)在第一计算装置(201)的存储器映射(207)中进一步与第一计算装置(201)的标识符(582)相关联,如图22和23所示;并且当虚拟存储器地址区域(581)被映射到第二计算装置(203)的本地存储器(或存储)(593)上时,虚拟存储器地址区域(581)在第二计算装置(203)的存储器映射(227)中进一步与第二计算装置(203)的标识符(583)相关联,如图21和24所示。
284.当虚拟存储器地址区域(581)被映射到第一计算装置(201)的本地存储器(或存储)(591)上时,第一计算装置(201)的存储器映射(207)将虚拟存储器地址区域(581)映射到第一计算装置(201)的本地存储器(或存储)(591)中的物理存储器地址区域(587/588),如图22和23所示;并且当虚拟存储器地址区域(581)被映射到第二计算装置(203)的本地存储器(或存储)(593)上时,第二计算装置(203)的存储器映射(227)将虚拟存储器地址区域(581)映射到第二计算装置(203)的本地存储器(或存储)(593)中的物理存储器地址区域(585/586),如图21和24所示。通过在第一计算装置(201)的物理存储器地址区域(587/588)
和第二计算装置(203)的物理存储器地址区域(585/586)之间复制内容来执行内容迁移。
285.任选地,在虚拟存储器地址区域(581)被映射到第一计算装置(201)的本地存储器(或存储)(591)上之后,第二计算装置(203)可以配置第二计算装置(203)中的物理存储器地址区域(585/586)来存储虚拟存储器地址区域(581)的内容的高速缓存、镜像或备份副本,如图23所示。
286.类似地,在虚拟存储器地址区域(581)被映射到第二计算装置(203)的本地存储器(或存储)(593)上之后,第一计算装置(201)可以配置第一计算装置(201)中的物理存储器地址区域(587/588)来存储虚拟存储器地址区域(581)的内容的高速缓存、镜像或备份副本,如图24所示。
287.迁移决策(580)可以基于第一计算装置的预测位置、第一计算装置(201)的预定操作、用于预定操作的软件/数据的标识、从过去的重复操作中标识的第一计算装置(201)的预测操作、第一计算装置的电池使用历史等来做出。
288.例如,迁移决策(580)可以至少部分地基于存储在虚拟存储器地址的一部分中的人工神经网络来做出。在第一计算装置(201)中运行的ai代理(571)可以使用虚拟存储器地址的该部分来为人工神经网络提供数据;并且在第二计算装置(201)中运行的ai代理(572)可以使用虚拟存储器地址的该部分来为迁移决策(580)执行计算。
289.存储器即服务(maas)支持以存储器为中心的计算模型。例如,maas允许虚拟存储器在联网的计算机之间流动。因此,虚拟存储器的内容可以在计算机的处理器之间无缝地流动。因此,网络中的计算机可以通过共享存储器资源来贡献计算资源、数据和/或计算结果。
290.例如,瘦客户机可以从设备或服务器借用存储器。通过将存储器借给客户机,设备或服务器的处理器可以容易地存取客户机借用的存储器中的内容,并响应于对客户机的请求代表客户机执行计算。
291.例如,客户机可以在借用存储器中设置计算,并请求设备或服务器接管进一步的计算。借用存储器可以存储数据和/或用于处理数据的代码;并且设备或服务器可以对数据进行操作和/或执行代码,就好像计算最初是在设备或服务器上建立的一样。例如,客户机可以设置计算任务来提供特定于客户机的数据;并且设备或服务器可以为客户机执行任务的处理密集型部分。
292.例如,客户机最初可以在客户机的本地存储器中托管一个虚拟存储器区域。随后,客户机可以在设备或服务器借给客户机的存储器中重新托管虚拟存储器区域。客户机可以请求设备或服务器继续执行虚拟存储器区域中的例程或指令集;并且设备或服务器可以任选地控制借给客户机的存储器,并执行例程或指令,这些例程或指令可以进一步处理借给客户机的存储器中的数据。在请求完成之后,设备或服务器可以向客户机提供通知,使得客户机检索设备或服务器的计算结果和/或继续执行虚拟存储器区域中的例程或指令。在一些情况下,应用程序被配置为从虚拟存储器区域运行;并且应用程序的执行可以在一些阶段在客户机上执行,并且在其它阶段转移到设备或服务器。因此,客户机和设备或服务器可以通过共享存储器来共享计算资源。
293.类似地,设备或服务器可以在存储器中设置任务,将存储器借给客户机(例如,边缘计算装置),请求客户机对客户机的数据执行本地计算,并将结果获取回存储器中。
294.进一步地,设备或服务器可以在借给多个客户机的多个存储器区域中设置任务。客户机可以通过在各自借用存储器区域中运行任务来为设备或服务器提供输入。因此,存储器即服务(maas)可以实现新的以存储器为中心的计算模型。
295.图26和27示出了基于在不同计算机(诸如装置(621)和设备/服务器(623))的本地存储器上选择性地托管虚拟地址区域的分布式计算。
296.一般来说,装置(621)可以是图1中的装置(101或103)或服务器(105),或者是图2、6、9、13至15、19和/或21至24中的借用者装置(201)。
297.一般来说,设备/服务器(623)可以是图1中的装置(103)或服务器(105或107),或者是图2、6、13至17、20和/或21至24中的出借者装置(203)。
298.在图26中,装置(621)为应用程序(212)分配虚拟地址区域(581)。虚拟地址区域(581)可以在装置(621)的本地存储器(211)中托管一段时间,在这段时间内,应用程序(212)正在装置(621)中执行。
299.例如,虚拟存储器地址区域(581)与装置(621)的存储器映射(207)和设备/服务器(623)的存储器映射(227)两者中的装置(621)的装置标识符a(582)相关联。装置(621)的存储器映射(207)进一步将虚拟存储器地址区域(581)与物理地址区域(587)相关联。因此,运行应用程序(212)的处理器(215)可以使用存储器映射(207)来将虚拟地址区域(581)中的虚拟地址转译成物理地址区域(587)中的相应物理地址。物理地址可用于存取装置(621)的本地存储器(211)中的存储器区域(588)中的存储器页面。
300.例如,在装置(621)中运行的应用程序(212)可以使用虚拟地址区域(581)来读取存储器区域(588)中的数据(625),对数据(625)进行操作,和/或将数据(625)存储在存储器区域(588)中。
301.如图27所示,可以将虚拟地址区域(581)重新托管在设备/服务器(623)的本地存储器(231)中。在将本地存储器(211)中的存储器区域(588)的内容传输到设备/服务器(623)并将该内容存储在设备/服务器(623)的本地存储器(231)中的存储器区域(586)中之后,虚拟地址区域(581)与在装置(623)的存储器映射(227)和设备/服务器(623)的存储器映射(227)两者中的设备/服务器(623)的装置标识符b(583)相关联。进一步地,装置(621)的存储器映射(227)将虚拟存储器地址区域(581)与物理地址区域(585)相关联。因此,运行相应应用程序(232)的设备/服务器(623)的处理器(235)可以使用存储器映射(207)来将虚拟地址区域(581)中的虚拟地址转译成物理地址区域(585)中的相应物理地址。物理地址可用于存取设备/服务器(623)的本地存储器(231)中的存储器区域(586)中的存储器页面。
302.例如,在设备/服务器(623)中运行的应用程序(232)可以使用虚拟地址区域(581)来读取存储器区域(586)中的数据(625),对数据(625)进行操作,和/或将数据(625)存储在存储器区域(586)中。
303.装置(621)中的应用程序(212)和设备/服务器(623)中的应用程序(232)可以被配置为使用同一虚拟地址区域(581)来共享数据、处理资源和/或计算结果。
304.在一些情况下,当将虚拟地址区域(581)重新托管在设备/服务器(623)的本地存储器(231)中时,装置(621)可以将虚拟地址区域(581)的存储器区域(588)保留为设备/服务器(623)的本地存储器(231)中的内容的备份、镜像或高速缓存副本。任选地,装置(621)中的应用程序(212)和设备/服务器(623)中的应用程序(232)可以在存储器区域(588和
586)中同时运行;并且应用程序(212和232)可以通过进程间调用相互通信,以协调处理任务和数据同步。
305.任选地,应用程序(212和232)是在装置(621)和设备/服务器(623)中作为不同进程执行的一组指令。
306.图28和29示出了在应用程序(627)执行的不同阶段在不同的计算机上选择性地运行应用程序(627)。在图28和29中,应用程序(627)(或其一部分)被配置为驻留在虚拟地址区域(581)中。处理器(215)可以从虚拟地址区域(581)加载应用程序(627),以用于执行并用于读取、处理和/或存储数据(625)。
307.当将虚拟地址区域(581)托管或高速缓存在装置(621)的本地存储器(211)中时,装置(621)可以执行应用程序(627)。当将虚拟地址区域(581)托管或高速缓存在设备/服务器(623)的本地存储器(231)中时,设备/服务器(623)可以执行应用程序(627)。
308.因此,装置(621)和设备/服务器(623)可以相互协调以运行应用程序(627)执行的不同阶段。例如,装置(621)可以运行应用程序(627)来设置数据(625),以用于进一步处理(例如,用于计算和/或资源密集型任务)。设备/服务器(623)可以继续执行应用程序(627)以进行进一步处理。在设备/服务器(623)的进一步处理之后,装置(621)可以继续运行应用程序(627)以使用由设备/服务器(623)提供的计算结果。
309.一般来说,多个虚拟地址区域(例如,581)可以用于应用程序(627)及其数据(625)。一些虚拟地址区域(例如,581)可以托管在装置(621)上;并且其它虚拟地址区域(例如581)可以托管在设备/服务器(623)(和/或另一装置)上。
310.图30和31示出了在不同计算机(621和623)上托管的虚拟机(629)中运行应用程序(627)。
311.例如,装置(621)的处理器(215)和设备/服务器(623)的处理器(235)可以具有不同的指令集。因此,应用程序(627)的指令可能不兼容在装置(621)的处理器(215)和设备/服务器(623)的处理器(235)两者中执行。
312.在图30和31中,装置(621)运行虚拟机(629)。应用程序(627)被配置为在虚拟机(629)内运行,该虚拟机与设备/服务器(623)中托管的虚拟机(629)兼容。因此,当将虚拟地址区域(581)重新托管在设备/服务器(623)上时(例如,如图31所示),虚拟地址区域(581)中的应用程序(627)可在虚拟机(629)中执行。
313.在一些情况下,设备/服务器(623)中的虚拟机(629)模拟装置(621)。因此,应用程序(627)可以在装置(621)中以本机模式执行,而无需虚拟机;并且一旦将虚拟地址区域(581)在设备/服务器(623)上重新托管、高速缓存或镜像,设备/服务器(623)就可以继续应用程序(627)的执行。
314.当虚拟地址区域(581)托管在设备/服务器(623)上时,装置(621)可以在其本地存储器(211)中具有虚拟地址区域(581)的高速缓存或镜像版本。设备/服务器(623)可以执行托管在其存储器区域(586)中的虚拟地址区域(581)中的应用程序(627),而装置(621)可以同时执行在其存储器区域(588)中高速缓存/镜像的虚拟地址区域(581)中的应用程序。例如,装置(621)中的应用程序(627)的运行进程可以分叉成两个运行进程。其中一个进程在装置中继续(621),另一个进程在设备/服务器中运行(623)。两个正在运行的进程可以相互通信,以协调数据处理和/或数据同步。在装置(621)和设备/服务器(623)上并行执行一段
时间之后,可以在适当的阶段终止运行的进程中的一个进程。
315.图32示出了一种基于存储器即服务(maas)的分布式计算方法。
316.例如,图32的方法可以使用计算装置和通过计算机网络连接到计算装置的远程装置来实现。计算装置和远程装置可以是图26至31所示的装置(621)和设备/服务器(623)。例如,计算装置和远程装置可以是图2、6、9、13至17和/或19至24所示的借用者装置(201)和出借者装置(203)。例如,计算装置和远程装置可以是图1所示的装置(101、103)和服务器(105、107)中的一些。
317.在步骤651和671处,计算装置从远程装置借用存储器;并且远程装置将存储器借给计算装置。
318.在步骤653处,计算装置将虚拟存储器地址区域(例如,581)分配给在计算装置中运行的应用程序(例如,212或627)。
319.在步骤655处,计算装置将虚拟存储器地址区域(例如,581)映射到计算装置的本地存储器(例如,211)中。
320.在步骤657处,在计算装置中运行的应用程序(例如,212或627)根据虚拟存储器地址区域中的虚拟存储器地址将数据存储在计算装置的本地存储器(例如,211)中,该虚拟存储器地址区域被映射到计算装置的本地存储器(例如,211)上。
321.在步骤659处,计算装置将虚拟存储器地址区域(例如,581)的至少一部分内容传输到远程装置。在步骤673处,远程装置从计算装置接收虚拟存储器地址区域(例如,581)的至少一部分内容。
322.在步骤661和步骤675处,计算装置和远程装置相互通信,以将虚拟存储器地址区域(例如,581)映射到远程装置的本地存储器(例如,231)的借用部分。
323.在步骤663和步骤677处,计算装置向远程装置发送处理虚拟存储器地址区域中的数据的请求(例如,581);并且远程装置从计算装置接收处理虚拟存储器地址区域中的数据的请求(例如,581)。
324.在步骤679处,远程装置根据请求运行应用程序(例如,232或627)。
325.在步骤681处,远程装置将虚拟存储器地址区域(例如,581)分配给应用程序(例如,232或617)。
326.在步骤683处,在远程装置中运行的应用程序(例如,232或617)使用远程装置中托管的虚拟存储器地址区域(例如,581)来处理数据。
327.例如,可以在计算装置中运行的应用程序(例如,212或627)终止之前,将请求从计算装置发送(663)到远程装置。在将虚拟存储器地址区域(例如,581)映射到远程装置的本地存储器的借用部分/出借部分之后,计算装置可以保留先前用于托管虚拟存储器地址区域(例如,581)的存储器区域(例如,588)作为映射到远程装置的虚拟存储器地址区域(例如,581)的备份、镜像或高速缓存副本。因此,计算装置和远程装置可以在虚拟存储器地址区域(例如,581)(例如,分别存储在计算装置和远程装置中的存储器区域(588和586)中)的内容的单独副本上同时和/或并行运行它们的应用程序(例如,212、232或627)。
328.任选地,计算装置和远程装置可以相互通信,以一次在一个装置中运行它们的应用程序(例如,212、232或627)。例如,在远程装置中执行的处理(683)之后,远程装置可以向计算装置发送请求,以使计算装置继续运行使用远程装置中执行的处理(683)的结果的应
用程序(例如,212或627)。
329.可以通过同步和/或重新托管虚拟存储器地址区域(例如,581)来更新虚拟存储器地址区域(例如581)的内容,以便运行应用程序(例如,212、232或627)。在一些情况下,计算装置可以直接在远程装置上托管的虚拟存储器地址区域上运行应用程序(例如,使用结合图13至17讨论的存储器存取加速技术)。在一些情况下,将虚拟存储器地址区域(例如,581)重新托管回到计算装置中,或者高速缓存/镜像到计算装置中,用于在计算装置中运行的应用程序(例如,212或627)。
330.任选地,运行计算装置和远程装置以使用同一虚拟存储器地址区域(例如,581)的应用程序(例如,212、232或627)可以具有相同的指令集。进一步地,指令集可以由计算装置和/或远程装置加载到虚拟存储器地址区域(例如,581)中以供执行,如图28至31所示。例如,计算装置的处理器中的程序计数器可以在虚拟存储器地址区域中存储虚拟地址(例如,581);并且处理器可以在虚拟地址检索应用程序的指令(例如,627)以执行应用程序(例如,627)。
331.在一些情况下,类似于上述计算装置和远程装置的一组装置可以通过计算机网络连接以形成系统。系统中的每个装置可以通过其操作系统被配置为:执行使用虚拟存储器地址区域存取存储器的应用程序;在应用程序正在相应装置中执行的第一时间段内,将虚拟存储器地址区域映射到本地存储器;在启动相应装置中的应用程序之后并且在终止相应装置中的应用程序之前的第二时间段内,将虚拟存储器地址区域映射到多个计算装置中的远程装置的本地存储器;并且请求远程装置在至少第二时间段期间处理虚拟存储器地址区域中的数据。虚拟存储器地址区域可以动态地重新托管在该组中的任何装置上,以便于使用存储在虚拟存储器地址区域中的指令和/或数据进行计算。
332.当在存取托管在借用存储器上的虚拟存储器区域期间存储器管理单元(mmu)中发生存储器错误时,可以执行借用者装置的操作系统以获取具有存储器错误的存储器区域的内容,并将虚拟存储器区域缓存在借用者装置的本地存储器中。
333.例如,当预定大小(例如,4kb)的虚拟存储器的页面中发生存储器错误时,整个存储器页面的内容可以从出借者装置中取出,并高速缓存在借用者装置的本地存储器的页面中。然后,操作系统可以生成页表条目,以将虚拟存储器的页面映射到本地存储器的页面,并更新转译后备缓冲器(tlb)来处理存储器错误。
334.然而,在处理器中运行的应用程序可能只使用页面的一部分。在这种情况下,将整个页面的内容通过网络连接从出借者装置迁移到借用者装置来处理存储器错误是低效的。
335.优选地,借用者装置被配置为响应于页面中的存储器错误,迁移页面的一部分,诸如预定大小(例如,64字节或512位)的高速缓存行。正在高速缓存的页面部分包含当前正通过虚拟存储器地址存取的存储器位置。响应于存取虚拟存储器地址,不需要高速缓存页面的其它部分。因此,减少了处理存储器错误的时间段;提高了网络带宽使用的效率。
336.例如,位掩码可用于标记借用者装置的本地存储器中的高速缓存行可用性。位掩码中的每个位用于标识由位掩码中的位表示的高速缓存行在本地存储器中是否可用。存储器管理单元(mmu)可以具有这样的页表条目,该页表条目将借用存储器的虚拟存储器页面映射到用作借用存储器页面的高速缓存的本地存储器页面。在mmu根据根据页表条目计算的物理存储器地址存取存储器位置之前,借用者装置可以被配置为检查位掩码中包含存储
器位置的高速缓存行的相应位。如果位掩码中的位指示高速缓存行当前在本地存储器中不可用,则借用者装置可以在使mmu使用物理存储器地址之前从出借者装置获取高速缓存行。
337.任选地,应用程序可以被编码为包括检查位掩码的指令。例如,当应用程序请求应用一定量的存储器时,应用程序还可以为位掩码分配相应量的存储器,用于跟踪所请求的存储器的高速缓存行。可以提供预定的功能/实用程序来检查和实现包含存储器位置的高速缓存行的本地可用性。如果没有设置高速缓存行的位掩码中的位,则可以执行借用者装置的操作系统以获取高速缓存行,正好在存取高速缓存行中的存储器位置之前。应用程序可以在存取存储器位置之前调用存储器位置的预定功能/实用程序。
338.例如,编译器可以识别应用程序中进行的存储器存取,并自动将代码/指令/调用注入函数/实用程序,以检查和实现高速缓存行的可用性。
339.在一些情况下,应用程序可以包括标签,以选择性地请求编译器在高速缓存行级别应用数据迁移。例如,为一个目的分配的一定量的存储器可以被编程为在存储器页面级别上迁移,使得当存储器页面没有被高速缓存在本地存储器中时,获取整个存储器页面并高速缓存。不需要/不使用位掩码来跟踪此存储器中页面的本地缓存行可用性。相比之下,为另一目的分配的另一数量的存储器可以被编程为在高速缓存行级别上迁移,使得可以获取存储器页面中的一些高速缓存行并在本地高速缓存,而无需在同一存储器页面中高速缓存其它高速缓存行。位掩码用于跟踪本地高速缓存行的可用性。
340.在一些实施例中,存储器管理单元(mmu)被配置为基于位掩码执行细粒度数据迁移。在根据物理地址存取存储器位置之前,mmu检查相关联的位掩码,以确定相应的高速缓存行在借用者装置的本地存储器中是否可用。如果高速缓存行当前在本地存储器中不可用,则mmu可以引发存储器错误以使操作系统获取高速缓存行,或者控制通信装置获取高速缓存行,而无需在获取高速缓存行时调用/运行操作系统。
341.一般来说,存储器状态映射可用于跟踪远程出借者计算机上托管的虚拟存储器区域的部分的本地可用性。状态映射中的一个位可以用来指示对应于该位的一部分当前是否在借用者装置的本地存储器中可用/高速缓存。
342.进一步地,借用者装置和/或出借者装置可以跟踪借用存储器的数据使用模式。可以基于数据使用模式来确定数据迁移粒度级别。
343.例如,为了降低有效载荷与网络通信协议开销之间的比率,可以预先确定用于数据迁移的最小单元(例如,64字节的高速缓存行),以用于在借用者装置与出借者装置之间传输存储器数据。基于应用程序的数据使用模式,借用者装置和/或出借者装置可以为借用存储器的一部分确定用于数据迁移的优化单元(例如,优化数量的高速缓存行)。借用存储器的不同部分可以有不同的数据迁移优化单元。优化单元使减少延迟的好处和迁移不需要迁移的数据的成本达到了平衡。
344.图33示出了被配置为标识子区域内容的高速缓存状态的存储器状态映射。
345.在图33中,转译后备缓冲器(tlb)(251)存储定义虚拟地址区域(例如,581)与物理地址区域(例如,587)之间的映射的虚拟到物理存储器映射(253)。
346.在图33中,虚拟地址区域(581)具有最小大小(例如,4kb的存储器页面),使得如果虚拟地址区域(581)中的虚拟地址的任何部分被定义在转译后备缓冲器(tlb)(251)中,则虚拟地址区域(581)中的虚拟地址的剩余部分也被定义在转译后备缓冲器(tlb)(251)中。
因此,如果虚拟到物理存储器映射(253)可以用于转译虚拟地址区域(581)中的虚拟地址,则整个虚拟地址区域(581)中的任何地址可以被转译成区域(587)中的相应物理地址。
347.优选地,虚拟地址区域(581)的内容可以在借用者装置与出借者装置之间一次迁移一个子区域。
348.在图33中,存储器状态映射(701)用于指示虚拟地址区域(581)的子区域的可用性状态(711、713
……
719)。多个子区域中的每个子区域可以具有预定的大小(例如,64字节的高速缓存行)。子区域的内容可以托管/高速缓存在借用者装置的本地存储器中,或者托管/存储在出借者装置的本地存储器中。状态(711、713
……
719)指示相应的子区域是否被高速缓存/托管在本地存储器中。使用存储器状态映射(701)来跟踪本地高速缓存可用性的状态(711、713
……
719),可以对所选的子区域(例如,711、713
……
)执行借用者装置与出借者装置之间的数据迁移,但是不能对其它子区域(例如,719
……
)执行数据迁移。
349.图34示出了使用存储器状态映射来存取可以在子区域级别获取/迁移的借用存储器。例如,图34的虚拟地址区域(581)和存储器状态映射(701)可以是图33中的虚拟地址区域(581)和存储器状态映射(701)的示例。
350.在图34中,虚拟地址区域(581)具有多个子区域(721、723
……
729)。当任何子区域(721、723
……
729)的映射在转译后备缓冲器(251)中被定义时,所有的子区域(721、723
……
729)也被定义。因此,虚拟地址区域(581)是在转译后备缓冲器(251)中定义到物理地址的映射的最小单元。
351.存储器状态映射(701)中的位(711、713
……
719)分别对应于子区域(721、723
……
729)。当存储器状态映射(701)中的一位(例如711)具有第一预定值(例如零)时,该位(例如711)用于指示相应子区域(例如721)的内容托管在远程存储器区域(586)中(例如在出借者装置(203)或设备/服务器(623)中)。当存储器状态映射(701)中的一位(例如713)具有第二预定值(例如一)时,该位(例如713)用于指示相应子区域(例如723)的内容托管在本地存储器区域(588)中(例如在借用者装置(201)或装置(621)中)。
352.使用存储器状态映射(701),借用者装置(例如,101、103、105、201或621)可以在使用通过转译后备缓冲器(tlb)(251)从虚拟地址(255)转译的物理地址(257)之前,确定是否在网络连接(例如,205)上执行数据迁移。
353.例如,在借用者装置中运行的应用程序(211)可以包括分配存储器状态映射(701)的指令,然后在存取相应子区域(例如,721或723)中的虚拟地址之前,检查相应位(例如,711或713)的值。例如,编译器可以被配置为插入这种可能依赖于借用存储器的存储器使用指令。
354.例如,虚拟到物理存储器映射(253)可以标识存储器状态映射(701)的本地;并且借用者装置(例如201或621)的存储器管理单元(mmu)(216)可以被配置为检查存储器状态映射(701)。
355.如果存储器状态映射(701)中的对应位具有第一预定值(例如,零),则存储器管理单元(mmu)(216)可以生成存储器错误,以请求借用者装置的操作系统(213)将内容从远程存储器区域(586)中的子区域(741)获取到本地存储器区域(588)中的子区域(731)。在将子区域(721)的内容托管/高速缓存在本地存储器区域(588)中之后,存储器管理单元(mmu)(216)可以使用物理地址(257)来执行处理器(215)在虚拟地址(255)请求的存储器存取。任
选地,存储器管理单元(mmu)(216)可以被配置为使用通信装置(217)获取子区域(721)的内容,而无需执行借用者装置的操作系统(213)。
356.如果存储器状态映射(701)中的相应位具有第二预定值(例如一),则存储器管理单元(mmu)(216)可以使用物理地址(257)来执行处理器(215)在虚拟地址(255)请求的存储器存取。
357.图35示出了为借用存储器的细粒度数据迁移而配置的借用者装置(201)和出借者装置(203)。
358.在图35中,出借者装置(203)的存储器区域(586)被借给借用者装置(201)。借用者装置(201)的存储器管理单元(mmu)(216)以上面结合图33和34讨论的方式存储虚拟到物理存储器映射(253)。虚拟到物理存储器映射(253)中的映射是在虚拟地址区域(581)的粒度级别上指定的。借用者装置(201)使用本地存储器区域(588)作为出借者装置(203)中借用存储器区域(586)的高速缓存。
359.借用者装置(201)存储虚拟地址区域(581)的存储器状态映射(701),以允许在子区域级别进行细粒度数据迁移,如图34所示。
360.存储器状态映射(701)可以由应用程序(212)使用虚拟地址区域(581)来管理。例如,当将虚拟地址区域(581)分配用于应用程序(212)时,应用程序(212)也可以为存储器状态映射(701)分配存储器。该应用程序包括在存取子区域(721、723
……
729)中的虚拟地址之前检查子区域(721、723
……
729)的本地可用性的存储器状态映射(701)的指令。这种指令可以使用编译器以自动方式插入,或者由应用程序(212)的程序员编程。
361.可替代地,或组合地,存储器状态映射(701)可以由操作系统(213)管理。例如,当操作系统(213)更新虚拟到物理存储器映射(253)以存取从出借者装置(203)借用的远程存储器区域(586)时,操作系统(213)可以为存储器状态映射(701)分配存储器。在虚拟地址区域(581)被完全高速缓存在存储器区域(588)中之前,存储器管理单元(mmu)(216)(或在执行单元(503)中执行的指令)可以被配置为请求操作系统(213)在存取虚拟地址区域(581)中的地址之前检查存储器状态映射(701)的本地可用性。
362.可替代地,或组合地,存储器状态映射(701)可以由存储器管理单元(mmu)(216)管理。例如,响应于寄存器(501)中的虚拟地址被用于存取虚拟地址区域(581)中的存储器,存储器管理单元(mmu)(216)可以被配置为检查存储器状态映射(701)的本地可用性。存储器状态映射(701)可以是为虚拟地址区域(581)分配的存储器区域(588)的一部分、通过虚拟地址区域的虚拟到物理存储器映射(253)中的指示符与存储器区域(588)相关联的本地存储器(211)的一部分,或者用于存储器区域(588)的本地存储器(211)的预留部分。任选地,存储器管理单元(mmu)(216)可以高速缓存存储器状态映射(701)或其一部分,以加速本地可用性检查。
363.当被存取的子区域(例如721)当前在本地存储器(211)中不可用时,存储器管理单元(mmu)(216)可以请求操作系统(213)将内容从相应的远程子区域(例如741)获取到本地子区域(例如731)。例如,存储器管理单元(mmu)(216)可以通过引发存储器错误来发出请求。
364.可替代地,存储器管理单元(mmu)(216)可以被配置为控制通信装置(217)直接存取远程存储器区域(586),而无需执行操作系统(213)。例如,图13至18的技术可以用于加速
借用者装置(201)与出借者装置(203)之间的数据通信。
365.任选地,鉴于从借用者装置(203)接收的数据迁移请求,出借者装置(203)还可以跟踪存储器状态映射(701)。出借者装置(203)可以基于存储器状态映射(701)在一段时间内的变化来跟踪存储器使用历史(703)。出借者装置(203)可以使用存储器使用历史(703)来预测子区域(721、723
……
729)的定时和模式。因此,出借者装置(203)可以基于子区域(721、723
……
729)来调度预测数据迁移,以减少子区域(721、723
……
729)的高速缓存未命中。
366.例如,借用者装置(201)可以提供与借用者装置(201)中子区域(721、723
……
729)的使用定时预测相关的信息。这种信息的示例可以包括应用程序的标识、应用程序中的执行里程碑等。这种信息可以作为存储器使用历史的一部分来收集(703)。借用者装置(201)中的人工智能(ai)引擎可以被配置为进行子区域使用预测(例如,使用人工神经网络(ann))。可以任选地使用来自多个借用者装置(例如201)的使用历史来训练ann,以确定应用程序的存储器使用模式。因此,出借者装置(203)中的计算能力和/或数据可用于提高借用者装置(201)在使用借用存储器时的性能。
367.替代地或组合地,借用者装置(201)还可以被配置为收集存储器使用历史(703)。例如,借用者装置(201)可以通过将数据存储在由出借者装置(203)借给借用者装置(201)的存储器区域中来与出借者装置(203)共享其存储器使用历史数据。例如,出借者装置(203)可以周期性地更新用于预测的ann模型,并且经由存储器即服务将该模型共享给借用者装置(201),使得借用者装置(201)能够做出改进的预测。
368.图36示出了借用存储器的细粒度数据迁移方法。例如,图36的方法可以在图2、6、9、13至17和/或19至24所示的借用者装置(201)和/或出借者装置(203)中实现,或者在图1所示的装置(101、103)和服务器(105、107)中实现。
369.在框751处,计算装置(例如,201)通过计算机网络(例如,109)从远程装置(例如,203)借用存储器。
370.在框753处,计算装置分配虚拟存储器地址区域(581)来寻址远程装置借给计算装置的存储器量的一部分(586)。
371.在框755处,计算装置将计算装置中的物理存储器区域(588)配置为借用存储器的部分(586)的高速缓存。
372.在框757处,计算装置存储虚拟到物理存储器映射(253),其标识虚拟存储器地址区域(581)与对应于物理存储器区域(588)的物理存储器地址区域(587)之间的映射。
373.在框759处,计算装置存储标识虚拟存储器地址区域(581)的子区域(721、723
……
729)的高速缓存可用性状态(711、713
……
719)的存储器状态映射(701)。
374.在框761处,在使用虚拟存储器地址(255)进行存储器存取之前,计算装置使用虚拟到物理存储器映射(253)将虚拟存储器地址(255)转换成物理存储器地址(257)。
375.在框763和框765处,计算装置标识包含虚拟存储器地址(255)的子区域(例如,721、723
……
或729),并检查子区域(例如,721、723
……
或729)的高速缓存可用性状态(例如,711、713
……
或719)。
376.在框766和框767处,如果确定子区域(例如,721、723
……
或729)尚未被高速缓存在物理存储器区域中(588)中,则计算装置与远程装置通信以高速缓存该子区域。
377.在框769处,一旦已经将子区域(例如,721、723
……
或729)高速缓存在物理存储器区域(588)中,计算装置就使用物理存储器地址(257)执行存储器存取。
378.例如,如果确定(766)子区域(例如,721、723
……
或729)尚未被高速缓存在物理存储器区域(588)中,则计算装置可以生成存储器错误。响应于存储器错误,执行计算装置的操作系统以与远程装置通信,从而在物理存储器区域(588)中高缓存相应的子区域。
379.可替代地,计算装置的存储器管理单元(例如,216)被配置为如果确定(766)子区域(例如,721、723
……
或729)尚未被高速缓存在物理存储器区域(588)中,则与远程装置通信以将相应的子区域高速缓存在物理存储器区域中。存储器管理单元(例如,216)可以在计算装置的处理器(例如,215)不执行计算装置的操作系统(例如,213)的情况下执行高速缓存操作。
380.例如,编译器可以在编译应用程序的程序时向应用程序中注入指令。在应用程序中的位置注入指令,使得就在应用程序使用从操作系统(213)分配的虚拟存储器地址存取存储器之前,执行指令以检查虚拟存储器地址的本地高速缓存可用性。因此,这些指令可以被配置为在存取子区域中的虚拟地址之前请求计算装置的操作系统高速缓存相应的子区域。
381.例如,编译器可以被配置为确定应用程序中存取动态分配的存储器的位置。程序中的存储器存取请求可以替换为修改版本的存储器存取请求,修改版本的存储器存取请求在做出相应的存储器存取请求之前检查本地高速缓存的可用性状态。
382.计算装置可以被配置为响应于虚拟存储器地址区域(581)的分配来寻址由远程装置借给计算装置的存储器部分(586),分配存储器来存储存储器状态映射(701)。例如,当在计算装置中运行的应用程序(212)请求操作系统(213)一定量的存储器时,操作系统(213)可以为相关联的存储器状态映射分配相应量的存储器。可以在虚拟地址区域(581)的虚拟到物理存储器映射(253)的部分中指定存储器状态映射(701)的位置。
383.例如,虚拟到物理存储器映射(701)的至少一部分可以被加载到计算装置的存储器管理单元(216)的转译后备缓冲器(251)中。当虚拟到物理存储器映射(701)的部分在转译后备缓冲器(251)中时,存储器管理单元(216)具有足够的资源来将虚拟存储器地址(255)转译成物理存储器地址(257)。在使用物理存储器地址(257)之前,存储器管理单元(216)、操作系统(215)或由编译器插入的指令/例程检查存储器状态映射(701)以确保可以经由物理存储器地址(257)存取虚拟存储器地址(255)。
384.任选地,当加载在转译后备缓冲器(251)中的虚拟到物理存储器映射(253)包括用于将虚拟地址区域(581)中的地址转译成物理地址区域(587)中的地址的部分时,存储器管理单元(216)可以高速缓存存储器状态映射(701)的至少一部分。
385.任选地,计算装置和/或远程装置可以基于对存储器状态映射(701)所做的改变来跟踪虚拟存储器地址区域(581)的存储器使用历史。计算装置和/或远程装置可以预测虚拟存储器地址区域(581)的子区域的使用。如果具有预测使用的子区域在物理存储器区域(588)中缺乏本地高速缓存可用性,则计算装置和远程装置可以彼此通信以在物理存储器区域(588)中高速缓存子区域。例如,可以基于使用存储器使用历史训练的ann进行预测。
386.ann使用一组人工神经元来处理输入信息并生成处理结果。典型的人工神经元被配置为接收一或多个输入信号,例如作为ann的输入和/或来自ann中的一或多个其它人工
神经元的输入。人工神经元处理其接收输入信号以生成一或多个输出信号,例如作为ann的输出和/或ann中一或多个其它人工神经元的输入。例如,典型的人工神经元可以将其接收的输入信号相加为和,对该和应用预定的非线性函数以生成输出,并对该输出应用不同的权重以生成发送给其它人工神经元和/或作为ann的输出提供的不同输出信号。可以通过一种或多种机器学习技术来训练用于从输入信号生成输出信号的人工神经元的参数,诸如非线性函数和/或权重的参数,使得ann可以用于从输入信号生成有用的输出。例如,ann可用于自主车辆中,以识别、分类或标识来自传感器、摄像机、雷达(无线电检测和测距)、激光雷达(光检测和测距)、声纳(声音导航测距)等的对象。例如,ann可用于移动装置中,以基于应用程序使用模式、位置模式、运动传感器输入等来预测、识别、分类或标识用户动作。
387.存储器即服务(maas)可用于组织和/或优化涉及ann的计算。
388.例如,可以对ann中的神经元层进行划分,以便基于层的性能评估/估计和它们的关键度存储在本地存储器和借用存储器中。当出借者装置与借用者装置之间的连接退化时,可以在借用存储器上布置不太关键的层,使得当借用存储器变得存取缓慢或变得不可存取时,可以跳过对不太关键的层的处理。
389.在一些情况下,ann的一层可以用本地执行的可替代的处理来代替(例如,在用户的任选帮助/协助下);并且这种层可以在出借者装置与借用者装置之间的连接退化的预期下被配置在借用存储器中。
390.在一些情况下,出借者装置不仅提供用于存储ann层的存储器,还提供用于处理ann层的响应的计算能力。例如,可以进行性能估计,以确定在使用借用存储器时降低的存储器存取时间与在使用出借者装置的计算能力来处理该层时改进的计算时间之间的权衡。使用借用存储器来存储该层和/或使用出借者装置来执行与出借者装置处的存储器中存储的层相关联的计算的决策可以基于性能估计和/或应用该层的关键度。
391.图37示出了配置在装置(621)和设备/服务器(623)上的ann(801),该设备/服务器提供如上所述的存储器即服务。
392.在图37中,ann(801)包括层a(803)和层b(805)。每个层(803和805)可以包括多个人工神经元。例如,层a(803)中的人工神经元接收对人工神经网络(801)的输入(811),并生成层b(805)中的人工神经元的输入信号(815)作为输出。层b(805)中的人工神经元处理其输入信号(815)以生成ann(801)的输出(813)。
393.在图37中,层a(803)中的人工神经元的计算模型被配置在装置(621)上;并且在设备/服务器(623)上配置层b(805)中的人工神经元的计算模型。
394.例如,通过将模型存储在装置(621)从设备/服务器(623)借用的存储器(231)中,可以在设备/服务器(623)上配置层b(805)中的人工神经元的计算模型。相较于从设备/服务器(623)获取和/或然后驱逐层b(805)中的人工神经元模型,将输入信号(815)从装置(621)传输到设备/服务器(623)并获得输出(813)返回到装置(621)可以使用更少的网络资源。在这种情况下,请求设备/服务器(623)代表装置(621)从输入(815)计算输出(813)在网络带宽使用方面会更有效。
395.典型地,由设备/服务器(623)上的人工神经层b(805)进行的处理涉及将输入信号(815)传输到设备/服务器(623),使用设备/服务器(623)的处理能力从输入信号(815)生成输出(813),以及将输出(813)从设备/服务器(623)传输到装置(621)。
396.典型地,由装置(621)上的人工神经层b(805)进行的处理包括将内容从装置(621)驱逐到设备/服务器(523)以给层b(805)腾出空间,将层b(805)中的人工神经元的计算模型迁移到装置(621),使用装置(621)的处理能力从输入信号(815)生成输出(813),以及将先前驱逐的内容迁移回装置(621)。
397.在一些情况下,层b(805)中的人工神经元所涉及的计算是处理密集型的。设备/服务器(623)上的层b(805)的处理比装置(621)上的层b(805)的处理花的时间更少。因此,装置(621)可以请求设备/服务器(623)使用层b(805)中的人工神经元的模型来处理输入信号(815)。
398.在一些情况下,设备/服务器(623)可以基于从装置(621)和/或其它装置(例如,类似于在类似环境和/或条件下使用的装置(621)的装置)接收的输出(813)和/或附加输入,进一步训练人工神经网络(801)。在设备/服务器(623)上使用一种或多种机器学习技术执行的训练的结果可以用于更新人工神经层a(803)的模型和/或人工神经层b(805)的模型。
399.在一些情况下,层b(805)中的人工神经元用于改善/微调输出(815)的结果。当装置(621)与设备/服务器(623)之间的网络连接退化,使得考虑到用于存取层b(805)中的人工神经元的模型的通信成本和/或延迟,改进的益处不显著时,装置(621)可以跳过涉及层b(805)中的人工神经元的计算。例如,如图38所示,在有或没有用户输入/协助的情况下,可以使用替代模块来处理输出(815)。
400.图38示出了具有替代模块807的人工神经网络801,该替代模块可以任选地用于替代人工神经网络801的一部分的处理。
401.替代模块(807)被配置为处理人工神经层b(805)的输入信号以生成替代输出(814)。
402.例如,替代模块(807)可以是人工神经层b(805)的简化版本,或者是不使用人工神经元的编程例程。替代模块(807)比人工神经层b(805)使用更少的存储器和/或处理能力。任选地,替代模块(807)被配置为接收任选的用户输入(817)以协助其生成替代输出(814)。
403.当装置(621)与设备/服务器(623)之间的网络连接退化时,装置(621)可以跳过人工神经层b(805)的处理,并且使用替代模块(807)来生成替代输出(814),以作为人工神经层b(805)的输出(813)的替代。因此,基于人工神经网络(801)运行的应用程序(例如,212或627)可以继续运行,即使当存储在借用存储器中的人工神经层b(805)暂时不可存取时也是如此。
404.例如,在预期装置(621)与设备/服务器(623)之间的计算机网络连接(205)退化的情况下,可以从装置(621)的本地存储器中驱逐人工神经层b(805)的模型,并将其迁移到设备/服务器(623)。替代模块(807)可以被迁移到装置(621),使得用于处理到ann(801)的输入(811)的整体存储器需求减少。装置(621)可以在装置(621)的用户以任选用户输入(817)的形式的可能帮助下,处理输入(811)以生成输出(814),而无需在一段时间存储器取人工神经层b(805)。
405.一般来说,ann(801)可以具有许多层和/或许多子网络。装置(621)和/或设备/服务器(623)可以在预测网络退化的时间段期间预测ann(801)的使用模式,并且通过生成替代模块(807)来使用预测的使用模式来简化ann(801)。
406.例如,ann的子网络可以为特定的使用模式生成接近恒定的输出。因此,可以通过
提供ann子网络的近似输出来简化子网络。
407.例如,当根据特定的使用模式使用ann时,ann的子网络的输出可以使用经验公式来近似。因此,可以通过实现经验公式的替代模块(807)来简化子网络。
408.图39示出了被配置为基于人工神经网络(801)(诸如图37或38所示的ann(801))来处理计算的计算装置(621)和设备/服务器(623)。
409.例如,装置(621)可以是图1中的装置(101或103)或服务器(105),或者是图2、6、9、13至15、19、21至24和/或26至31中的借用者装置(201)。例如,设备/服务器(623)可以是图1中的装置(103)或服务器(105或107),或者是图2、6、13至17、20、21至24和/或26至31中的出借者装置(203)。
410.在图39中,装置(621)从设备/服务器(623)借用一定量的存储器。ann(801)的一部分,诸如人工神经层a(803),被存储在虚拟地址区域(581)中,该虚拟地址区域被高速缓存、托管、镜像或加载在本地存储器(211)中。虚拟地址区域(581)可以通过映射到对应于装置(621)的本地存储器(211)中的本地存储器区域(588)的物理地址区域(587)来存取。
411.应用程序(212)(例如,通过软件和/或硬件实现)可以使用存储在本地存储器区域(588)中的人工神经层a(803)的模型来执行计算。
412.ann(801)的另一部分,诸如人工神经层a(803),可以存储在设备/服务器(623)中的远程存储器区域(586)上托管的另一虚拟地址区域(584)中。
413.任选地,人工神经层a(803)的输出可以作为人工神经层b(805)的输入(例如,815)提供给设备/服务器(623)。例如,在装置(621)中运行的应用程序(212)可以向设备/服务器(823)中的应用程序(232)发送请求,以使用人工神经层b(805)处理输入(815)。在一些情况下,相同的应用程序(例如,627)可以被配置在虚拟地址区域中,以便由装置(621)和设备装置(623)在不同阶段和/或并行执行(例如,如图28至31所示)。
414.任选地,人工神经层a(803)的输出可以由装置(621)通过将虚拟地址区域(584)和/或其内容从设备/服务器(623)迁移到装置(621)来处理。例如,装置(621)可以从其本地存储器(211)中驱逐虚拟地址区域(581),以便为将虚拟地址区域(584)迁移到本地存储器区域(588)腾出空间。
415.任选地,人工神经层a(803)的输出可以直接用于应用程序(212),而无需由人工神经层b(805)进一步处理。例如,当网络连接(205)退化时,应用程序(212)可以跳过涉及人工神经层b(805)的计算。在一些情况下,应用程序(212)的替代模块(807)被用作经由人工神经层b(805)的处理的替代。替代模块(807)可以请求装置(621)的用户在生成有效的替代输出时提供协助。在一些情况下,用户输入用于使用监督机器学习技术进一步训练人工神经网络(801)。
416.图40示出了一种使用(801)具有借用存储器的人工神经网络的方法。
417.例如,图40的方法可以在图1、2、13至14、21至24、26至31、35和/或39所示的计算系统中实现。
418.在框831处,计算装置(例如,621)通过有线或无线计算机网络(例如,109)从远程装置(例如,623)借用存储器(例如,586)。
419.在框833处,计算装置(621)将人工神经网络(801)的第一部分(例如,803)存储在计算装置(621)的本地存储器(211/588)中。
420.在框835处,计算装置(621)将人工神经网络(801)的第二部分(例如,805)存储在远程装置(623)的借用存储器(586)中。
421.在框837处,计算装置(621)生成人工神经网络(801)的第一部分(例如,803)的输出(例如,815)。
422.在框839处,确定计算装置(621)与远程装置(例如623)之间的有线或无线网络连接(例如205)是否已经退化。
423.在框841处,如果确定(839)网络连接(205)已经退化,则确定可用作人工神经网络(801)的第二部分(例如805)的替代的替代模块(例如807)是否可用。
424.在框843处,当确定(841)替代模块(例如,807)在计算装置(621)上可用时,计算装置(621)使用替代模块(807)处理输出(815)。否则,计算装置(621)可以跳过人工神经网络(801)的第二部分(例如,805)的处理。
425.在框851处,如果确定(839)网络连接(205)没有退化,则计算装置(621)请求远程装置(623)使用存储在远程装置(623)的借用存储器(586)中的第二部分(805)来处理输出(815)。
426.可替代地,计算装置(621)可以将第二部分(805)从借用存储器(586)迁移到计算装置(621)的本地存储器(211/588),并在计算装置(621)处来处理输出(815)。
427.在框853处,远程装置(623)使用存储在由远程装置(623)借给计算装置(621)的存储器(586)中的第二部分(805)来生成人工神经网络(801)的第二部分(805)的输出(183)。
428.在框855处,计算装置(621)从远程装置(623)接收第二部分(805)的输出(813)。例如,远程装置(623)可以将输出(813)存储在借给计算装置(621)的存储器(586)的一部分中,并且向计算装置(621)发送关于输出(813)的可用性的通知。计算装置(621)可以通过存取从远程装置(623)借用的存储器(586)的部分来存取输出(813)。
429.任选地,计算装置(621)和/或远程装置(623)可以预测网络连接(205)的退化。作为响应,替代模块(807)被配置在计算装置(621)的本地存储器中。
430.例如,替代模块(807)可以被配置为接收用户输入,以协助作为人工神经网络(801)的第二部分(805)的输出(813)的替代的替代输出(814)的计算。
431.例如,替代模块(807)可以是人工神经网络(801)的第二部分(805)的简化模型。简化可以基于对有线或无线网络连接的退化的预测和/或基于人工神经网络(801)的使用模式,诸如当前的使用模式、网络连接退化之前的使用模式、基于人工神经网络(801)的历史使用预测的使用模式。
432.在一些情况下,计算装置(621)和/或远程装置(623)可以计算完成使用人工神经网络(801)的第二部分(805)的计算所需的时间估计。可以计算将人工神经网络(801)的第二部分(805)迁移到计算装置(621)以由计算装置(621)执行计算的时间估计。还可以计算时间估计,以用于向远程装置(623)提供输出(815),使得远程装置(623)可以使用其计算能力来执行对应于人工神经网络(801)的第二部分(805)的计算。可以比较时间估计来选择其中一个选项。是否使用人工神经网络(801)的第二部分(803)来执行人工神经网络(801)的第一部分(803)的输出(815)的过程的选择也可以基于能量/功耗考虑(例如,延长计算装置(621)的电池寿命、降低总功耗等)。
433.任选地,远程装置(623)可以在人工神经网络(801)的第一部分(803)正被用于计
算装置(621)中的应用程序(212)的时间段内,使用机器学习技术来更新存储在借给计算装置(621)的存储器(805)中的人工神经网络(801)的第二部分(805)。
434.例如,当计算装置(621)将人工神经网络(801)的一部分存储在由远程装置(623)借给计算装置(621)的存储器(805)中时,远程装置(623)可以自动更新人工神经网络(801)的该部分。因此,可以更新计算装置(621)作为整体使用的人工神经网络(801)的功能,而不中断使用人工神经网络(801)的应用程序(212)。
435.因此,计算装置(621)和远程装置(623)可以被配置为在存储人工神经网络(801)和在基于人工神经网络(801)的处理时协作。
436.在一个实施例中,出借者装置和借用者装置可以在逻辑地址空间中交互。可以在借用者装置的ram中配置孔。例如,出借者装置创建虚拟存储装置。借用者将其分配给其物理ram空间的特定域作为孔。借用者物理地址空间内的孔的位置可以是分散的、分布式的,而不是连续的。然而,对于虚拟存储器装置,每个域都具有可能不同于借用者物理地址空间的连续逻辑地址空间的视图。出借者装置可以使用逻辑孔地址存取(读和写)这些孔。借用者装置向出借者虚拟装置开放两种类型的孔:允许借用者装置在逻辑地址空间中的过程页面对出借者装置可见的过程(应用程序)页面孔;以及允许存取逻辑孔空间中借用者装置的过程页表的维护孔。维护孔可用于标识空闲页面框架列表等。过程页面孔和维护孔可结合成一个。在借用者装置中运行的每个过程可以具有其自己的一组孔。
437.逻辑孔地址不同于借用者物理地址。借用者装置中的存储器管理器(mm)被配置为将dma请求中的逻辑地址转译成其对应的物理地址。因此,出借者装置看不到借用者的真实物理地址空间。这是为了保护和dma隔离而实施的。因此,每个逻辑地址都要经过地址转译,这会增加一些延迟。然而,存储器管理器(mm)可以有适当的机制来加速它。例如,如果在转译后备缓冲器(tlb)中没有找到页表条目(pte),则硬件可以被配置为执行页表遍历。因为逻辑地址如何映射到借用者物理地址的算法是预先定义的,所以可以优化、训练、调整装置以遵循该算法来获得最大效率。借用者处理器存储器管理和远程装置dma存储器管理都可以在存储器管理器(mm)的控制下进行。
438.存储器管理器(mm)维护页面框架指针列表,指向页面孔空间中的空闲页面框架(pf)。该列表存储在维护孔内的预定位置。出借者装置以循环方式执行该列表的扫描。因此,mm和出借者装置在空闲页面框架(pf)上同步。同步点已经过去(受最差互连延迟、排队延迟等限制)。然而,这不应该成为在页面孔中为新分配使用少量空闲pf的障碍。出借者装置向mm报告同步状态(例如,列表中最后存取的指针)(例如,通过中断)。如果同步列表的大小变得太小,则mm会通过放置附加的页面框架指针(pfp)到空闲页面框架列表(fpfl),从而对这一中断做出反应。mm和出借者装置都知道修改空闲页面框架列表(fpfl)的算法(例如fifo)。替代方法是,mm直接将空闲页面框架指针(pfp)列表传送给装置。
439.在每次扫描迭代中,mm扫描页表并且清除pte中的“已存取”位,其中每当cpu存取页面时,tlb都会在pte中设置“已存取”位。如果在后续扫描迭代中仍然没有存取pte,它还会增加每页面的年龄计数器(如果pte/页面被借用者cpu存取,则年龄计数器会重置)。因此,计数器提供了页面“陈旧”的度量。
440.在出借者装置和借用者装置在逻辑地址空间中交互的回写(驱逐)路径中,回写(驱逐)在通信链路上具有小活动的时段期间执行。但是,如果链路带宽总是饱和的,这条路
径将会受到影响,应该进一步优化。在扫描过程中,mm会在pte中为页面设置“受保护”位,这些页面的年龄已达到一定的触发限制。它还会从每个pte中读取pfp(pfp到借用者页面孔空间),并将此pfp添加到fpfl。出借者装置通过其链路扫描孔中的页表,并寻找具有清除的“已存取”位的受保护pte(具有这两个条件表示页面已准备好从借用者迁移到出借者装置)。可替代地,出借者装置可以扫描fpfl,并从那里获取借用者pfp(无论如何,出借者装置扫描该列表,以便在借用者装置上获取自由pfp,从而在下面讨论的转发路径期间在借用者装置上迁移和存储页面)。出借者装置可以通过将受保护的页面迁移到自身来获取它们。这样做时,mm为每个pte设置“装置已存取”位,即出借者装置存取了哪个页面(出借者装置的所有存取无论如何都要通过mm)。出借者装置根据由出借者装置定义的其自己实现的方案,将每个页面放置在某个pf的自己的虚拟地址空间中。出借者装置将新的pfp安装到借用者pte中自己的地址空间。因此,每个迁移页面的pte具有“已保护”位设置、“已存取”位清除、“装置已存取”位设置,并且pfp指向装置地址空间中的pf。
441.在出借者装置和借用者装置在逻辑地址空间中交互的正向路径中,借用者cpu在存取具有pfp的受保护的pte到装置空间时产生中断。假设中断含有虚拟地址和pte。中断时,借用者cpu已经完成了硬件页表遍历(如果pte不在tlb,很可能)并将pte放在核心tlb。中断分为2个部分;并且它的中断处理程序并行运行:本地(mm)和远程(出借者装置)。中断受出借者装置的延迟限制。mm为中断的虚拟地址安装新的pte,pf指针指向页面孔空间中的物理页面(mm从mm和装置两者已知的空闲pf列表中选择下一个pf)。新的pte放置在所有tlb中。如果迁移前页面所在的旧pf没有被回收,那么它的数据仍然存在,mm安装这个旧pfp,并且数据将立即可用。(为了支持此功能,mm必须保留字典“pte=》fpfl列表中的旧pfp”)。出借者装置将页面数据写入页面孔空间中由与mm在上述步骤中安装在pte中的相同pf指针所指向的位置(装置从mm和装置两者已知并同步的fpfl中选择下一个pfp)。出借用者装置发送一个中断给mm,解除对pte的保护,并重新启动在出借用者装置上等待的进程。可替代地,出借者装置可以直接在孔中写入新的pte。然而,出借者装置需要知道pte位置,即借用者装置上的页表结构。
442.在另一个实施例中,出借者装置和借用者装置可以在进程虚拟地址空间中交互。例如,可以将出借者装置分配给借用者ram的某些区域,这些区域用作孔。可以将在借用者装置的cpu/处理器上运行的某些进程的数据分配给孔。可以有两种类型的孔向出借者装置开放:虚拟地址空间(应用程序)中的过程数据(页面)的孔,以及物理地址空间中的过程页表的孔。孔分配可以是灵活的。例如,在一种实施方式中,两个孔可以用于所有应用过程;或者,在另一种实施方式中,许多过程数据孔和/或许多页表孔可以用于应用过程;或者在进一步的实施方式中,可以管理一组动态的孔,以适应当前的一组可能增长或收缩的活动/工作过程。存储器管理器被配置为将数据分配给孔。存储器管理器可以是具有硬件加速功能的操作系统的一部分。出借者装置可以通过孔存取(例如,读和写)进程虚拟地址空间和页表。出借者装置的读和写可以与借用者cpu高速缓存一致;如果高速缓存支持排序,则可以保留排序。
443.在出借者装置和借用者装置在进程虚拟地址空间中交互的回写(驱逐)路径中,出借者装置保持其自己的页表结构,该页表结构将虚拟地址转译成装置虚拟地址。出借者装置为迁移的页面安装自己的页表条目(pte)。稍后,当在其地址空间中搜索某个页面时,出
借者装置可以对其表执行页面遍历。装置地址空间可以包括由进程id标记的多个地址空间,并且与借用者装置上打开的进程/孔的虚拟地址空间相关联。因此,虚拟空间在出借者装置与借用者装置之间是一致的。因此,出借者装置可以潜在地对存储在页面中的数据执行计算或压缩。当存储器管理器扫描pte时,对于所有设置了“装置已存取”位的受保护页面,它会回收进程虚拟空间孔中的物理空间,并将它们的页面框架(或物理地址)设置为空,并且还会清除“装置已存取”位。因此,所有迁移的页面都使用空指针框架保护pte。
444.在出借者装置和借用者装置在进程虚拟地址空间中交互的正向路径中,当借用者cpu使用空指针存取受保护的pte时,它生成一个中断,该中断通过通信链路直接转发给出借者装置,同时转发给存储器管理器。作为对中断的响应,存储器管理器使用新的页面框架指针(例如,使用存储器管理器可用的几个空闲页面框架中的一个框架)为被存取的页面安装新的pte。作为对中断的响应,出借者装置遍历其页表(例如,它可以拥有自己的tlb和硬件页面遍历器以使其更快),找到该页面并将该页面写入进程孔(在虚拟空间中),并向借用者装置发送直接中断。存储器管理器从出借者装置接收写请求,查看其本地tlb(该页面的pte应该在那里,因为mm刚刚安装了它),将从装置页面接收的数据写入pte指向的页面框架,通过取消保护该页面的pte来处理装置中断(如果“装置已存取”位被设置),并恢复该过程。
445.一般来说,上面讨论的每个装置或服务器(例如,101、103、105、107、201、203、621、623)可以被实现为一或多个数据处理系统。
446.典型的数据处理系统可以包括互连,该互连将微处理器和存储器互连(例如,总线和系统核心逻辑)。微处理器也可以具有片上高速缓存层次结构。
447.互连将微处理器和存储器互连在一起,并且还经由输入/输出(i/o)控制器将它们互连到i/o装置。i/o装置可以包括显示装置和/或外围装置,诸如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机和本领域已知的其它装置。在一个实施例中,当数据处理系统是服务器系统时,一些i/o装置(诸如打印机、扫描仪、鼠标和/或键盘)是任选的。
448.互连可以包括通过各种桥、控制器和/或适配器相互连接的一或多条总线。在一个实施例中,i/o控制器包括用于控制usb(通用串行总线)外围设备的usb适配器,和/或用于控制ieee-1394外围设备的ieee-1394总线适配器。
449.存储器可以包括以下一或多个:只读存储器(rom)、易失性随机存取存储器(ram)和非易失性存储器,诸如硬盘、闪存等。
450.易失性ram通常实现为动态ram(dram),其需要持续供电以刷新或保持存储器中的数据。非易失性存储器通常是磁性硬盘驱动器、磁性光驱、光驱(例如,dvd ram)、flash存储器、3d交叉点或即使在系统断电后也能保持数据的其它类型的存储器系统。非易失性存储器也可以是随机存取存储器。
451.非易失性存储器可以是直接耦合到数据处理系统中其余部件的本地装置。也可以使用远离系统的非易失性存储器,诸如通过诸如调制解调器或以太网接口的网络接口耦合到数据处理系统的网络存储器装置。
452.在本公开中,一些功能和操作被描述为由软件代码执行或引起,以简化描述。然而,此类表达还用于指定由诸如微处理器的处理器或sos(片上系统)的任何ip块执行代码/指令而产生的功能。
453.可替代地,或者组合地,本文描述的功能和操作可以使用专用电路系统来实现(有或没有软件指令),诸如使用专用集成电路(asic)或现场可编程门阵列(fpga)。实施例可以使用没有软件指令的硬连线电路来实现,或者结合软件指令来实现。因此,这些技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
454.虽然一个实施例可以在全功能计算机和计算机系统中实现,但是各种实施例能够以各种形式作为计算产品分布,并且能够被应用,而不管用于实际实现分布的机器或计算机可读媒体的特定类型。
455.所公开的至少一些方面可以至少部分地体现在软件中。也就是说,响应于其处理器(诸如微处理器),这些技术可以在计算机系统或其它数据处理系统中实施,执行包含在存储器(诸如rom、易失性ram、非易失性存储器、高速缓冲或远程存储器设备)中的指令序列。
456.被执行以实现实施例的例程可以被实现为操作系统或被称为“计算机程序”的特定应用、部件、程序、对象、模块或指令序列的部分。计算机程序通常包括在不同时间设置在计算机的不同存储器和存储装置中的一或多个指令,并且当被计算机中的一或多个处理器读取和执行时,使得计算机执行对执行涉及各个方面的元件所必需的操作。
457.机器可读媒体可用于存储软件和数据,当数据处理系统执行这些软件和数据时,会使系统执行各种方法。可执行的软件和数据可以存储在不同的地方,包括例如rom、易失性ram、非易失性存储器和/或高速缓冲。这一软件和/或数据的部分可以存储在这些存储装置中的任何一个中。进一步地,数据和指令可以从集中式服务器或对等网络获得。数据和指令的不同部分可以在不同时间、不同通信会话或相同通信会话中从不同的集中式服务器和/或对等网络获得。数据和指令可以在应用程序执行之前全部获得。可替代地,当需要执行时,可以动态及时地获得部分数据和指令。因此,在特定时刻,不要求数据和指令全部在机器可读媒体上。
458.计算机可读媒体的示例包括但不限于非暂时性、可记录和不可记录类型的媒体,诸如易失性和非易失性存储器装置、只读存储器(rom)、随机存取存储器(ram)、闪存装置、软盘和其它可移动磁盘、磁盘存储媒体、光存储媒体(例如,光盘只读存储器(cd rom)、数字多功能盘(dvd)等)等。计算机可读媒体可以存储指令。
459.指令也可以在用于电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的数字和模拟通信链路中实现。然而,传播信号(诸如载波、红外信号、数字信号等)不是有形的机器可读媒体,并且不被配置为存储指令。
460.通常,机器可读媒体包括以机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)可访问的形式提供(即,存储和/或传输)信息的任何机制。
461.在各种实施例中,可以结合软件指令使用硬连线电路系统来实现这些技术。因此,这些技术既不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
462.以上描述和附图是说明性的,不应被解释为限制性的。描述了许多具体细节以提供透彻的理解。然而,在某些情况下,没有描述众所周知的或常规的细节以避免模糊描述。
本公开中对一或一个实施例的引用不一定是对相同的实施例的引用;并且,此类引用意味着至少一个。
463.在前述说明书中,已经参考其特定示例性实施例描述了本公开。显而易见的是,在不脱离所附权利要求中阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的,而不是限制性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献