TW200933630A - System, apparatus, and method for modifying the order of memory accesses - Google Patents

System, apparatus, and method for modifying the order of memory accesses

Info

Publication number
TW200933630A
TW200933630A TW097144279A TW97144279A TW200933630A TW 200933630 A TW200933630 A TW 200933630A TW 097144279 A TW097144279 A TW 097144279A TW 97144279 A TW97144279 A TW 97144279A TW 200933630 A TW200933630 A TW 200933630A
Authority
TW
Taiwan
Prior art keywords
memory
request
read
requests
write
Prior art date
Application number
TW097144279A
Other languages
English (en)
Other versions
TWI419158B (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 TW200933630A publication Critical patent/TW200933630A/zh
Application granted granted Critical
Publication of TWI419158B publication Critical patent/TWI419158B/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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Description

200933630 九、發明說明: 【發明所屬之技術領域】 本發明係關於電腦系統,且更特定而言係關於記憶體控 制器增加記憶體存取效率之運作方法。 申請專利範圍優先權 本申請案主張於2007年11月15日提出申請序列號為第 11/94〇,745號名稱為”用於改良記憶體存取之次序的系統、 裝置及方法"之美國專利申請案。 ❹
【先前技術】 受活動記憶體(其通 在多數電腦及資料處理系統中 常係隨機存取記憶體(RAM))係動態隨機存取記憶體 (DRAM)。一 DRAM之結構通常由組織成多個庫之若干呓 憶體胞組成。每一庫對應於一記憶體胞陣列,其中每—胞 均相應地與一記憶體位址處之一資料數位(例如一位元)相 關聯。特定而t ’ 一庫内之記憶體位址分別由一列位址及 -行位址指;t ’其中每—列位址定址—記憶想頁。因此, 每-頁記憶體含有對應於該頁内之不同行指 體位置。 〇 1思 當執行一連串存取請求時,一 £ ^ ^ 頁凊求可發生於當前正打 :另-頁之庫,通常將此稱為―”頁衝突 : 關閉(例如,預充電)先前所打開之頁 ^首先 後’可隨即打開(例如,激 頁之 該所請求頁之讀取或寫人作業且㈣可執行對 當前所請求頁時可發生一"曰在無打開頁之庫中發現 貝未命中",iUb需要執行-激 136208.doc 200933630 活程序。當一當前記憶體存取請求係針對一已自一先前記 憶體存取請求而打開之頁,則可稱一"頁命中"發生。,s 由於必須針對頁衝突及相對於頁命中請求之頁未命中纪 憶體存取來執行額外處理,因此執行前兩個過程所需之時 • _多於後者所需之時間。在微處理器技術發展之早期 冑段’ Μ人先出方式接收及完成對存取用於讀取及寫入 作業之DRAM記憶體頁之請求。此處理可係無效從而導 &大量頁未命中及衝突’且因此需要處理器及/或記憶體 控制器資源廣泛致力於對記憶體頁之預充電及激活。 最近,已W發出基於優先級來進行記憶體存&之更先進 處理方法。存取請求之優先級可係基於各種因素例如發 送該請求之器件類型、所請求存取之類型、期望由該請求 存取之記憶冑位址等。然:@,嚴格依照優力級來提供記憶 體存取之問題係,低優先級請求可在過長的時間週期内係 被拒絕存取。 鲁 此外系統中微處理器之數目、微處理器中核心之數目 以及每核心之處理執行緒之數目近期已顯著增加,且期望 .纟未來幾年内繼續增加。可構想出具有成百上千個執行緒 之系統。此等系統通常經設計以使得多個處理器晶片存取 共同s己憶體。此等請求存取一共同記憶體之多個資源對 該記憶體施加了額外的壓力。 核心與執仃緒數目增加之效應中之一者係將需要顯著增 大之δ己憶體頻寬’且一主要負面效應係,該記憶體系統所 經歷之位址請求流將由於實際獨立或看似獨立之程式執行 136208.doc 200933630 順序之數目增加而更為隨機。層階丨及層階2快取之大小增 加(此係過去多數系統實施方案解決總記憶體頻寬及延時 問題之方式)可不夠有效且由於核心數目增加以及對合理 小片大小之限制而具有較少增長機率。此外,每一核心中 • 正執行之執行緒數目之增加將很可能使平均快取命中率降 低’而此同樣導致記憶體訊務增加。 在當前之DRAM技術中,循環一記憶體庫(激活該庫、讀 ❹ 取或寫入所請求資料並對該庫預充電)比資料移動時間更 長。此長循環時間意味著’若兩個請求在時間上接近而又 係針對同一記憶體庫,則記憶體輸入/輸出(1〇)引腳變為閒 置狀態達一時間週期以等待第一庫循環完成以便可開始第 二庫循環。由於DRAM通常具有可獨立循環之多個庫,因 而此庫時序衝突會浪費可用記憶體頻寬。 鑒於此類不同記憶體請求源,需要可在多個執行緒及多 個處理器之系統環境中產生經改良記憶體效能之裝置及方 _ 法。 【實施方式】 本文所揭示實施例包含用於在多個執行緒及多個處理器 之系統環境中產生經改良記憶體效能之裝置及方法。 在以下詳細闡述中,將參照構成本文一部分之附圖,且 附圖中以圖解說明方式顯示其中可實踐本發明之具體實施 例。充分詳細地闡述此等實施例以使熟習此項技術者能夠 實踐本發明,但應瞭解,亦可利用其他實施例並可作出結 構、邏輯及電性改動,而此並不背離本發明之範脅。 136208.doc 200933630 在此闞述中,為不在不必要細節上模糊本發明’可以方 塊圖形式顯示電路及功能。此外,所顯示及闡述之具體電 路實施方案僅係實例,且除非本文中另有規定’否則不應 被視為實施本發明之唯一方式。塊定義以及對各塊之間的 邏輯之劃分呈現一具體實施方案。熟習此項技術者將容易 明瞭,可以諸多其他劃分解決方案來實踐本發明。在極大 程度上,當關於時序考量因素等細節對獲得對本發明之完 整理解並非必需且處於熟習此項技術者之能力範圍内時, 可將此等細節省卻。 為易於闡述,下文所論述之實施例係與動態隨機存取記 憶體(DRAM)器件聯合使用。然而,應瞭解’本發明不限 於包括DRAM之應用。而是,應強調,本發明實施例可與 其他類型之隨機存取記憶體聯合使用’例如靜態 RAM(SRAM)以及DRAM之諸多不同子種類,其中以非限 定性實例方式包含:快速頁模式DRAM(EPM DRAM)、擴 展資料輸出DRAM(EDO DRAM)、猝髮式EDO DRAM、同 步 DRAM (SDRAM)、雙倍資料速率 DRAM(DDR2 DRAM 及 DDR3 DRAM)、Rambus DRAM(RDRAM)等。 出於清晰呈現及闡述之目的,某些圖式可將信號圖解說 明為一單個信號。熟習此項技術者應瞭解,該信號可表示 一信號匯流排,其中該匯流排可具有各種位元寬度,且可 對任一數目之資料信號(其中包含一單個資料信號)實施本 發明* 圖1係根據本發明揭示内容之實施例包含記憶體控制器 I36208.doc 200933630 100之處理系統200之簡化系統方塊圓 °處理系統2〇〇可包 含一個或一個以上處理器21〇、 個或一個以上圖形處理 器200及轉合至請求匯流排240之一 請求器235。以非限定性實例方式 個或一個以上特殊用途 ’此等特殊用途請求器 可包含數位信號處理器、浮點處理器、媒趙處理器、網路 管理器等等。處理器21〇、圖形處理器咖以及特殊用途請 求器235在本文中可統稱為請求器23()。此外,在某些實施 例中,請求器230中之每-者可包含—單獨請求匯流排 24〇(未顯示卜請求匯流排24〇可包含諸如(舉例而言)控制 信號、位址信號、資料信號、每一 請求器230之唯一識別 符以及請求器230内之多個處理器或多個處理執行緒之唯 一識別符。 橋接器單元250耦合至請求匯流排24〇(或多個請求匯流 排)。橋接器單元250包含記憶鱧控制器1〇〇且還可包含匯 流排橋接器260。雖未顯示,但熟習此項技術者將認識 到,處理系統200可包含多個記憶體控制器1〇〇及多個匯流 排橋接器260。另外,橋接器單元25〇可與記憶體控制器 1〇〇及匯流排橋接器260作為單獨器件而組態,或橋接器單 元250可將圮憶體控制器1〇〇及匯流排橋接器之的整合至一 單個器件中。另外,橋接器單元250或單獨組件記憶體控 制器1〇〇及匯流排橋接器26〇可與請求器單元23〇整合至相 同封裝或積體電路中。 記憶體控制器100藉由一個或一個以上記憶體匯流排28〇 耦合至§己憶體子系統3〇〇。每一記憶體匯流排28〇接納包含 136208.doc 200933630 至少一個記憶體器件292之記憶體組件29〇(本文中亦稱為 記憶體卡)。記憶體組件290可形成為一記憶體卡或一記憶 體模組。可用於處理系統2〇〇中之記憶體模組之非限定性 實例包含單進線記憶體模組(SIMM)、雙進線記憶體模組 (DIMM)及Rambus進線記憶體模組(RIMM)。包含記憶體組 件290及記憶體裝置292之各種組態之記憶體子系統3〇〇在 本文中可簡稱為記憶體。此外,無需將該等記憶體組件封 裝為一卡或模組。作為一非限定性實例,可以三維封裝組 態方式將該等記憶體組件安裝於處理器21〇或其他請求器 230頂部上。 將匯流排橋接器260耦合至至少一個周邊匯流排265。可 將各種器件270耦合至周邊匯流排265。作為非限定性實 例,此等器件可包含儲存器控制器、輔助匯流排橋接器、 多媒體處理器、舊型器件介面及雜項輸入/輸出(1/〇)器 件,例如鍵盤、滑鼠及打印機。匯流排橋接器26〇或記憶 • 體控制器ι〇0亦可耦合至一個或一個以上專用高速匯流 排。作為一非限定性實例,在個人電腦中,該專用匯流排 可係一用於將高效能視訊卡或其他高頻寬周邊設備耦合至 處理系統200之加速圖形埠(AGp)匯流排或周邊組件互 伸(PCI-X)匯流排。 熟習此項技術者將認識到,圖〗所圖解說明之處理系統 200僅係可與記憶體控制器1⑽之實施例一起使用之處理系 統之一個非限定性實例。儘管囷丨圖解說明尤其適用於通 用電腦(例如’個人電腦或工作站)之處理架構,但應認識 136208.doc 200933630 到’可作出已衆所周知之修改以將處理系統200組態為更 適用於各種應用。舉例而言,可使用一較簡單架構來實施 需要處理之諸多電子器件,該架構可依賴於處理器21〇及 耗合至記憶體組件290、直接耦合至記憶體裝置292或其組 合之記憶體控制器1〇〇。 此等電子裝置可包含但不限於:聲訊/視訊處理器及記 錄器、博弈控制臺、數位電視機、有線或無線電話、導航 ❹ 器件(包含基於全球定位系統(GPS)及/或慣性導航之系統) 及數位相機及/或記錄器。該等修改可包含(舉例而言)消除 不必要之組件、添加專用器件或電路及/或整合複數個器 件。 圖2係根據本發明揭示内容一實施例之記憶體控制器1 〇〇 之簡化方塊圖。記憶體控制器1〇〇包含:請求佇列丨1〇、庫 解碼器120、庫佇列G30-0、130-1至130-n)、排序單元 140、資料緩衝器15〇、記憶體介面ι6〇及時序控制器17〇。 ❹ 可存在一與記憶體子系統300中每一記憶體庫相關聯之庫 仔列130。然而’庫佇列13〇亦可經組態以操控多個庫。 記憶體請求進入記憶體請求匯流排24〇上之記憶艎控制 器100’並以先入先出方式在請求佇列11〇中被接收。如上 所述,請求匯流排240可包含控制信號、位址信號、資料 信號 '每一請求器23〇(圖1)之唯一識別符及請求器23〇内多 個處理器或多個處理執行緒之唯一識別符。可將諸多或所 有此等多個化號儲存於庫佇列丨3〇中,因此記憶體控制器 100可保存並追蹤在記憶體控制器ι〇〇中未決之關於每一記 136208.doc -12- 200933630 憶體請求之必要資訊。 庫解碼器120依照所接收請求進入請求佇列11〇之順序來 處理該等請求,並基於(舉例而言)庫及列位址資訊將該等 所接收請求置於庫仵列130中之一者中。排序單元14〇追蹤 庫作列130中之資訊’並向記憶體介面16〇及時序控制器 170指示應自庫佇列130提取記憶體請求之次序;以及哪一 庫h列130應供應下一記憶體存取請求。自以下論述可明 瞭,排序單元140可包含一用於控制庫佇列内各種記憶體 請求之順序(例如次序)之順序控制器142 ^排序單元140還 可包含一用於控制讀取-修改-寫入(RMW)循環之RMW單元 144。RMW單元144亦可與排序單元14〇分離。在此情形 下’庫解碼器120可將RMW單元視為一内部庫,同樣亦可 將排序卓7L 1 4 0視為内部庫。 記憶體介面160及時序控制器170基於記憶體匯流排280 上之記憶體類型藉助適當之時序及控制而在記憶體匯流排 280上產生及控制記憶體存取請求。作為非限定性實例, 在來自排序單元140之引導下,記憶體介面160及時序控制 器170可產生用於在記憶體匯流排28〇上對DRAM之匯流排 循環進行預充電、激活、讀取、寫入及更新之適當命令及 匯流排循環》 資料緩衝器150可組態為一單個緩衝器,其能夠保存指 定用於記憶體子系統300之寫入資料、自記憶體子系統3〇〇 返回之讀取資料、讀取、修改_寫入資料或其組合。庫佇列 130可分離為讀取佇列及寫入佇列(未顯示)以使得能夠更容 136208.doc 13 200933630 易地追縱相對於讀取之寫入。此分離可有助於偵測可對哪 些圮憶體請求重排序,如下文之更全面解釋。另外,可將 寫入資料連同對應記憶體寫入請求設置於庫佇列中且可 將彼資料自資料緩衝器15〇移除。 對於寫入作業而言,寫入資料伴隨該記憶體請求。在讀 . 取或寫入命令之後將寫入記憶體請求自適當庫佇列13〇移 除(亦即解除分配)且已在記憶體控制匯流排172及記憶體資 料匯流排175上啓動相關聯寫入資料。 對於讀取作業而言’請求匯流排240上之記憶體請求102 不包含資料。因此,無需在將記憶體請求設置於庫佇列 130中時分配匯流排緩衝器15〇中用於讀取請求之空間。而 是’可在已於記憶體控制匯流排172上啓動讀取作業且讀 取資料在記憶體資料匯流排175上返回時分配資料緩衝器 150空間。另一選擇係,控制邏輯可追蹤未完成讀取請求 之數目並在讀取緩衝器面臨溢出危險時防止進一步讀取請 •求' 該讀取記憶體請求可視記憶體控制器100如何組態而在 庫佇列130中保持未決狀態達各種不同時間。作為一個實 例’庫佇列130可包含需用來將資料返回至其適當請求器 230之所有請求資訊’例如記憶體循環類型、發起請求器 230、發起處理執行緒及類似資訊。在此實例中,資料緩 衝器150可僅包含讀取資料及一指示哪一實體作出相應請 求以使得資料可在讀取資料匯流排104上正確返回之標 籤。排序單元140使用來自庫佇列13〇之請求資訊及來自資 136208.doc •14- 200933630 料緩衝器150之相關聯資料以在請求匯流排24〇上將資料返 回至適當請求器230。在返回該資料後,可將記憶體請求 及相關聯讀取資料分別自適當庫佇列13〇及資料緩衝器15〇 移除(亦即,解除分配)。 作為另一實例,當在記憶體匯流排28〇上處理一讀取請 求時,可將請求資訊傳送至資料緩衝器15〇以使得該請求 資訊處於資料緩衝器150中。在此情形下,由於欲將讀取
資料返回至適當請求器23〇之所有資訊皆處於資料緩衝器 150中,因此當在記憶體匯流排28〇上處理記憶體請求時可 將該請求自料列移除。排序單元140使用來自資料緩衝 器150之請求資訊及相關聯資料以在請求匯流排24〇上將資 料返回至適當請求器23〇。在返回該資料後,可將記憶體 請求及相關聯讀取資料自f料緩衝器⑽移除(亦即,解除 分配)。 有效记憶體系統設法使其資料引腳在盡可能接近 1〇〇%時間内保持充滿有用資料。出於彼目的,且除非在 下文論述中有所陳述,將記憶體作業視為"已關閉庫"作 業。換言之’在記憶體引用結束時對所有記憶體引用進行 預充電i g可存在與不得不執行更多列位址選擇 關聯之額外開銷’㉟由於多處理器及多執行緒系統環境中 請求流之隨機性,已關_作㈣㈣。即使 作出一經排序請求流(如記憶艘控制器刚及記憶體二 經歷),但有太多自其 疆系統所 料有機合η 、他執仃緒交插之其他請求以至於幾 ”他凊求已使該執行緒曾引用之打開頁無效 136208.doc 15 200933630 之前經歷來自原始執行緒之第二請求。 此已關閉庫政策不同於通常用於單個處理器系統中之習 用記憶體控制器。在彼等習用記憶體控制器中使用一打開 庫政策,此乃因極有可能來自請求器230之時間接近之存 取將係針對相同庫及彼等庫内之相同頁。 然而,在某些情形下,有利地可係識別對一相同dram 頁之存取並繞過預充電作業以使得針對該相同頁之背對背 作業係打開庫且變得更為有效。為增強識別針對一相同 之記憶體請求並使該庫打開以供後續存取之此能力,可有 用地相對於請求佇列110中之接收次序對記憶體請求重排 序。 在單個處理器系統中’由於來自記憶體之資料恰好係按 照該單個處理器對其期望之次序,因此記憶體控制器可經 設計以使請求保持其被做出之次序。然而,維持此次序對 於記憶艎系統而言通常效果不佳(亦即,記憶體頻寬可缺 馨 失)。然而,當存在多個核心,且甚至同一核心中存在多 個執行緒時,將會出現可由使請求保持按次序而引起之記 憶體系統效能問題》 一般而言,當保持按次序以供引用相同記憶體位址時, •即幾乎不存在由不按次序地返回請求而引起之程式校正問 題。在極大程度上,將同步及強制排序指令添加至處理器 之才曰令集以視需要啓用資料及程式排序,以在尚未存在該 等指令之情況下協調核心與執行緒之間的活動。因此,編 譯器寫入器及類似低階程式最擔心排序問題。的確有時將 136208.doc -16· 200933630 程式同步功能添加至系統之記憶體架構中,如下文對記憶 體系統中原子及位元組啓用能力之論述中所說明。 即使必須將每一核心或每一執行緒之請求保持嚴格程式 請求次序,但若記憶體控制器1〇〇可斷定~請求來自此執 . 行緒或核心抑或彼執行緒或核心(基於請求匯流排240上之 資訊),則其可將每一程式流之請求保持按次序並同時允 許無衝突請求(來自不同核心及執行緒之請求)相對於彼此 ©打亂次序。另外,該控制器使用此源資訊將讀取資料路由 回至請求源或使用此源資訊來指示一錯誤(若有錯誤發 生)。 在此重排序政策中’若庫佇列130中之”較老"請求係針 對一繁忙庫,則可先於彼較老請求來選擇一空閒庫之請求 (只要遵循其他記憶體時序及使用規則)。此重排序使得本 可能不會使用之匯流排時間得以有效地使用。 另外,可將自請求佇列110傳入之記憶體請求與適當庫 參 彳T列中之其他記憶體請求進行比較以確定該新記憶體請求 疋否係與其他未決請求中之一者針對一相同頁。若是,則 可在彼未決請求之後將該新記憶體請求置於該相同頁。在 此情形下,可取代該關閉庫政策以允許對彼相同頁之背對 背存取。 當然,藉由重排序’某些請求可被推遲或不止—次地移 動因此,排序單元140可包含一時序單元或類似機構以 指示該仵列中請求之年齡並修改一"老,,請求以使其具有較 高優先級並及時被執行。 136208.doc 200933630 在讀取循環與寫入循環之間切換資料方向時可需要多個 記憶體時鐘來使資料匯流排轉向。若該轉向時間為兩個時 鐘’其中每一資料傳送花費四個時鐘(假設雙向DDR傳送 及對DRAM之含8個資料請求之叢發),則當請求在讀取與 寫入之間交替時可缺失33%的尖峰記憶體頻寬。因此,若 δ己憶體讀取與其他記憶體讀取組合在一起,且記憶體寫入 與其他記憶體寫入組合在一起,則可減少由匯流排轉向時 間所致之無效。 β _般而言’可對讀取及寫人型記憶體存取請求重排序。 然而,記憶體控制器100可實施一政策:僅在必要時重配 置寫入請求,以達到經重排序之順序不與較早接收之請求 產生任何定址衝突,或另外不會因庫佇列130中之其他記 憶體存取請求而干擾已儲存或欲儲存於相關記憶體位置中 之資料之程度。同樣’必須使對相同程式位址之引用保持 程式請求次序。若請求係在不同程式實體之間,則此請求 φ Α序通常由軟體執行,而若請求係藉由-單個請求源(例 h、或執行緒)完成,則認為由記憶體控制器100來遵循 此請求次序》 作為另―讀取對寫人政策,給予讀取分組優於寫入分組 優先級可係有用。換言之,可向任何讀取指派優先級, 、原因(例如仔列已滿或位址衝突)迫使切換至寫 Θ求器230之肖度而S,此讀取優先級政策可減少 、時其代價係包含可驗證未將一讀取請求重排序在 對相同位址之寫人請求前面以確保該讀取請求自處於仔 136208.doc -18- 200933630 列前面之未決寫入獲得資料之邏輯。然而,在某些實施例 中’若針對具有一未決寫入之位址執行一讀取,則記憶體 控制器100可直接自適當佇列返回寫入資料,因此記憶體 並未實際上被讀取。 處理器或其他請求器230有時有必要寫入個別位元組並 執行讀取-修改-寫入作業。儘管可能看起來個別小資料數 量不會被很頻繁地寫入’但隨著核心及執行緒在共同程式 上工作時數目增加,此等作業亦將增多。一種多個執行緒 進行通信之最佳方式係將作為記憶體系統之一部分而儲存 及管理之"強大"記憶體作業,例如旗標及信標。此等旗標 及信標通常需要記憶體位元組層階或字層階之作業良好地 工作。 讀取-修改-寫入(RMW)係自一記憶體位址讀取一值、修 改曾讀取之值且然後將該經修改值寫入回至該記憶體位址 之一強大順序。多執行緒程式化之一習用方法係使用 • RMW鎖定來同步化對共享資源之存取。諸如旗信標等同 步基元可由多執行緒程式使用以確保若同時執行碼之某些 冑分將破壞碼之該等部分之間可共享之記憶鍾結構則; 會這樣做。若一個執行緒試圖獲得已由另一執行緒保持之 鎖定,則該執行緒將阻塞直至該鎖定解除。 非阻塞廣算法可使用諸如(舉例而言)比較與調換(Cm) 之原子讀取-修改-寫入作業。該比較與調換CPU指令(或 X86架構之CMPXCHG指令)係一自動地以原子方式將—己 憶趙位置之内容比較於一既定值且在該二者㈣之情況下 136208.doc •19- 200933630 將彼記憶體位置之内容修改為一既定新值之特殊指令。 CAS可用於有效地實施多處理器系統中之信標。 習用地’已用處理器中之執行邏輯或藉助處理器之資料 快取中之邏輯完成對位元組寫入及信標之支持。然而,在 某些系統中’其可用於支持將此等小運算元作為個別資料 項寫入至最終記憶體目的地(亦即,記憶體子系統3〇〇)且不 作為一整個快取線之一部分。
另外,諸多處理器使用32位元及64位元資料項,且可極 為頻繁地寫入彼等類型之項。但是,作為一非限定性實 例’ 一典型DRAM協定及介面可移動32位元組叢發。若僅 需要寫入四個位元組,則可需要個別位元組_寫入選擇信 號。然而,在某些δ己憶體系統中,位元組啓用可能不可 用。在此等系統中,可必要地讀入(舉例而言)一含有4位元 組資料項之32位元組叢發。然後,將該四個資料位元組插 入至相當於32位元組之資料,且然後將經修改之32位元組 數量重新寫人回至記憶體。在此實例中,當四個位元組本 應在介面中存在位元組啓用能力時被發送時已既讀取又 寫入64位元組資料。持續對不需要之資料之此移動,作其 浪費記憶體效能。-般而言’在本文中將—記憶體存取之 寬度稱為”資料寬度•、作為非限定性實例’此資料寬产可 係記憶趙匯流排280之實體位元寬度或一記憶雜叢發循環 驢^度另外,除非本文另有規定,否則RMW作業將統 稱為具體謂作業以及對-資料寬度之若干部分之寫 入0 •… 136208.doc -20- 200933630 因此’對於RMW作業而言,控制器loo可經組態以管理 此等部分寫入作業。另外,RMW單元144令之資料緩衝器 可經組態以保持此等RMW作業之經保留區域,以使得欲 讀取之資料存在於記憶體控制器100中,從而不再需要在 記憶體匯流排280上執行一讀取作業。 圖3、4及5係圖解說明用於管理根據本發明揭示内容之 實施例之經重排序記憶體存取請求及RMW作業之過程之
簡化流程圖。當闡述圖3、4及5時,亦將參照圖丨及2中之 各種元件。 圖3係圖解說明用於對記憶體存取請求進行 程300之簡化流程圖Q在作業塊3〇2處,接收一新請求。基 於庫位址,在作業方塊3〇4處將該請求移動至適當庫佇 列。決策方塊306確定剛接收之請求是否在時間上接近相 同庫符列中未決之任何先前請求或係針對與相同庫仔列中 未決之任何先前請求相同之庫及[本文所使用之在時間 上接近可界疋在請求仔m 1G處接收請求之時間間隔。該 等請求可X時間戰來標記或附加有一彳宁列屬性形式之年 齡藉此方式,可不對時間上相距太遠之記憶體請求進行 重排序’或可向"老’’記憶體請求指派—高優纽,以使得 新請求不被置&老"記憶體請求之前。可將佇列中之時間 間隔長度或年齡設定為記憶體控制 器100之一組態參數。
若該請求係與另一 X 未決請求針對相同庫及頁,則作業塊 308為彼>fT列重新界令___ 疋§己憶體循環次序以將該新記憶體循 環置於緊跟針對相同百 貝之另一未決請求之後。當然,如上 136208.doc
-2U 200933630 所述,不應將一新讀取循環置於相同位址之寫入循環之 前义且不應將寫人循環置於相同位址之讀取或寫入循環 之月J另外4彳T列中可能存在基於年齡或對讀取循環之 偏好而具妓夠高優先級之未決請求,因此不應將新請求 置於高優先級請求之前。
作業塊310指示 被標記為一打開頁請求 將新請求置於緊跟其後之未決請求應 換言之’對於所標記之請求而 言’已取代關閉庫政策。因此,在已在記憶想匯流排28〇 上執行標記為打開頁之請求後,已知後續記憶體請求係針 對相同頁且可背對背地執行該兩個請求而無需預充電及執 行其中間之一列位址選通脈衝。 重排序過程300可包含對讀取對寫入之重排序。若該重 排序過程不包含重排序讀取對寫入,則該過程經由路徑 311返回至作業塊302以等待一新記憶體請求。若該重排序 過程的確包含重排序讀取對寫入,則該過程經由路徑 繼續進行至決策塊313。決策塊313確定該新請求是否在時 間上接近相同類型之未決請求,其中該請求可係一讀取請 求或一寫入請求。若該請求並非係相同類型,則該過程返 回至作業塊302以等待一新記憶體請求。 右該請求與一時間上接近之記憶體請求屬相同類型則 作業塊3 14重新界定彼庫佇列之記憶體循環次序以將新記 憶體循環置於緊跟相同類型之未決記憶體循環之後。藉此 方式,可使用重排序過程3〇〇將讀取與寫入循環分組在一 起以減少可需要之資料匯流排轉向循環之數目。另外,可 136208.doc -22- 200933630 給予讀取高於寫入之優先級以減少讀取延時。同樣不應 將一個類型之循環置於相同位址之一不同類型循環之前。 另外’庫件列中可能存在基於年齡或對讀取循環之偏好而 具有足夠高優先級之未決請求,因此不應將新請求置於高 . 優先級請求之前。在重新界定請求次序後,該過程返回至 作業塊302以等待一新記憶體請求。還可能針對每一庫將 讀取與寫入請求分離為單獨佇列。 φ 圖4係圖解說明用於在記憶體匯流排280上執行經重排序 記憶體請求之記憶體存取過程400之簡化流程圖。在作業 塊401處,自適當庫佇列擷取下一記憶體請求。可藉由使 用基於庫狩列之循環方案或經優先排序選擇來確定該適當 庫^丁列°另一選擇係,庫佇列選擇可使用不對應於如上文 論述之一繁忙記憶體庫自一庫佇列選擇一請求之政策。 決策塊402測試該下一記憶體請求係一讀取抑或一寫 入。若該過程當前在-寫人順序中,則作f在決策塊454 ❹ 處繼續進行’如下文解釋。若該過程當前在-讀取順序 中,則作業在決策塊4〇4處繼續進行從而確定該請求是 . 否係讀取以及所請求庫是否不繁忙(例如,被激活或預 電)若不疋則作業塊406更新當前讀取請求及循環之 庫數目以著眼於下一庫/符列。 +決策塊4G8測試以確認當前讀取請求之庫是否已打開。 若該庫未打開’則作業塊41G激活該庫。決策塊412測試以 碟疋疋Φ已叹疋控制邏輯以使得該庫在當前讀#請求結束 時應保持打開。若欲使該庫保持打開則作業塊414在記 136208.doc -23- 200933630 憶體匯流排280(圖2)上執行讀取循環。若欲關閉該庫,則 作業塊416在記憶體匯流排280(囷2)上執行讀取循環,且同 時在相同命令中指示在讀取作業之後需要預充電。 當讀取循環完成時,某些實施例可包含等待決策塊 418’其一直等到讀取緩衝器丨54中有儲存所返回之讀取資 料之空間。決策塊420測試以確認該過程是否已完成執行 讀取循環。記憶體控制器100可經組態以執行某一數目之 背對背讀取。此可由若干因素來確定。作為非限定性實 例,該等因素可包含在佇列中等待之讀取之數目、相對於 正在等待之寫入數目之等待被執行之讀取之數目、等待被 執行之寫入之優先級、等待被執行之讀取之優先級及其組 合。 若欲繼續進行讀取循環,則作業塊406在需要時更新庫 數目以進行下一讀取循環。若不繼續進行讀取循環,則作 業塊480將當前模式自執行讀取作業切換至執行寫入作 業,且作業在作業塊401處繼續進行。 自決策塊402返回至退出’若該過程當前處於寫入順序 中,則作業在決策塊454處繼續進行,從而確定該請求是 否係一寫入且所請求庫是否不繁忙。若不是,則作業塊 456更新當前寫入請求及循環之庫數目以著眼於下一庫/传 列。 決策塊458測試以確認當前寫入請求之庫是否打開。若 該庫未打開’則作業塊460激活該庫》決策塊462測試以確 定是否設定控制邏輯以使得該庫在當前讀取請求結束時應 136208.doc • 24- 200933630 保持打開。若該庫欲保捋 $ 夺打開,則作業塊464在記憶體匯 流排280(圖2)上執行寫入循環。 裒右該庫欲關閉,則作業塊 466在把憶體匯流排28〇( n ^ 上執行寫入循環,且同時在相 同。卩令中指示在寫入作業後需要充電。
決策塊測試以確認該過程是否已完成執行寫入循 環。記憶體控制器100可經組態以執行某一數目之背對背 寫入此可由右干因素來確定。作為非限定性實例該等 因素可包含在仵列中等待之讀取之數目、相對於正在等待 之寫入數目之等待被執行之讀取之數目、特被執行之寫 入之優先級、等待被執行之讀取之優先級及其組合。 若寫入循環欲繼續進行,則作業塊456在需要時更新庫 數目以進行下一寫入循環。若寫入循環不繼續進行,則作 業塊480將當前模式自執行寫入作業切換至執行讀取作 業’且作業在作業塊401處繼續進行。 若記憶體循環不標記為打開頁,則遵循關閉庫政策且作 業塊410對剛剛存取之頁預充電且該過程返回至作業塊;j 〇 2 以自適當庫佇列擷取下一記憶體循環。 圖5係圖解說明用於執行讀取_修改·寫入作業及部分資 料寬度寫入之記憶體存取請求之過程5〇〇之簡化流程圖, 該過程可在某種程度上與圖3之重排序過程300並行進行。 在作業塊502處,自請求佇列11〇(圖2)接收一新請求。基於 庫位址,在作業塊504處將該請求移動至適當庫仔列。決 策塊506確定剛剛接收到之請求是否係一如來自請求匯流 排240之具體信號或命令所識別之RMW請求。若該請求並 136208.doc -25- 200933630 非一 RMW請求,則控制返回至作業塊502以進行下一請 求。事實上,RMW過程500與重排序過程300在某種程度 上並行進行,因此針對非RMW請求,圖3之重排序過程 300可在決策塊306處繼續進行。 若該請求係一RMW請求,則決策塊508確定所定址RMW 位置之整個資料字是否已位於RMW單元144(圖2)之資料緩 衝器中。若該整個資料字不在彼資料緩衝器中,則作業塊 5 10在記憶體匯流排280上執行一讀取作業並將資料字儲存 於RMW單元144中之資料緩衝器中。 對於習用RMW作業而非部分資料寫入作業而言,作業 塊5 12在需要時將資料字之RMW部分返回至請求器230。 一般而言,所返回之RMW部分係寫入已發生前之讀取部 分。然而,記憶體控制器100可經組態以在寫入已發生後 返回該RMW部分。另外,可將額外資訊與該RMW部分一 起返回。作為一非限定性實例,可返回一比較與調換作業 之比較結果。 作業塊514將資料字之RMW部分寫入至RMW單元144之 RMW資料緩衝器中。若需要,則作業塊5 16將包含所寫入 RMW部分之整個資料字經由記憶體匯流排280寫入回至記 憶體。 決策塊518測試以確認RMW資料字是否經標記以用於保 留在資料緩衝器150中。如上所述,RMW資料緩衝器可經 組態以維持多個RMW資料字。藉此方式,可能避免記憶 體匯流排280上針對RMW請求之記憶體循環。若該資料字 136208.doc -26- 200933630 經標記憶以用於保留,則該過程返回至作業塊5〇2以等待 下一請求。若該資料字並非經標記以用於保留,則作業塊 520將資料字自資料緩衝器15〇清除以允許有供用於額外讀 取或寫入資料之空間。 RMW單元144亦可經組態以總是保留RMW值直至需要供 用於到達記憶鱧控制器之新RMW請求之空間,從而可避 免與每一新請求一起寫入至記憶體。若已完成此保留則 ❹ 重排序邏輯必須在需要時向記憶體建立一寫入作業。因 此,該保留可允許在每次更新RMW值時推遲一寫入,其 通常針對用於在過程之間(例如,在*同核心、執行緒及 其組合之間)通信及更新之RMW值而發生。 結論 本發明實施例可包含用於控制記憶體存取作業之系統、 記憶體控制器及方法。一處理系統可包含執行對複數個記 隐體器件之記憶體請求之一個或一個以上請求器。該等古己 φ 憶體器件中之每一者包含至少一個記憶體庫。一記憶體控 制器包含一請求佇列、一庫解碼器及複數個庫佇列。該請 求佇列自一請求器接收記憶體請求,且該庫解碼器基於伴 隨該等記憶體請求之記憶體位址確定一目的地庫。然後將 該請求置於適當庫佇列中。 —排序單元確定是否可相對於—已接收次序對當前記憶 體請求重排序,並基於該重新請求確定產生一新記憶體循 環次序。該重新請求可基於任一既定庫佇列中是否存在針 對相同s己憶體頁之多個請求。該重排序亦可基於是否存在 136208.doc 27· 200933630 相同類型之多個請求,例如讀取請求及寫入請求β 一記憶 體介面以排序單元所界定之記憶體循環次序來執行每一記 憶體請求°該記憶體循環請求可基於相同類型之請求、針 對相同頁之請求或其組合。該排序單元控制讀取資料以原 始接收次序返回至適當請求器。 一資料緩衝器保持自記憶體讀取循環返回之讀取資料直 至該所請求資料已返回至請求器。資料緩衝器亦可保持可 用於來自一請求器之讀取_修改-寫入請求之記憶體字。 該排序單元亦可檢測並控制對一所請求記憶體字之一部 分之讀取·修改-寫入作業。若所請求之記憶體字不存在於 資料緩衝器中,則重排序單元引導記憶體介面執行所請求 記憶體字之讀取並將其儲存於一資料緩衝器中。該重排序 單元亦控制在修改之前將所請求記憶體字之該部分返回至 至少一個請求器’並用來自RMW請求之資料來修改資料 緩衝器中之所請求記憶體字之該部分。
雖然已闡述特定實施例,但此等所闞述實施例並非係限 定性。而是’本發明範疇係由隨附申請專利範圍及其法律 等效物涵蓋》 【圖式簡單說明】 以下圖式囷解說明本發明實施例,在圖式中: 圖1係一處理系統之簡化系統方塊圖; 圖2係一記憶體控制器之簡化方塊圖; 之過程之簡 圖3係圖解說明一用於對記憶體請求重排序 化流程圖; 136208.doc -28 · 200933630 圖4係圖解說明一用於執行經重排序記憶體請求之過程 之簡化流程圖;且 圖5係圖解說明一用於執行讀取-修改-寫入作業之記憶 體存取請求之過程之簡化流程圖。 【主要元件符號說明】
100 記憶體控制器 102 記憶體請求 104 讀取資料匯流排 110 請求佇列 120 庫解碼器 130-0 庫佇列0 130-1 庫佇列1 130-n 庫仵列η 140 排序單元 142 順序控制器 144 RMW單元 150 資料緩衝器 154 讀取緩衝器 160 記憶體介面 170 時序控制器 172 記憶體控制匯流排 175 記憶體資料匯流排 200 處理系統 210 處理器 136208.doc -29- 200933630 220 圖形處理器 225 特殊用途請求器 230 請求器 240 請求匯流排 250 橋接器單元 260 匯流排橋接器 265 周邊匯流排 270 周邊器件 280 記憶體匯流排 290 記憶體卡 292 記憶體裝置 300 記憶體子系統 魯 136208.doc -30-

Claims (1)

  1. 200933630 十、申請專利範圍: 1 · 一種記憶體控制器,其包括: 記憶體請求中之每 一庫解碼器,其用於回應於複數個 所接收次序確定該等記憶體請 一者之一記憶體位址以一 求中之每一記憶體請求之一記憶體之一目的地庫; 複數個庫仔列,每-庫仔列用於儲存對與彼庫仔列相 關聯之-記憶體庫之未決記憶體請求並追㈣所接收次 序;
    -排序單元’其用於回應於在—相同庫仵列中及針對 一相同S己憶體頁之至少兩個記憶體請求之一存在確定一 不同於該所接收次序之記憶體循瓖次序;及 一圮憶體介面,其用於以該記憶體循環次序執行每一 記憶體請求。 2.如請求項1之記憶體控制器,其進一步包括一讀取修改_ 寫入(RMW)單元’該單元用於: 偵測一針對一所請求記憶體字之一部分iRMW請求; 若該資料緩衝器中不存在該所請求記憶體字,則自該 記憶體讀取該所請求記憶體字並將其儲存於該資料緩衝 器中; 用來自該RMW請求之資料來修改該資料緩衝器中之該 所請求記憶體字之該部分。 3.如請求項2之記憶體控制器,其中該rmW單元進一步經 組態以用於將該所請求記憶體字保留於該資料緩衝器中 以用於將來之RMW請求。 136208.doc 200933630 4.如請求項丨之記憶艎控制器,其中該排序單元進一步經 組態以使重排序相同類型之至少兩個料記憶體請求依 序發生,其中該相同類型係選自由讀取請求及寫入請求 組成之組群。 5·如請求項〗之記憶體控制器,其中該複數個庫佇列中之 每一庫佇列包括一讀取佇列及一寫入仔列。 6.如請求们之記憶體控制器,其進一步包括一用於保持 來自該記憶趙之所料資料直至該所請求資料被返回至 該至少一個請求器之資料緩衝器。 7·如請求項1-6中之任一項之記憶體控帝J|f,其進一步包 括: 用於執行該等記憶體請求之至少一個請求器;且 該記憶體包括複數個記憶體器件,該複數個記憶體器 件中之每一記憶體器件包括至少一個記憶體庫。 8. —種用於控制記憶體存取作業之方法其包括:
    以所接收順序接收指定用於複數個記憶體庫之複數 個記憶體請求; 為該複數個記憶體請求_之每—者較該複數個記憶 體庫中之一目的地庫; :由將該複數個記憶料求中之—請求與該複數個記 乂、請求中之至少另—請求加以比較而以該所接收順序 ]上接近而非順序的未執行之記憶體請求中倘測— 型之至少兩個未執行之記憶艘請求,其中該相同 係選自由讀取請求及寫入請求組成之組群; 136208.doc 200933630 基於該偵測結果重排序該請求順序; 依序執行該相同類型之該至少兩個記憶體請求。 9. 如請求項8之方法,其進一步包括: 偵測針對一記憶體字之一部分之一讀取-修改-寫入作 業’其中該記憶體字包括—對應於該複數個記憶體庫之 一資料寬度之資料寬度; 確疋該記憶體字是否存在於一記憶體控制器中; 右其不存在於該記憶體控制器中,則將該記憶體字自 一記憶鱧讀取至該記憶體控制器中; 將該記憶體字之該部分傳送至一起始該讀取修改寫 入作業之請求器;及 用來自該讀取-修改-寫入作業之該記憶體字之該部分 來修改該記憶體控制器中之該記憶體字。 10. 如請求項9之方法,其中該資料寬度係選擇自由一記憶 體匯流排寬度及一記憶體叢發循環資料寬度組成之群 組。 11. 如請求項8之方法,其進一步包括: 以該所接收順序在時間上接近的未執行之請求中债測 至少兩個額外記憶體請求;及 / :於偵測針對該相同記憶體頁之至少兩個額外記憶體 凊求之一結果重排序該請求順序。 12·如請求項11之方法,其包括: 以該經重配置之次序執行該至少兩個額外記憶艘請 136208.doc 200933630 若以該所接收順序執行該記憶體存取,則在一針對該 複數個記憶體庫内之每一記憶體頁之記憶體存取之一結 束時關閉彼記憶體頁;及 ” 在該經重配置順序之請求之間維持該相同記憶體 開。 13. 14. ❹ 15. 如請求項8之方法,其進一步包括: 監視一未決記憶體請求之一年齡; 當該未決記憶體請求等待被執行時,增加其一優先 級;及 防止在具有-高優先級之該未決記憶體請求之前發生 新把憶體請求被重排序。 如請求項8之方法,其進一步包括: 監視該複數個記憶體庫中之每一記憶體庫之一 態;及 狀 執行針對一不指$ _繁忙狀態之記憶體庫《下 體請求。 隐 清求項8之方法,其進一步包括向該讀取請求指派一 2於該寫人請求之較高優先級,並在該等讀取請求與 :何未决寫入請求之間不存在位址衝突時,在該寫入請 求之前執行該讀取請求。 136208.doc
TW097144279A 2007-11-15 2008-11-14 用於改良記憶體存取之次序的系統、裝置及方法 TWI419158B (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
TW200933630A true TW200933630A (en) 2009-08-01
TWI419158B TWI419158B (zh) 2013-12-11

Family

ID=40639099

Family Applications (2)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW102137335A TWI512724B (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) TWI512724B (zh)
WO (1) WO2009064793A1 (zh)

Families Citing this family (105)

* 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
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8160070B2 (en) * 2008-09-30 2012-04-17 Gridiron Systems, Inc. Fibre channel proxy
US8214608B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Behavioral monitoring of storage access patterns
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8214599B2 (en) * 2008-11-04 2012-07-03 Gridiron Systems, Inc. Storage device prefetch system using directed graph clusters
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
KR101014149B1 (ko) * 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
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
US8572322B2 (en) * 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US9965387B1 (en) * 2010-07-09 2018-05-08 Cypress Semiconductor Corporation Memory devices having embedded hardware acceleration and corresponding methods
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
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
US10558592B2 (en) 2011-11-28 2020-02-11 Pure Storage, Inc. Priority level adaptation in a dispersed storage network
US10318445B2 (en) * 2011-11-28 2019-06-11 International Business Machines Corporation 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プラットフォームズ株式会社 記憶装置及びその制御方法
US9619303B2 (en) * 2012-04-11 2017-04-11 Hewlett Packard Enterprise Development Lp 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
US9696920B2 (en) * 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
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
WO2017196143A1 (en) * 2016-05-12 2017-11-16 Lg Electronics Inc. A method and device for improved advanced microcontroller bus architecture (amba) and advanced extensible interface (axi) operations
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 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180029124A (ko) 2016-09-09 2018-03-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
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
US10620879B2 (en) * 2017-05-17 2020-04-14 Macronix International Co., Ltd. Write-while-read access method for a memory device
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 深圳市金玺智控技术有限公司 一种读取控制器数据的方法和系统
KR102407128B1 (ko) * 2018-01-29 2022-06-10 마이크론 테크놀로지, 인크. 메모리 컨트롤러
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 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
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
US11669274B2 (en) * 2021-03-31 2023-06-06 Advanced Micro Devices, Inc. Write bank group mask during arbitration
US11687281B2 (en) 2021-03-31 2023-06-27 Advanced Micro Devices, Inc. DRAM command streak efficiency management
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

Family Cites Families (26)

* 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
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
BR0007239B1 (pt) * 1999-10-21 2014-03-18 Panasonic Corp Aparelho de acesso á placa de memória semicondutora, placa de memória semicondutora e método de inicialização.
JP3846543B2 (ja) * 2000-03-13 2006-11-15 富士ゼロックス株式会社 メモリアクセスシステム
JP2001356961A (ja) * 2000-06-13 2001-12-26 Nec Corp 調停装置
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI419158B (zh) 用於改良記憶體存取之次序的系統、裝置及方法
KR100724557B1 (ko) 아웃 오브 오더 dram 시퀀서
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
EP2430554B1 (en) Hierarchical memory arbitration technique for disparate sources
US8543775B2 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US7757044B2 (en) Facilitating store reordering through cacheline marking
JP2002530731A (ja) 異常メモリアクセスまたは異なる時間のメモリアクセス実行の際のデータバス上のデータ衝突を検出するための方法および装置
CN111684427A (zh) 高速缓存控制感知的存储器控制器
JP2002530743A (ja) ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること
EP3910484B1 (en) Systems and methods for managing cache replacement
JP2000066946A (ja) メモリコントローラ