存取存儲器模塊/增加寫入端口的方法以及存儲器控制器的制造方法
【專利摘要】本發明提供一種存取存儲器模塊/增加寫入端口的方法以及存儲器控制器。存儲器控制器耦接于多端口存儲器模塊,包含至少第一存儲庫、第二存儲庫以及參考存儲庫;當第一數據被要求寫入至第一存儲庫時,存儲器控制器讀取參考存儲庫中的參考數據,并將第一數據連同參考數據一并進行編碼以產生第一編碼后數據,且將第一編碼后數據寫入至第一存儲庫中;以及當第二數據被要求寫入至第二存儲庫時,存儲器控制器自參考存儲庫中讀取相同位置的參考數據,并將第二數據連同參考數據一并進行編碼以產生第二編碼后數據,且將第二編碼后數據寫入至第二存儲庫中。本發明的存取存儲器模塊/增加寫入端口的方法以及存儲器控制器可以增加寫入端口,節約成本。
【專利說明】
存取存儲器模塊/増加寫入端口的方法以及存儲器控制器
技術領域
[0001]本發明有關于存儲器,尤指一種存儲器模塊的存取方法及相關的存儲器控制器。
【背景技術】
[0002]—般來說,一個多端口存儲器模塊會包含多個用來儲存數據的存儲庫,且每一個存儲庫都可以獨立地被存取。每一個存儲庫也支持一或多個讀取命令以及寫入命令,舉例來說,假設一個存儲庫為具有兩個讀取端口以及一個寫入端口的二讀一寫存儲庫(2R1Wbank),則表示該存儲庫可以同時執行兩個讀取命令以及一個寫入命令。然而,當存儲器接收到兩個或更多個寫入命令,以要求將數據寫入到單一個存儲庫時,則會有存儲庫沖突(bank conflict)的情形發生,而造成該多個寫入命令需要被循序地執行,進而造成存儲器存取延遲以及更糟的存取效率。為了解決這個問題,傳統的多端口存儲器模塊會使用定制的電路來使能多個存取端口,或是指派多個存儲器單元,例如對應到主存儲庫的輔助存儲庫或是備份存儲庫,以支持多個同時存取的操作。然而,這些方法會增加設計制造的成本,且/或增加芯片面積以及功率消耗,因此,如何提供一種存儲器存取方法以延伸增加存儲器模塊的寫入端口是一個重要的課題。
【發明內容】
[0003]有鑒于此,本發明特提供以下技術方案:
[0004]本發明實施例提供一種存取多端口存儲器模塊的方法,其中多端口存儲器模塊包含了多個存儲庫,多個存儲庫包含至少第一存儲庫、第二存儲庫以及參考存儲庫,且存取多端口存儲器模塊的方法包含:當第一數據被要求寫入至第一存儲庫時,讀取參考存儲庫中的參考數據,并將第一數據連同參考數據一并進行編碼以產生第一編碼后數據,且將第一編碼后數據寫入至第一存儲庫中;以及當第二數據被要求寫入至第二存儲庫時,自參考存儲庫中讀取相同位置的參考數據,并將第二數據連同參考數據一并進行編碼以產生第二編碼后數據,且將第二編碼后數據寫入至第二存儲庫中。
[0005]本發明實施例提供一種存儲器控制器,耦接于多端口存儲器模塊,其中多端口存儲器模塊包含了多個存儲庫,多個存儲庫包含至少第一存儲庫、第二存儲庫以及參考存儲庫;當一第一數據被要求寫入至第一存儲庫時,存儲器控制器讀取參考存儲庫中的參考數據,并將第一數據連同參考數據一并進行編碼以產生第一編碼后數據,且將第一編碼后數據寫入至第一存儲庫中;以及當第二數據被要求寫入至第二存儲庫時,存儲器控制器自參考存儲庫中讀取相同位置的參考數據,并將第二數據連同參考數據一并進行編碼以產生第二編碼后數據,且將第二編碼后數據寫入至第二存儲庫中。
[0006]本發明實施例又提供一種增加存儲器模塊的寫入端口的方法,包含:在存儲器模塊中提供第一存儲庫以及參考存儲庫;當第一數據以及第二數據同時被要求寫入至第一存儲庫時,但是第二數據不被允許同時被寫入第一存儲庫以更新/覆寫舊數據時,讀取參考存儲庫中的第一參考數據,將第一數據連同第一參考數據一并進行編碼以產生第一編碼后數據,且將第一編碼后數據寫入至第一存儲庫中;以及讀取第一存儲庫中的舊數據,將第二數據連同舊數據一并進行編碼以產生第二編碼后數據,并將第二編碼后數據寫入至參考存儲庫中以更新/覆寫對應于I日數據的第二參考數據。
[0007]本發明的存取存儲器模塊/增加寫入端口的方法以及存儲器控制器可以增加存儲器模塊的寫入端口,節約成本。
【附圖說明】
[0008]圖1為根據本發明實施例的存儲器模塊的示意圖。
[0009]圖2A為根據本發明實施例的存取存儲器模塊的方法的示意圖。
[0010]圖2B為根據本發明實施例的讀取儲存在圖2A所示的存儲庫中的數據的示意圖。[0011 ]圖3A為根據本發明另一實施例的存取存儲器模塊的方法的示意圖。
[0012]圖3B為根據本發明另一實施例的讀取儲存在圖3A所示的存儲庫中的數據的示意圖。
[0013]圖4為當兩筆數據D2、D3被要求寫入到存儲庫時,根據本發明一實施例的存取存儲器模塊的方法的示意圖。
[0014]圖5為當兩筆數據D2、D3被要求寫入到存儲庫時,存儲庫210、220以及參考存儲庫230的不意圖ο
[0015]圖6為根據本發明實施例存取存儲器模塊的流程圖。
[0016]圖7為根據本發明實施例的讀取儲存在圖4、5所示的存儲庫210、220中的數據的示意圖。
[0017]圖8為當兩筆數據D4、D5被要求寫入到相同的存儲庫時,存儲庫及參考存儲庫的操作示意圖。
[0018]圖9為根據本發明另一實施例的存取存儲器模塊的方法的示意圖。
[0019]圖10為根據本發明另一實施例的存取存儲器模塊的方法的示意圖。
[0020]圖11為根據本發明另一實施例的存取存儲器模塊的方法的示意圖。
[0021]圖12為根據本發明另一實施例的存取存儲器模塊的方法的示意圖。
[0022]圖13為N讀一寫存儲庫以及兩個M讀一寫存儲庫形成(N-2)讀二寫特定存儲器模塊的示意圖。
[0023]圖14為N讀二寫存儲庫以及兩個M讀二寫存儲庫形成(N-4)讀四寫特定存儲器模塊的示意圖。
[0024]圖15為根據本發明另一實施例的寫入端口延伸方法的示意圖。
【具體實施方式】
[0025]在說明書及權利要求書當中使用了某些詞匯來指稱特定的組件。所屬領域中的技術人員應可理解,制造商可能會用不同的名詞來稱呼同樣的組件。本說明書及權利要求書并不以名稱的差異來作為區分組件的方式,而是以組件在功能上的差異來作為區分的基準。在通篇說明書及權利要求書當中所提及的“包含”是開放式的用語,故應解釋成“包含但不限定于”。另外,“耦接”一詞在此包含任何直接及間接的電氣連接手段。因此,若文中描述第一裝置耦接于第二裝置,則代表第一裝置可直接電氣連接于第二裝置,或通過其它裝置或連接手段間接地電氣連接至第二裝置。
[0026]請參考圖1,其為根據本發明一個實施例的存儲器控制器110的示意圖。如圖1所示,存儲器控制器110耦接于存儲器模塊120,且另通過總線101來耦接到需要存取存儲器模塊120的元件,例如中央處理器102以及圖形處理器104。此外,存儲器控制器110包含了地址解碼器112、處理電路114、寫入/讀取端口 116、控制邏輯118以及仲裁器119;且存儲器模塊120包含寫入/讀取控制器122以及多個存儲庫126。在本實施例中,存儲器模塊120為支持兩個或更多個讀取/寫入操作的多端口存儲器模塊,且每一個存儲庫126具有獨立的讀取/寫入端口以支持多個存取操作,且每一個存儲庫126允許被獨立地存取。此外,存儲器模塊120可以是多端口的靜態隨機存取存儲器(mult1-port static random access memory(SRAM))模塊或是多端口的動態隨機存取存儲器(dynamic random access memory (DRAM))模塊,但這并非是本發明的限制條件。
[0027]關于存儲器控制器110中元件的操作,地址解碼器112用來對來自中央處理器102或是圖形處理器104或是其他需要存取存儲器模塊120中數據的接收信號進行解碼,以產生一或多個讀取命令及/或一或多個寫入命令;處理電路114用來管理及處理讀取/寫入命令;寫入/讀取端口 116用來暫時儲存需要寫入到存儲器模塊120的數據,或是暫時儲存自存儲器模塊120讀取的數據;控制邏輯118用來根據寫入命令來對數據進行編碼以產生編碼后數據,且也用來根據讀取命令以對自存儲器模塊120中所讀取的編碼后數據進行解碼;以及仲裁器119用來對寫入命令及讀取命令進行排程。
[0028]關于存儲器模塊120中元件的操作,寫入/讀取控制器122可包含行解碼器(rowdecoder)以及列解碼器(column decoder),且用來對來自存儲器控制器110的寫入/讀取命令進行解碼,以存取存儲庫126中對應于寫入/讀取命令的地址上的比特位值,且每一個存儲庫126由一或多個芯片來實施以儲存數據。
[0029]本發明的實施例中提供了一種存取存儲器模塊120的方法,且該方法可以在存儲庫126僅具有較少寫入端口的情形下允許存儲器模塊120支持更多個寫入端口,亦即增加寫入端口。舉例來說,每一個存儲庫126僅具有一個寫入端口,但是存儲器模塊120卻可以總是支持多個寫入命令。本發明實施例的操作細節在以下會做具體的描述。
[0030]請參考圖2A,其為根據本發明一實施例的存取存儲器模塊120的方法的示意圖。如圖2A所示,存儲器模塊120包含了兩個存儲庫210、220以及參考存儲庫230,其中存儲庫210、220為一讀一寫(1R1W)存儲庫,且參考存儲庫230為一二讀一寫(2R1W)存儲庫。如圖2A所示,當存儲器模塊120接收到兩個寫入命令,且兩筆數據D0、D1分別被要求寫入至存儲庫210、220中時,存儲器控制器110會自參考存儲庫230中的地址AO讀取一參考數據RO,且存儲器控制器110對數據DO及參考數據RO—并進行編碼以產生編碼后數據D0’,且編碼后數據D0’接著被寫入到存儲庫210中具有地址AO的單元中;同時,存儲器控制器110會自參考存儲庫230中的地址AO讀取相同位置的參考數據R0,且存儲器控制器110對數據Dl及參考數據RO—并進行編碼以產生編碼后數據D1’,且編碼后數據D1’接著被寫入到存儲庫220中具有地址AO的單元中。此外,在本實施例中,每一筆數據00、01、00’、01’、如都是一個比特位,且編碼操作為一異或(exclusive-or,X0R)運算,亦即DO ’ =DO ? RO,且DI ’ =Dl ? RO,其中“ ? ” 是一個異或算子。
[0031]圖2A所示的實施例是寫入命令沒有發生存儲庫沖突的一個例子,所以數據D0、D1在編碼結束之后可以同時且直接地分別寫入到存儲庫210、220中。
[0032]請參考圖2B,其為根據本發明一個實施例的讀取儲存在圖2A所示的存儲庫中的數據的示意圖。如圖2B所示,存儲器模塊120接收到兩個讀取命令,且要求自存儲庫210、220中分別讀取數據D0、D1。存儲器控制器110分別自存儲庫210以及參考存儲庫230中讀取編碼后數據DO ’以及參考數據RO,且存儲器控制器110使用參考數據RO來對編碼后數據DO ’進行解碼以產生數據D0;同時,存儲器控制器110分別自存儲庫220以及參考存儲庫230中讀取編碼后數據D1’以及參考數據R0,且存儲器控制器110使用參考數據RO來對編碼后數據D1’進行解碼以產生數據D1。在本實施例中,解碼操作同樣是異或運算,亦即D0 = D0’ eR0,且Dl =Dl, ? RO0
[0033]請參考圖3A,其為根據本發明另一實施例的存取存儲器模塊120的方法的示意圖。如圖3A所示,存儲器模塊120包含了兩個存儲庫310、320以及一參考存儲庫330,其中存儲庫310、320為一讀一寫(1R1W)存儲庫,且參考存儲庫330為二讀一寫(2R1W)存儲庫。如圖3A所示,當存儲器模塊120接收到兩個寫入命令,且兩筆數據D0、D1分別被要求寫入至存儲庫310、320中時,存儲器控制器110會自參考存儲庫330中的地址AO讀取一參考數據RO,且存儲器控制器310對數據DO及參考數據RO—并進行編碼以產生編碼后數據D0’,且編碼后數據D0’接著被寫入到存儲庫310中具有地址AO的單元中;同時,存儲器控制器110會自參考存儲庫330中的地址Al讀取參考數據R1,且存儲器控制器110對數據Dl及參考數據Rl—并進行編碼以產生編碼后數據D1’,且編碼后數據D1’接著被寫入到存儲庫320中具有地址Al的單元中。此外,在本實施例中,每一筆數據00、01、00’、01’、如、1?1都是一個比特位,且編碼操作為異或運算,亦即00’=00?1?0,且01’=01?^。
[0034]圖3A所示的實施例為寫入命令沒有發生存儲庫沖突的一個例子,所以數據D0、D1在編碼結束之后可以同時且直接地分別寫入到存儲庫310、320中。
[0035]請參考圖3B,其為根據本發明另一實施例的讀取儲存在圖3A所示的存儲庫中的數據的示意圖。如圖3B所示,存儲器模塊120接收到兩個讀取命令,且要求自存儲庫310、320中分別讀取數據D0、D1。存儲器控制器110分別自存儲庫310以及參考存儲庫330中讀取編碼后數據DO ’以及參考數據RO,且存儲器控制器110使用參考數據RO來對編碼后數據DO ’進行解碼以產生數據D0;同時,存儲器控制器110分別自存儲庫320以及參考存儲庫330中讀取編碼后數據D1’以及參考數據Rl,且存儲器控制器110使用參考數據Rl來對編碼后數據D1’進行解碼以產生數據D1。在本實施例中,解碼操作同樣是異或運算,亦即D0 = D0’ eR0,且Dl =Dl, ? Rl0
[0036]請同時參考圖4?圖6,其中圖4為當兩筆數據D2、D3被要求寫入到存儲庫210時,根據本發明一實施例的存取存儲器模塊的方法的示意圖;圖5為當兩筆數據D2、D3被要求寫入到存儲器模塊時,存儲庫210、220以及參考存儲庫230的示意圖;且圖6為根據本發明一實施例存取存儲器模塊的流程圖。圖4?圖6所示的實施例接續圖2A所示的實施例,亦即存儲庫210原本在地址AO便儲存了編碼后數據D0’,且存儲庫220在地址AO儲存了編碼后數據Dl’。
[0037]在步驟600,流程開始。在步驟602中,存儲器模塊120自存儲器控制器110接收兩個寫入命令,而在本實施例中,一個寫入命令將數據D2寫入到存儲庫210對應到地址Al的單元中,且另一個寫入命令系將數據D3寫入到存儲庫210對應到地址AO的單元中(亦即,更新/覆寫編碼后數據D0’)。由于存儲庫210是一個一讀一寫存儲庫,因此同時間只能夠允許執行一個寫入命令,因此,只有一筆數據(本實施例中為數據D2)可以被寫入到存儲庫210中(步驟604及步驟606),且另一筆數據(亦即,D3)則需要使用一特別的流程(步驟608?612)才能夠被同時寫入到存儲器模塊120中。在步驟604中,存儲器控制器110自參考存儲庫230中對應于地址Al的單元讀取參考數據R1,并對數據D2及參考數據Rl—并進行編碼以產生編碼后數據D2 ’ ;接著,在步驟606中,存儲器控制器110將編碼后數據D2,寫入到存儲庫210中具有地址Al的單元中。在本實施例中,編碼操作為異或運算,亦即D2’=D2 ? R1。
[0038]關于數據D3,在步驟608中,存儲器控制器110自存儲庫210讀取編碼后數據DO’,并對數據D3及編碼后數據D0’一并進行編碼以產生編碼后數據D3’,其中編碼后數據D3’用來更新/覆寫參考存儲庫230中的參考數據R0;同時,存儲器控制器110分別自存儲庫220以及參考存儲庫230中讀取編碼后數據D1’以及參考數據R0,并使用參考數據RO來對編碼后數據D1’進行解碼以產生數據D1。在本實施例中,編碼及解碼操作為異或運算,亦即D3’=D3eDO,,且D1=D1’ ? RO0
[0039]在步驟610中,存儲器控制器110對編碼后數據D3’及數據Dl—并進行編碼以產生更新的編碼后數據D1”,其中更新的編碼后數據D1”用來更新存儲庫220中的編碼后數據D1’。在本實施例中,編碼操作為異或運算,亦即D1”=D3’ ?D1=D3?D0’ ?D1。
[0040]在步驟602中,存儲器控制器110將編碼后數據D3’寫入到參考存儲庫230中對應到地址AO的單元中,亦即更新/覆寫參考數據R0;此外,存儲器控制器110另將更新的編碼后數據D1”寫入到存儲庫220中對應到地址AO的單元中,以更新/覆寫編碼后數據Dl ’。
[0041]在步驟614中,兩筆數據Dl、D2成功地被寫入到存儲器模塊120中,流程結束。
[0042]請參考圖7,其為根據本發明一實施例的讀取儲存在圖4、5所示的存儲庫210、220中的數據的示意圖。如圖7所示,當存儲器模塊120接收到兩個讀取命令,且要求自存儲庫210、220中分別讀取數據D3、D1時,存儲器控制器110分別自存儲庫210以及參考存儲庫230中讀取編碼后數據DO ’以及編碼后數據D3’,且存儲器控制器110使用編碼后數據D3 ’來對編碼后數據DO ’進行解碼以產生數據D3;同時,存儲器控制器110另外分別自存儲庫220以及參考存儲庫230中讀取更新的編碼后數據D1”以及編碼后數據D3’,且存儲器控制器110使用編碼后數據D3’來對更新的編碼后數據D1”進行解碼以產生數據D1。在本實施例中,解碼操作系為異或運算,亦即D3 = D0’ ? D3,,且D1=D1” ? D3,。
[0043]需要注意的是,數據D3的讀取操作并沒有任何的改變,亦同樣是讀取存儲庫210及參考存儲庫230中對應到地址AO的單元,并將所讀取的數據來進行解碼(執行異或操作)以得到數據D3。換句話說,不論存儲庫沖突有沒有發生,根據讀取命令所讀取的數據永遠是通過將存儲庫210/220中的數據與參考存儲庫230的相對參考數據一并進行解碼來得到。
[0044]簡要歸納以上圖4?圖7所示的實施例,當兩筆數據D2、D3被要求寫入到存儲庫210時,數據D2可以在編碼后被寫入到存儲庫210中,且數據D3可以在編碼后被寫入到存儲庫230中以更新/覆寫參考數據R0。此外,由于參考存儲庫230中的參考數據RO被更新了,因此對應到參考數據RO的編碼后數據D1’也需要被更新。通過上述的寫入方法,即使兩筆數據D2、D3存在著存儲庫沖突的問題,數據D2、D3也可以同時地被寫入到存儲器模塊120中,因此,即使存儲庫210、220本身僅具有一個寫入端口,存儲庫210、220以及參考存儲庫230可以形成一個總是支持兩個寫入命令(兩個寫入端口)的特定存儲器模塊,亦即這個特定存儲器模塊增加了本身的寫入端口。另外,不論采用圖2A或是圖5的寫入步驟,這個特定存儲器模塊都是采用相同的讀取方式來讀取數據。
[0045]此外,在上述圖2A?圖7的實施例中,參考存儲庫230由兩個存儲庫210、220所共有,然而,在其他實施例中,參考存儲庫可以被兩個以上的存儲庫所共有。圖8為當兩筆數據D4、D5被要求寫入到相同的存儲庫810_1,存儲庫810_1?810_N及參考存儲庫830的操作示意圖。類似于圖5的實施例,在圖8中,當兩筆數據D4、D5被要求寫入到存儲器模塊時,數據D4在編碼后被寫入到存儲庫810_1中;同時,數據D5在編碼后被寫入到參考數據庫830中,且儲存在存儲庫810_2?810_N*的相對應數據也一并被更新。換句話說,當兩筆數據D4、D5被要求同時寫入到存儲庫810_1時,存儲庫810_1的操作類似于圖5所示的存儲庫210的操作,存儲庫810_2?810__勺操作類似于圖5所示的存儲庫220的操作,而參考存儲庫830的操作類似于圖5所示的參考存儲庫230的操作,而由于本領域技術人員在閱讀過圖4?圖6所示的實施例的說明后應該能夠了解圖8的實施例,故細節部分在此不再贅述。
[0046]請參考圖9,其為根據本發明另一實施例的存取存儲器模塊120的方法的示意圖。如圖9所示,存儲器模塊120包含了兩個存儲庫910、920以及參考存儲庫930,其中存儲庫910、920是二讀二寫(2R2W)存儲庫,且參考存儲庫930是一個四讀二寫(4R2W)存儲庫。在本實施例中,存儲器模塊120接收四個寫入命令,且四筆數據DO?D3被要求分別寫入到存儲庫910、920中,其中數據DO?Dl被要求寫入到存儲庫910中分別對應到地址AO及Al的單元,且數據D2?D3被要求寫入到存儲庫920中分別對應到地址AO及Al的單元。如圖9所示,存儲器控制器110自參考存儲庫930的地址AO讀取參考數據RO,且存儲器控制器110將數據DO與參考數據RO—并進行編碼以產生編碼后數據D0’,并將編碼后數據D0’寫入到存儲庫910中具有地址AO的單元中;存儲器控制器910自參考存儲庫930的地址Al讀取參考數據Rl,且存儲器控制器110將數據Dl與參考數據Rl—并進行編碼以產生編碼后數據D1’,并將編碼后數據D1’寫入到存儲庫910中具有地址Al的單元中;同時,存儲器控制器910自參考存儲庫930的地址AO讀取參考數據R0,且存儲器控制器110將數據D2與參考數據RO—并進行編碼以產生編碼后數據D2’,并將編碼后數據D2’寫入到存儲庫920中具有地址AO的單元中;以及存儲器控制器910自參考存儲庫930的地址Al讀取相同位置的參考數據Rl,且存儲器控制器110將數據D3與參考數據Rl—并進行編碼以產生編碼后數據D3’,并將編碼后數據D3’寫入到存儲庫920中具有地址Al的單元中。在本實施例中,D0、D1、D2、D3、D0’、D1’、D2’、D3’、R0、R1中的每一筆數據都是一個比特位,且編碼操作為異或運算。
[0047]此外,在另一個實施例中,若數據D2-D3被要求分別寫入至存儲庫920對應于地址A2和A3的單元中,存儲器控制器110自參考存儲庫930的地址A2讀取參考數據R2,且存儲器控制器110將數據D2與參考數據R2—并進行編碼以產生編碼后數據D2’,并將編碼后數據D2’寫入到存儲庫920中具有地址A2的單元中;且存儲器控制器110自參考存儲庫930的地址A3讀取參考數據R3,且存儲器控制器110將數據D3與參考數據R3—并進行編碼以產生編碼后數據D3’,并將編碼后數據D3’寫入到存儲庫920中具有地址A3的單元中。在本實施例中,R2、R3中的每一筆數據都是一個比特位,且編碼操作為異或運算。
[0048]圖9所示的實施例是四個寫入命令沒有發生存儲庫沖突的一個例子,所以數據DO?D3在編碼結束之后可以同時且直接地分別寫入到存儲庫910、920中。
[0049]請參考圖10,其為根據本發明另一實施例的存取存儲器模塊120的方法的示意圖。如圖10所示,存儲器模塊120包含了兩個存儲庫1010、1020以及參考存儲庫1030,其中存儲庫1010、1020是二讀二寫(2R2W)存儲庫,且參考存儲庫1030是一個四讀二寫(4R2W)存儲庫。在本實施例中,存儲器模塊120接收四個寫入命令,且四筆數據DO?D3被要求分別寫入到存儲庫1010中,但由于存儲庫1010僅僅包含兩個寫入端口,所以僅有兩筆數據可以同時被寫入到存儲庫11中。在圖1O中,數據DO、DI被編碼且寫入到存儲庫11中;同時,數據D2、D3則是使用儲存在存儲庫1010中的舊數據來進行編碼,且數據D2、D3的編碼后數據則是被儲存至參考存儲庫1030的兩個單元中,其中該兩個單元系和存儲庫1010中的舊數據具有相同的地址。此外,由于參考存儲庫1030的更新/覆寫,存儲庫1020中的相對應數據也要做對應的更新。換句話說,圖10中有關于數據D0、D1的寫入步驟類似于圖4中數據D2的寫入步驟,且圖10中有關于數據D2、D3的寫入步驟類似于圖4中數據D3的寫入步驟,而由于本領域技術人員在閱讀過圖4?圖6所示的實施例的說明后應該能夠了解圖10的實施例,故細節部分在此不再贅述。
[0050]請參考圖11,其為根據本發明另一實施例的存取存儲器模塊120的方法的示意圖。如圖11所示,存儲器模塊120包含了兩個存儲庫1110、1120以及參考存儲庫1130,其中存儲庫1110、1120是二讀二寫(2R2W)存儲庫,且參考存儲庫1130是一個四讀二寫(4R2W)存儲庫。在本實施例中,存儲器模塊120接收四個寫入命令,且四筆數據DO?D3被要求分別寫入到存儲庫1110、1120中,其中數據DO?D2被要求寫入到存儲庫1110中,數據D3被要求寫入到存儲庫1120中,且數據D2、D3所對應到的寫入地址是不同的(亦即,存儲庫1110中對應到數據D2的單元與存儲庫1120中對應到數據D3的單元具有不同的地址)。但由于存儲庫1110僅僅包含兩個寫入端口,所以僅有兩筆數據可以同時被寫入到存儲庫1110中。在圖11中,數據D0、Dl被編碼且寫入到存儲庫1110中,且數據D3被編碼且寫入到存儲庫1120中;同時,數據D2則是使用儲存在存儲庫1110中的舊數據來進行編碼,且數據D2的編碼后數據則是被儲存至參考存儲庫1130的單元中,其中該單元和存儲庫1110中的舊數據具有相同的地址。此外,由于參考存儲庫1130的更新/覆寫,存儲庫1120中的相對應數據也要做對應的更新。換句話說,圖11中有關于數據D0、D1、D3的寫入步驟類似于圖4中數據D2的寫入步驟,且圖11中有關于數據D2的寫入步驟類似于圖4中數據D3的寫入步驟,而由于本領域技術人員在閱讀過圖4?圖6所示的實施例的說明后應該能夠了解圖11的實施例,故細節部分在此不再贅述。
[0051]請參考圖12,其為根據本發明另一實施例的存取存儲器模塊120的方法的示意圖。如圖12所示,存儲器模塊120包含了兩個存儲庫1210、1220以及參考存儲庫1230,其中存儲庫1210、1220是二讀二寫(2R2W)存儲庫,且參考存儲庫1230是一個四讀二寫(4R2W)存儲庫。在本實施例中,存儲器模塊120接收四個寫入命令,且四筆數據DO?D3被要求分別寫入到存儲庫1210、1220中,其中數據DO?D2被要求寫入到存儲庫1210中,數據D3被要求寫入到存儲庫1220中,且數據D2、D3所對應到的寫入地址是相同的(在以下的敘述中,假設此相同的地址是A3)。由于存儲庫1210僅僅包含兩個寫入端口,所以僅有兩筆數據可以同時被寫入到存儲庫1210中。在圖12中,數據DO、DI被編碼且寫入到存儲庫1210中;同時,數據D2與存儲庫1210中對應至地址A3的舊數據進行編碼,以產生編碼后數據D2’,且編碼后數據D2’被儲存至參考存儲庫1230中對應到地址A3的單元中。此外,數據D3與編碼后數據D2’一同進行編碼以產生編碼后數據D3’,且編碼后數據D3’被儲存至存儲庫1220中對應到地址A3的單元中。在本實施例中,圖12中有關于數據D0、D1的寫入步驟類似于圖4中數據D2的寫入步驟,圖12中有關于數據D2的寫入步驟類似于圖4中數據D3的寫入步驟,而由于本領域技術人員在閱讀過圖4?圖6所示的實施例的說明后應該能夠了解圖12的實施例,故細節部分在此不再贅述。
[0052]簡要歸納以上圖9?圖12所示的實施例,通過上述的寫入方法,即使四筆數據DO?D3存在著存儲庫沖突的問題,數據DO?D3也可以同時地被寫入到存儲器模塊120中,因此,即使存儲庫910/1010/1110/1210、920/1020/1120/1220本身僅具有兩個寫入端口,存儲庫910/1010/1110/1210、920/1020/1120/1220 以及參考存儲庫 930/1030/1130/1230 可以形成一個總是支持四個寫入命令(四個寫入端口)的特定存儲器模塊,亦即這個特定存儲器模塊增加了本身的寫入端口。另外,不論采用圖9?12中的哪一個寫入步驟,這個特定存儲器模塊都是采用相同的讀取方式來讀取數據。
[0053]此外,當使用上述的寫入步驟來延伸/增加存儲器模塊120的寫入端口時,由于參考存儲庫中的某些數據需要被讀取以進行編碼或解碼操作,因此,整體上,存儲器模塊的讀取端口會減少。舉例來說,如圖13所示,假設存儲庫1310以及存儲庫1320是M讀一寫(MRlW)的存儲庫,且參考存儲庫1320為N讀一寫(NRlW)的存儲庫,其中M可以是小于N的任意適合正整數,通過使用上述的寫入步驟,存儲庫1310、1320以及參考存儲庫1330可以形成具有(N-2)個讀取端口以及兩個寫入端口的特定存儲器模塊1340。舉另一例子來說,如圖14所示,假設存儲庫1410以及存儲庫1420是M讀二寫(MR2W)的存儲庫,且參考存儲庫1420為N讀二寫(NR2W)的存儲庫,其中M可以是小于N的任意適合正整數,通過使用上述的寫入步驟,存儲庫1410、1420以及參考存儲庫1430可以形成具有(N-4)個讀取端口以及四個寫入端口的特定存儲器模塊1440。如上所述,雖然讀取端口減少了,但是存儲器模塊的寫入端口可以加倍,以允許同時執行更多的寫入命令。
[0054]此外,存儲庫或是存儲器模塊的讀取端口可以通過先前技術中的額外層技術來加倍,舉例來說,一個二讀一寫的存儲庫可以被延伸為一個四讀一寫的存儲庫,該四讀一寫的存儲庫可以被延伸為一個八讀一寫的存儲庫,該八讀一寫的存儲庫可以被延伸為一個十六讀一寫的存儲庫,由于本領域技術人員應能夠了解該技術,故相關細節在此不做說明。因此,通過使用讀取端口的延伸技術,再加上述實施例的寫入方法,存儲器模塊便可以具有更多個寫入端口以同時執行更多的寫入命令。以圖15為例,四讀一寫的存儲庫可以被延伸為二讀二寫的存儲庫/存儲器模塊;八讀一寫的存儲庫可以被延伸為六讀二寫的存儲庫/存儲器模塊或是二讀四寫的存儲庫/存儲器模塊;十六讀一寫的存儲庫可以被延伸為十四讀二寫的存儲庫/存儲器模塊、十讀四寫的存儲庫/存儲器模塊、或是二讀八寫的存儲庫/存儲器模塊;以及三十二讀一寫的存儲庫可以被延伸為三十讀二寫的存儲庫/存儲器模塊、二十六讀四寫的存儲庫/存儲器模塊、十八讀八寫的存儲庫/存儲器模塊、或是二讀十六寫的存儲庫/存儲器模塊,等等。
[0055]簡要歸納本發明,通過使用本發明實施例的存取方法,可以在存儲庫僅具有較少寫入端口的情形下增加存儲器模塊的寫入端口,此外,在本發明的實施例中,參考存儲庫由兩個或更多個存儲庫所共享以儲存數據,因此不會增加太多的制造成本。
[0056]盡管已經在文中使用不同的方法、設備以及系統來描述和示出了一些示例性的技術,但是本領域普通技術人員應當理解的是:可以在不脫離所要求保護的主題的情況下進行各種其它修改以及進行等同物替換。此外,在不脫離文中描述的中心構思的情況下,可以進行許多修改以使特定的情況適應于所要求保護的主題的教導。因此,意在所要求保護的主題不限制于所公開的特定示例,而且這樣的要求保護的主題還可以包括落在所附權利要求的范圍內的所有實施及它們的等同物。
【主權項】
1.一種存取多端口存儲器模塊的方法,其中所述多端口存儲器模塊包含了多個存儲庫,所述多個存儲庫包含至少第一存儲庫、第二存儲庫以及參考存儲庫,且所述存取多端口存儲器模塊的方法包含: 當第一數據被要求寫入至所述第一存儲庫時,讀取所述參考存儲庫中的參考數據,并將所述第一數據連同所述參考數據一并進行編碼以產生第一編碼后數據,且將所述第一編碼后數據寫入至所述第一存儲庫中;以及 當第二數據被要求寫入至所述第二存儲庫時,自所述參考存儲庫中讀取相同位置的所述參考數據,并將所述第二數據連同所述參考數據一并進行編碼以產生第二編碼后數據,且將所述第二編碼后數據寫入至所述第二存儲庫中。2.根據權利要求1所述的存取多端口存儲器模塊的方法,其特征在于,另包含: 當第三數據被要求寫入至所述第一存儲庫以更新/覆寫所述第一存儲庫中的所述第一編碼后數據,但是所述第一存儲庫的一或多個寫入端口被其他的寫入步驟占據時,自所述第一存儲庫中讀取所述第一編碼后數據,并將所述第三數據連同所述第一編碼后數據一并進行編碼以產生第三編碼后數據,且將所述第三編碼后數據寫入至所述參考存儲庫中以更新/覆寫所述參考數據。3.根據權利要求2所述的存取多端口存儲器模塊的方法,其特征在于,另包含: 在所述參考數據被所述第三編碼后數據更新/覆寫之前,分別自所述參考存儲庫以及所述第二存儲庫中讀取所述參考數據以及所述第二編碼后數據,并使用所述參考數據來對所述第二編碼后數據進行解碼以產生所述第二數據; 將所述第二數據連同所述第三編碼后數據一并進行編碼以產生更新的第二編碼后數據;以及 將所述更新的第二編碼后數據寫入至所述第二存儲庫以更新所述第二編碼后數據。4.根據權利要求2所述的存取多端口存儲器模塊的方法,其特征在于,其中當所述第三數據被要求自所述第一存儲庫中讀取時,分別自所述第一存儲庫以及所述參考存儲庫中讀取所述第一編碼后數據以及所述第三編碼后數據,且使用所述第一編碼后數據來對所述第三編碼后數據進行解碼以產生所述第三數據。5.根據權利要求1所述的存取多端口存儲器模塊的方法,其特征在于,另包含: 當第三數據以及第四數據被要求寫入至所述第一存儲庫以分別更新/覆寫所述第一存儲庫中的第一舊數據以及第二舊數據時,自所述參考存儲庫中讀取另一參考數據,并將所述第三數據連同所述另一參考數據一并進行編碼以產生第三編碼后數據,且將所述第三編碼后數據寫入至所述第一存儲庫中以更新/覆寫所述第一舊數據;以及 自所述第一存儲庫中讀取所述第二舊數據,并將所述第四數據連同所述第二舊數據一并進行編碼以產生第四編碼后數據,且將所述第四編碼后數據寫入至所述參考存儲庫中以更新/覆寫對應于所述第二舊數據的又一參考數據。6.根據權利要求1所述的存取多端口存儲器模塊的方法,其特征在于,其中所述第一存儲庫包含K個寫入端口,所述第二存儲庫包含K個寫入端口,所述參考存儲庫包含N個讀取端口 ;以及所述第一存儲庫、所述第二存儲庫以及所述參考存儲庫形成一個支持(2*K)個寫入端口以及(Ν-2*Κ)個讀取端口的特定存儲器子模塊,其中K為等于或大于I的正整數,且N為大于(2*Κ)的正整數。7.根據權利要求1所述的存取多端口存儲器模塊的方法,其特征在于,其中所述第一數據、所述第二數據以及所述參考數據中的每一個均為一個比特位,且編碼操作為異或運算。8.—種存儲器控制器,耦接于多端口存儲器模塊,其中所述多端口存儲器模塊包含了多個存儲庫,所述多個存儲庫包含至少第一存儲庫、第二存儲庫以及參考存儲庫;當第一數據被要求寫入至所述第一存儲庫時,所述存儲器控制器讀取所述參考存儲庫中的參考數據,并將所述第一數據連同所述參考數據一并進行編碼以產生第一編碼后數據,且將所述第一編碼后數據寫入至所述第一存儲庫中;以及當第二數據被要求寫入至所述第二存儲庫時,所述存儲器控制器自所述參考存儲庫中讀取相同位置的所述參考數據,并將所述第二數據連同所述參考數據一并進行編碼以產生第二編碼后數據,且將所述第二編碼后數據寫入至所述第二存儲庫中。9.根據權利要求8所述的存儲器控制器,其特征在于,當第三數據被要求寫入至所述第一存儲庫以更新/覆寫所述第一存儲庫中的所述第一編碼后數據,但是所述第一存儲庫的一或多個寫入端口被其他的寫入步驟占據時,所述存儲器控制器自所述第一存儲庫中讀取所述第一編碼后數據,并將所述第三數據連同所述第一編碼后數據一并進行編碼以產生第三編碼后數據,且將所述第三編碼后數據寫入至所述參考存儲庫中以更新/覆寫所述參考數據。10.根據權利要求9所述的存儲器控制器,其特征在于,在所述參考數據被所述第三編碼后數據更新/覆寫之前,所述存儲器控制器分別自所述參考存儲庫以及所述第二存儲庫中讀取所述參考數據以及所述第二編碼后數據,并使用所述參考數據來對所述第二編碼后數據進行解碼以產生所述第二數據;且所述存儲器控制器另將所述第二數據連同所述第三編碼后數據一并進行編碼以產生更新的第二編碼后數據;以及將所述更新的第二編碼后數據寫入至所述第二存儲庫以更新所述第二編碼后數據。11.根據權利要求9所述的存儲器控制器,其特征在于,當所述第三數據被要求自所述第一存儲庫中讀取時,所述存儲器控制器分別自所述第一存儲庫以及所述參考存儲庫中讀取所述第一編碼后數據以及所述第三編碼后數據,且使用所述第一編碼后數據來對所述第三編碼后數據進行解碼以產生所述第三數據。12.根據權利要求8所述的存儲器控制器,其特征在于,當第三數據以及第四數據被要求寫入至所述第一存儲庫以分別更新/覆寫所述第一存儲庫中的第一舊數據以及第二舊數據時,所述存儲器控制器自所述參考存儲庫中讀取另一參考數據,并將所述第三數據連同所述另一參考數據一并進行編碼以產生第三編碼后數據,且將所述第三編碼后數據寫入至所述第一存儲庫中以更新/覆寫所述第一舊數據;以及所述存儲器控制器另自所述第一存儲庫中讀取所述第二舊數據,并將所述第四數據連同所述第二舊數據一并進行編碼以產生第四編碼后數據,且將所述第四編碼后數據寫入至所述參考存儲庫中以更新/覆寫對應于所述第二 I日數據的又一參考數據。13.根據權利要求8所述的存儲器控制器,其特征在于,所述第一存儲庫包含K個寫入端口,所述第二存儲庫包含K個寫入端口,所述參考存儲庫包含N個讀取端口;以及所述第一存儲庫、所述第二存儲庫以及所述參考存儲庫形成一個支持(2*K)個寫入端口以及(N-2*K)個讀取端口的特定存儲器子模塊,其中K為等于或大于I的正整數,且N為大于(2*K)的正整數。14.根據權利要求8所述的存儲器控制器,其特征在于,所述第一數據、所述第二數據以及所述參考數據中的每一個均為一個比特位,且編碼操作為異或運算。15.一種增加存儲器模塊的寫入端口的方法,包含: 在所述存儲器模塊中提供第一存儲庫以及參考存儲庫; 當第一數據以及第二數據同時被要求寫入至所述第一存儲庫時,但是所述第二數據不被允許同時被寫入所述第一存儲庫以更新/覆寫舊數據時,讀取所述參考存儲庫中的第一參考數據,將所述第一數據連同所述第一參考數據一并進行編碼以產生第一編碼后數據,且將所述第一編碼后數據寫入至所述第一存儲庫中;以及 讀取所述第一存儲庫中的所述舊數據,將所述第二數據連同所述舊數據一并進行編碼以產生第二編碼后數據,并將所述第二編碼后數據寫入至所述參考存儲庫中以更新/覆寫對應于所述I日數據的第二參考數據。16.根據權利要求15所述的增加存儲器模塊的寫入端口的方法,其特征在于,所述第一存儲庫包含K個寫入端口,所述參考存儲庫包含N個讀取端口,以及所述存儲器模塊支持(2*K)個寫入端口以及(N-2*K)個讀取端口,其中K為等于或大于I的正整數,且N為大于(2*K)的正整數。17.根據權利要求15所述的增加存儲器模塊的寫入端口的方法,其特征在于,另包含: 在所述存儲器模塊中提供第二存儲庫;以及 當第三數據被要求寫入至所述第二存儲庫時,自所述參考存儲庫中讀取所述第一參考數據,將所述第三數據連同所述第一參考數據一并進行編碼以產生第三編碼后數據,且將所述第三編碼后數據寫入至所述第二存儲庫中。18.根據權利要求15所述的增加存儲器模塊的寫入端口的方法,其特征在于,所述第一數據、所述第二數據、所述第一參考數據以及所述第二參考數據中的每一個均為一個比特位,且編碼操作為異或運算。19.根據權利要求15所述的增加存儲器模塊的寫入端口的方法,其特征在于,每一個存儲庫均被允許獨立地存取。20.根據權利要求15所述的增加存儲器模塊的寫入端口的方法,其特征在于,所述存儲器模塊為多端口的靜態隨機存取存儲器模塊或是多端口的動態隨機存取存儲器模塊。
【文檔編號】G06F13/16GK106066832SQ201610250189
【公開日】2016年11月2日
【申請日】2016年4月21日 公開號201610250189.9, CN 106066832 A, CN 106066832A, CN 201610250189, CN-A-106066832, CN106066832 A, CN106066832A, CN201610250189, CN201610250189.9
【發明人】呂國正, 賴伯承, 黃琨驊, 林俊良
【申請人】聯發科技股份有限公司