TWI514157B - 用於寫入流量控制之記憶體模組與方法、以及電腦系統 - Google Patents

用於寫入流量控制之記憶體模組與方法、以及電腦系統 Download PDF

Info

Publication number
TWI514157B
TWI514157B TW103115833A TW103115833A TWI514157B TW I514157 B TWI514157 B TW I514157B TW 103115833 A TW103115833 A TW 103115833A TW 103115833 A TW103115833 A TW 103115833A TW I514157 B TWI514157 B TW I514157B
Authority
TW
Taiwan
Prior art keywords
memory
module
flow control
compliant
write
Prior art date
Application number
TW103115833A
Other languages
English (en)
Other versions
TW201506627A (zh
Inventor
Gregg B Lesartre
Andrew R Wheeler
Original Assignee
Hewlett Packard Development Co
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 Hewlett Packard Development Co filed Critical Hewlett Packard Development Co
Publication of TW201506627A publication Critical patent/TW201506627A/zh
Application granted granted Critical
Publication of TWI514157B publication Critical patent/TWI514157B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Dram (AREA)

Description

用於寫入流量控制之記憶體模組與方法、以及電腦系統
本發明係有關於用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。
發明背景
動態隨機存取記憶體(DRAM)是一種依電性記憶體,其把資料位元儲存在電容器中,該等電容器須要電源來保持該等位元的值。因為電源被須要來保持該等值,DRAM被稱為一依電性或動態記憶體,而不是靜態記憶體。各種現代的計算系統利用DRAM DIMM來實現系統記憶體。DIMM(雙行記憶體模組)是一種電腦記憶體元件或模組,其包括若干個DRAM記憶體電路。一DIMM可能是一印刷電路板,並且可能包含有DRAM記憶體電路安裝於其上。一DIMM可插入或連接到一計算系統的一母板來介接一記憶體匯流排,其接下來可能介接一記憶體控制器。
發明概要
依據本發明之一實施例,係特地提出一種用於寫 入流量控制的記憶體模組,該記憶體模組包含有:一介接一遵循一資料傳輸標準之記憶體匯流排的介面,該資料傳輸標準規定了週期或定時資訊來傳送資料,其中該記憶體匯流排與一記憶體控制器進行通信;一介接不遵循該資料傳輸標準之一非順應記憶體技術的介面;一寫入緩衝器以從介接該記憶體匯流排的該介面接收寫入命令,其中該寫入緩衝器致使該接收到的寫入命令會使用一種不遵循該資料傳輸標準的通信協定被傳送到該非順應記憶體技術;以及一流量控制信用計數器來監控該寫入緩衝器的容量,其中該流量控制信用計數器提供一信用計數給該記憶體控制器,其用於指出該寫入緩衝器可以接受之寫入命令的數量。
100‧‧‧計算系統
102‧‧‧記憶體控制器(例如,順應DDR)
104‧‧‧記憶體匯流排(例如,順應DDR)
106‧‧‧記憶體模組(例如,DIMM)
108‧‧‧處理器
110‧‧‧母板和/或BIOS
112‧‧‧DDR記憶體電路/技術
114‧‧‧非DDR記憶體電路/技術
120‧‧‧流量控制模組
122‧‧‧順應匯流排介面模組
124‧‧‧解碼器模組
126‧‧‧寫入緩衝器模組
128‧‧‧流量控制信用模組
130‧‧‧順應記憶體介面模組
132‧‧‧非順應記憶體介面模組
134‧‧‧SPD電路
140‧‧‧讀取信用插入模組
200‧‧‧方法
202~220‧‧‧方塊
250~254‧‧‧方塊
300‧‧‧計算系統
312‧‧‧記憶體控制器
320‧‧‧記憶體模組
322‧‧‧順應記憶體匯流排介面
324‧‧‧寫入緩衝器
326‧‧‧流量控制信用計數器
328‧‧‧非順應記憶體匯流排介面
400‧‧‧方法
402~412‧‧‧方塊
以下的詳細描述參考到該等附圖,其中:圖1A是一示例計算系統的一方塊圖,其實現用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術;圖1B是一示例計算系統的一方塊圖,其實現用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術;圖2A係一示例方法的一流程圖,該方法用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術;圖2B係一示例方法的一流程圖,該方法用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制 技術;圖3是一示例計算系統的一方塊圖,該系統用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術;以及圖4係一示例方法的一流程圖,該方法用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。
較佳實施例之詳細說明
各種不同的DIMM可能遵循雙倍資料速率(DDR)資料傳輸標準。在這種情況下,為了使該記憶體控制器和該記憶體匯流排可與一順應DDR之DIMM進行通信,該記憶體控制器和記憶體匯流排可能亦被要求要順應DDR。因此,在各種計算系統中,該記憶體控制器和該記憶體匯流排被設計成根據該DDR資料速率傳輸標準來進行操作(即,它們係順應DDR)。在包括一順應DDR之記憶體控制器的計算系統中,該計算系統的各種其它組件(例如,中央處理器、母板、等等)會被設計成可介接該順應DDR之記憶體控制器。此外,順應DDR之記憶體控制器,因為它們被設計成介接一順應DDR之記憶體匯流排和順應DDR之DIMM,故可被設計成預期會有特定的記憶體通信特性。舉例來說,當該記憶體控制器對一DIMM發出一寫入命令(簡稱為一「寫入」)時,該記憶體控制器會預期該寫入將會在一定義的(例如,短的)時段內被完成。明確地說,該DDR 規範可能要求一記憶體控制器能夠以一種可預測的、定義好的、和相當快的速率饋入寫入命令給該DIMM。換句話說,該DDR標準可以被稱為一確定的協定,意味著當命令從該記憶體控制器被發送到該記憶體匯流排時,可預期該等命令將會在一特定數量的週期內完成。DDR DRAM記憶體電路能夠在如此之一可預測的、定義好的、和相當快的速率之內完成發送給它們的寫入,但其他類型的記憶體電路/技術則可能不行。
在某些情況下,會想要實現非依電性記憶體技術(例如,FLASH、PC-RAM、STT-MRAM、ReRAM、等等)其介接一順應DDR之記憶體匯流排和記憶體控制器(例如,透過一DIMM或類似的記憶體模組)。各種非依電性記憶體技術可能無法確保發送給它們的寫入將會在一可預測的、定義好的、和相當快速率之內被完成。舉例來說,非依電性記憶體技術,不會以一種定義的速率完成寫入,但當一寫入已經被完成時會做出指示(例如,經由一導線、線路或信號)。因為這些各種不同的非依電性記憶體技術無法表現出如一順應DDR之記憶體控制器所預期的行為,如此的一記憶體控制器可能無法與這些記憶體技術進行通信。
一些處理非依電性記憶體技術的方法包括增加一額外的導線或線路,使得當一DIMM(例如,一非依電性記憶體技術)還沒準備好要接收另一個寫入時,該DIMM會以信號告知。然而,這種方法可能需要修改該計算系統的一些組件。舉例來說,該母板、記憶體匯流排、和記憶體 控制器可能需要被修改來針對這一信號運行一個額外的線路/導線。此外,該記憶體控制器可能需要被修改來了解如何處理/支援該額外的線路/導線和信號。換句話說,對於此一方法,至少需要一非順應(例如,非順應DDR)母板、記憶體匯流排和記憶體控制器。這可能需要一系統管理員花費大量的成本來替換一計算系統的各種組件。
處理非依電性記憶體技術的其他方法還可把在該計算系統中其他的技術連接在一起(例如,不位於諸如一DIMM的一記憶體模組上或是透過該記憶體模組)。在這種情況下,為了使該記憶體控制器(和或許一處理器)可從這些非依電性記憶體技術讀取資料,該資料首先需要被明確地移動到該DIMM(例如,在該DIMM上的DRAM記憶體電路),之後該記憶體控制器和/或處理器才能存取該資料。先不談其他潛在的問題,資料此種初步的明確轉移是耗時的。
本發明描述了用於包括或介接非順應記憶體電路/技術之記憶體模組的寫入流量控制技術。本發明描述了一流量控制模組,其允許非順應(例如,非依電性)記憶體電路/技術可以介接一順應(例如,順應DDR)記憶體匯流排和一順應(例如,順應DDR)記憶體控制器。這可以讓該非順應記憶體電路/技術能夠利用與該記憶體控制器進行通信的好處(例如,效能優勢)。本發明描述了發送信用或信用計數給該記憶體控制器,其會致使該記憶體控制器可抑制發送出寫入命令,以避免超出各種記憶體電路/技術可完成寫入的能力因而壓倒過它們。本發明描述了一流量控制模組, 其位於該記憶體控制器(例如,一雖經修改但仍為順應記憶體控制器)和至少一個非順應記憶體電路/技術之間。該流量控制模組可以緩衝、記錄和管理寫入命令,並且可以信號告知(例如,透過流量控制信用)該記憶體控制器何時該記憶體控制器可發出寫入命令。當該記憶體控制器發出寫入命令時,它可以把它們以一種遵循一特定資料傳輸標準(例如,DDR)的方式來傳送;然而,該記憶體控制器會抑制發送出寫入,如果各種記憶體電路/技術都無法跟上的話。舉例來說,透過不為難較慢的非依電性記憶體技術,這些技術可能會有足夠的時間來完成該等寫入命令。
比起一些包含有增加一額外導線或線路的方法,本發明還提供了優點,使得當一DIMM還沒有準備好接受另一寫入時,該DIMM會以信號告知。本發明描述了一解決方案,其中流量控制信用或信用計數可透過順應(例如,順應DDR)的介面和佈線路徑來被請求、讀取或發送。舉例來說,一暫存器可能持有一更新的流量控制信用計數而該記憶體控制器可以藉由發出一讀取命令到一與該暫存器相關聯的位址來讀取它。在這一方面,本發明可以允許高容量、低成本、非依電性記憶體來介接該記憶體控制器,其可允許此種記憶體可在一計算系統中與常規記憶體(例如,DDR DRAM記憶)一起運作。此外,一種順應(例如,順應DDR)的記憶體控制器可與具有未知和不確定寫入等待時間之記憶體電路/技術進行通信。
在本發明說明書中,術語「順應」(例如,如順 應記憶體技術或順應記憶體控制器)可以指被設計成遵循一特定資料傳輸標準(例如,DDR或其他資料傳輸標準)的一電腦組件。同樣的,術語「非順應」可以指沒被設計成遵循(即不相容)一特定資料傳輸標準的一電腦組件。術語「資料傳輸標準」可以指一協定,根據其資料將在多條通信導線或線路上被傳送(例如,資訊會在其上被發送和/或接收的金屬線)。該資料傳輸標準可以指定一些資料傳送週期、各種命令的定時(例如,讀取、寫入、等等)、以及各種其他的細節,它們可能被需要來讓一電腦組件可發送和/或從另一電腦組件接收資料。作為一特定的示例,如果該資料傳輸標準是DDR,則相對於該DDR資料傳輸標準,一電腦組件可以是一順應(例如,順應DDR)電腦組件或一非順應電腦組件(例如,非順應DDR)。在DDR的情況下,一些非依電性記憶體電路或技術是非順應電腦組件的示例,舉例來說,因為它們並不像依電性DDR記憶體電路的操作方式。因此,在以下的各種描述中,當提及到一個非依電性記憶體電路或技術時,可以推斷其為非順應電腦組件。非依電性記憶體技術(例如,非順應DDR)例子可包括PCRAM、SATA、STT-RAM、ReRAM、憶阻器,FLASH和在PCIe上的旋轉磁碟。本發明亦可以套用於各種其他類型的非依電性記憶體技術。在本發明說明書中,術語「命令」(例如,如一寫入命令或讀取命令)可以指一多位元的數位數值,其中每一位元可以在一專用通信導線或線路上被發送。一命令可以有多個「欄位」,其中每一欄位是一多位元的數位數 值。欄位示例可以是「地址」(addr)、「命令」(cmd)和「資料」。該命令欄位(即cmd)不應與該更廣泛命令(例如,寫入或讀出命令)混淆。該cmd欄位可以指出該更廣泛命令想要什麼樣類型的命令,而該更廣泛命令可能包括若要執行該命令所需要的額外資訊(例如,addr和資料)。
圖1A是一示例計算系統100的一方塊圖,其實現用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。計算系統100可以是任何的計算系統或計算裝置,其包含有可存取一記憶體模組(例如,106)的記憶體控制器(例如,102),例如,經由一記憶體匯流排(例如,104)。在圖1A的示例中,該資料傳輸標準是DDR;然而,應當被理解的是,本發明所描述的技術和解決方案可以與任何其他資料傳輸標準一起使用。計算系統100可以包含有一記憶體控制器102、一記憶體匯流排104、一記憶體模組106、一處理器108和一母板和/或BIOS 110。
記憶體控制器102可發送記憶體命令(例如,寫入命令、讀取命令、等等)到記憶體匯流排104,進而使該等記憶體命令到達記憶體模組106。在某些情況下,傳回資料會從記憶體模組106被傳送到記憶體匯流排104,進而回到記憶體控制器102。為了介接記憶體匯流排104,記憶體控制器102可以使用,舉例來說,一些位址(即,addr)導線/線路、一些命令(即,cmd)導線/線路和一些資料導線/線路,如圖1A所示,連接到記憶體匯流排104。記憶體控制器102可發送記憶體命令到記憶體模組106,並可代表計算系統 100的一些其他組件,舉例來說,處理器108,從記憶體模組106接收資料。應被理解的是,雖然圖1A所示的情況為處理器108介接記憶體控制器102,但情況亦可能為至少有一組件位於處理器108和記憶體控制器102之間。情況亦可能為一些其他的組件(例如,並非為一處理器)介接記憶體控制器102以和記憶體模組106進行通信。
記憶體控制器102可以是一順應(例如,順應DDR)記憶體控制器,其意味著記憶體控制器102能夠根據特定的資料傳輸標準(例如,DDR)來操作。因此,記憶體控制器102可依所指定的資料傳輸標準發送資料到記憶體匯流排104和從記憶體匯流排104接收資料,該資料傳輸標準可能指定了細節,諸如該速率(例如,一可預測的、定義好的、和相當快的速率),以該速率寫入命令可被送至記憶體模組106完成。記憶體匯流排104也可能是順應的(例如,順應DDR的),這意味著記憶體匯流排104可依所指定的資料傳輸標準來接收和傳送命令。在一DDR資料傳輸標準的特定情況中,記憶體控制器102會以一可預期的速率快速地發出寫入命令到記憶體匯流排104而記憶體匯流排104可以一可預期的速率一致地發送該等寫入命令給記憶體模組106。記憶體控制器102也可以,在一些時間點上,抑制發送出寫入命令到記憶體匯流排104,例如,基於一流量控制信用計數,其會在以下做更為詳盡的描述。因此,記憶體控制器102可被想像成如同有兩種寫入模式-一第一模式其中記憶體控制器會以一種順應DDR的方式送出寫入命令,和一第二模式 其中記憶體控制器會抑制送出寫入命令。
記憶體模組106可以是任何類型的記憶體模組(例如,DIMM),其包括或介接記憶體電路和/或記憶體技術(如,DRAM電路)。記憶體模組106可以是,舉例來說,一印刷電路板,其插入到或連接到該計算系統100的一母板。記憶體模組106可從記憶體匯流排104接收命令(例如,寫入命令)。為了介接記憶體匯流排104,記憶體模組106可以使用,舉例來說,如在圖1A中所示的一些位址(即,addr)導線/線路、一些命令(即,cmd)導線/線路和一些資料導線/線路,連接到記憶體匯流排104。記憶體模組106能夠以一種順應的方式從記憶體匯流排104接收命令(例如,以一種由該資料傳輸標準所指定的速率)。在一些示例中,在那裡流量控制模組120是一分離於記憶體模組106的電腦組件(舉例來說,該情況會在以下做更詳細說明),流量控制模組120可具有介接記憶體匯流排104之addr、cmd和資料導線/線路,而記憶體模組106可具有連接以介接該流量控制模組120。
記憶體模組106可包含或可介接至少一順應記憶體電路或技術(例如,DDR記憶體電路/技術112)。記憶體模組106可包括或可介接至少一個非順應記憶體電路或技術(例如,非DDR記憶體電路/技術114)。在一些示例中,記憶體模組106可同時包括或介接至少一個順應記憶體電路或技術(例如,112)以及至少一個非順應記憶體電路或技術(例如,114)。在一些示例中,記憶體模組106可能只會包括或 介接至少一個非順應記憶體電路或技術(例如,114)。在這些例子中,記憶體模組106不會包括或介接一順應記憶體電路/技術(例如,112),而相關的組件和/或模組(例如,模組130)會被排除。
記憶體模組106可以包含有一流量控制模組120。正如在圖1A中可被看到的,流量控制模組120係位於一順應記憶體控制器102和一非順應記憶體電路/技術(例如,114)之間。流量控制模組120可以允許非順應(例如,非依電性)記憶體技術(例如,114)來介接一順應(例如,順應DDR)記憶體匯流排(例如,104)和一順應記憶體控制器(例如,102)。流量控制模組120可以被實現為電子電路(例如,一電路)。在一些示例中,模組120可以被實現為僅含硬體(例如,靜態電路)。在其他示例中,模組120可以被實現為一能夠被編程或被配置的電路(例如,韌體),或被實現為一能夠讀出並執行指令的電路(例如,具有一微處理器的電路以執行在一種機器可讀取儲存媒體上的指令和/或軟體)。在一特定的示例中,流量控制模組120可以是一應用特定積體電路(ASIC)並可連接到或安裝在記憶體模組106上。在其他的示例中,模組120可能是一分離於記憶體模組106的電腦組件。舉例來說,模組120可以插入或連接到計算裝置100的一母板以介接記憶體匯流排104,然後記憶體模組106可插入或連接到模組120。
流量控制模組120可以包括數個模組,舉例來說,模組122、124、126、128、130和132。這些模組的每 一個可以是,如以上所描述的,電子電路(例如,硬體和/或韌體),和/或這些模組的每一個可以是在一機器可讀取儲存媒體上的指令,該等指令可由該流量控制模組120的一微處理器來執行。對於本說明書所描述和展示出的該等模組,應被理解的是,一模組所包含之該等可執行指令和/或電子電路的部分或全部在另外的實施例中可能被包含在異於該等圖示所示之一不同的模組中,或被包含在一未示出之一不同的模組中。該等圖示出模組的每一個可能或可能不會出現在各種示例中,並且在一些示例中,可能存在有額外的模組。
順應匯流排介面模組122可以與記憶體匯流排104(例如,透過記憶體模組106)根據一特定的資料傳輸標準(例如,DDR)進行通信。舉例來說,順應匯流排介面模組122可能係以一可預測的、定義好的和相當快的速率從記憶體匯流排104接收寫入命令。根據該特定的資料傳輸標準,順應匯流排介面模組122也可以接收讀取命令和其他型態的命令。順應匯流排介面模組122也可傳回資料(例如,被稱為「傳回資料」)給記憶體匯流排104,舉例來說,以回應一讀取命令。讀取命令可從至少一順應記憶體電路/技術(例如,112)和/或從至少一非順應記憶體電路/技術(例如,114)中讀取資料。順應匯流排介面模組122可以具有數個連接以介接記憶體匯流排104,舉例來說,數個addr、cmd和資料導線/線路,如圖1A中所示。順應匯流排介面模組122可以饋入命令(例如,讀取和/或寫入命令)給解碼器模組124。順 應匯流排介面模組122也可以從解碼器模組124接收傳回資料。
解碼器模組124可以從順應匯流排介面模組122接收命令。解碼器模組124可以路由命令和/或命令之各種不同的欄位到流量控制模組120之各種不同的模組。舉例來說,解碼器模組124可基於該命令的一位址(即,addr)欄位來決定要把特定的命令(或欄位)路由到哪裡。在此一方面,流量控制模組120其各種模組的每一個可被關聯到一特別的「位址空間」。作為一特定的示例,流量控制信用模組128可被關聯到一特別的位址。在這個示例中,各種其他的位址可能被關聯到位於記憶體模組106上(或介接於其)的記憶體電路/技術(例如,112和/或114)。因此,當解碼器模組124從順應匯流排介面模組122接收一命令時,模組124會分析該命令(例如,該addr欄位),並且可以適當地路由該命令。
在某些情況下,解碼器模組124所路由的部分少於該完整命令(例如,少於該命令的所有欄位)。舉例來說,如果解碼器模組接收一讀取命令來讀取流量控制信用模組128,模組124可以僅把該等addr和cmd欄位路由到該流量控制信用模組。在某些實例中,解碼器模組124可以不做任何修改的遞送一命令之特定的導線、線路或欄位。舉例來說,進入到解碼器模組124的資料線(例如,來自模組122)可遞送給一寫入緩衝器,舉例來說,因為解碼一到來的命令不需要該等資料導線/線路。解碼器模組124可以從流量控制模組120的各種不同模組接收傳回資料,舉例來說,從模組128 接收。解碼器模組124還可從至少一個記憶體電路/技術(例如,112和/或114)接收傳回資料,雖然圖1A並沒有展示出一條從這些記憶體電路/技術回傳到解碼器模組124的資料傳回路徑。圖1A主要聚焦的功能面向在於發出寫入命令到該等記憶體電路/技術,因此,圖1A僅描繪出路由到這些記憶體電路/技術的資料線路。
寫入緩衝器模組126可以包含有至少一個寫入緩衝器。在本說明書的各種描述中可能參考到模組126的一單一寫入緩衝器,但應被理解的是,這些描述可以被擴展成與多於一個的寫入緩衝器一起工作。寫入緩衝器模組126可接收和儲存(例如,用一種先進先出的方式)從解碼器模組124來的寫入命令。在模組126中的該寫入緩衝器可具有一大小或一容量,其可決定該寫入緩衝器一次可容納多少個寫入命令。當寫入緩衝器所儲存的寫入命令數目等同於其大小/容量時,該寫入緩衝器會是「滿的」。術語「使用的容量」係指當前正被儲存在該寫入緩衝器中的寫入命令數目。術語「可用的容量」係指在寫入緩衝器變成滿的之前,該寫入緩衝器目前還可接受之寫入命令的數量。
寫入緩衝器模組126可發送儲存的寫入命令到記憶體電路/技術(例如,112和/或114),舉例來說,透過至少一個介面模組(例如,130和/或132)。舉例來說,介面模組130和/或132可對寫入緩衝器模組128指出何時它可以接收另一寫入命令。作為另一示例,如果一特定的介面模組(例如,130)是順應DDR的,寫入緩衝器模組126可以一DDR資 料傳輸標準所指定的方式發送儲存的寫入命令到該介面模組(例如,以一可預測的、定義好的和相當快的速率)。在一些示例中,對於順應記憶體電路/技術,命令可以繞過寫入緩衝器模組126,如在圖1A中所示。在此一示例中,解碼器模組124會知道哪些命令係與系統記憶體相關聯,並直接發送這些命令到一順應記憶體介面模組(例如,130)。在其他示例中,記憶體模組106可能不包含有任何順應記憶體電路/技術,在這種情況下流量控制模組120可能不包含有任何順應記憶體介面模組。
介面模組130和132可以接收寫入命令並且可以把它們發送到它們各自的記憶體電路/技術(例如,112、114)。這些記憶體電路/技術(例如,112、114)的每一個不是被安裝在記憶體模組106上就是外部於記憶體模組106。如果一記憶體電路/技術係外部於記憶體模組106,則該各自的記憶體介面模組(例如,130、132)會經由一埠、連接器、導線組等等連接到該外部記憶體電路/技術。
寫入緩衝器模組126可以,在不同的時間點上(例如,每一週期),傳達其可用容量給流量控制信用模組128,如在圖1A中所示。因此,在不同的時間上(例如,每一週期),流量控制信用模組128可維持寫入緩衝器模組128可以接受之寫入命令數量的一快照。如果該寫入緩衝器已滿,該寫入緩衝器模組可能會傳回一個零值給流量控制信用模組。如以上所提及的,本發明允許非順應記憶體技術(例如,114)來介接一順應(例如,順應DDR)記憶體匯流排和一 順應記憶體控制器。在某些情況下,非順應記憶體電路/技術(如114)可能以信號告知(例如,透過介面模組132)寫入緩衝器模組何時其可以接受額外的寫入命令和/或何時其不能接受更多任何的寫入命令時。然後寫入緩衝器模組126可以使用這樣一個信號停止發送儲存的寫入命令到如此之非順應記憶體電路/技術。在此同時,寫入緩衝器模組126仍然可以接收來到的寫入命令(例如,以一種DDR速率)。因此,在某些情況下,在模組126中的寫入緩衝器可能開始會填滿(例如,該可用容量可能會降低)。
流量控制信用模組128可以接收,在不同的時間點上(例如,每一週期),寫入緩衝器模組的該可用容量。流量控制信用模組118可以翻譯或解讀這個容量做為/成為流量控制信用計數,其可指出可被發送出之寫入的數量。因此,流量控制信用模組128可以,在某些情況下,被稱為流量控制信用計數器。術語「信用」(例如,流量控制信用)可指單一一個可消耗的標記或點數,一旦一寫入命令被發出(例如,由該記憶體控制器)該標記或點數便會失效。有時,為了便於通信,各種不同的組件和模組會發送出「信用計數」,其可指出信用的一個數量,並因此可被發送出之寫入的數量。舉例來說,如果信用計數為3,則在該信用數被用完之前,3個寫入可被發出或被送出。
流量控制信用模組128可以,在不同的時間點上,發送流量控制信用(例如,一信用計數)到記憶體控制器102。流量控制信用可以以各種方式被發送到記憶體控制器 102,如在以下做更為詳細的描述。一旦記憶體控制器102接收到流量控制信用(例如,信用計數),它可以在本地記錄未使用的信用數量。在一些示例中,記憶體控制器102可維護一信用計數。該儲存的信用計數可以指出一個數字,該數字為在記憶體控制器應停止發送寫入之前,該記憶體控制器102還可以發送出之寫入的數量。在某些情況下,如果記憶體控制器102具有一當前儲存的信用計數值,然後接收到一個新的信用計數值(例如,來自模組128),記憶體控制器102然後可將該新的信用計數值加到當前儲存的信用計數值來更新當前儲存的信用計數值。在這種情況下,該新的信用計數可以指出自從上一次該信用計數被讀取或被傳送到該記憶體控制器之後所釋放出的信用數量。在其他的情況下,它可能是該記憶體控制器的責任來根據自該信用計數暫存器被讀取之後才被發出之額外的寫入數來遞減該新接收到的信用計數,舉例來說,以確定在該記憶體控制器接收到該信用更新的時點上該實際的剩餘信用。在這一種情況下,該新增的信用計數可指出在該信用暫存器被讀取時,在該信用計數暫存器中信用的當前數量。
在發出或送出任何的寫入到記憶體模組106之前,記憶體控制器102可檢查該流量控制信用的狀態(例如,該流量控制信用計數),以確定該記憶體控制器還可以發出有多少個寫入。備選地,或另外地,記憶體控制器102可在各種不同的其他時間點上檢查該流量控制信用的狀態。每次記憶體控制器102發出一寫入,它有可能「消耗」 一個流量控制信用,而該儲存的信用計數可能會減少一。如果在某一時間點上,該流量控制信用計數為零時,並且如果沒有其他的流量控制信用可供消耗,記憶體控制器102會抑制發出或送出任何的寫入命令到記憶體模組106,然後,在一稍後的時間點上,記憶體控制器可以接收一新的信用計數,其可能指出在模組126之該寫入緩衝器中的容量已經被釋放了,然後記憶體控制器102可繼續發出或送出寫入命令。
當收到這些流量控制信用時,記憶體控制器102可能需要被設計和/或被配置來做解讀和/或有所行動。然而,應當被理解的是,該記憶體控制器102的一介面可能仍然遵循一特定的資料傳輸標準(例如,DDR)。另外,如以上所指出的,當記憶體控制器102發送出寫入命令時,(例如,當它有流量控制信用可供消耗),它可能是根據一特定的資料傳輸標準(例如,DDR)來發送該等命令。因此,當比起一沒有實現流量控制信用的記憶體控制器時,儘管記憶體控制器102可能需要被改變,但一改變的記憶體控制器仍然能夠介接遵循該資料傳輸標準之計算系統100所有其他的電腦組件。舉例來說,一母板,包含有一DIMM記憶體模組的一插座,可能並不需要被改變(例如,它們會保持為順應的)。作為一特定的情境,在一些系統中,該記憶體控制器是一中央處理器(例如,108)的一部分,並且因此,一現存的處理器可簡單地被替換成一包含一經改變之記憶體控制器102的處理器,然後該計算系統就準備好可實現流量控制 信用(例如,假定一流量控制模組120被使用)。
作為流量控制信用如何可被發送到記憶體控制器102的一示例,流量控制信用模組128可以包含有一可由記憶體控制器102進行讀取的信用暫存器。該信用暫存器可以具有一位址,而記憶體控制器102可發出一讀取到該位址,並可以接收傳回資料作為回應,用一種與記憶體控制器102發出一讀取命令到一記憶體電路的類似方式。當記憶體模組106接收到一定向到該信用暫存器的讀取命令,解碼器模組124會路由該讀取到流量控制信用模組128。然後解碼器模組可以從該信用暫存器接收該信用(例如,一信用計數)做為傳回資料,並且可以把這個數據傳回給記憶體控制器102。由於流量控制信用可以透過通信導線/線路(例如,addr、cmd、資料)由該記憶體控制器來做請求和接收,而該等通信導線/線路與該記憶體匯流排使用來對記憶體電路做讀取和寫入的通信導線/線路是相同的,該記憶體控制器會變得可得知何時它可發出寫入命令(例如,在沒有超出寫入緩衝器126的情況下),或者何時它不能發出寫入命令,而不需要額外的信令導線/線路。有一些方法包含了一條額外的導線或線路,該導線或線路讓一DIMM在該DIMM還沒有準備好可接收另一寫入時發出信號,比起那些方法,這可提供了優勢。
記憶體控制器102可以在不同的時間點上讀取該信用暫存器來以接收在模組126中該寫入緩衝器其可用容量的更新。舉例來說,在發出任何寫入之前,如果記憶體 控制器沒有任何儲存和未使用的信用,記憶體控制器102可讀取該信用暫存器。記憶體控制器102還可以在當在該介面上有信用的週期並在用完信用之前讀取該信用暫存器。記憶體控制器102也可在不同的其他時間點上讀取該信用暫存器。
作為流量控制信用如何可被發送到記憶體控制器102的另一示例,記憶體模組106可以包含有一SPD電路134,其可儲存一初始信用計數。在一些示例中,SPD電路134可以是一SPD ROM或其它類型的SPD組件。在一般的情況下,當一電腦(例如,計算系統100)被開機或重新啟動時,一記憶體模組的一SPD(串列存在性檢測)組件可被使用。當該電腦被開機或重新啟動時,它可能會執行一開機自我檢測以檢測,舉例來說,在該系統中存在何種記憶體,以及要使用何種定時來存取該記憶體。如此的資訊可以使被用來配置該記憶體控制器。一SPD組件可以包含有ROM(唯讀記憶體)或其它類型的記憶體,其用於儲存各種資訊,該等資訊會在開機自我檢測過程中由該電腦取得。在一些示例中,如此的一SPD組件可儲存一個初始信用計數。SPD電路134可以儲存和提供這種初始信用計數。
由SPD電路134所提供的一初始信用計數可能以各種方式來做出它到記憶體控制器102的路徑。舉例來說,計算系統100的該母板和/或BIOS 110可以讀取記憶體模組106的SPD電路134(例如,一個SPD ROM)。SPD電路134可以使用一個I2 C介面、SMBus介面或用以存取SPD組件之一 些其他類型的介面來做存取。一I2 C介面可以連接一SPD組件到一母板上,並且可以只包含有兩個接腳,舉例來說,一個用於時脈信號而一個用於資料信號。其他的介面也可以被使用來存取SPD電路134。一旦母板和/或BIOS 110收到這個初始信用計數資訊時,它們會把它傳給記憶體控制器102來配置該記憶體控制器。母板和/或BIOS 110會把這個初始信用計數直接或透過一中央處理器(例如,108)傳給記憶體控制器102。
在一些示例中,記憶體模組106的SPD電路134僅可被使用來把一初始信用計數傳給記憶體控制器102。因此,舉例來說,當計算系統100接通電源時,記憶體控制器可接收這個初始信用計數。然後,該記憶體控制器可透過本說明書所描述之其他方式中的至少一個來請求和/或接收後續的信用計數更新(例如,藉由讀取在流量控制信用模組128中的一暫存器,如以上所描述的,和/或藉由接收一個額外的讀取週期,如以下所描述的)。
圖1B是一示例計算系統100的一方塊圖,其實現用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。計算系統100可以相同於描繪在圖1A中的計算系統100。鑒於圖1A描繪了與發出寫入命令相關聯的各種功能,圖1B描繪了與發出讀取命令相關聯的各種功能,特別的是,透過一額外的讀取週期接收流量控制信用(例如,信用計數),以下會做更為詳細的描述。將被看到的是,透過比較圖1A和圖1B,各種模組和/或組件係於該等兩圖之間被 共享。然而,為了便於描述起見,某些模組和/或組件會顯示在圖1A中但並未顯示在圖1B中,反之亦然。舉例來說,計算系統100可以包含有一個讀取信用插入模組140。應當被理解的是,一些示例計算系統可能包有在圖1A和/或圖1B中所示該等模組和/或組件的任意組合。某些示例計算系統可能包有在圖1A和/或圖1B中所示的所有組件。
作為流量控制信用如何可被發送到記憶體控制器102的另一示例,讀取信用插入模組140可把讀取交易之該傳回資料階段延長至少一個額外的週期。在該額外的週期中,模組140將會致使一目前的信用計數被傳回到該記憶體控制器,彷彿該信用計數為傳回資料。
讀取信用插入模組140可以從流量控制信用模組128,在不同的時間點上(例如,每一週期),接收一當前的信用計數,如在圖1B中所示。讀取信用插入模組140可以接收由記憶體控制器102所發出的讀取命令。在一些示例中,模組140可以傳遞(例如,未做任何改變)讀取命令到至少一順應記憶體電路/技術(例如,112)和/或至少一非順應記憶體電路/技術(例如,114)。讀取信用插入模組140可接著從該記憶體電路/技術接收傳回資料。在各種情況下,對一讀取命令的回應可能要用多個週期才可傳回到記憶體控制器,舉例來說,因為該傳回資料的量太大以至於無法套入到該等資料導線/線路的位元中。讀取信用插入模組140可致使讀取命令的響應可包括至少一個額外的週期,例如,在來自一記憶體電路的傳回資料其最後一個週期之後。讀 取信用插入模組140可插入該最後接收到的流量控制信用計數到這個額外的週期中,並會把它格式化成將被發送回到記憶體控制器102的傳回資料。
記憶體控制器102和模組140兩者都可能知道並遵循一程序、演算法或類似物,其決定何時流量控制信用會在一個額外的資料傳回週期中被傳回使得該等信用會在該記憶體控制器處被期待,並且使得該記憶體匯流排可被排程成可自由地攜帶該等信用跨越該順應匯流排介面。記憶體控制器102需要被設計和/或配置成知道如何處理一包含有一信用計數的額外可讀取週期。然而,正如上面所指出的,該記憶體控制器102的一介面可能仍然遵循一特別的資料傳輸標準(例如,DDR)。
在一些示例中,讀取信用插入模組140會有條件地(例如,僅有時會)致使讀取命令的響應來包含有一個額外的週期。舉例來說,讀取信用插入模組140(和/或流量控制模組120或記憶體模組106的某些其他模組)可以記錄自從上一次該信用計數被請求/讀取/送出之後有多少寫入命令已經被記憶體模組106所接收。在這個示例中,如果一定義的寫入數目已經被接收到的話,信用插入模組140可以啟動插入一額外的讀取週期,而一當前的信用計數可被送出。因此,可以看出流量控制模組120可以實現(例如,同時地)各種不同的方式來發送信用計數給記憶體控制器102。舉例來說,在閒置的週期中,記憶體控制器102可明確地讀取流量控制信用模組128,然後在較繁忙的期間,若自記憶體控 制器102已經可以讀取流量控制信用模組128之後一些寫入已經發出,讀取信用插入模組140可以插入該當前的信用計數來當作一額外的讀取週期。再舉另一示例,如果該記憶體控制器在它發出一讀取之前發出一些寫入,則該記憶體控制器可能需要明顯地讀取流量控制信用模組128,因為可能無法有一讀取週期可接收該流量控制信用計數。各種其他的狀況可以被考慮,其中傳回該流量控制信用的這些方法可以一起工作。
圖2A和圖2B描繪一示例方法200的一流程圖,該方法用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。將被看到的是,藉由比較圖2A和圖2B,各種步驟係於該等兩圖之間被共享。然而,為了便於描述起見,某些步驟會顯示在圖2A中但並未顯示在圖2B中,反之亦然。舉例來說,圖2B沒有顯示步驟204、206、210和212,但圖2B卻有顯示步驟250、252和254。應當被理解的是,在一些示例中,方法200可能包有在圖2A和/或圖2B中所示該等步驟的任意組合。在一些示例中,方法200可能包有在圖2A和/或圖2B中所示的所有步驟。在本發明的其他實施例中,方法200的一個或多個步驟基本上可以同時或以不同於圖2A和圖2B中所示的順序來被執行。在本發明的另外實施例中,方法200可以包含有比圖2A和圖2B所示之步驟還要多或還要少的步驟。在一些實施例中,方法200該等步驟中的一個或多個可以,在特定的時間點上,一直持續和/或可以重複執行。方法200可由一流量控制模組(例如,圖1A的 120)或任何其它合適的電子電路來執行,舉例來說,在圖3記憶體模組320上的電路。方法200可以被實現為電子電路的形式和/或被實現為儲存在一機器可讀取儲存媒體上,例如,設置在流量控制模組120中的一種機器可讀取儲存媒體上,之可執行指令的形式。
參考圖2A,方法200始於步驟202,並繼續到步驟204,在那裡一SPD電路(例如,134)可被讀取,例如,透過一I2 C介面,來接收初始流量控制信用。在步驟206,一記憶體控制器(例如,102)可被配置成具有來自該SPD電路之初始流量控制信用(例如,信用計數)。如同在前面所做之詳細討論,步驟204和206可以是可執行的初始化階段,舉例來說,當一計算系統啟動或重新啟動時。在步驟208,一流量控制信用模組(例如,128)可以監控一寫入緩衝器(例如,在寫入緩衝器模組126內部)以確定該寫入緩衝器的該可用容量。此外,在步驟208,該流量控制信用模組可以維護和/或更新流量控制信用(例如,信用計數)。在步驟210,流量控制模組120可透過一順應匯流排介面(例如,模組122)接收一讀取命令來讀取一流量控制暫存器(例如,在流量控制信用模組128內部)。此外,在步驟210,流量控制模組120(例如,透過解碼器模組124)可路由該命令到該流量控制信用模組。在步驟212,該流量控制模組可把流量控制信用(例如,信用計數)透過該順應匯流排介面從該流量控制信用模組發送到該記憶體控制器。
在步驟214,流量控制模組120可以透過一順應匯 流排介面(例如,模組122)接收一寫入命令以寫入到一非順應記憶體電路/技術(例如,114)。此外,在步驟214,流量控制模組120(例如,透過解碼器模組124)可路由該命令到該寫入緩衝區。在步驟216,該寫入緩衝器可以儲存該來到的寫入命令,而且該寫入緩衝器的該容量會更新(減少)。在這一點上,正好作為說明方法200如何可以具有正在進行和/或重複執行步驟的一示例,方法200可以返回到步驟208,而該更新的寫入緩衝器可以由該流量控制信用模組進行監控。此外,在這一點上,一旦該寫入緩衝器儲存一來到的寫入時,如果該寫入緩衝器有信用的容量,它可接受另一寫入命令,正如由返回到步驟214的箭頭所示。在步驟218,該寫入緩衝器可路由一寫入命令(例如,在一種先進先出的方式)到一個介接該非順應記憶體電路/技術的介面(例如,132)。作為一示例,該非順應記憶體電路/技術可以使用一個信號、線路或導線來告知該寫入緩衝器何時它可以或不可以接受另一寫入命令。此外,在步驟218,該寫入緩衝器會更新(增加)其容量以反應一寫入命令的移除。在這一點上,正好作為說明方法200如何可以具有正在進行和/或重複執行步驟的一示例,方法200可以返回到步驟208,而該更新的寫入緩衝器可以由該流量控制信用模組進行監控。此外,在這一點上,該寫入緩衝器可接受另一寫入命令,正如由返回到步驟214的箭頭所示。方法200最終會繼續到步驟220,在那裡方法200會停止。
參考圖2B,步驟202、208、214、216、218和220 和在圖2A中所示的步驟是相同的。此外,方法200可包括步驟250、252和254。在步驟250,流量控制模組120可經由該順應匯流排介面(例如,模組122)接收一讀取命令來讀取一順應或非順應記憶體電路/技術(例如,112或114)。在步驟252,流量控制模組120可透過該順應匯流排介面把讀取傳回資料從該記憶體電路/技術傳送回該記憶體控制器。舉例來說,該讀取命令的響應可遞送經過一讀取信用插入模組(例如,140)。在步驟254,當傳回讀取資料時,流量控制模組120會(例如,透過模組140)插入一額外的週期。模組140會格式化該額外週期以包含該流量控制信用(例如,信用計數),使得該當前的流量控制信用會被傳回給該記憶體控制器。記憶體控制器102和模組140兩者都會知曉並遵循一程序、演算法或類似物,其決定何時流量控制信用會在一個額外的資料傳回週期中被傳回使得該等信用會在該記憶體控制器處被期待,並且使得該記憶體匯流排可被排程成可自由地攜帶該等信用跨越該順應匯流排介面。方法200最終會繼續到步驟220,在那裡方法200會停止。
圖3是一示例計算系統300的一方塊圖,該系統用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。計算系統300可以是任何的計算系統或計算裝置,其包含有可存取一記憶體模組(例如,320)的一記憶體控制器(例如,312),例如,經由一記憶體匯流排。有關於一示例計算系統其更多的細節會如前面所描述,舉例來說,參照圖1A的計算系統100。在圖3的實施例中,計算系 統300包含有一記憶體控制器312和一記憶體模組320。舉例來說,記憶體控制器312會類似於圖1A的記憶體控制器102,而記憶體模組320會類似於記憶體模組106。
記憶體模組320可以包含有一些組件322、324、326和328。這些組件的每一個可以被實現為電子電路的形式和/或被實現為儲存在一機器可讀取儲存媒體上,例如,設置在記憶體模組320中的一種機器可讀取儲存媒體上,之可執行指令的形式。如此的一機器可讀取儲存媒體可以是能儲存可執行指令之任何電子、磁性、光學、或其他實體的儲存裝置。因此,如此的一機器可讀取儲存媒體可以是,舉例來說,隨機存取記憶體(RAM)、電子可抹除可程式化唯讀記憶體(EEPROM)、等等。在組件322、324、326和328被實現為可執行指令的情況下,記憶體模組320可以包含有適於檢索和執行那些儲存在機器可讀取儲存媒體上指令之任何類型的微處理器。如此之處理器可以提取、解碼、和執行指令(例如,組件322、324、326和3288)來,其中包括,實現用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。對於展示在圖3中的組件方塊(例如,322、324、326和328),應當被理解的是,被包含在一方塊中之該等可執行指令和/或電路的部分或全部在另外的實施例中可能是被包含在該圖中所示的一個不同的方塊中,或是被包含在一未被示出之不同的方塊中。
順應記憶體匯流排介面322可與記憶體控制器312經由一記憶體匯流排進行通信。介面322、記憶體控制 器312和該記憶體匯流排的每一個可以順應於一特定的資料傳輸標準(例如,DDR)。寫入緩衝器324可從介接該記憶體匯流排的該介面來接收寫入命令。該寫入緩衝器可能會致使該等接收到的寫入命令被寫入到一個不遵循該資料傳輸標準的非順應記憶體電路或技術。流量控制信用計數器326會監控該寫入緩衝器的該容量。該流量控制信用計數器會維護一信用計數,該信用計數指出該寫入緩衝器可以接受的寫入命令的數量。該流量控制信用計數器會透過介接到該記憶體匯流排的該介面和該記憶體匯流排來提供該信用計數給該記憶體控制器。非順應記憶體介面328可以用一種不遵循該資料傳輸標準的方式來與該非順應記憶體電路或技術進行通信。
圖4是一示例方法400的一流程圖,該方法用於包括或介接非順應記憶體技術之記憶體模組的寫入流量控制技術。方法400可由一記憶體模組(例如,圖3的320)或任何其它合適的電子電路來執行,舉例來說,圖1A的流量控制模組120。方法400可以被實現為電子電路的形式和/或被實現為儲存在一機器可讀取儲存媒體上,例如,設置在記憶體模組320中的一種機器可讀取儲存媒體上,之可執行指令的形式。在本發明的其他實施例中,方法400的一個或多個步驟基本上可以同時或以不同於圖4中所示的順序來被執行。在本發明的另外實施例中,方法400可以包含有比圖4所示之步驟還要多或還要少的步驟。在一些實施例中,方法400該等步驟中的一個或多個可以,在特定的時間上,一 直持續和/或可以重複執行。
方法400始於步驟402,並繼續到步驟404,在那裡記憶體模組320可以透過介接一個遵循一第一資料傳輸標準之記憶體匯流排的介面(例如,322)來接收一寫入命令,其中該記憶體匯流排可以與一記憶體控制器(例如,312)進行通信。在步驟406,記憶體模組320可以把該寫入命令儲存在一寫入緩衝器中(例如324),並且可以更新該寫入緩衝器的一種容量。在步驟408,記憶體模組320會監控(例如,透過流量控制信用計數器326)該寫入緩衝器的該容量以維護一信用計數,該信用計數指出該寫入緩衝器可以接受的寫入命令的數量。流量控制信用計數器326會透過介接到該記憶體匯流排的該介面和該記憶體匯流排來提供該信用計數到該記憶體控制器。在步驟410,記憶體模組會致使該寫入命令從該寫入緩衝器被寫入到(例如,透過介面328)一不遵循該第一資料傳輸標準的非順應記憶體電路或技術。方法400最終會繼續到步驟412,在那裡方法400會停止。
100‧‧‧計算系統
102‧‧‧記憶體控制器(例如,順應DDR)
104‧‧‧記憶體匯流排(例如,順應DDR)
106‧‧‧記憶體模組(例如,DIMM)
108‧‧‧處理器
110‧‧‧母板和/或BIOS
112‧‧‧DDR記憶體電路/技術
114‧‧‧非DDR記憶體電路/技術
120‧‧‧流量控制模組
122‧‧‧順應匯流排介面模組
124‧‧‧解碼器模組
126‧‧‧寫入緩衝器模組
128‧‧‧流量控制信用模組
130‧‧‧順應記憶體介面模組
132‧‧‧非順應記憶體介面模組
134‧‧‧SPD電路

Claims (15)

  1. 一種用於寫入流量控制的記憶體模組,該記憶體模組包含有:一介接遵循一資料傳輸標準之一記憶體匯流排的介面,該資料傳輸標準規定了傳送資料的週期或定時資訊,其中該記憶體匯流排與一記憶體控制器進行通信;一介接不遵循該資料傳輸標準之一非順應記憶體技術的介面;一寫入緩衝器,以從介接該記憶體匯流排的該介面接收寫入命令,其中該寫入緩衝器致使該接收到的寫入命令會使用不遵循該資料傳輸標準的一通信協定被傳送到該非順應記憶體技術;以及一流量控制信用計數器來監控該寫入緩衝器的一容量,其中該流量控制信用計數器提供一信用計數給該記憶體控制器,其用於指出該寫入緩衝器可以接受之寫入命令的一數量。
  2. 如請求項1之記憶體模組,其中該資料傳輸標準係一雙資料速率(DDR)標準。
  3. 如請求項2之記憶體模組,其中該非順應記憶體技術是一非依電性記憶體技術而且該通信協定被使用來與非依電性記憶體進行通信。
  4. 如請求項1之記憶體模組,其中該流量控制信用計數器包含有一暫存器,藉由提供一位址給介接該記憶體匯流 排的該介面,該記憶體匯流排可從該暫存器做讀取。
  5. 如請求項1之記憶體模組,更包含有一串列存在性檢測(SPD)電路,其中該SPD電路提供一初始信用計數來初始化該記憶體控制器。
  6. 如請求項1之記憶體模組,其中該信用計數會透過通信線路被提供給該記憶體匯流排,該通信線路與該記憶體匯流排使用來對記憶體電路和/或該記憶體模組的技術做讀取和寫入的通信線路是相同的。
  7. 如請求項1之記憶體模組,其中該信用計數被提供給該記憶體匯流排,該提供無需使用超出該記憶體匯流排使用來對記憶體電路和/或該記憶體模組之技術做讀取和寫入之額外的通信線路。
  8. 如請求項1之記憶體模組,其中該信用計數係響應於由該記憶體匯流排發送到該記憶體模組的一讀取命令,藉由一額外的傳回資料週期被提供給該記憶體匯流排。
  9. 一種用以在一記憶體模組中執行之寫入流量控制方法,該方法包含有:透過一介接遵循一資料傳輸標準之一記憶體匯流排的介面接收一寫入命令,其中該記憶體匯流排與一記憶體控制器進行通信;把該寫入命令儲存在一寫入緩衝器中並更新該寫入緩衝器的一容量;監控該寫入緩衝器的該容量以維護一流量控制信用計數,該信用計數指出該寫入緩衝器可以接受之寫入 命令的一數量,並透過介接到該記憶體匯流排的該介面和該記憶體匯流排來提供該流量控制信用計數給該記憶體控制器;以及致使該寫入命令會使用一不遵循該資料傳輸標準的通信協定從該寫入緩衝器被寫入到一不遵循該資料傳輸標準的非順應記憶體技術。
  10. 如請求項9之方法,其中該流量控制信用計數會被該記憶體控制器使用來判定該記憶體控制器是否可以發出寫入命令到該記憶體模組。
  11. 如請求項9之方法,更包含有透過介接一記憶體匯流排的該介面接收一讀取命令來讀取一暫存器,該暫存器儲存有該流量控制信用計數的一當前值,其中提供該流量控制信用計數給該記憶體控制器包含有響應於該讀取命令,傳回該流量控制信用計數做為傳回資料。
  12. 如請求項9之方法,更包含有:透過介接一記憶體匯流排的該介面接收一讀取命令來讀取一被包含在該記憶體模組或與該記憶體模組進行通信的記憶體技術;以及當響應於該讀取命令而傳回資料到該記憶體匯流排時,插入包含有該流量控制信用計數之一額外的傳回資料週期。
  13. 一計算系統,該計算系統包含有:一遵循一雙資料速率(DDR)資料傳輸標準的記憶體控制器,和一耦合到遵循該DDR資料傳輸標準之該記憶 體控制器的記憶體匯流排;一包括或介接一不遵循該DDR資料傳輸標準之非順應記憶體技術的記憶體模組;以及一流量控制電路,該流量控制電路包含有:一介接該記憶體匯流排的介面,其中該介面遵循該DDR資料傳輸標準,和一介接該非順應記憶體技術的介面;一寫入緩衝器,以從介接該記憶體匯流排的該介面接收寫入命令,其中該寫入緩衝器致使該接收到的寫入命令會被寫入到該非順應記憶體技術;以及一流量控制信用計數器來監控該寫入緩衝器的一容量,其中該流量控制信用計數器提供一信用計數給該記憶體控制器,其用於指出該寫入緩衝器可以接受之寫入命令的一數量。
  14. 如請求項13之的計算系統,其中該非順應記憶體技術係一種非依電性記憶體技術。
  15. 如請求項13之的計算系統,其中該信用計數會透過通信線路被提供給該記憶體匯流排,該通信線路與該記憶體匯流排使用來對記憶體電路和/或該記憶體模組的技術做讀取和寫入的通信線路是相同的。
TW103115833A 2013-07-09 2014-05-02 用於寫入流量控制之記憶體模組與方法、以及電腦系統 TWI514157B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/049654 WO2015005903A1 (en) 2013-07-09 2013-07-09 Write flow control for memory modules that include or interface with non-compliant memory technologies

Publications (2)

Publication Number Publication Date
TW201506627A TW201506627A (zh) 2015-02-16
TWI514157B true TWI514157B (zh) 2015-12-21

Family

ID=52280407

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103115833A TWI514157B (zh) 2013-07-09 2014-05-02 用於寫入流量控制之記憶體模組與方法、以及電腦系統

Country Status (5)

Country Link
US (1) US20160139807A1 (zh)
EP (1) EP3020047A1 (zh)
CN (1) CN105340017A (zh)
TW (1) TWI514157B (zh)
WO (1) WO2015005903A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI819635B (zh) * 2022-06-01 2023-10-21 瑞昱半導體股份有限公司 記憶體控制系統與記憶體控制方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170109299A1 (en) * 2014-03-31 2017-04-20 Stephen Belair Network computing elements, memory interfaces and network connections to such elements, and related systems
US9697114B2 (en) * 2014-08-17 2017-07-04 Mikhael Lerman Netmory
US9904645B2 (en) * 2014-10-31 2018-02-27 Texas Instruments Incorporated Multicore bus architecture with non-blocking high performance transaction credit system
US10103869B2 (en) * 2016-04-15 2018-10-16 Infinera Corporation Systems, apparatus, and methods for packetized clocks
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10474389B2 (en) * 2016-07-05 2019-11-12 Hewlett Packard Enterprise Development Lp Write tracking for memories
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10949328B2 (en) 2017-08-19 2021-03-16 Wave Computing, Inc. Data flow graph computation using exceptions
CN107632830B (zh) * 2017-09-19 2020-07-10 首都师范大学 一种溢出优化的寄存器分配方法及系统
US10996888B2 (en) * 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
US11048645B2 (en) * 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US10969994B2 (en) 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11307796B2 (en) * 2018-09-27 2022-04-19 International Business Machines Corporation Mapping memory allocation requests using various memory attributes
US10901657B2 (en) 2018-11-29 2021-01-26 International Business Machines Corporation Dynamic write credit buffer management of non-volatile dual inline memory module
US11934308B2 (en) 2019-04-01 2024-03-19 Wave Computing, Inc. Processor cluster address generation
US10997102B2 (en) 2019-04-01 2021-05-04 Wave Computing, Inc. Multidimensional address generation for direct memory access
US11531601B2 (en) * 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11137941B2 (en) 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100110748A1 (en) * 2007-04-17 2010-05-06 Best Scott C Hybrid volatile and non-volatile memory device
US20100223422A1 (en) * 2005-06-13 2010-09-02 Bonella Randy M Advanced Dynamic Disk Memory Module
US20120059970A1 (en) * 2009-12-21 2012-03-08 Sanmina-Sci Corporation Memory controller supporting concurrent volatile and nonvolatile memory modules in a memory bus architecture
US20120155160A1 (en) * 2010-12-17 2012-06-21 Everspin Technologies, Inc. Memory controller and method for interleaving dram and mram accesses
TW201234170A (en) * 2010-10-27 2012-08-16 Lsi Corp Adaptive ECC techniques for flash memory based data storage
TW201303594A (zh) * 2011-07-14 2013-01-16 Lsi Corp 快閃記憶體介質控制器及裝置
US20130077382A1 (en) * 2011-09-26 2013-03-28 Samsung Electronics Co., Ltd. Hybrid memory device, system including the same, and method of reading and writing data in the hybrid memory device
TW201324148A (zh) * 2011-09-30 2013-06-16 Intel Corp 實施具有不同操作模式之多階記憶體階層的設備與方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6707756B2 (en) * 2002-03-12 2004-03-16 Smart Modular Technologies, Inc. System and method for translation of SDRAM and DDR signals
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100223422A1 (en) * 2005-06-13 2010-09-02 Bonella Randy M Advanced Dynamic Disk Memory Module
US20100110748A1 (en) * 2007-04-17 2010-05-06 Best Scott C Hybrid volatile and non-volatile memory device
US20120059970A1 (en) * 2009-12-21 2012-03-08 Sanmina-Sci Corporation Memory controller supporting concurrent volatile and nonvolatile memory modules in a memory bus architecture
TW201234170A (en) * 2010-10-27 2012-08-16 Lsi Corp Adaptive ECC techniques for flash memory based data storage
US20120155160A1 (en) * 2010-12-17 2012-06-21 Everspin Technologies, Inc. Memory controller and method for interleaving dram and mram accesses
TW201303594A (zh) * 2011-07-14 2013-01-16 Lsi Corp 快閃記憶體介質控制器及裝置
US20130077382A1 (en) * 2011-09-26 2013-03-28 Samsung Electronics Co., Ltd. Hybrid memory device, system including the same, and method of reading and writing data in the hybrid memory device
TW201324148A (zh) * 2011-09-30 2013-06-16 Intel Corp 實施具有不同操作模式之多階記憶體階層的設備與方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI819635B (zh) * 2022-06-01 2023-10-21 瑞昱半導體股份有限公司 記憶體控制系統與記憶體控制方法

Also Published As

Publication number Publication date
TW201506627A (zh) 2015-02-16
WO2015005903A1 (en) 2015-01-15
EP3020047A1 (en) 2016-05-18
US20160139807A1 (en) 2016-05-19
CN105340017A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
TWI514157B (zh) 用於寫入流量控制之記憶體模組與方法、以及電腦系統
JP7456083B2 (ja) ロウハンマ緩和のホスト支援のためのリフレッシュコマンド制御
CN105608027B (zh) 非易失存储设备和访问非易失存储设备的方法
US10025737B2 (en) Interface for storage device access over memory bus
JP2020166832A5 (zh)
TWI537969B (zh) 用於包括或介接非順應記憶體技術之記憶體模組的響應控制技術
EP3364304B1 (en) Memory channel that supports near memory and far memory access
US11709777B2 (en) Memory system
US11082043B2 (en) Memory device
BR112015019459B1 (pt) Dispositivo para uso em um módulo de memória e método realizado em um módulo de memória
TWI637270B (zh) 混合式記憶體驅動器,電腦系統,及用於操作多重模式混合式驅動器之相關方法
US9785365B1 (en) Persistent memory descriptor
US11755255B2 (en) Memory device comprising a plurality of memories sharing a resistance for impedance matching
KR20210091647A (ko) 비휘발성 메모리에 대한 자동 증분 기입 카운트
CN118202337A (zh) PCIe分叉系统中的动态端口分配
EP4155894A1 (en) Technologies for memory mirroring across an interconnect

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees