TWI512724B - 用於改良記憶體存取之次序的系統、裝置及方法 - Google Patents

用於改良記憶體存取之次序的系統、裝置及方法 Download PDF

Info

Publication number
TWI512724B
TWI512724B TW102137335A TW102137335A TWI512724B TW I512724 B TWI512724 B TW I512724B TW 102137335 A TW102137335 A TW 102137335A TW 102137335 A TW102137335 A TW 102137335A TW I512724 B TWI512724 B TW I512724B
Authority
TW
Taiwan
Prior art keywords
memory
request
requests
word
read
Prior art date
Application number
TW102137335A
Other languages
English (en)
Other versions
TW201403599A (zh
Inventor
David R Resnick
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of TW201403599A publication Critical patent/TW201403599A/zh
Application granted granted Critical
Publication of TWI512724B publication Critical patent/TWI512724B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

用於改良記憶體存取之次序的系統、裝置及方法
本發明係關於電腦系統,且更特定而言係關於記憶體控制器增加記憶體存取效率之運作方法。
申請專利範圍優先權
本申請案主張於2007年11月15日提出申請序列號為第11/940,745號名稱為"用於改良記憶體存取之次序的系統、裝置及方法"之美國專利申請案。
在多數電腦及資料處理系統中,主要活動記憶體(其通常係隨機存取記憶體(RAM))係動態隨機存取記憶體(DRAM)。一DRAM之結構通常由組織成多個庫之若干記憶體胞組成。每一庫對應於一記憶體胞陣列,其中每一胞均相應地與一記憶體位址處之一資料數位(例如一位元)相關聯。特定而言,一庫內之記憶體位址分別由一列位址及一行位址指定,其中每一列位址定址一記憶體頁。因此,每一頁記憶體含有對應於該頁內之不同行指定之若干記憶體位置。
當執行一連串存取請求時,一頁請求可發生於當前正打開另一頁之庫,通常將此稱為一"頁衝突",因此必須首先關閉(例如,預充電)先前所打開之頁。在關閉該先前頁之後,可隨即打開(例如,激活)所請求頁,且然後可執行對該所請求頁之讀取或寫入作業。當在無打 開頁之庫中發現當前所請求頁時可發生一"頁未命中",因此需要執行一激活程序。當一當前記憶體存取請求係針對一已自一先前記憶體存取請求而打開之頁,則可稱一"頁命中"發生。
由於必須針對頁衝突及相對於頁命中請求之頁未命中記憶體存取來執行額外處理,因此執行前兩個過程所需之時間明顯多於後者所需之時間。在微處理器技術發展之早期階段,以先入先出方式接收及完成對存取用於讀取及寫入作業之DRAM記憶體頁之請求。此處理可係無效,從而導致大量頁未命中及衝突,且因此需要處理器及/或記憶體控制器資源廣泛致力於對記憶體頁之預充電及激活。
最近,已研發出基於優先級來進行記憶體存取之更先進處理方法。存取請求之優先級可係基於各種因素,例如發送該請求之器件類型、所請求存取之類型、期望由該請求存取之記憶體位址等。然而,嚴格依照優先級來提供記憶體存取之問題係,低優先級請求可在過長的時間週期內係被拒絕存取。
此外,系統中微處理器之數目、微處理器中核心之數目以及每核心之處理執行緒之數目近期已顯著增加,且期望在未來幾年內繼續增加。可構想出具有成百上千個執行緒之系統。此等系統通常經設計以使得多個處理器晶片存取一共同記憶體。此等請求存取一共同記憶體之多個資源對該記憶體施加了額外的壓力。
核心與執行緒數目增加之效應中之一者係將需要顯著增大之記憶體頻寬,且一主要負面效應係,該記憶體系統所經歷之位址請求流將由於實際獨立或看似獨立之程式執行順序之數目增加而更為隨機。層階1及層階2快取之大小增加(此係過去多數系統實施方案解決總記憶體頻寬及延時問題之方式)可不夠有效且由於核心數目增加以及對合理小片大小之限制而具有較少增長機率。此外,每一核心中正執行之執行緒數目之增加將很可能使平均快取命中率降低,而此同樣導致 記憶體訊務增加。
在當前之DRAM技術中,循環一記憶體庫(激活該庫、讀取或寫入所請求資料並對該庫預充電)比資料移動時間更長。此長循環時間意味著,若兩個請求在時間上接近而又係針對同一記憶體庫,則記憶體輸入/輸出(IO)引腳變為閒置狀態達一時間週期以等待第一庫循環完成以便可開始第二庫循環。由於DRAM通常具有可獨立循環之多個庫,因而此庫時序衝突會浪費可用記憶體頻寬。
鑒於此類不同記憶體請求源,需要可在多個執行緒及多個處理器之系統環境中產生經改良記憶體效能之裝置及方法。
100‧‧‧記憶體控制器
102‧‧‧記憶體請求
104‧‧‧讀取資料匯流排
110‧‧‧請求佇列
120‧‧‧庫解碼器
130-0‧‧‧庫佇列0
130-1‧‧‧庫佇列1
130-n‧‧‧庫佇列n
140‧‧‧排序單元
142‧‧‧順序控制器
144‧‧‧RMW單元
150‧‧‧資料緩衝器
154‧‧‧讀取緩衝器
160‧‧‧記憶體介面
170‧‧‧時序控制器
172‧‧‧記憶體控制匯流排
175‧‧‧記憶體資料匯流排
200‧‧‧處理系統
210‧‧‧處理器
220‧‧‧圖形處理器
225‧‧‧特殊用途請求器
230‧‧‧請求器
240‧‧‧請求匯流排
250‧‧‧橋接器單元
260‧‧‧匯流排橋接器
265‧‧‧周邊匯流排
270‧‧‧周邊器件
280‧‧‧記憶體匯流排
290‧‧‧記憶體卡
292‧‧‧記憶體裝置
300‧‧‧記憶體子系統
以下圖式圖解說明本發明實施例,在圖式中:圖1係一處理系統之簡化系統方塊圖;圖2係一記憶體控制器之簡化方塊圖;圖3係圖解說明一用於對記憶體請求重排序之過程之簡化流程圖;圖4係圖解說明一用於執行經重排序記憶體請求之過程之簡化流程圖;且圖5係圖解說明一用於執行讀取-修改-寫入作業之記憶體存取請求之過程之簡化流程圖。
本文所揭示實施例包含用於在多個執行緒及多個處理器之系統環境中產生經改良記憶體效能之裝置及方法。
在以下詳細闡述中,將參照構成本文一部分之附圖,且附圖中以圖解說明方式顯示其中可實踐本發明之具體實施例。充分詳細地闡述此等實施例以使熟習此項技術者能夠實踐本發明,但應瞭解,亦可利用其他實施例並可作出結構、邏輯及電性改動,而此並不背離本發 明之範疇。
在此闡述中,為不在不必要細節上模糊本發明,可以方塊圖形式顯示電路及功能。此外,所顯示及闡述之具體電路實施方案僅係實例,且除非本文中另有規定,否則不應被視為實施本發明之唯一方式。塊定義以及對各塊之間的邏輯之劃分呈現一具體實施方案。熟習此項技術者將容易明瞭,可以諸多其他劃分解決方案來實踐本發明。在極大程度上,當關於時序考量因素等細節對獲得對本發明之完整理解並非必需且處於熟習此項技術者之能力範圍內時,可將此等細節省卻。
為易於闡述,下文所論述之實施例係與動態隨機存取記憶體(DRAM)器件聯合使用。然而,應瞭解,本發明不限於包括DRAM之應用。而是,應強調,本發明實施例可與其他類型之隨機存取記憶體聯合使用,例如靜態RAM(SRAM)以及DRAM之諸多不同子種類,其中以非限定性實例方式包含:快速頁模式DRAM(EPM DRAM)、擴展資料輸出DRAM(EDO DRAM)、猝髮式EDO DRAM、同步DRAM(SDRAM)、雙倍資料速率DRAM(DDR2 DRAM及DDR3 DRAM)、Rambus DRAM(RDRAM)等。
出於清晰呈現及闡述之目的,某些圖式可將信號圖解說明為一單個信號。熟習此項技術者應瞭解,該信號可表示一信號匯流排,其中該匯流排可具有各種位元寬度,且可對任一數目之資料信號(其中包含一單個資料信號)實施本發明。
圖1係根據本發明揭示內容之實施例包含記憶體控制器100之處理系統200之簡化系統方塊圖。處理系統200可包含一個或一個以上處理器210、一個或一個以上圖形處理器200及耦合至請求匯流排240之一個或一個以上特殊用途請求器235。以非限定性實例方式,此等特殊用途請求器可包含數位信號處理器、浮點處理器、媒體處理器、網 路管理器等等。處理器210、圖形處理器220以及特殊用途請求器235在本文中可統稱為請求器230。此外,在某些實施例中,請求器230中之每一者可包含一單獨請求匯流排240(未顯示)。請求匯流排240可包含諸如(舉例而言)控制信號、位址信號、資料信號、每一請求器230之唯一識別符以及請求器230內之多個處理器或多個處理執行緒之唯一識別符。
橋接器單元250耦合至請求匯流排240(或多個請求匯流排)。橋接器單元250包含記憶體控制器100且還可包含匯流排橋接器260。雖未顯示,但熟習此項技術者將認識到,處理系統200可包含多個記憶體控制器100及多個匯流排橋接器260。另外,橋接器單元250可與記憶體控制器100及匯流排橋接器260作為單獨器件而組態,或橋接器單元250可將記憶體控制器100及匯流排橋接器260整合至一單個器件中。另外,橋接器單元250或單獨組件記憶體控制器100及匯流排橋接器260可與請求器單元230整合至相同封裝或積體電路中。
記憶體控制器100藉由一個或一個以上記憶體匯流排280耦合至記憶體子系統300。每一記憶體匯流排280接納包含至少一個記憶體器件292之記憶體組件290(本文中亦稱為記憶體卡)。記憶體組件290可形成為一記憶體卡或一記憶體模組。可用於處理系統200中之記憶體模組之非限定性實例包含單進線記憶體模組(SIMM)、雙進線記憶體模組(DIMM)及Rambus進線記憶體模組(RIMM)。包含記憶體組件290及記憶體裝置292之各種組態之記憶體子系統300在本文中可簡稱為記憶體。此外,無需將該等記憶體組件封裝為一卡或模組。作為一非限定性實例,可以三維封裝組態方式將該等記憶體組件安裝於處理器210或其他請求器230頂部上。
將匯流排橋接器260耦合至至少一個周邊匯流排265。可將各種器件270耦合至周邊匯流排265。作為非限定性實例,此等器件可包含 儲存器控制器、輔助匯流排橋接器、多媒體處理器、舊型器件介面及雜項輸入/輸出(I/O)器件,例如鍵盤、滑鼠及打印機。匯流排橋接器260或記憶體控制器100亦可耦合至一個或一個以上專用高速匯流排。作為一非限定性實例,在個人電腦中,該專用匯流排可係一用於將高效能視訊卡或其他高頻寬周邊設備耦合至處理系統200之加速圖形埠(AGP)匯流排或周邊組件互連延伸(PCI-X)匯流排。
熟習此項技術者將認識到,圖1所圖解說明之處理系統200僅係可與記憶體控制器100之實施例一起使用之處理系統之一個非限定性實例。儘管圖1圖解說明尤其適用於通用電腦(例如,個人電腦或工作站)之處理架構,但應認識到,可作出已衆所周知之修改以將處理系統200組態為更適用於各種應用。舉例而言,可使用一較簡單架構來實施需要處理之諸多電子器件,該架構可依賴於處理器210及耦合至記憶體組件290、直接耦合至記憶體裝置292或其組合之記憶體控制器100。
此等電子裝置可包含但不限於:聲訊/視訊處理器及記錄器、博弈控制臺、數位電視機、有線或無線電話、導航器件(包含基於全球定位系統(GPS)及/或慣性導航之系統)及數位相機及/或記錄器。該等修改可包含(舉例而言)消除不必要之組件、添加專用器件或電路及/或整合複數個器件。
圖2係根據本發明揭示內容一實施例之記憶體控制器100之簡化方塊圖。記憶體控制器100包含:請求佇列110、庫解碼器120、庫佇列(130-0、130-1至130-n)、排序單元140、資料緩衝器150、記憶體介面160及時序控制器170。可存在一與記憶體子系統300中每一記憶體庫相關聯之庫佇列130。然而,庫佇列130亦可經組態以操控多個庫。
記憶體請求進入記憶體請求匯流排240上之記憶體控制器100,並以先入先出方式在請求佇列110中被接收。如上所述,請求匯流排 240可包含控制信號、位址信號、資料信號、每一請求器230(圖1)之唯一識別符及請求器230內多個處理器或多個處理執行緒之唯一識別符。可將諸多或所有此等多個信號儲存於庫佇列130中,因此記憶體控制器100可保存並追蹤在記憶體控制器100中未決之關於每一記憶體請求之必要資訊。
庫解碼器120依照所接收請求進入請求佇列110之順序來處理該等請求,並基於(舉例而言)庫及列位址資訊將該等所接收請求置於庫佇列130中之一者中。排序單元140追蹤庫佇列130中之資訊,並向記憶體介面160及時序控制器170指示應自庫佇列130提取記憶體請求之次序;以及哪一庫佇列130應供應下一記憶體存取請求。自以下論述可明瞭,排序單元140可包含一用於控制庫佇列內各種記憶體請求之順序(例如次序)之順序控制器142。排序單元140還可包含一用於控制讀取-修改-寫入(RMW)循環之RMW單元144。RMW單元144亦可與排序單元140分離。在此情形下,庫解碼器120可將RMW單元視為一內部庫,同樣亦可將排序單元140視為內部庫。
記憶體介面160及時序控制器170基於記憶體匯流排280上之記憶體類型藉助適當之時序及控制而在記憶體匯流排280上產生及控制記憶體存取請求。作為非限定性實例,在來自排序單元140之引導下,記憶體介面160及時序控制器170可產生用於在記憶體匯流排280上對DRAM之匯流排循環進行預充電、激活、讀取、寫入及更新之適當命令及匯流排循環。
資料緩衝器150可組態為一單個緩衝器,其能夠保存指定用於記憶體子系統300之寫入資料、自記憶體子系統300返回之讀取資料、讀取-修改-寫入資料或其組合。庫佇列130可分離為讀取佇列及寫入佇列(未顯示)以使得能夠更容易地追蹤相對於讀取之寫入。此分離可有助於偵測可對哪些記憶體請求重排序,如下文之更全面解釋。另外, 可將寫入資料連同對應記憶體寫入請求設置於庫佇列中,且可將彼資料自資料緩衝器150移除。
對於寫入作業而言,寫入資料伴隨該記憶體請求。在讀取或寫入命令之後將寫入記憶體請求自適當庫佇列130移除(亦即解除分配)且已在記憶體控制匯流排172及記憶體資料匯流排175上啟動相關聯寫入資料。
對於讀取作業而言,請求匯流排240上之記憶體請求102不包含資料。因此,無需在將記憶體請求設置於庫佇列130中時分配匯流排緩衝器150中用於讀取請求之空間。而是,可在已於記憶體控制匯流排172上啟動讀取作業且讀取資料在記憶體資料匯流排175上返回時分配資料緩衝器150空間。另一選擇係,控制邏輯可追蹤未完成讀取請求之數目並在讀取緩衝器面臨溢出危險時防止進一步讀取請求。
該讀取記憶體請求可視記憶體控制器100如何組態而在庫佇列130中保持未決狀態達各種不同時間。作為一個實例,庫佇列130可包含需用來將資料返回至其適當請求器230之所有請求資訊,例如記憶體循環類型、發起請求器230、發起處理執行緒及類似資訊。在此實例中,資料緩衝器150可僅包含讀取資料及一指示哪一實體作出相應請求以使得資料可在讀取資料匯流排104上正確返回之標籤。排序單元140使用來自庫佇列130之請求資訊及來自資料緩衝器150之相關聯資料以在請求匯流排240上將資料返回至適當請求器230。在返回該資料後,可將記憶體請求及相關聯讀取資料分別自適當庫佇列130及資料緩衝器150移除(亦即,解除分配)。
作為另一實例,當在記憶體匯流排280上處理一讀取請求時,可將請求資訊傳送至資料緩衝器150以使得該請求資訊處於資料緩衝器150中。在此情形下,由於欲將讀取資料返回至適當請求器230之所有資訊皆處於資料緩衝器150中,因此當在記憶體匯流排280上處理記憶 體請求時可將該請求自庫佇列移除。排序單元140使用來自資料緩衝器150之請求資訊及相關聯資料以在請求匯流排240上將資料返回至適當請求器230。在返回該資料後,可將記憶體請求及相關聯讀取資料自資料緩衝器150移除(亦即,解除分配)。
一有效記憶體系統設法使其資料引腳在盡可能接近100%時間內保持充滿有用資料。出於彼目的,且除非在下文論述中有所陳述,將記憶體作業視為"已關閉庫"作業。換言之,在記憶體引用結束時對所有記憶體引用進行預充電。儘管可存在與不得不執行更多列位址選擇作業相關聯之額外開銷,但由於多處理器及多執行緒系統環境中請求流之隨機性,已關閉庫作業仍有用。即使一執行緒正作出一經排序請求流(如記憶體控制器100及記憶體系統所經歷),但有太多自其他執行緒交插之其他請求以至於幾乎沒有機會在其他請求已使該執行緒曾引用之打開頁無效之前經歷來自原始執行緒之第二請求。
此已關閉庫政策不同於通常用於單個處理器系統中之習用記憶體控制器。在彼等習用記憶體控制器中使用一打開庫政策,此乃因極有可能來自請求器230之時間接近之存取將係針對相同庫及彼等庫內之相同頁。
然而,在某些情形下,有利地可係識別對一相同DRAM頁之存取並繞過預充電作業以使得針對該相同頁之背對背作業係打開庫且變得更為有效。為增強識別針對一相同頁之記憶體請求並使該庫打開以供後續存取之此能力,可有用地相對於請求佇列110中之接收次序對記憶體請求重排序。
在單個處理器系統中,由於來自記憶體之資料恰好係按照該單個處理器對其期望之次序,因此記憶體控制器可經設計以使請求保持其被做出之次序。然而,維持此次序對於記憶體系統而言通常效果不佳(亦即,記憶體頻寬可缺失)。然而,當存在多個核心,且甚至同一 核心中存在多個執行緒時,將會出現可由使請求保持按次序而引起之記憶體系統效能問題。
一般而言,當保持按次序以供引用相同記憶體位址時,即幾乎不存在由不按次序地返回請求而引起之程式校正問題。在極大程度上,將同步及強制排序指令添加至處理器之指令集以視需要啟用資料及程式排序,以在尚未存在該等指令之情況下協調核心與執行緒之間的活動。因此,編譯器寫入器及類似低階程式最擔心排序問題。的確有時將程式同步功能添加至系統之記憶體架構中,如下文對記憶體系統中原子及位元組啟用能力之論述中所說明。
即使必須將每一核心或每一執行緒之請求保持嚴格程式請求次序,但若記憶體控制器100可斷定一請求來自此執行緒或核心抑或彼執行緒或核心(基於請求匯流排240上之資訊),則其可將每一程式流之請求保持按次序並同時允許無衝突請求(來自不同核心及執行緒之請求)相對於彼此打亂次序。另外,該控制器使用此源資訊將讀取資料路由回至請求源或使用此源資訊來指示一錯誤(若有錯誤發生)。
在此重排序政策中,若庫佇列130中之"較老"請求係針對一繁忙庫,則可先於彼較老請求來選擇一空閒庫之請求(只要遵循其他記憶體時序及使用規則)。此重排序使得本可能不會使用之匯流排時間得以有效地使用。
另外,可將自請求佇列110傳入之記憶體請求與適當庫佇列中之其他記憶體請求進行比較以確定該新記憶體請求是否係與其他未決請求中之一者針對一相同頁。若是,則可在彼未決請求之後將該新記憶體請求置於該相同頁。在此情形下,可取代該關閉庫政策以允許對彼相同頁之背對背存取。
當然,藉由重排序,某些請求可被推遲或不止一次地移動。因此,排序單元140可包含一時序單元或類似機構以指示該佇列中請求 之年齡並修改一"老"請求以使其具有較高優先級並及時被執行。
在讀取循環與寫入循環之間切換資料方向時可需要多個記憶體時鐘來使資料匯流排轉向。若該轉向時間為兩個時鐘,其中每一資料傳送花費四個時鐘(假設雙向DDR傳送及對DRAM之含8個資料請求之叢發),則當請求在讀取與寫入之間交替時可缺失33%的尖峰記憶體頻寬。因此,若記憶體讀取與其他記憶體讀取組合在一起,且記憶體寫入與其他記憶體寫入組合在一起,則可減少由匯流排轉向時間所致之無效。
一般而言,可對讀取及寫入型記憶體存取請求重排序。然而,記憶體控制器100可實施一政策:僅在必要時重配置寫入請求,以達到經重排序之順序不與較早接收之請求產生任何定址衝突,或另外不會因庫佇列130中之其他記憶體存取請求而干擾已儲存或欲儲存於相關記憶體位置中之資料之程度。同樣,必須使對相同程式位址之引用保持程式請求次序。若請求係在不同程式實體之間,則此請求次序通常由軟體執行,而若請求係藉由一單個請求源(例如核心或執行緒)完成,則認為由記憶體控制器100來遵循此請求次序。
作為另一讀取對寫入政策,給予讀取分組優於寫入分組之優先級可係有用。換言之,可向任何讀取指派優先級,直至某一原因(例如佇列已滿或位址衝突)迫使切換至寫入。自請求器230之角度而言,此讀取優先級政策可減少讀取延時,其代價係包含可驗證未將一讀取請求重排序在針對相同位址之寫入請求前面以確保該讀取請求自處於佇列前面之未決寫入獲得資料之邏輯。然而,在某些實施例中,若針對具有一未決寫入之位址執行一讀取,則記憶體控制器100可直接自適當佇列返回寫入資料,因此記憶體並未實際上被讀取。
處理器或其他請求器230有時有必要寫入個別位元組並執行讀取-修改-寫入作業。儘管可能看起來個別小資料數量不會被很頻繁地寫 入,但隨著核心及執行緒在共同程式上工作時數目增加,此等作業亦將增多。一種多個執行緒進行通信之最佳方式係將作為記憶體系統之一部分而儲存及管理之"強大"記憶體作業,例如旗標及信標。此等旗標及信標通常需要記憶體位元組層階或字層階之作業良好地工作。
讀取-修改-寫入(RMW)係自一記憶體位址讀取一值、修改曾讀取之值且然後將該經修改值寫入回至該記憶體位址之一強大順序。多執行緒程式化之一習用方法係使用RMW鎖定來同步化對共享資源之存取。諸如旗信標等同步基元可由多執行緒程式使用以確保若同時執行碼之某些部分將破壞碼之該等部分之間可共享之記憶體結構,則不會這樣做。若一個執行緒試圖獲得已由另一執行緒保持之鎖定,則該執行緒將阻塞直至該鎖定解除。
非阻塞演算法可使用諸如(舉例而言)比較與調換(CAS)之原子讀取-修改-寫入作業。該比較與調換CPU指令(或x86架構之CMPXCHG指令)係一自動地以原子方式將一記憶體位置之內容比較於一既定值且在該二者相同之情況下將彼記憶體位置之內容修改為一既定新值之特殊指令。CAS可用於有效地實施多處理器系統中之信標。
習用地,已用處理器中之執行邏輯或藉助處理器之資料快取中之邏輯完成對位元組寫入及信標之支持。然而,在某些系統中,其可用於支持將此等小運算元作為個別資料項寫入至最終記憶體目的地(亦即,記憶體子系統300)且不作為一整個快取線之一部分。
另外,諸多處理器使用32位元及64位元資料項,且可極為頻繁地寫入彼等類型之項。但是,作為一非限定性實例,一典型DRAM協定及介面可移動32位元組叢發。若僅需要寫入四個位元組,則可需要個別位元組-寫入-選擇信號。然而,在某些記憶體系統中,位元組啟用可能不可用。在此等系統中,可必要地讀入(舉例而言)一含有4位元組資料項之32位元組叢發。然後,將該四個資料位元組插入至相當 於32位元組之資料,且然後將經修改之32位元組數量重新寫入回至記憶體。在此實例中,當四個位元組本應在介面中存在位元組啟用能力時被發送時,已既讀取又寫入64位元組資料。持續對不需要之資料之此移動,但其浪費記憶體效能。一般而言,在本文中將一記憶體存取之寬度稱為"資料寬度"。作為非限定性實例,此資料寬度可係記憶體匯流排280之實體位元寬度或一記憶體叢發循環之寬度。另外,除非本文另有規定,否則RMW作業將統稱為具體RMW作業以及對一資料寬度之若干部分之寫入。
因此,對於RMW作業而言,控制器100可經組態以管理此等部分寫入作業。另外,RMW單元144中之資料緩衝器可經組態以保持此等RMW作業之經保留區域,以使得欲讀取之資料存在於記憶體控制器100中,從而不再需要在記憶體匯流排280上執行一讀取作業。
圖3、4及5係圖解說明用於管理根據本發明揭示內容之實施例之經重排序記憶體存取請求及RMW作業之過程之簡化流程圖。當闡述圖3、4及5時,亦將參照圖1及2中之各種元件。
圖3係圖解說明用於對記憶體存取請求進行重排序之過程300之簡化流程圖。在作業塊302處,接收一新請求。基於庫位址,在作業方塊304處將該請求移動至適當庫佇列。決策方塊306確定剛接收之請求是否在時間上接近相同庫佇列中未決之任何先前請求或係針對與相同庫佇列中未決之任何先前請求相同之庫及頁。本文所使用之在時間上接近可界定在請求佇列110處接收請求之時間間隔。該等請求可以一時間戳來標記或附加有一佇列屬性形式之年齡。藉此方式,可不對時間上相距太遠之記憶體請求進行重排序,或可向"老"記憶體請求指派一高優先級,以使得新請求不被置於"老"記憶體請求之前。可將佇列中之時間間隔長度或年齡設定為記憶體控制器100之一組態參數。
若該請求係與另一未決請求針對相同庫及頁,則作業塊308為彼 佇列重新界定記憶體循環次序以將該新記憶體循環置於緊跟針對相同頁之另一未決請求之後。當然,如上所述,不應將一新讀取循環置於相同位址之寫入循環之前,且不應將一寫入循環置於相同位址之讀取或寫入循環之前。另外,庫佇列中可能存在基於年齡或對讀取循環之偏好而具有足夠高優先級之未決請求,因此不應將新請求置於高優先級請求之前。
作業塊310指示,將新請求置於緊跟其後之未決請求應被標記為一打開頁請求。換言之,對於所標記之請求而言,已取代關閉庫政策。因此,在已在記憶體匯流排280上執行標記為打開頁之請求後,已知後續記憶體請求係針對相同頁且可背對背地執行該兩個請求而無需預充電及執行其中間之一列位址選通脈衝。
重排序過程300可包含對讀取對寫入之重排序。若該重排序過程不包含重排序讀取對寫入,則該過程經由路徑311返回至作業塊302以等待一新記憶體請求。若該重排序過程的確包含重排序讀取對寫入,則該過程經由路徑312繼續進行至決策塊313。決策塊313確定該新請求是否在時間上接近相同類型之未決請求,其中該請求可係一讀取請求或一寫入請求。若該請求並非係相同類型,則該過程返回至作業塊302以等待一新記憶體請求。
若該請求與一時間上接近之記憶體請求屬相同類型,則作業塊314重新界定彼庫佇列之記憶體循環次序以將新記憶體循環置於緊跟相同類型之未決記憶體循環之後。藉此方式,可使用重排序過程300將讀取與寫入循環分組在一起以減少可需要之資料匯流排轉向循環之數目。另外,可給予讀取高於寫入之優先級以減少讀取延時。同樣,不應將一個類型之循環置於相同位址之一不同類型循環之前。另外,庫佇列中可能存在基於年齡或對讀取循環之偏好而具有足夠高優先級之未決請求,因此不應將新請求置於高優先級請求之前。在重新界定 請求次序後,該過程返回至作業塊302以等待一新記憶體請求。還可能針對每一庫將讀取與寫入請求分離為單獨佇列。
圖4係圖解說明用於在記憶體匯流排280上執行經重排序記憶體請求之記憶體存取過程400之簡化流程圖。在作業塊401處,自適當庫佇列擷取下一記憶體請求。可藉由使用基於庫佇列之循環方案或經優先排序選擇來確定該適當庫佇列。另一選擇係,庫佇列選擇可使用不對應於如上文論述之一繁忙記憶體庫自一庫佇列選擇一請求之政策。
決策塊402測試該下一記憶體請求係一讀取抑或一寫入。若該過程當前在一寫入順序中,則作業在決策塊454處繼續進行,如下文解釋。若該過程當前在一讀取順序中,則作業在決策塊404處繼續進行,從而確定該請求是否係一讀取以及所請求庫是否不繁忙(例如,被激活或預充電)。若不是,則作業塊406更新當前讀取請求及循環之庫數目以著眼於下一庫/佇列。
決策塊408測試以確認當前讀取請求之庫是否已打開。若該庫未打開,則作業塊410激活該庫。決策塊412測試以確定是否已設定控制邏輯以使得該庫在當前讀取請求結束時應保持打開。若欲使該庫保持打開,則作業塊414在記憶體匯流排280(圖2)上執行讀取循環。若欲關閉該庫,則作業塊416在記憶體匯流排280(圖2)上執行讀取循環,且同時在相同命令中指示在讀取作業之後需要預充電。
當讀取循環完成時,某些實施例可包含等待決策塊418,其一直等到讀取緩衝器154中有儲存所返回之讀取資料之空間。決策塊420測試以確認該過程是否已完成執行讀取循環。記憶體控制器100可經組態以執行某一數目之背對背讀取。此可由若干因素來確定。作為非限定性實例,該等因素可包含在佇列中等待之讀取之數目、相對於正在等待之寫入數目之等待被執行之讀取之數目、等待被執行之寫入之優先級、等待被執行之讀取之優先級及其組合。
若欲繼續進行讀取循環,則作業塊406在需要時更新庫數目以進行下一讀取循環。若不繼續進行讀取循環,則作業塊480將當前模式自執行讀取作業切換至執行寫入作業,且作業在作業塊401處繼續進行。
自決策塊402返回至退出,若該過程當前處於寫入順序中,則作業在決策塊454處繼續進行,從而確定該請求是否係一寫入且所請求庫是否不繁忙。若不是,則作業塊456更新當前寫入請求及循環之庫數目以著眼於下一庫/佇列。
決策塊458測試以確認當前寫入請求之庫是否打開。若該庫未打開,則作業塊460激活該庫。決策塊462測試以確定是否設定控制邏輯以使得該庫在當前讀取請求結束時應保持打開。若該庫欲保持打開,則作業塊464在記憶體匯流排280(圖2)上執行寫入循環。若該庫欲關閉,則作業塊466在記憶體匯流排280(圖2)上執行寫入循環,且同時在相同命令中指示在寫入作業後需要充電。
決策塊470測試以確認該過程是否已完成執行寫入循環。記憶體控制器100可經組態以執行某一數目之背對背寫入。此可由若干因素來確定。作為非限定性實例,該等因素可包含在佇列中等待之讀取之數目、相對於正在等待之寫入數目之等待被執行之讀取之數目、等待被執行之寫入之優先級、等待被執行之讀取之優先級及其組合。
若寫入循環欲繼續進行,則作業塊456在需要時更新庫數目以進行下一寫入循環。若寫入循環不繼續進行,則作業塊480將當前模式自執行寫入作業切換至執行讀取作業,且作業在作業塊401處繼續進行。
若記憶體循環不標記為打開頁,則遵循關閉庫政策且作業塊410對剛剛存取之頁預充電且該過程返回至作業塊402以自適當庫佇列擷取下一記憶體循環。
圖5係圖解說明用於執行讀取-修改-寫入作業及部分資料寬度寫入之記憶體存取請求之過程500之簡化流程圖,該過程可在某種程度上與圖3之重排序過程300並行進行。在作業塊502處,自請求佇列110(圖2)接收一新請求。基於庫位址,在作業塊504處將該請求移動至適當庫佇列。決策塊506確定剛剛接收到之請求是否係一如來自請求匯流排240之具體信號或命令所識別之RMW請求。若該請求並非一RMW請求,則控制返回至作業塊502以進行下一請求。事實上,RMW過程500與重排序過程300在某種程度上並行進行,因此針對非RMW請求,圖3之重排序過程300可在決策塊306處繼續進行。
若該請求係一RMW請求,則決策塊508確定所定址RMW位置之整個資料字是否已位於RMW單元144(圖2)之資料緩衝器中。若該整個資料字不在彼資料緩衝器中,則作業塊510在記憶體匯流排280上執行一讀取作業並將資料字儲存於RMW單元144中之資料緩衝器中。
對於習用RMW作業而非部分資料寫入作業而言,作業塊512在需要時將資料字之RMW部分返回至請求器230。一般而言,所返回之RMW部分係寫入已發生前之讀取部分。然而,記憶體控制器100可經組態以在寫入已發生後返回該RMW部分。另外,可將額外資訊與該RMW部分一起返回。作為一非限定性實例,可返回一比較與調換作業之比較結果。
作業塊514將資料字之RMW部分寫入至RMW單元144之RMW資料緩衝器中。若需要,則作業塊516將包含所寫入RMW部分之整個資料字經由記憶體匯流排280寫入回至記憶體。
決策塊518測試以確認RMW資料字是否經標記以用於保留在資料緩衝器150中。如上所述,RMW資料緩衝器可經組態以維持多個RMW資料字。藉此方式,可能避免記憶體匯流排280上針對RMW請求之記憶體循環。若該資料字經標記憶以用於保留,則該過程返回至 作業塊502以等待下一請求。若該資料字並非經標記以用於保留,則作業塊520將資料字自資料緩衝器150清除以允許有供用於額外讀取或寫入資料之空間。
RMW單元144亦可經組態以總是保留RMW值直至需要供用於到達記憶體控制器之新RMW請求之空間,從而可避免與每一新請求一起寫入至記憶體。若已完成此保留,則重排序邏輯必須在需要時向記憶體建立一寫入作業。因此,該保留可允許在每次更新RMW值時推遲一寫入,其通常針對用於在過程之間(例如,在不同核心、執行緒及其組合之間)通信及更新之RMW值而發生。
結論
本發明實施例可包含用於控制記憶體存取作業之系統、記憶體控制器及方法。一處理系統可包含執行對複數個記憶體器件之記憶體請求之一個或一個以上請求器。該等記憶體器件中之每一者包含至少一個記憶體庫。一記憶體控制器包含一請求佇列、一庫解碼器及複數個庫佇列。該請求佇列自一請求器接收記憶體請求,且該庫解碼器基於伴隨該等記憶體請求之記憶體位址確定一目的地庫。然後將該請求置於適當庫佇列中。
一排序單元確定是否可相對於一已接收次序對當前記憶體請求重排序,並基於該重新請求確定產生一新記憶體循環次序。該重新請求可基於任一既定庫佇列中是否存在針對相同記憶體頁之多個請求。該重排序亦可基於是否存在相同類型之多個請求,例如讀取請求及寫入請求。一記憶體介面以排序單元所界定之記憶體循環次序來執行每一記憶體請求。該記憶體循環請求可基於相同類型之請求、針對相同頁之請求或其組合。該排序單元控制讀取資料以原始接收次序返回至適當請求器。
一資料緩衝器保持自記憶體讀取循環返回之讀取資料直至該所 請求資料已返回至請求器。資料緩衝器亦可保持可用於來自一請求器之讀取-修改-寫入請求之記憶體字。
該排序單元亦可檢測並控制對一所請求記憶體字之一部分之讀取-修改-寫入作業。若所請求之記憶體字不存在於資料緩衝器中,則重排序單元引導記憶體介面執行所請求記憶體字之讀取並將其儲存於一資料緩衝器中。該重排序單元亦控制在修改之前將所請求記憶體字之該部分返回至至少一個請求器,並用來自RMW請求之資料來修改資料緩衝器中之所請求記憶體字之該部分。
雖然已闡述特定實施例,但此等所闡述實施例並非係限定性。而是,本發明範疇係由隨附申請專利範圍及其法律等效物涵蓋。
100‧‧‧記憶體控制器
102‧‧‧記憶體請求
104‧‧‧讀取資料匯流排
110‧‧‧請求佇列
120‧‧‧庫解碼器
130-0‧‧‧庫佇列0
130-1‧‧‧庫佇列1
130-n‧‧‧庫佇列n
140‧‧‧排序單元
142‧‧‧順序控制器
144‧‧‧RMW單元
150‧‧‧資料緩衝器
154‧‧‧讀取緩衝器
160‧‧‧記憶體介面
170‧‧‧時序控制器
172‧‧‧記憶體控制匯流排
175‧‧‧記憶體資料匯流排
240‧‧‧請求匯流排
280‧‧‧記憶體匯流排

Claims (15)

  1. 一種記憶體控制器,其包含:一請求佇列,其用於依至少一請求器之一所接收次序來接收若干記憶體請求;一庫解碼器,其用於回應於該等記憶體請求中之每一者之一記憶體位址而確定該請求佇列中之每一記憶體請求之一記憶體之一目的地庫;複數個庫佇列,其中每一庫佇列用於儲存一記憶體庫之未決記憶體請求及追蹤該所接收次序,該記憶體庫與彼庫佇列相關聯;一資料緩衝器,其用於容納至少一記憶體字,該記憶體字包括對應於該記憶體之一資料寬度之一資料寬度;一讀取-修改-寫入(RMW)單元,其用於偵測針對一所請求記憶體字之一部分之RMW請求,以及用於確定該所請求記憶體字是否存在於該資料緩衝器中;以及一記憶體介面,其用於回應於儲存於該複數個庫佇列之一者中的該RMW請求執行針對該記憶體之一讀取請求,以讀取該所請求記憶體字,若該所請求記憶體字不存在於該資料緩衝器中,則將該所請求記憶體字儲存於該資料緩衝器中;其中該RMW單元控制在該所請求記憶體字被修改之前,將該所請求記憶體字之該部分返回至該至少一請求器,該RMW單元以該RMW請求之資料修改位於該資料緩衝器中之該所請求記憶體字之該部分。
  2. 如請求項1之記憶體控制器,其中該RMW單元進一步經組態用於將該所請求記憶體字保留於該資料緩衝器中以用於將來之RMW 請求,以及在修改位於該資料緩衝器中之該記憶體字之後,將該記憶體字寫入至該記憶體。
  3. 如請求項1之記憶體控制器,其進一步包含一排序單元,該排序單元經組態用於基於在一相同庫佇列中且針對一相同記憶體頁之至少兩個記憶體請求之一存在,而於在時間上接近的未執行之記憶體請求中確定一記憶體循環次序,以及其中該記憶體介面進一步經組態用於:依該記憶體循環次序執行每一記憶體請求;若依該所接收順序執行一記憶體存取,則在針對彼記憶體頁之該記憶體存取結束時關閉每一記憶體頁;以及在該經重排序之順序的請求之間維持該相同記憶體頁打開。
  4. 如請求項1之記憶體控制器,其進一步包含一排序單元,其經組態用於將相同類型之至少兩個額外記憶體請求重新排序使其依序發生,其中該相同類型係從由讀取請求及寫入請求組成之群組選出,且其中該記憶體介面進一步經組態用於以被該額外記憶體循環修改之該記憶體循環次序執行每一記憶體請求。
  5. 一種用於控制記憶體存取操作之方法,其包含:依一所接收次序接收複數個記憶體請求;確定用於該複數個記憶體請求中之每一者的一複數個記憶庫之一目的地庫;在複數個庫佇列中儲存該複數個記憶體請求,該複數個庫佇列之每一庫佇列相關於該複數個記憶庫之一不同目的地庫;在時間上接近的未執行之記憶體請求中,藉由將該複數個記憶體請求中之一請求與該複數個記憶體請求中之至少另一個請求進行比較,以依該所接收順序偵測針對一相同記憶體頁之該複數個記憶體請求中至少兩個記憶體請求; 根據一偵測結果重新排序該所接收順序;依經重排序後之次序執行該至少兩個記憶體請求;若以該所接收順序執行一記憶體存取,則在針對彼記憶體頁之該記憶體存取結束時關閉每一記憶體頁;以及在該經重排序之順序的請求之間維持該相同記憶體頁打開。
  6. 如請求項5之方法,其進一步包含:在時間上接近的而非順序的未執行之記憶體請求中依該所接收順序偵測一相同類型之至少兩個額外未執行記憶體請求,其中該相同類型係從由讀取請求及寫入請求組成之群組選出;以及基於偵測該相同類型之至少兩個額外未執行記憶體請求的一結果重新排序請求之順序。
  7. 如請求項5之方法,其進一步包含:偵測針對一記憶體字之一部分的一讀取-修改-寫入操作,其中該記憶體字包含對應於該複數個記憶體庫之一資料寬度的一資料寬度;確定該記憶體字是否存在於一記憶體控制器中;若該記憶體字不存在於該記憶體控制器中,則將該記憶體字自一記憶體讀入該記憶體控制器中;將該記憶體字之該部分通訊至一請求器,該請求器初始該讀取-修改-寫入操作;以及利用從該讀取-修改-寫入操作而得之該記憶體字之該部分修改該記憶體控制器中的該記憶體字。
  8. 如請求項第7項之方法,其中該資料寬度係從由一記憶體匯流排及一記憶體叢發循環資料寬度組成之群組選出。
  9. 如請求項第7項之方法,其進一步包含在修改該記憶體控制器中 之該記憶體字之後將該記憶體字寫入至該記憶體。
  10. 如請求項第7項之方法,其進一步包含將該記憶體字保持於該記憶體控制器中以用於未來的讀取-修改-寫入操作。
  11. 一種用於控制記憶體存取操作之方法,其包含:依一所接收順序接收指定用於複數個記憶體庫之複數個記憶體請求;為該複數個記憶體請求中之每一者確定該複數個記憶體庫中之一目的地庫;在時間上接近的而非順序的未執行之記憶體請求中,藉由將該複數個記憶體請求中之一請求與該複數個記憶體請求中之至少另一個請求進行比較,以依該所接收順序偵測一相同類型之至少兩個額外未執行記憶體請求,其中該相同類型係從由讀取請求及寫入請求組成之群組選出;回應於該偵測重新排序該複數個記憶體請求之順序;順序地執行該相同類型之該至少兩個記憶體請求;監視一未決記憶體請求之一年齡;當該未決記憶體請求等待被執行時,增加該未決記憶體之一優先級;以及防止在具有一高優先級之該未決記憶體請求之前發生新記憶體請求被重排序。
  12. 如請求項第11項之方法,其進一步包含:監視該複數個記憶體庫中之每一記憶體庫之一繁忙狀態;以及執行針對一不指示一繁忙狀態之記憶體庫之下一記憶體請求。
  13. 如請求項11之方法,其進一步包括向該讀取請求指派一相對於 該寫入請求之較高優先級,並在該等讀取請求與任何未決寫入請求之間不存在位址衝突時,在該寫入請求之前執行該讀取請求。
  14. 如請求項第11項之方法,其進一步包含:偵測針對一記憶體字之一部分的一讀取-修改-寫入操作,其中該記憶體字包含對應於該複數個記憶體庫之一資料寬度的一資料寬度;確定該記憶體字是否存在於一記憶體控制器中;若該記憶體字不存在於該記憶體控制器中,則將該記憶字自一記憶體讀入該記憶體控制器中;將該記憶體字之該部分通訊至一請求器,該請求器初始該讀取-修改-寫入操作;以及利用從該讀取-修改-寫入操作而得之該記憶體字之該部分修改該記憶體控制器中的該記憶體字。
  15. 如請求項第14項之方法,其進一步包含:在修改該記憶體控制器中之該記憶體字之後將該記憶體字寫入至該記憶體;以及將該記憶體字保持於該記憶體控制器中以用於未來的讀取-修改-寫入操作。
TW102137335A 2007-11-15 2008-11-14 用於改良記憶體存取之次序的系統、裝置及方法 TWI512724B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/940,745 US7870351B2 (en) 2007-11-15 2007-11-15 System, apparatus, and method for modifying the order of memory accesses

Publications (2)

Publication Number Publication Date
TW201403599A TW201403599A (zh) 2014-01-16
TWI512724B true TWI512724B (zh) 2015-12-11

Family

ID=40639099

Family Applications (2)

Application Number Title Priority Date Filing Date
TW097144279A TWI419158B (zh) 2007-11-15 2008-11-14 用於改良記憶體存取之次序的系統、裝置及方法
TW102137335A TWI512724B (zh) 2007-11-15 2008-11-14 用於改良記憶體存取之次序的系統、裝置及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW097144279A TWI419158B (zh) 2007-11-15 2008-11-14 用於改良記憶體存取之次序的系統、裝置及方法

Country Status (7)

Country Link
US (2) US7870351B2 (zh)
EP (1) EP2223217B1 (zh)
JP (1) JP5272274B2 (zh)
KR (1) KR101154708B1 (zh)
CN (1) CN101861571B (zh)
TW (2) TWI419158B (zh)
WO (1) WO2009064793A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI691841B (zh) * 2017-05-17 2020-04-21 旺宏電子股份有限公司 記憶體裝置的邊讀邊寫存取方法

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8046559B2 (en) * 2008-03-27 2011-10-25 Intel Corporation Memory rank burst scheduling
US8605099B2 (en) 2008-03-31 2013-12-10 Intel Corporation Partition-free multi-socket memory system architecture
JP2009289307A (ja) * 2008-05-28 2009-12-10 Toshiba Corp 半導体記憶装置
US8516189B2 (en) * 2008-09-16 2013-08-20 Lsi Corporation Software technique for improving disk write performance on raid system where write sizes are not an integral multiple of number of data disks
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8160070B2 (en) * 2008-09-30 2012-04-17 Gridiron Systems, Inc. Fibre channel proxy
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8214608B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Behavioral monitoring of storage access patterns
US8214599B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Storage device prefetch system using directed graph clusters
KR101014149B1 (ko) * 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8650362B2 (en) 2009-04-17 2014-02-11 Violin Memory Inc. System for increasing utilization of storage media
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US8572322B2 (en) * 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US9965387B1 (en) * 2010-07-09 2018-05-08 Cypress Semiconductor Corporation Memory devices having embedded hardware acceleration and corresponding methods
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
JP5625737B2 (ja) * 2010-10-22 2014-11-19 富士通株式会社 転送装置、転送方法および転送プログラム
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
JP2012234363A (ja) 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US8806112B2 (en) 2011-07-14 2014-08-12 Lsi Corporation Meta data handling within a flash media controller
US9632954B2 (en) 2011-11-07 2017-04-25 International Business Machines Corporation Memory queue handling techniques for reducing impact of high-latency memory operations
US10318445B2 (en) * 2011-11-28 2019-06-11 International Business Machines Corporation Priority level adaptation in a dispersed storage network
US10558592B2 (en) 2011-11-28 2020-02-11 Pure Storage, Inc. Priority level adaptation in a dispersed storage network
US11474958B1 (en) 2011-11-28 2022-10-18 Pure Storage, Inc. Generating and queuing system messages with priorities in a storage network
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US8909874B2 (en) 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
JP6004463B2 (ja) * 2012-03-01 2016-10-05 Necプラットフォームズ株式会社 記憶装置及びその制御方法
WO2013154549A1 (en) * 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
JP2014013506A (ja) * 2012-07-04 2014-01-23 Canon Inc 情報処理装置、制御方法、及びプログラム
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
KR101989860B1 (ko) 2012-12-21 2019-06-17 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
TWI489290B (zh) * 2013-03-29 2015-06-21 Winbond Electronics Corp 快閃記憶體裝置與資料傳輸方法
US10318444B2 (en) * 2013-04-11 2019-06-11 The Regents Of The University Of California Collective memory transfer devices and methods for multiple-core processors
KR20140131781A (ko) * 2013-05-06 2014-11-14 삼성전자주식회사 메모리 제어 장치 및 방법
CN103413569B (zh) * 2013-07-22 2016-03-09 华为技术有限公司 一读且一写静态随机存储器
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法
US9396109B2 (en) * 2013-12-27 2016-07-19 Qualcomm Incorporated Method and apparatus for DRAM spatial coalescing within a single channel
WO2015183834A1 (en) 2014-05-27 2015-12-03 Rambus Inc. Memory module with reduced read/write turnaround overhead
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
US9558796B2 (en) * 2014-10-28 2017-01-31 Altera Corporation Systems and methods for maintaining memory access coherency in embedded memory blocks
KR102359404B1 (ko) * 2014-11-19 2022-02-15 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
GB2533808B (en) * 2014-12-31 2021-08-11 Advanced Risc Mach Ltd An apparatus and method for issuing access requests to a memory controller
CN105988951B (zh) * 2015-02-12 2019-10-15 瑞昱半导体股份有限公司 存储器控制器及相关的控制方法
KR20170060203A (ko) 2015-11-23 2017-06-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6676438B2 (ja) * 2016-03-30 2020-04-08 日本碍子株式会社 還元剤噴射装置、排ガス処理方法、及び排ガス処理装置
US10067706B2 (en) * 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
KR102615593B1 (ko) 2016-05-04 2023-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10705987B2 (en) 2016-05-12 2020-07-07 Lg Electronics Inc. Autonomous prefetch engine
KR102643467B1 (ko) 2016-05-31 2024-03-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
GB2551351B (en) * 2016-06-14 2019-05-08 Imagination Tech Ltd Executing memory requests out of order
KR102530262B1 (ko) 2016-07-21 2023-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10387065B2 (en) 2016-09-09 2019-08-20 SK Hynix Inc. Memory system and operating method thereof
US10705972B2 (en) * 2016-09-13 2020-07-07 Advanced Micro Devices, Inc. Dynamic adaptation of memory page management policy
FR3057081B1 (fr) * 2016-10-05 2019-11-08 Airbus Operations Processeur comprenant une pluralite de coeurs de calcul
KR20180063419A (ko) * 2016-12-01 2018-06-12 삼성전자주식회사 호스트와 양방향 통신을 수행하도록 구성된 스토리지 장치 및 그것의 동작 방법
US10241925B2 (en) 2017-02-15 2019-03-26 Ati Technologies Ulc Selecting a default page size in a variable page size TLB
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10082975B1 (en) * 2017-03-02 2018-09-25 Micron Technology, Inc. Obfuscation-enhanced memory encryption
US10635613B2 (en) * 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10365824B2 (en) 2017-04-24 2019-07-30 Advanced Micro Devices, Inc. Silent active page migration faults
US10310985B2 (en) 2017-06-26 2019-06-04 Ati Technologies Ulc Systems and methods for accessing and managing a computing system memory
US10318344B2 (en) 2017-07-13 2019-06-11 Advanced Micro Devices, Inc. Predicting page migration granularity for heterogeneous memory systems
KR20190070092A (ko) * 2017-12-12 2019-06-20 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11526278B2 (en) 2017-12-21 2022-12-13 Advanced Micro Devices, Inc. Adaptive page close prediction
US10540316B2 (en) * 2017-12-28 2020-01-21 Advanced Micro Devices, Inc. Cancel and replay protocol scheme to improve ordered bandwidth
CN108388526B (zh) * 2018-01-19 2021-01-05 深圳市金玺智控技术有限公司 一种读取控制器数据的方法和系统
US10956086B2 (en) * 2018-01-29 2021-03-23 Micron Technology, Inc. Memory controller
US11144240B2 (en) * 2018-08-24 2021-10-12 Micron Technology, Inc. Memory sub-system for increasing bandwidth for command scheduling
US10834352B2 (en) * 2019-01-14 2020-11-10 Omnivision Technologies, Inc. Configurable interface alignment buffer between DRAM and logic unit for multiple-wafer image sensors
TWI767175B (zh) * 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
JP7379491B2 (ja) 2019-01-31 2023-11-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
JP7324282B2 (ja) 2019-01-31 2023-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US10891084B2 (en) * 2019-03-14 2021-01-12 Arm Limited Apparatus and method for providing data to a master device
KR20210063724A (ko) * 2019-11-25 2021-06-02 에스케이하이닉스 주식회사 메모리 시스템
CN111459414B (zh) * 2020-04-10 2023-06-02 上海兆芯集成电路有限公司 存储器调度方法及存储器控制器
CN113918216A (zh) * 2020-07-10 2022-01-11 富泰华工业(深圳)有限公司 数据读/写处理方法、装置及计算机可读存储介质
KR20220104511A (ko) 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11960744B2 (en) * 2021-02-01 2024-04-16 Micron Technology, Inc. Register operation in memory devices
US11687281B2 (en) * 2021-03-31 2023-06-27 Advanced Micro Devices, Inc. DRAM command streak efficiency management
US11669274B2 (en) 2021-03-31 2023-06-06 Advanced Micro Devices, Inc. Write bank group mask during arbitration
US20240020058A1 (en) * 2022-07-14 2024-01-18 Xilinx, Inc. Memory controller with a preprocessor
US20240036736A1 (en) * 2022-07-29 2024-02-01 Texas Instruments Incorporated Memory controller with command reordering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564304B1 (en) * 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6628292B1 (en) * 1999-07-31 2003-09-30 Hewlett-Packard Development Company, Lp. Creating page coherency and improved bank sequencing in a memory access command stream

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0823843B2 (ja) * 1991-10-11 1996-03-06 インターナショナル・ビジネス・マシーンズ・コーポレイション メモリ・コントローラ、及びデータ処理システム
JPH09282223A (ja) * 1996-04-12 1997-10-31 Ricoh Co Ltd メモリ制御装置
US7047391B2 (en) * 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US6748493B1 (en) * 1998-11-30 2004-06-08 International Business Machines Corporation Method and apparatus for managing memory operations in a data processing system using a store buffer
US6510497B1 (en) 1998-12-09 2003-01-21 Advanced Micro Devices, Inc. Method and system for page-state sensitive memory control and access in data processing systems
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
DE60017870T2 (de) 1999-10-21 2005-06-23 Matsushita Electric Industrial Co., Ltd., Kadoma Eine halbleiterspeicherkarte-zugangsanordnung, ein rechnerlesbares aufzeichnungsmedium, initialisierungsverfahren,und eine halbleiterspeicherkarte
JP3846543B2 (ja) * 2000-03-13 2006-11-15 富士ゼロックス株式会社 メモリアクセスシステム
JP2001356961A (ja) * 2000-06-13 2001-12-26 Nec Corp 調停装置
US7093094B2 (en) 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
US6912612B2 (en) 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7107415B2 (en) 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7228387B2 (en) 2003-06-30 2007-06-05 Intel Corporation Apparatus and method for an adaptive multiple line prefetcher
US7127574B2 (en) 2003-10-22 2006-10-24 Intel Corporatioon Method and apparatus for out of order memory scheduling
US7213082B2 (en) 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7162567B2 (en) 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US20060112240A1 (en) * 2004-11-24 2006-05-25 Walker Robert M Priority scheme for executing commands in memories
US7363406B2 (en) 2004-12-08 2008-04-22 Motorola, Inc. Dynamic access scheduling memory controller
US7209405B2 (en) 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7461214B2 (en) 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628292B1 (en) * 1999-07-31 2003-09-30 Hewlett-Packard Development Company, Lp. Creating page coherency and improved bank sequencing in a memory access command stream
US6622225B1 (en) * 2000-08-31 2003-09-16 Hewlett-Packard Development Company, L.P. System for minimizing memory bank conflicts in a computer system
US6564304B1 (en) * 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI691841B (zh) * 2017-05-17 2020-04-21 旺宏電子股份有限公司 記憶體裝置的邊讀邊寫存取方法

Also Published As

Publication number Publication date
CN101861571B (zh) 2013-11-06
WO2009064793A1 (en) 2009-05-22
CN101861571A (zh) 2010-10-13
TW200933630A (en) 2009-08-01
TW201403599A (zh) 2014-01-16
US20090150624A1 (en) 2009-06-11
JP2011505032A (ja) 2011-02-17
KR20100077051A (ko) 2010-07-06
EP2223217A4 (en) 2011-06-08
US7870351B2 (en) 2011-01-11
US8180974B2 (en) 2012-05-15
TWI419158B (zh) 2013-12-11
US20110099341A1 (en) 2011-04-28
EP2223217B1 (en) 2014-12-17
JP5272274B2 (ja) 2013-08-28
KR101154708B1 (ko) 2012-06-11
EP2223217A1 (en) 2010-09-01

Similar Documents

Publication Publication Date Title
TWI512724B (zh) 用於改良記憶體存取之次序的系統、裝置及方法
KR100724557B1 (ko) 아웃 오브 오더 dram 시퀀서
CN110226157B (zh) 用于减少行缓冲冲突的动态存储器重新映射
EP1110151B1 (en) Buffering system bus for external-memory accesses
US6047334A (en) System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US9281046B2 (en) Data processor with memory controller for high reliability operation and method
JP7036925B2 (ja) キャッシュ制御を考慮したメモリコントローラ
US8352688B2 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
JP2002530731A (ja) 異常メモリアクセスまたは異なる時間のメモリアクセス実行の際のデータバス上のデータ衝突を検出するための方法および装置
JP2002530743A (ja) ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること
US20040123067A1 (en) Method and apparatus for determining a dynamic random access memory page management implementation
JPH04102948A (ja) データ処理システム及び方法
US6868486B1 (en) Providing multiple memory controllers on a memory bus
US20020194444A1 (en) System and method for managing out-of-order memory access requests via an age-shifted index