TWI457753B - 記憶體控制器及用於管理記憶體存取之方法 - Google Patents
記憶體控制器及用於管理記憶體存取之方法 Download PDFInfo
- Publication number
- TWI457753B TWI457753B TW097132032A TW97132032A TWI457753B TW I457753 B TWI457753 B TW I457753B TW 097132032 A TW097132032 A TW 097132032A TW 97132032 A TW97132032 A TW 97132032A TW I457753 B TWI457753 B TW I457753B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- page
- given
- controller
- current
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明所揭示係關於記憶體系統領域,更詳細地說,係關於記憶體控制器之設計。
隨著近期電腦系統複雜度的增加,技術上的加強導致於處理器速度之增加,系統效能的最佳化變得越來越因難,系統效能常取決於該系統之記憶體頻寬(bandwidth)和總體延遲(latency)。因此,以最低之總體延遲來存取記憶體,並且使用最高之記憶體頻寬可以增進且(或)最佳化該系統的效能。當存取該記憶體和完成給定記憶體要求(request)所需要之時間增加,該系統便會慢下來。因此,任何存取時間上的減少和(或)該記憶體之總體處理能力的增加都可以增進系統的效能。
很多的系統使用動態隨機存取記憶體(Dynamic random access memory,DRAM),包含桌上型電腦、圖形轉換卡(graphic adapter card)和筆記型電腦和其他。DRAM裝置提供許多優於其他記憶體技術的優點,包含最常被注意的靜態隨機存取記憶體(static random access memory,SRAM)裝置。這些優點中最重要的係較高之儲存密度和較少之功率消耗。然而,這些優點來自於當該DRAM裝置內之記憶體單元和其他組件接受每一個接下來的存取所耗費之大量時間延遲,例如在讀取/寫入存取的前後。這種延遲包括進行列預充電(row precharge)、列更新(row refresh)和
列激活(row activation)所需的時間。為了在遭遇這些延遲時可以更精確地管理並控制記憶體的操作,額外的指令(被傳送於讀取/寫入存取之間)被創造也因此造成額外的面積消耗(overhead)。現今所使用之DRAM中有很高的比重都屬於雙倍資料傳輸率同步動態隨機存取記憶體(double-data-rate synchronous DRAM,DDR SDRAM)家族。
DDR SDRAM(包含DDR2和DDR3)藉由在以該系統時脈為基礎之閃控信號(strobe signal)之上升邊緣和下降邊緣(rising and falling edges)轉換資料,相較於單倍資料傳輸率SDRAM可以達到較高之頻寬。這樣的方法有效地使該轉換率加倍,因此改善了系統效能而不需要增加該記憶體匯流排之操作頻率。為了進一步增進DRAM的效能,該記憶體元件往往以分頁組構(page configuration)被存取,其中該DRAM的列可以被激活或開啟,該列位址控制器信號(row address strobe,RAS)不需要維持確立(asserted),同時利用個別的行位址控制器(column address strobe,CAS)信號進行多重讀取或寫入。這樣的操作容許在相同列之內連續地讀取或寫入以避免該延遲(通常與預充電和列存取有關),並且於突然增加的資料轉換(burst data transfers)中提供顯著的系統效能改善。
一般而言,在進行記憶體分頁讀取或寫入記憶體分頁之操作前,該記憶體分頁需要被開啟。該DRAM控制器可以在讀取/寫入指令後立即地關閉該分頁,或決定讓該分頁保持開啟。然而,該DRAM控制器之該有限容量可能妨礙該
DRAM能夠處理許多之開啟分頁。因此,該DRAM控制器被要求關閉一些開啟的分頁,即使保持該等分頁開啟將可消除一些於未來之轉換中之存取延遲。因此,該DRAM控制器之限制可能成為利用DRAM運作優點之障礙。
於比較過稍後將敘述之本發明和以上之先前技術後,對於習知技術者而言其他與先前技術相關之議題將變得顯而易見。
一種系統(如:電腦系統)可能包括連接至DRAM匯流排之DRAM裝置,以及被組構以管理和控制該DRAM裝置之存取之DRAM控制器。如果該分頁尚未開啟,則在記憶體分頁可以被存取以進行讀取或寫入操作前,該記憶體分頁可能需要被開啟。該DRAM控制器可能於存取該分頁之讀取/寫入要求之後接著立即關閉先前開啟之分頁,或者該DRAM控制器可能決定將該分頁保持開啟。如果該DRAM控制器之容量具有限制而無法處理過多開啟之分頁,於一些例子中該DRAM控制器可能被要求關閉一個或更多個開啟之分頁,即使將該些分頁保持開啟可以藉由消除所需要之額外激活(以開啟新分頁)和預充電(以關閉開啟之分頁)指令以達到相當程度上減少記憶體之存取時間的效果。該DRAM匯流排之總體處理能力(throughput)可以被改善,儘管該DRAM控制器之容量具有限制而無法同時處理過多開啟之分頁。於一組實施例中,該DRAM控制器可以被組構以根據有效率之分頁策略來操作,進而決定那些開啟之分頁保持
開啟和那些開啟之分頁被關閉,以將激活和預充電指令減至最少,該等激活和預充電指令需要在接下來之讀取/寫入存取過程中被發出。
記憶體控制器(如:DRAM控制器)可以被組構以根據三層次自動預充電預測演算法來操作以改善記憶體之存取。該DRAM控制器可以藉由追蹤每一個DRAM記憶庫(bank)之分頁活動之歷史來最佳化分頁之使用。給定記憶庫之最近存取的歷史可以致能(enable)該DRAM控制器以決定是否在讀取/寫入操作之後開始自動預充電對應於該被存取之分頁的該列,或是否保持開啟該被存取之分頁。如果該分頁應該被保持在開啟,則給定記憶庫之最近存取之歷史也可以決定該分頁在被關閉之前應該被保持開啟(和閒置)多久的時間。因此,該DRAM控制器可以被組構以每記憶庫為基礎追蹤分頁命中(對於DRAM之特定記憶庫中已開啟之列所提出之要求)、分頁落空(對於DRAM中特定記憶庫之列所提出之要求,其中該特定記憶庫不具有任何已開啟之列)、以及分頁衝突(對於DRAM中特定記憶庫之列所提出之要求,其中該特定記憶庫已具有已開啟之其他不同列)之歷史,但對並非以記憶庫為基礎之以第一階為基礎之歷史提出自動充電之預測。
於一組實施例中,該DRAM控制器可以包含分頁表(Page Table),其中每一條項目(entry)可記錄對給定記憶體記憶庫之最後四筆歷史存取。該DRAM控制器也可包含記憶體記憶庫歷史表(Memory Bank History Table)。於記憶
體要求贏得裁決之後,該記憶體控制器可以指示(indication)來更新該記憶體記憶庫歷史表,其中該指示係是否該要求在該給定記憶體記憶庫中所對應之DRAM分頁與該先前之記憶體要求相同。這種方式實際上與指示是否該要求係分頁命中不同,因為分頁落空可能會一直要求在給定記憶庫中最近被存取過(即使現在已關閉)之記憶體分頁。
一旦有要求透過裁決而被選定,則可進行預測。根據選定,該最後M個(如:三個)對該有疑慮之記憶庫之存取加上剛才選定之該存取可以用來對該記憶體記憶庫歷史表標示(index)。該記憶體記憶庫歷史表可以於完成預測後之該週期(cycle)被更新。該更新可以對於被該對應之M+1位元(如:4位元,其中M等於3)記憶庫歷史資訊(bank history information)所標示之位置中所儲存之值來進行,其中該M+1位元記憶庫歷史資訊儲存於有疑慮之該記憶庫之該DRAM分頁表。於一組實施例中,該預測之更新可以基於可靠計數器(confidence counter)而發生。記憶體記憶庫歷史表中每一條項目均可以包含N位元(如:2位元)之可靠計數值。如果該預測係正確的,該DRAM控制器可以增加該可靠計數值(於最大值飽和)。如果該預測係不正確的,該DRAM控制器可以減少該可靠計數值。該DRAM控制器接著可以更新該預測值,只要該計數器達到一特定值(如:0)。於其他實施例中,該計數值可以由低開始增加,而該最大值可被用以當作該預測值可以被更新之指示。該
歷史、預測及可靠計數值之更新不可對於要求進行,該等要求之自動預充電決定(auto-precharge decision)係決定於記憶庫命中(Bank Hit)或記憶庫衝突(Bank Conflict),如下所進一步描述。
是否佇列中其他迫切之要求被轉移瞄準向(target toward)特定DRAM記憶庫之狀態可能取代該被該記憶體記憶庫歷史表中之該預測值所指示之自動預充電預測。例如,儲存於該記憶體記憶庫歷史表中並對應於該當前記憶體要求之該預測值可以預測該當前之讀取/寫入要求應該被送至該具有被致能之自動預充電之DRAM。然而,該要求佇列可以包含一個或更多個迫切之要求,該等迫切之要求與該當前記憶體要求正在瞄準相同之DRAM分頁。這種情形指出自動預充電可能無法於此種案例中帶來好處。
於一組實施例中,一旦迫切之記憶體要求被選定為該當前記憶體要求(如:由裁決產生),產生之記憶庫命中和記憶庫衝突信號(分別對應於該有疑慮之記憶體記憶庫內之潛在分頁命中和分頁落空)可以被用以限制該記憶庫歷史預測。如果該DRAM控制器判斷沒有任何該迫近之記憶體要求將造成分頁命中或分頁衝突(也就是說,沒有任何該迫近之記憶體要求係要求存取該有疑慮之記憶體記憶庫),該DRAM控制器可根據該記憶庫歷史預測針對該當前記憶體要求來設定該自動預充電(如上所述)。如果沒有任何迫切之記憶體要求將會造成分頁命中,但該迫切之記憶體要求中至少一個將會造成分頁衝突,則該自動預充電將會針對
該當前記憶體要求而被致能。如果該迫切之記憶體要求中至少一個將會造成分頁衝突,則該自動預充電將會針對該當前記憶體要求而被停用。
如果該讀取/寫入要求沒有自動預充電,則該DRAM控制器可以使用閒置週期計數器(idle cycle counter)以判斷已開啟之分頁於維持閒置一段特定長度時間後是否應該被關閉。於一個實施例中,該DRAM分頁表中之每一條項目均可以追蹤給定之已開啟記憶體分頁已開啟多久的時間。當該閒置週期計數器到達可編程之極限(programmable limit),該DRAM控制器可以關閉該已開啟之記憶體分頁。於可編程之固定數量之時脈週期(programmable fixed number of clock cycle)之後,該DRAM控制器可以關閉非作用(inactive)之分頁,或者於固定數量之時脈週期之後關閉非作用之分頁,其中該固定數量之時脈週期係以該DRAM分頁表項目歷史(DRAM page entry history)為基礎被動態調整。
如此處所使用的,「對給定記憶體記憶庫提出記憶體要求」或「對已開啟/關閉之記憶體分頁提出記憶體要求」意指該記憶體要求正在要求存取該給定記憶體記憶庫和(或)該已開啟/已關閉之記憶體分頁。換言之,例如該詞句「對已開啟之分頁提出記憶體要求」等同於「記憶體要求正在要求存取已開啟之分頁」。類似地,「記憶體要求瞄準給定記憶庫」、或「記憶體要求瞄準已開啟/已關閉之分
頁」意指該記憶體要求正在要求對該給定記憶體記憶庫和(或)該已開啟/已關閉之記憶體分頁作存取。
第1圖顯示基本範例系統100之方塊圖,範例系統100可為電腦系統,其中處理單元113係組構有被連結至記憶體控制器103之處理器核心101。記憶體控制器103可被連接至記憶體匯流排111,透過記憶體匯流排111,記憶體控制器103可以調整對記憶體105之存取以促進處理單元113和記憶體105間之資料交換。於所屬技術領域中具有通常知識者將了解系統100可以多種作法被實施,圖示所顯示為基本之組構,其中記憶體之存取由記憶體控制器所控制。
於一組實施例中,記憶體控制器103可包括:次電路(sub circuit)和/或組件,包含用以支持系統100所需要之功能範圍(range of functionality)之暫存器。例如,記憶體控制器103可以包含許多種緩衝器(buffer)以緩衝於記憶體105和處理器核心101間被轉換之資料,記憶體控制器103也可被分割成多個次控制方塊(sub-control blocks)。類似地,記憶體105可以包含許多種記憶體元件或多種組構之記憶體裝置,以透過記憶體匯流排111來適應與記憶體103間之介面。具有許多種可能以及可考慮之實施例。
於一組實施例中,記憶體105可以為DRAM,而記憶體控制器103因而為DRAM控制器。於又一組實施例中,記憶體105可以包括:雙倍資料傳輸率DRAM(DDR DRAM),如:
由DDR3控制器103所控制之DDR3記憶體。於一組實施例中,DRAM控制器103可以被組構以管理並控制對DRAM裝置中記憶體分頁之存取。於記憶體分頁被存取以進行讀取或寫入操作之前,該記憶體分頁必須被開啟。DRAM控制器103可以跟隨於該讀取/寫入存取之後關閉已開啟之分頁,或可以決定保持該分頁為開啟。於一組實施例中,DRAM控制器103可以被組構以根據有效率之分頁策略來操作,因此改善DRAM匯流排111之總體處理能力即使DRAM控制器103無法立即地處理大量之開啟之分頁,其中該分頁策略係被設計以減少於接下來之讀取/寫入存取間所發出之激活和預充電指令。
當與DRAM 105相連繫,DRAM控制器103可以被操作以處理導致三種不同型態之記憶體存取之讀取和寫入要求。該第一種型態之記憶體存取對應於對DRAM 105中特定記憶庫之列提出之要求,其中該特定記憶庫具有另一個已開啟且不同之列,此種存取被稱為分頁衝突。於分頁衝突之案例中,該分頁首先經由預充電指令而被關閉,然後經由激活指令被開啟,以使DRAM 105準備好接受要求之讀取/寫入操作。該第二種記憶體存取對應於對DRAM 105中特定記憶庫之列提出之要求,其中該特定記憶庫不具有任何已開啟之列,此種存取被稱為分頁落空。於分頁落空之案例中,該分頁首先經由激活指令而被開啟,以使DRAM 105準備好接受要求之讀取/寫入操作。該第三種記憶體存取對應於對DRAM 105中特定記憶庫之列提出之要求,其中該特
定記憶庫不具有已開啟之列,此種存取被稱為分頁命中。於分頁命中之案例中,該要求之讀取/寫入操作可被進行而無需準備DRAM 105以接受要求之讀取/寫入操作,因此,不需要先進行額外之指令。
因此,較佳將DRAM控制器103以將分頁命中之數量最大化以及將分頁衝突和分頁落空之數量最小化之方式組構以重新排序讀取/寫入要求。結果,當與要求流(stream of requests)有關聯之該位址流(stream of addresses)未導致分頁命中,則DRAM控制器103可以被操作以有助於分頁落空為下一個較好之選擇而不是分頁衝突。因此,為了達到最佳之效能,DRAM控制器103可以被組構以進行三層次自動預充電預測演算法。
第2圖係圖示出DRAM控制器103被組構以進行三層次自動預充電預測演算法之一個可能實施例。於一組實施例中,DRAM控制器103可以利用DRAM分頁表106來支援達特定數量之開啟分頁(於一些實施例中為32個開啟分頁)。DRAM分頁表106可以晶片選擇信號和記憶庫選擇信號為基礎而被下標示,因而涵蓋了每一個記憶庫,並且可以被用於儲存列位址和每一個記憶庫最近之記憶庫歷史資訊。DRAM分頁表106也可被用於判斷是否讀取/寫入要求導致分頁命中、分頁落空或分頁衝突,且判斷是否應該對於當前之讀取/寫入要求進行自動預充電。位址地圖104(address map)可以從處理器核心101接收對應於當前讀取/寫入要求之位址,並且可以產生該標示(查詢)信號以
查詢(lookup)對應於DRAM分頁表106中該當前要求之分頁。
輸入之指令可被放置於DRAM控制器要求佇列114(DCQ)中,該DCQ 114可以被組構以容納特定數量之項目(於一些實施例中為12條項目)。DCQ 114可因此被組構以儲存讀取、寫入、預先取得(prefetch)和DRAM位址資訊、分頁命中/落空/衝突資訊以及要求優先資訊,該要求優先資訊對應於該寫入、讀取和預先取得指令。一經獲得該以上資訊,DCQ 114便可以被分配(allocated),而一旦該完整之指令序列(command sequence)已被完成則DCQ 114便可以被反分配(deallocate)。此外,DCQ 114可以於每一次DRAM分頁表106改變時被更新。該排隊中之指令之裁決係由裁決器112所進行,該裁決係根據特定之優先計劃和(或)多種要求類型之優先性,並且以至少一個接收自DRAM分頁表106之分頁資訊和接收自時序檢測方塊110(timing check block)之時序檢測資訊為基礎。一般而言,對於輸入指令之裁決可根據許多可能之優先計劃中的一個或更多個來進行,而每一個優先計劃係根據特定之系統效能和記憶體效能需求而被設計。例如,較舊之要求(older request)可以藉由額外之機制來接收到超過較近之要求之優先權,以適當地避免最舊之項目(oldest entry)被置之不理超過特定次數。其他之可能性包含選擇分頁命中超過分頁落空,其中分頁落空則被選擇超過分頁衝突。熟悉習知之技術者將可以了解到分頁利用之最佳化也可以於多種不同之裁決電
路中進行,而其他許多優先計劃(雖然這裡沒有明確揭露)係可能且可預期的。一旦來自於DCQ 114之指令經由裁決而被選定,則該選定之指令(和與該指令相關之位址資訊)將經由多工器116並透過墊片(pad)124a而被提供至DRAM 105。
DRAM控制器103也可以分別包含後端讀取和寫入佇列120和118。寫入佇列118可以於指令部份已完成以及DCQ114已經被反分配之後被用來儲存特定數量(於一些實施例中為6)之寫入信號要求。寫入佇列118可以因此促進讀取之資料以更精確之時間方式自該記憶體控制器資料緩衝器離開。讀取佇列120可以於指令部份已完成以及DCQ114已經被反分配之後被用來儲存特定數量(於一些實施例中為6)之寫入信號要求。讀取佇列120可以因此促進(在DDR記憶體的例子中)DDR觸發信號DQS和資料接收器(receiver)之控制,並促進先進先出(FIFO)緩衝器112之接收以為了轉換資料至該反相時脈領域。
DRAM控制器103可以藉由追蹤DRAM 105中每一個記憶庫之分頁活動的歷史來將分頁利用最佳化。對於任何給定記憶庫之最近要求之歷史可以幫助判斷是否DRAM控制器103應該跟隨在讀取/寫入操作之後開始自動預充電,或保持該記憶體分頁為開啟。如果決定該分頁應該被保持開啟,該歷史也可以被用以決定該分頁在被關閉之前應該被保持開啟(可能維持閒置)多久之時間。於一組實施例中,
DRAM 105中每一個分頁之歷史係可以被追蹤。然而,當以上方法不能被實現於硬體中之情況下,DRAM控制器103可以被組構以根據記憶庫為基礎(如:使用DRAM分頁表106)來追蹤分頁命中、分頁落空和分頁衝突之歷史,同時對於非以記憶庫為基礎之以第一階記憶庫為基礎之歷史(利用記憶庫歷史表108和DRAM分頁表106)作出預測。
如前所述,DRAM控制器103可以追蹤DRAM 105中每一個記憶庫之分頁活動的歷史。記憶庫歷史表108中每一條項目均可以包含預測,該預測係基於(儲存於DRAM分頁表106中之)給定記憶體記憶庫中最後四個分頁存取之歷史。於要求從裁決器112贏得裁決而變成該當前之要求後,該記憶庫歷史可以根據是否該當前之要求與對該記憶庫之該先前之要求均係對於該記憶庫內相同之DRAM分頁所提出而被更新。換言之,因為追蹤係根據記憶庫為基礎來進行,這種指示與是否該當前之要求為分頁命中之指示有些許不同。例如,當前之要求可能導致分頁落空,但該當前之要求可能正在對該當前被要求之記憶庫中最近一次被要求之該同一分頁提出要求,導致該當前之要求在追蹤對於該被要求之記憶庫之分頁所作之存取時由該被要求之記憶庫之觀點而言被認為係”命中”。換句話說,分頁落空可以實際地指示該當前之要求本來可以係分頁命中,該被要求之分頁並未過早被關閉。要是該分頁並未被關閉,該當前之要求可能已經導致分頁命中或分頁衝突,而非分頁
落空。也應該注意的是,當該當前所描述之實施例之預先取得和寫入不會導致分頁歷史表108的更新時,其他實施例可以被組構成不同之形式。
第3圖顯示記憶庫歷史表108如何被存取以及如何被更新之一個實施例。如該實施例所示,進入記憶庫歷史表108之項目可以包括:自動預充電預測位元(AP),其可具有數值”1”以指示自動預充電係被預測,或數值”0”以指示未預測到自動預充電。然而,在其他實施例中,該AP的數值指示自動預充電預測可以被指定以不同於已顯示之前例,只要清楚該指定之數值所期望指示者係為何。如第3圖所示,記憶庫歷史表108可以容納個別對應於4位元標示之16條項目(210),其中每一個標示係根據對應於該四個對於給定記憶庫最近之分頁存取/要求之該記憶庫歷史而被構成。換句話說,對於該當前被要求之分頁中之預測項目之存取的該標示係根據該最後三次對於該當前被要求之記憶庫之存取(也就是,儲存於DRAM分頁表之記憶庫歷史資訊106)加上該當前之要求為基礎。
對於給定之分頁之預測可以在裁決器112已選擇該當前之要求後被進行,並且可以包含利用如上所述之標示數值來存取記憶庫歷史表108中對應之預測值。如第3圖所示,該三位元206(其係對應於該三個最近先前之存取對該當前被要求之記憶庫存取之該歷史)加上該當前要求(208)可以被用以構成該標示以存取記憶庫歷史表108中對於該當前被要求之分頁之預測值。期望對該預測值之該存取於
一個時脈週期內被進行,為了防止由額外之時脈週期所造成之延遲分頁命中。
於一組實施例中,該標示係可藉由多工該晶片選擇信號/記憶庫選擇信號和分頁命中信號,以及自該分頁表106多工該記憶庫歷史而被產生。應該要注意的一點係,於其他實施例中項目之數量可以不同,該數量係最少由正在被追蹤之最近之要求/存取所決定,而於所屬領域中具有通常知識者將了解可能之變動並不被第3圖中所示之該實施例所限制。例如,如果對於記憶庫之該五個最近之存取/要求係被追蹤,則記憶庫歷史表108係可以被32條項目(可根據五位元標示而被存取)所組構,該五位元標示包括:四位元之舊記憶庫歷史加上該當前(新的)記憶庫歷史。於所有實施例中,被追蹤之最近存取之數量可以被指定以不同於4,而且許多實施例中被追蹤之最近存取之數量可能係小於或大於4。
於跟隨在該預測之後之該時脈週期過程中,記憶庫歷史表108可以接著被更新。如第3圖所示,跟隨在該預測之後,記憶庫歷史表108可以藉由更新對應於該標示之該項目數值來作更新,其中該標示係被獲得自DRAM分頁表106之該四位元記憶庫歷史所定義,也就是該四個位元(202)對應於該最近先前對該當前被要求之記憶庫提出之該四個存取之該歷史。如果該當前之要求導致分頁命中,該AP可被更新為”0”(於某些實施例中,課題也針對於將在之後更詳加描述之可靠計數器)。如果該當前之要求導致分
頁衝突,AP可以被更新為”1”(再次地,於某些實施例中,課題針對於該可靠計數器)。如果該當前之要求導致分頁落空,AP可以被更新為”0”如果該當前被要求之列係為該被要求記憶庫中最近被存取/被要求之列,否則AP可以被更新為”1”(再一次地,於某些實施例中,課題針對於該可靠計數器)。一旦記憶庫歷史表108已經被更新,對應於分頁表106中該當前被要求之記憶庫的該記憶庫歷史項目也可以被更新以反映該新的記憶庫歷史,該記憶庫歷史目前包含該當前發生或完成之記憶體存取。
如上述所提及,於一組實施例中,記憶庫歷史表108中該預測值AP之更新可以額外地根據可靠計數器來進行。記憶庫歷史表108中每一條項目也可以包括對應之N位元可靠計數器值。該計數器可以增加,如果其對應之記憶庫之該預測係正確且飽和於該位元數所決定之數值。例如,如果記憶庫歷史表108中每一條項目均具有對應之二位元可靠計數器,則該計數器可以飽和於數值3。如果該預測係不正確,則該計數器可增加。當該計數器達到0,則該預測值(例如,記憶庫歷史表108中AP所對應之該數值)可被翻轉,指示出一串不正確之預測。於所屬領域具有通常知識者將了解該計數器值可以包括如指定之任何位元數,而且其中所使用之該正確數字係僅為範例。
對於如上所描述之該記憶庫歷史所作之追蹤係可以被用作自動預充電預測演算法之部份,該自動預充電預測
演算法係執行於DRAM控制器103,可包含三種層次之預測。
層次1
:未來於DCQ 114之要求可以被用以決定給定記憶庫中最近被存取之DRAM分頁是否應該跟隨於該存取之後立即被關閉,或者是否應該被保持開啟。也就是說,DCQ 114中其他迫切之要求是否被瞄準向特定之DRAM分頁之該狀態可以被用以進行層次1之自動預充電預測。因此,DCQ 114中每一個迫切之要求均可以被評估以決定該要求係對於那一個給定記憶庫,以及是否該要求係對於該給定記憶庫中該當前開啟之分頁。於一組實施例中,此評估可針對該開啟之分頁進行(以及其對應之給定記憶庫),該分頁係被該當前正在處理中之記憶體要求所存取。也就是說,每一個迫切之要求均可以被評估以決定是否係為對正在被存取之該記憶庫和(或)分頁之要求,並決定是否該當前正在處理中之記憶體要求係被送至具有被致能或被停用之自動預充電之DRAM記憶體。反應於DCQ 114中該迫切要求之評估所作之動作可以為以下四種之一。
(A)如果沒有任何DCQ 114中迫切之要求係對於該給定之記憶庫內之分頁所提出(也就是說,沒有任何迫切之要求係對於該給定記憶庫內之分頁所提出,因而不會導致該給定記憶庫中該開啟之分頁產生分頁命中或分頁衝突),然後根據上述該記憶庫歷史分段(section)中該記憶庫歷史資訊可進行層次2之預測(也進一步閱讀之後之層次2項目),並且該當前正在處理中之記憶體要求之該自動預充電可以因此被設定。
(B)如果沒有任何DCQ 114中迫切之要求係對於該給定之記憶庫內該開啟之分頁所提出(也就是說,沒有任何對於該給定記憶庫內之分頁所提出之迫切之要求會導致該給定記憶庫中該開啟之分頁產生分頁命中,但迫切之要求中至少一個會導致分頁衝突),接著自動預充電可以針對該當前正在處理之記憶體要求而被致能(為了跟隨在該當前記憶體要求之後關閉該給定記憶庫中該開啟之分頁)而不論記憶庫歷史表108中對應之預測係如何。
(C)如果DCQ 114中對於該給定記憶庫之所有迫切之要求係對於該給定記憶庫中該開啟之分頁(也就是說,對於該給定記憶庫之所有迫切之要求會導致該給定記憶庫中該開啟之分頁產生分頁命中),接著該給定記憶庫中該開啟之分頁可以被保持開啟,也就是自動預充電不會跟隨於該當前記憶體存取之後被進行。
(D)如果DCQ 114中對於該給定記憶庫之迫切之要求中的至少一個係對於該給定記憶庫中該開啟之分頁,則至少一個該迫切之要求係對於該給定記憶庫中關閉之分頁所提出(也就是說,對於該給定記憶庫之迫切要求中至少一個會導致該給定記憶庫中該開啟之分頁產生分頁命中,且該等迫切之要求中至少一個或導致分頁衝突),接著該給定記憶庫中該開啟之分頁可以被保持開啟,也就是說,自動預充電不會跟隨於該當前記憶體存取之後被進行。一旦所有該要求已被送出,該迫切之要求招致如上述(B)之該情況。
總而言之,情況(C)和(D)可被結合以決定是否DCQ 114
中該迫切之要求中至少一個係對於該給定記憶庫中該開啟之分頁所提出,接著該當前記憶體要求(對於該給定記憶庫)之自動預充電應該被停用。
層次2
:如果沒有DCQ 114中之迫切要求係對該給定記憶庫內之DRAM分頁所提出(如前述層次1(A)中所描述),最近之記憶庫歷史資訊可以被用以預測是否該DRAM分頁應該跟隨於該存取之後立即被關閉,或是否應該被保持開啟。該預測可以被存取於記憶庫歷史表108中如同先前所述之記憶庫歷史中所描述者。
層次3
:如果DRAM分頁已經基於層次1或層次2之預測而被關閉,則該DRAM分頁可以被保持開啟,但是自該分頁最後一次被存取後已保持閒置持續一段特定數量(可編程)之時脈週期之後該分頁可以被關閉。
應該再次留意的係該DRAM分頁表106中該記憶庫歷史、記憶庫歷史表108中該預測值以及該對應之可靠計數器值係不可以被要求所更新,其中該要求之自動預充電係決定於如前述之層次1(A)中所描述之層次1預測。
類似地,預先取得(prefetches)和寫入之要求係不可以導致利用記憶庫歷史表108來產生預測,或導致記憶庫歷史表108之更新。自動預充電是否係與這些型態之要求一起被進行也可以由前述之層次1(A)中所描述之層次1預測所決定。然而,DRAM控制器103係可以被組構以初始化在自動預充電後之該突發性寫入(burst write)中之最後寫入要求,以及初始化預先取得,以及初始化可能如任何
其他要求般影響分頁命中/分頁衝突之寫入要求。
如以上所討論,自動預充電預測演算法可以被用以預測是否自動預充電應該針對讀取/寫入要求而被進行。如果該預測未導致針對讀取/寫入要求之自動預充電,當該開啟之分頁是否應該被關閉時該問題依然維持。如果該分頁維持開啟但是閒置一段長時間,可能係該記憶庫歷史預測已經不正確,這情況可能招致分頁衝突。DRAM控制器103可以因此被組構以包含對應於每一個DRAM分頁之個別之閒置週期計數器(idle cycle counter)以追蹤給定之分頁已經開啟多久。於一組實施例中,當對應於該開啟之分頁之該閒置之週期計數器達到特定之限制,則DRAM控制器103可操作以關閉該開啟(閒置)之分頁。於一組實施例中,該特定之限制係可以被編程。因此,DRAM控制器103可以於特定數量之時脈週期之後(如:128個週期於實施例中)關閉非作用(閒置)之分頁,或於動態調整之特定時脈循環數(例如:16,32,64,96等週期)之後關閉非作用之分頁,其中該動態調整係可基於對應於DRAM分頁表歷史106中該特定之記憶體分頁之該記憶庫歷史項目。
第4圖顯示三層次自動預充電預測演算法中一部份之一個實施例之流程圖,該演算法係被記憶體控制器所執行,例如第1圖和第2圖之記憶體控制器103。輸入之記憶體要求(可能係該記憶體控制器所接收到之記憶體要求)可以如同迫切之記憶體要求般被儲存於佇列(402)。儲存於該佇列中該迫切之記憶體要求中的一個可以被選擇以進行
處理(processing)/供應(serving)、和自該佇列中被移除,並且被該選定之記憶體要求所要求之給定記憶體分頁(和對應之給定記憶體記憶庫)可以被識別(404)。基於當前預測值,是否關閉或保持該給定記憶體分頁開啟之預測將被產生,該當前預測值係對應於對該給定記憶體記憶庫之最近存取之歷史(406)。一旦該預測已被產生,未來預測值可以被更新,其中該未來預測值係對應於對該給定記憶體記憶庫之最近先前記憶體存取之給定數量(412)。該記憶體佇列中該迫切之記憶體要求係可以被分析以決定是否至少一個儲存於該儲存中之該迫切記憶體要求中係正在對該給定記憶體記憶庫提出存取之要求(410)。
如果410中之該分析指示至少一個儲存於該儲存中之該迫切記憶體要求中係正在對該給定記憶體記憶庫提出存取之要求(也就是說,至少一個儲存於該佇列中之該迫切記憶體要求係正瞄準該給定記憶體記憶庫中之記憶體分頁),儲存於該佇列中之該迫切記憶體要求可以被用來決定是否該給定記憶體分頁應該被關閉或保持開啟(414,418)。如果,相反地,該410中之分析指示沒有任何一個儲存於該儲存中之該迫切記憶體要求中係正在對該給定記憶體記憶庫提出存取之要求,則該給定記憶體分頁可以根據產生於406(416)中之預測而被關閉或保持開啟。
如果418或416中其中之一指示該給定記憶體分頁應該被關閉,一旦該選定之記憶體要求對於該給定記憶體分頁之存取已完成(並且,於一些實施例中係在該記憶體被再
次存取之前),則該給定記憶體分頁可以被關閉(422)。如果決定該給定記憶體分頁應該被維持開啟,於該選定之記憶體要求對於該給定記憶體分頁之存取已完成之後被保持開啟(424),並且可能於一段特定長度時間之後被關閉,如果該給定記憶體分頁於該特定長度時間內係維持閒置(426)。該特定時間長度可以依據時脈週期而被測量出來,並且可被編程。例如,該給定記憶體分頁可以於維持閒置長達128個時脈週期之後被關閉。於特定實施例中,該時脈週期之數量可以基於對該給定記憶體記憶庫之該最近存取歷史而被動態調整。例如,基於對該給定記憶體記憶庫之該最近存取歷史,該128個時脈週期可比被調整為16,32,64個時脈週期等等。於一些實施例中,一旦406中該預測已被產生,則該該演算法可進一步包含更新該給定記憶體記憶庫之最近存取歷史,並且更新對該給定記憶體記憶庫之最近存取歷史之對應之預測值。
這裡應該留意的係第4圖中之流程圖並沒有具體指出當該選定之記憶體存取對該給定記憶體分頁作實際存取發生之情況。於一組實施例中,於關於對該給定記憶體分頁之未來存取之該判斷已經被產生之後,對該給定記憶體分頁之該存取可能發生。於另一組實施例中,該存取可發生於當該判斷係正在被產生,或甚至該判斷被產生前。然而,該判斷係被產生以判斷一旦該選定之記憶體要求對於該給定記憶體分頁之存取已完成後(於特定實施例中,係於該記憶體被另一記憶體要求存取前),該給定記憶體分頁應該為
什麼狀況。因此,於一些實施例中,一旦關於對該給定記憶體分頁之未來存取之該判斷已經被產生,該選定之記憶體要求(指令)伴隨對應該被選定之記憶體指令之該自動預充電指標(indicator)一起被指向該記憶體(以存取該給定記憶體分頁)。如果預測該給定記憶體分頁應該被關閉,該自動預充電指標可以被致能,而如果預測該給定記憶體分頁被保持開啟,則該自動預充電指標可以被停用。一旦該選定記憶體要求對該給定記憶體分頁之存取已完成,則致能之自動預充電可以導致對應於該給定記憶庫中之該給定記憶體分頁之該列之自動預充電。跟隨於該選定記憶體要求對該給定記憶體分頁之該存取完成之後,則停用之自動預充電可以導致對應於該給定記憶庫中之該給定記憶體分頁之該列之不改變狀態(unchanged state)。
DRAM控制器可因此被組構以重新排序讀取/寫入要求,進而使該分頁命中數最大化並且最小化該分頁衝突數量,其中該重新排序可以被自動預充電預測所通知以預測是否預充電應該跟隨於讀取/寫入要求之後,為了在不需要追蹤組構於該DRAM中之個別分頁之情況下達到最佳化之效能。
於本發明已參考特定之實施例而被描述之同時,可暸解到此處特定實施例之圖式及詳細說明並不欲用來限制本發明為所揭示之特定形式。按照前面所教示者,其他的修改或變化都是可能的。本發明將涵蓋所有落於如所附申請專利範圍內所界定之本發明之精神和範圍內之修飾、等效
和替代內容。
100‧‧‧系統
101‧‧‧處理器核心
103‧‧‧記憶體控制器
104‧‧‧位址地圖
105‧‧‧記憶體
106‧‧‧DRAM分頁表
108‧‧‧記憶庫歷史表
110‧‧‧時序檢測方塊
111‧‧‧記憶體匯流排
112‧‧‧裁決器
113‧‧‧處理單元
114‧‧‧DRAM控制器要求佇列
116‧‧‧多工器
118‧‧‧寫入佇列
120‧‧‧讀取佇列
122‧‧‧接收器先進先出緩衝器
124a‧‧‧墊片
202‧‧‧四位元
206‧‧‧三位元
208‧‧‧當前要求
210‧‧‧16條項目
402、404、406、410、412、414‧‧‧步驟
416、418、422、424、426‧‧‧步驟
本發明之其他態樣可藉由閱讀上述之詳細說明及參考附加圖示而變得明顯,其中:第1圖係範例系統之方塊圖,該範例系統包括被組構以經由記憶體匯流排來控制對記憶體之存取之記憶體控制器;第2圖係第1圖中該記憶體控制器之一個實施例中部份邏輯之方塊圖;第3圖係顯示該記憶庫歷史表根據一個實施例所作之存取與更新之結構圖;第4圖係圖示三層次自動預充電預測演算法中部份步驟之一個實施例之流程圖;雖然本發明可容易作各種之修飾和替代形式,但是在此係由圖式中之範例顯示及詳細說明本發明之特定實施例。然而,應暸解到此處特定實施例之圖式及詳細說明並不欲用來限制本發明為所揭示之特定形式,反之,本發明將涵蓋所有落於如所附申請專利範圍內所界定之本發明之精神和範圍內之修飾、等效和替代內容。
402、404、406、410、412、414‧‧‧步驟
416、418、422、424、426‧‧‧步驟
Claims (30)
- 一種管理記憶體存取之方法,該記憶體具有複數個記憶體記憶庫,該方法包括:識別當前記憶體要求所要求的給定記憶體分頁,其中,該給定記憶體分頁係位於該複數個記憶體記憶庫之給定記憶體記憶庫中;根據對該給定記憶體記憶庫之最近記憶體存取的歷史所對應之當前預測值判斷該給定記憶體分頁是否應該被關閉或保持開啟;一旦該當前記憶體要求對該給定記憶體分頁之存取完成,則進行以下其中一個步驟:關閉該給定記憶體分頁,以回應導致決定該給定記憶體分頁應該被關閉之該判斷;或保持該給定記憶體分頁為開啟,以回應導致決定該給定記憶體分頁應該被保持開啟之該判斷;以及判斷等待存取該記憶體之一個或更多個額外之記憶體要求中沒有一個正在要求該給定記憶體記憶庫中之記憶體分頁;其中,該判斷該給定記憶體分頁是否應該被關閉或保持開啟係進行,以回應該一個或更多個額外記憶體要求中沒有一個正在要求該給定記憶體記憶庫中之記憶體分頁之該判斷。
- 如申請專利範圍第1項之方法,其中,該進行以下其中一個步驟係於該記憶體被再次存取之前並於該當前 記憶體要求對該給定記憶體分頁之存取完成之後進行。
- 如申請專利範圍第1項之方法,復包括於該當前記憶體要求對該給定記憶體分頁之存取完成之後關閉該給定記憶體分頁一特定時間長度,以回應該給定記憶體分頁於該特定長度時間期間維持閒置。
- 如申請專利範圍第1項之方法,復包括根據:對該給定記憶體記憶庫之第一數量之最近之前的記憶體存取所對應的第一資訊;以及該當前記憶體要求對該給定記憶體分頁之該存取所對應之第二資訊,獲得該當前預測值。
- 如申請專利範圍第4項之方法,其中,該第一資訊指示對該給定記憶體記憶庫之該第一數量之最近之前的記憶體存取有多少係對該給定記憶體分頁所提出。
- 如申請專利範圍第4項之方法,復包括於該獲得該當前預測值之後明確指出未來預測值,其中,該明確指出該未來預測值係根據對該給定記憶體記憶庫之第二數量之最近之前的記憶體存取所對應之資訊而進行。
- 如申請專利範圍第6項之方法,其中,該第二資訊指示對該給定記憶體記憶庫之該第二數量之最近之前的記憶體存取有多少係對該給定記憶體分頁所提出。
- 一種記憶體控制器,被組構以控制對具有一個或更多個記憶體記憶庫之記憶體之存取,該記憶體控制器包括:分頁表,被組構以儲存對於該一個或更多個記憶 體記憶庫之各者之個別記憶體記憶庫存取歷史;記憶體記憶庫歷史表,具有複數條項目,其中,該複數條項目之每一條項目均被組構以儲存個別之預測值,該預測值係對應於個別之記憶體記憶庫存取歷史資訊,該記憶體記憶庫存取歷史資訊係儲存於該一個或更多個記憶體記憶庫之一者之該分頁表;其中,該記憶體控制器係可操作以識別被當前記憶體要求所瞄準之給定記憶體分頁,其中,該給定記憶體分頁係位於該一個或更多個記憶體記憶庫之給定記憶體記憶庫中;其中,該記憶體控制器係可操作以自該記憶體記憶庫歷史分頁獲得當前預測值,其中,該當前預測值係基於儲存於該分頁表中對於該給定記憶體記憶庫之該至少個別記憶體記憶庫存取歷史資訊,和其中,該當前預測值指示該記憶體控制器是否該記憶體控制器應該關閉該給定記憶體分頁或保持該記憶體分頁開啟;以及其中,該記憶體控制器係配置於判斷是否任何等待記憶體要求正瞄準該給定記憶體記憶庫,且回應於判斷沒有迫切之記憶體要求正瞄準該給定記憶體記憶庫,一旦該當前記憶體要求對該給定記憶體分頁之存取被完成,則可根據該當前預測值所指示以關閉或保持該給定記憶體分頁開啟;以及其中,該迫切之記憶體要求包括一個或更多個等 待存取該記憶體之額外記憶體要求。
- 如申請專利範圍第8項之記憶體控制器,其中,該記憶體控制器係可操作以自該記憶體記憶庫歷史表之給定項目獲得該當前預測值,其中,該給定項目之位置係決定於:儲存於該分頁表中對於該給定記憶體記憶庫之至少一部分該個別記憶體記憶庫存取歷史資訊;以及對應於該當前記憶體要求之記憶體記憶庫存取資訊。
- 如申請專利範圍第8項之記憶體控制器,復包括被組構以儲存該迫切之記憶體要求之佇列。
- 如申請專利範圍第10項之記憶體控制器,其中,該記憶體控制器係可以操作以發送該當前記憶體要求至該記憶體以對於該當前記憶體要求對該給定記憶體分頁存取。
- 如申請專利範圍第11項之記憶體控制器,其中,該記憶體控制器係可以操作以自該佇列中選擇下一個記憶體要求、於發送該當前記憶體要求至該記憶體之後自該佇列移除該下一個記憶體要求、並且如同處理該當前記憶體要求一般來處理該下一個記憶體要求。
- 如申請專利範圍第12項之記憶體控制器,其中,該記憶體控制器係可以根據特定優先計劃來操作以選擇該下一個記憶體要求。
- 如申請專利範圍第13項之記憶體控制器,其中,該優 先計劃包括將優先權給予儲存於該佇列中正在要求該給定記憶體分頁之記憶體要求。
- 如申請專利範圍第13項之記憶體控制器,其中,該優先計劃包括將優先權給予儲存於該佇列中之記憶體要求,該記憶體要求係正在要求該一個或更多個記憶體記憶庫之對應者中之已開啟之個別記憶體分頁。
- 如申請專利範圍第12項之記憶體控制器,其中,該記憶體控制器係可以操作以接收輸入之記憶體要求,並且於記憶體要求自該佇列中移除時將該輸入之記憶體要求儲存於該佇列。
- 如申請專利範圍第8項之記憶體控制器,其中,當該迫切之記憶體要求中沒有一個正瞄準該給定記憶體分頁,並且該迫切之記憶體要求中至少一者係正瞄準該給定記憶體記憶庫中關閉之記憶體分頁時,一旦該當前記憶體要求對該給定記憶體分頁之存取被完成,該記憶體控制器係可以操作以關閉該給定記憶體分頁。
- 如申請專利範圍第8項之記憶體控制器,其中,當該迫切之記憶體要求中沒有一個正瞄準該給定記憶體記憶庫中任何關閉之記憶體分頁,並且該迫切之記憶體要求中至少一者係正瞄準該給定記憶體分頁時,一旦該當前記憶體要求對該給定記憶體分頁之存取被完成,該記憶體控制器係可以操作以保持該給定記憶體分頁開啟。
- 如申請專利範圍第8項之記憶體控制器,其中,當該 迫切之記憶體要求中至少一者係正瞄準該給定記憶體分頁,並且該迫切之記憶體要求中至少一者係正瞄準該給定記憶體記憶庫中關閉之記憶體分頁時,一旦該當前記憶體要求對該給定記憶體分頁之存取被完成,該記憶體控制器係可以操作以保持該給定記憶體分頁開啟。
- 如申請專利範圍第8項之記憶體控制器,其中,於獲得該當前預測值之後,該記憶體控制器係可以操作以更新儲存於該記憶體記憶庫歷史表中之未來預測值。
- 如申請專利範圍第20項之記憶體控制器,其中,該記憶體控制器係可以操作以更新儲存於該記憶體記憶庫歷史表之給定項目內之該未來預測值,其中,該給定項目之位置係決定於儲存於該給定記憶體記憶庫中該分頁表內之該個別記憶體記憶庫存取歷史資訊。
- 如申請專利範圍第21項之記憶體控制器,其中,儲存於該給定記憶體記憶庫中該分頁表內之該個別記憶體記憶庫存取歷史資訊係包括於對該給定記憶體記憶庫之特定數量之最近先前的記憶體存取期間指示該給定記憶體記憶庫中那一些記憶體分頁係被存取之資訊。
- 如申請專利範圍第20項之記憶體控制器,其中,該記憶體控制器係可以操作以識別對應於該當前記憶體要求之記憶體存取狀態,其中,該記憶體存取狀態係以下其中一種:分頁命中,指示該給定記憶體分頁係已經開啟; 分頁落空,指示於該給定記憶體記憶庫中不具有開啟之分頁;分頁衝突,指示該給定記憶體分頁係未開啟以及於該給定記憶體記憶庫中另一個記憶體分頁係開啟;其中,該記憶體控制器係可操作以根據該記憶體存取狀態來更新該未來預測值。
- 如申請專利範圍第23項之記憶體控制器;其中,當該記憶體存取狀態係為分頁命中,該記憶體控制器係可以操作以更新該未來預測值,以指示該給定記憶體分頁應該維持開啟;其中,當該記憶體存取狀態係為分頁衝突,該記憶體控制器係可以操作以更新該未來預測值,以指示該給定記憶體分頁應該被關閉;其中,當該記憶體存取狀態係為分頁落空,並且該給定記憶體記憶庫內最近開啟之分頁並非該給定記憶體分頁,則該記憶體控制器係可以操作以更新該未來預測值,以指示該給定記憶體分頁應該被關閉;以及其中,當該記憶體存取狀態係為分頁落空,並且該給定記憶體記憶庫內最近開啟之分頁係為該給定記憶體分頁,則該記憶體控制器係可以操作以更新該未來預測值,以指示該給定記憶體分頁應該維持開啟。
- 如申請專利範圍第23項之記憶體控制器,其中,該記憶體記憶庫歷史表中每一條項目均係被進一步組構以 儲存個別之可靠計數器值;其中,該記憶體控制器係可以操作以將該未來預測值儲存於該記憶體記憶庫歷史表中之給定項目內;以及其中,該記憶體控制器係可以操作以根據該記憶體存取狀態及儲存於該給定項目內之該個別之可靠計數器值來更新該未來預測值。
- 如申請專利範圍第25項之記憶體控制器,其中,當該可靠計數器值係特定數值,該記憶體控制器係可以操作以更新該未來預測值。
- 如申請專利範圍第26項之記憶體控制器,其中,該特定數值係0。
- 如申請專利範圍第26項之記憶體控制器,其中,該記憶體控制器係可以操作用以:增加該個別之可靠計數器值,當:一旦該當前記憶體要求對該給定記憶體分頁之存取已完成,該當前預測值指示該給定記憶體分頁應該被關閉並且該記憶體控制器關閉該給定記憶體分頁;或一旦該當前記憶體要求對該給定記憶體分頁之存取已完成,該當前預測值指示該給定記憶體分頁應該被保持開啟並且該記憶體控制器保持該給定記憶體分頁為開啟;以及減少該個別之可靠計數器值,當: 一旦該當前記憶體要求對該給定記憶體分頁之存取已完成,該當前預測值指示該給定記憶體分頁應該被關閉並且該記憶體控制器保持該給定記憶體分頁為開啟;或一旦該當前記憶體要求對該給定記憶體分頁之存取已完成,該當前預測值指示該給定記憶體分頁應該被保持開啟並且該記憶體控制器關閉該給定記憶體分頁。
- 如申請專利範圍第28項之記憶體控制器;其中,一旦該個別之可靠計數器值已達到特定最大數值,該記憶體控制器係可以操作以停止該個別之可靠計數器值之增加;以及其中該特定數值係0。
- 一種管理記憶體存取之方法,該記憶體具有複數個記憶體記憶庫,該方法包括:接收複數個記憶體要求並且將該接收之記憶體要求如同迫切之記憶體要求一般儲存於佇列內;選擇儲存於該佇列內該迫切之記憶體要求中的一個,並且自該佇列移除該選定之記憶體要求;識別給定記憶體分頁以及對應的給定記憶體記憶庫,其中,該記憶體記憶庫係被該選定之記憶體要求所要求:基於對該給定記憶體記憶庫之最近記憶體存取之歷史所對應之預測值,作出該給定記憶體分頁是否應 該被關閉或保持開啟之預測;判斷沒有任何儲存於該佇列中之該迫切記憶體要求係正在存取該給定記憶體記憶庫;回應該判斷,進行以下其中一個步驟:對該選定之記憶體要求致能自動預充電,以回應導致於該給定記憶體分頁應該被關閉之該預測之該作出預測;或對該選定之記憶體停用該自動預充電,以回應導致於該給定記憶體分頁應該被保持開啟之該預測之該作出預測。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/843,443 US7761656B2 (en) | 2007-08-22 | 2007-08-22 | Detection of speculative precharge |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200925859A TW200925859A (en) | 2009-06-16 |
TWI457753B true TWI457753B (zh) | 2014-10-21 |
Family
ID=39865815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097132032A TWI457753B (zh) | 2007-08-22 | 2008-08-22 | 記憶體控制器及用於管理記憶體存取之方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7761656B2 (zh) |
EP (1) | EP2191376B1 (zh) |
JP (1) | JP5305542B2 (zh) |
KR (1) | KR101554294B1 (zh) |
CN (1) | CN102084345B (zh) |
TW (1) | TWI457753B (zh) |
WO (1) | WO2009025712A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI612466B (zh) * | 2016-09-20 | 2018-01-21 | 東芝記憶體股份有限公司 | 記憶體系統及處理器系統 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157985A1 (en) * | 2007-12-18 | 2009-06-18 | Arm Limited | Accessing memory arrays |
US8429367B2 (en) * | 2007-12-28 | 2013-04-23 | Intel Corporation | Systems, methods and apparatuses for clock enable (CKE) coordination |
US8347020B2 (en) * | 2009-03-20 | 2013-01-01 | Qualcomm Incorporated | Memory access controller, systems, and methods for optimizing memory access times |
JP5428687B2 (ja) * | 2009-09-14 | 2014-02-26 | 株式会社リコー | メモリ制御装置 |
KR20110032606A (ko) * | 2009-09-23 | 2011-03-30 | 삼성전자주식회사 | 전자 디바이스의 성능 개선을 위한 전자 디바이스 컨트롤러 |
US20120059983A1 (en) * | 2010-09-03 | 2012-03-08 | David Wilkins Nellans | Predictor-based management of dram row-buffers |
US8615638B2 (en) * | 2010-10-08 | 2013-12-24 | Qualcomm Incorporated | Memory controllers, systems and methods for applying page management policies based on stream transaction information |
WO2013083194A1 (en) * | 2011-12-08 | 2013-06-13 | Huawei Technologies Co., Ltd. | Memory controller and method for controlling accesses to a memory |
US8990473B2 (en) * | 2012-10-04 | 2015-03-24 | Applied Micro Circuits Corporation | Managing requests to open and closed banks in a memory system |
US9251048B2 (en) * | 2012-10-19 | 2016-02-02 | International Business Machines Corporation | Memory page management |
CN103902462B (zh) * | 2012-12-27 | 2018-03-09 | 华为技术有限公司 | 内存管理方法、内存管理装置及计算机 |
US20150199134A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | System and method for resolving dram page conflicts based on memory access patterns |
KR20160061704A (ko) | 2014-11-24 | 2016-06-01 | 삼성전자주식회사 | 페이지 상태 알림 기능이 있는 메모리 장치 |
WO2016089355A1 (en) | 2014-12-01 | 2016-06-09 | Hewlett Packard Enterprise Development Lp | Auto-negotiation over extended backplane |
US10616142B2 (en) | 2015-10-12 | 2020-04-07 | Hewlett Packard Enterprise Development Lp | Switch network architecture |
US9703493B2 (en) | 2015-12-14 | 2017-07-11 | Qualcomm Incorporated | Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache |
US10379748B2 (en) * | 2016-12-19 | 2019-08-13 | International Business Machines Corporation | Predictive scheduler for memory rank switching |
US11029879B2 (en) * | 2018-01-29 | 2021-06-08 | Samsung Electronics Co., Ltd | Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel |
JP2019204150A (ja) * | 2018-05-21 | 2019-11-28 | 日本電信電話株式会社 | 通信用入出力装置 |
US10991425B2 (en) | 2018-08-13 | 2021-04-27 | Micron Technology, Inc. | Access line grain modulation in a memory device |
US11189662B2 (en) | 2018-08-13 | 2021-11-30 | Micron Technology | Memory cell stack and via formation for a memory device |
CN109658009B (zh) * | 2019-01-11 | 2024-05-07 | 杭州市电力设计院有限公司 | 基于随机原理与排队理论的电动汽车充电站能量管理方法 |
US10991417B1 (en) | 2019-05-24 | 2021-04-27 | Xilinx, Inc. | Auto-precharge management in a controller |
US11373695B2 (en) * | 2019-12-18 | 2022-06-28 | Micron Technology, Inc. | Memory accessing with auto-precharge |
KR102343550B1 (ko) * | 2020-04-10 | 2021-12-24 | 원광대학교산학협력단 | 스몰 액티브 커맨드를 이용한 메모리 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133995B1 (en) * | 2002-12-16 | 2006-11-07 | Advanced Micro Devices, Inc. | Dynamic page conflict prediction for DRAM |
US20070033353A1 (en) * | 2004-05-14 | 2007-02-08 | Jeddeloh Joseph M | Memory hub and method for memory sequencing |
TW200731081A (en) * | 2005-12-19 | 2007-08-16 | Via Tech Inc | A DMA controller with self-detection for global clock-gating control |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0394344A (ja) * | 1989-09-07 | 1991-04-19 | Nec Corp | 情報処理装置 |
US5715421A (en) * | 1992-10-16 | 1998-02-03 | Seiko Epson Corporation | Apparatus and method of addressing paged mode memory including adjacent page precharging |
JP3254019B2 (ja) * | 1992-11-30 | 2002-02-04 | 富士通株式会社 | データ先読み制御装置 |
US5732236A (en) * | 1993-05-28 | 1998-03-24 | Texas Instruments Incorporated | Circuit and method for controlling access to paged DRAM banks with request prioritization and improved precharge schedule |
JPH07105686A (ja) * | 1993-10-04 | 1995-04-21 | Oki Electric Ind Co Ltd | メモリ制御装置 |
US5625790A (en) * | 1995-09-14 | 1997-04-29 | Micron Technology, Inc. | Method and apparatus for reducing the access time of a memory device by decoding a row address during a precharge period of the memory device |
US5889714A (en) * | 1997-11-03 | 1999-03-30 | Digital Equipment Corporation | Adaptive precharge management for synchronous DRAM |
US5983325A (en) * | 1997-12-09 | 1999-11-09 | Advanced Micro Devices, Inc. | Dataless touch to open a memory page |
US6199145B1 (en) * | 1998-02-27 | 2001-03-06 | Intel Corporation | Configurable page closing method and apparatus for multi-port host bridges |
US6219765B1 (en) * | 1998-08-03 | 2001-04-17 | Micron Technology, Inc. | Memory paging control apparatus |
US6401180B1 (en) * | 1999-01-04 | 2002-06-04 | Advanced Micro Devices, Inc. | Bank history table for improved pre-charge scheduling of random access memory banks |
JP2001166985A (ja) * | 1999-12-10 | 2001-06-22 | Nec Gumma Ltd | メモリ制御装置 |
US7127573B1 (en) * | 2000-05-04 | 2006-10-24 | Advanced Micro Devices, Inc. | Memory controller providing multiple power modes for accessing memory devices by reordering memory transactions |
US6785793B2 (en) * | 2001-09-27 | 2004-08-31 | Intel Corporation | Method and apparatus for memory access scheduling to reduce memory access latency |
US6829184B2 (en) * | 2002-01-28 | 2004-12-07 | Intel Corporation | Apparatus and method for encoding auto-precharge |
US7124260B2 (en) * | 2002-08-26 | 2006-10-17 | Micron Technology, Inc. | Modified persistent auto precharge command protocol system and method for memory devices |
CN1279450C (zh) * | 2002-11-13 | 2006-10-11 | 矽统科技股份有限公司 | 内存读取/写入仲裁方法 |
JP4250989B2 (ja) * | 2003-03-26 | 2009-04-08 | 日本電気株式会社 | メモリアクセス制御装置 |
US20050060533A1 (en) * | 2003-09-17 | 2005-03-17 | Steven Woo | Method, device, software and apparatus for adjusting a system parameter value, such as a page closing time |
US7167946B2 (en) * | 2003-09-30 | 2007-01-23 | Intel Corporation | Method and apparatus for implicit DRAM precharge |
US7130967B2 (en) * | 2003-12-10 | 2006-10-31 | International Business Machines Corporation | Method and system for supplier-based memory speculation in a memory subsystem of a data processing system |
KR100650730B1 (ko) * | 2004-12-28 | 2006-11-27 | 주식회사 하이닉스반도체 | 메모리 장치의 프리차지 타이밍 제어 방법 및 그 장치 |
US7167385B2 (en) * | 2005-02-11 | 2007-01-23 | International Business Machines Corporation | Method and apparatus for controlling the timing of precharge in a content addressable memory system |
JP4839749B2 (ja) * | 2005-09-20 | 2011-12-21 | 日本電気株式会社 | コンピュータ、携帯端末装置、電力制御方法、電力制御プログラム |
US7606988B2 (en) * | 2007-01-29 | 2009-10-20 | International Business Machines Corporation | Systems and methods for providing a dynamic memory bank page policy |
-
2007
- 2007-08-22 US US11/843,443 patent/US7761656B2/en active Active
-
2008
- 2008-07-28 WO PCT/US2008/009098 patent/WO2009025712A1/en active Application Filing
- 2008-07-28 KR KR1020107006272A patent/KR101554294B1/ko active IP Right Grant
- 2008-07-28 JP JP2010521845A patent/JP5305542B2/ja active Active
- 2008-07-28 EP EP08794791.7A patent/EP2191376B1/en active Active
- 2008-07-28 CN CN200880108416.8A patent/CN102084345B/zh active Active
- 2008-08-22 TW TW097132032A patent/TWI457753B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133995B1 (en) * | 2002-12-16 | 2006-11-07 | Advanced Micro Devices, Inc. | Dynamic page conflict prediction for DRAM |
US20070033353A1 (en) * | 2004-05-14 | 2007-02-08 | Jeddeloh Joseph M | Memory hub and method for memory sequencing |
TW200731081A (en) * | 2005-12-19 | 2007-08-16 | Via Tech Inc | A DMA controller with self-detection for global clock-gating control |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI612466B (zh) * | 2016-09-20 | 2018-01-21 | 東芝記憶體股份有限公司 | 記憶體系統及處理器系統 |
Also Published As
Publication number | Publication date |
---|---|
JP5305542B2 (ja) | 2013-10-02 |
TW200925859A (en) | 2009-06-16 |
JP2010537310A (ja) | 2010-12-02 |
US7761656B2 (en) | 2010-07-20 |
US20090055570A1 (en) | 2009-02-26 |
CN102084345A (zh) | 2011-06-01 |
KR20100055503A (ko) | 2010-05-26 |
WO2009025712A1 (en) | 2009-02-26 |
CN102084345B (zh) | 2014-06-18 |
EP2191376A1 (en) | 2010-06-02 |
KR101554294B1 (ko) | 2015-09-18 |
EP2191376B1 (en) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI457753B (zh) | 記憶體控制器及用於管理記憶體存取之方法 | |
US6687172B2 (en) | Individual memory page activity timing method and system | |
KR100824487B1 (ko) | 버퍼된 기록들 및 메모리 페이지 제어 | |
US6298424B1 (en) | Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation | |
US7536530B2 (en) | Method and apparatus for determining a dynamic random access memory page management implementation | |
US6321296B1 (en) | SDRAM L3 cache using speculative loads with command aborts to lower latency | |
US6006307A (en) | Computer system employing a mirrored memory system for providing prefetch bandwidth | |
JP3629519B2 (ja) | プログラマブルsram及びdramキャッシュ・インタフェース | |
JPH04233641A (ja) | データプレフェッチの方法およびその装置 | |
KR20070086640A (ko) | 메모리내의 명령을 실행하기 위한 우선순위 부여 방식 | |
US7133995B1 (en) | Dynamic page conflict prediction for DRAM | |
EP1579335A2 (en) | Read-write switching method for a memory controller | |
US20080098176A1 (en) | Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching | |
KR20220017006A (ko) | 메모리-인식 프리-페칭 및 캐시 바이패싱 시스템 및 방법 | |
US6836831B2 (en) | Independent sequencers in a DRAM control structure | |
US6801982B2 (en) | Read prediction algorithm to provide low latency reads with SDRAM cache | |
WO2016043158A1 (ja) | メモリ制御回路および記憶装置 | |
US7076617B2 (en) | Adaptive page management | |
KR102679774B1 (ko) | 히스토리 기반 메모리 시스템 및 그 제어 방법 | |
EP0471462B1 (en) | Computer memory operating method and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |