编码和解码优化的制作方法

文档序号:7641740阅读:163来源:国知局
专利名称:编码和解码优化的制作方法
编码和解码优化
背景技术
内容分布系统的开发使得诸如软件更新、关键补丁和多媒体内容之类 的数据可以分布到网络中的节点。通常,这些系统包括了许多放置在网络 中的服务器,并且有多个节点直接连接到服务器之一以下载所请求的文件。 然而,这些系统受到与服务器的连接带宽的限制,并且需要大量的投资来 提高系统的传输能力。因此,所开发的内容分布系统依赖于一个完全分布 式的体系结构,此时网络中的节点参与该内容分布过程。这些系统可以被 称作对等网络或者对等体辅助的内容分布系统。在这一系统中,服务器可 以将要分布的文件分为许多块,然后把这些块提供给网络中的节点。 一旦 一个节点收到一个或者多个块,该节点就可以为其它节点充当已接收块的 源,同时此节点还继续接收块,直到已接收到文件的所有块。除非节点知 道哪些块被网络中的其它节点需要和保存,否则系统可能遇到诸如稀有块 和网络瓶颈的问题。
最近,已开发的协作式内容分布系统避免了稀有块问题和要求节点知 晓系统中其它所有节点的问题。这种系统使用网络编码技术,指的是系统 中的每一个节点产生和传输经编码的信息块,这些新编码块由是该特定节 点当前持有的所有块的线性组合。这种系统与早期的系统形成对比,早期 系统对块的编码仅仅在服务器处发生。
网络编码的使用可参照

图1描述,图中示出了在服务器102和两个客 户机(或节点)之间、客户机A104和客户机B 106之间块的流动。最初 所有块B1至Bn仅由服务器所保有,而没有被任何节点保有。当客户机A 与服务器联系以获得一块时,服务器产生一个编码块Elf它是文件中所有 块的一个线性组合,使得
E1=α1B1+α2B2+.....+αnBn,
其中,αi是随机系数。为了不增加块的大小,这些操作通常在一个有限域内进行,典型的是域GF (216)。然后,服务器将新的编码块Et和系数向 量(ai)两者传送给客户机A。客户机A还可能从服务器接收第二编码块E2, E2是使用第二组随机系数Pi创建的。当客户机A需要向客户机B传送一块 时,客户机A使用随机系数叫从E,和E2的线性组合创建第三编码块E3。
当使用上述的网络编码时,客户机在接收到n个互相线性独立的块之 后,能够使用类似于求解一组线性方程的过程来恢复原始文件。如果这些 系数是由每个客户机随机选择的,那么一个客户机将不大可能收到对这个 客户机没用的块。然而,为了进一步检验这一点,客户机可以在传送块本 身之前先传送系数向量给接收客户机(如图1示例中的客户机B)。接收 客户机于是可以检验是否最终的合成块会对它提供任何新的有用信息,只 有当该块对接收客户机有用时,才请求下载该块。
如上所述,为了使节点产生新的编码块,它必须要读取所有已经接收 到存储器中的块。这个过程需要处理器密集处理并会引入延迟。此外在解 码时,节点面临着解码这些编码块的极复杂问题,而这同样是处理器密集 且耗时的。在节点处读/写数据进出存储器尤其耗费时间。
发明概述
提供本概述是为了用简化的形式介绍将在以下详细描述中进一步描述 的一些概念。本概述并不旨在标识要求保护的主题的关键特征或必要特征, 也不旨在用于确定要求保护的主题的范围。
对经网络分布内容进行编码的方法连同与对这些经网络分布的编码内 容进行解码的方法一起描述。
第一示例提供了一种对经网络分布的内容进行编码方法。分布的内容 被分为多个段,且每个段又包含多个数据块。此方法包含以下过程从多 个段中选择一个段、从一个块存储中选择所选段的至少两个块、以及从所 选的至少两个块的线性组合创建新的经编码块。
这就有利地导致大大节省编码时间和处理要求,因为为了对内容编码, 只需要将来自同一段的那些块读入存储器。
选择一个段的步骤可包括一个选择所有多个段的不频繁但周期性的步
骤。这样做的优点是通过创建少量的块用来代替来自任何段的块,缓解了 稀有块的问题。
选择一个段可以包括随机地从多个段中选择一个段。
选择一个段可包括根据一指定的顺序从多个段中选择一个段。
选择至少两个块的步骤可包括从块存储的所选段中选择所有可用块。
在一个示例中,每个段都可包含有多个未经编码的块;并且选择至少 两个块可包括从已编码块存储的所选段中选择至少两个编码块;并且创 建新编码块包括从所选的至少两个编码块的线性组合创建新的编码块。
例如,选择至少两个编码块可包括为一个新编码块选择一个目标级 数(degree),其中新编码块的级数是从中创建该新编码块的未编码块的数 量;尝试从编码块存储的所选段选择至少两个编码块来创建一个新的编码 块,使得新块的级数不超过目标级数;如果尝试失败,则使目标级数递增1, 并重复该尝试步骤;如果尝试成功,则创建其级数不超过目标级数的新编 码块。
该方法还可包括存储新的编码块。
新的编码块例如可以利用预先计算的査找表来创建。其优点在于减少 了处理时间和负荷,因为其没有进行计算而是在预先计算的表格内执行査 找。
第二示例提供了对经网络分布的内容进行编码的方法,其中内容被分 为多个未经编码的数据块。此方法包括为新编码块选择目标级数,新编码 块的级数定义为从中创建新编码块的未编码块的数量。此方法还包括尝试 从编码块存储中选择多个编码块以创建其级数不超过目标级数的新编码 块。如果此尝试失败,目标级数递增1并重复该尝试该步骤。然而,如果 尝试成功,则从所选的多个编码块的线性组合创建新的编码块。
这种编码方法的好处是在仍保有网络编码优点的同时维持了矩阵的稀 疏性。这就降低了复杂性从而减少了解码内容所需的处理时间和处理负荷。
在一个示例中,所选的多个编码块包含了能够从中创建级数不超过目 标级数的新编码块的最大数量的所选编码块。
该方法还可包括存储新的编码块。
新的编码块例如也可使用预先计算的查找表来创建。
第三示例提供了一种对经网络分布的内容进行编的码方法,其中内容 被分成多个数据块。该方法包括从网络上块存储中选择多个块,从所选块 的线性组合来创建新的编码块并存储该新的编码块。
这样有利地减少了节点用来形成新编码块必需执行的读操作次数,从 而縮短了编码块所花的时间。
新编码块例如可存储在高速缓存中。
在一个示例中,新编码块可被存储一段预定的时间。
块存储可包括位于节点主存储器中的第一部分和位于节点高速缓存中 的第二部分。
新的编码块可使用预先计算的查找表来创建。
再一个示例提供了对经网络分布的内容进行编码的方法,其中被创建 并发送到网络上另一个节点的新编码块保持在高速缓存中。因此,被高速 缓存的编码块可用于再次创建经网络分布的内容的另外的新编码块。
另一个示例提供了一种对从网络上以多个编码块的形式收到的内容进 行解码的方法。该方法包括使用消息传递技术来解码和简化从接收到的编 码块的系数向量所形成的矩阵。然后对所得矩阵使用矩阵求逆来完成解码 过程。
这样通过在执行处理器密集的矩阵求逆前先尽可能化简矩阵就有利地 减少了解码过程中的解码时间和处理负荷。
另一个示例提供了一种对从网络上以多个编码块的形式收到的内容进 行解码的方法,其中原始内容被分成一些段。此方法包括将收到的与特定 段相关的所有的块读入存储器,然后并行地对这些读入的块进行解码。
这种方法的好处是大大节省了解码的时间并降低了处理负荷,因为为 了解码内容,只有来自单个段中的那些块才需要读入存储器。另一个好处 是它减少了解码过程中所需的处理器操作的次数,因此减少了解码时间和 处理器负荷两者。
再一个示例提供了一种对从网络上收到的内容进行解码的方法,收到 的内容包括多个经编码的块。这种方法涉及将每一个收到的编码块的一小
部分读入存储器,然后在将每个编码块的下一部分读入存储器之前,并行 地对读入的部分进行解码。
这样就通过预先载入所需的下一部分而有利地实现了高效率并且允许 需计算机的操作系统帮助准备解码过程。这縮短了解码过程中的延迟,从
而縮短了总的解码时间。
该些方法可利用包括计算机程序代码装置的计算机程序来实现,当所 述程序在计算机上运行时适合执行上述任何方法的所有步骤。该计算机程 序可在计算机可读介质上具体化。
本文描述的各方法可由存储介质上具备机器可读形式的软件或固件执 行。软件或固件能够适于在并行处理器或串行处理器上执行,使得本方法 的各步骤可以按任何合适的次序或同时开展。
这里承认软件能够是有价值的、可以单独交易的商品。它旨在包含运
行于或者控制"哑(dumb)"或者标准的硬件以实现期望的功能的软件。 它还旨在包含"描述"或者定义硬件配置的软件,例如HDL (硬件描述语 言)软件,用于设计硅芯片,或者用于配置通用可编程芯片以实现期望的 功能。
许多伴随特征将随着参考下面的详细描述并结合附图进行理解而得到 更好的认识。
附图简述
从结合附图的下列详细描述将更好地理解本描述,在附图中:
图l表示使用网络编码的内容分布系统中块的流动;
图2是文件被分为多个块的示意图3示出了第一编码优化示例的流程图4是示出了实现第一优化示例的示意图5示出了在服务器处编码过程的示例流程图6示出了保留稀疏性的编码过程的示例流程图7是两个节点的示意图8示出了另一编码优化示例的流程图9示出了示例查询表;
图IO示出了解码优先化示例的流程图;以及图11示出了另一个解码优化示例的流程图。相同的标号用于指示附图中相同的部分。
详细描述
下面结合附图提供的详细说明旨在作为本发明的例子的描述,但是并不旨在表示可以构造或者使用本例子的仅有的形式。该描述阐述本示例的 功能以及用于构造和操作本示例的步骤序列。然而,相同或等价的功能与序列可由不同的示例来完成。
在对等体辅助的内容分布系统中,为了减少节点在编码和编解码过程中所涉及的读/写操作的次数,可使用多个编码和解码处理的优化。这些优化降低了节点上的处理负荷,并且减少了编码或解码块所花的时间。
在第一编码优化示例中,文件被分成多个段,每个段包括多个块,如图2示意性地示出。图2示出了文件200被分成3个段201-203,每段包括5个块。这仅是为了举例,通常块的数量可能远大于段的数量(例如, 一个 段内有20-30个块,或者一个段为100-200兆字节而一个块为l-10兆字节)。 如图3和4所示,编码块由节点400产生为来自特定段的其保有的所有块 的线性组合。首先选择一个段(步骤301),编码新的块(步骤302),然 后应请求将新的编码块传递到另一节点(步骤303)。接着,选择另一个段 (步骤301),编码另一个新块(步骤302)并将其传递到另一节点(步骤 303),且这一过程继续。段选择操作(在步骤301中)可以根据已定义的 顺序(例如,A段,然后B段,再A段等)进行,也可以随机地或者按照 任何其它准则(例如在相邻段中选择最稀有的段)执行。在执行图3中编码和传送的操作的同时,节点也可从网络上其它节点接收(经编码的或未 经编码的)块(步骤401-403)。
根据己定义的顺序或使用随机选择选择要编码的段,加之块的数量远 远多于段的数量的事实,会导致网络中所有段都可用而没有特别稀有的段。 然而,为了进一步有助于避免稀有段问题,可以通过从文件的所有段中的
所有块进行线性组合来产生一些编码块。这种从所有段产生一块的情况是一个不频繁但周期性的事件(比如,在过程的每第100次迭代时产生)。这些编码块因而可用来替代文件中任何段一块。这可通过在选择下一块的指令序列中包含这样一条指令(在步骤304中)来实现,或者在随机段选 择步骤中对所有段的选择指定一个小的概率来实现。
通过使用这种编码优化技术,为了进行编码一个块, 一节点仅仅需要 把来自单段的所有块读入存储器,而不用读入其从整个文件接收到的所有 块。这样就大大节省了时间和处理能力,例如在一个段包括30个块而文件 却由3000个块组成的情况下。
尽管以上描述参考了其中描述了一个编码块是作为来自一特定段的在 节点处本地保存的所有块的线性组合而产生的图3和4,但是在另一示例中 编码块可通过来自一特定段内在节点处本地保存的两个或多个块的线性组 合而产生。用来形成编码块的块数可以是固定的或者是根据指定准则而变 化的,或者作为替代在另一个示例中,可以随机选择所选块的数量。
在第二编码优化示例中,保有整个文件的服务器产生各稀疏编码块。 稀疏块被定义为具有较少数量非零元素项的块。服务器所产生的编码块是 来自文件的i个随机块的线性组合,其中选择i个块的概率由p(i)给出,其 p(i)可以是1/i,指数分布或者两项式分布等。图5示出了在服务器处编码过 程的流程图。首先,选择i (步骤501),然后从文件的所有块中随机地选 取i个块(步骤502),并用于产生新的编码块(步骤503)。新的编码块 被发送到网络上的某个节点(步骤504),然后选择一个新的i值(步骤501) 并重复所述过程。使用这种分布方式,服务器偏向于选择少量的块来用于 编码新的编码块,但是服务器偶尔也将用较大量的块来编码一个块。这些 大i的新编码块,充当与上面参照第一示例描述的从所有段编码块相同的作 用,并且降低了与某个特定块有关的信息在网络中是稀有的机会。
在这样的示例中,网络中的节点可以不再重编码内容,从而保持网络 的稀疏性,但失去了网络编码的某些好处,或者也可使用一些规则对内容 进行重编码来确保块保持稀疏编码。参考图6和图7描述了可以保留稀疏 性的示例过程。图6示出了示例流程图600而图7示出了两个节点701和702的示意图,其中每个节点当前各自保有来自同一个原始文件(由6个块 组成)的多个编码块703 — 707, 708 — 711。原始块用字母A — F标记,编 码块703 — 711内的字母指示这些编码块是从哪些块产生的,例如块703是 原始块A和块B的线性组合。
节点首先选择一个目标级数i (步骤601),其中块的级数定义为从中 形成编码块的原始块的数量(例如块703的级数i = 2)。节点然后尝试选 择它当前保有的块的一个子集,使得新编码块将具有级数f,其中f《i (步骤602)。如果这条件不可能满足,节点选取一子集使得新编码块将具 有接近最高可能的级数(步骤603)。选择了块的子集(步骤602或603) 以后,节点从所选的子集编码一新块(步骤604)。然后重复上述步骤。较 佳地节点选择尽可能多的块形成子集部分,同时不超过目标级数。例如, 如果目标级数设定为2,节点1 701 (图7中)可选择3个块,即块703、 706和707,来形成子集。从这三个块产生的新编码块将具有级数2,因为 它是原始块A和块B的线性组合。然而,节点2 702不能选择块的一个子 集来满足目标阶级数2。作为替代,将必须选择一个带有级数3的子集(根 据步骤603);该子集包括两个块,即块708和711,每个块是原始块A、 B和C的一个线性集合。
在上面关于节点2 702的示例中,各自包括原始块A、 B和C的线性 组合的两个块被组合以形成A、 B和C的一个新线性组合。较佳地,组合 这两个块并将这些块发送给一个新节点,因为如果接收节点已经具有了其 中的一个块(如,块708),则该新块将提供此结点的新信息,而再次发送 相同的块对接收节点而言是没有用的。
在以上描述的示例中和已知系统中, 一旦新的编码块由一节点创建并 被发送到另一节点,就不再存储与那个新编码块有关的信息。然而,在第 三编码优化的示例中,已经由一节点产生的一些编码块被高速缓存并再次 使用。这是很有利的,因为减少了节点为了产生要发送到系统内另一节点 的编码块所必需之执行的读操作的次数。术语"高速缓存"是用来描述与 处理单元相关联的、其操作速度比节点的主存储器更快的高速存储缓冲器。 图8中的示例流程图描述了这个优化过程。 一个示例节点己接收到两个块A和B,初始读入这两个A块和B块(步骤801和802)并创建块A和B 的线性组合的新编码块AB (步骤803)。该新的编码块AB被发送到网络 中另一个节点(步骤804)并在此节点处高速缓存(步骤805)。当该节点 接着需要创建新的编码块发送到网络中另一节点时,这个节点在其高速缓 存中已有块AB,并可以决定是再次发送该块还是将它与一个或多个已经收 到的块进行组合。在这个示例中,节点读取块B (步骤806)并使用块B 和先前高速缓存的块AB创建新的编码块ABB (步骤807),然后将新的 编码块ABB发送到网络中的另一节点(步骤808)。如前述,节点可以在 高速缓存中保留块ABB (步骤809)或者也可不在高速缓存中存储有关该 块的信息。如果节点在高速缓存中存储了块ABB (如图8所示),则在随 后的步骤中节点可以使用高速缓存的块AB和ABB来创建新的编码块,而 不需要执行任何附加的的读操作。可在高速缓存中保有的编码块的数量受 高速缓存容量的限制,高速缓存容量比节点主存储器容量要小的多,其中 节点主存储器存储了关于所有接收到块的信息。
在上述编码步骤中和己知的方法中,与创建块的线性组合相关联的用 来形成新编码块的算术运算需要耗费大量的时间。然而,由于算术运算在 也被称为伽罗华域(典型地是216,但是潜在地可以小很多,例如256)有 限域内进行,因而第4编码优化的示例涉及预先计算所有可能的算术运算 结果,这将算术运算简化为单个查表操作。在一个非常简单的示例中,要 计算以下的运算
5X100
这也可用以下四个步骤计算 100+100=200 +100=300 +100=400 +100=500
或者如图9所示,也可以由一次査表操作来完成。
在另一个示例中,有限域(或伽罗华域)中两个数的乘法运算可以用三 个査表步骤来完成。可以使用如下的等价运算来实现乘法A=BC
log A =log B +log C
exp (log A) = exp (log B+ log C)
A =exp (log B +log C)
这个乘法然后可化简为下面两个表中的三步查表的操作(其中有限域216 仅作为示例)
logTable (对数表)=65536 (=216)个元素的向量,包含域中每个数 的对数值(从O到65536每一个数的对数)。
expTable (指数表)=131072 (=2X216)个元素的向量,包含有限 域内的每一个数加上下216个数值的指数(0到131072的每一个数 的指数)。 于是这个乘法运算可以如下执行 function Mult (B, C)
Temp=logTable[B]+logTable[C] return expTable[Temp] 以上描述涉及的编码优化可用来降低编码新数据块以供传输至网络中 其它节点所需的处理负荷和时间。上述优化的每一项可以独立于其他项使 用,也可以替换地组合使用两种或多种优化技术来进一步增进编码过程的 优化。
上述编码优化的一些或全部还可改进解码过程,例如, 一个稀疏编码 块(见上述第二示例)会比密集填充的编码块更容易解码,并且级数较小 的编码块会比级数较大的编码块更容易解码。此外,还可使用与所用的编 码优化正交地操作的解码优化,这也有助于减少解码过程中所要求的读/写 操作的次数。
存在有许多已知的解码技术,包括矩阵求逆和消息传递。这些技术可以应用于从每个收到编码块的系数向量所形成的矩阵(在此被称为系数矩
阵)。例如, 一个节点已经收到了与包含3个原始块的文件相关的3个编码块,则可随编码块接收以下的系数向量
第一个收到的系数向量[6,90,52]
第二个收到的系数向量[18,2,128]
第三个收到的系数向量[231,93,287]
这三个向量可以写成3X3的矩阵(系数矩阵) (6 90 52) (18 2 128) (231 93 287)
矩阵求逆可能很复杂,但是在所有情况下(只要矩阵是满秩的)求逆 是可能的。消息传递算法,又被称为置信传播算法及和-积算法能够简化矩 阵,但是由于渐进式迭代求解可能失败,所以并不总是可行。
在第一解码优化示例中,如图IO所示结合上述两种解码技术。首先,从节点所接收到的所有编码块中标识那些级数i较小的编码块,即那些来自原始文件的较少数目(i)的未编码块的线性组合产生的编码块(步骤1001)。然后,使用一种保留了矩阵稀疏特性的诸如消息传递的技术对这些被选中的块进行尽可能地解码(步骤1002)。尽可能地化简矩阵后,在部分或者整个矩阵上使用矩阵求逆来完成解码过程(步骤1003)。
一个解码过程的例子描述如下。设有下列矩阵
<formula>see original document page 15</formula>
其中矩阵中的各元素项是编码系数。第一步,标识第二行含有单个非零元
素,从矩阵的其它行消去此行得到如下矩阵
<formula>see original document page 15</formula>
此次化简产生了一个新的只含单个非零元素的行(即第一行)。从矩阵中 剩下的部分消去此行得到
<formula>see original document page 15</formula>目前矩阵的最下面部分不能进一步化简,因此执行矩阵求逆得到如下最终 的矩阵
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1在算法的每一步中都会有下面两个事件发生系数矩阵的化简,以及,编码内容的更新。结果,在算法结束时,原始信息已被恢复。
图10中的解码过程可以在节点已收到要求数量的块时开始,并且节点己停止进一步接收块。这样做可能是有利的,因为它允许矩阵的化简(在步骤1002中)在具有尽量多的信息基础上大规摸地进行。这使得矩阵求逆 过程(步骤1003)更简单。
作为替换,如图11的示例性流程图所示,解码过程在节点在继续接收 附加块的同时开始。当节点收到每一个新块后(步骤1101)时,它决定此 接收块(可能是编码块)能否用来解码其它块(步骤1102)。如果新收到 的块被确定不允许任何解码,节点将等待接收下一个块(步骤UOl)。但 如果新接收的块确实能够用来进一步解码,则开始解码(步骤1103)。当 解码阶段不能再进行下去时,则节点确定解码是否完成(步骤1104),如 果没有完成,节点等待下一个能够帮助解码的块的到来(步骤1101)。 一 旦所有块被解码,该过程停止(步骤1105)。解码过程(在步骤1103中) 可参照图IO使用上面描述的技术或任何其它合适的解码技术。与接收块并 行地解码是有益的,因为此时解码的代价(在时间上和处理负荷上)在时 间上被分散并且还因为解码开始地较早,其结束也应较早。
有许多算法可以用来确定接收到的块是否能用来解码其它块(步骤 1102)。在第一示例中,节点确定接收到的新块是否仅从原始文件中的单 个块(例如,块A)编码而得。如果是,则搜索系数矩阵以确定级数为2 的且其中两个块之一是块A的编码块,例如块A&B。根据接收的块A和 A&B,块B可以被确定。接下来,搜索系数矩阵以找出级数为2的两个编 码块且其中两个编码块之一是块B,并且还找出级数为3的编码块,且其 中三个块中的两个块是块A和B。这是一个迭代过程,该迭代过程在接收
到所有编码块时会导致最终解码过程的显著简化。另一示例中,节点可确 定新接收到的编码块是否定义了一个可用矩阵求逆来求解的子矩阵。例如, 如果新接收到的块的系数向量只在第1, 2, 3和10列有非零元素项,则可
只在系数矩阵中的第l, 2, 3和IO列搜索包含非零元素项的其它行。如果 能标识另外3个这样的行,则可对该子矩阵执行矩阵求逆以解码第1, 2, 3 和IO个原始块。
在第二解码优化示例中,多个块可以被读入存储器且被并行解码。例 如,原文件被划分为多个段(见上述第一编码优化示例),与一个段有关 的所有块可被载入存储器并在随后被并行解码。段可以被顺序选择,使得 解码过程将优先权给予来自较早段的块。这在数据涉及视频流时特别有利, 因为较早需要的段在较晚需要的段之前被解码。在原始文件没被划分为段 的系统中也可以应用这一并行解码技术。再次,所有接收到的块的子集被 读入存储器并被并行解码,而该子集可由在系数矩阵的特定列中有一个非 零值的所有块来定义,例如由块A和其它块线性组合而产生的所有块来定 义。通过以这种对整个解码过程划分,算术运算的次数可从0(112)降为 0(n*k),其中n为原始文件中块的数量,k是段/子集中块的数量。
在第三解码优化示例中,使用一个滑动窗口跨所有已接收的块用于解 码。这种优化提供了一种对磁盘和OS高速缓存高效的利用并允许操作系统 辅助准备以供解码。在这个示例中,每个编码块的一小部分或窗口 (例如, 10KB)被载入存储器并分配一块缓冲区用来解码每个块的相应部分。 一旦 块的相应部分被解码,该部分就可被写入磁盘。因为这些编码块相继的各 部分被顺序处理,操作系统就可以与前一个块的解码并行地预先加载每个 块的下一部分数据,因此使得解码每部分间的延迟最小化。
上面的描述涉及的解码优化可以用来降低对从网络中其它节点接收的 数据块进行解码所需的处理负荷和时间。每一个上述优化可独立于其它的 优化实现,或者也可以组合使用两种或多种优化技术而进一步增进对编码 过程的优化。解码优化可以附加先前描述的任何编码优化技术一并实现, 也可与编码优化技术分开实现。
上面的描述涉及文件分布系统。上述的这些优化技术也可以应用于文
件共享应用。
本领域的技术人员将认识到用于存储程序指令的存储设备可分布在网络 上。例如,远程计算机可存储描述为软件的该过程的示例。本地或终端计算机 可访问远程计算机并下载该软件的一部分或全部以运行该程序。可替换地,本 地计算机可按需下载软件的片断,或者可以在本地终端上执行一些软件指令而 在远程计算机(或计算机网络)上执行一些软件指令。本领域的技术人员将认 识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或部分可由 专用电路如DSP、可编程逻辑阵列等来执行。
如对于本领域的技术人员而言,显然此处给出的任何范围或者设备值可以 被扩展或者改变而不失去所寻求的效果。
文本中描述的各方法步骤可以在需要时按任何合适的次序或同时执行。
可以理解,上面对于较佳实施例的描述仅仅是作为例子给出的,而本领域 的技术人员可以做出多种改变。
权利要求
1.一种对经网络分布的内容进行编码的方法,所述内容被分成多个段且每个段包括多个数据块,所述方法包括从所述多个段中选择一个段;从块存储中选择所选段的至少两个块;以及从所选的至少两个块的线性组合创建新的编码块。
2. 如权利要求1所述的方法,其特征在于,选择一个段包括选择全部的 所述多个段的不频繁但周期性的步骤。
3. 如权利要求1或2所述的方法,其特征在于,选择一个段包括 随机地从所述多个段中选择一个段。
4. 如权利要求1或2所述的方法,其特征在于,选择一个段包括-根据指定顺序从所述多个段中选择一个段。
5. 如前述权利要求中任一项所述的方法,其特征在于,选择至少两个块 包括从块存储中选择所选段的全部可用的块。
6. 如权利要求1所述的方法,其特征在于,每个段包括多个未编码块;以及其中选择至少两个块包括从所编码块的存储中选择所选段的至少两个编 码块;以及其中创建新的编码块包括从所选的至少两个编码块的线性组合创建新的 编码块。
7. 如权利要求6所述的方法,其特征在于,选择至少两个编码块包括 为新的编码块选择目标级数,其中编码块的级数是从中创建所述编码块的未编码块的数量;尝试从所述编码块的存储中选择所选段的至少两个编码块以创建具有级 数不超过所述目标级数的新编码块,如果所述尝试失败,将所述目标级数递增l并重复所述尝试步骤;以及 如果所述尝试成功,从所述编码块的存储中选择所选段的至少两个编码块 以创建所述具有级数不超过所述目标级数的所述新的编码块。
8. 如前述权利要求中任一项所述的方法,其特征在于,还包括 存储所述新的编码块。
9. 如前述权利要求中任一项所述的方法,其特征在于,新编码块的创建 使用预先计算的查找表。
10. —种包括计算机程序代码装置的计算机程序,当所述程序在计算机上 运行时适于执行前述权利要求中任何一项的所有步骤。
11. 一种对经网络分布的内容进行编码的方法,所述内容被分成多个数据 的未经编码的数据块,所述方法包括为新的编码块选择目标级数,其中编码块的级数是从中创建所述编码块的 未编码块的数量。尝试从编码块的存储中选择多个编码块以创建具有级数不超过所述目标 级数的新的编码块,如果所述尝试失败,将所述目标级数递增l并重复所述尝试步骤;以及 如果所述尝试成功,从所选的多个编码块的线性组合创建所述新的编码块。
12. 如权利要求11所述的方法,其特征在于,所选的多个编码块包括可 从中创建具有级数不超过目标级数的新编码块的编码块最大数。
13. 如权利要求11或12所述的方法,其特征在于,还包括 存储所述新的编码块。
14. 如权利要求11-13中任一项所述的方法,其特征在于,新编码块的创 建使用预先计算的查找表。
15. —种包括计算机程序代码装置的计算机程序,当所述程序在计算机上 运行时适于执行权利要求11-14中任何一项的所有步骤。
16. —种对经网络分布的内容进行编码的方法,所述内容被分成多个数据块,所述方法包括从所述网络上的块存储中选择多个块; 从所选块的线性组合创建新的编码块;以及 存储所述新的编码块。
17. 如权利要求16所述的方法,其特征在于,所述新编码块被存储在高速缓存中。
18. 如权利要求16或17所述的方法,其特征在于,所述存储包括在一个预定时段内存储所述新的编码块。
19. 如权利要求16-18中任一项所述的方法,其特征在于,所述块存储包 括位于一节点的主存储器中的第一部分和位于所述节点的高速缓存中的第二 部分。
20. 如权利要求16-18中任一项所述的方法,其特征在于,新编码块的创 建使用预先计算的查找表。
全文摘要
本发明提供了对经网络分布的内容进行编码的方法和对已经网络分布的编码内容进行解码的方法。第一示例中,内容被分成多个段且每段包括了多个数据块,此方法包括从这多个段中选择一个段并从块存储中选择所选段的至少两个块。从所选块的线性组合创建新的编码块。
文档编号H04N7/24GK101346996SQ200680048995
公开日2009年1月14日 申请日期2006年12月4日 优先权日2005年12月22日
发明者C·康特西迪斯, J·米勒, M·科斯塔, P·R·罗德里格斯, S·瑞森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1