亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

控制芯片片內(nèi)存儲(chǔ)裝置及其存儲(chǔ)方法

文檔序號(hào):6355143閱讀:279來源:國知局
專利名稱:控制芯片片內(nèi)存儲(chǔ)裝置及其存儲(chǔ)方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)通信技術(shù)領(lǐng)域,尤其涉及一種控制芯片片內(nèi)存儲(chǔ)裝置及其存儲(chǔ)方法。
固定為每個(gè)通道分配存儲(chǔ)空間的片內(nèi)存儲(chǔ)方法雖然電路結(jié)構(gòu)比較簡單,實(shí)現(xiàn)和驗(yàn)證都很容易,但由于失去了靈活的根據(jù)邏輯通道的流量來分配片內(nèi)緩存和總線傳送的優(yōu)先級(jí)的能力,無法以較小的片內(nèi)緩存來達(dá)到多通道處理的最大效能,尤其在實(shí)現(xiàn)不同速率的多通道數(shù)據(jù)的緩存和總線傳送的情況下,性能差別非常大。而且,在一個(gè)片內(nèi)數(shù)據(jù)緩存中固定為每個(gè)通道分配相同大小存儲(chǔ)空間的片內(nèi)存儲(chǔ)方法中未提供針對(duì)各通道的優(yōu)先級(jí)控制,很難在片內(nèi)有限大小數(shù)據(jù)緩存的基礎(chǔ)上,較好的適應(yīng)多種速率應(yīng)用的環(huán)境,和滿足不同流量的通道控制的更高要求。
而另一種為每個(gè)端口都單獨(dú)配置一個(gè)數(shù)據(jù)RAM作緩存的片內(nèi)存儲(chǔ)方法,雖然可以使用不同速率的端口,但無法適應(yīng)那種多通道的應(yīng)用,例如,單個(gè)端口的通道化應(yīng)用。而且無法隨應(yīng)用環(huán)境的改變,任意在通道或端口之間調(diào)配緩存的大小。在控制芯片的后端設(shè)計(jì)中,增加做RAM的Bist電路的面積,減少后端布線的裕量。
本發(fā)明的目的是這樣實(shí)現(xiàn)的一種控制芯片片內(nèi)存儲(chǔ)裝置,包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元提供控制芯片與各通道的數(shù)據(jù)接口,協(xié)調(diào)數(shù)據(jù)RAM讀寫控制單元和配置RAM控制單元間的同步操作,維護(hù)通道存儲(chǔ)狀態(tài)信息;數(shù)據(jù)RAM(隨機(jī)存儲(chǔ)器)讀寫控制單元完成雙端口數(shù)據(jù)存儲(chǔ)RAM的基本讀寫功能,輸入輸出數(shù)據(jù);雙端口數(shù)據(jù)存儲(chǔ)RAM各個(gè)通道用于存儲(chǔ)數(shù)據(jù)信息的存儲(chǔ)實(shí)體;配置RAM控制單元完成所有配置RAM陣列的讀寫控制,以及配置RAM陣列的實(shí)時(shí)更新,輸出狀態(tài)信息;配置RAM陣列用于實(shí)時(shí)存儲(chǔ)各個(gè)通道的數(shù)據(jù)緩存控制信息。
所述的雙端口數(shù)據(jù)存儲(chǔ)RAM中包括多個(gè)存儲(chǔ)塊,各個(gè)存儲(chǔ)塊以鏈表的形式組織起來,每個(gè)存儲(chǔ)塊對(duì)應(yīng)一個(gè)塊指針,且作為鏈表中的一個(gè)節(jié)點(diǎn)。
所述的配置RAM陣列中還設(shè)置有雙端口數(shù)據(jù)存儲(chǔ)RAM中的各存儲(chǔ)塊構(gòu)成的鏈表的信息。
所述的配置RAM陣列中包括Block(塊)指針RAM(BP_RAM)通過BP_Pointer(塊指針)尋址,記錄各通道鏈表中的每個(gè)BP_Pointer所指向的下一個(gè)BP_Pointer;雙字和EOF計(jì)數(shù)RAM(DW_EOF_RAM)通過每個(gè)邏輯通道的唯一的記錄號(hào)(即通道號(hào))尋址,用于實(shí)時(shí)記錄每個(gè)通道在緩存中所存放的數(shù)據(jù)量和帶有EOF的數(shù)據(jù)(即數(shù)據(jù)幀的最后一個(gè)雙字的數(shù)據(jù))的數(shù)量;讀指針RAM(RP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的讀指針;寫指針RAM(WP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的寫指針;水標(biāo)RAM(WM_RAM)通過通道號(hào)尋址,用于提供給用戶寫入為每個(gè)通道所設(shè)定的門限值。
所述的多通道數(shù)據(jù)緩存控制/狀態(tài)單元維護(hù)的通道存儲(chǔ)狀態(tài)信息為通道鏈表狀態(tài)信息,通道鏈表是指為通道在雙端口數(shù)據(jù)存儲(chǔ)RAM中所分配的一塊鏈表式結(jié)構(gòu)的存儲(chǔ)區(qū)域,通道鏈表狀態(tài)信息用于指示通道數(shù)據(jù)對(duì)該存儲(chǔ)區(qū)域的占用情況。
所述的通道鏈表狀態(tài)信息包括
通道鏈表狀態(tài)的信號(hào)“Exist.EOF”其‘非零值’代表當(dāng)前通道鏈表中還存在至少一個(gè)EOF數(shù)據(jù);通道鏈表狀態(tài)的信號(hào)“Beyond.LWM”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)超過低水標(biāo)值,低水標(biāo)值為該通道鏈表中的最低數(shù)據(jù)量值;通道鏈表狀態(tài)的信號(hào)“Not.Null”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)不為空;通道鏈表狀態(tài)的信號(hào)“Is.Full”其‘非零值’代表當(dāng)前通道鏈表中已經(jīng)被寫數(shù)據(jù)操作填滿。
一種控制芯片片內(nèi)存儲(chǔ)的方法,包括a、多通道數(shù)據(jù)緩存控制/狀態(tài)單元接收到發(fā)送方向和接收方向的數(shù)據(jù)操作命令;b、數(shù)據(jù)RAM讀寫控制單元根據(jù)接收的數(shù)據(jù)操作命令及配置RAM陣列中的參數(shù)信息對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM進(jìn)行讀寫操作;c、對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM讀寫操作完成后,通過配置RAM控制單元對(duì)配置RAM陣列中的參數(shù)信息進(jìn)行更新;d、同時(shí)多通道數(shù)據(jù)緩存控制/狀態(tài)單元更新通道鏈表狀態(tài)信息。
所述的步驟a包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元的物理端口側(cè)接收讀數(shù)據(jù)的命令。
所述的步驟b包括b1、根據(jù)發(fā)出讀數(shù)據(jù)命令的通道的通道有效指示信號(hào)和通道號(hào),讀取配置RAM陣列中的該通道的讀指針值和低水標(biāo)配置值;
b2、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)讀取的讀指針值和低水標(biāo)值通過數(shù)據(jù)RAM讀寫控制單元讀取雙端口數(shù)據(jù)存儲(chǔ)RAM中的數(shù)據(jù);b3、將讀取的數(shù)據(jù)通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元輸出。
所述的步驟b2包括b21、判斷該通道的通道鏈表中的數(shù)據(jù)量是否低于低水標(biāo)值,如果低于該值,則執(zhí)行步驟b22,否則,執(zhí)行步驟b23;b22、請(qǐng)求向該通道鏈表中輸入數(shù)據(jù),并在向該通道鏈中輸入數(shù)據(jù)后執(zhí)行步驟b21;b23、開始一個(gè)讀數(shù)據(jù)操作,即通過數(shù)據(jù)RAM讀寫控制單元利用讀指針值讀取雙端口數(shù)據(jù)存儲(chǔ)RAM的該通道鏈表中的數(shù)據(jù)。
所述的步驟c包括c1、根據(jù)塊指針信息確定讀指針,并通過配置RAM控制單元更新當(dāng)前的配置RAM陣列的RP_RAM中的讀指針信息;c2、根據(jù)輸出的數(shù)據(jù)信息更新配置RAM陣列中的數(shù)據(jù)量值,對(duì)于配置RAM陣列的DW_EOF_RAM中的帶有EOF的數(shù)據(jù)的數(shù)量值,則需要判斷是否發(fā)生變化,如果發(fā)生變化,則將該數(shù)量值更新,否則,不作更新操作。
所述的步驟d包括d1、根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在則保持“Exist.EOF”的狀態(tài),否則,令“Exist.EOF”的狀態(tài)為零值;
d2、根據(jù)更新后的讀指針值和預(yù)取的LWM(低水標(biāo))值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被讀數(shù)據(jù)操作減少到LWM所設(shè)定的門限值以下,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;d3、根據(jù)更新后的讀指針值,判斷當(dāng)前通道的存儲(chǔ)鏈表中所有的數(shù)據(jù)是否都已被讀數(shù)據(jù)操作全部讀完,如果是,則令此通道的“Not.Null”狀態(tài)為零值;否則,保持“Not.Null”狀態(tài),不作任何更新操作;d4、自動(dòng)把此通道的“Is.Full”狀態(tài)更新為零值。
所述的步驟a包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元的系統(tǒng)總線側(cè)接收寫數(shù)據(jù)的命令。
所述的步驟b包括b4、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)內(nèi)部的各通道鏈表狀態(tài)的“Beyond.LWM”的值選擇允許寫數(shù)據(jù)的通道鏈表,并確定通道號(hào),并建立針對(duì)該通道的配置RAM陣列中信息的中間狀態(tài);b5、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)確定的通道號(hào),通過配置RAM控制單元讀取配置RAM陣列中的WP_RAM、DW_EOF_RAM、WM_RAM值;b6、根據(jù)讀取的WP_RAM、DW_EOF_RAM、WM_RAM中的各值,通過數(shù)據(jù)RAM讀寫控制單元向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù)。
所述的步驟b6包括
b61、根據(jù)WM_RAM中的門限值及DW_EOF_RAM中的數(shù)據(jù)量值判斷該通道鏈表中是否已經(jīng)寫滿數(shù)據(jù),如果是,執(zhí)行步驟b62,否則,執(zhí)行步驟b63;b62、請(qǐng)求將該通道鏈表中的數(shù)據(jù)輸出,并在該通道鏈表中的數(shù)據(jù)輸出后,執(zhí)行步驟b61;b63、開始一個(gè)寫數(shù)據(jù)操作,即根據(jù)WP_RAM中的寫指針值向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù),執(zhí)行步驟c。
所述的步驟c包括c3、根據(jù)塊指針信息確定寫指針;根據(jù)寫入的數(shù)據(jù)信息確定DW_EOF_RAM中所存放的數(shù)據(jù)量值和帶有EOF的數(shù)據(jù)的數(shù)量值,對(duì)于帶有EOF的數(shù)據(jù)的數(shù)量值則需要判斷是否發(fā)生變化,如果發(fā)生變化,則更新該值,否則,不作更新操作;c4、在每次寫數(shù)據(jù)操作完成后,通過所建立的中間狀態(tài)進(jìn)行寫指針和DW_EOF_RAM中各值的更新;c5、在本輪的多次寫數(shù)據(jù)操作結(jié)束時(shí),將上述中間狀態(tài)中的各參數(shù)值通過配置RAM控制單元回寫到當(dāng)前的配置RAM陣列中;所述的步驟d包括d5、根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在,則令“Exist.EOF”的狀態(tài)為非零值,否則,保持“Exist.EOF”的狀態(tài);
d6、根據(jù)更新后的寫指針值和預(yù)取的LWM值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被寫數(shù)據(jù)操作增加到LWM所設(shè)定的門限值以上,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;d7、自動(dòng)令此通道的“Not.Null”狀態(tài)為非零值;d8、根據(jù)讀指針和寫指針值判斷該通道鏈表是否已經(jīng)寫滿數(shù)據(jù),如果寫滿數(shù)據(jù),則令此通道的“Is.Full”狀態(tài)為非零值,否則,保持“Is.Full”狀態(tài),不作任何操作。
本發(fā)明所述的控制芯片片內(nèi)存儲(chǔ)的方法中在執(zhí)行步驟b之前還包括e、多通道數(shù)據(jù)緩存控制/狀態(tài)單元對(duì)收到多個(gè)數(shù)據(jù)操作命令進(jìn)行優(yōu)先級(jí)仲裁,確定各個(gè)數(shù)據(jù)操作命令的優(yōu)先級(jí);f、按照確定的優(yōu)先級(jí)順序分別對(duì)各個(gè)數(shù)據(jù)操作命令依次執(zhí)行步驟b。
所述的步驟e包括e1、在物理端口側(cè),是按照端口順序確定優(yōu)先級(jí)別,即信端口號(hào)小的端口優(yōu)先級(jí)在先;e2、在系統(tǒng)總路線側(cè),是按照預(yù)先設(shè)置的各通道的優(yōu)先級(jí)確定各通道申請(qǐng)的優(yōu)先級(jí)。
所述的步驟f在物理端口側(cè)的多個(gè)讀數(shù)據(jù)命令按優(yōu)先級(jí)順序采用流水線操作,即優(yōu)先級(jí)在先的讀數(shù)據(jù)命令通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定了通道號(hào)后,優(yōu)先級(jí)在后的讀數(shù)據(jù)命令再依次通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定各自的通道號(hào)。
由上述技術(shù)方案可以看出,本發(fā)明采用對(duì)數(shù)據(jù)的動(dòng)態(tài)鏈表式存儲(chǔ),使得更有效的利用了片內(nèi)有限的存儲(chǔ)空間,增加了實(shí)際應(yīng)用的靈活性。采用物理端口側(cè)的流水線機(jī)制,可支持更大的數(shù)據(jù)流量。另外,系統(tǒng)總線側(cè)的優(yōu)先級(jí)控制訪問,可在多速率多通道的應(yīng)用環(huán)境下大大提高了系統(tǒng)總線的帶寬利用率。
通道鏈表狀態(tài)的信號(hào)“Exist.EOF”其‘非零值’代表當(dāng)前通道鏈表中還存在至少一個(gè)EOF數(shù)據(jù);通道鏈表狀態(tài)的信號(hào)“Beyond.LWM”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)超過低水標(biāo)值,低水標(biāo)值為該通道鏈表中的最低數(shù)據(jù)量值;通道鏈表狀態(tài)的信號(hào)“Not.Null”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)不為空;通道鏈表狀態(tài)的信號(hào)“Is.Full”其‘非零值’代表當(dāng)前通道鏈表中已經(jīng)被寫數(shù)據(jù)操作填滿。
數(shù)據(jù)RAM(隨機(jī)存儲(chǔ)器)讀寫控制單元(即Cfg_RAM_Ctrl_Unit)2完成雙端口數(shù)據(jù)存儲(chǔ)RAM的基本讀寫功能,輸入輸出數(shù)據(jù);雙端口數(shù)據(jù)存儲(chǔ)RAM3即片內(nèi)緩存,為各個(gè)通道用于存儲(chǔ)數(shù)據(jù)信息的存儲(chǔ)實(shí)體,本發(fā)明中采用了兩個(gè)16KB的雙端口數(shù)據(jù)RAM;且從邏輯上將16KB的數(shù)據(jù)RAM分解成1024個(gè)Block(塊),每個(gè)Block作為鏈表的基本存儲(chǔ)單元,為每一個(gè)Block建立一個(gè)Block指針(Block Pointer)來進(jìn)行尋址,硬件上提供一個(gè)Block指針RAM(即BP RAM)來存儲(chǔ)每一個(gè)Block指針相應(yīng)的下一個(gè)Block指針;本發(fā)明中為每個(gè)通道分配一段通道鏈表來實(shí)現(xiàn)共享片內(nèi)緩存的目的,每段通道鏈表分配的存儲(chǔ)空間的大小由用戶根據(jù)需要配置,也可以為控制芯片自動(dòng)進(jìn)行配置;配置RAM控制單元(即Data_RAM_Ctrl)4完成所有配置RAM陣列的讀寫控制,以及配置RAM陣列的實(shí)時(shí)更新,輸出狀態(tài)信息;
配置RAM陣列5用于實(shí)時(shí)存儲(chǔ)各個(gè)通道的數(shù)據(jù)緩存控制信息,配置RAM陣列中進(jìn)一步包括Block(塊)指針RAM(BP_RAM)通過BP_Pointer(塊指針)尋址,記錄各通道鏈表中的每個(gè)BP_Pointer所指向的下一個(gè)BP_Pointer;雙字和EOF計(jì)數(shù)RAM(DW_EOF_RAM)通過每個(gè)邏輯通道的唯一的記錄號(hào)(即通道號(hào))尋址,用于實(shí)時(shí)記錄每個(gè)通道在緩存中所存放的數(shù)據(jù)量和帶有EOF的數(shù)據(jù)(即數(shù)據(jù)幀的最后一個(gè)雙字的數(shù)據(jù))的數(shù)量;讀指針RAM(RP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的讀指針,便于對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM的各通道鏈表中數(shù)據(jù)的讀??;寫指針RAM(WP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的寫指針,便于向雙端口存儲(chǔ)RAM中的各通道鏈表中寫數(shù)據(jù);水標(biāo)RAM(WM_RAM)通過通道號(hào)尋址,用于提供給用戶寫入為每個(gè)通道所設(shè)定的門限值;基于發(fā)送和接收方向,對(duì)這個(gè)門限值的應(yīng)用方法類似,基本作用為當(dāng)通道鏈表中數(shù)據(jù)所占用的Block超過了門限值的時(shí)候,請(qǐng)求輸出數(shù)據(jù)操作,當(dāng)?shù)陀陂T限值的時(shí)候,請(qǐng)求輸入數(shù)據(jù)操作;在接收方向,還可以設(shè)定一個(gè)流控門限值,當(dāng)收到的數(shù)據(jù)超過門限值的時(shí)候?qū)νㄐ胚h(yuǎn)端進(jìn)行流控,低于這個(gè)門限值的時(shí)候,則解除流控;通常在接收方向,這個(gè)表示門限值的水標(biāo)稱為高水標(biāo)(High Water Mark,HMW),表達(dá)的直觀意義為物理端口側(cè)通道的輸入數(shù)據(jù)超過了本地當(dāng)前的數(shù)據(jù)接收能力使得為其分配的緩存中的數(shù)據(jù)操過了一個(gè)門限值,需要對(duì)輸入數(shù)據(jù)操作進(jìn)行控制;在發(fā)送方向,這個(gè)門限值稱為低水標(biāo)(Low Water Mark,LWM),表達(dá)的直觀意義為物理端口側(cè)的數(shù)據(jù)輸出超過了本地當(dāng)前的數(shù)據(jù)發(fā)送能力使得為其分配的緩存中的數(shù)據(jù)低于一個(gè)門限值,需要控制數(shù)據(jù)的輸出;在應(yīng)用中,任一個(gè)水標(biāo)對(duì)數(shù)據(jù)緩存區(qū)的物理端口側(cè)和系統(tǒng)總線側(cè)都有控制作用。
上述裝置中M_Buffer_Ctrl/Status_Unit為核心控制模塊,可同時(shí)處理來自物理端口側(cè)接口和系統(tǒng)總線側(cè)接口的數(shù)據(jù)傳送任務(wù);本發(fā)明所述的控制芯片片內(nèi)存儲(chǔ)的方法為當(dāng)收到物理端口側(cè)接口的某個(gè)通道的請(qǐng)求數(shù)據(jù)發(fā)送的信號(hào)時(shí),M_Buffer_Ctrl/Status_Unit根據(jù)該通道的相關(guān)通道鏈表狀態(tài)來允許或禁止這次數(shù)據(jù)請(qǐng)求;在數(shù)據(jù)請(qǐng)求允許條件下,通過Cfg_RAM_Ctrl_Unit從配置RAM陣列讀出該通道的相關(guān)配置信息;然后根據(jù)相關(guān)指針信息通過Data_RAM_Ctrl從數(shù)據(jù)RAM中讀出該通道的數(shù)據(jù)輸出到物理端口側(cè)接口,更新相應(yīng)通道鏈表狀態(tài)和通道的配置信息,并通過Cfg_RAM_Ctrl_Unit回寫配置RAM陣列,完成物理端口側(cè)的一次數(shù)據(jù)傳送,即一個(gè)讀數(shù)據(jù)流程;當(dāng)收到系統(tǒng)總線側(cè)接口的某個(gè)通道的數(shù)據(jù)發(fā)送請(qǐng)求信號(hào)時(shí),M_Buffer_Ctrl/Status_Unit通過Cfg_RAM_Ctrl_Unit從配置RAM陣列中讀出該通道的相關(guān)配置信息,然后根據(jù)相關(guān)指針信息通過Data_RAM_Ctrl把該通道數(shù)據(jù)從系統(tǒng)總線接口側(cè)寫入到雙端口數(shù)據(jù)存儲(chǔ)RAM的相應(yīng)位置,更新相應(yīng)的通道鏈表狀態(tài)和通道的配置信息,并通過Cfg_RAM_Ctrl_Unit回寫配置RAM陣列,完成系統(tǒng)總線側(cè)的一次數(shù)據(jù)傳送,即一個(gè)寫數(shù)據(jù)流程。
下面就單個(gè)通道的情況,詳細(xì)的進(jìn)行讀數(shù)據(jù)流程和寫數(shù)據(jù)流程的描述;其中,單個(gè)邏輯通道的讀數(shù)據(jù)流程以物理端口側(cè)的讀數(shù)據(jù)過程為例進(jìn)行說明,如圖4所示,該過程具體包括步驟10多通道數(shù)據(jù)緩存控制/狀態(tài)單元的物理端口側(cè)接收讀數(shù)據(jù)的命令;步驟11根據(jù)發(fā)出讀數(shù)據(jù)命令的通道的通道有效指示信號(hào)和通道號(hào),讀取配置RAM陣列中的該通道的讀指針值和低水標(biāo)配置值;多通道數(shù)據(jù)緩存控制/狀態(tài)單元通過優(yōu)先級(jí)仲裁出一個(gè)當(dāng)前申請(qǐng)數(shù)據(jù)的通道的通道有效指示信號(hào)“ch_id_vld”和通道號(hào)“ch_id”,M_Buffer_Ctrl/Status_Unit根據(jù)通道號(hào)“ch_id“,通過Cfg_RAM_Ctrl_Unit發(fā)起讀RP_RAM和LWM_RAM操作,來預(yù)取該通道的通道鏈表當(dāng)前的讀指針值和低水標(biāo)配置值;步驟12多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)讀取的讀指針值和低水標(biāo)值通過數(shù)據(jù)RAM讀寫控制單元讀取雙端口數(shù)據(jù)存儲(chǔ)RAM中的數(shù)據(jù);步驟121判斷該通道的通道鏈表中的數(shù)據(jù)量是否低于低水標(biāo)值,如果低于該值,則執(zhí)行步驟122,否則,執(zhí)行步驟123;物理端口側(cè)將給出數(shù)據(jù)請(qǐng)求有效信號(hào)“data_req_vld”和Is.SOF(物理端口側(cè)的SOF數(shù)據(jù)申請(qǐng))狀態(tài)信號(hào),如“data_req_vid”無效,則終止操作;M_Buffer_Ctrl/Status_Unit則基于Is.SOF狀態(tài)和此通道的數(shù)據(jù)緩存區(qū)的內(nèi)部狀態(tài)Exist.EOF、Beyond.LWM、Not.Null狀態(tài)信號(hào)對(duì)這個(gè)數(shù)據(jù)請(qǐng)求有效信號(hào)“data_req_vld”進(jìn)行預(yù)處理操作;當(dāng)Exist.EOF、Beyond.LWM、Not.Null為非零值時(shí),接受物理端口側(cè)該通道的本次讀數(shù)據(jù)申請(qǐng),并繼續(xù)完整的進(jìn)行本次線操作,否則,不接受來自物理端口側(cè)此通道的本次讀數(shù)據(jù)申請(qǐng),本次操作被終止,即不會(huì)繼續(xù)完成該通道本次操作;步驟122請(qǐng)求向該通道鏈表中輸入數(shù)據(jù),并在向該通道鏈中輸入數(shù)據(jù)后執(zhí)行步驟121;步驟123開始讀數(shù)據(jù)操作,即通過數(shù)據(jù)RAM讀寫控制單元利用讀指針值讀取雙端口數(shù)據(jù)存儲(chǔ)RAM的該通道鏈表中的數(shù)據(jù);M_Buffer_Ctrl/Status_Unit根據(jù)預(yù)取的讀指針值通過Data_RAM_Ctrl_Unit發(fā)起讀取雙端口數(shù)據(jù)存儲(chǔ)RAM中數(shù)據(jù)的操作,同時(shí)根據(jù)讀指針的值通過Cfg_RAM_Ctrl_Unit向BP_RAM發(fā)起讀取當(dāng)前通道的通道鏈表當(dāng)前位置的下一個(gè)Block指針值的操作,并根據(jù)此通道的通道號(hào)來發(fā)起讀取DW_EOF_RAM中的當(dāng)前雙字計(jì)數(shù)值和EOF計(jì)數(shù)值的操作;步驟13將讀取的數(shù)據(jù)通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元輸出;M_Buffer_Ctrl/Status_Unit將向物理端口側(cè)輸出數(shù)據(jù)響應(yīng)信號(hào),并輸出通過Data_RAM_Ctrl_Unit從數(shù)據(jù)緩存中讀取的數(shù)據(jù);步驟14通過配置RAM控制單元對(duì)配置RAM陣列中的參數(shù)信息進(jìn)行更新;根據(jù)塊指針信息確定讀指針,并通過配置RAM控制單元更新當(dāng)前的配置RAM陣列的RP_RAM中的讀指針信息;即判斷下一個(gè)讀指針是否跨Block邊界,如果跨界,則根據(jù)配置RAM陣列中的Block指針確定新的讀指針值,否則,只需將讀指針加一即可,然后通過Cfg_RAM_Ctrl_Unit發(fā)起回寫RP_RAM的操作,來更新其中對(duì)應(yīng)于該通道的讀指針值;根據(jù)輸出的數(shù)據(jù)信息更新配置RAM陣列中的數(shù)據(jù)量值對(duì)于雙字計(jì)數(shù)值自動(dòng)減一,并通過Cfg_RAM_Ctrl_Unit發(fā)起回寫DW_EOF_RAM的操作,將該數(shù)量值更新;對(duì)于配置RAM陣列的DW_EOF_RAM中的帶有EOF的數(shù)據(jù)的數(shù)量值,則需要判斷是否發(fā)生變化,如果發(fā)生變化,則通過Cfg_RAM_Ctrl_Unit發(fā)起回寫DW_EOF_RAM的操作,將該數(shù)量值更新,否則,不作更新操作;步驟15多通道數(shù)據(jù)緩存控制/狀態(tài)單元更新通道鏈表信息;根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在則保持“Exist.EOF”的狀態(tài),否則,令“Exist.EOF”的狀態(tài)為零值;根據(jù)更新后的讀指針值和預(yù)取的LWM(低水標(biāo))值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被讀數(shù)據(jù)操作減少到LWM所設(shè)定的門限值以下,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;根據(jù)更新后的讀指針值,判斷當(dāng)前通道的存儲(chǔ)鏈表中所有的數(shù)據(jù)是否都已被讀數(shù)據(jù)操作全部讀完,如果是,則令此通道的“Not.Null”狀態(tài)為零值;否則,保持“Not.Null”狀態(tài),不作任何更新操作;自動(dòng)把此通道的“Is.Full”狀態(tài)更新為零值。
對(duì)于單個(gè)通道的寫數(shù)據(jù)操作過程,以系統(tǒng)總線側(cè)的單個(gè)寫數(shù)據(jù)過程為例進(jìn)行說明,如圖5所示,該過程具體包括以下步驟
步驟21多通道數(shù)據(jù)緩存控制/狀態(tài)單元的系統(tǒng)總線側(cè)接收寫數(shù)據(jù)的命令;在系統(tǒng)總路線側(cè),由多通道數(shù)據(jù)緩存控制/狀態(tài)單元?jiǎng)討B(tài)地仲裁出允許數(shù)據(jù)發(fā)送的指示信號(hào)和通道號(hào),并根據(jù)允許信號(hào)和通道號(hào)來發(fā)起一個(gè)系統(tǒng)總線到雙端口數(shù)據(jù)存儲(chǔ)RAM的寫數(shù)據(jù)過程;在M_Buffer_Ctrl/Status_Unit中,有一個(gè)類似的允許數(shù)據(jù)發(fā)送的預(yù)處理過程;會(huì)根據(jù)內(nèi)部的通道鏈表狀態(tài)Beyond.LWM來選擇允許寫數(shù)據(jù)操作的通道鏈表,Beyond.LWM狀態(tài)為‘1’表示當(dāng)前片內(nèi)數(shù)據(jù)緩存中暫存的此通道的數(shù)據(jù)(即等待被物理端口發(fā)送出去的此通道數(shù)據(jù))超過了所設(shè)定的低水標(biāo);然后根據(jù)St.TDMA(系統(tǒng)總路線側(cè)的通道數(shù)據(jù)狀態(tài)信號(hào))的狀態(tài)來屏蔽掉在系統(tǒng)總線側(cè)無數(shù)據(jù)發(fā)送請(qǐng)求的通道,St.TDMA狀態(tài)為‘1’表示當(dāng)前系統(tǒng)中的數(shù)據(jù)發(fā)送隊(duì)列中有屬于此通道的數(shù)據(jù)等待被發(fā)送;該過程主要是提供了可控的數(shù)據(jù)發(fā)送條件,控制發(fā)送方向的每個(gè)通道向PCI總線申請(qǐng)數(shù)據(jù)發(fā)送的頻率,有利于對(duì)PCI總線帶寬的更大效率的利用;另外,基于各個(gè)通道的帶寬以及實(shí)時(shí)性的不同要求,在系統(tǒng)總線側(cè)的接口對(duì)進(jìn)行上述預(yù)處理后的多個(gè)通道的數(shù)據(jù)發(fā)送允許信號(hào)提供了可控的優(yōu)先級(jí)算法來進(jìn)行仲裁,按優(yōu)先級(jí)順序仲裁出允許數(shù)據(jù)發(fā)送的指示信號(hào)和通道號(hào)通過系統(tǒng)總線側(cè)接口發(fā)送給TDMA(發(fā)送方向的DMA(直接內(nèi)存訪問)模塊),TDMA則根據(jù)這個(gè)實(shí)時(shí)的允許數(shù)據(jù)發(fā)送的指示信號(hào)和通道號(hào)來開始發(fā)起系統(tǒng)總線到雙端口數(shù)據(jù)存儲(chǔ)RAM的寫數(shù)據(jù)操作;
步驟22多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)內(nèi)部的各通道鏈表狀態(tài)的“Beyond.LWM”的值選擇允許寫數(shù)據(jù)的通道鏈表,并確定通道號(hào);一個(gè)完整的寫數(shù)據(jù)過程總是以TDMA發(fā)給M_Buffer_Ctrl/Status_Unit一個(gè)有效的開始寫入信號(hào)“push_start”的正脈沖開始信號(hào)來啟動(dòng)的,M_Buffer_Ctrl/Status_Unit收到push_start信號(hào)之后,確定TDMA發(fā)送來的通道號(hào);步驟23多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)確定的通道號(hào),通過配置RAM控制單元讀取配置RAM陣列中的WP_RAM、DW_EOF_RAM、WM_RAM值;根據(jù)WP_RAM的讀出值來從BP_RAM中讀取通道存儲(chǔ)鏈表當(dāng)前位置的下一個(gè)Block指針值;完成通道鏈表和通道相關(guān)配置信息的讀取之后,還需要建立寫數(shù)據(jù)過程所有這些信息的中間狀態(tài);因?yàn)槲锢矶丝趥?cè)的數(shù)據(jù)操作過程總是單次的,而系統(tǒng)總線側(cè)的操作則大多數(shù)情況是突發(fā)式的多次寫數(shù)據(jù)操作,會(huì)是一個(gè)較長的過程,在此期間可能會(huì)發(fā)生相同通道的物理端口側(cè)數(shù)據(jù)操作,為了容易控制以及避免在一些通道鏈表狀態(tài)的臨界點(diǎn)(例如空滿狀態(tài)等)發(fā)生判斷錯(cuò)誤,在每個(gè)完整的寫數(shù)據(jù)過程中,都通過中間狀態(tài)來進(jìn)行這一期間通道鏈表狀態(tài)的判別,不再每次寫數(shù)據(jù)操作都更新配置RAM中的值,而統(tǒng)一在這個(gè)寫數(shù)據(jù)完成的時(shí)候,把這些中間狀態(tài)回寫配置RAM,進(jìn)行更新操作;
每一個(gè)寫數(shù)據(jù)操作過程還包括獲取當(dāng)前通道實(shí)時(shí)的讀指針的值,作為進(jìn)行Is.Full通道鏈表狀態(tài)更新的判斷條件,即通過比較讀、寫指針值進(jìn)行判斷;步驟24根據(jù)讀取的WP_RAM、DW_EOF_RAM、WM_RAM中的各值,通過數(shù)據(jù)RAM讀寫控制單元向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù);即首先由M_Buffer_Ctrl/Status_Unit輸出一個(gè)有效的準(zhǔn)備就緒信號(hào)“ready_for_data”通知TDMA可以發(fā)數(shù)據(jù);M_Buffer_Ctrl/Status_Unit在整個(gè)寫數(shù)據(jù)的過程都會(huì)保持ready_for_data信號(hào)有效,直到這個(gè)寫數(shù)據(jù)過程被結(jié)束,或者因?yàn)門DMA通知結(jié)束,或者因?yàn)橥ǖ梨湵淼臐M狀態(tài)由M_Buffer_Ctrl/Status_Unit來結(jié)束此次寫數(shù)據(jù)過程,這時(shí),該信號(hào)將會(huì)被置為無效;然后,在M_Buffer_Ctrl/Status_Unit輸出ready_for_data信號(hào)以后,表示準(zhǔn)備就緒,TDMA開始寫數(shù)據(jù)操作,可以是連續(xù)或間斷的操作,TDMA需要通過寫數(shù)據(jù)有效信號(hào)“data_ready”來通知M_Buffer_Ctrl/Status_Unit當(dāng)前是一個(gè)有效的寫數(shù)據(jù)操作,如果是一個(gè)有效的寫數(shù)據(jù)操作,那么M_Buffer_Ctrl/Status_Unit則會(huì)把數(shù)據(jù)寫入該通道鏈表;所述的步驟24進(jìn)一步包括步驟241根據(jù)WM_RAM中的門限值及DW_EOF_RAM中的數(shù)據(jù)量值判斷該通道鏈表中是否已經(jīng)寫滿數(shù)據(jù),如果是,執(zhí)行步驟242,否則,執(zhí)行步驟243;
步驟242請(qǐng)求將該通道鏈表中的數(shù)據(jù)輸出,并在該通道鏈表中的數(shù)據(jù)輸出后,執(zhí)行步驟241;步驟243開始一個(gè)寫數(shù)據(jù)操作,即根據(jù)WP_RAM中的寫指針值向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù),執(zhí)行步驟25;步驟25通過配置RAM控制對(duì)配置RAM陣列中的參數(shù)信息進(jìn)行更新;更新寫指針值根據(jù)塊指針信息確定寫指針,并通過配置RAM控制單元更新當(dāng)前的配置RAM陣列的WP_RAM中的寫指針值;即在每個(gè)寫數(shù)據(jù)操作完成后,寫指針自動(dòng)加一,或從當(dāng)前Block的最后一個(gè)雙字位置跳至下一個(gè)Block,指向下一個(gè)Block的起始位置;更新該通道鏈表中的數(shù)據(jù)量值根據(jù)寫入的數(shù)據(jù)信息進(jìn)行DW_EOF_RAM中的數(shù)據(jù)量值的更新;對(duì)于帶有EOF的數(shù)據(jù)的數(shù)量值則需要判斷是否發(fā)生變化,如果發(fā)生變化,則更新該值,否則,不作更新操作;對(duì)于DW(雙字)計(jì)數(shù)值自動(dòng)加一,對(duì)于帶有EOF數(shù)據(jù)的數(shù)量則需要根據(jù)寫入的數(shù)據(jù)判斷是否需要對(duì)EOF計(jì)數(shù)值加一;在這個(gè)寫數(shù)據(jù)過程中,如果有相同通道的物理端口側(cè)讀數(shù)據(jù)操作,其回寫DW_EOF_RAM的操作將被屏蔽,而轉(zhuǎn)到對(duì)這個(gè)中間狀態(tài)的操作上來;步驟26多通道數(shù)據(jù)緩存控制/狀態(tài)單元更新通道鏈表信息;根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在,則令“Exist.EOF”的狀態(tài)為非零值,否則,保持“Exist.EOF”的狀態(tài);
根據(jù)更新后的寫指針值和預(yù)取的LWM值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被寫數(shù)據(jù)操作增加到LWM所設(shè)定的門限值以上,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;自動(dòng)令此通道的“Not.Null”狀態(tài)為非零值;根據(jù)讀指針和寫指針值判斷該通道鏈表是否已經(jīng)寫滿數(shù)據(jù),如果寫滿數(shù)據(jù),則令此通道的“Is.Full”狀態(tài)為非零值,否則,保持“Is.Full”狀態(tài),不作任何操作。
本發(fā)明中,當(dāng)多通道數(shù)據(jù)緩存控制/狀態(tài)單元同時(shí)收到多個(gè)數(shù)據(jù)操作命令時(shí),則需要對(duì)各個(gè)數(shù)據(jù)操作命令進(jìn)行優(yōu)先級(jí)仲裁,確定各個(gè)數(shù)據(jù)操作命令的優(yōu)先級(jí);然后,按照確定的優(yōu)先級(jí)順序分別對(duì)各個(gè)數(shù)據(jù)操作命令依次進(jìn)行相應(yīng)的處理。
在物理端口側(cè),是按端口號(hào)順序確定端口優(yōu)先級(jí),端口0有最高的優(yōu)先級(jí),端口15的優(yōu)先級(jí)最低因此,通過安排高速率應(yīng)用使用端口號(hào)較小的物理端口,便可以實(shí)現(xiàn)動(dòng)態(tài)合理的為不同物理端口分配數(shù)據(jù)緩存區(qū)的端口帶寬,并且在這側(cè)的緩存區(qū)訪問采用了流水線的操作機(jī)制,可提供在多端口同時(shí)工作的條件下,更高速率的端口應(yīng)用;所述的流水線操作機(jī)制為優(yōu)先級(jí)在先的數(shù)據(jù)操作命令通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定了通道號(hào)后,便可以優(yōu)先級(jí)在后的數(shù)據(jù)操作命令再依次通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定各自的通道號(hào),以進(jìn)行相應(yīng)的數(shù)據(jù)操作,而無需等到優(yōu)先級(jí)在先的數(shù)據(jù)操作命令完成后再進(jìn)行優(yōu)先級(jí)在后的數(shù)據(jù)操作命令進(jìn)行操作。
在系統(tǒng)總線側(cè)端口,對(duì)于在同一時(shí)刻的多個(gè)申請(qǐng)系統(tǒng)總線傳輸數(shù)據(jù)的通道,按照預(yù)先設(shè)置的通道優(yōu)先級(jí)對(duì)通道申請(qǐng)進(jìn)行仲裁,優(yōu)先級(jí)高的通道將優(yōu)先得到傳輸數(shù)據(jù)服務(wù);通道的優(yōu)先級(jí)設(shè)置可以參照如圖3所示的控制表進(jìn)行設(shè)置,優(yōu)先級(jí)控制比特為用戶可以選擇的優(yōu)先級(jí)設(shè)置類型,共有四種類型,按優(yōu)先級(jí)高譯碼的通道和按Round-Robin服務(wù)的通道分別規(guī)定了具體的各通道的優(yōu)先級(jí)規(guī)則;按優(yōu)先級(jí)譯碼是指通道號(hào)越小,優(yōu)先級(jí)越高,按Round-Robin服務(wù)的通道是指假設(shè)把所有通道按通道號(hào)從小到大排列,然后首尾相接形成一個(gè)令牌環(huán),令牌的傳遞為按照固定的旋轉(zhuǎn)方向即0、1、2、3...253、254、255、0、1、2...的方向來依次傳遞,令牌發(fā)生傳遞的條件為“發(fā)生了一次服務(wù),即有一個(gè)通道被仲裁出”,則令牌被傳遞到當(dāng)前被服務(wù)的通道在令牌傳遞方向上相鄰的下一個(gè)通道。任何時(shí)候,持有令牌的通道為當(dāng)前優(yōu)先級(jí)最高的通道,優(yōu)先級(jí)從大到小順序?yàn)閺漠?dāng)前通道開始按照令牌傳遞的方向排列,則此時(shí)持有令牌的通道在令牌傳遞的相反方向上相鄰的上一個(gè)通道為當(dāng)前優(yōu)先級(jí)最低的通道,在初始化的時(shí)候,令牌持有者為‘0’通道,即‘0’通道為優(yōu)先級(jí)最高的通道。
權(quán)利要求
1.一種控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元提供控制芯片與各通道的數(shù)據(jù)接口,協(xié)調(diào)數(shù)據(jù)RAM讀寫控制單元和配置RAM控制單元間的同步操作,維護(hù)通道存儲(chǔ)狀態(tài)信息;數(shù)據(jù)RAM(隨機(jī)存儲(chǔ)器)讀寫控制單元完成雙端口數(shù)據(jù)存儲(chǔ)RAM的基本讀寫功能,輸入輸出數(shù)據(jù);雙端口數(shù)據(jù)存儲(chǔ)RAM各個(gè)通道用于存儲(chǔ)數(shù)據(jù)信息的存儲(chǔ)實(shí)體;配置RAM控制單元完成所有配置RAM陣列的讀寫控制,以及配置RAM陣列的實(shí)時(shí)更新,輸出狀態(tài)信息;配置RAM陣列用于實(shí)時(shí)存儲(chǔ)各個(gè)通道的數(shù)據(jù)緩存控制信息。
2.根據(jù)權(quán)利要求1所述的控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于所述的雙端口數(shù)據(jù)存儲(chǔ)RAM中包括多個(gè)存儲(chǔ)塊,各個(gè)存儲(chǔ)塊以鏈表的形式組織起來,每個(gè)存儲(chǔ)塊對(duì)應(yīng)一個(gè)塊指針,且作為鏈表中的一個(gè)節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于所述的配置RAM陣列中還設(shè)置有雙端口數(shù)據(jù)存儲(chǔ)RAM中的各存儲(chǔ)塊構(gòu)成的鏈表的信息。
4.根據(jù)權(quán)利要求2或3所述的控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于所述的配置RAM陣列中包括Block(塊)指針RAM(BP_RAM)通過BP_Pointer(塊指針)尋址,記錄各通道鏈表中的每個(gè)BP_Pointer所指向的下一個(gè)BP_Pointer;雙字和EOF計(jì)數(shù)RAM(DW_EOF_RAM)通過每個(gè)邏輯通道的唯一的記錄號(hào)(即通道號(hào))尋址,用于實(shí)時(shí)記錄每個(gè)通道在緩存中所存放的數(shù)據(jù)量和帶有EOF的數(shù)據(jù)(即數(shù)據(jù)幀的最后一個(gè)雙字的數(shù)據(jù))的數(shù)量;讀指針RAM(RP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的讀指針;寫指針RAM(WP_RAM)通過通道號(hào)尋址,用于實(shí)時(shí)記錄每個(gè)通道的寫指針;水標(biāo)RAM(WM_RAM)通過通道號(hào)尋址,用于提供給用戶寫入為每個(gè)通道所設(shè)定的門限值。
5.根據(jù)權(quán)利要求2或3所述的控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于所述的多通道數(shù)據(jù)緩存控制/狀態(tài)單元維護(hù)的通道存儲(chǔ)狀態(tài)信息為通道鏈表狀態(tài)信息,通道鏈表是指為通道在雙端口數(shù)據(jù)存儲(chǔ)RAM中所分配的一塊鏈表式結(jié)構(gòu)的存儲(chǔ)區(qū)域,通道鏈表狀態(tài)信息用于指示通道數(shù)據(jù)對(duì)該存儲(chǔ)區(qū)域的占用情況。
6.根據(jù)權(quán)利要求5所述的控制芯片片內(nèi)存儲(chǔ)裝置,其特征在于所述的通道鏈表狀態(tài)信息包括通道鏈表狀態(tài)的信號(hào)“Exist.EOF”其‘非零值’代表當(dāng)前通道鏈表中還存在至少一個(gè)EOF數(shù)據(jù);通道鏈表狀態(tài)的信號(hào)“Beyond.LWM”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)超過低水標(biāo)值,低水標(biāo)值為該通道鏈表中的最低數(shù)據(jù)量值;通道鏈表狀態(tài)的信號(hào)“Not.Null”其‘非零值’代表當(dāng)前通道鏈表中的數(shù)據(jù)不為空;通道鏈表狀態(tài)的信號(hào)“Is.Full”其‘非零值’代表當(dāng)前通道鏈表中已經(jīng)被寫數(shù)據(jù)操作填滿。
7.一種控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于包括a、多通道數(shù)據(jù)緩存控制/狀態(tài)單元接收到發(fā)送方向和接收方向的數(shù)據(jù)操作命令;b、數(shù)據(jù)RAM讀寫控制單元根據(jù)接收的數(shù)據(jù)操作命令及配置RAM陣列中的參數(shù)信息對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM進(jìn)行讀寫操作;c、對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM讀寫操作完成后,通過配置RAM控制單元對(duì)配置RAM陣列中的參數(shù)信息進(jìn)行更新;d、同時(shí)多通道數(shù)據(jù)緩存控制/狀態(tài)單元更新通道鏈表狀態(tài)信息。
8.根據(jù)權(quán)利要求7所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟a包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元的物理端口側(cè)接收讀數(shù)據(jù)的命令。
9.根據(jù)權(quán)利要求8所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟b包括b1、根據(jù)發(fā)出讀數(shù)據(jù)命令的通道的通道有效指示信號(hào)和通道號(hào),讀取配置RAM陣列中的該通道的讀指針值和低水標(biāo)配置值;b2、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)讀取的讀指針值和低水標(biāo)值通過數(shù)據(jù)RAM讀寫控制單元讀取雙端口數(shù)據(jù)存儲(chǔ)RAM中的數(shù)據(jù);b3、將讀取的數(shù)據(jù)通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元輸出。
10.根據(jù)權(quán)利要求9所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟b2包括b21、判斷該通道的通道鏈表中的數(shù)據(jù)量是否低于低水標(biāo)值,如果低于該值,則執(zhí)行步驟b22,否則,執(zhí)行步驟b23;b22、請(qǐng)求向該通道鏈表中輸入數(shù)據(jù),并在向該通道鏈中輸入數(shù)據(jù)后執(zhí)行步驟b21;b23、開始一個(gè)讀數(shù)據(jù)操作,即通過數(shù)據(jù)RAM讀寫控制單元利用讀指針值讀取雙端口數(shù)據(jù)存儲(chǔ)RAM的該通道鏈表中的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟c包括c1、根據(jù)塊指針信息確定讀指針,并通過配置RAM控制單元更新當(dāng)前的配置RAM陣列的RP_RAM中的讀指針信息;c2、根據(jù)輸出的數(shù)據(jù)信息更新配置RAM陣列中的數(shù)據(jù)量值,對(duì)于配置RAM陣列的DW_EOF_RAM中的帶有EOF的數(shù)據(jù)的數(shù)量值,則需要判斷是否發(fā)生變化,如果發(fā)生變化,則將該數(shù)量值更新,否則,不作更新操作。
12.根據(jù)權(quán)利要求11所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟d包括d1、根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在則保持“Exist.EOF”的狀態(tài),否則,令“Exist.EOF”的狀態(tài)為零值;d2、根據(jù)更新后的讀指針值和預(yù)取的LWM(低水標(biāo))值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被讀數(shù)據(jù)操作減少到LWM所設(shè)定的門限值以下,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;d3、根據(jù)更新后的讀指針值,判斷當(dāng)前通道的存儲(chǔ)鏈表中所有的數(shù)據(jù)是否都已被讀數(shù)據(jù)操作全部讀完,如果是,則令此通道的“Not.Null”狀態(tài)為零值;否則,保持“Not.Null”狀態(tài),不作任何更新操作;d4、自動(dòng)把此通道的“Is.Full”狀態(tài)更新為零值。
13.根據(jù)權(quán)利要求7所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟a包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元的系統(tǒng)總線側(cè)接收寫數(shù)據(jù)的命令。
14.根據(jù)權(quán)利要求13所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟b包括b4、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)內(nèi)部的各通道鏈表狀態(tài)的“Beyond.LWM”的值選擇允許寫數(shù)據(jù)的通道鏈表,并確定通道號(hào),并建立針對(duì)該通道的配置RAM陣列中信息的中間狀態(tài);b5、多通道數(shù)據(jù)緩存控制/狀態(tài)單元根據(jù)確定的通道號(hào),通過配置RAM控制單元讀取配置RAM陣列中的WP_RAM、DW_EOF_RAM、WM_RAM值;b6、根據(jù)讀取的WP_RAM、DW_EOF_RAM、WM_RAM中的各值,通過數(shù)據(jù)RAM讀寫控制單元向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟b6包括b61、根據(jù)WM_RAM中的門限值及DW_EOF_RAM中的數(shù)據(jù)量值判斷該通道鏈表中是否已經(jīng)寫滿數(shù)據(jù),如果是,執(zhí)行步驟b62,否則,執(zhí)行步驟b63;b62、請(qǐng)求將該通道鏈表中的數(shù)據(jù)輸出,并在該通道鏈表中的數(shù)據(jù)輸出后,執(zhí)行步驟b61;b63、開始一個(gè)寫數(shù)據(jù)操作,即根據(jù)WP_RAM中的寫指針值向雙端口數(shù)據(jù)存儲(chǔ)RAM中寫數(shù)據(jù),執(zhí)行步驟c。
16.根據(jù)權(quán)利要求14所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟c包括c3、根據(jù)塊指針信息確定寫指針;根據(jù)寫入的數(shù)據(jù)信息確定DW_EOF_RAM中所存放的數(shù)據(jù)量值和帶有EOF的數(shù)據(jù)的數(shù)量值,對(duì)于帶有EOF的數(shù)據(jù)的數(shù)量值則需要判斷是否發(fā)生變化,如果發(fā)生變化,則更新該值,否則,不作更新操作;c4、在每次寫數(shù)據(jù)操作完成后,通過所建立的中間狀態(tài)進(jìn)行寫指針和DW_EOF_RAM中各值的更新;c5、在本輪的多次寫數(shù)據(jù)操作結(jié)束時(shí),將上述中間狀態(tài)中的各參數(shù)值通過配置RAM控制單元回寫到當(dāng)前的配置RAM陣列中;
17.根據(jù)權(quán)利要求16所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟d包括d5、根據(jù)更新后EOF值判斷當(dāng)前的通道鏈表中是否存在帶EOF的數(shù)據(jù),如果存在,則令“Exist.EOF”的狀態(tài)為非零值,否則,保持“Exist.EOF”的狀態(tài);d6、根據(jù)更新后的寫指針值和預(yù)取的LWM值,判斷當(dāng)前通道的存儲(chǔ)鏈表中存儲(chǔ)數(shù)據(jù)所占用的Block數(shù)是否已經(jīng)被寫數(shù)據(jù)操作增加到LWM所設(shè)定的門限值以上,如果是,則令此通道的“Beyond.LWM”狀態(tài)為零值;否則,保持“Beyond.LWM”狀態(tài),不作任何更新操作;d7、自動(dòng)令此通道的“Not.Null”狀態(tài)為非零值;d8、根據(jù)讀指針和寫指針值判斷該通道鏈表是否已經(jīng)寫滿數(shù)據(jù),如果寫滿數(shù)據(jù),則令此通道的“Is.Full”狀態(tài)為非零值,否則,保持“Is.Full”狀態(tài),不作任何操作。
18.根據(jù)權(quán)利要求7所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于在執(zhí)行步驟b之前還包括e、多通道數(shù)據(jù)緩存控制/狀態(tài)單元對(duì)收到多個(gè)數(shù)據(jù)操作命令進(jìn)行優(yōu)先級(jí)仲裁,確定各個(gè)數(shù)據(jù)操作命令的優(yōu)先級(jí);f、按照確定的優(yōu)先級(jí)順序分別對(duì)各個(gè)數(shù)據(jù)操作命令依次執(zhí)行步驟b。
19.根據(jù)權(quán)利要求18所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟e包括e1、在物理端口側(cè),是按照端口順序確定優(yōu)先級(jí)別,即信端口號(hào)小的端口優(yōu)先級(jí)在先;e2、在系統(tǒng)總路線側(cè),是按照預(yù)先設(shè)置的各通道的優(yōu)先級(jí)確定各通道申請(qǐng)的優(yōu)先級(jí)。
20.根據(jù)權(quán)利要求18所述的控制芯片片內(nèi)存儲(chǔ)的方法,其特征在于所述的步驟f在物理端口側(cè)的多個(gè)讀數(shù)據(jù)命令按優(yōu)先級(jí)順序采用流水線操作,即優(yōu)先級(jí)在先的讀數(shù)據(jù)命令通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定了通道號(hào)后,優(yōu)先級(jí)在后的讀數(shù)據(jù)命令再依次通過多通道數(shù)據(jù)緩存控制/狀態(tài)單元確定各自的通道號(hào)。
全文摘要
本發(fā)明涉及一種控制芯片片內(nèi)存儲(chǔ)裝置及其方法。所述的裝置包括多通道數(shù)據(jù)緩存控制/狀態(tài)單元、數(shù)據(jù)RAM(隨機(jī)存儲(chǔ)器)讀寫控制單元、采用鏈表式存儲(chǔ)管理的雙端口數(shù)據(jù)存儲(chǔ)RAM、配置RAM控制單元及配置RAM陣列;所述的方法為首先,多通道數(shù)據(jù)緩存控制/狀態(tài)單元接收的數(shù)據(jù)操作命令;然后,數(shù)據(jù)RAM讀寫控制單元根據(jù)該命令及配置RAM陣列中的參數(shù)信息對(duì)雙端口數(shù)據(jù)存儲(chǔ)RAM進(jìn)行讀寫操作;最后,還需要對(duì)相應(yīng)的配置參數(shù)信息進(jìn)行更新。本發(fā)明可以更有效的利用片內(nèi)有限的存儲(chǔ)空間,增加了實(shí)際應(yīng)用的靈活性,且可支持更大的數(shù)據(jù)流量。另外,還可以在多速率多通道的應(yīng)用環(huán)境下,大大提高系統(tǒng)總線的帶寬利用率。
文檔編號(hào)G06F13/18GK1477532SQ0212919
公開日2004年2月25日 申請(qǐng)日期2002年8月20日 優(yōu)先權(quán)日2002年8月20日
發(fā)明者黃勇, 敬偉, 黃 勇 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1