图6 在GOP级数据访问模式中,关联性存在于一组数据帧内部,两组帧之间数据不存在关联性。
在实际应用中,系统可能使用多种算法处理数据流,而每种算法都可能用到不同的数据存取模式。这种情况下,可以针对特殊应用将几种框架结合起来使用。为利用多核结构,可以采用流水线处理来实现并行操作,但这种并行操作是不对称的,因为不同处理器核上可能执行不同的计算。然而,系统可以分配一些其它的任务到处理器核的空闲指令上,在保持灵活性的同时达到处理器核的工作量平衡。图7显示了行级处理和宏块处理相结合的框架的数据流模型。
图7 行级处理和宏块处理相结合的框架的数据流模型
在某些其他应用中,多个数据块之间也会存在数据关联性,数据存取模式仍然是可预测的,但它扩展到了一个宏块或一行的粒度之外。例如,运动窗口搜索就可能使用几个相邻的宏块。数据存取模式仍然是可预测的,但系统在算法的多次迭代之间要访问多个数据块。这种情况下,可以对软件框架进行修正,以实现有效的并行操作。例如,如果多行间存在关联,可以通过调整行处理框架,将N个连续行的帧片段传送到每个处理器核的L1存储器。利用类似的方法,还可以对宏块处理框架进行扩展,以便将多个宏块从L2存储器送入内部L1存储器。