專利名稱:具有雙端口存儲器仿真配置的交換結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及分組交換系統(tǒng),尤其涉及一種仿真雙端口交換結(jié)構(gòu)存儲器的單端口交換結(jié)構(gòu)存儲器。
背景技術(shù):
數(shù)據(jù)通信交換機(jī)中的交換結(jié)構(gòu)便于將從輸入端口接收到的數(shù)據(jù)分組傳送到輸出端口,從而將分組轉(zhuǎn)發(fā)給目的地。交換結(jié)構(gòu)可實現(xiàn)為縱橫交換機(jī)、信元交換機(jī)或者共享存儲器分組交換機(jī)。與其它種類的交換結(jié)構(gòu)相比,共享存儲器分組交換機(jī)的一個優(yōu)點是它在高業(yè)務(wù)負(fù)載時的魯棒性。共享分組存儲器交換機(jī)通常提供比其它種類的交換結(jié)構(gòu)更低的分組損失和更短的等待時間。
通常將共享分組存儲器交換機(jī)內(nèi)的存儲器實現(xiàn)為單端口動態(tài)隨機(jī)訪問存儲器(DRAM)。圖1是在現(xiàn)有技術(shù)中可以找到的典型的單端口存儲器60的示例性方框圖。該存儲器包括單條地址總線62、控制總線64和數(shù)據(jù)總線66。單條地址、控制和數(shù)據(jù)總線用于響應(yīng)于寫命令在存儲器內(nèi)接收和存儲分組,和響應(yīng)于讀命令從存儲器中提取和發(fā)送所存儲的分組。
然而,單端口存儲器的一個不足之處是它每次僅支持一個存儲器訪問,不管是讀訪問還是寫訪問。因此,不能同時執(zhí)行多個讀訪問或多個寫訪問,這限制了到該存儲器和自該存儲器的帶寬,并造成了限制系統(tǒng)性能的瓶頸。此外,當(dāng)試圖同時執(zhí)行讀操作和寫操作時可能會出現(xiàn)讀寫沖突,經(jīng)常導(dǎo)致分組的讀或?qū)懷舆t。
一種試圖避免讀寫沖突的常規(guī)方法是用雙端口RAM替代單端口RAM。圖2是在現(xiàn)有技術(shù)中可以找到的典型的雙端口存儲器80的示例性方框圖。該雙端口存儲器80包括兩條地址總線82a和82b、控制總線84a和84b和數(shù)據(jù)總線86a和86b。雙端口存儲器允許通過各條總線同時從同一存儲器80中提取分組和向同一存儲器80存儲分組,而沒有讀寫沖突的風(fēng)險,允許進(jìn)和出存儲器的數(shù)據(jù)吞吐量翻倍而不改變訪問時序。
盡管雙端口存儲器避免了讀寫沖突,但它們通常不具有交換結(jié)構(gòu)所需要的存儲器容量,同時也無法用作DRAM,而這種交換結(jié)構(gòu)通常使用的是DRAM。此外,雙端口存儲器在區(qū)域使用效率方面通常也不如單端口存儲器。
因此,需要一種使用單端口存儲器來最大化數(shù)據(jù)吞吐量而沒有讀寫沖突風(fēng)險的交換結(jié)構(gòu)。
發(fā)明內(nèi)容
本發(fā)明涉及一種交換結(jié)構(gòu),它具有利用單端口存儲器來實現(xiàn)的雙端口存儲器仿真配置。根據(jù)一種實施例,該交換結(jié)構(gòu)包括一個輸入和一個連接到所述輸入的存儲器,該存儲器包括第一存儲器單元和第二存儲器單元,其特征在于選擇第一存儲器單元或第二存儲器單元用于在第一分組的至少一部分上執(zhí)行第一存儲器訪問操作,所述選擇基于選擇用于在第二分組的至少一部分上執(zhí)行第二存儲器訪問操作的存儲器單元進(jìn)行。
根據(jù)另一種實施例,本發(fā)明涉及一種具有雙端口存儲器仿真配置的交換結(jié)構(gòu),其中該交換結(jié)構(gòu)包括第一單端口存儲器,包括單個第一輸入端口、單個第一地址端口和單個第一輸出端口;和第二單端口存儲器,包括單個第二輸入端口、單個第二地址端口和單個第二輸出端口。根據(jù)這個實施例,當(dāng)在第一單端口存儲器上執(zhí)行第二存儲器訪問操作時,則在第二單端口存儲器上執(zhí)行第一存儲器訪問操作。而當(dāng)在第二單端口存儲器上執(zhí)行第二存儲器訪問操作時,則在第一單端口存儲器上執(zhí)行第一存儲器訪問操作。
根據(jù)一種實施例,所述第一存儲器訪問操作是寫操作和所述第二存儲器訪問操作是讀操作。
根據(jù)另一種實施例,同時以無阻塞的方式執(zhí)行所述第一和第二存儲器訪問操作。
因此,應(yīng)當(dāng)理解本發(fā)明允許使用單端口存儲器來仿真雙端口存儲器??梢砸詿o阻塞的方式在同一操作周期內(nèi)執(zhí)行讀和寫操作,這是因為在任意的給定周期內(nèi),所述讀和寫操作出現(xiàn)在不同的單端口存儲器內(nèi)。因此,本發(fā)明允許最大化數(shù)據(jù)吞吐量而沒有讀寫沖突的風(fēng)險。
當(dāng)參考下述詳細(xì)描述、所附權(quán)利要求書和附圖時,將更完整地理解本發(fā)明的這些和其它的特征、方面和優(yōu)點。當(dāng)然,本發(fā)明的實際范圍由所附權(quán)利要求書來定義。
圖1是可以在現(xiàn)有技術(shù)中找到的典型的單端口存儲器的示例性方框圖;圖2是可以在現(xiàn)有技術(shù)中找到的典型的雙端口存儲器的示例性方框圖;圖3是根據(jù)本發(fā)明一種實施例的具有雙端口存儲器仿真配置的分組交換系統(tǒng)的示意方框圖;圖4是根據(jù)本發(fā)明一種實施例的示例性輸入控制單元的示意方框圖;圖5是根據(jù)本發(fā)明一種實施例的示例性分組緩沖器單元的示意方框圖;圖6是根據(jù)本發(fā)明一種實施例的示例性輸出控制單元的示意方框圖;圖7是根據(jù)本發(fā)明一種實施例的圖5中分組緩沖器單元一部分的更詳細(xì)的方框圖;圖8是根據(jù)本發(fā)明一種實施例的劃分成用于仿真雙端口存儲器的上部數(shù)據(jù)存儲器和下部數(shù)據(jù)存儲器的圖5的分組緩沖器單元內(nèi)的數(shù)據(jù)存儲器的示意布局圖;圖9是根據(jù)雙端口存儲器仿真配置在存儲分組時由圖5的分組緩沖器單元執(zhí)行的處理過程的流程圖;和圖10是根據(jù)雙端口存儲器仿真配置在提取分組時由圖5的分組緩沖器單元執(zhí)行的處理過程的流程圖。
具體實施例方式
圖3是根據(jù)本發(fā)明一種實施例的具有雙端口存儲器仿真配置的分組交換系統(tǒng)的示意方框圖。該系統(tǒng)包括輸入控制單元(ICU)10和輸出控制單元(ECU)12,它們連接到由分組緩沖器單元(PBU)14組成的存儲和轉(zhuǎn)發(fā)從ICU 10接收到的分組的交換結(jié)構(gòu)。ICU 10可以包括一個或多個相關(guān)的輸入端口20,ECU 12可以包括一個或多個相關(guān)的輸出端口22。在任意給定時間上,輸入端口20的全部或一個子集接收目的是輸出端口22的全部或一個子集的數(shù)據(jù)分組。這些分組可以包括但是并不限于以太網(wǎng)幀、ATM信元、TCP/IP和/或UDP/IP分組,并且可能還包括其他第二層(數(shù)據(jù)鏈路/MAC層)、第三層(網(wǎng)絡(luò)層)或者第四層(傳輸層)的數(shù)據(jù)單元。
當(dāng)ICU 10接收到分組時,則該ICU將該分組轉(zhuǎn)發(fā)到PBU 14進(jìn)行存儲。PBU 14在存儲器中存儲該分組,并將通知發(fā)送給對接收該分組可能感興趣的ECU。PBU 14在存儲器中保存該分組,直到ECU發(fā)出請求。在ECU根據(jù)其調(diào)度算法確定已到轉(zhuǎn)發(fā)該分組的時候時,ECU就向PBU 14發(fā)送提取該分組的請求。PBU響應(yīng)該請求提取所述分組并將其發(fā)送到ECU,以便經(jīng)由輸出端口22中的一個或多個進(jìn)行轉(zhuǎn)發(fā)。
盡管在圖3中圖示的實施例圖示了連接到單個PBU的單個ICU和ECU,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解分組交換系統(tǒng)可以包括通過高速串行鏈路連接到多個PBU的多個ICU和ECU,以便每個ICU和ECU可以與每個PBU通信,如在2002年5月15日提交的已轉(zhuǎn)讓給本案的受讓人、發(fā)明名稱為“分布式共享存儲分組交換機(jī)(Distributed SharedMemory Packet Switch)”(代理人卷號47900/JEC/X2)的美國專利申請中所描述的,其內(nèi)容在此引用作為參考。
圖4是根據(jù)本發(fā)明一種實施例的示例性ICU 10的示意方框圖。在所圖示的實施例中的ICU包括輸入處理器32,它連接到輸入數(shù)據(jù)存儲器30,后者又連接到輸入接口34。與現(xiàn)有技術(shù)中常規(guī)的情況相同,輸入分組處理器32接收輸入分組,并對分組執(zhí)行控制、統(tǒng)計、轉(zhuǎn)發(fā)和任何其它的分組處理工作。
輸入數(shù)據(jù)存儲器30可以是用于接收和臨時存儲輸入數(shù)據(jù)分組的先進(jìn)先出(FIFO)緩沖器。當(dāng)輸入端口20中的一個或多個數(shù)據(jù)速率低于或高于到PBU 14的鏈路16的數(shù)據(jù)速率時,則可能希望使用輸入數(shù)據(jù)存儲器30。然而,當(dāng)ICU 10并不包括輸入數(shù)據(jù)存儲器30時,也可以實現(xiàn)一種實施例。
輸入接口34通過鏈路16將輸入數(shù)據(jù)分組轉(zhuǎn)發(fā)給PBU。在一種由多個PBU 14構(gòu)成交換結(jié)構(gòu)的實施例中,可以根據(jù)由與每個PBU有關(guān)的加權(quán)信息調(diào)整的偽隨機(jī)算法來選擇一個特定的PBU,從而允許在多個PBU之間平衡工作負(fù)載。
圖5是根據(jù)本發(fā)明一種實施例的示例性PBU 14的示意方框圖。所圖示實施例中的PBU包括用于存儲從ICU 10接收到的分組的共享分組數(shù)據(jù)存儲器40。將一個特定分組的不同部分存儲在數(shù)據(jù)存儲器內(nèi)通過一個指針鏈表訪問的不同存儲位置上。根據(jù)本發(fā)明的一種實施例,將存儲器劃分成上部數(shù)據(jù)存儲器40a和下部數(shù)據(jù)存儲器40b。將上部數(shù)據(jù)存儲器40a實施為第一單端口存儲器,將下部數(shù)據(jù)存儲器40b實施為第二單端口存儲器。每個單端口存儲器例如可以是相同大小的單端口DRAM。可選擇地,每個單端口存儲器可以是不同大小的。
PBU 14還包括一個PBN緩沖器42,可以將其實現(xiàn)為動態(tài)隨機(jī)訪問存儲器(DRAM)或靜態(tài)RAM(SRAM)。PBN緩沖器42中的每個表目(entry)包括一個地址,稱作PBN地址,它是一個指向存儲至少一部分分組的數(shù)據(jù)存儲器40的指針。根據(jù)本發(fā)明的一種實施例,PBN地址是一個指向存儲分組尾部的存儲位置的指針。
PBN緩沖器42連接到一個稱作輸入存儲器管理器44的存儲器單元,由其保持跟蹤從ICU 10流向數(shù)據(jù)存儲器40的分組。輸入存儲器管理器44從空閑指針緩沖器46提取指向空閑存儲位置的指針。空閑指針緩沖器46包括上部緩沖器部分46a和下部緩沖器部分46b。上部緩沖器部分46a存儲指向上部數(shù)據(jù)存儲器40a內(nèi)的可用存儲位置的指針,下部緩沖器部分46b存儲指向下部數(shù)據(jù)存儲器40b內(nèi)的可用存儲位置的指針。
輸入存儲器管理器44在從空閑指針緩沖器46中提取出的一個或多個空閑存儲位置內(nèi)存儲一個分組的全部或部分。輸入存儲器管理器44保持跟蹤用于存儲分組前一部分的前一指針,并在空閑存儲位置內(nèi)與分組數(shù)據(jù)一起存儲前一指針。這使分組的不同部分通過后向指針機(jī)制相互鏈接,在所述后向指針機(jī)制中分組的當(dāng)前部分指向分組的前一部分。
當(dāng)將整個分組寫入數(shù)據(jù)存儲器40內(nèi)時,輸入存儲器管理器44向PBN緩沖器42添加一個用于新存儲分組的表目。根據(jù)一種實施例,所述表目包括一個指向分組尾部的指針。
PBU 14還包括一個稱作輸出存儲器管理器48的處理單元,由其保持跟蹤從數(shù)據(jù)存儲器40流出到ECU 12的分組。輸出存儲器管理器48向數(shù)據(jù)存儲器40發(fā)送讀命令以從一個特定的存儲位置提取出數(shù)據(jù)。輸出存儲器管理器還檢測不再需要在存儲器40內(nèi)保存的分組,并釋放它們的相關(guān)存儲位置。
除了上述部件之外,PBU 14還包括一個輸入控制器50和一個輸出控制器52。輸入控制器50接收來自ICU 10和ECU 12的不同種類的消息,處理和分離這些不同種類的消息以轉(zhuǎn)發(fā)給PBU內(nèi)的合適組件。
例如,輸入控制器50從ICU 10接收輸入分組,將其轉(zhuǎn)發(fā)給輸入存儲器管理器44以將這些分組存儲在數(shù)據(jù)存儲器內(nèi)。輸入控制器50還接收分組請求消息,將其轉(zhuǎn)發(fā)給PBN緩沖器42以提取用于ECU 12的分組。在另一個實施例中,輸入控制器50可以從ECU接收其它消息,例如與在存儲器內(nèi)存儲的一個分組有關(guān)的預(yù)約消息,此消息表示該分組將保存在存儲器內(nèi)直到被ECU請求。
輸出控制器52向ECU發(fā)送通知消息,指示已經(jīng)接收到一個ECU可能感興趣接收的分組,并將其存儲在數(shù)據(jù)存儲器40內(nèi)。輸出控制器52還接收從數(shù)據(jù)存儲器40提取出的分組,并且一旦ECU 12請求就將這些分組轉(zhuǎn)發(fā)給ECU。
當(dāng)然,應(yīng)當(dāng)理解圖5圖示PBU 14的方框圖,在不影響本發(fā)明創(chuàng)造性方面的情況下,該P(yáng)BU 14具有構(gòu)造PBU所需的或者在理想狀態(tài)下所有的附加單元和/或組件。例如,PBU可以包括一個單獨的通知邏輯電路和相關(guān)表格,用于向ECU發(fā)送通知。PBU還可以包括一個預(yù)約緩沖器,轉(zhuǎn)發(fā)從ECU接收到的預(yù)約消息。在發(fā)明名稱為“分布式共享存儲分組交換機(jī)(Distributed Shared Memory Packet Switch)”的上述美國專利申請中更詳細(xì)地描述了這些附加組件。
圖6是根據(jù)本發(fā)明一種實施例的示例性ECU 12的示意方框圖。根據(jù)所圖示的實施例,ECU 12包括從PBU 14接收不同種類的分組的輸出接口70。輸入接口70將這些分組處理和轉(zhuǎn)發(fā)給合適的輸出組件。
根據(jù)本發(fā)明的一種實施例,輸入接口70將從PBU 14提取到的數(shù)據(jù)分組發(fā)送給輸出數(shù)據(jù)存儲器72,用于在通過一個或多個輸出端口22進(jìn)行轉(zhuǎn)發(fā)之前臨時存儲所述分組??梢詫⑤敵鰯?shù)據(jù)存儲器72實現(xiàn)為先進(jìn)先出(FIFO)緩沖器。當(dāng)一個或多個輸出端口22的數(shù)據(jù)速率高于或者低于用于與PBU 14通信的鏈路18的數(shù)據(jù)速率時,則可能需要輸出數(shù)據(jù)存儲器72。然而,當(dāng)ECU 12并不包括一個輸出數(shù)據(jù)存儲器72的情況下,也可以是一種實施例。
輸出接口70還從PBU 14接收通知消息,該消息表示ECU可能感興趣接收的一個分組已經(jīng)存儲在數(shù)據(jù)存儲器40內(nèi)。當(dāng)與該分組有關(guān)的一個或多個輸出隊列76的隊列過長時,則丟棄那些標(biāo)識為過長隊列的通知。對于其它的相關(guān)隊列,輸出接口70在隊列中存儲一個與該分組有關(guān)的PBN。根據(jù)一種實施例,輸出接口70可以向PBU 14發(fā)送一個預(yù)約消息,表示PBN被排隊且相關(guān)的分組將保存在數(shù)據(jù)存儲器40內(nèi)。
ECU 12包括一個輸出調(diào)度器78,它根據(jù)一種特定的調(diào)度算法使PBN編號從每個輸出隊列76中出列,所述調(diào)度算法例如是加權(quán)循環(huán)復(fù)用算法和基于類別的出列等算法。當(dāng)根據(jù)調(diào)度機(jī)制的確定,調(diào)度轉(zhuǎn)發(fā)一個與排隊的PBN有關(guān)的分組時,輸出接口向PBU 14發(fā)送一個分組請求消息。根據(jù)一種實施例,分組請求消息包括排隊的PBN,允許PBU識別出合適的將要提取的分組。一旦接收到所述分組,ECU就在輸出數(shù)據(jù)存儲器72內(nèi)臨時存儲該分組。因為由PBU以后向的方式提取分組,其中首先提取分組尾部,最后提取分組首部,在通過一個或多個合適的輸出端口轉(zhuǎn)發(fā)分組時,ECU也以后向方式讀取分組,從而抵消PBU的后向提取。以這種方式,ECU以正確的順序轉(zhuǎn)發(fā)分組,其中首先轉(zhuǎn)發(fā)分組的首部,最后轉(zhuǎn)發(fā)分組的尾部。
現(xiàn)在將更加詳細(xì)地描述共享分組數(shù)據(jù)存儲器40的訪問。根據(jù)本發(fā)明的一種實施例,數(shù)據(jù)存儲器40通過將存儲器劃分成上部數(shù)據(jù)存儲器40a和下部數(shù)據(jù)存儲器40b,將其中的每個實現(xiàn)為單端口存儲器,來仿真一個雙端口存儲器。雙端口仿真允許在由輸出存儲器管理器48調(diào)用的從數(shù)據(jù)存儲器提取數(shù)據(jù)的讀操作的同一操作周期中,以非阻塞的方式進(jìn)行由輸入存儲器管理器44調(diào)用的在數(shù)據(jù)存儲器40中存儲數(shù)據(jù)的寫操作。當(dāng)不需要讀操作時,也可以在單個操作周期內(nèi)執(zhí)行兩個寫操作。因此,雙端口仿真配置有助于通過單端口存儲器提高吞吐量,而沒有讀寫沖突的風(fēng)險。
根據(jù)本發(fā)明的一種實施例,讀操作優(yōu)先于寫操作。根據(jù)這個實施例,下一個調(diào)度讀操作的地址確定調(diào)度的寫操作將要訪問的數(shù)據(jù)存儲器部分。當(dāng)調(diào)度在上部數(shù)據(jù)存儲器40a內(nèi)執(zhí)行讀操作時,則將在下部數(shù)據(jù)存儲器40b內(nèi)執(zhí)行寫操作,或反之。因此,在每個周期上,可以以無阻塞的方式同時執(zhí)行讀操作和寫操作。
在寫操作期間,在存儲器不同的存儲位置上逐數(shù)據(jù)字地存儲數(shù)據(jù)分組,其中每個存儲位置存儲當(dāng)前的數(shù)據(jù)字和指向相鄰數(shù)據(jù)字的指針。當(dāng)指針是指向下一個數(shù)據(jù)字的下一個指針時,則可以生成數(shù)據(jù)字的前向指針機(jī)制。然而,在通過單端口存儲器仿真雙端口存儲器時,其中讀操作優(yōu)先于寫操作,是由當(dāng)前的讀操作來確定下一個讀操作將要出現(xiàn)的位置,繼而還確定下一個寫操作將要出現(xiàn)的位置。因而,不是由當(dāng)前的寫操作,而是由下一個讀操作來生成下一個指針信息。這意味著當(dāng)存儲分組數(shù)據(jù)的當(dāng)前部分時,在當(dāng)前的寫操作期間不能處理指針的存儲。相反地,指針信息是不完整的,除非下一個讀操作已經(jīng)確定下一個寫指針的內(nèi)容,這意味著附加的讀、修改和寫步驟是為了提取和正確地設(shè)置下一個指針信息。
根據(jù)本發(fā)明的一種實施例,并不使用前向指針機(jī)制,而是使用后向指針機(jī)制,在前向指針機(jī)制中為了獲取和校正合適的下一個寫指針信息需要附加的操作周期,在后向指針機(jī)制中并不存儲分組的數(shù)據(jù)字和指向下一個數(shù)據(jù)字的指針,而是存儲指向前一個數(shù)據(jù)字的指針。因為在存儲當(dāng)前數(shù)據(jù)字期間可以使用前一指針信息,所以在單個的當(dāng)前寫步驟期間可以同時存儲數(shù)據(jù)和指針信息。因而,可以在單個操作周期期間同時執(zhí)行和完成讀和寫步驟。
在一種可選實施例中,通過維持在0和1之間連續(xù)切換的內(nèi)部1比特計數(shù)器可以實現(xiàn)前向指針機(jī)制。可以使用該計數(shù)器使數(shù)值0與上部數(shù)據(jù)存儲器相關(guān),使數(shù)值1與下部數(shù)據(jù)存儲器相關(guān),交替地讀和寫,從而在一個時間點上,讀=上部存儲器,寫=下部存儲器,在隨后的點上,讀=上部存儲器,寫=下部存儲器。因為將要執(zhí)行下一個寫操作的存儲器單元是預(yù)先已知的,所以可以預(yù)先提取下一個寫指針以與當(dāng)前的數(shù)據(jù)分組一起存儲,從而允許前向指針機(jī)制。
在另一種實施例中,通過使寫操作優(yōu)先于讀操作可以實現(xiàn)前向指針機(jī)制。以這種方式,可以通過當(dāng)前的寫操作來確定下一個調(diào)度的寫操作將要訪問的存儲器單元,允許預(yù)先從所標(biāo)識的存儲器單元中提取出下一個寫指針。同時,通過當(dāng)前的寫操作來確定下一個調(diào)度的讀操作將要訪問的存儲器單元。然而,根據(jù)下一個調(diào)度的讀地址與選定的存儲器單元一致與否,實際的下一個調(diào)度的讀操作可以出現(xiàn),也可以不出現(xiàn)。
圖7是根據(jù)本發(fā)明一種實施例的圖5的PBU 14一部分的更詳細(xì)的方框圖。該輸入存儲器管理器44包括PBN寄存器106和前一寫指針寄存器108。PBN寄存器106臨時存儲一個PBN緩沖器的地址,所述PBN緩沖器稱作PBN,用于存儲一旦將分組存儲在數(shù)據(jù)存儲器40內(nèi)一個指向該分組的指針。例如,當(dāng)輸入存儲器管理器檢測到分組的首部(SOP)時,從空閑PBN緩沖器(未圖示)中選擇出PBN。
前一寫指針寄存器106存儲一個指向用于存儲所述分組前一部分的存儲位置的指針。當(dāng)在數(shù)據(jù)存儲器40的可用位置內(nèi)存儲流動的每個分組部分時,更新前一寫指針寄存器106。與數(shù)據(jù)分組的當(dāng)前部分一起在存儲器內(nèi)存儲前一寫指針寄存器106內(nèi)的指針。
空閑指針緩沖器46存儲指向可以存儲分組的數(shù)據(jù)存儲器40內(nèi)可用位置的空閑指針列表104。將空閑指針列表104劃分成上部緩沖器部分46a和下部緩沖器部分46b。上部緩沖器部分存儲指向上部數(shù)據(jù)存儲器40a內(nèi)可用存儲位置的指針,下部緩沖器部分存儲指向下部數(shù)據(jù)存儲器內(nèi)可用存儲位置的指針。
根據(jù)一種實施例,對于將要存儲的分組的每個部分來說,空閑緩沖器同時向輸入存儲器管理器44發(fā)送來自上部緩沖器部分46a的空閑上部指針和來自下部緩沖器部分46b的空閑下部指針。將空閑上部指針發(fā)送給上部存儲器地址選擇器105,并將空閑下部指針發(fā)送給下部存儲器地址選擇器107。由上部/下部(U/L)讀指示符109來確定選擇作為存儲數(shù)據(jù)的存儲器地址的實際指針,所述上部/下部(U/L)讀指示符109根據(jù)下一個調(diào)度的讀操作來啟動空閑上部指針或空閑下部指針。每次處理僅需要一個空閑指針,并將未使用的指針返回給空閑指針緩沖器。當(dāng)下一個調(diào)度的讀操作是在下部數(shù)據(jù)存儲器40b上時,則U/L讀指示符使空閑上部指針選擇為用于寫入分組當(dāng)前部分的地址。以這種方式,可以在同一操作周期內(nèi)以無阻塞的方式同時執(zhí)行讀和寫操作,仿真了雙端口存儲器。
根據(jù)一種實施例,當(dāng)未調(diào)度讀操作時,則使用加權(quán)偽隨機(jī)算法來確定選擇空閑上部指針還是空閑下部指針。根據(jù)上部緩沖器部分和下部緩沖器部分內(nèi)空閑指針的數(shù)量來相應(yīng)地分配加權(quán)。根據(jù)另一種實施例,在未調(diào)度同時的讀操作的情況下,使用兩個空閑指針來同時執(zhí)行兩個寫操作。
數(shù)據(jù)存儲器40包括上部數(shù)據(jù)存儲器40a和下部數(shù)據(jù)存儲器40b。將數(shù)據(jù)存儲器的每個部分實現(xiàn)為包括單數(shù)據(jù)輸入端口100、單地址端口101和單數(shù)據(jù)輸出端口102的單端口存儲器。數(shù)據(jù)輸入端口100從存儲器管理器44接收將要存儲的分組的一部分和前一寫指針。地址端口101接收在數(shù)據(jù)存儲器內(nèi)用于存儲或提取數(shù)據(jù)的地址。數(shù)據(jù)輸出端口102發(fā)送從存儲器提取出的數(shù)據(jù)。
一旦輸入存儲器管理器44檢測到分組的尾部(EOP),則將分組的尾部存儲在從空閑指針緩沖器46提取出的當(dāng)前空閑指針?biāo)甘镜拇鎯ξ恢脙?nèi)。將當(dāng)前的空閑指針存儲在PBN緩沖器內(nèi)由PBN寄存器106中的PBN所指示的地址上。還由輸出控制器52向感興趣的ECU發(fā)送通知,其中使用PBN表示使用該P(yáng)BN可以提取的存儲分組。
PBN緩沖器42包括多個PBN地址112,其中每個PBN地址指向存儲一個特定分組的全部或部分的存儲位置。根據(jù)一種實施例,每個PBN地址指向存儲一個分組的尾部的存儲位置??梢酝ㄟ^每個PBN地址相關(guān)的PBN 110來對其進(jìn)行訪問。
輸出寫表格48包括PBN寄存器114和當(dāng)前讀指針寄存器116。PBN寄存器存儲ECU 12請求的一個分組的PBN。使用PBN從PBN緩沖器42中提取一個相關(guān)的PBN地址。將所提取的PBN地址存儲在當(dāng)前讀指針寄存器116內(nèi)。PBN地址用作指向存儲所請求分組的數(shù)據(jù)存儲器40內(nèi)存儲位置的指針鏈表的開始地址。輸出存儲器管理器48還確定PBN地址指向上部數(shù)據(jù)存儲器40a還是下部數(shù)據(jù)存儲器40b,并相應(yīng)地設(shè)置U/L讀指示符109。
當(dāng)讀取分組的當(dāng)前部分時,使用與所提取的數(shù)據(jù)一起存儲的前一指針來確定將要提取的該分組的下一部分。輸出寫表格48使用前一指針更新當(dāng)前讀指針寄存器116,允許提取與前一指針相關(guān)的數(shù)據(jù)。
圖8是根據(jù)本發(fā)明的一種實施例劃分成上部數(shù)據(jù)存儲器40a和下部數(shù)據(jù)存儲器40b的數(shù)據(jù)存儲器40的示意布局圖。數(shù)據(jù)存儲器的每個部分包括多個表目,每個表目包括分組數(shù)據(jù)130和相關(guān)的前一指針132。當(dāng)存儲器內(nèi)的一個表目存儲一個特定分組的首部時,則相關(guān)的前一指針是空(NULL)指針。與前一指針一起存儲該分組的所有其它部分,所述前一指針?biāo)饕诖鎯ζ鲀?nèi)存儲的分組的前一部分。以這種方式,可以以后向方式通過一個前一指針鏈表索引整個分組,其中首先索引分組的尾部,最后索引分組的首部。通過這樣一種后向指向機(jī)制,可以使用單個寫步驟來確定和存儲指針,而不使用前向指向機(jī)制中隨后進(jìn)行確定和填充指針信息可能需要的其它步驟。
在通過讀操作提取一個分組時,首先提取與分組尾部相關(guān)的數(shù)據(jù),使用它的相關(guān)前一指針來提取與分組中部有關(guān)的數(shù)據(jù)。再使用與所提取的分組中部有關(guān)的前一指針來提取分組的其它中間部分,直到遇到一個NULL指針,最后提取與分組首部有關(guān)的數(shù)據(jù)。
將以這種后向方式提取出的分組發(fā)送給請求ECU,該請求ECU為了抵銷分組的后向提取,在通過它的輸出端口發(fā)送之前也以后向方式讀取分組。ECU后向方式的讀取使分組以正確的順序發(fā)送,首先發(fā)送分組的首部,最后發(fā)送分組的尾部。
圖9是根據(jù)雙端口存儲器仿真配置由PBU 14在存儲分組時所執(zhí)行處理的流程圖。該處理開始于步驟140,PBU 14接收一個輸入分組的一部分,并將該部分發(fā)送給輸入存儲器管理器44。輸入存儲器管理器44確定所接收的分組部分是SOP、MOP或EOP。在步驟142,當(dāng)所接收的分組是SOP時,則輸入存儲器管理器44在步驟144識別一個可用的PBN。此外,輸入存儲器管理器在步驟146從空閑指針緩沖器46中提取空閑上部和下部指針。根據(jù)下一個調(diào)度將在數(shù)據(jù)存儲器40上執(zhí)行的讀操作,確定使用空閑上部指針還是空閑下部指針。當(dāng)將使用空閑上部指針時,如在步驟148中確定的,將當(dāng)前的寫指針設(shè)置成空閑上部指針。在步驟152,將分組數(shù)據(jù)存儲在上部數(shù)據(jù)存儲器內(nèi)空閑上部指針?biāo)甘镜拇鎯ξ恢蒙?。還將輸入存儲器管理器44保存的前一寫指針存儲在所述存儲位置上。對于分組的首部來說,將前一指針設(shè)置為NULL。
當(dāng)將要使用空閑下部指針時,則在步驟156將當(dāng)前的寫指針設(shè)置為空閑下部指針。在步驟158,在空閑下部指針?biāo)甘镜拇鎯ξ恢脙?nèi)存儲分組數(shù)據(jù)和有關(guān)的前一指針。
在步驟154,使用當(dāng)前的寫指針更新輸入存儲器管理器44的前一指針寄存器108。
在步驟160,當(dāng)將要存儲的分組的下一部分是MOP時,則再次執(zhí)行步驟146-154,其中提取空閑上部和下部指針,根據(jù)下一個調(diào)度的讀操作選擇一個空閑指針用于存儲該分組,并使用當(dāng)前的寫指針更新前一指針。
在步驟162,當(dāng)將要存儲的分組的下一部分是EOP時,則從空閑指針緩沖器46中提取空閑上部和下部指針,并根據(jù)下一個調(diào)度的讀操作來確定將要使用空閑上部指針還是空閑下部指針。在步驟164,當(dāng)將要使用空閑上部指針時,則在步驟166將當(dāng)前寫指針設(shè)置為空閑上部指針。在步驟168,在上部數(shù)據(jù)存儲器內(nèi)的空閑上部指針?biāo)甘镜拇鎯ξ恢蒙洗鎯Ψ纸M的尾部和前一指針。
反之,當(dāng)將要使用空閑下部指針時,則在步驟174將當(dāng)前寫指針設(shè)置為空閑下部指針,然后在步驟176中在下部數(shù)據(jù)存儲器內(nèi)存儲分組的尾部和前一指針。
在步驟170,當(dāng)前指針變成一個PBN地址,然后在步驟172,將PBN地址存儲在PBN緩沖器42內(nèi)一個所識別的PBN尋址的表目上。
圖10是根據(jù)雙端口存儲器仿真配置PBU 14在提取分組時所執(zhí)行的處理的流程圖。該處理開始于步驟180,PBU從ECU接收一個分組請求消息。根據(jù)一種實施例,所述分組請求消息包括所希望的分組的PBN。在步驟182,提取PBN,在步驟184,從PBN緩沖器42提取相關(guān)的PBN地址。根據(jù)一種實施例,PBN地址是存儲所需分組尾部的存儲位置的地址。
在步驟186,將當(dāng)前的讀指針設(shè)置為所提取的PBN地址。在步驟188,確定當(dāng)前的讀指針指向上部數(shù)據(jù)存儲器40a還是下部數(shù)據(jù)存儲器40b。當(dāng)當(dāng)前讀指針指向上部數(shù)據(jù)存儲器時,則在步驟192將U/L讀指示符設(shè)置為“上部”。反之,則在步驟190將U/L讀指示符設(shè)置為“下部”。
在步驟194,提取在當(dāng)前讀指針位置上存儲的數(shù)據(jù)和前一指針。如果對于組播傳輸來說該數(shù)據(jù)和前一指針是最后讀出的分組的一部分,則還將當(dāng)前的讀指針返回給空閑指針緩存器46。
在步驟196,確定所提取的前一指針是否是NULL指針。當(dāng)結(jié)果為是,則已經(jīng)提取分組的首部,該處理過程結(jié)束。反之,將當(dāng)前的寫指針設(shè)置為所提取的前一指針,用于從分組的鏈表中提取出分組的前一部分。
盡管已經(jīng)通過一些具體的實施例描述了本發(fā)明,在不脫離本發(fā)明的范圍和精神的情況下,本領(lǐng)域的技術(shù)人員將毫無困難地設(shè)計出各種變型。例如,圖9和圖10的流程圖中所示的步驟可以以所圖示的順序執(zhí)行,或者以本領(lǐng)域的技術(shù)人員可以設(shè)計的任何其它順序來執(zhí)行。因此,將理解本發(fā)明可以通過具體描述之外的其它方式來實施。因而,本發(fā)明的實施例在各個方面都應(yīng)當(dāng)被視為說明性而非限制性的,本發(fā)明的范圍將由所附權(quán)利要求書及其等同范圍而非上述描述來限制。
權(quán)利要求
1.一種具有雙端口存儲器仿真配置的交換結(jié)構(gòu),該交換結(jié)構(gòu)包括輸入;和連接到所述輸入的存儲器,該存儲器包括第一存儲器單元和第二存儲器單元,其特征在于選擇第一存儲器單元或第二存儲器單元,用于在第一分組的至少一部分上執(zhí)行第一存儲器訪問操作,所述選擇基于選擇用于在第二分組的至少一部分上執(zhí)行第二存儲器訪問操作的存儲器單元作出。
2.權(quán)利要求1的交換結(jié)構(gòu),其中第一存儲器訪問操作是寫操作。
3.權(quán)利要求1的交換結(jié)構(gòu),其中第二存儲器訪問操作是讀操作。
4.權(quán)利要求1的交換結(jié)構(gòu),其中當(dāng)選擇第一存儲器單元用于執(zhí)行第二存儲器訪問操作時,則選擇第二存儲器單元用于執(zhí)行第一存儲器訪問操作,而當(dāng)選擇第二存儲器單元用于執(zhí)行第二存儲器訪問操作時,則選擇第一存儲器單元用于執(zhí)行第一存儲器訪問操作。
5.權(quán)利要求1的交換結(jié)構(gòu),其中每個存儲器單元是包括單數(shù)據(jù)輸入端口、單地址端口和單數(shù)據(jù)輸出端口的單端口存儲器單元。
6.權(quán)利要求1的交換結(jié)構(gòu),還包括一個緩沖器,存儲指向前一第一存儲器訪問操作訪問的存儲位置的前一索引。
7.權(quán)利要求6的交換結(jié)構(gòu),其特征在于第一存儲器訪問操作存儲從緩沖器中提取出的前一索引。
8.權(quán)利要求7的交換結(jié)構(gòu),其中前一索引是一個NULL指針。
9.權(quán)利要求6的交換結(jié)構(gòu),其中使用一個索引來更新所述緩沖器,所述索引是一個指向選擇用于執(zhí)行第一存儲器訪問操作的第一或第二存儲器單元內(nèi)的存儲位置的索引。
10.權(quán)利要求1的交換結(jié)構(gòu),其中第一分組包括多個第一數(shù)據(jù)字,第二分組包括多個第二數(shù)據(jù)字,所述第一數(shù)據(jù)字根據(jù)用于第一存儲器訪問操作的第一順序來選擇,所述第二數(shù)據(jù)字根據(jù)用于第二存儲器訪問操作的第二順序來選擇。
11.權(quán)利要求10的交換結(jié)構(gòu),其中在對與第一分組尾部相關(guān)的數(shù)據(jù)字執(zhí)行操作之前以第一順序?qū)εc第一分組首部相關(guān)的數(shù)據(jù)字執(zhí)行操作,而在對與第二分組首部相關(guān)的數(shù)據(jù)字執(zhí)行操作之前以第二順序?qū)εc第二分組尾部相關(guān)的數(shù)據(jù)字執(zhí)行操作。
12.一種具有雙端口存儲器仿真配置的交換結(jié)構(gòu),該交換結(jié)構(gòu)包括第一單端口存儲器,包括單個第一輸入端口、單個第一地址端口和單個第一輸出端口;和第二單端口存儲器,包括單個第二輸入端口、單個第二地址端口和單個第二輸出端口,其特征在于當(dāng)將在第一單端口存儲器上執(zhí)行第二存儲器訪問操作時,則在第二單端口存儲器上執(zhí)行第一存儲器訪問操作,而當(dāng)將在第二單端口存儲器上執(zhí)行第二存儲器訪問操作時,則在第一單端口存儲器上執(zhí)行第一存儲器訪問操作。
13.權(quán)利要求12的交換結(jié)構(gòu),其中第一存儲器訪問操作是寫操作。
14.權(quán)利要求12的交換結(jié)構(gòu),其中第二存儲器訪問操作是讀操作。
15.權(quán)利要求12的交換結(jié)構(gòu),其中以無阻塞的方式同時執(zhí)行第一和第二訪問操作。
16.一種訪問一個交換結(jié)構(gòu)的方法,所述交換結(jié)構(gòu)包括一個存儲器,該存儲器包括第一單端口存儲器,包括單個第一輸入端口、單個第一地址端口和單個第一輸出端口;和第二單端口存儲器,包括單個第二輸入端口、單個第二地址端口和單個第二輸出端口;該方法包括確定用于第二存儲器訪問操作的存儲器地址;當(dāng)所述存儲器地址與第一單端口存儲器相關(guān)時,則在第二單端口存儲器上執(zhí)行第一存儲器訪問操作;和當(dāng)所述存儲器地址與第二單端口存儲器相關(guān)時,則在第一單端口存儲器上執(zhí)行第一存儲器訪問操作。
17.權(quán)利要求16的方法,其中第一存儲器訪問操作是寫操作。
18.權(quán)利要求16的方法,其中第二存儲器訪問操作是讀操作。
19.權(quán)利要求16的方法,其中以無阻塞的方式同時執(zhí)行第一和第二存儲器訪問操作。
20.權(quán)利要求16的方法,還包括在一個緩沖器內(nèi)維持指向在前一第一存儲器訪問操作過程中訪問的存儲位置的前一索引。
21.權(quán)利要求20的方法,還包括從所述緩沖器中提取所述前一索引,并存儲在所述第一存儲器訪問操作過程中從所述緩沖器中提取出的所述前一索引。
22.權(quán)利要求21的方法,其中所述前一索引是一個NULL指針。
23.權(quán)利要求20的方法,還包括使用一個索引來更新緩沖器,所述索引指向選擇用于執(zhí)行第一存儲器訪問操作的第一或第二存儲器單元內(nèi)的存儲位置。
24.權(quán)利要求16的方法,其中在包括多個第一數(shù)據(jù)字的第一分組上執(zhí)行第一存儲器訪問操作,在包括多個第二數(shù)據(jù)字的第二分組上執(zhí)行第二存儲器訪問操作,該方法還包括根據(jù)用于第一存儲器訪問操作的第一順序來選擇第一數(shù)據(jù)字,和根據(jù)用于第二存儲器訪問操作的第二順序來選擇第二數(shù)據(jù)字。
25.權(quán)利要求24的方法,其中在對與第一分組尾部相關(guān)的數(shù)據(jù)字執(zhí)行操作之前以第一順序?qū)εc第一分組首部相關(guān)的數(shù)據(jù)字執(zhí)行操作,而在對與第二分組首部相關(guān)的數(shù)據(jù)字執(zhí)行操作之前以第二順序?qū)εc第二分組尾部相關(guān)的數(shù)據(jù)字執(zhí)行操作。
26.一種從交換結(jié)構(gòu)存儲和提取分組的方法,該交換結(jié)構(gòu)包括一個存儲器,該存儲器包括第一存儲器單元和第二存儲器單元,該方法包括接收一個輸入分組;提取指向所述第一存儲器單元內(nèi)可用存儲位置的第一索引;提取指向所述第二存儲器單元內(nèi)可用存儲位置的第二索引;選擇第一索引或第二索引,所述選擇基于被選擇用于執(zhí)行所存儲分組的讀操作的存儲器單元作出;以及在選擇的索引所指向的存儲位置內(nèi)寫入輸入分組的至少一部分。
全文摘要
本發(fā)明公開了一種使用兩個單端口存儲器支持雙端口存儲器仿真配置的交換結(jié)構(gòu)。當(dāng)為一個單端口存儲器調(diào)度提取一個存儲分組的讀操作時,則在另一個單端口存儲器上執(zhí)行用于存儲一個分組的寫操作。每個分組在存儲器內(nèi)每次存儲一個數(shù)據(jù)字,并由指向存儲器內(nèi)存儲的前一數(shù)據(jù)字的前一指針鏈路列表來索引,產(chǎn)生每個數(shù)據(jù)字的指針信息的單個寫入步驟。在提取所存儲的分組時,通過遵循前一指針的鏈表,其中首先提取分組的尾部,最后提取分組的首部,以后向方式來提取每個數(shù)據(jù)字。
文檔編號H04L12/56GK1545658SQ02815985
公開日2004年11月10日 申請日期2002年6月26日 優(yōu)先權(quán)日2001年7月17日
發(fā)明者沃納·范·胡夫, 沃納 范 胡夫 申請人:阿爾卡特互聯(lián)網(wǎng)運行公司