预计阅读本页时间:-
7.8 高速缓存
传统的LRU文件高速缓存对于多媒体文件而言工作得并不好,这是因为电影的访问模式与文本文件有所不同。在传统的LRU缓冲区高速缓存背后的思想是,当一个块被使用之后,应该将其保存在高速缓存中,以防很快再次需要访问它。例如,在编辑一个文件的时候,文件被写入的一组磁盘块很可能反复地被用到,直到编辑过程结束。换言之,如果一个磁盘块在短暂的时间间隔内存在比较高的可能性要被重用的话,它就值得保存在高速缓存之中,以免将来对磁盘的访问。
对于多媒体而言,通常的访问模式是按顺序从头到尾观看一部电影。一个块不太可能被使用两次,除非用户对电影进行倒带操作以再次观看某一场景。因此,通常的高速缓存技术是行不通的。然而,高速缓存仍然是可以有帮助的,只不过是要以不同的方式使用。在下面几小节,我们来看一看适用于多媒体的高速缓存技术。
7.8.1 块高速缓存
尽管只是将一个块保存起来期望它可能很快再次被用到是没有意义的,但是可以利用多媒体系统的可预测性,使高速缓存再度成为十分有益的技术。假设两个用户正在观看同一部电影,其中一个用户在另一个用户2秒钟之后开始观看。当第一个用户取出并观看了任何一个给定的块之后,很有可能第二个用户在2秒钟后将需要相同的块。系统很容易跟踪哪些电影只有一个观众,哪些电影有两个或更多个在时间上相隔很近的观众。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
因此,只要一部电影中的一个块读出后很快会再次需要,对其进行高速缓存就是有意义的,当然是否进行高速缓存还取决于它要被高速缓存多长时间以及内存有多紧张。这里应该使用不同的策略,而不是将所有磁盘块保留在高速缓存之中并且在高速缓存被填满之后淘汰最近最少使用的。对于在第一个观众之后∆T时间之内有第二个观众的每一部电影,可以将其标记为可高速缓存的,并且高速缓存其所有磁盘块直到第二个观众(也可能是第三个观众)使用。对于其他的电影,根本不需要进行高速缓存。
这一思想还可以进一步发挥。在某些情况下合并两个视频流是可行的。假设两个用户正在观看同一部电影,但是在两个用户之间存在10秒钟的延迟。在高速缓存中保留10秒钟的磁盘块是有可能的,但是要浪费内存。一种替代的方法是试图使两部电影同步,这一方法可以通过改变两部电影的帧率实现,图7-25演示了这一思想。

在图7-25a中,两部电影均以每分钟1800帧的NTSC速率播放,由于用户2开始晚了10秒钟,他将在整部电影播放过程中落后10秒钟。然而,在图7-25b中,当用户2到来时,用户1的视频流将放慢,在接下来的3分钟里,它不是以每分钟1800帧的速率播放,而是以每分钟1750帧的速率播放,3分钟后,它正处于第5550帧。与此同时,用户2的视频流在最初的3分钟里以每分钟1850帧的速率播放,3分钟后,它同样也处于第5550帧。从此刻之后,两个视频流均以正常速度播放。
在追赶阶段,用户1的视频流运行速度慢了2.8%,而用户2的视频流运行速度快了2.8%。用户不太可能会注意到这一点。然而,如果对此有所担心,那么追赶阶段可以在比3分钟更长的时间间隔上展开。
一种降低一个用户的速度以便与另一个视频流合并的可选方法是,给用户以在他们的电影中包含广告的选项,与无广告的电影相比,其观看价格比较低。用户还可以选择产品门类,这样广告的侵扰就会小一些而更有可能被观看。通过对广告的数目、长度和时间安排进行巧妙的操作,视频流就可以被阻滞足够长的时间,以便与期望的视频流取得同步(Krishnan,1999)。