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