本发明一般涉及信号处理器计算机系统,以及直接存储器存取控制,更具体地,它涉及在多媒体计算机系统中通常遇到的动态、硬实时、多任务信号处理要求。 在许多现有的计算机系统中,信号处理器是众所周知的部件。专用数字信号处理器(DSP)可以从许多制造厂家构得,並使用它们来进行算法的高速循环执行,这些算法是用于提供数字信号滤波、语音识别或语音合成、伺服机构控制、编码语音发生、紧致盘高保真采样声音与音乐生成、调制解调器数据调制与解调功能、传真机数据传输编码与解码功能、彩色与单色图象数据压缩与显示功能、动画电视处理功能以及多种数据协议转换或编码、误差校正或类似的功能。实际上,工业中广泛地存在着对数字模拟信号样本的高速流上的诸如付里叶变换等算法的高速重复执行的潜在的数字信号处理器应用的一系列可能性。
在转让给本申请的受让人的美国专利4,794,517中示出了一种非常优越的信号处理器体系结构;可对其进行参考以理解数字信号处理器是如何构成与使用的。然而,对于熟悉本专业者而言上述信号处理器体系结构只是在市场上可购得的许多竞争者之一这一点是显而易见的。此外,数字信号处理器的应用几乎正在以几何级数增长,尤其是在所谓多媒体计算机系统的不断增长的领域内。在这些系统中,一位用户可能同时要求执行多种功能,诸如用于传输地语音编码、动画电视、调制解调器发送与接收以及背景CD音乐放送,这里只列举了少数视听或多媒体应用。这些应用可在诸如一台IBM个人系统/2计算机或各种当前市场上出售的类似的多任务计算机系统中任何一种典型的宿主系统上运行。
在这些多媒体系统中,通常将信号处理任务卸载(经由DMA)到专用高速数字信号处理器(DSP)上。然而,如下面将清楚地了解的,随着处理器的速度与存储器容量的增加,DSP可能自己承担用户任务的执行。当然,在这样一种系统中,DMA功能本身可由DSP处理。如果只需要少量DMA存取通道,一台典型的DMA控制器可容许信号处理器与宿主处理器服务于一台或若干台硬设备。然而,当宿主处理器是一台多任务的处理器並且存在着大量的I/O设备时,只在宿主多任务处理器与其所支持的数字信号处理器之间提供少数DMA通道有可能形成一个瓶颈,在所有操作中的I/O设备及正在运行的各种任务执行的调度单位同时共享该DMA设备时,这是难以克服的。
考虑下述典型的多媒体环境;在可能具有正在使用独立的声音样本宿主存储器表与多存储器控制表及存储在存储器中的能量与音调包络处理大量高保真声音信号样本的环境中,遇到了需要在小于一毫秒的时间间隔中提供一百条以上的DMA存取的独立通道的一个系统。对于16条高保真立体声声音信号通道,每一条声音通道要求每秒传输88,200样本字节。在如此短的时间内,可以设想有100条DMA通道正在支持每秒十万块事务以上,每一块都有其自己的独特的源与目的地址及块传输大小。使用一台传统的DMA存取设备,诸如数字信号处理器这样的一个系统处理器必须平均大约每隔10微秒为一次新的数据传输中断一次来支持所要求的操作。需要若干个机器周期来支持每一次传输,而系统将很快变成不能操作的,因为除了必须用于控制DMA存取的处理器资源以外将剩不下能够执行实际信号处理任务的处理器资源。
除了典型的音频应用以外,可能还有其它的宿主任务在执行,它们也要求正在“放音”时在数字信号处理器与与宿主处理器之间进行通信,一个实例是结合正在“放音”的音频的音乐、语音或背景,一台传真调制解调器正在向或从宿主计算机的系统存储器传输图象数据。此外也可能正在运行一个语音识别任务,它要求将语音模板移动到宿主系统存储器或者从宿主系统存储器移动到信号处理器的存储器供匹配的目的,然后在语音得到识别以后将语音识别记号写回到宿主系统存储器。当一个计算机辅助显示应用可能正在运行而要求信号处理器将一个在图象屏幕缓冲存储器中得到的一个三维目标进行旋转(这需要大量的复杂计算)时,一个语音合成功能也可能正在操作並正在从系统存储器体中检索音素数据。这里所建立的论点是:在一个信号处理器所支持的一个复杂的多处理器与多任务环境中可能需要大量的有效DMA通道。
已知诸如美国专利4,831,523中所示的多DMA控制芯片器件。这些器件如外部设备控制器般操作並设计为连接一个固定数目(在当前引用的对比文件中为4)的物理外部设备到一条系统总线上。物理设备並不等于为了执行用户所要求的任务进程而要求的硬的、实时的处理信号样本的多任务进程。四个物理外部设备表示大约八条逻辑DMA通道的极限,并且在所引用的对比文件中,设备並不在任何固定的时间量中得到服务,这是因为设备以轮转方式受到服务的,並且一台设备可取得任意长的时间来完成其工作,这样便取消了其它实时设备在一个固定的时间间隔中完成其工作的能力。
在IBM技术公开公报,卷30,第7号,1987年12月公布,369与370页中示出了一种直接存储器存取通道共享机构。然而所示的机构要求能够动态地再分派的I/O设备硬件。这表现为这一机构是软件的,它将少量的硬件DMA通道动态地分派给提出请求的外部硬件设备,从而允许共享这些DMA通道。其中对于能给予任何请求的服务大小、次数或时间间隔都没有确定性的信息,也没有给出硬件设备如何作出这样一个请求的细节。所示出的系统事实上並不是实时的,即提出请求的其信号样本要被处理与发送的任务並不一定要在精确与重复的时间增量中得到服务(诸如一个以每秒88,200字节的信息传输的CD音乐重放系统),处理並将处理后的信号重新传输回来供提出请求的任务使用。
美国专利4,807,121,示出一种外围接口系统,它具有连接到多达4个多路复用单元的一个输入/输出处理器,每一个这种单元向多达4个控制器提供接口,该I/O处理器具有一条接收来自多路复用器的多路复用串行数据的DMA通道。数据是通过从I/O处理器的局部存储器以串行方式在一条DMA通道上填充缓冲器中的存储区而在I/O处理器与任一控制单元之间传输的。只设置了一条单一的通道而多路复用方案容许它得到利用。数据包是在时隙的基础上从控制器传输到多路复用器並以串行方式从多路复用器的存储器传输到存储器的。然而,並未说明这一系统对于提供上述同时运行的那种应用任务所提出的动态、硬实时要求具有任何措施。
鉴于已知先有技术中的上述难点,本发明的一个目的是提供一种高效的多媒体计算机系统与数据传输机构以支持一台宿主处理器中的硬实时多任务操作。
对上述问题的一种解决方案提供在本发明的一个较佳实施例中,它通过在一个固定的最小规定时间间隔中从宿主处理器向信号处理器提出任务请求,分析进来的任务请求,並在存储器中的一个分区队列中建立一张包传送请求表,用一个处理器间DMA控制器访问该分区队列並经由该DMA机构将必要的数据信号样本移入或移出该信号处理器(DSP)。就本实施例而言,数据传送包请求表是由数字信号处理器(DSP)以DMA控制包的形式构成的。
每一个包请求包含若干字控制信息以及数据样本的源与目的地址。一个地址是起作用的系统存储器地址,它分别包含或接收数据或处理样本。第二地址是起作用的局部DSP指令或数据存储器地址,对它写入或从它读取原始信号样本或经过处理的信号样本。包中含有的控制信息包括若干数据或指令位,它们表示要移动的数据块的大小以及流动的方向,即信息是流向DSP还是从DSP流出。DSP的操作系统所构造的DMA包表是保存在该DSP的数据存储器中並且由与该DSP的总线与宿主处理器总线接口的DMA控制器硬件顺序地存取与执行的。DMA处理器在一定的时间间隔上存取並处理包请求分区表中的一个分区的全部内容,这些时间间隔与在宿主处理器中运行的任一可能选择的用户任务的最大需求相关。例如,为了支持立体声CD放音机的音频放音的数字音乐样本处理,在每秒钟中必须在有规则的重复基础上向信号处理器发送、处理及提交给数字到模拟(D/A)转换器或宿主处理器88,200个16位样本。
在附图中进一步说明与展示的一个较佳实施例中,本发明的上述及其它目的得以实现,其中:
图1以示意方式展示了一个较佳实施例,数据的操作流是经由与必要的系统地址及宿主系统与数字信号处理器系统两者接口的处理器间DMA控制器往来于宿主处理器与数字信号处理器之间的。
图2示意性地展示经由处理器间DMA总线主与控制器的数字信号处理器系统与宿主计算机系统之间的互连。
图3示意性地展示按照本发明的处理器间DMA I/O总线主、控制器与仲裁器的可编程形式的数据流。
图4展示了数字信号处理器所建立的DMA包请求的格式与内容的某些细节以及这些请求的编码可能表示的含义。
图5示出了图5A与5B的排放,图5A与5B展示用于数据流的包缓冲器与寄存器的数据流入与流出以及在处理器间的DMA控制器与仲裁器中的控制。
图6展示了建立数字信号处理任务工作表或请求並控制它们不超出数字信号处理器的可利用信号处理资源的宿主处理器上的示意性流程。
图7示出图7A与7B的排放,图7A与7B展示处理器间EMA控制器与仲裁器中在处理建立在数字信号处理器中的DMA包请求表时的操作的示意性流程。
图8展示本发明的一个较佳实施例的一部分DMA处理器硬件。
图9示出图9A与9B的排放,图9A与9B展示DMA处理器间仲裁器与控制器所执行的DMA传送进程。
图10展示DSP中的包表构造进程的高层流程图。
很快就要参照附图对本发明的较佳实施例进行全面的描述。然而一开始首先要对所遇到的问题的大小作一说明,並进一步展示使用本发明的系统与DMA包控制器机构所提供的效率与改善。
对去往与来自一个数字信号处理器子系统(DSP)的数据流的管理有可能在DSP上加载大量的负载,如上所指出的。作为一个例子,以及考虑诸如构成许多个人计算机(PC)的核心的能普遍得到的处理器Motorola 68030(莫托罗拉68030)这样的市场上流行的计算机。一种典型的DSP可以是能够装设在处理器的平板上的Motorola 56000PC处理器。在56000与68030之间有一条DMA路径,然而DMA硬件只能减轻宿主处理器68030的负担,而无助于改进DSP56000的功能。对于必须在68030与56000之间移动的每一个字,对68030有一次短暂的中断。在该中断中,主处理器的总线被授予该DMA设备,然后它传送一个字的数据或信号样本。然而,一旦DSP得到了这一个字,它必须真正地被中断。该DSP必须停止它当时正在进行的工作,並经由一个中断处理器将该数据字传送到其存储器中。
完成这一工作估计需要10个DSP处理器周期。由于56000中的三阶段流水线大约要损失一个周期;保存少量寄存器的内容还要二至三个处理器周期,建立对DSP存储器与对模计数器变址控制的变址指针还需要若干处理器周期,最后,还需要若干外加的处理器周期来恢复DSP机器状态並返回被中断的任务。这总共需要大约10个处理器周期来向DSP或从DSP传送仅仅一个字的数据或样本。这一DSP具有上述类型並且早先在美国专利4,794,517中已述及,它也是一种三阶段流水线DSO体系结构。
本发明提供一种使用DMA包机器的改进的多媒体系统,即一种以更高效的方式提供数据传送的编程的机构。DMA传送是由DSP作出的,软件请求而不是由DMA机构启动的。作为控制器与仲载器的DMA机构在重复的时间窗口中从DSP得到有保证的服务,这些时间窗口具有根据在主处理器的多任务项目单中所支持的最大需求的任务的长度。如,726微秒的一个时间窗口可以满足支持平均以每726微秒重放的典型的88,200数字立体声音频样本以需要的32位(全字)样本。以DSP的典型操作速度,在726毫秒的时间间隔内可处理100个以上的这种32位包。这将提供多重处理宿主系统中的任务与在DSP子系统中所执行的操作之间的数据流的100个以上单一事务或通信通道的容量。
当DMA控制器读取一个由请求服务的DSP任务在执行时放置在一个分区队列中的包传送请求时,该DMA仲裁器与控制器将对宿主系统总线(例如IBM PS/2微通道或相当的主机总线)进行仲裁,並且当宿主系统将对总线的访问为DSP所放置的请求而授予该DMA控制器与仲裁器时,多达16字节(取决于缓冲器大小)的数据可以移到该DMA控制器中的一个先进先出(FIFO)寄存器缓冲器中。一旦这些字节在FIFO中,DMA仲裁器与控制器将对局部DSP数据总线进行仲裁並且一旦被授予,将传送一个16位字然后放弃总线请求。这一个字随即被传送到DSP的存储器並且该DSP处理器将停止一个总线周期。这样每传送一个字,将在DSP中耗用一个周期来处理。DMA控制器与仲裁器将继续对局部DSP总线进行仲裁直到DMA控制器中的FIFO的全部内容清空为止。然后,DMA控制器将向宿主系统总线提出新的请求要求传送另外的数据。
将要指出的是,用于对系统总线或者DSP总线两者之一进行仲裁的处理是由专用的编程硬件与诸如在DMA仲裁器与控制器中所实现进程最高效地实施的。DMA控制器的包表处理能力允许宿主系统总线与DSP总线两者的有效利用。回顾上面简单地描述的先有技术设计,可以见到,用这一设计可以实现从平均十个DSP周期中节省九个。
例如,回到上述支持立体声CD音乐所需要的立体声高保真信号处理任务,每秒钟必须放出标准的88,200个16位数字样本。这要求每秒钟从宿主系统处理器传送88,200个字的数据,该宿主系统处理器将正在读取CD盘,向DSP传送读取的样本,从DSP接收处理后的音频样本並且以每秒88,200个的速度在模拟集成声音段中重建它们。在上面提到的先有技术机器与系统中,仅这一操作就需要使用每秒88,200个字乘上每个字10个周期即每秒882,000个周期的DSP周期容量。在本发明的较佳实施例中只需要88,200个DSP周期,即大约先有技术中所使用的十分之一。
再回到使用中的一个DMA仲裁器控制器与表处理器系统的一个实例,假定一个语言识别任务与一个高保真CD音频放音任务正在同时运行。如一位用户在主处理器上所选择,並且需要一个DSP设备来支持它们。语言识别任务将需要大约两条DMA通道来操作,一条输入及一条输出,各有大约每条通道256个字的峰值率。CD音乐任务将需要一条DMA通道,它具有大约64个字的通道峰值率。每次CD音频任务运行並且在DSP中运行样本上的信号处理任务时,DSP将需要从宿主系统处理器存储器将附加的64个字的数据传送到DSP存储器。为了做到这一点,每当DSP运行时它将为一次DMA请求调用其操作服务例程。在每次调用时,它将提供要存取的下一系统处理器地址以及存储要提取的64个字的下一内部存储器地址及起始计数。每次在DSP运行语言识别任务时,它将调用两次DSP时DMA请求服务例程。每一个请求将有在宿主系统上的一个唯一的系统地址从这一地址提取信息或者向这一地址发放信息,以及一个唯一的DSP存储器地址,将样本存储在这一地址或者从这一地址提取样本。每当在DSP中运行其重复任务时,DSP将卸载两个识别样板。每个样板大约为256个字的长度。
由CD任务的一次请求与语言识别任务的两次请求所表示的三次DMA请求在它们出现时由DSP放置在一个分段的队列中。作为一个例子,语言识别任务可能已经开始並放置了其第一个请求,然后当DSP中的CD任务取得控制並放置其DMA请求时,语言识别任务被中断。CD任务请求完成之后,重新启动语言识别任务而它将放置其第二个DMA请求。如果在DSP在其中建立一个分区队列的一个726微秒的时间间隔中只放置了这样三个请求,在它们被放入队列的时间中它们将得不到DMA控制器的服务。在下一个1,378赫兹时钟(1/726微秒)的中断时,DNA控制器与仲裁器将访问与处理在前一个726微秒中放置的下一组DMA请求包。
在本例中,DMA控制器仲裁器将首先找到语言识别任务请求传送256个字的包请求。它将从包请求中装入指示的控制字以判定要传送多少个字並将装入模寻址控制界限。然后,它将读取宿主系统存储器地址及DSP存储器地址並对宿主存储器总线进行仲裁。一旦接收到宿主存储器总线的授予,该DMA控制器与处理器将从宿主系统处理器存储器向它自己的内部缓冲器爆发若干字节(在这一实施例中为16字节)的数据。然后,它将对DSP总线进行仲裁並且每次接收到一次授予时,它将按照从DMA包控制请求读取的DSP起始存储器地址将另一个字写入DSP存储器。16个字节全部写完以后,它将再一次返回对宿主系统存储器总线进行仲裁,这一进程将继续进行到所有256个字传送完为止,此后,DMA机器将读取DMA包传送请求表中的下一个包。根据这一例子,这将是CD任务包。对这一个包而言,要应用上面所描述的相同操作传送64个字。当所有64个字传送完后,DMA仲裁器与控制器将访问下一个包传送请求,这将是语言识别任务的第二个包,並在以同样方式处理它以后,它将看到没有其它的包而进入一种“等待状态”直到726微秒的时间窗口过完。如果在当前的726微秒窗口中有其它的DMA包请求通过放置在DSP所建立的分区队列中而到达,则它们将在下一个时间窗口中得到服务。
参见图1,从图1的框1开始将简要地展望这种进程的总体操作流程,在主PC上的用户通过调用或者选择在PC上执行的应用程序请求起动操作,这些应用程序一定是包含它们所支持的数字信号处理任务的。例如高保真音频放音、语言识别、调制解调器数据传送及传真数据功能、动画电视、语音合成或者来自熟悉本技术的人所公知的多媒体环境的各种各样的应用中的任何一种。
主PC通过向DSP的操作系统传输所请求的任务的标识来请求要执行的DSP任务。这发生在图1的框2中。
在框3中,DSP操作系统从任何活跃的任务请求中建立分区包表,在重复的时间间隔上在请求的分区上放置一个终点,图10示出了ESP的包表建立操作的高层进程流程。在上面描述的一个较佳实施例中,这些重复的“表终点”(E.O.L)时间间隔每726微秒出现一次。
DSP以726微秒的时钟率测定或测时一个处理器间DMA控制器,如框4所示。並为了执行可能在DSP中运行的或者来自PC的新的用户请求所请求的任何活跃的任务继续建立分区的包请求表,如框11所示。
在框5中,处理器向DMA控制器将从DSP接收起动一个726微秒时间间隔的测时时钟信号,如图所示。在框6中,处理器间DMA控制器开始从DSP所建立的DMA请求包表中的一个分区中读取包表。如框7所示,DMA控制器将为所请求的包传送对适当的系统或DSP数据或存储器总线进行仲裁,並且如框8所示将接收对适当的总线的存取的总线授予,然后在框9中向DMA缓冲器或从DMA缓冲器传送若干个包,並且如框9与框7之间的连线所示重新仲裁对系统或DSP总线的存取直到所有传送都已完成,如框10所示。
从前面关于图1的简要描述中可以清楚地看出,宿主系统(如果DSP有足够能力的话也可以是DSP,或者如果需要时可由一台辅助处理器)必须进行某些管理,从而在诸如726微秒的最小时间间隔中能够处理全部DSP任务请求,否则其它的提出请求的用户任务可能会遭受不能在硬实时中完成其要求的恶果。为了满足这一要求在这里的较佳实施例中在主处理器中实现了一种DSP资源管理与分配方案。该管理与分配功能示意性地示出在图6中,並且能够由DSP或者必要时由辅助处理器来实行,现描述如下。
资源管理与分配功能监视任何用户通过调用任务提交给DSP的总的负载。这一负载是以总的可利用的DMA字节传送带宽,包表的长度,以及每秒钟百万条指令(MIPS)表示的在DSP执行周期中所测得的可利用的DSP资源能力或速度来测定的。管理与分配功能保证在每一个726微秒的间隔中对于所有请求的DSP任务都能够利用足够的信号处理器资源,从而保证能够满足各DSP任务的实时DMA要求。
总的可利用资源是特定的系统实现的函数,即以MIPS表示的DSP的速度、DMA机构的带宽传送能力以及DSP所要建立的包传送请求表中一个分区的长度的函数。虽然这些都是根据实现而变化的,但一旦实现后它们对于给定的系统都是常量。DMA带宽是有界的,即受到主处理器的总线带宽、DSP的指令周期时间或者DMA机构的硬件带宽中较小者的限制。如上所述,包表的大小是受到可利用的DSP数据存储器的容量及DSP指令时钟速度的限制的。
为了实现资源管理与分配功能,要求在宿主系统上的各用户任务包含一个以最大DMA带宽、包表长度与所调用的任务最大程度上耗用的DSP MIPS表示的所需要的总的DSP任务资源的指示或者说明。由于DSP任务是最终用户在宿主系统上请求的,图6中的资源管理与分配功能将说明的资源要求分配给DSP中的要求的DSP任务。只要能够在系统的限制范围内满足所有的DSP任务资源要求该DSP任务便将被装入DSP中。这是由宿主系统将一个DSP任务请求放置到DSP的操作系统来完成的。如果没有足够的资源可以利用,用户放置的DSP任务请求将遭到拒绝並给出一条适当的用户错误信息。
在图6中,操作从用户在他的PC上请求一个任务开始:例如语言识别。宿主PC中的语言识别程序将被调用,並且它将包含对带宽需求的适当参数,这些参数是以每一个DMA窗口时间的最大字数、它所需要的最大DSP MIPS以及它可能调用的最大DSP存储器来表示的。如图6框1所示。可利用的最大DSP资源对于系统来说也是已知的,因为它们已经由用户输入或者由系统询问存在于DMA控制器与仲裁器中及DSP中的硬件编码的寄存器(未示出)。这示出在框2中。
在框3中,通过将所有当前活跃的与任何新请求的任务的需求相加得出所有用户任何需求的总和,即总的DMA需求。将它与框3中的最大总和DMA字传送能力与总DSP资源进行比较。如果字传送总需求超过了可利用的资源,该任务不装入(如框4所示)並返回到框5中所指示的用户选择任务。如果并不超出用户任务总的DMA需求,系统前进到框6,在那里将所有活跃的用户任务总的DSP指令执行资源的总和与最大可利用DSP MIPS进行比较,如果超过了这一最大值,新的任务将不装入如返回到框4与5所示。然而,如果並未超过总的DSP MIPS,则系统进行到框7,在那里求出所有活跃的用户任务总DSP存储器需求的总和並与最大可利用的DSP数据存储器大小进行比较。
如果並未超过这一最大值在PC主机中执行资源管理与分配的DSP工作量管理程序进程(需要时可位于DSP或一个辅助处理器中)将进行到框8,在那里通过向DSP的操作系统发出信号调用一个新的用户选择的任务的起始部分来装入该任务,然后该例程在框9结束。
如上所述,DMA数据包传送请求表是由DSP的操作系统在该DSP的存储器中以分区形式建立的。在将DSP任务请求提交给该DSP的操作系统时,它将形成支持所请求的任务执行所必需的一张DMA数据包传送请求表。包请求的格式示出在图4中。
在图4中,一个五个字的DMA包请求包括存储在控制寄存器1与2中的两个控制字,两个字的宿主系统存储器地址(低地址与高地址),以及表示若干个字要传送到或者从那里传送出的起始位置的一个字的DSP存储器地址。图4中示出了控制寄存器的特定控制字的编码。这两个控制字是由处理器间DMA仲裁器与控制器所使用的,下面将较详细地进行说明。
DSP的操作系统在存储器中建立DMA包传送请求表。编址是这样的,存储器作为DSP中的一个循环缓冲器进行操作。包请求表是一张分区表,它包含一组一个或多个单一的DMA包传送请求及一个结束“等待状态”或“表终点”标记。DSP存储器中的表的终点包含一个指针指回起点,使得该“缓冲器”能够无限止地转动。用于构成该缓冲器的可利用的DSP存储器必须大到足以在任何时刻包含至少两张完整的包请求表。这是因为当DSP的操作系统正忙于构造表的下一个分区的内容时,DMA控制器硬件将正在处理一张请求表的内容。当DSP中的活跃任务放置提取新的用于处理的信号样本或者将处理过的适当的样本传送回请求的用户任务的DMA请求时,DSP的操作系统通过一个接一个地将这些包请求添加在当前包表内容上以构造用于传送数据的DMA包请求表(如图10所示)。
在DSP中操作的一个给定的任务首先以所要求的源地址、目标地址以及任何必要的控制信息加载在内部指定的DSP寄存器中,随即以调用操作系统将这一请求添加在它当前正在其分区表中建立的表上,来请求一次DMA包传送。DSP任务可以在任何时刻提出包传送请求。这些请求可以是与DMA控制机中进行的DMA仲裁器与控制器表执行异步的。DMA控制机的包表执行是由DSP的操作系统将一个“等待包”或“表终点标记”作为标记放置在它当前正在建立的包表中的一个分区的终点而在精确的时间间隔上进行测定的。在较佳实施例中,这些标记是事先写入存储器中的队列中的,使得当DMA设备读取该队列时,它们能够出现在固定的间隔上。在精确重复的时刻,DSP向DMA控制器发信号令其向前执行下一个要处理的包传送请求表。等待包(E.O.L)将作为一种措施或标记用于在它完成了当前表的处理以后停止DMA硬件。当DSP中的任务继续提出DMA包数据传送请求时,操作系统将开始在包表中的下一个分区中填入请求。诸如Motorola 56000这样的DSP是工业中常见的,並且它们的操作系统在存储器中建立这些表的能力也是本领域的技术人员所十分了解的,因此没有必要在这里作进一步的说明。
参见图2,示出了其总体物理配置以及从诸如前面提到过的IBM PS/2或者Motorola 68030这样的典型宿主系统,通过它们各自的宿主系统数据与地址总线到诸如Intel(英特尔)82325可编程微通道/DMA控制器这样的处理器间DMA控制器与仲裁器的信息包的数据流。同时还示出了从处理器间DMA仲裁器与控制器到诸如IBM的美国专利4,794,517或者上面所提到的Motorola 56000那样的典型的DSP的接口,该专利为一个三阶段流水线DSP。数据包是在宿主系统存储器与DMA仲裁器与控制器内的一个缓冲器之间来往传送的,並且是通过DSP存储器总线在DMA控制器中的缓冲器与DSP用于数据或指令的存储器之间来往传送的。
诸如以Intel 82325芯片组形式市售的可编程处理器间DMA/IO总线主控制器与仲裁器可用于这些目的。这可称为“总线主”硬件。它执行宿主PC数据存储器与DSP指令或数据存储器之间的请求的数据包的实际传送。总线主控制器可分成两大功能部件:包表处理器及DMA传送处理器。包表处理器在一个时间间隔(例如726微秒)开始时从DSP的操作系统接收一个“开始”定速(Pacing)信号。它从上一次遇到作为分区界限或标记的一个等待包请求的地址开始从建立在DSP的存储器中的包表中读出一个分区。来自DSP存储器的DMA包请求中的控制与地址信息被处理並被传递给执行指定的DMA传送的DMA传送处理器机构。
包请求表中的控制与地址信息被处理並被传递给执行指定的DMA传送的DMA机构的传送处理器,如在任何常规的总线主驱动设备中那样。一个包请求一个包请求地继续进行处理直到再次遇到一个“等待包”。这便停止DMA总线主硬件並结束该包请求表分区的处理。
回到早先提到的用户在其PC上要求利用一个DSP运行一个语言识别功能与一个高保真CD音乐放音功能的例子。首先用户在其PC上通过鼠标器或者光标或者其他装置选择适当的图标来请求一个语言识别与高保真功能。这一选择将提出一个请求来装入适当的DSP任务。这一请求流经图6中所示的进程来首先确定有适当的DSP资源与DMA带宽的量可资利用。在实际装入这些被请求的任务之前,先调用(在这里的实施例中在宿主PC上)资源管理与分配功能以判定存在着足够的资源来满足用户调用所请求的任务时说明的DSP任务的需求。如果如图6所示存在着足够的资源,则任务将被装入並且在DSP中该功能开始操作。否则用户的宿主PC将生成一则适当的错误信息通知用户所请求的任务未被装入。
在这一讨论中假定DSP的操作系统已经起动並且在接收任何新请求的DSP功能之前,它已经在忙于在包表缓冲器中为任何早请求的功能放置DMA传送请求与标记並且每一个(分区结束)时间间隔(诸如假定的726微秒)一次起动或定时DMA控制器硬件。假定以前没有请求任务,这一例子将假定语言识别任务说明了两条DMA通道及具有每条通道256个字的峰值率的带宽的需求,并且高保真任务说明了具有64个字的峰值率的一条DMA通道带宽需求。每当CD任务在DSP中运行时,它将需要以原先从CD盘上读出的数字信号样本的形式从宿主系统处理器存储器传送外加的64个字数据。这些数据必须从宿主系统存储器传送到DSP存储器进入循环“包表”缓冲器供执行。要做到这一点,DSP将调用其操作系统服务例程来放置该DMA请求並且每次任务运行时便要进行这一操作,即每次必须处理一个64个字的样本。每次调用时,DSP将提供要写入或读取的下一宿主系统处理器存储器地址以及在其上开始64个字计数的下一个DSP缓冲器地址。
此外,每次语言识别任务在DSP中运行时,它将调用DSP的操作系统的DMA请求服务。每一个请求将具有一个唯一的系统地址以及一个用于在每次运行时从宿主系统卸载两个识别样板的唯一的DSP缓冲器地址。在大多数语言识别程序中,每个样板的长度为256个字,这样,在这些事件发生时,DSP的操作系统要将总共三个DMA请求顺序地写入DMA包请求表中。
DMA控制器与仲裁器硬件将在一个分区标记的通知以后的紧随的726微秒中对这三个DMA包传送请求进行服务。该标记是DSP所建立的DMA传送请求表段中的一个等待状态或者E.O.L。在这一下一时间间隔开始时,DSP的操作系统将一个等待状态包请求作为一个“结束标记”放置在它刚构造的包表的分区中並用一个时钟信号或测时命令起动总线主DMA硬件。
总线主DMA硬件将访问DSP存储器,找到语言识别任务的传送256个字的请求,装入包请求中出现的控制字以了解它必须传送的字数以及模寻址控制界限是什么。然后它从该DMA包传送请求中读取系统宿主(PC)处理器存储器与局部DSP存储器地址。然后它将对存取PC微通道或其它宿主总线进行仲裁,並且在授予总线存取时,将一定数目(16字节)的数据从宿主处理器的存储器传送到DMA硬件中的一个缓冲器中。然后该DMA控制器将对DSP存储器总线进行仲裁並且每一次接到一个授予时,它将根据从DMA包表请求中读出的DSP存储器地址将一个字写入DSP存储器。如上所述,这一进程一直进行到全部必要的DMA包都得到处理为止。即使在当前的726微秒的时间间隔中DSP的操作系统放置了其它的DMA包请求,它们在下一个时间间隔开始以前将得不到服务。这一进程重复地进行直到所有的DSP任务最终被用户在宿主系统上终止为止。
在这一设计中将理解,DMA包传送请求表连同DSP与DMA带宽分配与控制进程(在本实施例中是在宿主PC上执行的)保证了在对DMA处理器的基本定时间隔的两倍时间以内所有的DMA数据包传送请求得到服务与传送。这样,在一个时间间隔中在DSP操作系统在DSP存储器中建立的分区表中挂起的DMA请求将在下一个726微秒的时间间隔中(上面给出的实例中)得到DMA机器的访问与读取並且得到执行。如果样本是取自宿主PC的存储器並发送给DSP存储器的,这将在726微秒时间间隔内发生。在随后的时间间隔中,DSP将开始处理数据样本並构造用于将处理过的样本发送回宿主系统的新的DMA包请求。这些请求将被放置在现在正在由DMA控制器与仲裁器执行的DMA请求表分区的后面一个分区中。这样,在下一个紧随着的时间间隔中,“已完成的样本”将得以用于从DSP以DMA传送回宿主系统处理器,总体处理时间延迟只有两个DMA时间间隔。
只要任务所需求的总的DSP资源以及总的DMA带宽不超额,所有挂起的任务请求都将满足这一相同的操作速度。这是由在宿主系统PC中操作的分配与控制机构保证的。这意味着运行在DSP中的实时“硬”任务能够得到保证发送足够的数据或者移走处理过的数据以满足任何请求的用户任务的要求。由于要求在宿主机上运行的所有任务事先指定由包请求传送的最大字数以及在DSP上要求的最大指令处理MIPS,宿主PC中的资源分配程序将精确地知道在任何给定时刻总的DMA传送请求表将有多长,並且知道什么时候存在着超过能力的危险,从而不允许任何新任务的调用。
DMA仲裁器与控制器便是这样不停地从DSP的存储器中处理在前一个时间间隔中由任务放置在那里的DMA包传送请求的。並且,当DMA机器工作在当前DMA请求表的分区上时,新的DMA包传送请求正在放入DSP存储器中的DMA包请求队列的下一个后随分区中供该DMA机构访问並在下一个时间间隔上执行。这一设计为一个系统中的多DSP处理器的简单转移路径创造了条件。各DS DSP处理器可有其自己的作为DSP总线或宿主PC总线的总线主的DMA包传送执行硬件。此外,如果所有的DSP共享作为DMA机器的同一中断定时源时钟,则宿主系统存储器可提供一个简单的装置或缓冲器用于在DSP之间传送数据。
这样便可看到DMA包请求执行仲裁与控制器为解决宿主处理器与DSP之间或者在多个DSP与运行在所有各种处理器中的任务之间的大量通信通道或请求的处理问题提供了一种坚实的解决方案。试图只用硬件来实现100条以上的DMA通道,例如通过使用100个单一的DMA硬件设备或者25个4通道DMA硬件设备将形成一个昂贵的系统,这将几乎是不可能仲裁与控制的。DMA控制器、仲裁器与表处理器避免了在100条DMA通道之间进行仲裁的必要性,因为它们是时间多路复用的,由于在规定的时间间隔中,独立的总线仲裁、授予及数据传送串的串行方式的处理保证得到满足,它们都能在重复的时间间隔中得到满足。
如从上面的讨论中所清楚了解的,处理器间DMA I/O总线主控制器与仲裁器是诸如图2中所示的系统的关键部件。参见图3,其中示出了这一仲裁器与控制器的硬件的总体数据流与主要控制。具有完成图3中所示的所有工作的足够的硬件与软件能力的这种控制器可从市场上购得,如Intel Model 82325(英特尔型号8 82325)可编程总线主控制器与仲裁器。DMA/IO总线主控制器与仲裁器(或者简单地称作“总线主”)使用四个硬件控制器,如图3所示。它们是包控制器10、DMA处理器与控制器11、局部DSP DMA控制器与仲裁器13以及宿主系统DMA控制器与仲裁器12。
在图3中,包控制器10从DSP的数据存储器中的分区请求表中读取DSP的操作系统记入的控制字。读入一个给定的包请求的如图4所示的五个控制字之后,包控制器10起动DMA处理器11。
DMA处理器11将DMA包控制字中指示的包字节计数分割成若干数据串。取决于DMA包请求中传送位的方向所指示的传送方向,DMA处理器11反复地起动宿主系统总线主控制器12或者DSP总线主控制器13两者之一对适当的总线进行仲裁並向或者从读自DSP存储器的DMA请求包中所指出的起始地址传送适当大小的数据串。当起作用的DMA仲裁器与控制器完成了DMA传送,它向DMA处理器控制器11发信号,通知一个新的串或包或者由于一直在计数而当它通过计数请求了解到已经完成了包的要求时向包控制器10返回传送完成的确认。然后,包控制器10读入另一次DMA操作的另一组包控制字,並且该进程继续进行直到通过了该DSP的DMA包传送控制表分区並且遇到了一个“等待状态”包。
挂起的DMA包传送请求包含图4中所示的五个字的信息,其中根据内容将信息格式分割成DSP的存储器起始地址、PC的上下范围起始地址以及DMA机器的控制寄存器内容。取入图3的包控制器10的每一个五个字的DMA包请求是由包含在包控制器10中的DMA表处理器在图7所示的一个进程中执行的。
在图7中,“等待状态”是由图4中的方向控制位01与02都为零(如图4所指明的)来指示的一个DMA包来分区界限。等待状态是图3的处理器10中一个DMA表进程的执行的起点。它从框20开始经过框21、22、23、24或者向上到框25-28,如图7所示。方向控制位是在图7的框29中读入的,並且根据来自图A的指示位01与与02的内容作出一个适当的判定以进入等待状态或者从宿主系统存储器向DSP存储器传送或者从DSP存储器向宿主系统存储器传送。框30-32为指针加1控制,框33A、33B与33C将总计数与最大数255进行比较(等于256个字的最大数量)。
图5示意性地示出了图3的包控制块10中的DMA仲裁器与控制器中所包含的一些有作用的缓冲器与寄存器。在图5中,寄存器14是由所示的若干个段构成的並且它是DMA包指针。它是一个16位寄存器只能由DSP读取,並且包含指向DSP数据存储器中的DMA包请求表的指针的12个低位。该寄存器是由硬件更新的並且三个高位为零。因此三个最低位与位15並不存在並且在所给出的实现中它们是被读作零的。将要装入这一寄存器的数据存储器中的数据是作为一个字节地址存储的。寄存器19由几个部分组成並含有系统或宿主系统存储器地址。它是一个32位寄存器,不能够被DSP或宿主系统的系统处理器两者中每一个读取或写入。它含有指向将被用于包传送的宿主系统存储器或I/O空间的地址。对于宿主系统处理存储器传送,这一寄存器19的低24位是自动加1的。存储器或I/O空间的选择是由系统存储器/IO位指示的。存储在这一寄存器中的地址是一个字节地址。
寄存器18是DSP存储器地址並且是一个16位自动加1寄存器,它是不能由DSP或宿主系统PC两者中每一个读取或写入时。它包含指向将被用于包传送的DSP的数据或指令存储器的地址。模控制位用于控制这一寄存器的加1。将被装入这一寄存器的数据存储器中的数据是作为一个字或指令地址存储的,只有低15位用于形成一个指向数据存储器的地址。
图3中的DMA处理器11是由来自包控制器10的起动DMA信号起动的,如图3所示。DMA处理器11首先将从包控制器11接收的包计数转换成一个包字节计数。DMA处理器的功能是将包字节计数分割成串计数,由于在本实施例中DMA控制器机构的内部缓冲器包含两个16位字节乘8位RAM(随机存取存储器),所以串大小限制在每次32字节。如果来自控制寄存器的字节或字位指示字节方式,数据将不在数据存储器中被装配。只有数据存储器中的低位字节用于总线主操作。在这一条件下,使用正常的16位串长度。
DMA传送利用串计数(bc)进行。除了剩余的或者开始的包计数小于串长度以外,bc是等于串长度的。包字节计数是重复地被分割成串的直到用完为止。
在图8中,将初始字节计数装入累加器35。DMA处理器硬件11包含图8中所示的硬件。串长度取决于DMA传送请求中的控制信息中所包含的字节/字位的值。如果符号位为零,这说明累加器35中的值大于串长度。串长度是根据所使用的系统予先选择的,如上面所说明的。字节计数被装入系统及装入DSP的DMA字节计数器,並且DMA处理器11察看方向位。
如果图7的框29中读取的方向位指示从宿主系统存储器的一次读取,则DMA处理器11将输入数据多路复用器的控制切换到系统数据端口,如图3中框11的输出端上所示。同时还选择系统缓冲器控制並且DMA处理器11起动系统主控制器12。系统主控制器12将进行装入内部RAM缓冲器14並将操作解释为一次从宿主系统存储器读入到该缓冲器,数据写入缓冲器14之后,系统主控制器12回头向DMA处理器11确认传送完成,如图3中的信号线所示。
收到完成信号时,DMA处理器11随即将缓冲器控制切换到DSP的DMA控制器13。DMA控制器11随即起动DSP的DMA控制器13,后者接着将数据从缓冲器14传送到DSP存储器,並且在完成时,回头向DMA处理器11确认它已经完成了传送。
如果DMA处理器11检测到向系统存储器的一次写入作为传输的方向,则DMA处理器控制器11将输入数据多路复用器的控制切换到DSP DMA数据端口,並且将DSP的DMA缓冲器控制选择为DSP的DMA控制器13的缓冲器14。DMA处理器11随即起动DSP DMA控制器13,后者将操作解释为从DSP存储器到缓冲器14的一次读取。控制器13开始装入缓冲器14並在数据读入缓冲器14之后回头向处理器11确认传送完成。当它检测到DSP DMA操作已经完成,DMA处理器11将缓冲器控制切换到系统一边,起动宿主系统总线主控制器12,以及从缓冲器14将数据传送到宿主系统存储器。完成时,控制器12回头向DMA处理器11确认这一事实。
第一个串传送以后,DMA将剩余的字节计数装入图8中的累加器35。如果符号位又一次为零,则将串计数设置为等于串长度並通过DMA操作传送这一数量的数据。然而,如果符号位是一个“1”,则在累加器35中的计数小于串寄存器36中的串长度。然后,二到一多路复用器37选择累加器的内容用于最后一次DMA传送。符号位为“1”被认为是一个负数,而符号位为“0”则被认为是一个正数或零。零检测是重要的,因为它是等于零的串计数不应执行的指示。用完了包字节计数以后,DMA处理器11以一个完成确认答复图3中的包控制器10。
图3的DSP的DMA仲裁器与控制器13是上述Iutel 82325可编程DMA I/O控制器的一个部分。它使用具有图3中示出的从框14与15指向框13的输出所表示的模以及装有串计数的字节计数器内容的DSP地址计数器。包控制器10加载13中的地址计数器而DMA处理器控制器11加载字节计数器並在起动DSP DMA操作时复位内部缓冲器地址。DMA处理器11在起动DSP的DMA控制器13以前还建立DMA缓冲器数据路径与控制。每当总线主的操作涉及数据存储器时,13中的DSP的DMA字节计数计数器以一或二计数。字节计数器在字节模式中计数一,而在字模式中计数二。字节计数器在操作涉及指令存储器时计数四,如图5的框38中所见。在接到一个开始信号时,DSP DMA控制器13根据图4中所示的控制位信息方向位01,02进行从DSP读取数据並将其存储在内部缓冲器14中的操作,或者进行从缓冲器14中读取数据並将其存储在DSP中的操作,或者读取缓冲器並将其存储在DSP的指令存储器中。
宿主系统总线主控制器与仲裁器12(图3)也是Intel 82325芯片的一个部分。这一控制器负责图3中宿主PC总线与内部RAM缓冲器14之间的双向数据传送。这一控制器12使用一个8点灰度码定序器,后者在30毫微秒上计时並给出240毫微秒的串周期。该控制器包括用于对宿主系统总线进行仲裁、字节对准、数据导向、模存储器寻址的跨距与控制功能以及内部缓冲器组装逻辑等的逻辑。所谓“跨距”是指从存储器中的一个起始地址跳到下一个紧随的起始地址的地址增量而言。所谓“控制”是指从一个起始地址每次要读出的字(地址)的数目而言。所谓“越过”是指不读出的字(地址)的数目而言(即,“跨距”超过“控制”值的字数)。控制器12与包控制器10及DMA处理器11的接口如图3所示。与包控制器10的接口只是简单的控制字接口,来自图4中的控制字的控制字参数被传递给宿主总线主与仲裁器。这些参数中包括方向位、字节与字指示符、系统的高与低地址等,如图3所示。方向位通知控制器12在宿主系统存储器上执行读还是写操作。系统M/IO位通知控制器12读或写宿主PC的存储器还是其I/O空间。高与低系统地址串接在一起指定控制器12用于总线主操作的起始地址。系统地址计数器能够增量到20位,所以所有操作是在一兆字节界限上指序的。从包控制器10输入到控制器12的跨距/控制及启动位使得系统宿主地址增量器具有跳越的能力,即启动时执行模或块存储器寻址。跨距与控制值是由包控制器10传递给控制器12的字节值。“控制”值是以前面所提到的一般公式“控制加越过等于跨距”包含在“跨距”中的。
DMA处理器11起动系统总线主控制器与仲裁器12上的操作。一旦被起动,控制器12便完全控制了向它提供缓冲器地址及写启动信号並从那里接受或接收缓冲器数据的内部RAM缓冲器14。串计数及新的包计数参数是由DMA处理器11向控制器12传递的。
包控制器10的整体操作是由来自DSP的前面称作“定速”(Pacing)控制的一个信号所起动的。从图9开始,详细说明了图3的包控制器10上的操作流程。包控制器10从来自DSP的定速信号开始操作。在框40中它访问DMA包表所在的DSP的数据存储器並读取循环计数器。它在框41中从DSP得到第一个DMA包指针起始位置然后在框42中读取DSP数据存储器与循环计数器。在框43中指针被加一並且在框44中进行测试以判定是否已经到达了DSP的DMA包请求表中的包表终点。如果尚未到达终点,控制器在框45中读取方向位並且如果两位都是零,这表明已经遇到了一个“等待模式”包,它便在框46中将包指针加一四次並返回到40去等待一个新的测时信号。
如果並未遇到“等待模式”位,操作继续进行到框48读取包指针所指示的控制寄存器。在框49中指针被加一並检验高位看它们是否大于零。如果它们是大于零,则在框51不进行控制与跨距参数的装入。然而,如果位11-15为非零,则从控制字寄存器1与2将控制与跨距值装入包含在位11-15中的位的地址,如图4中详细示出的。
在框53中,将指针所指示的数据装入系统地址寄存器位08-23,然后在框54中将指针加一,並且系统地址是作为字节地址存储的在框55中,将指针所指示的任何数据装入寄存器位00-07来装入系统地址,並且在框56将指针加一,而在框57中,将指针所指示的数据装入指定的DSP地址寄存器中,然后在框58将指针加一。
在框59中,将DSP地址作为字地址存储,並且在框60中从或者向所指示的DSP地址执行传送,这是通过起动图3中的DMA处理器11进行的。操作返回到框42继续进行,读取下一个DSP数据存储器地址,等。在框44中再次将对表的终点进行检测,如果已经到达了表的终点,则遇到框47,它将包指针起始位置装入DMA指针地址,使得包控制器循环回DSP所建立的分段DMA请求的下一个分区。
从上面的说明中立刻可以理解到所描述的是一个总体计算机系统,它包括一个DMA子系统以及一组宿主到DMA及DMA到DSP子系统,它们是异常适用于诸如在一个多媒体计算机系统中所遇到的硬的实时多重任务应用的需求的。总体的多媒体计算机系统的部件包括公知的市售的部件,其中有上面已经提到过的DSP、DMA I/O仲裁器与控制器芯片以及宿主PC系统计算机。
正是系统与子系统及控制装置的配置以及子系统与独立的处理器之间的通信的配置提供了本发明的卓越优点,因此对于本领域的技术人员在不脱离操作方法或功能系统结构的精神与范围的条件下可以在它所包含的系统与子系统的硬件/软件结构中进行各种各样的变更,这一点是明显的。例如,虽然当前可利用的信号处理器的速度与存储器容量是优越的,很快就能得到具有更大存储器的更快的处理器,那时,将资源管理功能从DP重新配置到DSP上将成为现实;或者反之,DSP资源需求的管理的重新配置可以指派给与DP及DSP在同一系统中的一个辅助处理器,或者DSP可以有这样的速度与存储器容量使它不但能执行DSP任务而且能管理其本身的资源的分配並且代替DP真正地运行用户任务,所有这一切都不脱离本发明的精神与范围。还有,当DSP直接执行用户任务程序时,DMA可以完全被淘汰,所以只要DSP的操作系统能够使用管理任务表管理与分配DSP信号处理资源,就不需要一个处理器间DMA I/O控制器,正如在较佳实施例中管理DMA I/O控制器与DSP包表一样。例如,一旦得到了具有足够速度与常驻存储容量的DSP,DSP的包表请求可由DSP自己处理与操作,资源任务的初始分配也是一样。简单地说,本发明在这里仔细考虚了用户任务的性能、资源分配、数据传送表的建立、支持用户任务的信号处理任务的执行、以及一旦更高执行速度和/或更大存储器容量可以在DSP中得到时使用一个单一的DSP本身来完全代替DMA功能。因此,要求以文字专利保护的以及提出权利要求的是在下述权利要求书中用实例方式描述的而不是以限制方式描述的。