本發明涉及存儲器技術領域,特別是涉及存儲裝置、電子設備及存儲裝置管理方法。
背景技術:
在USB或PCIE等的數據傳輸總線中,一個完整的數據包由兩個部分組成,一部分是數據包的包頭,包含數據包的地址,傳輸序號等控制信息;另一部分就是數據負載;該USB3.0數據包包含12個字節的數據包頭,和一個長度可變的數據負載(0到1024字節+4字節CRC32)
對于所述數據包的存儲,可分為兩部分存儲器存儲,其中第一部分用于存儲數據包頭部分,第二部分用于存儲對應的數據負載部分;目前的數據寫入方式為:當系統復位,各個存儲器的讀寫地址復位到0,這樣當存儲一個完整的數據包時,數據包頭存放在該第一部分的存儲器0中,數據包負載部分存儲在該第二部分的存儲器0中,當一個完整的數據負載存儲完成時,兩部分的寫地址分別加一,都指向下一個存儲器,即當下一次存儲時,下一個數據包的數據包頭部分將存在第一部分的存儲器1中,數據負載部分存儲在第二部分的存儲器1中,依次類推,數據存儲一一對應。
此種方法的缺點是需要額外的控制邏輯,由于數據包負載的長度是不定的,每一個數據包長度都可能不一樣,那么在存儲數據包負載部分的時候,需要明確知道該數據包的長度,才能知道什么時候完成數據負載部分的寫入動作,從而確保在正確時間將存儲器寫地址加一,指向下一個存儲器,否則就容易出現錯誤。
技術實現要素:
鑒于以上所述現有技術的缺點,本發明的目的在于提供存儲裝置、電子設備及存儲裝置管理方法,用于解決現有技術中需要額外控制邏輯判斷數據包負載長度的問題。
為實現上述目的及其他相關目的,本發明提供一種存儲裝置,包括:至少一第一級存儲單元,包括:按地址順序排列的多個第一存儲器;各第一存儲器依地址順序進行循環讀或寫;至少一第二級存儲單元,包括:按地址順序排列且數量相同于第一存儲器的第二存儲器;各第二存儲器依地址順序進行循環讀或寫;其中,各所述第一存儲器與第二存儲器間有一一對應的地址關聯關系,相關聯的第一存儲器和第二存儲器分別用于存儲一數據包的數據包頭部分及數據負載部分;在所述第一級存儲單元及第二級存儲單元進行初始化的情況下,所述第一級存儲單元內指向指定地址的第一存儲器,而第二級存儲單元內指向與該指定地址的第一存儲器地址關聯的第二存儲器的前一個第二存儲器;第一存儲單元中的一第一存儲器完成數據包頭讀或寫動作后指向下一個第一存儲器的地址,第二存儲單元隨所述數據包頭讀或寫動作的完成而指向下一個第二存儲器的地址進行對應數據負載部分的讀或寫動作。
于本發明的一實施例中,所述指定地址為第一級存儲單元中第一個第一存儲器的地址,與其地址關聯的第二存儲器為第二級存儲單元中的第一個第二存儲器。
于本發明的一實施例中,所述第一級存儲單元中的第一存儲器數量、及所述第一級存儲單元中的第二存儲器數量均為4個。
于本發明的一實施例中,所述第一級存儲單元及第二級存儲單元按先入先出的方式工作。
為實現上述目的及其他相關目的,本發明提供一種電子設備,包括:所述的存儲裝置。
于本發明的一實施例中,所述電子設備按USB3.X、或PCI協議來傳輸數據,X包括:0或1;其中,所述存儲裝置用于緩存所述傳輸的數據。
為實現上述目的及其他相關目的,本發明提供一種存儲裝置管理方法,應用于一存儲裝置,所述存儲裝置包括:至少一第一級存儲單元和第二級存儲單元;其中,所述第一級存儲單元包括:按地址順序排列的多個第一存儲器;所述第二級存儲單元,包括:按地址順序排列且數量相同于第一存儲器的第二存儲器;所述方法包括:初始化所述第一級存儲單元及第二級存儲單元,令所述第一級存儲單元內指向指定地址的第一存儲器,而第二級存儲單元內指向與該指定地址的第一存儲器地址關聯的第二存儲器的前一個第二存儲器;在第一存儲單元中的一第一存儲器進行數據包頭讀或寫動作的完成,令第二存儲單元隨之指向下一個第二存儲器的地址以進行對應數據負載部分的讀或寫動作;其中,所述第一級存儲單元中的各第一存儲器、以及第二級存儲單元中的各第二存儲器是依地址順序進行循環讀或寫的。
于本發明的一實施例中,所述指定地址為第一級存儲單元中第一個第一存儲器的地址,與其地址關聯的第二存儲器為第二級存儲單元中的第一個第二存儲器。
于本發明的一實施例中,所述第一級存儲單元中的第一存儲器數量、及所述第一級存儲單元中的第二存儲器數量均為4個。
于本發明的一實施例中,所述第一級存儲單元及第二級存儲單元按先入先出的方式工作。
如上所述,本發明的存儲裝置、電子設備及存儲裝置管理方法,存儲裝置包括:至少一第一級存儲單元和第二存儲單元,第一級存儲單元包括用于存儲數據包的包頭部分的多個第一存儲器,第二存儲單元包括用于存儲數據包的數據負載部分的多個第二存儲器,所述第一存儲單元及第二存儲單元是依地址順序進行循環讀寫的,通過在初始化時設計將第二存儲單元中所指向的地址為關聯于第一存儲單元中指定地址的第一存儲器的第二存儲器的前一個,并利用判斷數據包頭是否讀或寫完畢來令所述第二存儲單元所指向地址向前移動一個而恰好將一個數據包的兩部分分別存儲于地址關聯的一對第一存儲器和第二存儲器中,由于數據包頭的長度是固定的,則不必如現有技術般需額外邏輯控制來判斷數據包長度的問題,且保證了同一數據包中兩部分數據對應地寫或讀。
附圖說明
圖1顯示為本發明于一實施例中的存儲裝置的結構示意圖。
圖2a至2c顯示為本發明于一實施例中的存儲裝置的數據包寫入的過程示意圖。
元件標號說明
100 存儲裝置
101 第一存儲單元
102 第二存儲單元
具體實施方式
以下通過特定的具體實例說明本發明的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地了解本發明的其他優點與功效。本發明還可以通過另外不同的具體實施方式加以實施或應用,本說明書中的各項細節也可以基于不同觀點與應用,在沒有背離本發明的精神下進行各種修飾或改變。需說明的是,在不沖突的情況下,以下實施例及實施例中的特征可以相互組合。
需要說明的是,以下實施例中所提供的圖示僅以示意方式說明本發明的基本構想,遂圖式中僅顯示與本發明中有關的組件而非按照實際實施時的組件數目、形狀及尺寸繪制,其實際實施時各組件的型態、數量及比例可為一種隨意的改變,且其組件布局型態也可能更為復雜。
本發明的技術方案,應用于存儲器數的技術領域,例如,通過電子設備的存儲器(例如ROM或RAM)或者控制芯片(例如MCU、SoC、MCU等)內的寄存器來進行對需傳輸數據的讀寫或緩存。
如圖1所示,本發明提供一種存儲裝置100,包括:至少一第一級存儲單元101及至少一第二級存儲單元102。
所述第一級存儲單元101包括:按地址順序排列的多個第一存儲器;各第一存儲器依地址順序進行循環讀或寫,所述第一級存儲單元101中第一存儲器的數量可為例如4個,即第一存儲器0~第一存儲器3,當按照第一存儲器0至第一存儲器3的順序讀/寫完之后,即指向第一存儲器0繼續讀/寫,各所述第一存儲器用于存儲數據包的包頭部分,所述第一級存儲單元101的數量可按照實際需求加以變化。
所述第二級存儲單元102的數量可與所述第一存儲單元一一對應,亦可不對應,每個所述第二級存儲單元102包括:按地址順序排列且數量相同于第一存儲器的第二存儲器;各第二存儲器依地址順序進行循環讀或寫。于一實施例中,若第一存儲器有4個,則第二存儲器亦有對應數量的4個,可表示為第二存儲器0~第二存儲器3。
于本發明的一實施例中,各所述第一存儲器與第二存儲器間有一一對應的地址關聯關系,也就是說,一個第一存儲器關聯于一個第二存儲器,相關聯的第一存儲器和第二存儲器分別用于存儲一數據包的數據包頭部分及數據負載部分。
在每次初始化所述存儲裝置100時,對所述第一級存儲單元101及第二級存儲單元102進行初始化,令所述第一級存儲單元101內指向指定地址的第一存儲器,而第二級存儲單元102內指向與該指定地址的第一存儲器地址關聯的第二存儲器的前一個第二存儲器。于一實施例中,在初始化(或稱復位)的情況下,所述指定地址例如為第一級存儲單元101中第的第一個第一存儲器,對應的,第二存儲單元內指向其最后一個第二存儲器,并且,第一存儲單元中的一第一存儲器完成數據包頭讀或寫動作后指向下一個第一存儲器的地址,第二存儲單元隨所述數據包頭讀或寫動作的完成而指向下一個第二存儲器的地址進行對應數據負載部分的讀或寫動作,也就是說,復位后若開始寫數據包,則可利用第一個第一存儲器和第一個第二存儲器完成該數據包的數據包頭部分和數據負載部分的存儲,之后以此類推,直至所有的數據包的兩個部分關聯存儲于各個第一存儲器及第二存儲器中。
舉例來說,如圖2a所示,第一級存儲單元101包括:第一存儲器0、第一存儲器1、第一存儲器2及第一存儲器3;第二級存儲單元102包括:第二存儲器0、第二存儲器1、第二存儲器2及第二存儲器3;且進行初始化的情況下,第一存儲單元中指向第一存儲器0的地址,第二存儲單元中指向第二存儲器3的地址。
如圖2b所示,當數據包1寫入時,該數據包1的數據包頭部分先寫入第一存儲器0,當寫入完成時(由于包頭部分長度固定,可通過固定的控制邏輯對數據寫入或讀出第一存儲器的數據來判斷包頭部分寫或讀動作的完成),從指向第一存儲器0的地址移動至指向第一存儲器1,并且,第二級存儲單元102中從指向第二存儲器3的地址前進一步而指向第二存儲器0來寫入數據包1的數據負載部分,進而如圖2c所示,實現數據包1在地址關聯的第一存儲器0和第二存儲器0中的存儲;可以此類推之后數據包的寫入,例如寫入數據包頭到第一存儲器3之后回到指向第一存儲器0,對應的,從指向第二存儲器2的地址移動至指向第二存儲器3。
圖2a~圖2c實施例中展示的是數據包寫入的過程,同理,可以此類推數據包讀出的過程,例如先從第一存儲器0讀取數據包1的數據包頭部分,讀取完畢后,移動指向第一存儲器1的地址;第二級存儲單元102從指向第二存儲器3移動至第二存儲器0的地址,讀取第二存儲器0中的數據包1的數據負載部分,完成數據包1的讀取。
并且,寫動作和讀動作所使用的第一存儲器和第二存儲器的地址可以是不同的,例如寫地址和讀地址亦可,均可采用上述的控制邏輯完成數據包的寫或讀。
同時,從上述內容可知,所述第一級存儲單元101中的各存儲器及第二級存儲單元102中的各存儲器按先入先出(FIFO)的方式工作,作為先入先出緩存使用。
對應的,本發明提供一種具有所述的存儲裝置100電子設備,該電子設備可具有所述電子設備遵循USB3.X(例如USB3.0、3.1等,亦可根據相關技術的發展進步加以擴展)、或PCI協議的接口,優選的,其可利用所述存儲裝置100來緩存需傳輸的數據。
有關上述實施例中存儲器讀/寫控制邏輯,其實質是對于存儲器的地址管理,具體的,該控制邏輯優選通過硬件電路實現(當然,在其它實施例中亦可通過軟件程序控制實現),對應其原理,本發明能提供一種存儲裝置100管理方法,應用于上述的存儲裝置100,所述方法包括:初始化所述第一級存儲單元101及第二級存儲單元102,令所述第一級存儲單元101內指向指定地址的第一存儲器,而第二級存儲單元102內指向與該指定地址的第一存儲器地址關聯的第二存儲器的前一個第二存儲器;在第一存儲單元中的一第一存儲器進行數據包頭讀或寫動作的完成,令第二存儲單元隨之指向下一個第二存儲器的地址以進行對應數據負載部分的讀或寫動作;其中,所述第一級存儲單元101中的各第一存儲器、以及第二級存儲單元102中的各第二存儲器是依地址順序進行循環讀或寫的。
于本發明的一實施例中,所述指定地址為第一級存儲單元101中第一個第一存儲器的地址,與其地址關聯的第二存儲器為第二級存儲單元102中的第一個第二存儲器。
于本發明的一實施例中,所述第一級存儲單元101中的第一存儲器數量、及所述第一級存儲單元101中的第二存儲器數量均為4個。
于本發明的一實施例中,所述第一級存儲單元101及第二級存儲單元102按先入先出的方式工作。
綜上所述,本發明的存儲裝置、電子設備及存儲裝置管理方法,存儲裝置包括:至少一第一級存儲單元和第二存儲單元,第一級存儲單元包括用于存儲數據包的包頭部分的多個第一存儲器,第二存儲單元包括用于存儲數據包的數據負載部分的多個第二存儲器,所述第一存儲單元及第二存儲單元是依地址順序進行循環讀寫的,通過在初始化時設計將第二存儲單元中所指向的地址為關聯于第一存儲單元中指定地址的第一存儲器的第二存儲器的前一個,并利用判斷數據包頭是否讀或寫完畢來令所述第二存儲單元所指向地址向前移動一個而恰好將一個數據包的兩部分分別存儲于地址關聯的一對第一存儲器和第二存儲器中,由于數據包頭的長度是固定的,則不必如現有技術般需額外邏輯控制來判斷數據包長度的問題,且保證了同一數據包中兩部分數據對應地寫或讀。
本發明有效克服了現有技術中的種種缺點而具高度產業利用價值。
上述實施例僅例示性說明本發明的原理及其功效,而非用于限制本發明。任何熟悉此技術的人士皆可在不違背本發明的精神及范疇下,對上述實施例進行修飾或改變。因此,舉凡所屬技術領域中具有通常知識者在未脫離本發明所揭示的精神與技術思想下所完成的一切等效修飾或改變,仍應由本發明的權利要求所涵蓋。