专利名称:多路并行数字数据流通道控制器体系结构的制作方法
相关申请的交叉参考本发明涉及下述申请,它们都被转让给本申请的受让人1、[相关申请的题目],由[姓名等人][我们的案号GBR],申请号,提交日_。
本发明的背景1.本发明的领域本发明总的涉及高性能外围设备数据接口,特别涉及一种适用于通用个人计算机、计算机工作站、以及嵌入式通信和网络数据路由选择和转换功能的、多线程的(muti-threaded)、总线主控的(bus-mastering)、输入/输出(I/O)通道控制器体系结构。
2.相关技术描述典型地,个人计算机和计算机工作站在面向多媒体、网络、以及通信的应用的持续发展,从根本上依赖于对大数据吞吐量的数字数据流执行计算密集的操作。典型地,需要的计算密集操作包括三维(3D)音频产生和处理;基于波表的音频合成;V.34协议的串行数据信号的产生和检测;以及模拟语音的滤波和压缩。如果用软件来实现这些操作,那么当个人计算机或工作站系统的主处理器执行这些操作时,这些操作每个每秒钟通常将消耗20到40兆个指令周期(MIPS)。另外,支持关联的、到常规外围编码器/解码器芯片(CODEC)的、大吞吐量数据流的传送,每个数字数据流将消耗额外的一到二MIPS。
然而,个人计算机和工作站系统中的传统的微处理器通常只能够维持在60 MIPS以上,而且大多数典型地为20到30 MIPS。上下文转换、存储器管理、以及外围设备的等待状态进一步约束了可以用来计算性地处理和传输数字数据流的有效的MIPS。因为,实际上,必须保留有效的主处理器MIPS,以便在执行多媒体功能的同时执行,典型地,终端用户的应用程序,所以对处理数字数据流方面的外围硬件支持的需要已被普遍认可。
对于多媒体、网络以及通信应用,在增加外围硬件支持时,需要考虑硬件和软件两者。任何被使用的外围硬件、在增加计算功能方面首先必须是价格可取的,不能因此以硬件服务的需求增加主处理器的负担。任何增加的支持负担都直接危害到通过增加外围硬件而获得的净有效MIPS增益。
同样,外围硬件的软件接口必须与主处理器所执行的操作系统有效地结合,从而能够有效地持续地使用该外围硬件。低效的软件接口导致与外围硬件通信的主处理器承担的MIPS的增加。而且,由管理外围硬件的软件接口的复杂性所造成的任何处理负担的增加,都将导致通过使用外围硬件而获得的有效的持续的处理MIPS的直接减少。
对于多媒体、网络以及通信应用,提供外围硬件支持的传统方法包括提供专用集成电路(芯片)和高度软件可编程的数字信号处理器(DSP)的各种组合,上述专用集成电路执行基本上是硬连接的(hardwired)或仅是部分地配置可编程的计算功能。低成本密封包装形式的专用功能芯片典型地只能实现有限的信号处理功能或一小组相关的功能。支持的功能典型地仅限于特定的功能范围,而且可编程性主要限于初始配置选项和有限的动态控制,如果有动态控制的话。
作为硬件外围设备,专用功能芯片典型地很少或没有对管理数字数据流的连续实时信号处理提供直接支持,更不用说对多路数据流传输的支持了。这种芯片典型地只能作为取自或压入该芯片的数字数据流的消耗者或产生者(源或宿,source or sink),而该数字数据流的取出或压入速率是由主处理器决定的有效的最大速率或某一期望速率。所以,使用专用功能芯片的外围硬件受到传统的数据流传送中断和传输速度限制,造成该中断和限制的原因有比如过度的主处理器中断、上下文转换、和各种存储器管理内核处理、以及与主处理器正在并发地执行着的其它应用程序之间对主处理器CPU周期的基本竞争。系统范围内的竞争和对多路逻辑并发直接存储器访问(DMA)数据传送的有限的系统硬件支持,也将减小专用功能芯片的持续的数据传送速率。而且,在执行数据流的初始化、传输控制以及任何要求的数据流的混合或多路复用操作中,专用功能芯片通常具有单流特性直接要求主处理器的大量参与。因此,专用功能芯片能够有效地提高个人计算机或工作站系统的多媒体和数字信号处理能力,但同时也给主处理器造成了巨大的并且通常是无限的负担。
在外围硬件系统,尤其是需要复杂和高速的信号处理计算的外围硬件系统方面,已经出现了通用数字信号处理器。传统的DSP芯片在非常适合数据流处理的计算体系结构中、能够提供50以上的MIPS。通常,这种DSP芯片比较昂贵,并且需要比较强的软件开发程序、来实现执行其预定功能所需的软件算法。然而,DSP芯片的体系结构通常并没有为控制扩展的数据传送操作或存储器管理功能而进行优化。相反,其体系结构典型地为读、处理和写与内部专用存储器、以及外部局部连接的存储器或直接连接的专用功能外围芯片有关的数据而进行了优化。因此,在将数据传送到作为外围硬件使用的DSP的存储空间的过程中,主处理器也必须大量地介入。不幸的是,这通常导致在可得到的并且可持续的主处理器的性能方面,DSP受到的限制与专用功能芯片的情况相同。
为了限制到多媒体外围硬件的数据传送过程中的中断,并以此提高可从主处理器获得的、可持续的数据传送速率,可向主处理器执行的传统的操作系统添加一种小的、抢先式实时内核,比如SPOX。该内核可作为支持多媒体外围硬件的实时中断和数据传送要求的低级设备驱动程序被实现。这种实时内核确实有助于确保到和从DSP存储空间的最大的、持续的数据传送的执行,然而,主处理器承担了相同的大量的管理该数据流传送的开销、以及附加的执行实时内核本身的开销。
因此,要想通过添加外围硬件来有效地提供更多的处理能力,目前个人计算机和工作站系统典型地使用的多媒体、网络以及通信外围硬件子系统并不十分可取。
在几个目的之间,为了向用于多媒体、网络和相关通信操作的操作系统提供好的软件接口,现已经提出并大量定义了各种基于主机的信号处理体系结构,如,本机信号处理(native signal processing,NSP)和Direct-X。基于主机的信号处理体系结构依赖于对该主处理器自身的特殊使用,来至少实现高级的信号处理功能。这种体系结构至少具有两个直接的好处。第一个好处是在最终传输到外围硬件之前,有效地处理数据流,对数据流进行混合、多路复用以及减少计算量,从而减轻与将数据传送到外围硬件有关的处理开销。这样,可稍微或显著地提高个人计算机或工作站系统的实际处理性能。
第二个好处是向操作系统提供可能全面的应用编程接口(API),因此有助于将物理的或功能的外围硬件的特定实现虚拟化。多媒体、网络和相关通信的应用程序因此能够对期望的功能有效地进行更广泛的或完全不同的支持,而不是由任何特定的外围硬件的实现来实际提供。对特定功能的直接支持不是由外围硬件的特定实例直接提供,该功能由主处理器用软件实现,主处理器作为基于主机的信号处理器,降到由外围硬件的特定实例支持的功能级。
基于主机的信号处理在执行多媒体、网络、以及通信功能方面,能够提高个人计算机或工作站系统的效率,但与此同时,由基于主机的信号处理支持的许多功能计算量仍然相当大。因此,基于主机的信号处理向主处理器施加了大量的直接的负担。而且,基于主机的信号处理确实具有显著减小到或从外围硬件的数据传输的容量的潜力,但与此同时,实际上,主处理器上的计算负担实质上并未受到影响,而且,在任何情况下,仍然相当大。
本发明概述因此,本发明的总的目的是提供一种外围I/O控制器,以支持建立于中央处理器与多个与多媒体、网络、及通信相关的外围设备之间的、高总带宽数据传送路径上的、多路并行可变带宽数据流。
本发明通过使用一种多路并行数字数据流通道控制器来实现这一目的,该通道控制器通过联接于通用处理器系统与专用处理器系统之间的外围数据通道,实时地提供多路数据流同时的需求驱动传送。该控制器包括第一总线主控接口,可联接到通用处理器系统总线;第二总线主控接口,可联接到专用处理器系统总线;可分段缓冲存储器;以及控制器,用于管理通过可分段缓冲存储器、在第一和第二总线主控接口之间的数据段的传送。该控制器响应专用处理器总线提供的多个信号,以请求从在可分段缓冲存储器中登台的有关的多个数据流传送连续数据段。该控制器缓和了通过第一总线主控接口到可分段缓冲存储器的有关的多个数据流的连续数据段的传送。
使用本发明的多路并行数字数据流通道控制器的计算机系统因此能够支持到或从辅助数据处理部件的多个I/O数据流的并发实时传送。该计算机系统可包括第一处理部件,含有第一存储器,用于存储多个数据流,该多个数据流的特征在于每个数据流都具有各自的数据传送速率;第二处理单元,用于处理多个数据流的数据段内的数据;以及通道控制器,联接于第一和第二处理单元之间,用于在第一和第二处理器之间传送多个数据流。该通道控制器根据数据流的各自数据送输速率,选择性地传送多个数据流的数据段。
因此,本发明的一个优点是,它向主处理器系统提供了一种动态分配的多通道控制接口,且允许对该通道控制器的操作进行灵活的编程和控制。
本发明的另一个优点是,它通过执行大量的自主数据传送功能和动态流的管理来最小化主处理器的运行负载。该通道控制器提供内部中断管理,以便最小化主机和DSP两者的中断支持负担,因此,通过连接主机和辅助信号处理部件的全面中断源管理的数据流通道,允许并且支持实时多路并行通道信号处理。
本发明还有一个优点是,提供了通过通道控制器的、动态缓冲尺寸和速率可控制的多路数据流的流动,最佳地使用最大的、有效的、外围I/O通道数据带宽。流的传送不依赖于流的数据类型。通道控制器的每一个数据流通道都作为逻辑上独立的通道而存在。这些通道能被串联组合,以提供通过附加的或机载的(on-board)信号处理线路以及外部外围信号处理部件的离散的数据路由选择路径。
本发明的另一个优点是,提供的自主总线主控操作不再要求传统的直接存储器访问操作,也不再要求主处理器陷入到通过I/O通道控制器的数据传送中。数据流的段的交织传送使数字数据流能有效地并发并行传送到和通过通道控制器。这大大减轻了主机应用程序上下支转换和大多数主机用户中断内核模式转换的必要性,同时对多路并发数据流提供实时传输的支持。
本发明的另一个优点是,通过确保数据在数据源和宿之间、以该流的外围设备对各数据传送通道建立的动态数据传送速率、高效地连续流动,从而提供了可变速率实时信号处理的动态支持。
本发明的另外一个优点是,对辅助信号处理部件提供可容易地扩展的支持,该辅助信号处理部件包括完全可编程的部件和其它提供部分或甚至全部硬件实现的功能的部件。
本发明的另外一个优点是,通道控制器可编程为一种复合功能的外围设备,它通过极大地扩充数据密集型外围设备子系统的独立的和协作的信号处理的功能性,有效地降低了计算机系统的开销。
附图的简要描述通过结合附图对本发明进行详细地描述,本发明的上述及其它优点和特性将会变得更加明白,在所有这些附图中,相同的标号代表相同的部分,其中
图1a是实现本发明的I/O通道控制器子系统的第一实施例的个人计算机型系统的方框图。
图1b是本发明的第二实施例的I/O通道控制器子系统的方框图。
图2是本发明的一种可替换优选实施例的基于专用功能嵌入式I/O通道的系统的方框图。
图3是与操作系统和多个外部硬件接口有关的I/O通道控制器子系统的软件体系结构关系的图解说明。
图4对于操作系统而建立的、由本发明的I/O通道控制器所支持的、高级控制和物理数据流动的图解说明。
图5a是本发明的I/O通道控制器的优选实施例的详细方框图。
图5b是本发明的总线传送控制系统的优选实施例的详细方框图。
图5c是本发明的集成外围设备接口的优选的CODEC实施例的详细方框图。
图5d是本发明的优选实施例的中断控制器集成外围设备的详细方框图。
图6是根据本发明的优选实施例构造的I/O通道控制器的FIFO池子系统的详细方框图。
图7是本发明的I/O通道控制器的优选实施例的总线传送单元控制器子系统的详细方框图;以及图8a-c是说明本发明的优选实施例的基于I/O通道控制器的系统的优选操作模式的控制流程图。
本发明的详细描述Ⅰ.I/O控制器系统体系结构图1a提供了计算机系统10的方框图,最好用来实现个人计算机的体系结构,计算机系统10联接到多功能I/O外围设备控制器硬件系统(I/O通道控制器)22。主处理器12,典型地有IntelPentiumCPU,MotorolaPowerPCCPU,等等,通过处理器总线16联接到系统主存储器14。传统的外围组件互联(peripheral component interconnect,PCI)桥(bridge)接口18在处理器总线16和夹层(mezzanine)PCI总线20之间提供高性能的数据和控制连接。多功能外围设备系统22通过传统的PCI适配器总线接线器24联接到PCI总线20。I/O通道控制器核心26集中负责管理有关PCI总线20的数据和控制信号的传送,它也被联接到适配器总线24。I/O通道控制器核心26作为实质独立的总线主控外围设备控制器,支持多路并发数据和控制信号在PCI总线20和系统22之间的传送。这些并发传送最好被作为独立的成对执行的数据流和控制线程来管理,每个流由通过I/O通道控制器26的离散的块传送组成,每块包括一个或更多的数据字节。被并发支持的流的多个数据块互相交织,以有效地建立并发流数据传输。
根据本发明,数据块的交织由控制器子系统22确定,并且,通常,不依赖于主处理器12的执行。数据块的交织由I/O通道控制器核心26执行,它反映了由传输的流数据的性质决定的各个数据流的相应的需求传输速率。因此,当流数据代表一固定数据频率的音频信号流时,该音频数据流中的数据块的交织可能不同,尽管总体上保持一固定的通过速率,该速率反映音频流编码器/解码器(CODEC)独立需求的数据流传送速率。在需求的数据速率不是一个常数时,比如使用可变速率的音频或视频压缩时,数据块的交织还根据适合于压缩的数据流的需求数据传送速率而不同。
在本发明的优选实施例中,I/O通道控制器核心26支持多个直接连接的串行总线外围设备28。这些串行总线外围设备28最好包括专用功能芯片,该芯片实现特定的高速的典型地串行定向的数据传输功能。典型的串行总线外围设备28包括一种提供高速的串行的通用同步/异步速率传送(USART)功能的专用功能芯片。另外一种可能的串行总线外围设备28可能使用专用功能芯片组,以提供基于低价格的硬件的音频子系统。
I/O通道控制器核心26最好提供高速的、通用的数据和控制总线30,以支持宽范围的数据处理和外围传输设备。可将一个或更多的数字信号处理器(DSP)32、36和关联的DSP RAM 34连接到总线30,以对间接连接的外围设备,如串行总线外围设备28、并行总线外围设备38以及主处理器12,提供高性能的计算支持。虽然依赖于DSP 32、36的具体实现,但DSP RAM 32最好存在于DSP 32、36的内部,并被映射到总线30能访问的公用地址空间中。DSP 32、36最好还对直接连接的外围设备,如串行总线外围设备40、42,提供接口控制支持。
DSP 32、36允许相互之间基本独立地和并行地执行各种不同的计算和控制功能。因此,例如,数字信号处理器32可实现一定范围的数字信号处理功能,该功能适于支持各种电信专用的串行总线外围设备40。上述的数字信号处理器32可实现信号处理算法,以执行实现高速传真调制解调器、综合业务数字网(ISDN)连接、以及无线数据收发器系统所需的协议和信号处理。直接连接到数字信号处理器32的串行总线外围设备40可适当地包括传统电话系统(POTS)接口、ISDN接口以及符合低功率FCC的RF或IR数据收发器。
第二数字信号处理器36能独立地或协作地提供音频和视频信号处理功能,包括3D音频合成、基于波表的音频信号产生和混合、语音和音乐的重现、以及语音识别。直接连接到数字信号处理器36的串行总线外围设备42可能还包括适当的CODEC和滤波器,以执行高速双向数-模信号转换。
最好,将并行总线外围设备38直接连接到总线30,以支持高速的并行功能。被支持的并行功能可包括传统的高速双向并行数据传送、高速以太网接口、以及传统的磁盘驱动器、CD-ROM驱动器等的传统的EIDE和SCSI接口。并行总线外围设备30可以还包括通过视频控制器、连接到视频显示控制器的帧缓冲器的直接或间接的接口。该并行总线外围设备的一个附加功能是提供了简单的、通过一个或多个直接连接到CODEC的串行控制线41的并行/串行联转换功能,否则该CODEC是作为直接连接的串行总线外围设备42支持的。实际上,串行连接41允许另一个DSP 32或很可能是主处理器12两者之一通过连接到总线30的连接、对CODEC进行相对直接的控制访问。
通过I/O通道控制器26的执行,在各种串行和并行总线外围设备28、38、40、42以及数字信号处理器32、36之间,对于数据传送的竞争得以最小化。由多功能外围系统22支持的最大数据吞吐量实际上最主要地受PCI总线20和系统存储器14之间的有效的数据传输带宽的限制。
对外围系统22可支持的数据吞吐量的某些更实际的限制是可从数字信号处理器32、36得到的计算性能。然而,这种限制可用几种不同的方法克服,包括增加联接到总线30的数字信号处理器的数目、以及在并行的处理器之间分配计算载荷。此外,使用更高性能的数字信号处理器将提供更大的计算吞吐量。
下面,参照图1b,示出了一种可替换的优选外围设备系统44。I/O通道控制器核心46通过进一步从流过串行总线外围设备28以及、潜在地、并行总线外围设备30的数据流的、有时间性的数据传输路径中除去数字信号处理器32,来对数字信号处理器32提供增强的支持。这样,当数字信号处理器32可能处理通过串行总线外围设备40直接耦合的数据流时,将I/O通道控制器核心46本身用于控制串行和并行总线外围设备28、38与DSP RAM34之间的所有的数据传输,可以从数字信号处理器32中去除许多、如果不是大部分的存储器管理和重复的数据传输的功能。从而,允许DSP32花更多的时间用于计算操作而不是数字信号处理器32不是最佳适合的扩展的数据传送操作。因此,数字信号处理器32用简单的存储器加载和存储器操作几乎专门处理在RAM 34和数字信号处理器32之间移动的数据。由数字信号处理器32处理的、并且存储到RAM 34中的数据的随后的传送被传输到串行和并行总线外围设备28、38,而不需要数字信号处理器32做任何大量的额外的处理。
本发明的一个嵌入式应用如图2所示。系统10'可作为智能的、独立的或遥控管理的数据流处理器。嵌入式处理器12',如Intel 80196,和主存储器14',最好由DRAM和闪存(flash)EPROM的组合构成,它们由处理器总线16′互相连接起来。I/O通道控制器核心26'支持在处理器总线16′和I/O总线30'之间的、一个或多个、潜在地交叠的数据流的传输。一个或多个DSP 32'以及任意数目的网络外围设备,如网络控制器38'、38″都最好被连接到I/O总线30'。DSP 32'能直接服务由网络控制器38'、38″产生的中断,以支持它们各自的网络数据流的传输功能。DSP可以使用I/O通道控制器,以便实际控制在I/O总线30′上的、以及、如所希望的、到主存储器14′的数据的传输。
在一个优选的嵌入式实施例中,嵌入式系统10′起高性能智能网络数据路由器的作用。嵌入式CPU 12′执行主存储器14′的闪存EPROM中提供的控制程序,以支持传统的SNMP路由器的管理功能、以及数据收集和诊断功能。DSP 32′执行来自于内部DSP存储器的控制程序,该程序或是由嵌入式CPU 12从主存储器14′下载,或是由DSP 32′内的或与之关联的闪存EPROM提供。该DSP控制程序用于在DSP存储器内建立和管理数据的路由选择和滤波树。当数据分组被网络控制器38′接收时,源和目的分组数据被传送到DSP 32′并由之进行处理,根据路由选择和滤波树决定是否和如何发送该分组。DSP 32′和嵌入式CPU 12′两者都可以如所希望的那样用于执行协议转换和执行安全协议。
Ⅱ.软件系统的体系结构在与计算机系统10的主要组件有关的数据流动方面,图3的示意图50示出了I/O通道控制器的操作。数据的输出流实际上发自连同操作系统一起被主处理器12执行的应用程序。应用程序在应用程序层52中的执行导致将数据56传送到存储器14中的主存储器存储空间54。通过作为基于主机的信号处理器的主处理器12的执行,在应用程序的管理下,该数据可被进一步处理。因此,数据流60可以在存储器空间54与主机信号处理层58之间被反复传送。主处理器12实际执行的特定的信号处理实质上是由各种设备驱动程序决定的,这些设备驱动程序共同实现了具体实现的基于主机的信号处理器API(HBSP API)的、全部的或有效的功能性。HBSP API调用最终直接或间接地被解决成对I/O通道控制器设备驱动程序的调用,从而启动一个数据传送控制线程,以便将数据流64从主存储器空间54传送到I/O通道控制器核心62,用于进一步的传输和可能的处理。在执行I/O通道控制器设备驱动程序中,主处理器12一旦在主存储器空间54中设置了定义数据流传送64的控制线程,主处理器12然后就简单地根据I/O通道控制器62的需求,来允许该控制线程的处理。此后,I/O通道控制器核心62负责该数据流传送的实际执行。
主处理器通过构造一个或多个链接的总线传送单元(bus transferunit,BTU)控制块、来在主存储器空间54中建立控制线程,从而使将主存储器空间54中提供的流数据与控制线程关联。在执行I/O通道控制器设备驱动程序中,主处理器12使用初始BTU控制块对I/O通道控制器62初始化,并对I/O通道控制器62的某个配置寄存器进行编程,以便对通过I/O通道控制器62的数据流的特定的路由选择进行配置。此后,主处理器12不再参与到I/O通道控制器核心62的数据流64的实际传送。该数据流传送在I/O通道控制器核心62的直接控制下被执行,I/O通道控制器核心62作为总线主控外围设备,与主处理器12一起、对到主存储器空间54的访问进行仲裁。因此,如有关的控制线程所定义的、到I/O控制器62的多路并行数据流传送的启动及持续的执行,是实际上相互独立地被执行的,而且可被I/O通道控制器核心62异步地启动和完成。
每个总线传送单元至少隐含地指定关联的数据流的目的地。数据流可被指向数字信号处理器68的RAM存储器空间、或指向各种直接连接的串行和并行总线外围设备28、38的特定的外部硬件接口74。在数字信号处理器68处理数据流70时,结果数据72可被传送到串行总线外围设备40、42的直接连接的外部硬件接口74。或者,结果数据可被存回到DSP RAM空间。随后,数字信号处理器可再一次将数据流72从DSP RAM传送到任一直接连接的串行总线外围设备40、42。
对于传送DSP RAM中存储的数据流69、80,定义其控制线程的总线传送单元控制块可在系统主存储器或DSP存储器14、34两者之一中被提供。最好,DSP控制线程总线传送单元控制块由主处理器12在系统存储器14中建立。DSP RAM 34存储空间的管理由主处理器12全局地执行,且因此允许DSP 32、36在使用DSP RAM 34方面相互独立地定义来操作。
定义DSP总线传送单元控制块是为了控制一个或多个数据流的传送,该数据流通过I/O通道控制器核心62,并在其控制下被传送到直接连接到I/O通道控制器62的、串行和并行总线外围设备28、38的任一外部硬件接口74。或者,I/O通道控制器核心62可被命令将处理过的数据流84回送到主存储器空间54,以便有可能被基于主机的信号处理器58进一步处理或被应用程序52使用。
数字信号处理器68和I/O通道控制器核心62从它们直接连接的外部硬件接口74接收输入数据流76、82。当数据流76直接被数字信号处理器68接收时,该数据流最好被处理并存储到DSP RAM 34中。如此被存储的数据的随后的传送由最好是系统主存储器14中提供的BTU控制块协调进行。该DSP BTU控制线程管理到I/O控制器62的数据流69的传送,以便作为流84传送到主存储器空间54、或者作为流80被重定向到外部硬件接口74。
来自直接连接到I/O通道控制器核心62的外部硬件接口74的输入数据流82,作为数据流84被重定向到主存储器空间54。或者,数据82可能作为流70被指向DSP RAM 34。在后一种情况下,该数据流典型地由数字信号处理器68处理,然后,或者作为流72被直接提供到外部硬件接口74,或者作为流69被传送到I/O通道控制器62,以便作为数据流80返回到外部硬件接口74,或作为数据流84返回到主存储器空间54。
通常,输入数据流最终被路由选择到主存储器空间54。一旦已经存在于主存储器空间54中,数据流60可被基于主机的信号处理器58进一步处理。最后,数据流86代表被完整地处理过的输入数据流,可被操作系统从主存储空间54返送回应用程序52。
因此,本发明的数据流管理系统50提供了可以灵活定义、反复交叉(iteratively traversed)的多个数据路径,从而通过基于主机的信号处理器58、I/O通道控制器62、数字信号处理器68以及经外部硬件接口74联接的外部硬件的、有序组合或子组合,高效地获得对多路有效并行数据流的最大处理。
系统50的另一个图如图4所示,图中示出了在本发明的计算机系统10内建立起来的控制和数据的流动路径。应用程序层90包括任意数量的协作执行(co-executing)的应用程序92、94。这些应用程序92、94使应用程序接口(API)的调用进入到操作系统层96中,操作系统层96包括基本操作系统98和操作扩展(extension),该操作扩展典型地包括MIDI 100、TAPI 102、以及语音API 104操作系统扩展。例如,任意数量的附加的或可替换的API、可在与用于Ring 3操作系统扩展的Direct-X API规范相一致的操作系统层96中建立。为方便起见,存储块106被表示为与操作系统98逻辑上共存于操作系统层96内。
设备驱动程序接口层108包括各种Ring 0设备驱动程序,用以支持在操作系统层96与作为外围设备层114的一部分而被提供的任一组件之间的通信和数据传送。具体地,设备驱动程序接口层108包括中断处理程序110和设备驱动程序112,从而通过主处理器12的执行,对建立于外围设备控制器层114内的I/O通道控制器116提供支持。
最后,本发明提供了控制器外围设备层118。该控制器外围设备层118大体上包括数字信号处理器120、可被DSP 120访问的存储器122、以及可能被DSP 120和I/O通道控制器116两者访问的专用功能外部硬件124。
在典型的控制流中,应用程序A 92通过传统的与操作系统层96的相互作用在存储器106内建立数据流。当至少数据流的初始部分在存储器106内部建立时,就从操作系统层96调用设备驱动程序112,以准备通过I/O通道控制器116向控制器外围设备层118中的存储器122、或外部硬件124传送数据流。设备驱动程序112在存储器106内建立一个或多个BTU控制块,以定义执行数据流传送所必需的控制线程。控制线程的初始BTU被设备驱动程序112编程到I/O通道控制器116中,并且提供一个信号,以允许I/O通道控制器116操作被编程的BTU。其后,I/O通道控制器116的操作实质上独立地完成数据流的传送,该数据流传送是由被编程到I/O通道控制器116中的BTU和存储器106内的任何其它BTU定义的,这些BTU都是定义该数据流传送的控制线程的一部分。
当数据流传送的目标是存储器122时,设备驱动程序112将首先在存储器106内建立另外一个由一个或多个BTU控制块组成的序列,以便建立适于管理DSP端数据流传送的控制线程。初始BTU被设备驱动程序112编程到I/O通道控制器116中。其次,设备驱动程序112可向数字信号处理器120发出命令,指定期望的DSP功能。最好,通过使用编程的I/O(PIO)将该命令发送到一个或多个、由I/O通道控制器核心116支持的寄存器中,并且,数字信号处理器120可响应一个表示命令消息已被发送的中断、对其进行读取。为响应发送的命令,DSP 120最好进行必要的初始化,以便执行命令的功能,然后向I/O通道控制器116提供信号136,以允许控制器根据预编程的BTU进行操作。
在得到两个允许的、且至少隐含地连接在一起的BTU之后,I/O通道控制器116启动自主的数据传送,以便直接通过126、从存储器106中检索由主机端BTU定义的数据流部分,将该数据暂时存储到内部FIFO池中,并且将数据自主地传送到存储器122内、由DSP端BTU定义的一段连续地址中。I/O通道控制器在访问存储器106中的自主操作更象一个总线主控设备,直接参加到由主处理器12的硬件总线管理控制器和PCI桥接口18支持的存储器周期仲裁中。结果,实质上,在实际上执行数据传送126中不需要使用主处理器12的执行周期。
在存储器106中形成数据流、以及在典型地执行设备驱动程序112中,都实际需要主处理器12的执行周期,以最初建立和管理定义数据流传送的控制线程的一个或多个主机端和DSP端BTU的序列。然而,主处理器12创建和管理BTU所需要的执行周期与在应用程序92、94的控制下开始处理、然后将数据流存储到存储器106中所需要的执行周期相比较是相对少的。而且,I/O通道控制器116的操作允许存储器106中的数据流的形成、与在I/O通道控制器116控制下的数据126的实际传送非严格同步。因此,主处理器12在建立和管理主机端BTU中、对设备驱动程序112的有限的执行不必与通过I/O通道控制器116的数据传送的实时需求紧密匹配。
I/O通道控制器核心116自身的自主的需求驱动操作和FIFO池缓冲功能使得在支持I/O通道控制器116中、主处理器12的执行中的非严格同步变得更加容易。在数据流传送进行时,I/O通道控制器核心116能够自主地从存储器106和存储器122两者中读取连续的BTU,虽然最好只从存储器106中读取。因此,当被一个BTU控制的数据流部分被完成时,I/O通道控制器核心116可从存储器中的控制线程中读取下一个BTU,并以新读取的BTU代替已完成的BTU。因此,只要控制线程中的连续的源和目的控制BTU被定义为提供数据流的正在进行的传送,那么指向存储器122的输出数据流就能自主地进行传送。DSP端BTU被完成、被重加载、以及被重允许的速率实际上反映了数字信号处理器120在分别执行每个命令功能中所需求的数据通过速率。
当数据流的目的地是外部硬件124时,就会出现一种更简单的操作模式。I/O通道控制器116对通过数据路径130到外部硬件124的数据传送提供有限的、但充足的缓冲。当外部硬件124需求来自I/O通道控制器116的数据时,便使用当前BTU来控制从存储器106到I/O通道控制器核心116的数据流的传输。当外部硬件124对I/O通道控制器核心116缓冲的有效数据进行抽取时,控制器116自主地操作,以从当前BTU定义的存储器106中的位置中对缓冲器重填。当由当前BTU引用的数据被外部硬件124使用时,控制线程中的下一个连续的BTU被I/O通道控制器116从存储器106中自主地载入,以维持数据流126的传送。
输入数据流以大体类似的方式被I/O通道控制器核心116处理。DSP120从直接连接的外部硬件接收的数据流可被DSP 120处理并被存储到存储器122中。每个输入数据流的接收都由主处理器12预先处理,在存储器106中形成一个或多个DSP端BTU的相应的控制线程,同时初始BTU被编程到I/O通道控制器核心116中,然后被DSP 120允许。一个或多个主机端BTU的控制线程也在存储器106中被建立,再一次,初始BTU被编程到I/O通道控制器核心116中。即使是空的,也最好将这个初始的主机端BTU设置为允许状态。
然后,一条指定将被DSP 120执行的功能的命令消息被发送到I/O通道控制器核心116内的消息存储寄存器中。最好,该消息被DSP 120确认,请求的功能被初始化,外部提供的数据流的一部分被DSP 120接收和处理,并存储到存储器122中的一个已知的地址块中。然后向I/O通道控制器核心116提供一个允许信号136,以便允许初始的DSP端BTU,并允许接收到的数据流的自主传送。当DSP端BTU指定的数据流传送被完成时,下一个DSP端BTU被加载到I/O通道控制器核心116中,并保持禁止。同时,外部提供的数据流的下一部分被接收和处理,进入到存储器122中由下一个DSP端BTU引用的另一个已知的地址块中。而且,一旦该地址块被处理过的数据填满,则响应允许信号136,当前DSP端BTU被允许。通常,存储器122中的这两个地址块被连续地交替地用于单个数据流的处理的连续的交替中。
当存储器106中的当前主机端BTU指定的地址块被处理过的输入数据流填满时,BTU便完成了,然后I/O通道控制器核心116向中断处理器110发出中断132,中断处理器110调用设备驱动程序112,从而至少用信号告知该地址块可用于主机处理。最好,在存储器106中指定另一个地址块的下一个BTU,也在允许状态下被I/O通道控制器核心116自主载入,以继续接收处理过的输入数据流。
根据合理假定,即,假定在I/O通道控制器核心116与存储器106之间的数据的传送比DSP可接收、处理数据并将其储存到存储器122中的速率快得多,则I/O通道控制器116内虽小但充足的缓冲作用就能确保数据流128的需求驱动传送而不发生数据溢出。
I/O通道控制器核心116也对直接从外部硬件124接收到的任何数据流提供数据缓冲。通常,外部硬件124响应主处理器对设备驱动程序112的执行而被允许进行操作。I/O通道控制器核心116最好向设备驱动程序112提供寄存器接口,从而允许编程的I/O通到外部硬件124的可编程寄存器。与外部硬件124的初始化同时,BTU控制线程在存储器106内建立,并且初始的BTU被编程到I/O通道控制器核心116中,并被允许控制数据的接收。数据流130以外部需求的数据传送速率,被直接缓冲到I/O通道控制器核心116中。接着,I/O通道控制器116自主地操作,在当前BTU的控制下向存储器106传送接收到的数据流。再次合理地假定I/O通道控制器核心116能以比接收到的数据流130的速率更大的速率向存储器106传送数据,虽然最好实际上大得多,则数据溢出再一次被有效防止。
Ⅲ.I/O通道控制器的体系结构根据本发明的优选实施例建立起来的、I/O通道控制器140的总的体系结构示于图5a。I/O通道控制器140最好使用三个主要的内部总线,包括总线主控程序总线142、FIFO池总线144、以及PIO总线146。总线主控程序总线142在任意数量的总线接口模块148、150与总线传送控制系统170之间提供通信通道。FIFO池总线144是一条专用总线,专门用于在总线接口模块148、150、FIFO池172、与任意数量的集成的外围设备和外围设备接口174-188之间的高速脉冲串数据传送。PIO总线146在总线接口模块148、150、总线传送控制系统170、与集成的外围设备和外围设备接口174-188之间提供通用的编程的I/O通信路径。PIO总线访问控制器151在每个总线接口模块148、150之间起PIO总线访问仲裁器的作用。
总线接口模块148、150中的每一个用于将I/O通道控制器核心140与各自的外部通信总线连接起来。主机接口模块148用于将I/O通道控制器140联接到外部PCI总线20,同时,DSP总线接口模块150类似地向连接到外部数字信号处理器32和DSP RAM 34的外围设备总线30提供接口。
主机接口模块148连接到总线20的地址、数据和控制(A/D/C)线154,并向中断线156提供外部接口,该中断线被I/O通道控制器核心140内部的中断控制器驱动。在主机接口模块148中,地址、数据和控制线154连接到主机总线受控部件158和主机总线主控部件160。主机总线受控部件158向PIO总线146提供传统的基于寄存器的编程的I/O接口,从而使主处理器12能够访问该PIO总线146。该寄存器接口还允许程序访问PIO总线146以及通过PIO总线146访问内部地联接到该PIO总线146的各部件的可编程配置和数据寄存器。主机总线受控部件158还提供了一个外部可访问的寄存器接口,该接口允许主机接口模块148的编程的控制。主机总线主控部件160自身最好包括控制逻辑,适于支持PCI总线20上的传统的总线主控访问仲裁。
DSP总线接口模块150类似地连接到DSP总线30的地址、数据和控制线。地址、数据和控制线162连接到DSP总线受控部件166和DSP总线主控部件168。DSP总线接口模块150提供用于中断线164的外部接口,该中断线164由I/O通道控制器核心140内部的一个中断控制器驱动。DSP总线受控部件166提供可编程寄存器接口,用于DSP总线主控部件168的可编程控制,以及支持在总线30和PIO总线146之间的通常的编程的I/O访问。DSP总线主控部件168还包括控制逻辑,适于允许DSP总线30上的传统的总线主控访问仲裁。
通过PIO控制器151来控制主机和DSP接口模块148、150对PIO总线146的协调访问。总线受控部件158、166中的每一个都必须仲裁,以便独占对PIO总线的访问,并通到可经由PIO总线146访问的任一接口寄存器。另外,主机总线受控部件158能够请求PIO控制器151建立PIO总线旁路。建立的旁路数据路径从主处理器12开始,通过主机总线受控部件158、PIO总线146以及DSP总线受控部件166。这样,向主处理器12提供一个数据路径,从而允许通过DSP总线30可访问的所有外围设备被主处理器12直接控制。这有助于简化对一些并行总线外围设备38的操作的控制,例如,直接设置或读取CODEC 42的控制模式。
总线传送控制系统170起中央控制系统的作用,管理在主机和DSP总线主控部件160、168、FIFO池172和连接到FIFO池总线144的集成外围设备和外围设备接口174-183之间的脉冲串数据传送。总线传送控制系统170维持一张可编程的BTU表。在本发明的优选实施例中,BTU表提供48个BTU的同时存储,每一个BTU占16个连续的存储字节。表Ⅰ提供了该优选BTU结构的描述。表Ⅰ字段字节 位地址4[31:0]传送长度2[15:0]链接描述符 2[15:0]控制字 2[15:0]状态字 2[15:0]保留4[31:0]BTU结构的地址字段定义主机和DSP总线主控部件160、168使用的存储器地址,用于在系统主存储器14与I/O通道控制器26之间的数据传送,以及I/O通道控制器46与DSP RAM 34之间的数据传送。当数据传送进行时,BTU的地址字段的值被更新,以便使该地址的值保持为正确的存储器指针。相反,传送长度的值在传送进行时减小,以便保持正确地反映由BTU所描述的剩余传送长度。在本发明的优选实施例中,主机的地址空间被作为平坦的(flat)32位地址字段来处理。用于DSP总线主控传送的地址字段可被不同地定义。如表Ⅱ所示,通过定义地址字段的一个或多个高位,可容易地执行DSP RAM 34的对称分割,以便将多个数字信号处理器32、36的DSP RAM,或其它可能在DSP RAM 34中提供或使用离散存储区的外围设备38的DSP RAM映射到I/O通道控制器核心140的公用地址空间中。表Ⅱ地址(仅DSP) 说明 位DSP DSP#1或DSP#0 31DM 数据(1)或程序(0)的存储器 30保留 保留供将来使用[29:15]地址 字节地址 [15:0]链接描述符字段允许存储一个指向当前控制线程中的下一个连续的BTU的数组指针(array pointer)。最好,将来驻留在I/O通道控制器26提供的BTU存储空间中的控制线程的连续的BTU存储到系统主存储器14内的表中,尽管也可将BTU存储到DSP RAM 34中。当BTU被存储到系统主存储器14中时,一个两字节的主机基本链接地址值被分离地存储到I/O通道控制器核心140的配置寄存器中。该主机基本链接地址,实际上就是BTU表在系统主存储器14中的基地址,将其与当前BTU链接描述符的值连接起来,以便向系统主存储器14中存储的下一个被链接的BTU提供存储器引用。相反,仅BTU链接描述符就足以提供访问存储在DSP RAM 34中的被链接的BTU所需的完整的地址说明。链接描述符字段用于当I/O通道控制器核心26中的当前BTU的传送长度减到零时,自主地加载下一个被链接的BTU。是否自主地将链接描述符字段用于加载下一个BTU取决于配置控制字寄存器中存储的控制位的值。表Ⅲ是该控制字寄存器的优选定义。表Ⅲ控制字 说明 位总线主控 从DSP/主机存储器的总线主控 15中断 BTU完成时的中断 [14:13]00 不中断01 主机中断10 DSPA中断11 DSPB中断链接定义 链接信息有效/无效(即等待) 12链接主控 链接到BTU链接表 [11:10]00 不链接01 从主机链接10 从DSPA链接11 从DSPB链接数据转换 选择传送期间的数据转换[9:8]脉冲串长度 脉冲串每次32/非16个字节 7方向 传送自/非到FIFO 6保留 保留供内部使用5FIFO号 从FIFO池选择FIFO [4:0]在控制字字段中,总线主控位定BTU是对应于主机端控制线程还是对应于DSP端控制线程。中断子字段定义当BTU传送长度减到零时,是否发送中断以及将中断最终发送给谁。中断源向量的编码以及外部中断信号的实际产生由I/O通道控制器核心140内部的中断控制器188进行控制。链接定义位指定链接描述符字段是否维持一个有效的值。链接控制子字段存储BTU链接表在系统主存储器14中的基地址位置。数据转换子字段对传送时施加到数据上的数据变换进行编码,例如字节倒序或字节/字转换。
脉冲串长度位在16和32字节脉冲串传送长度之间进行选择,同时,方向位指定了脉冲串传送的方向。FIFO号子字段用于识别FIFO池172中的特定的FIFO的数字标识符,在当前BTU的控制下,FIFO池172可被用作源或目的。
最后,如表Ⅳ所述,BTU的状态字字段定义了一些单个的位,这些位反映指定的BTU是否忙,比如正处于BTU更新操作期间,该操作由I/O通道控制器核心26自主地执行;以及反映该BTU是否对参与总线主控访问的仲裁有效且当前可用,或是允许的。表Ⅳ子字段说明位忙位 BTU正忙于传送/链接(只读)1BTU允许 允许BTU仲裁总线控制 0多级循环优先级仲裁器(circular priority arbiter,CPA)最好由总线传送控制系统170提供,以便持续地评价当前允许的BTU。通过允许直接标识那些具有自己的BTU允许位集的BTU的方式,将仲裁器联接到BTU。在已标识的允许的BTU集中,CPA逐级前进地选择和登台(stage)用于主机和DSP总线主控部件160、168中的每一个的BTU。
由CPA执行的核心算法根据存在于仲裁周期中的一组访问请求来运行,该请求进一步限于已标识的允许的BTU集。按照基本的相对优先级,将所有可能的请求者从左到右排序。本发明的CPA对允许的请求者的优先级提出了额外的限定。具体地说就是,在紧接的上一仲裁周期中获胜的请求者在当前的周期中实际上没有优先级。在当前的仲裁周期中,通过将优先权进一步减至右边,而将前一获胜的请求者右边的第一个允许的请求者,如果有的话,推到最高优先级。如果在当前周期中,在前一获胜的请求者右边不存在允许的请求者,那么就使用允许的请求者的、基本的、从左到右的相对优先级,来选择当前获胜的请求者。
用于CPA的决策矩阵(decision matrix)最好被作为一个修正的倒置的二叉树来提供。为维持状态信息、以便标识紧接着的前一仲裁周期的获胜的请求者,提供了附加的控制逻辑。还提供了标识子树的状态信息,包括前一获胜的请求者以及在子树的最低节点,前一获胜的请求者是在最低二叉节点的左边还是右边。因此,为确保在所有可能的请求者中进行充分公平的仲裁提供了有效的机制。
图5b较详细地示出了总线传送控制系统170。该总线传送控制系统170包括循环优先级仲裁器190。通过控制线194,从直接连接到总线主控程序总线142和PIO总线146的设备处接收用于访问BTU表192的各个访问请求。将总线主控程序总线142和PIO总线146两者的数据和BTU地址部分连接到BTU表192,以便允许BTU的读和写。总线主控程序总线142还连接到BTU扫描器196,该扫描器196被仲裁器190作为连续请求访问BTU表192来处理。BTU扫描器196连续扫描存储在BTU表192中的允许的BTU,以便对内部寄存器组198里的主机和DSP登台寄存器(staging register)中的BTU标识符和有关数据进行登台。表Ⅴ提供了优选的BTU寄存器阵列的定义。表Ⅴ子字段 说明 字节BTU控制 对编程限定有用的复位、单步扫描、允许2以及删除主机基本链接值 主机BTU表在主存储器中的偏移量 2主机最佳BTU 最佳BTU寄存器 2主机当前BTU 当前BTU寄存器 2主机扫描BTU 扫描BTU寄存器 2DSP最佳BTU 最佳BTU寄存器 2DSP当前BTU 当前BTU寄存器 2DSP扫描BTU 扫描BTU寄存器 2通过仲裁器190的操作对每一个到BTU表192的访问进行唯一地仲裁。每当总线主控部件160、168有空时,其每一个分离地请求访问BTU表192,以便获得BTU存储的数据,该数据将被编程到总线主控部件160、168中,以便定义总线主控脉冲串数据传送。在脉冲串数据传送之后,总线主控部件160、168还要请求访问BTU表192,以便更新当前活动的BTU。
总线受控部件158、166被允许通过PIO总线146访问BTU表192。支持这样的访问,典型地是为了允许主处理器12和DSP 32、36将初始BTU编程到BTU表192中并随后允许该BTU。当需要监视数据传送在低水平的进度、及分析其可能出现时的错误条件时,也可使用PIO总线142,来允许主处理器12对BTU的状态进行检查。
基本上所有的其他的BTU表访问周期都对BTU扫描器196有效。通过只考虑那些被允许的、且因此隐含地有效的BTU,可使扫描器196的扫描速度达到最大,同时减少了该扫描器196的整体复杂性,或使其达到最小。当每个有效的且允许的BTU被扫描时,BTU扫描器196还通过FIFO标志总线171获得支持FIFO标志状态信息,用于由正被扫描的BTU所引用的FIFO。因此,BTU扫描器196使所有到FIFO标志存储器的访问变得有用和有效。
最后,当对BTU表192中的一个BTU进行每一个更新操作时,总线传送控制器系统170都可能根据编程控制而产生中断。特定的更新操作是否会导致中断的发出,这取决于该更新操作是否发出以下信号总线主控传送错误、BTU传送完成、以及该BTU的控制字中的可编程的中断说明位正被更新。如果要产生一个中断,就要将其通过控制线200发送到I/O通道控制器核心26内部的中断控制器。
当一个BTU控制的总线控制脉冲串传送结束时,主机或DSP总线主控部件160、168可将每个BTU访问仲裁周期视为开始。相应的BTU被更新,而且,作为前一仲裁周期的产物而被选择的下一个BTU被用作数据源、对总线主控部件160、168进行编程,用于下一个总线主控脉冲串传送。对单个BTU所指定的数据传送的处理并不是一直进行到结束,而是将其按脉冲串长度的边界进行分段或分区,并与其他BTU指定的数据传送进行交织。
由于仲裁过的BTU的预登台(pre-staing),下一BTU可立即用于总线控制周期的编程。这样,当下一个BTU下台(stage down)、用于编程到主机或DSP总线主控部件160、168中时,循环优先级仲裁器在当前的总线控制脉冲串传送完成之前、对新的下一个BTU进行选择和登台。因此,I/O控制器可支持的最大的潜在数据带宽仅受在I/O通道控制器26与系统主存储器14和RAM 34之间的可支持的、潜在的总线主控传送速度的限制。
表Ⅵ描述了主机和DSP总线主控部件160、168两者所使用的总线主控编程地址和控制接口。表Ⅵ总线主控地址总线说明 位地址用于传送的起始地址 [31:0]总线主控传送控制说明 位链接链接而不传送 18传送完成传送后向FIFO发送TD 17BTU完成 传送后向FIFO发送BTUD 16FIFO字节允许FIFO字节允许(编码的) [15:14]脉冲串 传送的字节数 [13:8]数据转换(从BTU)传送期间的字节交换[7:6]方向从/非FIFO传送[5]FIFO号 FIFO池中的FIFO [4:0]为了对总线主控器160、168编程以传送数据脉冲串,向总线主控程序总线142的地址部分提供用于数据传送的存储器地址,该地址被保持在BTU的地址字段中。总线控制程序总线的传送控制总线部分将表Ⅴ中描述的控制信号传送到总线主控部件160、168。链接控制位将指定当前的总线主控脉冲串传送是用于数据,而不是用于被改变的或链接终点的BTU。传送完成和BTU完成控制信号允许将流的状态信息有效地编码为FIFO数据流。FIFO字节允许子字段提供的编码值、是在当前总线控制数据脉冲串中正被传送的一个4字节字中的数据的有序字节位置的编码值。脉冲串子字段指定作为编程的脉冲串数据传送部分的传送的字节数。数据转换子字段反映了将被施加到数据传送上的期望的数据转换。方向控制位标识脉冲串数据传送的方向。最后,FIFO号指定参与脉冲串传送的FIFO池中的FIFO。
一旦被编程,主机和DSP总线主控部件160、168就自主地运行,仲裁并执行大量的总线访问周期,以便执行编程的脉冲串数据传送。脉冲串数据传送进入I/O通道控制器26时,该脉冲串数据被临时存储在总线主控部件160、168内的FIFO中。然后,由总线主控部件160、168执行一个单独的请求确认仲裁,以获得到和通过FIFO池总线144到FIFO池172的访问。然后,来自内部FIFO的数据就被传送到FIFO池172,具体地说,是被传送到当前BTU的FIFO标识符指定的FIFO。
对于从I/O通道控制器26输出的数据,总线主控部件160、168起初对访问FIFO池172进行仲裁,并将来自BTU提供的FIFO标识符所指定的FIFO的脉冲串长度的字节数预加载到其内部的FIFO中。然后,执行自主的总线主控操作,从而将脉冲串数据从内部FIFO传送出主机或DSP总线主控部件160、168。
使用稍微不同的总线主控部件160、168的编程,以便在自主地继续、或至少准备继续主机端或DSP端的控制线程中检索被链接到下一个的BTU。一个完整的、由具有有效的且允许的链接描述符的BTU所指定的数据传送一经完成,该BTU就通过循环优先级仲裁器被循环、直到该BTU再次被选择用于控制总线主控脉冲串数据传送。作为适当的考虑,零BTU传送长度引起链接描述符通过总线主控程序总线的低位部分被传送到主机或DSP总线主控部件160、168。在将BTU存储到系统主存储器14中时,总线主控程序总线的高位地址部分被用于同时向主机总线主控部件160提供基于主机的链路描述符。RAM 34中的BTU被单独存储在链接描述符的地址范围内。在任何情况下,链接控制位被设置,以便发出信号链接终点的BTU传送脉冲串正在被编程。最好,主机和DSP总线主控部件160、168的内部FIFO具有至少等于BTU大小的深度。这样,单个的总线主控脉冲串传送可被用来从系统主存储器14或DSP RAM 34中检索期望的BTU。一旦期望的BTU被存储到总线主控器内部FIFO,主机或DSP总线主控部件160、168就请求访问总线主控程序总线142,以便将BTU传送到总线传送控制系统170。在总线主控程序总线142上通过声明请求控制信号来请求访问。由总线传送控制系统170产生的确认信号授权唯一的、对字范围内更新/链接数据总线173的访问,该字范围内更新/链接数据总线173通常随FIFO池总线144一起提供。表ⅦFIFO更新总线 说明位更新标志 表示一个更新周期1FIFO号 正被更新的FIFO号5读长度 FIFO中的数据的字节数6写长度 FIFO中的打开的字节数6读字节允许 FIFO内的读字节选择 4写字节允许 FIFO内的写字节选择 4BTU完成 BTU完成标志到标志存储器1传送完成 信号传送完成 1空间有效 FIFO内空间有效 1数据有效 FIFO内数据有效 1一个两位总线主控链接地址总线被总线传送控制系统170驱动,以便协调最好三个更新/链接数据总线访问周期,这对于将完整的BTU传送到总线传送控制系统170内的BTU表中是必要的;第四位目前保留且不被传送。有效链接起点的(linked-from)BTU被链接终点的(linked-to)BTU重写。当前BTU的BTU表中的位置被总线传送控制系统保持,以便在每一个总线控制脉冲串数据传送之后,允许对BTU进行状态更新操作。在当前BTU也是链接起点的BTU时,更新操作直接用链接终点的BTU同址重写链接起点的BTU。然后,将该链接终点的BTU循环到循环优先级仲裁器的正在进行的仲裁操作中。
Ⅳ.分布式状态和控制系统总线传送控制系统170通常用于管理通过总线主控接148、150的、与FIFO池172有关的数据的传送。然而,FIFO池172自身提供访问控制逻辑,用于集中地控制到FIFO池总线144的数据访问周期的授权。如表Ⅶ所述,FIFO池总线144最好包括32位宽数据总线、5位宽地址总线以及唯一访问请求和授权控制线,该唯一访问请求和授权控制线允许总线主控接口148、150以及集成外围设备和外围设备接174-182中的每一个单独地请求访问FIFO池总线144,和接收各自的访问确认信号。表ⅧFIFO池总线 说明位请求 用于FIFO池访问的请求线 10请求完成 用于该次传送的对FIFO池的最后的请求 10确认 用于FIFO池访问的确认线 10FIFO号 正被访问的FIFO号 5字节允许 FIFO内的字节选择 4数据进从设备到FIFO池的数据 32数据出从FIFO池到设备的数据 32方向 数据传送方向 1BTU完成 BTU完成标志到标志存储器1数据有效 在FIFO中数据是有效的 1FIFO更新总线(表Ⅵ)与FIFO池总线相关且通常时其的一部分。FIFO更新总线最好包括五位FIFO状态总线,用于将FIFO池172内的一个FIFO的FIFO标识符广播到至少所有联接到FIFO池总线144的集成外围设备和外围设备接174-183。每当在FIFO池172中,将数据加入对应的FIFO、或从对应的FIFO取出时,就通过更新总线广播一个FIFO标识符。通过有效地广播FIFO池172内的FIFO的状态更改的通知,FIFO池隐含地简化了在FIFO池172中执行循环优先级仲裁器的必要的操作,以及各集成外围设备和外围设备接174-183的每个中需要的相应的控制逻辑。
向分布式控制逻辑提供连接到FIFO池总线144的各集成外围设备和外围设备接口174-183。各集成外围设备和外围设备接口174-183最好都能够用一个或多个FIFO标识符编程,该标识符对应于FIFO池172中的支持其各自功能所需要的FIFO的号。每个FIFO支持一个单向数据流,所以,对于全双工通信需要FIFO对。各集成外围设备和外围设备接174-182中的分布式逻辑、监视在FIFO状态总线上广播的FIFO标识符,以便用其预编程的标识符寻找匹配。当发现一个标识符匹配时,集成外围设备和外围设备接口174-183就可以在FIFO池总线144上的数据传送周期发送一个控制信号请求。FIFO池172随后发送唯一的确认信号,以授权对FIFO池总线的访问。因此,FIFO池172的循环优先级仲裁器只需考虑来自集成外围设备和外围设备接口174-183的访问请求,以便能够执行实际的数据传送。而且,因为可能有任意数量和类型的集成外围设备和外围设备接174-183的组合,所以,FIFO池172的循环优先级仲裁器被有效地隔离出来,不必考虑由集成外围设备和外围设备接174-183中任何特定的一个所请求的数据传送周期的特殊方面。有可能影响请求一个FIFO池总线144上的存储器访问周期的合理性的、特殊的操作、由各集成外围设备和外围设备接口174-182内部管理,以适应其特殊的功能。因此,访问决定和仲裁控制逻辑的大部分都有效地被分配到I/O控制器140的各个部分。即使任何集成外围设备或外围设备接口174-183的类型、数量或功能在I/O通道控制器核心140的不同特定实现之间改变,与FIFO池172的循环优先级仲裁器有关的控制逻辑也不必进行根本的或甚至重大的修改。
Ⅴ.集成外围设备和接口集成外围设备和外围设备接口174-188的每一个都最好提供了一个基于寄存器的接口,该接口通过PIO总线146连接到I/O通道控制器核心140的剩余部分。因此,经由主机和DSP总线受控部件158、166,主处理器12和数字信号处理器32、36可以访问上述寄存器接口的每一个。由集成外围设备和外围设备接口174-188的每一个实例所提供的、到PIO总线的寄存器接口可能从简单到非常复杂。通常,以下情况需要寄存器接口为了允许对外围设备174-188的期望的操作进行编程;为了允许对外围设备174-188进行复位;为了根据可能产生的中断和中断将被发送到的外部处理器、以及外围设备174-183还连接到FIFO池总线144上的位置、由特定的外围设备174-188可支持的每一个并发数据流的FIFO标识符的存储,来指定条件。
另外,集成外围设备和外围设备接口174-183中的每一个都包括数据登台FIFO,用于暂时存储正被传送到或从FIFO池总线144的数据。最好,考虑到预期的被集成外围设备或外围设备接口174-183支持的数据通过率,以及在FIFO池172和特定的集成外围设备或外围设备接口174-183之间、在最坏情况下的总线数据传送等待时间,上述内部FIFO必须足够深,以防止数据欠流(under-run)或溢出(over-run)。在通过集成外围设备或外围设备接口的预期的数据传送速率十分低时,内部FIFO可以被简单地实现为单个缓冲寄存器。然而,外围设备的内部FIFO通常有二到四个字节深。
优选的MIDI接口外围设备接口174提供了相对简单的到PIO总线146的寄存器接口。MIDI接口外围设备174提供的优选的控制寄存器包括发送控制寄存器和接收控制寄存器。该寄存器接口的详细说明见表Ⅸ。表ⅨMIDI发送控制寄存器说明位保留 未用或测试值[31:7]发送允许 允许MIDI发送 6复位 复位MIDI发送端口 5FIFO号 FIFO池的FIFO [4:0]MIDI接收控制寄存器 说明 位保留 未用或测试值 [31:10]中断选择 00没有中断产生 [9:8]01中断主机CPU10中断DSP 111中断DSP 2接收允许 允许MIDI接收器 7复位 复位MIDI发送端口 6FIFO号 FIFO池的FIFO [5:0]发送控制寄存器包括五位FIFO ID字段、复位位、以及发送允许位。接收控制寄存器最好包括五位FIFO ID字段、复位位、接收允许位、以及两位中断字段,该中断字段对下列两个内容进行编码是否要产生中断以响应与通过外部接口或MIDI接口外围设备174的数据字节或字的接收相符合的错误条件;以及,如果产生中断,其中断的预定目的。中断最好由上述外围设备174仅根据错误条件产生。逻辑连接的直接传送端口被优选地用于产生数据发送/接收中断,该中断用于控制通过MIDI接口外围设备174的数据的流动。
CODEC外围设备接口176的寄存器接口可能比MIDI接口174的寄存器接口复杂得多。在将传统的外部CODEC连接到CODEC接176上时,该寄存器接口需要提供对该外部CODEC自身的控制和数据寄存器的访问。另一方面,CODEC外围设备接口176自身可实现传统CODEC的部分或全部功能,因此,将连接到CODEC外围设备接176的需求的外部组件限定到相对最小的模拟组件。在上述后面的实例中,CODEC接口176就成为一个直接向PIO总线146提供CODEC控制寄存器的完全集成的外围设备。在上述的任一实例中,CODEC接176包括必要的控制逻辑,以便允许该CODEC接176对FIFO池总线144上的访问进行仲裁,以及根据被编程到CODEC接176的一个寄存器中的FIFO标识符对FIFO池172的一个FIFO的状态的变化进行监视。
图5c示出了CODEC接口176用于支持外部COEDC,如Analog Devices(模拟器件公司)1843 CODEC,时的优选实现。基本的CODEC接口数据路径和控制逻辑180对多路的、本质双向的、在FIFO池172中被潜在地分配的各对FIFO与CODEC接口176内部的FIFO对之间、通过FIFO池总线144的数据部分传送的数据流提供支持。最好,通过四个内部FIFO 210-212,可以缓冲多达四路输出数据流。数据多路复用器216用于根据在外部CODEC中建立的控制模式,从FIFO 210-214中选择8或16位数据。该字节或字数据流在寄存器接口和I/O控制部件220的控制下通过时钟控制的锁存器和并串转化器218被传送。时钟和控制信号由寄存器接口和I/O控制部件220通过时钟和控制线222提供。寄存器接口和I/O控制部件220通过在线224上交换时钟和控制信号来与外部CODEC配合传送数据。这样,经过寄存器接口和I/O控制部件220的操作,在串行数据输出线226上向外部CODEC提供串行数据。
CODEC模式命令和命令的相关数据也在串行数据输出线226上提供给外部CODEC。模式命令和数据最好通过PIO总线146提供给寄存器接口和I/O控制部件220。而命令模式处理信号通过线224发出,该模式命令和数据就经由线214,通过多路复用器216和锁存器218被发送。
来自外部CODEC的串行数据在线226上被时钟控制的串并转化器和锁存器230接收。根据外部CODEC的当前命令模式,经多路分解器232,并通过线234将状态信息和相关数据提供给寄存器接口和I/O控制部件220。在寄存器接口和I/O控制部件220的控制下,将其它字节或字宽数据从多路分解器232选择性地提供给四个内部FIFO 236-238中的任何一个。
寄存器接口和I/O控制部件220还提供请求和确认控制逻辑,以便支持通过FIFO池总线144的数据传送。寄存器接口和I/O控制部件220最好提供了用于多达八个FIFO标识符的寄存器存储。每个FIFO标识符允许将一个特定的内部FIFO与FIFO池172中的任何一个FIFO关联。寄存器接口和I/O控制部件220连续监视PIO总线144的FIFO更新部分,以便确定被标识的FIFO的状态在何时改变。寄存器接口和I/O控制部件220典型地为其FIFO标识符与更新总线上广播的FIFO标识符相匹配的内部FIFO发送FIFO池访问请求。
FIFO标识符寄存器和其它CODEC接口控制寄存器都可典型地被主处理器12通过PIO总线146访问。提供给PIO总线146的优选的CODEC寄存器接口见表Ⅹ。表ⅩCODEC寄存器 说明 位主控控制 DAC/ADC控制 [15]音频命令 到音频CODEC的命令[14:9]音频数据 到音频CODEC的模式设置数据[8:3]电话命令 到电话CODEC的命令2电话状态 到电话CODEC的模式设置数据1状态命令 只读CODEC状态位 8状态数据 只读模式设置数据FIFO号0FIFO允许位和池号 8… … 8FIFO号7FIFO允许位和池号 8时钟 时钟计数器控制 16主机屏蔽 主机中断屏蔽值 12DSP屏蔽DSP中断屏蔽值12中断控制 传送完成、欠流/溢出位12主控控制 说明 位CODEC复位 复位所有的CODEC相关逻辑 [15]DAC模式设置DACO、1的运行模式[14:9]ADC模式设置ADCO、1的运行模式[8:3]音频允许 音频CODEC复位2电话允许 电话CODEC复位1CODEC标识符外部CODEC的类型 0中断控制 说明 位传送完成FIFO 0 传送完成中断位 1传送完成FIFO 3 传送完成中断位 1欠流FIFO 0欠流中断位(DAC1)1欠流FIFO 3欠流中断位(DAC4)1溢出FIFO 4溢出中断位(ADC5)1溢出FIFO 7溢出中断位(ADC8)1通过数字操纵杆接口178,可支持操纵杆外围设备和潜在地关联的控制台。外围操纵杆典型地提供与该操纵杆的物理位置成比例的电阻。数字操纵杆接178最好提供了定时器和电容器,它们与操纵杆外围设备提供的电阻组合,从而允许该数字操纵杆接口自主地重复产生代表操纵杆位置的数字值。主处理器12因而减轻了负担,不必设置和作为定时器来确定操纵杆的位置。最好,数字操纵杆接174能够被编程,以便每当确定的数字值改变时,向主处理器12或DSP 32、36发出中断信号。甚至在没有产生中断时,也能使用数字操纵杆接178提供的寄存器接口通过PIO总线146连续地访问该数字值。
依赖于任何关联的控制台的配置和数据要求,如可能被开发为支持各种游戏和控制应用,数据流可能通过FIFO池172和数字操纵杆接口178传送。在数据流传送速率普遍地低且等待时间是一个关键问题时,最好使用逻辑连接的立即传送端口,以便在数据被传送到数字操纵杆接178或从数字操纵杆接178传送数据时,产生到主处理器12或到DSP 32、36中之一的中断。在等待时间不是关键问题或在要求的数据速率比较高时,可使用通过FIFO池172的全总线主控数据传送。
通用接口端180代表另一种类型的集成外围设备或外围设备接口。在优选实施例中,接口端口180可实现一个高速的、非常宽的并行端口,适于与视频控制器或直接与视频帧缓冲器接口。来自FIFO池总线144的连续的双字宽的数据传送可被缓冲为64位、128位或更高的字,它们被并行地传送到视频控制器或帧缓冲器。在这种情况下,一个或更多的视频字可在接口端180中被寄存器缓冲,从而允许最佳地匹配到控制器或帧缓冲器的字传送的定时。
接口端口180还可被用于高速读取视频控制器或帧缓冲器。可用连续的并行的读取操作将一个、不过最好是两个或更多的帧字从视频控制器或帧缓冲器中读到宽缓冲寄存器中,而且,可将其作为一个与FIFO池总线144有关的内部FIFO进行配置。然后可将帧字的双字宽部分传送到并通过FIFO池172。
对于典型地低带宽、对等待时间敏感的数据流,提供了立即传送端口集成外围设备182,以便通过FIFO池172建立高速、低等待时间的连接。立即传送端口集成外围设备182最好提供六个独立的传送端口。每个传送端口可用能够通过PIO总线146访问的控制寄存器和数据寄存器来代表。该控制寄存器的定义在表Ⅺ中提供。表Ⅺ立即传送端口控制寄存器 说明 位空间/数据有效 空间/数据有效时置位 15允许传送端口允许标志 14复位复位传送端口 13数据宽度8或16数据传送 9方向与FIFO有关的传送 8中断选择00没有中断产生 [7:6]01中断主机CPU10中断DSP 111中断DSP 2FIFO号 池FIFO的号[4:0]立即传送端口数据寄存器 说明 位高位字节字数据的高位字节 [15:8]低位字节数据的低位字节或仅有的字节[7:0]立即传送端口的控制寄存器允许使用FIFO标识符、中断目标、数据传送方向、数据字节或字的宽度、复位位、允许位、以及空间或数据有效位对该端口进行编程。
立即传送端口的典型操作是监视PIO总线146的更新总线部分,以发现被标识的FIFO的任何状态的改变,并根据被编程的中断选择位、立即向主处理器12或DSP 32、36发出中断。使用2个立即传送端口和FIFO池172中的一个单个FIFO可在两个处理器之间建立一条数据流传送路径。该立即传送端口中的一个最好被编程为每当被标识的FIFO中空间有效时,发出主机中断。第二个立即传送端口被编程为每当在相同的被标识的FIFO中数据有效时,发出DSP中断。主处理器12用于通过主机总线受控部件158和PIO总线146将数据传送到与主处理器12关联的立即传送端口的I/O数据寄存器,以便启动该数据流传送和随后响应主机中断。立即传送端口将收到的数据放入FIFO池172的被标识的FIFO中。
为响应FIFO池172在FIFO状态总线上广播的FIFO标识,第二立即传送端口发出一个DSP中断。作为响应,DSP 32、36访问该立即传送端口的I/O数据寄存器。从FIFO池172中的FIFO读取数据,并传送到DSP 32、36,以便对其进行处理并典型地写入RAM 34。
立即传送端口可配合总线主控接口148、150以及其它访问FIFO池172的集成外围设备和外围设备接口174-183,以各种形式组合使用。例如,通过MIDI接口外围设备174输出的数据流可被主处理器12传送到FIFO池172的一个FIFO中。当通过更新总线广播的FIFO状态改变时,MIDI接口外围设备174向FIFO池仲裁器发出一个访问FIFO池172的请求。一旦访问被授权,源自FIFO池172的数据就被传送到MIDI接口外围设备174的内部FIFO,并立即输出。
当数据从FIFO池172中的被标识的FIFO中移出时,另一已被编程用于响应同一个被标识的FIFO的更新的立即传送端口最好不产生主机中断。在这种情况下,主处理器12确定用于将MIDI数据写到该被标识的FIFO中的定时。当主处理器12决定写MIDI数据时,通过登台穿过与主机关联的立即传送端口的数据寄存器的数据,将新数据写入被标识的FIFO中。在以最大的MIDI数据速率输出数据时,主处理器12能够将数据的多个字节或字写入FIFO池的FIFO中。此后,主处理器12可根据该主处理器确定的时间表继续输出MIDI数据。因此,能够维持从主存储器14到MIDI接口外围设备174的数据传送的低的且实质上固定的等待周期。
通过MIDI接口外围设备174输入的数据需要与时间戳(time stamp)数据一同被存储到系统主存储器14或RAM 34中。该时间戳数据需要被MIDI接口外围设备174按取自实际接收时间的最小的和规则的等待时间施加给输入数据。因此,最好将一个立即传送端口与FIFO池172中的MIDI输入数据FIFO关联,并对该立即传送端口编程,以便在被标识的FIFO中数据变成有效时,向主机12或DSP 32发送中断。
DSP加速器集成外围设备183也可作为I/O通道控制器140的一部分被提供。在通常的形式中,DSP加速器183最好提供通过PIO总线146可访问的寄存器接口,从而提供与来自FIFO池172的一个或多个输入FIFO的连接,以及与一个或多个输出FIFO的连接,以便通过FIFO池总线144将数据返回到FIFO池172。DSP加速器183内部可提供专用硬件、微控制器、或两者都有,以便根据可编程控制寄存器的配置,执行任意数量的计算密集型的数据处理的操作,例如数字信号滤波、混合以及调制。因此,可连接到DSP加速器183的FIFO池172的FIFO数取决于DSP加速器183可能实现的特定的功能。
消息端口集成外围设备184为传送连接到I/O通道控制器140的、主机和DSP处理器之间的、小数量的数据提供一个简单的数据路径。在本发明的优选实施例中,在消息端口集成外围设备184中提供了三个消息端口,每个都被特定的主处理器12或DSP 32、36专门用于源。每个源专用信息端口被描述为两个可从PIO总线146访问的16位寄存器。表Ⅻ描述了该消息端口集以及每个消息端口的控制和数据寄存器。表Ⅻ消息端口 说明端口0 主机消息发送端口端口1 DSP 1消息发送端口端口2 DSP 2消息发送端口端口#的消息端口控制寄存器 说明位复位 复位传送端口 15中断选择 00没有中断产生 [14:13]01中断主机CPU10中断DSP 1
11中断DSP 2访问指针 消息中的字偏移指针[7:0]端口#的消息端口数据寄存器 描述 位数据 读/写数据寄存器 [15:0]在消息端口内保持的一个八个字(8×16位)深的消息FIFO中,访问指针字段用作一个可自动增量的指针。为了发送一个消息,源处理器对访问指针字段清零,将多达八个的数据字写到消息端口的数据寄存器中,然后对中断编程,以指定该消息的目的处理器。一旦将中断选择字段设置到非0状态,中断就被实际发送。
为了响应消息中断,读取消息,目的处理器可读取相应的访问指针字段,以标识该消息的长度,将访问指针字段设置为零,以便从起点读取消息,然后从消息端口的数据寄存器读取访问指针指定数目的数据字。一旦读取了消息数据,就将中断选择子字段简单地复位为零。另一方面,可将该子字段重置(reset)为指定该消息源处理器的值,并以零长度消息作为消息接收的确认。在设置中断选择子字段以指定源处理器之前,也可将确认信号或回复消息写入消息FIFO。因为每个消息端口都唯一地关联一个源处理器,所以,在任何情况下,目的处理器都能够通过识别用于发送消息的特定的消息端口来唯一地确定源处理器。
定时器集成外围设备186被提供用于支持通用和特殊功能的基于时间的操作。在本发明的优选实施例中,定时器外围设备186向PIO总线146提供了三个双字寄存器,如表ⅩⅢ所述。表ⅩⅢ定时器源寄存器说明 位定时器复位 复位所有的定时器31计数值 设置源时钟的基本频率[30:16]递减计数 递减计数寄存器 [15:0]定时器0寄存器说明位允许 定时器允许 31模式 多次(multi shot)/单次19(single shot)模式清除中断 清除中断定时器状态 18中断选择 00没有中断产生 [17:16]01中断主机CPU10中断DSP 111中断DSP 2定时值 定时器递减计数值 [15:0]主机等待时间定时器说明 位定时值 定时器递减计数值 [15:0]这些控制寄存器的第一个寄存器提供了一个15位的自由运行计数器(free running counter),用作其它定时器功能的可编程的时基。定时器源寄存器最好包括15位的递减计数字段,该字段按施加到I/O控制器140的系统时钟周期,每周期做一次计数操作。15位计数值字段存储了一个静态的基本时钟计数值,用于每当递减计数子字段到达零值的时候,对该递减计数子字段做一次重新初始化。提供一个单独的位,用于对整个定时器外围设备186的复位控制。
提供通用定时器零寄存器,用于当受定时器基本时钟驱动的16位递减计数定时器每次到时间时,产生一个中断。定时器零寄存器包括随定时器基本时钟的每一个完整周期递减的16位定时值。一个两位的子字段被提供,用于指定当定时器零值到时间时要被中断的处理器。还提供了中断清除和定时器允许位。最后,提供了模式控制位,用于指定定时器零是用作多次定时器、还是用作单次定时器。在多次模式中,一个定时值的到时间、产生一个中断、然后该定时器被重新加载。只有当前一个中断被清除后,才能发出第二个中断。在单次模式中,一旦中断产生,定时器就完全停止。
提供了专门的主机中断等待定时器。该定时器是受定时器基本时钟驱动的递增计数的定时器。随着确定有一个到主处理器12的中断,一个16位的定时值就从0开始增加。当主机中断等待定时器寄存器的定时值子字段被读取时,该主机中断等待定寸器停止计时,且定时值被清零。这个专门的定时器允许I/O控制器核心140支持主处理器12对主机中断服务子程序的有效执行做典型分析,以响应由I/O通道控制器140产生的中断。
最后,中断控制器集成外围设备188被提供,用以支持在典型的操作期间由I/O通道控制器140产生的许多不同的中断源的管理。为了有效利用主机和DSP处理器可以得到的中断输入,I/O控制器140最好向每个处理器发送一个单一的向量中断。如图5d所示,该优选实施例中的中断寄存器242在线156′上产生主机中断,在线164′上产生第一DSP中断,在线165′上产生第二DSP中断。从I/O控制器140内的各个中断源、或从组中断寄存器246、250处接收输入244到中断寄存器246中。组中断可通过PIO总线从中断寄存器242读取。表ⅩⅣ提供了组中断的优选定义。表ⅩⅣ组中断寄存器 说明位定时器屏蔽 允许中断源 12立即传送端口屏蔽 允许中断源 11消息屏蔽 允许中断源 01外围设备屏蔽 允许中断源 9BTU屏蔽 允许中断源 8定时器中断 组中断活动位4立即传送端口中断 组中断活动位3消息端口中断 组中断活动位2外围设备中断 组中断活动位1BTU中断 组中断活动位0最好,中断寄存器242允许组中断中的每一个被屏蔽。当中断组被使用中断屏蔽允许、以产生一个中断时,具体的中断目标156′、164′、165′的选择取决于随组中断信号244一起提供的中断目标信息。因此,各个中断源确定特定的中断目标,虽然中断通过中断寄存器242组合在一起。
当大量的中断可由I/O通道控制器140的一个组件,比如,总线传输控制系统170产生时,或者当许多相关组件可被方便地组合在一起时,中断请求线248、252能够被指向第二级组寄存器246、250。在本发明的优选实施例中,多个集成外围设备和外围设备接口174-186被路由选择通过外围设备组中断寄存器246,以向中断寄存器242提供单个组中断。内部外围设备,如MIDI接口174,以及外部外围设备、如那些在DSP总线30上提供的,其每个都可以作为外围设备组中断的源。表ⅩⅤ提供了可通过PIO总线146访问的组屏蔽和中断状态寄存器的优选的定义。表ⅩⅤ组中断寄存器说明 位中断7屏蔽 允许中断源715中断1屏蔽 允许中断源19MIDI屏蔽 允许MIDI中断源 8外部中断7 外部中断7活动位7外部中断1 外部中断1活动位1MIDI中断 外围设备中断活动位 0组中断寄存器250最好提供一个立即端口索引字段,以反映每个立即传输端口中断的中断状态。一个单个的位标志用来标记当前可读的索引是有效的还是无效的。该立即传输端口寄存器(表ⅩⅥ)可通过PIO总线146访问。表ⅩⅥITP中断寄存器 说明位ITP索引无效有效/无效标志;写使无效 7ITP索引ITP阵列中的ITP索引 [2:0]最后,BTU组中断寄存器254提供了一个控制寄存器(表ⅩⅦ),该控制寄存器包括一个BTU索引字段,用于标识作为中断信号256的源的特定的BTU。表ⅩⅦBTU中断寄存器说明 位BTU索引无效 有效/无效标志;写使无效7传送完成 BTU传送完成 6BTU索引BTU表中的BTU索引[5:0]一个独立的传送完成位被提供,用以标志中断是否正在发出信号通知数据流传送的完成。最后,一个单个的控制位被提供,用以指定当读取时BTU索引字段是否有效。
因此,中断控制器集成外围设备188提供了一个简洁的寄存器系统240,用于快速中断多个不同的处理器的任意一个,以响应大量的各个内部中断中的任意一个。每当处理器被中断时,至多需要两个通过PIO总线146的寄存器读操作,以唯一地确定中断源。
Ⅵ.多线程弹性缓冲器FIFO池FIFO池172的详细的示意图260及FIFO池172与一些FIFO访问请求设备2620-262n之间的控制关系示于图6中。FIFO访问请求设备2620-262n最好包括总线主控接口148、150、以及集成外围设备和外围设备接口174-183。设备2620-n中的每一个都连续地监视FIFO更新总线173,以便发现任一被分配到特定的设备2620-n的FIFO的状态的变化。详细地,每个设备2620-n为得到正在被更新的FIFO号而监视更新总线,并确定在被更新的FIFO中是否有足够的空间或数据可用来支持通过FIFO池总线144的、在设备2620-n与FIFO池寄存器284之间的数据传送。
为响应分配到特定设备2620-n的FIFO中的限定状态改变的广播,设备2620-n通过FIFO池总线144向FIFO仲裁器264提供访问请求控制信号。在每个仲裁周期中,FIFO仲裁器264有效地只把正在请求访问FIFO池284的那些设备2620-n看作唯一地由一组未决(pending)请求控制信号表示。FIFO仲裁器264的当前仲裁周期中的下一个设备被选择,以便能访问FIFO池284。唯一的确认信号由FIFO仲裁器264返回到被选择的设备2620-n。作为响应,设备2620-n通过FIFO池总线144提供控制信号,该控制信号至少包括由设备2620-n所保持的FIFO标识符,以便选择FIFO标志存储器286内的一个数据存储行及一个FIFO控制存储器;FIFO控制存储器包括FIFO读/写指针存储阵列272、274。
标志存储器286和指针阵列288、272、274最好被作为RAM寄存器阵列提供,具有与由FIFO池284支持的FIFO数目相等的深度。在本发明的优选实施例中,FIFO池提供24个16字节深的FIFO的存储。表ⅩⅧ列出了FIFO标志存储器286每一行的标志位的定义。表ⅩⅧFIFO标志说明 位传送完成标志传送已完成 12BTU完成 标志当前BTU已完成11FIFO长度FIFO长度大于16字节 10读长度 FIFO中数据字节的数目 [9:4]读字节允许 FIFO中读字节选择 [3:2]写字节允许 FIFO中写字节选择 [1:0]来自FIFO池总线144的、在线276上提供的FIFO号被用作一个地址,以便在FIFO标志存储器286中选择唯一的阵列行,用于更新存储在被选择的阵列行中的控制数据。该FIFO号被进一步用于在FIFO读和写指针阵列272、274中选择相应的阵列行,以便能够使用标识的FIFO的读或写指针。最后,线276上的FIFO号被提供到I/O多路复用器282,以便能够在FIFO池存储器284中的被标识的FIFO与FIFO池总线144之间进行数据传送。
组合的读和写指针阵列272、274的字段定义在表ⅩⅨ中提供出。表ⅩⅨFIFO R/W指针描述位/s读指针当前FIFO读地址[15:9]写指针当前FIFO写地址[8:2]FIFO长度 分配的FIFO长度[1:0]长度字段定义了FIFO的长度。在本发明的优选实施例中FIFO长度值“00”代表16字节的FIFO深度。值“01”指定32字节的FIFO深度,值“10”指定64字节的FIFO深度。读和写指针用于提供6位FIFO字节的偏移量到当前被选择的FIFO中。每个读写指针的高位,具体地说,16字节FIFO的第5位、32字节FIFO的第6位、以及64字节FIFO的第7位,被用于指示当通过FIFO索引时是否存在FIFO回绕状态(wrap-around condition)。
为了简化FIFO池284中的FIFO的分配与管理,使FIFO标志存储器286中的每个阵列行及读和写指针阵列272、274与在FIFO池284中定义的FIFORAM块对应。最好,每个FIFO RAM块是16字节边界对齐的、位于FIFO池284内的FIFO RAM的16字节序列。因此,FIFO标志存储器286与读和写指针阵列272、274的最大的共同的(mutual)深度定义了在FIFO池284内能够并发支持的FIFO的最大个数。当读和写指针阵列272、274的长度字段定义了32或64字节长度的FIFO时,在FIFO池284中使用两个或4个相连的FIFO RAM块。因此,每个32字节FIFO或64字节FIFO的说明必定抢先独立占用一个或三个附加的阵列行。
FIFO指针逻辑部件266与包括读和写指针阵列272、274的FIFO控制存储器共同操作,以便实现一个状态机,FIFO仲裁器164根据设备2620-n的选择、通过线268上的允许信号来允许该状态机参加对FIFO池284的访问。被选择的设备2620-n在线276上提供其FIFO号,以便选择相应的FIFO读和写指针,活动字节允许、以及其它控制信息、如数据传送方向,就通过FIFO池总线144到FIFO指针逻辑部件266。数据传送方向控制信号确定FIFO读或写指针阵列的值是否被提供到I/O多路复用器282。字节允许定义了在FIFO池284与FIFO池总线144之间执行的数据传送的宽度和对齐(alignment),因此,允许任意的、正在相互访问FIFO池284中的公用FIFO的、设备2620-n的数据流传送宽度之间互相独立。
当由被选择的设备2620-n通过FIFO池总线144决定的、通过I/O多路复用器282的每个读或写周期完成时,FIFO指针逻辑部件266就对FIFO控制存储器272、274中的相应的读或写指针阵列的值进行更新。FIFO指针逻辑部件266还对FIFO标志存储器286中的相应的FIFO标志行进行更新。特别是,FIFO指针逻辑部件266对保留在被访问的FIFO中的数据的字节数以及象传送完成和BTU完成这样的限定性标志进行更新。
一旦数据的一个或多个字节已被传送,根据被或从选择的设备2620-n的内部FIFO可立即接收的字节数、以及在FIFO池284的相应的FIFO中可用的字节数,由被选择的设备2620-n撤消该FIFO访问请求。然后开始一个新的仲裁周期,并且,FIFO池仲裁器264通常为FIFO池284的访问选择下一个设备2620-n。
设备2620-n通过FIFO池总线144向FIFO指针逻辑部件266发送一个传送完成信号,以便用信号通知终止,该终止可由设备2620-n中的任意一个发出或接收。每当当前BTU完成时,总线主控设备148、150也发送一个BTU完成信号。在这两种情况下,FIFO指针逻辑部件266处理有可能是部分的FIFO数据传送,该数据传送目前可能保留在参与设备2620-n的相应的内部FIFO中、或FIFO池284的相应的FIFO中。
典型地,基于主处理器12的初始化、以及其后的FIFO标志存储器286和FIFO控制存储器272、274的状态检测,可通过FIFO指针逻辑部件266、在FIFO池仲裁器264的配合下被有效地执行。最好,一组可编程寄存器通过控制、FIFO索引、和数据线290被提供到PIO总线146,以便允许PIO总线146读或写与一个池的FIFO关联的当前FIFO标志。经由FIFO指针逻辑部件的FIFO标志阵列的寄存器表示见表ⅩⅩ。表ⅩⅩFIFO标志 说明位/sFIFO标志0FIFO 0的FIFO标志16FIFO标志1FIFO 1的FIFO标志16…… …FIFO标志23 FIFO 23的FIFO标志 16有效地通过FIFO指针逻辑部件266的FIFO控制存储器272、274的寄存器表示见表ⅩⅪ。表ⅩⅪFIFO指针说明 位/sFIFO控制寄存器0FIFO 0的FIFO R/W指针16FIFO控制寄存器1FIFO 1的FIFO R/W指针16… ……FIFO控制寄存器23 FIFO 23的FIFO R/W指针 16虽然主处理器12和数字信号处理器32、36都可以读和写FIFO标志和控制存储器286、272、274,但是,最好只由主处理器12来专门管理在FIFO池284中被定义的FIFO的初始化,包括创建和取消。将主处理器12定义为用于FIFO池284中的FIFO的、专门的分配管理器,这样就不需要在主机和DSP的对FIFO标志存储器286及FIFO读和写指针阵列272、274的访问之间进行互锁。代替地,消息端口184可用于在主处理器12和DSP 32、36之间传送短消息,以便请求和确认任何特定的FIFO的建立及FIFO标识符,该特定的FIFO是在FIFO池284内、随主处理器12或DSP 32、36的有效请求而新建立起来的。
由读和写指针阵列272、274的可编程性提供的一个附加特性是在需要的时候可改变FIFO池284中的FIFO的长度,以确保避免数据的溢出和欠流。仅仅通过重新编程FIFO控制存储器272、274保持的长度字段,就可将FIFO池284中的64字节和32字节的FIFO缩减到最小,即16字节的长度。因此,可以在FIFO池284中,在FIFO存储块或缩减的FIFO不再使用的块中分配新的16字节和可能的32字节的FIFO。相反,FIFO的长度也可以动态地从16字节增大到64字节,只要满足以下限定条件基本的FIFO RAM块在FIFO池284内被正确地对齐;相邻的FIFO RAM块没被使用;以及FIFO最好是空的,以简化FIFO的管理。
Ⅶ.总线传送单元扫描控制逻辑总线传送控制系统170的详细示意图见图7。总线传输控制系统170用于管理三个实质上独立的高优先级的处理过程,每个处理过程都要求访问BTU表192。BTU仲裁器190作为主要的控制器,用于接收访问请求,以及从访问BTU表的三个处理过程中选择其一。这三个处理过程包括PCI接口事务处理,DSP接口事务处理,以及总线受控设备事务处理。
PCI接口160向BTU仲裁器190产生访问和更新请求。访问请求表示PCI接口160可以进行编程来执行主机总线主控数据传送操作。当主机总线主控传送完成时,PCI接口160请求更新访问,以对BTU表192中的相应的BTU进行更新。类似地,DSP接口168向BTU仲裁器190发送访问和更新请求,以请求从BTU表192中的一个BTU编程,随后,当DSP总线主控数据传送完成时便更新该BTU。最后,总线受控部件158、166的每一个都可请求对BTU表192的访问,以便编程一个新的BTU或检查当前BTU的内容。
BTU仲裁器190执行一个固定优先级的选择机制,其中PIO总线请求具有最高优先级,其次是主机和DSP总线主控接口,最后是BTU扫描器。BTU扫描器依次地确保所有BTU总体上公平地访问BTU表192。通过PIO控制器151的操作,主机和DSP总线受控部件158、166提供一个共享的访问请求,并通过PIO总线146中的控制线从BTU仲裁器190接收一个共享的允许响应。PIO控制器决定总线接口模块148、150,它们被允许响应来自BTU仲裁器190的允许响应信号。当允许PIO信号通过控制线292被提供到主机或DSP总线受控部件158、166时,BTU索引值通过PIO总线146和地址线294被传送到地址多路复用器296。同时,BTU仲裁器190通过控制线298提供一个选择信号,来选择PIO提供的索引,并将其作为在BTU表192中选择条目的地址。主机或DSP总线受控部件158、166而后便能读或写BTU表192中的相应的BTU。
每当PCI总线主控接口160和DSP总线主控接口168双方都空闲时,它们都向BTU仲裁器190产生访问请求。BTU仲裁器190对PCI或DSP访问请求的授权另外还决定于、用于总线主控接口160、168之一的BTU定义的传送的有效的或允许的BTU的标识,这由BTU扫描器196确定。把BTU扫描器196与FIFO标志阵列270连接起来的控制线171,向标志阵列270提供阵列索引,并返回存储在相应阵列行中的FIFO标志的至少一个子集。最好,FIFO标志阵列270采用双端口存储器实现,因此,在设备2620-n访问的同时、允许BTU扫描器196连续地、基本上独立地扫描FIFO标志阵列270。FIFO标志阵列270的双端口存储器的实现规定了访问互锁,每当扫描器企图读一个标志阵列行,而该标志阵列行正处于被标志管理器280更新的过程中时,访问互锁可暂时停止BTU扫描器196的动作。通常,扫描器停止不常发生并且是短暂的。
BTU扫描器196对BTU表192执行一个限定的顺序扫描,以便标识下一个可能的要被编程的BTU,用于PCI总线主控接口160或DSP总线主控接口168。BTU扫描器196的顺序扫描由BTU表192中的每个BTU条目中的允许位的状态来限定。BTU扫描器196可通过控制线300直接读取这些允许位的状态。BTU扫描器196的操作因此能被有效地限定为只按顺序扫描被允许的BTU。因此,BTU表192内新生成的和建立的BTU立即被包括到BTU扫描的范围内,而那些不论什么原因被禁止的BTU也立即被排除在扫描之外。当BTU扫描器196选择下一个合格的BTU进行检查时,该BTU的地址通过BTU地址线302被提供到多路复用器296。多路复用器296的默认状态是这样的BTU扫描器提供的地址即是提供到BTU表192的默认的允许地址。至少该BTU的一部分可以从BTU表192中被读取并存储到扫描寄存器304、306之一中。扫描寄存器的内容通过控制线308、310被提供到BTU扫描器196。表ⅩⅫ说明了被扫描寄存器304、306存储的BTU信息。表ⅩⅫ扫描寄存器说明 位/sFIFO死锁 死锁/不规则传送长度12BTU完成 当前脉冲串之后,最佳BTU完成11中断允许 当前BTU完成时的强迫中断10BTU忙 扫描BTU目前在使用 9超越(override)移动扫描BTU到最佳BTU寄存器 8编程有效 最佳BTU可被用于总线主控编程;当7扫描器传送BTU索引值时置位有效 最佳BTU具有有效的BTU索引 6BTU索引 扫描寄存器中的BTU索引 [5:0]表ⅩⅩⅢ说明了存储在最佳BTU寄存器312、314中的BTU消息。表ⅩⅩⅢ最佳寄存器 说明 位/sFIFO字节允许FIFO内的字节选择器 [15:14]脉冲串长度 传送的字节数 [13:8]传送完成最佳BTU脉中串之后的流完成 7链接编程为BTU链接,不是传送6BTU索引 最佳寄存器中的BTU索引 [5:0]表ⅩⅩⅣ说明了存储在当前BTU寄存器320、322中的BTU信息。表ⅩⅩⅣ当前寄存器 说明 位/s中断选择 00没有中断产生 [15:14]01中断主机CPU10中断DSP1
11中断DSP2脉冲串长度传送的字节数 [13:8]传送完成 当前脉冲串之后的流完成 7链接 编程为BTU链接,不是传送 6BTU索引 最佳寄存器中的BTU索引[5:0]表ⅩⅩⅤ说明了BTU控制寄存器。表ⅩⅩⅤ最佳寄存器说明 位/s复位 复位整个BTU子系统9脉冲允许 单步执行BTU扫描器8保留 [7:2]总是V4P BTU总是编程有效 1允许 允许BTU扫描器操作0根据从扫描寄存器304、306提供的信息,BTU扫描器196确定特定的接口160、168以及由BTU引用的FIFO。FIFO索引然后通过控制线171被提供,以便从FIFO标志阵列270中得到相应的FIFO标志数据。具体地说,被BTU扫描器196考虑的FIFO标志数据包括被引用的FIFO是否能容纳或目前已存储了足够的数据,以支持总线主控脉冲串传送。在本发明的优选实施例中,每个脉冲串传送具有一个16字节的最大长度。然而,被BTU扫描器196考虑的其中一个FIFO标志是传送完成标志,该标志允许BTU扫描器196适当考虑允许少于16字节的脉冲串的传送。而且,死锁标志,当置位时,用于强制部分数据的传送,而不是最佳地等待一个完整的脉冲串可用。由于不规则数据长度传送或者可能存在的错误状态而造成仅有部分的脉冲串被传送时,可能会出现死锁。用于参与设备的最佳的数据传送长度在FIFO中是无效的,而且,数据的最佳长度不能被传送到FIFO。在任何情况下,使FIFO处于死锁状态的设备将置位死锁标志,以迫使下一个访问FIFO的设备传送一个短的数据。
当BTU扫描器196确定一个脉冲串数据传送能够通过可应用的总线主控接口160、168被执行时,同时也确定了取决于何时BTU准备好,被标识的BTU是否具有足够的优先权被登台到最佳BTU寄存器312、314之一中。用于登台的BTU的优先权基本上基于在执行脉冲串数据传送中的、BTU的相对最近最少使用。例如,当扫描寄存器304标识的BTU比最佳BTU寄存器312标识的BTU具有更高的优先权时,或者如果最佳BTU寄存器312是空的时,那么BTU扫描器196通过控制线316提供相应的控制信号,并在此控制下将扫描寄存器34的内容复制到最佳BTU寄存器312中。相反,如果扫描寄存器306标识的BTU的登台优先权低于最佳BTU寄存器314标识的BTU的优先权,那么BTU扫描器196便不向最佳BTU寄存器314提供扫描寄存器306的内容的复制。在上述的任何一种情况下,BTU扫描器196已经完成了一个当前扫描周期,并继续从BTU表192中选择下一个合格的BTU,以便潜在地登台、用于对总线主控脉冲串数据传送进行控制。
BTU扫描器196与BTU仲裁器190一起协作,发出信号通知是最佳BTU寄存器312、314中的一个还是两个来标识相应的可用于执行脉冲串数据传送的BTU。根据这个信息,BTU仲裁器190能够确定是否向接口160、168中一个提供允许PCI或允许DSP信号,以响应访问请求。当允许PCI或允许DSP信号由BTU仲裁器190发出时,BTU仲裁器190便用信号通知BTU扫描器196。BTU扫描器196由此可允许将相应的最佳BTU寄存器312、314的内容位并行传送到相应的当前BTU寄存器320、322中。并发地,BTU扫描器196更新内部的BTU优先级位列表,该列表紧接着被用于区分在扫描和最佳BTU寄存器304、306、312、314中被标识的BTU的相对的优先级。
被允许的最佳BTU寄存器312、314的内容被提供到相应的PCI或DSP接口160、168。并发地,BTU标识符通过地址线324被提供到多路复用器296,用于从BTU表192中选择最佳BTU寄存器标识的BTU。随着BTU仲裁器发送的允许控制信号,当前BTU的地址选择信号通过控制线298被提供到多路复用器296。完整的BTU因此可被寻址,并可用于编程PCI或DSP接口160、168,以执行脉冲串模式的数据传送。一旦被编程,PCI和DSP接口160、168就作为设备2620-n中的一个,根据指定的脉冲串数据传送的方向,参加请求对FIFO池284的访问。当数据要被传送到FIFO池284内的FIFO时,脉冲串数据传送的执行在设备160、168请求仲裁访问FIFO池284之前。当数据传送是来自FIFO池284时,设备160、168在执行脉冲串数据传送之前首先仲裁、以从FIFO中得到数据。PCI和DSP接口都含有内部脉冲串数据FIFO,用于提供足够的存储空间,以缓冲每一个单个的数据脉冲串。在本发明的一个优选实施例中,PCI内部脉冲串数据FIFO的深度是32字节,而DSP内部FIFO是16字节。
一旦PCI或DSP接口160、168已经完成了一个与FIFO池284有关的总线控制数据传送,接口160、168便请求PCI或DSP更新。到BTU仲裁器190的更新请求不受新BTU的选择的限制。相反地,被当前BTU寄存器320、322的内容标识的BTU被立即使用。因此,更新操作被施加到用于编程立即进行的脉冲串数据传送的BTU。随着BTU仲裁器190发送允许PCI或允许DSP信号,PCI或DSP接口160、168被允许将更新的信息写回到由相应的当前BTU寄存器320、322的内容标识的BTU中。随着该更新,传送完成标志的状态也被有效地传送到被引用的BTU。FIFO标志存储器中等价的标志也被更新,虽然最好是与脉冲串传送本身联系起来。一旦BTU更新已经完成,相应的PCI或DSP接口160、168再次向BTU仲裁器190声明访问请求,并等待BTU编程。
PCI和DSP接口160、168可被编程,以产生与脉冲串数据传送的执行有关的以及可能地响应数据传送错误的中断。PCI和DSP接口160、168向接口中断控制器326提供完成和错误控制信号。当最佳寄存器312、314被复制到当前寄存器320、322时,被编程到BTU表192中和从BTU表192提供的、PCI和DSP接口160、168的脉冲串完成响应中断操作被存储在当前寄存器320、322中。每当PCI或DSP接口被允许执行一个脉冲串数据传送时,被编程的中断响应行为适当地从当前寄存器320、322之一中被提供到接口中断控制器326。在脉冲串数据传送完成或检测到错误状态时,接口中断控制器326在控制线328上向主中断控制器188提供中断定义控制信号,如果有任何中断产生的话。
Ⅷ.需求驱动数据传送操作8a至8c示出一些示例性的数据和控制路径的实例。通过使用2个FIFO和4个BTU建立到CODEC接口176的逻辑双向接口。由于FIFO对数据传送是独立单向的,所以将分离的BTU与每个FIFO关联,以建立对数据传送路径的管理。
CODEC接口176用作FIFO 1的数据消耗者。因此,CODEC接口176要求按其内部操作建立起来的数据传送速率访问FIFO池284。同时,BTU 1参加BTU扫描器196的扫描操作。当CODEC接口176从FIFO 1中抽取数据时,FIFO标志被更新,直到FIFO 1中有足够的空间用于脉冲串数据传送。BTU 1然后变得有资格被BTU仲裁器190选择,以便对PCI接口160或DSP接口166进行编程,用于从系统的主存储器14或DSP RAM 34到FIFO 1的脉冲串数据传送,这由FIFO 1的编程指定。
当BTU 1的传送长度用完时,总线主控数据传送可通过PCI或DSP接口160、168被执行,以便把下一个顺序的BTU加载到BTU表192,来保持到CODEC接口176的数据流的连续性。既然流数据可作为片断被存储到系统主存储器14或DSP RAM 34,所以分别标识该数据片断的链接的BTU序列用于有效地实现一个分散/集中机制。因为对用于流数据传送的BTU的处理、以及对链接的或链接到的BTU的再加载,相对主处理器12和DSP 32、36来说是自主地执行的,尤其是没有必要产生那些需要主处理器12或DSP 32、36进行服务的中断,所以主处理器12和DSP 32、36可独立于I/O通道控制器22的正在进行的操作,从而提供了其有效的利用。最好,在控制数据流传送到FIFO 1的链接的BTU序列中,最后一个BTU被编程,以便在BTU指定的数据传送完成时启动中断。
从CODEC接口176接收的数据被需求驱动到FIFO 2,以便传送、比如到系统主存储器14。当CODEC接口176收到数据时,该接口就请求访问FIFO池,以便以与该CODEC接口176的接收数据速率一致的数据速率来传送数据。此外,当FIFO 2填充得足够多,有资格进行总线主控传送时,BTU 2将被选择用于对PCI接口160进行编程,以便执行从FIFO 2到系统主存储器14的数据的脉冲串数据传送。
当到或者从CODEC接口176到FIFO 1或FIFO 2的数据流终止时,相应的FIFO标志将被更新以反映传送完成状态。该状态将被反映到最后链接到BTU 1或BTU 2的后继BTU中。最终,传送完成将引起一个FIFO复位操作,以清除该FIFO。因此,中断可在到FIFO 1或从FIFO 2的数据传送的最后产生。
图8b举例说明一个更加复杂的双向数据流传送,涉及的数据正从系统主存储器14、通过FIFO 3被传送到DSP 32、再到直接连接到DSP 32上的CODEC接口40。因为从系统主存储器14的数据传送和到DSP RAM 34的数据传送都是总线主控传送,所以,将两个分离的BTU 3和4用于控制通过FIFO3的数据的传送。在该例子中,BTU 4被DSP 32编程到BTU表192中,同时BTU 3被主处理器12编程。由于DSP 32负责管理由BTU 4所指向的RAM 34的数据目的部分,所以,DSP 32可建立BTU 4及链接的后继者,以便指定与期望长度的数据相对应的块的传送,并且当每一个或仅仅最后一个到DSPRAM 34的数据的块的传送完成时,引起中断的产生。同时,当FIFO 3中的足够的空间变得对数据脉冲串传送有效时,BTU 3和链接的后继者在总线传送控制系统170的操作中成为活动的。最好,当最后的到FIFO 3的数据脉冲串传送被执行时,链接到BTU 3的后继BTU将指定到主处理器12的中断的产生。可替换地,主处理器12可通过消息端口184向DSP 32发送简单的消息,以便在FIFO 3最后排空时指定该数据流传送的完成。
由DSP 32从CODEC接口40接收的数据可被数字信号处理器32处理,然后被存储到RAM 34中的缓冲位置中。一旦数据的块已在DSP RAM 34中建立起来,DSP 32就将BTU 5编程到BTU表192中。BTU 5被允许不久,将被用于编程从DSP RAM 34到FIFO 4的脉冲串数据传送。当FIFO 4填充得足够多,能够支持脉冲串数据传送时,由主处理器12预建立的BTU 6将有资格仲裁选择,以便编程PCI总线主控接口160,从而执行到系统主存储器14的数据脉冲串传送,其地址由BTU 6指定或由链接的后继BTU指定。为终止该数据流,DSP 32可通过消息端口184向主处理器12传送一条消息,指定要传送的数据的总数。然后,主处理器12建立一个最终BTU,反映残存数据的全部预期的总数,并且在数据被传送到系统主存储器14以后,产生一个中断。然而,最好是,改用DSP 32来管理DSP总线主控部件150,来发送关于该流数据的当前和最终部分的传送的传送完成信号。
图8c示出了一个更加复杂的例子。将MIDI接口174通过FIFO 5连接,以便从系统主存储器14接收数据。主处理器12最好使用立即传送端口1820来将数据提供到FIFO 5。因为输出MIDI数据传送流的定时由主处理器12亲自进行管理,所以,立即传送端口1820被主处理器12用于被动地向FIFO 5提供数据。该使用的被动在于没有中断产生以响应将数据放入FIFO 5中。相反,MIDI接口174用于每当数据存在于相应的FIFO池5中时,请求FIFO池的访问。通常,考虑到MIDI设备的标准数据速率,完成从FIFO 5到MIDI接口174的数据传送中的等待时间为最小且足够均匀。因此,与通过本发明的I/O通道控制器核心26管理的其它数据传送的需求驱动操作不同,通过MIDI接口174的输出所提供的数据的速率是源,而不是需求驱动。
从MIDI接口174发出或输入的数据实际上按MIDI接口174建立的接收数据速率被直接提供到FIFO 6。在通过接口174收到数据的每一个字节或字时,立即发出请求,以将数据传送到FIFO池186中的相应FIFO。此外,通常,考虑到MIDI设备的标准数据速率,完成从MIDI接口174到FIFO 6的数据传送的等待时间为最小且足够均匀。
在这个实例中,第二立即传送端口1821最好用于每当输入MIDI数据被放置到FIFO 6时,主动地产生一个到DSP 36的中断。为响应该中断,DSP 36通过立即传送端口1821检索来自FIFO 6的数据,记录相应的时间戳,并将它们两者存储到DSP RAM 34中。因此,DSP 36能够以最小的、基本固定的等待时间高效地接收、记时间戳、以及处理从MIDI接口174接收的数据。尽管立即传送端口1821将产生可观数量的DSP中断,但MIDI数据传送的读取速率相当低,而且DSP 36在中断服务方面典型地相当高效。在任何情况下,这些MIDI相关的中断的整个处理开销对DSP 36是隔离的,并与主处理器12和任何其它DSP 32隔离。加载到DSP 36上的结果数据处理负荷能够被选择,以便使任何并发的、将数据提供到直接连接的、与DSP RAM 34有关的CODEC接口42的操作、或从该CODEC接口42接收数据的操作不超过DSP36的数据处理能力。
最后,由DSP 36接收和处理的数据可通过,比如,CODEC接口42被传送以作进一步的处理,或在BTU 8和9的相互控制下、通过FIFO 7被传送到系统主存储器14,或上述两者都有。
根据本发明,以上所描述的关于图8a-c的处理能够并且典型地相互独立。该处理中的每一个都可代表一个独立的正被传送的数据流,该传送受控于在主处理器12和与I/O通道控制器22关联的数据源和宿(source and sink)之间的独立的控制线程。然而,本发明特定地允许上述和其它可能的处理并发地进行。而且,由于每一个流的需求驱动操作,根据一个动态的和连续的基准,公平地分配I/O通道控制器22的使用,以确保每个流的基本的数据传送速率满足外围设备数据源或宿的要求。
Ⅸ.总结至此,已经描述了一种多功能I/O外围设备支持系统。该外围设备系统提供了实质自主操作的、多线程数据流的传送,该数据流的传送能够显著地匹配连接到该外围设备系统的集成的和外部的外围设备的需求的I/O带宽。另外,该外围设备系统对多个数字信号处理器提供存储器到存储器数据传送的支持,该多个数字信号处理器可用于从主处理器卸载处理和中断密集的任务,并且,同时,最小化和直接支持主处理器在管理这些数字信号处理器时的开销。
根据对本发明的优选实施例的上述描述,本技术领域的技术人员对该公开的实施例可以进行许多修改和变化。因而应该理解的是,在所附权利要求的范围内,本发明的实施可不同于以上的具体描述。
权利要求
1.一种通道控制器,用于在主处理器系统和多个I/O设备之间进行多路并行数字数据流的并发传送。所述通道控制器包括a)数据和控制总线;b)第一接口,包括可联接到主处理器系统的第一缓冲器,所述第一接口用于在所述主处理器系统与所述第一缓冲器之间、以及在所述第一缓冲器与所述数据和控制总线之间进行第一数据段的传送,该第一数据段包括可变的数据字节数,但不超过第一预定的字节数;c)第二接口,包括可联接到第一预定的I/O设备的第二缓冲器,所述第二接口用于在所述主处理器系统与所述第二缓冲器之间、以及在所述第二缓冲器与所述数据和控制总线之间进行第二数据段的传送,该第二数据段包括可变的数据字节数,但不超过第二预定的字节数;以及d)联接到所述数据和控制总线的FIFO池,用于与所述第一接口交换第一数据段,以及与所述第二接口交换第二数据段,所述FIFO池允许暂时地并发存储多个所述第一和第二数据段。
2.如权利要求1所述的通道控制器,其中,所述FIFO池包括访问仲裁器,用于选择性地授权由所述第一和第二接口对所述FIFO池的有关访问。
3.如权利要求2所述的通道控制器,其中,所述FIFO池包括多个数据FIFO,并且其中,第一预定的数据FIFO与所述第一和第二接口关联,以通过所述第一预定的数据FIFO和在所述第一和第二接口之间提供数据传送路径。
4.如权利要求3所述的通道控制器,还包括第三接口,该第三接口包括可联接到第二预定的I/O设备的第三缓冲器,所述第三接口用于在所述主处理器系统与所述第三缓冲器之间、以及在所述第三缓冲器与所述数据和控制总线之间进行第三数据段的传送,该第三数据段包括可变的数据字节数,但不超过第三预定的字节数;并且其中,所述访问仲裁器用于选择性地授权由所述第三接口对所述FIFO池的相应访问。
5.如权利要求4所述的通道控制器,其中,第二预定的数据FIFO与所述第一和第三接口关联,以通过所述第二预定的数据FIFO和在所述第一和第三接口之间提供数据传送路径。
6.如权利要求5所述的通道控制器,还包括联接到所述FIFO池的传送控制器,用于管理通过所述第一和第二数据FIFO的多个所述第一、第二以及第三数据段的传送。
7.一种通道控制器,提供对计算机系统的预定的输入/输出(I/O)操作的控制、和用于存储一个或多个I/O数据流,上述计算机系统具有通过执行指令控制该计算机系统的操作的主处理器、和联接到该主处理器的存储器,所述通道控制器包括多路数据通道控制器核心,含有多个FIFO缓冲器;多个I/O接口部件,可联接到所述多个FIFO缓冲器;以及控制逻辑,用于管理通过所述多个I/O接口部件和所述多个FIFO缓冲器的多路数据流的异步传送,所述控制逻辑用于在所述多个FIFO缓冲器中的任何一个与第一I/O接口部件之间建立单向数据传送路径,其中,所述第一I/O接口部件可联接到所述存储器,并且其中,第二I/O接口部件可联接到数字信号处理(DSP)设备。
8.如权利要求7所述的通道控制器,其中,所述控制逻辑用于所述第一I/O接口部件与所述多个FIFO缓冲器的第一FIFO缓冲器之间的可编程关联。
9.如权利要求8所述的通道控制器,其中,所述控制逻辑还用于所述第一I/O接口部件与所述多个FIFO缓冲器的第二FIFO缓冲器之间的可编程关联。
10.如权利要求9所述的通道控制器,其中,所述控制逻辑还用于所述第一FIFO缓冲器与所述第二I/O接口部件之间的可编程关联。
11.如权利要求10所述的通道控制器,其中,所述多个FIFO缓冲器可被唯一地标识,且其中,所述控制逻辑用于所述多个I/O接口部件与所述多个所述FIFO缓冲器之间的可编程关联。
12.如权利要求7所述的通道控制器,其中,所述控制逻辑用于多个预定控制线程的管理,该多个预定控制线程用于在选择的多组所述多个I/O接口部件与所述多个所述FIFO缓冲器之间提供多个数据流的自主传送。
13.如权利要求12所述的通道控制器,其中,第一所述选择组被所述主处理器可编程地选择。
14.如权利要求13所述的通道控制器,其中,第二所述选择组被所述数字信号处理设备可编程地选择。
15.如权利要求7所述的通道控制器,其中,所述控制逻辑被所述主处理器选择性地允许,用于进行主机端控制线程所定义的数据传送和FIFO缓冲器操作,以在所述第一I/O接口部件和所述多个FIFO缓冲器中相应的一个之间自主地传送所述多路数据流中的一个数据流的一个段。
16.如权利要求15所述的通道控制器,其中,所述控制逻辑还被所述DSP选择性地允许,用于进行DSP端控制线程所定义的数据传送和FIFO缓冲器操作,以在所述多个FIFO缓冲器中的所述相应的一个与所述第二I/O接口部件之间自主地传送所述多路数据流中的一个数据流的所述段。
17.如权利要求16所述的通道控制器,其中,所述控制逻辑可被编程,以便将所述多个FIFO缓冲器中的所述相应的一个与第三I/O接口部件关联,其中,所述第三I/O接口部件的特征是要求一个预定的数据传送速率,并且其中,所述控制逻辑用于在所述FIFO缓冲器中的所述相应的一个和所述第三I/O接口部件之间、基本上以所述预定的数据传送速率、自主地传送所述多路数据流中的一个数据流的所述段的数据。
全文摘要
一种多路数据流通道控制器(26),通过联接于通用处理器系统(12)和专用处理器系统(36)之间的外围设备数据通道(41),并发地、实时地提供多路数据流的需求驱动传送。该控制器包括:第一总线主控接口(24),联接到通用处理器系统总线(20);第二总线主控接口,联接到专用处理器系统总线(30);可分段缓冲存储器(未示出);以及控制器(26),用于管理通过上述可分段缓冲存储器、在第一和第二总线主控接口之间进行的数据段的传送。该控制器响应专用处理器总线(30)提供的信号,以请求从在可分段缓冲存储器中登台的相应数据流传送连续数据段。该控制器缓和了通过第一总线主控接口(24)到可分段缓冲存储器的有关数据流的连续数据段的传送。
文档编号G06F13/12GK1218567SQ97194594
公开日1999年6月2日 申请日期1997年3月6日 优先权日1996年3月13日
发明者詹姆斯·K·吉福德, 斯里德哈·贝格尔, 阿德里安·刘易斯, 唐纳德·J·斯潘塞, 托马斯·E·基尔伯恩, 丹尼尔·B·戈克诺尔 申请人:钻石多媒体系统公司