专利名称:用于显示器处理器的共享存储器的控制器的制作方法
技术领域:
本发明涉及为显示器处理器处理视频数据的电路以及控制通过双向总线在共享存储器设备和多个进程队列之间正在传送着的视频数据的方法。
随着对拥有功能丰富的视频显示器的设备-例如膝上型电脑、蜂窝电话、个人数字助理、平面电视机等的需要持续增长,人们对能够高效处理视频数据的系统的需要也一直在增长着。所要面对的挑战之一就是管理从视频源到视频显示器的视频数据的流动。具体而言,需要系统处理多个实时进程。
微处理器和图形处理系统通常采用共享存储器系统,在这种系统中,多个进程必须访问一个共享的存储器设备(例如,总线、存储器芯片等)。在这些情况下,每个进程必须竞争共享存储器系统,并且可能包括一些装置,用于临时存储信息直到进程被授权访问存储器为止。为了方便这个进程,使用了用于共享存储器接口的存储器控制器。目前的系统致力于通常包括高带宽的竞争的进程、非实时进程(例如,CPU指令)、低带宽进程等等。这些系统通常使用优先级模式、令牌或其它用来在竞争进程之间做出仲裁的装置。例如,美国专利6,247,084(授予Apostol等)指定了一种共享存储控制器,为只包括单个实时进程的系统作出仲裁。美国专利6,189,064(授予MacInnis等)描述了一种用于机顶盒的共享存储器系统,其包括多个实时进程,但需要设计(block out)定时器以在进程访问之间强制实施最小的时间间隔,而这一点限制了该系统的有效性。
不幸的是,现有技术的系统无法提供有效的解决方案来控制多个实时进程,诸如像在视频处理系统中需要的那些进程。因此,需要一种有效的系统来在视频处理系统的多个实时进程之间做出仲裁。
本发明的目的是,提供一种用于为显示处理器处理视频数据的电路,该电路高效地在视频处理系统中的多个实时视频进程之间做出仲裁。
这个目的是通过根据权利要求1中所限定的发明的、用于为显示处理器处理视频数据的电路实现的。
本发明另一个目的是,提供一种方法,用于控制通过双向总线正在共享存储器设备和多个进程队列之间传送着的视频数据,该方法能够有效地在视频处理系统中的多个实时视频进程之间做出仲裁。
这个目的是通过根据权利要求11中所限定的发明的控制视频数据的方法实现的。
从属权利要求中限定了更多有利的实施例。
从下面结合附图对本发明的各个方面所作的详细描述中可以更容易地理解本文明这些及其它特性,在附图中
图1描绘了依照本发明的一个示范性的视频处理电路。
图2描绘了依照本发明的一个用于显示器处理器的存储器控制系统。
现在参考图1,图1描绘了用于处理正在送往视频显示器的视频数据的示范性视频数据处理电路。在这个实施例中,处理电路10接收源视频12、沿着电路在不同点上处理该视频并输出显示视频28。源视频12被通过24位的总线输入到处理电路10中,并被通过32位的总线输出。电路10中的所有其它通信都是通过128位的总线发生的(下面描述对总线的选择)。视频处理是由源处理系统14、中间处理系统17和显示处理系统19掌控的。处理电路10还包括共享存储器设备27,可以通过128位的总线访问它。例如,共享存储器设备27可以用来在处理电路10中的两个点上提供帧延迟机制,并且例如可以包括连接到一个双数据率同步动态随机访问存储器(DDR-SDRAM)体的128位宽的总线。同样也可以利用其它大型共享存储器系统,例如SGRAM、SDRAM、RAMBUS等等。
处理电路10还包括四个进程队列16、18、20、22,它们竞争来访问共享存储器设备27。每个进程队列临时地存储正在被写入共享存储器设备27或正在从其中读出的数据,并且可以用先进先出的体系结构(FIFO)来实现进程队列,这种体系结构在实现为同步FIFO的256×128位双端口静态存储器(SRAM)中存储数据。优选地,四个进程队列中每一个的右端以和共享存储器设备相同的速率(例如,200MHz)进行计时,因此应该利用和共享存储器设备相同的128位宽的总线。为了处理视频应用所必需的大型数据的传输,显示为DDR-SDRAM数据26的数据在进程队列16、18、20、22和共享存储器设备27之间被“分组传输”。每个数据组的典型大小可以处在10到80个连续的128位字之间的范围。每个进程队列的左端可以按和共享存储器时钟不同的速率(例如,比共享存储器时钟更低的速率)进行计时。然而,进出每个队列的平均带宽必须相同,以便防止下溢或上溢。
应该理解的是,展示处理电路10仅是用于示范目的,对多个实时进程竞争共享存储器设备的视频处理系统的其它配置也在本发明的范围内。不管具体的配置为何,这样的电路所面临的挑战之一是如何在进程队列之间做出仲裁以确定哪个进程队列应该访问共享存储器设备27。本发明通过提供一种测量每个进程队列的充满度的系统而解决了这个问题。在一个示范性实施例中,饱和度被测定为进程队列的存储器中未读取的字的数量。但是,也可以利用任意测量存储器设备中所存储的数据量的方法。根据每个进程队列16、18、20、22的充满度,就可以做出判定每个进程队列何时就绪来发送或接收数据组。
现在参考图2,存储器控制系统30被提供用于控制进出共享存储器设备27的访问。存储器控制系统30持续地监控每个进程队列的充满度测量,以便在四个进程队列16、18、20、22之间做出仲裁,并对选中的进程队列授权访问。存储器控制系统30包括行地址发生器36、调度器32和控制器34。行地址发生器36根据源和显示同步信号42、44来为四个进程队列16、18、20、22中的每一个计算行地址ARA、BRA、CRA、DRA。调度器32监控四个进程队列AFLNS、BFLNS、CFLNS、DFLNS的充满度并确定是否有一个或多个进程队列要求访问。如果要求访问,则调度器32通过向控制器34发出必要的命令来选择一个进程队列访问共享存储器设备。这些命令可以包括启动信号STTR、传输完成信号TRDN、要传送的数据的组大小BSZ、行地址RA和列地址CA。依据这些命令,控制器34产生所有必要的时序信号来执行该数据组。具体地说,控制器34向共享存储器设备27发出地址和控制信号38,并向适当的进程队列发出读或写控制信号40。
调度器32通过对每个进程队列的充满度和每个进程队列的预定阈值进行比较来仲裁进程队列16、18、20、22。对于每个进程队列,阈值可以是不同的,并且可以以存储器的大小、组的大小、以及行时序(每个进程队列可能不同)为基础。如图1所示,两个进程队列16、20持有要写入共享存储器27的数据,两个进程队列18、22持有正从共享存储器27读取的数据。对持有数据以便写入的进程队列16、20来说,充满度必须大于阈值以触发一个数据组来发送。对正在读数据的进程队列18、22来说,充满度必须小于阈值以触发一个数据组来接收。因此,每当超越了各自的阈值,调度器32就能够确定一个或多个进程队列需要访问。
在每个组之后,调度器32检查每个进程队列的充满度以便查看是否要求另一组。如果有两个或多个进程队列同时要求访问(例如,它们的充满度测量都超越了阈值),则就选择等待时间最长的那一个进程。如果有两个或多个进程队列已经等待了相同的时间量(即,它们在同一时钟周期超越了阈值),则就选择带宽需求最高的那个。在一种示范性实施例中,在其它进程对列等待着,任何一个进程队列都不应该一次为一个以上数据组占据总线,并且所有已经启动的数据组都应该完成。此外,不应该允许任何进程队列发生上溢或下溢。然而,应该允许写进程队列16、20变成空(例如,在垂直消隐期间)。不应允许读进程队列18、22为空。
如上所释,这个示范性实施例使用128位的总线。对于特定电路可以根据最坏情况下的带宽状况来选择总线宽度。在图1的电路中,如果进程B速率是进程A速率的两倍并且等于进程C速率,并且进程D速率是进程C速率的三倍,那么可以按照如下公式来计算共享存储器数据总线最坏情况下的带宽需求(BW)BW=写速率A+读速率B+写速率C+读速率D+开销BW=写速率A+(2×写速率A)+(2×写速率A)+(6×写速率A)+开销BW=(11×写速率A)+开销那么,例如,如果峰值输入速率是75MHz@24位/像素(对HDTV是典型的),并且开销是15%,那么BW=11×75,000,000×24×1.15=22,770,000,000位/秒。假如是200MHz的存储器时钟速率,则存储器总线带宽最小也得是BW/200,000,000=114位宽。出于实际的原因,对这个应用来说要选择128位的总线宽度。但是,应该理解对于其它不怎么复杂的应用,可能更小的总线带宽(例如32位)就足够了。
存储器设备在每个进程队列16、18、20、22中的大小(即深度)可以取决于几种因素,包括组大小和水平同步(行)时序。通常来讲,存储器深度应当被最小化以便降低成本。但是,为了减少存储器总线中的开销,希望有较大的组大小,而较大的组大小又要求更深的存储器。因此,需要进行一些折衷。此外,每个进程的行时序参数不必相同。例如,源视频12(存储在进程队列16中)可以在比要求存储在进程队列18中的数据在给出较大的峰值带宽的行之间有大的消隐间隔。因为这些冲突的需求,存储器深度可以用一系列参数设置上用行为模拟来确定。
为了说明和描述起见,前面已经给出了对本发明的优选实施例的描述。它们并非为了穷举或限制本发明到所公开的精确形式,根据上述教导明显地可以有许多修改和变化。对本领域的技术人员来说显而易见的修改和变化都被包括在由所附权利要求所限定的本发明的范围中。
权利要求
1.一种为显示器处理器处理视频数据的电路,包括共享存储器设备;耦合于共享存储器的多个进程队列,用于临时存储视频数据,其中每个进程队列都包括一个用于确定该进程队列的充满度的系统;和存储器控制系统,它检查每个进程队列的充满度并在进程队列和共享存储器设备之间调度数据组。
2.如权利要求1所述的电路,其中,共享存储器设备包括双数据速率的同步动态随机访问存储器(DDR-SDRAM)。
3.如权利要求2所述的电路,其中,每个进程队列都包括一个作为同步FIFO加以实现的先进先出。
4.如权利要求3所述的电路,其中,第一个进程队列被配置为能从共享存储器设备接收第一组视频数据,第二个进程队列被配置为能向共享存储器设备发送第二组视频数据。
5.如权利要求3所述的电路,其中,第一和第二个进程队列被配置为能从共享存储器设备接收视频数据组,第三和第四个进程队列被配置为能向共享存储器设备发送视频数据组。
6.如权利要求5所述的电路,其中,每个进程队列都通过范围在32位到128位的双向总线而与DDR-SDRAM相耦合。
7.如权利要求6所述的电路,其中,每个视频数据组包含至少10个连续的128位的字。
8.如权利要求1所述的电路,其中,存储器控制系统包括调度器,它从每个进程队列接收充满度测量,根据每个所接收到的充满度测量来区分进程队列的优先次序,并输出一个选中的进程队列;和控制器,用于使共享存储器设备与选中的进程队列进行通信。
9.如权利要求8所述的电路,其中,存储器控制系统还包含行地址发生器,用于把对应每个进程队列的行地址传输到调度器。
10.如权利要求8所述的电路,其中调度器输出行地址、列地址和组大小到控制器。
11.一种控制通过双向总线在共享存储器设备和多个进程队列之间传送着的视频数据的方法,包括把行地址和每个进程队列相关联;确定每个进程队列的充满度;根据已确定的每个进程队列的充满度,在进程队列之间做出仲裁,以选择具有最高优先级的进程队列;控制共享存储器设备以便和选中的进程队列进行通信;和在共享存储器设备和选中的进程队列之间分组传输数据。
12.如权利要求11所述的方法,其中,每个进程队列的充满度都是通过计算该进程队列中未读取的字的数量来确定的。
13.如权利要求11所述的方法,其中,在进程队列之间做出仲裁的步骤包括如下步骤比较每个进程队列的充满度和每个进程队列的预定阈值。
14.如权利要求13所述的方法,其中,预定阈值是以进程队列的存储器大小和正传送着的数据的组大小为基础的。
15.如权利要求11所述的方法,其中,在进程队列之间做出仲裁的步骤包括下列步骤把优先级赋予等待时间最长的进程队列;和对于等待相同时间段的进程队列而言,把优先级赋予具有最大带宽需求的一个进程队列。
16.如权利要求11所述的方法,其中,控制步骤包括向选中的进程队列提供信号以使其从总线读数据或向总线写数据;向共享存储器设备提供地址和控制信号以使其向所提供的地址写数据或从其读数据。
全文摘要
用于控制通过双向总线正在共享存储器和多个进程队列间传送着的视频数据的方法和系统。该系统包括用于把行地址与每个进程队列相关联的行地址发生器;一个用于确定每个进程队列的充满度的系统;一个用于根据已确定的每个进程队列的充满度来选择进程队列以便和共享存储器设备通信的调度系统;以及一个用于使共享存储器设备和选中的进程队列通信并使视频数据在共享存储器设备和选中的进程队列间分组传输的控制器。
文档编号G09G3/20GK1589439SQ02822886
公开日2005年3月2日 申请日期2002年11月20日 优先权日2001年11月20日
发明者J·E·迪安 申请人:皇家飞利浦电子股份有限公司