亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

多路并行數(shù)字?jǐn)?shù)據(jù)流通道控制器體系結(jié)構(gòu)的制作方法

文檔序號(hào):6412969閱讀:265來源:國知局
專利名稱:多路并行數(shù)字?jǐn)?shù)據(jù)流通道控制器體系結(jié)構(gòu)的制作方法
相關(guān)申請(qǐng)的交叉參考本發(fā)明涉及下述申請(qǐng),它們都被轉(zhuǎn)讓給本申請(qǐng)的受讓人1、[相關(guān)申請(qǐng)的題目],由[姓名等人][我們的案號(hào)GBR],申請(qǐng)?zhí)枺峤蝗眨摺?br> 本發(fā)明的背景1.本發(fā)明的領(lǐng)域本發(fā)明總的涉及高性能外圍設(shè)備數(shù)據(jù)接口,特別涉及一種適用于通用個(gè)人計(jì)算機(jī)、計(jì)算機(jī)工作站、以及嵌入式通信和網(wǎng)絡(luò)數(shù)據(jù)路由選擇和轉(zhuǎn)換功能的、多線程的(muti-threaded)、總線主控的(bus-mastering)、輸入/輸出(I/O)通道控制器體系結(jié)構(gòu)。
2.相關(guān)技術(shù)描述典型地,個(gè)人計(jì)算機(jī)和計(jì)算機(jī)工作站在面向多媒體、網(wǎng)絡(luò)、以及通信的應(yīng)用的持續(xù)發(fā)展,從根本上依賴于對(duì)大數(shù)據(jù)吞吐量的數(shù)字?jǐn)?shù)據(jù)流執(zhí)行計(jì)算密集的操作。典型地,需要的計(jì)算密集操作包括三維(3D)音頻產(chǎn)生和處理;基于波表的音頻合成;V.34協(xié)議的串行數(shù)據(jù)信號(hào)的產(chǎn)生和檢測;以及模擬語音的濾波和壓縮。如果用軟件來實(shí)現(xiàn)這些操作,那么當(dāng)個(gè)人計(jì)算機(jī)或工作站系統(tǒng)的主處理器執(zhí)行這些操作時(shí),這些操作每個(gè)每秒鐘通常將消耗20到40兆個(gè)指令周期(MIPS)。另外,支持關(guān)聯(lián)的、到常規(guī)外圍編碼器/解碼器芯片(CODEC)的、大吞吐量數(shù)據(jù)流的傳送,每個(gè)數(shù)字?jǐn)?shù)據(jù)流將消耗額外的一到二MIPS。
然而,個(gè)人計(jì)算機(jī)和工作站系統(tǒng)中的傳統(tǒng)的微處理器通常只能夠維持在60 MIPS以上,而且大多數(shù)典型地為20到30 MIPS。上下文轉(zhuǎn)換、存儲(chǔ)器管理、以及外圍設(shè)備的等待狀態(tài)進(jìn)一步約束了可以用來計(jì)算性地處理和傳輸數(shù)字?jǐn)?shù)據(jù)流的有效的MIPS。因?yàn)?,?shí)際上,必須保留有效的主處理器MIPS,以便在執(zhí)行多媒體功能的同時(shí)執(zhí)行,典型地,終端用戶的應(yīng)用程序,所以對(duì)處理數(shù)字?jǐn)?shù)據(jù)流方面的外圍硬件支持的需要已被普遍認(rèn)可。
對(duì)于多媒體、網(wǎng)絡(luò)以及通信應(yīng)用,在增加外圍硬件支持時(shí),需要考慮硬件和軟件兩者。任何被使用的外圍硬件、在增加計(jì)算功能方面首先必須是價(jià)格可取的,不能因此以硬件服務(wù)的需求增加主處理器的負(fù)擔(dān)。任何增加的支持負(fù)擔(dān)都直接危害到通過增加外圍硬件而獲得的凈有效MIPS增益。
同樣,外圍硬件的軟件接口必須與主處理器所執(zhí)行的操作系統(tǒng)有效地結(jié)合,從而能夠有效地持續(xù)地使用該外圍硬件。低效的軟件接口導(dǎo)致與外圍硬件通信的主處理器承擔(dān)的MIPS的增加。而且,由管理外圍硬件的軟件接口的復(fù)雜性所造成的任何處理負(fù)擔(dān)的增加,都將導(dǎo)致通過使用外圍硬件而獲得的有效的持續(xù)的處理MIPS的直接減少。
對(duì)于多媒體、網(wǎng)絡(luò)以及通信應(yīng)用,提供外圍硬件支持的傳統(tǒng)方法包括提供專用集成電路(芯片)和高度軟件可編程的數(shù)字信號(hào)處理器(DSP)的各種組合,上述專用集成電路執(zhí)行基本上是硬連接的(hardwired)或僅是部分地配置可編程的計(jì)算功能。低成本密封包裝形式的專用功能芯片典型地只能實(shí)現(xiàn)有限的信號(hào)處理功能或一小組相關(guān)的功能。支持的功能典型地僅限于特定的功能范圍,而且可編程性主要限于初始配置選項(xiàng)和有限的動(dòng)態(tài)控制,如果有動(dòng)態(tài)控制的話。
作為硬件外圍設(shè)備,專用功能芯片典型地很少或沒有對(duì)管理數(shù)字?jǐn)?shù)據(jù)流的連續(xù)實(shí)時(shí)信號(hào)處理提供直接支持,更不用說對(duì)多路數(shù)據(jù)流傳輸?shù)闹С至?。這種芯片典型地只能作為取自或壓入該芯片的數(shù)字?jǐn)?shù)據(jù)流的消耗者或產(chǎn)生者(源或宿,source or sink),而該數(shù)字?jǐn)?shù)據(jù)流的取出或壓入速率是由主處理器決定的有效的最大速率或某一期望速率。所以,使用專用功能芯片的外圍硬件受到傳統(tǒng)的數(shù)據(jù)流傳送中斷和傳輸速度限制,造成該中斷和限制的原因有比如過度的主處理器中斷、上下文轉(zhuǎn)換、和各種存儲(chǔ)器管理內(nèi)核處理、以及與主處理器正在并發(fā)地執(zhí)行著的其它應(yīng)用程序之間對(duì)主處理器CPU周期的基本競爭。系統(tǒng)范圍內(nèi)的競爭和對(duì)多路邏輯并發(fā)直接存儲(chǔ)器訪問(DMA)數(shù)據(jù)傳送的有限的系統(tǒng)硬件支持,也將減小專用功能芯片的持續(xù)的數(shù)據(jù)傳送速率。而且,在執(zhí)行數(shù)據(jù)流的初始化、傳輸控制以及任何要求的數(shù)據(jù)流的混合或多路復(fù)用操作中,專用功能芯片通常具有單流特性直接要求主處理器的大量參與。因此,專用功能芯片能夠有效地提高個(gè)人計(jì)算機(jī)或工作站系統(tǒng)的多媒體和數(shù)字信號(hào)處理能力,但同時(shí)也給主處理器造成了巨大的并且通常是無限的負(fù)擔(dān)。
在外圍硬件系統(tǒng),尤其是需要復(fù)雜和高速的信號(hào)處理計(jì)算的外圍硬件系統(tǒng)方面,已經(jīng)出現(xiàn)了通用數(shù)字信號(hào)處理器。傳統(tǒng)的DSP芯片在非常適合數(shù)據(jù)流處理的計(jì)算體系結(jié)構(gòu)中、能夠提供50以上的MIPS。通常,這種DSP芯片比較昂貴,并且需要比較強(qiáng)的軟件開發(fā)程序、來實(shí)現(xiàn)執(zhí)行其預(yù)定功能所需的軟件算法。然而,DSP芯片的體系結(jié)構(gòu)通常并沒有為控制擴(kuò)展的數(shù)據(jù)傳送操作或存儲(chǔ)器管理功能而進(jìn)行優(yōu)化。相反,其體系結(jié)構(gòu)典型地為讀、處理和寫與內(nèi)部專用存儲(chǔ)器、以及外部局部連接的存儲(chǔ)器或直接連接的專用功能外圍芯片有關(guān)的數(shù)據(jù)而進(jìn)行了優(yōu)化。因此,在將數(shù)據(jù)傳送到作為外圍硬件使用的DSP的存儲(chǔ)空間的過程中,主處理器也必須大量地介入。不幸的是,這通常導(dǎo)致在可得到的并且可持續(xù)的主處理器的性能方面,DSP受到的限制與專用功能芯片的情況相同。
為了限制到多媒體外圍硬件的數(shù)據(jù)傳送過程中的中斷,并以此提高可從主處理器獲得的、可持續(xù)的數(shù)據(jù)傳送速率,可向主處理器執(zhí)行的傳統(tǒng)的操作系統(tǒng)添加一種小的、搶先式實(shí)時(shí)內(nèi)核,比如SPOX。該內(nèi)核可作為支持多媒體外圍硬件的實(shí)時(shí)中斷和數(shù)據(jù)傳送要求的低級(jí)設(shè)備驅(qū)動(dòng)程序被實(shí)現(xiàn)。這種實(shí)時(shí)內(nèi)核確實(shí)有助于確保到和從DSP存儲(chǔ)空間的最大的、持續(xù)的數(shù)據(jù)傳送的執(zhí)行,然而,主處理器承擔(dān)了相同的大量的管理該數(shù)據(jù)流傳送的開銷、以及附加的執(zhí)行實(shí)時(shí)內(nèi)核本身的開銷。
因此,要想通過添加外圍硬件來有效地提供更多的處理能力,目前個(gè)人計(jì)算機(jī)和工作站系統(tǒng)典型地使用的多媒體、網(wǎng)絡(luò)以及通信外圍硬件子系統(tǒng)并不十分可取。
在幾個(gè)目的之間,為了向用于多媒體、網(wǎng)絡(luò)和相關(guān)通信操作的操作系統(tǒng)提供好的軟件接口,現(xiàn)已經(jīng)提出并大量定義了各種基于主機(jī)的信號(hào)處理體系結(jié)構(gòu),如,本機(jī)信號(hào)處理(native signal processing,NSP)和Direct-X?;谥鳈C(jī)的信號(hào)處理體系結(jié)構(gòu)依賴于對(duì)該主處理器自身的特殊使用,來至少實(shí)現(xiàn)高級(jí)的信號(hào)處理功能。這種體系結(jié)構(gòu)至少具有兩個(gè)直接的好處。第一個(gè)好處是在最終傳輸?shù)酵鈬布?,有效地處理?shù)據(jù)流,對(duì)數(shù)據(jù)流進(jìn)行混合、多路復(fù)用以及減少計(jì)算量,從而減輕與將數(shù)據(jù)傳送到外圍硬件有關(guān)的處理開銷。這樣,可稍微或顯著地提高個(gè)人計(jì)算機(jī)或工作站系統(tǒng)的實(shí)際處理性能。
第二個(gè)好處是向操作系統(tǒng)提供可能全面的應(yīng)用編程接口(API),因此有助于將物理的或功能的外圍硬件的特定實(shí)現(xiàn)虛擬化。多媒體、網(wǎng)絡(luò)和相關(guān)通信的應(yīng)用程序因此能夠?qū)ζ谕墓δ苡行У剡M(jìn)行更廣泛的或完全不同的支持,而不是由任何特定的外圍硬件的實(shí)現(xiàn)來實(shí)際提供。對(duì)特定功能的直接支持不是由外圍硬件的特定實(shí)例直接提供,該功能由主處理器用軟件實(shí)現(xiàn),主處理器作為基于主機(jī)的信號(hào)處理器,降到由外圍硬件的特定實(shí)例支持的功能級(jí)。
基于主機(jī)的信號(hào)處理在執(zhí)行多媒體、網(wǎng)絡(luò)、以及通信功能方面,能夠提高個(gè)人計(jì)算機(jī)或工作站系統(tǒng)的效率,但與此同時(shí),由基于主機(jī)的信號(hào)處理支持的許多功能計(jì)算量仍然相當(dāng)大。因此,基于主機(jī)的信號(hào)處理向主處理器施加了大量的直接的負(fù)擔(dān)。而且,基于主機(jī)的信號(hào)處理確實(shí)具有顯著減小到或從外圍硬件的數(shù)據(jù)傳輸?shù)娜萘康臐摿Γc此同時(shí),實(shí)際上,主處理器上的計(jì)算負(fù)擔(dān)實(shí)質(zhì)上并未受到影響,而且,在任何情況下,仍然相當(dāng)大。
本發(fā)明概述因此,本發(fā)明的總的目的是提供一種外圍I/O控制器,以支持建立于中央處理器與多個(gè)與多媒體、網(wǎng)絡(luò)、及通信相關(guān)的外圍設(shè)備之間的、高總帶寬數(shù)據(jù)傳送路徑上的、多路并行可變帶寬數(shù)據(jù)流。
本發(fā)明通過使用一種多路并行數(shù)字?jǐn)?shù)據(jù)流通道控制器來實(shí)現(xiàn)這一目的,該通道控制器通過聯(lián)接于通用處理器系統(tǒng)與專用處理器系統(tǒng)之間的外圍數(shù)據(jù)通道,實(shí)時(shí)地提供多路數(shù)據(jù)流同時(shí)的需求驅(qū)動(dòng)傳送。該控制器包括第一總線主控接口,可聯(lián)接到通用處理器系統(tǒng)總線;第二總線主控接口,可聯(lián)接到專用處理器系統(tǒng)總線;可分段緩沖存儲(chǔ)器;以及控制器,用于管理通過可分段緩沖存儲(chǔ)器、在第一和第二總線主控接口之間的數(shù)據(jù)段的傳送。該控制器響應(yīng)專用處理器總線提供的多個(gè)信號(hào),以請(qǐng)求從在可分段緩沖存儲(chǔ)器中登臺(tái)的有關(guān)的多個(gè)數(shù)據(jù)流傳送連續(xù)數(shù)據(jù)段。該控制器緩和了通過第一總線主控接口到可分段緩沖存儲(chǔ)器的有關(guān)的多個(gè)數(shù)據(jù)流的連續(xù)數(shù)據(jù)段的傳送。
使用本發(fā)明的多路并行數(shù)字?jǐn)?shù)據(jù)流通道控制器的計(jì)算機(jī)系統(tǒng)因此能夠支持到或從輔助數(shù)據(jù)處理部件的多個(gè)I/O數(shù)據(jù)流的并發(fā)實(shí)時(shí)傳送。該計(jì)算機(jī)系統(tǒng)可包括第一處理部件,含有第一存儲(chǔ)器,用于存儲(chǔ)多個(gè)數(shù)據(jù)流,該多個(gè)數(shù)據(jù)流的特征在于每個(gè)數(shù)據(jù)流都具有各自的數(shù)據(jù)傳送速率;第二處理單元,用于處理多個(gè)數(shù)據(jù)流的數(shù)據(jù)段內(nèi)的數(shù)據(jù);以及通道控制器,聯(lián)接于第一和第二處理單元之間,用于在第一和第二處理器之間傳送多個(gè)數(shù)據(jù)流。該通道控制器根據(jù)數(shù)據(jù)流的各自數(shù)據(jù)送輸速率,選擇性地傳送多個(gè)數(shù)據(jù)流的數(shù)據(jù)段。
因此,本發(fā)明的一個(gè)優(yōu)點(diǎn)是,它向主處理器系統(tǒng)提供了一種動(dòng)態(tài)分配的多通道控制接口,且允許對(duì)該通道控制器的操作進(jìn)行靈活的編程和控制。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)是,它通過執(zhí)行大量的自主數(shù)據(jù)傳送功能和動(dòng)態(tài)流的管理來最小化主處理器的運(yùn)行負(fù)載。該通道控制器提供內(nèi)部中斷管理,以便最小化主機(jī)和DSP兩者的中斷支持負(fù)擔(dān),因此,通過連接主機(jī)和輔助信號(hào)處理部件的全面中斷源管理的數(shù)據(jù)流通道,允許并且支持實(shí)時(shí)多路并行通道信號(hào)處理。
本發(fā)明還有一個(gè)優(yōu)點(diǎn)是,提供了通過通道控制器的、動(dòng)態(tài)緩沖尺寸和速率可控制的多路數(shù)據(jù)流的流動(dòng),最佳地使用最大的、有效的、外圍I/O通道數(shù)據(jù)帶寬。流的傳送不依賴于流的數(shù)據(jù)類型。通道控制器的每一個(gè)數(shù)據(jù)流通道都作為邏輯上獨(dú)立的通道而存在。這些通道能被串聯(lián)組合,以提供通過附加的或機(jī)載的(on-board)信號(hào)處理線路以及外部外圍信號(hào)處理部件的離散的數(shù)據(jù)路由選擇路徑。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)是,提供的自主總線主控操作不再要求傳統(tǒng)的直接存儲(chǔ)器訪問操作,也不再要求主處理器陷入到通過I/O通道控制器的數(shù)據(jù)傳送中。數(shù)據(jù)流的段的交織傳送使數(shù)字?jǐn)?shù)據(jù)流能有效地并發(fā)并行傳送到和通過通道控制器。這大大減輕了主機(jī)應(yīng)用程序上下支轉(zhuǎn)換和大多數(shù)主機(jī)用戶中斷內(nèi)核模式轉(zhuǎn)換的必要性,同時(shí)對(duì)多路并發(fā)數(shù)據(jù)流提供實(shí)時(shí)傳輸?shù)闹С帧?br> 本發(fā)明的另一個(gè)優(yōu)點(diǎn)是,通過確保數(shù)據(jù)在數(shù)據(jù)源和宿之間、以該流的外圍設(shè)備對(duì)各數(shù)據(jù)傳送通道建立的動(dòng)態(tài)數(shù)據(jù)傳送速率、高效地連續(xù)流動(dòng),從而提供了可變速率實(shí)時(shí)信號(hào)處理的動(dòng)態(tài)支持。
本發(fā)明的另外一個(gè)優(yōu)點(diǎn)是,對(duì)輔助信號(hào)處理部件提供可容易地?cái)U(kuò)展的支持,該輔助信號(hào)處理部件包括完全可編程的部件和其它提供部分或甚至全部硬件實(shí)現(xiàn)的功能的部件。
本發(fā)明的另外一個(gè)優(yōu)點(diǎn)是,通道控制器可編程為一種復(fù)合功能的外圍設(shè)備,它通過極大地?cái)U(kuò)充數(shù)據(jù)密集型外圍設(shè)備子系統(tǒng)的獨(dú)立的和協(xié)作的信號(hào)處理的功能性,有效地降低了計(jì)算機(jī)系統(tǒng)的開銷。
附圖的簡要描述通過結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)地描述,本發(fā)明的上述及其它優(yōu)點(diǎn)和特性將會(huì)變得更加明白,在所有這些附圖中,相同的標(biāo)號(hào)代表相同的部分,其中

圖1a是實(shí)現(xiàn)本發(fā)明的I/O通道控制器子系統(tǒng)的第一實(shí)施例的個(gè)人計(jì)算機(jī)型系統(tǒng)的方框圖。
圖1b是本發(fā)明的第二實(shí)施例的I/O通道控制器子系統(tǒng)的方框圖。
圖2是本發(fā)明的一種可替換優(yōu)選實(shí)施例的基于專用功能嵌入式I/O通道的系統(tǒng)的方框圖。
圖3是與操作系統(tǒng)和多個(gè)外部硬件接口有關(guān)的I/O通道控制器子系統(tǒng)的軟件體系結(jié)構(gòu)關(guān)系的圖解說明。
圖4對(duì)于操作系統(tǒng)而建立的、由本發(fā)明的I/O通道控制器所支持的、高級(jí)控制和物理數(shù)據(jù)流動(dòng)的圖解說明。
圖5a是本發(fā)明的I/O通道控制器的優(yōu)選實(shí)施例的詳細(xì)方框圖。
圖5b是本發(fā)明的總線傳送控制系統(tǒng)的優(yōu)選實(shí)施例的詳細(xì)方框圖。
圖5c是本發(fā)明的集成外圍設(shè)備接口的優(yōu)選的CODEC實(shí)施例的詳細(xì)方框圖。
圖5d是本發(fā)明的優(yōu)選實(shí)施例的中斷控制器集成外圍設(shè)備的詳細(xì)方框圖。
圖6是根據(jù)本發(fā)明的優(yōu)選實(shí)施例構(gòu)造的I/O通道控制器的FIFO池子系統(tǒng)的詳細(xì)方框圖。
圖7是本發(fā)明的I/O通道控制器的優(yōu)選實(shí)施例的總線傳送單元控制器子系統(tǒng)的詳細(xì)方框圖;以及圖8a-c是說明本發(fā)明的優(yōu)選實(shí)施例的基于I/O通道控制器的系統(tǒng)的優(yōu)選操作模式的控制流程圖。
本發(fā)明的詳細(xì)描述Ⅰ.I/O控制器系統(tǒng)體系結(jié)構(gòu)圖1a提供了計(jì)算機(jī)系統(tǒng)10的方框圖,最好用來實(shí)現(xiàn)個(gè)人計(jì)算機(jī)的體系結(jié)構(gòu),計(jì)算機(jī)系統(tǒng)10聯(lián)接到多功能I/O外圍設(shè)備控制器硬件系統(tǒng)(I/O通道控制器)22。主處理器12,典型地有IntelPentiumCPU,MotorolaPowerPCCPU,等等,通過處理器總線16聯(lián)接到系統(tǒng)主存儲(chǔ)器14。傳統(tǒng)的外圍組件互聯(lián)(peripheral component interconnect,PCI)橋(bridge)接口18在處理器總線16和夾層(mezzanine)PCI總線20之間提供高性能的數(shù)據(jù)和控制連接。多功能外圍設(shè)備系統(tǒng)22通過傳統(tǒng)的PCI適配器總線接線器24聯(lián)接到PCI總線20。I/O通道控制器核心26集中負(fù)責(zé)管理有關(guān)PCI總線20的數(shù)據(jù)和控制信號(hào)的傳送,它也被聯(lián)接到適配器總線24。I/O通道控制器核心26作為實(shí)質(zhì)獨(dú)立的總線主控外圍設(shè)備控制器,支持多路并發(fā)數(shù)據(jù)和控制信號(hào)在PCI總線20和系統(tǒng)22之間的傳送。這些并發(fā)傳送最好被作為獨(dú)立的成對(duì)執(zhí)行的數(shù)據(jù)流和控制線程來管理,每個(gè)流由通過I/O通道控制器26的離散的塊傳送組成,每塊包括一個(gè)或更多的數(shù)據(jù)字節(jié)。被并發(fā)支持的流的多個(gè)數(shù)據(jù)塊互相交織,以有效地建立并發(fā)流數(shù)據(jù)傳輸。
根據(jù)本發(fā)明,數(shù)據(jù)塊的交織由控制器子系統(tǒng)22確定,并且,通常,不依賴于主處理器12的執(zhí)行。數(shù)據(jù)塊的交織由I/O通道控制器核心26執(zhí)行,它反映了由傳輸?shù)牧鲾?shù)據(jù)的性質(zhì)決定的各個(gè)數(shù)據(jù)流的相應(yīng)的需求傳輸速率。因此,當(dāng)流數(shù)據(jù)代表一固定數(shù)據(jù)頻率的音頻信號(hào)流時(shí),該音頻數(shù)據(jù)流中的數(shù)據(jù)塊的交織可能不同,盡管總體上保持一固定的通過速率,該速率反映音頻流編碼器/解碼器(CODEC)獨(dú)立需求的數(shù)據(jù)流傳送速率。在需求的數(shù)據(jù)速率不是一個(gè)常數(shù)時(shí),比如使用可變速率的音頻或視頻壓縮時(shí),數(shù)據(jù)塊的交織還根據(jù)適合于壓縮的數(shù)據(jù)流的需求數(shù)據(jù)傳送速率而不同。
在本發(fā)明的優(yōu)選實(shí)施例中,I/O通道控制器核心26支持多個(gè)直接連接的串行總線外圍設(shè)備28。這些串行總線外圍設(shè)備28最好包括專用功能芯片,該芯片實(shí)現(xiàn)特定的高速的典型地串行定向的數(shù)據(jù)傳輸功能。典型的串行總線外圍設(shè)備28包括一種提供高速的串行的通用同步/異步速率傳送(USART)功能的專用功能芯片。另外一種可能的串行總線外圍設(shè)備28可能使用專用功能芯片組,以提供基于低價(jià)格的硬件的音頻子系統(tǒng)。
I/O通道控制器核心26最好提供高速的、通用的數(shù)據(jù)和控制總線30,以支持寬范圍的數(shù)據(jù)處理和外圍傳輸設(shè)備??蓪⒁粋€(gè)或更多的數(shù)字信號(hào)處理器(DSP)32、36和關(guān)聯(lián)的DSP RAM 34連接到總線30,以對(duì)間接連接的外圍設(shè)備,如串行總線外圍設(shè)備28、并行總線外圍設(shè)備38以及主處理器12,提供高性能的計(jì)算支持。雖然依賴于DSP 32、36的具體實(shí)現(xiàn),但DSP RAM 32最好存在于DSP 32、36的內(nèi)部,并被映射到總線30能訪問的公用地址空間中。DSP 32、36最好還對(duì)直接連接的外圍設(shè)備,如串行總線外圍設(shè)備40、42,提供接口控制支持。
DSP 32、36允許相互之間基本獨(dú)立地和并行地執(zhí)行各種不同的計(jì)算和控制功能。因此,例如,數(shù)字信號(hào)處理器32可實(shí)現(xiàn)一定范圍的數(shù)字信號(hào)處理功能,該功能適于支持各種電信專用的串行總線外圍設(shè)備40。上述的數(shù)字信號(hào)處理器32可實(shí)現(xiàn)信號(hào)處理算法,以執(zhí)行實(shí)現(xiàn)高速傳真調(diào)制解調(diào)器、綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)連接、以及無線數(shù)據(jù)收發(fā)器系統(tǒng)所需的協(xié)議和信號(hào)處理。直接連接到數(shù)字信號(hào)處理器32的串行總線外圍設(shè)備40可適當(dāng)?shù)匕▊鹘y(tǒng)電話系統(tǒng)(POTS)接口、ISDN接口以及符合低功率FCC的RF或IR數(shù)據(jù)收發(fā)器。
第二數(shù)字信號(hào)處理器36能獨(dú)立地或協(xié)作地提供音頻和視頻信號(hào)處理功能,包括3D音頻合成、基于波表的音頻信號(hào)產(chǎn)生和混合、語音和音樂的重現(xiàn)、以及語音識(shí)別。直接連接到數(shù)字信號(hào)處理器36的串行總線外圍設(shè)備42可能還包括適當(dāng)?shù)腃ODEC和濾波器,以執(zhí)行高速雙向數(shù)-模信號(hào)轉(zhuǎn)換。
最好,將并行總線外圍設(shè)備38直接連接到總線30,以支持高速的并行功能。被支持的并行功能可包括傳統(tǒng)的高速雙向并行數(shù)據(jù)傳送、高速以太網(wǎng)接口、以及傳統(tǒng)的磁盤驅(qū)動(dòng)器、CD-ROM驅(qū)動(dòng)器等的傳統(tǒng)的EIDE和SCSI接口。并行總線外圍設(shè)備30可以還包括通過視頻控制器、連接到視頻顯示控制器的幀緩沖器的直接或間接的接口。該并行總線外圍設(shè)備的一個(gè)附加功能是提供了簡單的、通過一個(gè)或多個(gè)直接連接到CODEC的串行控制線41的并行/串行聯(lián)轉(zhuǎn)換功能,否則該CODEC是作為直接連接的串行總線外圍設(shè)備42支持的。實(shí)際上,串行連接41允許另一個(gè)DSP 32或很可能是主處理器12兩者之一通過連接到總線30的連接、對(duì)CODEC進(jìn)行相對(duì)直接的控制訪問。
通過I/O通道控制器26的執(zhí)行,在各種串行和并行總線外圍設(shè)備28、38、40、42以及數(shù)字信號(hào)處理器32、36之間,對(duì)于數(shù)據(jù)傳送的競爭得以最小化。由多功能外圍系統(tǒng)22支持的最大數(shù)據(jù)吞吐量實(shí)際上最主要地受PCI總線20和系統(tǒng)存儲(chǔ)器14之間的有效的數(shù)據(jù)傳輸帶寬的限制。
對(duì)外圍系統(tǒng)22可支持的數(shù)據(jù)吞吐量的某些更實(shí)際的限制是可從數(shù)字信號(hào)處理器32、36得到的計(jì)算性能。然而,這種限制可用幾種不同的方法克服,包括增加聯(lián)接到總線30的數(shù)字信號(hào)處理器的數(shù)目、以及在并行的處理器之間分配計(jì)算載荷。此外,使用更高性能的數(shù)字信號(hào)處理器將提供更大的計(jì)算吞吐量。
下面,參照?qǐng)D1b,示出了一種可替換的優(yōu)選外圍設(shè)備系統(tǒng)44。I/O通道控制器核心46通過進(jìn)一步從流過串行總線外圍設(shè)備28以及、潛在地、并行總線外圍設(shè)備30的數(shù)據(jù)流的、有時(shí)間性的數(shù)據(jù)傳輸路徑中除去數(shù)字信號(hào)處理器32,來對(duì)數(shù)字信號(hào)處理器32提供增強(qiáng)的支持。這樣,當(dāng)數(shù)字信號(hào)處理器32可能處理通過串行總線外圍設(shè)備40直接耦合的數(shù)據(jù)流時(shí),將I/O通道控制器核心46本身用于控制串行和并行總線外圍設(shè)備28、38與DSP RAM34之間的所有的數(shù)據(jù)傳輸,可以從數(shù)字信號(hào)處理器32中去除許多、如果不是大部分的存儲(chǔ)器管理和重復(fù)的數(shù)據(jù)傳輸?shù)墓δ?。從而,允許DSP32花更多的時(shí)間用于計(jì)算操作而不是數(shù)字信號(hào)處理器32不是最佳適合的擴(kuò)展的數(shù)據(jù)傳送操作。因此,數(shù)字信號(hào)處理器32用簡單的存儲(chǔ)器加載和存儲(chǔ)器操作幾乎專門處理在RAM 34和數(shù)字信號(hào)處理器32之間移動(dòng)的數(shù)據(jù)。由數(shù)字信號(hào)處理器32處理的、并且存儲(chǔ)到RAM 34中的數(shù)據(jù)的隨后的傳送被傳輸?shù)酱泻筒⑿锌偩€外圍設(shè)備28、38,而不需要數(shù)字信號(hào)處理器32做任何大量的額外的處理。
本發(fā)明的一個(gè)嵌入式應(yīng)用如圖2所示。系統(tǒng)10'可作為智能的、獨(dú)立的或遙控管理的數(shù)據(jù)流處理器。嵌入式處理器12',如Intel 80196,和主存儲(chǔ)器14',最好由DRAM和閃存(flash)EPROM的組合構(gòu)成,它們由處理器總線16′互相連接起來。I/O通道控制器核心26'支持在處理器總線16′和I/O總線30'之間的、一個(gè)或多個(gè)、潛在地交疊的數(shù)據(jù)流的傳輸。一個(gè)或多個(gè)DSP 32'以及任意數(shù)目的網(wǎng)絡(luò)外圍設(shè)備,如網(wǎng)絡(luò)控制器38'、38″都最好被連接到I/O總線30'。DSP 32'能直接服務(wù)由網(wǎng)絡(luò)控制器38'、38″產(chǎn)生的中斷,以支持它們各自的網(wǎng)絡(luò)數(shù)據(jù)流的傳輸功能。DSP可以使用I/O通道控制器,以便實(shí)際控制在I/O總線30′上的、以及、如所希望的、到主存儲(chǔ)器14′的數(shù)據(jù)的傳輸。
在一個(gè)優(yōu)選的嵌入式實(shí)施例中,嵌入式系統(tǒng)10′起高性能智能網(wǎng)絡(luò)數(shù)據(jù)路由器的作用。嵌入式CPU 12′執(zhí)行主存儲(chǔ)器14′的閃存EPROM中提供的控制程序,以支持傳統(tǒng)的SNMP路由器的管理功能、以及數(shù)據(jù)收集和診斷功能。DSP 32′執(zhí)行來自于內(nèi)部DSP存儲(chǔ)器的控制程序,該程序或是由嵌入式CPU 12從主存儲(chǔ)器14′下載,或是由DSP 32′內(nèi)的或與之關(guān)聯(lián)的閃存EPROM提供。該DSP控制程序用于在DSP存儲(chǔ)器內(nèi)建立和管理數(shù)據(jù)的路由選擇和濾波樹。當(dāng)數(shù)據(jù)分組被網(wǎng)絡(luò)控制器38′接收時(shí),源和目的分組數(shù)據(jù)被傳送到DSP 32′并由之進(jìn)行處理,根據(jù)路由選擇和濾波樹決定是否和如何發(fā)送該分組。DSP 32′和嵌入式CPU 12′兩者都可以如所希望的那樣用于執(zhí)行協(xié)議轉(zhuǎn)換和執(zhí)行安全協(xié)議。
Ⅱ.軟件系統(tǒng)的體系結(jié)構(gòu)在與計(jì)算機(jī)系統(tǒng)10的主要組件有關(guān)的數(shù)據(jù)流動(dòng)方面,圖3的示意圖50示出了I/O通道控制器的操作。數(shù)據(jù)的輸出流實(shí)際上發(fā)自連同操作系統(tǒng)一起被主處理器12執(zhí)行的應(yīng)用程序。應(yīng)用程序在應(yīng)用程序?qū)?2中的執(zhí)行導(dǎo)致將數(shù)據(jù)56傳送到存儲(chǔ)器14中的主存儲(chǔ)器存儲(chǔ)空間54。通過作為基于主機(jī)的信號(hào)處理器的主處理器12的執(zhí)行,在應(yīng)用程序的管理下,該數(shù)據(jù)可被進(jìn)一步處理。因此,數(shù)據(jù)流60可以在存儲(chǔ)器空間54與主機(jī)信號(hào)處理層58之間被反復(fù)傳送。主處理器12實(shí)際執(zhí)行的特定的信號(hào)處理實(shí)質(zhì)上是由各種設(shè)備驅(qū)動(dòng)程序決定的,這些設(shè)備驅(qū)動(dòng)程序共同實(shí)現(xiàn)了具體實(shí)現(xiàn)的基于主機(jī)的信號(hào)處理器API(HBSP API)的、全部的或有效的功能性。HBSP API調(diào)用最終直接或間接地被解決成對(duì)I/O通道控制器設(shè)備驅(qū)動(dòng)程序的調(diào)用,從而啟動(dòng)一個(gè)數(shù)據(jù)傳送控制線程,以便將數(shù)據(jù)流64從主存儲(chǔ)器空間54傳送到I/O通道控制器核心62,用于進(jìn)一步的傳輸和可能的處理。在執(zhí)行I/O通道控制器設(shè)備驅(qū)動(dòng)程序中,主處理器12一旦在主存儲(chǔ)器空間54中設(shè)置了定義數(shù)據(jù)流傳送64的控制線程,主處理器12然后就簡單地根據(jù)I/O通道控制器62的需求,來允許該控制線程的處理。此后,I/O通道控制器核心62負(fù)責(zé)該數(shù)據(jù)流傳送的實(shí)際執(zhí)行。
主處理器通過構(gòu)造一個(gè)或多個(gè)鏈接的總線傳送單元(bus transferunit,BTU)控制塊、來在主存儲(chǔ)器空間54中建立控制線程,從而使將主存儲(chǔ)器空間54中提供的流數(shù)據(jù)與控制線程關(guān)聯(lián)。在執(zhí)行I/O通道控制器設(shè)備驅(qū)動(dòng)程序中,主處理器12使用初始BTU控制塊對(duì)I/O通道控制器62初始化,并對(duì)I/O通道控制器62的某個(gè)配置寄存器進(jìn)行編程,以便對(duì)通過I/O通道控制器62的數(shù)據(jù)流的特定的路由選擇進(jìn)行配置。此后,主處理器12不再參與到I/O通道控制器核心62的數(shù)據(jù)流64的實(shí)際傳送。該數(shù)據(jù)流傳送在I/O通道控制器核心62的直接控制下被執(zhí)行,I/O通道控制器核心62作為總線主控外圍設(shè)備,與主處理器12一起、對(duì)到主存儲(chǔ)器空間54的訪問進(jìn)行仲裁。因此,如有關(guān)的控制線程所定義的、到I/O控制器62的多路并行數(shù)據(jù)流傳送的啟動(dòng)及持續(xù)的執(zhí)行,是實(shí)際上相互獨(dú)立地被執(zhí)行的,而且可被I/O通道控制器核心62異步地啟動(dòng)和完成。
每個(gè)總線傳送單元至少隱含地指定關(guān)聯(lián)的數(shù)據(jù)流的目的地。數(shù)據(jù)流可被指向數(shù)字信號(hào)處理器68的RAM存儲(chǔ)器空間、或指向各種直接連接的串行和并行總線外圍設(shè)備28、38的特定的外部硬件接口74。在數(shù)字信號(hào)處理器68處理數(shù)據(jù)流70時(shí),結(jié)果數(shù)據(jù)72可被傳送到串行總線外圍設(shè)備40、42的直接連接的外部硬件接口74。或者,結(jié)果數(shù)據(jù)可被存回到DSP RAM空間。隨后,數(shù)字信號(hào)處理器可再一次將數(shù)據(jù)流72從DSP RAM傳送到任一直接連接的串行總線外圍設(shè)備40、42。
對(duì)于傳送DSP RAM中存儲(chǔ)的數(shù)據(jù)流69、80,定義其控制線程的總線傳送單元控制塊可在系統(tǒng)主存儲(chǔ)器或DSP存儲(chǔ)器14、34兩者之一中被提供。最好,DSP控制線程總線傳送單元控制塊由主處理器12在系統(tǒng)存儲(chǔ)器14中建立。DSP RAM 34存儲(chǔ)空間的管理由主處理器12全局地執(zhí)行,且因此允許DSP 32、36在使用DSP RAM 34方面相互獨(dú)立地定義來操作。
定義DSP總線傳送單元控制塊是為了控制一個(gè)或多個(gè)數(shù)據(jù)流的傳送,該數(shù)據(jù)流通過I/O通道控制器核心62,并在其控制下被傳送到直接連接到I/O通道控制器62的、串行和并行總線外圍設(shè)備28、38的任一外部硬件接口74?;蛘撸琁/O通道控制器核心62可被命令將處理過的數(shù)據(jù)流84回送到主存儲(chǔ)器空間54,以便有可能被基于主機(jī)的信號(hào)處理器58進(jìn)一步處理或被應(yīng)用程序52使用。
數(shù)字信號(hào)處理器68和I/O通道控制器核心62從它們直接連接的外部硬件接口74接收輸入數(shù)據(jù)流76、82。當(dāng)數(shù)據(jù)流76直接被數(shù)字信號(hào)處理器68接收時(shí),該數(shù)據(jù)流最好被處理并存儲(chǔ)到DSP RAM 34中。如此被存儲(chǔ)的數(shù)據(jù)的隨后的傳送由最好是系統(tǒng)主存儲(chǔ)器14中提供的BTU控制塊協(xié)調(diào)進(jìn)行。該DSP BTU控制線程管理到I/O控制器62的數(shù)據(jù)流69的傳送,以便作為流84傳送到主存儲(chǔ)器空間54、或者作為流80被重定向到外部硬件接口74。
來自直接連接到I/O通道控制器核心62的外部硬件接口74的輸入數(shù)據(jù)流82,作為數(shù)據(jù)流84被重定向到主存儲(chǔ)器空間54。或者,數(shù)據(jù)82可能作為流70被指向DSP RAM 34。在后一種情況下,該數(shù)據(jù)流典型地由數(shù)字信號(hào)處理器68處理,然后,或者作為流72被直接提供到外部硬件接口74,或者作為流69被傳送到I/O通道控制器62,以便作為數(shù)據(jù)流80返回到外部硬件接口74,或作為數(shù)據(jù)流84返回到主存儲(chǔ)器空間54。
通常,輸入數(shù)據(jù)流最終被路由選擇到主存儲(chǔ)器空間54。一旦已經(jīng)存在于主存儲(chǔ)器空間54中,數(shù)據(jù)流60可被基于主機(jī)的信號(hào)處理器58進(jìn)一步處理。最后,數(shù)據(jù)流86代表被完整地處理過的輸入數(shù)據(jù)流,可被操作系統(tǒng)從主存儲(chǔ)空間54返送回應(yīng)用程序52。
因此,本發(fā)明的數(shù)據(jù)流管理系統(tǒng)50提供了可以靈活定義、反復(fù)交叉(iteratively traversed)的多個(gè)數(shù)據(jù)路徑,從而通過基于主機(jī)的信號(hào)處理器58、I/O通道控制器62、數(shù)字信號(hào)處理器68以及經(jīng)外部硬件接口74聯(lián)接的外部硬件的、有序組合或子組合,高效地獲得對(duì)多路有效并行數(shù)據(jù)流的最大處理。
系統(tǒng)50的另一個(gè)圖如圖4所示,圖中示出了在本發(fā)明的計(jì)算機(jī)系統(tǒng)10內(nèi)建立起來的控制和數(shù)據(jù)的流動(dòng)路徑。應(yīng)用程序?qū)?0包括任意數(shù)量的協(xié)作執(zhí)行(co-executing)的應(yīng)用程序92、94。這些應(yīng)用程序92、94使應(yīng)用程序接口(API)的調(diào)用進(jìn)入到操作系統(tǒng)層96中,操作系統(tǒng)層96包括基本操作系統(tǒng)98和操作擴(kuò)展(extension),該操作擴(kuò)展典型地包括MIDI 100、TAPI 102、以及語音API 104操作系統(tǒng)擴(kuò)展。例如,任意數(shù)量的附加的或可替換的API、可在與用于Ring 3操作系統(tǒng)擴(kuò)展的Direct-X API規(guī)范相一致的操作系統(tǒng)層96中建立。為方便起見,存儲(chǔ)塊106被表示為與操作系統(tǒng)98邏輯上共存于操作系統(tǒng)層96內(nèi)。
設(shè)備驅(qū)動(dòng)程序接口層108包括各種Ring 0設(shè)備驅(qū)動(dòng)程序,用以支持在操作系統(tǒng)層96與作為外圍設(shè)備層114的一部分而被提供的任一組件之間的通信和數(shù)據(jù)傳送。具體地,設(shè)備驅(qū)動(dòng)程序接口層108包括中斷處理程序110和設(shè)備驅(qū)動(dòng)程序112,從而通過主處理器12的執(zhí)行,對(duì)建立于外圍設(shè)備控制器層114內(nèi)的I/O通道控制器116提供支持。
最后,本發(fā)明提供了控制器外圍設(shè)備層118。該控制器外圍設(shè)備層118大體上包括數(shù)字信號(hào)處理器120、可被DSP 120訪問的存儲(chǔ)器122、以及可能被DSP 120和I/O通道控制器116兩者訪問的專用功能外部硬件124。
在典型的控制流中,應(yīng)用程序A 92通過傳統(tǒng)的與操作系統(tǒng)層96的相互作用在存儲(chǔ)器106內(nèi)建立數(shù)據(jù)流。當(dāng)至少數(shù)據(jù)流的初始部分在存儲(chǔ)器106內(nèi)部建立時(shí),就從操作系統(tǒng)層96調(diào)用設(shè)備驅(qū)動(dòng)程序112,以準(zhǔn)備通過I/O通道控制器116向控制器外圍設(shè)備層118中的存儲(chǔ)器122、或外部硬件124傳送數(shù)據(jù)流。設(shè)備驅(qū)動(dòng)程序112在存儲(chǔ)器106內(nèi)建立一個(gè)或多個(gè)BTU控制塊,以定義執(zhí)行數(shù)據(jù)流傳送所必需的控制線程??刂凭€程的初始BTU被設(shè)備驅(qū)動(dòng)程序112編程到I/O通道控制器116中,并且提供一個(gè)信號(hào),以允許I/O通道控制器116操作被編程的BTU。其后,I/O通道控制器116的操作實(shí)質(zhì)上獨(dú)立地完成數(shù)據(jù)流的傳送,該數(shù)據(jù)流傳送是由被編程到I/O通道控制器116中的BTU和存儲(chǔ)器106內(nèi)的任何其它BTU定義的,這些BTU都是定義該數(shù)據(jù)流傳送的控制線程的一部分。
當(dāng)數(shù)據(jù)流傳送的目標(biāo)是存儲(chǔ)器122時(shí),設(shè)備驅(qū)動(dòng)程序112將首先在存儲(chǔ)器106內(nèi)建立另外一個(gè)由一個(gè)或多個(gè)BTU控制塊組成的序列,以便建立適于管理DSP端數(shù)據(jù)流傳送的控制線程。初始BTU被設(shè)備驅(qū)動(dòng)程序112編程到I/O通道控制器116中。其次,設(shè)備驅(qū)動(dòng)程序112可向數(shù)字信號(hào)處理器120發(fā)出命令,指定期望的DSP功能。最好,通過使用編程的I/O(PIO)將該命令發(fā)送到一個(gè)或多個(gè)、由I/O通道控制器核心116支持的寄存器中,并且,數(shù)字信號(hào)處理器120可響應(yīng)一個(gè)表示命令消息已被發(fā)送的中斷、對(duì)其進(jìn)行讀取。為響應(yīng)發(fā)送的命令,DSP 120最好進(jìn)行必要的初始化,以便執(zhí)行命令的功能,然后向I/O通道控制器116提供信號(hào)136,以允許控制器根據(jù)預(yù)編程的BTU進(jìn)行操作。
在得到兩個(gè)允許的、且至少隱含地連接在一起的BTU之后,I/O通道控制器116啟動(dòng)自主的數(shù)據(jù)傳送,以便直接通過126、從存儲(chǔ)器106中檢索由主機(jī)端BTU定義的數(shù)據(jù)流部分,將該數(shù)據(jù)暫時(shí)存儲(chǔ)到內(nèi)部FIFO池中,并且將數(shù)據(jù)自主地傳送到存儲(chǔ)器122內(nèi)、由DSP端BTU定義的一段連續(xù)地址中。I/O通道控制器在訪問存儲(chǔ)器106中的自主操作更象一個(gè)總線主控設(shè)備,直接參加到由主處理器12的硬件總線管理控制器和PCI橋接口18支持的存儲(chǔ)器周期仲裁中。結(jié)果,實(shí)質(zhì)上,在實(shí)際上執(zhí)行數(shù)據(jù)傳送126中不需要使用主處理器12的執(zhí)行周期。
在存儲(chǔ)器106中形成數(shù)據(jù)流、以及在典型地執(zhí)行設(shè)備驅(qū)動(dòng)程序112中,都實(shí)際需要主處理器12的執(zhí)行周期,以最初建立和管理定義數(shù)據(jù)流傳送的控制線程的一個(gè)或多個(gè)主機(jī)端和DSP端BTU的序列。然而,主處理器12創(chuàng)建和管理BTU所需要的執(zhí)行周期與在應(yīng)用程序92、94的控制下開始處理、然后將數(shù)據(jù)流存儲(chǔ)到存儲(chǔ)器106中所需要的執(zhí)行周期相比較是相對(duì)少的。而且,I/O通道控制器116的操作允許存儲(chǔ)器106中的數(shù)據(jù)流的形成、與在I/O通道控制器116控制下的數(shù)據(jù)126的實(shí)際傳送非嚴(yán)格同步。因此,主處理器12在建立和管理主機(jī)端BTU中、對(duì)設(shè)備驅(qū)動(dòng)程序112的有限的執(zhí)行不必與通過I/O通道控制器116的數(shù)據(jù)傳送的實(shí)時(shí)需求緊密匹配。
I/O通道控制器核心116自身的自主的需求驅(qū)動(dòng)操作和FIFO池緩沖功能使得在支持I/O通道控制器116中、主處理器12的執(zhí)行中的非嚴(yán)格同步變得更加容易。在數(shù)據(jù)流傳送進(jìn)行時(shí),I/O通道控制器核心116能夠自主地從存儲(chǔ)器106和存儲(chǔ)器122兩者中讀取連續(xù)的BTU,雖然最好只從存儲(chǔ)器106中讀取。因此,當(dāng)被一個(gè)BTU控制的數(shù)據(jù)流部分被完成時(shí),I/O通道控制器核心116可從存儲(chǔ)器中的控制線程中讀取下一個(gè)BTU,并以新讀取的BTU代替已完成的BTU。因此,只要控制線程中的連續(xù)的源和目的控制BTU被定義為提供數(shù)據(jù)流的正在進(jìn)行的傳送,那么指向存儲(chǔ)器122的輸出數(shù)據(jù)流就能自主地進(jìn)行傳送。DSP端BTU被完成、被重加載、以及被重允許的速率實(shí)際上反映了數(shù)字信號(hào)處理器120在分別執(zhí)行每個(gè)命令功能中所需求的數(shù)據(jù)通過速率。
當(dāng)數(shù)據(jù)流的目的地是外部硬件124時(shí),就會(huì)出現(xiàn)一種更簡單的操作模式。I/O通道控制器116對(duì)通過數(shù)據(jù)路徑130到外部硬件124的數(shù)據(jù)傳送提供有限的、但充足的緩沖。當(dāng)外部硬件124需求來自I/O通道控制器116的數(shù)據(jù)時(shí),便使用當(dāng)前BTU來控制從存儲(chǔ)器106到I/O通道控制器核心116的數(shù)據(jù)流的傳輸。當(dāng)外部硬件124對(duì)I/O通道控制器核心116緩沖的有效數(shù)據(jù)進(jìn)行抽取時(shí),控制器116自主地操作,以從當(dāng)前BTU定義的存儲(chǔ)器106中的位置中對(duì)緩沖器重填。當(dāng)由當(dāng)前BTU引用的數(shù)據(jù)被外部硬件124使用時(shí),控制線程中的下一個(gè)連續(xù)的BTU被I/O通道控制器116從存儲(chǔ)器106中自主地載入,以維持?jǐn)?shù)據(jù)流126的傳送。
輸入數(shù)據(jù)流以大體類似的方式被I/O通道控制器核心116處理。DSP120從直接連接的外部硬件接收的數(shù)據(jù)流可被DSP 120處理并被存儲(chǔ)到存儲(chǔ)器122中。每個(gè)輸入數(shù)據(jù)流的接收都由主處理器12預(yù)先處理,在存儲(chǔ)器106中形成一個(gè)或多個(gè)DSP端BTU的相應(yīng)的控制線程,同時(shí)初始BTU被編程到I/O通道控制器核心116中,然后被DSP 120允許。一個(gè)或多個(gè)主機(jī)端BTU的控制線程也在存儲(chǔ)器106中被建立,再一次,初始BTU被編程到I/O通道控制器核心116中。即使是空的,也最好將這個(gè)初始的主機(jī)端BTU設(shè)置為允許狀態(tài)。
然后,一條指定將被DSP 120執(zhí)行的功能的命令消息被發(fā)送到I/O通道控制器核心116內(nèi)的消息存儲(chǔ)寄存器中。最好,該消息被DSP 120確認(rèn),請(qǐng)求的功能被初始化,外部提供的數(shù)據(jù)流的一部分被DSP 120接收和處理,并存儲(chǔ)到存儲(chǔ)器122中的一個(gè)已知的地址塊中。然后向I/O通道控制器核心116提供一個(gè)允許信號(hào)136,以便允許初始的DSP端BTU,并允許接收到的數(shù)據(jù)流的自主傳送。當(dāng)DSP端BTU指定的數(shù)據(jù)流傳送被完成時(shí),下一個(gè)DSP端BTU被加載到I/O通道控制器核心116中,并保持禁止。同時(shí),外部提供的數(shù)據(jù)流的下一部分被接收和處理,進(jìn)入到存儲(chǔ)器122中由下一個(gè)DSP端BTU引用的另一個(gè)已知的地址塊中。而且,一旦該地址塊被處理過的數(shù)據(jù)填滿,則響應(yīng)允許信號(hào)136,當(dāng)前DSP端BTU被允許。通常,存儲(chǔ)器122中的這兩個(gè)地址塊被連續(xù)地交替地用于單個(gè)數(shù)據(jù)流的處理的連續(xù)的交替中。
當(dāng)存儲(chǔ)器106中的當(dāng)前主機(jī)端BTU指定的地址塊被處理過的輸入數(shù)據(jù)流填滿時(shí),BTU便完成了,然后I/O通道控制器核心116向中斷處理器110發(fā)出中斷132,中斷處理器110調(diào)用設(shè)備驅(qū)動(dòng)程序112,從而至少用信號(hào)告知該地址塊可用于主機(jī)處理。最好,在存儲(chǔ)器106中指定另一個(gè)地址塊的下一個(gè)BTU,也在允許狀態(tài)下被I/O通道控制器核心116自主載入,以繼續(xù)接收處理過的輸入數(shù)據(jù)流。
根據(jù)合理假定,即,假定在I/O通道控制器核心116與存儲(chǔ)器106之間的數(shù)據(jù)的傳送比DSP可接收、處理數(shù)據(jù)并將其儲(chǔ)存到存儲(chǔ)器122中的速率快得多,則I/O通道控制器116內(nèi)雖小但充足的緩沖作用就能確保數(shù)據(jù)流128的需求驅(qū)動(dòng)傳送而不發(fā)生數(shù)據(jù)溢出。
I/O通道控制器核心116也對(duì)直接從外部硬件124接收到的任何數(shù)據(jù)流提供數(shù)據(jù)緩沖。通常,外部硬件124響應(yīng)主處理器對(duì)設(shè)備驅(qū)動(dòng)程序112的執(zhí)行而被允許進(jìn)行操作。I/O通道控制器核心116最好向設(shè)備驅(qū)動(dòng)程序112提供寄存器接口,從而允許編程的I/O通到外部硬件124的可編程寄存器。與外部硬件124的初始化同時(shí),BTU控制線程在存儲(chǔ)器106內(nèi)建立,并且初始的BTU被編程到I/O通道控制器核心116中,并被允許控制數(shù)據(jù)的接收。數(shù)據(jù)流130以外部需求的數(shù)據(jù)傳送速率,被直接緩沖到I/O通道控制器核心116中。接著,I/O通道控制器116自主地操作,在當(dāng)前BTU的控制下向存儲(chǔ)器106傳送接收到的數(shù)據(jù)流。再次合理地假定I/O通道控制器核心116能以比接收到的數(shù)據(jù)流130的速率更大的速率向存儲(chǔ)器106傳送數(shù)據(jù),雖然最好實(shí)際上大得多,則數(shù)據(jù)溢出再一次被有效防止。
Ⅲ.I/O通道控制器的體系結(jié)構(gòu)根據(jù)本發(fā)明的優(yōu)選實(shí)施例建立起來的、I/O通道控制器140的總的體系結(jié)構(gòu)示于圖5a。I/O通道控制器140最好使用三個(gè)主要的內(nèi)部總線,包括總線主控程序總線142、FIFO池總線144、以及PIO總線146??偩€主控程序總線142在任意數(shù)量的總線接口模塊148、150與總線傳送控制系統(tǒng)170之間提供通信通道。FIFO池總線144是一條專用總線,專門用于在總線接口模塊148、150、FIFO池172、與任意數(shù)量的集成的外圍設(shè)備和外圍設(shè)備接口174-188之間的高速脈沖串?dāng)?shù)據(jù)傳送。PIO總線146在總線接口模塊148、150、總線傳送控制系統(tǒng)170、與集成的外圍設(shè)備和外圍設(shè)備接口174-188之間提供通用的編程的I/O通信路徑。PIO總線訪問控制器151在每個(gè)總線接口模塊148、150之間起PIO總線訪問仲裁器的作用。
總線接口模塊148、150中的每一個(gè)用于將I/O通道控制器核心140與各自的外部通信總線連接起來。主機(jī)接口模塊148用于將I/O通道控制器140聯(lián)接到外部PCI總線20,同時(shí),DSP總線接口模塊150類似地向連接到外部數(shù)字信號(hào)處理器32和DSP RAM 34的外圍設(shè)備總線30提供接口。
主機(jī)接口模塊148連接到總線20的地址、數(shù)據(jù)和控制(A/D/C)線154,并向中斷線156提供外部接口,該中斷線被I/O通道控制器核心140內(nèi)部的中斷控制器驅(qū)動(dòng)。在主機(jī)接口模塊148中,地址、數(shù)據(jù)和控制線154連接到主機(jī)總線受控部件158和主機(jī)總線主控部件160。主機(jī)總線受控部件158向PIO總線146提供傳統(tǒng)的基于寄存器的編程的I/O接口,從而使主處理器12能夠訪問該P(yáng)IO總線146。該寄存器接口還允許程序訪問PIO總線146以及通過PIO總線146訪問內(nèi)部地聯(lián)接到該P(yáng)IO總線146的各部件的可編程配置和數(shù)據(jù)寄存器。主機(jī)總線受控部件158還提供了一個(gè)外部可訪問的寄存器接口,該接口允許主機(jī)接口模塊148的編程的控制。主機(jī)總線主控部件160自身最好包括控制邏輯,適于支持PCI總線20上的傳統(tǒng)的總線主控訪問仲裁。
DSP總線接口模塊150類似地連接到DSP總線30的地址、數(shù)據(jù)和控制線。地址、數(shù)據(jù)和控制線162連接到DSP總線受控部件166和DSP總線主控部件168。DSP總線接口模塊150提供用于中斷線164的外部接口,該中斷線164由I/O通道控制器核心140內(nèi)部的一個(gè)中斷控制器驅(qū)動(dòng)。DSP總線受控部件166提供可編程寄存器接口,用于DSP總線主控部件168的可編程控制,以及支持在總線30和PIO總線146之間的通常的編程的I/O訪問。DSP總線主控部件168還包括控制邏輯,適于允許DSP總線30上的傳統(tǒng)的總線主控訪問仲裁。
通過PIO控制器151來控制主機(jī)和DSP接口模塊148、150對(duì)PIO總線146的協(xié)調(diào)訪問??偩€受控部件158、166中的每一個(gè)都必須仲裁,以便獨(dú)占對(duì)PIO總線的訪問,并通到可經(jīng)由PIO總線146訪問的任一接口寄存器。另外,主機(jī)總線受控部件158能夠請(qǐng)求PIO控制器151建立PIO總線旁路。建立的旁路數(shù)據(jù)路徑從主處理器12開始,通過主機(jī)總線受控部件158、PIO總線146以及DSP總線受控部件166。這樣,向主處理器12提供一個(gè)數(shù)據(jù)路徑,從而允許通過DSP總線30可訪問的所有外圍設(shè)備被主處理器12直接控制。這有助于簡化對(duì)一些并行總線外圍設(shè)備38的操作的控制,例如,直接設(shè)置或讀取CODEC 42的控制模式。
總線傳送控制系統(tǒng)170起中央控制系統(tǒng)的作用,管理在主機(jī)和DSP總線主控部件160、168、FIFO池172和連接到FIFO池總線144的集成外圍設(shè)備和外圍設(shè)備接口174-183之間的脈沖串?dāng)?shù)據(jù)傳送。總線傳送控制系統(tǒng)170維持一張可編程的BTU表。在本發(fā)明的優(yōu)選實(shí)施例中,BTU表提供48個(gè)BTU的同時(shí)存儲(chǔ),每一個(gè)BTU占16個(gè)連續(xù)的存儲(chǔ)字節(jié)。表Ⅰ提供了該優(yōu)選BTU結(jié)構(gòu)的描述。表Ⅰ字段字節(jié) 位地址4[31:0]傳送長度2[15:0]鏈接描述符 2[15:0]控制字 2[15:0]狀態(tài)字 2[15:0]保留4[31:0]BTU結(jié)構(gòu)的地址字段定義主機(jī)和DSP總線主控部件160、168使用的存儲(chǔ)器地址,用于在系統(tǒng)主存儲(chǔ)器14與I/O通道控制器26之間的數(shù)據(jù)傳送,以及I/O通道控制器46與DSP RAM 34之間的數(shù)據(jù)傳送。當(dāng)數(shù)據(jù)傳送進(jìn)行時(shí),BTU的地址字段的值被更新,以便使該地址的值保持為正確的存儲(chǔ)器指針。相反,傳送長度的值在傳送進(jìn)行時(shí)減小,以便保持正確地反映由BTU所描述的剩余傳送長度。在本發(fā)明的優(yōu)選實(shí)施例中,主機(jī)的地址空間被作為平坦的(flat)32位地址字段來處理。用于DSP總線主控傳送的地址字段可被不同地定義。如表Ⅱ所示,通過定義地址字段的一個(gè)或多個(gè)高位,可容易地執(zhí)行DSP RAM 34的對(duì)稱分割,以便將多個(gè)數(shù)字信號(hào)處理器32、36的DSP RAM,或其它可能在DSP RAM 34中提供或使用離散存儲(chǔ)區(qū)的外圍設(shè)備38的DSP RAM映射到I/O通道控制器核心140的公用地址空間中。表Ⅱ地址(僅DSP) 說明 位DSP DSP#1或DSP#0 31DM 數(shù)據(jù)(1)或程序(0)的存儲(chǔ)器 30保留 保留供將來使用[29:15]地址 字節(jié)地址 [15:0]鏈接描述符字段允許存儲(chǔ)一個(gè)指向當(dāng)前控制線程中的下一個(gè)連續(xù)的BTU的數(shù)組指針(array pointer)。最好,將來駐留在I/O通道控制器26提供的BTU存儲(chǔ)空間中的控制線程的連續(xù)的BTU存儲(chǔ)到系統(tǒng)主存儲(chǔ)器14內(nèi)的表中,盡管也可將BTU存儲(chǔ)到DSP RAM 34中。當(dāng)BTU被存儲(chǔ)到系統(tǒng)主存儲(chǔ)器14中時(shí),一個(gè)兩字節(jié)的主機(jī)基本鏈接地址值被分離地存儲(chǔ)到I/O通道控制器核心140的配置寄存器中。該主機(jī)基本鏈接地址,實(shí)際上就是BTU表在系統(tǒng)主存儲(chǔ)器14中的基地址,將其與當(dāng)前BTU鏈接描述符的值連接起來,以便向系統(tǒng)主存儲(chǔ)器14中存儲(chǔ)的下一個(gè)被鏈接的BTU提供存儲(chǔ)器引用。相反,僅BTU鏈接描述符就足以提供訪問存儲(chǔ)在DSP RAM 34中的被鏈接的BTU所需的完整的地址說明。鏈接描述符字段用于當(dāng)I/O通道控制器核心26中的當(dāng)前BTU的傳送長度減到零時(shí),自主地加載下一個(gè)被鏈接的BTU。是否自主地將鏈接描述符字段用于加載下一個(gè)BTU取決于配置控制字寄存器中存儲(chǔ)的控制位的值。表Ⅲ是該控制字寄存器的優(yōu)選定義。表Ⅲ控制字 說明 位總線主控 從DSP/主機(jī)存儲(chǔ)器的總線主控 15中斷 BTU完成時(shí)的中斷 [14:13]00 不中斷01 主機(jī)中斷10 DSPA中斷11 DSPB中斷鏈接定義 鏈接信息有效/無效(即等待) 12鏈接主控 鏈接到BTU鏈接表 [11:10]00 不鏈接01 從主機(jī)鏈接10 從DSPA鏈接11 從DSPB鏈接數(shù)據(jù)轉(zhuǎn)換 選擇傳送期間的數(shù)據(jù)轉(zhuǎn)換[9:8]脈沖串長度 脈沖串每次32/非16個(gè)字節(jié) 7方向 傳送自/非到FIFO 6保留 保留供內(nèi)部使用5FIFO號(hào) 從FIFO池選擇FIFO [4:0]在控制字字段中,總線主控位定BTU是對(duì)應(yīng)于主機(jī)端控制線程還是對(duì)應(yīng)于DSP端控制線程。中斷子字段定義當(dāng)BTU傳送長度減到零時(shí),是否發(fā)送中斷以及將中斷最終發(fā)送給誰。中斷源向量的編碼以及外部中斷信號(hào)的實(shí)際產(chǎn)生由I/O通道控制器核心140內(nèi)部的中斷控制器188進(jìn)行控制。鏈接定義位指定鏈接描述符字段是否維持一個(gè)有效的值。鏈接控制子字段存儲(chǔ)BTU鏈接表在系統(tǒng)主存儲(chǔ)器14中的基地址位置。數(shù)據(jù)轉(zhuǎn)換子字段對(duì)傳送時(shí)施加到數(shù)據(jù)上的數(shù)據(jù)變換進(jìn)行編碼,例如字節(jié)倒序或字節(jié)/字轉(zhuǎn)換。
脈沖串長度位在16和32字節(jié)脈沖串傳送長度之間進(jìn)行選擇,同時(shí),方向位指定了脈沖串傳送的方向。FIFO號(hào)子字段用于識(shí)別FIFO池172中的特定的FIFO的數(shù)字標(biāo)識(shí)符,在當(dāng)前BTU的控制下,F(xiàn)IFO池172可被用作源或目的。
最后,如表Ⅳ所述,BTU的狀態(tài)字字段定義了一些單個(gè)的位,這些位反映指定的BTU是否忙,比如正處于BTU更新操作期間,該操作由I/O通道控制器核心26自主地執(zhí)行;以及反映該BTU是否對(duì)參與總線主控訪問的仲裁有效且當(dāng)前可用,或是允許的。表Ⅳ子字段說明位忙位 BTU正忙于傳送/鏈接(只讀)1BTU允許 允許BTU仲裁總線控制 0多級(jí)循環(huán)優(yōu)先級(jí)仲裁器(circular priority arbiter,CPA)最好由總線傳送控制系統(tǒng)170提供,以便持續(xù)地評(píng)價(jià)當(dāng)前允許的BTU。通過允許直接標(biāo)識(shí)那些具有自己的BTU允許位集的BTU的方式,將仲裁器聯(lián)接到BTU。在已標(biāo)識(shí)的允許的BTU集中,CPA逐級(jí)前進(jìn)地選擇和登臺(tái)(stage)用于主機(jī)和DSP總線主控部件160、168中的每一個(gè)的BTU。
由CPA執(zhí)行的核心算法根據(jù)存在于仲裁周期中的一組訪問請(qǐng)求來運(yùn)行,該請(qǐng)求進(jìn)一步限于已標(biāo)識(shí)的允許的BTU集。按照基本的相對(duì)優(yōu)先級(jí),將所有可能的請(qǐng)求者從左到右排序。本發(fā)明的CPA對(duì)允許的請(qǐng)求者的優(yōu)先級(jí)提出了額外的限定。具體地說就是,在緊接的上一仲裁周期中獲勝的請(qǐng)求者在當(dāng)前的周期中實(shí)際上沒有優(yōu)先級(jí)。在當(dāng)前的仲裁周期中,通過將優(yōu)先權(quán)進(jìn)一步減至右邊,而將前一獲勝的請(qǐng)求者右邊的第一個(gè)允許的請(qǐng)求者,如果有的話,推到最高優(yōu)先級(jí)。如果在當(dāng)前周期中,在前一獲勝的請(qǐng)求者右邊不存在允許的請(qǐng)求者,那么就使用允許的請(qǐng)求者的、基本的、從左到右的相對(duì)優(yōu)先級(jí),來選擇當(dāng)前獲勝的請(qǐng)求者。
用于CPA的決策矩陣(decision matrix)最好被作為一個(gè)修正的倒置的二叉樹來提供。為維持狀態(tài)信息、以便標(biāo)識(shí)緊接著的前一仲裁周期的獲勝的請(qǐng)求者,提供了附加的控制邏輯。還提供了標(biāo)識(shí)子樹的狀態(tài)信息,包括前一獲勝的請(qǐng)求者以及在子樹的最低節(jié)點(diǎn),前一獲勝的請(qǐng)求者是在最低二叉節(jié)點(diǎn)的左邊還是右邊。因此,為確保在所有可能的請(qǐng)求者中進(jìn)行充分公平的仲裁提供了有效的機(jī)制。
圖5b較詳細(xì)地示出了總線傳送控制系統(tǒng)170。該總線傳送控制系統(tǒng)170包括循環(huán)優(yōu)先級(jí)仲裁器190。通過控制線194,從直接連接到總線主控程序總線142和PIO總線146的設(shè)備處接收用于訪問BTU表192的各個(gè)訪問請(qǐng)求。將總線主控程序總線142和PIO總線146兩者的數(shù)據(jù)和BTU地址部分連接到BTU表192,以便允許BTU的讀和寫??偩€主控程序總線142還連接到BTU掃描器196,該掃描器196被仲裁器190作為連續(xù)請(qǐng)求訪問BTU表192來處理。BTU掃描器196連續(xù)掃描存儲(chǔ)在BTU表192中的允許的BTU,以便對(duì)內(nèi)部寄存器組198里的主機(jī)和DSP登臺(tái)寄存器(staging register)中的BTU標(biāo)識(shí)符和有關(guān)數(shù)據(jù)進(jìn)行登臺(tái)。表Ⅴ提供了優(yōu)選的BTU寄存器陣列的定義。表Ⅴ子字段 說明 字節(jié)BTU控制 對(duì)編程限定有用的復(fù)位、單步掃描、允許2以及刪除主機(jī)基本鏈接值 主機(jī)BTU表在主存儲(chǔ)器中的偏移量 2主機(jī)最佳BTU 最佳BTU寄存器 2主機(jī)當(dāng)前BTU 當(dāng)前BTU寄存器 2主機(jī)掃描BTU 掃描BTU寄存器 2DSP最佳BTU 最佳BTU寄存器 2DSP當(dāng)前BTU 當(dāng)前BTU寄存器 2DSP掃描BTU 掃描BTU寄存器 2通過仲裁器190的操作對(duì)每一個(gè)到BTU表192的訪問進(jìn)行唯一地仲裁。每當(dāng)總線主控部件160、168有空時(shí),其每一個(gè)分離地請(qǐng)求訪問BTU表192,以便獲得BTU存儲(chǔ)的數(shù)據(jù),該數(shù)據(jù)將被編程到總線主控部件160、168中,以便定義總線主控脈沖串?dāng)?shù)據(jù)傳送。在脈沖串?dāng)?shù)據(jù)傳送之后,總線主控部件160、168還要請(qǐng)求訪問BTU表192,以便更新當(dāng)前活動(dòng)的BTU。
總線受控部件158、166被允許通過PIO總線146訪問BTU表192。支持這樣的訪問,典型地是為了允許主處理器12和DSP 32、36將初始BTU編程到BTU表192中并隨后允許該BTU。當(dāng)需要監(jiān)視數(shù)據(jù)傳送在低水平的進(jìn)度、及分析其可能出現(xiàn)時(shí)的錯(cuò)誤條件時(shí),也可使用PIO總線142,來允許主處理器12對(duì)BTU的狀態(tài)進(jìn)行檢查。
基本上所有的其他的BTU表訪問周期都對(duì)BTU掃描器196有效。通過只考慮那些被允許的、且因此隱含地有效的BTU,可使掃描器196的掃描速度達(dá)到最大,同時(shí)減少了該掃描器196的整體復(fù)雜性,或使其達(dá)到最小。當(dāng)每個(gè)有效的且允許的BTU被掃描時(shí),BTU掃描器196還通過FIFO標(biāo)志總線171獲得支持FIFO標(biāo)志狀態(tài)信息,用于由正被掃描的BTU所引用的FIFO。因此,BTU掃描器196使所有到FIFO標(biāo)志存儲(chǔ)器的訪問變得有用和有效。
最后,當(dāng)對(duì)BTU表192中的一個(gè)BTU進(jìn)行每一個(gè)更新操作時(shí),總線傳送控制器系統(tǒng)170都可能根據(jù)編程控制而產(chǎn)生中斷。特定的更新操作是否會(huì)導(dǎo)致中斷的發(fā)出,這取決于該更新操作是否發(fā)出以下信號(hào)總線主控傳送錯(cuò)誤、BTU傳送完成、以及該BTU的控制字中的可編程的中斷說明位正被更新。如果要產(chǎn)生一個(gè)中斷,就要將其通過控制線200發(fā)送到I/O通道控制器核心26內(nèi)部的中斷控制器。
當(dāng)一個(gè)BTU控制的總線控制脈沖串傳送結(jié)束時(shí),主機(jī)或DSP總線主控部件160、168可將每個(gè)BTU訪問仲裁周期視為開始。相應(yīng)的BTU被更新,而且,作為前一仲裁周期的產(chǎn)物而被選擇的下一個(gè)BTU被用作數(shù)據(jù)源、對(duì)總線主控部件160、168進(jìn)行編程,用于下一個(gè)總線主控脈沖串傳送。對(duì)單個(gè)BTU所指定的數(shù)據(jù)傳送的處理并不是一直進(jìn)行到結(jié)束,而是將其按脈沖串長度的邊界進(jìn)行分段或分區(qū),并與其他BTU指定的數(shù)據(jù)傳送進(jìn)行交織。
由于仲裁過的BTU的預(yù)登臺(tái)(pre-staing),下一BTU可立即用于總線控制周期的編程。這樣,當(dāng)下一個(gè)BTU下臺(tái)(stage down)、用于編程到主機(jī)或DSP總線主控部件160、168中時(shí),循環(huán)優(yōu)先級(jí)仲裁器在當(dāng)前的總線控制脈沖串傳送完成之前、對(duì)新的下一個(gè)BTU進(jìn)行選擇和登臺(tái)。因此,I/O控制器可支持的最大的潛在數(shù)據(jù)帶寬僅受在I/O通道控制器26與系統(tǒng)主存儲(chǔ)器14和RAM 34之間的可支持的、潛在的總線主控傳送速度的限制。
表Ⅵ描述了主機(jī)和DSP總線主控部件160、168兩者所使用的總線主控編程地址和控制接口。表Ⅵ總線主控地址總線說明 位地址用于傳送的起始地址 [31:0]總線主控傳送控制說明 位鏈接鏈接而不傳送 18傳送完成傳送后向FIFO發(fā)送TD 17BTU完成 傳送后向FIFO發(fā)送BTUD 16FIFO字節(jié)允許FIFO字節(jié)允許(編碼的) [15:14]脈沖串 傳送的字節(jié)數(shù) [13:8]數(shù)據(jù)轉(zhuǎn)換(從BTU)傳送期間的字節(jié)交換[7:6]方向從/非FIFO傳送[5]FIFO號(hào) FIFO池中的FIFO [4:0]為了對(duì)總線主控器160、168編程以傳送數(shù)據(jù)脈沖串,向總線主控程序總線142的地址部分提供用于數(shù)據(jù)傳送的存儲(chǔ)器地址,該地址被保持在BTU的地址字段中??偩€控制程序總線的傳送控制總線部分將表Ⅴ中描述的控制信號(hào)傳送到總線主控部件160、168。鏈接控制位將指定當(dāng)前的總線主控脈沖串傳送是用于數(shù)據(jù),而不是用于被改變的或鏈接終點(diǎn)的BTU。傳送完成和BTU完成控制信號(hào)允許將流的狀態(tài)信息有效地編碼為FIFO數(shù)據(jù)流。FIFO字節(jié)允許子字段提供的編碼值、是在當(dāng)前總線控制數(shù)據(jù)脈沖串中正被傳送的一個(gè)4字節(jié)字中的數(shù)據(jù)的有序字節(jié)位置的編碼值。脈沖串子字段指定作為編程的脈沖串?dāng)?shù)據(jù)傳送部分的傳送的字節(jié)數(shù)。數(shù)據(jù)轉(zhuǎn)換子字段反映了將被施加到數(shù)據(jù)傳送上的期望的數(shù)據(jù)轉(zhuǎn)換。方向控制位標(biāo)識(shí)脈沖串?dāng)?shù)據(jù)傳送的方向。最后,F(xiàn)IFO號(hào)指定參與脈沖串傳送的FIFO池中的FIFO。
一旦被編程,主機(jī)和DSP總線主控部件160、168就自主地運(yùn)行,仲裁并執(zhí)行大量的總線訪問周期,以便執(zhí)行編程的脈沖串?dāng)?shù)據(jù)傳送。脈沖串?dāng)?shù)據(jù)傳送進(jìn)入I/O通道控制器26時(shí),該脈沖串?dāng)?shù)據(jù)被臨時(shí)存儲(chǔ)在總線主控部件160、168內(nèi)的FIFO中。然后,由總線主控部件160、168執(zhí)行一個(gè)單獨(dú)的請(qǐng)求確認(rèn)仲裁,以獲得到和通過FIFO池總線144到FIFO池172的訪問。然后,來自內(nèi)部FIFO的數(shù)據(jù)就被傳送到FIFO池172,具體地說,是被傳送到當(dāng)前BTU的FIFO標(biāo)識(shí)符指定的FIFO。
對(duì)于從I/O通道控制器26輸出的數(shù)據(jù),總線主控部件160、168起初對(duì)訪問FIFO池172進(jìn)行仲裁,并將來自BTU提供的FIFO標(biāo)識(shí)符所指定的FIFO的脈沖串長度的字節(jié)數(shù)預(yù)加載到其內(nèi)部的FIFO中。然后,執(zhí)行自主的總線主控操作,從而將脈沖串?dāng)?shù)據(jù)從內(nèi)部FIFO傳送出主機(jī)或DSP總線主控部件160、168。
使用稍微不同的總線主控部件160、168的編程,以便在自主地繼續(xù)、或至少準(zhǔn)備繼續(xù)主機(jī)端或DSP端的控制線程中檢索被鏈接到下一個(gè)的BTU。一個(gè)完整的、由具有有效的且允許的鏈接描述符的BTU所指定的數(shù)據(jù)傳送一經(jīng)完成,該BTU就通過循環(huán)優(yōu)先級(jí)仲裁器被循環(huán)、直到該BTU再次被選擇用于控制總線主控脈沖串?dāng)?shù)據(jù)傳送。作為適當(dāng)?shù)目紤],零BTU傳送長度引起鏈接描述符通過總線主控程序總線的低位部分被傳送到主機(jī)或DSP總線主控部件160、168。在將BTU存儲(chǔ)到系統(tǒng)主存儲(chǔ)器14中時(shí),總線主控程序總線的高位地址部分被用于同時(shí)向主機(jī)總線主控部件160提供基于主機(jī)的鏈路描述符。RAM 34中的BTU被單獨(dú)存儲(chǔ)在鏈接描述符的地址范圍內(nèi)。在任何情況下,鏈接控制位被設(shè)置,以便發(fā)出信號(hào)鏈接終點(diǎn)的BTU傳送脈沖串正在被編程。最好,主機(jī)和DSP總線主控部件160、168的內(nèi)部FIFO具有至少等于BTU大小的深度。這樣,單個(gè)的總線主控脈沖串傳送可被用來從系統(tǒng)主存儲(chǔ)器14或DSP RAM 34中檢索期望的BTU。一旦期望的BTU被存儲(chǔ)到總線主控器內(nèi)部FIFO,主機(jī)或DSP總線主控部件160、168就請(qǐng)求訪問總線主控程序總線142,以便將BTU傳送到總線傳送控制系統(tǒng)170。在總線主控程序總線142上通過聲明請(qǐng)求控制信號(hào)來請(qǐng)求訪問。由總線傳送控制系統(tǒng)170產(chǎn)生的確認(rèn)信號(hào)授權(quán)唯一的、對(duì)字范圍內(nèi)更新/鏈接數(shù)據(jù)總線173的訪問,該字范圍內(nèi)更新/鏈接數(shù)據(jù)總線173通常隨FIFO池總線144一起提供。表ⅦFIFO更新總線 說明位更新標(biāo)志 表示一個(gè)更新周期1FIFO號(hào) 正被更新的FIFO號(hào)5讀長度 FIFO中的數(shù)據(jù)的字節(jié)數(shù)6寫長度 FIFO中的打開的字節(jié)數(shù)6讀字節(jié)允許 FIFO內(nèi)的讀字節(jié)選擇 4寫字節(jié)允許 FIFO內(nèi)的寫字節(jié)選擇 4BTU完成 BTU完成標(biāo)志到標(biāo)志存儲(chǔ)器1傳送完成 信號(hào)傳送完成 1空間有效 FIFO內(nèi)空間有效 1數(shù)據(jù)有效 FIFO內(nèi)數(shù)據(jù)有效 1一個(gè)兩位總線主控鏈接地址總線被總線傳送控制系統(tǒng)170驅(qū)動(dòng),以便協(xié)調(diào)最好三個(gè)更新/鏈接數(shù)據(jù)總線訪問周期,這對(duì)于將完整的BTU傳送到總線傳送控制系統(tǒng)170內(nèi)的BTU表中是必要的;第四位目前保留且不被傳送。有效鏈接起點(diǎn)的(linked-from)BTU被鏈接終點(diǎn)的(linked-to)BTU重寫。當(dāng)前BTU的BTU表中的位置被總線傳送控制系統(tǒng)保持,以便在每一個(gè)總線控制脈沖串?dāng)?shù)據(jù)傳送之后,允許對(duì)BTU進(jìn)行狀態(tài)更新操作。在當(dāng)前BTU也是鏈接起點(diǎn)的BTU時(shí),更新操作直接用鏈接終點(diǎn)的BTU同址重寫鏈接起點(diǎn)的BTU。然后,將該鏈接終點(diǎn)的BTU循環(huán)到循環(huán)優(yōu)先級(jí)仲裁器的正在進(jìn)行的仲裁操作中。
Ⅳ.分布式狀態(tài)和控制系統(tǒng)總線傳送控制系統(tǒng)170通常用于管理通過總線主控接148、150的、與FIFO池172有關(guān)的數(shù)據(jù)的傳送。然而,F(xiàn)IFO池172自身提供訪問控制邏輯,用于集中地控制到FIFO池總線144的數(shù)據(jù)訪問周期的授權(quán)。如表Ⅶ所述,F(xiàn)IFO池總線144最好包括32位寬數(shù)據(jù)總線、5位寬地址總線以及唯一訪問請(qǐng)求和授權(quán)控制線,該唯一訪問請(qǐng)求和授權(quán)控制線允許總線主控接口148、150以及集成外圍設(shè)備和外圍設(shè)備接174-182中的每一個(gè)單獨(dú)地請(qǐng)求訪問FIFO池總線144,和接收各自的訪問確認(rèn)信號(hào)。表ⅧFIFO池總線 說明位請(qǐng)求 用于FIFO池訪問的請(qǐng)求線 10請(qǐng)求完成 用于該次傳送的對(duì)FIFO池的最后的請(qǐng)求 10確認(rèn) 用于FIFO池訪問的確認(rèn)線 10FIFO號(hào) 正被訪問的FIFO號(hào) 5字節(jié)允許 FIFO內(nèi)的字節(jié)選擇 4數(shù)據(jù)進(jìn)從設(shè)備到FIFO池的數(shù)據(jù) 32數(shù)據(jù)出從FIFO池到設(shè)備的數(shù)據(jù) 32方向 數(shù)據(jù)傳送方向 1BTU完成 BTU完成標(biāo)志到標(biāo)志存儲(chǔ)器1數(shù)據(jù)有效 在FIFO中數(shù)據(jù)是有效的 1FIFO更新總線(表Ⅵ)與FIFO池總線相關(guān)且通常時(shí)其的一部分。FIFO更新總線最好包括五位FIFO狀態(tài)總線,用于將FIFO池172內(nèi)的一個(gè)FIFO的FIFO標(biāo)識(shí)符廣播到至少所有聯(lián)接到FIFO池總線144的集成外圍設(shè)備和外圍設(shè)備接174-183。每當(dāng)在FIFO池172中,將數(shù)據(jù)加入對(duì)應(yīng)的FIFO、或從對(duì)應(yīng)的FIFO取出時(shí),就通過更新總線廣播一個(gè)FIFO標(biāo)識(shí)符。通過有效地廣播FIFO池172內(nèi)的FIFO的狀態(tài)更改的通知,F(xiàn)IFO池隱含地簡化了在FIFO池172中執(zhí)行循環(huán)優(yōu)先級(jí)仲裁器的必要的操作,以及各集成外圍設(shè)備和外圍設(shè)備接174-183的每個(gè)中需要的相應(yīng)的控制邏輯。
向分布式控制邏輯提供連接到FIFO池總線144的各集成外圍設(shè)備和外圍設(shè)備接口174-183。各集成外圍設(shè)備和外圍設(shè)備接口174-183最好都能夠用一個(gè)或多個(gè)FIFO標(biāo)識(shí)符編程,該標(biāo)識(shí)符對(duì)應(yīng)于FIFO池172中的支持其各自功能所需要的FIFO的號(hào)。每個(gè)FIFO支持一個(gè)單向數(shù)據(jù)流,所以,對(duì)于全雙工通信需要FIFO對(duì)。各集成外圍設(shè)備和外圍設(shè)備接174-182中的分布式邏輯、監(jiān)視在FIFO狀態(tài)總線上廣播的FIFO標(biāo)識(shí)符,以便用其預(yù)編程的標(biāo)識(shí)符尋找匹配。當(dāng)發(fā)現(xiàn)一個(gè)標(biāo)識(shí)符匹配時(shí),集成外圍設(shè)備和外圍設(shè)備接口174-183就可以在FIFO池總線144上的數(shù)據(jù)傳送周期發(fā)送一個(gè)控制信號(hào)請(qǐng)求。FIFO池172隨后發(fā)送唯一的確認(rèn)信號(hào),以授權(quán)對(duì)FIFO池總線的訪問。因此,F(xiàn)IFO池172的循環(huán)優(yōu)先級(jí)仲裁器只需考慮來自集成外圍設(shè)備和外圍設(shè)備接口174-183的訪問請(qǐng)求,以便能夠執(zhí)行實(shí)際的數(shù)據(jù)傳送。而且,因?yàn)榭赡苡腥我鈹?shù)量和類型的集成外圍設(shè)備和外圍設(shè)備接174-183的組合,所以,F(xiàn)IFO池172的循環(huán)優(yōu)先級(jí)仲裁器被有效地隔離出來,不必考慮由集成外圍設(shè)備和外圍設(shè)備接174-183中任何特定的一個(gè)所請(qǐng)求的數(shù)據(jù)傳送周期的特殊方面。有可能影響請(qǐng)求一個(gè)FIFO池總線144上的存儲(chǔ)器訪問周期的合理性的、特殊的操作、由各集成外圍設(shè)備和外圍設(shè)備接口174-182內(nèi)部管理,以適應(yīng)其特殊的功能。因此,訪問決定和仲裁控制邏輯的大部分都有效地被分配到I/O控制器140的各個(gè)部分。即使任何集成外圍設(shè)備或外圍設(shè)備接口174-183的類型、數(shù)量或功能在I/O通道控制器核心140的不同特定實(shí)現(xiàn)之間改變,與FIFO池172的循環(huán)優(yōu)先級(jí)仲裁器有關(guān)的控制邏輯也不必進(jìn)行根本的或甚至重大的修改。
Ⅴ.集成外圍設(shè)備和接口集成外圍設(shè)備和外圍設(shè)備接口174-188的每一個(gè)都最好提供了一個(gè)基于寄存器的接口,該接口通過PIO總線146連接到I/O通道控制器核心140的剩余部分。因此,經(jīng)由主機(jī)和DSP總線受控部件158、166,主處理器12和數(shù)字信號(hào)處理器32、36可以訪問上述寄存器接口的每一個(gè)。由集成外圍設(shè)備和外圍設(shè)備接口174-188的每一個(gè)實(shí)例所提供的、到PIO總線的寄存器接口可能從簡單到非常復(fù)雜。通常,以下情況需要寄存器接口為了允許對(duì)外圍設(shè)備174-188的期望的操作進(jìn)行編程;為了允許對(duì)外圍設(shè)備174-188進(jìn)行復(fù)位;為了根據(jù)可能產(chǎn)生的中斷和中斷將被發(fā)送到的外部處理器、以及外圍設(shè)備174-183還連接到FIFO池總線144上的位置、由特定的外圍設(shè)備174-188可支持的每一個(gè)并發(fā)數(shù)據(jù)流的FIFO標(biāo)識(shí)符的存儲(chǔ),來指定條件。
另外,集成外圍設(shè)備和外圍設(shè)備接口174-183中的每一個(gè)都包括數(shù)據(jù)登臺(tái)FIFO,用于暫時(shí)存儲(chǔ)正被傳送到或從FIFO池總線144的數(shù)據(jù)。最好,考慮到預(yù)期的被集成外圍設(shè)備或外圍設(shè)備接口174-183支持的數(shù)據(jù)通過率,以及在FIFO池172和特定的集成外圍設(shè)備或外圍設(shè)備接口174-183之間、在最壞情況下的總線數(shù)據(jù)傳送等待時(shí)間,上述內(nèi)部FIFO必須足夠深,以防止數(shù)據(jù)欠流(under-run)或溢出(over-run)。在通過集成外圍設(shè)備或外圍設(shè)備接口的預(yù)期的數(shù)據(jù)傳送速率十分低時(shí),內(nèi)部FIFO可以被簡單地實(shí)現(xiàn)為單個(gè)緩沖寄存器。然而,外圍設(shè)備的內(nèi)部FIFO通常有二到四個(gè)字節(jié)深。
優(yōu)選的MIDI接口外圍設(shè)備接口174提供了相對(duì)簡單的到PIO總線146的寄存器接口。MIDI接口外圍設(shè)備174提供的優(yōu)選的控制寄存器包括發(fā)送控制寄存器和接收控制寄存器。該寄存器接口的詳細(xì)說明見表Ⅸ。表ⅨMIDI發(fā)送控制寄存器說明位保留 未用或測試值[31:7]發(fā)送允許 允許MIDI發(fā)送 6復(fù)位 復(fù)位MIDI發(fā)送端口 5FIFO號(hào) FIFO池的FIFO [4:0]MIDI接收控制寄存器 說明 位保留 未用或測試值 [31:10]中斷選擇 00沒有中斷產(chǎn)生 [9:8]01中斷主機(jī)CPU10中斷DSP 111中斷DSP 2接收允許 允許MIDI接收器 7復(fù)位 復(fù)位MIDI發(fā)送端口 6FIFO號(hào) FIFO池的FIFO [5:0]發(fā)送控制寄存器包括五位FIFO ID字段、復(fù)位位、以及發(fā)送允許位。接收控制寄存器最好包括五位FIFO ID字段、復(fù)位位、接收允許位、以及兩位中斷字段,該中斷字段對(duì)下列兩個(gè)內(nèi)容進(jìn)行編碼是否要產(chǎn)生中斷以響應(yīng)與通過外部接口或MIDI接口外圍設(shè)備174的數(shù)據(jù)字節(jié)或字的接收相符合的錯(cuò)誤條件;以及,如果產(chǎn)生中斷,其中斷的預(yù)定目的。中斷最好由上述外圍設(shè)備174僅根據(jù)錯(cuò)誤條件產(chǎn)生。邏輯連接的直接傳送端口被優(yōu)選地用于產(chǎn)生數(shù)據(jù)發(fā)送/接收中斷,該中斷用于控制通過MIDI接口外圍設(shè)備174的數(shù)據(jù)的流動(dòng)。
CODEC外圍設(shè)備接口176的寄存器接口可能比MIDI接口174的寄存器接口復(fù)雜得多。在將傳統(tǒng)的外部CODEC連接到CODEC接176上時(shí),該寄存器接口需要提供對(duì)該外部CODEC自身的控制和數(shù)據(jù)寄存器的訪問。另一方面,CODEC外圍設(shè)備接口176自身可實(shí)現(xiàn)傳統(tǒng)CODEC的部分或全部功能,因此,將連接到CODEC外圍設(shè)備接176的需求的外部組件限定到相對(duì)最小的模擬組件。在上述后面的實(shí)例中,CODEC接口176就成為一個(gè)直接向PIO總線146提供CODEC控制寄存器的完全集成的外圍設(shè)備。在上述的任一實(shí)例中,CODEC接176包括必要的控制邏輯,以便允許該CODEC接176對(duì)FIFO池總線144上的訪問進(jìn)行仲裁,以及根據(jù)被編程到CODEC接176的一個(gè)寄存器中的FIFO標(biāo)識(shí)符對(duì)FIFO池172的一個(gè)FIFO的狀態(tài)的變化進(jìn)行監(jiān)視。
圖5c示出了CODEC接口176用于支持外部COEDC,如Analog Devices(模擬器件公司)1843 CODEC,時(shí)的優(yōu)選實(shí)現(xiàn)?;镜腃ODEC接口數(shù)據(jù)路徑和控制邏輯180對(duì)多路的、本質(zhì)雙向的、在FIFO池172中被潛在地分配的各對(duì)FIFO與CODEC接口176內(nèi)部的FIFO對(duì)之間、通過FIFO池總線144的數(shù)據(jù)部分傳送的數(shù)據(jù)流提供支持。最好,通過四個(gè)內(nèi)部FIFO 210-212,可以緩沖多達(dá)四路輸出數(shù)據(jù)流。數(shù)據(jù)多路復(fù)用器216用于根據(jù)在外部CODEC中建立的控制模式,從FIFO 210-214中選擇8或16位數(shù)據(jù)。該字節(jié)或字?jǐn)?shù)據(jù)流在寄存器接口和I/O控制部件220的控制下通過時(shí)鐘控制的鎖存器和并串轉(zhuǎn)化器218被傳送。時(shí)鐘和控制信號(hào)由寄存器接口和I/O控制部件220通過時(shí)鐘和控制線222提供。寄存器接口和I/O控制部件220通過在線224上交換時(shí)鐘和控制信號(hào)來與外部CODEC配合傳送數(shù)據(jù)。這樣,經(jīng)過寄存器接口和I/O控制部件220的操作,在串行數(shù)據(jù)輸出線226上向外部CODEC提供串行數(shù)據(jù)。
CODEC模式命令和命令的相關(guān)數(shù)據(jù)也在串行數(shù)據(jù)輸出線226上提供給外部CODEC。模式命令和數(shù)據(jù)最好通過PIO總線146提供給寄存器接口和I/O控制部件220。而命令模式處理信號(hào)通過線224發(fā)出,該模式命令和數(shù)據(jù)就經(jīng)由線214,通過多路復(fù)用器216和鎖存器218被發(fā)送。
來自外部CODEC的串行數(shù)據(jù)在線226上被時(shí)鐘控制的串并轉(zhuǎn)化器和鎖存器230接收。根據(jù)外部CODEC的當(dāng)前命令模式,經(jīng)多路分解器232,并通過線234將狀態(tài)信息和相關(guān)數(shù)據(jù)提供給寄存器接口和I/O控制部件220。在寄存器接口和I/O控制部件220的控制下,將其它字節(jié)或字寬數(shù)據(jù)從多路分解器232選擇性地提供給四個(gè)內(nèi)部FIFO 236-238中的任何一個(gè)。
寄存器接口和I/O控制部件220還提供請(qǐng)求和確認(rèn)控制邏輯,以便支持通過FIFO池總線144的數(shù)據(jù)傳送。寄存器接口和I/O控制部件220最好提供了用于多達(dá)八個(gè)FIFO標(biāo)識(shí)符的寄存器存儲(chǔ)。每個(gè)FIFO標(biāo)識(shí)符允許將一個(gè)特定的內(nèi)部FIFO與FIFO池172中的任何一個(gè)FIFO關(guān)聯(lián)。寄存器接口和I/O控制部件220連續(xù)監(jiān)視PIO總線144的FIFO更新部分,以便確定被標(biāo)識(shí)的FIFO的狀態(tài)在何時(shí)改變。寄存器接口和I/O控制部件220典型地為其FIFO標(biāo)識(shí)符與更新總線上廣播的FIFO標(biāo)識(shí)符相匹配的內(nèi)部FIFO發(fā)送FIFO池訪問請(qǐng)求。
FIFO標(biāo)識(shí)符寄存器和其它CODEC接口控制寄存器都可典型地被主處理器12通過PIO總線146訪問。提供給PIO總線146的優(yōu)選的CODEC寄存器接口見表Ⅹ。表ⅩCODEC寄存器 說明 位主控控制 DAC/ADC控制 [15]音頻命令 到音頻CODEC的命令[14:9]音頻數(shù)據(jù) 到音頻CODEC的模式設(shè)置數(shù)據(jù)[8:3]電話命令 到電話CODEC的命令2電話狀態(tài) 到電話CODEC的模式設(shè)置數(shù)據(jù)1狀態(tài)命令 只讀CODEC狀態(tài)位 8狀態(tài)數(shù)據(jù) 只讀模式設(shè)置數(shù)據(jù)FIFO號(hào)0FIFO允許位和池號(hào) 8… … 8FIFO號(hào)7FIFO允許位和池號(hào) 8時(shí)鐘 時(shí)鐘計(jì)數(shù)器控制 16主機(jī)屏蔽 主機(jī)中斷屏蔽值 12DSP屏蔽DSP中斷屏蔽值12中斷控制 傳送完成、欠流/溢出位12主控控制 說明 位CODEC復(fù)位 復(fù)位所有的CODEC相關(guān)邏輯 [15]DAC模式設(shè)置DACO、1的運(yùn)行模式[14:9]ADC模式設(shè)置ADCO、1的運(yùn)行模式[8:3]音頻允許 音頻CODEC復(fù)位2電話允許 電話CODEC復(fù)位1CODEC標(biāo)識(shí)符外部CODEC的類型 0中斷控制 說明 位傳送完成FIFO 0 傳送完成中斷位 1傳送完成FIFO 3 傳送完成中斷位 1欠流FIFO 0欠流中斷位(DAC1)1欠流FIFO 3欠流中斷位(DAC4)1溢出FIFO 4溢出中斷位(ADC5)1溢出FIFO 7溢出中斷位(ADC8)1通過數(shù)字操縱桿接口178,可支持操縱桿外圍設(shè)備和潛在地關(guān)聯(lián)的控制臺(tái)。外圍操縱桿典型地提供與該操縱桿的物理位置成比例的電阻。數(shù)字操縱桿接178最好提供了定時(shí)器和電容器,它們與操縱桿外圍設(shè)備提供的電阻組合,從而允許該數(shù)字操縱桿接口自主地重復(fù)產(chǎn)生代表操縱桿位置的數(shù)字值。主處理器12因而減輕了負(fù)擔(dān),不必設(shè)置和作為定時(shí)器來確定操縱桿的位置。最好,數(shù)字操縱桿接174能夠被編程,以便每當(dāng)確定的數(shù)字值改變時(shí),向主處理器12或DSP 32、36發(fā)出中斷信號(hào)。甚至在沒有產(chǎn)生中斷時(shí),也能使用數(shù)字操縱桿接178提供的寄存器接口通過PIO總線146連續(xù)地訪問該數(shù)字值。
依賴于任何關(guān)聯(lián)的控制臺(tái)的配置和數(shù)據(jù)要求,如可能被開發(fā)為支持各種游戲和控制應(yīng)用,數(shù)據(jù)流可能通過FIFO池172和數(shù)字操縱桿接口178傳送。在數(shù)據(jù)流傳送速率普遍地低且等待時(shí)間是一個(gè)關(guān)鍵問題時(shí),最好使用邏輯連接的立即傳送端口,以便在數(shù)據(jù)被傳送到數(shù)字操縱桿接178或從數(shù)字操縱桿接178傳送數(shù)據(jù)時(shí),產(chǎn)生到主處理器12或到DSP 32、36中之一的中斷。在等待時(shí)間不是關(guān)鍵問題或在要求的數(shù)據(jù)速率比較高時(shí),可使用通過FIFO池172的全總線主控?cái)?shù)據(jù)傳送。
通用接口端180代表另一種類型的集成外圍設(shè)備或外圍設(shè)備接口。在優(yōu)選實(shí)施例中,接口端口180可實(shí)現(xiàn)一個(gè)高速的、非常寬的并行端口,適于與視頻控制器或直接與視頻幀緩沖器接口。來自FIFO池總線144的連續(xù)的雙字寬的數(shù)據(jù)傳送可被緩沖為64位、128位或更高的字,它們被并行地傳送到視頻控制器或幀緩沖器。在這種情況下,一個(gè)或更多的視頻字可在接口端180中被寄存器緩沖,從而允許最佳地匹配到控制器或幀緩沖器的字傳送的定時(shí)。
接口端口180還可被用于高速讀取視頻控制器或幀緩沖器??捎眠B續(xù)的并行的讀取操作將一個(gè)、不過最好是兩個(gè)或更多的幀字從視頻控制器或幀緩沖器中讀到寬緩沖寄存器中,而且,可將其作為一個(gè)與FIFO池總線144有關(guān)的內(nèi)部FIFO進(jìn)行配置。然后可將幀字的雙字寬部分傳送到并通過FIFO池172。
對(duì)于典型地低帶寬、對(duì)等待時(shí)間敏感的數(shù)據(jù)流,提供了立即傳送端口集成外圍設(shè)備182,以便通過FIFO池172建立高速、低等待時(shí)間的連接。立即傳送端口集成外圍設(shè)備182最好提供六個(gè)獨(dú)立的傳送端口。每個(gè)傳送端口可用能夠通過PIO總線146訪問的控制寄存器和數(shù)據(jù)寄存器來代表。該控制寄存器的定義在表Ⅺ中提供。表Ⅺ立即傳送端口控制寄存器 說明 位空間/數(shù)據(jù)有效 空間/數(shù)據(jù)有效時(shí)置位 15允許傳送端口允許標(biāo)志 14復(fù)位復(fù)位傳送端口 13數(shù)據(jù)寬度8或16數(shù)據(jù)傳送 9方向與FIFO有關(guān)的傳送 8中斷選擇00沒有中斷產(chǎn)生 [7:6]01中斷主機(jī)CPU10中斷DSP 111中斷DSP 2FIFO號(hào) 池FIFO的號(hào)[4:0]立即傳送端口數(shù)據(jù)寄存器 說明 位高位字節(jié)字?jǐn)?shù)據(jù)的高位字節(jié) [15:8]低位字節(jié)數(shù)據(jù)的低位字節(jié)或僅有的字節(jié)[7:0]立即傳送端口的控制寄存器允許使用FIFO標(biāo)識(shí)符、中斷目標(biāo)、數(shù)據(jù)傳送方向、數(shù)據(jù)字節(jié)或字的寬度、復(fù)位位、允許位、以及空間或數(shù)據(jù)有效位對(duì)該端口進(jìn)行編程。
立即傳送端口的典型操作是監(jiān)視PIO總線146的更新總線部分,以發(fā)現(xiàn)被標(biāo)識(shí)的FIFO的任何狀態(tài)的改變,并根據(jù)被編程的中斷選擇位、立即向主處理器12或DSP 32、36發(fā)出中斷。使用2個(gè)立即傳送端口和FIFO池172中的一個(gè)單個(gè)FIFO可在兩個(gè)處理器之間建立一條數(shù)據(jù)流傳送路徑。該立即傳送端口中的一個(gè)最好被編程為每當(dāng)被標(biāo)識(shí)的FIFO中空間有效時(shí),發(fā)出主機(jī)中斷。第二個(gè)立即傳送端口被編程為每當(dāng)在相同的被標(biāo)識(shí)的FIFO中數(shù)據(jù)有效時(shí),發(fā)出DSP中斷。主處理器12用于通過主機(jī)總線受控部件158和PIO總線146將數(shù)據(jù)傳送到與主處理器12關(guān)聯(lián)的立即傳送端口的I/O數(shù)據(jù)寄存器,以便啟動(dòng)該數(shù)據(jù)流傳送和隨后響應(yīng)主機(jī)中斷。立即傳送端口將收到的數(shù)據(jù)放入FIFO池172的被標(biāo)識(shí)的FIFO中。
為響應(yīng)FIFO池172在FIFO狀態(tài)總線上廣播的FIFO標(biāo)識(shí),第二立即傳送端口發(fā)出一個(gè)DSP中斷。作為響應(yīng),DSP 32、36訪問該立即傳送端口的I/O數(shù)據(jù)寄存器。從FIFO池172中的FIFO讀取數(shù)據(jù),并傳送到DSP 32、36,以便對(duì)其進(jìn)行處理并典型地寫入RAM 34。
立即傳送端口可配合總線主控接口148、150以及其它訪問FIFO池172的集成外圍設(shè)備和外圍設(shè)備接口174-183,以各種形式組合使用。例如,通過MIDI接口外圍設(shè)備174輸出的數(shù)據(jù)流可被主處理器12傳送到FIFO池172的一個(gè)FIFO中。當(dāng)通過更新總線廣播的FIFO狀態(tài)改變時(shí),MIDI接口外圍設(shè)備174向FIFO池仲裁器發(fā)出一個(gè)訪問FIFO池172的請(qǐng)求。一旦訪問被授權(quán),源自FIFO池172的數(shù)據(jù)就被傳送到MIDI接口外圍設(shè)備174的內(nèi)部FIFO,并立即輸出。
當(dāng)數(shù)據(jù)從FIFO池172中的被標(biāo)識(shí)的FIFO中移出時(shí),另一已被編程用于響應(yīng)同一個(gè)被標(biāo)識(shí)的FIFO的更新的立即傳送端口最好不產(chǎn)生主機(jī)中斷。在這種情況下,主處理器12確定用于將MIDI數(shù)據(jù)寫到該被標(biāo)識(shí)的FIFO中的定時(shí)。當(dāng)主處理器12決定寫MIDI數(shù)據(jù)時(shí),通過登臺(tái)穿過與主機(jī)關(guān)聯(lián)的立即傳送端口的數(shù)據(jù)寄存器的數(shù)據(jù),將新數(shù)據(jù)寫入被標(biāo)識(shí)的FIFO中。在以最大的MIDI數(shù)據(jù)速率輸出數(shù)據(jù)時(shí),主處理器12能夠?qū)?shù)據(jù)的多個(gè)字節(jié)或字寫入FIFO池的FIFO中。此后,主處理器12可根據(jù)該主處理器確定的時(shí)間表繼續(xù)輸出MIDI數(shù)據(jù)。因此,能夠維持從主存儲(chǔ)器14到MIDI接口外圍設(shè)備174的數(shù)據(jù)傳送的低的且實(shí)質(zhì)上固定的等待周期。
通過MIDI接口外圍設(shè)備174輸入的數(shù)據(jù)需要與時(shí)間戳(time stamp)數(shù)據(jù)一同被存儲(chǔ)到系統(tǒng)主存儲(chǔ)器14或RAM 34中。該時(shí)間戳數(shù)據(jù)需要被MIDI接口外圍設(shè)備174按取自實(shí)際接收時(shí)間的最小的和規(guī)則的等待時(shí)間施加給輸入數(shù)據(jù)。因此,最好將一個(gè)立即傳送端口與FIFO池172中的MIDI輸入數(shù)據(jù)FIFO關(guān)聯(lián),并對(duì)該立即傳送端口編程,以便在被標(biāo)識(shí)的FIFO中數(shù)據(jù)變成有效時(shí),向主機(jī)12或DSP 32發(fā)送中斷。
DSP加速器集成外圍設(shè)備183也可作為I/O通道控制器140的一部分被提供。在通常的形式中,DSP加速器183最好提供通過PIO總線146可訪問的寄存器接口,從而提供與來自FIFO池172的一個(gè)或多個(gè)輸入FIFO的連接,以及與一個(gè)或多個(gè)輸出FIFO的連接,以便通過FIFO池總線144將數(shù)據(jù)返回到FIFO池172。DSP加速器183內(nèi)部可提供專用硬件、微控制器、或兩者都有,以便根據(jù)可編程控制寄存器的配置,執(zhí)行任意數(shù)量的計(jì)算密集型的數(shù)據(jù)處理的操作,例如數(shù)字信號(hào)濾波、混合以及調(diào)制。因此,可連接到DSP加速器183的FIFO池172的FIFO數(shù)取決于DSP加速器183可能實(shí)現(xiàn)的特定的功能。
消息端口集成外圍設(shè)備184為傳送連接到I/O通道控制器140的、主機(jī)和DSP處理器之間的、小數(shù)量的數(shù)據(jù)提供一個(gè)簡單的數(shù)據(jù)路徑。在本發(fā)明的優(yōu)選實(shí)施例中,在消息端口集成外圍設(shè)備184中提供了三個(gè)消息端口,每個(gè)都被特定的主處理器12或DSP 32、36專門用于源。每個(gè)源專用信息端口被描述為兩個(gè)可從PIO總線146訪問的16位寄存器。表Ⅻ描述了該消息端口集以及每個(gè)消息端口的控制和數(shù)據(jù)寄存器。表Ⅻ消息端口 說明端口0 主機(jī)消息發(fā)送端口端口1 DSP 1消息發(fā)送端口端口2 DSP 2消息發(fā)送端口端口#的消息端口控制寄存器 說明位復(fù)位 復(fù)位傳送端口 15中斷選擇 00沒有中斷產(chǎn)生 [14:13]01中斷主機(jī)CPU10中斷DSP 1
11中斷DSP 2訪問指針 消息中的字偏移指針[7:0]端口#的消息端口數(shù)據(jù)寄存器 描述 位數(shù)據(jù) 讀/寫數(shù)據(jù)寄存器 [15:0]在消息端口內(nèi)保持的一個(gè)八個(gè)字(8×16位)深的消息FIFO中,訪問指針字段用作一個(gè)可自動(dòng)增量的指針。為了發(fā)送一個(gè)消息,源處理器對(duì)訪問指針字段清零,將多達(dá)八個(gè)的數(shù)據(jù)字寫到消息端口的數(shù)據(jù)寄存器中,然后對(duì)中斷編程,以指定該消息的目的處理器。一旦將中斷選擇字段設(shè)置到非0狀態(tài),中斷就被實(shí)際發(fā)送。
為了響應(yīng)消息中斷,讀取消息,目的處理器可讀取相應(yīng)的訪問指針字段,以標(biāo)識(shí)該消息的長度,將訪問指針字段設(shè)置為零,以便從起點(diǎn)讀取消息,然后從消息端口的數(shù)據(jù)寄存器讀取訪問指針指定數(shù)目的數(shù)據(jù)字。一旦讀取了消息數(shù)據(jù),就將中斷選擇子字段簡單地復(fù)位為零。另一方面,可將該子字段重置(reset)為指定該消息源處理器的值,并以零長度消息作為消息接收的確認(rèn)。在設(shè)置中斷選擇子字段以指定源處理器之前,也可將確認(rèn)信號(hào)或回復(fù)消息寫入消息FIFO。因?yàn)槊總€(gè)消息端口都唯一地關(guān)聯(lián)一個(gè)源處理器,所以,在任何情況下,目的處理器都能夠通過識(shí)別用于發(fā)送消息的特定的消息端口來唯一地確定源處理器。
定時(shí)器集成外圍設(shè)備186被提供用于支持通用和特殊功能的基于時(shí)間的操作。在本發(fā)明的優(yōu)選實(shí)施例中,定時(shí)器外圍設(shè)備186向PIO總線146提供了三個(gè)雙字寄存器,如表ⅩⅢ所述。表ⅩⅢ定時(shí)器源寄存器說明 位定時(shí)器復(fù)位 復(fù)位所有的定時(shí)器31計(jì)數(shù)值 設(shè)置源時(shí)鐘的基本頻率[30:16]遞減計(jì)數(shù) 遞減計(jì)數(shù)寄存器 [15:0]定時(shí)器0寄存器說明位允許 定時(shí)器允許 31模式 多次(multi shot)/單次19(single shot)模式清除中斷 清除中斷定時(shí)器狀態(tài) 18中斷選擇 00沒有中斷產(chǎn)生 [17:16]01中斷主機(jī)CPU10中斷DSP 111中斷DSP 2定時(shí)值 定時(shí)器遞減計(jì)數(shù)值 [15:0]主機(jī)等待時(shí)間定時(shí)器說明 位定時(shí)值 定時(shí)器遞減計(jì)數(shù)值 [15:0]這些控制寄存器的第一個(gè)寄存器提供了一個(gè)15位的自由運(yùn)行計(jì)數(shù)器(free running counter),用作其它定時(shí)器功能的可編程的時(shí)基。定時(shí)器源寄存器最好包括15位的遞減計(jì)數(shù)字段,該字段按施加到I/O控制器140的系統(tǒng)時(shí)鐘周期,每周期做一次計(jì)數(shù)操作。15位計(jì)數(shù)值字段存儲(chǔ)了一個(gè)靜態(tài)的基本時(shí)鐘計(jì)數(shù)值,用于每當(dāng)遞減計(jì)數(shù)子字段到達(dá)零值的時(shí)候,對(duì)該遞減計(jì)數(shù)子字段做一次重新初始化。提供一個(gè)單獨(dú)的位,用于對(duì)整個(gè)定時(shí)器外圍設(shè)備186的復(fù)位控制。
提供通用定時(shí)器零寄存器,用于當(dāng)受定時(shí)器基本時(shí)鐘驅(qū)動(dòng)的16位遞減計(jì)數(shù)定時(shí)器每次到時(shí)間時(shí),產(chǎn)生一個(gè)中斷。定時(shí)器零寄存器包括隨定時(shí)器基本時(shí)鐘的每一個(gè)完整周期遞減的16位定時(shí)值。一個(gè)兩位的子字段被提供,用于指定當(dāng)定時(shí)器零值到時(shí)間時(shí)要被中斷的處理器。還提供了中斷清除和定時(shí)器允許位。最后,提供了模式控制位,用于指定定時(shí)器零是用作多次定時(shí)器、還是用作單次定時(shí)器。在多次模式中,一個(gè)定時(shí)值的到時(shí)間、產(chǎn)生一個(gè)中斷、然后該定時(shí)器被重新加載。只有當(dāng)前一個(gè)中斷被清除后,才能發(fā)出第二個(gè)中斷。在單次模式中,一旦中斷產(chǎn)生,定時(shí)器就完全停止。
提供了專門的主機(jī)中斷等待定時(shí)器。該定時(shí)器是受定時(shí)器基本時(shí)鐘驅(qū)動(dòng)的遞增計(jì)數(shù)的定時(shí)器。隨著確定有一個(gè)到主處理器12的中斷,一個(gè)16位的定時(shí)值就從0開始增加。當(dāng)主機(jī)中斷等待定時(shí)器寄存器的定時(shí)值子字段被讀取時(shí),該主機(jī)中斷等待定寸器停止計(jì)時(shí),且定時(shí)值被清零。這個(gè)專門的定時(shí)器允許I/O控制器核心140支持主處理器12對(duì)主機(jī)中斷服務(wù)子程序的有效執(zhí)行做典型分析,以響應(yīng)由I/O通道控制器140產(chǎn)生的中斷。
最后,中斷控制器集成外圍設(shè)備188被提供,用以支持在典型的操作期間由I/O通道控制器140產(chǎn)生的許多不同的中斷源的管理。為了有效利用主機(jī)和DSP處理器可以得到的中斷輸入,I/O控制器140最好向每個(gè)處理器發(fā)送一個(gè)單一的向量中斷。如圖5d所示,該優(yōu)選實(shí)施例中的中斷寄存器242在線156′上產(chǎn)生主機(jī)中斷,在線164′上產(chǎn)生第一DSP中斷,在線165′上產(chǎn)生第二DSP中斷。從I/O控制器140內(nèi)的各個(gè)中斷源、或從組中斷寄存器246、250處接收輸入244到中斷寄存器246中。組中斷可通過PIO總線從中斷寄存器242讀取。表ⅩⅣ提供了組中斷的優(yōu)選定義。表ⅩⅣ組中斷寄存器 說明位定時(shí)器屏蔽 允許中斷源 12立即傳送端口屏蔽 允許中斷源 11消息屏蔽 允許中斷源 01外圍設(shè)備屏蔽 允許中斷源 9BTU屏蔽 允許中斷源 8定時(shí)器中斷 組中斷活動(dòng)位4立即傳送端口中斷 組中斷活動(dòng)位3消息端口中斷 組中斷活動(dòng)位2外圍設(shè)備中斷 組中斷活動(dòng)位1BTU中斷 組中斷活動(dòng)位0最好,中斷寄存器242允許組中斷中的每一個(gè)被屏蔽。當(dāng)中斷組被使用中斷屏蔽允許、以產(chǎn)生一個(gè)中斷時(shí),具體的中斷目標(biāo)156′、164′、165′的選擇取決于隨組中斷信號(hào)244一起提供的中斷目標(biāo)信息。因此,各個(gè)中斷源確定特定的中斷目標(biāo),雖然中斷通過中斷寄存器242組合在一起。
當(dāng)大量的中斷可由I/O通道控制器140的一個(gè)組件,比如,總線傳輸控制系統(tǒng)170產(chǎn)生時(shí),或者當(dāng)許多相關(guān)組件可被方便地組合在一起時(shí),中斷請(qǐng)求線248、252能夠被指向第二級(jí)組寄存器246、250。在本發(fā)明的優(yōu)選實(shí)施例中,多個(gè)集成外圍設(shè)備和外圍設(shè)備接口174-186被路由選擇通過外圍設(shè)備組中斷寄存器246,以向中斷寄存器242提供單個(gè)組中斷。內(nèi)部外圍設(shè)備,如MIDI接口174,以及外部外圍設(shè)備、如那些在DSP總線30上提供的,其每個(gè)都可以作為外圍設(shè)備組中斷的源。表ⅩⅤ提供了可通過PIO總線146訪問的組屏蔽和中斷狀態(tài)寄存器的優(yōu)選的定義。表ⅩⅤ組中斷寄存器說明 位中斷7屏蔽 允許中斷源715中斷1屏蔽 允許中斷源19MIDI屏蔽 允許MIDI中斷源 8外部中斷7 外部中斷7活動(dòng)位7外部中斷1 外部中斷1活動(dòng)位1MIDI中斷 外圍設(shè)備中斷活動(dòng)位 0組中斷寄存器250最好提供一個(gè)立即端口索引字段,以反映每個(gè)立即傳輸端口中斷的中斷狀態(tài)。一個(gè)單個(gè)的位標(biāo)志用來標(biāo)記當(dāng)前可讀的索引是有效的還是無效的。該立即傳輸端口寄存器(表ⅩⅥ)可通過PIO總線146訪問。表ⅩⅥITP中斷寄存器 說明位ITP索引無效有效/無效標(biāo)志;寫使無效 7ITP索引ITP陣列中的ITP索引 [2:0]最后,BTU組中斷寄存器254提供了一個(gè)控制寄存器(表ⅩⅦ),該控制寄存器包括一個(gè)BTU索引字段,用于標(biāo)識(shí)作為中斷信號(hào)256的源的特定的BTU。表ⅩⅦBTU中斷寄存器說明 位BTU索引無效 有效/無效標(biāo)志;寫使無效7傳送完成 BTU傳送完成 6BTU索引BTU表中的BTU索引[5:0]一個(gè)獨(dú)立的傳送完成位被提供,用以標(biāo)志中斷是否正在發(fā)出信號(hào)通知數(shù)據(jù)流傳送的完成。最后,一個(gè)單個(gè)的控制位被提供,用以指定當(dāng)讀取時(shí)BTU索引字段是否有效。
因此,中斷控制器集成外圍設(shè)備188提供了一個(gè)簡潔的寄存器系統(tǒng)240,用于快速中斷多個(gè)不同的處理器的任意一個(gè),以響應(yīng)大量的各個(gè)內(nèi)部中斷中的任意一個(gè)。每當(dāng)處理器被中斷時(shí),至多需要兩個(gè)通過PIO總線146的寄存器讀操作,以唯一地確定中斷源。
Ⅵ.多線程彈性緩沖器FIFO池FIFO池172的詳細(xì)的示意圖260及FIFO池172與一些FIFO訪問請(qǐng)求設(shè)備2620-262n之間的控制關(guān)系示于圖6中。FIFO訪問請(qǐng)求設(shè)備2620-262n最好包括總線主控接口148、150、以及集成外圍設(shè)備和外圍設(shè)備接口174-183。設(shè)備2620-n中的每一個(gè)都連續(xù)地監(jiān)視FIFO更新總線173,以便發(fā)現(xiàn)任一被分配到特定的設(shè)備2620-n的FIFO的狀態(tài)的變化。詳細(xì)地,每個(gè)設(shè)備2620-n為得到正在被更新的FIFO號(hào)而監(jiān)視更新總線,并確定在被更新的FIFO中是否有足夠的空間或數(shù)據(jù)可用來支持通過FIFO池總線144的、在設(shè)備2620-n與FIFO池寄存器284之間的數(shù)據(jù)傳送。
為響應(yīng)分配到特定設(shè)備2620-n的FIFO中的限定狀態(tài)改變的廣播,設(shè)備2620-n通過FIFO池總線144向FIFO仲裁器264提供訪問請(qǐng)求控制信號(hào)。在每個(gè)仲裁周期中,F(xiàn)IFO仲裁器264有效地只把正在請(qǐng)求訪問FIFO池284的那些設(shè)備2620-n看作唯一地由一組未決(pending)請(qǐng)求控制信號(hào)表示。FIFO仲裁器264的當(dāng)前仲裁周期中的下一個(gè)設(shè)備被選擇,以便能訪問FIFO池284。唯一的確認(rèn)信號(hào)由FIFO仲裁器264返回到被選擇的設(shè)備2620-n。作為響應(yīng),設(shè)備2620-n通過FIFO池總線144提供控制信號(hào),該控制信號(hào)至少包括由設(shè)備2620-n所保持的FIFO標(biāo)識(shí)符,以便選擇FIFO標(biāo)志存儲(chǔ)器286內(nèi)的一個(gè)數(shù)據(jù)存儲(chǔ)行及一個(gè)FIFO控制存儲(chǔ)器;FIFO控制存儲(chǔ)器包括FIFO讀/寫指針存儲(chǔ)陣列272、274。
標(biāo)志存儲(chǔ)器286和指針陣列288、272、274最好被作為RAM寄存器陣列提供,具有與由FIFO池284支持的FIFO數(shù)目相等的深度。在本發(fā)明的優(yōu)選實(shí)施例中,F(xiàn)IFO池提供24個(gè)16字節(jié)深的FIFO的存儲(chǔ)。表ⅩⅧ列出了FIFO標(biāo)志存儲(chǔ)器286每一行的標(biāo)志位的定義。表ⅩⅧFIFO標(biāo)志說明 位傳送完成標(biāo)志傳送已完成 12BTU完成 標(biāo)志當(dāng)前BTU已完成11FIFO長度FIFO長度大于16字節(jié) 10讀長度 FIFO中數(shù)據(jù)字節(jié)的數(shù)目 [9:4]讀字節(jié)允許 FIFO中讀字節(jié)選擇 [3:2]寫字節(jié)允許 FIFO中寫字節(jié)選擇 [1:0]來自FIFO池總線144的、在線276上提供的FIFO號(hào)被用作一個(gè)地址,以便在FIFO標(biāo)志存儲(chǔ)器286中選擇唯一的陣列行,用于更新存儲(chǔ)在被選擇的陣列行中的控制數(shù)據(jù)。該FIFO號(hào)被進(jìn)一步用于在FIFO讀和寫指針陣列272、274中選擇相應(yīng)的陣列行,以便能夠使用標(biāo)識(shí)的FIFO的讀或?qū)懼羔?。最后,線276上的FIFO號(hào)被提供到I/O多路復(fù)用器282,以便能夠在FIFO池存儲(chǔ)器284中的被標(biāo)識(shí)的FIFO與FIFO池總線144之間進(jìn)行數(shù)據(jù)傳送。
組合的讀和寫指針陣列272、274的字段定義在表ⅩⅨ中提供出。表ⅩⅨFIFO R/W指針描述位/s讀指針當(dāng)前FIFO讀地址[15:9]寫指針當(dāng)前FIFO寫地址[8:2]FIFO長度 分配的FIFO長度[1:0]長度字段定義了FIFO的長度。在本發(fā)明的優(yōu)選實(shí)施例中FIFO長度值“00”代表16字節(jié)的FIFO深度。值“01”指定32字節(jié)的FIFO深度,值“10”指定64字節(jié)的FIFO深度。讀和寫指針用于提供6位FIFO字節(jié)的偏移量到當(dāng)前被選擇的FIFO中。每個(gè)讀寫指針的高位,具體地說,16字節(jié)FIFO的第5位、32字節(jié)FIFO的第6位、以及64字節(jié)FIFO的第7位,被用于指示當(dāng)通過FIFO索引時(shí)是否存在FIFO回繞狀態(tài)(wrap-around condition)。
為了簡化FIFO池284中的FIFO的分配與管理,使FIFO標(biāo)志存儲(chǔ)器286中的每個(gè)陣列行及讀和寫指針陣列272、274與在FIFO池284中定義的FIFORAM塊對(duì)應(yīng)。最好,每個(gè)FIFO RAM塊是16字節(jié)邊界對(duì)齊的、位于FIFO池284內(nèi)的FIFO RAM的16字節(jié)序列。因此,F(xiàn)IFO標(biāo)志存儲(chǔ)器286與讀和寫指針陣列272、274的最大的共同的(mutual)深度定義了在FIFO池284內(nèi)能夠并發(fā)支持的FIFO的最大個(gè)數(shù)。當(dāng)讀和寫指針陣列272、274的長度字段定義了32或64字節(jié)長度的FIFO時(shí),在FIFO池284中使用兩個(gè)或4個(gè)相連的FIFO RAM塊。因此,每個(gè)32字節(jié)FIFO或64字節(jié)FIFO的說明必定搶先獨(dú)立占用一個(gè)或三個(gè)附加的陣列行。
FIFO指針邏輯部件266與包括讀和寫指針陣列272、274的FIFO控制存儲(chǔ)器共同操作,以便實(shí)現(xiàn)一個(gè)狀態(tài)機(jī),F(xiàn)IFO仲裁器164根據(jù)設(shè)備2620-n的選擇、通過線268上的允許信號(hào)來允許該狀態(tài)機(jī)參加對(duì)FIFO池284的訪問。被選擇的設(shè)備2620-n在線276上提供其FIFO號(hào),以便選擇相應(yīng)的FIFO讀和寫指針,活動(dòng)字節(jié)允許、以及其它控制信息、如數(shù)據(jù)傳送方向,就通過FIFO池總線144到FIFO指針邏輯部件266。數(shù)據(jù)傳送方向控制信號(hào)確定FIFO讀或?qū)懼羔橁嚵械闹凳欠癖惶峁┑絀/O多路復(fù)用器282。字節(jié)允許定義了在FIFO池284與FIFO池總線144之間執(zhí)行的數(shù)據(jù)傳送的寬度和對(duì)齊(alignment),因此,允許任意的、正在相互訪問FIFO池284中的公用FIFO的、設(shè)備2620-n的數(shù)據(jù)流傳送寬度之間互相獨(dú)立。
當(dāng)由被選擇的設(shè)備2620-n通過FIFO池總線144決定的、通過I/O多路復(fù)用器282的每個(gè)讀或?qū)懼芷谕瓿蓵r(shí),F(xiàn)IFO指針邏輯部件266就對(duì)FIFO控制存儲(chǔ)器272、274中的相應(yīng)的讀或?qū)懼羔橁嚵械闹颠M(jìn)行更新。FIFO指針邏輯部件266還對(duì)FIFO標(biāo)志存儲(chǔ)器286中的相應(yīng)的FIFO標(biāo)志行進(jìn)行更新。特別是,F(xiàn)IFO指針邏輯部件266對(duì)保留在被訪問的FIFO中的數(shù)據(jù)的字節(jié)數(shù)以及象傳送完成和BTU完成這樣的限定性標(biāo)志進(jìn)行更新。
一旦數(shù)據(jù)的一個(gè)或多個(gè)字節(jié)已被傳送,根據(jù)被或從選擇的設(shè)備2620-n的內(nèi)部FIFO可立即接收的字節(jié)數(shù)、以及在FIFO池284的相應(yīng)的FIFO中可用的字節(jié)數(shù),由被選擇的設(shè)備2620-n撤消該FIFO訪問請(qǐng)求。然后開始一個(gè)新的仲裁周期,并且,F(xiàn)IFO池仲裁器264通常為FIFO池284的訪問選擇下一個(gè)設(shè)備2620-n。
設(shè)備2620-n通過FIFO池總線144向FIFO指針邏輯部件266發(fā)送一個(gè)傳送完成信號(hào),以便用信號(hào)通知終止,該終止可由設(shè)備2620-n中的任意一個(gè)發(fā)出或接收。每當(dāng)當(dāng)前BTU完成時(shí),總線主控設(shè)備148、150也發(fā)送一個(gè)BTU完成信號(hào)。在這兩種情況下,F(xiàn)IFO指針邏輯部件266處理有可能是部分的FIFO數(shù)據(jù)傳送,該數(shù)據(jù)傳送目前可能保留在參與設(shè)備2620-n的相應(yīng)的內(nèi)部FIFO中、或FIFO池284的相應(yīng)的FIFO中。
典型地,基于主處理器12的初始化、以及其后的FIFO標(biāo)志存儲(chǔ)器286和FIFO控制存儲(chǔ)器272、274的狀態(tài)檢測,可通過FIFO指針邏輯部件266、在FIFO池仲裁器264的配合下被有效地執(zhí)行。最好,一組可編程寄存器通過控制、FIFO索引、和數(shù)據(jù)線290被提供到PIO總線146,以便允許PIO總線146讀或?qū)懪c一個(gè)池的FIFO關(guān)聯(lián)的當(dāng)前FIFO標(biāo)志。經(jīng)由FIFO指針邏輯部件的FIFO標(biāo)志陣列的寄存器表示見表ⅩⅩ。表ⅩⅩFIFO標(biāo)志 說明位/sFIFO標(biāo)志0FIFO 0的FIFO標(biāo)志16FIFO標(biāo)志1FIFO 1的FIFO標(biāo)志16…… …FIFO標(biāo)志23 FIFO 23的FIFO標(biāo)志 16有效地通過FIFO指針邏輯部件266的FIFO控制存儲(chǔ)器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和數(shù)字信號(hào)處理器32、36都可以讀和寫FIFO標(biāo)志和控制存儲(chǔ)器286、272、274,但是,最好只由主處理器12來專門管理在FIFO池284中被定義的FIFO的初始化,包括創(chuàng)建和取消。將主處理器12定義為用于FIFO池284中的FIFO的、專門的分配管理器,這樣就不需要在主機(jī)和DSP的對(duì)FIFO標(biāo)志存儲(chǔ)器286及FIFO讀和寫指針陣列272、274的訪問之間進(jìn)行互鎖。代替地,消息端口184可用于在主處理器12和DSP 32、36之間傳送短消息,以便請(qǐng)求和確認(rèn)任何特定的FIFO的建立及FIFO標(biāo)識(shí)符,該特定的FIFO是在FIFO池284內(nèi)、隨主處理器12或DSP 32、36的有效請(qǐng)求而新建立起來的。
由讀和寫指針陣列272、274的可編程性提供的一個(gè)附加特性是在需要的時(shí)候可改變FIFO池284中的FIFO的長度,以確保避免數(shù)據(jù)的溢出和欠流。僅僅通過重新編程FIFO控制存儲(chǔ)器272、274保持的長度字段,就可將FIFO池284中的64字節(jié)和32字節(jié)的FIFO縮減到最小,即16字節(jié)的長度。因此,可以在FIFO池284中,在FIFO存儲(chǔ)塊或縮減的FIFO不再使用的塊中分配新的16字節(jié)和可能的32字節(jié)的FIFO。相反,F(xiàn)IFO的長度也可以動(dòng)態(tài)地從16字節(jié)增大到64字節(jié),只要滿足以下限定條件基本的FIFO RAM塊在FIFO池284內(nèi)被正確地對(duì)齊;相鄰的FIFO RAM塊沒被使用;以及FIFO最好是空的,以簡化FIFO的管理。
Ⅶ.總線傳送單元掃描控制邏輯總線傳送控制系統(tǒng)170的詳細(xì)示意圖見圖7。總線傳輸控制系統(tǒng)170用于管理三個(gè)實(shí)質(zhì)上獨(dú)立的高優(yōu)先級(jí)的處理過程,每個(gè)處理過程都要求訪問BTU表192。BTU仲裁器190作為主要的控制器,用于接收訪問請(qǐng)求,以及從訪問BTU表的三個(gè)處理過程中選擇其一。這三個(gè)處理過程包括PCI接口事務(wù)處理,DSP接口事務(wù)處理,以及總線受控設(shè)備事務(wù)處理。
PCI接口160向BTU仲裁器190產(chǎn)生訪問和更新請(qǐng)求。訪問請(qǐng)求表示PCI接口160可以進(jìn)行編程來執(zhí)行主機(jī)總線主控?cái)?shù)據(jù)傳送操作。當(dāng)主機(jī)總線主控傳送完成時(shí),PCI接口160請(qǐng)求更新訪問,以對(duì)BTU表192中的相應(yīng)的BTU進(jìn)行更新。類似地,DSP接口168向BTU仲裁器190發(fā)送訪問和更新請(qǐng)求,以請(qǐng)求從BTU表192中的一個(gè)BTU編程,隨后,當(dāng)DSP總線主控?cái)?shù)據(jù)傳送完成時(shí)便更新該BTU。最后,總線受控部件158、166的每一個(gè)都可請(qǐng)求對(duì)BTU表192的訪問,以便編程一個(gè)新的BTU或檢查當(dāng)前BTU的內(nèi)容。
BTU仲裁器190執(zhí)行一個(gè)固定優(yōu)先級(jí)的選擇機(jī)制,其中PIO總線請(qǐng)求具有最高優(yōu)先級(jí),其次是主機(jī)和DSP總線主控接口,最后是BTU掃描器。BTU掃描器依次地確保所有BTU總體上公平地訪問BTU表192。通過PIO控制器151的操作,主機(jī)和DSP總線受控部件158、166提供一個(gè)共享的訪問請(qǐng)求,并通過PIO總線146中的控制線從BTU仲裁器190接收一個(gè)共享的允許響應(yīng)。PIO控制器決定總線接口模塊148、150,它們被允許響應(yīng)來自BTU仲裁器190的允許響應(yīng)信號(hào)。當(dāng)允許PIO信號(hào)通過控制線292被提供到主機(jī)或DSP總線受控部件158、166時(shí),BTU索引值通過PIO總線146和地址線294被傳送到地址多路復(fù)用器296。同時(shí),BTU仲裁器190通過控制線298提供一個(gè)選擇信號(hào),來選擇PIO提供的索引,并將其作為在BTU表192中選擇條目的地址。主機(jī)或DSP總線受控部件158、166而后便能讀或?qū)態(tài)TU表192中的相應(yīng)的BTU。
每當(dāng)PCI總線主控接口160和DSP總線主控接口168雙方都空閑時(shí),它們都向BTU仲裁器190產(chǎn)生訪問請(qǐng)求。BTU仲裁器190對(duì)PCI或DSP訪問請(qǐng)求的授權(quán)另外還決定于、用于總線主控接口160、168之一的BTU定義的傳送的有效的或允許的BTU的標(biāo)識(shí),這由BTU掃描器196確定。把BTU掃描器196與FIFO標(biāo)志陣列270連接起來的控制線171,向標(biāo)志陣列270提供陣列索引,并返回存儲(chǔ)在相應(yīng)陣列行中的FIFO標(biāo)志的至少一個(gè)子集。最好,F(xiàn)IFO標(biāo)志陣列270采用雙端口存儲(chǔ)器實(shí)現(xiàn),因此,在設(shè)備2620-n訪問的同時(shí)、允許BTU掃描器196連續(xù)地、基本上獨(dú)立地掃描FIFO標(biāo)志陣列270。FIFO標(biāo)志陣列270的雙端口存儲(chǔ)器的實(shí)現(xiàn)規(guī)定了訪問互鎖,每當(dāng)掃描器企圖讀一個(gè)標(biāo)志陣列行,而該標(biāo)志陣列行正處于被標(biāo)志管理器280更新的過程中時(shí),訪問互鎖可暫時(shí)停止BTU掃描器196的動(dòng)作。通常,掃描器停止不常發(fā)生并且是短暫的。
BTU掃描器196對(duì)BTU表192執(zhí)行一個(gè)限定的順序掃描,以便標(biāo)識(shí)下一個(gè)可能的要被編程的BTU,用于PCI總線主控接口160或DSP總線主控接口168。BTU掃描器196的順序掃描由BTU表192中的每個(gè)BTU條目中的允許位的狀態(tài)來限定。BTU掃描器196可通過控制線300直接讀取這些允許位的狀態(tài)。BTU掃描器196的操作因此能被有效地限定為只按順序掃描被允許的BTU。因此,BTU表192內(nèi)新生成的和建立的BTU立即被包括到BTU掃描的范圍內(nèi),而那些不論什么原因被禁止的BTU也立即被排除在掃描之外。當(dāng)BTU掃描器196選擇下一個(gè)合格的BTU進(jìn)行檢查時(shí),該BTU的地址通過BTU地址線302被提供到多路復(fù)用器296。多路復(fù)用器296的默認(rèn)狀態(tài)是這樣的BTU掃描器提供的地址即是提供到BTU表192的默認(rèn)的允許地址。至少該BTU的一部分可以從BTU表192中被讀取并存儲(chǔ)到掃描寄存器304、306之一中。掃描寄存器的內(nèi)容通過控制線308、310被提供到BTU掃描器196。表ⅩⅫ說明了被掃描寄存器304、306存儲(chǔ)的BTU信息。表ⅩⅫ掃描寄存器說明 位/sFIFO死鎖 死鎖/不規(guī)則傳送長度12BTU完成 當(dāng)前脈沖串之后,最佳BTU完成11中斷允許 當(dāng)前BTU完成時(shí)的強(qiáng)迫中斷10BTU忙 掃描BTU目前在使用 9超越(override)移動(dòng)掃描BTU到最佳BTU寄存器 8編程有效 最佳BTU可被用于總線主控編程;當(dāng)7掃描器傳送BTU索引值時(shí)置位有效 最佳BTU具有有效的BTU索引 6BTU索引 掃描寄存器中的BTU索引 [5:0]表ⅩⅩⅢ說明了存儲(chǔ)在最佳BTU寄存器312、314中的BTU消息。表ⅩⅩⅢ最佳寄存器 說明 位/sFIFO字節(jié)允許FIFO內(nèi)的字節(jié)選擇器 [15:14]脈沖串長度 傳送的字節(jié)數(shù) [13:8]傳送完成最佳BTU脈中串之后的流完成 7鏈接編程為BTU鏈接,不是傳送6BTU索引 最佳寄存器中的BTU索引 [5:0]表ⅩⅩⅣ說明了存儲(chǔ)在當(dāng)前BTU寄存器320、322中的BTU信息。表ⅩⅩⅣ當(dāng)前寄存器 說明 位/s中斷選擇 00沒有中斷產(chǎn)生 [15:14]01中斷主機(jī)CPU10中斷DSP1
11中斷DSP2脈沖串長度傳送的字節(jié)數(shù) [13:8]傳送完成 當(dāng)前脈沖串之后的流完成 7鏈接 編程為BTU鏈接,不是傳送 6BTU索引 最佳寄存器中的BTU索引[5:0]表ⅩⅩⅤ說明了BTU控制寄存器。表ⅩⅩⅤ最佳寄存器說明 位/s復(fù)位 復(fù)位整個(gè)BTU子系統(tǒng)9脈沖允許 單步執(zhí)行BTU掃描器8保留 [7:2]總是V4P BTU總是編程有效 1允許 允許BTU掃描器操作0根據(jù)從掃描寄存器304、306提供的信息,BTU掃描器196確定特定的接口160、168以及由BTU引用的FIFO。FIFO索引然后通過控制線171被提供,以便從FIFO標(biāo)志陣列270中得到相應(yīng)的FIFO標(biāo)志數(shù)據(jù)。具體地說,被BTU掃描器196考慮的FIFO標(biāo)志數(shù)據(jù)包括被引用的FIFO是否能容納或目前已存儲(chǔ)了足夠的數(shù)據(jù),以支持總線主控脈沖串傳送。在本發(fā)明的優(yōu)選實(shí)施例中,每個(gè)脈沖串傳送具有一個(gè)16字節(jié)的最大長度。然而,被BTU掃描器196考慮的其中一個(gè)FIFO標(biāo)志是傳送完成標(biāo)志,該標(biāo)志允許BTU掃描器196適當(dāng)考慮允許少于16字節(jié)的脈沖串的傳送。而且,死鎖標(biāo)志,當(dāng)置位時(shí),用于強(qiáng)制部分?jǐn)?shù)據(jù)的傳送,而不是最佳地等待一個(gè)完整的脈沖串可用。由于不規(guī)則數(shù)據(jù)長度傳送或者可能存在的錯(cuò)誤狀態(tài)而造成僅有部分的脈沖串被傳送時(shí),可能會(huì)出現(xiàn)死鎖。用于參與設(shè)備的最佳的數(shù)據(jù)傳送長度在FIFO中是無效的,而且,數(shù)據(jù)的最佳長度不能被傳送到FIFO。在任何情況下,使FIFO處于死鎖狀態(tài)的設(shè)備將置位死鎖標(biāo)志,以迫使下一個(gè)訪問FIFO的設(shè)備傳送一個(gè)短的數(shù)據(jù)。
當(dāng)BTU掃描器196確定一個(gè)脈沖串?dāng)?shù)據(jù)傳送能夠通過可應(yīng)用的總線主控接口160、168被執(zhí)行時(shí),同時(shí)也確定了取決于何時(shí)BTU準(zhǔn)備好,被標(biāo)識(shí)的BTU是否具有足夠的優(yōu)先權(quán)被登臺(tái)到最佳BTU寄存器312、314之一中。用于登臺(tái)的BTU的優(yōu)先權(quán)基本上基于在執(zhí)行脈沖串?dāng)?shù)據(jù)傳送中的、BTU的相對(duì)最近最少使用。例如,當(dāng)掃描寄存器304標(biāo)識(shí)的BTU比最佳BTU寄存器312標(biāo)識(shí)的BTU具有更高的優(yōu)先權(quán)時(shí),或者如果最佳BTU寄存器312是空的時(shí),那么BTU掃描器196通過控制線316提供相應(yīng)的控制信號(hào),并在此控制下將掃描寄存器34的內(nèi)容復(fù)制到最佳BTU寄存器312中。相反,如果掃描寄存器306標(biāo)識(shí)的BTU的登臺(tái)優(yōu)先權(quán)低于最佳BTU寄存器314標(biāo)識(shí)的BTU的優(yōu)先權(quán),那么BTU掃描器196便不向最佳BTU寄存器314提供掃描寄存器306的內(nèi)容的復(fù)制。在上述的任何一種情況下,BTU掃描器196已經(jīng)完成了一個(gè)當(dāng)前掃描周期,并繼續(xù)從BTU表192中選擇下一個(gè)合格的BTU,以便潛在地登臺(tái)、用于對(duì)總線主控脈沖串?dāng)?shù)據(jù)傳送進(jìn)行控制。
BTU掃描器196與BTU仲裁器190一起協(xié)作,發(fā)出信號(hào)通知是最佳BTU寄存器312、314中的一個(gè)還是兩個(gè)來標(biāo)識(shí)相應(yīng)的可用于執(zhí)行脈沖串?dāng)?shù)據(jù)傳送的BTU。根據(jù)這個(gè)信息,BTU仲裁器190能夠確定是否向接口160、168中一個(gè)提供允許PCI或允許DSP信號(hào),以響應(yīng)訪問請(qǐng)求。當(dāng)允許PCI或允許DSP信號(hào)由BTU仲裁器190發(fā)出時(shí),BTU仲裁器190便用信號(hào)通知BTU掃描器196。BTU掃描器196由此可允許將相應(yīng)的最佳BTU寄存器312、314的內(nèi)容位并行傳送到相應(yīng)的當(dāng)前BTU寄存器320、322中。并發(fā)地,BTU掃描器196更新內(nèi)部的BTU優(yōu)先級(jí)位列表,該列表緊接著被用于區(qū)分在掃描和最佳BTU寄存器304、306、312、314中被標(biāo)識(shí)的BTU的相對(duì)的優(yōu)先級(jí)。
被允許的最佳BTU寄存器312、314的內(nèi)容被提供到相應(yīng)的PCI或DSP接口160、168。并發(fā)地,BTU標(biāo)識(shí)符通過地址線324被提供到多路復(fù)用器296,用于從BTU表192中選擇最佳BTU寄存器標(biāo)識(shí)的BTU。隨著BTU仲裁器發(fā)送的允許控制信號(hào),當(dāng)前BTU的地址選擇信號(hào)通過控制線298被提供到多路復(fù)用器296。完整的BTU因此可被尋址,并可用于編程PCI或DSP接口160、168,以執(zhí)行脈沖串模式的數(shù)據(jù)傳送。一旦被編程,PCI和DSP接口160、168就作為設(shè)備2620-n中的一個(gè),根據(jù)指定的脈沖串?dāng)?shù)據(jù)傳送的方向,參加請(qǐng)求對(duì)FIFO池284的訪問。當(dāng)數(shù)據(jù)要被傳送到FIFO池284內(nèi)的FIFO時(shí),脈沖串?dāng)?shù)據(jù)傳送的執(zhí)行在設(shè)備160、168請(qǐng)求仲裁訪問FIFO池284之前。當(dāng)數(shù)據(jù)傳送是來自FIFO池284時(shí),設(shè)備160、168在執(zhí)行脈沖串?dāng)?shù)據(jù)傳送之前首先仲裁、以從FIFO中得到數(shù)據(jù)。PCI和DSP接口都含有內(nèi)部脈沖串?dāng)?shù)據(jù)FIFO,用于提供足夠的存儲(chǔ)空間,以緩沖每一個(gè)單個(gè)的數(shù)據(jù)脈沖串。在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,PCI內(nèi)部脈沖串?dāng)?shù)據(jù)FIFO的深度是32字節(jié),而DSP內(nèi)部FIFO是16字節(jié)。
一旦PCI或DSP接口160、168已經(jīng)完成了一個(gè)與FIFO池284有關(guān)的總線控制數(shù)據(jù)傳送,接口160、168便請(qǐng)求PCI或DSP更新。到BTU仲裁器190的更新請(qǐng)求不受新BTU的選擇的限制。相反地,被當(dāng)前BTU寄存器320、322的內(nèi)容標(biāo)識(shí)的BTU被立即使用。因此,更新操作被施加到用于編程立即進(jìn)行的脈沖串?dāng)?shù)據(jù)傳送的BTU。隨著BTU仲裁器190發(fā)送允許PCI或允許DSP信號(hào),PCI或DSP接口160、168被允許將更新的信息寫回到由相應(yīng)的當(dāng)前BTU寄存器320、322的內(nèi)容標(biāo)識(shí)的BTU中。隨著該更新,傳送完成標(biāo)志的狀態(tài)也被有效地傳送到被引用的BTU。FIFO標(biāo)志存儲(chǔ)器中等價(jià)的標(biāo)志也被更新,雖然最好是與脈沖串傳送本身聯(lián)系起來。一旦BTU更新已經(jīng)完成,相應(yīng)的PCI或DSP接口160、168再次向BTU仲裁器190聲明訪問請(qǐng)求,并等待BTU編程。
PCI和DSP接口160、168可被編程,以產(chǎn)生與脈沖串?dāng)?shù)據(jù)傳送的執(zhí)行有關(guān)的以及可能地響應(yīng)數(shù)據(jù)傳送錯(cuò)誤的中斷。PCI和DSP接口160、168向接口中斷控制器326提供完成和錯(cuò)誤控制信號(hào)。當(dāng)最佳寄存器312、314被復(fù)制到當(dāng)前寄存器320、322時(shí),被編程到BTU表192中和從BTU表192提供的、PCI和DSP接口160、168的脈沖串完成響應(yīng)中斷操作被存儲(chǔ)在當(dāng)前寄存器320、322中。每當(dāng)PCI或DSP接口被允許執(zhí)行一個(gè)脈沖串?dāng)?shù)據(jù)傳送時(shí),被編程的中斷響應(yīng)行為適當(dāng)?shù)貜漠?dāng)前寄存器320、322之一中被提供到接口中斷控制器326。在脈沖串?dāng)?shù)據(jù)傳送完成或檢測到錯(cuò)誤狀態(tài)時(shí),接口中斷控制器326在控制線328上向主中斷控制器188提供中斷定義控制信號(hào),如果有任何中斷產(chǎn)生的話。
Ⅷ.需求驅(qū)動(dòng)數(shù)據(jù)傳送操作8a至8c示出一些示例性的數(shù)據(jù)和控制路徑的實(shí)例。通過使用2個(gè)FIFO和4個(gè)BTU建立到CODEC接口176的邏輯雙向接口。由于FIFO對(duì)數(shù)據(jù)傳送是獨(dú)立單向的,所以將分離的BTU與每個(gè)FIFO關(guān)聯(lián),以建立對(duì)數(shù)據(jù)傳送路徑的管理。
CODEC接口176用作FIFO 1的數(shù)據(jù)消耗者。因此,CODEC接口176要求按其內(nèi)部操作建立起來的數(shù)據(jù)傳送速率訪問FIFO池284。同時(shí),BTU 1參加BTU掃描器196的掃描操作。當(dāng)CODEC接口176從FIFO 1中抽取數(shù)據(jù)時(shí),F(xiàn)IFO標(biāo)志被更新,直到FIFO 1中有足夠的空間用于脈沖串?dāng)?shù)據(jù)傳送。BTU 1然后變得有資格被BTU仲裁器190選擇,以便對(duì)PCI接口160或DSP接口166進(jìn)行編程,用于從系統(tǒng)的主存儲(chǔ)器14或DSP RAM 34到FIFO 1的脈沖串?dāng)?shù)據(jù)傳送,這由FIFO 1的編程指定。
當(dāng)BTU 1的傳送長度用完時(shí),總線主控?cái)?shù)據(jù)傳送可通過PCI或DSP接口160、168被執(zhí)行,以便把下一個(gè)順序的BTU加載到BTU表192,來保持到CODEC接口176的數(shù)據(jù)流的連續(xù)性。既然流數(shù)據(jù)可作為片斷被存儲(chǔ)到系統(tǒng)主存儲(chǔ)器14或DSP RAM 34,所以分別標(biāo)識(shí)該數(shù)據(jù)片斷的鏈接的BTU序列用于有效地實(shí)現(xiàn)一個(gè)分散/集中機(jī)制。因?yàn)閷?duì)用于流數(shù)據(jù)傳送的BTU的處理、以及對(duì)鏈接的或鏈接到的BTU的再加載,相對(duì)主處理器12和DSP 32、36來說是自主地執(zhí)行的,尤其是沒有必要產(chǎn)生那些需要主處理器12或DSP 32、36進(jìn)行服務(wù)的中斷,所以主處理器12和DSP 32、36可獨(dú)立于I/O通道控制器22的正在進(jìn)行的操作,從而提供了其有效的利用。最好,在控制數(shù)據(jù)流傳送到FIFO 1的鏈接的BTU序列中,最后一個(gè)BTU被編程,以便在BTU指定的數(shù)據(jù)傳送完成時(shí)啟動(dòng)中斷。
從CODEC接口176接收的數(shù)據(jù)被需求驅(qū)動(dòng)到FIFO 2,以便傳送、比如到系統(tǒng)主存儲(chǔ)器14。當(dāng)CODEC接口176收到數(shù)據(jù)時(shí),該接口就請(qǐng)求訪問FIFO池,以便以與該CODEC接口176的接收數(shù)據(jù)速率一致的數(shù)據(jù)速率來傳送數(shù)據(jù)。此外,當(dāng)FIFO 2填充得足夠多,有資格進(jìn)行總線主控傳送時(shí),BTU 2將被選擇用于對(duì)PCI接口160進(jìn)行編程,以便執(zhí)行從FIFO 2到系統(tǒng)主存儲(chǔ)器14的數(shù)據(jù)的脈沖串?dāng)?shù)據(jù)傳送。
當(dāng)?shù)交蛘邚腃ODEC接口176到FIFO 1或FIFO 2的數(shù)據(jù)流終止時(shí),相應(yīng)的FIFO標(biāo)志將被更新以反映傳送完成狀態(tài)。該狀態(tài)將被反映到最后鏈接到BTU 1或BTU 2的后繼BTU中。最終,傳送完成將引起一個(gè)FIFO復(fù)位操作,以清除該FIFO。因此,中斷可在到FIFO 1或從FIFO 2的數(shù)據(jù)傳送的最后產(chǎn)生。
圖8b舉例說明一個(gè)更加復(fù)雜的雙向數(shù)據(jù)流傳送,涉及的數(shù)據(jù)正從系統(tǒng)主存儲(chǔ)器14、通過FIFO 3被傳送到DSP 32、再到直接連接到DSP 32上的CODEC接口40。因?yàn)閺南到y(tǒng)主存儲(chǔ)器14的數(shù)據(jù)傳送和到DSP RAM 34的數(shù)據(jù)傳送都是總線主控傳送,所以,將兩個(gè)分離的BTU 3和4用于控制通過FIFO3的數(shù)據(jù)的傳送。在該例子中,BTU 4被DSP 32編程到BTU表192中,同時(shí)BTU 3被主處理器12編程。由于DSP 32負(fù)責(zé)管理由BTU 4所指向的RAM 34的數(shù)據(jù)目的部分,所以,DSP 32可建立BTU 4及鏈接的后繼者,以便指定與期望長度的數(shù)據(jù)相對(duì)應(yīng)的塊的傳送,并且當(dāng)每一個(gè)或僅僅最后一個(gè)到DSPRAM 34的數(shù)據(jù)的塊的傳送完成時(shí),引起中斷的產(chǎn)生。同時(shí),當(dāng)FIFO 3中的足夠的空間變得對(duì)數(shù)據(jù)脈沖串傳送有效時(shí),BTU 3和鏈接的后繼者在總線傳送控制系統(tǒng)170的操作中成為活動(dòng)的。最好,當(dāng)最后的到FIFO 3的數(shù)據(jù)脈沖串傳送被執(zhí)行時(shí),鏈接到BTU 3的后繼BTU將指定到主處理器12的中斷的產(chǎn)生??商鎿Q地,主處理器12可通過消息端口184向DSP 32發(fā)送簡單的消息,以便在FIFO 3最后排空時(shí)指定該數(shù)據(jù)流傳送的完成。
由DSP 32從CODEC接口40接收的數(shù)據(jù)可被數(shù)字信號(hào)處理器32處理,然后被存儲(chǔ)到RAM 34中的緩沖位置中。一旦數(shù)據(jù)的塊已在DSP RAM 34中建立起來,DSP 32就將BTU 5編程到BTU表192中。BTU 5被允許不久,將被用于編程從DSP RAM 34到FIFO 4的脈沖串?dāng)?shù)據(jù)傳送。當(dāng)FIFO 4填充得足夠多,能夠支持脈沖串?dāng)?shù)據(jù)傳送時(shí),由主處理器12預(yù)建立的BTU 6將有資格仲裁選擇,以便編程PCI總線主控接口160,從而執(zhí)行到系統(tǒng)主存儲(chǔ)器14的數(shù)據(jù)脈沖串傳送,其地址由BTU 6指定或由鏈接的后繼BTU指定。為終止該數(shù)據(jù)流,DSP 32可通過消息端口184向主處理器12傳送一條消息,指定要傳送的數(shù)據(jù)的總數(shù)。然后,主處理器12建立一個(gè)最終BTU,反映殘存數(shù)據(jù)的全部預(yù)期的總數(shù),并且在數(shù)據(jù)被傳送到系統(tǒng)主存儲(chǔ)器14以后,產(chǎn)生一個(gè)中斷。然而,最好是,改用DSP 32來管理DSP總線主控部件150,來發(fā)送關(guān)于該流數(shù)據(jù)的當(dāng)前和最終部分的傳送的傳送完成信號(hào)。
圖8c示出了一個(gè)更加復(fù)雜的例子。將MIDI接口174通過FIFO 5連接,以便從系統(tǒng)主存儲(chǔ)器14接收數(shù)據(jù)。主處理器12最好使用立即傳送端口1820來將數(shù)據(jù)提供到FIFO 5。因?yàn)檩敵鯩IDI數(shù)據(jù)傳送流的定時(shí)由主處理器12親自進(jìn)行管理,所以,立即傳送端口1820被主處理器12用于被動(dòng)地向FIFO 5提供數(shù)據(jù)。該使用的被動(dòng)在于沒有中斷產(chǎn)生以響應(yīng)將數(shù)據(jù)放入FIFO 5中。相反,MIDI接口174用于每當(dāng)數(shù)據(jù)存在于相應(yīng)的FIFO池5中時(shí),請(qǐng)求FIFO池的訪問。通常,考慮到MIDI設(shè)備的標(biāo)準(zhǔn)數(shù)據(jù)速率,完成從FIFO 5到MIDI接口174的數(shù)據(jù)傳送中的等待時(shí)間為最小且足夠均勻。因此,與通過本發(fā)明的I/O通道控制器核心26管理的其它數(shù)據(jù)傳送的需求驅(qū)動(dòng)操作不同,通過MIDI接口174的輸出所提供的數(shù)據(jù)的速率是源,而不是需求驅(qū)動(dòng)。
從MIDI接口174發(fā)出或輸入的數(shù)據(jù)實(shí)際上按MIDI接口174建立的接收數(shù)據(jù)速率被直接提供到FIFO 6。在通過接口174收到數(shù)據(jù)的每一個(gè)字節(jié)或字時(shí),立即發(fā)出請(qǐng)求,以將數(shù)據(jù)傳送到FIFO池186中的相應(yīng)FIFO。此外,通常,考慮到MIDI設(shè)備的標(biāo)準(zhǔn)數(shù)據(jù)速率,完成從MIDI接口174到FIFO 6的數(shù)據(jù)傳送的等待時(shí)間為最小且足夠均勻。
在這個(gè)實(shí)例中,第二立即傳送端口1821最好用于每當(dāng)輸入MIDI數(shù)據(jù)被放置到FIFO 6時(shí),主動(dòng)地產(chǎn)生一個(gè)到DSP 36的中斷。為響應(yīng)該中斷,DSP 36通過立即傳送端口1821檢索來自FIFO 6的數(shù)據(jù),記錄相應(yīng)的時(shí)間戳,并將它們兩者存儲(chǔ)到DSP RAM 34中。因此,DSP 36能夠以最小的、基本固定的等待時(shí)間高效地接收、記時(shí)間戳、以及處理從MIDI接口174接收的數(shù)據(jù)。盡管立即傳送端口1821將產(chǎn)生可觀數(shù)量的DSP中斷,但MIDI數(shù)據(jù)傳送的讀取速率相當(dāng)?shù)停褼SP 36在中斷服務(wù)方面典型地相當(dāng)高效。在任何情況下,這些MIDI相關(guān)的中斷的整個(gè)處理開銷對(duì)DSP 36是隔離的,并與主處理器12和任何其它DSP 32隔離。加載到DSP 36上的結(jié)果數(shù)據(jù)處理負(fù)荷能夠被選擇,以便使任何并發(fā)的、將數(shù)據(jù)提供到直接連接的、與DSP RAM 34有關(guān)的CODEC接口42的操作、或從該CODEC接口42接收數(shù)據(jù)的操作不超過DSP36的數(shù)據(jù)處理能力。
最后,由DSP 36接收和處理的數(shù)據(jù)可通過,比如,CODEC接口42被傳送以作進(jìn)一步的處理,或在BTU 8和9的相互控制下、通過FIFO 7被傳送到系統(tǒng)主存儲(chǔ)器14,或上述兩者都有。
根據(jù)本發(fā)明,以上所描述的關(guān)于圖8a-c的處理能夠并且典型地相互獨(dú)立。該處理中的每一個(gè)都可代表一個(gè)獨(dú)立的正被傳送的數(shù)據(jù)流,該傳送受控于在主處理器12和與I/O通道控制器22關(guān)聯(lián)的數(shù)據(jù)源和宿(source and sink)之間的獨(dú)立的控制線程。然而,本發(fā)明特定地允許上述和其它可能的處理并發(fā)地進(jìn)行。而且,由于每一個(gè)流的需求驅(qū)動(dòng)操作,根據(jù)一個(gè)動(dòng)態(tài)的和連續(xù)的基準(zhǔn),公平地分配I/O通道控制器22的使用,以確保每個(gè)流的基本的數(shù)據(jù)傳送速率滿足外圍設(shè)備數(shù)據(jù)源或宿的要求。
Ⅸ.總結(jié)至此,已經(jīng)描述了一種多功能I/O外圍設(shè)備支持系統(tǒng)。該外圍設(shè)備系統(tǒng)提供了實(shí)質(zhì)自主操作的、多線程數(shù)據(jù)流的傳送,該數(shù)據(jù)流的傳送能夠顯著地匹配連接到該外圍設(shè)備系統(tǒng)的集成的和外部的外圍設(shè)備的需求的I/O帶寬。另外,該外圍設(shè)備系統(tǒng)對(duì)多個(gè)數(shù)字信號(hào)處理器提供存儲(chǔ)器到存儲(chǔ)器數(shù)據(jù)傳送的支持,該多個(gè)數(shù)字信號(hào)處理器可用于從主處理器卸載處理和中斷密集的任務(wù),并且,同時(shí),最小化和直接支持主處理器在管理這些數(shù)字信號(hào)處理器時(shí)的開銷。
根據(jù)對(duì)本發(fā)明的優(yōu)選實(shí)施例的上述描述,本技術(shù)領(lǐng)域的技術(shù)人員對(duì)該公開的實(shí)施例可以進(jìn)行許多修改和變化。因而應(yīng)該理解的是,在所附權(quán)利要求的范圍內(nèi),本發(fā)明的實(shí)施可不同于以上的具體描述。
權(quán)利要求
1.一種通道控制器,用于在主處理器系統(tǒng)和多個(gè)I/O設(shè)備之間進(jìn)行多路并行數(shù)字?jǐn)?shù)據(jù)流的并發(fā)傳送。所述通道控制器包括a)數(shù)據(jù)和控制總線;b)第一接口,包括可聯(lián)接到主處理器系統(tǒng)的第一緩沖器,所述第一接口用于在所述主處理器系統(tǒng)與所述第一緩沖器之間、以及在所述第一緩沖器與所述數(shù)據(jù)和控制總線之間進(jìn)行第一數(shù)據(jù)段的傳送,該第一數(shù)據(jù)段包括可變的數(shù)據(jù)字節(jié)數(shù),但不超過第一預(yù)定的字節(jié)數(shù);c)第二接口,包括可聯(lián)接到第一預(yù)定的I/O設(shè)備的第二緩沖器,所述第二接口用于在所述主處理器系統(tǒng)與所述第二緩沖器之間、以及在所述第二緩沖器與所述數(shù)據(jù)和控制總線之間進(jìn)行第二數(shù)據(jù)段的傳送,該第二數(shù)據(jù)段包括可變的數(shù)據(jù)字節(jié)數(shù),但不超過第二預(yù)定的字節(jié)數(shù);以及d)聯(lián)接到所述數(shù)據(jù)和控制總線的FIFO池,用于與所述第一接口交換第一數(shù)據(jù)段,以及與所述第二接口交換第二數(shù)據(jù)段,所述FIFO池允許暫時(shí)地并發(fā)存儲(chǔ)多個(gè)所述第一和第二數(shù)據(jù)段。
2.如權(quán)利要求1所述的通道控制器,其中,所述FIFO池包括訪問仲裁器,用于選擇性地授權(quán)由所述第一和第二接口對(duì)所述FIFO池的有關(guān)訪問。
3.如權(quán)利要求2所述的通道控制器,其中,所述FIFO池包括多個(gè)數(shù)據(jù)FIFO,并且其中,第一預(yù)定的數(shù)據(jù)FIFO與所述第一和第二接口關(guān)聯(lián),以通過所述第一預(yù)定的數(shù)據(jù)FIFO和在所述第一和第二接口之間提供數(shù)據(jù)傳送路徑。
4.如權(quán)利要求3所述的通道控制器,還包括第三接口,該第三接口包括可聯(lián)接到第二預(yù)定的I/O設(shè)備的第三緩沖器,所述第三接口用于在所述主處理器系統(tǒng)與所述第三緩沖器之間、以及在所述第三緩沖器與所述數(shù)據(jù)和控制總線之間進(jìn)行第三數(shù)據(jù)段的傳送,該第三數(shù)據(jù)段包括可變的數(shù)據(jù)字節(jié)數(shù),但不超過第三預(yù)定的字節(jié)數(shù);并且其中,所述訪問仲裁器用于選擇性地授權(quán)由所述第三接口對(duì)所述FIFO池的相應(yīng)訪問。
5.如權(quán)利要求4所述的通道控制器,其中,第二預(yù)定的數(shù)據(jù)FIFO與所述第一和第三接口關(guān)聯(lián),以通過所述第二預(yù)定的數(shù)據(jù)FIFO和在所述第一和第三接口之間提供數(shù)據(jù)傳送路徑。
6.如權(quán)利要求5所述的通道控制器,還包括聯(lián)接到所述FIFO池的傳送控制器,用于管理通過所述第一和第二數(shù)據(jù)FIFO的多個(gè)所述第一、第二以及第三數(shù)據(jù)段的傳送。
7.一種通道控制器,提供對(duì)計(jì)算機(jī)系統(tǒng)的預(yù)定的輸入/輸出(I/O)操作的控制、和用于存儲(chǔ)一個(gè)或多個(gè)I/O數(shù)據(jù)流,上述計(jì)算機(jī)系統(tǒng)具有通過執(zhí)行指令控制該計(jì)算機(jī)系統(tǒng)的操作的主處理器、和聯(lián)接到該主處理器的存儲(chǔ)器,所述通道控制器包括多路數(shù)據(jù)通道控制器核心,含有多個(gè)FIFO緩沖器;多個(gè)I/O接口部件,可聯(lián)接到所述多個(gè)FIFO緩沖器;以及控制邏輯,用于管理通過所述多個(gè)I/O接口部件和所述多個(gè)FIFO緩沖器的多路數(shù)據(jù)流的異步傳送,所述控制邏輯用于在所述多個(gè)FIFO緩沖器中的任何一個(gè)與第一I/O接口部件之間建立單向數(shù)據(jù)傳送路徑,其中,所述第一I/O接口部件可聯(lián)接到所述存儲(chǔ)器,并且其中,第二I/O接口部件可聯(lián)接到數(shù)字信號(hào)處理(DSP)設(shè)備。
8.如權(quán)利要求7所述的通道控制器,其中,所述控制邏輯用于所述第一I/O接口部件與所述多個(gè)FIFO緩沖器的第一FIFO緩沖器之間的可編程關(guān)聯(lián)。
9.如權(quán)利要求8所述的通道控制器,其中,所述控制邏輯還用于所述第一I/O接口部件與所述多個(gè)FIFO緩沖器的第二FIFO緩沖器之間的可編程關(guān)聯(lián)。
10.如權(quán)利要求9所述的通道控制器,其中,所述控制邏輯還用于所述第一FIFO緩沖器與所述第二I/O接口部件之間的可編程關(guān)聯(lián)。
11.如權(quán)利要求10所述的通道控制器,其中,所述多個(gè)FIFO緩沖器可被唯一地標(biāo)識(shí),且其中,所述控制邏輯用于所述多個(gè)I/O接口部件與所述多個(gè)所述FIFO緩沖器之間的可編程關(guān)聯(lián)。
12.如權(quán)利要求7所述的通道控制器,其中,所述控制邏輯用于多個(gè)預(yù)定控制線程的管理,該多個(gè)預(yù)定控制線程用于在選擇的多組所述多個(gè)I/O接口部件與所述多個(gè)所述FIFO緩沖器之間提供多個(gè)數(shù)據(jù)流的自主傳送。
13.如權(quán)利要求12所述的通道控制器,其中,第一所述選擇組被所述主處理器可編程地選擇。
14.如權(quán)利要求13所述的通道控制器,其中,第二所述選擇組被所述數(shù)字信號(hào)處理設(shè)備可編程地選擇。
15.如權(quán)利要求7所述的通道控制器,其中,所述控制邏輯被所述主處理器選擇性地允許,用于進(jìn)行主機(jī)端控制線程所定義的數(shù)據(jù)傳送和FIFO緩沖器操作,以在所述第一I/O接口部件和所述多個(gè)FIFO緩沖器中相應(yīng)的一個(gè)之間自主地傳送所述多路數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的一個(gè)段。
16.如權(quán)利要求15所述的通道控制器,其中,所述控制邏輯還被所述DSP選擇性地允許,用于進(jìn)行DSP端控制線程所定義的數(shù)據(jù)傳送和FIFO緩沖器操作,以在所述多個(gè)FIFO緩沖器中的所述相應(yīng)的一個(gè)與所述第二I/O接口部件之間自主地傳送所述多路數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的所述段。
17.如權(quán)利要求16所述的通道控制器,其中,所述控制邏輯可被編程,以便將所述多個(gè)FIFO緩沖器中的所述相應(yīng)的一個(gè)與第三I/O接口部件關(guān)聯(lián),其中,所述第三I/O接口部件的特征是要求一個(gè)預(yù)定的數(shù)據(jù)傳送速率,并且其中,所述控制邏輯用于在所述FIFO緩沖器中的所述相應(yīng)的一個(gè)和所述第三I/O接口部件之間、基本上以所述預(yù)定的數(shù)據(jù)傳送速率、自主地傳送所述多路數(shù)據(jù)流中的一個(gè)數(shù)據(jù)流的所述段的數(shù)據(jù)。
全文摘要
一種多路數(shù)據(jù)流通道控制器(26),通過聯(lián)接于通用處理器系統(tǒng)(12)和專用處理器系統(tǒng)(36)之間的外圍設(shè)備數(shù)據(jù)通道(41),并發(fā)地、實(shí)時(shí)地提供多路數(shù)據(jù)流的需求驅(qū)動(dòng)傳送。該控制器包括:第一總線主控接口(24),聯(lián)接到通用處理器系統(tǒng)總線(20);第二總線主控接口,聯(lián)接到專用處理器系統(tǒng)總線(30);可分段緩沖存儲(chǔ)器(未示出);以及控制器(26),用于管理通過上述可分段緩沖存儲(chǔ)器、在第一和第二總線主控接口之間進(jìn)行的數(shù)據(jù)段的傳送。該控制器響應(yīng)專用處理器總線(30)提供的信號(hào),以請(qǐng)求從在可分段緩沖存儲(chǔ)器中登臺(tái)的相應(yīng)數(shù)據(jù)流傳送連續(xù)數(shù)據(jù)段。該控制器緩和了通過第一總線主控接口(24)到可分段緩沖存儲(chǔ)器的有關(guān)數(shù)據(jù)流的連續(xù)數(shù)據(jù)段的傳送。
文檔編號(hào)G06F13/12GK1218567SQ97194594
公開日1999年6月2日 申請(qǐng)日期1997年3月6日 優(yōu)先權(quán)日1996年3月13日
發(fā)明者詹姆斯·K·吉福德, 斯里德哈·貝格爾, 阿德里安·劉易斯, 唐納德·J·斯潘塞, 托馬斯·E·基爾伯恩, 丹尼爾·B·戈克諾爾 申請(qǐng)人:鉆石多媒體系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1