專利名稱:數(shù)字通信處理器的制作方法
相關(guān)申請的交叉索引這個(gè)專利申請要求下列美國臨時(shí)申請的優(yōu)先權(quán)§60/084,706,Brown,等人,可編程的包交換機(jī),98年5月8日申請;和§60/105,823,Brown,等人,數(shù)字通信處理器,98年10月27日申請。
本發(fā)明的領(lǐng)域本發(fā)明一般涉及數(shù)字網(wǎng)絡(luò),更特別地,涉及在這樣一個(gè)數(shù)字網(wǎng)絡(luò)中所使用的交換機(jī)。
現(xiàn)有技術(shù)的描述
圖1包和協(xié)議在數(shù)字系統(tǒng)中所進(jìn)行的通信一般是經(jīng)過包進(jìn)行的。圖1中的113顯示了一個(gè)包。簡單地說,一個(gè)包是一個(gè)比特序列,這個(gè)比特序列的含義是由一個(gè)協(xié)議決定的。這個(gè)協(xié)議定義處理這個(gè)包的數(shù)字設(shè)備如何解釋包中的比特。不管什么協(xié)議,大多數(shù)包具有一個(gè)報(bào)頭115,這個(gè)報(bào)頭表示如何根據(jù)這個(gè)協(xié)議來處理該特定包,另外,包也具有一個(gè)負(fù)荷117,這個(gè)負(fù)荷117是包所進(jìn)行通信的實(shí)際信息。一個(gè)包也可能具有一個(gè)報(bào)尾119,這個(gè)報(bào)尾119可能簡單地僅指示包的結(jié)束,但是也可能包括允許對在包的傳輸或者處理期間所發(fā)生 的錯(cuò)誤進(jìn)行檢測和/或者糾正的信息。取決于包協(xié)議的不同,這個(gè)包的長度可能是固定的,也可能是不定長的。在下面的討論中,報(bào)頭115和報(bào)尾119中的內(nèi)容將被稱作協(xié)議數(shù)據(jù),因?yàn)榻忉屵@些內(nèi)容的方式完全是由這個(gè)協(xié)議所決定的,而負(fù)荷117中的內(nèi)容將被稱作負(fù)荷數(shù)據(jù)。某個(gè)特定協(xié)議的包也經(jīng)常被稱作幀或者信元。
在數(shù)字系統(tǒng)中,在許多不同的層上使用包來進(jìn)行通信。這樣,在這個(gè)數(shù)字系統(tǒng)中一個(gè)層上的一組包的負(fù)荷可能是一更高層的一個(gè)包。這被顯示在圖1的137中。IP包是根據(jù)IP協(xié)議來被解釋的一個(gè)包。IP包121具有一個(gè)IP包報(bào)頭123和一個(gè)長度可變的IP負(fù)荷125。包括在IP報(bào)頭123的信息中的是IP負(fù)荷125的長度。當(dāng)IP包121被經(jīng)過一個(gè)物理網(wǎng)絡(luò)來傳送時(shí),IP包被承載在一個(gè)傳送包127流135的負(fù)荷中。每一個(gè)傳送包127具有其自己的報(bào)頭129,負(fù)荷131,和報(bào)尾133。這里被稱作傳送包的是在ISO-7層模型中的鏈路層的包。傳送包的長度可能是固定的或者也可能是可變的,這與鏈路層所使用的協(xié)議相關(guān)。
處理這個(gè)傳送包的設(shè)備按照包的報(bào)頭129和報(bào)尾133所指示的來對這個(gè)包進(jìn)行處理,并且不檢查負(fù)荷131內(nèi)的內(nèi)容。當(dāng)一個(gè)傳送包到達(dá)其目的地時(shí),其負(fù)荷被傳遞到這個(gè)系統(tǒng)中、它所希望到達(dá)的部分,在這個(gè)情形下,其負(fù)荷到達(dá)根據(jù)IP協(xié)議而進(jìn)行工作的一個(gè)部件,并且這個(gè)部件按照IP報(bào)頭123中所指示的來處理IP包121。當(dāng)然,IP負(fù)荷125仍可以是更高層上的另一個(gè)包。例如,它可以是需要發(fā)送到一個(gè)解密器的一個(gè)包,并且這個(gè)包的負(fù)荷可以是一個(gè)被加密的IP包121。在這樣一個(gè)情形下,處理IP包121的這個(gè)部件將這個(gè)負(fù)荷傳遞到這個(gè)解密器,這個(gè)解密器對加密的IP包121進(jìn)行解密,并且將被解密的IP包返回到處理IP包的這個(gè)部件,以進(jìn)行進(jìn)一步的處理。當(dāng)然,對IP包的這個(gè)處理可能包括將這個(gè)被解密的IP包發(fā)送到另一個(gè)目的地,并且如果與這個(gè)目的地的通信是經(jīng)過傳送層包127的協(xié)議來進(jìn)行的,處理IP包的這個(gè)部件將向產(chǎn)生傳送層包流的這個(gè)部件提供被解密的IP包,并且這個(gè)被解密的IP包將被攜帶在傳送層包127的負(fù)荷中。
包交換機(jī)當(dāng)包被用于在相互遠(yuǎn)離的數(shù)字系統(tǒng)中進(jìn)行通信時(shí),包就在連接這個(gè)系統(tǒng)的數(shù)字網(wǎng)絡(luò)中移動(dòng)。在物理層,這個(gè)數(shù)字網(wǎng)絡(luò)可以采用任何形式的媒質(zhì)來在兩個(gè)設(shè)備之間發(fā)送一個(gè)信號,例如,采用以太,一個(gè)導(dǎo)電線,或者一根光纖。包被包交換機(jī)在傳輸路徑之間進(jìn)行路由。這個(gè)包交換機(jī)根據(jù)典型地被包括在包的報(bào)頭中的信息來路由這個(gè)包。如人們所期望的是,每一類協(xié)議均有其自己的路由規(guī)則。例如,IP協(xié)議使用邏輯路由;一個(gè)IP包的每一個(gè)源或者目的地均具有一個(gè)邏輯IP地址,并且用于發(fā)送到一個(gè)給定目的地的一個(gè)IP包在其報(bào)頭中具有這個(gè)目的地的邏輯IP地址。這個(gè)報(bào)頭不指出目的地的物理位置。這個(gè)IP包交換機(jī)必須將這個(gè)IP地址翻譯成至少在到其目的地的部分路徑上獲得這個(gè)包的一個(gè)物理地址,并且也必須產(chǎn)生發(fā)送到這個(gè)物理地址的一個(gè)傳送包流135,在這個(gè)傳送包流135的負(fù)荷131中攜帶這個(gè)IP包。這樣,IP節(jié)點(diǎn)109(n)位于以太局域網(wǎng)105(a)的以太網(wǎng)節(jié)點(diǎn)107(n)上,并且連接到這個(gè)LAN105(a)的一個(gè)IP包交換機(jī)必須通過產(chǎn)生發(fā)送到以太網(wǎng)節(jié)點(diǎn)107(n)的一個(gè)以太網(wǎng)包流來對被發(fā)送到IP節(jié)點(diǎn)109(n)的一個(gè)IP包作出響應(yīng),其中,在這個(gè)以太網(wǎng)包流的負(fù)荷中攜帶這個(gè)IP包。
在101處顯示了一個(gè)典型的IP交換機(jī)。包交換機(jī)101被連接到一些物理媒質(zhì)106,通過這些物理媒質(zhì)106,這個(gè)包交換機(jī)101可以接收和發(fā)送數(shù)據(jù)。這樣媒質(zhì)的示例可以是光纖或者可以是由電導(dǎo)體組成的電纜。每一個(gè)這樣的媒質(zhì)106具有其自己的、用于定義經(jīng)過這個(gè)媒質(zhì)而發(fā)送的數(shù)據(jù)的協(xié)議;例如,用于經(jīng)過一個(gè)光纖來發(fā)送數(shù)據(jù)的、被廣泛使用的協(xié)議是SONET協(xié)議。在圖1中,媒質(zhì)106(a..m)是使用SONET協(xié)議的光纖,而媒質(zhì)106(n..z)是電纜。在這個(gè)媒質(zhì)層的包在這里被稱作媒質(zhì)層包,并且媒質(zhì)層包的負(fù)荷是傳送層包。就ISO-7層協(xié)議模型來說,這個(gè)媒質(zhì)層包就是物理層的包。在交換機(jī)103中,經(jīng)過光纖被發(fā)送和接收的傳送層包是根據(jù)在ATM廣域網(wǎng)111中被使用的ATM協(xié)議來產(chǎn)生的,而經(jīng)過電纜被發(fā)送和接收的傳送層包是根據(jù)在局域網(wǎng)109中被使用的以太網(wǎng)協(xié)議來產(chǎn)生的。在許多情形下,傳送層包的負(fù)荷是IP包,并且在這些情形下,包交換機(jī)103將這個(gè)IP包路由到IP節(jié)點(diǎn)109。如上面所描述的,這是通過確定IP包為到達(dá)其目的地將經(jīng)過的媒質(zhì)106(i),并且然后,根據(jù)這個(gè)媒質(zhì)所要求的協(xié)議產(chǎn)生一個(gè)包流,來完成的,其中,媒質(zhì)層包流將與這個(gè)媒質(zhì)一起被使用的傳送層包流作為負(fù)荷,并且接著傳送層包流將IP包作為的負(fù)荷。這樣,如果包交換機(jī)103從WAN 111接收到需要被發(fā)送到IP節(jié)點(diǎn)109(n)的一個(gè)IP包,并且IP節(jié)點(diǎn)109(n)位于以太局域網(wǎng)105(a)的以太網(wǎng)節(jié)點(diǎn)107(n)上,包交換機(jī)103就必須以媒質(zhì)106(n)所要求的形式產(chǎn)生一個(gè)包流,這個(gè)包流的負(fù)荷是需要發(fā)送到以太網(wǎng)節(jié)點(diǎn)107(n)的一個(gè)以太網(wǎng)包流,并且接著,這個(gè)以太網(wǎng)包流的負(fù)荷是IP包。
這樣,交換機(jī)103必須能夠執(zhí)行下述功能§讀取具有輸入媒質(zhì)協(xié)議所要求的形式的包流,并且檢索作為這個(gè)包流的負(fù)荷的傳送層包,和檢索作為傳送層包的負(fù)荷的其它類型的包;§將在ATM WAN 111上所接收的傳送層包路由到在ATM WAN111上的另一個(gè)目的地;§將在一個(gè)以太網(wǎng)LAN 105上所接收的傳送層包路由到連接在包交換機(jī)103的某個(gè)以太網(wǎng)LAN上的另一個(gè)目的地;§對IP包,按照IP地址所要求的來路由這個(gè)包。
§產(chǎn)生具有輸出媒質(zhì)協(xié)議所要求的形式的向外發(fā)送包流,并且這個(gè)向外發(fā)送包流的負(fù)荷是傳送層包,并且接著,傳送層包的負(fù)荷包括其它類型的包。
這樣的路由可能需要將一個(gè)類型的傳送層包翻譯到另一個(gè)類型的傳送層包。例如,如果從ATM WAN 111進(jìn)來一個(gè)IP包,并且這個(gè)包的目的地是以太局域網(wǎng)105(a)的以太網(wǎng)節(jié)點(diǎn)109(n),包交換機(jī)103必須從ATM傳送層包的負(fù)荷中提取這個(gè)IP包,并且然后將這個(gè)IP包放置在將發(fā)送到以太網(wǎng)節(jié)點(diǎn)107(n)的以太網(wǎng)包的負(fù)荷中。
另外,包交換機(jī)經(jīng)常被用于執(zhí)行安全功能,例如濾波,加密/解密,或者加擾/解擾。在這里,包交換機(jī)103被顯示為在一個(gè)專用網(wǎng)絡(luò)104和一個(gè)公用網(wǎng)絡(luò)102的邊界。每一個(gè)IP包121的報(bào)頭包括這個(gè)包的源IP地址和目的IP地址,并且專用網(wǎng)絡(luò)104的安全政策禁止從公用網(wǎng)絡(luò)102來的、具有某些特定源地址的IP包對專用網(wǎng)絡(luò)104進(jìn)行訪問,并且也禁止從私用網(wǎng)絡(luò)104來的、具有某些特定源地址的IP包對公用網(wǎng)絡(luò)102進(jìn)行訪問。交換機(jī)103通過將每一個(gè)輸入IP包的源地址與需要被禁止其訪問的一個(gè)源地址列表進(jìn)行比較,并且如果這個(gè)輸入包在這個(gè)列表上,就丟棄這個(gè)輸入IP包,來對每一個(gè)輸入IP包進(jìn)行濾波。交換機(jī)103也采用類似的方法來對向外發(fā)送的IP包進(jìn)行濾波。就加密/解密來說,包交換機(jī)103可能會(huì)從公用網(wǎng)絡(luò)102接收一個(gè)IP包,這個(gè)IP包的負(fù)荷是需要發(fā)送到專用網(wǎng)絡(luò)104中一個(gè)IP地址的一個(gè)被加密IP包。在這樣一個(gè)情形下,包交換機(jī)103將獲取這個(gè)被加密IP包,并且對這個(gè)IP包進(jìn)行解密,然后,將這個(gè)IP包發(fā)送到在專用網(wǎng)絡(luò)104中的目的地。類似地,包交換機(jī)103可以接收一個(gè)IP包,并且可以對這個(gè)IP包進(jìn)行加密,然后在經(jīng)過公眾網(wǎng)絡(luò)102發(fā)送其它IP包以前,將這個(gè)IP包作為另一個(gè)IP包的負(fù)荷,其中這個(gè)IP包是需要經(jīng)過公眾網(wǎng)絡(luò)102被發(fā)送到屬于專用網(wǎng)絡(luò)104的一個(gè)目的地。
包交換機(jī)所提出的問題這種包交換機(jī)的設(shè)計(jì)向工程師們提出了很多問題。從前述討論中可以很明顯地看出,一個(gè)包交換機(jī)必須執(zhí)行復(fù)雜的動(dòng)作,例如對輸入包流中的負(fù)荷進(jìn)行定位并且產(chǎn)生向外發(fā)送的包流,在傳送層或者更高層來對包流進(jìn)行路由,翻譯包中的信息,進(jìn)行濾波,和加密/解密。包交換機(jī)執(zhí)行這些動(dòng)作時(shí),其速度必須很快,并且其吞吐量必須很高。這個(gè)包交換機(jī)也必須能夠處理很多類型的業(yè)務(wù),例如從電子郵件的業(yè)務(wù)到數(shù)字TV的業(yè)務(wù),到分組電話的業(yè)務(wù),其中,在電子郵件中所需要的是在提交了一個(gè)電子郵件后的一個(gè)合理時(shí)間內(nèi)(以小時(shí)來度量),這個(gè)電子郵件能夠到達(dá),在數(shù)字TV的業(yè)務(wù)中,包到達(dá)其目的地時(shí),包之間的時(shí)間間隔必須是固定的,而在分組電話中,不僅對包之間的時(shí)間間隔有嚴(yán)格的限制,而且對一個(gè)包在網(wǎng)絡(luò)中從其源到目的地所經(jīng)歷的總時(shí)間長度也有嚴(yán)格的限制。
在現(xiàn)代電子器件中,通過使用專用硬件,已經(jīng)實(shí)現(xiàn)了高速度、高吞吐量,并且也實(shí)現(xiàn)了令人滿意的時(shí)間限制,同時(shí),也使用可編程的處理器來對付復(fù)雜程度?;趯S媚康挠布钠骷湫偷厥强焖俚?,但是其價(jià)格昂貴,不靈活,并且也不能夠進(jìn)行復(fù)雜的處理;基于可編程處理器的器件典型地是便宜,靈活,并且能夠進(jìn)行任何所需要的處理,但是其缺點(diǎn)是速度慢。
這樣,高速度包交換機(jī)是基于專用目的的硬件。如人們所希望的,這樣的包交換機(jī)的速度很快,其吞吐量很高,并且能夠滿足時(shí)間限制,但是它們的價(jià)格是昂貴的,它們也不靈活,并且不能夠執(zhí)行復(fù)雜的功能,例如濾波或者加密/解密。另外,每一個(gè)傳送層協(xié)議需要有自己的特殊硬件,并且因?yàn)檫@個(gè)原因,在一個(gè)高速度交換機(jī)中所使用的傳送層協(xié)議的改變就需要改變這個(gè)交換機(jī)的專用目的硬件。
低速度的包交換機(jī)是基于可編程處理器的。另外,如人們可以預(yù)見的,在開始時(shí),這些交換機(jī)的價(jià)格可以相對比較便宜,并且能夠執(zhí)行任何所希望的復(fù)雜功能,在處理傳送層協(xié)議或者其它層協(xié)議的改變時(shí),僅需要對這個(gè)處理器進(jìn)行重新編程。但是,基于可編程處理器的包交換機(jī)沒有足夠的速度,吞吐量,或者能力來滿足使用專用目的硬件制造的包交換機(jī)所能夠達(dá)到的時(shí)間限制。
所需要的是這樣一個(gè)包交換機(jī),這個(gè)包交換機(jī)是靈活的,低價(jià)格的,并且具有能力來執(zhí)行基于可編程處理器的包交換機(jī)能夠執(zhí)行的復(fù)雜特征功能,同時(shí),也能夠滿足時(shí)間限制,并且能夠提供高速度和高的吞吐量。這里所描述的數(shù)字通信處理器的一個(gè)目的就是提供這樣一個(gè)包交換機(jī)。
通過提供包括多個(gè)數(shù)據(jù)流處理器,一個(gè)流上下文(context)處理器,一個(gè)隊(duì)列管理器,和一個(gè)緩沖器管理器的一個(gè)集成電路,本發(fā)明克服了包交換機(jī)的和處理數(shù)據(jù)流的一般設(shè)備的前述問題。
正在接收一個(gè)數(shù)據(jù)流的一個(gè)數(shù)據(jù)流處理器從這個(gè)數(shù)據(jù)流中提取控制信息,將這個(gè)控制信息提供給這個(gè)上下文處理器以按照這個(gè)數(shù)據(jù)流的上下文所要求的來進(jìn)行解釋,并且使用這個(gè)上下文處理器所提供的結(jié)果來處理這個(gè)數(shù)據(jù)流。在這個(gè)數(shù)據(jù)流需要被進(jìn)行進(jìn)一步發(fā)送的情況下,這個(gè)數(shù)據(jù)流處理器將輸入數(shù)據(jù)流中的負(fù)荷提供到這個(gè)緩沖器管理器,以將這個(gè)負(fù)荷保存在一個(gè)緩沖器中,并且向這個(gè)隊(duì)列管理器發(fā)送一個(gè)排隊(duì)命令。這個(gè)排隊(duì)命令包括一個(gè)描述符,這個(gè)描述符包括標(biāo)識這個(gè)緩沖器的至少一個(gè)標(biāo)記和被正在發(fā)送這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器所讀取的一個(gè)隊(duì)列的一個(gè)隊(duì)列區(qū)分符。這個(gè)隊(duì)列管理器將這個(gè)描述符排在合適的隊(duì)列中。當(dāng)進(jìn)行發(fā)送的這個(gè)數(shù)據(jù)流處理器從這個(gè)隊(duì)列中取出這個(gè)描述符時(shí),這個(gè)數(shù)據(jù)流處理器使用這個(gè)標(biāo)記來從緩沖器中拾取負(fù)荷,并且使用這個(gè)負(fù)荷來產(chǎn)生一個(gè)輸出數(shù)據(jù)流,在產(chǎn)生這個(gè)輸出數(shù)據(jù)流的過程中,按照這個(gè)輸出數(shù)據(jù)流所要求的來添加控制信息。這個(gè)描述符被在這個(gè)數(shù)據(jù)流處理器上運(yùn)行的程序所完全定義,所以,這個(gè)隊(duì)列管理器提供了一個(gè)通用的機(jī)制,來在一個(gè)接收數(shù)據(jù)流處理器和一個(gè)發(fā)送數(shù)據(jù)流處理器之間以一個(gè)有序的方式傳遞信息。
一個(gè)數(shù)據(jù)流處理器包括一個(gè)接收處理器,一個(gè)發(fā)送處理器,一個(gè)控制數(shù)據(jù)處理器,局部存儲(chǔ)器,和一個(gè)DMA引擎,這個(gè)DMA引擎在這個(gè)接收器處理器,這個(gè)發(fā)送處理器,和這個(gè)緩沖器管理器之間、以及在局部存儲(chǔ)器和這個(gè)緩沖器管理器之間提供了DMA訪問。屬于每一個(gè)數(shù)據(jù)流處理器的局部存儲(chǔ)器,以及屬于這個(gè)緩沖器管理器和這個(gè)隊(duì)列管理器的局部存儲(chǔ)器,均是一單個(gè)全局地址空間內(nèi)的一部分,并且可以被任何能夠訪問全局地址空間的設(shè)備所讀取或者進(jìn)行寫入。當(dāng)一個(gè)數(shù)據(jù)流處理器正在接收一個(gè)數(shù)據(jù)流時(shí),這個(gè)接收處理器和這個(gè)控制數(shù)據(jù)處理器按照如下的方式來進(jìn)行合作,以處理這個(gè)流發(fā)送處理器接收這個(gè)流,從這個(gè)流中提取控制信息,并且將這個(gè)控制信息傳遞到這個(gè)控制數(shù)據(jù)處理器,并且將這個(gè)負(fù)荷用DMA的方式傳遞到這個(gè)緩沖器管理器。而這個(gè)發(fā)送處理器在這個(gè)流的下一部分進(jìn)行工作,這個(gè)控制數(shù)據(jù)處理器使用這個(gè)上下文處理器來處理已經(jīng)被進(jìn)行DMA操作的這個(gè)部分的任何上下文信息,并且向這個(gè)隊(duì)列管理器發(fā)送帶關(guān)于被進(jìn)行DMA操作的負(fù)荷的描述符的一個(gè)排隊(duì)命令。稱作數(shù)據(jù)作用域(data scope)的一個(gè)數(shù)據(jù)結(jié)構(gòu)簡化了在這個(gè)控制數(shù)據(jù)處理器和接收處理器之間的信息交換。在這個(gè)發(fā)送處理器和這個(gè)控制數(shù)據(jù)處理器之間所進(jìn)行的交互基本上是相同的,但是不同的是,負(fù)荷的移動(dòng)方向是相反的。
這些數(shù)據(jù)流處理器包括串行數(shù)據(jù)流處理器和至少一個(gè)并行數(shù)據(jù)流處理器。這個(gè)并行數(shù)據(jù)流處理器可以被用于將這個(gè)集成電路連接到另一個(gè)相同類型的集成電路,連接到一個(gè)總線,或者連接到一個(gè)交換構(gòu)造(switching fabric)。
這個(gè)串行數(shù)據(jù)流處理器是高度可配置的。配置是通過全局地址空間內(nèi)的寄存器來完成的。每一個(gè)串行數(shù)據(jù)處理器可以接收和/或者發(fā)送獨(dú)立的數(shù)據(jù)流,或者串行數(shù)據(jù)處理器組可以被組合在一起來合作處理一個(gè)數(shù)據(jù)流。一個(gè)串行數(shù)據(jù)處理器的I/O腳可以被配置成滿足不同物理媒質(zhì)的電氣要求,并且也可以被配置成以使在一個(gè)組合內(nèi)的所有串行數(shù)據(jù)處理器接收相同的輸入。在一個(gè)接收處理器或者一個(gè)發(fā)送處理器內(nèi)的各種器件可以按照處理正在被接收或者被發(fā)送的特定類型串行輸入流所要求的來進(jìn)行使能或者非使能,并且這個(gè)接收或者發(fā)送處理器也可以再循環(huán)它已經(jīng)處理的一個(gè)數(shù)據(jù)流。
在細(xì)讀下述的詳細(xì)描述和圖以后,該領(lǐng)域內(nèi)的技術(shù)人員就可以理解屬于本發(fā)明的其它目的和優(yōu)點(diǎn),其中圖1是一個(gè)網(wǎng)絡(luò)中的一個(gè)包交換機(jī)的一個(gè)框圖;圖2是包括本發(fā)明的數(shù)字信號處理器的一個(gè)包交換機(jī)的一個(gè)高層框圖;圖3是根據(jù)本發(fā)明的數(shù)字通信處理器的一個(gè)高層框圖;圖4是在數(shù)字通信處理器中的一個(gè)信道處理器的一個(gè)高層框圖;圖5是全局地址空間的一個(gè)圖;圖6是一個(gè)信道處理器的局部存儲(chǔ)器的一個(gè)圖;圖7是在一個(gè)信道處理器中所接收的包的處理的一個(gè)流圖;圖8是一個(gè)信道處理器所輸出的包的處理的一個(gè)流圖;圖9顯示了接收和發(fā)送數(shù)據(jù)作用域;圖10是一個(gè)接收處理器421的一個(gè)詳細(xì)框圖;圖11是一個(gè)接收字節(jié)處理器的一個(gè)框圖;圖12是一個(gè)發(fā)送處理器427的一個(gè)詳細(xì)框圖13是一串信道處理器的一個(gè)框圖;圖14是一串信道處理器的局部和共享存儲(chǔ)器的一個(gè)框圖;圖15是執(zhí)行處理器313的一個(gè)框圖;圖16是構(gòu)造處理器(fabric processor)303的一個(gè)框圖;圖17是Rx和Tx構(gòu)造數(shù)據(jù)處理器的一個(gè)詳細(xì)框圖;圖18顯示了通過將兩個(gè)DCP連接在一起而形成的一個(gè)交換機(jī);圖19顯示了通過將多個(gè)DCP連接到一個(gè)交換構(gòu)造而形成的一個(gè)交換機(jī);圖20顯示了如何通過將一個(gè)DCP和另一個(gè)類型的數(shù)字交換邏輯連接到一個(gè)交換構(gòu)造而形成一個(gè)交換機(jī)的;圖21顯示了一個(gè)優(yōu)選實(shí)施方式中的表存儲(chǔ)器207的細(xì)節(jié);圖22顯示了TLE 301的內(nèi)部結(jié)構(gòu);圖23顯示了寄存器存儲(chǔ)器2205和控制存儲(chǔ)器2215的細(xì)節(jié);圖24顯示了TLE 301所執(zhí)行的命令;圖25顯示了一個(gè)接收信道處理器307(i)和一個(gè)發(fā)送信道處理器307(j)如何進(jìn)行合作來交換一系列傳送層包;圖26是將RxSDP 421組合在一個(gè)串中的一個(gè)示例;圖27是將TxSDP 427組合在一個(gè)串中的一個(gè)示例;圖28顯示了一個(gè)環(huán)型總線消息;圖29顯示了到QME 305的信道處理器接口;圖30顯示了在一個(gè)優(yōu)選實(shí)施方式中所采用的隊(duì)列命令;圖31顯示了在一個(gè)優(yōu)選實(shí)施方式中的隊(duì)列數(shù)據(jù)結(jié)構(gòu);圖32顯示了在一個(gè)優(yōu)選實(shí)施方式中的多播數(shù)據(jù)結(jié)構(gòu);圖33是在一個(gè)優(yōu)選實(shí)施方式中的MCL 3123的一個(gè)細(xì)節(jié);圖34顯示了用于管理隊(duì)列的各種結(jié)構(gòu);圖35顯示了QME 305的擴(kuò)展接口;圖36顯示了調(diào)度程序擴(kuò)展接口的細(xì)節(jié);圖37顯示了在調(diào)度程序接口上消息所使用的定時(shí);圖38是緩沖器管理的一個(gè)邏輯視圖39顯示了BME 305的命令細(xì)節(jié);圖40顯示了BME 305的硬件的細(xì)節(jié);圖41顯示了SDRAM 229的內(nèi)容的細(xì)節(jié);圖42顯示了環(huán)型總線節(jié)點(diǎn)接口的細(xì)節(jié);圖43顯示了其上實(shí)現(xiàn)了全局總線319和負(fù)荷總線317的一個(gè)總線結(jié)構(gòu);圖44顯示了在圖43的總線結(jié)構(gòu)上進(jìn)行的長操作和短操作;圖45顯示了全局總線319和負(fù)荷總線317的實(shí)現(xiàn)細(xì)節(jié);圖46顯示了可配置管腳邏輯443的各種結(jié)構(gòu)的細(xì)節(jié);和圖47顯示了被用于配置管腳和接收和發(fā)送處理器的寄存器。
圖中的標(biāo)號有3個(gè)或者更多的數(shù)字右邊兩個(gè)數(shù)字是在剩余數(shù)字所表示的圖中的標(biāo)號。這樣,其標(biāo)號為203的一個(gè)部件首先在圖2中作為部件203出現(xiàn)。
下述詳細(xì)描述將從一個(gè)數(shù)字包交換機(jī)的結(jié)構(gòu)和操作的一個(gè)整體視圖開始,這個(gè)數(shù)字包交換機(jī)包括根據(jù)本發(fā)明的數(shù)字通信處理器,并且其后是這個(gè)數(shù)字通信處理器的結(jié)構(gòu)和操作的一個(gè)整體視圖,并且然后提供這個(gè)數(shù)字通信處理器的部件的結(jié)構(gòu)和操作的細(xì)節(jié)。
包括這個(gè)數(shù)字通信處理器的一個(gè)數(shù)字包交換機(jī)圖2圖2是使用一個(gè)數(shù)字通信處理器集成電路203而制造的一個(gè)包交換機(jī)201的一個(gè)框圖,其中這個(gè)數(shù)字通信處理器集成電路203實(shí)現(xiàn)了根據(jù)本發(fā)明的這個(gè)數(shù)字通信處理器。集成電路201具有用于下述外部設(shè)備的接口§總共16對串行輸入204和串行輸出206 205(0…15),用于根據(jù)傳送協(xié)議而被發(fā)送或者接收的包;§到一個(gè)可選數(shù)字交換機(jī)設(shè)備的一個(gè)32比特輸出和一個(gè)從這個(gè)可選數(shù)字交換機(jī)設(shè)備來的32比特輸入(接口221);§到一個(gè)可選主機(jī)處理器227的一個(gè)PCI總線接口225;§到一個(gè)SDRAM緩沖器存儲(chǔ)器229的一個(gè)128比特寬的接口228;
§到一個(gè)SRAM翻譯表存儲(chǔ)器207的一個(gè)64比特寬的接口;和§到一個(gè)隊(duì)列存儲(chǔ)器213的一個(gè)32比特寬的接口。
更詳細(xì)地討論這些接口,可以對數(shù)字通信處理器203進(jìn)行編程,以使在一單個(gè)DCP203中的串行輸入和輸出可以被用于很多不同的媒質(zhì)和傳送層協(xié)議。如果其中正在使用DCP203的網(wǎng)絡(luò)改變了,這個(gè)DCP203可以被重新編程以處理新的網(wǎng)絡(luò)結(jié)構(gòu)。通過將幾個(gè)串行輸入或者輸出連接到高速度協(xié)議的傳輸媒質(zhì),可以處理高速度協(xié)議。在一個(gè)優(yōu)選實(shí)施方式中,這個(gè)媒質(zhì)和這個(gè)傳送層協(xié)議包括§10Mb以太網(wǎng);§100Mb以太網(wǎng);§1Gb以太網(wǎng);§TI/E1接口;§T3/E3接口;§OC-3c接口;和§OC-12c接口。
DCP 203從輸入204中接收媒質(zhì)包,并且從輸出206輸出媒質(zhì)包。在從一個(gè)輸入204接收一個(gè)媒質(zhì)包的時(shí)刻和從一個(gè)輸出206發(fā)送一個(gè)媒質(zhì)包的時(shí)刻之間所發(fā)生的處理與這個(gè)DCP如何被編程有關(guān)。對DCP203進(jìn)行編程的方法包括下述的§每一個(gè)輸入具有一個(gè)接收處理器,每一個(gè)輸出具有一個(gè)發(fā)送處理器;這些處理器可以被獨(dú)立地進(jìn)行編程,以處理不同類型的媒質(zhì)包,傳送層包,和是傳送層包的負(fù)荷的包;§輸入和輸出可以被組合在一起;§對與一個(gè)包流相關(guān)的狀態(tài)進(jìn)行的操作是可以被編程的;例如地址翻譯和糾錯(cuò)碼處理;§在DCP中的、包的源與目的地之間的關(guān)系是可以被編程的;和§從一個(gè)包的源被傳遞到一個(gè)包的目的地的信息是可以被編程的,這與包信息在目的地被解釋的方式相同。
對一個(gè)典型的包交換應(yīng)用,DCP 203被編程為按照如下的來進(jìn)行工作當(dāng)在一個(gè)輸入204上接收到每一個(gè)媒質(zhì)包時(shí),DCP 203將從這個(gè)媒質(zhì)包的負(fù)荷中來的數(shù)據(jù)保存在緩沖器存儲(chǔ)器229的一個(gè)緩沖器231中;這個(gè)被保存的數(shù)據(jù)在這里被稱作一個(gè)協(xié)議數(shù)據(jù)單元或者PDU;在很多情形下,這個(gè)PDU將是一個(gè)傳送層包,這個(gè)傳送層包是這個(gè)媒質(zhì)包的負(fù)荷的一部分。當(dāng)輸出一個(gè)媒質(zhì)包時(shí),DCP 203從一個(gè)緩沖器231中檢索這個(gè)PDU,在這個(gè)PDU中進(jìn)行任何需要的改變(例如,改變傳送層包中的路由信息,或者改變傳送層包的類型),并且將這個(gè)協(xié)議數(shù)據(jù)添加到這個(gè)媒質(zhì)包中。
DCP 203使用翻譯表存儲(chǔ)器207中的翻譯表209來路由傳送層和更高層的包。一旦這個(gè)包被路由,DCP 203將把一個(gè)描述符放置在隊(duì)列存儲(chǔ)器213與輸出206相關(guān)的隊(duì)列215的末尾,這個(gè)描述符表示包括這個(gè)包的PDU的緩沖器,并且這個(gè)輸出206是將輸出所述包的輸出。一般,每一個(gè)隊(duì)列215與一單個(gè)輸出206相關(guān),但是在一個(gè)輸入204上接收的包可以被放置在任何隊(duì)列215的末尾,這樣允許在一個(gè)輸入204上被接收的包可以經(jīng)過很多輸出206而輸出。一個(gè)包也可以是多播包,即,在多于1個(gè)的隊(duì)列215中進(jìn)行排隊(duì)。然后,DCP 203從與一個(gè)輸出206相關(guān)的一個(gè)隊(duì)列的頭部取出描述符217,并且將這個(gè)描述符所標(biāo)識的緩沖器231中的內(nèi)容輸出到這個(gè)隊(duì)列的輸出206。
DCP 203也從一個(gè)可選的數(shù)字交換構(gòu)造接收包數(shù)據(jù),并且向這個(gè)可選的數(shù)字交換構(gòu)造提供這個(gè)包數(shù)據(jù),如221所顯示的。這個(gè)交換構(gòu)造可以是另一個(gè)與包交換機(jī)201類似的包交換機(jī),或者它也可以是任何其它能夠路由數(shù)字?jǐn)?shù)據(jù)流的設(shè)備。例如,包交換機(jī)201可以與其它包交換機(jī)一起連接到一個(gè)交叉交換機(jī)(crossbar switch),或者甚至可以連接到一個(gè)總線。從接口221所接收的或者輸出到接口221的包數(shù)據(jù)的路由基本上與上面所描述的、在一個(gè)串行輸入204上所接收的包的相同。最后,DCP 203可以經(jīng)過PCI總線225從可選的主機(jī)227接收包數(shù)據(jù),并且向這個(gè)可選的主機(jī)227提供包數(shù)據(jù)。
外部控制接口包括GPIO接口223和PCI總線接口225。GPIO接口223是用于監(jiān)視和控制外部系統(tǒng)部件,例如LED,非揮發(fā)性存儲(chǔ)器,物理層串行傳輸和接收部件,和電源供電部件,的一個(gè)公用設(shè)施接口。PCI總線接口225用于在DCP 203和一個(gè)主機(jī)處理器之間進(jìn)行通信,并且這個(gè)主機(jī)處理器可能會(huì)控制交換系統(tǒng)201,并且也可以執(zhí)行更高層的操作,例如對在系統(tǒng)201中所接收的包內(nèi)容進(jìn)行訪問檢查。
操作詳細(xì)示例背景技術(shù)部分的示例將被用于更詳細(xì)地顯示包交換機(jī)201的部件如何被編程來路由包。為了示例的目的,串行對205(i)的串行輸入204(i)正在接收一個(gè)SONET包流,這個(gè)SONET包流的負(fù)荷是一個(gè)ATM傳送層包流。這個(gè)ATM傳送層包流的負(fù)荷是需要被發(fā)送到IP節(jié)點(diǎn)109(n)的一個(gè)IP包,這個(gè)IP節(jié)點(diǎn)109(n)是在連接到以太網(wǎng)LAN 105(a)的一個(gè)設(shè)備107(n)上。以太網(wǎng)LAN 105(a)被連接到串行對205(j)的串行輸出206(j)。因?yàn)榘粨Q機(jī)201正在被用于路由IP包,所以DCP 203已經(jīng)被編程為在串行輸入204(i)上的輸入傳送層包中掃描包括IP包報(bào)頭的負(fù)荷。當(dāng)發(fā)現(xiàn)了一個(gè)IP包的報(bào)頭時(shí),DCP 203就開始將這個(gè)ATM傳送層包流的負(fù)荷路由到被一個(gè)緩沖器標(biāo)記233所規(guī)定的緩沖器存儲(chǔ)器229中的一個(gè)緩沖器231。如果這個(gè)IP包比這個(gè)緩沖器長,就采用附加的緩沖器。
當(dāng)這個(gè)IP包正在被傳送到緩沖器存儲(chǔ)器229時(shí),DCP 203處理這個(gè)IP包的報(bào)頭中的信息,來決定如何路由這個(gè)IP包,并且然后路由這個(gè)IP包。使用翻譯表存儲(chǔ)器227中的翻譯表來完成對這個(gè)報(bào)頭信息的處理。在這個(gè)情形下,需要進(jìn)行兩個(gè)翻譯在這個(gè)IP包的報(bào)頭中的IP目的地地址需要被翻譯為具有這個(gè)目的地地址的IP節(jié)點(diǎn)所在的設(shè)備107(n)的以太網(wǎng)地址,和設(shè)備107(n)的以太網(wǎng)地址需要被翻譯為隊(duì)列存儲(chǔ)器213中的隊(duì)列的一個(gè)標(biāo)識,其中串行輸出206(j)從隊(duì)列存儲(chǔ)器213的這個(gè)隊(duì)列輸出以太網(wǎng)包。這些翻譯中的一個(gè)翻譯表表目211(i),從IP目的地地址(IPA)到以太網(wǎng)地址(ENA)的翻譯被顯示在翻譯表209(a)中。
DCP 203使用從這個(gè)IP包的報(bào)頭和這個(gè)翻譯表209中獲得的信息來產(chǎn)生關(guān)于這個(gè)IP包的一個(gè)描述符207。包括在這個(gè)描述符207中的是以太網(wǎng)地址和包括這個(gè)包的緩沖器231的緩沖器標(biāo)記233。然后,DCP203將這個(gè)描述符207放置在隊(duì)列215(j)的末尾221,這個(gè)隊(duì)列215(j)是用于保存將從串行輸出206(j)輸出的包的。當(dāng)描述符207到達(dá)這個(gè)隊(duì)列215(j)的頭部時(shí),DCP 203拾取包括傳送層包的這個(gè)緩沖器231的內(nèi)容,并且將這個(gè)內(nèi)容變?yōu)榫哂羞m合于串行輸出206(j)的媒質(zhì)協(xié)議的一個(gè)包流。這些媒質(zhì)包的負(fù)荷是以太網(wǎng)傳送層包。使用信息描述符207,DCP 203將設(shè)備107(n)的以太網(wǎng)地址給予這個(gè)以太網(wǎng)傳送層包。而這個(gè)以太網(wǎng)傳送層包的負(fù)荷是被保存在這個(gè)緩沖器標(biāo)記所規(guī)定的緩沖器中的IP包。
這里,應(yīng)注意,DCP 203當(dāng)然對總共16個(gè)串行輸入傳送層包流和16個(gè)串行輸出流同時(shí)執(zhí)行上面所描述的操作或者這些操作的變形,并且在某些情形下,也同時(shí)在其自己和一個(gè)數(shù)字交換機(jī)之間通過接口221,和/或者在其自己和外部主機(jī)227之間經(jīng)過PCI接口227傳送數(shù)據(jù)流。另外,如上面所描述的,在很多情形下,這個(gè)包交換操作是由嚴(yán)格的定時(shí)限制所控制的。如下面將更詳細(xì)描述的,在DCP 203的設(shè)計(jì)中關(guān)鍵是提供DCP 203內(nèi)部的數(shù)據(jù)路徑和存儲(chǔ)器結(jié)構(gòu),這些DCP 203內(nèi)部的數(shù)據(jù)路徑和存儲(chǔ)器結(jié)構(gòu)具有前面所描述的操作類型所需要的速度和潛在特性。
DCP 203的結(jié)構(gòu)圖3和圖5圖3是DCP 203的內(nèi)部結(jié)構(gòu)的一個(gè)高層框圖。出現(xiàn)在圖3中的、圖2中的部件的標(biāo)號與圖2中對應(yīng)的標(biāo)號相同。從其上發(fā)送和接收傳送層包的串行輸入和輸出205開始,每一個(gè)串行對205被連接到其自己的可編程信道處理器307,這個(gè)可編程信道處理器307處理從這個(gè)對來的串行輸入和到這個(gè)對的串行輸出。這樣,在這個(gè)優(yōu)選實(shí)施方式中,有16個(gè)信道處理器307。對極高速度的傳送層協(xié)議,最多可有4個(gè)信道處理器307可以被組合在一個(gè)信道處理器串中,如309所顯示的。
構(gòu)造處理器(fabric processor)303與信道處理器類似,其不同點(diǎn)是這個(gè)構(gòu)造處理器303處理從接口221所接收的和提供到接口221的并行數(shù)據(jù)。表搜尋引擎301使用翻譯表存儲(chǔ)器207中的地址翻譯來進(jìn)行地址翻譯。隊(duì)列管理引擎305管理描述符的隊(duì)列215。在某些實(shí)施方式中,這個(gè)隊(duì)列被保存在DCP IC 203的存儲(chǔ)器中;在其它實(shí)施方式中,隊(duì)列存儲(chǔ)器213是一個(gè)獨(dú)立的外部存儲(chǔ)器。緩沖器管理引擎315管理緩沖器存儲(chǔ)器229中的緩沖器231。執(zhí)行處理器313對其它部件中的數(shù)據(jù)進(jìn)行初始化并且維持這些部件中的數(shù)據(jù),使用可選的外部主機(jī)227和GPIO接口來PCI總線接口,并且在需要的時(shí)候執(zhí)行更高層的處理。執(zhí)行處理器313的程序和數(shù)據(jù)被保存在SDRAM 229中。執(zhí)行處理器313,信道處理器309,和構(gòu)造處理器303均使用TLE 301,QME 305和BME 315的公用程序來處理包和/或者幀,并且在這里它們被統(tǒng)稱作包處理器。但是,這里應(yīng)指出的是,一個(gè)包處理器不僅可以被用于處理包,而且可以被用于處理任何其它的數(shù)據(jù)流,并且可以被認(rèn)為是一個(gè)通用的比特/4比特/字節(jié)/或者(在構(gòu)造處理器的情形下)32-比特字流處理器。
DCP 203的所有處理部件是可以被編程的。這個(gè)信道處理器307可以被獨(dú)立地編程為處理不同類型的媒質(zhì)層包,傳送層包,和傳送層包的負(fù)荷,并且構(gòu)造處理器303可以被編程為處理在不同交換設(shè)備中所采用的數(shù)據(jù)。表存儲(chǔ)器207中的表可以被寫入,也可以被讀取,并且表搜尋引擎301可以被編程為對表執(zhí)行不同類型的搜尋。隊(duì)列管理引擎305可以被編程為建立不同數(shù)目的隊(duì)列,并且在隊(duì)列中使用不同尺寸的描述符,緩沖器管理引擎315可以被編程為緩存不同尺寸的庫,并且在庫中具有不同的緩沖器大小。最后,XP 313是一個(gè)通用處理器,并且可以被編程為執(zhí)行任何功能。當(dāng)DCP 203被初始化時(shí),部件的程序被載入。程序代碼可以被外部主機(jī)227載入到SDRAM 229中,或者這個(gè)程序代碼也可以被保存在一個(gè)外部PROM中,這個(gè)外部PROM是由BME 315所管理的地址空間中的一部分。在任何一個(gè)情形下,XP313將這個(gè)代碼載入到部件的存儲(chǔ)器中。
數(shù)字通信處理器203的總線和存儲(chǔ)器結(jié)構(gòu)使DCP 203可以滿足包交換的速度和時(shí)間限制,同時(shí)DCP203可以采用表搜尋引擎301,隊(duì)列管理引擎305,和緩沖器管理引擎315作為共享的資源。除了表搜尋引擎301外,數(shù)字通信處理器203的所有部件共享一單個(gè)全局地址空間321。每一個(gè)包處理器的局部存儲(chǔ)器在全局地址空間321中,并且每一個(gè)包處理器可以訪問其局部存儲(chǔ)器屬于全局地址空間321的其它包處理器的局部存儲(chǔ)器,也可以訪問屬于BME 315和QME 305的存儲(chǔ)器。每一個(gè)包處理器能夠?qū)ζ渥约旱木植看鎯?chǔ)器進(jìn)行直接訪問,并且能夠經(jīng)過一個(gè)32-比特全局總線319對其它部件的局部存儲(chǔ)器進(jìn)行訪問。另外,構(gòu)造處理器303具有其自己的、到隊(duì)列管理引擎305的路徑304。
圖5提供了全局地址空間321的一個(gè)概述圖。首先是全局地址空間的部分504,它是由信道處理器307(0…15)的局部存儲(chǔ)器501組成的。部分504進(jìn)一步被劃分為屬于信道處理器串309中每一個(gè)的串存儲(chǔ)器503。一給定信道處理器307(i)對其自己的局部存儲(chǔ)器501(i)的訪問速度最快,對一起組成其串存儲(chǔ)器503的、其串中的其它信道處理器的局部存儲(chǔ)器的訪問速度是第二快的,對全局地址空間321中其余部分的訪問速度是最不快的。其局部存儲(chǔ)器是全局地址空間321中一部分的其它部件是構(gòu)造處理器303,其局部存儲(chǔ)器見505,QME305,其局部存儲(chǔ)器見507,BME315,其局部存儲(chǔ)器見513,以及XP313,其局部存儲(chǔ)器見517。共享全局地址空間的這些處理器一般可以使用全局地址空間來進(jìn)行處理器間的通信,例如,處理器可以在全局地址空間中建立信號標(biāo)記來協(xié)調(diào)它們的操作。為了建立和使用這樣的信號標(biāo)記,在這個(gè)優(yōu)選實(shí)施方式中的處理器具有一個(gè)測試-和-設(shè)置-比特指令。在全局地址空間中可以獲得的其它信息包括QME局部存儲(chǔ)器507中的隊(duì)列狀態(tài)信息505,緩沖器管理引擎局部存儲(chǔ)器513中的緩沖器狀態(tài)信息515,和XP局部存儲(chǔ)器517中的全局配置寄存器519和系統(tǒng)接口配置信息521。最后,QME 305將關(guān)于一個(gè)包處理器所讀取的隊(duì)列的隊(duì)列狀態(tài)信息寫入到這個(gè)包處理器的局部存儲(chǔ)器中。
繼續(xù)參考圖3,每一個(gè)部件的局部存儲(chǔ)器通過負(fù)荷總線317連接到緩沖器管理引擎315。這是一個(gè)128-比特寬的總線,它以4個(gè)字節(jié)的突發(fā)來進(jìn)行工作,可以在SDRAM 229和其它部件之間傳送高達(dá)64字節(jié)的數(shù)據(jù)。經(jīng)過負(fù)荷總線317所傳送的數(shù)據(jù)包括下述的§執(zhí)行處理器313所使用的程序和數(shù)據(jù);§執(zhí)行處理器313使用來配置DCP203的數(shù)據(jù);§在SDRAM 229和一個(gè)包處理器之間被傳送的協(xié)議數(shù)據(jù)單元;§緩沖器標(biāo)記233;和§被包處理器進(jìn)行排隊(duì)和從隊(duì)列中取出的描述符。
在SDRAM 229和局部存儲(chǔ)器之間進(jìn)行的傳送是通過一個(gè)直接存儲(chǔ)器訪問(DMA)機(jī)制來完成的。實(shí)現(xiàn)這個(gè)傳送的部件向這個(gè)DMA機(jī)制提供了一個(gè)DMA指令,然后,這個(gè)DMA機(jī)制執(zhí)行這個(gè)傳送而不需要這個(gè)部件的干預(yù)。這個(gè)結(jié)構(gòu)允許一個(gè)部件并行地傳送協(xié)議數(shù)據(jù)單元并且執(zhí)行其它處理,這大大地增加了DCP 203的操作速度和吞吐率。
表搜尋引擎301和包處理器均經(jīng)過環(huán)型總線311連接。環(huán)型總線311是64-比特寬的總線,并且在它所連接的節(jié)點(diǎn)之間是時(shí)分復(fù)用的。在任何一給定時(shí)刻,這些部件中的每一個(gè)被分配的環(huán)型總線時(shí)隙數(shù)在1到5之間。每一個(gè)時(shí)隙可以攜帶一個(gè)64-比特的消息。因?yàn)檫@個(gè)總線在其連接的節(jié)點(diǎn)之間是時(shí)分復(fù)用的,并且每一個(gè)節(jié)點(diǎn)具有一預(yù)定最大數(shù)目的時(shí)隙,所以可以在一固定的時(shí)間內(nèi),保證一個(gè)消息能夠從一個(gè)節(jié)點(diǎn)傳送到環(huán)型總線311上的另一個(gè)節(jié)點(diǎn)。在一個(gè)目前優(yōu)選的實(shí)施方式中,執(zhí)行處理器313使用環(huán)型總線消息來配置和讀取表存儲(chǔ)器207中的表,并且這些包處理器使用環(huán)型總線消息來向表搜尋引擎301提供關(guān)于翻譯的信息,并且表搜尋引擎301使用環(huán)型總線消息來向這些包處理器提供翻譯的結(jié)果。任何連接到環(huán)型總線311上的設(shè)備可以向任何連接到環(huán)型總線311上的其它設(shè)備發(fā)送環(huán)型總線消息,并且也可以從任何連接到環(huán)型總線311上的其它設(shè)備接收環(huán)型總線消息,所以在其它的實(shí)施方式中,例如,環(huán)型總線消息可以被用于協(xié)調(diào)組成一個(gè)串309的執(zhí)行處理器307的活動(dòng)。
DCP 203部件的合作示例在圖3所提供的細(xì)節(jié)上,繼續(xù)參考圖1和2,在輸入線204(i)上正在接收ATM包流。輸入線204(i)屬于信道處理器307(i)。當(dāng)這個(gè)ATM包到達(dá)時(shí),信道處理器307(i)就開始一系列的DMA傳送,其中首先將這些包傳送到信道處理器307(i)的局部存儲(chǔ)器,然后將這些包傳送到被信道處理器307(i)所擁有的一個(gè)緩沖器標(biāo)記233所規(guī)定的一個(gè)緩沖器231。在這個(gè)傳送在進(jìn)行時(shí),信道處理器307(i)在ATM包的負(fù)荷中掃描IP包。當(dāng)它發(fā)現(xiàn)了一個(gè)IP包的開始時(shí),信道處理器307(i)從這個(gè)IP包的報(bào)頭中提取這個(gè)IP包的目的地地址,并且為這個(gè)表搜尋引擎301產(chǎn)生包括這個(gè)目的地址的一個(gè)消息。在這個(gè)情形下,這個(gè)目的地址規(guī)定了連接到以太網(wǎng)LAN105(a)的設(shè)備107(n)上的IP節(jié)點(diǎn)109(n)。以太網(wǎng)LAN105(a)接收從串行輸出206(j)輸出的包。然后,信道處理器307(i)將這個(gè)消息放置到它自己在環(huán)型總線311上的一個(gè)時(shí)隙中。當(dāng)信道處理器307(i)接收到對帶設(shè)備107(n)的以太網(wǎng)地址的這個(gè)消息的一個(gè)答復(fù)和被串行輸出206(j)所提供服務(wù)的隊(duì)列號碼m時(shí),它就產(chǎn)生包括至少以太網(wǎng)地址和關(guān)于這個(gè)緩沖器的緩沖器標(biāo)記233的一個(gè)描述符217(k)。然后,信道處理器307(i)經(jīng)過負(fù)荷總線317向?qū)儆谛诺捞幚砥?07(i)的一個(gè)郵箱寫入一個(gè)排隊(duì)命令。這個(gè)排隊(duì)命令包括至少描述符217(k)和這個(gè)隊(duì)列號碼m。隊(duì)列管理引擎305通過將這個(gè)描述符217(k)放置在隊(duì)列215(m)的末尾,來對這個(gè)命令作出響應(yīng)。
串行輸出206(j)屬于信道處理器307(j),并且隊(duì)列管理引擎305向這個(gè)串行輸出206(j)提供隊(duì)列215(m)頭部的描述符。它通過將一個(gè)指定隊(duì)列215(m)的出列命令經(jīng)過負(fù)荷總線317寫入到其郵箱來完成這個(gè)。隊(duì)列管理引擎305通過經(jīng)過負(fù)荷總線317向信道處理器307(j)提供在隊(duì)列215(m)頭部219的描述符217,來對這個(gè)出列命令作出響應(yīng)。
最后,在隊(duì)列215(m)頭部219的描述符217是描述符217(k)。一旦信道處理器307(j)具有描述符217(k),它就使用描述符217(k)中的緩沖器標(biāo)記233來開始從包括IP包的緩沖器231到信道處理器307(j)的局部存儲(chǔ)器的一個(gè)IP包的DMA傳送。當(dāng)IP包到達(dá)時(shí),信道處理器307(j)產(chǎn)生發(fā)送到以太網(wǎng)設(shè)備107(n)的一個(gè)以太網(wǎng)傳送層包流,并且這個(gè)以太網(wǎng)傳送層包流的負(fù)荷是IP包,并且將這個(gè)以太網(wǎng)傳送層包流輸出到串行輸出206(j)。在這些包中的以太網(wǎng)地址當(dāng)然是從描述符217(k)中獲得的。
DCP203的總線和存儲(chǔ)器結(jié)構(gòu)的優(yōu)點(diǎn)從前述描述中可以很明顯地看出,DCP 203的總線和存儲(chǔ)器結(jié)構(gòu)允許一個(gè)包處理器并行地進(jìn)行包報(bào)頭處理,協(xié)議數(shù)據(jù)單元的轉(zhuǎn)發(fā),和排隊(duì)與從隊(duì)列中進(jìn)行取出;另外,不同的總線不僅提供不同的路徑,而且也提供滿足在路徑上執(zhí)行操作的冗余性要求的路徑。這樣,對時(shí)間最敏感的操作是包報(bào)頭中信息的翻譯,因?yàn)橹挥蝎@得了翻譯的結(jié)果后,才能夠進(jìn)行路由。因?yàn)槊恳粋€(gè)包處理器在環(huán)型總線311上具有時(shí)隙,所以每一個(gè)包處理器能夠在一個(gè)得到保證的時(shí)間內(nèi)訪問表搜尋引擎301,并且所以,能夠滿足翻譯的時(shí)間限制要求。
另一方面,在包處理器和SDRAM 229之間進(jìn)行的協(xié)議數(shù)據(jù)單元的傳送需要進(jìn)行高帶寬的突發(fā)傳送,并且確切地說,是經(jīng)過負(fù)荷總線317在局部存儲(chǔ)器和SDRAM 229之間的DMA傳送所提供的高帶寬突發(fā)傳送。從緩沖器管理引擎315和一個(gè)信道處理器307(i)發(fā)起的緩沖器標(biāo)記傳送和了管理引擎305之間的描述符到一個(gè)信道處理器307(i)的傳送對時(shí)間的要求也是非常嚴(yán)格的,所以,它們也是在負(fù)荷總線317上被完成的。
對時(shí)間要求不嚴(yán)格的操作可以通過在全局地址空間321中的讀取和寫入來完成。這樣進(jìn)行讀取和寫入操作所需要的時(shí)間與它們在全局地址空間中所處的位置相關(guān)。對全局地址空間中一給定處理器本身局部部分存儲(chǔ)器進(jìn)行讀取和寫入所需要的時(shí)間是最少的,對屬于給定處理器串309的處理器進(jìn)行讀取和寫入所需要的時(shí)間是第二少的,對不屬于給定處理器串309的處理器進(jìn)行讀取和寫入所需要的時(shí)間是最長的。
除了TLE301外,DCP 203的所有處理器均共享全局地址空間321的這個(gè)事實(shí)使處理器之間進(jìn)行通信更容易實(shí)現(xiàn)。例如,執(zhí)行處理器313可以簡單地通過將數(shù)據(jù)寫入到全局地址空間321中與它們相應(yīng)的部分,來進(jìn)行初始化和/或者重新配置其它部件,一個(gè)包處理器307可以獲得關(guān)于正在被隊(duì)列管理引擎305所管理的隊(duì)列215的狀態(tài)信息,關(guān)于正在被緩沖器管理引擎315所管理的緩沖器231的狀態(tài)信息,或者在其串309中的其它包處理器的狀態(tài),這個(gè)狀態(tài)信息的獲得可以通過簡單地從全局地址空間中、屬于這些設(shè)備的部分中讀取狀態(tài)信息來完成,并且這些處理器可以通過全局地址空間中的信號標(biāo)記來協(xié)調(diào)它們的動(dòng)作行為。一個(gè)接收包處理器可以進(jìn)一步在某些應(yīng)用中使用全局地址空間,來將它所接收的協(xié)議數(shù)據(jù)單元直接寫入到將輸出這個(gè)協(xié)議數(shù)據(jù)單元的發(fā)送包處理器的局部存儲(chǔ)器。最后,執(zhí)行處理器313能夠使用全局地址空間來決定執(zhí)行處理器313與其共享全局地址空間的每一個(gè)處理器的狀態(tài)。
在全局地址空間操作非常頻繁的地方,可以提供專用的硬件支持。例如,構(gòu)造處理器303能夠?qū)﹃?duì)列管理引擎305的全局地址空間進(jìn)行其獨(dú)有的訪問,這樣,就能夠?qū)顟B(tài)信息進(jìn)行排隊(duì)而不需要增加全局總線319的負(fù)荷。類似地,每一個(gè)包處理器在全局地址空間中與其相關(guān)的部分中的QME 305中具有關(guān)于其郵箱的狀態(tài)比特,這些比特被直接連接到隊(duì)列管理引擎305中,以使每一個(gè)包處理器能夠確定其郵箱的狀態(tài),而不需要增加全局總線319的負(fù)荷。
包處理器的細(xì)節(jié)下述部分首先將詳細(xì)描述信道處理器307(0…n),然后,描述構(gòu)造處理器303,最后描述執(zhí)行處理器313。
一個(gè)信道處理器307(i)的整體視圖圖4和6
圖4是一個(gè)信道處理器307(i)的部件的一個(gè)框圖。如從圖3中可以看出的,信道處理器307(i)經(jīng)過串行輸入204(i)接收串行包輸入,經(jīng)過串行輸出206(i)提供串行包輸出,并且被連接到環(huán)型總線311,并且在環(huán)型總線311中具有時(shí)隙,同時(shí)也被連接到負(fù)荷總線317和全局總線319。集合路徑433和435和串路徑437和439允許信道處理器(i)與在其串309中的其它信道處理器307進(jìn)行組合,以處理極高速度的傳輸媒質(zhì)。
在一個(gè)高層次上,信道處理器(i)有3個(gè)部件信道處理器RISC核心(CPRC) 401,這是控制其它部件操作的、并且能夠訪問全局地址空間321的一個(gè)通用目的處理器;串行數(shù)據(jù)處理器(SDP) 420,它的處理涉及從串行輸入204(i)中接收包并且向串行輸出206(i)輸出包;和DMA引擎411,它經(jīng)過全局總線317在信道處理器307(i)和BME 315或者QME 305之間進(jìn)行數(shù)據(jù)傳送。SDP 420和CP RISC核心401均經(jīng)過環(huán)型總線接口415連接到環(huán)型總線311。SDP 420具有兩個(gè)子部件RxSDP 421,它處理輸入包;和TxSDP 427,它處理輸出包。
繼續(xù)參考CPRC401的細(xì)節(jié),CPRC401是采用眾所周知的MIPS1指令集的一個(gè)子集的一個(gè)通用目的微處理器。它可以在環(huán)型總線311上發(fā)送和接收消息,并且與SDP 420共享兩個(gè)寄存器文件。提取空間417被用于保存SDP 420從輸入包中所提取出的協(xié)議數(shù)據(jù),以被CPRC401所使用,而融合空間419被用于保存CPRC 401提供到SDP 420的協(xié)議數(shù)據(jù),以在產(chǎn)生輸出包時(shí)使用。
CPRC具有4個(gè)上下文(context),即,獨(dú)立的寄存器文件集。CPRC401可以在上下文之間進(jìn)行切換,這或者是對一個(gè)程序中的一個(gè)BREAK命令作出響應(yīng),或者是對一個(gè)硬件中斷作出響應(yīng)。上下文被根據(jù)其號碼而進(jìn)行排序,上下文0具有最高的優(yōu)先級,上下文3的優(yōu)先級最低。每一個(gè)上下文有一個(gè)上下文項(xiàng)寄存器和一個(gè)上下文返回寄存器;當(dāng)一個(gè)上下文被改變時(shí),在當(dāng)前上下文中的需要被執(zhí)行的下一個(gè)指令的地址被保存在當(dāng)前上下文的上下文返回寄存器中,并且使用被保存在新上下文的上下文項(xiàng)寄存器中的地址中的指令來繼續(xù)執(zhí)行。
有5個(gè)系統(tǒng)事件能夠促使上下文進(jìn)行切換§主復(fù)位§非屏蔽中斷§跟蹤中斷§用戶中斷1§用戶中斷2對主復(fù)位事件和跟蹤中斷事件的上下文項(xiàng)寄存器的設(shè)置是系統(tǒng)所定義的;對其它事件,它們是可以被編程的。
指令存儲(chǔ)器403包括被CPRC 401執(zhí)行的代碼。它僅能夠被CPRC401和CP 307(i)所屬于的串309中的其它CP 307的CPRC所讀取和寫入。在一個(gè)優(yōu)選實(shí)施方式中,代碼被按照如下的方法載入到IMEM403中首先,執(zhí)行處理器313經(jīng)過全局總線319將這個(gè)代碼載入到DMEM 407,然后,CPRC 401將這個(gè)代碼從DMEM 407傳送到IMEM403。
DMEM 405是信道處理器307(i)的局部數(shù)據(jù)存儲(chǔ)器。它可以被用于CPRC 401的局部存儲(chǔ)器,也可以經(jīng)過負(fù)荷總線413被用作對數(shù)據(jù)進(jìn)行DMA傳送。DMEM 405,提取空間417,和融合空間419均是全局地址空間321的部分,并且可以被信道處理器307(i)的串309中的其它信道處理器307所訪問,也可以經(jīng)過全局總線317被DCP 203中的其它處理器所訪問。除了DMEM 405外,在一個(gè)優(yōu)選實(shí)施方式中實(shí)現(xiàn)這個(gè)結(jié)構(gòu)的存儲(chǔ)器部件有請求FIFO 406,MUX 407,全局總線接口413,和負(fù)荷總線接口411。MUX 407復(fù)用RxSDP 421,TxSDP 427,負(fù)荷總線接口411和請求FIFO 406到DMEM 405的訪問。反過來,請求FIFO 406允許CCP 203中連接到全局總線319的其它處理器可以訪問DMEM 405,允許CPRC 401訪問DM 405和全局地址空間321,允許在信道處理器CP 307(i)的串309中的信道處理器307中的其它CPRC 401訪問DMEM 405。MUX 407,DMEM 405和負(fù)荷總線接口411一起組成了DMA引擎441,這個(gè)DMA引擎441經(jīng)過負(fù)荷總線317在SRAM 229和CPRC 401和SDP 420之間執(zhí)行DMA操作。
如上面的結(jié)構(gòu)所隱含的,RxSDP 421,TxSDP 427,和負(fù)荷總線接口411對DMEM 411具有第一訪問優(yōu)先級,而全局總線接口413,CPRC 401,和其它CPRC 401必須爭奪剩余的訪問權(quán)。這樣,這個(gè)結(jié)構(gòu)在一個(gè)方面,將第一優(yōu)先級給予了在SDP 420和DMEM 405之間進(jìn)行的協(xié)議數(shù)據(jù)單元的DMA傳送,而在另一個(gè)方面,將第一優(yōu)先級給予了在DMEM 405和SDRAM 229之間進(jìn)行的協(xié)議數(shù)據(jù)單元的DMA傳送。
繼續(xù)參考串行數(shù)據(jù)處理器420的部件的細(xì)節(jié),RxSDP 421專用于處理輸入包流。RxSDP 421從輸入流中提取包括協(xié)議數(shù)據(jù)的字段,并且將一個(gè)字段的內(nèi)容或者經(jīng)過環(huán)型總線接口413提供給環(huán)型總線313,或者經(jīng)過提取空間417提供給CPRC 401。RxSDP 421經(jīng)過DMA傳送將這個(gè)協(xié)議數(shù)據(jù)單元從包流提供到DMEM 405。RxSDP 421有3個(gè)子部件管腳邏輯(pin logic)443,它接收表示傳輸媒質(zhì)中包流的物理信號;成幀支持處理器407,它對這個(gè)包流中的媒質(zhì)層包和傳送層包進(jìn)行定位;和字節(jié)處理器453,它從這個(gè)傳送層包和它們的負(fù)荷中提取協(xié)議信息,同時(shí)經(jīng)過路徑425將這個(gè)傳送層包傳遞到DMEM 405。字節(jié)處理器451可以將所提取的協(xié)議信息放置在提取空間417中,和/或者經(jīng)過將環(huán)型總線接口415將它放置在一個(gè)環(huán)型總線消息中。
TxSDP 427專用于產(chǎn)生一個(gè)輸出傳送層包流,這個(gè)輸出傳送層包流承載TxSDP 427經(jīng)過DMA傳送從DMEM 405中獲得的協(xié)議數(shù)據(jù)單元。為了完成這個(gè),TxSDP 427將CPRC 401已經(jīng)放置在融合空間419中的協(xié)議數(shù)據(jù)融合入?yún)f(xié)議數(shù)據(jù)單元。TxSDP 427的部件在功能上與RxSDP 421的部件的功能是對應(yīng)的。這樣,字節(jié)處理器453在傳送層包和其負(fù)荷中操作協(xié)議數(shù)據(jù),成幀支持處理器449提供媒質(zhì)層包所需要的協(xié)議信息,管腳邏輯445將這個(gè)數(shù)據(jù)變?yōu)橛脕磔敵鲞@個(gè)數(shù)據(jù)的物理媒質(zhì)所要求的形式。
SDP 420的其它令人感興趣的特征是再循環(huán)路徑441和集合路徑433和435。再循環(huán)路徑441允許被保存在DMEM 405中的包被返回到RxSDP 421,以被進(jìn)行進(jìn)一步的處理并且被輸出到DMEM 405。集合路徑433允許一個(gè)串309中的所有RxSDP 421接收相同的輸入數(shù)據(jù),而集合路徑435允許TxSDP 427接收數(shù)據(jù),以將數(shù)據(jù)從CP 307(i)所屬于的這個(gè)串中的其它CP 307中的TxSDP進(jìn)行輸出。
信道處理器307的操作的示例圖25圖25顯示了一個(gè)接收信道處理器307(i)如何與一個(gè)發(fā)送信道處理器307(j)進(jìn)行合作,來在一個(gè)輸入204(i)上接收包括一系列傳送層包的一個(gè)媒質(zhì)層包流,并且在屬于發(fā)送信道處理器307(j)的一個(gè)輸出206(j)輸出包括一系列傳送層包的一個(gè)媒質(zhì)層包序列,這個(gè)傳送層包的負(fù)荷是在信道處理器307(i)中所接收的傳送層包的負(fù)荷。所接收的和所發(fā)送的媒質(zhì)層包和傳送層包當(dāng)然可以屬于不同的協(xié)議。
所接收的媒質(zhì)層包是在信道處理器307(i)中的RxSDP 421中被接收的。RxSDP 421從這個(gè)傳送層包和傳送層的負(fù)荷中提取協(xié)議數(shù)據(jù),并將所提取的協(xié)議數(shù)據(jù)提供到提取空間417,也經(jīng)過DMEM 405和負(fù)荷總線417將由傳送層包組成的協(xié)議數(shù)據(jù)單元DMA傳送到BME 315,BME 315將這個(gè)協(xié)議數(shù)據(jù)單元放置在SDRAM 229的緩沖器231中,其中這個(gè)協(xié)議數(shù)據(jù)單元在2503。同時(shí),在信道處理器307(i)中的CPRC401使用這個(gè)協(xié)議數(shù)據(jù)來產(chǎn)生一個(gè)描述符217,并且它經(jīng)過負(fù)荷總線317將這個(gè)描述符217轉(zhuǎn)發(fā)到QME 305以進(jìn)行排隊(duì)。(沒有在這里顯示的是,經(jīng)過環(huán)型總線311將某些協(xié)議數(shù)據(jù)發(fā)送到TLE301,以進(jìn)行翻譯)。當(dāng)CPRC 401發(fā)送需要被排隊(duì)的描述符217時(shí),CPRC 401規(guī)定它應(yīng)被排隊(duì)在一個(gè)隊(duì)列215的末尾,這個(gè)隊(duì)列215的頭部正在被發(fā)送信道處理器307(j)所讀取。QME 305將描述符207排隊(duì)在規(guī)定隊(duì)列215的末尾。
當(dāng)信道處理器307(j)從隊(duì)列215的頭部中對一個(gè)描述符207進(jìn)行隊(duì)列取出時(shí),QME 305經(jīng)過負(fù)荷總線317將描述符207發(fā)送到信道處理器307(j)。信道處理器307(j)使用描述符207來產(chǎn)生需要被輸出的包流的協(xié)議數(shù)據(jù),并且將這個(gè)協(xié)議數(shù)據(jù)放置在融合空間419中。然后,信道處理器307(j)發(fā)起一個(gè)DMA操作,經(jīng)過負(fù)荷總線317和DMEM 405將這個(gè)協(xié)議數(shù)據(jù)單元2503從SDRAM 229中的緩沖器231傳送到串行數(shù)據(jù)處理器420。在串行數(shù)據(jù)處理器420中,TxSDP 427加上為輸出206(j)產(chǎn)生一個(gè)媒質(zhì)層包流2505所需要的協(xié)議數(shù)據(jù),這個(gè)媒質(zhì)層包流承載了從204(i)上所接收的包來的協(xié)議數(shù)據(jù)單元2503。
局部存儲(chǔ)器501的細(xì)節(jié)圖6圖6顯示了信道處理器307(i)的局部存儲(chǔ)器501(i)。如前面所指出的,所有的局部存儲(chǔ)器501(i)均可以被共享全局地址空間321的數(shù)字通信處理器203的任何部件所讀取和寫入。
數(shù)據(jù)作用域625(0)和625(1)如上面所描述的,RxSDP 421將輸入包流DMA傳送到SDRAM229,并且當(dāng)RxSDP 421這樣做時(shí),RxSDP 421從輸入包流中提取協(xié)議數(shù)據(jù),并且將協(xié)議數(shù)據(jù)提供到CPRC 401以進(jìn)行處理,而TxSDP 427從SDRAM 229接收輸出協(xié)議數(shù)據(jù)單元,并且當(dāng)RxSDP 421這樣做時(shí),TxSDP 427從CPRC 401接收協(xié)議數(shù)據(jù)并且將協(xié)議數(shù)據(jù)放置在輸出包流的合適位置中。對一給定傳送層包,然后,這個(gè)處理包括兩個(gè)步驟。在一個(gè)輸入包的情形下,它們是§提取這個(gè)協(xié)議數(shù)據(jù),并且將這個(gè)協(xié)議數(shù)據(jù)單元DMA傳送到SDRAM 229;和§在CPRC 401處理這個(gè)協(xié)議數(shù)據(jù)。
在信道處理器307中,這兩個(gè)步驟是流水線處理的在輸入包流的情形下,CPRC 401處理從前一個(gè)協(xié)議數(shù)據(jù)單元中提取的這個(gè)協(xié)議數(shù)據(jù),而RxSDP 421從這個(gè)包流中提取協(xié)議數(shù)據(jù),并且對從這個(gè)包流中提取的當(dāng)前協(xié)議數(shù)據(jù)單元進(jìn)行DMA傳送。發(fā)送也被進(jìn)行類似的處理,其中TxSDP 427發(fā)送當(dāng)前協(xié)議數(shù)據(jù)單元,而CPRC 401處理需要被包括在下一個(gè)協(xié)議數(shù)據(jù)單元中的這個(gè)協(xié)議數(shù)據(jù)。
通過使用數(shù)據(jù)作用域625(0)和625(1),就可能進(jìn)行流水處理。數(shù)據(jù)作用域625(0)和625(1)是可以被CPRC 401所看見的和所訪問的數(shù)據(jù)結(jié)構(gòu),并且它們也控制SDP 420的操作和控制在CPRC 401和SDP 420之間進(jìn)行的交互作用。一給定數(shù)據(jù)作用域625(i)包括一組數(shù)據(jù)作用域寄存器624和在數(shù)據(jù)作用域事件寄存器632中的一組標(biāo)記632(i)。數(shù)據(jù)作用域寄存器624進(jìn)一步由一個(gè)Tx數(shù)據(jù)作用域641和一個(gè)Rx數(shù)據(jù)作用域643組成。Rx數(shù)據(jù)作用域643在第一步驟期間,接收RxSDP 421從輸入包流中提取的協(xié)議數(shù)據(jù),并且在第二步驟中CPRC 401處理這個(gè)協(xié)議數(shù)據(jù);類似地,Tx數(shù)據(jù)作用域641在第一步驟期間,接收CPRC 401為輸出包流而處理的這個(gè)協(xié)議數(shù)據(jù),并且在第二步驟期間,TxSDP 427輸出來自Tx數(shù)據(jù)作用域641的這個(gè)協(xié)議數(shù)據(jù)。
除了提供包處理的流水操作外,數(shù)據(jù)作用域625也為在CPRC 401上被執(zhí)行的程序提供了到當(dāng)前正在被SDP的RxSDP 421所接收的、或者正在被TxSDP 427所輸出的包流的一個(gè)統(tǒng)一接口。在需要對一個(gè)流進(jìn)行進(jìn)一步處理的應(yīng)用中,可以增加數(shù)據(jù)作用域的數(shù)目。例如,包括處理一個(gè)輸入流,將所產(chǎn)生的PDU保存在DMEM 405中,然后使用再循環(huán)路徑441又處理被保存在DMEM 405中的PDU,和然后將最后的PDU使用DMA方式傳送到SDRAM 229的RxSDP的處理可能包括4個(gè)數(shù)據(jù)作用域。
在CPRC 401上執(zhí)行的程序決定哪一個(gè)數(shù)據(jù)作用域目前正在被SDP 420所使用。在SDP 420將協(xié)議數(shù)據(jù)提取到數(shù)據(jù)作用域625(0)并且從數(shù)據(jù)作用域625(0)融合協(xié)議數(shù)據(jù)時(shí),CPRC 401處理在數(shù)據(jù)作用域625(1)中的數(shù)據(jù)。當(dāng)SDP 420完成了對數(shù)據(jù)作用域625(0)的處理時(shí),它向CPRC 401發(fā)送信號,并且CPRC 401建立數(shù)據(jù)作用域625(1),以使SDP 420能夠在數(shù)據(jù)作用域625(1)上進(jìn)行工作,并且CPRC 401自己開始在數(shù)據(jù)作用域625(0)上進(jìn)行工作。
繼續(xù)更詳細(xì)地參考數(shù)據(jù)作用域625(i)中的內(nèi)容,Rx數(shù)據(jù)作用域643包括提取寄存器601,提取寄存器601包括被RxSDP 601所提取的協(xié)議信息;RxCB 633,包括將RxSDP 421所接收的包DMA傳送到SDRAM 229所需要的信息;和Rx狀態(tài)635,包含關(guān)于RxSDP 421的狀態(tài)信息,包括RxSDP 421是否完成了它正在進(jìn)行的DMA傳送。Tx數(shù)據(jù)作用域641包括用于包發(fā)送的模擬寄存器。融合寄存器603包括需要與輸出包融合的協(xié)議數(shù)據(jù),TxCB 633包括從SDRAM 229對TxSDP所正在發(fā)送的包進(jìn)行DMA傳送所需要的信息,并且Tx狀態(tài)包括關(guān)于TxSDP 427的狀態(tài)信息,包括TxSDP 427是否完成了它正在進(jìn)行的DMA傳送。
控制塊寄存器611控制塊寄存器611是控制在CPRC 401和SDRAM 229之間進(jìn)行的DMA傳送的一組4寄存器。一個(gè)WrCB 610控制從CPRC 401到SDRAM 229的DMA傳送,而一個(gè)RdCB控制到CPRC 401的DMA傳送。
環(huán)型總線控制寄存器617這些寄存器是環(huán)型總線接口415的一部分。它們允許RxSDP 421和CPRC 401在這個(gè)環(huán)型總線上發(fā)送消息,并且允許CPRC 401在這個(gè)環(huán)型總線上接收消息。發(fā)送消息使用4個(gè)寄存器,接收對被CP 307(i)所發(fā)送消息的答復(fù)使用8個(gè)寄存器,接收一個(gè)未經(jīng)請求的消息使用一個(gè)寄存器隊(duì)列。
SONET開銷比特612這個(gè)寄存器包括CP 307(i)所輸出的SONET包的SONET開銷比特。
RxSDP控制613和TxSDP控制615這些寄存器包括分別控制RxSDP 421和TxSDP 427的操作的參數(shù)。
CP模式寄存器625這個(gè)寄存器包括控制CP 307(i)的操作的參數(shù)。
SDP模式寄存器627這個(gè)寄存器包括控制SDP 420的操作的參數(shù)。
隊(duì)列狀態(tài)621隊(duì)列狀態(tài)621包括關(guān)于QME 305中信道處理器307(i)的郵箱狀態(tài)的信息,和關(guān)于正在被信道處理器307(i)所讀取的隊(duì)列的狀態(tài)信息。這個(gè)寄存器中用于指示信道處理器307(i)的郵箱狀態(tài)的硬件直接被QME 305所控制。這樣,讀取和寫入這個(gè)寄存器不會(huì)對全局總線319產(chǎn)生任何負(fù)荷。QME 305經(jīng)過負(fù)荷總線317將正在被信道處理器307(i)所讀取的隊(duì)列的狀態(tài)信息DMA傳送到DMEM 405。
事件定時(shí)器620這個(gè)寄存器包括可以被在CPRC 401中所執(zhí)行的軟件設(shè)置和啟動(dòng)的一個(gè)事件定時(shí)器;當(dāng)這個(gè)定時(shí)器溢出時(shí),有CPRC 401的事件機(jī)制對其作出響應(yīng)的一個(gè)事件結(jié)果。
循環(huán)計(jì)數(shù)器寄存器619循環(huán)計(jì)數(shù)器寄存器619包括一個(gè)計(jì)數(shù)器值,一個(gè)時(shí)鐘分頻值,和一個(gè)CC使能比特。CPRC 401可以設(shè)置這個(gè)計(jì)數(shù)器值,這個(gè)時(shí)鐘分頻值,和這個(gè)CC使能比特。這個(gè)時(shí)鐘分頻值規(guī)定了計(jì)數(shù)器值相對CPRC401的時(shí)鐘進(jìn)行加1操作的速率。當(dāng)CPRC 401設(shè)置了CC使能比特時(shí),這個(gè)計(jì)數(shù)器就開始運(yùn)行;當(dāng)這個(gè)CPRC 401清除了這個(gè)CC使能比特時(shí),這個(gè)計(jì)數(shù)器就停止運(yùn)行。當(dāng)前的計(jì)數(shù)器值不會(huì)受到設(shè)置或者清除CC使能比特的影響。
事件寄存器631這個(gè)寄存器包括表示是否出現(xiàn)了這個(gè)CPRC 401必須對其作出響應(yīng)的一個(gè)異步事件的標(biāo)記。有兩類事件普通事件,其標(biāo)記在寄存器630中,和與數(shù)據(jù)作用域625相關(guān)的數(shù)據(jù),其標(biāo)記在數(shù)據(jù)作用域事件寄存器632中。
除了這里描述的所有寄存器,一個(gè)CPRC 401也可以訪問在其局部數(shù)據(jù)存儲(chǔ)器405中的數(shù)據(jù),并且能夠如上面所描述的在SDRAM 229和局部數(shù)據(jù)存儲(chǔ)器405之間、經(jīng)過局部存儲(chǔ)器405在一個(gè)SDP和SDRAM 229之間進(jìn)行DMA傳送。
CPRC 401,RxSDP 421和TxSDP 427進(jìn)行合作的示例的細(xì)節(jié)圖7-9圖7提供了RxSDP 421和CPRC 401如何被編程來在處理一個(gè)輸入包流中進(jìn)行交互通信的一個(gè)概述圖。流圖701不僅指示被執(zhí)行的操作,而且還指出RxSDP 421,CPRC 401和QME 305中的哪一個(gè)執(zhí)行這些動(dòng)作。在703開始,RxSDP 421讀取一個(gè)輸入包(705)。RxSDP421對它所讀取的東西所進(jìn)行的處理與這個(gè)材料在包中的位置相關(guān)。有3類信息是RxSDP 421必須處理的協(xié)議數(shù)據(jù)單元,必須被TLE 301所翻譯的協(xié)議信息,和必須被CPRC 401所處理的協(xié)議信息。如在塊707所顯示的,當(dāng)RxSDP 421讀取協(xié)議數(shù)據(jù)單元時(shí),這個(gè)RxSDP 421經(jīng)過DMEM 405將協(xié)議數(shù)據(jù)單元用DMA方式傳送到SDRAM 229;如在709所顯示的,RxSDP 421使用環(huán)型總線311向TLE 301發(fā)送帶TLE 301必須翻譯的協(xié)議信息的一個(gè)消息;如在711所顯示的,最后,RxSDP 421使用提取空間601將CPRC 401需要處理協(xié)議信息的信息傳送到CPRC 401。
在模塊713,CPRC 401使用它從RxSDP 421所接收的信息和它從TLE 301所接收的、對RxSDP 421的消息作出響應(yīng)的答復(fù),來決定需要對這個(gè)傳送層包進(jìn)行什么處理。如果這個(gè)傳送層包是無效的,或者因?yàn)槠鋬?nèi)容被破壞或者因?yàn)槠湄?fù)荷是從被包交換機(jī)所濾波的一個(gè)源來的,CPRC 401將這個(gè)包標(biāo)記為可以被丟棄。對這個(gè)標(biāo)記作出響應(yīng)(標(biāo)記被包括在在DMA期間被添加的一個(gè)末尾中),這個(gè)DMA引擎停止進(jìn)行發(fā)送,并且BME 315釋放正在接收這個(gè)包的緩沖器231。
如果這個(gè)傳送層包是有效的,CPRC 401使用它已經(jīng)從TLE 301所接收的信息和在提取空間601中的信息來決定來自這個(gè)包的協(xié)議數(shù)據(jù)單元需要被放置在其中的隊(duì)列215,并且產(chǎn)生關(guān)于這個(gè)隊(duì)列的一個(gè)描述符217。然后,在751中,CPRC 401發(fā)送一個(gè)排隊(duì)命令到負(fù)荷總線317上,這個(gè)排隊(duì)命令包括這個(gè)描述符和這個(gè)協(xié)議數(shù)據(jù)單元需要被放置在其中的隊(duì)列的號碼。
QME 305通過將這個(gè)描述符217放置在合適的隊(duì)列215中,來對這個(gè)排隊(duì)命令作出響應(yīng)。如在塊717,719和721所顯示的,取決于讀取這個(gè)隊(duì)列的DCP 203的部件,有3大類隊(duì)列被XP處理器313所讀取的隊(duì)列;被一個(gè)信道處理器307所讀取的隊(duì)列;和被構(gòu)造處理器303所讀取的隊(duì)列。在隊(duì)列被XP處理器313所讀取的情形下,與這個(gè)描述符相應(yīng)的這個(gè)協(xié)議數(shù)據(jù)單元可能會(huì)發(fā)送到主機(jī)227;在隊(duì)列被構(gòu)造處理器303所讀取的情形下,與這個(gè)描述符相應(yīng)的這個(gè)協(xié)議數(shù)據(jù)單元可能會(huì)發(fā)送到一個(gè)交換構(gòu)造。
這里應(yīng)指出的是,因?yàn)镽xSDP 421,CPRC 401和QME 305均是獨(dú)立操作的處理器,流圖701中所顯示的處理可以被并行進(jìn)行。RxSDP421,和CPRC 401的流水線處理已經(jīng)被描述了;另外,CPRC 401不必要等待QME 305對CPRC 401的排隊(duì)命令作出響應(yīng)。
繼續(xù)更詳細(xì)地參考數(shù)據(jù)作用域625在RxSDP 421和CPRC 401之間的交互通信中的作用,圖9顯示了接收數(shù)據(jù)作用域643的細(xì)節(jié)。從Rx狀態(tài)寄存器635開始,這個(gè)寄存器指出在RxSDP 421和CPRC 401之間的交互通信的狀態(tài);這個(gè)寄存器具有4個(gè)感興趣的字段OWN字段935被硬件設(shè)置;這個(gè)比特指出RxSDP 421或者CPRC 401目前是否正在使用Rx狀態(tài)635目前所屬于的數(shù)據(jù)作用域625。L5:L0937是在程序控制下被RxSDP 421和CPRC 401所設(shè)置和復(fù)位的6個(gè)握手比特。忙941被RxSDP 941所設(shè)置,并且指出RxSDP 421是否是忙的。Tx狀態(tài)639在功能和內(nèi)容上與Rx狀態(tài)635類似。
RxCB 633控制在輸入包的DMA期間,在RxSDP 421和DMA引擎441之間的交互通信。當(dāng)CPRC 401擁有RxCB 633所屬于的數(shù)據(jù)作用域625(i)時(shí),CPRC 401建立RxCB 633,并且當(dāng)RxSDP 421和CPRC 401交替擁有數(shù)據(jù)作用域625(i)時(shí),RxSDP 421使用RxCB633來繼續(xù)對輸入包進(jìn)行DMA傳送。RxCB 633中的大多數(shù)字段包括執(zhí)行DMA處理所需要的各種尋址信息。緩沖器池號碼909,BTAG933,和偏移931一起規(guī)定了DRAM 229中、DMA引擎441當(dāng)前正在寫入RxSDP 421所接收的包的位置。
如下面將更詳細(xì)描述的,DRAM 229被劃分為緩沖器池。BTAG 933是這個(gè)池中的緩沖器的緩沖器標(biāo)記233,偏移931是緩沖器中、數(shù)據(jù)當(dāng)前正在被寫入的偏移。當(dāng)DMA引擎441寫入數(shù)據(jù)時(shí),它更新偏移931。DMEM DMA地址907是DMEM 405中的16字節(jié)數(shù)據(jù)線的地址,其中DMA引擎441當(dāng)前正在將數(shù)據(jù)從DMEM 405進(jìn)行DMA傳送到DRAM229。Txrcy地址905和Rxrcy地址903就是當(dāng)RxSDP 421正在從DMEM 405重新循環(huán)數(shù)據(jù)時(shí),RxSDP 421所使用的特殊地址。Txrcy地址905規(guī)定了TxSDP 427的DMA引擎441當(dāng)前正在將數(shù)據(jù)寫入到其上的DMEM 405線,而Rxrcy地址903規(guī)定了RxSDP 421正在向其寫入數(shù)據(jù)的DMEM 405線。這樣,這些地址允許RxSDP 421重新循環(huán)包,或者是在這些包被寫入到SDRAM 229以前,或者是在這些包被寫入到SDRAM 229以后。DMEM線地址901是RxSDP 421正在為其寫入數(shù)據(jù)的DMEM 405線。
RxDBCTL 913包括控制在CPRC 401,RxSDP 421和DMA引擎441之間的交互通信的控制和狀態(tài)字段§Avail 929指出RxCB 633是否可以被使用;§NR 927指出在放棄傳送以前,為了將數(shù)據(jù)傳送到DRAM 229,DMA引擎441應(yīng)產(chǎn)生的請求次數(shù);§Error 925指出在RxCB 933目前所代表的傳送期間,是否出現(xiàn)了一個(gè)錯(cuò)誤;
§Own 921指出RxSDP 421向其寫入、并且DMA引擎441從其進(jìn)行讀取的DMEM 405中的線目前是否正在被RxSDP 421寫入或者是否被DMA引擎441進(jìn)行讀?。弧霦OP 917被RxSDP 421設(shè)置,當(dāng)RxSDP 421在將被寫入到DMEM 405中的線的數(shù)據(jù)中遇到一個(gè)包結(jié)束指示時(shí);§ST 915是SDP 420的目前狀態(tài);§BCTL狀態(tài)919是負(fù)荷總線317的目前狀態(tài);和§長度911被RxSDP 421設(shè)置。它是RxSDP 421正向其進(jìn)行寫入的DMEM 405的線中的數(shù)據(jù)的長度。
TxCB 637基本上與RxCB 633類似,除了它所控制的DMA傳送在相反方向進(jìn)行,并且這些字段具有與這個(gè)方向相應(yīng)的意義。
當(dāng)RxSDP 421設(shè)置OWN比特935,在Rx狀態(tài)寄存器636中的L2Done 937或者L1Done 939,或者在RxCB 633中的Avail 929時(shí),這個(gè)結(jié)果是對CPRC 401的一個(gè)中斷;哪一個(gè)動(dòng)作將產(chǎn)生這個(gè)中斷由數(shù)據(jù)作用域的數(shù)據(jù)作用域事件寄存器632中的多個(gè)比特所指示,該數(shù)據(jù)作用域是當(dāng)RxSDP設(shè)置所討論的比特時(shí)所在的作用域。相同的結(jié)構(gòu)被用于Tx數(shù)據(jù)作用域641中的相應(yīng)比特。
開始時(shí),CPRC 401已經(jīng)建立數(shù)據(jù)作用域625(0),并且將對數(shù)據(jù)作用域625(0)的擁有關(guān)系給予RxSDP 421?,F(xiàn)在,CPRC 401擁有數(shù)據(jù)作用域625(1)。當(dāng)一個(gè)包進(jìn)入時(shí),RxSDP 421提取協(xié)議數(shù)據(jù)并且將這個(gè)協(xié)議數(shù)據(jù)寫入到提取空間寄存器601(0)。RxSDP 421在Txmsg 645(0)中將一個(gè)消息發(fā)送到TLE 301,該消息中包括需要被翻譯的協(xié)議數(shù)據(jù)。查找的結(jié)果將出現(xiàn)在一個(gè)RxResp寄存器647(0,i)中。當(dāng)這個(gè)在進(jìn)行時(shí),RxSDP 421開始將這個(gè)協(xié)議數(shù)據(jù)單元寫入到在RxCB 633(0)中所規(guī)定的DMEM 405中的線。當(dāng)已經(jīng)接收了整個(gè)線時(shí),RxSDP 421設(shè)置Rx狀態(tài)635中的擁有者比特935,來指出CPRC401現(xiàn)在擁有數(shù)據(jù)作用域625(0),設(shè)置RxCB 633(0)中的擁有者比特921,來指出DMA引擎441現(xiàn)在可以讀取它已經(jīng)寫入的線,并且產(chǎn)生自動(dòng)地將RxSDP 421切換到數(shù)據(jù)作用域910(1)的一個(gè)信號。然后,RxSDP 421檢查數(shù)據(jù)作用域625(1)的擁有者比特935,來看CPRC 401是否已經(jīng)控制了它。如果CPRC 401已經(jīng)控制數(shù)據(jù)作用域625(1),在RxSDP 421處理這下一個(gè)包以前,RxSDP 421就進(jìn)行等待,直到CPRC 401放棄對數(shù)據(jù)作用域625(1)的控制。處理如上所述,除了RxSDP 421使用數(shù)據(jù)作用域625(1)的資源,而不是數(shù)據(jù)作用域625(0)的資源外。
當(dāng)RxSDP 421使用數(shù)據(jù)作用域625(1)來進(jìn)行工作時(shí),CPRC 401處理接收數(shù)據(jù)作用域625(0)。CPRC 401檢查和/或者刪除RxSDP 421放置在提取空間寄存器601(0)中的這個(gè)協(xié)議數(shù)據(jù),檢查RxCB 633(0)來決定到SDRAM 229的DMA是否已經(jīng)無錯(cuò)誤地完成了,并且建立RxCB 633(0)以被RxSDP 421下一次使用。然后,CPRC 401使用RxSDP 421放置在提取寄存器601中的協(xié)議數(shù)據(jù)和在RxRsp結(jié)構(gòu)647(0,i)中從TLE 301所接收的任何翻譯,來為正在被寫入到SDRAM 229的數(shù)據(jù)產(chǎn)生一個(gè)描述符,并且將這個(gè)描述符放置在QME305中的信道處理器307的郵箱中。當(dāng)CPRC 401已經(jīng)做完了所有這些時(shí),它設(shè)置擁有者比特935(0),以使接收數(shù)據(jù)作用域625(0)又可以被RxSDP 421所使用。如果設(shè)置了擁有者比特935(1),表示RxSDP421完成了使用接收數(shù)據(jù)作用域625(1)進(jìn)行的工作,CPRC 401使用與上面對接收數(shù)據(jù)作用域625(0)所描述的方式相同的方式,在接收數(shù)據(jù)作用域625(1)進(jìn)行工作。
圖8提供了CPRC 401和TxSDP 429如何在發(fā)送一個(gè)傳送層協(xié)議流中進(jìn)行交互通信的一個(gè)概述圖。發(fā)送比接收簡單得多,因?yàn)檩敵霭鼉H需要被裝配和發(fā)送,不需要被解釋。在發(fā)送時(shí)所需要做的大多數(shù)工作是被CPRC 401完成的。從803開始,CPRC 401首先執(zhí)行循環(huán)805;即,CPRC 401檢查它從QME 305所接收的隊(duì)列狀態(tài)信息,以看在正在被信道處理器307(i)所讀取的一個(gè)隊(duì)列217中是否有一個(gè)描述符。如在807所顯示的,如果有一個(gè)描述符217,CPRC 401將一個(gè)出列命令放置在負(fù)荷總線317上,并且也經(jīng)過負(fù)荷總線317從QME 305接收這個(gè)描述符。然后,CPRC 401使用在這個(gè)描述符中的信息來建立正在被發(fā)送的包所需要的融合寄存器603(811),使用這個(gè)描述符中的緩沖器標(biāo)記來在Tx控制塊寄存器637中建立寄存器以將這個(gè)緩沖器內(nèi)的內(nèi)容從SDRAM 229傳送到TxSDP 427(813),并且然后,開始這個(gè)傳送(815)。當(dāng)狀態(tài)915或者EOP 917指示這個(gè)傳送結(jié)束時(shí),CPRC 401釋放TxSDP 427和在這個(gè)傳送中所涉及的其它資源(817)。TxSDP 427和CPRC 401以與RxSDP 421和CPRC 401進(jìn)行交替的方式相同的方式來交替使用數(shù)據(jù)作用域625(0)和(1)。因?yàn)樵跀?shù)據(jù)作用域之間的交替是在CPRC 401所執(zhí)行程序的控制下進(jìn)行的,所以這個(gè)程序可以做任何所需要的處理,來在TxSDP 427和RxSDP 421之間分配一個(gè)數(shù)據(jù)作用域所表示的資源。
RxSDP 421的細(xì)節(jié)圖10和11RxSDP 421和TxSDP 427向每一個(gè)信道處理器307(i)提供了在串行輸入204(i),串行輸出206(i),和信道處理器307(i)的其它部件之間的一個(gè)可編程接口。這樣,一給定串行輸入204(i)可以被按照正確處理屬于給定協(xié)議的媒質(zhì)層和傳送層包所需要的方式來進(jìn)行編程,而一給串行輸出204(j)可以被編程成輸出屬于給定協(xié)議的媒質(zhì)層和傳送層包。每一個(gè)SDP 421或者427具有其自己的微程序存儲(chǔ)器和獨(dú)立的寄存器集合。
圖10是RxSDP 421的一個(gè)框圖。這些部件是將這個(gè)串行輸入轉(zhuǎn)換為并行,并且首先在媒質(zhì)層包的級別上處理這個(gè)輸入,然后在傳送層包的級別上或者更高級別上來處理這個(gè)輸入包的一系列處理器和FIFOS。某些處理器是專用于處理某些特定協(xié)議的。一個(gè)旁路路徑可以被編程為允許數(shù)據(jù)旁路任何處理器和/或者FIFO。整體來說,這些部件如下所述§可配置的物理邏輯443,它從物理層接收串行輸入,并且對它進(jìn)行解釋以產(chǎn)生一個(gè)10比特代碼的流。
§管腳接口204(i),它從這個(gè)物理層接收10比特代碼。
§8b/10b解碼1001,它從管腳邏輯443所接收的10比特代碼產(chǎn)生字節(jié);§小的FIFO 1003,它是具有不同的、可編程的寫入和讀取時(shí)鐘的一個(gè)異步FIFO(隊(duì)列)。這個(gè)寫入時(shí)鐘的運(yùn)行頻率是這個(gè)輸入數(shù)據(jù)流所需要的一個(gè)頻率,而這個(gè)讀取時(shí)鐘的運(yùn)行速率是CPRC 401的速度。在一個(gè)目前的優(yōu)選實(shí)施方式中,F(xiàn)IFO 1003是8個(gè)9比特字深的FIFO。
§接收比特處理器1005,它對它從小的FIFO 1003中所接收的字節(jié)流進(jìn)行圖形匹配和字段提取,被提取的字段經(jīng)過路徑1005被發(fā)送到提取空間417。
§接收SONET幀模塊1007,它處理SONET幀。接收SONET幀模塊1007對幀中的數(shù)據(jù)進(jìn)行解擾,從幀中刪除協(xié)議數(shù)據(jù),進(jìn)行奇偶校驗(yàn),并且經(jīng)過路徑1008將這個(gè)協(xié)議數(shù)據(jù)寫入到提取空間417中。
§接收同步處理器1009,它處理ATM信元。接收同步處理器1009發(fā)現(xiàn)這個(gè)信元的邊界,刪除這個(gè)協(xié)議數(shù)據(jù),使用這個(gè)協(xié)議數(shù)據(jù)啟動(dòng)一個(gè)TLE操作,對這個(gè)負(fù)荷進(jìn)行解擾,并且經(jīng)過路徑1019將這個(gè)協(xié)議數(shù)據(jù)寫入到提取空間417中。
§大的接收異步FIFO 1011,它是一個(gè)異步FIFO。在一個(gè)當(dāng)前的優(yōu)選實(shí)施方式中,F(xiàn)IFO 1011是一個(gè)64個(gè)10-比特字深的FIFO。FIFO1011主要是用于當(dāng)TLE 301查找VPI/VCI時(shí),對一個(gè)ATM信元進(jìn)行分級,并且FIFO 1011也用于使用高速度接收包來提供靈活性。
§接收字節(jié)處理器1013,在微代碼的控制下進(jìn)行工作,來對9-比特字的數(shù)據(jù)進(jìn)行圖形匹配和字段提取。
通過復(fù)用器1002,1006,1014,和1010來實(shí)現(xiàn)旁路路徑1015。復(fù)用器1010也實(shí)現(xiàn)了再循環(huán)路徑441。旁路和再循環(huán)路徑是可以通過設(shè)置SDP模式627中的比特進(jìn)行動(dòng)態(tài)地配置的。通過RxSDP控制613中的寄存器,數(shù)據(jù)可以直接在CPRC 401和比特處理器1005,同步處理器1009,或者字節(jié)處理器1013之間進(jìn)行傳送。
如前面所描述的,信道處理器307可以被進(jìn)行組合來處理非常高速度的數(shù)據(jù)流。當(dāng)被組合在一起時(shí),被組合的信道處理器作為一個(gè)流水線來進(jìn)行工作,其中每一個(gè)被組合的信道處理器依次處理數(shù)據(jù)流中的一部分?jǐn)?shù)據(jù)。一個(gè)集合中RxSDP 421之間的協(xié)調(diào)可以通過令牌總線1027,1017,和1028來實(shí)現(xiàn)。例如,在一個(gè)組合中,一個(gè)被使能的Rx比特處理器1005僅當(dāng)被令牌總線1004提供了這個(gè)令牌時(shí),才處理輸入數(shù)據(jù)流。幾個(gè)令牌總線是需要的,因?yàn)橛糜谔幚硪粋€(gè)輸入流的RxSDP421部件將隨輸入流的類型而變化。
可配置管腳邏輯443的細(xì)節(jié)圖46和47可以使用兩個(gè)方法來配置配置管腳邏輯443§向一個(gè)串中的一個(gè),兩個(gè),或者4個(gè)SDP 420提供輸入流,或者從一個(gè)串中的一個(gè),兩個(gè),或者4個(gè)SDP 420中接收一個(gè)輸出流;和§使用這個(gè)用來發(fā)送輸入流或者輸出流的媒質(zhì)所需要的不同物理接口來進(jìn)行工作。
第一個(gè)類型的配置是為了允許將信道處理器307組合成一個(gè)串307以處理非常高速度的輸入流或者輸出流;第二個(gè)類型的配置允許DCP203被用于不同類型的傳送媒質(zhì),而不需要在DCP 203的外部增加設(shè)備以對從這個(gè)媒質(zhì)所接收的信號進(jìn)行適配,以被DCP 203所使用。在信道處理器的局部存儲(chǔ)器中的一個(gè)寄存器控制這兩個(gè)類型的配置。這些寄存器可以被這個(gè)信道處理器自己所設(shè)置,或者可以被XP 313所設(shè)置。
圖46是一個(gè)表4601,顯示了在一個(gè)DCP 203中的一個(gè)串309如何被配置成來根據(jù)RMII,OC-3,DS1,DS3,GMII,TBI,和OC-12標(biāo)準(zhǔn)來接收和產(chǎn)生串行數(shù)據(jù)流。列4603列出了這個(gè)串中的每一個(gè)信道處理器的I/O管腳;列4605指出這個(gè)管腳的一般目的;這樣,在每一個(gè)信道處理器中,I/O管腳0和1是用于時(shí)鐘信號的,而剩余的管腳是用于數(shù)據(jù)的。剩余的列顯示了這些管腳是如何被用于每一個(gè)媒質(zhì)的列4607指出在RMII中它們是如何被使用的;4609指出在OC-3中它們是如何被使用的;4611指出在DS3中它們是如何被使用的;4615指出在GMII中,當(dāng)這個(gè)串中的兩個(gè)信道處理器被用于接收數(shù)據(jù),而兩個(gè)信道處理器被用于發(fā)送數(shù)據(jù)時(shí),它們是如何被使用的;4617指出在TBI中,當(dāng)這些信道處理器以相同的方式被使用時(shí),它們是如何被使用的;和4619指出在OC-12中它們是如何被使用的,其中在一個(gè)串中的信道處理器交替作為發(fā)送器和接收器。
各種媒質(zhì)需要不同類型的、用于I/O管腳的驅(qū)動(dòng)器和接收器;這樣,在可配置管腳邏輯443中的每一個(gè)I/O管腳具有一個(gè)3-態(tài)驅(qū)動(dòng)器,一個(gè)TTL驅(qū)動(dòng)器,和一個(gè)PECL驅(qū)動(dòng)器。對例如使用PECL邏輯的OC-3媒質(zhì),I/O管腳對被配置為差分對,如列4609所顯示的。
圖47顯示了管腳模式寄存器4701和SDP模式寄存器4713。每一個(gè)信道處理器307具有這些寄存器中的一個(gè)。寄存器4701決定如何配置這個(gè)信道處理器的I/O管腳。數(shù)據(jù)Cnfg比特4703是決定I/O管腳是否被一個(gè)3-態(tài)驅(qū)動(dòng)器,一個(gè)TTL驅(qū)動(dòng)器,或者一個(gè)PECL驅(qū)動(dòng)器所驅(qū)動(dòng)的4個(gè)比特。RxClk復(fù)用器4705和TxClk復(fù)用器4707分別規(guī)定正在被用于攜帶接收和/或者發(fā)送時(shí)鐘信號的管腳。Rx數(shù)據(jù)使能4709規(guī)定了哪一個(gè)管腳被用于接收數(shù)據(jù)。最后,Tx數(shù)據(jù)使能4711規(guī)定哪一個(gè)管腳被用于發(fā)送數(shù)據(jù)。
SDP模式寄存器4713包括用于控制RxSDP 421中的哪一個(gè)部件被使能,循環(huán)電路中的什么被使能,和信道處理器309所屬的串中目前采用哪個(gè)類型的組合的比特。信道處理器TxSDP 427也具有一個(gè)類似的寄存器。RxEn比特4715指出是否使能了這個(gè)信道處理器的RxSDP 421;比特4717指出是否使能了信道處理器的字節(jié)處理器313;比特4719指出是否使能了信道處理器的比特處理器1005;比特4721指出是否使能了Rx Sonet幀模塊1007;比特4723指出是否使能了Tx同步處理器1009。下兩個(gè)比特是用于再循環(huán)控制的,其中比特4725指出到字節(jié)處理器1013的再循環(huán)和比特4729指出從提取空間417到比特處理器1005的再循環(huán)。組合模式字段4731是一個(gè)2-比特字段,規(guī)定在這個(gè)串中是否沒有進(jìn)行組合,雙向組合(即,兩個(gè)信道處理器進(jìn)行接收,兩個(gè)信道處理器進(jìn)行發(fā)送)或者4向的組合(所有4個(gè)信道處理器或者進(jìn)行接收或者進(jìn)行發(fā)送)。
SDP中處理器的實(shí)現(xiàn)方式圖11圖11顯示了SDP中的處理器是如何被實(shí)現(xiàn)的。更具體地說,這里所顯示的處理器是RxByte處理器1013,但是在Rxbit處理器1005中的處理器和接收同步處理器1009是類似的。SONET幀模塊1007是使用與圖11中的一個(gè)處理器類似的一個(gè)處理器而實(shí)現(xiàn)的一個(gè)可配置狀態(tài)機(jī)。
如在復(fù)用器1107所顯示的,RxByte處理器1013從大的FIFO 1011接收外部輸入。RxByte處理器1013可以經(jīng)過復(fù)用器1123向環(huán)型總線接口415,提取空間417,或者緩沖器1025提供外部輸出,而環(huán)型總線接口415,提取空間417,或者緩沖器1025反過來又向DMEM 405提供協(xié)議數(shù)據(jù)單元。RxByte處理器1013內(nèi)部的部件包括§控制存儲(chǔ)器1101,它包括被處理器1013所執(zhí)行的微代碼,并且通過提供用于控制處理器1013中其它部件的控制信號(虛箭頭),來對目前正在被訪問的微指令作出響應(yīng)??刂拼鎯?chǔ)器1101可以由XP313加載。
§下一個(gè)地址邏輯1105,它通過從控制存儲(chǔ)器1101中選擇下一個(gè)需要被執(zhí)行的微指令,來對來自控制存儲(chǔ)器1105的控制信號和從條件代碼復(fù)用器1121和內(nèi)容可以被訪問的存儲(chǔ)器(CAM 1117)的輸入作出響應(yīng)。
§計(jì)數(shù)器1109和通用寄存器1115。這些計(jì)數(shù)器跟蹤包中正被處理的比特位置。有4個(gè)8-比特計(jì)數(shù)器1109(0…3),它們可以被配置為2個(gè)16-比特計(jì)數(shù)器,并且如從計(jì)數(shù)器到下一個(gè)地址邏輯1105的輸入所顯示的,這個(gè)微代碼可以規(guī)定與計(jì)數(shù)器值相關(guān)的動(dòng)作。這些通用寄存器1115是6個(gè)8-比特寄存器,以用于保存在處理期間所使用的數(shù)據(jù)。
§CAM(內(nèi)容可訪問的存儲(chǔ)器)1117一個(gè)CAM是在圖形匹配中所使用的一個(gè)存儲(chǔ)器。在CAM中的每一個(gè)信元包括一個(gè)圖形,并且當(dāng)與在一個(gè)CAM信元中所保存的一個(gè)圖形匹配的數(shù)據(jù)被提供到這個(gè)CAM時(shí),這個(gè)CAM輸出這個(gè)信元在CAM中的位置。這個(gè)微代碼也可能規(guī)定與CAM輸出的值相關(guān)的動(dòng)作。CAM 1117被CPRC 401和XP 313所載入。在CAM中有64個(gè)9-比特的字,并且這個(gè)CAM可以通過編程的方式被劃分為最多16個(gè)“邏輯”CAM。
§CRC 111是用于執(zhí)行循環(huán)冗余校驗(yàn)的專用硬件。也可以包括其它專用硬件來對包進(jìn)行解擾。
§ALU 1119是一個(gè)包括一個(gè)圓筒旋轉(zhuǎn)器(barrel rotator)的8-比特ALU。
如從前面可以看出的,XP 313通過載入CTL存儲(chǔ)器1101和CAM1117來建立Rx字節(jié)處理器1013以進(jìn)行工作。CPRC 401使用一個(gè)復(fù)位信號來停止或者啟動(dòng)字節(jié)處理器1013。
一旦字節(jié)處理器1013被設(shè)置為運(yùn)行,字節(jié)處理器1013就將它所接收的每一個(gè)字節(jié)提供到CAM 1117。如果發(fā)現(xiàn)了表示一個(gè)傳送層包的開始的一個(gè)匹配,控制邏輯1105就開始執(zhí)行這個(gè)微代碼,以處理這個(gè)傳送層包。計(jì)數(shù)器被設(shè)置,并且字節(jié)處理器1013如CAM 1117所發(fā)現(xiàn)的進(jìn)一步匹配和計(jì)數(shù)器值所指示的,來處理這個(gè)包?;蛘呖梢酝ㄟ^(圖形,掩碼,長度),或者通過(偏移,圖形,掩碼,長度)來規(guī)定在微代碼中的匹配,其中偏移是在這個(gè)包中的偏移,掩碼規(guī)定“不需要關(guān)心”這個(gè)比特,長度規(guī)定匹配中比特的數(shù)目。來自這個(gè)傳送層包的協(xié)議數(shù)據(jù)被提取,并且經(jīng)過路徑1019被路由到提取空間417或者路由到環(huán)行總線接口415,并且這個(gè)協(xié)議數(shù)據(jù)單元被提取并且經(jīng)過路徑425被發(fā)送到16字節(jié)緩沖器1025,從這,它被DMA傳送到DMEM 405中的一個(gè)線。通過(偏移,長度,寄存器地址)來規(guī)定這個(gè)微代碼中的提取,其中偏移又是指在這個(gè)包中的偏移,長度是需要被提取的字段的比特長度,并且寄存器地址是通用寄存器1115中、這個(gè)字段將被保存在其中的一個(gè)寄存器的地址。
Rx比特處理器1005的細(xì)節(jié)繼續(xù)更詳細(xì)地參考RxSDP 421的部件所執(zhí)行的功能,Rx比特處理器1005與Rx字節(jié)處理器1013類似,除了Rx比特處理器1005具有一個(gè)線性反饋移位寄存器,而不是CRC 1111外。這個(gè)線性反饋移位寄存器可以被配置成長度可達(dá)到32比特,并且具有相對這個(gè)數(shù)據(jù)流的多項(xiàng)式和位置。這個(gè)線性反饋移位寄存器被用于產(chǎn)生hash值或者其它校驗(yàn)和。Rx比特處理器1005在最低的層次上,處理被RxSDP 421所接收的字節(jié)流。這樣,Rx比特處理器1005可以被編程為檢測HDLC幀和無效的序列,被編程為刪除填充的0,被編程為在一個(gè)OC-3數(shù)據(jù)流中發(fā)現(xiàn)STS幀和發(fā)現(xiàn)并刪除輸入以太網(wǎng)幀的前導(dǎo)碼。
接收SONET幀模塊1007的細(xì)節(jié)接收SONET幀模塊1007處理SONET幀。幀模塊1007可以從Rx比特處理器1005,或者也可以經(jīng)過旁路1015直接從管腳接口204(i)接收這個(gè)幀。到SONET幀模塊1007的輸入包括連接到管腳接口204(i)的物理層接口芯片所恢復(fù)的接收時(shí)鐘幀同步信號和包括在這個(gè)幀中的8-比特?cái)?shù)據(jù)。一個(gè)SONET幀包括傳送層開銷和包括這個(gè)幀負(fù)荷的一個(gè)同步負(fù)荷封裝(SPE)。包括在這個(gè)傳送層開銷中的是指向這個(gè)同步負(fù)荷封裝的一個(gè)STS指針。這個(gè)同步負(fù)荷封裝包括路徑開銷字節(jié)。
接收SONET幀模塊1007對這個(gè)SONET幀中的字節(jié)進(jìn)行解擾,進(jìn)行奇偶性校驗(yàn),并且經(jīng)過路徑1008將這個(gè)傳送層開銷寫入到提取空間中。接收SONET幀模塊1007進(jìn)一步解釋這個(gè)STS指針以發(fā)現(xiàn)這個(gè)SPE。在發(fā)現(xiàn)這個(gè)SPE后,接收SONET幀模塊1007進(jìn)行奇偶性校驗(yàn)并且將這個(gè)SPE的路徑開銷寫入到提取空間中。在這個(gè)SPE中的負(fù)荷被進(jìn)一步傳遞到RxSDP 421的部件,如這個(gè)負(fù)荷類型所要求的。例如,如果這個(gè)負(fù)荷是ATM信元,它們就被傳遞到接收同步處理器1009。在這個(gè)優(yōu)選實(shí)施方式中,接收SONET幀模塊1007不對SPE的負(fù)荷進(jìn)行解復(fù)用。
接收同步處理器1009的細(xì)節(jié)接收同步處理器1009專用于處理ATM信元。一個(gè)ATM信元包括53個(gè)字節(jié)。5個(gè)字節(jié)是包括一個(gè)虛通道指示,一個(gè)虛信道指示,一個(gè)負(fù)荷類型指示,一個(gè)信元丟失優(yōu)先級指示,一般流控制信息和一個(gè)頭錯(cuò)誤校驗(yàn)字節(jié)的一個(gè)頭部。剩余的48字節(jié)是負(fù)荷。接收同步處理器1009通過連續(xù)地對5-字節(jié)序列進(jìn)行頭錯(cuò)誤校驗(yàn),將這個(gè)序列中的第5個(gè)字節(jié)作為對這個(gè)序列中前4個(gè)字節(jié)的頭錯(cuò)誤校驗(yàn)字節(jié),來決定一個(gè)字節(jié)流是一個(gè)ATM信元流。如果這個(gè)頭錯(cuò)誤校驗(yàn)失敗了,接收同步處理器1009就繼續(xù)進(jìn)行嘗試。如果這個(gè)頭錯(cuò)誤校驗(yàn)成功了,接收同步處理器1009就發(fā)現(xiàn)了一個(gè)ATM信元。如果接收同步處理器1009在一個(gè)行中發(fā)現(xiàn)了一個(gè)可編程的信元數(shù)目,接收同步處理器1009就被同步到一個(gè)ATM信元流。接收同步處理器1009保持同步,直到連續(xù)頭錯(cuò)誤校驗(yàn)失敗的次數(shù)達(dá)到一個(gè)可編程數(shù)目,這就表示同步處理器1009不再同步到一個(gè)ATM信元流。
當(dāng)接收同步處理器1009與一個(gè)ATM信元流保持同步時(shí),接收同步處理器1009解析這個(gè)ATM信元的頭部,并且將這個(gè)頭部的內(nèi)容輸出到提取空間。接收同步處理器1009通過對負(fù)荷進(jìn)行解擾,并且通過將一個(gè)狀態(tài)字節(jié)附加到這個(gè)負(fù)荷的末尾,以使如果對這個(gè)信元進(jìn)行的頭部校驗(yàn)失敗了就可以丟棄這個(gè)負(fù)荷,來進(jìn)一步處理這個(gè)負(fù)荷。一般地說,從接收同步處理器1009中輸出的負(fù)荷被提供到大FIFO 1011,這個(gè)大FIFO 1011具有足夠的深度來允許在進(jìn)一步進(jìn)行處理以前,可以對VPI-VCI進(jìn)行TLE搜尋。
接收字節(jié)處理器1013的細(xì)節(jié)接收字節(jié)處理器1013可以被編程為執(zhí)行幾個(gè)功能§接收字節(jié)處理器1013為通過SONET的PPP處理HDLC換碼序列;§接收字節(jié)處理器1013進(jìn)行32-比特CRC校驗(yàn),包括以太網(wǎng)和AAL5的幀校驗(yàn)序列;
§當(dāng)信道處理器307(i)已經(jīng)被與其它信道處理器307進(jìn)行組合來處理1000BASE-X千兆以太網(wǎng)時(shí),接收字節(jié)處理器1013進(jìn)行以太網(wǎng)的定界符識別;使用這個(gè)再循環(huán)路徑,接收字節(jié)處理器1013可以與其它接收字節(jié)處理器1013進(jìn)行組合,來處理TI和T3的速率。這個(gè)再循環(huán)路徑也允許處理多信道HDLC和加密/解密;和§接收字節(jié)處理器1013將一個(gè)狀態(tài)字寫入到提取空間中,當(dāng)它檢測到一個(gè)幀結(jié)束標(biāo)記符時(shí)。
§接收字節(jié)處理器1013從一個(gè)ATM信元的頭部中提取這個(gè)VPI-VCI,并且經(jīng)過環(huán)型總線311向TLE 301發(fā)送包括虛通道指示符和虛信道指示符的一個(gè)消息。這個(gè)TLE 301通過將表示具有這個(gè)VPI-VCI組合的ATM流的輸出隊(duì)列的一個(gè)消息返回到信道處理器307(i),來對這個(gè)消息作出響應(yīng)。
接收字節(jié)處理器1013處理9-比特字。接收字節(jié)處理器1013的操作已經(jīng)被詳細(xì)描述了。
各部件合作的示例在下面的示例中,假定RxSDP 421的管腳接口204(i)連接到其上正在使用SONET協(xié)議發(fā)送負(fù)荷數(shù)據(jù)的一個(gè)光纖上。在SONET幀中的負(fù)荷是ATM信元,并且其頭部具有一個(gè)特定VPI-VCI的ATM信元中的負(fù)荷是一個(gè)IP包。RxSDP 421已經(jīng)被編程為從這個(gè)SONET幀中提取ATM信元,并且處理這個(gè)ATM信元。
從這個(gè)SONET幀中來的字節(jié)首先發(fā)送到Rx比特處理器1005,Rx比特處理器1005再將這些字節(jié)發(fā)送到SONET幀模塊1007。Rx比特處理器1005也檢測這個(gè)幀的開始,并且向接收SONET幀模塊1007發(fā)送表示字節(jié)到達(dá)的一個(gè)信號。這個(gè)接收SONET幀模塊1007對這個(gè)SONET幀中來的負(fù)荷數(shù)據(jù)進(jìn)行解擾,進(jìn)行奇偶校驗(yàn),并且對負(fù)荷數(shù)據(jù)進(jìn)行定位。ATM信元的負(fù)荷被發(fā)送到接收同步處理器1009,接收同步處理器1009檢測這個(gè)ATM信元,讀取ATM信元的頭部,并且將ATM信元中的信息發(fā)送到提取空間417。下面,ATM信元的負(fù)荷被發(fā)送到接收字節(jié)處理器1013,接收字節(jié)處理器1013將ATM信元的VPI-VCI對發(fā)送到TLE 301以進(jìn)行翻譯,并且將來自包括在ATM包的負(fù)荷中的任何包的報(bào)頭信息讀取到提取空間417中。
TxSDP 427的細(xì)節(jié)圖12TxSDP 427執(zhí)行與RxSDP 421相逆的操作即,TxSDP 427從SDRAM 229接收一個(gè)協(xié)議數(shù)據(jù)單元,并且以其目的地和管腳接口206(i)所連接的物理接口所要求的形式,來添加輸出這個(gè)協(xié)議數(shù)據(jù)單元所需要的協(xié)議數(shù)據(jù)。另外,操作是分層的。其中傳送層包的協(xié)議數(shù)據(jù)被添加到媒質(zhì)層包的協(xié)議數(shù)據(jù)的前面。圖12顯示了TxSDP 427的細(xì)節(jié)。這個(gè)協(xié)議數(shù)據(jù)單元經(jīng)過路徑431從DMEM 405到16字節(jié)緩沖器1229,TxByte處理器1213從16字節(jié)緩沖器1229中讀取這個(gè)協(xié)議數(shù)據(jù)單元;這個(gè)協(xié)議數(shù)據(jù)經(jīng)過路徑429從融合空間419來,并且被發(fā)送到TxSONET幀模塊1207和Tx比特處理器1205和被發(fā)送到TxByte處理器1213。到RxSDP 421的的再循環(huán)路徑在441;復(fù)用器1206,1204和1202實(shí)現(xiàn)了旁路路徑1215。組合路徑1223允許一個(gè)給定TxSDP 427將媒質(zhì)層數(shù)據(jù)添加到被與這個(gè)給定TxSDP 427組合的其它TxSDP 427所產(chǎn)生的傳送層包流。當(dāng)一個(gè)給定TxSDP 427是一個(gè)組合的一部分時(shí),通過在TxByte令牌總線1225上的這個(gè)令牌來控制TxByte處理器1213的輸出。TxSDP 427的部件與RxSDP 421中名字類似的部件類似,除了它們的功能是將協(xié)議數(shù)據(jù)添加到一個(gè)協(xié)議數(shù)據(jù)單元流,而不是提取它。在功能上的這個(gè)差異的一個(gè)結(jié)果是,TxSDP 427中沒有設(shè)備用于發(fā)送環(huán)型總線消息。TxStatus 639和TxCB 637具有與Rx數(shù)據(jù)作用域643的相應(yīng)部件類似的功能,其中除了方向上有差異外。TxSDP ctl 615中的寄存器進(jìn)一步允許CPRC 401與TxSDP 427進(jìn)行通信,并且SDP模式627中的寄存器配置這個(gè)旁路路徑。
這些部件如下,它們是按照其中處理輸出的順序來排列的§Tx字節(jié)處理器1213可以被編程為從DMEM 405讀取一個(gè)協(xié)議數(shù)據(jù)單元,并且實(shí)現(xiàn)字段插入,刪除和替代。Tx字節(jié)處理器1213也可以被編程為通過預(yù)先考慮這個(gè)協(xié)議數(shù)據(jù)單元中48-字節(jié)塊的這個(gè)ATM頭部,并且可選地對這個(gè)信元內(nèi)容進(jìn)行加擾,來產(chǎn)生ATM信元。當(dāng)沒有協(xié)議數(shù)據(jù)單元需要被發(fā)送時(shí),Tx字節(jié)處理器1213產(chǎn)生空閑的ATM信元。
§大異步FIFO 1211的深度是64個(gè)字,并且其寬帶是9比特,并且大異步FIFO 1211提供處理器1213執(zhí)行的字段插入和刪除所需要的靈活性。以核心時(shí)鐘速率來對FIFO 1211進(jìn)行寫入,并且也可以或者使用核心時(shí)鐘速率,或者使用串行時(shí)鐘速率來讀取FIFO 1211。
§SONET幀模塊1207產(chǎn)生其中的負(fù)荷是TxByte處理器1213的輸出的SONET幀。
§Tx比特處理器1205是一個(gè)智能的并行-串行處理器。在程序的控制下,Tx比特處理器1205實(shí)現(xiàn)了對它所接收的數(shù)據(jù)進(jìn)行字段插入,字段刪除和字段替代。這個(gè)輸入數(shù)據(jù)是8比特寬,其輸出數(shù)據(jù)是一次1,2,或者4個(gè)比特,這與物理接口相關(guān)。處理器1205包括一個(gè)通用線性反饋移位寄存器。
§小FIFO 1203數(shù)據(jù)被以核心時(shí)鐘速度寫入到這個(gè)FIFO,并且被以串行時(shí)鐘速率來進(jìn)行讀取。這個(gè)FIFO是8個(gè)字深,并且是9比特寬。
§8b/10b編碼器1201對數(shù)據(jù)進(jìn)行8b/10b編碼。
處理器1213,1207,和1205是可以被編程的,并且它們具有與上面所描述的Rx字節(jié)處理器1013相同的通用內(nèi)部結(jié)構(gòu)。
將通過與用于描述RxSDP 421的示例相逆的一個(gè)示例來描述這些部件之間的合作這個(gè)輸入是為一個(gè)IP包的一個(gè)協(xié)議數(shù)據(jù)單元;這個(gè)輸出是其負(fù)荷為ATM信元的一個(gè)SONET幀,ATM信元的負(fù)荷反過來又是IP包。這個(gè)IP包最后被保存在SDRAM 229中,從SDRAM229,這個(gè)IP包被DMA傳送到DMEM 405;形成ATM信元和SONET幀所需要的這個(gè)協(xié)議數(shù)據(jù)在融合空間419中。以48-字節(jié)塊為單位,從DMEM 405中讀取這個(gè)IP包;Tx字節(jié)處理器1213為每48-字節(jié)塊產(chǎn)生一個(gè)ATM頭部,并且這個(gè)所產(chǎn)生的ATM信元被發(fā)送到大FIFO1211,從這個(gè)大FIFO 1211,這個(gè)所產(chǎn)生的ATM信元被SONET幀模塊1207所讀取。SONET幀模塊1207將ATM信元封裝作為ATM幀的負(fù)荷,并且添加必要的SONET協(xié)議數(shù)據(jù)。然后,這個(gè)SONET幀被輸出到Tx比特處理器1205,Tx比特處理器1205將這個(gè)SONET幀進(jìn)行串行化,并且將這個(gè)SONET幀輸出到小FIFO 1203,從小FIFO1203,這個(gè)SONET幀被發(fā)送到編碼1201,并且從編碼1201,被發(fā)送到管腳接口206(i)。
對PDH電話使用信道處理器307在很多年內(nèi),長途電話服務(wù)提供者已經(jīng)使用數(shù)字中繼鏈路來承載長途電話呼叫。在這些系統(tǒng)中,這個(gè)呼叫所連接的電話所產(chǎn)生的音頻信號被量化為1-字節(jié)采樣,并且從許多呼叫來的被量化的采樣和關(guān)于這些采樣的路由信息一起被復(fù)用到中繼鏈路上。
雖然這些采樣和它們的路由信息可以被看作非常簡單的包,但是,在這些系統(tǒng)中沒有包的層次結(jié)構(gòu),并且在接收端口和發(fā)送端口之間的關(guān)系是固定的。所以,SDRAM 229中的包不需要表搜尋,描述符,隊(duì)列,或者緩沖器。相反,這個(gè)接收信道處理器307(i)利用了它與發(fā)送信道處理器(j)共享全局地址空間321的這個(gè)事實(shí),并且簡單地將每一個(gè)采樣寫入到發(fā)送信道處理器307(j)的DMEM 405中的一個(gè)隊(duì)列。在發(fā)送信道處理器307(j)中的CPRC 401管理這個(gè)隊(duì)列。
信道處理器307的組合圖13,14,26-27如前面所提到的,信道處理器307的結(jié)構(gòu)是以4個(gè)信道處理器307組成串309。將信道處理器組成串的這種結(jié)構(gòu)允許信道處理器被組合,以使它們可以使用比一單個(gè)信道處理器307所能夠進(jìn)行的速度更快的速度來進(jìn)行發(fā)送或者接收。在一個(gè)優(yōu)選實(shí)施方式中,組合被用于發(fā)送和接收OC-12c和千兆以太網(wǎng)協(xié)議。對這個(gè)OC-12c協(xié)議,串中4個(gè)信道處理器中的兩個(gè)信道處理器可以被用于接收數(shù)據(jù),而另外兩個(gè)信道處理器可以被用于發(fā)送數(shù)據(jù),或者兩個(gè)串可以被使用,其中一個(gè)串用于接收數(shù)據(jù),而另一個(gè)串被用于發(fā)送數(shù)據(jù)。對千兆以太網(wǎng)協(xié)議,兩個(gè)串被使用,一個(gè)串中的4個(gè)信道處理器可以被用于根據(jù)這個(gè)協(xié)議進(jìn)行接收,而另一個(gè)串中的4個(gè)信道處理器可以被用于根據(jù)這個(gè)協(xié)議進(jìn)行發(fā)送。
在這里,組合一組信道處理器來接收一個(gè)協(xié)議被稱作接收組合;相應(yīng)地,組合一組信道處理器來發(fā)送一個(gè)協(xié)議被稱作發(fā)送組合。在接收組合中,每一個(gè)信道處理器均接收從這個(gè)協(xié)議來的所有輸入,但是僅僅處理輸入中的一部分。在發(fā)送組合中,每一個(gè)信道處理器接收這個(gè)協(xié)議的部分輸出,并且當(dāng)需要時(shí)將其部分輸出到實(shí)際上向這個(gè)發(fā)送媒質(zhì)提供輸出的信道處理器。串中信道處理器的串行I/O管腳以這樣一個(gè)方式被進(jìn)行連線,以使串中的所有信道處理器均接收相同的串行輸入。也可能這樣配置組合信道處理器,以使所有組合信道處理器可以被相同的定時(shí)器來控制。最后,被實(shí)現(xiàn)為在共享存儲(chǔ)器中信號標(biāo)記的令牌可以被用于協(xié)調(diào)串中信道處理器的操作。組合是通過設(shè)置屬于這個(gè)串的信道處理器中的配置寄存器來完成的。
圖13給出了允許以一個(gè)優(yōu)選實(shí)施方式來進(jìn)行組合的結(jié)構(gòu)的細(xì)節(jié)。圖中顯示了有4個(gè)信道處理器307(j,0…3)的一個(gè)串309(j)。到一個(gè)串的輸入被按照如下的方法進(jìn)行組合每一個(gè)信道處理器307(j,k)具有7個(gè)I/O管腳CPP(0…6),這樣就有28個(gè)串I/O管腳1301。串I/O管腳1301(0)是信道處理器I/O管腳1303(0,0),CLP 1301(2)是CPP 1303(0,1),等等,直到CLP 1301(27)是CPP 1303(3,6)。這些管腳這樣被互聯(lián),以使在CLP 1301(0),CLP 1301(7),CLP1301(14)和CLP 1301(21)中的任何一個(gè)上的輸入可以同時(shí)被所有的CPP 1303(0,0),CPP 1303(1,0),CPP 1303(2,0),和CPP1303(3,0)所接收。通過信元/幀組合路徑1223來組合輸出,如圖12所顯示的。如這里所顯示的,從每一個(gè)TxSDP 425(j,i)來的輸出1441,1223被連接到這個(gè)串中其它TxSDP 427中每一個(gè)的復(fù)用器1208,并且這樣,一給定TxSDP 425(j,i)可以接收在這個(gè)串的其它TxSDP 427中任何一個(gè)的大FIFO 2122輸出的輸出,并且能夠處理在大FIFO 1023后面設(shè)備中的輸出。一給定RxSDP 421或者TxSDP 427如何與其串相關(guān)是通過設(shè)置SDP模式627中的比特來決定的。
每一個(gè)信道處理器307進(jìn)一步具有允許信道處理器307選擇11個(gè)時(shí)鐘輸入中的一個(gè)的一個(gè)時(shí)鐘復(fù)用器1307。時(shí)鐘輸入中的8個(gè),外部全局時(shí)鐘輸入1309(0…7)是數(shù)字信道處理器IC 203的外部時(shí)鐘;兩個(gè)時(shí)鐘輸入,CPGLC 1311是被一個(gè)信道處理器所恢復(fù)的全局時(shí)鐘輸入并且被提供到其它信道處理器,并且其中的一個(gè)輸入,局部時(shí)鐘1313,作為數(shù)字信道處理器IC 203的本地時(shí)鐘。
通過3組令牌環(huán)來協(xié)調(diào)一個(gè)信道處理器串的處理TxSDP令牌環(huán)1225協(xié)調(diào)從這個(gè)串的TxSDP 427中的TxByte處理器1213的輸出。僅具有令牌的這個(gè)TxSDP 427可以輸出到大FIFO 1211。如圖10中所顯示的,RxSDP 421中的哪一個(gè)設(shè)備進(jìn)行提供是由3個(gè)令牌環(huán)決定的,環(huán)1027是用于Rx比特處理器1005,環(huán)1017是用于Rx同步處理器1017,和環(huán)1028是用于Rx字節(jié)處理器1013。RxSDP 421中具有一個(gè)令牌環(huán)的、并且被使能的一個(gè)設(shè)備僅當(dāng)它具有這個(gè)令牌時(shí)才提供輸出。使用哪一個(gè)令牌環(huán)是與RxSDP 421中的哪一個(gè)設(shè)備被使能相關(guān)的。通過TxSDP和RxSDP所執(zhí)行的微代碼,環(huán)中用于RxSDP 421和TxSDP 427的令牌被傳送和測試。信道處理器令牌環(huán)1315控制組合中信道處理器對全局總線319的寫入訪問。僅目前具有環(huán)1315的令牌的這個(gè)信道處理器能夠?qū)θ挚偩€319進(jìn)行寫入操作。信道處理器令牌環(huán)1315通過串中信道處理器所共享的串存儲(chǔ)器503中的信號標(biāo)記來實(shí)現(xiàn)。
通過如圖14所顯示的,一個(gè)串中的局部和共享存儲(chǔ)器結(jié)構(gòu)來進(jìn)一步支持組合。這個(gè)結(jié)構(gòu)的結(jié)果是串存儲(chǔ)器503。串存儲(chǔ)器503包括用于串309(j)中信道處理器(0…3)中每一個(gè)信道處理器的信道處理器局部存儲(chǔ)器503。每一個(gè)信道處理器存儲(chǔ)器503(j,i)包括用于串行數(shù)據(jù)處理器的信道處理器307(j,i)存儲(chǔ)器1403,總線控制存儲(chǔ)器1405,用于CPRC 401的存儲(chǔ)器1407,和部分指令存儲(chǔ)器403。這個(gè)串中的每一個(gè)信道處理器307能夠經(jīng)過串路徑439訪問這個(gè)串中其它信道處理器中每一個(gè)中的DMEM 405。對另一個(gè)信道處理器中的DMEM 405進(jìn)行訪問有一個(gè)周期的延遲。當(dāng)通信處理器203被初始化時(shí),這個(gè)指令存儲(chǔ)器可以被配置,以使這個(gè)指令存儲(chǔ)器可以作為共享IMEM 1409在所有4個(gè)信道處理器之間進(jìn)行共享,或者可以分割給所有4個(gè)信道處理器(IMEM 403)。當(dāng)這個(gè)指令存儲(chǔ)器被配置為共享存儲(chǔ)器IMEM1409時(shí),這個(gè)串中4個(gè)信道處理器中的每一個(gè)能夠以一個(gè)固定的環(huán)繞順序,每周期一次地對共享IMEM 1409進(jìn)行給定的訪問。共享IMEM403允許一個(gè)信道處理器或者其一個(gè)串的編程者可以在信道處理器所需的較大程序和獨(dú)立信道處理器具有更大的靈活性之間進(jìn)行折衷。
組合信道處理器的操作示例圖26和27當(dāng)組合信道處理器在處理千兆以太網(wǎng)時(shí),這個(gè)接收器是有4個(gè)信道處理器的一個(gè)串309(i),這個(gè)發(fā)送器是有4個(gè)信道處理器的另一個(gè)串309(j)。圖26顯示了RxSDP 421(i,0…3)如何被配置,圖27顯示了TxSDP 427(j,0…3)如何被配置。兩個(gè)串309(i)和串309(j)被這樣配置,以使這個(gè)發(fā)送器中一個(gè)信道處理器中的接收時(shí)鐘是這兩個(gè)串的主接收時(shí)鐘。這個(gè)發(fā)送串中的所有信道處理器均選擇外部全局時(shí)鐘1309中的信號作為用于千兆以太網(wǎng)的時(shí)鐘。通過串存儲(chǔ)器503中的信號標(biāo)記來實(shí)現(xiàn)這個(gè)串的CP 307中CPRC 401之間的同步。RxSDP組合圖26如圖26所顯示的,每一個(gè)RxSDP被這樣配置,以使不是解碼器1001,Rx比特處理器1005,和Rx字節(jié)處理器1013的處理器被旁路。解碼器1001向CPRC 401提供一個(gè)3-比特同步丟失的輸出2603。Rx比特處理器1005對輸入的接收是被令牌總線1027所控制的,并且Rx字節(jié)處理器1013的輸出是被令牌總線1028所控制的。這樣,僅當(dāng)Rx比特處理器具有這個(gè)令牌時(shí),Rx比特處理器才將它對小FIFO 1003的內(nèi)容進(jìn)行處理的結(jié)果輸出到大FIFO 1011,類似地,僅當(dāng)Rx字節(jié)處理器1013具有這個(gè)令牌時(shí),Rx字節(jié)處理器1013才輸出它對大FIFO1011的內(nèi)容進(jìn)行處理的結(jié)果。
在這個(gè)優(yōu)選實(shí)施方式中,每一個(gè)信道處理器接收一幀千兆以太網(wǎng)的數(shù)據(jù),當(dāng)它具有這個(gè)令牌時(shí),并且當(dāng)它接收到這個(gè)幀時(shí),它將這個(gè)令牌傳遞到這個(gè)串中的下一個(gè)信道處理器,并且處理它剛才所接收的幀。如已經(jīng)描述的,處理這個(gè)數(shù)據(jù)的一個(gè)結(jié)果是關(guān)于這個(gè)數(shù)據(jù)的一個(gè)描述符。這個(gè)信道處理器經(jīng)過全局總線319將一個(gè)排隊(duì)命令寫入到隊(duì)列管理引擎305中的其郵箱511中,并且隊(duì)列管理引擎305通過將這個(gè)描述符進(jìn)行排隊(duì)來對這個(gè)命令作出響應(yīng)。最后,令牌被實(shí)現(xiàn)為共享存儲(chǔ)器中的信號標(biāo)記,并且被用于管理接收串的成員對全局總線的訪問,以使僅當(dāng)這個(gè)接收串中的一給定信道處理器具有這個(gè)令牌時(shí),它才能夠向全局總線319進(jìn)行寫入。
TxSDP組合圖27圖27顯示了在輸出串中的TxSDP 427(j,0…3)如何被建立的。如從圖中可以看出的,TxSDP 427(j,0…3)僅被使能的部分是Tx字節(jié)處理器1213,大FIFO 1223,和組合路徑1223。輸出流中的剩余處理是其中Tx比特處理器1205和編碼器1201和Tx字節(jié)處理器1213被使能的TxSDP 427(j,0)所完成的。當(dāng)一給定TxSDP 427(j,k)在令牌總線1225上具有令牌時(shí),其Tx字節(jié)處理器1213經(jīng)過大FIFO和組合路徑1223向TxSDP 427(j,0)輸出數(shù)據(jù),然后,TxSDP 427(j,0)在復(fù)用器128中選擇合適的輸入,并且在復(fù)用器1208后面的、被使能的處理器中處理這個(gè)輸入。
在配置2701中,這個(gè)串中的每一個(gè)信道處理器307反過來輸出一個(gè)千兆以太網(wǎng)幀。如已經(jīng)描述的,一個(gè)信道處理器307通過向QME 305發(fā)送一個(gè)出列命令來獲得關(guān)于需要被發(fā)送的這個(gè)幀的協(xié)議數(shù)據(jù)單元的一個(gè)描述符,來開始進(jìn)行一個(gè)傳輸。CP令牌環(huán)1315被用于確保,這個(gè)發(fā)送串中的信道處理器以正確的順序獲得了這個(gè)描述符。僅當(dāng)這個(gè)發(fā)送串中的一個(gè)信道處理器具有CP令牌環(huán)1315中的令牌時(shí),這個(gè)信道處理器才可以訪問全局總線319,來向隊(duì)列管理引擎305提供一個(gè)出列命令。一旦一個(gè)信道處理器具有關(guān)于需要被輸出的數(shù)據(jù)的描述符時(shí),它可以在其Tx字節(jié)處理器1213中對這個(gè)數(shù)據(jù)開始進(jìn)行處理。僅當(dāng)這個(gè)Tx字節(jié)處理器1213具有令牌環(huán)1305所提供的令牌時(shí),這個(gè)數(shù)據(jù)才可以被從Tx字節(jié)處理器1213輸出。從Tx字節(jié)處理器1213來的輸出經(jīng)過組合路徑1223被發(fā)送到TxSDP(j,0),在TxSDP(j,0)中,從Tx字節(jié)處理器1213來的輸出被輸出。另外,這個(gè)結(jié)構(gòu)允許這個(gè)串中一給定信道處理器處理需要被輸出的這個(gè)幀,而這個(gè)發(fā)送串中的其它信道處理器正在輸出它們的幀。
OC-12c的串基本上按照上面所描述的來進(jìn)行工作,除了有4個(gè)信道處理器的一個(gè)串中的兩個(gè)信道處理器被配置成用于進(jìn)行接收,而另外兩個(gè)信道處理器被配置成用于進(jìn)行發(fā)送。令牌環(huán)被使用,如上面所描述的,除了當(dāng)OC-12c被用于發(fā)送ATM信元時(shí),令牌環(huán)11017控制接收信道處理器中的接收同步處理器1009。
執(zhí)行處理器(XP)313的細(xì)節(jié)圖15XP 313是實(shí)現(xiàn)了MIPS IV指令集的一個(gè)通用CPU。它執(zhí)行數(shù)字通信處理器203中的下述功能§復(fù)位DCP 203并且對DCP 203進(jìn)行初始化;§將程序載入到信道處理器307和構(gòu)造處理器303中,并且設(shè)置參數(shù)以進(jìn)行操作;§建立和維護(hù)表搜尋引擎301所使用的翻譯表209,并且設(shè)置表搜尋引擎301中的寄存器;§處理異常;§運(yùn)行DCP 203的實(shí)時(shí)操作系統(tǒng);和§當(dāng)有主機(jī)227出現(xiàn)時(shí),與主機(jī)227進(jìn)行交互通信。
與主機(jī)227進(jìn)行的交互通信包括向主機(jī)227提供在全局地址空間321中的一個(gè)可變大小的窗口,并且也可以包括處理XP313從主機(jī)227接收或者向主機(jī)227發(fā)送的包。
圖15是XP 313的一個(gè)框圖。XP 313具有與一個(gè)信道處理器307相同的很多部件。與這些信道處理器類似,XP 313連接到環(huán)型總線311,負(fù)荷總線313,和全局總線319?;咎幚聿考桥cCPRC 401類似的XP RISC核心處理器1501。有到環(huán)型總線311,兩條局部存儲(chǔ)器1507和1508的一個(gè)接口1515,到負(fù)荷總線317的一個(gè)接口1511,和到全局總線319的一個(gè)接口1513。兩個(gè)DMEM 1507和DMEM 1508均是可以經(jīng)過負(fù)荷總線接口1511被訪問的,并且在負(fù)荷總線315上實(shí)際上是獨(dú)立的節(jié)點(diǎn)。僅DMEM 1507是可以經(jīng)過全局總線接口1513被訪問的。在信道處理器中沒有而XP 313中有的接口包括通用目的I/O接口1517,PROM接口1525,和PCI接口1523。指令存儲(chǔ)器1503具有3個(gè)部件可載入指令存儲(chǔ)器1503,指令只讀存儲(chǔ)器1504,和指令存儲(chǔ)器加載器1506,指令存儲(chǔ)器加載器1506包括由XPRC 1501執(zhí)行來從DRAM 229載入IMEM 1503的程序。XP RISC核心1501所執(zhí)行的代碼和在執(zhí)行這個(gè)代碼中所使用的數(shù)據(jù)被保存在SDRAM 229中,并且經(jīng)過DMA被從SDRAM 229傳送到DMEM 1507,DMEM1508,和IMEM 1503,如XP RISC核心1501所需要的。與信道處理器307類似,XP 313能夠訪問全局地址空間321。XP/CP配置寄存器1517是XP 313中全局地址空間321的一部分。
執(zhí)行處理器313所執(zhí)行功能的細(xì)節(jié)執(zhí)行處理器313通過向每一個(gè)信道處理器307發(fā)送一個(gè)復(fù)位信號,來對在數(shù)字通信處理器203中所接收的一個(gè)芯片復(fù)位信號作出響應(yīng)。在這以后,XP 313開始執(zhí)行初始化代碼。這個(gè)初始化代碼可能在前面已經(jīng)經(jīng)過PCI接口1523和全局總線317被載入到SDRAM 229中,或者,它可能已經(jīng)被包括在連接到PROM接口1521的一個(gè)可選外部PROM中。這個(gè)初始化代碼載入每一個(gè)信道處理器的IMEM 403,載入一個(gè)串的共享IMEM 149,載入RxSDP 421或者TxSDP 427所執(zhí)行的程序,并且將配置信息載入到全局地址空間321內(nèi)的寄存器中。
一旦已經(jīng)對數(shù)字通信處理器203進(jìn)行了初始化,XP 313就執(zhí)行用于數(shù)字通信處理器203的一個(gè)實(shí)時(shí)操作系統(tǒng),支持網(wǎng)絡(luò)監(jiān)視協(xié)議,并且處理信道處理器所發(fā)起的異常例程。XP 313進(jìn)一步使用其對全局地址空間321的訪問來管理信道處理器,構(gòu)造處理器303,隊(duì)列管理引擎305,和緩沖器管理引擎315。它使用這個(gè)到環(huán)型總線311的接口來管理表搜尋引擎301。一旦這個(gè)管理功能在翻譯表209中插入和刪除翻譯表表目211;另一個(gè)正在管理統(tǒng)計(jì)表。管理翻譯表209和緩沖器管理引擎315的能力給予了XP 313能力來配置在DCP 203中輸入和輸出端口之間的關(guān)系。
當(dāng)有一個(gè)主機(jī)227時(shí),XP 313將主機(jī)的可見性給到DCP 203的全局地址空間中,并且能夠?yàn)樗x取被TLE 301所管理的表。XP 313可以進(jìn)一步用作對從主機(jī)226接收的、或者發(fā)送到主機(jī)226的包的一個(gè)包收發(fā)器。例如,主機(jī)227可以是一個(gè)互聯(lián)網(wǎng)協(xié)議節(jié)點(diǎn),所以,可以接收或者發(fā)送互聯(lián)網(wǎng)包。作為一個(gè)包收發(fā)器,XP 313的工作方式基本上與一個(gè)信道處理器的工作方式相同,除了其I/O接口是一個(gè)PCI總線。
構(gòu)造處理器303圖16-20如圖3中所顯示的,構(gòu)造處理器(FP)303管理在一個(gè)數(shù)字通信處理器203和一個(gè)交換構(gòu)造222之間的接口。交換構(gòu)造222被用于在一些交換設(shè)備,例如通信處理器203之間進(jìn)行通信。圖19在1901顯示了一些DCP 203(1…x)如何被連接的,每一個(gè)DCP 203通過其FP303(i)連接到交換構(gòu)造222。在屬于一個(gè)DCP 203(i)的一個(gè)串行輸入204(i,j)上所接收的包可以經(jīng)過FP 303(i)和交換構(gòu)造222被路由到另一個(gè)DCP(k),在這里,它們在FP 303(k)中被接收并且在一個(gè)串行輸出206(k,l)上被輸出。
數(shù)據(jù)作為構(gòu)造幀通過交換構(gòu)造222。一個(gè)構(gòu)造幀的確切形式將隨著交換構(gòu)造結(jié)構(gòu)的不同而不同,但是構(gòu)造幀一般具有如圖18所顯示的部分§構(gòu)造頭1803,包括交換構(gòu)造222使用來進(jìn)行路由并且在交換構(gòu)造222內(nèi)進(jìn)行流控制的信息;§幀頭1805,包括將構(gòu)造幀1801輸入到交換構(gòu)造222的源設(shè)備向從交換構(gòu)造222接收幀1801的目的設(shè)備所提供的信息;和§負(fù)荷1807,是在從網(wǎng)絡(luò)中源設(shè)備內(nèi)所接收的、并且需要被目的設(shè)備輸出到這個(gè)網(wǎng)絡(luò)的負(fù)荷。
如下面將更詳細(xì)描述的,構(gòu)造處理器303可以被編程為處理不同類型的構(gòu)造幀。在一個(gè)優(yōu)選的環(huán)境中,構(gòu)造處理器303可以被編程為處理具有一固定長度(FL 1809)的幀。這個(gè)固定的長度可以在32字節(jié)到128字節(jié)之間。
從前面的討論中可以很清楚地看出,一個(gè)構(gòu)造處理器303基本上具有與一個(gè)信道處理器307的功能相同的功能,除了它從交換構(gòu)造222而不是串行端口接收輸入,并且將輸出提供到交換構(gòu)造222而不是串行端口外。這個(gè)差異具有重要的影響。首先,交換構(gòu)造222接收并行輸入,并且提供并行輸出,而不是串行輸入和串行輸出。輸入或者輸出的寬度取決于交換構(gòu)造;在一個(gè)優(yōu)選的實(shí)施方式中,構(gòu)造處理器303可以被編程為每個(gè)時(shí)鐘周期輸出寬度是8,16,或者32比特的數(shù)據(jù)。
第二,構(gòu)造處理器303必須以比信道處理器307的速度高得多的速率來處理數(shù)據(jù)。這樣做的一個(gè)原因是輸入和輸出是并行的,而不是串行的;另一個(gè)原因是交換構(gòu)造222是與其它設(shè)備進(jìn)行共享的,并且一個(gè)構(gòu)造處理器303從交換構(gòu)造222接收數(shù)據(jù)并且向交換構(gòu)造222提供數(shù)據(jù)的速度影響所有這樣設(shè)備的速度和吞吐率。為了實(shí)現(xiàn)操作的必要速度,構(gòu)造處理器303被實(shí)現(xiàn)為一對有限狀態(tài)機(jī)。在一個(gè)優(yōu)選實(shí)施方式中的這個(gè)有限狀態(tài)機(jī)與具有下述特性的構(gòu)造幀1801一起進(jìn)行工作§這個(gè)幀具有一預(yù)定長度;§這個(gè)數(shù)據(jù)的前面是一固定長度的構(gòu)造頭1803;§這個(gè)交換構(gòu)造通過構(gòu)造頭中的一個(gè)目的地比特掩碼來實(shí)現(xiàn)多播(同時(shí)將一個(gè)包路由到多于1個(gè)的目的地);§可以通過一個(gè)簡單的狀態(tài)機(jī)來從這個(gè)構(gòu)造頭中提取擁塞信息;和§一系列相關(guān)構(gòu)造幀1801中第一構(gòu)造幀1801的關(guān)系是確定的。
構(gòu)造處理器303的細(xì)節(jié)圖16圖16是構(gòu)造處理器303的一個(gè)框圖;總的說來它與圖4的信道處理器類似,這一點(diǎn)將很快就會(huì)清楚。與一個(gè)信道處理器307類似,構(gòu)造處理器303被連接到負(fù)荷總線317,全局總線319,和環(huán)型總線311;這樣,它可以向SDRAM 229提供協(xié)議數(shù)據(jù)單元,并且從SDRAM 229接收協(xié)議數(shù)據(jù)單元,可以訪問全局地址空間321,并且可以向表搜尋引擎301提供消息并且從表搜尋引擎301接收消息。這里有3個(gè)主要的差異§Rx構(gòu)造處理器1617和Tx構(gòu)造處理器1621通過32-比特總線1619和1623被連接到交換構(gòu)造222;§交換構(gòu)造控制引擎1601不是一個(gè)完全可編程的RISC處理器,而是兩個(gè)可以進(jìn)行參數(shù)設(shè)置的狀態(tài)機(jī)Rx交換構(gòu)造控制引擎1604,用于處理在構(gòu)造處理器303中所接收的幀1801;和Tx交換構(gòu)造控制引擎1602,用于處理需要被從構(gòu)造處理器303輸出的幀1801;和§交換構(gòu)造控制引擎1601直接連接1625和1627到隊(duì)列管理引擎305,由此實(shí)現(xiàn)對隊(duì)列管理引擎305的訪問,對隊(duì)列管理引擎305的訪問隨時(shí)間的變化比經(jīng)過全局總線319來進(jìn)行訪問的變化少。
構(gòu)造處理器303的操作一般與一個(gè)信道處理器307的操作類似。取決于交換構(gòu)造222,構(gòu)造幀1801在Rx構(gòu)造數(shù)據(jù)處理器1617中被以8,16,或者32-比特塊來進(jìn)行接收。Rx構(gòu)造數(shù)據(jù)處理器1617將頭1803和1805與負(fù)荷1807區(qū)分開。頭中的某些信息被發(fā)送到提取空間1613,在提取空間1613中,這些信息可以被Rx交換構(gòu)造控制引擎1604所使用;Rx構(gòu)造數(shù)據(jù)處理器1617使用其它信息來產(chǎn)生TLE301的一個(gè)消息;這個(gè)消息被經(jīng)過環(huán)型總線接口1611和環(huán)型總線311發(fā)送到TLE301。協(xié)議數(shù)據(jù)單元經(jīng)過復(fù)用器1605,DMEM 1603,和負(fù)荷總線317被DMA傳送到SDRAM 229中的一個(gè)緩沖器231(i)。Rx交換構(gòu)造控制引擎1604響應(yīng)Rx構(gòu)造數(shù)據(jù)處理器1617所發(fā)送的環(huán)型總線消息,使用緩沖器231(i)的緩沖器標(biāo)記233,提取空間1513中的頭信息,和從TLE301所接收的信息來產(chǎn)生這個(gè)協(xié)議數(shù)據(jù)單元的一個(gè)描述符217;使用到隊(duì)列管理引擎305的專用連接1625,交換構(gòu)造控制引擎1601對這個(gè)描述符執(zhí)行一個(gè)排隊(duì)操作。
Tx交換構(gòu)造控制引擎1602執(zhí)行發(fā)送處理。Tx交換構(gòu)造控制引擎1602從隊(duì)列215中讀取描述符,這個(gè)隊(duì)列215是隊(duì)列管理引擎305維持的指定交換構(gòu)造222可以達(dá)到的目的地的描述符217的隊(duì)列。構(gòu)造處理器303從這個(gè)隊(duì)列的頭中讀取描述符。對每一個(gè)描述符,構(gòu)造處理器303使用在描述符中的信息來建立融合空間1615,使融合空間1615具有產(chǎn)生構(gòu)造幀1801的頭1803和1805所需要的信息,其中構(gòu)造幀的數(shù)據(jù)由描述符的緩沖器標(biāo)記233所規(guī)定,并且構(gòu)造處理器303使用描述符的緩沖器標(biāo)記233來發(fā)起從緩沖器存儲(chǔ)器229經(jīng)過負(fù)荷總線317,DMEM 1603和復(fù)用器1605到Tx構(gòu)造數(shù)據(jù)處理器1621的DMA傳送,然后,Tx構(gòu)造數(shù)據(jù)處理器1621使用在融合空間1615中的信息來產(chǎn)生頭1803和1805,并且使用被DMA傳送的協(xié)議數(shù)據(jù)單元來產(chǎn)生負(fù)荷。當(dāng)Tx構(gòu)造數(shù)據(jù)處理器1621產(chǎn)生構(gòu)造幀1801時(shí),Tx構(gòu)造數(shù)據(jù)處理器1621經(jīng)過總線1623以8,16,或者32-比特塊來將構(gòu)造幀1801輸出到交換構(gòu)造222。
Rx構(gòu)造數(shù)據(jù)處理器1617和Tx構(gòu)造數(shù)據(jù)處理器1621的細(xì)節(jié)圖17圖17是Rx構(gòu)造數(shù)據(jù)處理器1717和Tx構(gòu)造數(shù)據(jù)處理器1621的一個(gè)細(xì)節(jié)框圖。從Rx構(gòu)造數(shù)據(jù)處理器1717開始,Rx構(gòu)造數(shù)據(jù)處理器1717包括連接到輸入數(shù)據(jù)總線1619的一個(gè)輸入FIFO 1708,一個(gè)構(gòu)造頭解釋器1707,一個(gè)頭-負(fù)荷分離器1703,一個(gè)負(fù)荷FIFO 1705,和一個(gè)頭部提取器和解釋器1701。負(fù)荷FIFO 1705經(jīng)過總線1616被連接到復(fù)用器1605,并且頭部提取器和解釋器1701被路徑1614連接到提取空間1613,經(jīng)過路徑1616被連接到環(huán)型總線接口1611。部件1701,1703,和1707是用與在RxSDP 421和TxSDP 427中所使用的微序列器類型相同的可編程微序列器來實(shí)現(xiàn)的。
一般,Rx構(gòu)造數(shù)據(jù)處理器1617的操作與RxSDP 421的操作類似,除了沒有串行-并行數(shù)據(jù)轉(zhuǎn)換。從交換構(gòu)造222所接收的一個(gè)構(gòu)造幀1801的字節(jié)首先被提供到FIFO 1708,FIFO 1708允許構(gòu)造處理器303和交換構(gòu)造222運(yùn)行的時(shí)鐘速率可以不同。交換構(gòu)造222寫入到FIFO1708的末尾,而交換構(gòu)造頭解釋器1707從FIFO 1708的頭部中進(jìn)行讀取。交換構(gòu)造頭解釋器1707讀取構(gòu)造幀頭1803,并且將構(gòu)造幀頭1803的被選擇部件輸出到提取空間1613。處理的下一階段是頭部-負(fù)荷分離器1703,頭部-負(fù)荷分離器1703將幀頭1808從負(fù)荷1807中區(qū)分開,并且將這個(gè)負(fù)荷發(fā)送到FIFO 1705,從FIFO 1705,這個(gè)負(fù)荷被DMA傳送到緩沖器存儲(chǔ)器229。FIFO 1705是足夠地大,以能夠保存這個(gè)負(fù)荷,直到能夠?qū)MEM 1603進(jìn)行DMA訪問為止。然后,幀頭部1808被提供到頭部提取器和解釋器1701,頭部提取器和解釋器1701對這個(gè)頭部進(jìn)行解釋,并且將這個(gè)頭部的信息輸出到提取空間1613和/或者環(huán)型總線接口1611。
Tx構(gòu)造數(shù)據(jù)處理器1621有3個(gè)可編程的部件和兩個(gè)FIFO。與Rx構(gòu)造數(shù)據(jù)處理器1617相同,可編程的部件是用微序列器實(shí)現(xiàn)的??删幊滩考^產(chǎn)生器1709,它使用交換構(gòu)造控制引擎1601放置在融合空間1615中的信息來產(chǎn)生幀頭1805,頭和負(fù)荷融合1711,它融合頭1805和經(jīng)過路徑1620被從緩沖器存儲(chǔ)器229DMA傳送來的負(fù)荷1807,和構(gòu)造幀頭產(chǎn)生器1715,它在幀1801被輸出到交換構(gòu)造222以前產(chǎn)生構(gòu)造幀頭1803并且將它添加到幀1801上。FIFO 1717允許構(gòu)造處理器303和交換構(gòu)造222運(yùn)行的時(shí)鐘速率可以不同,并且FIFO1717提供了處理對DMEM 1603進(jìn)行訪問時(shí)的延遲所需要的靈活性。
使用DCP 203的交換系統(tǒng)的結(jié)構(gòu)圖19和20構(gòu)造處理器303允許一個(gè)DCP 203能夠很容易地與能夠發(fā)送和接收符合上面所提出限制的幀1801的任何交換部件進(jìn)行交互式通信。圖19和20顯示了這很多種可能結(jié)構(gòu)中的3個(gè)結(jié)構(gòu)。結(jié)構(gòu)1901,其中一些DCP共享前面已經(jīng)詳細(xì)討論的一個(gè)交換構(gòu)造222;在結(jié)構(gòu)1905中,沒有獨(dú)立的交換構(gòu)造;作為代替,交換是通過經(jīng)過它們的構(gòu)造處理器303將兩個(gè)DCP 203互相連接而形成的。這樣一個(gè)系統(tǒng)可以通過將幾個(gè)DCP 203的構(gòu)造處理器連接到一個(gè)總線,并且通過提供一個(gè)令牌環(huán)或者某些其它機(jī)制來控制發(fā)送DCP 203對總線的訪問,而被擴(kuò)展。在結(jié)構(gòu)2001中,連接到交換構(gòu)造222的不僅是一些DCP 203,而且有DCP203不處理的、用于線路接口2003的非-DCP邏輯2002。這樣一個(gè)結(jié)構(gòu)2001可以被用于將前面已有設(shè)備集成到一個(gè)采用DCP 203的交換系統(tǒng)中。
表搜尋引擎301和翻譯表存儲(chǔ)器207的細(xì)節(jié)圖21-24如前面已經(jīng)指出的,表搜尋引擎301對在環(huán)型總線311上從信道處理器307,構(gòu)造處理器303,和執(zhí)行處理器313所接收的消息作出響應(yīng),在翻譯表存儲(chǔ)器207中的翻譯表209上執(zhí)行表搜尋操作,并且將帶這個(gè)操作結(jié)果的環(huán)型總線消息返回到從其中接收消息的設(shè)備。
圖21是翻譯表存儲(chǔ)器207的一個(gè)當(dāng)前優(yōu)選實(shí)施方式的一個(gè)細(xì)節(jié)。使用64-比特寬的流水線突發(fā)靜態(tài)RAM模塊來實(shí)現(xiàn)翻譯表存儲(chǔ)器207。模塊207被劃分為8個(gè)表池2101(0…7)。這個(gè)表池的尺寸可以是不同的,并且可以被劃分為不同尺寸的表項(xiàng),但是一給定表池中所有的表項(xiàng)的尺寸必須相同。圖21中顯示了兩個(gè)這樣的表項(xiàng)鏈接表項(xiàng)2111和數(shù)據(jù)表項(xiàng)2119。一個(gè)表池2101進(jìn)一步被劃分為由連續(xù)表項(xiàng)組成的部件表2106。圖21中顯示了這樣的2個(gè)部件表表池2101(1)中的鏈接表2107和表池2107(7)中的數(shù)據(jù)表2117。每一個(gè)表項(xiàng)均具有它所屬于的部件表2106中的一個(gè)索引;這樣,LTE 2111具有一個(gè)鏈接索引2109,并且DTE 2119具有一個(gè)數(shù)據(jù)索引2114。一個(gè)部件表2106中的一個(gè)項(xiàng)是通過將其索引乘以表池中項(xiàng)的尺寸并且將這個(gè)乘積加到其部件表2106的開始位置而被定位的。
一般有兩個(gè)類型的部件表2106鏈接表和數(shù)據(jù)表。這兩個(gè)類型的部件表2106均使用與數(shù)據(jù)表中數(shù)據(jù)相關(guān)的關(guān)鍵字。例如,一個(gè)翻譯表209可以將一個(gè)ATM包頭中的VPI/VCI對翻譯成將接收ATM包的描述符的隊(duì)列存儲(chǔ)器213中的隊(duì)列215的號碼。這個(gè)VPI/VCI對是關(guān)鍵字,并且通過這個(gè)關(guān)鍵字被定位的數(shù)據(jù)表項(xiàng)2119包括這個(gè)隊(duì)列的號碼。一個(gè)搜尋算法決定了這個(gè)關(guān)鍵字在翻譯表中是如何被使用的。一個(gè)鏈接表包括其它索引表項(xiàng)或者數(shù)據(jù)表項(xiàng)的索引;它被使用,當(dāng)關(guān)鍵字被進(jìn)行翻譯來對數(shù)據(jù)表項(xiàng)2119進(jìn)行定位時(shí)。如從一個(gè)鏈接表項(xiàng)被用于對其它項(xiàng)進(jìn)行定位這樣一個(gè)事實(shí)可以期望的,鏈接表2111包括控制信息2113和鏈接信息2115。使用控制信息2113,將關(guān)鍵字進(jìn)行翻譯來確定跟隨鏈接信息2115中的哪一個(gè)索引??刂菩畔?113和鏈接信息2115的準(zhǔn)確特點(diǎn)由鏈接表2107所屬于的翻譯表2109的搜尋算法來決定。數(shù)據(jù)表項(xiàng)2119包括關(guān)鍵字2120和數(shù)據(jù)2121。當(dāng)這個(gè)被翻譯的關(guān)鍵字與關(guān)鍵字2120匹配時(shí),然后項(xiàng)2119中的數(shù)據(jù)2121包括這個(gè)關(guān)鍵字的翻譯,例如,VPI/VCI對的隊(duì)列號碼。
在一個(gè)優(yōu)選實(shí)施方式中,一個(gè)翻譯表209被一個(gè)搜尋算法號碼2125所決定。這個(gè)搜尋算法號碼標(biāo)識一個(gè)數(shù)據(jù)結(jié)構(gòu)2124,這個(gè)數(shù)據(jù)結(jié)構(gòu)2124包括規(guī)定翻譯 表部件表2106的虛擬表號碼2127和規(guī)定翻譯表209將使用的搜尋算法類型的一個(gè)算法標(biāo)識2129。這個(gè)虛擬表號碼通過一個(gè)號碼來標(biāo)識一個(gè)部件表2106,TLE301將這個(gè)號碼分解為指向這個(gè)部件表的一個(gè)表指針2105。與目前信道處理器和構(gòu)造處理器所使用的相比,使用虛擬表號碼可以 在表存儲(chǔ)器207中保存更多的部件表2106,并且允許簡單地通過改變這個(gè)虛擬表號碼所代表的表指針2105就可以將一個(gè)部件表2106切換到另一個(gè)部件表2106。例如,當(dāng)信道處理器和構(gòu)造處理器使用一給定的部件表時(shí),執(zhí)行處理器313可以建立一個(gè)新的部件表,然后,簡單地通過發(fā)送帶一個(gè)writereg命令2415的一個(gè)環(huán)型總線消息來用這個(gè)新的表替代給定表,這個(gè)writereg命令2415改變TLE 301中將虛擬表號碼與表指針2105進(jìn)行相關(guān)的寄存器中的表指針2105。
一給定翻譯表209可以由多達(dá)4個(gè)部件表2106組成。其中一個(gè)部件表必須是一個(gè)數(shù)據(jù)表2117;其它的表是鏈接表2107。圖21中所顯示的翻譯表209有兩個(gè)部件表鏈接表2107和數(shù)據(jù)2117。部件表是由翻譯表描述符2124中的虛擬表號碼來標(biāo)識的。
通過一個(gè)hash算法而實(shí)現(xiàn)的一個(gè)翻譯可以用作一個(gè)翻譯表209如何被用于將一個(gè)關(guān)鍵字翻譯成數(shù)據(jù)的一個(gè)示例。hash算法是眾所周知的。hash算法所做的就是將一長比特串映射到一較短的比特串。在這個(gè)情形下,長比特串是一個(gè)關(guān)鍵字,并且較短的比特串是一個(gè)表項(xiàng)的一個(gè)索引。hash算法可以被用于翻譯表209僅包括數(shù)據(jù)表部件2117的情形。當(dāng)建立這個(gè)數(shù)據(jù)表2117時(shí),數(shù)據(jù)表項(xiàng)2119為其包括數(shù)據(jù)的一個(gè)關(guān)鍵字被進(jìn)行hash,并且這個(gè)關(guān)鍵字的數(shù)據(jù)表項(xiàng)被產(chǎn)生在這個(gè)hash算法所產(chǎn)生的索引(i)位置上,如果這是可能的話,并且否則,在索引i后面第一個(gè)可用的位置上。被hash到索引i的一個(gè)關(guān)鍵字在下面將被稱作關(guān)鍵字(i)。當(dāng)關(guān)鍵字(i)被提供給hash算法時(shí),hash算法返回?cái)?shù)據(jù)索引2114(i)。與這個(gè)關(guān)鍵字相應(yīng)的DTE 2119或者在索引2114(i),其這個(gè)情形下,就結(jié)束了搜尋,或者有一個(gè)hash碰撞,即,多于1個(gè)的關(guān)鍵字hash到相同的索引(i)。在這樣一個(gè)情形下,數(shù)據(jù)表2117可以被建立以使其關(guān)鍵字hash到相同的索引(i)的DTE具有在2114(i)后面的索引,所以這個(gè)搜尋算法在索引2114(i)開始,并且將這個(gè)關(guān)鍵字與后面的數(shù)據(jù)表項(xiàng)2119中的關(guān)鍵字2120進(jìn)行比較,直到它發(fā)現(xiàn)了其中關(guān)鍵字2120與這個(gè)關(guān)鍵字匹配的一個(gè)數(shù)據(jù)表項(xiàng),或者直到它達(dá)到數(shù)據(jù)表2117的末尾而沒有發(fā)現(xiàn)一個(gè)匹配,在這個(gè)情形下,它報(bào)告沒有找到一個(gè)匹配的。如果需要更高的速度,對其索引2114產(chǎn)生碰撞的LTE建立一個(gè)鏈接表,并且在碰撞發(fā)生后,這個(gè)索引被應(yīng)用到這個(gè)鏈接表。然后,這個(gè)鏈接表將給出與DTE中這個(gè)索引相應(yīng)的項(xiàng)的索引。
表搜尋引擎301對環(huán)型總線消息作出響應(yīng),對搜尋表209執(zhí)行搜尋和維護(hù)操作。表搜尋引擎301使用各種搜尋算法,包括hash算法,二進(jìn)制樹算法,和Patricia樹算法,來進(jìn)行搜尋。使用表項(xiàng)的搜尋和索引來實(shí)現(xiàn)表的維護(hù)。一般,規(guī)定表維護(hù)操作的消息來自執(zhí)行處理器313。
環(huán)型總線消息圖28在TLE 301和DCP203的其它部件之間的所有交互通信均是通過環(huán)型總線311上的消息來完成的;XP 313使用環(huán)型總線消息來建立和維護(hù)翻譯表209,包處理器使用環(huán)型總線消息來將需要被翻譯的項(xiàng)發(fā)送到TLE 301,并且TLE 301使用環(huán)型總線消息來返回翻譯的結(jié)果。圖28顯示了一個(gè)優(yōu)選實(shí)施方式中的環(huán)型總線消息。消息2801具有兩個(gè)主要的部件,數(shù)據(jù)2817和控制2803。數(shù)據(jù)可以是64比特的任何類型數(shù)據(jù)。當(dāng)一個(gè)環(huán)型總線消息被路由到TLE 301時(shí),數(shù)據(jù)2817包括一個(gè)TLE命令。TLE 301執(zhí)行這個(gè)命令,并且在被發(fā)送到TLE命令源的一個(gè)環(huán)型總線消息的數(shù)據(jù)2817中返回這個(gè)結(jié)果??刂?803具有下述字段§M字段2805是被硬件設(shè)置的,并且表示這個(gè)消息比64比特長,所以被包括在連續(xù)時(shí)隙的一系列消息中;§TY字段2807表示這個(gè)消息的類型;共有4個(gè)類型#沒有占據(jù)這個(gè)環(huán)型總線時(shí)隙沒有包括消息;#這個(gè)消息是一個(gè)指示;#這個(gè)消息是一個(gè)證實(shí);#這個(gè)消息是一個(gè)請求;#這個(gè)消息是一個(gè)響應(yīng)。
§LEN字段2809表示數(shù)據(jù)2817中這個(gè)消息的長度;§SEQ字段2811是可以被發(fā)送者所設(shè)置的一個(gè)序列號碼,以使可以確定響應(yīng)消息的順序;§DEST字段2813表示環(huán)型總線311上、是這個(gè)消息的目的地的設(shè)備;和§SRC字段2815,表示是源的這個(gè)設(shè)備。
指示和證實(shí)消息類型簡單地被用于確定連接到這個(gè)環(huán)型總線的設(shè)備的環(huán)型總線接口是否在工作;如果一個(gè)設(shè)備接收來自另一個(gè)設(shè)備的一個(gè)指示消息,它就向這個(gè)設(shè)備返回一個(gè)證實(shí)消息。在這個(gè)環(huán)型總線上的一個(gè)設(shè)備希望另一個(gè)設(shè)備為它執(zhí)行一個(gè)操作時(shí),它向另一個(gè)設(shè)備發(fā)送一個(gè)請求消息;當(dāng)這另一個(gè)設(shè)備已經(jīng)執(zhí)行了這個(gè)操作時(shí),它使用一個(gè)結(jié)果消息將這個(gè)所產(chǎn)生的結(jié)果發(fā)送回這個(gè)請求設(shè)備。
這樣,使用一個(gè)表搜尋,希望執(zhí)行表搜尋的信道處理器發(fā)送一個(gè)請求類型的請求消息,在這個(gè)請求消息中,這個(gè)信道處理器將自己規(guī)定為源,將TLE 301規(guī)定為目的地。數(shù)據(jù)2817包括這個(gè)操作的TLE命令,并且SEQ 2811可以被設(shè)置為允許信道處理器標(biāo)識響應(yīng)消息的一個(gè)值。TLE 301通過執(zhí)行這個(gè)消息的TLE命令,并且將這個(gè)執(zhí)行結(jié)果在一個(gè)響應(yīng)消息中發(fā)送到信道處理器,來對這個(gè)請求消息作出響應(yīng)。結(jié)果在數(shù)據(jù)2817中,TLE將自己規(guī)定為源,并且將信道處理器規(guī)定為目的地,SEQ 2811中的值與它在請求消息中的值相同。
圖24是一個(gè)表搜尋操作命令列表,當(dāng)表搜尋引擎301經(jīng)過環(huán)型總線311接收這些命令時(shí)將對這些命令作出響應(yīng)。每一個(gè)命令在這個(gè)表中具有一行;第一列規(guī)定這個(gè)命令的內(nèi)容,第二列規(guī)定其ID號碼,第三列規(guī)定它所返回的數(shù)據(jù),第四列規(guī)定這個(gè)命令的影響。使用FindR命令2409來實(shí)現(xiàn)表搜尋;剩余的命令被用于建立和維護(hù)翻譯表209,初始化表搜尋引擎301,并且測試TLE是否在進(jìn)行工作。
根據(jù)命令如何定位表中的項(xiàng)和它們對所定位的項(xiàng)執(zhí)行的操作,這些命令可以被進(jìn)行進(jìn)一步的劃分。關(guān)鍵字命令2423使用關(guān)鍵字來對項(xiàng)進(jìn)行定位§Find命令2405采用一個(gè)關(guān)鍵字和一個(gè)算法號碼作為參數(shù),使用這個(gè)翻譯表209和算法號碼所規(guī)定的搜尋算法來搜尋這個(gè)關(guān)鍵字所表示的數(shù)據(jù)表項(xiàng)2119,并且返回?cái)?shù)據(jù)項(xiàng)2119的內(nèi)容,或者返回一個(gè)錯(cuò)誤,如果沒有發(fā)現(xiàn)這個(gè)關(guān)鍵字的項(xiàng);§FindW命令2407采用關(guān)鍵字,算法號碼,需要被寫入的數(shù)據(jù),以及偏移和長度說明符作為參數(shù);它使用這個(gè)關(guān)鍵字和算法來發(fā)現(xiàn)這個(gè)關(guān)鍵字的數(shù)據(jù)項(xiàng)2119,并且將這個(gè)長度所規(guī)定的數(shù)據(jù)長度寫入到這個(gè)項(xiàng)中從這個(gè)偏移位置開始的項(xiàng)上;§FindR命令2409的參數(shù)與FindW命令2407的參數(shù)相同,但是從這個(gè)關(guān)鍵字的項(xiàng)2119中的偏移處讀取數(shù)據(jù)長度并且返回這個(gè)數(shù)據(jù)。
索引命令2421和2425使用虛擬表號碼和索引來定位部件表2106中的項(xiàng)。屬于組2421的命令從命令中所規(guī)定的項(xiàng)讀取數(shù)據(jù)并且將數(shù)據(jù)寫入到這個(gè)命令中所規(guī)定的項(xiàng);屬于組2425的命令修改命令中所規(guī)定的項(xiàng)中的數(shù)據(jù)§Write命令2401具有規(guī)定一個(gè)部件表2106的一個(gè)虛擬表號碼,規(guī)定部件表中一個(gè)項(xiàng)的一個(gè)索引,需要被寫入的數(shù)據(jù),規(guī)定需要被寫入數(shù)據(jù)部分的一個(gè)掩碼,寫入開始的偏移,需要被進(jìn)行寫入的數(shù)據(jù)長度;它按照命令所規(guī)定的來進(jìn)行數(shù)據(jù)寫入§Read命令2403具有相同的參數(shù),除了掩碼不同外;它讀取在規(guī)定表的規(guī)定項(xiàng)的規(guī)定位置處的數(shù)據(jù),并且返回這個(gè)數(shù)據(jù);§XOR命令2411使用命令中的數(shù)據(jù)對在規(guī)定表的規(guī)定項(xiàng)的規(guī)定位置處的數(shù)據(jù)執(zhí)行一個(gè)XOR操作或者一個(gè)CRC操作;在執(zhí)行CRC操作的情形下,它返回這個(gè)CRC。
§Add命令2423將命令中的數(shù)據(jù)加到在規(guī)定表的規(guī)定項(xiàng)的規(guī)定位置處的數(shù)據(jù)上。
寄存器命令2427讀取(2417)和寫入(2415)TLE 301中的寄存器;這些寄存器是用寄存器地址來規(guī)定的。這些命令被用于使用定位翻譯表,部件表2106,和搜尋算法的代碼所需要的信息來對TLE 301進(jìn)行初始化,并且被用于簡單地將上下文信息寫入到TLE 301或者從TLE 301中讀取上下文信息。
Echo命令2419簡單地將命令中的數(shù)據(jù)返回到發(fā)送者;它被用于檢查環(huán)型總線311和所連接設(shè)備的環(huán)型總線接口是否工作正確。Nop命令2420是執(zhí)行時(shí)不做任何處理的命令。
TLE 301執(zhí)行下述基本循環(huán)1從環(huán)型總線讀取一個(gè)命令;
2執(zhí)行這個(gè)命令;和3經(jīng)過這個(gè)環(huán)型總線返回結(jié)果。
在命令是對一個(gè)表進(jìn)行操作時(shí),執(zhí)行這個(gè)命令的步驟包括步驟a)決定表項(xiàng)的索引;和b)對表項(xiàng)中規(guī)定位置上的數(shù)據(jù)執(zhí)行所指示的操作。
對包括關(guān)鍵字的命令,確定表項(xiàng)索引的步驟包括步驟?。畬⑦@個(gè)關(guān)鍵字翻譯為一第一索引值;ⅱ.拾取被保存在這個(gè)索引值所規(guī)定的翻譯表項(xiàng)中的關(guān)鍵字;ⅲ.如果這個(gè)關(guān)鍵字和被拾取的關(guān)鍵字匹配,就轉(zhuǎn)到步驟V;ⅳ.如果它們不匹配,根據(jù)這個(gè)搜尋算法計(jì)算一個(gè)新的索引;轉(zhuǎn)到步驟ⅱ;和v.對被保存在這個(gè)索引值所規(guī)定的表項(xiàng)中的數(shù)據(jù)執(zhí)行操作。
圖22顯示了表搜尋引擎301的內(nèi)部結(jié)構(gòu)。被發(fā)送到表搜尋引擎301的一個(gè)環(huán)型總線消息在環(huán)型總線節(jié)點(diǎn)2201中被接收;在這個(gè)消息中的命令被命令處理器2203和表搜尋引擎301中的其它部件所處理。進(jìn)行這個(gè)處理所需要的信息被保存在寄存器存儲(chǔ)器2205中,并且這個(gè)算法所需要的程序被保存在控制存儲(chǔ)器2215中。
圖23顯示了寄存器存儲(chǔ)器2205和控制存儲(chǔ)器2215的細(xì)節(jié)。為了本發(fā)明的討論方便,寄存器存儲(chǔ)器2205中有4類感興趣的寄存器算法配置寄存器2301,表配置寄存器2311,虛擬表配置寄存器2341,和消息上下文寄存器2319。算法配置寄存器2301將命令中所使用的算法號碼與表209和控制存儲(chǔ)器215中的hash代碼2323相關(guān)。對目前被TLE 301所使用的每一個(gè)表207,均有一個(gè)算法配置寄存器(ACR)2301,并且ACR 2301(i)的索引是其算法號碼3125。圖23中顯示了一單個(gè)ACR 2301(i)。一給定ACR 2301包括組成表207的部件表的虛擬表號碼。LVT1 2325是第一索引表的虛擬表號碼;LVT22327是第二索引表的虛擬表號碼;LVT3 2329是第三索引表的虛擬表號碼;最后,DVT 2333是數(shù)據(jù)表的虛擬表號碼。HASHF#2331是在搜尋虛擬表中被使用的hash功能的號碼。
部件表配置寄存器2311描述了SRAM 207中的部件表2106。每一個(gè)部件表2106均具有一個(gè)CTCR 2311(i),并且表的CTCR 2311的索引是表的物理表號碼2343。每一個(gè)CTCR 2335表示其表的類型2335,表項(xiàng)的尺寸2337,和表在SRAM 207中的開始的偏移2339。最后,VTCR 2341描述了目前在使用的虛擬表。每一個(gè)虛擬表號碼2127有一個(gè)VTCR 2341,并且一給定虛擬表號碼的VTCR 2341(i)包括目前被VTCR 2341(i)的VT#2127所規(guī)定的部件表的物理表號碼2323。為了切換一給定VT#2127所表示的部件表,所需要的僅僅是改變VTCR 2341中與VT#2127相應(yīng)的PT#2323。
消息上下文寄存器2319包括與目前被表搜尋引擎301所處理的一個(gè)環(huán)型總線消息相關(guān)的數(shù)據(jù)。有4個(gè)這樣的消息上下文寄存器;這樣,TLE 301可以同時(shí)處理4個(gè)環(huán)型總線消息;等待消息可以被保存在輸入FIFO 2202或者被保存在環(huán)型總線311本身上。僅一個(gè)消息上下文寄存器,消息上下文寄存器2319(k)被顯示在圖23中。每一個(gè)消息上下文寄存器2319在其中包括3個(gè)類型的數(shù)據(jù)來自環(huán)型總線消息的消息信息2321,在表搜尋引擎301中處理環(huán)型總線消息期間被產(chǎn)生和使用的處理信息2327,和包括處理的目前結(jié)果的結(jié)果2329。當(dāng)完成了處理時(shí),這個(gè)結(jié)果將在一個(gè)環(huán)型總線消息中被返回給被處理的這個(gè)消息的源。消息信息2321包括命令的類型,這個(gè)命令所發(fā)送的信息,是這個(gè)環(huán)型總線消息的源的處理器,和這個(gè)消息的一個(gè)序列號。處理信息2327包括算法代碼2323中的一個(gè)程序計(jì)數(shù)器,這個(gè)搜尋將檢索的最后鏈接表項(xiàng)2111的內(nèi)容,和將被拾取的下一個(gè)鏈接表項(xiàng)2111在SRAM 207中的地址。結(jié)果2329包括從執(zhí)行這個(gè)命令而產(chǎn)生的信息。在一個(gè)FindR命令的情形下,這個(gè)結(jié)果將包括這個(gè)命令規(guī)定的、從與這個(gè)關(guān)鍵字相關(guān)的數(shù)據(jù)表項(xiàng)2119中讀取的數(shù)據(jù)或者如果沒有發(fā)現(xiàn)這個(gè)關(guān)鍵字的數(shù)據(jù)表項(xiàng)2119就是一個(gè)空值。
返回到圖22,部件2203,2207,2213,2209,2211,和2219是通過能夠訪問控制存儲(chǔ)器2215和寄存器存儲(chǔ)器2205的處理部件來實(shí)現(xiàn)的。部件2209能夠經(jīng)過SRAM存儲(chǔ)器控制器2217執(zhí)行對表存儲(chǔ)器207的讀取操作,部件2219能夠經(jīng)過SRAM存儲(chǔ)器控制器2217執(zhí)行對表存儲(chǔ)器207的讀取和閱讀操作。當(dāng)發(fā)送到TLE 301的一個(gè)消息出現(xiàn)在環(huán)型總線311時(shí),環(huán)型總線節(jié)點(diǎn)2201將這個(gè)消息放置在輸入FIFO2202的末尾;命令處理器2203讀取FIFO 2202的頭部。命令處理器2203將來自這個(gè)消息的信息保存在一組消息上下文寄存器2319(i)中。然后,這組消息上下文寄存器2319(i)被其它部件所使用,當(dāng)它們執(zhí)行這個(gè)消息的命令時(shí)。
部件的功能如下§初始的索引產(chǎn)生器2207從一組上下文寄存器2319(k)中的一個(gè)關(guān)鍵字產(chǎn)生一個(gè)部件表的一個(gè)初始索引;§地址產(chǎn)生部件2209從這個(gè)索引產(chǎn)生這個(gè)部件表項(xiàng)的地址,并且從這個(gè)部件表項(xiàng)拾取一個(gè)關(guān)鍵字;§比較和寄存器拾取部件2211拾取被保存在這組上下文寄存器2319(k)中的關(guān)鍵字;§SRAM數(shù)據(jù)寄存器2219比較這個(gè)被拾取的關(guān)鍵字和被保存的關(guān)鍵字,并且根據(jù)這個(gè)比較來判斷是否已經(jīng)發(fā)現(xiàn)了被保存關(guān)鍵字的數(shù)據(jù)表項(xiàng)2119。如果已經(jīng)發(fā)現(xiàn)了被保存關(guān)鍵字的數(shù)據(jù)表項(xiàng)2119,SRAM數(shù)據(jù)寄存器2219拾取這個(gè)數(shù)據(jù)表項(xiàng),并且將帶這個(gè)數(shù)據(jù)表項(xiàng)的內(nèi)容的一個(gè)環(huán)型總線消息發(fā)送到輸出FIFO 2221;否則,SRAM數(shù)據(jù)寄存器2219拾取這個(gè)鏈接表項(xiàng),并且將它放置在上下文寄存器2319(k)中,并且在索引產(chǎn)生2213中繼續(xù)進(jìn)行處理;§索引產(chǎn)生部件2213使用被保存的關(guān)鍵字和被拾取的鏈接表項(xiàng)來產(chǎn)生下一個(gè)表索引2111(1)的索引,并且將這個(gè)索引放置在上下文寄存器2319(k)中;然后,地址產(chǎn)生部件2219使用這個(gè)索引來產(chǎn)生下一個(gè)表項(xiàng)的地址。
用包括一個(gè)findR命令2409的一個(gè)環(huán)型總線消息作為一個(gè)示例,并且假定命令中的alg#規(guī)定了一個(gè)hash算法,一旦命令處理器2203已經(jīng)在上下文寄存器2319(k)中為這個(gè)消息建立了消息信息2321,初始的索引產(chǎn)生器2207使用從這個(gè)命令中來的關(guān)鍵字執(zhí)行這個(gè)hash算法,以獲得值I。地址產(chǎn)生2209使用I來計(jì)算數(shù)據(jù)表項(xiàng)2119(I)的地址,并且SRAM數(shù)據(jù)寄存器2219拾取項(xiàng)2119(I)。如果其關(guān)鍵字字段2120包括關(guān)鍵字,就完成了這個(gè)搜尋,并且SRAM數(shù)據(jù)寄存器2219產(chǎn)生在數(shù)據(jù)字段2121中包括數(shù)據(jù)的一個(gè)環(huán)型總線響應(yīng)消息。否則,索引產(chǎn)生2213就將DIX 2114增加1,地址產(chǎn)生2208增加下一個(gè)DTE2 119的地址,如上面所描述地,這下一個(gè)DTE 2119的地址被拾取,并且被進(jìn)行測試。以這個(gè)方法繼續(xù)進(jìn)行執(zhí)行,直到其關(guān)鍵字字段2120與關(guān)鍵字匹配的一個(gè)DTE 2119被發(fā)現(xiàn)或者已經(jīng)達(dá)到了數(shù)據(jù)表的末尾。
表搜尋引擎301的其它使用如XOR 2411和增加2413命令的出現(xiàn)可以很清楚地看出,TLE 301除了可以維護(hù)表并且在表中搜尋信息外,還可以做更多的功能。因?yàn)槊恳粋€(gè)包處理器能夠以一個(gè)固定的最大延遲來對TLE 301進(jìn)行訪問,TLE 301和翻譯表存儲(chǔ)器207一般可以被用于保存和處理與一個(gè)包處理器所正在處理的輸入包流相關(guān)的上下文信息,這樣,來克服一個(gè)包處理器僅具有數(shù)量相對較少的DMEM 405所帶來的限制。完成地址翻譯所需要的信息是這樣一個(gè)上下文信息的示例。另一個(gè)是檢測一個(gè)包的正確性所需要的信息,其中這個(gè)包正在被作為另一個(gè)包的負(fù)荷而承載。
包中的正確性檢測是通過在包末尾的一個(gè)循環(huán)冗余校驗(yàn)代碼(CRC)來實(shí)現(xiàn)的。當(dāng)產(chǎn)生這個(gè)包時(shí),就從這個(gè)包的內(nèi)容計(jì)算出CRC,當(dāng)這個(gè)包到達(dá)其目的地時(shí),就重新計(jì)算CRC并且將這個(gè)CRC與包中所包括的CRC進(jìn)行比較。如果它們是相同的,這個(gè)包無錯(cuò)誤地到達(dá)的可能性就很高;如果它們是不同的,這個(gè)包已經(jīng)被破壞的可能性是同樣地高。在后面的情形下,這個(gè)包被丟棄,并且一個(gè)消息被發(fā)送到這個(gè)發(fā)送者以請求重新發(fā)送這個(gè)包。一個(gè)SDP 420必須能夠計(jì)算一個(gè)包的CRC,以校驗(yàn)一個(gè)輸入包的CRC和向一個(gè)輸出包提供CRC。當(dāng)一個(gè)包在被接收或者輸出時(shí),有許多已知的算法可以計(jì)算飛行的CRC。
從前面可以很清楚地看出,在SDP 420中計(jì)算CRC需要與一個(gè)包相關(guān)的CRC信息在這個(gè)包通過SDP 420的整個(gè)時(shí)間期間內(nèi)均被保持。在其CRC需要被計(jì)算的包是作為傳送層包中負(fù)荷的高層包,并且承載屬于不同高層包的負(fù)荷的傳送層包在SDP 420所接收的包流和/或者從SDP 420所發(fā)送的包流中被進(jìn)行交織的情形下,這個(gè)問題就變得更復(fù)雜了。在這樣一個(gè)情形下,一個(gè)獨(dú)立的CRC計(jì)算必須對每一個(gè)高層包進(jìn)行。
在DCP IC 203中,通過使用TLE來處理和保存中間結(jié)果,解決了計(jì)算CRC的問題。當(dāng)其CRC正在被計(jì)算的一個(gè)高層包的每一個(gè)部分通過這個(gè)SDP時(shí),CPRC 401收集計(jì)算高層包的這個(gè)部分的中間CRC所需要的信息,并且向TLE 301發(fā)送帶這個(gè)信息和規(guī)定這個(gè)信息如何被應(yīng)用到這個(gè)高層包前一個(gè)中間CRC的一個(gè)命令的一個(gè)環(huán)型總線消息。當(dāng)高層包的最后一個(gè)部分通過時(shí),帶這個(gè)信息的最后一個(gè)環(huán)型總線消息被發(fā)送,并且TLE 301執(zhí)行這個(gè)命令來完成CRC計(jì)算。然后,CPRC 401發(fā)送讀取這個(gè)結(jié)果的一個(gè)讀取命令2403,并將TLE 301在這個(gè)環(huán)型總線消息中發(fā)送的、被返回的結(jié)果與這個(gè)包末尾的結(jié)果進(jìn)行比較,來確定這個(gè)包是否已經(jīng)被破壞了。
TLE 301可以被用于保存包流上下文的另一個(gè)區(qū)域是業(yè)務(wù)統(tǒng)計(jì)。這些統(tǒng)計(jì)可以響應(yīng)從包處理器來的環(huán)型總線消息在TLE 301中被累加,然后,可以被執(zhí)行處理器313所讀取,并且或者被執(zhí)行處理器313或者一個(gè)主機(jī)處理器227使用來按照DCP 203所屬網(wǎng)絡(luò)的當(dāng)前業(yè)務(wù)狀態(tài)的需要來配置DCP 203。
隊(duì)列管理引擎305的細(xì)節(jié)隊(duì)列管理引擎305按照包處理器所規(guī)定的將描述符217在隊(duì)列215中進(jìn)行排隊(duì),并且又按照包處理器所規(guī)定的從隊(duì)列中取出描述符。當(dāng)一個(gè)包處理器獨(dú)自工作時(shí),這個(gè)包處理器典型地在多于一個(gè)的隊(duì)列中對描述符進(jìn)行排隊(duì),但是僅從單個(gè)隊(duì)列中取出描述符。當(dāng)包處理器被進(jìn)行組合時(shí),所有組合包處理器一般從一單個(gè)隊(duì)列中進(jìn)行讀取。QME305進(jìn)一步提供與獨(dú)立的排隊(duì)和從隊(duì)列中進(jìn)行取出的操作相關(guān)的狀態(tài)信息和將隊(duì)列自己與包處理器相關(guān)的信息。QME 305既不讀取它進(jìn)行排隊(duì)的描述符,也不決定下面一給定包處理器將從哪一個(gè)隊(duì)列中進(jìn)行讀取。隊(duì)列被完全保存在DCP 203中,可以被保存在那里和/或者在一個(gè)外部隊(duì)列存儲(chǔ)器213中,或者可以被保存在一個(gè)外部排隊(duì)和規(guī)劃單元中被被這個(gè)外部排隊(duì)和規(guī)劃單元所管理。在后面的情形下,QME 305采用一個(gè)命令接口來將排隊(duì)命令和出列命令從包處理器傳遞到這個(gè)外部排隊(duì)和規(guī)劃單元,并且將命令的結(jié)果和狀態(tài)信息傳遞回給包處理器。在這個(gè)情形下,隊(duì)列被安排的方式當(dāng)然完全是取決于這個(gè)外部排隊(duì)和規(guī)劃單元。
這里應(yīng)指出的是,一個(gè)描述符的內(nèi)容完全被向QME 305提供描述符以進(jìn)行排隊(duì)的包處理器所決定,并且描述符的內(nèi)容被解釋的方式也完全被從隊(duì)列中取出描述符的包處理器所決定。這樣,QME 305是在包處理器之間有順序地通過消息的一個(gè)一般系統(tǒng),包處理器屬于DCP203是其中一個(gè)部件的交換系統(tǒng),并且這個(gè)一般系統(tǒng)被用于在包處理器和外部排隊(duì)和規(guī)劃單元之間傳遞信息。
包處理器的QME接口圖29圖29顯示了一個(gè)信道處理器307(i)的QME接口2901,但是其它包處理器具有相同的接口,除了構(gòu)造處理器303具有其自己到QME305的專用連接。從QME 305中的接口部分開始,QME 305的局部存儲(chǔ)器當(dāng)然是全局地址空間321的部分,并且因此可以被CP 307(i)所訪問。包括在QME 305的局部存儲(chǔ)器中的是隊(duì)列狀態(tài)信息2902。如后面將更詳細(xì)描述地,隊(duì)列狀態(tài)信息2902允許信道處理器307(i)決定它可以從QME 305中的哪一個(gè)隊(duì)列中可以取出描述符并且決定這些隊(duì)列的條件。信道處理器307(i)中的CPRC 401這樣可以訪問QSI 2901來決定下面它將從哪一個(gè)隊(duì)列中取出一個(gè)描述符。在QME 305中,對每一個(gè)包處理器均有一個(gè)隊(duì)列郵箱2903。為了進(jìn)行排隊(duì)或者從一個(gè)隊(duì)列中取出一個(gè)描述符,CP 307(i)經(jīng)過負(fù)荷總線317向CP307(i)的QMB 203發(fā)送一個(gè)隊(duì)列命令2913。對一個(gè)出列命令作出響應(yīng),QME 305經(jīng)過負(fù)荷總線317向CP 307(i)返回一個(gè)從隊(duì)列中進(jìn)行取出的消息2907。從隊(duì)列中進(jìn)行取出的消息2907包括被從隊(duì)列中取出的描述符和關(guān)于這個(gè)描述符所表示的協(xié)議數(shù)據(jù)單元的信息,并且包括從這個(gè)隊(duì)列中取出描述符的隊(duì)列的條件。QME 305進(jìn)一步使用全局總線319中多余的周期來向獨(dú)立的包處理器發(fā)送關(guān)于被這個(gè)包處理器所進(jìn)行服務(wù)的隊(duì)列的隊(duì)列狀態(tài)報(bào)告(BQSR)2915。這些報(bào)告表示這個(gè)包處理器所服務(wù)的哪一個(gè)隊(duì)列已經(jīng)變空了,并且哪一個(gè)隊(duì)列已經(jīng)不是空的了。它們作為在這個(gè)包處理器的局部地址空間中隊(duì)列狀態(tài)寄存器601中被接收的隊(duì)列狀態(tài)報(bào)告(RQSR)2915。最后,在CP 307(i)中有一個(gè)隊(duì)列操作狀態(tài)寄存器,它包括表示QME 305從CP 307(i)所接收的最后隊(duì)列命令的執(zhí)行狀態(tài)的兩個(gè)比特。其4個(gè)可能的狀態(tài)是§成功地完成和/或者空閑§沒有成功完成§忙,正在等待執(zhí)行命令§忙,命令正在被QME執(zhí)行假定CP 307(i)正在接收和發(fā)送包,典型地,它將如下采用接口,在已經(jīng)獲得了產(chǎn)生和對一個(gè)接收包的描述符進(jìn)行排隊(duì)所需要的信息后,CP 307(i)建立一個(gè)寫控制模塊610來向CP 307(i)的QMB 2903(i)發(fā)送一個(gè)排隊(duì)命令,檢查QOS 2911來確保這個(gè)郵箱不處于忙的狀態(tài),并且啟動(dòng)發(fā)送這個(gè)排隊(duì)命令的DMA。在這樣對描述符進(jìn)行排隊(duì)時(shí),CP 307(i)周期性地檢查RQSR 2915來決定它正在從其中發(fā)送包的任何一個(gè)隊(duì)列是否已經(jīng)變?yōu)榉强铡H绻?duì)列中的一個(gè)已經(jīng)變?yōu)榉强?,CP 307(i)以剛才對排隊(duì)命令所描述的方法,來發(fā)送一個(gè)出列命令。QME 305使用DEQM 2907對這個(gè)出列命令作出響應(yīng),并且CP 307(i)可以使用被包括在DEQM 2907中的這個(gè)描述符來發(fā)送它所表示的包。CP 307(i)可以使用被包括在DEQM 2907中的其它信息來規(guī)劃這個(gè)描述符所表示的包的發(fā)送,或者來更新它自己關(guān)于隊(duì)列狀態(tài)的拷貝。這里,應(yīng)注意的是,CP 307(i)可以完成上面所描述的任何事情,而不需要訪問全局地址空間321中QME 305的部分并且因此去增加全局總線319的負(fù)擔(dān)。當(dāng)然,如果CP 307(i)需要更多的關(guān)于它對其進(jìn)行寫入或者從其中進(jìn)行讀取的隊(duì)列狀態(tài)的信息,它就可以訪問QSI 2902。
隊(duì)列命令2913的細(xì)節(jié)圖30在一個(gè)優(yōu)選實(shí)施方式中,一個(gè)包處理器可以命令QME 305來執(zhí)行4個(gè)操作§隊(duì)列配置;§在一個(gè)隊(duì)列上對一個(gè)描述符進(jìn)行排隊(duì);§從一個(gè)隊(duì)列中取出一個(gè)描述符;和§在一些隊(duì)列上對一個(gè)描述符進(jìn)行排隊(duì)。
這些操作的命令被經(jīng)過負(fù)荷總線317發(fā)送到QME 305;在負(fù)荷總線317上的一個(gè)處理(transaction)包括兩個(gè)部分一個(gè)地址和數(shù)據(jù)。對涉及單個(gè)隊(duì)列的隊(duì)列命令,這個(gè)地址被用于規(guī)定操作和這個(gè)隊(duì)列,如在3001所顯示的。計(jì)數(shù)字段(CNT)3003,處理號碼(T#)3005,和池標(biāo)識(PI)3007對所有負(fù)荷總線地址是共同的;CNT 3003規(guī)定了在這個(gè)處理中正在被讀取或者寫入的16-比特量的數(shù)目;T#3005區(qū)分從相同源到一給定目的地的多個(gè)處理;PI 3007規(guī)定目的地,或者BME 315中的一個(gè)緩沖器池或者為被BME 315所執(zhí)行的緩沖器標(biāo)記操作和為QME 305所執(zhí)行的隊(duì)列操作預(yù)留的池?cái)?shù)目。在其PI 3007規(guī)定了QME 3005的地址中,這個(gè)地址進(jìn)一步包括一個(gè)操作標(biāo)識3009,這個(gè)操作標(biāo)識3009規(guī)定了上述操作中的一個(gè),并且對涉及一單個(gè)隊(duì)列的操作,這個(gè)地址包括隊(duì)列號碼3011。
這個(gè)命令的數(shù)據(jù)部分的內(nèi)容隨命令而改變。對配置隊(duì)列命令,數(shù)據(jù)3013在3015規(guī)定了在這個(gè)地址的3011所規(guī)定的隊(duì)列可能包括的描述符217的最大數(shù)目,在3017規(guī)定了要從其中拾取描述符的、QME 305中的描述符池,和3019表示描述符允許,描述符允許3019規(guī)定了可以被允許的描述符217的數(shù)目,但是不是實(shí)際在隊(duì)列中使用的描述符217的數(shù)目。這個(gè)配置隊(duì)列命令允許這個(gè)包處理器讀取一給定隊(duì)列來動(dòng)態(tài)地改變被分配到這個(gè)隊(duì)列的資源數(shù)目,當(dāng)條件改變時(shí)。例如,如果在被正在從這個(gè)隊(duì)列進(jìn)行發(fā)送的信道處理器服務(wù)的輸出端口上有一個(gè)突發(fā)業(yè)務(wù),這個(gè)信道處理器307可以使用這個(gè)配置隊(duì)列命令來增加這個(gè)隊(duì)列的最大描述符數(shù)目和/或者描述符允許,并且當(dāng)突發(fā)過去時(shí),這個(gè)信道處理器307可以減少這個(gè)隊(duì)列的最大描述符數(shù)目和/或者描述符允許。
對單播排隊(duì)命令,有兩個(gè)字的數(shù)據(jù)3021。第一個(gè)包括描述符權(quán)重3023,描述符權(quán)重3023規(guī)定了正在被排隊(duì)的描述符所表示的DRAM229中的數(shù)據(jù)量。第二個(gè)包括將在3011所規(guī)定的隊(duì)列中進(jìn)行排隊(duì)的描述符217。對這個(gè)出列命令,也有兩個(gè)字的數(shù)據(jù)3025。第一個(gè)字包括正在被從隊(duì)列中進(jìn)行取出的描述符的描述符權(quán)重3023,是仍然在隊(duì)列中的描述符的總權(quán)重的隊(duì)列權(quán)重3027,和是仍然被保留在隊(duì)列中描述符數(shù)目的隊(duì)列長度3029。第二個(gè)字包括已經(jīng)從在3011所規(guī)定的隊(duì)列中進(jìn)行取出的描述符217。接收這個(gè)被從隊(duì)列中取出的描述符的包處理器可以使用第一個(gè)詞中的信息,來決定下面它將向它正在從其中進(jìn)行發(fā)送的哪一個(gè)隊(duì)列發(fā)送一個(gè)出列命令,或者發(fā)送一個(gè)配置隊(duì)列命令來改變一個(gè)隊(duì)列可以使用的資源數(shù)目。
其地址部分被顯示在3031、其數(shù)據(jù)部分被顯示在3035中的多播排隊(duì)命令對將被多于一個(gè)包處理器發(fā)送的一個(gè)描述符進(jìn)行排隊(duì)。在地址部分3031和地址部分3001之間的唯一差異是它包括隊(duì)列級別(QLEV)字段3033而不是隊(duì)列號碼字段3011。隊(duì)列級別字段3033規(guī)定了將接收這個(gè)描述符的隊(duì)列的一個(gè)最小服務(wù)或者優(yōu)先級程度。這個(gè)命令的數(shù)據(jù)部分3035在其第一個(gè)字中包括指出哪一個(gè)包處理器將輸出這個(gè)隊(duì)列的一個(gè)多播矢量(MCV)3037。另外包括在第一個(gè)字中的是這個(gè)描述符217的描述符權(quán)重3023,描述符217是在第二個(gè)字中。如這個(gè)命令中的數(shù)據(jù)所指出的,這個(gè)多播排隊(duì)命令規(guī)定了包處理器和服務(wù)級別而不是具體的隊(duì)列,并且QME 305在被具有至少最低服務(wù)級別的所規(guī)定包處理器進(jìn)行服務(wù)的隊(duì)列中對描述符217進(jìn)行排隊(duì)。這個(gè)描述符實(shí)際上沒有被拷貝到所有隊(duì)列,如下面將詳細(xì)描述的。向QME305發(fā)送一個(gè)多播排隊(duì)命令的、正在進(jìn)行接收的包處理器也向BME 315發(fā)送一個(gè)命令,這個(gè)命令設(shè)置在多播排隊(duì)命令的描述符中所規(guī)定的BT233的一個(gè)計(jì)數(shù)器;每一次一個(gè)正在發(fā)送的包處理器接收到已經(jīng)被進(jìn)行多播(在描述符中被指出)排隊(duì)的一個(gè)描述符并且發(fā)送由描述符的BT 233所規(guī)定的PDU時(shí),這個(gè)正在發(fā)送的包處理器向BME 315發(fā)送一個(gè)命令,以將BT 233的計(jì)數(shù)器減1。
隊(duì)列數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)圖31和32圖31和32顯示了在一個(gè)優(yōu)選實(shí)施方式中,在緩沖器管理引擎305中實(shí)現(xiàn)隊(duì)列215的數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。與DCP 203正在被采用的這個(gè)特定情形所需要的隊(duì)列的數(shù)目和尺寸相關(guān),這個(gè)數(shù)據(jù)結(jié)構(gòu)可以都在DCP203內(nèi)部的存儲(chǔ)器中,這個(gè)隊(duì)列控制數(shù)據(jù)結(jié)構(gòu)可以在DCP 203內(nèi)部的存儲(chǔ)器中,并且隊(duì)列自己可以是在隊(duì)列存儲(chǔ)器213中,或者所有隊(duì)列數(shù)據(jù)結(jié)構(gòu)均在隊(duì)列存儲(chǔ)器213中。
這些隊(duì)列215是描述符記錄3111的被鏈接列表。所有描述符記錄3111的尺寸均是相同的,但是這個(gè)尺寸可以在系統(tǒng)進(jìn)行初始化后的參數(shù)所設(shè)置。這些描述符記錄被保存在一些描述符池3109(0…q)中,池的尺寸和數(shù)目是由QME 305可以獲得的存儲(chǔ)器數(shù)量來決定的。屬于一給定隊(duì)列的描述符記錄3111必須都是來自一單個(gè)描述符池3109(i)。每一個(gè)描述符記錄3111包括至少下述字段§使用計(jì)數(shù)(IUC)3139,它指出描述符目前正在其上進(jìn)行排隊(duì)的隊(duì)列的數(shù)目;和§下一個(gè)指針(NPTR)3115,它指向隊(duì)列中下一個(gè)緩沖器記錄。
在這個(gè)描述符正在被用于將關(guān)于一個(gè)緩沖器231的信息從一個(gè)接收包處理器傳遞到一個(gè)發(fā)送包處理器的情形下,描述符記錄3111也包括下述字段§描述符權(quán)重(DW)3137,它指出描述符的緩沖器標(biāo)記233所表示的緩沖器的大??;和
§緩沖器標(biāo)記(BT)233,SDRAM 229中這個(gè)描述符所表示的緩沖器的緩沖器標(biāo)記;和否則,描述符217的內(nèi)容并且由此描述符記錄3111的內(nèi)容由作為這個(gè)描述符的源的這個(gè)包處理器來決定。例如,如果這個(gè)源包處理器正在處理其中這些包的最終目的地是一些以太網(wǎng)節(jié)點(diǎn)的一個(gè)流中的包,并且這個(gè)目的地包處理器是向這些以太網(wǎng)節(jié)點(diǎn)所屬的一個(gè)LAN輸出包的一個(gè)發(fā)送包處理器,描述符217將包括從這個(gè)緩沖器標(biāo)記233所規(guī)定的緩沖器內(nèi)容而產(chǎn)生的包的以太網(wǎng)地址。圖31中也顯示了一個(gè)多播列表記錄(MCLR)3123的一個(gè)池3121。如后面將詳細(xì)描述地,這些記錄在多播中被使用。
每一個(gè)隊(duì)列215被隊(duì)列列表3101中的一個(gè)隊(duì)列記錄3103所表示。隊(duì)列列表3101在全局地址空間321的緩沖器管理引擎305的部分中,并且因此可以被包處理器所讀取。這個(gè)隊(duì)列的隊(duì)列號碼3105是其隊(duì)列記錄3103在列表3101中的索引。隊(duì)列列表3101被劃分為部分3107,每一個(gè)部分3107是用于發(fā)送包的每一個(gè)包處理器的。一給定包處理器的所有隊(duì)列被列表3101的包處理器部分3107中一連續(xù)隊(duì)列記錄組所表示。在全局地址空間321的QME 305部分中的配置信息包括隊(duì)列列表3101的每一個(gè)包處理器部分的基地址3108和這個(gè)包處理器正在讀取的隊(duì)列數(shù)目;所以,一個(gè)包處理器可以確定哪一個(gè)隊(duì)列正在被哪一個(gè)包處理器所服務(wù),并且給定一個(gè)隊(duì)列號碼,就可以發(fā)現(xiàn)這個(gè)隊(duì)列記錄3103。隊(duì)列列表3101進(jìn)一步被QME 305所使用,來確定一給定包處理器接收關(guān)于哪一個(gè)隊(duì)列的廣播隊(duì)列狀態(tài)報(bào)告2915。
每一個(gè)隊(duì)列記錄3103包括下述字段§頭指針(HDPTR)3113,它指向目前正位于記錄隊(duì)列的頭部的描述符記錄3111;§末尾指針(TPTR)23113,它指向目前正位于記錄隊(duì)列的末尾的描述符記錄3111;§隊(duì)列長度(QL)3129,它是目前在記錄隊(duì)列中的描述符記錄3111的數(shù)目;§總描述符權(quán)重(TDW)3131,它是記錄隊(duì)列中所有描述符記錄的DW字段3137中值的和;§被分配的描述符允許(ADA)3133,它是比那些比實(shí)際在隊(duì)列中的描述符多的、并且可以被分配到隊(duì)列中的描述符的數(shù)目;和§隊(duì)列長度限制(QLL)3135,它規(guī)定了這個(gè)隊(duì)列的最大允許長度。
應(yīng)注意,ADA 3133和QLL 3135,與將是隊(duì)列描述符的源的池3809一起,被這個(gè)配置隊(duì)列命令所設(shè)置。
圖31中顯示了一單個(gè)隊(duì)列215(0)。隊(duì)列215(0)包括描述符記錄3111(i…k),其中描述符記錄3111(i)在這個(gè)隊(duì)列的頭部,并且所以被QR 3103(0)中的HDPTR 3113所指向,描述符記錄3111(k)在這個(gè)隊(duì)列的末尾,并且所以被QR 3103(0)的TPTR 3117所指向。在描述符記錄3111(k)的后面是一個(gè)被分配描述符記錄3111(q…t)的一個(gè)鏈接列表3119。這些描述符記錄已經(jīng)被分配到隊(duì)列215(0),但是還不是這個(gè)隊(duì)列215(0)的部分,因?yàn)樗鼈冊陉?duì)列215(0)末尾的后面。ADA字段3133決定了可以在鏈接列表3119中的描述符記錄的最大數(shù)目。
當(dāng)通過一個(gè)配置隊(duì)列命令來對一個(gè)隊(duì)列215(i)進(jìn)行初始化時(shí),QME 305建立被分配描述符記錄3111的一個(gè)鏈接列表3119,并且設(shè)置隊(duì)列記錄3103(i),以使頭部指針3113和末尾指針3117指向鏈接列表3119中的第一個(gè)描述符記錄3111,并且QL字段3129被設(shè)置為0。當(dāng)QME 305執(zhí)行這個(gè)操作時(shí),它設(shè)置QOS寄存器2911以指出其狀態(tài)。
當(dāng)在一個(gè)包處理器的隊(duì)列郵箱2903中接收到一個(gè)排隊(duì)命令時(shí),QME 305拾取這個(gè)命令中的描述符217,將這個(gè)描述符217寫入到屬于這個(gè)命令所規(guī)定的隊(duì)列的列表3119中的第一個(gè)描述符記錄3111,將QL 3129增加1,并且更新TPTR 3117來使TPTR 3117指向描述符記錄3111被寫入到其中的描述符記錄3111。如果在鏈接列表3119中沒有描述符記錄3111,QME 305將ADA 3133中所規(guī)定的數(shù)目添加到這個(gè)列表中。另外,QME 305使用QOS寄存器2911來指出這個(gè)操作的狀態(tài)。如果這個(gè)隊(duì)列215的隊(duì)列長度在描述符217被進(jìn)行排隊(duì)以前是0,QME 305向這個(gè)隊(duì)列的包處理器發(fā)送一個(gè)廣播通知2905,以指出這個(gè)隊(duì)列現(xiàn)在不為空。
當(dāng)接收到一個(gè)出列命令時(shí),QME 305使用頭部指針3113來定位在這個(gè)隊(duì)列頭部中的描述符記錄3111,從這個(gè)描述符記錄3111中讀取描述符217,更新頭部指針3113以使頭部指針3113指向這個(gè)隊(duì)列中下一個(gè)描述符記錄3111,并且如果列表3119中有比ADA字段3113所允許數(shù)目少的描述符記錄3111,就將前面的頭部描述符記錄3111添加到列表3119中。另外,QOS寄存器2911指出這個(gè)操作的狀態(tài)。描述符217在這個(gè)命令的返回?cái)?shù)據(jù)中被返回。如果這個(gè)被從隊(duì)列中取出的描述符是這個(gè)隊(duì)列中的最后一個(gè)描述符,QME 305就發(fā)送一個(gè)BQSR2905,以表示這個(gè)隊(duì)列現(xiàn)在是空的。
多播排隊(duì)和從隊(duì)列中進(jìn)行取出圖32和33如上面在隊(duì)列命令的討論中所指出的,多播排隊(duì)命令允許一個(gè)包處理器對可以被不止一個(gè)的發(fā)送包處理器所使用的一個(gè)描述符進(jìn)行排隊(duì)。圖32顯示了在一個(gè)優(yōu)選實(shí)施方式中是如何實(shí)現(xiàn)多播排隊(duì)的。除了在隊(duì)列列表3101上的隊(duì)列外,隊(duì)列管理引擎305維持一單個(gè)多播列表3201。QME 305將在一個(gè)多播排隊(duì)命令中所接收的一個(gè)描述符215放置在多播列表3201中的一個(gè)描述符記錄3111中,并且這個(gè)描述符保持在多播列表3201中,直到將發(fā)送這個(gè)描述符所表示的協(xié)議數(shù)據(jù)單元的所有包處理器已經(jīng)發(fā)送了這個(gè)協(xié)議數(shù)據(jù)單元。
繼續(xù)多播列表3201的細(xì)節(jié),多播列表3201被指向列表3201中的第一個(gè)DR 3111(g)的一個(gè)多播列表記錄3203所表示。列表3201中、表示一個(gè)描述符215的任何DR 3111將具有與其相關(guān)的一個(gè)或者多個(gè)多播列表記錄3123,包處理器仍然必須發(fā)送這個(gè)描述符215的協(xié)議數(shù)據(jù)單元。與DR 3111相關(guān)的這個(gè)多播列表記錄3123保存一個(gè)指針列表3209;這些指針包括指向多播列表3201中下一個(gè)DR 3111的一個(gè)指針和指向單播隊(duì)列中DR 3111的一些指針。
在圖32中,詳細(xì)地顯示了DR 3111(h)的指針。DR 3111(h)中的描述符215被一個(gè)多播排隊(duì)命令進(jìn)行排隊(duì),這個(gè)多播排隊(duì)命令的結(jié)果是這個(gè)描述符215被在單播隊(duì)列215(i)和215(j)中進(jìn)行排隊(duì)。這樣,在隊(duì)列215(i)中DR 3111(a)中的NXTPTR 3115指向多播列表3201中的DR 3111(h),與在隊(duì)列215(j)中DR 3111(k)中的NXTPTR 3115的指向一樣。DR 3111(h)的NXTPTR 3115指向MCLR 3123(r),MCLR 3123(r)是與DR 3111(h)相關(guān)的第一個(gè)MCLR。MCLR 3123(r)有3個(gè)指針一個(gè)指針,指針3211,指向多播列表3201中的下一個(gè)DR 3111;另一個(gè)指針,指針3212,指向在隊(duì)列215(i)中DR 3111(h)后的DR;第三個(gè)指針,指針3213,指向MCLR 3123(s),MCLR 3123(s)有第四個(gè)指向DR 3111(l)的指針3214,DR 3111(h)是在隊(duì)列215(j)中DR 3111(h)后的DR。
圖33中顯示了MCLR 3123的細(xì)節(jié)。每一個(gè)MCLR 3123具有兩個(gè)隊(duì)列指針3301,兩個(gè)隊(duì)列指針3301中的每一個(gè)規(guī)定了一個(gè)隊(duì)列號碼(3203)和指向這個(gè)隊(duì)列號碼3203所規(guī)定的隊(duì)列中的下一個(gè)DR 3111(h)的一個(gè)下一個(gè)指針(NPTR)3205和一個(gè)下一個(gè)MCLR指針(NXTMCLR) 3213,這下一個(gè)MCLR指針(NXTMCLR) 3213指向與這個(gè)DR 3111相關(guān)的下一個(gè)MCLR。在與多播列表3201中的一給定DR 3111相關(guān)的第一個(gè)MCLR中,第一個(gè)QPTR 3301指向這個(gè)多播列表中的下一個(gè)DR 3111。
如從前面的討論中可以看出的,簡單地通過使每一個(gè)隊(duì)列215中的前一個(gè)DR 3111指向DR 3111(h)并且包括指向與DR 3111(h)相關(guān)的MCLR 3123中的每一個(gè)隊(duì)列中后面的DR 3111的一個(gè)指針,就可以將DR 3111(h)變?yōu)槿魏螖?shù)目單播隊(duì)列215中的一個(gè)DR。這樣,這個(gè)多播排隊(duì)操作就是將正在被排隊(duì)的描述符217的一個(gè)DR 3111添加到列表3201,決定這個(gè)描述符217需要在哪一個(gè)單播隊(duì)列215中進(jìn)行排隊(duì),如單播隊(duì)列215所需要的添加MCLR 3123,如圖32所顯示的在單播隊(duì)列中設(shè)置在前一個(gè)DR 3111中的指針,設(shè)置這個(gè)單播隊(duì)列215中的末尾指針以使這個(gè)末尾指針指向多播列表中的這個(gè)DR3111,并且設(shè)置在使用計(jì)數(shù)3139來指出描述符217已經(jīng)被在其中進(jìn)行排隊(duì)的單播隊(duì)列的總數(shù)目,的這樣一個(gè)事情。當(dāng)一個(gè)單播隊(duì)列對在多播隊(duì)列中DR 3111后面的DR 3111進(jìn)行排隊(duì)時(shí),它設(shè)置在MCLR 3123中其QPTR 3301中的NPTR 3205來指向這個(gè)新添加的DR 3111。下面將更詳細(xì)地說明QME 305如何決定這個(gè)描述符將在哪一個(gè)單播隊(duì)列中進(jìn)行排隊(duì)。
對多播列表3201上的一個(gè)DR 3111進(jìn)行從隊(duì)列中進(jìn)行取出的操作按照如下來工作只要在使用計(jì)數(shù)比1大,這個(gè)從隊(duì)列中進(jìn)行取出的操作將按照與對不在多播列表3201上的一個(gè)DR 3111所描述的方法相同的方法來工作,除了每一個(gè)從隊(duì)列中進(jìn)行取出的操作將在使用計(jì)數(shù)減1并且在新末尾DR 3111中的NPTR 3115被從單播隊(duì)列的QPTR3301中的NPTR 3205所設(shè)置外。當(dāng)DR 3111中的在使用計(jì)數(shù)是1時(shí),這個(gè)從隊(duì)列中進(jìn)行取出的操作另外將設(shè)置這個(gè)DR 3111的在使用計(jì)數(shù)為0,并且設(shè)置其NPTR 3115指向多播列表中的下一個(gè)DR 3111,并且將其MCLR 3123返回給一個(gè)自由列表。
在多播排隊(duì)中選擇單播隊(duì)列將回憶起,這個(gè)多播排隊(duì)命令不規(guī)定這個(gè)描述符將在其中進(jìn)行排隊(duì)的隊(duì)列,而是規(guī)定了發(fā)送包處理器(MCV字段3037)和一個(gè)隊(duì)列或者服務(wù)級別(QLEV 3033)。一給定隊(duì)列或者服務(wù)級別的意義完全是由讀取這個(gè)隊(duì)列的這個(gè)包處理器被編程的方式所決定的。在執(zhí)行多播排隊(duì)命令中,QME 305必須將這個(gè)信息翻譯成一個(gè)單播隊(duì)列號碼。這是通過隊(duì)列號碼映射表(QNMT)3303來完成的,如圖33所顯示的。
作為一個(gè)發(fā)送包處理器如何使用這個(gè)隊(duì)列或者服務(wù)級別的一個(gè)簡單示例,如果這個(gè)服務(wù)級別簡單地反映了隊(duì)列中的優(yōu)先級,并且較大的號碼表示較高的優(yōu)先級,然后,這個(gè)發(fā)送包處理器將不會(huì)向一給定優(yōu)先級的隊(duì)列提供服務(wù),只要在高優(yōu)先級的隊(duì)列中存在一個(gè)非空的隊(duì)列。
隊(duì)列號碼映射表3303具有針對每一個(gè)包處理器的一個(gè)部分3307。這些部分是根據(jù)包處理器號碼的順序來進(jìn)行排序的。每一個(gè)部分3307具有每一個(gè)服務(wù)級別的一個(gè)項(xiàng)(QNMTE)3305。在一個(gè)優(yōu)選實(shí)施方式中,有8個(gè)服務(wù)級別。包處理器0的一個(gè)示例部分3307被顯示在圖33中,在圖33中,假定包處理器0使用一個(gè)簡單的優(yōu)先級系統(tǒng),在這個(gè)簡單的優(yōu)先級系統(tǒng)中,較高的服務(wù)級別表示較高的優(yōu)先級,并且包處理器0具有服務(wù)級別為0,3和4的隊(duì)列。其中包處理器0沒有隊(duì)列的一個(gè)服務(wù)級別的一個(gè)項(xiàng)33305的值是0;包處理器0有隊(duì)列的一個(gè)服務(wù)級別的一個(gè)項(xiàng)33305的值包括QROFF和具有這個(gè)項(xiàng)服務(wù)級別的包處理器隊(duì)列的數(shù)目,QROFF是這個(gè)服務(wù)級別的隊(duì)列的隊(duì)列記錄塊3103在隊(duì)列列表3101中的偏移。
QNMTE 3305被包處理器號碼和排隊(duì)級別號碼來服務(wù),如3309所顯示的。這樣,如果地址3309規(guī)定了包處理器號碼0和排隊(duì)級別3,這個(gè)地址所定位的項(xiàng)3305就是3305(0,3)。使用在項(xiàng)3305(0,3)中所規(guī)定的QROFF,QME 305可以發(fā)現(xiàn)這個(gè)包處理器和排隊(duì)級別的第一個(gè)隊(duì)列記錄3103;它可以選擇使用這個(gè)隊(duì)列,或者它可以選擇具有這個(gè)排隊(duì)級別的隊(duì)列的另一個(gè)隊(duì)列記錄3103所規(guī)定的一個(gè)隊(duì)列。如果地址3309規(guī)定了具有一個(gè)0值的一個(gè)QNMTE 3305,表示這個(gè)包處理器沒有這個(gè)排隊(duì)級別的隊(duì)列,QME 305就移動(dòng)部分3307,直到它發(fā)現(xiàn)一更高排隊(duì)級別的一個(gè)QNMTE 3305并且如剛才所描述地選擇了這個(gè)排隊(duì)級別的一個(gè)隊(duì)列。
使用QME 305的隊(duì)列管理圖34如前面所提到的,QME 305所管理的隊(duì)列215可以被完全包括在DCP IC 203的QME 305存儲(chǔ)器中,可以被包括在一個(gè)擴(kuò)展的隊(duì)列存儲(chǔ)器213中,或者可以對來自QME 305的命令作出響應(yīng)而被一個(gè)外部的排隊(duì)和規(guī)劃單元所管理。圖34給出了具有和不具有外部規(guī)劃單元的結(jié)構(gòu)示例。在這些圖中,描述符217的流是用實(shí)的、粗淺灰色箭頭表示;協(xié)議數(shù)據(jù)單元流是用虛的、黑灰色箭頭表示。
3401顯示了一個(gè)獨(dú)立的DCP 203,其中隊(duì)列被包括在直接被QMU305所管理的存儲(chǔ)器中;3403顯示了一個(gè)獨(dú)立的DCP,其中已經(jīng)被添加了一個(gè)外部排隊(duì)和規(guī)定單元3405;在這樣的結(jié)構(gòu)中,這個(gè)外部排隊(duì)和規(guī)定單元處理這樣的事情,例如一給定包處理器的隊(duì)列數(shù)目,這些隊(duì)列的級別,和多播。具有一個(gè)外部排隊(duì)和規(guī)定單元的QME305,QME305在DCP 203中僅有其自己的存儲(chǔ)器;在這個(gè)存儲(chǔ)器中,有將被發(fā)送到外部單元3405和每一個(gè)發(fā)送包處理器的隊(duì)列的描述符217的一單個(gè)隊(duì)列,這每一個(gè)發(fā)送包處理器接收從外部單元3405被發(fā)送到QME305以被發(fā)送包處理器所發(fā)送的描述符217。這些隊(duì)列的功能是在這個(gè)包處理器和外部排隊(duì)與規(guī)劃單元之間提供一個(gè)緩沖器。
3407顯示了一個(gè)結(jié)構(gòu),其中兩個(gè)DCP 203(0和1)被一個(gè)交換構(gòu)造222所連接,并且這兩個(gè)DCP 203的隊(duì)列管理是被DCP203(1)中的QME 305(1)所完成的。QME 305(0)簡單地發(fā)送關(guān)于需要在被構(gòu)造處理器303(0)進(jìn)行讀取的一個(gè)隊(duì)列上進(jìn)行排隊(duì)的描述符217的排隊(duì)命令,構(gòu)造處理器303(0)經(jīng)過交換構(gòu)造222向構(gòu)造處理器303(1)發(fā)送命令。然后,QME 305(1)在這個(gè)命令中所指出的隊(duì)列215上對描述符進(jìn)行排隊(duì)。這個(gè)隊(duì)列215可以是被DCP 203(0)或者DCP203(1)中的一個(gè)發(fā)送包處理器所讀取的一個(gè)隊(duì)列。關(guān)于被DCP 203(0)中的包處理器所讀取的隊(duì)列的隊(duì)列狀態(tài)信息被從QME 305(1)經(jīng)過構(gòu)造處理器303(1),交換構(gòu)造222,和構(gòu)造處理器303(0)發(fā)送到QME 305(0),然后,QME 305(0)設(shè)置接收者的QOS寄存器2911或者如環(huán)境所需要的向這個(gè)接收者發(fā)送一個(gè)廣播隊(duì)列狀態(tài)報(bào)告2915。對出列命令,如剛才所描述地這個(gè)命令被傳遞到QME 305(1),并且對這個(gè)命令作出響應(yīng)而被從隊(duì)列中進(jìn)行取出的這個(gè)描述符,如對狀態(tài)信息所描述的,被發(fā)送回QME 305(0),并且被從QME 305(0)發(fā)送到這個(gè)發(fā)送包處理器。
當(dāng)在一個(gè)DCP 203中的一個(gè)包處理器所接收的一個(gè)協(xié)議數(shù)據(jù)單元需要被從另一個(gè)DCP中的一個(gè)發(fā)送包處理器進(jìn)行發(fā)送時(shí),在這個(gè)發(fā)送包處理器所屬的DCP中的BME 315通過經(jīng)過這個(gè)構(gòu)造處理器將這個(gè)緩沖器標(biāo)記轉(zhuǎn)發(fā)到這個(gè)進(jìn)行接收的包處理器的緩沖器管理引擎,來對這個(gè)發(fā)送包處理器發(fā)送這個(gè)協(xié)議數(shù)據(jù)單元的請求作出響應(yīng),這個(gè)進(jìn)行接收的包處理器的緩沖器管理引擎通過經(jīng)過構(gòu)造處理器向這個(gè)在進(jìn)行發(fā)送的包處理器的緩沖器管理引擎提供協(xié)議數(shù)據(jù)單元,來對這個(gè)緩沖器標(biāo)記作出響應(yīng),然后,這個(gè)在進(jìn)行發(fā)送的包處理器的緩沖器管理引擎將這個(gè)協(xié)議數(shù)據(jù)單元提供到這個(gè)發(fā)送包處理器。
3409顯示了與3407類似的一個(gè)結(jié)構(gòu),除了這些隊(duì)列是在被QME305(1)所管理的一個(gè)外部排隊(duì)與規(guī)劃單元3411中外。隊(duì)列命令,狀態(tài)信息,和描述符被如剛才所描述地在DCP 203(0)和DCP 203(1)之間進(jìn)行傳遞,除了QME 305(1)然后將這些命令傳遞到這個(gè)外部排隊(duì)與規(guī)劃單元3411并且從這個(gè)外部排隊(duì)與規(guī)劃單元3411接收狀態(tài)和描述符外。3413顯示了帶直接向QME 305(0)和QME 305(1)提供服務(wù)的一個(gè)外部排隊(duì)與規(guī)劃單元3415的一個(gè)結(jié)構(gòu)。操作如上面所描述的,除了任一個(gè)QME 305可以為自己或者作為另一個(gè)QME 305的一個(gè)代理來處理外部單元3415外。
QME 305的外部接口圖35在一個(gè)優(yōu)選實(shí)施方式中,QME 305具有一個(gè)55-管腳的外部接口,這個(gè)外部接口可能被與一個(gè)外部同步SRAM存儲(chǔ)器組或者與一個(gè)排隊(duì)與規(guī)劃單元一起使用,如上面所描述的。圖35顯示了這個(gè)外部接口在每一個(gè)情形下是如何被使用的。3501顯示了這個(gè)存儲(chǔ)器外部接口。有32個(gè)雙向數(shù)據(jù)線3503,20個(gè)單向地址線3505,和4或者5個(gè)控制線3506。使用普通的方法來寫入到存儲(chǔ)器組或者從存儲(chǔ)器組進(jìn)行讀取。
3507顯示了這55個(gè)管腳外部接口是如何被與一個(gè)排隊(duì)與規(guī)劃單元3508一起使用的。另外,這里有32個(gè)雙向數(shù)據(jù)線3509,16個(gè)雙向命令線3511,和8個(gè)控制線3513。就這個(gè)接口來說,QME 305是主控,規(guī)劃器3508是從部件。規(guī)劃器3508或者QME 305可以向另一個(gè)發(fā)送消息,但是一個(gè)消息被發(fā)送的方向是由QME 305決定的。消息的傳送是流控制的,即規(guī)劃器3508和QME 305每一個(gè)均向另一個(gè)指出它是否可以接收消息和接收什么樣的消息,并且這個(gè)發(fā)送者可能不能夠發(fā)送,除非這個(gè)接收器能夠接收這個(gè)消息。QME 305也是這個(gè)接口的時(shí)鐘信號源。
有4個(gè)可能的消息尺寸§12字節(jié),其中4個(gè)是命令,8個(gè)是數(shù)據(jù),在2個(gè)時(shí)鐘周期內(nèi)被發(fā)送;§24字節(jié),其中8個(gè)是命令,16個(gè)是數(shù)據(jù),在4個(gè)時(shí)鐘周期內(nèi)被發(fā)送;§36字節(jié),其中12個(gè)是命令,24個(gè)是數(shù)據(jù),在6個(gè)時(shí)鐘周期內(nèi)被發(fā)送;和§48字節(jié),其中16個(gè)是命令,24個(gè)是數(shù)據(jù),在8個(gè)時(shí)鐘周期內(nèi)被發(fā)送。
這個(gè)消息的尺寸是在DCP 203被初始化時(shí)被決定的。當(dāng)然這個(gè)消息的內(nèi)容是通過QME 305和規(guī)劃器3508之間的交互通信來決定的,但是對大多數(shù)部分來說,它們將包括將在被規(guī)劃器3508所管理的隊(duì)列上進(jìn)行排隊(duì)的、或者從被規(guī)劃器3508所管理的隊(duì)列中取出來的描述符217。
當(dāng)QME 305被用作所有發(fā)送包處理器的一個(gè)代理,并且這些包處理器中的每一個(gè)可能或者不可能在一給定時(shí)刻從規(guī)劃器3508接收一個(gè)描述符時(shí),流控制就變得有些復(fù)雜了。在一個(gè)優(yōu)選實(shí)施方式中,這個(gè)包處理器可能有多達(dá)25個(gè)隊(duì)列一個(gè)是用于執(zhí)行處理器313,一個(gè)是用于16個(gè)信道處理器317中的每一個(gè),8個(gè)是用于構(gòu)造處理器303。構(gòu)造處理器303具有8個(gè)隊(duì)列,因?yàn)樗仨殞λ薪?jīng)過交換構(gòu)造222的通信進(jìn)行負(fù)責(zé),并且如上面可以看出的,這樣的通信包括系統(tǒng)控制信息和協(xié)議數(shù)據(jù)單元。另外,需要不同類型幀的設(shè)備可能被一單個(gè)構(gòu)造處理器所連接。
當(dāng)與一個(gè)外部規(guī)劃器3508一起使用時(shí),QME 305具有一單個(gè)接收器隊(duì)列(RQ) 3519,QME 305將它從這個(gè)接收包處理器所接收的所有描述符217均放置在單個(gè)接收器隊(duì)列(RQ) 3519中,直到這些描述符能夠被輸出到規(guī)劃器3508以進(jìn)行排隊(duì)和每一個(gè)發(fā)送包處理器的一個(gè)發(fā)送隊(duì)列(TQ) 3521。當(dāng)一個(gè)發(fā)送包處理器的一個(gè)TQ 3521是滿的時(shí),QME 305就不能夠?yàn)檫@個(gè)發(fā)送包處理器的這個(gè)隊(duì)列接收更多的描述符217。
因?yàn)閮H有一單個(gè)輸出隊(duì)列,將消息路由到規(guī)劃器3506的流控制是簡單的當(dāng)這個(gè)規(guī)劃器能夠接收一個(gè)消息時(shí),這個(gè)規(guī)劃器在控制3513中激發(fā)一個(gè)信號,并且規(guī)劃器流控制寄存器3517表示這個(gè)信號的狀態(tài),所以QME 305僅需要等待發(fā)送下一個(gè)消息,直到控制寄存器3517這樣指示。將消息路由到QME 305的流控制是通過規(guī)劃器3508中的DCP流控制寄存器3515完成的,規(guī)劃器3508中的DCP流控制寄存器3515包括25個(gè)流控制比特,一個(gè)比特是用于每一個(gè)可能的發(fā)送包處理器。規(guī)劃器3508可以發(fā)送其最終目的地是一給定發(fā)送包處理器的一個(gè)消息,僅當(dāng)如果在DCP流控制寄存器3515中針對這個(gè)發(fā)送包處理器的流控制比特這樣指示時(shí)。QME 305發(fā)送到規(guī)劃器3508的每一個(gè)消息的一個(gè)部分可以被用于設(shè)置或者清除寄存器3515中的流控制比特,并且QME 305發(fā)送一個(gè)消息,當(dāng)一個(gè)發(fā)送器的發(fā)送隊(duì)列3521是滿的時(shí)這個(gè)消息就設(shè)置這個(gè)發(fā)送包處理器的比特,當(dāng)發(fā)送隊(duì)列3521又有空間來保存描述符時(shí),QME 305就發(fā)送一個(gè)消息來清除這個(gè)比特。
雖然QME 305的外部接口一般被用于與隊(duì)列管理設(shè)備進(jìn)行通信,但是它不需要是這樣的。因?yàn)橐粋€(gè)描述符的內(nèi)容完全是由產(chǎn)生這個(gè)描述符的包處理器來決定的,這個(gè)外部接口可以被包處理器使用來將數(shù)據(jù)寫入到經(jīng)過這個(gè)外部接口可以被訪問的一個(gè)設(shè)備和/或者,被使用來從這樣一個(gè)設(shè)備中讀取數(shù)據(jù)。這個(gè)能力可以被使用的一個(gè)方面是將一個(gè)包處理器編程為一個(gè)“包取樣器”,即,簡單地收集關(guān)于在一個(gè)包流中包的信息的一個(gè)設(shè)備。RxSDP 421可以被編程為從這個(gè)包流中提取每一個(gè)包所需要的信息,并且將這個(gè)信息提供到CPRC 401,然后,CPRC 401將這個(gè)信息封裝到一個(gè)描述符中,并且對這個(gè)描述符進(jìn)行排隊(duì)以使這個(gè)描述符可以被QME 305發(fā)送到能夠保存和分析這個(gè)信息的一個(gè)外部設(shè)備中。
規(guī)劃器外部接口的細(xì)節(jié)圖36和37圖36顯示了這個(gè)外部接口的獨(dú)立管腳如何被與一個(gè)規(guī)劃器3508一起使用的。在圖8中,列標(biāo)號管腳3601顯示了組成一個(gè)組的管腳的數(shù)目,并且在這個(gè)列標(biāo)號方向3603中的箭頭顯示了信息流的方向。DCP->SCHED表示從QME 305到規(guī)劃器3508的流,并且DCP<-SCHED表示相反方向的流。從8個(gè)控制管腳3513開始,§時(shí)鐘管腳3603,提供從QME 305到規(guī)劃器3508的一個(gè)時(shí)鐘信號;§D_flow_ctrl 3607在每一個(gè)周期,提供從QME 305到規(guī)劃器3508的3比特流控制信息;規(guī)劃器3508使用在一個(gè)消息的第一個(gè)兩周期內(nèi)接收的6比特D_flow_ctrl 3607來設(shè)置或者清除在D流控制寄存器3515中的一個(gè)比特;§S_flow_ctrl 3609是從規(guī)劃器3508到QME 305的一個(gè)比特的流控制信息;QME 305使用管腳3609上的值來設(shè)置S流控制寄存器3517;§Xfer_rqst 3611是當(dāng)規(guī)劃器3508希望向QME 305發(fā)送一個(gè)消息時(shí),規(guī)劃器3508激發(fā)的一個(gè)信號;和§Xfer_ctrl 3613是QME 305發(fā)送給規(guī)劃器3508的兩比特,以指示在管腳上的數(shù)據(jù)和控制信號如何在下面的時(shí)鐘周期中被解釋;細(xì)節(jié)在下面被給出。
命令管腳3511是雙向的;它們包括16個(gè)命令比特和1個(gè)奇偶校驗(yàn)比特。數(shù)據(jù)管腳3509也是雙向的;它們包括32個(gè)數(shù)據(jù)比特和1個(gè)奇偶校驗(yàn)比特。
接口3507的操作被Xfer ctrl 3613所控制。這兩行的4個(gè)值的意義如下§00不是一個(gè)其后跟著一個(gè)消息的時(shí)鐘周期;§01一個(gè)時(shí)鐘周期,在兩個(gè)周期后,其后面將是從QME 305到規(guī)劃器3508的一個(gè)消息的第一個(gè)周期;在發(fā)送這個(gè)消息所需的最初兩個(gè)周期期間,D_flow_ctrl 3607將向規(guī)劃器3508傳送流控制信息;§10一個(gè)時(shí)鐘周期,在兩個(gè)周期后,其后面將是從規(guī)劃器3508到QME 305的一個(gè)消息的第一個(gè)周期;在發(fā)送這個(gè)消息的第一兩個(gè)周期期間,D_flow_ctrl 3607將向規(guī)劃器3508傳送流控制信息;§11一個(gè)時(shí)鐘周期,在兩個(gè)周期后,其后面將是兩個(gè)時(shí)鐘周期,其中流控制信息在這兩個(gè)時(shí)鐘周期內(nèi)經(jīng)過D_flow_ctrl 3607被傳送到規(guī)劃器3508。
如從前面的描述中可以看出的,6比特流控制信息可能在每一個(gè)消息內(nèi)被從QME 305傳送到規(guī)劃器3508,并且當(dāng)沒有消息在被傳送時(shí),可以在每2個(gè)時(shí)鐘周期內(nèi)被傳送到規(guī)劃器3508。這個(gè)6比特的值包括規(guī)定一個(gè)空操作的一個(gè)值和其它多個(gè)值,響應(yīng)這些值,規(guī)劃器3508針對發(fā)送包處理器的25個(gè)隊(duì)列中的每一個(gè)隊(duì)列設(shè)置或者復(fù)位D流控制寄存器3515中的獨(dú)立流控制比特。
如前面所討論的,一個(gè)消息可以是2,4,6,或者8周期長,并且在每一個(gè)周期內(nèi)傳送16比特的命令數(shù)據(jù)和32比特的描述符數(shù)據(jù)。這個(gè)命令數(shù)據(jù)的語義取決于規(guī)劃器3508和QME 305被編程的方式,除了對從規(guī)劃器3508到QME 305的一個(gè)消息外,這個(gè)第一周期內(nèi)的命令數(shù)據(jù)必須采取3514所顯示的形式前面6個(gè)比特必須具有圖案3615,并且最后6個(gè)比特必須包括這個(gè)消息需要到達(dá)的隊(duì)列的號碼。這個(gè)號碼當(dāng)然決定了這個(gè)消息將被放置在哪一個(gè)發(fā)送隊(duì)列3521中。
圖37顯示了帶2-周期和4-周期消息的接口3507的操作示例。這2-周期消息被顯示在3701。3703顯示了這個(gè)接口的時(shí)鐘周期;3613顯示了這個(gè)時(shí)鐘周期內(nèi)在Xfer_Ctrl 3613上的值;3511顯示了在命令數(shù)據(jù)管腳3511上的內(nèi)容;3509顯示了在描述符數(shù)據(jù)管腳3509上的內(nèi)容;3607顯示了在D_flow_Ctrl管腳3607上的內(nèi)容。這樣,在周期1中,Xfer_Ctrl 3613被設(shè)置為01,表示在下一個(gè)周期后的周期(周期3)將是從QME305發(fā)送到規(guī)劃器3509的一個(gè)2-周期消息3702的第一個(gè)周期。在周期2中,Xfer_Ctrl 3613被設(shè)置為00,表示在下一個(gè)周期后的周期不是一個(gè)消息的第一個(gè)周期。在周期3中,命令3511和數(shù)據(jù)3509包括這個(gè)消息的命令數(shù)據(jù)和描述符數(shù)據(jù)的第一個(gè)周期的內(nèi)容,并且D_flow_Ctrl 3607包括到規(guī)劃器3508的流控制數(shù)據(jù)的第一個(gè)周期的內(nèi)容。Xfer_Ctrl 3613再被設(shè)置為01,表示從QME 305發(fā)送到規(guī)劃器3508的另一個(gè)消息的第一個(gè)周期將從周期5開始。
在周期4中,消息3702的第二個(gè)半部分被發(fā)送,并且命令3511和數(shù)據(jù)3509包括命令數(shù)據(jù)和描述符數(shù)據(jù)的第二個(gè)周期的內(nèi)容,并且D_flow_Ctrl 3607包括流控制數(shù)據(jù)的第二個(gè)周期的內(nèi)容。在周期5和6中,第二個(gè)消息被發(fā)送,并且在周期5中,Xfer_Ctrl 3613表示下面是一第三個(gè)消息,并且從周期7開始。
3705顯示了從規(guī)劃器3508向QME 305發(fā)送兩個(gè)4-周期消息3707;在周期1中,Xfer_Ctrl3613被設(shè)置為10,表示在周期3中開始的第一個(gè)消息將被發(fā)送到QME305;在周期2-4中,Xfer_Ctrl 3613被設(shè)置為00,因?yàn)檫@個(gè)消息是4周期長。在周期3-6中,第一個(gè)消息的命令數(shù)據(jù)3511和描述符數(shù)據(jù)3509的4個(gè)周期的內(nèi)容被發(fā)送;僅在這個(gè)消息的前兩個(gè)周期,即,周期3和4中,才發(fā)送D_flow_Ctrl3613。在周期5中,Xfer_Ctrl 3613再被設(shè)置為10,表示第二個(gè)消息的第一個(gè)周期將從周期7開始。
向規(guī)劃器3508發(fā)送流控制信息的工作方式與發(fā)送一個(gè)2-周期消息的工作方式相同,除了在流控制序列開始前兩個(gè)周期,Xfer_Ctrl3613具有值11。在周期3中,這個(gè)流控制信息的前3個(gè)比特被在D_flow_Ctrl3607上發(fā)送,并且在周期4中,第二個(gè)3比特被發(fā)送。規(guī)劃器3508和QME 305忽略在命令數(shù)據(jù)3511和描述符數(shù)據(jù)3509上的值。
緩沖器管理引擎315和緩沖器存儲(chǔ)器229的詳細(xì)描述緩沖器管理引擎315的基本功能是管理緩沖器存儲(chǔ)器229中的緩沖器231,從協(xié)議數(shù)據(jù)單元被在DCP 203中接收的時(shí)刻到它們被從DCP203發(fā)送的時(shí)刻,這些協(xié)議數(shù)據(jù)單元被保存在緩沖器存儲(chǔ)器229的緩沖器231中。首先,下面的描述將描述緩沖器管理引擎315提供給包處理器的、到緩沖器存儲(chǔ)器229的接口,然后描述這個(gè)接口的實(shí)現(xiàn)細(xì)節(jié)和BME315所執(zhí)行的其它功能。
BME 315的邏輯概圖圖38圖38顯示了到緩沖器管理引擎315所產(chǎn)生的緩沖器存儲(chǔ)器229的接口。在一個(gè)優(yōu)選實(shí)施方式中,緩沖器存儲(chǔ)器229可以被劃分為多達(dá)32個(gè)緩沖器池3803。當(dāng)n是池的數(shù)目時(shí),這些池中的n-l個(gè)包括緩沖器231,緩沖器231反過來又包括協(xié)議數(shù)據(jù)單元2503。n-l個(gè)池的數(shù)目和尺寸與緩沖器231的數(shù)目和尺寸是在DCP203被初始化時(shí)決定的;一個(gè)池可以有高達(dá)64K緩沖器,并且所有這些緩沖器231的尺寸是相同的,在一個(gè)優(yōu)選實(shí)施方式中,這個(gè)尺寸可以是從64字節(jié)到64K字節(jié)。每一個(gè)池2803是被一個(gè)池ID 3819所標(biāo)識,并且這個(gè)池中的每一個(gè)緩沖器是被一個(gè)緩沖器標(biāo)記233所標(biāo)識的;在一個(gè)緩沖器233內(nèi)部,用偏移3802來規(guī)定位置;這里,這個(gè)偏移規(guī)定了PDU 3804的開始。在一個(gè)優(yōu)選實(shí)施方式中,這個(gè)偏移規(guī)定了一個(gè)16字節(jié)塊數(shù)據(jù)的開始。
第n個(gè)池2803包括關(guān)于這些緩沖器的緩沖器標(biāo)記233。對n-l個(gè)緩沖器池2803中的每一個(gè),有一個(gè)緩沖器標(biāo)記隊(duì)列3805。一個(gè)緩沖器池2803(i)的一個(gè)緩沖器標(biāo)記隊(duì)列3805(i)包括關(guān)于緩沖器池2803(i)中每一個(gè)緩沖器231的緩沖器標(biāo)記項(xiàng)3806,并且關(guān)于緩沖器231(i,j)的緩沖器標(biāo)記項(xiàng)3806(i,j)包括緩沖器231(i,j)的緩沖器標(biāo)記233。每一個(gè)隊(duì)列2805具有指向這個(gè)隊(duì)列頭的一個(gè)指針3807和指向這個(gè)隊(duì)列末尾的一個(gè)指針3809。當(dāng)DCP 203被初始化時(shí),就建立這些隊(duì)列。當(dāng)DCP 203中的一個(gè)接收包處理器需要關(guān)于一個(gè)池2803(i)中的緩沖器的緩沖器標(biāo)記時(shí),這個(gè)接收包處理器從這個(gè)隊(duì)列3805(i)的頭部接收這些緩沖器標(biāo)記;當(dāng)一個(gè)發(fā)送包處理器釋放緩沖器標(biāo)記時(shí),這些緩沖器標(biāo)記被返回到這個(gè)隊(duì)列3805(i)的末尾。
當(dāng)然,如果一個(gè)多播命令已經(jīng)在比多于1個(gè)的隊(duì)列管理引擎315中的隊(duì)列215上,放置了帶一給定緩沖器標(biāo)記233(i,j)的描述符,緩沖器標(biāo)記233(i,j)就不能夠被返回到這個(gè)隊(duì)列3805(i)的末尾,直到緩沖器標(biāo)記233(i,j)的最后一個(gè)拷貝已經(jīng)被返回。在一個(gè)優(yōu)選實(shí)施方式中,通過緩沖器標(biāo)記計(jì)數(shù)器3811來解決這個(gè)問題。對在QME 305中比1個(gè)多的隊(duì)列215中的每一個(gè)緩沖器標(biāo)記,在緩沖器標(biāo)記計(jì)數(shù)器3811中有一個(gè)項(xiàng)3813,并且這個(gè)項(xiàng)包括緩沖器標(biāo)記目前所位于其中的隊(duì)列的計(jì)數(shù)。這個(gè)項(xiàng)可以被使用池ID和緩沖器標(biāo)記來訪問。
當(dāng)一個(gè)接收包處理器為一個(gè)描述符產(chǎn)生一個(gè)多播排隊(duì)命令時(shí),這個(gè)接收包處理器向BME 315發(fā)送一個(gè)消息,以表示這個(gè)描述符位于其中的隊(duì)列的數(shù)目;發(fā)送包處理器所接收的這個(gè)描述符包括來自這個(gè)發(fā)送的DR 3111的INC值;當(dāng)INC大于0時(shí),這個(gè)包處理器向BME 315發(fā)送一個(gè)計(jì)數(shù)器減1的消息,以表示BT計(jì)數(shù)器3811中BTAG的計(jì)數(shù)器應(yīng)被減1;當(dāng)這個(gè)計(jì)數(shù)器被減1到0時(shí),這個(gè)緩沖器標(biāo)記233被返回到其緩沖器標(biāo)記隊(duì)列3805的末尾。
BME 315經(jīng)過負(fù)荷總線317從這個(gè)包處理器接收對緩沖器231進(jìn)行寫入的命令,接收從緩沖器231進(jìn)行讀取的命令,接收獲得緩沖器標(biāo)記的命令,接收返回緩沖器標(biāo)記的命令,和接收設(shè)置和對BT計(jì)數(shù)器中項(xiàng)進(jìn)行減1的命令。對緩沖器進(jìn)行讀取和進(jìn)行寫入的命令的形式顯示在圖39的3901。這些字段的意義如下§CNT字段3903表示在傳送中,有效的、連續(xù)的16字節(jié)數(shù)據(jù)量的數(shù)目;§T#字段3905被一給定包處理器用于區(qū)分總線處理;§池ID 3907標(biāo)識緩沖器池3803(0…n-l);§偏移3909規(guī)定了在BTAG 3911所標(biāo)識的緩沖器中的偏移;和§BTAG 3911標(biāo)識了正在被讀取或者正在被寫入的緩沖器231。
池ID 3907,偏移3909,和BTAG 3911一起組成了緩沖器地址3913。如在后面關(guān)于負(fù)荷總線的討論中將更詳細(xì)描述的,一個(gè)命令是否是一個(gè)讀取命令或者寫入命令是從這個(gè)命令出現(xiàn)在其上的負(fù)荷總線周期來決定的。池ID值0規(guī)定BT池3803(n)和池ID值0x 1F規(guī)定關(guān)于QME 305的命令。對讀取命令,QME 315將規(guī)定數(shù)量的數(shù)據(jù)和處理#3905從規(guī)定的緩沖器返回到進(jìn)行請求的包處理器。這樣,這個(gè)進(jìn)行請求的包處理器可以使用這個(gè)處理號碼來跟蹤被返回?cái)?shù)據(jù)對什么請求作出了響應(yīng)。
一個(gè)包處理器可以對BTAG池3803(n)中的BTAG 233執(zhí)行下述BTAG讀取操作§分配BTAG 233;和§讀取在BT計(jì)數(shù)器211中的一個(gè)BTAG 233的CNT項(xiàng)2813;這些BTAG寫入操作是§初始化BTAG 233;§對一個(gè)BTAG 233進(jìn)行釋放;§在計(jì)數(shù)器3811中為一個(gè)BTAG 233設(shè)置一個(gè)計(jì)數(shù)器;§將關(guān)于一個(gè)BTAG 233的一個(gè)計(jì)數(shù)器進(jìn)行減1。
這些命令的形式被顯示在3915。BT池ID 3907表示其中規(guī)定了一個(gè)BTAG的BTAG池3803(n),這個(gè)BTAG是在其中規(guī)定了一個(gè)計(jì)數(shù)的BTAG字段3911中,這個(gè)計(jì)數(shù)在CNT 3903中,并且偏移3909包括規(guī)定BTAG命令之一和一個(gè)池ID 3919的一個(gè)命令值3917,這個(gè)池ID 3919規(guī)定了被這個(gè)BTAG命令所影響的BTAG 233所屬于的緩沖器池。在這個(gè)命令需要一個(gè)響應(yīng)的地方,在響應(yīng)中返回這個(gè)處理號碼3905。
在BTAG讀取命令中所采用的字段如下在分配命令中,CNT 3903表示正在發(fā)送命令的這個(gè)包處理器所請求的BTAG的數(shù)目。與這個(gè)值相關(guān),正在進(jìn)行請求的包處理器將從池ID 3919所規(guī)定的池中接收8,16,24,或者32個(gè)BTAG 233;當(dāng)然,BTAG字段3911被忽略。BME315通過在負(fù)荷總線上對這個(gè)進(jìn)行請求的包處理器進(jìn)行的一個(gè)寫入操作,來向這個(gè)進(jìn)行請求的包處理器返回BTAG 233。
在計(jì)數(shù)器讀取命令中,CNT 3903被設(shè)置為0,BTAG 3911包括其在BT計(jì)數(shù)器中的計(jì)數(shù)值將被讀取的BTAG 233,并且池ID 3919包括關(guān)于BTAG所屬于的池3803的池標(biāo)識3819。BME 315通過在負(fù)荷總線上對這個(gè)進(jìn)行請求的包處理器進(jìn)行的一個(gè)寫入操作,來返回這個(gè)計(jì)數(shù)值。
繼續(xù)BTAG寫入命令,這個(gè)初始化命令被用于設(shè)置BTE 3806中BTAG 233的值。在這個(gè)命令中,CNT規(guī)定了正在被進(jìn)行初始化的BTE3806的數(shù)目;可能的數(shù)目是8,16,24,和32。池ID 3919規(guī)定了正在被進(jìn)行初始化的BTAG 233所屬于的池3803,這樣,也規(guī)定了正在被進(jìn)行寫入的緩沖器標(biāo)記隊(duì)列3805。
這個(gè)釋放命令向BME 315返回一單個(gè)BTAG 233,以被再利用。在這個(gè)命令中,池ID 3919規(guī)定了正在被返回的BTAG 233所屬于的緩沖器池3803,并且BTAG 3911包括BTAG 233。
在這個(gè)計(jì)數(shù)器命令中,池ID 3919規(guī)定了其計(jì)數(shù)器正在被設(shè)置或者被進(jìn)行減1的BTAG 233的緩沖器池ID,并且BTAG 3911規(guī)定了自己的BTAG 233;在這個(gè)設(shè)置計(jì)數(shù)器的命令中,CNT 3903包括這個(gè)計(jì)數(shù)器將被設(shè)置成的這個(gè)值。QME 315通過在BT計(jì)數(shù)器中產(chǎn)生關(guān)于BTAG 233的一個(gè)CNT項(xiàng)3813并且將這個(gè)CNT項(xiàng)3813設(shè)置為這個(gè)命令中所規(guī)定的值,來對這個(gè)設(shè)置計(jì)數(shù)器命令作出響應(yīng)。這個(gè)設(shè)置計(jì)數(shù)器命令被接收包處理器發(fā)送,當(dāng)這個(gè)接收包處理器向QME 305發(fā)送帶關(guān)于BTAG 233所表示的PDU的一個(gè)描述符的一個(gè)多播排隊(duì)命令時(shí)。這個(gè)進(jìn)行減1的計(jì)數(shù)器命令被發(fā)送正在被進(jìn)行多播的一個(gè)協(xié)議數(shù)據(jù)單元的每一個(gè)發(fā)送包處理器所發(fā)送,當(dāng)這個(gè)發(fā)送包處理器已經(jīng)發(fā)送了這個(gè)PDU時(shí)。當(dāng)正在被進(jìn)行減1的這個(gè)計(jì)數(shù)器達(dá)到0時(shí),CNT 3803所屬于的BTAG 233被返回給BTAG 233的緩沖器池的BTQ 3805的末尾,并且計(jì)數(shù)器3811中關(guān)于BTAG的項(xiàng)變?yōu)闊o效。
BME 315的實(shí)現(xiàn)細(xì)節(jié)圖40和41除了用作對緩沖器231進(jìn)行寫入并且對緩沖器231進(jìn)行讀取和用于分配和返回緩沖器標(biāo)記233的接口外,BME 315還可以用作到SDRAM 229的一般接口。圖41顯示了SDRAM 229的內(nèi)容。除了在4103的BTAG和緩沖器池3803(0…n),SDRAM 229還包括§存儲(chǔ)器配置信息4111,它調(diào)整SDRAM 229的配置;§包處理器代碼和數(shù)據(jù)4109,它包括當(dāng)DCP 203被初始化時(shí),被XP 313載入到包處理器的代碼和數(shù)據(jù);對信道處理器,代碼和數(shù)據(jù)包括被用于對串行數(shù)據(jù)處理器進(jìn)行初始化的代碼和數(shù)據(jù)。
§翻譯表4107包括在對DCP 203進(jìn)行初始化時(shí),XP 313載入到翻譯表存儲(chǔ)器207中的翻譯表;§RTOS 4101是被XP 313所執(zhí)行的、關(guān)于實(shí)時(shí)操作系統(tǒng)的代碼;XP數(shù)據(jù)存儲(chǔ)器4105包括XP 313在執(zhí)行RTOS 4101中所使用的數(shù)據(jù)。
XP 313從RTOS 4101和XP數(shù)據(jù)存儲(chǔ)器4105中將指令拾取到IMEM 1503和DMEM 1507與1508,如所需要的。
圖40是在一個(gè)目前優(yōu)選的實(shí)施方式中的BME 315的硬件框圖。BME 315被連接到全局總線319和負(fù)荷總線317。BME 315經(jīng)過負(fù)荷總線317接收BTAG和緩沖器命令并且對它們作出響應(yīng);BME 315在全局總線319上接收來自XP 313的存儲(chǔ)器讀取請求,并且經(jīng)過負(fù)荷總線317對這個(gè)讀取請求作出響應(yīng)。包處理器的初始化是被用相同的方法完成的。
BME 315經(jīng)過這些總線而接收的每一個(gè)對一個(gè)處理的請求包括一個(gè)命令4004和一個(gè)地址3913,并且寫入命令還包括數(shù)據(jù)3818。這個(gè)地址如何被解釋當(dāng)然與命令的類型有關(guān)。在命令分析器4003中對命令進(jìn)行分析。對配置SDRAM 229的命令的處理與對其它命令的處理不同;如4001所顯示的,配置SDRAM 229的命令被提供到DRAM配置邏輯4035,DRAM配置邏輯4035將這個(gè)數(shù)據(jù)傳遞到一個(gè)配置FIFO4037,這個(gè)數(shù)據(jù)被從配置FIFO 4037載入到DRAM配置寄存器4030中。
其它命令如何被處理與它們是讀取命令或者寫入命令或者是其它命令有關(guān)。其它命令被提供到命令FIFO;讀取命令的地址被提供到讀取地址FIFO 4013;寫入命令的地址被提供到寫入地址FIFO 4021,并且數(shù)據(jù)被提供到數(shù)據(jù)FIFO 4017;對一個(gè)命令作出響應(yīng)而被讀取的數(shù)據(jù)被輸出到讀取數(shù)據(jù)FIFO 4043;這些FIFO用于提供在DCP 293和SDRAM 227之間所需要的靈活性。在地址的情形下,地址產(chǎn)生模塊4011將在緩沖器和BTAG命令中所使用的地址翻譯成適合于SDRAM 229的形式;為了完成這個(gè),地址產(chǎn)生模塊4011包括規(guī)定當(dāng)前如何配置SDRAM 229中的緩沖器的一個(gè)緩沖器配置文件。如目前所實(shí)現(xiàn)的,與一給定緩沖器地址3913相應(yīng)的、SDRAM 229中的一個(gè)地址被如下計(jì)算SDRAM地址=池基地址(池ID)+((Btag & Btag掩碼(池ID))>>Btag shift(池ID))CAT((偏移&偏移掩碼(池ID)))命令,讀取地址,和讀取地址分別從FIFO被提供到隊(duì)列4067,4015,和4025。DRAM CTRL 4009讀取在隊(duì)列4067的頭部的命令,DRAM CTRL 4009按照DRAM配置寄存器4039的當(dāng)前設(shè)置所需要地來解釋這個(gè)命令,并且向SDRAM 229的復(fù)用器4025和地址驅(qū)動(dòng)器4019和數(shù)據(jù)收發(fā)器4041提供必要的控制信號。
地址產(chǎn)生器4027讀取在讀取地址隊(duì)列415的頭部的地址,并且地址產(chǎn)生器4027將這個(gè)地址提供到驅(qū)動(dòng)器4019并且指出這是一個(gè)讀取操作。在寫入地址隊(duì)列4025的頭部的地址也被地址驅(qū)動(dòng)器4019所讀取,地址驅(qū)動(dòng)器4019將這個(gè)地址和一個(gè)寫入命令提供到地址驅(qū)動(dòng)器419。在這個(gè)相同的時(shí)刻,在寫入數(shù)據(jù)隊(duì)列4029頭部中的數(shù)據(jù)被輸出到數(shù)據(jù)收發(fā)器4041,以使這個(gè)數(shù)據(jù)可以被輸入到SDRAM 229。地址產(chǎn)生器4017將高優(yōu)先級提供給讀取地址隊(duì)列4015,因?yàn)橄蛞粋€(gè)發(fā)送包處理器提供PDU比將PDU保存在SDRAM 229中的時(shí)間要求更嚴(yán)格。
為了避免這樣一個(gè)情形一個(gè)讀取操作讀取在寫入數(shù)據(jù)隊(duì)列4029中正等待被覆蓋寫的數(shù)據(jù)并且因此獲得了舊的數(shù)據(jù),BME 315包括一個(gè)CAM 4023。當(dāng)一個(gè)地址被寫入到寫入地址隊(duì)列4025的末尾時(shí),這個(gè)地址的項(xiàng)就在CAM 4023中被產(chǎn)生;當(dāng)一個(gè)地址被寫入到讀取地址隊(duì)列4015的末尾時(shí),這個(gè)地址的項(xiàng)也被輸出到CAM 4023;如果地址的項(xiàng)存在匹配,在地址產(chǎn)生器4017讀取讀取地址隊(duì)列4015中的下一個(gè)地址以前,在寫入地址隊(duì)列4025中的地址的隊(duì)列就被清空。
BTAG緩存4031包括來自每一個(gè)BTAG隊(duì)列3805的頭端的BTAG233;這個(gè)隊(duì)列3805中的剩余部分在SDRAM229中。當(dāng)對BTAG233的一個(gè)請求從一個(gè)包處理器到達(dá)時(shí),如果可能的話,就從BTAG緩存4031來滿足這個(gè)請求;否則,從SDRAM 229中隊(duì)列3805的部分來滿足這個(gè)請求,并且從隊(duì)列3805中的這個(gè)部分被重新載入到這個(gè)隊(duì)列的BTAG緩存。
BTCNT 3811實(shí)現(xiàn)了BT計(jì)數(shù)器3811。緩沖器標(biāo)記計(jì)數(shù)命令設(shè)置,讀取,和對BTCNT 3811中的值減1;每一次接收到一個(gè)減1的BTAG命令,就如上面所描述的,對BTAG的CNT項(xiàng)的值進(jìn)行減1。
從SDRAM被讀取的PDU被輸出到讀取數(shù)據(jù)FIFO 4043;來自FIFO 4043的輸出,與來自DRAM配置4035,BTAG緩存4031,和BT CNT 3811的輸出一起均被提供到復(fù)用器4046,復(fù)用器4046選擇到讀取數(shù)據(jù)隊(duì)列4045的輸出,讀取數(shù)據(jù)隊(duì)列4045又依次將這個(gè)輸出輸出到負(fù)荷總線317。
環(huán)型總線311的細(xì)節(jié)圖28和42環(huán)型總線311基本上被包處理器使用來向TLE 301發(fā)送協(xié)議數(shù)據(jù)以進(jìn)行翻譯,并且從TLE 301接收翻譯的結(jié)果。但是,環(huán)型總線311可以被用于向任何環(huán)型總線311上的節(jié)點(diǎn)發(fā)送消息并且從任何節(jié)點(diǎn)接收對這個(gè)消息的答復(fù)。在一個(gè)優(yōu)選實(shí)施方式中,這些節(jié)點(diǎn)是包處理器和TLE 301。
環(huán)型總線311被設(shè)計(jì)成向在總線節(jié)點(diǎn)之間的消息提供有保證的訪問帶寬和有上限的延遲。這個(gè)總線是91比特寬,其中27比特用于控制信息,64比特用于從發(fā)送節(jié)點(diǎn)發(fā)送到接收節(jié)點(diǎn)的數(shù)據(jù)。這個(gè)總線被時(shí)分復(fù)用成一個(gè)數(shù)目可變的時(shí)隙,其中每一個(gè)時(shí)隙包括一個(gè)核心時(shí)鐘周期。每一個(gè)時(shí)隙被以存儲(chǔ)段組的形式從節(jié)點(diǎn)傳送到節(jié)點(diǎn)。當(dāng)目前在一個(gè)節(jié)點(diǎn)上的時(shí)隙沒有被占據(jù)時(shí)(即,沒有包括環(huán)型總線消息 2801),這個(gè)節(jié)點(diǎn)可以將到這些節(jié)點(diǎn)中一個(gè)的一個(gè)消息寫入到這個(gè)時(shí)隙中(其它實(shí)施方式可以允許到多個(gè)節(jié)點(diǎn)的消息被寫入到一個(gè)時(shí)隙中)。然后,這個(gè)消息開始從節(jié)點(diǎn)到節(jié)點(diǎn)的環(huán)行,直到這個(gè)目的地節(jié)點(diǎn)從這個(gè)時(shí)隙中取出這個(gè)消息。
每一個(gè)節(jié)點(diǎn)在環(huán)型總線311中可以有一個(gè)到5個(gè)時(shí)隙來包括其源節(jié)點(diǎn)是這個(gè)節(jié)點(diǎn)的消息。如果這個(gè)節(jié)點(diǎn)沒有使用多于1個(gè)的時(shí)隙,這些時(shí)隙就不存在在環(huán)型總線311上。從這個(gè)描述中可以看出,將一個(gè)消息從一個(gè)節(jié)點(diǎn)發(fā)送到總線上的另一個(gè)節(jié)點(diǎn)所需要的時(shí)間隨這個(gè)總線上消息的數(shù)目而變化,其時(shí)間上限是當(dāng)每一個(gè)節(jié)點(diǎn)在環(huán)型節(jié)點(diǎn)上具有5個(gè)包括消息的時(shí)隙時(shí)所需要的時(shí)間。
有5個(gè)類型的消息2801。每一個(gè)消息的類型被這個(gè)時(shí)隙中類型字段2807的值所表示。是這個(gè)消息的源的節(jié)點(diǎn)被SRC 2825所表示,并且是這個(gè)目的地的節(jié)點(diǎn)是DEST 2813所表示。這些類型是§沒有占據(jù)§指示,被源節(jié)點(diǎn)使用來查詢這個(gè)目的地節(jié)點(diǎn)是否對環(huán)型總線消息作出響應(yīng)。這個(gè)指示不包括數(shù)據(jù)。
§證實(shí),被一個(gè)指示的目的地節(jié)點(diǎn)使用來對這個(gè)指示的源節(jié)點(diǎn)作出響應(yīng)。這個(gè)證實(shí)不包括數(shù)據(jù)。
§請求,一個(gè)主動(dòng)提供的消息,其上有這個(gè)目的地節(jié)點(diǎn)進(jìn)行操作的數(shù)據(jù),并且在某些情形下,并且這個(gè)目的地節(jié)點(diǎn)向這個(gè)請求的源節(jié)點(diǎn)返回帶操作結(jié)果的一個(gè)響應(yīng)消息。
§響應(yīng),這個(gè)請求的目的地節(jié)點(diǎn)向這個(gè)請求的源節(jié)點(diǎn)發(fā)送的一個(gè)消息,這個(gè)消息上有這個(gè)目的地節(jié)點(diǎn)執(zhí)行的、對這個(gè)源的一個(gè)操作的結(jié)果。
圖42顯示了環(huán)型總線接口4201,每一個(gè)節(jié)點(diǎn)具有到這個(gè)環(huán)型總線的環(huán)型總線接口4201。有兩個(gè)關(guān)于其目的地是這個(gè)節(jié)點(diǎn)的消息的FIFOFIFO 4203包括請求消息;FIFO 4209包括其目的地是這個(gè)節(jié)點(diǎn)的響應(yīng)消息;兩個(gè)FIFO 4203和FIFO 4209被這個(gè)節(jié)點(diǎn)所讀取。溢出流FIFO 4211被其源是這個(gè)節(jié)點(diǎn)的消息所使用,這個(gè)消息必須繼續(xù)在環(huán)型總線311上環(huán)行,因?yàn)樗鼈兊哪康牡毓?jié)點(diǎn)還沒有讀取它們。當(dāng)其目的地是這個(gè)節(jié)點(diǎn)的一個(gè)消息到達(dá)了這個(gè)節(jié)點(diǎn)時(shí),它被放置在其類型所要求的FIFO中。如果這個(gè)FIFO中沒有空間來保存這個(gè)消息,這個(gè)消息就繼續(xù)環(huán)行。
這個(gè)節(jié)點(diǎn)經(jīng)過緩沖器4214將消息輸出到環(huán)型總線311,其中緩沖器4214從rbus in 4202,溢出FIFO 4211,和請求FIFO 4217接收消息,緩沖器4214包括正在被這個(gè)節(jié)點(diǎn)所發(fā)送的請求消息。如果溢出FIFO 4211是空的,當(dāng)其源節(jié)點(diǎn)是這個(gè)節(jié)點(diǎn)的一個(gè)消息被在這個(gè)節(jié)點(diǎn)中所接收時(shí),它就被立即放置在緩沖器4214中以在它到達(dá)時(shí)所占據(jù)時(shí)隙中被輸出。如果溢出FIFO 4211不是空的,其源節(jié)點(diǎn)是這個(gè)節(jié)點(diǎn)的新接收消息就被放置在溢出FIFO 4211的末尾,并且在溢出FIFO 4211頭部中的這個(gè)消息被放置在緩沖器4214,以在這個(gè)新接收消息到達(dá)時(shí)所占據(jù)時(shí)隙中被輸出。如果新接收的消息是空的,并且溢出FIFO 4211不是滿的,在請求FIFO 4217頭部中的這個(gè)消息被發(fā)送到空消息的時(shí)隙中;否則,在溢出FIFO 4211頭部中的這個(gè)消息被發(fā)送到空消息的時(shí)隙中。這個(gè)機(jī)制可以確保僅當(dāng)其它節(jié)點(diǎn)處理了一個(gè)節(jié)點(diǎn)所發(fā)送的消息時(shí),這個(gè)節(jié)點(diǎn)才能夠經(jīng)過環(huán)型總線311發(fā)送新消息。指示和證實(shí)是被接口4201在硬件級別上被處理的,并且不需要被排隊(duì)。
全局和負(fù)荷總線下面關(guān)于這些總線的實(shí)現(xiàn)的描述將從兩個(gè)總線均使用的簡單總線結(jié)構(gòu)的描述開始,然后,詳細(xì)描述總線本身。
請求總線和返回總線圖43和44在這個(gè)優(yōu)選實(shí)施方式中,全局總線319和負(fù)荷總線317被時(shí)分復(fù)用成一單個(gè)基本總線結(jié)構(gòu)。這個(gè)總線結(jié)構(gòu)被顯示在圖43的4301??偩€結(jié)構(gòu)4301是一個(gè)被時(shí)隙化的、多信道的、共享的、仲裁總線,并且允許流水線式和重疊操作。每一個(gè)操作從占據(jù)一5時(shí)鐘周期時(shí)隙的一個(gè)請求開始。這個(gè)總線以166MHz的時(shí)鐘速率進(jìn)行工作。這個(gè)包處理器4303,BME 315,和QME 305均被連接到總線結(jié)構(gòu),并且在這里被稱為總線節(jié)點(diǎn)。
總線結(jié)構(gòu)4301具有兩個(gè)部分,被總線節(jié)點(diǎn)所使用來產(chǎn)生總線請求并且提供關(guān)于這個(gè)請求的地址和數(shù)據(jù)的請求總線4305,和返回總線4317,返回總線4317被使用向進(jìn)行請求的總線節(jié)點(diǎn)返回一個(gè)總線請求的結(jié)果。請求總線4305具有3個(gè)信道兩個(gè)命令/地址信道,用于承載命令和地址,即用于承載關(guān)于全局總線操作的地址和命令的全局總線命令/地址信道4307和用于承載關(guān)于負(fù)荷總線操作的地址和命令的負(fù)荷總線命令/地址信道4309,和用于承載關(guān)于全局總線和負(fù)荷總線操作的數(shù)據(jù)的一個(gè)數(shù)據(jù)信道4311。在這個(gè)優(yōu)選實(shí)施方式中,每一個(gè)命令-地址信道是32比特寬,數(shù)據(jù)信道4311是128比特寬。返回總線4317具有兩個(gè)信道,用于承載一個(gè)請求和這個(gè)返回?cái)?shù)據(jù)將被返回的目的地地址的返回地址信道4321,和承載被返回?cái)?shù)據(jù)的返回?cái)?shù)據(jù)信道4319。另外,返回地址信道4321是32比特寬,并且返回?cái)?shù)據(jù)信道4319是128比特寬。為了執(zhí)行一個(gè)總線操作,能夠訪問一個(gè)時(shí)隙的一個(gè)節(jié)點(diǎn)將這個(gè)操作所需要的命令和地址放置到命令-地址信道4307之一上,并且將這個(gè)操作所需要的任何數(shù)據(jù)放置到請求數(shù)據(jù)信道4311上。當(dāng)一個(gè)操作將數(shù)據(jù)返回給請求者時(shí),總線控制4315將到這個(gè)返回?cái)?shù)據(jù)源的一個(gè)請求放置在返回地址信道上,其后是返回?cái)?shù)據(jù)將被返回的目的地地址,并且然后,返回?cái)?shù)據(jù)的源將需要被返回的數(shù)據(jù)放置在返回?cái)?shù)據(jù)信道4319上。一個(gè)節(jié)點(diǎn)對總線結(jié)構(gòu)4301的訪問是被總線控制4315所控制的。如后面將更詳細(xì)描述地,總線控制4315向每一個(gè)節(jié)點(diǎn)提供一個(gè)有保證的請求總線4305和返回總線4317的帶寬部分。
圖44顯示了一個(gè)總線操作是如何被一個(gè)節(jié)點(diǎn)所執(zhí)行的。每一個(gè)時(shí)隙占據(jù)5個(gè)總線周期。在一個(gè)命令-地址信道4307或者4309上,在一個(gè)時(shí)隙的周期內(nèi)關(guān)于這個(gè)總線的信息被顯示在4402
§周期0請求4405,規(guī)定了這個(gè)操作;§周期1地址4407,規(guī)定了這個(gè)操作的一個(gè)地址;§周期2總線授權(quán)4409總線控制4315在這個(gè)周期返回一個(gè)信號,以表示哪一個(gè)請求節(jié)點(diǎn)接收到訪問;§周期3確認(rèn)4411如果在前一個(gè)時(shí)隙中所規(guī)定的操作成功了,總線控制4315在這個(gè)周期中返回一個(gè)確認(rèn)。
§周期4地址4413,規(guī)定了這個(gè)操作的第二個(gè)地址。
如后面將更詳細(xì)描述的,地址的使用是被這個(gè)操作所定義的。
一個(gè)節(jié)點(diǎn)對總線結(jié)構(gòu)4301可以執(zhí)行兩類一般類型的操作短操作,它傳送4字節(jié)的數(shù)據(jù),和長操作,它傳送64字節(jié)的數(shù)據(jù)。在這些類型中的每一個(gè)中,有一個(gè)讀取操作和一個(gè)寫入操作。在一給定時(shí)隙4402中,一個(gè)包處理器4303可以執(zhí)行一個(gè)讀取操作,而另一個(gè)包處理器可以執(zhí)行這個(gè)類型的一個(gè)寫入操作。短操作被在全局總線命令-地址信道4307中所規(guī)定,而長操作在負(fù)荷總線命令-地址信道上被規(guī)定。
在圖44中,4425顯示了短操作。在一個(gè)短操作中,在一個(gè)時(shí)隙4402期間這個(gè)操作被在請求命令-地址信道4309上進(jìn)行請求,在這個(gè)時(shí)隙4402中的第一地址是寫入地址4415,如果在這個(gè)操作中這個(gè)數(shù)據(jù)將被寫入,并且如果這個(gè)數(shù)據(jù)將被讀取,最后的地址就是讀取地址4417。對這個(gè)寫入操作,已經(jīng)被授權(quán)對請求總線3305進(jìn)行訪問的這個(gè)節(jié)點(diǎn)將需要被寫入到這個(gè)寫入地址所規(guī)定的地址中的4字節(jié)數(shù)據(jù)在時(shí)隙4402的第5個(gè)時(shí)隙中被放置在請求數(shù)據(jù)信道4311上。
對這個(gè)短讀取操作,當(dāng)總線控制器4315已經(jīng)為一個(gè)讀取操作授權(quán)了總線時(shí),它在時(shí)隙4402的第4個(gè)時(shí)隙中將關(guān)于一個(gè)節(jié)點(diǎn)的一個(gè)請求4421放置在返回地址信道4321上??偩€控制器4315在下一個(gè)時(shí)隙4402的第1個(gè)時(shí)隙中將關(guān)于這個(gè)數(shù)據(jù)4423的返回地址放置在返回地址信道4321上,并且這個(gè)請求4421中所規(guī)定的這個(gè)節(jié)點(diǎn)在這下一個(gè)時(shí)隙4402的第3個(gè)時(shí)隙中將返回?cái)?shù)據(jù)4420本身放置在返回地址信道4321上。
長操作如4427所顯示。在時(shí)隙4402中、一個(gè)節(jié)點(diǎn)請求一個(gè)長操作的周期期間,這個(gè)節(jié)點(diǎn)在周期1中將關(guān)于一個(gè)長讀取操作的讀取地址4417放置在請求地址總線上;這個(gè)節(jié)點(diǎn)在周期4中將關(guān)于一個(gè)長寫入操作的寫入地址4415放置在請求地址總線上。在長寫入操作中,如果這個(gè)節(jié)點(diǎn)已經(jīng)被授權(quán)進(jìn)行訪問,這個(gè)節(jié)點(diǎn)在下一個(gè)時(shí)隙4402的周期1-4中,將需要被寫入的64字節(jié)數(shù)據(jù)4429以16-字節(jié)塊的形式放置到請求數(shù)據(jù)信道4311上。在長讀取操作中,如果這個(gè)節(jié)點(diǎn)已經(jīng)被授權(quán)進(jìn)行訪問,總線控制器4315在時(shí)隙4402的第5個(gè)周期中,將規(guī)定了這個(gè)響應(yīng)節(jié)點(diǎn)的一個(gè)請求放置到返回地址信道4321上;總線控制器4315在下一個(gè)時(shí)隙4402的第1個(gè)周期中,將這個(gè)請求節(jié)點(diǎn)的地址放置到返回地址信道4321上;這個(gè)響應(yīng)節(jié)點(diǎn)在這下一個(gè)時(shí)隙4402的第2個(gè)周期中,將表示在返回?cái)?shù)據(jù)中是有效的16-字節(jié)數(shù)據(jù)塊的數(shù)目的一個(gè)計(jì)數(shù)值4435放置到返回地址信道4321上,并且這個(gè)響應(yīng)節(jié)點(diǎn)從這下一個(gè)時(shí)隙4402的第3個(gè)周期開始,將這個(gè)返回?cái)?shù)據(jù)4437以4個(gè)16-字節(jié)數(shù)據(jù)塊的形式放置到返回?cái)?shù)據(jù)信道4319上。
在請求和返回總線上實(shí)現(xiàn)全局總線319和負(fù)荷總線317圖45圖45在4501顯示了全局總線319和負(fù)荷總線317如何被復(fù)用到總線結(jié)構(gòu)4301。從圖4中可以清楚地看出,時(shí)隙4402是5個(gè)周期長,而需要被寫入的長數(shù)據(jù)4429和需要被返回的數(shù)據(jù)4437每一個(gè)均是4個(gè)周期長,并且需要被寫入的短數(shù)據(jù)4419和需要被返回的短數(shù)據(jù)4420每一個(gè)是一單個(gè)周期長。
這樣,就可能在總線結(jié)構(gòu)4301上重疊短操作和長操作,如圖45所顯示的,并且由此可以將請求數(shù)據(jù)信道4311的每5個(gè)周期中的4個(gè)周期用于負(fù)荷數(shù)據(jù),而第5個(gè)周期用于全局總線并且相同的第5個(gè)周期用于返回?cái)?shù)據(jù)信道4319。在圖45中,實(shí)現(xiàn)全局總線319的短操作被顯示在圖中的上半部分;實(shí)現(xiàn)全局總線317的長操作被顯示在圖中的下半部分。如圖中間部分的請求命令-地址信道4307和4309的表示所顯示的,負(fù)荷時(shí)隙4507比全局時(shí)隙4503提前一個(gè)時(shí)隙周期;這樣,需要被寫入到負(fù)荷時(shí)隙4507中的長數(shù)據(jù)4429在需要被寫入到全局總線時(shí)隙4503的短數(shù)據(jù)4519和需要被寫入到全局總線時(shí)隙4505的短數(shù)據(jù)4419之間,出現(xiàn)在請求數(shù)據(jù)信道4311上。類似地,在返回總線4317上,需要被返回的、關(guān)于負(fù)荷請求4509的長返回?cái)?shù)據(jù)4437在需要被返回的、關(guān)于全局請求4503的短數(shù)據(jù)和需要被返回的、關(guān)于全局請求4505的短數(shù)據(jù)之間,出現(xiàn)在返回?cái)?shù)據(jù)信道4319上。
全局總線317上的總線訪問和尋址圖45圖45顯示了關(guān)于全局總線319和負(fù)荷總線317的時(shí)隙4402如何被劃分為偶時(shí)隙和奇時(shí)隙。一個(gè)偶時(shí)隙-奇時(shí)隙對組成一個(gè)10-周期的時(shí)間段4502。這個(gè)偶和奇時(shí)隙與包處理器4303的偶和奇組相應(yīng)。組中的成員關(guān)系如下所顯示
在每一個(gè)時(shí)間段4502中,4個(gè)全局總線處理被執(zhí)行§在偶時(shí)隙中一個(gè)短讀取操作和一個(gè)短寫入操作;§在奇時(shí)隙中一個(gè)短讀取操作和一個(gè)短寫入操作。
對這些類型的處理中的每一個(gè)均有一個(gè)獨(dú)立的令牌。在一個(gè)組中的包處理器中,以循環(huán)方式來旋轉(zhuǎn)令牌,在組中,具有關(guān)于一個(gè)操作的令牌的這個(gè)包處理器對這個(gè)操作具有最高優(yōu)先級。如果這個(gè)包處理器不請求它具有其令牌的這個(gè)類型的處理,按升序排列最靠近這個(gè)令牌的請求包處理器被授權(quán)訪問這個(gè)總線。一個(gè)包處理器接收對這個(gè)總線的訪問的最大延遲是100個(gè)周期。沒有包處理器產(chǎn)生一個(gè)寫入請求的時(shí)隙被隊(duì)列管理引擎305使用來向這些包處理器廣播隊(duì)列狀態(tài)報(bào)告2915。
在全局總線處理中,讀取地址4417和寫入地址4415是全(flat)32-比特的地址。在返回?cái)?shù)據(jù)信道4319上的地址4423是一個(gè)有效的比特,其后是將這個(gè)接收者標(biāo)識為包處理器,BME 315,或者QME 305之一的一個(gè)處理器標(biāo)識符。
負(fù)荷總線317上的總線訪問和尋址圖45負(fù)荷總線317上的總線訪問與上面關(guān)于全局總線319的描述完全相同;另外,每一個(gè)時(shí)間段4502被劃分為一個(gè)偶時(shí)隙和一個(gè)奇時(shí)隙,并且就全局總線來說,這些包處理器被分配到奇時(shí)隙和偶時(shí)隙。另外,在一單個(gè)時(shí)間段4502內(nèi),有關(guān)于4個(gè)負(fù)荷總線處理的時(shí)隙§在偶時(shí)隙中一個(gè)長讀取操作和一個(gè)長寫入操作;§在奇時(shí)隙中一個(gè)長讀取操作和一個(gè)長寫入操作。
如對全局總線所描述的,令牌被采用來決定在這些包處理器之間的優(yōu)先級,除了QME 305或者執(zhí)行處理器313沒有特殊的結(jié)構(gòu)外。對地址來說,長讀取操作和寫入操作的地址是圖39中所顯示的負(fù)荷緩沖器命令。在返回地址信道4321上的、關(guān)于返回負(fù)荷數(shù)據(jù)的地址與返回全局?jǐn)?shù)據(jù)的地址類似,除了它還包括一個(gè)3-比特處理號碼,在數(shù)據(jù)被返回的負(fù)荷緩沖器命令中,總線控制器4315從處理號碼3905拷貝這3-比特處理號碼。
DCP 203作為一個(gè)一般的數(shù)據(jù)流處理器雖然前面的討論已經(jīng)描述了DCP 203是如何被用于一個(gè)包交換的,但是該相關(guān)領(lǐng)域內(nèi)的技術(shù)人員將很清楚,DCP 203可以被用于處理數(shù)據(jù)流的任何應(yīng)用中。通過組合,DCP 203的信道處理器307可以被構(gòu)造成處理串行比特流中的數(shù)據(jù),4比特流中的數(shù)據(jù),和字節(jié)流中的數(shù)據(jù),并且構(gòu)造處理器303可以處理由32-比特字組成的流中的數(shù)據(jù)。TLE 301提供了用于保存和處理每一個(gè)數(shù)據(jù)流上下文信息的一個(gè)機(jī)制,并且QME 305提供了用于將關(guān)于流中所包括的負(fù)荷的信息從接收包括這個(gè)負(fù)荷的流的包處理器傳遞到發(fā)送包這個(gè)負(fù)荷的流的包處理器的一個(gè)機(jī)制,并且提供了連接到QME 305的外部單元。構(gòu)造處理器303允許DCP 203被連接到另一個(gè)DCP 203,連接到一個(gè)并行總線,或者連接到一個(gè)交換構(gòu)造,并且這樣,允許從一些DCP203構(gòu)造用于處理數(shù)據(jù)流的大設(shè)備,并且允許DCP 203與其它處理數(shù)據(jù)流的設(shè)備組合在一起。
包處理器可以被編程為處理任何類型的數(shù)據(jù)流。一個(gè)可編程SDP420與每一個(gè)包處理器中的一個(gè)可編程CPRC 401和一個(gè)DMA引擎的組合允許提取流中控制數(shù)據(jù)的操作與提取流的負(fù)荷,處理這個(gè)控制數(shù)據(jù)和將這個(gè)負(fù)荷傳送到BME 315的操作分開。在CPRC 401內(nèi)使用數(shù)據(jù)作用域來維護(hù)關(guān)于SDP 420和DMA引擎對流的處理的當(dāng)前狀態(tài)的信息允許對控制數(shù)據(jù)的處理可以與負(fù)荷在BME 315和SDP 420之間的傳送一起同時(shí)進(jìn)行,并且也大大地簡化了CPRC 401的編程。SDP420中的發(fā)送處理器和接收處理器可以被編程為對輸入流中的圖案和對比特計(jì)數(shù)作出響應(yīng),并且這個(gè)旁路的存在允許能夠比較容易地配置發(fā)送處理器和接收處理器來處理不同類型的流。通過配置一個(gè)SDP重新循環(huán)一個(gè)流,組合信道處理器來處理高速串行流或者由4比特或者字節(jié)組成的流,和配置I/O管腳與不同類型的發(fā)送媒質(zhì)一起工作,就獲得了更多的靈活性。
DCP 203通過使用能夠確保在包處理器和TLE 301之間通信的最小延遲的一個(gè)環(huán)型總線,通過使用一個(gè)時(shí)隙化的總線來傳送突發(fā)數(shù)據(jù),以在BME 315和包處理器之間傳送負(fù)荷,以從BME 315傳送緩沖器標(biāo)記和將緩沖器標(biāo)記傳送到包處理器,和以在包處理器和QME 305之間傳送描述符,DCP 203處理在數(shù)據(jù)流處理中所固有的時(shí)間限制。通過允許這些設(shè)備對相互之間的局部存儲(chǔ)器進(jìn)行訪問的一個(gè)全局地址,就可以在包處理器,QME 305,和BME 315之間進(jìn)行協(xié)調(diào)。在包處理器串的情形下,串的成員能夠快速地訪問相互之間的局部存儲(chǔ)器。
結(jié)尾前面的詳細(xì)描述已經(jīng)向在本發(fā)明所屬于的領(lǐng)域內(nèi)的那些技術(shù)人員,公開了對本發(fā)明者目前所知為最佳的、采用它們的技術(shù)來處理數(shù)據(jù)流的模式,數(shù)據(jù)流是被發(fā)送到被設(shè)計(jì)成處理和路由包的一個(gè)數(shù)字通信處理器集成電路。相關(guān)領(lǐng)域內(nèi)的技術(shù)人員能夠立即理解,數(shù)字通信處理器的獨(dú)立特征可以根據(jù)實(shí)際需要采用,而不是在這里所公開的情形中所采用,并且可以使用不同的方法從這里所公開的情形進(jìn)行組合。相關(guān)領(lǐng)域內(nèi)的技術(shù)人員將進(jìn)一步認(rèn)識到,可以使用不同的實(shí)現(xiàn)方法來實(shí)現(xiàn)這些特征。因?yàn)樗星懊娴脑?,這個(gè)詳細(xì)描述在所有方面均被認(rèn)為是示例性的,并且不具有任何限制性,并且這里所公開的本發(fā)明的寬度不是從這個(gè)詳細(xì)描述來決定的,而是從被理解為專利法所允許的全限制范圍的權(quán)利要求書來決定的。
權(quán)利要求
1.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,并且包括一個(gè)包括指令的可被寫入的指令存儲(chǔ)器;和一個(gè)接收處理器,連續(xù)地執(zhí)行特定的指令來處理從這個(gè)數(shù)據(jù)流輸入所接收的數(shù)據(jù)流和/或者一個(gè)發(fā)送處理器,連續(xù)地執(zhí)行特定的指令來處理需要被輸出到數(shù)據(jù)流輸出的數(shù)據(jù)流。
2.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,并且包括一個(gè)對這個(gè)數(shù)據(jù)流處理器是局部的、可被寫入的局部存儲(chǔ)器,多個(gè)局部存儲(chǔ)器屬于可以被任何一個(gè)數(shù)據(jù)流處理器所訪問的一個(gè)全局地址空間。
3.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連;和一個(gè)上下文處理器,對從正在處理一個(gè)數(shù)據(jù)流的一給定數(shù)據(jù)流處理器所接收 的信息作出響應(yīng)以產(chǎn)生關(guān)于這給定數(shù)據(jù)流的上下文的信息,并且將這個(gè)上下文信息提供給這個(gè)處理器;這個(gè)給定數(shù)據(jù)流處理器使用這個(gè)上下文信息來處理這個(gè)數(shù)據(jù)流。
4.如權(quán)利要求3所提出的這個(gè)集成電路,其中這個(gè)上下文處理器接收這個(gè)信息,并且通過一個(gè)總線來提供上下文信息,在這個(gè)總線上,對數(shù)據(jù)流處理器中的每一個(gè)和上下文處理器的延遲有一個(gè)上限。
5.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流,一個(gè)數(shù)據(jù)流包括控制數(shù)據(jù)和負(fù)荷;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,一個(gè)被接收的數(shù)據(jù)流正在被進(jìn)行處理以提取這個(gè)控制數(shù)據(jù)和負(fù)荷,并且一個(gè)被發(fā)送數(shù)據(jù)流正在被處理以將控制數(shù)據(jù)添加到這個(gè)負(fù)荷上;一個(gè)緩沖器管理器,提供用于保存負(fù)荷的緩沖器的地址,并且對帶一個(gè)緩沖器地址的一個(gè)寫入操作作出響應(yīng),將負(fù)荷寫入到這個(gè)被尋址的緩沖器,并且對帶一個(gè)緩沖器地址的一個(gè)讀取操作作出響應(yīng),以從這個(gè)被尋址的緩沖器讀取負(fù)荷;和一個(gè)隊(duì)列管理器管理負(fù)荷描述符的隊(duì)列,并且每一個(gè)描述符包括至少一個(gè)緩沖器地址,這個(gè)隊(duì)列管理器通過將一個(gè)排隊(duì)命令所提供的一個(gè)描述符在這個(gè)命令中所規(guī)定的一個(gè)隊(duì)列中進(jìn)行排隊(duì)來對這個(gè)排隊(duì)命令作出響應(yīng),通過在一個(gè)出列命令所規(guī)定的這個(gè)隊(duì)列中取出一個(gè)描述符來對這個(gè)出列命令作出響應(yīng),一個(gè)數(shù)據(jù)流處理器通過使用所接收的一個(gè)數(shù)據(jù)流的負(fù)荷和這個(gè)緩沖器管理器所提供的一個(gè)地址來對緩沖器管理器執(zhí)行一個(gè)寫入操作,通過使用包括這個(gè)地址的一個(gè)描述符來執(zhí)行一個(gè)排隊(duì)操作并且通過執(zhí)行從一個(gè)隊(duì)列中進(jìn)行取出的操作來發(fā)送一個(gè)數(shù)據(jù)流,來對這個(gè)所接收的數(shù)據(jù)流作出響應(yīng),并且使用作為在對緩沖器管理器的一個(gè)讀取操作中一個(gè)從隊(duì)列中進(jìn)行取出操作的一個(gè)結(jié)果而獲得的地址,使用從這個(gè)緩沖器管理器所接收的負(fù)荷來產(chǎn)生一個(gè)數(shù)據(jù)流,并且發(fā)送所產(chǎn)生的數(shù)據(jù)流。
6.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連;和一個(gè)組合特定數(shù)據(jù)流處理器的組合器,以使被組合的數(shù)據(jù)流處理器可以在處理一個(gè)數(shù)據(jù)流時(shí)進(jìn)行合作,這個(gè)組合器包括在被組合的數(shù)據(jù)流處理器之間的、可配置的互聯(lián);一個(gè)可配置的操作協(xié)調(diào)器,用于協(xié)調(diào)被組合數(shù)據(jù)流處理器之間的操作;和一個(gè)配置器,用于按照組合這些數(shù)據(jù)流處理器的需要來規(guī)定可配置的互聯(lián)和可配置的操作協(xié)調(diào)器。
7.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,并且包括一個(gè)控制數(shù)據(jù)處理器,一個(gè)接收處理器,處理從這個(gè)數(shù)據(jù)流輸入所接收的數(shù)據(jù)流,和/或者一個(gè)發(fā)送處理器,用于處理需要被輸出到這個(gè)數(shù)據(jù)流輸出的數(shù)據(jù)流,和數(shù)據(jù)結(jié)構(gòu),被控制數(shù)據(jù)處理器,接收處理器和/或者發(fā)送處理器所共享,并且包括被接收處理器和/或者發(fā)送處理器和控制數(shù)據(jù)處理器對接收處理器和/或者發(fā)送處理器和控制數(shù)據(jù)處理器采用流水線的方法處理一個(gè)數(shù)據(jù)流進(jìn)行協(xié)調(diào)所使用的信息。
8.一個(gè)集成電路,包括多個(gè)數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,并且包括一個(gè)接收處理器,用于串行地處理從這個(gè)數(shù)據(jù)流輸入所接收的數(shù)據(jù)流,和/或者一個(gè)發(fā)送處理器,用于串行地處理需要被輸出到數(shù)據(jù)流輸出的數(shù)據(jù)流,這個(gè)接收處理器和/或者發(fā)送處理器具有多個(gè)處理部件,并且可以被配置成在處理數(shù)據(jù)流時(shí)旁路一個(gè)或者多個(gè)部件。
9.一個(gè)集成電路,包括多個(gè)串行數(shù)據(jù)流輸入和/或者輸出,它們接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的數(shù)據(jù)流處理器,每一個(gè)數(shù)據(jù)流處理器與一個(gè)數(shù)據(jù)流輸入和或/者數(shù)據(jù)流輸出相連,并且包括一個(gè)接收處理器,用于串行地處理從這個(gè)數(shù)據(jù)流輸入所接收的數(shù)據(jù)流,和/或者一個(gè)發(fā)送處理器,用于串行地處理需要被輸出到數(shù)據(jù)流輸出的數(shù)據(jù)流,這個(gè)接收處理器將一個(gè)被處理的數(shù)據(jù)流寫入到一個(gè)存儲(chǔ)器,和/或者這個(gè)發(fā)送處理器從存儲(chǔ)器中讀取一個(gè)被處理的數(shù)據(jù)流,并且這個(gè)接收處理器可以被重新配置成從這個(gè)存儲(chǔ)器中讀取需要被處理的一個(gè)數(shù)據(jù)流,和/或者這個(gè)發(fā)送處理器可以被重新配置成將一個(gè)被處理的數(shù)據(jù)流寫入到這個(gè)存儲(chǔ)器。
10.一個(gè)集成電路,包括多個(gè)串行數(shù)據(jù)流輸入和/或者輸出,它們串行接收和/或者發(fā)送數(shù)據(jù)流;至少一組并行數(shù)據(jù)流輸入和/或者輸出,它們并行接收和/或者發(fā)送數(shù)據(jù)流;多個(gè)處理這個(gè)數(shù)據(jù)流的串行數(shù)據(jù)流處理器,每一個(gè)串行數(shù)據(jù)流處理器與一個(gè)串行數(shù)據(jù)流輸入和/或者數(shù)據(jù)流輸出相連,并且包括一個(gè)串行接收處理器,用于處理從這個(gè)串行數(shù)據(jù)流輸入所接收的數(shù)據(jù)流,和/或者一個(gè)串行發(fā)送處理器,用于處理需要被輸出到數(shù)據(jù)流輸出的數(shù)據(jù)流;和至少被連接到這組并行數(shù)據(jù)流輸入的一個(gè)并行數(shù)據(jù)流處理器,每一個(gè)并行數(shù)據(jù)流處理器包括一個(gè)并行接收處理器,用于處理從這組并行數(shù)據(jù)流輸入所接收的數(shù)據(jù)流,和/或者一個(gè)并行發(fā)送處理器,用于處理需要被輸出到這組并行數(shù)據(jù)流輸入的數(shù)據(jù)流。
11.一個(gè)集成電路,包括多個(gè)I/O管腳,接收和/或者發(fā)送信號;一個(gè)數(shù)據(jù)流處理器,用于處理被這些信號所表示的數(shù)據(jù);一個(gè)可寫入的配置區(qū)分符,用于規(guī)定其多個(gè)配置中的一個(gè)配置;和配置電路,連接在多個(gè)I/O管腳和這個(gè)數(shù)據(jù)流處理器之間,并且對這個(gè)配置區(qū)分符作出響應(yīng)以按照這個(gè)配置區(qū)分符所規(guī)定的來配置I/O管腳,由此這個(gè)集成電路可以被用于多個(gè)發(fā)送協(xié)議。
12.如權(quán)利要求11中所提出的這個(gè)集成電路,其中這個(gè)配置區(qū)分符規(guī)定了I/O管腳的電氣特性;和這個(gè)配置電路使用所需要的電氣特性來配置I/O管腳。
13.如權(quán)利要求11中所提出的這個(gè)集成電路,其中有多個(gè)數(shù)據(jù)流處理器;和這個(gè)配置區(qū)分符規(guī)定了多個(gè)數(shù)據(jù)流處理器中哪一個(gè)數(shù)據(jù)流處理器被連接到這多個(gè)I/O管腳,由此多個(gè)數(shù)據(jù)流處理器可以共享對被所接收信號和/或者多個(gè)I/O管腳所發(fā)送的信號所表示的數(shù)據(jù)的處理。
全文摘要
一個(gè)集成電路(203),用于處理一般的數(shù)據(jù)流,并且用于處理特殊的包流。這個(gè)集成電路包括一些包處理器(307,313,303),一個(gè)表搜尋引擎(301),一個(gè)隊(duì)列管理引擎(305)和一個(gè)緩沖器管理引擎(315)。這些包處理器包括一個(gè)接收處理器(421),一個(gè)發(fā)送處理器(427)和一個(gè)RISC核心處理器(401),所有這些處理器均是可以被編程的。這個(gè)接收處理器和這個(gè)核心處理器進(jìn)行合作來接收和路由正在被接收的包,并且這個(gè)核心處理器和這個(gè)發(fā)送處理器進(jìn)行合作來發(fā)送包。通過使用來自表搜尋引擎的信息決定這個(gè)隊(duì)列管理引擎中、將接收描述這個(gè)被接收包的負(fù)荷的一個(gè)描述符217的一個(gè)隊(duì)列215,來完成這個(gè)路由。這個(gè)發(fā)送處理器從一個(gè)隊(duì)列中讀取描述符,并且發(fā)送在這個(gè)描述符中所描述的負(fù)荷。這個(gè)核心處理器,發(fā)送處理器,和接收處理器并行進(jìn)行工作。這些包處理器中的、隊(duì)列管理引擎中的和緩沖器管理引擎中的局部存儲(chǔ)器和寄存器是一個(gè)全局地址空間(321)的一部分。這些包處理器包括用于處理在串行媒質(zhì)中所接收的包的串行處理器(307)和至少一個(gè)并行處理器(303)。這個(gè)并行處理器可以被用于將這個(gè)集成電路連接到另一個(gè)相同類型的集成電路,連接可以是使用一個(gè)總線,或者使用一個(gè)交換構(gòu)造。通過設(shè)置全局存儲(chǔ)器中寄存器中的比特,這些包處理器可以被進(jìn)行進(jìn)一步配置。配置包括串行包處理器的組合,在一個(gè)串行包處理器中重新循環(huán)一個(gè)數(shù)據(jù)流,旁路這個(gè)接收或者發(fā)送處理器的部件,并且配置一個(gè)串行包處理器的I/O管腳來處理不同的傳輸媒質(zhì)。
文檔編號H04L12/56GK1319209SQ9980800
公開日2001年10月24日 申請日期1999年5月7日 優(yōu)先權(quán)日1998年5月8日
發(fā)明者托馬斯·B·布萊特曼, 安德魯·T·布朗, 約翰·F·布朗, 詹姆斯·A·法雷爾, 安德魯·D·芬克, 戴維·J·赫塞克, 愛德華·J·邁克萊倫, 唐納德·A·普萊爾, 馬克·A·?;? 保羅·施米特 申請人:摩托羅拉公司