对公共资源的访问 本发明涉及由一组功能部件对公共资源的访问。本发明可用于例如包含若干个要访问公共资源的处理器的数据处理系统。这种系统的一个例子是MPEG解码器(MPEG是运动图形专家组的简写)。
对公共资源的访问可以通过接口来控制。接口使用访问方案,功能部件能按照访问方案来访问公共资源。
一种可能的访问方案的特征在于重复的访问模式。该访问模式包含若干个时间片。每个时间片被分配给一定的功能部件。这意味着有关功能部件能在这个时间片中访问公共资源。假设某功能系统有三个功能部件A、B和C,某访问模式可以在两个时间单位期间将访问权给予功能部件A,随后在一个时间单位期间给予功能部件B,最后在三个时间单位期间给予功能部件C。这种模式于是包含总共6个时间单位,每6个时间单位就重复。以下将把这种访问方案称为固定访问方案。
另一个可能的访问方案的特征在于优先级顺序。功能部件应当提交使用访问公共资源的请求。接口接收所有请求。它允许有等待处理的请求的功能部件中的具有最高优先级的功能部件访问公共资源。再次假设某功能系统有三个功能部件A、B和C。优先级顺序为A、B、C。在这种情况下,功能部件A将能获得对公共资源的访问,而不管事实上功能部件B或C有等待处理的请求。如果没有来自功能部件A的等待处理地请求,则功能部件B将能获得对公共资源的访问。如果没有来自功能部件A或B的等待处理的请求,则功能部件C将能获得对公共资源的访问。以下将把这种访问方案称为优先访问方案。
以上所述两种访问方案在公开号WO95/31874公开的国际专利申请中有介绍。该申请涉及MPEG解码器。
本发明的一个目的是能实现成本降低。
本发明考虑了下列方面。原则上,每个功能部件都应能满意地获得对公共资源的访问,以便使该功能部件能正确地得到执行。任何功能部件对公共资源的访问,是由两个因素确定的:第一,公共资源所提供的访问能力(access capacity);第二,所采用的访问方案。
原则上,通过给予公共资源较高的访问能力,就有可能保障任何功能部件的满意访问。然而一般来说,公共资源将随着公共资源所提供的访问能力的增加而变得更加昂贵。假设公共资源例如是存储器。存储器所提供的存取能力一般是以传送频带或速度来表示的。一般来说,存储器的速度越高,存储器就越贵。
固定访问方案实际上是以预定方式在不同功能部件之间划分公共资源所提供的访问能力。所以,只要保证访问能力和对这种能力的划分使得公共资源能被每个功能部件满意地访问就足够了。
功能部件所要求的访问在时间上可能是不同的。有可能某个功能部件在一定的时段内要密集地访问公共资源,而在另一个时段内,该功能部件则不要求这种密集的访问。
对于每个功能部件,固定访问方案要对访问要求作最坏的打算。这意味着,如果有一个或多个功能部件,其访问要求在时间上的变化相当大,则公共资源所提供的访问能力在多数时间里将会利用不足。换言之,公共资源将得不到非常有效的使用。就成本而言,固定访问方案仅仅提供对公共资源投资的适度回报。
优先访问方案按请求赋予对公共资源的访问权。这种方案因此具有灵活性,因此对公共资源的使用效率更高。这意味着,原则上,优先访问方案对公共资源要求的访问能力比固定访问方案的更小。其结果是,优先访问方案原则上使得有可能取得对公共资源的成本降低。
然而,优先访问方案有一些缺点。一般来说,要确定是否每个功能部件都能满意地获得对公共资源的访问是困难的。此外,要验证某功能部件是否总是在请求后的临界时间里取得访问权一般也是困难的。该验证问题的起因是,某功能部件的访问操作的时间跨度以及请求与由此引起的访问之间的时间,与不同功能部件在它们的请求方面的行为有关。因此,为了验证某个优先访问方案是否能实现正确的操作,需要对统计特性(statistical nature)的精密计算或模拟。这本身就已经在开发阶段牵涉到一定的费用。
下面的例子说明的是在优先方案的情况中会可能出现的锁定问题。有按优先顺序的三个功能部件A、B和C。在给定时刻,功能部件A获得公共资源。在这个访问期间功能部件B和C提交请求。当由功能部件A进行的访问完成时,功能部件B将被授权访问公共资源。来自功能部件C的请求保持在等待处理的状态。在功能部件B对公共资源的访问期间,功能部件A提交请求。当由功能部件B进行的访问完成时,功能部件A将再次被授权访问公共资源。如果这种情况继续下去,即功能部件A在由功能部件B进行的访问期间提交请求,然后功能部件B在由功能部件A进行的访问期间提交请求,则功能部件C对公共资源的访问实际上被锁定。这种锁定一直持续,直到功能部件A或B或二者以更低的频率提交它们的请求。
以上所述的锁定是可以避免的,方法是留意让最高优先级的功能部件进行的访问操作有较长的长度。这样,在访问过公共资源之后,这种功能部件将只在较长的时间后才需要进行新的访问。这样,长时间的访问保证功能部件受到这样的照顾,以至它在较长的时间都保持沉默。结果,最高优先级的功能部件发出请求的频率就将较低。这为让较低优先级的功能部件访问公共资源提供了机会。
然而,对前面段落中所述的锁定问题的该解决方案有一些缺点。对于低优先级的功能部件来说,请求与由此引起的访问之间的时间较长。此外,该解决方案要求最高优先级的功能部件要有较高的存储容量,用于暂时存储构成对公共资源的一次访问的对象的项目。这些存储容量招致一定的费用。对前面段落中所述的锁定问题的另一个解决方案将是增加公共资源的访问能力。然而,这也招致一定的费用。
按照本发明,如开篇段落中所定义的系统包含一个适合实现一个访问方案的接口,特征在于要以预定方式经历若干个状态,一个状态构成一定长度的访问的一个可能并定义功能部件能据以访问公共资源的优先顺序。
本发明这样就为处于一个或多个状态中的任何具有最高优先级的功能部件保障对公共资源的某种最小程度的访问。此外,本发明还为这类功能部件保障在请求与由此引起的访问之间的某种最长时间。这就方便了系统的设计,也使各功能部件能有比较适中的存储容量。因此与以上所述的优先方案相比使用本发明能实现成本的降低。
同时,本发明在一定的功能部件能在需要的情况下在一定时段内密集地访问公共资源的意义上,具有灵活性。所以,与给定访问方案相比,公共资源将更有效地得到使用。所以,公共资源具有的访问能力与固定访问方案的访问能力相比可以降低。所以本发明与固定访问方案相比能降低成本。
现在将结合附图来更详细地说明本发明。
图1表示按照本发明的数据处理系统;
图2表示系统的存储器接口的操作;
图3表示系统的信号处理单元;
图4表示系统的存储器接口;
图5表示由某单元进行的读访问;
图6A和6B表示为对公共存储器访问的仲裁;
图7表示存储器接口的存取接口;
图8表示存储器接口的缓冲存储器;
图9表示读缓冲存储器电路;
图10表示如权利要求1所定义的本发明的基本特征;
图11表示用于管理不同进程对公共资源的访问的仲裁器;
图12表示在图11中所示仲裁器中选择进程的方案。
以下说明涉及标注符。在所有附图中类同的部件具有相同的标注字母。在一个附图中可能出现若干个类同的部件。在该情况下将数字后缀到标注字母,以区分类同的部件。为方便计可以省略数字或后缀。这适用于说明书和权利要求二者。
图1表示一个数据处理系统。该设备包含公共存储器SDRAM、存储器接口INT和三个信号处理单元B1、B2和B3。以下将称这些数据处理单元为“单元”。每个单元B通过专用读总线BBR和专用写总线BBW与存储器接口INT相连。每个专用读总线BBR和每个专用写总线BBW都专用于给定单元B。存储器接口INT通过公共总线BM与公共存储器SDRAM相连。
数据处理设备的一般操作如下。单元B应请求接收要被处理并在公共存储器SDRAM中存储的数据。处理过数据后,单元B将处理过的数据通过存储器接口NT施加到公共存储器SDRAM。存储器接口INT控制由各种单元B对公共存储器SDRAM的存取。
存储器接口INT有两个基本功能。第一,它在对公共存储器SDRAM的存取的层次在各种单元B之间进行仲裁(arbitration)。单一的单元B能访问公共存储器SDRAM,要么读一次要么写一次。这意味着单元B只能以成组方式(burst mode)访问存储器。第二,就读而言,存储器接口INT将来自公共存储器SDRAM的、去往给定单元B的数据组串(data bursts)转换成基本稳定的数据流。该数据流就是这样通过相应的专用读总线BBR被传输到单元B的。就写而言,存储器接口INT将来自给定单元B的基本稳定的数据流转换成要写入公共存储器SDRAM的数据组串。
图2表示存储器接口INT的操作。T(BM)代表公共存储器SDRAM与存储器接口INT之间通过公共总线BM的数据传输。T(BBR1)、T(BBR2)和T(BBR3)代表存储器接口INT与单元B1、B2和B3之间分别通过相应的专用读总线BBR1、BBR2和BBR3的数据传输。T(BBW1)、T(BBW2)和T(BBW3)代表存储器接口INT与单元B1、B2和B3之间分别通过相应的专用写总线BBW1、BBW2和BBW3的数据传输。
数据传输T(BM)由数据组串DB组成。每个数据组串DB对应于由单元B或者以读方式或者以写方式对公共存储器SDRAM进行的一个存取操作。DB后括号内的标注,指出组串(burst)中的数据属于哪个单元B,也指出存取的类型是写(W)还是读(R)。例如DB1(B1/R)指出数据组串DB1涉及B1以读方式对公共存储器SDRAM的存取。
图2显示,存储器接口INT对来自公共存储器SDRAM的、属于某单元B的数据组串进行“平滑”(smoothing)。相反地,该图也显示存储器接口INT对从单元B接收的数据进行时间集中(timeconcentration),以便将数据以组串的形式写入公共存储器SDRAM(数据压缩)。这样就实现以较低的速率通过专用读总线BBR和专用写总线进行数据的传输。因此这就使得专用读总线BBR和专用写总线BBW有可能具有相对较窄的传输(bands),因而具有较小的宽度。对此要注意的是,总线的大小不必非要相应于由该总线传输的数据的位数。例如,可以将16位的字分裂成4位的字。这样,该数据就能以4个字的序列的形式通过4位的总线传输。
图3表示单元B。单元B包含处理器P和通用寻址电路AGA。处理器P发出逻辑请求LRQ。假设单元B处理视频数据,在这种情况下逻辑请求LRQ例如可以是请求当前图象的给定行中的像素。通用寻址电路AGA将逻辑请求LRQ转换成物理请求PRQ。物理请求PRQ定义被请求数据被存储在公共存储器SDRAM中的位置的物理地址。物理请求PRQ可以有下列形式:起始地址、从所述地址开始要被检索的地址的数目以及-适合的话-在数据检索期间要采用的方案。该方案可以以下列形式定义:要读取的连续地址的数目,要被跳过的地址的数目和“读并跳过”循环的次数。AGA可以以用翻译参数定义逻辑请求LRQ向物理请求PRQ的翻译的方式可编程。这就能实现在公共存储器SDRAM中数据存储的灵活性。
图4表示存储器接口INT。存储器接口INT包含仲裁器(arbiter)从B,存取接口SIF、缓冲存储器BUF和寻址与宏命令电路AGB。每个单元B有个对应的寻址与宏命令电路AGB。
总的来说,存储器接口INT的操作如下。每个寻址与宏命令电路AGB将来自其相关单元B的物理请求划分成宏命令。一个宏命令代表一个访问存储器中给定行的请求。宏命令被提交给仲裁器ARB之前,寻址与宏命令电路AGB查验缓冲存储器BUF是否有足够的空间。为此,它首先将宏命令施加到缓冲存储器BUF。如果缓冲存储器BUF确认有空间用于存储由宏命令所定义的数据的数量,寻址与宏命令电路AGB就将宏命令提交给仲裁器ARB。仲裁器ARB接收来自各种寻址与宏命令电路AGB的宏命令并选择一个要被施加到存取接口SIF的宏命令。这种选择是按照以下所述的仲裁方案作出的。存取接口SIF按接收顺序处理从仲裁器ARB接收的宏命令。然后,存取接口SIF提供对公共存储器SDRAM的存取,存取操作是由被处理的宏命令定义的。
宏命令使X组地址能被访问,其中每组包含Y个地址,各地址组由Z个字分隔,X、Y和Z为整数。所以,宏命令含有下列信息:
-要被访问的首地址;
-在一组地址中的首地址后要被访问的地址的数目(Y-1);
-要在两组连续地址之间跳过的地址的数目(Z);
-除第一组外还要访问的地址组的数目(X-1);
-存取类型:读或写。
一个在位层次的宏命令的例子如下。假设在公共存储器SDRAM中存储的数据的宽度是32位,公共存储器SDRAM的最大存储容量是256兆位。这意味着地址是以23位表达的。进一步假设存取操作被限制在大小最多16个地址。鉴于延迟,这种限制是可取的。所以X-1和Y-1最大为15,因此能用4个位编码。最后,按照公共存储器SDRAM的配置,一行含有最多512个地址。所以,要被跳过的地址的数目不可超过511,因此这个数目可以用9个位编码。因此,宏命令的大小为23+2*4+9+1=41位。地址可以在位40至18中编码,存取类型在位17中编码,要被读取的字的数目(Y-1)在位16至13中编码,要被跳过的字的数目(Z)在位12至4中编码,字组的数目(X-1)在位3至0中编码。
图5表示由给定单元B以读方式对公共存储器SDRAM的存取的过程。横向代表时间。图中的纵向代表涉及的不同功能部件。图中含有箭头。这些箭头代表在对接口存储器SRAM的存取的过程中的各种步骤S。
S1=有关单元B的处理器P向通用寻址电路AGA提交逻辑请求LRQ。该逻辑请求规定一个数据子集,例如待处理数据的集合(例如图象)中某行的亮度像素(1uminance pixels)。
S2=通用寻址电路AGA将逻辑请求LRQ转换成物理请求PRQ。
S3=通用寻址电路AGA向宏命令寻址电路AGB提交物理请求PRQ。
S4==宏命令寻址电路AGB将物理请求PRQ转换成宏命令
S5=宏命令寻址电路AGB将从物理请求PRQ导出的第一个宏命令提交给缓冲存储器BUF。
S6=缓冲存储器BUF检验是否有足够的空间用于存储由宏命令所定义的数据的数量。
S7=缓冲存储器BUF向宏命令寻址电路AGB发送表示有空间的应答。
S8=代表一定的延迟。
S9=宏命令寻址电路AGB将宏命令提交给仲裁器ARB。
S10=仲裁器ARB按照适用于任何由单元(以读方式和写方式)进行的对公共存储器SDRAM的存取的仲裁方案来处理请求存取公共存储器SDRAM的宏命令。
S11=仲裁器ARB将宏命令提交给存取接口SIF。
S11a=仲裁器ARB向缓冲存储器BUF发送表示已经将宏命令提交给存取接口SIF的应答。
S12=宏命令在存取接口SIF中排队,存取接口SIF先处理以前收到的宏命令。
S13=存取接口SIF根据该宏命令为公共存储器SDRAM生成控制信号。这些控制信号导致位于由宏命令指定地址的数据被连续读出。
S14=从公共存储器SDRAM连续读出的数据被传送到缓冲存储器BUF。
S15=缓冲存储器BUF暂时存储数据。
S16=缓冲存储器BUF以基本稳定的方式将数据传送到处理器P。
对于步骤S1中提出的逻辑请求以后的每个宏命令,重复步骤S5-S15。
下一步在图5中没有表示。在执行步骤S1时,通用寻址电路AGA向处理器P发送一个应答信号,该信号指出逻辑请求LRQ已经被接受,将要被处理。处理器P响应该应答信号,提出新的逻辑请求并保持它,直到进一步通知。当宏命令寻址电路AGB应逻辑请求LRQ提交最后一个宏命令时,逻辑请求LRQ的处理就结束。在这种情况下宏命令寻址电路AGB向通用寻址电路AGA发送一个应答,向后者指出对逻辑请求LRQ的处理已经完成。据此,通用寻址电路AGA以与步骤1中启动的对逻辑请求LRQ的处理的类似方式开始处理新的逻辑请求LRQ。换言之,重复该过程。
图6a和6b表示仲裁器ARB的一个仲裁方案。图6a中以圆圈的形式表示8个状态ST1-ST8。这些状态ST以循环的方式一个接着另一个发生。每个状态ST代表向存取接口发送宏命令的一个可能。所以,每个状态代表访问存储器的一个可能。每个状态对应于一定的处理器P。某状态对应的处理器P在代表该状态的圆圈中确定。
图6b表示与图6a对应的仲裁过程。这个过程包含多个步骤SA1-SA4,对图6a中的每个状态而执行。步骤SA1是状态跳转之后执行的第一个步骤。在步骤SA1中,仲裁器ARB查验是否有由宏命令寻址电路AGB提交的、紧接着来自状态S[i]对应的处理器P[j]的逻辑请求LRQ的宏命令在等待执行。如果有这种宏命令在等待执行,则在步骤SA1后进行步骤SA2。在步骤SA2中,仲裁器ARB将有关宏命令发送给存取接口SIF。这个步骤的作用是,在一定的延迟后,公共存储器SDRAM将被该宏命令所确定的有关处理器P存取。在宏命令已经被发送后,仲裁器跳转到下一个状态,这意味着重复图6b中所表示的过程。然而,如果在步骤SA1中仲裁器ARB检测到没有与状态S[i]对应的处理器P相关的等待执行的宏命令,则在步骤SA1后进行步骤SA3。在步骤SA3中,仲裁器ARB检验是否有其它宏命令在等待。如果没有其它宏命令在等待,仲裁器ARB就跳转到下一个状态,重复图6b中所表示的过程。如果有其它宏命令在等待,仲裁器ARB就执行步骤SA4,在步骤SA4中,仲裁器ARB按优先顺序选择一个宏命令。每个宏命令都有一定的优先级。优先级是由该宏命令来自的处理器P确定的。仲裁器ARB于是选择具有最高优先级的宏命令并将这个宏命令发送给存取接口SIF。发送宏命令后,ARB跳转到下一个状态,这意味着重复图6b中所表示的过程。
关于图6a和6b要注意的是,没有必要每个状态对应一个处理器P。引入一个或多个不与任何处理器P对应的状态是可能的,这意味着引入自由状态是可能的。就自由状态的情况来说,仲裁器ARB仅仅根据优先级顺序来选择宏命令。在数据处理系统包含一个在存取公共存储器SDRAM的层次上对延迟时间和传送频带(pass band)的约束比较适中的处理器P的情况中,这种自由状态可以是有用的。所以,为了避免这种处理器P不被赋予足够的访问权(access),可以引入自由状态。处理器P利用这些自由状态来访问公共存储器SDRAM。
图7表示一例存取接口SIF。存取接口SIF包含宏命令缓冲存储器FIFO_MC、列发生器CAGU、命令发生器CGU、控制信号发生器IF_SDRAM、数据缓冲存储器IF_D。
存取接口SIF的一般操作如下。宏命令缓冲存储器FIF0_MC从仲裁器ARB接收宏命令。该存储器暂时存储这些宏命令并按它们的到达顺序将它们发送给列发生器CAGU。如果宏命令缓冲存储器FIFO-MC已满,因此不能接受新的宏命令,它就向仲裁器ARB报告这个情况。由于来自存取接口SIF的这个指出其“FIFO已满”的信号,仲裁器ARB就推迟传送当前选择的宏命令,直到宏命令缓冲存储器FIF0_MC报告它能接受新的宏命令。实际上,来自存取接口SIF的“FIFO已满”的信号“冻结”仲裁器ARB一定的时间。
列发生器CAGU在根据前一个宏命令进行的存储器存取操作已经被执行后从宏命令缓冲存储器FIFO_MC请求一个新的宏命令。事实上,列发生器CAGU配合命令发生器CGU将宏命令翻译成一系列地址。公共存储器SDRAM的地址是由公共存储器SDRAM的存储体号、行号和列号定义的。本文已经指出宏命令涉及对接口存储器SRAM的单一行的存取,这自然意味着存取发生在单一的存储体中。因此,为根据宏命令而定义一系列地址,列发生器CAGU根据宏命令生成一系列的列就足够了。列发生器CAGU的一个实现例如可包含一些计数器和一些逻辑电路。在这种实现中,宏命令的内容的作用是编程设置各计数器。
命令发生器CGU连续接收公共存储器SDRAM的另一个列号。命令发生器CGU另外从宏命令缓冲存储器FIFO_MC接收由宏命令所定义的存储体号和行号。该信息使列发生器CAGU能定义一系列用于存取公共存储器SDRAM的命令,其中每个命令定义一个地址。此外,命令发生器CGU还生成将公共存储器SDRAM设置成允许宏命令所定义的存取操作的正确状态而必需的命令。这些命令涉及公共存储器SDRAM的适当过程,诸如预加载和启动。此外,命令发生器CGU还确保公共存储器SDRAM每隔一定时间就被刷新并生成进行这种刷新操作所必需的命令。
控制信号发生器IF_SDRAM根据从命令发生器CGU接收的命令生成控制信号。例如,控制信号发生器IF_SDRAM生成缩写名为RAS、CAS的信号。控制信号发生器IF_SDRAM保证,在一系列控制信号中,遵守公共存储器SDRAM的一定等待时间。这些等待时间可能因所使用SDRAM的类型而不同。所以,控制信号发生器IF_SDRAM是特定于所使用的公共存储器SDRAM的类型的。如果要使用另一种类型的公共存储器SDRAM,只要修改-即重新编程设置-控制信号发生器IF_SDRAM就足够了。原则上,存取接口的其它部件不需要作任何修改。
数据缓冲存储器IF_D的作用,就读数据而言,是从公共存储器SDRAM向如图4所示的缓冲存储器传送数据;就写数据而言,是从缓冲存储器BUF向公共存储器SDRAM传送数据。为此,数据缓冲存储器IF_D将公共存储器SDRAM提供的数据(读)或向公共存储器SDRAM的施加的数据(写)同步。此外,数据缓冲存储器IF_D构成了一个具有单位深度的FIFO。这意味着,如果一定的时钟脉冲导致从公共存储器SDRAM读取数据,该数据将在下一个时钟脉冲被传送到缓冲存储器BUF。就写操作而言,次序相反。
图8表示构成图4中所示存储器接口INT的一部分的缓冲存储器BUF的例子。缓冲存储器BUF包含读缓冲存储器BUFR及写缓冲存储器BUFW和应答信号缓冲存储器FIFO_ACK。如图1中所示,读缓冲存储器BUFR和写缓冲存储器BUFW通过存取接口SIF和公共总线BM与公共存储器SDRAM相连。读缓冲存储器BUFR分别通过专用读总线BBR1、BBR2和BBR3与单元B1、B2和B3相连。写缓冲存储器电路BUFW分别通过专用写总线BBW1、BBW2和BBW3与单元B1、B2和B3相连。应答信号缓冲存储器FIFO_ACK与仲裁器ARB相连。
缓冲存储器BUF的一般操作如下。读缓冲存储器BUFR暂时存储从公共存储器SDRAM接收的数据,而写缓冲存储器BUFW则存储从不同单元B接收的、要被写入公共存储器SDRAM的数据。应答信号缓冲存储器FIFO_ACK接收来自仲裁器ARB的应答信号,这种应答信号指出仲裁器已经将宏命令施加到存取接口INF。
应答信号缓冲存储器FIFO_ACK与图7中所示的存取接口SIF的宏命令缓冲存储器FIFO_MC有相同的深度。所以,当宏命令离开宏命令缓冲存储器FIFO_MC时,其结果是,按照宏命令启动存储器访问,对应这个宏命令的应答信号离开应答信号缓冲存储器FIFO_ACK。该信号指示有关存取操作是读访问还是写访问。在前一种情况中,读缓冲存储器BUFR被激活,以便接收来自公共存储器SDRAM的数据,而在后一种情况中,写缓冲存储器BUFW被激活,以便向公共存储器SDRAM发送数据。由应答信号缓冲存储器FIFO_ACK提供的应答信号进一步指示宏命令所定义的、存取操作中涉及的数据的数量。该指示由缓冲存储器BUF分别在读或写的情况中用于“在哪里存储数据或从哪里提取数据“的内部管理。
图9表示一例读缓冲存储器BUFR。读缓冲存储器BUFR包含一个输入缓冲存储器IB、一个接口存储器SRAM、一个包含多个输出缓冲存储器OB的装置,一个控制电路CON的装置,以及一个接口存储器存取仲裁器ARBBR。输入缓冲存储器IB通过已经在图4中表示过的存取接口SIF与公共存储器SDRAM相连。输出缓冲存储器OB1、OB2和OB3分别通过专用读总线BBR1、BBR2和BBR3与处理器P1、P2和P3相连,其中各专用读总线在图2和3中表示。控制电路CON1、CON2和CON3分别连接到宏命令寻址电路AGB1、宏命令寻址电路AGB2和宏命令寻址电路AGB3,也连接到存取接口SIF。
读缓冲存储器BUFR以如下方式操作。从公共存储器SDRAM接收的数据宽度为N位(N是整数),以频率F到达。接口存储器SRAM的宽度为2N位(这意味着一个地址可含有2N个位)并以频率F操作。输入缓冲存储器IB将来自公共存储器SDRAM的数据组成一对对的两个连续数据,然后这些数据对装入接口存储器SRAM。组成一对要花费两个时钟周期。如果假设能将从公共存储器SDRAM接收的所有连续数据组成数据对,则每两个时钟周期启动一次对接口存储器SRAM的写访问。访问一个地址只要求一个时钟周期。所以,在两个写访问操作之间有一个时钟周期可用来访问接口存储器SRAM,进行读数据,以便将从公共存储器SDRAM读取的数据传送到单元B。所以,原则上,对接口存储器SRAM的写访问和读访问可以交替地、一个接着另一个地启动。以下将更详细地说明对接口存储器SRAM的存取。
接口存储器SRAM实际上被划分成三个存储区Z1、Z2和Z3。存储区Z1、Z2和Z3分别含有要用于处理器P1、P2和P3的数据。来自公共存储器SDRAM的数据,是根据发生当前宏命令的处理器P而通过IB被写入存储区Z1、Z2或Z3的。存储区Z1、Z2和Z3中出现的数据是以基本稳定的方式和按照基本固定的方案分别被传送到输出缓冲存储器OB1、OB2和OB3的。输出缓冲存储器0B实际上将数据分离成若干部分并一部分一部分地将有关数据施加到相应的处理器P。例如,输出缓冲存储器OB可以将16位的数据分离成4位的各部分。这样,就不用在一个时钟周期传送该数据(这需要16位的总线),而是在4个时钟周期中一部分一部分地传送该数据,这只需要4位的总线。
控制电路CON1、CON2和CON3分别控制存储区Z1、Z2和Z3。为此每个控制电路CON控制一组参数。这些参数包括一个写指针、一个读指针和一个存储区占用值(occupancy value)。写指针定义来自公共存储器SDRAM的数据要被写入的地址。读指针定义要向有关输出缓冲存储器0B传送的数据的地址。占用值指示仍然可用于存储从公共存储器SDRAM接收的数据的地址的数量。控制电路CON1、CON2和CON3分别控制输出缓冲存储器OB1、OB2和OB3。为此,每个控制电路CON控制一个表示相应输出缓冲存储器OB的占用状态的参数。
现在将说明由控制电路CON进行的控制过程-假设公共存储器SDRAM是以图5所示的方式被访问的。在步骤S5中,宏命令寻址电路AGB向缓冲存储器BUF提交宏命令。该宏命令被对应于发生该宏命令的处理器P的控制电路CON处理。控制电路CON将宏命令所定义的数据的数目与占用值作比较。这样,控制电路CON查验有关存储区Z中是否有足够的空间用于存储所需的数据。如果有足够的空间,控制电路CON就将这个情况报告给宏命令寻址电路AGB,此外还更新占用参数。这意味着,它将该数据视为已经存储在有关存储区-尽管数据尚待存入。所以,可以将对占用参数的更新看作是在相关存储区中的预定。
现在将描述在图5中所示的步骤S12期间发生什么事情。步骤S12代表按照有关宏命令进行公共存储器SDRAM的读出。已经解释过,在存取接口SIF开始处理宏命令并因此启动该读出的时刻,该有关宏命令相关的应答信号离开图7中所示的应答信号缓冲存储器FIFO_ACK。该应答信号指出该访问是个写操作,此外,该信号还指明宏命令来自的处理器P。这样,与该处理器P相应的控制电路CON就知道它应当提供数据应当在公共存储器SDRAM中存储的位置的地址。此外,控制电路CON还接收关于根据该宏命令在该存取操作中涉及的数据的数量的标志,该标志构成应答信号的一部分。
来自公共存储器SDRAM的一个数据对每次被写入有关存储区Z时,控制电路CON就递增写指针。此外,它还更新占用值。控制电路CON继续这样的操作,一直到由宏命令所定义的对公共存储器SDRAM的读访问已经完成。控制电路CON借助存取操作中所涉及数据的数量(该数量由应答信号指示)和对写入接口存储器SRAM的数据的计数来检测存取操作的完成。
每从一定的存储区Z读出一个数据对后,控制该存储区的控制电路CON就递增读指针。此外,它还更新占用值。
接口存储器存取仲裁器ARBBR控制对接口存储器SRAM的存取。有不同存取类型:(1)由存取接口SIF将来自公共存储器SDRAM的数据写入接口存储器SRAM的存取,(2)由输出缓冲存储器OB1进行的存取操作,(3)由输出缓冲存储器OB2进行的存取操作,(4)由输出缓冲存储器OB3进行的存取操作。后三种存取操作的作用分别将接口存储器SRAM中含有的数据传送到处理器P1、P2和P3。
任何对接口存储器SRAM的存取,都是响应向接口存储器存取仲裁器ARBBR提交的请求而启动的。接口存储器存取仲裁器ARBBR从当前的各请求中选择具有最高优先级的请求。写访问请求(通过存取接口SIF的访问)具有最高的优先级。由于数据是成对被写的,所以-正如前文所解释的那样,这种请求一般每两个时钟周期只发生一次。写操作只需要一个时钟周期。因此在读方式中将足够的机会来访问接口存储器SRAM,以便向各种处理器P传送数据。
读访问请求是由一定的输出缓冲存储器0B视输出缓冲存储器0B与单元B之间的专用读总线的大小情况而作出的。例如假设总线的大小是N/2位。这意味着在每个时钟周期能从输出缓冲存储器0B向单元B传送N/2位的部分。接口存储器SRAM的读是按数据对进行的。一个数据对包含2N个位。因此,要向单元B发送一个数据对就需要4个时钟周期。传送一个数据对涉及以读方式访问接口存储器SRAM的请求。所以在本例中,输出缓冲存储器OB将每四个时钟周期提交一个访问请求。本例说明,与单元B相连的总线的大小,决定了各种输出缓冲存储器OB的访问请求的频率。如果专用读总线BBR是N/4位的,将每隔8个时钟周期有一个访问请求。
以下说明涉及一例对访问接口存储器SRAM的仲裁。假设专用读总线BBR1的大小是N/2位的,专用读总线BBR2和专用读总线BBR3的大小是N/4位的。存取接口SIF的存取操作具有最高优先级,按照优先级的顺序,接着依次为输出缓冲存储器OB1、OB2和OB3的存取操作。最后,假设所有类型的存取(SIF、OB1、OB2、OB3)的请求都是在第一时钟周期同时提交的。
周期1:所有请求同时被提出;等待处理的请求:存取接口SIF、输出缓冲存储器OB1、OB2和OB3。
周期2:具有最高优先级的接口存取SIF在首位,于是投入其请求;输出缓冲存储器OB1、OB2和OB3维持它们的请求;等待处理的请求:输出缓冲存储器OB1、OB2和OB3。
周期3:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF、输出缓冲存储器OB2和OB3。
周期4:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB2和OB3维持它们的请求;等待处理的请求:输出缓冲存储器OB2和OB3。
周期5:具有第三最高优先级的输出缓冲存储器OB2在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF和输出缓冲存储器OB3。
周期6:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:存取接口SIF、输出缓冲存储器OB1和OB3。
周期7:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF、输出缓冲存储器OB3。
周期8:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB3维持其请求;等待处理的请求:输出缓冲存储器OB3。
周期9:具有第四最高优先级的输出缓冲存储器OB3在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期10:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB1。
周期11:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期12:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB2用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB2。
周期13:具有第三最高优先级的输出缓冲存储器OB2在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期14:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB1。
周期15:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期16:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB3用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB3。
周期17:具有第四最高优先级的输出缓冲存储器OB3在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期18:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB1。
周期19:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期20:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB2用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB2。
周期21:具有第三最高优先级的输出缓冲存储器OB2在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期22:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB1。
周期23:具有第二最高优先级的输出缓冲存储器OB1在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期24:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB3用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB3。
周期25:具有第四最高优先级的输出缓冲存储器OB3在首位,于是投入其请求;存取接口SIF提交新请求;等待处理的请求:存取接口SIF。
周期26:具有最高优先级的存取接口SIF在首位,于是投入其请求;输出缓冲存储器OB1用光缓冲器的容量,于是再次提出请求;等待处理的请求:输出缓冲存储器OB1。
如此等等。
以上所述的存取操作具有8个时钟周期的周期性。仲裁就像是由一个有8个状态的循环机(cyclic machine)进行的一样。这是由于在本例中假设所有单元B都按一定规律处理它们的数据。
此外,还假设由存取接口SIF进行的存取请求是有规律地每隔两个时钟周期提交一次的。实际中,这些假设未必正确。由于这个原因,借助仲裁器并按优先级顺序而不是借助循环机来控制对接口存储器SRAM的访问,是可取的。仲裁器对于对接口存储器SRAM的访问有一定程度的灵活性,因此它便于更好地利用可用带宽来进行数据传送。
下面是规则的一个例外的例子,这个例外是,每两个时钟周期只有一个对接口存储器SRAM的写访问(=由存取接口SIF进行的访问)。当根据涉及奇数个数据的宏命令对公共存储器SDRAM进行存取时,这个例外发生。这种存取中所涉及的所有数据,除最后一个数据单元外,都有一个相配的数据单元并由此形成要被写入接口存储器SRAM的数据对。最后一个数据单元没有相配的数据单元。不可能用下一个数据单元来构成数据对,这是因为,下一个数据单元是另一个存取操作的第一个数据单元,因此是要用于另一个处理器P的。所以应当将另一个存取操作的第一个数据单元存储在接口存储器SRAM的另一个存储区中。这样,当涉及奇数个数据单元的访问的最后一个数据单元到达IB中时,该数据在紧接对该存取操作中所包含的最后的数据对的写操作之后的一个时钟周期中被装入接口存储器SRAM,而没有与之相配的数据单元。所以,将会有不中断一个时钟周期的连续两个写访问操作,这一个时钟周期否则会使得能在两个写访问操作之间进行一次读访问。
图5和9涉及存储器接口INT在读方式中的操作。写方式中的操作基本上是对称的。这意味着写缓冲存储器BUFW是与以上所述的读缓冲存储器BUFR类似的。所以,写缓冲存储器BUFW包含一个被划分成各存储区的接口存储器,每个存储区与不同的单元B相关联。各单元B能在指示应当在何处存储这一数据的宏命令之前或之后提供要被写入公共存储器的数据。实际上,存储区的对应单元B一提供要在公共存储器中存储的数据,该存储区就将被填入数据。这种填入例如会一直继续到存储区完全充满数据。在这种情况下,存储器接口INT将向有关单元B指出不再有任何空间用于存储新的数据。这将阻止单元B提供新的数据,直到有关存储区中开始有空间可用。从存储区Z向公共存储器的数据传送,导致腾出可用的空间。只有当宏命令被仲裁器ARB接收并被存取接口SIF,这种转储就可能立即发生。同样也可能在有关单元B提供该数据之前就发出宏命令。在任何情况下,只要写缓冲存储器BUFW不指出有关存储区的足够填充水平,就不向仲裁器ARB施加宏命令。
图10表示如“发明综述”一节中所概括的本发明的基本特点。功能系统包含一组要访问公共资源RSRC的功能部件F。系统包含一个适合实现一个访问方案AS的接口INT,特征在于要以预定方式经历若干个状态S,一个状态S构成一定长度的访问的一个可能并定义功能部件F能据以访问公共资源RSRC的优先顺序。
图1所示数据处理系统是图10中所示基本特征功能的实现的例子。图10中的公共资源RSRC在图1中采用的形式是公共存储器SDRAM。图10中的功能部件F在图1中采用的形式是数据处理单元B。图1中所示的数据处理系统的接口INT实现图6a和6b中所示的访问方案。该访问方案的特征在于图6a中所示的若干个状态ST。每个状态ST构成通过宏命令进行访问的一个可能。由宏命令定义的访问操作具有16个地址的大小(长度)。图6a中所示的每个状态ST定义了数据处理单元能根据其访问公共存储器SDRAM的优先顺序。标注符出现在表示状态ST的圆圈中的数据处理单元对该状态ST来说具有最高优先级。
接下来的例子说明了本发明如何能被应用于包含MPEG解码器的集成电路和用于处理和显示图象的其它电路中。在这种集成电路中,发生各种过程,一个过程相当于一个功能部件。下面是一例要访问SDRAM类型的公共存储器(以下称为SDRAM)的过程P:P1:DISP(显示)P2:OSD(在屏显示)P3:BCKGND(背景)P4:CCIR656P5:VMIX(视频混合器)P6:VFW(视频FIFO写)P7:VFR(视频FIFO读)P8:AUDIOFIFO(音频FIFO读和写)P9:AUDIOBUF(音频缓冲器读和写)P10:MC(运动补偿)P11:DMUP12:INTERP
过程P1(DISP)涉及被解码图象的显示。过程P2(OSD)涉及在所显示的解码图象上叠加的图像数据的显示。过程P3(BCKGND)涉及作为背景或透过解码过和处理过的图象显示的静止图象。过程P4(CCIR656)涉及已经被解码的图象能通过其被接收并在存储器中存储的集成电路的一个输入。这些图象能通过过程P1(DISP)取代来自MPEG解码器的图象并在其位置上被显示。过程P5(VMIX)涉及对过程P1(DISP)、P2(OSD)和P3(BCKGND)产生的三个数据流的混合。过程P6(VFW)、P7(VFR)和P8(AUDIOFIFO)涉及对通过解扰/信号分离电路从一个MPEG数据流提取的编码音频和视频数据的写和读。过程P9(AUDIOBUF)涉及对来自音频处理器的中间结果的读和写。过程P10(MC)涉及运动补偿,这是MPEG视频解码中的一个步骤。过程P11(DMU)涉及一种加速电路,其作用是对SDRAM中的数据进行比较复杂的操作,诸如移动一个或多个数据块或过滤操作。过程P12(INTERP)涉及MPEG解码的最后部分-提供要装入SDRAM中的解码图象,以便显示它们或用它们作为参考图象,或者既显示也用作参考图象。
图11表示用于管理上述各种过程P进行的对SDRAM的存取的仲裁器。仲裁器接收来自所有过程的访问请求并选择其中之一。被选定的请求使提交该请求的过程向SDRAM写入或从SDRAM读取32位的字。在这个对SDRAM的存取之后,仲裁器选择另一个请求。
仲裁器包含一个过程选择器MPS和一个有四个输入端1-4的固定优先级选择器FPS。过程选择器MPS接收来自过程P1-P9的存取SDRAM的请求。它从这些过程中选择一个过程P。这种选择是按照以下将更详细作说明的方案作出的。如果选定过程P提交了一个请求,该请求就被传送级到固定优先级选择器FPS的输入端1。如果没有提交过请求就不向该输入端传送请求。过程P10(MC)的请求被传送到固定优先级选择器FPS的输入端2。过程P11(DMU)的请求被传送到输入端3。过程P12(INTERP)的请求被传送到输入端4。
固定优先级选择器FPS从输入端1-4的请求中选择号码最小的输入端处的请求(如果有的话)。这样,如果过程选择器MSP所选择的过程P已经提交了一个请求,该请求就将被选择。如果没有这种请求,固定优先级选择器FPS将选择来自过程P10(MC)的请求。如果没有这种请求,它就选择过程P11(DMU)的请求。如果没有这种请求,固定优先级选择器FPS就选择过程P12(INTERP)的请求。如果固定优先级选择器FPS的输入端1-4上没有请求,过程选择器MPS就选择在其方案中出现的下一个过程。
图12表示过程选择器MPS能根据其选择过程的方案。该方案可通过状态机实现。在这种情况下,图12中的每个圆圈表示一个状态。圆圈中所示的过程P可以说具有该圆圈所表示的状态。状态构成了向SDRAM写入或从SDRAM读出32位字的一个可能。这个可能是按照以上所述的优先顺序为具有该状态的过程和为过程P1O-P12保留的。有一个圆圈中没有显示过程P,是“空”圆圈。由该圆圈表示的状态可以被称为自由状态;自由状态没有所有者。在该状态中,只为过程P1O-P12保留对SDRAM的访问权。
确实,每个圆圈或状态都定义了能访问SDRAM的过程的一个子集以及这些过程之间的优先顺序。该子集包含圆圈中所示的过程(如果有的话)和过程P11-P12。如果该子集中的一个过程提交了一个请求,访问权就被授予该过程。如果该子集中的多个过程提交了请求,访问权就被授予具有最高优先级的过程。当访问完成后,仲裁器跳转到下一个状态。如果该子集中没有过程提交过请求,仲裁器就直接跳转到下一个状态。
图12所示的方案构成了一个64个状态的圆。在这一方面,要注意的是属于过程P8(AUDIOFIFO)和F9(AUDIOBUF)的各个状态的下列特殊特征。由这些过程进行的访问操作从一个周期到另一个周期在写和读之间交替。这意味着如果过程P8或过程P9在一个给定周期已经执行了一次读访问,则该过程在下一周期将执行一次写访问,或者相反。
以上附图和它们的说明具体解释而不是限制了本发明。在后附的权利要求的范围内显然有许多另外的形式或方案。最后,就此指出几点。
本发明可以应用于任何类型的功能系统中。图1只是表示了本发明在数据处理系统中应用的一种可能。也可能将本发明应用于例如包含中央服务器和多个用户终端的通信系统中。本发明能被用来以有益的方式管理用户终端对中央服务器的访问。
各功能单位或功能可以以许多不同方式分配。对此,要注意的是,各附图是高度示意性的,每个附图只表示本发明的一个实施例。所以,尽管某附图以单独的方框的形式来表示不同的功能实体,这并不排除以一个物理实体的形式来表达若干个功能实体。
最后,在权项中的括号中给出的任何标注符不应被解释为是对该权项的限制。动词“包含”的使用,并不排除出现权项中所定义之外的部件或步骤的存在。部件或步骤前的不定冠词“a”的使用,并不排除出现若干个这些部件或步骤的存在。