專利名稱:高性能通信控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及通信控制器,具體涉及高性能通信控制器。
通信控制器一般可見于網(wǎng)絡(luò)和電信產(chǎn)品中。通信控制器根據(jù)各種多層通信協(xié)議處理數(shù)據(jù)流,并把與一個通信層相關(guān)的數(shù)據(jù)包變換為與另一個通信層相關(guān)的數(shù)據(jù)包。
當通信處理機處理與各種通信協(xié)議相關(guān)的數(shù)據(jù)流時,通信控制器以分離模式來處理各個通信協(xié)議,并可在不同的模式之間跳轉(zhuǎn)。
通信控制器不但需要處理高速數(shù)據(jù)流,而且還需要根據(jù)各種多層通信協(xié)議來處理數(shù)據(jù)流。為了處理高速數(shù)據(jù)流,通信控制器需要有很大的帶寬,例如數(shù)百MIPS甚至更多。為了能夠根據(jù)各種通信協(xié)議,特別是以非??焖俚哪J浇邮眨l(fā)送并處理數(shù)據(jù),通信控制器需要在它的不同模式之間很快速地跳轉(zhuǎn)。
圖1是一張根據(jù)現(xiàn)有技術(shù)的簡化的示意圖,描述了舊式通信信道1180,舊式外存儲體1100和舊式通信控制器101。舊式通信控制器101與摩托羅拉的MC68360芯片類似。舊式通信控制器101包括舊式調(diào)度器1050,舊式的第一直接存儲器存取控制器(也就是舊式的第一DMA)1060,舊式的第一存儲體1070,舊式的第一處理器1090,舊式的指令存儲體1130,舊式的第二處理器1100和舊式接口1160。舊式的通信控制器101與一個舊式的外存儲體1110相連。舊式的通信控制器101還可以與其他外部設(shè)備如另一個外部存儲體,主系統(tǒng)和其他處理器相連,但并不局限于以上三種外部設(shè)備。舊式的通信控制器101可以與多個外存儲體相連。為了便于解釋,把這多個存儲體稱之為舊式外存儲體1110。
舊式調(diào)度器1050具有輸入1054,1056和輸入/輸出(即I/O)1052。舊式的第一DMA1060具有輸入1066,輸出1068和輸入/輸出1062,1064。舊式的第一存儲體1070具有輸入/輸出1072,1074和1076。舊式的第一處理器1090具有輸入1095,輸出1096和輸入/輸出1092,1094,1098。舊式的第二處理器1100包括輸入/輸出1102。舊式的外存儲體1110包括輸入/輸出1116。舊式接口1160包括輸入/輸出1162和1165。
N個舊式外設(shè)PR(1)—PR(N)1141-1148,統(tǒng)一表示為1140,與舊式外設(shè)總線1112相連。N個舊式外設(shè)1140被置于舊式通信控制器101內(nèi)。這N個舊式外設(shè)1140把舊式通信控制器101與多個舊式通信信道CC(1)-CC(K)1181-1188相連,1181-1188統(tǒng)一表示為1180。舊式通信信道1180具有統(tǒng)一表示為1182的輸入/輸出。舊式外設(shè)具有統(tǒng)一表示為1144的輸入/輸出。輸入/輸出1182與輸入/輸出1144相連。
舊式外設(shè)1140的輸入/輸出1142,舊式第一存儲體1070的輸入/輸出1072和舊式調(diào)度器1150的輸入1054均與舊式外設(shè)總線1112相連。舊式第一DMA1060的輸入/輸出1062,舊式的外存儲體1110的輸入/輸出1116,舊式第二處理器1100的輸入/輸出1102,舊式接口1160的輸入/輸出1162與單總線1113相連。單總線1113是一根外部總線,它把舊式通信控制器101與不同的外部設(shè)備連接起來。舊式調(diào)度器1150的輸入/輸出1052與舊式的第一處理器1090的輸入/輸出1092相連。舊式的第一處理器1090的輸入/輸出1094與舊式的指令存儲體1130的輸入/輸出1132相連。舊式的第一處理器1090的輸入/輸出1095與接口1160的輸入/輸出1165相連。舊式的第一處理器90的輸入/輸出1098與舊式的第一存儲體1070的輸入/輸出1076相連。舊式的第一處理器90的輸出1096與舊式的第一DMA1060的輸入1066相連。舊式的第一DMA1060的輸入/輸出1064與舊式的第一存儲體1070的輸入/輸出1074相連。
舊式接口1060是一組寄存器,它可被舊式的第一處理器1090以及被可以訪問單總線1113的任意設(shè)備進行存取。
通常把舊式外設(shè)制做成能夠處理一個或多個通信協(xié)議。一些舊式外設(shè)可以與單通信信道相連,另一些外設(shè)可以與多通信信道相連。有一種外設(shè)為串行通信控制器(即SCC),它可以處理各種通信協(xié)議如IEEE802.3/以太網(wǎng),高級/同步數(shù)據(jù)鏈路控制(即HDLC/SDLC),通用異步收發(fā)器(即UART)。另一種外設(shè)是串行管理控制器(SMC),它處理UART并提供全透明功能性。還有一種外設(shè)是串行外圍接口(即SPI),它使得舊式通信控制器101可以與其他通信控制器以及大量如ISDN設(shè)備這樣的外設(shè)和模數(shù)轉(zhuǎn)換器之間交換數(shù)據(jù)。處理串行通信協(xié)議的外設(shè)通常包括并行到串行轉(zhuǎn)換器,如移位寄存器,它從通信信道接收串行數(shù)據(jù)位流,把該位流轉(zhuǎn)換為一組要發(fā)送到舊式第一處理器1090去的多位字。這些外設(shè)還包括并行到串行轉(zhuǎn)換器如移位寄存器,以從舊式第一處理器1090接收多位字,并把每個字轉(zhuǎn)換為單位流。方便起見,每個舊式外設(shè)為一狀態(tài)機。
舊式通信處理器101能夠根據(jù)各種通信協(xié)議處理數(shù)據(jù)。舊式的通信控制器101具有一個能夠根據(jù)可編程的例行程序處理各種通信協(xié)議的舊式第一處理器1090,上述例行程序可存儲在舊式指令存儲體1130,舊式第一存儲體1070或任何其他的存儲體中。在處理數(shù)據(jù)時,舊式第一處理器1090使用存儲在舊式第一存儲體1070或舊式外存儲體1110中的一組參數(shù)(請求信道參數(shù),通信信道參數(shù))。方便起見,這些參數(shù)可以是每個通信協(xié)議(即協(xié)議)的一部分。通常這些參數(shù)在本技術(shù)領(lǐng)域都是公知的。例如,以太網(wǎng)協(xié)議的具體參數(shù)被刊印在摩托羅拉的MC68360用戶手冊第7-247頁到7-248頁,UART協(xié)議的具體參數(shù)被刊印在第7-145頁,HDLC協(xié)議的具體參數(shù)被刊印在第7-173頁,BISYNC協(xié)議的具體參數(shù)被刊印在第7-203頁,透明協(xié)議的具體參數(shù)被刊印在第7-225頁。有各種類型的參數(shù),如請求信道參數(shù)用于定義請求信道的狀態(tài),通信信道參數(shù)用于定義單個通信信道的狀態(tài)。例如與SCC相類似的請求信道的請求信道參數(shù)被刊印在摩托羅拉MC68260用戶手冊的7-125頁,各種通信協(xié)議的通信信道參數(shù)被刊印在摩托羅拉用戶手冊的第7-145,7-173,7-203,7-225,和7-247至7-248中。
舊式的第二處理器1100初始化舊式第一處理器1090并處理高級管理和協(xié)議功能,例如字節(jié)交換,壓縮和路由選擇。舊式的第一處理器1090控制所有的數(shù)據(jù)流事務(wù)處理。在舊式的調(diào)度器1150接收到處理這樣事務(wù)的請求并通知舊式第一處理器需要處理該事務(wù)之后,舊式的第一處理器1090才處理該事務(wù)。如果有來自一些舊式外設(shè)處的不止一個請求,舊式調(diào)度器1050便選擇最高優(yōu)先級的請求。
“任務(wù)”被定義為一組指令,它由舊式第一處理器1090執(zhí)行以控制數(shù)據(jù)幀的單個事務(wù)。通常數(shù)據(jù)的單個事務(wù)是由從外設(shè)接收到的請求或發(fā)送來的請求來初始化的。
為便于理解,圖2為舊式第一存儲體的一部分和舊式外存儲體的一部分的示意圖。
與通信信道相關(guān)的數(shù)據(jù)幀被存儲在緩沖器BF(k)814中,緩沖器BF(k)814的大小可被編程。一個數(shù)據(jù)幀(如每個通信協(xié)議所定義)可以存儲在一個或更多個緩沖器中,單個緩沖器不會存儲來自多于一個數(shù)據(jù)幀的數(shù)據(jù)。至少一個數(shù)據(jù)幀與一單個通信信道相關(guān)。存儲與單個通信信道相關(guān)的數(shù)據(jù)的該組緩沖器形成一個循環(huán)隊列。大多數(shù)緩沖器位于舊式的外存儲體1110中。緩沖器BF(k)814由緩沖描述符BD(k)812定位,緩沖描述符統(tǒng)一表示為288。大多數(shù)緩沖描述符被存儲在舊式的第一存儲體1070中,另有一些被存儲在舊式的外存儲體1110中。
方便起見,緩沖描述符BD(k)812包括一個指針字段(即PT(k))810,一個狀態(tài)和控制字段(即SW(k))806和一個長度字段(即LW(k))808。緩沖器BF(k)814的起點由PT(k)810定位。LW(k)808確定緩沖器BF(k)814的長度。SW(k)806包括一個F/S位FSB(k)802,它確定舊式第一和舊式第二處理器1090和1100中哪一個能夠處理和/或訪問緩沖器BF(k)814。舊式第一處理器1090會在它完成發(fā)送所有存儲在BF(k)814中的數(shù)據(jù),或完成接收一個數(shù)據(jù)幀,或所接收的數(shù)據(jù)填充BF(k)814時,設(shè)置FSB(k)。舊式第二處理器1100會在它用要發(fā)送給一個通信信道的數(shù)據(jù)填充BF(k)814,或在它完成讀取存儲在BF(k)814中的數(shù)據(jù)時,復(fù)位FSB(k)802,其中該數(shù)據(jù)是從一個通信信道中接收到的。SW(k)806還包括一個換行字段(即WB(k))804,它用于表明BD(k)812是否為涉及通信信道的最后一個緩沖描述符。PT(k)810指向BF(k)814的起點。因為緩沖器包括多個存儲字,因此需要一個臨時的計數(shù)器TMP(k)816指向存儲從CC(k)接收到新數(shù)據(jù)字,或存儲要發(fā)送給CC(k)數(shù)據(jù)字的地址。在存儲/發(fā)送了數(shù)據(jù)之后,對TMP(k)816進行更新。
每一個緩沖描述符BD(k)812由一個描述符指針DP(k)818定位。描述符指針被存儲在舊式第一存儲體1070中。
舊式第一處理器1090在它完成對緩沖器BF(k)814處理之前不能提取新的緩沖描述符BD(k+1),也不能處理存儲在與此緩沖描述符相關(guān)的緩沖器BF(k+1)中存儲的數(shù)據(jù)。
對數(shù)據(jù)的發(fā)送和接收涉及到提取請求信道參數(shù),通信信道參數(shù),TMP(k)816,DP(k)818,BD(k)812以及存儲在BF(k)814中的數(shù)據(jù)(即信息)。如果需要從外存儲器中提取信息,舊式的第一處理器1090便啟動舊式的第一DMA 1060并一直等到提取到信息。在提取到信息之后,舊式的第一處理器1090繼續(xù)執(zhí)行涉及從舊式外存儲器1100中提取信息的任務(wù)。
舊式的第一處理器1090和第二處理器1010共享一條外部總線,因此便限制了舊式通信控制器101的頻率和可用的帶寬。
在耗時操作例如從外存儲器提取信息結(jié)束時,舊式的第一處理器1090為空閑狀態(tài),這樣便降低了它的頻率。
舊式的通信控制器101沒有所要求的帶寬,不能在任務(wù)之間跳轉(zhuǎn),不能處理高速數(shù)據(jù)流,特別是與各種通信協(xié)議相關(guān)的高速數(shù)據(jù)流。
因此便需要一種得到改善的高性能通信控制器,以能處理高速數(shù)據(jù)流,特別是與各種通信協(xié)議相關(guān)的高速數(shù)據(jù)流。
本發(fā)明的特性在所附的權(quán)利要求中已經(jīng)指出,其他的特征將參照附圖在下面進行詳細描述。其中,圖1是根據(jù)現(xiàn)有技術(shù)的簡化的示意圖,描述了舊式通信信道,舊式外存儲體和舊式通信控制器;圖2為舊式第一存儲體的一部分和舊式外存儲體的一部分的示意圖;圖3為根據(jù)本發(fā)明的優(yōu)選實施例的簡化的示意圖,描述了通信信道,外存儲體和通信控制器;圖4為根據(jù)本發(fā)明的優(yōu)選實施例的第一直接存儲器存取控制器的控制部分的示意圖;圖5為根據(jù)本發(fā)明的優(yōu)選實施例的第一直接存儲器存取控制器的緩沖部分的示意圖;圖6為根據(jù)本發(fā)明的優(yōu)選實施例的使能單元,調(diào)度器和屏蔽邏輯電路的示意圖;圖7為根據(jù)本發(fā)明的優(yōu)選實施例的調(diào)度器的示意圖;圖8為根據(jù)本發(fā)明的優(yōu)選實施例的塊傳送機的示意圖9為根據(jù)本發(fā)明的優(yōu)選實施例的第一存儲體的示意圖;圖10為根據(jù)本發(fā)明的優(yōu)選實施例的第一存儲體內(nèi)的一條存儲體的示意圖;圖11為一流程圖,描述了根據(jù)本發(fā)明的優(yōu)選實施例用于執(zhí)行任務(wù)和任務(wù)轉(zhuǎn)換的方法的優(yōu)選實施例;圖12為一流程圖,描述了根據(jù)本發(fā)明的優(yōu)選實施例用于執(zhí)行由接收或發(fā)送的請求所初始化的任務(wù)的方法的優(yōu)選實施例;圖13為根據(jù)本發(fā)明的優(yōu)選實施例描述第一處理器對各種接收/發(fā)送請求所作出的響應(yīng)的時間關(guān)系圖;圖14為根據(jù)本發(fā)明的優(yōu)選實施例描述第一處理器對各種接收/發(fā)送請求所作出的響應(yīng)的時間關(guān)系圖。
通常,本發(fā)明的一個方面是處理高速數(shù)據(jù)流特別是與各種通信協(xié)議相關(guān)的高速數(shù)據(jù)流的能力。
應(yīng)當注意,在詳細的描述和附圖中所使用的特定術(shù)語,表示方式以及所披露的特定結(jié)構(gòu)和操作細節(jié)只是用于描述性目的,并不是意于限制所附權(quán)利要求中描述的本發(fā)明的范圍。
圖3為根據(jù)本發(fā)明的優(yōu)選實施例的簡化的示意圖,描述了通信信道180,外存儲體110和通信控制器111。如虛線119所示,通信控制器111包括調(diào)度器50,第一DMA 60,第二DMA 160,第一存儲體70,第一處理器90,指令存儲體130,第二處理器100以及多個外設(shè),統(tǒng)一表示為140。通信控制器111與兩個外部總線-第一總線113和第二總線114相連。通信控制器還與外部存儲體110以及被統(tǒng)一表示為180的多個通信信道相連。方便起見,這多個通信信道180與多個外設(shè)140相連。通信控制器111還可以與其他外部設(shè)備如另一個外部存儲體,主系統(tǒng)和其他處理器相連,但并不局限于以上三種外部設(shè)備。通信控制器還包括橋接器120,接口160和塊傳送機(即BTM)40。通信控制器111還可以與多個外部存儲體相連。為了便于解釋,這多個存儲體被稱之為外存儲體110。
調(diào)度器50具有輸入561-568和輸入/輸出52。第一DMA 60具有輸出67和輸入/輸出62,64,65。第二DMA 160與第一DMA 60類似,具有輸出167和輸入/輸出162,164和165。第一存儲體具有輸入/輸出72,74,76和78。第一處理器90具有輸入/輸出92,93,94,95,96,97和98(為便于解釋,圖8顯示了輸入/輸出97)。第二處理器100具有輸入/輸出102,104。外存儲體110具有輸入/輸出116和118。指令存儲體130具有輸入/輸出132。BTM 40具有輸入/輸出43,45和47(為便于解釋圖8顯示了輸入/輸出46)。橋接器120具有輸入/輸出124和122。接口160具有輸入/輸出162和164。M個外設(shè)PR(1)-PR(M)1401-1408,統(tǒng)一表示為140,具有M個統(tǒng)一表示為144的輸入/輸出和M個統(tǒng)一表示為142的輸入/輸出。最好,將M個外設(shè)140放置于通信控制器111中。多(M)個外設(shè)140把通信控制器111與多(K)個通信信道CC(1)-CC(K)1801-1808(統(tǒng)一表示為180)通過輸入/輸出144和182連接起來。
外設(shè)140的輸入/輸出142,BTM 40的輸入/輸出43和調(diào)度器50的輸入561-568與外圍總線112相連。第二DMA 160的輸入/輸出162,外存儲體110的輸入/輸出118,第二處理器110的輸入/輸出104和橋接器的輸入/輸出162均與第二總線114相連。第一DMA 60的輸入/輸出62,外部存儲體110的輸入/輸出116以及橋接器120的輸入/輸出122均與第一總線113相連。第一存儲體70的輸入/輸出72與BTM40的輸入/輸出45相連。第一存儲體70的輸入/輸出74與第二DMA 160的輸入/輸出164相連。第一存儲體70的輸入/輸出78與第一DMA 60的輸入/輸出64相連。第一存儲體70的輸入/輸出76與第一處理器90的輸入/輸出98相連。第一處理器90的輸入/輸出93與第二DMA 160的輸入/輸出165相連。第一處理器90的輸入/輸出96與第一DMA 60的輸入/輸出65相連。第一處理器90的輸入/輸出94與指令存儲體130的輸入/輸出132相連。第一處理器90的輸入/輸出95與接口160的輸入/輸出164相連。第一處理器90的輸入/輸出92與調(diào)度器50的輸入/輸出52相連。第二處理器100的輸入/輸出102與橋接器120的輸入/輸出124相連。第二DMA 160的輸入/輸出167和第一DMA 60的輸入/輸出67通過屏蔽邏輯電路(圖6所示)與調(diào)度器的輸入561-568相連。
橋接器120用于連接第二處理器100和第一總線113。接口160包括一個寄存器,它用于把第一處理器90與不同的單元如第二處理器100通過第一總線100連接起來。接口160可用于向第一處理器90寫指令。
外設(shè)140中的一些外設(shè)包括一個緩沖器或一個隊列,該緩沖器或隊列與通信信道180中的一個或多個通信信道相連。方便起見,外設(shè)更復(fù)雜,通常把每個外設(shè)制成能夠處理一個或多個通信協(xié)議。一些外設(shè)可以與單個通信信道相連,一些外設(shè)則可以與多個通信信道相連。例如,但并不以此限制本發(fā)明的范圍,處理HDLC協(xié)議的外設(shè)可以與256個通信信道相連。
例如,但并不以此限制本發(fā)明的范圍,一種外設(shè)類似于摩托羅拉的MC68360 SCC,但也能處理異步傳輸模式的通信協(xié)議。另一種外設(shè)類似于摩托羅拉的MC68360 SMC。另一種外設(shè)類似于摩托羅拉的MC68360 SPI。還有一種外設(shè)允許通信控制器111處理ATM協(xié)議,而再一種外設(shè)則允許通信控制器111處理快以太網(wǎng)(Fast Ethernet)協(xié)議。處理串行通信協(xié)議的外設(shè)通常包括從并行到串行的轉(zhuǎn)換器,例如移位寄存器,它從通信信道接收串行數(shù)據(jù)位流,并把該數(shù)據(jù)位流轉(zhuǎn)換為一組將發(fā)送到第一處理器90去的多位字。這些外設(shè)進一步還包括并行到串行轉(zhuǎn)換器,例如移位寄存器,用于從第一處理器90接收一個多位字,再把每個字轉(zhuǎn)換為單位流。方便起見,每個外設(shè)包括一臺狀態(tài)機,該狀態(tài)機適用于至少一個通信協(xié)議。狀態(tài)機可以把原始數(shù)據(jù)位流轉(zhuǎn)換為與通信協(xié)議相容的位流。
通信處理器111根據(jù)不同的通信協(xié)議處理數(shù)據(jù)。通信控制器111具有一個能夠根據(jù)可編程的例行程序處理各種通信協(xié)議的第一處理器90,上述例行程序可被存儲在指令存儲體130,第一存儲體70或任何其他的存儲體中。在處理數(shù)據(jù)時,第一處理器90使用存儲在第一存儲體70或外存儲體110中的一組參數(shù)(請求信道參數(shù),通信信道參數(shù))。方便起見,這些參數(shù)可以是每個通信協(xié)議(即協(xié)議)的一部分。通常這些參數(shù)是本技術(shù)領(lǐng)域公知的。例如,但并不以此來限制本發(fā)明的范圍,以太網(wǎng)協(xié)議的具體參數(shù)被刊印在摩托羅拉的MC68360用戶手冊第7-247頁到7-248頁,UART協(xié)議的具體參數(shù)被刊印在第7-145頁,HDLC協(xié)議的具體參數(shù)被刊印在第7-173頁,BISYNC協(xié)議的具體參數(shù)被刊印在第7-203頁,透明協(xié)議的具體參數(shù)被刊印在第7-225頁。有各種類型的參數(shù),如請求信道參數(shù)用于定義請求信道的狀態(tài),通信信道參數(shù)用于定義單個通信信道的狀態(tài)。例如與SCC相類似的請求信道的請求信道參數(shù)被刊印在摩托羅拉MC68260用戶手冊的7-125頁,各種通信協(xié)議的通信信道參數(shù)被刊印在摩托羅拉用戶手冊的第7-145,7-173,7-203,7-225,和7-247至7-248中。
第二處理器100初始化第一處理器90并處理高級管理和協(xié)議功能,例如字節(jié)交換,壓縮和路由選擇。方便起見,第二處理器類似于摩托羅拉的MC68360芯片的CPU32+(被刊印在摩托羅拉的MC68360芯片用戶手冊中)。第一處理器90控制所有的數(shù)據(jù)流事務(wù)處理。
“任務(wù)”被定義為一組指令,它由第一處理器90執(zhí)行以控制幀的事務(wù)。通常幀的事務(wù)是由從一個外設(shè)接收到的請求或發(fā)送來的請求來初始化的。
方便起見,外設(shè)可以接收數(shù)據(jù)或傳送數(shù)據(jù)。為了便于解釋,每個外設(shè)140都被認為包括兩個請求信道,一個傳送請求信道,用于傳送數(shù)據(jù)和發(fā)送傳送請求,一個接收請求信道,用于接收數(shù)據(jù)和發(fā)送接收請求。為了便于解釋,把第z個請求信道表示為RC(z),z555是一個值為1到2M的索引。Z555表示第z個請求信道已經(jīng)發(fā)出接收或傳送請求。
方便起見,由通信控制器111所處理的數(shù)據(jù)存儲在外存儲體110中,對數(shù)據(jù)的處理涉及到使用緩沖器BF(k),緩沖描述符BD(k),描述符指針DP(k),指針字段PT(k),臨時指針TMP(k),狀態(tài)和控制字段SCW(k),長度字段LW(k),F(xiàn)/S位FSB(k)確定第一和第二處理器90和100中哪一個能夠處理和/或訪問緩沖器BF(k)。這些BF(k),BD(k),DP(k),PT(k),TMP(k),SCW(k),LW(k)和FSB(k)與舊式通信處理器101的緩沖器BF(k),緩沖描述符BD(k),描述符指針DP(k),指針字段PT(k),狀態(tài)和控制字段SCW(k),調(diào)換字段WB(k),長度字段LW(k),F(xiàn)/S位FSB(k)相類似的。第一處理器90會在它完成發(fā)送所有存儲在BF(k)中的數(shù)據(jù),或完成接收一個數(shù)據(jù)幀,或所接收的數(shù)據(jù)填充BF(k)時設(shè)置FSB(k)。第二處理器100會在它用要發(fā)送給一個通信信道的數(shù)據(jù)填充BF(k),或在它完成讀取存儲在BF(k)中的數(shù)據(jù)時,復(fù)位FSB(k),其中該數(shù)據(jù)是從一個通信信道中接收到的。PT(k)指向BF(k)的起點。
在存儲/發(fā)送了數(shù)據(jù)字之后,對TMP(k)進行更新。因而,在第一處理器90執(zhí)行了任務(wù)轉(zhuǎn)換/開始執(zhí)行一項任務(wù)時,把更新的TMP(k)發(fā)送到/從第一存儲體70(發(fā)送)。
第一處理器90在它完成對整個當前緩沖器BF(k)處理之前,通常不提取新的緩沖描述符BD(k+1),也不能處理存儲在與此緩沖描述符相關(guān)的緩沖器BF(k+1)中存儲的數(shù)據(jù)。
如參照圖10所詳細進行解釋的那樣,對數(shù)據(jù)的發(fā)送和接收涉及到提取請求信道參數(shù),通信信道參數(shù),TMP(k),DP(k),BD(k)以及存儲在BF(k)中的數(shù)據(jù)。如果在上述的任意提取過程中需要執(zhí)行DMA操作,并且如果DMA請求需要訪問第一總線113或第二DMA160,或者DMA請求需要訪問第二總線114,第一處理器90便啟動第一DMA 60。
圖4為根據(jù)本發(fā)明的優(yōu)選實施例的第一DMA 60的控制部分的示意圖。第一DMA 60的控制部分類似于第二DMA 160的控制部分。方便起見,第一DMA 60的控制部分包括一個DMA請求隊列(即隊列)62,一個使能單元64。如以后將進一步詳細解釋的那樣,隊列62可以存儲多個DMA請求和使能單元64。使能單元64屏蔽傳送請求或接收從請求信道發(fā)送到調(diào)度器50的請求。最好,第一DMA 60的控制部分包括一個隊列62,一個使能單元64,一個請求旁路寄存器(即旁路寄存器)68,一個使能單元64,一個輸入多路復(fù)用器(即DI_MUX)66,一個輸出多路復(fù)用器(即DO_MUX)69。DI_MUX 66具有輸入662和668,輸出666。隊列62具有輸入626,輸出628和多個統(tǒng)一表示為624的N個輸出。旁路寄存器68具有輸入682,輸出684和686。DO_MUX69包括輸入692,694,696,輸出698。使能單元64具有多個統(tǒng)一表示為646的N個輸入,輸入642和2M位輸出676,676與第一DMA 60的輸出67相連。DI_MUX 66的輸入662和668與第一DMA 60的輸入65相連。
隊列62具有N個存儲字621-628。方便起見,每個存儲字621-628具有兩個部分6211-6281和6212-6282。第一部分6211-6281用于存儲z555,它表示哪一個請求信道與直接存取存儲請求(即DMA請求)相關(guān)。第二部分6212-6282用于存儲DMA請求。DMA 60把一個信息塊從存儲體的第一個位置移動和/或拷貝到存儲體的第二個位置。方便起見,DMA請求包括由第一DMA 60所傳送的信息塊的信源,目的地以及大小。
旁路寄存器68具有兩個部分。第一個部分681用于存儲z555,第二個部分682用于存儲DMA請求。
DI_MUX66通過輸入664接收一個DMA請求和z555。DI_MUX66通過輸入668接收一個BYQ信號668,它確定是否把DMA請求和z555寫入旁路寄存器68或隊列62。
如果旁路寄存器68為非空,DO_MUX 69通過輸入692接收到一個控制信號,使其選擇輸入696并輸出存儲在旁路寄存器68中的DMA請求。否則,DO_MUX 69便選擇輸入694,并輸出存儲在第二部分6212中的DMA請求。
發(fā)送請求初始化任務(wù)。接收請求也初始化任務(wù)。
第一部分6211-6281通過隊列62的輸出624與使能單元64的輸入646相連。當?shù)谝惶幚砥?0向第一DMA 60發(fā)送與RC(z)相關(guān)的DMA請求時,RC(z)的發(fā)送或接收請求被禁止。在執(zhí)行了所有與RC(z)相關(guān)的DMA請求之后,它的接收或發(fā)送請求便被使能。通常在與請求相關(guān)的任務(wù)結(jié)束時,接收或發(fā)送請求被禁止。
使能單元64把與存儲在DMA隊列62中的DMA請求相關(guān)的請求信道的發(fā)送或接收請求進行屏蔽。使能單元64可以通過輸出648向調(diào)度器50發(fā)送一個具有相應(yīng)z555的使能信號。方便起見,輸出648有2M位,分別用于2M個請求信道,使能單元64向與RC(z)相關(guān)的其輸出648的第z位發(fā)送一個1位信號。
圖5為根據(jù)本發(fā)明的優(yōu)選實施例的第一DMA 60的緩沖部分的示意圖。第一DMA 60的緩沖部分類似于第二DMA 160的緩沖部分。緩沖部分包括第一發(fā)送(即tx)緩沖器612,第二發(fā)送(即tx)緩沖器614,第一接收(即rx)緩沖器616,第二接收(即rx)緩沖器618,發(fā)送控制單元610,和接收控制單元615。
第一tx緩沖器612具有輸入6126,6124和輸出6122。第二tx緩沖器614具有輸入6146,6144和輸出6142。發(fā)送控制單元610具有輸入6108和輸出6104,6102。接收控制單元615具有輸入6158和輸出6154,6105。第一rx緩沖器616具有輸入6162,6164和輸出6166。第二rx緩沖器618具有輸入6182,6184和輸出6186。
第一tx緩沖器612的輸出6122和第一rx緩沖器616的輸入6162與第一DMA 60的輸入/輸出64和62相連。第二tx緩沖器614的輸入6146和第二rx緩沖器618的輸出6186與第一總線113相連。第一tx緩沖器612的輸入6126與第二tx緩沖器614的輸出6142相連。第一rx緩沖器616的輸出6166與第二rx緩沖器618的輸入6182相連。DO_MUX 69的輸出898分別與接收控制單元615的輸入6158和發(fā)送控制單元610的輸入6108相連。發(fā)送控制單元610的輸出6102與第一tx緩沖器612的輸入6124相連。接收控制單元615的輸出6152與第一rx緩沖器616的輸入6164相連。發(fā)送控制單元610的輸出6104與第二tx緩沖器610的輸入6144相連。接收控制單元615的輸出6154與第二rx緩沖器618的輸入6184相連。
發(fā)送控制單元610具有一個能存儲從DO_MUX 69發(fā)送的DMA指令的寄存器,DO_MUX 69涉及到把數(shù)據(jù)從第一存儲體70的輸入/輸出78,第一處理器90的輸入/輸出96通過輸入/輸出64和96發(fā)送到第一總線113。發(fā)送控制單元610啟動第一tx緩沖器612把數(shù)據(jù)發(fā)送到輸入/輸出64或96,啟動第二tx緩沖器614把數(shù)據(jù)從第一總線113讀取到第二tx緩沖器614中。發(fā)送控制單元向第一和第二tx緩沖器612和614發(fā)送控制信號,以把數(shù)據(jù)從第二tx緩沖器614發(fā)送到第一tx緩沖器612。發(fā)送控制單元具有一個用于存儲z555的字段6102。最好,第一和第二tx緩沖器可以獨立操作。
接收控制單元615具有一個能存儲從DO_MUX 69發(fā)送的DMA指令的寄存器,DO_MUX 69涉及到把數(shù)據(jù)從第一總線113通過輸入/輸出64和96發(fā)送到第一存儲體70的輸入/輸出78或第一處理器90的輸入/輸出96。接收控制單元615啟動第一rx緩沖器616,從輸入/輸出64或96發(fā)送數(shù)據(jù),啟動第二rx緩沖器618,把數(shù)據(jù)從第二rx緩沖器618發(fā)送到第一總線113。接收控制單元615向第一和第二rx緩沖器616和618發(fā)送控制信號,以把數(shù)據(jù)從第一rx緩沖器616發(fā)送到第二rx緩沖器618。接收控制單元615具有一個用于存儲z555的字段6502。最好,第一和第二rx緩沖器616和618可以獨立操作。
方便起見,使能單元64不會檢查隊列62的第一部分6211-6281以及旁路寄存器682的681。把接收和發(fā)送單元615,610的字段6502和6102的內(nèi)容與第一部分6211-6281和628的內(nèi)容進行比較,如果存在不匹配,字段6502和6102的內(nèi)容便被發(fā)送到使能單元64。
圖6為根據(jù)本發(fā)明的優(yōu)選實施例的使能單元64,調(diào)度器50和屏蔽邏輯電路80的示意圖。屏蔽邏輯電路包括多個“與”邏輯門。為了便于解釋,本說明涉及多個“與”邏輯門(即門)中的四個3-輸入端邏輯“與”門81-84。第一門81具有輸入812,814,818和輸出816。第二門82具有輸入822,824,828和輸出826。第三門83具有輸入832,834,838和輸出836。第四門84具有輸入842,844,848和輸出846。
使能單元64的輸出671與第一門81的輸入812相連。使能單元64的輸出672與第二門82的輸入822相連。使能單元64的輸出673與第三門83的輸入832相連。使能單元64的輸出674與第四門84的輸入842相連。使能單元164的輸出1671與第一門81的輸入818相連。使能單元64的輸出1672與第二門82的輸入828相連。使能單元64的輸出1673與第三門83的輸入838相連。使能單元64的輸出1674與第四門84的輸入848相連。第四門84的輸出846與調(diào)度器50的輸入564相連。第三門83的輸出836與調(diào)度器50的輸入563相連。第二門82的輸出826與調(diào)度器50的輸入562相連。第一門81的輸出816與調(diào)度器50的輸入561相連。第四門84的輸入844與線路14012相連,以從請求信道接收接收或發(fā)送請求。第三門83的輸入834與線路14022相連,以從另一個請求信道接收接收或發(fā)送請求。第二門82的輸入824與線路14032相連,以從一個請求信道接收接收或發(fā)送請求。第一門81的輸入814與線路14042相連,以從一個請求信道接收接收或發(fā)送請求。
當?shù)谝籇MA 60或第二DMA 160接收到一個與接收信道相關(guān)的DMA請求時,它就向從該請求信道接收接收或發(fā)送請求的邏輯門發(fā)送一個禁止信號(低電平信號),使能信號便屏蔽掉從該信道來的請求。當?shù)谝籇MA 60或第二DMA 160沒有接收到與請求信道相關(guān)的請求時,它們就會向與該請求信道相連的邏輯門發(fā)送一個使能信號。如果第一DMA 60和第二DMA 160都發(fā)送使能信號,請求信道的接收或發(fā)送請求就可以抵達調(diào)度器50。
例如,第一門81與第一請求信道RZ(1)相連。第一請求信道通過線路14042發(fā)送一個發(fā)送請求(高電平信號)。如果第一DMA 60或第二DMA 160都沒有接收到與第一請求信道RZ(1)相關(guān)的請求,第一DMA 60和第二DMA 160就會向第一邏輯門81的輸入812和818發(fā)送高電平信號。調(diào)度器50通過輸入561從第一請求信道RZ(1)接收到發(fā)送請求,然后使第一處理器90開始執(zhí)行第一項任務(wù)T(1)以處理發(fā)送請求。當?shù)谝豁椚蝿?wù)T(1)需要一個DMA請求時,第一處理器90便向第一DMA 60或第二DMA 160發(fā)送一個DMA請求。為了便于解釋,這里假定第一處理器90向第一DMA 60發(fā)送了DMA請求。直到第一DMA 60執(zhí)行完DMA請求,使能單元64向第一門81的輸入812發(fā)送一個低電平信號,使得第一門的輸出信號很底,這樣便屏蔽了第一請求信道RZ(1)的發(fā)送請求。
禁止信號進一步還來自第一處理器90。當?shù)谝惶幚砥?0發(fā)送了一個DMA信號時,禁止信號也被發(fā)送。第一處理器90和使能單元64與一個觸發(fā)器相連,同時第一處理器與觸發(fā)器的復(fù)位輸入端相連,使能單元64與觸發(fā)器的置位輸入端相連。如上所述,觸發(fā)器的輸出端與“與”邏輯門的輸入端相連。第一處理器還與第二DMA 160的使能單元164相連。
圖7為根據(jù)本發(fā)明的優(yōu)選實施例的調(diào)度器50的示意圖。調(diào)度器50包括;請求選擇器56,棧指針輸入多路復(fù)用器(即sp input mux)52,棧指針輸出多路復(fù)用器(即sp output mux)58和2M的棧指針寄存器1sp_reg-2Msp_reg541-548,統(tǒng)一表示為540。
調(diào)度器50存儲了一組多達2M個棧指針。一個棧指針是一個指令I(lǐng)(z,r)的地址,指令I(lǐng)(z,r)是任務(wù)T(z)的一部分,z和r為整數(shù),z的值為1到2M。最好,任務(wù)T(z)專屬于從請求信道RC(z)來的單個接收或發(fā)送請求。任務(wù)T(z)可以存儲在指令存儲體130、第一存儲體70或外部存儲體110中。任務(wù)T(z)或其一部分還可以存儲在其他的存儲體內(nèi)。
例如,如果所選擇的發(fā)送或接收請求與RC(c)相關(guān),它便使第一處理器90從Dsp_reg提取一個棧指針。Csp_reg的內(nèi)容是指令I(lǐng)(c,r)的地址。第一處理器90便執(zhí)行任務(wù)T(c)的一部分。
通常,如參照圖13將進一步進行詳細解釋的那樣,第一處理器90執(zhí)行第z項任務(wù)T(z)的一些指令(I(z,r)-I(z,r+d),d為整數(shù)),直到需要從外部單元提取信息為止。第一處理器90向第一DMA60或第二DMA 160發(fā)送一個與RC(z)相關(guān)的DMA請求,并向Zsp_reg發(fā)送一個更新的棧指針(指向指令I(lǐng)(z,r+d+1),該指令緊隨指令I(lǐng)(z,r+d)。方便起見,如果任務(wù)T(z)完成,I(z,1)便被發(fā)送給Zsp_reg),并等待從調(diào)度器50接收一個新選擇的棧指針。當調(diào)度器向第一處理器90發(fā)送了一個新選擇的與第x項任務(wù)T(x)相關(guān)的棧指針,第一處理器90便開始執(zhí)行任務(wù)T(x)中的指令。
把“任務(wù)轉(zhuǎn)換”定義為由第一處理器90所執(zhí)行的過程,它涉及到終止一項任務(wù)的執(zhí)行,等待接收所選擇的任務(wù),和開始執(zhí)行所選擇任務(wù)中的指令。通常所選擇的任務(wù)不同于所終止的任務(wù),但也不是必須如此。
請求選擇器56具有2M個輸入561-568,一個控制輸入569和輸出560。Sp input mux 52具有輸入520和529,第一組2M個輸出511-518和第二組2M個輸出521-528。棧指針寄存器(即sp寄存器)541-548具有第一組輸入5411-5481,第二組輸入5412-5482和輸出5413-5483。Sp output mux 58具有2M個輸入581-588,輸入580和輸出589。請求選擇器56的輸出560與sp output mux 58的輸入580相連,用于選擇把2M個輸入581-588中的哪一個與輸出589相連。請求選擇器56的輸入561-568與2M個統(tǒng)一表示為150的請求信道RC(1)-RC(2M)相連。如參照圖4進一步進行詳細解釋的那樣,輸出648向接收信道發(fā)出使能信號。方便起見,把2M個“與”邏輯門(未顯示),其中每個邏輯門具有兩個輸入和一個輸出,與使能單元64的2M位輸出648相連,連接在一邊的2M個接收和發(fā)送信道上,和另一邊的2M個輸入561-568上。
發(fā)送請求通常在一個請求信道完成向一個通信信道發(fā)送數(shù)據(jù)時發(fā)送,請求信道可以接收一個新數(shù)據(jù)。接收請求通常在一個請求信道接收數(shù)據(jù)時發(fā)送。
請求選擇器56檢查它是否從一個或多個請求信道接收到發(fā)送或接收請求。如果答案為“是”,請求選擇器56便選擇最高優(yōu)先級別的請求。為了便于解釋,假定具有最高優(yōu)先級別的請求來自第z個請求信道RC(z)。請求選擇器56向sp input mux 52發(fā)送一個控制信號,使得存儲在Gsp_reg中的第z個棧指針被發(fā)送到第一處理器90。第一處理器90從指令存儲體130中提取由第z個棧指針所指向的指令I(lǐng)(z,r),并開始執(zhí)行它以及后續(xù)的任務(wù)T(z)的指令。
請求的優(yōu)先級可以是固定的,也是可以更改的。例如,通過第一輸入561輸入的請求可以具有最低的優(yōu)先級,而通過第M個輸入568輸入的請求則可以具有最高的優(yōu)先級。
圖8為根據(jù)本發(fā)明的優(yōu)選實施例的塊傳送機(即BTM)40的示意圖。BTM 40包括BTM數(shù)據(jù)寄存器(即bdata寄存器)41,BTM控制單元(即bcontrol單元)46,數(shù)據(jù)控制器44和CRC機48。BTM40與CRC REG 42,第一存儲體70以及外設(shè)140相連。CRC REG 42是第一處理器90的一個寄存器。
方便起見,BTM 40處理從(到)外設(shè)140到(從)第一存儲體70的數(shù)據(jù)傳送。通常,第一處理器90向BTM 40發(fā)送一個傳送請求,表明要傳送的數(shù)據(jù)的源點和目的地以及數(shù)據(jù)的長度。例如,如果BTM40通過一條32位總線與外設(shè)和第一存儲體70相連,就需要傳送8×32=256位,然后第一處理器70將發(fā)送一個長度字段為8的傳送指令,表明8個32位傳送將被執(zhí)行。通常,ATM通信協(xié)議需要傳送更大的數(shù)據(jù)塊,例如48×32=1536位。方便起見,BTM 40也可以單獨包括一個DMA控制器。最好,DMA 40既可以處理數(shù)據(jù)的發(fā)送還可以處理它發(fā)送的數(shù)據(jù)。每個外設(shè)1401-1408都有一個輸入/輸出1421-1428。
Bdata緩沖器41具有輸入414,輸入/輸出412和416。CRC REG 41具有輸入424和輸入/輸出426。BRAM 43包括輸入/輸出432和輸入434。數(shù)據(jù)控制器44具有輸入442,444和輸入/輸出446。Bcontrol單元46包括輸入462和輸出464。CRC機48具有輸入484,482和輸入/輸出486。
外設(shè)總線112通過BTM 40的輸入/輸出43與數(shù)據(jù)控制器44的輸入/輸出442和CRC機48的輸入482相連。Bcontrol單元46的輸出464通過BTM 40的輸入/輸出46與CRC REG 42的輸入424,CRC機48的輸入484,數(shù)據(jù)控制器44的輸入444,BRAM 43的輸入344,bdata緩沖器41的輸入414相連。Bcontrol單元46的輸入462通過BTM的輸入/輸出47與第一處理器90的輸入/輸出97相連。CRC REG 42的輸入/輸出426通過BTM 40的輸入/輸出47與CRC機48的輸入/輸出486相連。數(shù)據(jù)控制器44的輸入/輸出446與bdata緩沖器41的輸入/輸出412相連。bdata緩沖器41的輸入/輸出416通過輸入/輸出45與第一存儲體70的輸入/輸出72相連。
Bcontrol單元46由從第一處理器90的輸出97來的控制信號和/或操作數(shù)啟動。Bcontrol單元46通過輸出464向CRC REG 42,CRC機48,數(shù)據(jù)控制器44,和bdata緩沖器41發(fā)送控制信號從而控制BTM40的操作。Bcontrol單元46發(fā)送控制信號,使得數(shù)據(jù)從(到)外設(shè)總線112流向(從)第一存儲體70。Bcontrol單元會讓CRC機對數(shù)據(jù)做CRC檢查,并把結(jié)果存儲在CRC REG 42中。方便起見,CRC機48會在單個時鐘周期內(nèi)做CRC檢查。最好,CRC機會在單個時鐘周期內(nèi)對16位的數(shù)據(jù)字做CRC檢查。數(shù)據(jù)控制器44可以通過輸入/輸出442讀取數(shù)據(jù)字,交換數(shù)據(jù)字,或產(chǎn)生移位數(shù)據(jù)字,并通過輸入/輸出446向bdata緩沖器41的輸入/輸出412發(fā)送新的數(shù)據(jù)字。bdata緩沖器41存儲新的數(shù)據(jù)字并把它發(fā)送給bram 43。bdata緩沖器41還可以從bram 43接收數(shù)據(jù)字并把它發(fā)送給數(shù)據(jù)控制器44。數(shù)據(jù)控制器44可以交換數(shù)據(jù)字,或產(chǎn)生移位數(shù)據(jù)字并通過輸入/輸出442向外設(shè)總線112發(fā)送新的數(shù)據(jù)字。
圖9為根據(jù)本發(fā)明的優(yōu)選實施例的第一存儲體70的示意圖。存儲體70包括Q個部分(即存儲體)1BANK-QBANK 701-708。1BANK-QBANK 701-708中的每個存儲體都與第一處理器90,第一DMA 60,第二DMA 160和BTM 40相連。為了便于解釋,只顯示出兩個存儲體1BANK 701和QBANK 708,但是任意數(shù)目Q個存儲體都可以實現(xiàn)。為了便于解釋未顯示第二DMA 160。
第一處理器90的輸入/輸出98通過第一存儲體70的輸入/輸出78與1BANK 701的輸入7148,QBANK 708的輸入7848,1BANK 701的輸入/輸出7168和QBANK 708的輸入/輸出7868相連。第一DMA 60的輸入/輸出64通過第一存儲體70的輸入/輸出78與1BANK 701的輸入7148,QBANK 708的輸入7848,1BANK 701的輸入/輸出7166,QBANK 708的輸入/輸出7866相連。BTM 40的輸入/輸出45通過第一存儲體70的輸入/輸出72與1BANK 701的輸入7144,QBANK 708的輸入7844,1BANK 701的輸入/輸出7164,QBANK 708的輸入/輸出7864相連。如根據(jù)圖8所示做進一步解釋的那樣,如果一塊存儲體(例如1BANK 701)同時被第一處理器90,第一DMA 60和BTM 40中的多個訪問,1BANK 701便確定首先服務(wù)哪個元件以及在服務(wù)了第一個元件之后再服務(wù)哪一個元件。
圖10為根據(jù)本發(fā)明的優(yōu)選實施例的第一存儲體70內(nèi)的Q個存儲體中的存儲體1BANK 701的示意圖。1BANK 701包括存儲器陣列718,數(shù)據(jù)多路復(fù)用器(即DATA MUX)716,地址多路復(fù)用器(即ADDRESS MUX)714和存儲體選擇器712。DATA MUX 716具有輸入7163和輸入/輸出7164,7166,7168,7169。ADDRESS MUX 714具有輸入7144,7146,7148,7149和輸出7142。存儲體選擇器712具有輸入7124,7126,7128和輸出7123,7125。存儲器陣列718具有輸入7182和輸入/輸出7184。DATA MUX 716的輸入7163與存儲體選擇器712的輸出7123相連。ADDRESS MUX 714的輸入7149與存儲體選擇器712的輸出7125相連。ADDRESS MUX 714的輸出7142與存儲器陣列718的輸入7182相連。DATA MUX 716的輸入/輸出7169與存儲器陣列718的輸入/輸出7184相連。
BTM 40,第一DMA 60,第二DMA 160和第一處理器90可以向ADDRESS MUX 714的輸入7144,7146,7148以及存儲體選擇器712的輸入7124,7126,7128發(fā)送相應(yīng)的地址字。一些地址字位被發(fā)送到存儲體選擇器712,其余的地址字位被發(fā)送到ADDRESS MUX714。發(fā)送到存儲體選擇器712去的地址字位被用于從1BANK-QBANK701-708中選擇一個存儲體。
如果第一處理器90,第一DMA 60和BTM 40中只有一個元件發(fā)送了地址字,那么此元件便被選中,存儲體選擇器712從輸出7125和7163中發(fā)送一個選擇信號給ADDRESS MUX 714的輸入7149和DATA MUX 716的輸入7163。該選擇信號會使得ADDRESS MUX 714把從所選擇的元件發(fā)送來的地址字的剩余位發(fā)送給存儲器陣列718的輸入7182。選擇信號會使得DATA MUX 716把存儲器陣列718的輸入/輸出7184與所選擇元件的輸入/輸出相連。例如,當BTM 40向1BANK寫入數(shù)據(jù)字時,它向1BANK 701發(fā)送一個地址字,向DATAMUX 716的輸入/輸出7164發(fā)送一個數(shù)據(jù)字。存儲體選擇器712接收到地址字的一些位,確定BTM 40向(從)1BANK 701寫入(讀取)一個數(shù)據(jù)字。存儲體選擇器712向DATA MUX 716發(fā)送選擇信號,DATA MUX 716把輸入/輸出7164(最終是BTM 40的輸入/輸出42)與DATA MUX 716的輸出7169,進而與存儲器陣列718的輸入/輸出7184連接起來。
如果BTM 40,第一DMA 60和第一處理器90中不只一個元件向1BANK發(fā)送了數(shù)據(jù)地址,存儲體選擇器712便選擇從具有最高優(yōu)先級的元件來的請求,并向DATA MUX 716,進而向ADDRESS MUX 714發(fā)送選擇信號。例如,如果BTM 40和第一處理器90同時向1BANK發(fā)送了地址字,但第一處理器比BTM 40具有更高的優(yōu)先級,存儲體選擇器便發(fā)送一個選擇信號,使得ADDRESS MUX 714的輸入7148與存儲器陣列718的輸入/輸出7184相連。
可以把存儲體1BANK-QBANK中的一些進行交織,以提供更高的順序存取速率。這種交織規(guī)定第一存儲字要在第一存儲體中找到,第二存儲字要在第二存儲體中找到。這種交織是通過把地址字中最低有效位與最高有效位交換而完成的。例如,如果第一存儲體包括16個存儲體,每一個有2K個字,那么地址字必須要有15位長,四個位用于從16個存儲體中選擇一個,其余的11個位用于定義在一個2K的字存儲體中選擇哪個數(shù)據(jù)字。交織可以通過把一個15位的地址字中的4個最低有效位發(fā)送給每個存儲體選擇器712的地址總線的4個高有效位,而把剩余的11個位送到ADDRESS MUX 714。
圖11為一張流程圖,描述了根據(jù)本發(fā)明的優(yōu)選實施例用于執(zhí)行任務(wù)和任務(wù)轉(zhuǎn)換的方法900的優(yōu)選實施例。
方法900從步驟910開始,此處調(diào)度器50檢查它是否從任何一個請求信道接收到一個或多個接收或發(fā)送請求。步驟910之后為步驟920,如路徑913所示。
在步驟920,調(diào)度器50選擇具有最高優(yōu)先級的接收/發(fā)送請求。為了便于解釋,假定請求來自RC(z)。調(diào)度器50發(fā)送一個與所選擇的接收/發(fā)送請求相關(guān)的棧指針,使得第一處理器90執(zhí)行與RC(z)相關(guān)的任務(wù)T(z)。執(zhí)行任務(wù)T(z)通常涉及到提取數(shù)據(jù),狀態(tài)字,請求信道參數(shù),通信信道參數(shù)和指針(即信息)。在步驟920中,第一處理器90執(zhí)行任務(wù)T(z),直到任務(wù)T(z)結(jié)束或直到需要從外存儲體110或外部單元提取信息為止。
如路徑934所示,在步驟962,如果需要提取存儲在外存儲體110中的信息,第一處理器向第一DMA 60發(fā)送一個DMA請求,把更新的棧指針SP(z)存儲在調(diào)度器50的第z個棧指針寄存器(即Zsp_reg)中,并向調(diào)度器50發(fā)送一個禁止信號,用于屏蔽從RC(z)來的任意發(fā)送或接收請求。如路徑962所示,步驟960之后為步驟910。
如路徑964所示,在發(fā)送出一個DMA請求之后,在步驟970,第一DMA 60或第二DMA 160執(zhí)行請求并提取信息。在提取了信息之后,第一DMA 60或第二DMA 160向調(diào)度器50發(fā)送一個使能信號,不屏蔽從T(z)來的任意接收或發(fā)送請求。在根據(jù)任務(wù)T(x)執(zhí)行了步驟910,920,930,940,950和960時,就可以執(zhí)行步驟970了。
如虛線路徑972所示,步驟972之后為步驟910,這意味著在提取了與任務(wù)T(z)相關(guān)的信息之后,可以從步驟910開始執(zhí)行任務(wù)T(z)。如根據(jù)圖4所詳細進行解釋的那樣,T(z)包括一組指令,而第一處理器可以執(zhí)行這些指令中的一些I(z,r)-I(z,r+d),然后執(zhí)行任務(wù)轉(zhuǎn)換。當?shù)谝惶幚砥?0響應(yīng)來自RC(z)的請求時,它將提取下面的指令,從指令I(lǐng)(z,r+d)之后的指令I(lǐng)(z,r+d+1)開始。
如路徑924,952和步驟950所示,如果任務(wù)T(z)結(jié)束,第一處理器90就會發(fā)送一個更新的棧指針給Zsp_reg,方法900就會開始步驟910以檢查調(diào)度器50是否接收到了發(fā)送/接收請求。
在步驟960的開始,為了提取與任務(wù)T(z)相關(guān)的信息,第一處理器90向第一DMA 60或第二DMA 160發(fā)送一個DMA請求,并向調(diào)度器50發(fā)送一個禁止信號,該信號用于屏蔽任意從CR(z)來的發(fā)送或接收信號。第一處理器90向Zsp_reg發(fā)送它當前的棧指針。禁止信號還可以由第一DMA 60或第二DMA 160發(fā)送。
圖12為一張流程圖,描述了根據(jù)本發(fā)明的優(yōu)選實施例用于執(zhí)行由接收或發(fā)送的請求所初始化的任務(wù)的方法1000的優(yōu)選實施例。
步驟1014,1018,1022,1030涉及到提取信息。如果信息存儲在外存儲體110或任意其他的外部單元,第一處理器90便會執(zhí)行任務(wù)轉(zhuǎn)換,如根據(jù)圖9所解釋的那樣。步驟1046后可以跟隨一個任務(wù)轉(zhuǎn)換。例如,如果一個請求外設(shè)沒有存儲整個幀而是該幀的一部分,并且第一處理器90已經(jīng)處理完那部分,就需要提取該幀的剩余部分,這樣第一處理器90就會執(zhí)行任務(wù)轉(zhuǎn)換,并且當該幀的另一個部分存儲在外設(shè)中時可返回執(zhí)行該任務(wù)。為了便于解釋,這些任務(wù)轉(zhuǎn)換沒有顯示在圖10中,而方法1000的執(zhí)行被描述為沒有進行任務(wù)轉(zhuǎn)換。
在步驟1010中,第一處理器90通過提取T(z)的第一條指令I(lǐng)(z,1)而開始執(zhí)行來自所選擇的任務(wù)T(z)的指令。
如路徑1012所示,步驟1010之后為步驟1014。在步驟1014中,第一處理器90提取并讀取所選擇的信道RC(z)的請求信道參數(shù)。
舉例來說,但此例并不限制本發(fā)明的范圍,信道參數(shù)可以包括PD(k)。在接收根據(jù)ATM通信協(xié)議發(fā)送的數(shù)據(jù)流時,第一處理器90可以讀取單元的頭部。頭部包括地址,該地址與虛擬連接(即CV)相關(guān)。該地址定義了在步驟1018中要讀取信道參數(shù)的信道。在根據(jù)快以太網(wǎng)通信協(xié)議接收數(shù)據(jù)流時,第一處理器90檢查是否存在沖突(如果沖突出現(xiàn)在一個預(yù)定的時間窗口中),如果答案為“是”,通信控制器111就會忽略所接收到的信息,或當?shù)谝惶幚砥鲌?zhí)行涉及到向RC(z)發(fā)送數(shù)據(jù)的任務(wù)時重新發(fā)送數(shù)據(jù)流。如果答案為“否”,第一處理器90便向第二處理器100發(fā)送一個出錯信號。
如路徑1016所示,步驟1014之后為步驟1018。在步驟1018中,第一處理器提取通信信道參數(shù)。第一處理器90檢查通信控制器111要接收(或發(fā)送)的數(shù)據(jù)字是否為一個通信幀中的第一個數(shù)據(jù)字。如果答案為是,步驟1018之后為步驟1022,否則它之后為步驟1030。通常,通信信道參數(shù)包括一個能夠表明一個數(shù)據(jù)字是否為幀的開始的字段。例如,當根據(jù)ATM通信協(xié)議接收單元時,這種指示可以在單元的頭部找到。
如路徑1020所示,步驟1018之后為步驟1022。在步驟1022中,第一處理器90根據(jù)先前提取的DP(k)提取BF(k)。TMP(k)得到PT(k)的值,因為第一處理器90將開始把從CC(k)處接收到的數(shù)據(jù)字寫入BF(k)的開頭。
如路徑1024所示,步驟1022之后為步驟1026。在步驟1026中,第一處理器讀取FSB(k)。如果該位已被設(shè)置,第一處理器90便不能訪問BF(k)。方便起見,第一處理器90將會一直等到第二處理器100復(fù)位FSB(k),而不會試圖把數(shù)據(jù)寫入其他的緩沖器描述符,但這也不是必須的。如路徑1028所示,當復(fù)位了FSB(k)時,第一處理器在步驟1030中提取TMP(k)。TMP(k)指向所接收到的數(shù)據(jù)字將被存儲的地址(或數(shù)據(jù)字將被發(fā)送的地址)內(nèi)。
如路徑1032所示,步驟1030之后為步驟1034。如果執(zhí)行步驟1034而通信控制器111通過外設(shè)從CC(k)接收到數(shù)據(jù),那么就把一個數(shù)據(jù)字(或多個數(shù)據(jù)字)從CC(k)發(fā)送到第一存儲體70,然后再從第一存儲體70發(fā)送到由TMP(k)所指向的地址。如果執(zhí)行步驟1034,而通信控制器111通過外設(shè)向CC(k)發(fā)送數(shù)據(jù),那么就把一個數(shù)據(jù)字(或多個數(shù)據(jù)字)從由TMP(k)所指向的地址發(fā)送到第一存儲體70,然后再從第一存儲體70發(fā)送到CC(k)。如根據(jù)圖8所解釋的那樣,BTM 40處理數(shù)據(jù)從(到)CC(k)到(從)第一存儲體70的發(fā)送。
如路徑1036所示,步驟1034之后為步驟1038。
在查詢步驟,第一處理器90檢查在步驟1034中存儲在BF(k)(或從BF(k)發(fā)送)的數(shù)據(jù)字是否為一個幀中的最后的數(shù)據(jù)字或者BF(k)是否為滿(空)。
如路徑1048所示,如果兩個問題的答案都為“否”,那么步驟1038之后為步驟1046。在步驟1046中,增加TMP(k),以使得它指向BF(k)內(nèi)空的數(shù)據(jù)字(指向要發(fā)送到CC(k)的下一個數(shù)據(jù)字),該數(shù)據(jù)字在先前由TMP(k)指向的存儲字之后。如路徑1056所示,步驟1046之后為步驟1034。
如路徑1044所示,如果數(shù)據(jù)字為一個幀的結(jié)尾,不管BF(k)的狀態(tài)如何,查詢步驟1038之后為步驟1050。在步驟1050中,第一處理器90向第二處理器100發(fā)送一個幀的指示結(jié)尾,通過設(shè)置FSB(k)關(guān)閉BD(k),并更新通信信道參數(shù)。這種更新包括由下列描述符指針DP(k+1)代替DP(k)。
例如,當根據(jù)ATM AL5通信協(xié)議(ATM通信協(xié)議的子協(xié)議)接收數(shù)據(jù)流時,第一處理器90必須檢查CRC檢查是否表明了在發(fā)送幀時存在錯誤,如果這樣,它就向第二處理器發(fā)送一個中斷。第一處理器90還可以檢查最后單元的長度,并以此更新LW(k)。
如路徑1040所示,如果BF(k)為“滿”(空,當從通信控制器111發(fā)送數(shù)據(jù)字時),步驟1038之后為步驟1042。在步驟1042,第一處理器90通過設(shè)置FSB(k)關(guān)閉BD(k),并更新通信信道參數(shù)。這種更新包括由下列描述符指針DP(k+1)代替DP(k)。
圖13為根據(jù)本發(fā)明的優(yōu)選實施例描述第一處理器對各種接收/發(fā)送請求所作出的響應(yīng)的時序圖。
信號PR1代表由第一處理器90執(zhí)行第一任務(wù)T(1)。信號PR2代表由第一處理器90執(zhí)行第二任務(wù)T(2)。信號PR3代表由第一處理器90執(zhí)行第三任務(wù)T(3)。第一任務(wù)T(1)比第二任務(wù)T(2)具有更高的優(yōu)先級,而第三任務(wù)T(3)的優(yōu)先級則比第二任務(wù)T(2)的優(yōu)先級要低。
如過渡1550和1551所示,第一處理器90開始執(zhí)行第一任務(wù)T(1),直到第一任務(wù)T(1)需要從外部存儲體110提取信息為止。第一任務(wù)T(1)由于其最高的優(yōu)先級而在第二和第三任務(wù)T(2)和T(3)之前執(zhí)行。如過渡1551所示,第一處理器90向第一DMA 60發(fā)送一個DMA請求并執(zhí)行任務(wù)轉(zhuǎn)換。如渡1551和1560所示,第一處理器90停止執(zhí)行第一任務(wù)T(1),開始執(zhí)行第二任務(wù)T(2)。DMA請求要在過渡1562之前執(zhí)行,否則任何從與第一任務(wù)T(1)相關(guān)的請求信道來的請求都會被禁止,第一處理器將不會執(zhí)行第一任務(wù)T(1)。
在過渡1561之后,第一處理器90開始以與它執(zhí)行第一任務(wù)T(1)相同的方式執(zhí)行第二任務(wù)T(2)。如過渡1560和1561所示,執(zhí)行第二任務(wù)T(2),直到需要從外部存儲體110提取信息為止。如渡1561和1570所示,第一處理器90執(zhí)行任務(wù)轉(zhuǎn)換,它停止執(zhí)行第二任務(wù)T(2),并以與它執(zhí)行第一任務(wù)T(1)和第二任務(wù)T(2)相同的方式開始執(zhí)行第三任務(wù)T(3)。如過渡1580和1581所示,執(zhí)行第三任務(wù)T(3),直到需要從外部存儲體110提取信息為止。在過渡1581之后,第一處理器檢查是否存在請求,并且因為所有的接收/發(fā)送請求都被禁止,第一處理器90一直等到與第一任務(wù)T(1)相關(guān)的DMA請求完成,然后開始執(zhí)行第一任務(wù)T(1),如過渡1562所示。
在過渡1560和1561,1562和1563,1564和1565,1566和1567之間執(zhí)行第一任務(wù)T(1)。在過渡1561和1562,1563和1564,1565和1566之間,第一DMA 60執(zhí)行與第一任務(wù)T(1)相關(guān)的DMA請求。在過渡1570和1571,1572和1573之間執(zhí)行第二任務(wù)T(2)。在過渡1571和1572之間,第一DMA 60或第二DMA 160執(zhí)行與第二任務(wù)T(2)相關(guān)的DMA請求。在過渡1580和1581,1582和1583,1584和1585,1586和1587之間執(zhí)行第三任務(wù)T(3)。在過渡1581和1582,1583和1584,1585和1586之間,第一DMA 60執(zhí)行與第三任務(wù)T(3)相關(guān)的DMA請求。
圖14為根據(jù)本發(fā)明的優(yōu)選實施例描述第一處理器對各種接收/發(fā)送請求所作出的響應(yīng)的時序圖。
如參照圖11所進一步詳細解釋的那樣,信號PR1代表由第一處理器90執(zhí)行第一任務(wù)T(1)。第一處理器在過渡1560和1561,1562和1563,1564和1565,1566和1567之間執(zhí)行第一任務(wù)T(1)。過渡1561,1563和1565表示任務(wù)轉(zhuǎn)換,它通常是由需要從外部存儲體或其他外部單元提取信息所導(dǎo)致的。
信號CR1代表從CR(z)所發(fā)送的一個接收/發(fā)送請求。如過渡1590所示,該請求一直到第一處理器90完成執(zhí)行第一任務(wù)T(1)前都是有效的。
信號R1代表輸入到調(diào)度器50的被屏蔽的信號。如過渡1591所示,當?shù)谝蝗蝿?wù)T(1)需要從外存儲體110提取信息時,第一處理器90向第一DMA 60或向第二DMA 160發(fā)送一個DMA請求,并向調(diào)度器50發(fā)送一個禁止信號。禁止信號使信號R1復(fù)位。如參照圖4進一步詳細解釋的那樣,在第一DMA 60或第二DMA 160執(zhí)行完所有由RC(z)所產(chǎn)生的DMA請求后,它向調(diào)度器50發(fā)送一個使能信號。如過渡1592所示,該使能信號設(shè)置信號R1。過渡1592是過渡1562的先決條件。只要與RC(z)相關(guān)的DMA請求沒有被充分執(zhí)行,第一處理器90就不會處理第一任務(wù)T(1)。
在過渡1562之前執(zhí)行DMA請求,否則從與第一任務(wù)T(1)相關(guān)的請求信道來的任何請求都被禁止,第一處理器將不會恢復(fù)執(zhí)行第一任務(wù)T(1)內(nèi)的指令。
如過渡1592,1594和1596所示,R1信號是在第一DMA 60執(zhí)行完與RC(z)相關(guān)的DMA請求之后被設(shè)置的。如過渡1593和1595所示,當需要執(zhí)行與RC(z)相關(guān)的DMA請求時,信號R1被復(fù)位。
如過渡1597所示,當?shù)谝惶幚砥?0執(zhí)行完第一任務(wù)T(1)時,R1被復(fù)位。
這樣,此處就描述了一個實施例,它包括至少一個改進的用于對數(shù)據(jù)處理器指令進行分類的方法和裝置的優(yōu)選實施例以及指令系統(tǒng)的實施例。很明顯,對于本技術(shù)領(lǐng)域內(nèi)的人員來講,可以用眾多的方式來修改所披露的主題,并采用很多不同于上面所描述和專門陳述的優(yōu)選形式。因此,上面所披露的主題只被認為是描述性的,而并不是限制性的。由法律最大程度的允許,所附的權(quán)利要求意于覆蓋所有此類的修改以及本發(fā)明的真正精神和范圍內(nèi)的其它實施例。本發(fā)明的范圍將由下面的權(quán)利要求及其等效物所具有的最大許可詮釋確定,而不是前面的詳細描述所確定。
權(quán)利要求
1.一種高速通信控制器,用于接收,發(fā)送和處理高速數(shù)據(jù)流,數(shù)據(jù)流包括幀,通信控制器適合于與一組通信信道,與第一和第二外部總線相連。通信控制器包括第一處理器,用于控制數(shù)據(jù)流的事務(wù),其中第一處理器通過執(zhí)行任務(wù)控制幀的事務(wù);第二處理器,用于處理高級管理和通信協(xié)議功能;以及調(diào)度器,與第一處理器相連,用于感知是否需要執(zhí)行一項任務(wù),并選擇待由第一處理器執(zhí)行的選定任務(wù)。
2.權(quán)利要求1中的通信控制器,進一步包括指令存儲體,與第一處理器相連,用于存儲任務(wù);第一存儲體,與第一處理器相連,用于存儲待由第一處理器處理的數(shù)據(jù);第一直接存儲器存取控制器,與第一處理器和第一外部總線相連,用于提取存儲在與第一外部總線相連的外存儲體內(nèi)的信息;第二直接存儲器存取控制器,與第一處理器和第二外部總線相連,用于提取存儲在與第二外部總線相連的外存儲體內(nèi)的信息;多個外設(shè),與調(diào)度器和第一存儲體相連,用于在多個通信信道和第一存儲體之間起緩沖作用。
3.權(quán)利要求2的通信控制器,其中調(diào)度器存儲了多個棧指針;其中一個棧指針與一項任務(wù)相關(guān);調(diào)度器向第一處理器發(fā)送一所選擇的棧指針,該所選擇的棧指針與所選擇的任務(wù)相關(guān);一項任務(wù)的執(zhí)行涉及到更新所選擇的棧指針;以及當?shù)谝惶幚砥魍V箞?zhí)行所選任務(wù)時,它向調(diào)度器發(fā)送所選的更新了的棧指針。
4.權(quán)利要求3的通信控制器,其中當任務(wù)的執(zhí)行涉及到從外部存儲體中提取信息時,第一處理器便停止執(zhí)行任務(wù)。
5.權(quán)利要求4的通信控制器,其中一個外設(shè)具有兩個請求信道;第一請求信道處理數(shù)據(jù)從通信控制器向一個通信信道的發(fā)送;第二請求信道處理數(shù)據(jù)從通信信道發(fā)送到通信控制器的接收;當?shù)谝徽埱笮诺揽梢越邮盏揭l(fā)送到通信信道去的數(shù)據(jù)時,它會向調(diào)度器發(fā)送一個發(fā)送請求;以及當?shù)诙埱笮诺澜邮盏綇耐ㄐ判诺纴淼臄?shù)據(jù)時,它會向調(diào)度器發(fā)送一個接收請求。
6.權(quán)利要求5的通信控制器,其中調(diào)度器包括請求選擇器,與外設(shè)相連,用于接收發(fā)送請求和接收請求并選擇所選定的請求;多個棧指針寄存器,用于存儲多個棧指針;棧指針輸入多路復(fù)用器,與多個棧指針多路復(fù)用器和第一處理器相連,用于把棧指針寫入多個棧指針寄存器中;以及棧指針輸出多路復(fù)用器,與多個棧指針寄存器,第一處理器和請求選擇器相連,用于把選定的棧指針發(fā)送到第一處理器。
7.權(quán)利要求6的通信控制器,其中第一直接存儲器存取控制器和第二直接存儲器存取控制器包括一個直接存儲器存取請求隊列,與第一處理器相連,用于存儲多個直接存儲器存取請求;和一個使能單元,與直接存儲器存取請求隊列和調(diào)度器相連,用于把與存儲在直接存儲器存取控制器中的直接存儲器存取請求相關(guān)的第一請求信道來的發(fā)送請求進行屏蔽,并把與存儲在直接存儲器存取控制器中的直接存儲器存取請求相關(guān)的第二請求信道來的接收請求進行屏蔽。
8.權(quán)利要求7的通信控制器,其中第一直接存儲器存取控制器和第二直接存儲器存取控制器進一步包括一個請求旁路寄存器,用于存儲直接存儲器存取請求;一個輸入多路復(fù)用器,用于確定是把直接存儲器存取請求存儲在直接存儲器存取請求隊列中還是存儲在請求旁路寄存器中;以及一個輸出多路復(fù)用器,與第一存儲體,直接存儲器存取請求隊列和旁路請求寄存器相連,如果請求旁路寄存器存儲了一個有效的直接存儲器存取請求,它就用于選擇存儲在請求旁路寄存器中的直接存儲器存取請求。
9.權(quán)利要求8的通信控制器,其中直接存儲器存取請求隊列包括多個存儲字;每個存儲字都具有第一位置和第二位置;第二位置是用于存儲直接存儲器存取請求;以及第一位置用于存儲一個標記,該標記表明了與存儲在第二位置中的直接存儲器存取請求相關(guān)的請求信道。
10.權(quán)利要求7的通信控制器,其中當?shù)谝恢苯哟鎯ζ鞔嫒】刂破骱偷诙苯哟鎯ζ鞔嫒】刂破髦杏幸粋€的使能單元屏蔽了來自第一請求信道的發(fā)送請求時,來自第一請求信道的發(fā)送請求便被屏蔽;和當?shù)谝恢苯哟鎯ζ鞔嫒】刂破骱偷诙苯哟鎯ζ鞔嫒】刂破髦杏幸粋€的使能單元屏蔽了自第二請求信道來的接收請求時,自第二請求信道來的接收請求便被屏蔽。
11.權(quán)利要求10的通信控制器,進一步具有一個塊傳送機,用于傳送從外設(shè)到第一存儲體或從第一存儲體到外設(shè)的數(shù)據(jù);其中塊傳送機包括位字段單元,與外設(shè)相連,用于處理數(shù)據(jù);CRC機,與外設(shè)相連,用于執(zhí)行CRC檢查;BTM數(shù)據(jù)寄存器,與CRC機,數(shù)據(jù)處理器和第一存儲體相連,用于存儲待從第一存儲體發(fā)送到外設(shè)的數(shù)據(jù),并存儲待寫入第一存儲體中的數(shù)據(jù);BTM控制單元,與CRC機,數(shù)據(jù)處理器和BTM數(shù)據(jù)寄存器相連,用于控制塊傳送機。
12.權(quán)利要求11的通信控制器,其中第一存儲體具有多個部分,每個部分都與第一處理器,第二處理器,第一直接存儲器存取控制器,第二直接存儲器存取控制器和BTM相連,其中每個部分包括一個存儲器陣列,用于存儲信息;一個存儲體選擇器,用于從第一處理器,第二處理器,第一直接存儲器存取控制器,第二直接存儲器存取控制器和BTM中選擇所選定的設(shè)備;數(shù)據(jù)多路復(fù)用器,用于使能所選定的設(shè)備與存儲器陣列之間的數(shù)據(jù)傳輸;以及地址多路復(fù)用器,用于使能所選定的設(shè)備向存儲器陣列發(fā)送一個地址字。
13.權(quán)利要求5的通信控制器,其中外部存儲體具有多個緩沖器,用于存儲數(shù)據(jù);外部存儲體進一步具有緩沖器描述符,用于存儲一個指針,一個狀態(tài)和控制字段和一個長度字段;指針指向緩沖器;長度字段定義了由指針所指向的緩沖器的長度;以及狀態(tài)和控制字具有一個F/S字段,它表示第一處理器和第二處理器中哪一個可以對指針所指向的緩沖器進行存取。
14.權(quán)利要求13的通信控制器,其中緩沖器存儲與請求信道相關(guān)的數(shù)據(jù);與單個請求信道相關(guān)的一組緩沖器形成一個循環(huán)隊列;狀態(tài)和控制字包括一個換行字段,用于表示具有換行字段的緩沖器描述符所涉及的緩沖器是否為該組中的最后一個緩沖器;一個緩沖器存儲從單個數(shù)據(jù)幀來的數(shù)據(jù);每個緩沖器包括多個存儲字;第一存儲體存儲一個臨時指針;以及臨時指針指向待由第一處理器所要處理的下一個存儲字。
15.權(quán)利要求14的通信處理器,其中在第一處理器處理了由緩沖器描述符所涉及的緩沖器之后,它對F/S字段進行設(shè)置;和在第二處理器處理了由緩沖器描述符所涉及的緩沖器之后,它對F/S字段進行復(fù)位。
16.權(quán)利要求14的通信控制器,其中當?shù)谝惶幚砥鲌?zhí)行任務(wù)轉(zhuǎn)換時,它在第一存儲體中保存更新的臨時指針;和當?shù)谝惶幚砥鏖_始執(zhí)行任務(wù)中的指令時,它會提取臨時指針。
17.一種用于處理數(shù)據(jù)流事務(wù)的方法,數(shù)據(jù)流包括幀,其中幀事務(wù)是通過執(zhí)行任務(wù)來處理的,其中執(zhí)行任務(wù)涉及到從外部單元提取信息,該方法包括下列步驟檢查是否需要處理事務(wù);如果需要處理一項事務(wù),便執(zhí)行任務(wù),直到任務(wù)結(jié)束,或直到任務(wù)的執(zhí)行涉及到從外部單元提取信息;如果任務(wù)結(jié)束,便跳到檢查是否需要處理事務(wù)那一步;以及否則,便初始化從外部單元提取信息的過程,停止執(zhí)行涉及從外部單元提取信息的任務(wù),并跳到檢查是否需要處理事務(wù)那一步。
18.權(quán)利要求17的方法,其中當需要從通信信道接收幀的一部分時,便停止任務(wù)的執(zhí)行。
19.一種操作通信控制器的方法,該通信控制器用于接收,發(fā)送和處理高速數(shù)據(jù)流,數(shù)據(jù)流由幀組成,通信控制器與多個通信信道和外部單元相連,通信控制器具有一個第一處理器,用于控制數(shù)據(jù)流事務(wù);其中第一處理器通過執(zhí)行任務(wù)控制幀的事務(wù);第二處理器,用于處理高級管理和通信協(xié)議功能;第一外部總線,與第一處理器和第二處理器相連,用于把第一處理器,第二處理器與外部單元連接起來;第二外部總線,與第一處理器和第二處理器相連,用于把第一處理器,第二處理器與外部單元連接起來;調(diào)度器,與第一處理器相連,用于感知是否需要執(zhí)行一項任務(wù),并選擇要執(zhí)行哪一項任務(wù);該方法包括下列步驟檢查是否需要處理事務(wù);如果需要處理一項事務(wù),便執(zhí)行任務(wù),直到任務(wù)結(jié)束,或直到任務(wù)的執(zhí)行涉及到從外部單元提取信息;以及如果任務(wù)結(jié)束,便跳到檢查是否需要處理事務(wù)那一步;否則,便初始化從外部單元提取信息的過程,停止執(zhí)行涉及從外部單元提取信息的任務(wù),并跳到檢查是否需要處理事務(wù)那一步。
20.權(quán)利要求19的方法,其中通信控制器進一步具有一個指令存儲體,它與第一處理器相連,用于存儲任務(wù);第一存儲體,與第一處理器相連,用于存儲要由第一處理器處理的數(shù)據(jù);第一直接存儲器存取控制器,與第一處理器和第一外部總線相連,用于提取存儲在與第一外部總線相連的外部存儲體內(nèi)的信息;第二直接存儲器存取控制器,與第一處理器和第二外部總線相連,用于提取存儲在與第二外部總線相連的外部存儲體內(nèi)的信息;多個外設(shè),與調(diào)度器和第一存儲體相連,用于在多個通信信道和第一存儲體之間起緩沖作用;其中每個外設(shè)包括兩個請求信道;其中第一請求信道處理數(shù)據(jù)從通信控制器向通信信道的發(fā)送;其中第二請求信道處理數(shù)據(jù)從通信信道發(fā)送到通信控制器的接收;其中請求信道參數(shù)定義了請求信道的狀態(tài);其中通信信道參數(shù)定義了通信信道的狀態(tài);其中外部存儲體具有多個緩沖器,用于存儲數(shù)據(jù);其中外部存儲體進一步具有緩沖器描述符,用于存儲指針,狀態(tài)和控制字段,和長度字段;其中指針指向緩沖器;該方法包括下列步驟開始任務(wù);讀取請求信道參數(shù);提取通信信道參數(shù),并檢查可以表明任務(wù)是否涉及處理幀中第一個數(shù)據(jù)字的通信信道參數(shù);如果任務(wù)涉及處理幀中第一個數(shù)據(jù)字便執(zhí)行下列步驟提取緩沖器描述符;設(shè)置臨時指針為緩沖器描述符中的指針值;檢查緩沖器描述符是否被使能,其中如果緩沖器描述符未被使能,則一直等到它被使能;提取臨時指針;否則,跳到提取臨時指針那一步;如果從外部單元接收數(shù)據(jù)和把數(shù)據(jù)移動到通信信道,如果發(fā)送數(shù)據(jù),把數(shù)據(jù)從通信信道移動到外部單元,;檢查數(shù)據(jù)幀是否結(jié)束,緩沖器是否結(jié)束;如果緩沖器結(jié)束,更新通信信道參數(shù),并跳到提取緩沖器描述符那一步;如果幀結(jié)束,發(fā)送幀指示的末端,關(guān)閉緩沖器描述符,更新通信信道參數(shù),并跳到開始任務(wù)那一步;以及否則,更新臨時指針,并跳到移動數(shù)據(jù)那一步。
全文摘要
一種通信控制器,用于處理高速多協(xié)議數(shù)據(jù)流,其中數(shù)據(jù)流由幀組成。通信控制器具有兩個處理器,第二處理器初始化第一處理器并處理高級管理和協(xié)議功能,第一處理器處理數(shù)據(jù)流事務(wù)。第一和第二處理器與兩條外部總線相連。第一處理器通過執(zhí)行任務(wù)而處理幀的事務(wù)。如果第一處理器確實處理了一整個幀,或者如果需要從通信信道提取幀的一部分,當需要從與第一或第二外部總線相連的外部單元提取信息時,第一處理器便執(zhí)行任務(wù)轉(zhuǎn)換。
文檔編號H04L12/40GK1346468SQ00805899
公開日2002年4月24日 申請日期2000年3月14日 優(yōu)先權(quán)日1999年4月2日
發(fā)明者約倫·耶文, 埃利澤·魏茨, 莫蒂·柯尼克, 阿維·沙列夫, 阿維·黑格 申請人:摩托羅拉公司