内存数据服务器转让专利

申请号 : CN200510128920.2

文献号 : CN1979447B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙贤和

申请人 : 孙贤和

摘要 :

本发明内存数据服务器,将内存和数据访问作为一个服务提供给客户,其拥有一个内存数据服务体系结构和一些组成单元,用于减轻和消除客户处理器的数据管理负担,并通过提供高功能的预测和快速数据传送来提高客户计算机的速度和效率。

权利要求 :

1.一种内存数据服务器,包括:

与客户设备通讯的装置;

内存服务提供器,用于启动客户设备和内存数据服务器设备之间的数据传输;

未击中处理器,用于从客户设备的本地内存中获得即现即得的未击中信息,并且将数据访问需求从客户设备传送到数据访问模式表,其中数据访问模式表用于跟踪和存储客户设备数据访问请求的历史和模式,以助于预测客户设备的未来数据请求;

未来访问预测器,根据已知数据访问模式信息来预测客户的未来数据请求,并且将预测到的访问地址传递给数据推进器模块;

数据推进器,用于处理内存数据服务器设备和客户设备的预取缓存之间的数据传送,以及将从未击中处理器得来的未击中数据和从未来访问预测器中得来的预测数据推入到客户设备的预取缓存;

其中

客户设备向内存数据服务器请求启始数据地址;

数据推进器获取请求的启始数据地址,并且从请求的地址空间中传送多行数据到客户设备的预取缓存;

未击中处理器从预取缓存和本地内存中收集任何未击中数据地址,并且将未击中数据地址访问信息存储到数据访问模式表中;未击中处理器在预取缓存未击中发生时,向数据推进器发出警告,同时数据推进器将未击中数据立刻发送出,而不等待未来访问预测器;并且,未来访问预测器基于以前的客户数据访问,预测出下一个数据地址,此时,数据推进器在跟踪预取缓存未击中的同时提取并推动预测数据到客户设备的预取缓存,根据逐渐增加的访问模式信息,未来访问预测器动态地调整为了客户设备所作的未来数据访问的预测。

2.如权利要求1所述的内存数据服务器,其特征在于,进一步包括查询/重置策略采用器,用于在数据被重置之前,选取策略以使客户设备最大程度地利用取得的数据,并且用于与未来访问预测器分享客户应用程序数据访问模式。

3.如权利要求1所述的内存数据服务器,其特征在于,所述内存数据服务器采用纯服务模型,在这种情况下,所有客户设备所需的数据都由内存数据服务器提供。

4.如权利要求1所述的内存数据服务器,其特征在于,所述内存数据服务器设备采用混合服务模型,在这种情况下,如果客户设备的数据访问需求满足数据局部性的预定标准,则客户设备仅使用自身的内存和磁盘;而当客户设备的数据访问中的数据局部性小于预定标准时,客户设备调用内存数据服务器。

说明书 :

技术领域

本发明涉及计算机技术领域,是一种内存数据服务器。本发明对内存结构和计算机效率作出了重大改进。“计算机内存”在信息处理中暂时保存数据以支持快速数据访问。名词“内存”一般用于存在集成电路或存储芯片上的数据,而“存储”一般用于磁带或磁盘上的非动态数据。

背景技术

大多数现代计算机内存都是分层次的,包括多层次高速但是昂贵的缓存(caches)和一个慢一点,大一些的主存(DRAM)。计算机将另外利用一个存储磁盘作为长期的二级存储。约摸地说,在现有的技术下,磁盘访问速度比主存访问速度慢100倍,而主存访问速度比高速缓存慢10到50倍。
处理器和网络技术发展迅速。每个处理器上的电子晶体管数量的增长迅速地提高了处理器的处理数据能力。光纤在理论上有无限的带宽。不断的创新正在逐步减少网络延迟。
但是,处理器和内存之间日益加大的速度差异加剧了计算机高峰性能和稳定性能之间的差距。此外,功率消耗的增长快于处理器和内存的性能增长。功耗已成为制造从高端超级计算机到小型电子设备的现代计算系统的主要障碍。
近年来,内存带宽已成为完全利用处理器和网络容量的主要瓶颈。根据所谓的“摩尔定律”,处理器速度每18个月就会翻倍。网络互连速度也增长到数百Gbps,延迟被减少到十亿分之几秒。相比之下,主存(DRAM)的速度和带宽增加赶不上处理器速度的增长。过去20年内,这个性能差距不断增加,并且已成为一个性能瓶颈。
含有多级缓冲存储器的现代层次架构式内存被推出用于弥合这个差距。缓冲存储器的原理是利用空间局部性和时间局部性。但是,很多应用程序在访问内存时不具有空间和时间局部性。这些程序的大量执行时间花在了等待运送数据到位。
计算设备的功耗需求也随着计算能力和功能的增加而增加。现有的芯片性能提高是基于晶体管的数目增加。从正面说,这使得缓存增大,且有更多的缓存和变换旁视缓冲器(TLB)的层次。但是这也迅速地加大了计算设备上众多芯片的功耗需求。增长中的功耗需求可以通过比较IntelPENTIUM 4(75watts)和Intel ITANIUM(130watts)处理器来说明。
在著述中,很多文章在不同的语境中都用到了“内存服务器(memoryserver)”这个名词。据申请人所知,所有这些文章仅仅试图通过用远程内存代替本地存储来优化数据访问时间,而不是提高本地中央处理器的数据管理和提取能力。这些所谓的“服务器”的重心在于为数据提供空间,而不是为其他处理单元提取数据。

发明内容

在传统上,内存是计算设备不可分割的一部分,而本发明提出将内存支持作为服务来提供.一个基于本发明的内存数据服务器可以紧密地直接联接到,或者通过网络联接到处理单元.服务可以是静态的或者动态的,可以是单独的内存服务器,或者是加在传统集成的客户内存系统之上.内存服务器可以处理缓存未击中,同时避免缓存未击中和页错误的发生.内存服务器能够实现高功能的预取预测算法和动态置换策略,以此减少缓存未击中率和掩盖内存访问延迟,且不增加计算处理器的花费.客户计算机可以用内存数据服务器来满足其存储层次的需求.这是个节省开销的解决方案,因为内存服务避免了在每个客户端安装更深层次的更昂贵的层次存储.
在传统的层次存储中,如果缓存未击中发生,内存向缓存输入数据行;如果页错误发生,磁盘向内存输入数据页。平均内存访问时间开销取决于存储层次参数(比如说容量,行大小,页大小,内存和缓存的带宽,和关联)和应用程序的数据访问模式。当页面工作组的大小大于传统系统中的内存大小,或者数据访问是非连续性的时候,平均内存访问开销可能严重影响应用程序性能。现有计算系统的内存性能可以通过增加内存容量以及应用高功能的数据预取和置换算法来改善。然而,已知系统的存储层次结构是固定的,不可能为了某个应用程序而改变。仅仅增加存储层次中的每个层次的存储容量会加大开销,也许并不经济有效。同样,如果在已知系统里采用复杂的高功能预取算法,中央处理器的计算时间将减少,从而降低应用程序的性能。
为了解决这些现有系统的处理器和存储层次的负担,本发明可以提供一个内存数据服务器来提供内存数据服务。内存服务可以根据预测后台进程得出的应用程序需求来提供相应的内存服务。
首先,我们应当指出本发明与早先的方法有实质性的区别。本发明将数据访问(这里有时也指计算机内存)作为服务来提供,而不是仅仅将远程内存当作临时替代的存储空间。在实际应用中,本发明提出的数据服务器可以消除应用程序的主要计算处理器的数据提取和预取的负担,并且灵活地根据应用程序的需求提供内存和数据访问的服务。
本发明提出了将计算内存作为一项服务来提供的想法并给出了一个内存数据服务器的设计。内存数据服务器(简称数据服务器或内存服务器)可以为客户计算机提供内存以此节省客户端能量,同时弥补现有的处理器和内存间的性能差异。数据服务器包括一个为其他处理单元(比如运行一个应用程序计算的处理单元)提供数据的专用处理单元。数据服务器可以利用多芯芯片技术和网络技术的迅猛发展,它可以包括多芯芯片中的一个芯,共享内存并行计算机中的一个处理器,机群(cluster)中的一个处理机,一个远程网络数据服务器,或者类似的其他形式。此文会多次使用数据服务器和客户这两个术语,烦请注意服务器和客户这两个词会以不同组合出现。
本发明通过插入一个内存数据服务器来减少一个计算机系统的数据访问时间,这个数据服务器提供额外的高速内存空间,并且在客户需要的时候,更准确地说在客户需要之前,向客户存储层次的高层直接推入需要的数据。例如,在一个多芯系统或者一个共享内存系统里,一个芯或者一个处理器可以用做数据服务器向客户预取缓存中推入数据。在分布式或联网系统中,一个节点或者一个计算机可以用做数据服务器来向客户节点或客户计算机的内存或缓存中推入数据。考虑到一个专用服务器可以更好地提供数据预测和预取,这样做的好处是显而易见的。
同时,从生产成本、功耗和运行效率等各方面来看,配置两个不太强大的处理单元,一个用于计算一个用于内存服务,都比配置一个强大的处理单元更加节省成本.近期多芯芯片的流行以及并行处理机的持续发展都是基于提高运行效率.除了决策和管理数据传送,数据处理器可以将它的内存用作扩展内存或者用于为客户程序提供存储.大多数应用程序仅在某些时候需要大量内存或者其它内存服务.所以,一个数据服务器可以同时为多个客户处理器和计算机提供服务.
数据服务器还可以减少缓存未命中率和页错误的发生,并且由此提高性能。根据本发明,数据服务器可以被特用于数据服务,并且可以对不同的计算机应用选用不同的置换和搜索算法,以此达到最佳性能。
由于根据本发明建造的数据服务器可以更好地根据现有访问模式来预测数据访问并且提前向存储层次推入数据,他将提供更快的数据访问速度并将使系统的整体性能得到提高。由于有专用数据服务器来执行数据访问预测算法,我们可以采用更复杂的高功能预测方法用更多的数据访问纪录做更好地预测,因为处理器的计算时间没因为数据管理而减少。也就是说,计算单元从预测的负担中解脱出来,因此可以专注于计算,同时缓存运作也变得更加精细。
因为本地内存和磁盘的需求降低,客户端的功耗也将减少。利用一个数据服务器来为多个客户提供内存需求将进一步节省能量。还有,小型移动设备常常置备很少内存和很少的,或甚至没有,缓存,基于本发明的数据服务器也许是使得小的移动设备运行大型应用程序的唯一方法。
此外,网络的发展使得基于本发明的内存数据服务构思在网络环境中成为可能。网络速度飞速增长。在过去十年中,光纤的推广推动了网络速度的迅速攀升。很多现有系统互联都在1Gbps到10Gbps。现有的最快网络用于TeraGrid,可以以40Gbps的速度互联。100Gbps的发展计划也已于2004年公布。
随着有线网络的发展,无线网络的速度也在增长。几年前的无线局域网规范802.11才2Mbps,而当前的802.11已经达到54Mbps。现有的2.5或3G手机达到144Kbps的联接速度,可以提供丰富多样的应用程序。这些手机网络的速度可能会在现有的需求下迅猛发展到十亿比特每秒的速度。
网络速度增长使得低延迟(在10Gbps的网络上传输每字节的数据约用1纳秒)的网络硬件和网络数据供应服务成为现实。从而,远程内存数据服务可以用于实际应用。当前最快的处理器的内存访问时间是60到100纳秒。对于一个典型的32字节的缓存区,32字节在10Gbps的网络上传输时间小于32纳秒的处理器时间(不考虑初始化时间并且假设缓存和网卡之间有专用链接)。随着未来的100Gbps联接的出现,这个时间将进而降低几倍。在缓存和内存更小的移动处理器中,内存访问时间更大,因而,本发明可以提供基于网络的内存服务,并且可以比传统内存更快地向客户中央处理器更近的地方推入必要的数据,这将有助于网络计算的发展。

附图说明

图1展示了不同客户的结构图联接到一个内存数据服务器的详细结构图。

具体实施方式

我们将在下面讨论有关模块和应用程序的特定功用任务或者任务分组.这些特定功用任务或者任务分组的选择是出于解释的需要.在某些情况下它们有可能是根据某种目的任意选择的.我们相信每一个有一般专业知识的人都知道本发明可以以不同的方式去实现,去优化硬件,软件,或固化软件,特定功用任务也可以以不同于我们下面给出的命名和结构组合而不违背本发明的精神.
基于本发明的内存数据服务器拥有三个或更多的组件,包括数据服务器需要的主要组件,预取引擎、内存管理引擎和数据推进器。必需指出内存数据服务器需要有自有的处理器用于维持上述功能模块和进程的性能。在某些实例中,数据服务器的进程起动服务器的运作且在服务器上运行等待客户端的服务请求。根据客户请求的类型,此进程可以起动服务器和客户之间的数据传输。一个在数据服务器上的未击中处理后台进程可以随时为客户端的主存(DRAM)、缓存或预取缓存处理未击中的数据。未击中的地址和访问模式信息可以存在一个数据访问模式表中,以助于预测将来的此客户数据访问。
根据数据访问模式信息预取引擎可以运行一个未来访问预测后台进程来预测客户的未来数据访问。此未来访问后台进程可以动态地选择最有效的地址预测算法,并且将预测的数据地址传给需求者,进而要求数据推进器模块将客户所需要的数据推入到客户预取缓存,或根据所使用的内存数据服务模型推入到客户其他缓存和内存。数据推进器模块处理客户和内存服务器之间的数据传输,并且对客户的任何缓存未击中情况作出反应。未击中处理器同时向内存管理引擎和数据推进器传送信息。应当指出在某些情况下数据推进器仅用于数据预取。内存管理引擎将负责即时数据提取。这时,未击中信息将被送给内存管理引擎用于即时数据提取并且送给数据推进器用于将来的预取。
进而,数据推进器可在客户需要之前就将之数据从服务器内存中推入到客户的主存(DRAM)或者缓存中。如果服务器缓存和客户缓存之间存在一个合理设计的链接,那么数据服务器可以有一个专用于内存服务的缓存,这样数据推进器可以将数据直接从服务器的缓存推入到客户的缓存。
数据推进器模块从未击中处理后台进程获得客户缓存未击中信息和数据地址信息,并且传送被预测的将被访问的数据。此外,数据推进器或内存管理引擎可以利用数据访问模式信息从内存数据服务器的存储中相应地预取或提取数据到服务器的内存,以此加速内存数据服务。
参照图1来说,一个示范内存数据服务器11为客户群13提供面向客户的高层存储层次,比如,向客户预取缓存15,推入数据的服务,从而消除对较慢的客户内存和数据处理进程及设备的依赖。客户0示范了一个置备了专门设计的预取缓存15的普通计算机。客户1没有内存且只能支持纯服务模型。客户2备有内存,但是决定只使用纯服务模型。客户3采用混合服务模型。下面将会进一步阐述纯服务模型和混合服务模型的分类。
一般说来,内存数据服务器11的主要部件包括:预取引擎12、内存管理引擎14、以及数据推动器16.一个分离于客户处理器的微处理器(未标出)负责执行和控制内存数据服务器11的功能.预取引擎12的功能是观察应用程序的数据访问模式,及预测未来可能访问的数据地址.预取引擎12包括了未来访问预测器33和需求产生器22.未来访问预测器33可以采用自适性序列预测、马可夫链、或者其它现有的、将出现的策略来预测将要访问的地址.需求产生器22自适地选择预取需求的顺序和预取距离,并且将这些需求送到数据推进器16.需求产生器22可望推断出所需的预取距离,以使数据可以“恰好及时”地被推入到目的地,这样,就不会有数据污染或者数据过迟到达目的地的情况发生.基于数据地址的类型,可能会有两种预取引擎出现:缓存预取引擎和内存预取引擎.缓存预取引擎会监控过去的缓存行地址的模式,并且对将来的缓存行地址做出预测.而内存预取引擎会通过监控应用程序的页面访问模式预测内存页面地址.
数据推进器16含有数据的方位信息,例如在服务器内存、远程内存或者本地内存,并且将预取信号送到合适的方位。内存管理引擎14选择将数据从原有方位传送到目的地的有效的途径。内存管理引擎14也负责在缓存未击中和页错误发生时提取数据到客户本地内存。这些初始未击中情况发生于预取引擎12开始监控应用程序的数据访问模式之前。内存管理引擎14也可能拥有一个查询/重置策略的采用器模块49,此模块可以自适地从一系列重置策略中选择最有效的重置策略,选择的依据是要最适合客户应用程序的现有数据访问模式。这将提高内存数据服务器11的自适性以适应每个不同应用程序的运行特征。
在本发明中,内存数据服务器11可以向客户计算引擎的缓存或内存中推入数据。内存数据服务器11在适当的时候预取数据且将之推入到客户的存储层次,例如15、17、19,中。如果客户群13出现缓存未击中或页错误时,内存数据服务器11将这个未击中的数据根据情况送入客户缓存15、17,或者客户内存19中。可以专门为本发明设计一个客户预取缓存15来支持动态的基于推入式的预取。某些高级计算机系统其实已经有了这种用于本地主存(DRAM)的内置式预取缓存。
在本发明的具体实现中,内存数据服务器11可以由一个或者多个不同的硬件、软件或固件组成,具体的设计和组合可以留给最终设计者来完成,以使得内存服务提供者23的进程在内存数据服务器11上运行,并且等待客户的服务请求。内存服务提供者23将根据请求类型,如纯服务请求,混合服务请求,或者数据需要从客户内存15、17、19中复制到内存数据服务器11中,发起客户群13和服务器11之间的数据传输。
未击中处理器25后台进程负责从客户本地的主存(DRAM)17和客户预取缓存15中获得客户的即现即得的缓存未击中信息。应当指出,图中的线或箭头可代表任何操作信号或数据传输方法。未击中的客户指令的数据地址和数据访问模式信息可以被存在数据访问模式表31中。数据访问模式表31于是存储了数据访问的历史数据以助于预测客户程序的未来访问数据。
未来访问预测器33后台进程基于数据访问模式表31的信息来预测未来数据访问。这个未来访问预测器33后台进程动态地选择出最有效的地址预测算法,并且将预测出的地址传送给数据推进器模块16。现在已有很多预取算法,包括基于序列处理、自适性序列处理、跨度、马可夫、推入等算法。但是,在本发明出现之前,功能强的预取算法普遍被认为因开销过大,在应用中无法实现。
数据推进器16可以将预测出的访问数据推入到,比如说,客户0的预取缓存15中.数据推进器16由此而处理预取缓存15和内存数据服务器11之间的数据传输,以及对客户群13的任何缓存未击中情况做出反应.客户群13可以装置特用的预取缓存或者使用已有的缓存(如L2缓存17)来作为预取缓存,甚至在某些情况下像客户3那样使用本地的主存(DRAM)19.数据推进器模块16从未击中处理器25后台程序中获有缓存未击中信息和数据地址信息.数据推进器模块16也将预测出的未来访问数据推入客户预取缓存15,这些数据可能是从本地服务器主存(DRAM)内存45或内存存储磁盘47中得到.推入和预取可以有多步,包括将数据从服务器磁盘47中推入到服务器内存45中,从服务器内存或服务器缓存44(如果服务器缓存44和客户有直接连接)中推入到客户缓存15、17或客户内存19中.服务器缓存44可以是一个特用的或自适性的缓存.
内存数据服务器11的某些实例也许会设有搜索/重置策略采用器49后台进程,此后台进程在内存管理引擎14中根据客户应用程序的数据访问模式来选择重置策略,目的是为了服务器的本地主存(DRAM)45可以在数据置换前最大程度地利用取得的数据。未来访问预测器33后台进程也会用到这个策略信息。
在运作中,客户设备13可以通过向内存服务提供者23发出请求来启动一个内存服务器线程,使内存服务提供者开始处理客户的内存需求。这个请求包括初始数据地址信息。内存数据服务器11运行一个由上述架构的组件组成的线程。数据推进器模块16将几行数据从请求的地址空间送入到客户预取缓存15,同时客户处理器恢复应用程序的执行。假设数据访问的局部性存在,数据推进器模块16可望一开始就送入不止一行的数据。未击中处理器25后台进程收集缓存未击中信息,比如从预取缓存15和本地内存19得到的未击中的数据地址。此客户访问信息可以存储到数据访问模式表31中。当然,如果预测不需要拥有数据模式识别支持,也可以不采用模式表。
根据客户的访问信息,比如存在数据访问模式表31中的那些信息,未来访问预测器33后台进程预测出下个数据地址,然后数据推进器模块16将相应的数据推入到预取缓存15中。预取缓存未击中将发生在预测错误时。为了减少预取缓存未击中的情况,数据推进器模块16在起始阶段送入不止一行的预测数据,同时未来访问预测器33后台进程动态地根据渐增的访问模式信息来细致调整预测。为了处理预取缓存未击中,未击中处理器25后台进程在缓存未击中出现时向内存管理引擎14发出警告,然后内存管理引擎14将需要的或未击中的数据立即取出并且送出,而不用等待未来访问预测器33后台进程。
客户设备13可以选择完全依赖于内存数据服务器11来处理其数据请求,或者选择将内存数据服务器11用作延伸服务。为了提供客户群13这个灵活性,内存数据服务器11可以提供两个运作模型:纯服务模型和混合服务模型。
在纯服务模型下,客户群13所有的数据都存储在内存数据服务器11上,虽然客户群13可能有缓存。客户群13向内存数据服务器11发出请求,内存数据服务器11安排向客户预取缓存15复制数据,并且处理缓存未击中的情况。这种长期的强功能预取机制将提供更好的系统性能。纯服务模型适合于多芯芯片或共享内存系统,因为在这些系统中,内存数据服务器11贴近客户群13。纯服务模型也可以为客户群13节省能源。当客户群13启动后,客户群13可以将它的内存19和磁盘21调到低能源模式,并且将内存数据服务器11当作自己的内存和磁盘。在某些情况下,有些客户有可能不需要拥有主存或者磁盘而直接与内存服务器协调工作。
在普适计算环境中,手持设备配置的内存较小。这些客户设备可以选择内存数据服务器11来处理它们的内存请求。内存服务也可以以web服务的方式提供,这样客户在透明的情况下(即客户端程序不知觉的情况下)发现并且联接到最近的内存服务。请注意,在此情况下,本地内存和磁盘不一定要从客户计算机上拆除,仅仅全部或者部分关闭即可,以此节省能源。
在混合服务模型下,尤其对那些数据访问中有较好的数据局部性的数据访问模式,客户群13可以使用它自己的内存19和磁盘21。当访问的数据局部性变差或其它情况下,比如在某应用程序的工作组需要大量内存的情况下,客户群13可转而使用内存数据服务器11。客户群13可以使用预测模型,比如在S.Byna,X.Sun,et al.,Predicting Memory-AccessCost Based on Data-Access Patterns,Proceedings of IEEEInternational Conference on Cluster Computing,San Diego,September2004文章中阐述的预测模型,来决定是否选择内存服务和内存服务的模式。
在纯服务模型下,内存服务器11会接到客户群13需要其服务的通知。当纯服务模式开始后,内存服务器11接管客户内存管理的职能。内存服务器11直接监控客户缓存的数据访问模式,预测出客户应用程序未来的数据访问,并且将要访问的数据推送给客户群13,如放到客户预取缓存中。在混合服务模式下,当客户群13决定使用内存服务的时候,客户群13向内存服务提供者23发出请求。内存服务提供者23将启动一个后台进程来传送客户群13的当前地址引用表,并传送一系列的指令去提供客户群13所需要的内存服务。内存数据服务器11从客户群13的转换旁视表到内存页表的映射来收集其虚拟地址。然后,内存数据服务器11将这个需要的(与此客户地址映射有关的)数据从客户磁盘21转移到内存服务器的本地内存45。为了维持数据的一致性,内存数据服务器11可在客户需求完成时将数据存回客户磁盘21。在客户群13和内存数据服务器11之间的数据复制可以与在客户处理器上的应用程序的执行时间重叠。客户群13上旨在利用内存服务的决策进程应当考虑到在客户群13和内存数据服务器11之间的数据传输负荷。比如,在混合服务模型下,客户群13仅在需要改善性能或者保存能量及其它适当的条件下调用内存数据服务器11的服务。
虽然上面给出一些示范性实例用来解释本发明,这些实例不能用来限制以下给出的要求所定义的本发明的精神和范围。