專利名稱:緩沖存儲器管理方法與相關(guān)緩沖存儲器控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明公開一種緩沖存儲器控制方法與相關(guān)緩沖存儲器控制器,尤指一種將緩沖存儲器控制器包括的各單元同步化的緩沖存儲器管理方法與相關(guān)緩沖存儲器控制器。
背景技術(shù):
與大量數(shù)據(jù)處理相關(guān)的緩沖存儲器控制機制是很重要的問題,其中所述大量數(shù)據(jù)包括多媒體數(shù)據(jù)流。為了在處理時能夠暫存大量數(shù)據(jù),緩沖存儲器需要具有兼容于不同操作系統(tǒng)的多種類高速接口與驅(qū)動程序。然而,在緩沖存儲器控制器中使用多種類的接口或驅(qū)動程序需要考慮兼容性的問題,例如單一緩沖存儲器控制器中不同組件間的異步頻率。請參閱圖1,其圖示一種現(xiàn)有的緩沖存儲器控制器100及其與主機端110與閃存120共同運作的方式,以解釋上述的兼容性問題。如圖1所示,在數(shù)據(jù)傳輸?shù)倪^程中,緩沖存儲器控制器100用來當作主機端110與閃存120間的橋梁,其中緩沖存儲器控制器110與閃存120可被設置于同一硬件裝置內(nèi)。緩沖存儲器控制器100包括接口 130、數(shù)據(jù)處理單元140、后端處理引擎150、微處理器160、及緩沖存儲器170。接口 130用來對應于主機端110所使用的操作系統(tǒng),以接收由主機端110傳輸而來的數(shù)據(jù)。數(shù)據(jù)處理單元140用來處理接口 130所接收到的數(shù)據(jù)。后端處理引擎150用來檢查數(shù)據(jù)處理單元140所處理的數(shù)據(jù),以確保傳輸至閃存120的數(shù)據(jù)的正確性,其中所述檢查可為錯誤校正程序(Error Correction)。微處理器160用來協(xié)調(diào)接口 130、數(shù)據(jù)處理單元140、后端處理引擎150、與緩沖存儲器170間的運作。緩沖存儲器170用來暫存微處理器160在處理數(shù)據(jù)過程中產(chǎn)生的處理參數(shù)或信息。觀察圖1可知,若接口 130、數(shù)據(jù)處理單元140、后端處理引擎150、微處理器160、與緩沖存儲器170各自操作于相異的異步頻率,緩沖存儲器控制器100所包括的各組件在處理數(shù)據(jù)上的正確性將會大幅降低。
發(fā)明內(nèi)容
本發(fā)明公開數(shù)種緩沖存儲器管理方法與實施所述緩沖存儲器管理方法的緩沖存儲器控制器,以解決公知技術(shù)中緩沖存儲器控制器內(nèi)各組件間頻率不同步引起的問題。本發(fā)明公開一種緩沖存儲器管理方法,其包括當用來參照物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,由主機端接收數(shù)據(jù)至所述物理內(nèi)存區(qū)段;及當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,將數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至閃存。所述物理內(nèi)存區(qū)段被緩沖存儲器控制器內(nèi)緩沖存儲器所包括。所述緩沖存儲器存取狀態(tài)區(qū)為組成緩沖存儲器狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。本發(fā)明一種緩沖存儲器管理方法。所述方法包括當用來參照物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,由主機端接收數(shù)據(jù)至所述物理內(nèi)存區(qū)段;及當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,將數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至閃存。所述物理內(nèi)存區(qū)段被緩沖存儲器控制器內(nèi)緩沖存儲器所包括。所述緩沖存儲器存取狀態(tài)區(qū)為組成緩沖存儲器狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。本發(fā)明公開一種緩沖存儲器管理方法。所述方法包括當對應于第一緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示其所參照的第一物理內(nèi)存區(qū)段目前為數(shù)據(jù)移動指令所指定的數(shù)據(jù)來源,且當對應于第二緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示其所參照的第二物理內(nèi)存區(qū)段目前為所述數(shù)據(jù)移動指令所指定的現(xiàn)行目標時,將數(shù)據(jù)由所述第一物理內(nèi)存區(qū)段移動至所述第二物理內(nèi)存區(qū)段。緩沖存儲器包括所述第一物理內(nèi)存區(qū)段與所述第二物理內(nèi)存區(qū)段。所述第一緩沖存儲器存取狀態(tài)區(qū)與所述第二緩沖存儲器存取狀態(tài)區(qū)皆為組成緩沖存儲器狀態(tài)數(shù)組的單元。其中所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。本發(fā)明公開一種緩沖存儲器管理方法。所述方法包括當離散式存取狀態(tài)數(shù)組的第一狀態(tài)區(qū)允許物理內(nèi)存區(qū)段被存取,且當區(qū)塊式存取狀態(tài)數(shù)組的第三狀態(tài)區(qū)允許所述物理內(nèi)存被存取時,根據(jù)數(shù)據(jù)移動指令,存取所述物理內(nèi)存區(qū)段所暫存的數(shù)據(jù)。所述物理內(nèi)存區(qū)段被包括于緩沖存儲器,所述第一狀態(tài)區(qū)與所述第三狀態(tài)區(qū)皆對應于緩沖存儲器狀態(tài)數(shù)組包括的第二狀態(tài)區(qū),且所述第二狀態(tài)區(qū)用來參照所述物理內(nèi)存區(qū)段。所述第二狀態(tài)區(qū)為緩沖存儲器存取狀態(tài)區(qū),且所述緩沖存儲器存取狀態(tài)區(qū)為組成所述緩沖存儲器狀態(tài)數(shù)組的單元。所述第三狀態(tài)區(qū)為區(qū)塊式存取狀態(tài)區(qū),所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,且所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。所述第一狀態(tài)區(qū)為離散式存取狀態(tài)區(qū),所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,且所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。本發(fā)明公開一種緩沖存儲器控制器,其包括緩沖存儲器、至少一主單元、及仲裁模塊。所述緩沖存儲器包括多個物理內(nèi)存區(qū)段、緩沖存儲器狀態(tài)數(shù)組、區(qū)塊式存取狀態(tài)數(shù)組、與離散式存取狀態(tài)數(shù)組。所述緩沖存儲器狀態(tài)數(shù)組包括參照所述多個物理內(nèi)存區(qū)段的多個緩沖存儲器存取狀態(tài)區(qū)。所述區(qū)塊式存取狀態(tài)數(shù)組包括對應于所述多個緩沖存儲器存取狀態(tài)區(qū)的多個區(qū)塊式存取狀態(tài)區(qū)。所述離散式存取狀態(tài)數(shù)組包括對應于所述多個緩沖存儲器存取狀態(tài)區(qū)的多個離散式存取狀態(tài)區(qū)。所述至少一主單元用來存取所述緩沖存儲器。所述仲裁模塊用來在所述緩沖存儲器執(zhí)行指令時,使用防饑饉算法,以由所述至少一主單元中選出主單元。
圖1圖示一種現(xiàn)有的緩沖存儲器控制器及其與主機端及閃存共同運作的方式。圖2圖示用來實施本發(fā)明公開的緩沖存儲器管理方法的緩沖存儲器控制器。圖3例示一種本發(fā)明公開的緩沖存儲器管理機制,用來在緩沖存儲器中指出各物理內(nèi)存區(qū)段的存取狀態(tài)。圖4用來解釋內(nèi)存繞返技術(shù)的概念。圖5為根據(jù)本發(fā)明的實施例來解釋使用范圍存取狀態(tài)數(shù)組來讀取或?qū)懭胛锢韮?nèi)存區(qū)段的概略示意圖。圖6為根據(jù)本發(fā)明的實施例說明使用隊列存取狀態(tài)數(shù)組來讀取或?qū)懭胛锢韮?nèi)存區(qū)段的概略示意圖。圖7根據(jù)本發(fā)明的實施例,圖示如何使用范圍存取狀態(tài)數(shù)組、隊列存取狀態(tài)數(shù)組、緩沖存儲器狀態(tài)數(shù)組、以及物理內(nèi)存區(qū)域來實施內(nèi)部數(shù)據(jù)移動指令。圖8為根據(jù)本發(fā)明的實施例,公開部分有效式數(shù)據(jù)移動指令的實施方式。圖9圖示本發(fā)明的緩沖存儲器管理方法的基本流程。圖10為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器實施寫入指令時的流程圖。圖11為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器用來執(zhí)行讀取指令的流程圖。圖12根據(jù)本發(fā)明的部分實施例圖示由緩沖存儲器控制器所執(zhí)行的內(nèi)部數(shù)據(jù)移動指令。圖13為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器執(zhí)行部分有效式數(shù)據(jù)移動指令的流程圖。其中,附圖標記說明如下:100、200緩沖存儲器控制器110主機端120閃存130界面140、240數(shù)據(jù)處理單元150后端處理引擎160微處理器170緩沖存儲器180仲裁模塊RSA、RSA_R范圍狀態(tài)數(shù)組QSA、QSA_I隊列狀態(tài)數(shù)組MSA緩沖存儲器存取狀態(tài)數(shù)組
MO、Ml、M2、M3、M4、M5、M6、緩沖存儲器存取狀態(tài)區(qū)
M7、M8、M9、MNR0、R1、R2、R3、R4、R5、R6、R7、范圍存取狀態(tài)區(qū)R8、R9、RN、RRO、RRl、RR2、RR3Q0、Q1、Q2、Q3、Q4、Q5、Q6、隊列存取狀態(tài)區(qū)Q7、Q8、Q9、QN、Q10、QI1、QI2、QI3S0、S1、S2、S3、S4、S5、S6、S7、 內(nèi)存地址S8、S9PHM物理內(nèi)存區(qū)域D0、D1、D2、D3、D6、D9、D12物理內(nèi)存區(qū)段302、304、306、308、402、404、406、步驟408、410、412、502、504、506、508、510、512、602、70具體實施例方式為了解決緩沖存儲器控制器100包括的各組件間的異步頻率問題,本發(fā)明公開一種可實施于緩沖存儲器控制器的緩沖存儲器管理方法。請參閱圖2,其圖示用來實施本發(fā)明公開的緩沖存儲器管理方法的緩沖存儲器控制器200。相較于圖1所示的緩沖存儲器控制器100,緩沖存儲器200另包括仲裁模塊180以及數(shù)據(jù)處理單元240,其中數(shù)據(jù)處理單元240是以本發(fā)明公開的緩沖存儲器管理方法所實施,并用來替換圖1所示的數(shù)據(jù)處理單元140。在圖2中,緩沖存儲器170用來當作從屬單元(Slave Unit),而接口 130、微處理器160、與后端處理引擎150則用來當作主單元(Master Unit)。如此一來,可以緩沖存儲器170所使用的頻率來將接130、微處理器160、以及后端處理引擎150各自所使用的頻率加以同步。本發(fā)明所公開緩沖存儲器管理方法的其中一個主要目的,即為使緩沖存儲器170可以作為接口 130、微處理器160、以及后端處理引擎150間的頻率同步中心。仲裁模塊180用來在包括接口 130、微處理器160、與后端處理引擎150的多個主單元爭取緩沖存儲器170(亦即從屬單元)的資源時,選取其中一個來當作可存取資源的主單元。在本發(fā)明的一實施例中,是以循環(huán)式排程算法(Round-Robin Algorithm)作為仲裁模塊180選取可存取緩沖存儲器170的主單元的基準;然而,在本發(fā)明的其它實施例中,仲裁模塊180亦可使用其它種類的防饑饉算法(Starvation-preventing Algorithm)來實施仲裁機制,以選取可存取緩沖存儲器170的主單元,以防止任一主單元過久的等待存取緩沖存儲器170的資源。在緩沖存儲器170中,可指定特定的物理內(nèi)存區(qū)段(Physical Memory Segment)來指示其它緩沖存儲器170中物理內(nèi)存的現(xiàn)行存取狀態(tài),其中物理內(nèi)存區(qū)段的現(xiàn)行存取狀態(tài)可指示所述物理內(nèi)存目前是否可被寫入、讀取、或兩者皆否的狀態(tài)。通過所述從屬單元(亦即緩沖存儲器170)的輔助,緩沖存儲器控制器200中所述從屬單元與其它主單元間的頻率可被協(xié)調(diào);然而,本發(fā)明所公開的緩沖存儲器管理方法對實施所述協(xié)調(diào)機制來說是必要的。
以下所公開的各圖示用來解釋本發(fā)明的緩沖存儲器管理方法在各種情況下的實施方式。請參閱圖3,其例示一種本發(fā)明公開的緩沖存儲器管理機制,用來在緩沖存儲器170中指出各物理內(nèi)存區(qū)段的存取狀態(tài)。在圖3中,范圍狀態(tài)數(shù)組(Range Status Array)RSA與隊列狀態(tài)數(shù)組(Queue Status Array) QSA被指定于緩沖存儲器170中,以指示緩沖存儲器存取狀態(tài)數(shù)組MSA中(N+1)個緩沖存儲器存取狀態(tài)區(qū)M0、M1、M2、M3、M4、M5、M6、M7、M8、M9、…、MN的下一步存取狀態(tài),其中緩沖存儲器存取狀態(tài)數(shù)組MSA亦被指定于緩沖存儲器 170 中,(N+1)個緩沖存儲器存取狀態(tài)區(qū) M0、M1、M2、M3、M4、M5、M6、M7、M8、M9、.'MN 用來一一對應參照緩沖存儲器170中共(N+1)個物理內(nèi)存區(qū)段,且N為正整數(shù)。所述(N+1)個物理內(nèi)存區(qū)段在緩沖存儲器170中未必為連續(xù)地址的物理內(nèi)存區(qū)段。范圍存取狀態(tài)數(shù)組RSA包括(N+1)個范圍存取狀態(tài)區(qū)R0、R1、R2、R3、R4、R5、R6、R7、R8、R9、…、RN,且與緩沖存儲器存取狀態(tài)數(shù)組MSA包括的(N+1)個緩沖存儲器存取狀態(tài)區(qū)M0、M1、M2、M3、M4、M5、M6、M7、M8、M9、…、MN及其各自參照的物理內(nèi)存區(qū)段具有一一對應的關(guān)系。同樣的,隊列存取狀態(tài)數(shù)組QSA包括(N+1)個隊列存取狀態(tài)區(qū)00、01、02、03、04、05、06、07、08、09、…、QN,且亦與緩沖存儲器存取狀態(tài)數(shù)組MSA包括的(N+1)個緩沖存儲器存取狀態(tài)區(qū)MO、Ml、M2、M3、M4、M5、M6、M7、M8、M9、…、MN及其各自參照的物理內(nèi)存區(qū)段具有——對應的關(guān)系。舉例來說,緩沖存儲器存取狀態(tài)區(qū)M5的范圍存取狀態(tài)會由范圍存取狀態(tài)區(qū)R5的現(xiàn)行值來決定;同樣的,緩沖存儲器存取狀態(tài)區(qū)M5的隊列存取狀態(tài)也會由隊列存取狀態(tài)區(qū)Q5的現(xiàn)行值所決定。在本發(fā)明的一實施例中,緩沖存儲器存取狀態(tài)數(shù)組MSA、隊列存取狀態(tài)數(shù)組QSA、與范圍存取狀態(tài)數(shù)組RSA中各范圍存取狀態(tài)區(qū)的值可為O或1,亦即可為二進制值。圖3所圖示的緩沖存儲器管理架構(gòu)中包括有以下規(guī)則:(a)緩沖存儲器存取狀態(tài)數(shù)組MSA與范圍存取狀態(tài)數(shù)組RSA兩者的存取狀態(tài)區(qū)間具有一對一參照(One-by-one Mapping)的關(guān)系,且緩沖存儲器存取狀態(tài)數(shù)組MSA與隊列存取狀態(tài)數(shù)組QSA兩者的存取狀態(tài)區(qū)間亦具有一對一參照的關(guān)系。再者,緩沖存儲器存取狀態(tài)數(shù)組MSA中值為O的緩沖存儲器存取狀態(tài)區(qū)代表所述緩沖存儲器存取狀態(tài)區(qū)參照的物理內(nèi)存區(qū)段當時允許被寫入,且在所述物理內(nèi)存區(qū)段被寫入后,所述緩沖存儲器存取狀態(tài)區(qū)的值會被更新為I ;同理, 緩沖存儲器存取狀態(tài)數(shù)組MSA中值為I的緩沖存儲器存取狀態(tài)區(qū)代表所述緩沖存儲器存取狀態(tài)區(qū)參照的物理內(nèi)存區(qū)段當時允許被讀取,且在所述物理內(nèi)存區(qū)段被讀取后,所述緩沖存儲器存取狀態(tài)區(qū)的值會被更新為O。(b)范圍存取狀態(tài)數(shù)組RSA中值為O的范圍存取狀態(tài)區(qū)代表其對應的物理內(nèi)存區(qū)段當時禁止被存取或修改,而范圍存取狀態(tài)數(shù)組RSA中值為I的范圍存取狀態(tài)區(qū)代表其對應的物理內(nèi)存區(qū)段當時允許被存取或修改。在寫入數(shù)據(jù)至物理內(nèi)存區(qū)段后,緩沖存儲器存取狀態(tài)數(shù)組MSA中對應的緩沖存儲器存取狀態(tài)區(qū)的值會被更新為I ;而當由物理內(nèi)存區(qū)段讀出數(shù)據(jù)后,緩沖存儲器存取狀態(tài)數(shù)組MSA中對應的緩沖存儲器存取狀態(tài)區(qū)的值會被更新為O。除此以外,當范圍存取狀態(tài)數(shù)組RSA用來指出對應的物理內(nèi)存區(qū)段目前的存取狀態(tài)時,范圍存取狀態(tài)數(shù)組RSA會一次同時允許緩沖存儲器存取狀態(tài)數(shù)組MSA中多個連續(xù)(亦即區(qū)塊式分布)的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段可被存取(亦即值為I的范圍存取狀態(tài)區(qū)),如圖5的范圍存取狀態(tài)數(shù)組RSA中多個連續(xù)且值為I的范圍存取狀態(tài)區(qū)與其一一對應的多個緩沖存儲器存取狀態(tài)區(qū)所示。(c)隊列存取狀態(tài)數(shù)組QSA中各隊列存取狀態(tài)區(qū)取值為O或I的定義與范圍存取狀態(tài)數(shù)組RSA相同,然而在使用方式上卻完全不同。當隊列存取狀態(tài)數(shù)組QSA用來指示其所參照的各物理內(nèi)存區(qū)段的存取狀態(tài)時,隊列存取狀態(tài)數(shù)組QSA會允許緩沖存儲器存取狀態(tài)數(shù)組MSA中多個不連續(xù)(亦即離散分布)的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段的存取,如圖6中隊列存取狀態(tài)數(shù)組QSA中多個不連續(xù)且值為I的隊列存取狀態(tài)區(qū)與其一一對應的多個緩沖存儲器存取狀態(tài)區(qū)所示。
(d)緩沖存儲器存取狀態(tài)數(shù)組MSA中各緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段在大小上不見得相同。(e)在讀取或?qū)懭胛锢韮?nèi)存區(qū)段時,在同一時間內(nèi),范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA兩者只會有其一被用于允許對應的物理內(nèi)存區(qū)段可被存取的操作,亦即范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA兩者在實施物理內(nèi)存區(qū)段的讀取指令或?qū)懭胫噶顣r彼此為互斥。(f)緩沖存儲器存取狀態(tài)數(shù)組MSA、范圍存取狀態(tài)數(shù)組RSA、與隊列存取狀態(tài)數(shù)組QSA三者皆可使用內(nèi)存繞返(Memory Wrapping)技術(shù)。請參閱圖4,其用來解釋上述(f)部分中內(nèi)存繞返技術(shù)的概念。在圖4中例示有多個連續(xù)內(nèi)存地址S0、S1、…、S9。當以內(nèi)存繞返技術(shù)存取所述連續(xù)內(nèi)存地址S0、S1、…、S9時,其意指所述內(nèi)存地址會以依序(In-order)、循環(huán)式(Cyclic)、且逐區(qū)塊(Block_by-block)的方式來被存取。舉例來說,假設目前內(nèi)存是以一次四個地址的方式被存取,且內(nèi)存地址S7目前為目前存取中的起始地址時,則接下來的內(nèi)存地址存取順序可被預期為(S7、S8、S9、SO)、(S1、S2、S3、S4)、(S5、S6、S7、S8)、(S9、SO、S1、S2),依此類推。本發(fā)明所公開的緩沖存儲器管理方法是基于圖3所示的架構(gòu)來進行,并包括基本流程如下:(Tl)決定使用范圍存取狀態(tài)數(shù)組RSA或隊列存取狀態(tài)數(shù)組QSA,來允許對應的物理內(nèi)存區(qū)段被存取。(T2)設定所決定使用的存取狀態(tài)數(shù)組,并根據(jù)現(xiàn)行系統(tǒng)需求,決定一次存取中所存取物理內(nèi)存區(qū)段的數(shù)量。(T3)決定使用存取狀態(tài)數(shù)組進行存取時,在所使用的存取狀態(tài)數(shù)組與緩沖存儲器存取狀態(tài)數(shù)組MSA中的存取方向,以根據(jù)所述存取方向參照并存取對應的物理內(nèi)存區(qū)段。(T4)設定初始前端指標。根據(jù)步驟(Tl)至(T4),本發(fā)明所公開的緩沖存儲器管理方法可對應于不同狀況而實施如下所述功能:(A)使用范圍存取狀態(tài)數(shù)組RSA來讀取或?qū)懭胛锢韮?nèi)存區(qū)段。(B)使用隊列存取狀態(tài)數(shù)組QSA來讀取或?qū)懭胛锢韮?nèi)存區(qū)段。(C)使用范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA來執(zhí)行內(nèi)部數(shù)據(jù)移動指令。(D)使用范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA來執(zhí)行局部有效式數(shù)據(jù)移動指令(Partial Valid Data Moving Instruction)。上述的功能㈧至⑶詳述如下:(A)使用范圍存取狀態(tài)數(shù)組RSA來讀取或?qū)懭胛锢韮?nèi)存區(qū)段:根據(jù)上述的基本流程,當選取主單元來作為從屬單元時(例如選取數(shù)據(jù)處理單元140作為從屬單元時),會根據(jù)上述的步驟(Tl)與(T2),決定以范圍存取狀態(tài)數(shù)組RSA作為決定欲存取的物理內(nèi)存區(qū)段的參考。請參閱圖5,其為根據(jù)本發(fā)明的一實施例來解釋上述的功能(A)的概略示意圖。范圍存取狀態(tài)數(shù)組RSA與緩沖存儲器存取狀態(tài)數(shù)組MSA的初始值如圖5左側(cè)所示。在圖5中,假設數(shù)據(jù)處理單元140會先接收到讀取指令,再接著接收到寫入指令。請注意,在緩沖存儲器存取狀態(tài)數(shù)組MSA中,只有被范圍存取狀態(tài)數(shù)組RSA中值為I的范圍存取狀態(tài)區(qū)所對應到的緩沖存儲器存取狀態(tài)區(qū)才會被更新,亦即如上述規(guī)則(b)所述的允許存取狀況;而被范圍存取狀態(tài)數(shù)組RSA中值為O的范圍存取狀態(tài)區(qū)所對應到的緩沖存儲器存取狀態(tài)區(qū)則不會被更新,亦即如上述規(guī)則(b)所述的禁止存取狀況。當接收到讀取指令時,根據(jù)上述的規(guī)則(a)與規(guī)則(b),范圍存取狀態(tài)數(shù)組RSA中值為I的范圍存取狀態(tài)區(qū)在緩沖存儲器存取狀態(tài)數(shù)組MSA中對應的緩沖存儲器存取狀態(tài)區(qū)(值為I)所參照的物理內(nèi)存區(qū)段此時會被允許讀??;除此以外,所述值為I的緩沖存儲器存取狀態(tài)區(qū)的值會在這些物理內(nèi)存區(qū)段被讀取后被更新為O ;范圍存取狀態(tài)數(shù)組RSA中值為O的范圍存取狀態(tài)區(qū)在緩沖存儲器存取狀態(tài)數(shù)組MSA中對應的緩沖存儲器存取狀態(tài)區(qū)的值不會被更動,且所述不被更動值的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段此時亦不被允許讀取。觀察圖5可知,在范圍存取狀態(tài)數(shù)組RSA中值為I的范圍存取狀態(tài)區(qū)是連續(xù)分布的,而值為O的范圍存取狀態(tài)區(qū)也是連續(xù)分布的。這代表每一次使用范圍存取狀態(tài)數(shù)組RSA執(zhí)行寫入指令或讀取指令時,在緩沖存儲器狀態(tài)數(shù)組MSA中會被存取且值會被更新的緩沖存儲器存取狀態(tài)區(qū)分布也是連續(xù)的;換句話說,范圍存取狀態(tài)數(shù)組RSA的存取型態(tài)使其成為區(qū)塊式存取(Accessing-by-block)狀態(tài)數(shù)組,且上述值為I的連續(xù)范圍存取狀態(tài)區(qū)數(shù)目(亦即長度)即為一次指令執(zhí)行中所同時存取的物理內(nèi)存區(qū)段數(shù)目,且所述長度可在使用范圍存取狀態(tài)數(shù)組RSA前就先行決定。如此一來,如圖5所示,當使用范圍存取狀態(tài)數(shù)組RSA執(zhí)行讀取或?qū)懭胫噶顣r,范圍存取狀態(tài)數(shù)組RSA可指定前端指標(Front Pointer)FPl指向存取緩沖存儲器狀態(tài)數(shù)組MSA時的起始緩沖存儲器存取狀態(tài)區(qū),并指定后端指標(RearPointer) RPl指向存取緩沖存儲器狀態(tài)數(shù)組MSA時的終點緩沖存儲器存取狀態(tài)區(qū)。在設定前端指標FPl與后端指針RPl的指定對象時,也需要考慮緩沖存儲器狀態(tài)數(shù)組MSA的存取方向。當使用范圍存取狀態(tài)數(shù)組RSA進行存取,且當范圍存取狀態(tài)數(shù)組RSA進行存取的長度超過緩沖存儲器狀態(tài)數(shù)組MSA的尾端時,可使用上述的內(nèi)存繞返技術(shù)(亦即規(guī)則(f)),以繞回緩沖存儲器狀態(tài)數(shù)組MSA的前端來繼續(xù)進行此次存取。在將讀取指令或?qū)懭胫噶顖?zhí)行完畢時,在緩沖存儲器狀態(tài)數(shù)組MSA上執(zhí)行所述指令的終點會被設定為后端指標RPl所指向的目標,以使得執(zhí)行下一個指令時,可將后端指標RPl所指向的目標設定為前端指針FPl的目標以執(zhí)行所述下一個指令。(B)使用隊列存取狀態(tài)數(shù)組QSA來讀取或?qū)懭胛锢韮?nèi)存區(qū)段:根據(jù)上述的基本流程,當指定主單元給所述從屬單元(亦即數(shù)據(jù)處理單元140)時,可選擇隊列存取狀態(tài)數(shù)組QSA并根據(jù)上述的步驟(Tl)與(T2)來進行。請參閱圖6,其為根據(jù)本發(fā)明的實施例說明上述的功能(B)的概略示意圖,其中隊列存取狀態(tài)數(shù)組QSA與緩沖存儲器狀態(tài)數(shù)組MSA的初始值皆如圖6左側(cè)所示。在此假設數(shù)據(jù)處理單元140先行接收了讀取指令,接著再接收了寫入指令。如同上述的規(guī)則(c)所述,在緩沖存儲器狀態(tài)數(shù)組MSA中,只有被隊列存取狀態(tài)數(shù)組QSA中值為I的隊列存取狀態(tài)區(qū)所對應的緩沖存儲器存取狀態(tài)區(qū)才被允許存取,而隊列存取狀態(tài)數(shù)組QSA中值為O的隊列存取狀態(tài)區(qū)所對應的緩沖存儲器存取狀態(tài)區(qū)則不允許被存取。當接收到所述讀取指令時,根據(jù)上述的規(guī)則(a)與規(guī)則(C),只有被值為I的隊列存取狀態(tài)區(qū)對應且本身值為I的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段才會被允許存取(此時為讀取),且在這些物理內(nèi)存區(qū)段被存取后,這些緩沖存儲器存取狀態(tài)區(qū)的值全部都會由I被更新為O。另外,值為O的隊列存取狀態(tài)區(qū)所對應的緩沖存儲器存取狀態(tài)區(qū),無論其值為O或1,其所參照的物理內(nèi)存區(qū)段都會被禁止存取。接著,當接收到寫入指令時,根據(jù)上述的規(guī)則(a)與規(guī)則(C),只有被值為I的隊列存取狀態(tài)區(qū)對應且本身值為O的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段才會被允許存取(此時為寫入),且在這些物理內(nèi)存區(qū)段被存取后,這些緩沖存儲器存取狀態(tài)區(qū)的值全部都會由O被更新為I。另外,值為O的隊列存取狀態(tài)區(qū)所對應的緩沖存儲器存取狀態(tài)區(qū),無論其值為O或1,其所參照的物理內(nèi)存區(qū)段都會被禁止存取。如圖6所示,在隊列存取狀態(tài)數(shù)組QSA中,值為I的隊列存取狀態(tài)區(qū)并非是連續(xù)分布,而是以離散方式分布,且各值為I的隊列存取狀態(tài)區(qū)間會穿插至少一個固定個數(shù)的值為O的隊列存取狀態(tài)區(qū),而不會出現(xiàn)連續(xù)兩個值為I的隊列存取狀態(tài)區(qū)并排的狀況;因此,隊列存取狀態(tài)數(shù)組QSA在允許存取的特性上,也會在緩沖存儲器狀態(tài)數(shù)組MSA上呈現(xiàn)出離散式存取(Accessing-by-spaced-1nterval)的分布。換句話說,可將隊列存取狀態(tài)數(shù)組QSA視為離散式存取狀態(tài)數(shù)組。如圖6所示,當使用隊列存取狀態(tài)數(shù)組QSA執(zhí)行讀取或?qū)懭胫噶顣r,指定前端指標FP2與后端指針RP2的指向目標、根據(jù)緩沖存儲器狀態(tài)數(shù)組MSA的存取方向來設定前端指標FPl與后端指針RPl的指定對象、或如何使用上述的內(nèi)存繞返技術(shù)等細節(jié),皆類似于圖5所示的范圍存取狀態(tài)數(shù)組RSA —樣的作法,故此處不再另行贅述。通過使用隊列存取狀態(tài)數(shù)組QSA來存取數(shù)據(jù),以離散方式所存取的數(shù)據(jù)可以達成較佳的數(shù)據(jù)洗牌(Data Shuffling)效果,也不需要再另行修改不被允許存取的物理內(nèi)存區(qū)段中所儲存的數(shù)據(jù)。(C)使用范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA來執(zhí)行內(nèi)部數(shù)據(jù)移動指令:當實施緩沖存儲器狀態(tài)數(shù)組MSA所參照的各物理內(nèi)存區(qū)段間的內(nèi)部數(shù)據(jù)移動(Internal Data Moving)指令時,每一個內(nèi)部數(shù)據(jù)搬移指令都會指定范圍存取狀態(tài)數(shù)組RSA中的范圍存取狀態(tài)區(qū)來當作來源端,并指定隊列存取狀態(tài)數(shù)組QSA中的隊列存取狀態(tài)區(qū)來當作目標端。請注意,在實施內(nèi)部數(shù)據(jù)移動指令時,來源端與目標端在緩沖存儲器狀態(tài)數(shù)組MSA上對應的緩沖存儲器存取狀態(tài)區(qū)不可為同一個緩沖存儲器存取狀態(tài)區(qū),因為內(nèi)部數(shù)據(jù)移動指令并不會把位于同一物理內(nèi)存區(qū)段的數(shù)據(jù)在一次指令執(zhí)行中再次挪移給所述物理內(nèi)存區(qū)段。除此以外,在實施內(nèi)部數(shù)據(jù)移動指令時,也可以設定或更新前端指標與后端指針在緩沖存儲器狀態(tài)數(shù)組MSA上的指向目標,以指向內(nèi)部數(shù)據(jù)移動指令的來源端與目標端。請參閱圖7,其根據(jù)本發(fā)明的實施例,圖示如何使用范圍存取狀態(tài)數(shù)組RSA、隊列存取狀態(tài)數(shù)組QSA、緩沖存儲器狀態(tài)數(shù)組MSA、以及物理內(nèi)存區(qū)域PHM來實施內(nèi)部數(shù)據(jù)移動指令,其中物理內(nèi)存區(qū)域PHM被規(guī)劃于緩沖存儲器170內(nèi),并包括多個物理內(nèi)存區(qū)段DO、D1、D2、D3、D6、D9、以及D12,而物理內(nèi)存區(qū)段DO、DU D2、D3、D6、D9、D12亦各自被緩沖存儲器狀態(tài)數(shù)組MSA中的緩沖存儲器存取狀態(tài)區(qū)MO、Ml、M2、M3、M6、M9、以及M12所參照。在本發(fā)明的實施例中,每一物理內(nèi)存區(qū)段的大小皆為512字節(jié)(Bytes);然而,在本發(fā)明的其它實施例中,每一物理內(nèi)存區(qū)段的大小是可調(diào)整的。觀察圖7可知,范圍存取狀態(tài)數(shù)組RSA中只有范圍存取狀態(tài)區(qū)RO、Rl、R2的值為1,且范圍存取狀態(tài)區(qū)R0、RU R2此時用來指出內(nèi)部數(shù)據(jù)移動指令的來源端;隊列存取狀態(tài)數(shù)組QSA中只有隊列存取狀態(tài)區(qū)Q3、Q6、Q9、Q12的值為1,且隊列存取狀態(tài)區(qū)Q3、Q6、Q9、Q12此時用來指出內(nèi)部數(shù)據(jù)移動指令的目標端。在執(zhí)行內(nèi)部數(shù)據(jù)移動指令時,由范圍存取狀態(tài)數(shù)組RSA所指出的來源端至隊列存取狀態(tài)數(shù)組QSA所指出的目標端間的參照關(guān)系,是以依序(In-order)且使用上述內(nèi)存繞返技術(shù)的方式來實施。在圖7中,存在有四個內(nèi)部數(shù)據(jù)移動指令:第一個內(nèi)部數(shù)據(jù)移動指令的來源端與目標端是由范圍存取狀態(tài)區(qū)RO與隊列存取狀態(tài)區(qū)Q3所定義,用來將儲存于物理內(nèi)存區(qū)段DO的數(shù)據(jù)移動至物理內(nèi)存區(qū)段D3 ;第二個內(nèi)部數(shù)據(jù)移動指令的來源端與目標端是由范圍存取狀態(tài)區(qū)Rl與隊列存取狀態(tài)區(qū)Q6所定義,用來將儲存于物理內(nèi)存區(qū)段Dl的數(shù)據(jù)移動至物理內(nèi)存區(qū)段D6;第三個內(nèi)部數(shù)據(jù)移動指令的來源端與目標端是由范圍存取狀態(tài)區(qū)R2與隊列存取狀態(tài)區(qū)Q9所定義,用來將儲存于物理內(nèi)存區(qū)段D2的數(shù)據(jù)移動至物理內(nèi)存區(qū)段D9 ;第四個內(nèi)部數(shù)據(jù)移動指令的來源端與目標端是由范圍存取狀態(tài)區(qū)RO與隊列存取狀態(tài)區(qū)Q12所定義,用來將儲存于物理內(nèi)存區(qū)段DO的數(shù)據(jù)移動至物理內(nèi)存區(qū)段D12。在執(zhí)行內(nèi)部數(shù)據(jù)移動指令時,并不需要確認緩沖存儲器狀態(tài)數(shù)組MSA中每一緩沖存儲器存取狀態(tài)區(qū)的值,且在隊列存取狀態(tài)數(shù)組QSA中,兩個值為I的隊列存取狀態(tài)區(qū)間所間隔值為O的隊列存取狀態(tài)區(qū)的數(shù)目也并非為固定值,如圖7中隊列存取狀態(tài)數(shù)組QSA所
/Jn ο通過使用范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA來實施內(nèi)部數(shù)據(jù)移動指令,可實現(xiàn)較佳的內(nèi)存配置(Memory Allocation)。(D)使用范圍存取狀態(tài)數(shù)組RSA與隊列存取狀態(tài)數(shù)組QSA來執(zhí)行局部有效式數(shù)據(jù)移動指令:當執(zhí)行局部有效式數(shù)據(jù)移動指令時,接口 130用來處理主機端110與緩沖存儲器控制器200間的數(shù)據(jù)傳輸,且后端處理引擎150用來處理緩沖存儲器控制器200與閃存120間的數(shù)據(jù)傳輸。當局部有效式數(shù)據(jù)移動指令用來將數(shù)據(jù)由主機端110傳輸至閃存120時,亦即當所述局部有效式數(shù)據(jù)移動指令為寫入指令,接口 130用來由主機端110擷取數(shù)據(jù),并用來將所擷取的數(shù)據(jù)暫存于緩沖存儲器170中;后端處理引擎150用來將數(shù)據(jù)由緩沖存儲器170傳輸至閃存120。當后端處理引擎150將數(shù)據(jù)由緩沖存儲器170傳輸至閃存120時,隊列存取狀態(tài)數(shù)組QSA用來指出緩沖存儲器170中目前可用的內(nèi)存地址(亦即值為I的隊列存取狀態(tài)區(qū)所對應參照且允許存取的物理內(nèi)存區(qū)段),范圍存取狀態(tài)數(shù)組RSA用來指出一次寫入閃存120的存取中被允許存取的連續(xù)內(nèi)存地址的數(shù)目,亦即用來決定一次寫入的內(nèi)存地址的長度。當局部有效式數(shù)據(jù)移動指令用來將數(shù)據(jù)由閃存120傳輸至主機端110,亦即當局部有效式數(shù)據(jù)移動指令為讀取指令時,后端處理引擎150用來由閃存120接收數(shù)據(jù),并將所接收的數(shù)據(jù)暫存于緩沖存儲器170,且接口 130用來將所述數(shù)據(jù)由緩沖存儲器170傳輸至主機端110。當后端處理引擎150將數(shù)據(jù)由閃存120傳輸至緩沖存儲器170時,范圍存取狀態(tài)數(shù)組RSA用來指出一次讀取數(shù)據(jù)的數(shù)量,亦即用來指出一次存取的連續(xù)內(nèi)存地址的長度;而隊列存取狀態(tài)數(shù)組QSA用來指出緩沖存儲器170中的有效內(nèi)存地址,使得接口 130可據(jù)以將數(shù)據(jù)由這些有效內(nèi)存地址傳輸至主機端110。請注意,當執(zhí)行局部有效式數(shù)據(jù)移動指令以進行讀取時,緩沖存儲器170上的無效內(nèi)存地址可通過上述機制而得以被禁止存取。請參閱圖8,其為根據(jù)本發(fā)明的實施例所公開部分有效式數(shù)據(jù)移動指令的實施方式。在圖8中,假設隊列存取狀態(tài)數(shù)組QSA_I中的隊列存取狀態(tài)區(qū)Q10、QI1、QI2、QI3—一對應于緩沖存儲器狀態(tài)數(shù)組MSA中的緩沖存儲器存取狀態(tài)區(qū)MO、Ml、M2、M3,且范圍存取狀態(tài)數(shù)組RSA_R中的隊列存取狀態(tài)區(qū)RRO、RRl、RR2、RR3亦一一對應于緩沖存儲器狀態(tài)數(shù)組MSA中的緩沖存儲器存取狀態(tài)區(qū)MO、Ml、M2、M3。另外,緩沖存儲器存取狀態(tài)區(qū)MO、Ml、M2、M3也一一對應于緩沖存儲器170中物理內(nèi)存區(qū)域PHM所包括的物理內(nèi)存區(qū)段S0、S1、S2、S3,其中物理內(nèi)存區(qū)段S0、S1、S2、S3各自包括數(shù)據(jù)DO、Dl、D2、D3。當部分有效式數(shù)據(jù)移動指令為寫入指令時,隊列存取狀態(tài)數(shù)組QSA用來指出物理內(nèi)存區(qū)段SO與S2此時為有效內(nèi)存區(qū)段,并指出物理內(nèi)存區(qū)段SI與S3此時為無效內(nèi)存區(qū)段。范圍存取狀態(tài)數(shù)組RSA_R包括的范圍存取狀態(tài)區(qū)RRO、RRU RR2、RR3指出一次存取的連續(xù)內(nèi)存地址(亦即長度)為四個。如此一來,因為范圍存取狀態(tài)區(qū)RR0、RR1、RR2、RR3的值皆為1,數(shù)據(jù)D0、D1、D2、D3會被范圍存取狀態(tài)數(shù)組RSA_R允許寫入閃存120 ;然而由于數(shù)據(jù)Dl與D3可能為無效數(shù)據(jù)(因為隊列存取狀態(tài)區(qū)QIl與QI3的值為O)而使得緩沖存儲器存取狀態(tài)區(qū)Ml與M3參照的物理內(nèi)存區(qū)段SI與S3不被隊列存取狀態(tài)數(shù)組QSA所允許存取,故最后物理內(nèi)存區(qū)段SI與S3仍然不會被存取。同樣的,當部分有效式數(shù)據(jù)移動指令為讀取指令時,物理內(nèi)存區(qū)段SO與S2所儲存的數(shù)據(jù)D0、D2會被允許讀入主機端110,此是因隊列存取狀態(tài)區(qū)QIO與QI2的值皆為I (指出了物理內(nèi)存區(qū)段MO與M2此時為有效物理內(nèi)存區(qū)段)且范圍存取狀態(tài)區(qū)RRO與RR2的值亦皆為I ;而雖然范圍存取狀態(tài)區(qū)RRl與RR3的值皆為1,但因為隊列存取狀態(tài)區(qū)QIO與QI2的值皆為O (指出了物理內(nèi)存區(qū)段Ml與M3此時為無效物理內(nèi)存區(qū)段)而禁止了物理內(nèi)存區(qū)段Ml與M3的存取,故最后物理內(nèi)存區(qū)段Ml與M3仍然不會被存取。請注意,在實施部分有效數(shù)據(jù)移動指令時,緩沖存儲器狀態(tài)數(shù)組MSA中各緩沖存儲器存取狀態(tài)區(qū)的值不需要被檢驗,且任二個值為I的隊列存取狀態(tài)區(qū)間值為O的隊列存取狀態(tài)區(qū)個數(shù)也并非固定值。除此以外,根據(jù)本發(fā)明的實施例,緩沖存儲器狀態(tài)數(shù)組MSA亦可應用上述的內(nèi)存繞回技術(shù),以對應設定前端指標與后端指針所指向的目標。通過禁止緩沖存儲器170中的無效物理內(nèi)存區(qū)段被存取,緩沖存儲器控制器200的效能將可避免被所述無效物理內(nèi)存區(qū)段所影響??偨Y(jié)上述的狀況㈧、狀況⑶、狀況(C)、狀況(D),通過使用范圍存取狀態(tài)數(shù)組RSA及/或隊列存取狀態(tài)數(shù)組QSA,可統(tǒng)整從屬單元以及其對應的各主單元的頻率,以使得緩沖存儲器控制器200的各種運作可以依循從屬單元的頻率來進行。請參閱圖9,其為上述步驟(Tl)至(T4)所述的基本流程的總結(jié)。如圖9所示,所述基本流程主要包括如下步驟:步驟302:根據(jù)仲裁模塊180所使用的防饑饉算法,選取主單元。步驟304:接收讀取指令、寫入指令、或數(shù)據(jù)移動指令。
步驟306:為所述主單元選取范圍存取狀態(tài)數(shù)組、隊列存取狀態(tài)數(shù)組、或兩者皆選取。步驟308:為步驟306中所選取的存取狀態(tài)數(shù)組更新前端指針與后端指標。步驟310:步驟結(jié)束。請參閱圖10,其為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器200實施寫入指令時的流程圖,并為上述的功能(A)與功能(B)的相關(guān)敘述所支持。如圖10所示,實施寫入指令的流程包括步驟如下:步驟402:根據(jù)后端指針的現(xiàn)行目標,設定前端指針。步驟404:在緩沖存儲器狀態(tài)數(shù)組MSA中,搜尋值為O的緩沖存儲器存取狀態(tài)區(qū)。步驟406:決定使用范圍存取狀態(tài)數(shù)組RSA或隊列存取狀態(tài)數(shù)組QSA來允許緩沖存儲器存取狀態(tài)數(shù)組MSA上的存取。步驟408:寫入數(shù)據(jù)于步驟406中所決定使用的存取狀態(tài)數(shù)組在緩沖存儲器狀態(tài)數(shù)組MSA中所允許存取且在步驟404中確認本身值為O的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段。步驟410:將步驟408中用來參照物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)的值由O更新為I。步驟412:將所述后端指針的現(xiàn)行目標更新為所述寫入指令最后所存取的目標。請參閱圖11,其為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器200用來執(zhí)行讀取指令的流程圖,如上述的功能(A)或功能(B)所述。如圖11所示,執(zhí)行讀取指令的流程包括如下步驟:步驟502:根據(jù)后端指針的現(xiàn)行目標來設定前端指針。步驟504:搜尋緩沖存儲器狀態(tài)數(shù)組MSA中值為I的緩沖存儲器存取狀態(tài)區(qū)。步驟506:決定使用范圍存取狀態(tài)數(shù)組RSA或隊列存取狀態(tài)數(shù)組QSA來允許緩沖存儲器存取狀態(tài)數(shù)組MSA上的存取。步驟508:將數(shù)據(jù)由步驟506所選取的存取狀態(tài)數(shù)組所允許且在步驟504中確認值為I的緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段中讀出至主機端110。步驟510:將步驟508中所參照過的緩沖存儲器存取狀態(tài)區(qū)的值由I更新為O。步驟512:將所述后端指針的現(xiàn)行目標更新為所述讀取指令最后所存取的目標。請參閱圖12,其根據(jù)本發(fā)明的部分實施例圖示由緩沖存儲器控制器200所執(zhí)行的內(nèi)部數(shù)據(jù)移動指令,如上述的功能(C)所述。如圖12所示,所述內(nèi)部數(shù)據(jù)移動指令包括如下步驟:步驟602:將數(shù)據(jù)由被值為I的范圍存取狀態(tài)區(qū)對應的第一緩沖存儲器存取狀態(tài)區(qū)所參照的第一物理內(nèi)存區(qū)段移動至值為I的隊列存取狀態(tài)區(qū)對應的第二緩沖存儲器存取狀態(tài)區(qū)所參照的第二物理內(nèi)存區(qū)段。請參閱圖13,其為根據(jù)本發(fā)明的部分實施例所公開緩沖存儲器控制器200執(zhí)行部分有效式數(shù)據(jù)移動指令的流程圖,如上述的功能(D)所述。如圖13所示,執(zhí)行部分有效式數(shù)據(jù)移動指令的流程包括步驟如下:步驟702:當緩沖存儲器存取狀態(tài)區(qū)所對應的隊列存取狀態(tài)區(qū)與范圍存取狀態(tài)區(qū)的值皆為I時,存取所述緩沖存儲器存取狀態(tài)區(qū)所參照的物理內(nèi)存區(qū)段。
請注意,根據(jù)圖9、圖10、圖11、圖12所示的流程圖經(jīng)過合理組合或排列或附加本說明書中提及的各種條件所形成的實施例,亦應視為本發(fā)明的實施例。本發(fā)明公開一種緩沖存儲器管理方法與相關(guān)的緩沖存儲器控制器,以用來解決傳統(tǒng)緩沖存儲器控制器中各組件的異步頻率引起的問題。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包括在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種緩沖存儲器管理方法,其特征在于,包括: 當用來參照物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,由主機端接收數(shù)據(jù)至所述物理內(nèi)存區(qū)段,其中所述物理內(nèi)存區(qū)段被緩沖存儲器控制器內(nèi)緩沖存儲器所包括;及 當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,將數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至閃存; 其中所述緩沖存儲器存取狀態(tài)區(qū)為組成緩沖存儲器狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。
2.如權(quán)利要求1所述的緩沖存儲器管理方法,其特征在于: 所述多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)的數(shù)目是根據(jù)所述緩沖存儲器控制器包括的主單元一次可同時存取的物理內(nèi)存區(qū)段的上限數(shù)量來決定。
3.如權(quán)利要求1所述的緩沖存儲器管理方法,其特征在于: 所述區(qū)塊式存取狀態(tài)數(shù)組存在于所述緩沖存儲器,并被指定給所述緩沖存儲器控制器包括的主單元。
4.如權(quán)利要求3所述的緩沖存儲器管理方法,其特征在于: 所述主單元為所述緩沖存儲器控制器包括的接口、微處理器、或后端處理單元。
5.如權(quán)利要求3所 述的緩沖存儲器管理方法,其特征在于: 所述緩沖存儲器管理方法另包括: 由所述緩沖存儲器控制器所包括的多個候選主單元中決定所述主單元,以使用防饑饉算法來存取所述緩沖存儲器。
6.如權(quán)利要求5所述的緩沖存儲器管理方法,其特征在于: 所述防饑饉算法為循環(huán)式排程算法。
7.如權(quán)利要求1所述的緩沖存儲器管理方法,其特征在于: 所述緩沖存儲器管理方法另包括: 在由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段后,更新所述緩沖存儲器狀態(tài)數(shù)組的后端指針以使其指向所述緩沖存儲器狀態(tài)數(shù)組上的最新目標,或是在將所述數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存后,更新所述后端指標以使其指向所述緩沖存儲器狀態(tài)數(shù)組上的最新來源 '及 在由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段前,或是在將所述數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存后,根據(jù)所述后端指針的現(xiàn)行目標來更新所述緩沖存儲器狀態(tài)數(shù)組的前端指針;其中所述前端指針所指向的目標是用來指出由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段的起始地址或?qū)⑺鰯?shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存的起始地址。
8.一種緩沖存儲器管理方法,其特征在于,包括: 當用來參照物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,由主機端接收數(shù)據(jù)至所述物理內(nèi)存區(qū)段,其中所述物理內(nèi)存區(qū)段被緩沖存儲器控制器內(nèi)緩沖存儲器所包括;及 當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,將數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至閃存; 其中所述緩沖存儲器存取狀態(tài)區(qū)為組成緩沖存儲器狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。
9.如權(quán)利要求8所述的緩沖存儲器管理方法,其特征在于: 所述離散式存取狀態(tài)數(shù)組存在于所述緩沖存儲器,并被指定給所述緩沖存儲器控制器包括的主單元。
10.如權(quán)利要求9所述的緩沖存儲器管理方法,其特征在于: 所述主單元為所述緩沖存儲器控制器包括的接口、微處理器、或后端處理單元。
11.如權(quán)利要求9所述的緩沖存儲器管理方法,其特征在于: 所述緩沖存儲器管理方法另包括: 由所述緩沖存儲器控制器所包括的多個候選主單元中決定所述主單元,以使用防饑饉算法來存取所述緩沖存儲器。
12.如權(quán)利要求11所述的緩沖存儲器管理方法,其特征在于: 所述防饑饉算法為循 環(huán)式排程算法。
13.如權(quán)利要求8所述的緩沖存儲器管理方法,其特征在于: 所述緩沖存儲器管理方法另包括: 在由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段后,更新所述緩沖存儲器狀態(tài)數(shù)組的后端指針以使其指向所述緩沖存儲器狀態(tài)數(shù)組上的最新目標,或是在將所述數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存后,更新所述后端指標以使其指向所述緩沖存儲器狀態(tài)數(shù)組上的最新來源 '及 在由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段前,或是在將所述數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存后,根據(jù)所述后端指針的現(xiàn)行目標來更新所述緩沖存儲器狀態(tài)數(shù)組的前端指針; 其中所述前端指針所指向的目標用來指出由所述主機端接收所述數(shù)據(jù)至所述物理內(nèi)存區(qū)段的起始地址或?qū)⑺鰯?shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至所述閃存的起始地址。
14.一種緩沖存儲器管理方法,其特征在于,包括: 當對應于第一緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示其所參照的第一物理內(nèi)存區(qū)段目前為數(shù)據(jù)移動指令所指定的數(shù)據(jù)來源,且當對應于第二緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示其所參照的第二物理內(nèi)存區(qū)段目前為所述數(shù)據(jù)移動指令所指定的現(xiàn)行目標時,將數(shù)據(jù)由所述第一物理內(nèi)存區(qū)段移動至所述第二物理內(nèi)存區(qū)段; 其中緩沖存儲器包括所述第一物理內(nèi)存區(qū)段與所述第二物理內(nèi)存區(qū)段; 其中所述第一緩沖存儲器存取狀態(tài)區(qū)與所述第二緩沖存儲器存取狀態(tài)區(qū)皆為組成緩沖存儲器狀態(tài)數(shù)組的單元; 其中所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段;及 其中所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。
15.如權(quán)利要求14所述的緩沖存儲器管理方法,其特征在于:所述緩沖存儲器管理方法另包括: 在執(zhí)行所述數(shù)據(jù)移動指令后,更新所述緩沖存儲器狀態(tài)數(shù)組的后端指針,以使其指向所述數(shù)據(jù)移動指令的最新目標;及 在執(zhí)行所述數(shù)據(jù)移動指令前,根據(jù)所述后端指針的現(xiàn)行目標,更新所述緩沖存儲器狀態(tài)數(shù)組的前端指針; 其中所述前端指針的目標用來指出接收所述數(shù)據(jù)的起始地址或輸出所述數(shù)據(jù)的起始地址。
16.一種緩沖存儲器管理方法,其特征在于,包括: 當離散式存取狀態(tài)數(shù)組的第一狀態(tài)區(qū)允許物理內(nèi)存區(qū)段被存取,且當區(qū)塊式存取狀態(tài)數(shù)組的第三狀態(tài)區(qū)允許所述物理內(nèi)存被存取時,根據(jù)數(shù)據(jù)移動指令,存取所述物理內(nèi)存區(qū)段所暫存的數(shù)據(jù); 其中所述物理內(nèi)存區(qū)段被包括于緩沖存儲器,所述第一狀態(tài)區(qū)與所述第三狀態(tài)區(qū)皆對應于緩沖存儲器狀態(tài)數(shù)組包括的第二狀態(tài)區(qū),且所述第二狀態(tài)區(qū)用來參照所述物理內(nèi)存區(qū)段; 其中所述第二狀態(tài)區(qū)為緩沖存儲器存取狀態(tài)區(qū),且所述緩沖存儲器存取狀態(tài)區(qū)為組成所述緩沖存儲器狀態(tài)數(shù)組的單元; 其中所述第三狀態(tài)區(qū)為區(qū)塊式存取狀態(tài)區(qū),所述區(qū)塊式存取狀態(tài)區(qū)為組成區(qū)塊式存取狀態(tài)數(shù)組的單元,且所述區(qū)塊式存取狀態(tài)數(shù)組用來同時存取多個連續(xù)緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段;及 其中所述第一狀態(tài)區(qū)為離散式存取狀態(tài)區(qū),所述離散式存取狀態(tài)區(qū)為組成離散式存取狀態(tài)數(shù)組的單元,且所述離散式存取狀態(tài)數(shù)組用來存取多個離散分布的緩沖存儲器存取狀態(tài)區(qū)所參照的多個物理內(nèi)存區(qū)段。
17.如權(quán)利要求16所述的緩沖存儲器管理方法,其特征在于:根據(jù)所述數(shù)據(jù)移動指令,存取所述物理內(nèi)存區(qū)段所暫存的所述數(shù)據(jù)包括: 緩沖存儲器控制器將所述數(shù)據(jù)由所述緩沖存儲器傳輸至主機端或閃存。
18.如權(quán)利要求16所述的緩沖存儲器管理方法,其特征在于: 所述緩沖存儲器管理方法另包括: 在執(zhí)行所述數(shù)據(jù)移動指令后,更新所述緩沖存儲器狀態(tài)數(shù)組的后端指針,以使其指向所述數(shù)據(jù)移動指令的最新目標;及 在執(zhí)行所述數(shù)據(jù)移動指令前,根據(jù)所述后端指針的現(xiàn)行目標,更新所述緩沖存儲器狀態(tài)數(shù)組的前端指針; 其中所述前端指針的目標用來指出執(zhí)行所述數(shù)據(jù)移動指令的起始地址。
19.一種緩沖存儲器控制器,其特征在于,包括: 緩沖存儲器,包括多個物理內(nèi)存區(qū)段、緩沖存儲器狀態(tài)數(shù)組、區(qū)塊式存取狀態(tài)數(shù)組、與離散式存取狀態(tài)數(shù)組,所述緩沖存儲器狀態(tài)數(shù)組包括參照所述多個物理內(nèi)存區(qū)段的多個緩沖存儲器存取狀態(tài)區(qū),所述區(qū)塊式存取狀態(tài)數(shù)組包括對應于所述多個緩沖存儲器存取狀態(tài)區(qū)的多個區(qū)塊式存取狀態(tài)區(qū),且所述離散式存取狀態(tài)數(shù)組包括對應于所述多個緩沖存儲器存取狀態(tài)區(qū)的多個離散式存取狀態(tài)區(qū); 至少一主單元,用來存取所述緩沖存儲器;及 仲裁模塊,用來在所述緩沖存儲器執(zhí)行指令時,使用防饑饉算法,以由所述至少一主單元中選出主單元。
20.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 當用來參照所述多個物理內(nèi)存區(qū)段中物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,所述緩沖存儲器控制器將第一數(shù)據(jù)由主機端接收至所述物理內(nèi)存區(qū)段;及 當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述區(qū)塊式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,所述緩沖存儲器控制器將第二數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸出至閃存。
21.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 當用來參照所述多個物理內(nèi)存區(qū)段中物理內(nèi)存區(qū)段的緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前可被修改,且當對應于所述緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)接收目標時,所述緩沖存儲器控制器將第一數(shù)據(jù)由主機端接收至所述物理內(nèi)存區(qū)段;及 當所述緩沖存儲器存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前不可被修改,且當所述離散式存取狀態(tài)區(qū)指示所述物理內(nèi)存區(qū)段目前為數(shù)據(jù)輸出源時,緩沖存儲器控制器將第二數(shù)據(jù)由所述物理內(nèi)存區(qū)段輸 出至閃存。
22.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 當對應于第一緩沖存儲器存取狀態(tài)區(qū)的區(qū)塊式存取狀態(tài)區(qū)指示其所參照的第一物理內(nèi)存區(qū)段目前為數(shù)據(jù)移動指令所指定的數(shù)據(jù)來源,且當對應于第二緩沖存儲器存取狀態(tài)區(qū)的離散式存取狀態(tài)區(qū)指示其所參照的第二物理內(nèi)存區(qū)段目前為所述數(shù)據(jù)移動指令所指定的現(xiàn)行目標時,所述緩沖存儲器控制器將數(shù)據(jù)由所述第一物理內(nèi)存區(qū)段移動至所述第二物理內(nèi)存區(qū)段。
23.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 當離散式存取狀態(tài)區(qū)允許物理內(nèi)存區(qū)段根據(jù)數(shù)據(jù)移動指令而被寫入時,所述緩沖存儲器控制器將數(shù)據(jù)由主機端寫入所述物理內(nèi)存區(qū)段,其中所述離散式存取狀態(tài)區(qū)對應于緩沖存儲器存取狀態(tài)區(qū),且所述緩沖存儲器存取狀態(tài)區(qū)用來參照所述物理內(nèi)存區(qū)段;及當區(qū)塊式存取狀態(tài)區(qū)允許所述物理內(nèi)存區(qū)段根據(jù)所述數(shù)據(jù)移動指令被讀取時,所述緩沖存儲器控制器將所述數(shù)據(jù)由所述物理內(nèi)存區(qū)段讀入閃存,其中所述區(qū)塊式存取狀態(tài)區(qū)對應于所述緩沖存儲器存取狀態(tài)區(qū)。
24.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 所述至少一主單元為所述緩沖存儲器控制器包括的接口、微處理器、或后端處理單元。
25.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于: 所述防饑饉算法為循環(huán)式排程算法。
26.如權(quán)利要求19所述的緩沖存儲器控制器,其特征在于:所述指令為讀取 指令、寫入指令、或數(shù)據(jù)移動指令。
全文摘要
本發(fā)明公開了一種緩沖存儲器管理方法與相關(guān)緩沖存儲器控制器。通過在緩沖存儲器控制器中指定從屬單元與至少一主單元,使得至少一主單元的頻率可與從屬單元的頻率整合。緩沖存儲器存取狀態(tài)數(shù)組、范圍存取狀態(tài)數(shù)組、及/或隊列存取狀態(tài)數(shù)組被分配于緩沖存儲器并指定給從屬單元,使得緩沖存儲器控制器的操作可以區(qū)塊式存取或離散式存取的方式進行。與從屬單元共同運作的主單元可由上述至少一主單元中,根據(jù)防饑饉算法所決定。因此,本發(fā)明可用來解決傳統(tǒng)緩沖存儲器控制器中各組件的異步頻率引起的問題。
文檔編號G06F12/08GK103198023SQ20121014999
公開日2013年7月10日 申請日期2012年5月15日 優(yōu)先權(quán)日2012年1月9日
發(fā)明者詹立翔, 劉伯彥 申請人:擎泰科技股份有限公司