具体实施方式
I.用于提供数字编码的演播的本发明的一般应用
上面概括描述的本发明可以按照各式各样的数据服务应用使用。为了提供这一应用的示例性实例,首先参见图1,其中根据本技术中的当前知识示出用于在诸如环球网等无连接环境中的网络上提供多媒体演播的系统。图1的示例性演播由包含文本页102、视频页104、图形页106、音频页108及数据页110的离散部分构成。应指出,所示的多媒体演播只是示例性的,并且演播可由任何数量的各种页构成及这些页不必存储在服务器自身中。应进一步指出,给定的演播的页可以是也可以不是想要按预定的演播次序提供的。
按照本技术,如图1中所示,接收机100(接收机A、接收机B等)发出的对演播的各种页的请求将被排队在请求队列112中并由请求处理器按收到它们的次序串行地处理。当处理器响应一个给定的请求,例如请求RN时,后面的请求(RN+1、RN+2等)在队列中仍未受到服务。从而当一次一页地将相对地长的视频页104供给许多较早的请求者时,可以强迫请求演播的相对地短的文本页102的接收机去等待。
现在参见图2,其中示出按照本发明提供图1中的示例性多媒体演播的系统。如图2中所示,系统存储器中包含构成演播的按照本发明称作“段”的离散页。系统存储器还包含与演播的各离散段对应的接收组202-210。各接收组包含在预定的请求窗口中已请求相关的段的接收机的表。例如,演播的视频段104的接收组204包括接收机A与接收机B。接收组及与它们关联的段指定可以以表的形式存储在系统存储器中。从而在收到对段的请求时,系统处理器214通过将请求者分配给适当的接收组而立即处理它们。
图3的流程图中示出了诸如图2的示例性系统等系统中可以用来实现本发明的过程的实例。如图3中所示,当系统在300接收对数字编码的演播的一个段的请求时,系统在302判定是否存在指定接收所请求的段的接收组。如果不存在这样的组,便在309建立该段的接收组并在306开始向下计数请求窗口。随后,在308将该段的请求者分配给接收组。此后,系统在310继续监视请求窗口是否关闭,即从建立该接收组起是否已用完了等于请求窗口的预定持续时间的时间量。如果在关闭请求窗口之前接收到该段的又一请求,在308将请求者分配给该接收组。一旦关闭了请求窗口,便在314用多信道广播将段提供给分配给该接收组的全体请求者。然后在316从系统存储器中删除该接收组。在系统收到对该数字编码的演播的段的其它请求时,可以重新调用这一过程。
本领域中的普通技术人员将会理解,用于数字编码的演播的各种段的请求窗口对演播的各段可以是不同的。例如,鉴于对该段的相对需求量、分配该段所需的系统资源以及在接收该段时系统用户能容忍的延时量,可将演播的特定段的请求窗口进行选择以优化系统性能的。例如,再参见图2的系统存储器中所示的演播,可以发现提供这一演播的服务器每秒钟接收20个对文本段的请求,但每分钟只有10个对视频段的请求。从而,为文本段采用一秒的请求窗口并为视频段采用10秒的请求窗口可能是有利的。本领域中的普通技术人员还会理解,可以开发与实现过程来动态地重新定义用于数字编码的演播的各种段的请求窗口,以响应可变的系统负荷来优化系统性能。
从而概括地说本发明可以实施在提供数字编码的演播的系统中,该系统将数字编码的演播的预定义的段的各请求者分配给指定接收该段的接收组,并且在结束了自建立接收组时开始的请求窗口时段之后,该系统多信道广播该段给接收组的成员。本发明可应用于在无连接环境中供应数字编码的演播给多台接收机的任何系统中。这些系统中可包含数据库系统、多媒体服务器及视频点播系统。下面公开的是应与系统关联的接收者的要求提供电视与其它线性演播的包含优化本发明的附加新颖特征的本发明的实现的实例。
II提供线性演播特别是提供视频点播的本发明的一般实现
可以优化上面公开的发明来提供线性演播,特别是提供视频点播。概括地说,这些实现通过作为相等持续时间的预定义的段的序列提供线性演播而应用上面公开的方法。例如,可将两小时的电影作为由240个连续的30秒段而进行提供。这些实现还对演播的所有段采用统一的请求窗口。这一请求窗口等于演播的预定义的段持续时间。返回到上面开始的实例,具有30秒的段的电影的请求窗口为30秒。这些实现还包括通过无连接环境将各段多信道广播给各接收组的接收机,及自动地增量接收组的段指定,从而自动将演播的连续的段顺序地提供给接收组。
从而,按照本发明,在收到对电影的请求时,系统将请求者分配给一个接收组来接收所请求的电影的第一段,在经过了不长于请求窗口的持续时间的延时之后,向请求者提供第一段的数据。随后,自动地重新指定该请求者的接收组以提供电影的下一连续段。从而,从头到尾将整部电影提供给请求者。实现本发明的这一实施例的数据服务系统最好有足够的处理与吞吐能力,在等于演播的预定义的请求窗口的时段内多信道广播演播的每一段的数据。返回到上面开始的实例,这一系统将有能力在各个30秒请求窗口的行程中多信道广播电影的240段的各段。这样,在30秒开始时便能有效地接收到演播。
图4a与4b中示出可将诸如电视等线性演播的第一与接连的段提供给接收组的方式。图4a与4b各示出对应于线性演播的一条总的演播时间线400及对应于在相继的第一与第二时间X与X+L上的各演播时间线的不同的段402的若干接收组。在这些图中,L等于演播的请求窗口持续时间。再者,演播的各段402具有相等的预定的持续时间L。从而,例如,如果所示的演播为一部电影,各段及其相关的请求窗口可预定为30秒钟长。
沿图4a的时间线示出了对应于演播的三个不同段的三个接收组404、406、408。各接收组包括一台或多台与系统关联的接收机410。可以推想各接收组的成员在同一请求窗口内请求演播。再次假定将电影分成各具有30秒请求窗口的30秒的段,每三十秒将形成指定接收第一段的一个新组;并且在一个特定的30秒请求窗口中请求演播的每一个请求者将成为同一组的部分。从而,例如,从图4a的时间线能够推想最左侧的接收组404的4个成员在同一请求窗口中请求该演播。
图4b的时间线示出经过了在等于请求窗口的时段L之后同一个接收组与它们的对应段指定。继续上面开始的实例,图4b的时间线示出从图4a的时间线上所示的时刻开始经过30秒的间隔之后接收组及它们的相关段指定。可以看出现在指定各接收组接收相对于图4a的时间线上其指定的段的下一个相继的段。这最好由系统自动完成,如下面详细讨论的。此外,在图4b中还可看到构成指定接收第一段的接收组的一台新接收机。可以推想该接收机在紧接在图4a的最左接收组404的请求窗口后面的窗口中请求演播。
可以理解接收组的成员数目只受实现这一分组方法的系统的连接潜力的限制。可以考虑请求者的预期数目、提供的演播的数目与性质及系统吞吐能力来选择预定的段长度与请求窗口长度以求最好地适合系统需求。可以进一步理解以这一方式提供的演播不一定必须整部事先录制的,而可以是正在创造的产品,诸如“现场”视频或音频演播。
III用于提供视频点播的本发明的较佳实现
虽然节II中描述的方法通常应用在供应线性演播的数据服务系统中,可以加入附加的新颖特征来提供为视频点播应用优化的较佳实施例。例如,可向系统提供允许用户暂停视频演播的传输、或从正在接收的段向前或向后移动到不同的段的能力。再者,为了优化系统性能,可向系统提供动态地重新配置加在系统的各种高速缓冲存储处理器上的负荷的能力。也可采用新颖的“一切均不共享,一切均高速缓冲存储”(share nothing,cache everything)(SNCE)方法来控制系统内数据对象的读取与更新。
A.为提供视频点播优化的实施本发明的系统的基本配置
图5中示出了为视频点播优化的实施本发明的系统的第一实例。这一系统通常包括用于生成与管理视频演播数据的后端部分500及用于分配视频演播数据给接收机的前端部分502。后端部分500可包含存储在诸如磁带、硬盘、易失与/或非易失性半导体存储器以及激光盘等各种存储装置504上的视频演播的贮藏库503。存储装置是由一个或多个视频贮藏库服务器506访问的。这一个或多个视频贮藏库服务器506与诸如异步传输模式(ATM)交换网络等后端交换网络508接口。后端交换网络508为各耦合在其上的所有处理器提供无连接的环境并方便多信道广播。后端交换网络508还与起到供给演播数据给前端的后端贮藏库作用的多个高速缓冲存储处理器接口。指定一个高速缓冲存储处理器作为目录处理器512,它主要执行全系统控制与数据管理功能。
图5中所示的示例性系统的前端部分502包括多个数据输出处理器514,它们与后端交换网络508及前端交换网络516接口。前端交换网络在数据输出器514与接收机518之间提供一个无连接多信道广播环境。指定各接收机与前端的一个特定的数据输出器通信。接收机可采用许多形式。但其特征在于内部处理器、存储器及解码数据输出器提供的数据以产生视频显示的能力。从而接收机可包括个人计算机或专用的接收与解码单元(有时总称为“顶置盒”)。
图6中示出实施本发明的视频点播系统的另一实例。这一实施例类似于图5的。然而,在这一实施例中前端的一部分是由前端本地管理器520在本地管理的,管理器620承担诸如确定从本地接收机到本地数据输出器的路由选择请求及平衡本地数据输出器之间的传输负荷等管理功能。
图6的实施例还包括后端中的一个附加处理器,指定它作为“热备用”处理器622,这是本领域中众所周知的功能。热备用处理器可为目录处理器、一个或多个视频贮藏库服务器或一个或多个高速缓冲存储处理器提供后备,如为本系统需要所专门配备的。
在诸如图5与图6中示例的系统中,在从高速缓冲存储处理器到数据输出器或从数据输出器到接收机的传输时,表示一段视频所需的大量数据可以导致最好将各段作为若干独立的部分提供。从而,继续上面在节II中开始的实例,假定电影演播的各个30秒的段将作为各具有3秒持续时间的10个独立部分从高速缓冲存储处理器提供给数据输出器或从数据输出器提供给接收机。选择3秒部分持续时间来减少与系统关联的接收机中所需的缓冲存储器的量,如下面进一步详细讨论的。
为了减少便于数据部分从高速缓冲存储处理器到数据输出器及从数据输出器到接收机的传输所必需的控制处理量,最好以“推动”模式(push-mode)从高速缓冲存储处理器及数据输出器提供数据。在推动模式中,单一的动作起动进行中的数据输出过程并且输出过程一直继续到有意识地被终止。采用推动模式输出能减少系统部件之间必要的交互作用。例如,在这一系统中,数据输出器只需通知高速缓冲存储处理器它希望读该段便能请求从高速缓冲存储处理器传输一个演播段。此后,高速缓冲存储处理器便以3秒的部分推动段数据到数据输出器,直到提供了所有段数据或者数据输出器有意地终止数据供应为止。类似地,接收机只须对数据输出器发出演播的请求,便能从数据输出器接收整个演播。数据输出器随后将从高速缓冲存储处理器接收的段数据部分推到接收机,直到演播结束或接收机有意地终止或改变数据传输为止。在按照图5与6中所示的示例性系统的系统部件与功能的其余讨论中,假定所有高速缓冲存储处理器与数据输出器都是以推动模式操作。
通过将各种控制与处理功能特定地分配给各种系统部件,便可达到图5与6中所示的最佳的系统操作。图7以普通形式示出图5与6的示例性系统的若干主要部件及分配给这些部件中各个的控制与处理功能。如图7中所涉及的,为了授权与跟踪使用系统的接收机的目的,目录处理器512与系统管理单个接收机518的登录。目录处理器512还监视数据输出器所报告的接收组成员。此外,目录处理器512维护系统中其它实体可利用的数据对象的清单,并管理SNCE与高速缓冲存储处理器分配。
如图7中进一步所示,与目录处理器512及高速缓冲存储处理器510通信的视频贮藏库服务器506负责访问存储在系统存储装置504上的演播及提供视频数据给高速缓冲存储处理器510。高速缓冲存储处理器510可与视频贮藏库服务器506、目录处理器512及数据输出器514通信。高速缓冲存储处理器510负责从视频贮藏库服务器506取得视频数据并响应数据输出器的请求将段提供给数据输出器514。可通过多信道广播同时将一个段提供给一个以上数据输出器。高速缓冲存储处理器510进一步负责管理将要存储在高速缓冲存储器中的给定演播的量。
图7中所示的数据输出器514负责管理接收组,其中包括建立组、增加或删除成员、改变组成员的状态及改变组的段指定。数据输出器所管理的接收组包含通过该特定数据输出器与系统交互作用的接收机。数据输出器514还负责向高速缓冲存储处理器510请求演播的段及传输段数据给接收机518。通过多信道广播可将数据同时传输给一台以上接收机。
下面相对于其余的图讨论可以实现在诸如图5与6中所示的系统部件上的提供视频点播系统的上下文关系中的图7中所示的功能的各种过程。然后讨论配置成为预定数目的接收机提供视频点播的示例性系统的部件与性能规范。
B.数据输出器的操作
按照本发明的较佳实施例,数据输出器负责向接收组成员自动提供演播的连续的段及管理接收组成员。图8a中示出数据输出器可向接收组提供演播的连续的段的方式。图8b中示出数据输出器如何管理新接收组的建立及分配接收机到接收组的实例。在图8a与8b的讨论中,为了示例目的假定从接收机收到的请求为收视完整的视频演播的请求,及这些请求是作为收视从第一段开始的演播的请求对待的。然而,显而易见,所示的过程可用来建立任何新接收组或增加成员到任何存在的接收组,而和与该组关联的段无关。从而所示的过程也可用来处理从它暂停的段开始恢复演播的请求,或者从指定的段开始重新启动演播的请求。相对于图9-12更详细地讨论这两种选择。
如图8a中所示,过程在800开始,从数据输出器向高速缓冲存储处理器请求读取其接收组的指定段。这些段可以通过参照该数据输出器所维护与存储的接收组表确定。响应数据输出器的请求,随后以3秒钟的部分从高速缓冲存储处理器将段数据推动,并在802被数据输出器接收。当在804判定高速缓冲存储处理器已完成供给演播的全部段的所有部分时,数据输出器便在806增量接收组表中各组的段指定,并在808去掉任何组成员的“盲”(blind)状态。盲状态防止组成员接收来自数据输出器的段数据。盲状态的目的将相对于图8b说明。在增量了段指定并去掉盲状态之后,数据输出器在800再次请求从高速缓冲存储处理器读取其接收组的所有指定的段。
数据输出器中按照图8a的过程的组成员资格管理的实例示出在图8b中。当数据输出器在810收到来自接收机的提供从段N,例如演播的第一段,开始的演播的请求时,数据输出器便在812判定该段的段数据当前是否正在由高速缓冲存储处理器提供。如果高速缓冲存储处理器当前正在提供数据,数据输出器将采取行动将请求者作为盲接收机加在指定接收段N-1的组上,从而一旦高速缓冲存储处理器完成了提供数据,该请求者的组指定将增量到N且该请求者将失去其盲状态。相应地,数据输出器在814判定是否存在对于段N-1的接收组。如果不存在这样的组,在816从目录处理器请求段N-1在高速缓冲存储器中的位置,并在818建立指定接收段N-1的组。当请求者请求演播的第一段时,该组将指定为收视假想的段0,假定该段存在于与段1相同的高速缓冲存储器区中。一旦判定存在着段N-1的接收组,在820将接收机分配给该组,在822通知目录处理器接收机的分配,并且数据输出器824监视进一步的请求。
另外,如果在812判定高速缓冲存储处理器当前不在提供该段的段数据,数据输出器将采取行动简单地将接收机分配给指定接收所请求的段的组,因为当高速缓冲存储处理器开始再一次提供段数据时,组指定将已经增量并且接收机将接收适当的段数据。从而,数据输出器在826判定是否已有段N的接收组。如果不存在这一组,在828从目录处理器请求段N在高速缓冲存储处理器中的位置并在830建立指定收视段N的组。一旦判定存在着段N的接收组,便在832将接收机分配给该组。在822通知目录处理器接收机的分配,并且数据输出器在824监视其它请求。
通过其接收组成员的控制,数据输出器也可提供基本的“停止”、“暂停”、“前进”与“倒退”功能。可以推想,数据输出器可通过从其接收组中去掉该接收机而停止传输演播给给定的接收机。图9示出在向接收机传输数据中提供暂停的过程的实例。当在段N期间数据输出器在900接收到暂停命令时,便在902通知目录处理器。然后从其接收组中去掉发出暂停命令的接收机。这可以通过更新接收组表将接收机从接收组记录中去掉来完成。在从接收组中被去掉时,接收机将不再接收进一步的数据多信道广播。随后,当在906接收到恢复命令时,便在908将接收机加在将在接下来接收整个段N的接收组上。将接收机分配给适当的接收组是以上面按照图8b描述的方式控制的。具体地,数据输出器在812判定高速缓冲存储处理器当前是否正在提供数据。如果当前正在提供数据,便在832将接收机作为盲接收机分配给当前正在接收段N-1的接收组。如果当前不在提供数据,便在820将接收机分配给指定接收段N的接收组。返回到图9,在放入组中时,在910通知目录处理器接收机的新组及段指定。
结合图10a-10d中描绘的时间段1000示出这一过程对接收组成员的影响。图10a的时间线示出三个接收组1010、1020、1030。图10b的时间线示出处理过来自最右边的接收组1030的单个成员的暂停命令之后的相同的组。该接收机不再是接收其前面指定的段N的接收组的成员,因此并不接收段N的段数据。在示出的实例中,应指出的是发布暂停命令的接收机在发布命令以前是其组中的唯一成员,并且因此在处理该命令时实际上消除了该组。图10c示出如果在将组的段指定已经增量了一次之后但在高速缓冲存储处理器再次开始提供段数据之前,处理恢复命令时的组成员的情况。在这一实例中,将简单地将接收机分配给指定接收在收到暂停命令期间的段的接收组1050。图10d示出如果在已经将组的段指定增量一次之后并且在高速缓冲存储处理器已再次开始提供数据之后,处理恢复命令时的组成员情况。在这一实例中,该接收机作为盲接收机1060分配给指定接收紧接在收到该暂停命令的段之前的段N-1的接收组1020。如前面在图8a中所示,当下一次增量段指定时,将去掉接收机的盲状态,而该接收机将与其组中的其余接收机一起接收段N的数据。
目录处理器可类似地提供“变段”功能给接收机,可用它来近似“前进”或“倒退”功能。图11示出用于改变接收机的段指定的过程的实例。当数据输出器在1100从接收机接收变段命令并在1110接收新段N的指定时,便在1120将发布该命令的接收机从其接收组移至接收整个段N的适当接收组。移动是以相对于图8b讨论的方式处理的。具体地,数据输出器在812判定高速缓冲存储处理器当前是否正在提供数据。如果当前正在提供数据,便在820将接收机作为盲接收机分配给当前正在接收段N-1的接收组。如果当前不正在提供数据,则在832将接收机分配给指定接收段N的接收组。将其放在组中时,在1130通知目录处理器接收机的新组与段指定。
结合图12a-12c的时间段1200示出了发布各种变段命令导致的接收组成员的影响。图12a的时间线示出三个接收组1210、1220、1230。图12b的时间线示出为对于图12a的三组的三个成员已经处理过变段命令之后的相同的组,其中各变段命令是在已经将组的段指定增量一次之后但在高速缓冲存储处理器开始再次提供段数据之前处理的。在这一实例中,将接收机简单地分配给指定接收它们分别指定的段的接收组。具体地,将已请求向前移动一段的最右边的组的唯一成员1240分配给指定接收下一接连的段的新接收组1250。应指出这一接收机为其前一接收组1230的唯一成员,从而它发布变段命令实际上导致消除其前一组。类似地,图12a最中央的组1220的接收机1260与1270分别请求向后移动两段与一段,这便导致将接收机1260加到图12a的最左边的组1210中、建立一个新接收组1280及实际上消除接收机的前一接收组1220。
反之,图12c示出如果在已将组的段指定增量一次之后且在高速缓冲存储处理器已开始再次提供段数据之后处理变段命令时的组成员的情况。在这一实例中,将接收机作为盲接收机分配给指定接收紧接在它们各自指定的段前面的段的接收组。具体地,将请求向前移动一段的最右边的组1230的唯一成员1240从其组1230中去掉;然后作为盲接收机再分配到该组。类似地,图12a的最中央的组1220的接收机1260与1270已分别请求向后移动两段与一段,这导致在第一段上建立一个新组1290,并将接收机1260作为盲接收机加在其中,并将另一接收机1270作为盲接收机加入图12a的最左边的组1210中。当再一次增量段指定时,将去掉各接收机的盲状态,并且各接收机将与其组中的其余接收机一起开始接收段数据。
可以根据系统性能规范改变数据输出器将段数据提供给接收组的接收机的特定方式。上面已提出希望以推动模式提供数据给接收机。图13与14中分别示出为视频点播应用优化的特殊数据输出器设计及相关的操作方法。图13示出最好在实施本发明的系统的数据输出器中采用的基本内部配置。这一配置中,数据输出器1300包括可以交替地耦合到数据输出器的输入端1330与输出端1340上的第一与第二缓冲器1310与1320。将缓冲器大小选择得足以接收预定持续时间的段部分,该段部分是受接收机的缓冲器容量支配的。例如,如果接收机缓冲器能可靠地保持三秒的数据,则可将从数据输出器到接收机的传递部分的大小选择为三秒钟。
如图14中所示,数据输出器的操作包括在1400在第一缓冲器中接收一个演播段的一部分,同时从第二缓冲器提供一个演播段的一部分,然后在1410耦合第一缓冲器到输出端及第二缓冲器到输入端。随后在1420,在第二缓冲器中接收一个演播段的一部分同时从第一缓冲器提供一个演播段的一部分。然后在1430将第一缓冲器耦合到输入端上同时将第二缓冲器耦合到输出端上,而重新开始这一进程。
这一方法及推进它的缓冲器配置是较佳的,因为明显地使数据输出器所需的存储空间量减少了。例如,如果将演播分成30秒的段并将各段以3秒的部分提供,数据输出器只须在任一时刻保持6秒的数据,便能为提供连续的演播提供足够的数据给接收机。
C.高速缓冲存储处理器的操作
如上所述,数据输出器通过从包含演播段的高速缓冲存储处理器请求演播段数据而接收演播段数据。这要求高速缓冲存储处理器包含适当的所请求的段数据并且高速缓冲存储处理器具有将该段提供给数据输出器的可靠方法。下面相对于图15a-15i讨论满足这些要求的方法。
图15a示出在高速缓冲存储处理器中用于将演播的段提供给请求这些段的数据输出器的过程流程的实例。概括地说,该进程包括提供该演播的各请求的段的部分,使得在时间L内已经提供了每一个所请求的段的每一部分,其中L为预定义的段持续时间与请求窗口的持续时间。这样,从上面采用的实例继续,如果演播为分成240个30秒的段的两小时电影,且要将各段分成10个3秒的部分,则提供每一段的第一部分、提供每一段的第二部分等等,直到提供了每一段的每一部分为止。
具体参见图15a,高速缓冲存储处理器通过在1500起动定义一个时间段的请求向下计数来开始这一进程,该时间段是在开始其下一个数据传输时段之前必须经过的时间。然后高速缓冲存储处理器在1510连续地交替检验请求窗口是否已关闭,意味着已过了向下计数的时段,并在1520检验是否已从数据输出器接收到任何段请求。当在关闭请求窗口之前接收到来自数据输出器的请求时,该请求便在1530进入高速缓冲存储处理器的供应队列。供应队列可以是将保持在高速缓冲存储器中的各段与请求该段的各数据处理器互相关联的表。
当判定请求窗口已经关闭时,高速缓冲存储处理器在1540设置两个计数器M与N,其中M表示要提供的当前部分而N表示要提供的当前段。然后高速缓冲存储处理器1550提供演播的第N段的第M部分。这一部分是作为寻址到各请求的数据处理器及标识演播段与部分的数据包提供的。从而在推到数据输出器时,将识别该数据包。推出这一包之后,高速缓冲存储处理器1560增量N,并在1550再次提供第M部分。当在1570判定已到达保持在高速缓冲存储处理器存储器中的段的最大NMAX时,在1580增量M,并在1550再一次提供各段的第M部分。在1590判定已提供了各段的第MMAX部分之后,高速缓冲存储处理器在1500起动新的向下计数并返回到处理数据输出器请求,直到向下计数再一次结束。
如相对于图15a所蕴含的,高速缓冲存储处理器只包含有限数目的演播段。图15b示出在高速缓冲存储处理器中用于管理在任何时刻存储在处理器中的段的数目的过程的实例。一般地说,这一进程包含实现用于只存储满足现有的接收组所需要的段数据的“轮转”存储器方案,并在继续满足新组的请求时扩充轮转。
具体参见图15b,当高速缓冲存储处理器在1501接收来自目录处理器的存储演播的请求时,高速缓冲存储处理器便在1502在其存储器中分配一个区用于存储该演播并通知目录处理器区名与大小。随后高速缓冲存储处理器在1503复制演播的该三个单位,在第一单位后面设置“低水位标志”(low water mark)并在第二单位后面设置“高水位标志”(high water mark)。从下面的讨论中,低与高水位标志的目的将是显而易见的。为了便于例示,特别是按照图15c-15i,假定复制到高速缓冲存储处理器中的演播“单位”等于各有三分钟持续时间的单位。这一教导将使本领域中的普通技术人员能采用不等的单位实现其它类似方法。
返回到图15b,一旦设置了低与高水位标志,便按照图15a的方法在1504提供段数据。这可以包含接收与处理其它数据输出器对其它演播段的请求。在将所有段数据提供给供应队列中的每一个请求者之后,高速缓冲存储处理器在1505判定任何这些请求是否是对落在高水位标志以上的段的。如果没有,高速缓冲存储处理器便在1504再次提供段数据,如图15a中所示。从而一个或多个数据输出器可在接连的请求窗口期间通过作出对接连的段的接连的请求而沿段数据的轮转前进。图15c中提供这一方案的示例,其中一个数据输出器1533已沿轮转1531前进以便从第二单位(该演播的3-6分钟)内接收数据,同时另一个稍晚请求数据的输出器1532已沿轮转前进以便从第一单位(演播的0-3分钟)内接收数据。能从图15c推想出所示的两个数据输出器沿轮转相距大约两分钟。
返回到图15b,如果任何数据输出器请求了高水位标志以上的数据,高速缓冲存储处理器便在1511判定是否任何数据输出器请求了低水位标志以下的数据。如果没有数据输出器请求低水位标志以下的数据,便在1512用在高水位标志以上的轮转单位后面来到的该演播的下一单位取代低水位标志以下的轮转单位中的数据。然后在1513将低与高水位标志向前移一个单位。图15d与15e中示出这些步骤。参见图15d,可以看到领先的数据输出器1533刚越过图15c的高水位标志1534,同时后面的数据输出器1532已超过图15c的低水位标志1535。结果可以覆盖包含演播的0-3分钟的轮转单位来包含该演播的9-12分钟。然后将高与低水位标志前移一个单位。参见图15e,可以看到在通过了另一单位之后,将重复类似的复制与标志前移。因此,这两个数据输出器将继续环绕长度为三个单位的轮转进行,它是在每次前移高水位标志时用高水位标志以上的一个新的段数据单位周期性更新的。
回到图15b,也可以是这样的情况,当一个数据输出器通过了高水位标志时,另一个尚未到达低水位标志。这种情况示出在图15f-15g中。在图15g中可看到领先的数据输出器1541已到达图15f的高水位标志1544,但后面的数据输出器1543尚未碰上图15f的低水位标志1545。结果,如图15b中所示,高速缓冲存储处理器将在1514扩充分配给轮转的存储区,通知目录处理器这一扩充并在1515将演播的下一单位复制到扩充区中。然后在1516将高水平标志上移一个单位,但不移动低水位标志。参见图15g,可以看到当领先的数据输出器1541已到达图15f的高水位标志时,扩充轮转以包含该演播的另外9-12分钟并将高水平标志1544的位置前进一个单位。
再回到图15b,一旦前进了高水位标志,高速缓冲存储处理器返回到1504提供段数据,如图15a中所示。随后,如图15b中所示,高速缓冲存储处理器可以在1505判定领先数据输出器已越过了新的高水位标志,而进一步在1511判定后面的数据输出器已通过低水位标志。结果在1512将一个新单位写在轮转的老数据上而在1513前进低与高水位标志。作为这种判定的结果的低与高水位标志的前进示出在图15g与15h之间的变化中。如图15i中所示,这些数据输出器此后将继续环绕长度为4个单位的轮转前进,它是周期性地更新以在高水位标志1544以上包含一个新的段数据单位。可以理解在适当的环境中轮转会交替地继续扩大直到包含整个演播为止。
D.目录处理器的操作
如上所述,在处理请求新的演播、暂停命令、恢复命令或变段命令时,数据输出器通知目录处理器接收机的组成员。高速缓冲存储处理器也通知目录处理器分配给演播数据的各存储区的区名与地址,及这些区的每一次扩充。相应地,目录处理器包含足够的数据来管理高速缓冲存储处理器的分配。图16中提供用于管理高速缓冲存储处理器分配的目录处理器中的过程流程的实例。
更具体地,如图16中所示,当目录处理器在1600收到来自数据输出器的对演播的一个段的高速缓冲存储处理器地址的请求时,目录处理器首先在1610判定在高速缓冲存储处理器中是否可以得到该段。这可以通过参考目录处理器所维护的高速缓冲存储处理器分配表来确定。如果在1610判定当前不能从高速缓冲存储处理器得到该段,或者如果在1620判定将该数据输出器与包含所请求的段的处理器相关会导致该高速缓冲存储处理器试图为该演播扩充区域而超过其存储器容量,则目录处理器在1630分配一个新的高速缓冲存储处理器来存储该段并指令该高速缓冲存储处理器起动相对于图15a-15i讨论的轮转过程。一旦知道了包含请求的段的高速缓冲存储处理器地址与区,便在1640通知数据输出器高速缓冲存储处理器地址与区名。此后,数据输出器将直接与高速缓冲存储处理器交互作用以接收演播数据。
如上所述,目录处理器通常还负责管理系统中数据对象的读取与更新。系统中数据对象的读取与更新的管理最好采用基于下述三原则的新颖的“一切均不共享,一切均高速缓冲存储”(SNCE)规范来实现:
1)系统中一个以上逻辑实体可利用的对象只可由系统中一个且仅一个逻辑实体拥有;
2)已拥有的对象只能由拥有该对象的逻辑实体更新,但拥有的对象可由包括拥有者在内的任何逻辑实体读取;
3)对象的拥有者具有独占权来封锁所拥有的对象的读与更新。
图17中提供图5与图6中所示的一般形式的系统的部件的增强的示例。可以看到该系统包含各连接在一个或多个存储装置1710上的多个服务器1700。可以存储在这一系统的各种存储装置1710与服务器1700中的数据对象的实例包括目录处理器维护的高速缓冲存储器分配表、各高速缓冲存储处理器维护的供应队列及存储在存储装置中的视频演播文件。SNCE规范提供管理出现在这一系统中的对象的固定的读取与更新方法。
用于按照SNCE规范处理读取对象的请求的过程的实例示出在图18中。可以通过考虑已请求一个演播的数据输出器的一个实例来展示该过程。按照SNCE,数据输出器必须向其拥有者请求读取该对象(演播),在本例中拥有者为包括目录服务器与耦合在存储该演播的存储装置上的视频贮藏库服务器的逻辑实体。收到请求时,拥有者将允许请求者从包含该对象,在本例中为演播的高速缓冲存储处理器读取所请求的对象。这可能需要拥有者准备好演播然后将其复制到高速缓冲存储处理器中。
从而如图18中所示,逻辑实体在1800接收读取它所拥有的对象的请求。请求者,例如数据输出器,通过参照目录处理器维护与分配的对象拥有关系表而知道该对象的拥有关系。对象拥有者在1810判定请求的数据输出器是否登录为读取该对象。如果否,便在1820将该数据输出器增加到由拥有者维护的并且也高速缓冲存储在与拥有者关联的高速缓冲存储处理器中的“感兴趣的成员”表中。此后,拥有者在1830判定所请求的对象是否存储在高速缓冲存储处理器中。如果否,拥有者将对象准备到其本地存储器中然后在1840将对象复制到目录服务器分配的高速缓冲存储处理器中。一旦确定了对象在高速缓冲存储处理器中的位置,拥有者便在1850通知请求者该对象在高速缓冲存储器中的位置。此后请求者自由地直接从高速缓冲存储处理器请求读取。将理解这一说明与相对于图16描述的高速缓冲存储处理器分配的过程相符。
简短地说,SNCE规范规定接收读取一个对象的请求的对象拥有者不得直接将对象提供给请求者,而是将请求者引导到包含该对象的相关高速缓冲存储处理器上。从而回头参见图17,如果与目录处理器关联的服务器2为标记为对象Y的演播的拥有者,而服务器M(数据输出器)发送请求给服务器2要读取对象Y,服务器2将起动从高速缓冲存储处理器1对对象Y的复制。
如上所述,对象的拥有者还具有更新它所拥有的对象的独占权。图19示出按照SNCE更新对象的过程的实例。该过程可通过考虑实现在高速缓冲存储处理器中的动态地管理其内部存储器分配的轮转法来展示。在为给定的演播扩充其存储器分配的过程中,高速缓冲存储处理器必须通知目录处理器存储区的新地址。换言之,高速缓冲存储处理器必须请求更新目录处理器维护与拥有的高速缓冲存储器分配表。
从而,如图19中所示,目录处理器在1900收到来自高速缓冲存储处理器的更新其高速缓冲存储器分配表的更新对象请求。目录处理器在1910封锁读取或更新高速缓冲存储器分配表的进一步请求,并重新确定这些请求的路由到本地队列中。然后目录处理器1920更新其本地存储器中的高速缓冲存储器分配表。目录处理器在1930进一步更新在其关联的高速缓冲存储处理器中的高速缓冲存储器分配表,这是在目录处理器为目录处理器本身的情况下。然后在1940通知感兴趣的成员对高速缓冲存储器分配表的更新。感兴趣的成员为前面已读过高速缓冲存储器分配表的系统实体。通知过感兴趣的成员之后,在1950解除封锁及处理排队的请求。
如上所述,可采用两种封锁。在称作“排它封锁”的第一种中,在更新过程期间封锁防止更新与读取对象。反之,在称作“写封锁”的第二种封锁中,防止在更新过程期间更新,但允许在更新过程期间读取对象。这种读取称作“脏读取”。选择采用排它封锁或写封锁取决于提供精确地反映作为对象的主题的所有信息的必要性。
为了展示两种封锁的差别,考虑下述两种情况。第一种情况考虑存储在高速缓冲存储处理器中并表示演播的一部分的数据对象。有时可以更新这一对象来延长存储在高速缓冲存储处理器中的部分的长度;然而,对于响应读取请求提供一个单一的段给数据输出器的目的,在更新对象之前或之后将该段提供给数据输出器并无关系。结果,采用写封锁与这些对象配合是满意的。反之,第二种情况考虑存储在目录处理器中的高速缓冲存储器分配表。必须提供精确的数据给要求关于演播数据的信息的数据输出器,否则它会向错误的高速缓冲存储处理器错误地请求演播并会延迟将演播发送给接收机。因此,关于高速缓冲存储器分配表应当采用排它的封锁。
E.示例性视频点播的规范
如上所述,本发明的视频点播实施例将最佳地能够在等于与演播关联的预定义的请求窗口与预定义的段长度的时段L中多信道广播演播的所有段。选择来实现本发明的特定系统部件受到诸如提供的演播类型、提供的演播数目及服务的接收机数目等因素的限定。为了提供如何作出这些决定的实例,考虑设计成满足下述标准的系统:
1)系统必须能同时向全体30,000用户提供服务;
2)系统必须在所有时间上能向所有观众提供10部电影,每一部电影具有2小时的持续时间;
3)每部电影都是MPEG2编码的;并包括大约4G字节数据或大约每秒4.5M位数据;
4)每部电影都以预定的30秒段提供;以及
5)系统为全部10部电影的所有2400个段利用30秒的请求窗口。
再一次参见图2中所示的系统。假定该系统中所示的各处理节点包括一个RS/6000并且各交换机提供带多信道广播能力的无连接环境。这些交换机可包括ATM网络交换机。可进一步假定与系统关联的各接收机具有保持3秒钟MPEG2数据或大约1.7M字节存储器的足够存储器。从而可将部分的大小(数据输出器提供给接收机的部分的大小)选定为3秒钟。可进一步假定接收机包括一个处理器。这一接收机可以是诸如个人计算机或专用的视频解码器终端(有时称作“顶置盒”)。
向后从系统的接收机端开始工作,为了提供30,000观众每秒各4.5M位数据,用于提供信号给所有接收机的前端无连接环境必须能供给多达135G位/s。进一步假定在等于3秒的部分长度的时段内,各数据输出器能输出等于对于一部电影整个段数据部分负荷20%的数据,或大约80M字节。因此数据输出器必须能在大于213M位/s的速率上输入与输出。由于ATM适配器卡具有155M位/s的吞吐速率,因此数据输出器可设置三个ATM适配器卡用于输入及三个ATM适配器卡用于输出,为各数据输出器提供超过期望的输入与输出要求的455M位/s的输入与输出。
进一步假定各高速缓冲存储处理器设有2G字节的存储器。从而两个高速缓冲存储处理器便能存储整部电影。如上面所提及的,希望各高速缓冲存储处理器能在等于段长度与请求窗口L的时段内发送它所包含的所有的段。由于一个高速缓冲存储处理器可包含多达一部两小时电影的一半的段,或大约2.0G字节,高速缓冲存储处理器必须能以每30秒2G字节,或533M位/秒的速率提供段给数据输出器。因此高速缓冲存储处理器可设置五个ATM卡,从而允许775M位/s的最大输出速率,这大大超过了期望的输出要求。对于需要提供10部电影的系统,后端无连接环境必须能在每30秒中传输40G字节数据,从而需要10G位/s的带宽。这一带宽可以通过使用若干个IBM8220ATM交换机达到。
从而按照图2配置并使用上述部件的系统将能在规定的参数内在所有时间上提供点播的数字编码的演播。本领域中的普通技术人员将会理解这里描述的系统结构是高度可以伸缩的,并可适应于支持任何数目的演播与接收机。
从而,本发明可以实施在上述用于分配数字编码的演播的系统中。通过高速缓冲存储已被请求的演播,及通过将接收机分组成接收演播的多信道广播的段的接收组,系统便能响应接收机的请求提供演播给任何数目的接收机,不论该演播这时是否正在被其它接收机观看。在提供时间编码的演播时,系统将能很好地在等于请求窗口与单个段长度L的时段内多信道广播时间编码的演播的所有段,从而实质上每一个L秒都能接收到演播。
虽然上述特定实施例提供的结构与方法是发明人当前所知的用于实施本发明的最佳模式,本发明能具有各式各样的替代实施例。这里所描述的流程图、硬件配置与过程是示例性的。本领域中的普通技术人员知道可以对这里描述的实施例作出涉及等效部件、操作方法与使用方法的其它修改而不脱离下述权利要求书中所定义的发明范围。