用于通过基于云的网络进行数据传输的状态信息的压缩的利记博彩app
【专利摘要】本公开的各方面描述了用于压缩一组RAM数据的系统和方法,且该组RAM数据可能有一些在一组ROM数据中重复的部分。所述ROM数据可被分成多个数据块并进行散列以获得唯一的键值。接着,可对所述RAM进行第二次散列以查看是否有任何匹配所述ROM数据块的RAM数据块。具有匹配键值的RAM数据块被替换成指向所述数据在所述ROM中位置的指针。要强调的是,本摘要的提供符合以下规则,即要求摘要可允许搜索者或其他读者迅速地确定本技术公开的主题。要理解的是,所提交的摘要将不用于解释或限制权利要求的范围或含义。
【专利说明】用于通过基于云的网络进行数据传输的状态信息的压缩
【技术领域】
[0001 ] 本公开涉及数据压缩。此外,本申请描述了一种用于压缩媒体应用的状态信息以便通过网络轻易地将其进行传输的方法和设备。
【背景技术】
[0002]媒体应用,如视频游戏,通常同时需要只读存储器(ROM)和随机存取存储器(RAM)0所有运行媒体应用所需的数据都被存储在ROM上,但在媒体应用的执行过程中,也可将源自ROM的数据中的部分存储在RAM中以便更快和更高效地对其进行访问。被存储在RAM中的信息也可包括所有的状态信息。状态信息包括从媒体标题执行中的某一点运行媒体标题所需的所有信息。举例说明,状态信息可包括限定客户端装置平台(如正用于执行和显示媒体应用的游戏机或计算机)的每个组件的状态的数据。用于举例而非限制,状态信息可包括关于CPU、GPU和存储器的状态、寄存器值、程序计数器的值、可编程DMA的状态、用于DMA的缓冲数据、音频芯片状态和CD-ROM状态的信息。典型地,为了充分限定媒体应用的当前状态所需的数据量是比较大的。例如,在视频游戏中,可能有大约为8GB的被存储在RAM中的数据,其表示一组完整的状态信息。
[0003]以前,为了充分限定状态信息所需的大量数据并不是一个问题,这是因为数据从未保存过或从RAM进行传输。然而,对于状态信息传输能力的需求日益增长。例如,有时,可能会通过网络将状态信息传输至基于云的服务器,例如在软件标题的基于云的仿真过程中。在这些情况下,传输数千兆字节的数据可能是不实际的。可替代地,需要在本地保存状态信息以用于后续的使用。例如,当把游戏机置于节电“睡眠”模式中时,为了从当前的位置重新开始玩游戏而保持RAM的整个内容则可能是不实际的。
【发明内容】
[0004]因此,本领域需要将状态信息压缩成更少数据的密集格式的系统和设备。在这种背景下,产生了本公开的各方面。
【专利附图】
【附图说明】
[0005]图1为根据本公开的一个方面的通过网络进行通信的客户端装置平台和基于云的服务器的示意图。
[0006]图2A-2D为描述根据本公开的各方面的用于压缩媒体应用的状态信息的方法的流程图。
[0007]图3A-3C为描述根据本公开的各方面的可在存储器中的部分上进行的散列过程的简化版本的方框图。
[0008]图4A-4D为描述根据本公开的各方面的可存储在非临时性计算机可读介质上的用于压缩状态信息的指令的方框图。
【具体实施方式】
[0009]虽然下面的详细描述包含许多用于说明的具体细节,但本领域的任何普通技术人员将理解,针对下述细节的许多变化和变更都落在本公开的范围之中。相应地,阐明下面所描述的本公开的各方面,其不会对在本说明书前的权利要求的一般性造成损失且不会对其施加限制。
[0010]本公开的各方面描述了便于压缩应用状态数据的系统和方法。如本文所使用的,应用状态数据为客户端装置平台用于在媒体应用中复制给定情景所需的一组完整的数据。典型地,应用状态数据是通过保存客户端装置平台的随机存取存储器(RAM)而获得的。为了充分限定客户端装置平台的状态所需保存的在RAM中的大量数据可使用被存储在只读存储器(ROM)中的数据进行压缩以作为库。典型地,在RAM中存在的数据和在ROM中存储的数据有大量的重叠。例如,在视频游戏中,在给定时间上RAM中约50%或更多的数据也可能在ROM中找到。用于举例而非限制,在媒体应用的执行过程中可能有被存储在RAM中的纹理、三维模型或游戏中动画。这些类型的数据也可在ROM上找到。由于ROM不随时间改变,也可在ROM中找到的RAM中数据的部分可被替换成指向其在ROM中相应位置而非真实数据的指针。因此,可通过交叉引用回ROM而减少为了充分限定客户端装置平台的状态所需的数据量。
[0011]图1为本发明的一个实施方案的示意图。可通过网络159经基于云的服务器103访问客户端装置平台102。基于云的服务器103可通过网络159访问替代的客户端装置平台 102。
[0012]客户端装置平台102可包括中央处理器(CPU)131。举例说明,CPU131可包括一个或多个处理器,其可根据,例如双核、四核、多核或Cell处理器的架构进行配置。客户端装置平台102还可包括存储器132 (例如:RAM、DRAM、ROM、DROM等)。CPU131可执行过程控制程序133,其中的部分可被存储在存储器132中。客户端装置平台102还可包括公知的支持电路140,如输入/输出(I/O)电路141、电源(P/S)142、时钟(CLK)143和高速缓存144。可选地,客户端装置平台102可包括大容量存储装置134,如磁盘驱动器、⑶-ROM驱动器、磁带驱动器等以存储程序和/或数据。可选地,客户端装置平台102还可包括显示单元137和用户接口单元138,以便在客户端装置平台102和需要直接访问客户端装置平台102的用户之间进行交互。显示单元137可以采用显示文本、数字或图形符号的阴极射线管(CRT)或平板屏幕的形式。用户接口单元138可包括键盘、鼠标、操纵杆、光笔或其它装置。可通过I/O电路141将控制器145连接至客户端装置平台102或可将其直接集成至客户端装置平台102。控制器145可便于在客户端装置平台102与用户之间进行交互。控制器145可包括键盘、鼠标、操纵杆、光笔、手持控制或其它装置。控制器145也能够产生触觉响应146。用于举例而非限制,触觉响应146可以是振动或对应于触觉的任何其它反馈。
[0013]客户端装置平台102可包括网络接口 139,其被配置成启用W1-F1、以太网端口或其它通信方法。网络接口 139可结合合适的硬件、软件、固件或其两个或多个的一些组合以便通过电子通信网络159进行通信。网络接口 139可被配置成通过局域网和广域网(如因特网)实现有线或无线通信。客户端装置平台102可通过网络159经一个或多个数据包发送和接收数据136和/或对文件的请求。
[0014]前述组件可经内部系统总线150而在彼此之间交换信号。客户端装置平台102可以是通用计算机,其在运行用于执行如本文所述的本发明的实施方案的代码时变成专用计算机。用于举例而非限制,客户端装置平台102可以是游戏机、机顶盒、电缆盒、个人计算机、平板电脑、电话、手机、DVD播放器、蓝光播放器、数字视频录像机(DVR)或其它类似的装置或其任意的组合。用于举例而非限制,就游戏机而言,客户端装置平台102可以是便携式游戏机,如索尼电脑娱乐公司生产的PlayStat1n Vita,或者其可以是固定式游戏机,如索尼电脑娱乐公司生产的PlayStat1n4或任何其它更早的版本。
[0015]客户端装置平台102可访问已被用户选定要执行的媒体应用114。在客户端装置102中可能存储有一个以上的媒体应用114。媒体应用也可被存储在存储器132或大容量存储装置134中。另外,一个或多个媒体应用114可被存储在可通过网络159访问客户端装置平台102的远程位置上。用于举例而非限制,媒体应用可以是视频游戏。每个媒体应用114包含被存储在只读存储器(ROM)中的ROM数据108。当执行媒体应用114时,客户端装置平台102使用ROM数据108以向用户显示媒体应用114。在执行媒体应用114的过程中,客户端装置平台102可使用随机存取存储器(RAM) 105以存储ROM数据108中的部分。
[0016]基于云的服务器103可包括中央处理器(CPU) 131’。举例说明,CPU131’可包括一个或多个处理器,其可根据,例如双核、四核、多核或Cell处理器的架构进行配置。基于云的服务器103还可包括存储器132’(例如:RAM、DRAM、ROM、DROM等)。CPU131’可执行过程控制程序133’,其中的部分可被存储在存储器132’中。基于云的服务器103还可包括公知的支持电路140’,如输入/输出(I/O)电路141’、电源(P/S) 142’、时钟(CLK) 143,和高速缓存144’。可选地,基于云的服务器103可包括大容量存储装置134’,如磁盘驱动器、⑶-ROM驱动器、 磁带驱动器等以存储程序和/或数据。可选地,基于云的服务器103还可包括显示单元137’和用户接口单元138’,以便在基于云的服务器103和需要直接访问基于云的服务器103的用户之间进行交互。显示单元137’可以采用显示文本、数字或图形符号的阴极射线管(CRT)或平板屏幕的形式。用户接口单元138’可包括键盘、鼠标、操纵杆、光笔或其它装置。基于云的服务器103可包括网络接口 139’,其被配置成启用W1-F1、以太网端口或其它通信方法。
[0017]网络接口 139’可结合合适的硬件、软件、固件或其两个或多个的一些组合以便通过电子通信网络159进行通信。网络接口 139’可被配置成通过局域网和广域网(如因特网)实现有线或无线通信。基于云的服务器103可通过网络159’经一个或多个数据包发送和接收数据136’和/或对文件的请求。
[0018]前述组件可经内部系统总线150’而在彼此之间交换信号。基于云的服务器103可以是通用计算机,其在运行用于执行如本文所述的本发明的实施方案的代码时变成专用计算机。举例说明,基于云的服务器103还可实施为虚拟机。
[0019]如图2A所示,客户端装置平台102可被配置成实施一种根据一种发明方法260的用于压缩被存储在可访问客户端装置平台的RAM中的一组RAM数据的方法。首先,在261中,将被存储在可访问客户端装置平台102的R0M308中的一组ROM数据308分成多个ROM数据块307。ROM数据308可以是媒体应用114的ROM数据108。
[0020]图3A为简化方框图,其可有益于使过程可视化。如图所示,ROM数据308可被分成多个(1、2、3、……、n)R0M数据块307。可通过平衡竞争因素而做出要使ROM数据块307中的每一个为多大的决定。例如,较大的ROM数据块307通常需要较少的散列键,且因此需要较少的存储器空间以对其进行存储。然而,如果ROM数据块307太大,那么则降低了在RAM中找到匹配数据块的可能性。优选地而非必须地,每个ROM数据块307的大小可位于约50KB和IMB之间。这是一个有用的范围,因为它提供了足够的粒度用于进行后续的散列过程,而无需投入太多的存储器以存储散列过程所需的散列键值。作为一个实例,如果R0M308为25GB,那么IMB数据块将需要25000散列键值,且为50kB的数据块307将需要500000散列键值。假定每4个字节进行32位散列,那么即使是更小的ROM数据块307也将仅需要2MB的存储器以用于键值。
[0021]一旦已确定每个ROM数据块307合适的大小,方法260则可通过在262中对ROM数据块307进行第一次散列操作以向每一个分配唯一的键值而继续进行。由于ROM数据308是只读的,数据不会发生变化,且可使用相同的键值以进行任何后续的压缩操作。因此,一旦已将ROM数据308分成ROM数据块307并对其进行散列以产生键值,那么则无需再次对ROM数据308进行散列。
[0022]之后,在方框263中,发起对RAM305的压缩操作。可能有许多用于发起对RAM305的压缩的不同方法。例如,玩媒体应用114的用户可通过在应用中的给定点暂停媒体应用114而发起压缩操作。举例说明,当媒体应用114是视频游戏时,那么用户则可能希望在一个等级里中途暂停游戏。为了允许用户在稍后的时间于该等级中的同一位置重新开始游戏,客户端装置平台102可保存应用状态信息306。此外,在媒体应用114的执行过程中可通过将客户端装置平台置于“睡眠”模式中而发起压缩操作。当再打开客户端装置平台时,可能想要的是状态信息的压缩版本而非必须保存装置的整个状态。此外,用户可能想要将他们正在玩的游戏移植至另一装置。用于举例而非限制,用户可能正在PlayStat1n4游戏机上玩媒体应用114且可能想要将游戏移植至PlayStat1n Vita。发起移植媒体应用114的动作也可发起压缩操作。因此,用户为了暂停应用而将客户端装置平台置于“睡眠”模式或为了将媒体应用移植至第二装置中而进行的暂停媒体应用114的操作可发起压缩操作以产生为RAM305的压缩版本的应用状态数据306。应用状态数据306可包括指向用于其中值不同于被存储在ROM中的值以及源自已发生变化的ROM的数据值的ROM数据308中的部分的指针。
[0023]作为第二个实例,可在生成应用状态数据306时发起压缩操作以通过网络连接159进行传输。当通过网络进行传输时,应用状态数据306的大小可能是优选的且压缩操作因此可以是理想的。用于举例而非限制,可通过网络传输应用状态数据306以用于各种原因。其中一个原因是向基于云的服务器103提供快照。快照及其用途在下列申请中进行了更详细的描述,即在2013年3月8日提交的序列号为13/791,379 (代理人案号:SCEA12007US01)且题为“基于云的遗留应用的暂停状态(SUSPENDING STATE OFCLOUD-BASED LEGACY APPLICAT1NS)”的共同转让和共同未决的申请,其整个公开以引用的方式并入本文;以及 Brian Michael Christopher Watson、Victor Octav Suba Miura、Jacob P.Stine和Nicholas J.Cardell 于 2012年9 月 28 日提交的序列号为 13/631,725(代理人案号:SCEA12008US00)且题为“暂停游戏的重玩和重新开始(REPLAY AND RESUMPT1NOF SUSPENDED GAME)”的共同转让和共同未决的申请,其整个公开以引用的方式并入本文。此外,压缩应用状态数据306可用于便于通过基于云的网络159对媒体应用114进行串流。代替通过网络不断地发送该完整组的RAM数据305,可利用压缩的应用状态数据306以减少串流游戏所需的带宽。
[0024]要注意的是,在通过网络将状态数据从一个装置(例如:客户端装置)传输至另一个(例如:服务器)处,所述应用状态数据306的压缩有益于基于云的应用。然而,本公开的各方面并不限于这样的实施方式,可替代地,如本文所述的应用状态数据的压缩是有用的,例如:用于在更少的存储空间内在游戏机上同时暂停多个应用(例如:多个游戏)。
[0025]接着,在方框264中,可对该组RAM数据305进行第二次散列操作以找到具有与被分配至ROM数据块307之一的键值相匹配的键值的一个或多个RAM数据块315。然而,由于对随机存取存储器进行了第二次散列操作,RAM数据块315不在固定的位置上且可能有未知的偏移值。因此,第二次散列操作可包括能够以可变的偏移检测匹配块的算法。如图3A所示,有几个由第二次散列操作所识别的RAM数据块315,其具有与ROM数据块307之一相匹配的键值。为了具有匹配键值,ROM数据块307和RAM数据块315必须含有相同的数据。因此,匹配块表示未在ROM和RAM之间发生变化的信息。由于在RAM数据块315中含有的数据在别处均为可用的,因此在生成应用状态数据306时无需复制信息。
[0026]为了避免数据的复制,在方框265中,方法260可通过将指针309保存至具有与匹配键值相应的RAM数据块315的每个ROM数据块307的位置而继续进行。之后,在方框266中,可将与被分配至ROM数据块307之一的键值不相匹配的RAM数据310保存为应用状态数据306以提供客户端装置平台的完整状态。
[0027]根据本公开的另一方面,根据一种方法270,在压缩和/或加密ROM数据308时,可能需要进行额外的步骤。首先,如果对ROM数据308进行了压缩,则在方框271中对ROM数据308进行解压缩操作。此外,如果对ROM数据308进行了加密,那么则在方框272中,对数据进行解密。应注意的是,如果对ROM数据进行了压缩而没有进行加密,那么仅需进行解压缩操作。可替代地,如果对ROM数据308进行了加密而没有进行压缩,那么仅需对数据进行解密。
[0028]一旦已将ROM数据308转化成非加密和未压缩的形式,方法270则可在方框273中通过将该组ROM数据分成多个ROM数据块307而继续进行,其中每个数据块307还包括指向数据块307所源起的压缩和/或加密数据中位置的指针位置。指示压缩和/或加密数据中原始位置的指针是必要的,这是因为压缩和/或加密数据为将在分析应用状态数据306时用作参考的一组数据。之后,方法270继续按基本上与方法260的方框262至266中所描述的步骤相同的步骤进行后面的方框274至278。
[0029]根据本公开的另一方面,可实施机器学习以提供针对RAM数据305的改进的压缩。图2C所示方法280描述了一种可用于通过机器学习而改进压缩的方法。首先,在方框281中,方法通过执行在应用的多个实例中监控RAM数据305的优化过程而开始并将RAM数据305分成必要状态的数据310e和非必要状态的数据310ne。在将媒体应用114释放给消费者之前可以脱机运行优化过程。举例说明,媒体应用114可通过多个模拟运行。在模拟中,可对RAM数据305进行密切的监控以确定RAM数据305中的哪些部分是用于创建在媒体应用114的执行过程中的给定点完全限定客户端装置平台102的状态的应用状态数据组306所必要的。用于举例而非限制,如果显示列表所针对的帧不是充分限定客户端装置平台的状态所必要的,那么某些信息(如显示列表)则未必是必要的。此外,用于动画的中间处理步骤可以不是必要的数据。例如,在图形处理操作中,GPU可能需要读取一个纹理,然后输出取决于第一纹理的第二纹理。如果通过优化过程确定了这种关系,那么则可以保存必要的数据(为输出的第二纹理),而无需保存生成的中间数据以产生该输出。一旦RAM数据已被识别为非必要的数据,方法260则继续按基本上与方法260的方框262至265中所描述的步骤相同的步骤进行后面的方框282至286。在方框287中,仅将不与被分配至ROM数据块之一的键值相匹配的必要的RAM数据310E保存为应用状态数据306的一部分。非必要RAM数据31ne的排它性允许对RAM数据308进行进一步的压缩。
[0030]如前面所提到的,当每个ROM数据块307的大小较大时,需分配的以保持键值的存储器的数量则会减少。然而,这也降低了找到匹配的RAM数据块315的概率,这是因为如果单个字节不同,那么散列操作将不会检测到它以作为匹配。因此,本公开的各方面旨在增加在ROM数据和RAM数据之间找到匹配块的可能性,且不会显著地增加需分配的以用于存储键值的存储器。
[0031]最初,可使用机器学习以类似于方法280所述的方式脱机监控RAM。然而,代替识别必要的和非必要的数据的方式,除了通常(但不一定总是)与ROM数据块307中相应子部分311不同的RAM数据块315中小的子部分312以外,可使用机器学习识别大体上与ROM数据块307相类似的RAM数据块315。一旦已识别这些子部分312,则可实施图2D所示的方法290。
[0032]首先,在方框291中,将被存储在可访问客户端装置平台102的ROM中的一组ROM数据分成多个ROM数据块。之后,在方框292中,将ROM数据块中的一个或多个分成第一部分307和第二部分311。第二部分311可以是已被机器学习识别为更有可能与RAM数据块312的相应部分不相匹配的ROM数据块307中的部分。在图3C中,简化的方框图示出了第六ROM数据块的第一和第二部分。
[0033]在将ROM数据块分成第一和第二部分后,在方框293中,方法290通过对未分的ROM数据块307以及已分的ROM数据块307的第一部分进行第一次散列操作以向每一个分配唯一的键值而继续进行。之后,在方框294中,可对已分的ROM数据块311的第二部分进行可选的第一次子散列操作以向每个子部分分配唯一的键值。该步骤是可选的,这是因为可能并不值得进行该步骤以尝试和匹配更有可能导致不匹配的子部分。因为有可能不匹配,所以查看是否有匹配的过程可能会导致资源利用的浪费。
[0034]一旦已对ROM数据304进行了散列,方法则可继续前进至方框295,其中发起压缩过程。压缩过程的发起大致上与方法260的方框263中所述的步骤相类似。接下来,在方框296中,对RAM数据305进行第二次散列操作以找到与被分配至未分的ROM数据块307之一的键值或已分ROM数据块307的第一部分相匹配的一个或多个RAM数据块315。移除更有可能导致不匹配的子部分311增加了找到与ROM数据块307相匹配的RAM数据块315的可能性,且因此改进了压缩。如图3C所示,第六RAM数据块315与ROM数据块307的第一部分相匹配。如果已将ROM数据块的子部分311包括在第一散列操作中,那么第六RAM数据块315将不会被匹配且数据的整个块将需要被保存,而非仅使用指针。
[0035]在第二次散列操作后,可在方框297中实施另一可选的步骤。如果在方框294中进行第一次子散列操作,那么则可对RAM数据305进行第二次子散列操作以尝试和找到与被分配至ROM数据块的第二部分之一的键值相匹配的一个或多个RAM数据块。之后,以大致与方法260的方框265和266相同的方式进行方框298和299。
[0036]如图4A所示,例如,可通过客户端装置平台102执行一组客户端装置平台指令460。客户端装置平台指令460可形成在非临时性计算机可读介质(如存储器132或大容量存储装置134)上。客户端装置平台指令460也可以是过程控制程序133的一部分。指令包括用于在方框461中将被存储在可访问客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块的指令。接着,在方框462中,可以有用于对多个ROM数据块进行第一次散列操作以向每个ROM数据块分配唯一的键值的指令。接下来,在方框463中,可以有用于发起对该组RAM数据的压缩的指令。之后,在方框464中,可以有用于对RAM数据进行第二次散列操作以找到具有与被分配至ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块的指令。接着,可将用于将指针保存至具有与RAM数据块相匹配的键值的每个ROM数据块位置的指令包括在方框465中。最后,在方框466中,可以有用于保存与被分配至ROM数据块之一的键值不相匹配的RAM数据中部分的指令。
[0037]如图4B所示,例如,可通过客户端装置平台102执行一组客户端装置平台指令470。客户端装置平台指令470可形成在非临时性计算机可读介质(如存储器132或大容量存储装置134)上。客户端装置平台指令470也可以是过程控制程序133的一部分。指令可包括用于在方框471中对被存储在可访问客户端装置平台的ROM中的一组ROM数据进行解压缩的指令。接着,在方框472中,可以有用于解密该组ROM数据的指令。之后,在方框473中,指令可包括用于将该组ROM数据分成多个ROM数据块的指令,其中每个数据块也包括指向压缩和/或加密ROM数据位置的指针。之后,客户端装置平台指令470的剩余指令474-478大致上与客户端装置平台指令460的方框462-466中所描述的指令相类似。
[0038]如图4C所示,例如,可通过客户端装置平台102执行一组客户端装置平台指令480。客户端装置平台指令480可形成在非临时性计算机可读介质(如存储器132或大容量存储装置134)上。客户端装置平台指令480也可以是过程控制程序133的一部分。指令可包括在方框481中用于执行在应用的多个实例中监控RAM数据并将RAM数据分成必要状态的数据和非必要状态的数据的优化过程的指令。接下来,在方框482中,指令可包括用于将被存储在可访问客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块的指令。之后,在方框483中,可以有对多个ROM数据块进行第一次散列操作以向每个ROM数据块分配唯一的键值的指令。然后,在方框484中,可以有用于发起对该组RAM数据的压缩的指令。然后,在方框485中,可以有用于对RAM数据进行第二次散列操作以找到具有与被分配至ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块的指令。接下来,在方框486中,可以有用于将指针保存至具有与RAM数据块相匹配的键值的每个ROM数据块位置的指令。最后,在方框487中,可以有用于保存与被分配至ROM数据块之一的键值不相匹配的必要的RAM数据的指令。
[0039]如图4D所示,例如,可通过客户端装置平台102进行一组客户端装置平台指令490。客户端装置平台指令490可形成在非临时性计算机可读介质(如存储器132或大容量存储装置134)上。客户端装置平台指令490也可以是过程控制程序133的一部分。指令可以包括用于在方框491中将被存储在可访问客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块的指令。接着,在方框492中,可以有用于将ROM数据块中的一个或多个分成第一部分和第二部分的指令。接下来,在方框493中,可以有用于对未分的ROM数据块和已分的ROM数据块的第一部分进行第一次散列操作以向每个ROM数据块分配唯一的键值的指令。然后,在方框494中,可以有用于对已分的ROM数据块的第二部分进行第一次子散列操作以向每一个分配唯一的键值的可选指令。之后,在方框495中,可以有用于发起对该组RAM数据的压缩的指令。然后,可将用于对RAM数据进行第二次散列操作以找到具有与被分配至ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块的指令包括在方框496中。接着,可将用于对RAM数据进行第二次子散列过程以找到与被分配至ROM数据块的第二部分之一的键值相匹配的一个或多个RAM数据块的另一可选指令包括在方框497中。在方框498中,可以有用于将指针保存至具有与RAM数据块相匹配键值的每个ROM数据块位置的指令。最后,在方框499中,可以有用于保存与被分配至ROM数据块之一的键值不相匹配的RAM数据的部分的指令。
[0040]虽然上面对本发明的优选实施方案进行了完整的描述,但仍可使用各种替代方案、修改和等效方案。因此,本发明的范围不应参照上面的描述进行确定,而是应参照所附权利要求并连同其等同物的全范围一起进行确定。本文所述的任何特征(无论其是否是优选的)均可与本文所述的任何其它特征(无论其是否是优选的)相结合。在前面的权利要求中,除非另有明确说明,不定冠词“一或一个”指该冠词后项目的一个或多个的数量。所附权利要求不应被解释为包括方式加功能的限制,除非在给定的权利要求中使用短语“方式用于”明确地描述了这种限制。
【权利要求】
1.一种在客户端装置平台中用于压缩被存储在可访问所述客户端装置平台的RAM中的一组RAM数据的方法,其包括: 将被存储在可访问所述客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块; 对所述多个ROM数据块进行第一次散列操作以向每个ROM数据块分配唯一的键值; 发起对所述组RAM数据的压缩; 对所述RAM数据进行第二次散列操作以找到具有与被分配至所述ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块; 将指针保存至具有与RAM数据块相匹配的键值的每个ROM数据块的位置;以及 保存与被分配至所述ROM数据块之一的键值不相匹配的所述RAM数据中的部分。
2.根据权利要求1所述的方法,其还包括: 在将所述组ROM数据分成多个ROM数据块之前解压缩所述组ROM数据;以及包括具有每个ROM数据块的指针,其指向所述ROM数据的压缩版本中每个ROM数据块所源起的位置。
3.根据权利要求1所述的方法,其还包括: 在将所述组ROM数据分成多个ROM数据块之前解密所述组ROM数据;以及包括具有每个ROM数据块的指针,其指向所述加密ROM数据中每个ROM数据块所源起的位置。
4.根据权利要求1所述的方法,其还包括: 在发起所述RAM数据的压缩前执行优化过程,其监控在利用所述RAM数据的应用的多个实例中所述RAM数据中的变化并将所述RAM数据分成必要状态的数据和非必要状态的数据。
5.根据权利要求4所述的方法,其还包括: 仅保存与被分配至所述ROM数据块之一的键值不相匹配的所述RAM数据中的所述必要状态的数据部分。
6.根据权利要求1所述的方法,其中所述ROM数据块中的一个或多个被分成第一部分和第二部分,其中所述第二部分在所述第一散列操作中不进行散列,且其中所述ROM数据块的所述第二部分更有可能具有与RAM数据块不相匹配的键值。
7.根据权利要求6所述的方法,其还包括: 对所述ROM数据块的所述第二部分进行第一次子散列过程以向ROM数据块的每个第二部分分配唯一的键值。
8.根据权利要求7所述的方法,其还包括: 对所述RAM数据进行第二次子散列过程以找到与被分配至所述ROM数据块的所述第二部分之一的键值相匹配的一个或多个RAM数据块。
9.根据权利要求1所述的方法,其中通过用户发起的请求发起压缩以暂停利用所述RAM数据的应用。
10.根据权利要求1所述的方法,其中连接地发起压缩以通过网络连接传送所述RAM数据。
11.根据权利要求10所述的方法,其中所述RAM数据被传送至基于云的服务器。
12.根据权利要求1所述的方法,其还包括通过网络发送保存的应用状态,其中所述保存的应用状态包括指向具有与一个或多个相应的RAM数据块相匹配的键值的一个或多个相应的ROM数据块的一个或多个位置的指针以及与被分配至一个或多个相应的ROM数据块的一个或多个相应的键值不相匹配的RAM数据中的一个或多个部分。
13.根据权利要求1所述的方法,其中所述RAM数据包括两个或多个应用的状态。
14.根据权利要求13所述的方法,其中所述两个或多个应用的所述状态被共同保存。
15.一种非临时性计算机可读介质,其包含用于压缩被存储在可访问所述客户端装置平台的RAM中的一组RAM数据的程序指令,且其中通过计算机系统的一个或多个处理器执行所述程序指令会使所述一个或多个处理器进行下列步骤: 将被存储在可访问所述客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块; 对所述多个ROM数据块进行第一次散列操作以向每个ROM数据块分配唯一的键值; 发起对所述组RAM数据的压缩; 对所述RAM数据进行第二次散列操作以找到具有与被分配至所述ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块; 将指针保存至具有与RAM数据块相匹配的键值的每个ROM数据块的位置;以及 保存与被分配至所述ROM数据块之一的键值不相匹配的所述RAM数据中的部分。
16.一种客户端装置平台,其被配置成包括: 处理器; 被耦合至所述处理器的存储器; 包含在存储器中用于所述处理器执行的一个或多个指令,所述指令被配置成压缩被存储在可访问所述客户端装置平台的RAM中的一组RAM数据,所述方法包括: 将被存储在可访问所述客户端装置平台的ROM中的一组ROM数据分成多个ROM数据块; 对所述多个ROM数据块进行第一次散列操作以向每个ROM数据块分配唯一的键值; 发起对所述组RAM数据的压缩; 对所述RAM数据进行第二次散列操作以找到具有与被分配至所述ROM数据块之一的键值相匹配的键值的一个或多个RAM数据块; 将指针保存至具有与RAM数据块相匹配的键值的每个ROM数据块的位置;以及 保存与被分配至所述ROM数据块之一的键值不相匹配的所述RAM数据中的部分。
【文档编号】H03M7/30GK104052492SQ201410089633
【公开日】2014年9月17日 申请日期:2014年3月12日 优先权日:2013年3月15日
【发明者】V.O.S.米尔拉 申请人:索尼电脑娱乐公司