TW201802684A - 重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器 - Google Patents

重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器 Download PDF

Info

Publication number
TW201802684A
TW201802684A TW106121714A TW106121714A TW201802684A TW 201802684 A TW201802684 A TW 201802684A TW 106121714 A TW106121714 A TW 106121714A TW 106121714 A TW106121714 A TW 106121714A TW 201802684 A TW201802684 A TW 201802684A
Authority
TW
Taiwan
Prior art keywords
phase
memory
address
storage controller
physical address
Prior art date
Application number
TW106121714A
Other languages
English (en)
Other versions
TWI640864B (zh
Inventor
摩納許 夏
班傑明 查爾斯 瑟里布林
艾伯特 柏契爾斯
Original Assignee
谷歌有限責任公司
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 谷歌有限責任公司 filed Critical 谷歌有限責任公司
Publication of TW201802684A publication Critical patent/TW201802684A/zh
Application granted granted Critical
Publication of TWI640864B publication Critical patent/TWI640864B/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0656Data buffering arrangements
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

IOMMU映射輸入可係與第二層記憶體存取重疊,使得該兩個操作係至少部分同時執行。例如,當起始一第二層記憶體至一儲存裝置控制器內部緩衝器的讀取時,可同時建置一IOMMU映射。為實現此重疊,使用一二階命令緩衝器。在一第一階段中,將內容自一第二層記憶體位址讀取至該儲存裝置控制器內部緩衝器中。在一第二階段中,該內部緩衝器被寫入至DRAM實體位址中。

Description

重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器
現代電腦系統通常含有利用記憶體(諸如快閃記憶體)來儲存資料之儲存裝置。亦可使用其他記憶體技術(諸如自旋轉移力矩磁性隨機存取記憶體(STT-MRAM)、相變記憶體(PCM)及電阻性記憶體(ReRAM))來代替快閃記憶體。此等之所有者具有慢於被用作電腦系統之主要工作記憶體之DRAM的特性。此等其他記憶體以某些方式補充DRAM且在本文中將被稱作「第二層記憶體」。在一些情況中,來自該第二層記憶體之資料可在其被操作之前被引入至DRAM中。 當來自一第二層記憶體裝置之資料擬被寫入至主機動態隨機存取記憶體(DRAM)時,其必須具有對該主機DRAM頁之寫入存取權。在具有強制執行最少特權原則之一輸入/輸出記憶體管理單元(IOMMU)的一系統中,該IOMMU管理可對自第二層記憶體提取資料且將資料複製至DRAM之程序增加關鍵延時。例如,當僅可由第二層記憶體裝置在該第二層記憶體裝置所需要之最小持續時間內寫入頁時,不存在對實體記憶體之所有者之長延長映射。據此,必須對各寫入操作執行映射,此將產生延遲。 一類型之儲存裝置控制器係一特定應用積體電路(ASIC),其使用用作一調換(swap)裝置(包括其他功能在內)之低延時非揮發性NAND儲存(LLNAND)快閃記憶體。作業系統(OS)收回不頻繁存取之DRAM頁且將其等放入該儲存裝置控制器中。在一已收回頁之一使用者模式分頁錯誤後,OS分頁錯誤處理常式判定調換入之資料來自何處。當該儲存裝置控制器係一分頁錯誤之處理常式時,其必須自其之快閃記憶體裝置提取一頁且在一指定位址將其複製至主機CPU DRAM中。 該儲存裝置控制器可具有若干命令緩衝器,其等可提供同時之未處理要求,且接著對一指定位址進行一完成寫回。例如,一些儲存裝置控制器具有128個命令緩衝器。自該儲存裝置控制器複製至CPU DRAM要求該儲存裝置控制器具有對CPU DRAM之完全存取權,或可如需要般動態建立IOMMU映射。IOMMU映射建立可係一效能負擔。 通常,將資料自一第二層記憶體(諸如一快閃記憶體)寫入至一DRAM要求一OS分頁錯誤處理常式判定一後備儲存區(backing storage)位於該儲存裝置控制器快閃記憶體位址(FA),在一DRAM實體位址(PA)處分配一可用、零填充4KB頁,將PA映射至該IOMMU中,且將一命令發送至含有{FA, PA, 完成資料}之儲存裝置控制器。接著,該儲存裝置控制器將位元組自FA處之快閃記憶體複製至一內部緩衝器中。此會花費相對較長時間,諸如1 µs至100 µs。接下來,該儲存裝置控制器將位元組自一內部緩衝器複製至系統DRAM PA中,且發送一完成通知。接著,該OS取消PA之映射且繼續使用者程式碼。此串列程序將導致顯著延時。
IOMMU映射輸入(map-in)可與第二層記憶體存取重疊,使得該兩個操作至少部分同時執行。例如,當起始一第二層記憶體至一儲存裝置控制器內部緩衝器之讀取時,可同時建置一IOMMU映射。為實現此重疊,使用一二階命令緩衝器。在一第一階段中,將內容自一第二層記憶體位址讀取至該儲存裝置控制器內部緩衝器中。在一第二階段中,該內部緩衝器經寫入至DRAM實體位址中。 本發明之一態樣提供一種方法,其包括在一第一階段中,使用一或多個處理器將資料自一給定第二層記憶體位址複製至一儲存控制器之一內部緩衝器中,該複製至少部分發生於由一作業系統映射一指定實體位址至一輸入/輸出記憶體管理單元(IOMMU)中期間。該方法進一步包含藉由該一或多個處理器判定是否已觸發一第二階段,且若已觸發該第二階段,則使用該一或多個處理器將資料自該儲存控制器之內部緩衝器複製至動態隨機存取記憶體(DRAM)之指定實體位址。 本發明之另一態樣提供另一方法,其包括識別儲存資料之一特定第二層記憶體位址,在動態隨機存取記憶體(DRAM)之一特定實體位址處分配一頁,及將一命令發送至一儲存控制器,該命令識別該特定第二層記憶體位址且起始一第一階段,在該第一階段中將所儲存資料自該特定第二層記憶體位址讀取至該儲存控制器之一緩衝器中。該方法進一步包含將該特定實體位址映射至一輸入/輸出記憶體管理單元(IOMMU)中,該映射至少部分發生於該第一階段讀取期間,及編輯至該儲存控制器之命令以起始一第二階段,在該第二階段中將所儲存資料自該儲存控制器緩衝器寫入至該特定DRAM實體位址。 本發明之又一態樣提供一儲存控制器,其包括一記憶體,該記憶體包含一緩衝器及與該記憶體通信之一或多個處理器。該儲存控制器可進一步耦合至一第二層記憶體。該一或多個處理器經組態以在一第一階段中,將資料自該第二層記憶體之一給定第二層記憶體位址複製至該儲存控制器之緩衝器中,該複製至少部分發生於由一作業系統映射一指定實體位址至一輸入/輸出記憶體管理單元(IOMMU)中期間。該一或多個處理器經進一步組態以判定是否已觸發一第二階段,且若已觸發該第二階段,則將資料自該儲存控制器之緩衝器複製至動態隨機存取記憶體(DRAM)之指定實體位址。
本申請案主張2016年7月14日申請之美國臨時專利申請案第62/362,353號之申請日之權利,該案之全文係以引用方式併入本文中。概述 本發明技術大體上係關於藉由將IOMMU映射輸入與第二層記憶體存取重疊來最佳化第二層記憶體裝置存取。當起始一第二層記憶體至一儲存裝置控制器內部緩衝器中之讀取時,可同時建置一IOMMU映射。此可係使用一二階命令緩衝器來完成。在一第一階段中,將內容自一第二層記憶體位址讀取至儲存裝置控制器內部緩衝器中。在第二階段中,該內部緩衝器被寫入至一DRAM實體位址中。 根據一些實例,可藉由一或多個事件來觸發第二階段之操作。例如,一作業系統可發送一新命令或更新經發送至該儲存控制器之一先前命令。可自OS分頁錯誤處理常式,將一單一位元新增至一命令元組。例如,具有觸發之元組可係:{FA, PA, 完成資料, Stage 2 Start},其中FA係第二層記憶體位址,PA係實體位址,且Stage 2 Start係指示是否執行一習知讀取或一二階讀取,及/或該二階讀取之第二階段是否應被起始之一旗標。在此實例中,為執行一習知第二層記憶體讀取,該命令元組可與額外位元Stage 2 Start = 1一起被寫入。另一方面,為藉由二階行為來執行一第二層記憶體讀取,可在一初始命令中將該額外位元設定為Stage 2 Start = 0,且接著將其設定為Stage 2 Start=1來觸發第二階段操作。可藉由一位元組大小之周邊組件互連快速(PCIe)寫入來將Sart設定為1。若開始位元本身係位於一位元組上,則CPU可藉由至適當PCIe位址之一簡單1位元組寫入來開始階段2。 根據使用一二階緩衝器之此實例,該OS將含有{FA, PA, 完成資料, Stage 2 Start = 0}之一命令發送至儲存裝置控制器。該OS進一步將PA映射至IOMMU中,且編輯該命令以設定Stage 2 Start = 1。可期望,該IOMMU中之PA映射將比儲存裝置控制器提取第二層記憶體資料完成得更快,這是因為第二層記憶體讀取相對較慢,且該儲存裝置控制器可具有若干未處理異動。因為各個別CPU可僅具有一待決單一分頁錯誤,所以除執行IOMMU映射之外,其不具有其他需執行之工作。 Stage 2 Start控制用於避免該儲存裝置控制器在IOMMU映射建立之前寫入,而此可能係一關鍵錯誤。因為CPU至PCIe之寫入被發佈為不可快取,所以編輯該命令以設定Stage 2 Start = 1中之額外寫入應僅增加被該第二層記憶體存取延時重疊之延時。 在一些實例中,儲存裝置控制器可具有對主機記憶體之完全存取權,而在其他實例中,儲存裝置控制器僅具有使用IOMMU之短暫存取權。在任一情況中,可期望儲存裝置控制器PCIe位址至CPU DRAM位址之映射係簡單的。據此,可將一任意常數新增至所使用之每個位址,使得不要求數值一致。例如,新增一單一BASE_OFFSET,且將PCIe IOMMU空間中之CPU記憶體之所有者映射至輸入/輸出虛擬位址(IOVA)之一連續區域中。例如,該IOMMU係用於映射開始於PCIe位址1TB處之CPU記憶體。該儲存裝置控制器之裝置驅動程式藉由新增一1TB位移來將DRAM實體位址轉變成PCIe位址。 上文之實例進一步而言,記憶體之所有者均可被映射,但IOMMU仍可強制執行使用權限。依據預設,一系統裝置不具有存取在基底位址位移範圍內之主機記憶體之使用權限。當一輸入/輸出(IO)發生時,該主機將命令發送至該IOMMU以允許該系統裝置存取該基底位址位移範圍中之一適當頁。該系統裝置完成IO。接著,該主機命令該IOMMU放棄該等使用權限。就此而言,映射本身係在初始化時間時一次設定的,且僅需要在IO時間時改變該等使用權限。例示性系統 圖1繪示用於使第二層記憶體讀取與IOMMU映射重疊之一例示性系統100。例如,系統100可係在一主機板上互連之運算裝置之一系統。此一系統可存在於資料中心或其他運算環境中,諸如在私人運算裝置、膝上型電腦、行動電話、視訊遊戲系統、區域網路、廣域網路等等上。系統100包含主記憶體110,其經耦合至一中央處理單元(CPU) 120。CPU 120經進一步耦合至一輸入/輸出記憶體管理單元(IOMMU) 130。IOMMU 130及一或多個系統裝置150經由一周邊互連卡快速(PCIe)開關140連接。 可由CPU 120存取主記憶體110,且主記憶體110可儲存可由CPU 120執行之資料及指令。主記憶體110可係任何類型之記憶體,諸如唯讀記憶體、隨機存取記憶體、可移除式儲存媒體、快取記憶體、暫存器或類似者。主記憶體110可包含DRAM 125及位址重新映射表115及其他資料及記憶體單元。 CPU 120藉由(例如)一資料匯流排及一位址匯流排連接至主記憶體110且與其通信。CPU 120可係駐留於一晶片上之一微處理器或任何其他已知之處理器。儘管僅展示一單一CPU 120,然可在主記憶體110與IOMMU 130之間連接任何數目之CPU。例如,CPU 120可係一多核心處理器。 IOMMU 130將可DMA之裝置連接至主記憶體110。IOMMU 130進一步將裝置位址映射至位址重新映射表115中之實體位址。 PCIe開關140係提供用於將一或多個系統裝置150互連至系統100中之其他組件的一高速互連。PCIe開關140可係一主機板層級互連、一擴充卡介面或類似者。該等系統裝置可在一或多個鏈路上透過PCIe開關140通信。儘管PCIe開關140存在於圖1之實例中,然應瞭解,其他例示性系統可省略該PCIe開關。 系統裝置150可係能在系統100上通信之任何類型之裝置。僅舉例而言,系統裝置150可係一網路介面控制器(NIC)或一圖形處理單元(GPU)。雖然僅展示一系統裝置150,但系統100可包含任何數目個系統裝置。 如所展示,系統裝置150包含第二層記憶體160。例如,第二層記憶體160可係一快閃記憶體裝置,諸如一記憶體卡、一USB磁碟機、一固態磁碟機或任何其他類型之記憶體裝置。在其他實例中,第二層記憶體160可係STT-MRAM、 ReRAM、PCM或任何其他類型之第二層記憶體。 第二層記憶體160可固定在系統裝置150中,或其可係可移除的。 系統裝置150進一步包含儲存控制器170。結合圖2進一步詳細描述之儲存控制器170進一步包含內部緩衝器175。 自第二層記憶體160之讀取及寫入涉及系統100之諸多其他組件。例如,根據本發明,主機CPU 120之一作業系統(OS)識別儲存資料儲存於第二層記憶體160之一特定第二層記憶體位址處。該OS在一特定動態隨機存取記憶體(DRAM)實體位址處分配一頁。接著,該OS將一命令發送至儲存控制器170以起始一第一階段,在該第一階段中將該資料自特定快閃記憶體位址讀取至儲存控制器170之內部緩衝器175中。自該快閃記憶體讀取之同時,該OS(例如)使用位址重新映射表115將該特定實體位址映射至IOMMU 130中。當完成該快閃記憶體位址之讀取時,該OS編輯至儲存控制器170之命令以起始一第二階段,在該第二階段中將該資料自內部緩衝器175寫入至DRAM 125之特定實體位址。 儘管上文已將系統100描述為一主機板上之裝置之一系統,然應瞭解,系統100可係任何組態之電耦合運算裝置。例如,該系統可包含一背板互連周邊設備、一擴充卡介面或類似者。作為另一實例,該等運算裝置之間的連接可係固線式連接、無線連接或任何其他類型之連接。作為又一實例,系統100可包含TCP/IP、802.11、乙太網路、InfiniBand或任何其他類型之網路。 儘管儲存控制器170可具有對主機記憶體120之完全存取權,然在一些情況中,其可僅具有使用IOMMU 130之短暫存取權。例如,記憶體之所有者均可被映射,但IOMMU仍可強制執行使用權限。依據預設,系統裝置150不具有存取在基底位址位移範圍內之主機記憶體之使用權限。當一輸入/輸出(IO)發生時,主機120將命令發送至IOMMU 130以允許系統裝置150存取該基底位址位移範圍中之一適當頁。系統裝置150完成IO,且接著,主機120命令IOMMU 130放棄該等使用權限。就此而言,映射本身係在初始化時間時一次設定的,且僅需要在IO時間時改變該等使用權限。 儘管使用一不同映射機制,然不論儲存控制器170是否具有對主機記憶體120之完全存取權或短暫存取權,均可使該儲存記憶體之PCIe位址至該CPU DRAM位址的映射保持恆定。例如,可將一單一基底位移新增至相關機制。據此,可將PCIe IOMMU空間中之CPU記憶體之所有者映射至輸入/輸出虛擬位址(IOVA)之一連續區域中。 圖2描繪一例示性儲存控制器270。如所繪示,儲存控制器270可包含一處理器210、一記憶體230,及命令緩衝器280。處理器210可係任何熟知之處理器,諸如一市售之CPU或微控制器。替代地,該處理器可係一專用控制器,諸如一ASIC。根據另一實例,該控制器可係一狀態機器。 記憶體230儲存可由處理器210存取之資訊,包含可由處理器210執行之指令234。該記憶體亦包含可由該處理器擷取、操縱或儲存之資料232。該記憶體可係能儲存可由該處理器存取之資訊的任何類型記憶體,諸如可寫入記憶體及唯讀記憶體。記憶體230包含可由該處理器根據指令234擷取、操縱或儲存之資料232。舉例而言,雖然該系統或方法不受限於任何特定資料結構,但該資料可係儲存於一關聯式資料庫中之電腦暫存器中,該關聯式資料庫作為具有複數個不同欄位及記錄之一表或XML文件。亦可以任何電腦可讀格式(諸如(但不限於)二進制值、ASCII或萬國碼)來格式化該資料。此外,該資料可包括足以識別相關資訊的任何資訊,諸如數字、描述文字、專屬碼、指標、對儲存於其他記憶體(包含其他網路位置)中之資料的參照,或用以計算相關資料之一功能所使用的資訊。 指令234可係該處理器直接執行(諸如機器碼)或間接執行(諸如指令碼)之任何指令集。就此而言,術語「指令」、「步驟」及「程式」在本文中可互換使用。該等指令可係以目標碼格式儲存,以被該處理器直接處理,或係以任何其他電腦語言(包含指令碼或按需求解譯或提前編譯之獨立原始程式碼模組之集合)儲存。 可由該處理器執行指令234以(例如)執行一高效快閃記憶體讀取/寫入。例如,當該OS將一指定實體位址映射至該IOMMU中時,指令234可提供用於將位元組自一指定快閃記憶體位址複製至內部緩衝器275中。指令234可進一步提供判定是否已(例如)藉由來自該OS之一命令或另一事件觸發一第二階段。此等來自該OS之命令可被寫入至命令緩衝器280中。當已觸發該第二階段時,儲存控制器270將位元組自內部緩衝器275複製至該DRAM中之指定實體位址。儲存控制器270可在完成此時將一通知發送至該OS。 雖然圖2功能性地將處理器210及記憶體230繪示為位於相同方塊內,但將瞭解,該處理器及記憶體實際上可包括可或不可被儲存於相同實體外殼內之多個處理器及記憶體。例如,該等指令及資料之一些者可係儲存於一唯讀電腦晶片內之可移除式CD-ROM及其他者上。該等指令及資料之一些者或所有者可被儲存於實體上遠離處理器120但仍可被其存取之一位置中。類似地,處理器120實際上可包括可或不可並行操作之處理器之一集合。 圖3係一例示性時序圖,其繪示快閃記憶體讀取、IOMMU映射,及寫入至DRAM之相對時序。如所繪示,自一給定快閃記憶體位址FA讀取至該儲存控制器之內部緩衝器的操作310係相對較長。例如,此操作可佔用1 µs至100 µs或更長或更短。如圖3中所展示,該讀取操作開始於時間t0,且結束於時間t3。 在此期間,執行操作320,其中將一給定實體位址PA映射至該IOMMU中。此操作亦可稍微較長。然而,相對於依序進行,藉由與快閃記憶體讀取操作310同時進行之IOMMU映射操作320縮短所有操作310至330之一總時間。儘管IOMMU映射操作320經展示為開始於一時間t1且結束於一時間t2,然此等時間可相對於時間t0及t3而變動。例如,IOMMU映射操作320可開始於快閃記憶體讀取操作310之前。替代地或另外,IOMMU映射操作310可結束於快閃記憶體讀取操作310完成之後。就此而言,IOMMU映射操作320可僅部分與快閃記憶體讀取操作310重疊。然而,此重疊仍可導致延時之顯著減少。 當IOMMU映射操作320完成時,可觸發操作330,其中該內部緩衝器經寫入至該DRAM之給定實體位址中。儘管操作330經展示幾乎同時開始於操作310結束時,然該兩個操作之間可存在一稍微緩衝時期。在其他實例中,寫入操作330可開始於讀取操作310完成之前,但在IOMMU映射操作320完成之後。例示性方法 上文所描述之例示性系統進一步而言,現將描述例示性方法。可使用上文所描述之系統、其等之修改、或具有不同組態之各種系統之任何者來執行此等方法。應瞭解,無需按所描述之精確順序來執行上文之方法中所涉及之操作。相反,可按一不同順序或同時處置各種操作,且可新增或省略操作。 圖4提供繪示一方法400之一例示性流程圖。例如,可藉由主機CPU 120之OS (圖1)來執行此方法400。 在方塊410中,經判定,儲存資料儲存於一特定快閃記憶體位址FA處。僅舉例而言,一使用者可輸入一命令以存取儲存於一快閃記憶體裝置中之一特定檔案中之資料。據此,一OS分頁錯誤處理常式可識別對應於該檔案之快閃記憶體位址。 在方塊420中,將頁分配於一特定DRAM實體位址PA處。 在方塊430中,將一初始命令發送至該儲存控制器。此命令起始自特定快閃記憶體位址FA至該儲存控制器之一內部緩衝器中之讀取。例如,該命令可係識別該快閃記憶體位址、實體位址及完成資料之一元組。該命令可進一步指示,應執行讀取之二階處理,其中IOMMU映射與快閃記憶體讀取重疊。例如,該指示可係新增至該命令元組中之一位元,其中該位元經設定為0以起始一第一階段,且經設定為1以起始一第二階段。例如,此一元組可係:{FA, PA, 完成資料, 2nd Stage Start}.此元組亦可用於指示應執行習知一階串列處理。例如,在一初始命令中,相對於0,該2nd Stage Start位元可被設定為1。在其他實例中,該指示可係一單獨命令。例如,一作業系統可將一新命令發送至該儲存控制器。 在一些情況中,在IOMMU映射(方塊440)完成之前,不會知道實體位址PA。例如,在IOMMU映射之後,實體位址PA實際上可係一虛擬位址,諸如一輸入/輸出虛擬位址(IOVA)。在此等情況中,該初始第一階段命令可僅將快閃記憶體位址FA及完成資料寫入至該儲存控制器,例如,{FA, 完成資料}。已更新之第二階段命令可指示實體位址PA及用以起始該第二階段之開始的該位元,例如,{PA, 2nd Stage Start = 1}。例如,此已更新之第二階段命令可係一單一8位元組寫入,其中該實體位址佔據位元63至1,且階段2開始指示佔據最後位元0。 在方塊440中,將特定DRAM實體位址PA映射至IOMMU中。至少部分在執行自快閃記憶體位址FA至該緩衝器中之第一階段讀取之一時間段期間執行此映射。在一些實例中,可在該快閃記憶體讀取完成之前完成該IOMMU映射。在其他實例中,IOMMU映射可在該快閃記憶體讀取完成之後持續一段時間。在此等實例中,此內部緩衝器之至DRAM實體位址之寫入將被延遲直至該IOMMU映射完成。 在方塊450中,編輯該初始命令以起始一第二階段,在該第二階段中將資料自該緩衝器寫入至DRAM實體位址PA。例如,重新參考將元組用於該初始命令之實例,可將該2nd Stage Start位元自0改變為1。此改變可指示該儲存控制器IOMMU映射完成,且因此,該儲存控制器可開始寫入而不引起一錯誤。 圖5提供繪示一方法500之另一例示性流程。例如,可藉由該儲存控制器來執行此方法500。方法500中之操作之一些(諸如)藉由回應來自OS之命令來對應上文所描述之方法400中之OS之操作。 在方塊510中,將資料之位元組自特定快閃記憶體位址FA複製至一內部緩衝器中。此可在OS將實體位址PA映射至IOMMU (圖4,方塊440)時執行。 在方塊520中,判定將觸發第二階段之起始的一觸發事件是否已發生。一觸發事件之一實例係自OS接收IOMMU映射完成之一通知,諸如設定於一命令元組中之一特定位元。觸發事件之其他實例包含該OS寫入實體位址PA,預定長度之一逾時等等。應瞭解,此等觸發僅係實例,且可能存在任何數目之其他類型之觸發。 若未觸發第二階段,則方法500可返回至方塊510且繼續自快閃記憶體讀取至內部緩衝器中。在其他實例中,若未觸發第二階段,則儲存控制器可坐等(sit and wait)該觸發。然而,若經判定已觸發階段2,則該方法進行至方塊530。此處,將複製至該內部緩衝器之資料位元組進一步複製至該DRAM之特定實體位址。 在方塊540中,發送指示該快閃記憶體讀取/寫入完成之一通知。例如,可將該通知發送至該OS或另一系統裝置,諸如系統裝置150 (圖1)。 先前之系統及方法可藉由(例如)減少與快閃記憶體讀取/寫入相關聯之延時來改進運算效能。藉由將該IOMMU映射與該初始快閃記憶體讀取重疊,節省大量時間而不妨礙處理效能。 儘管上文已描述若干實例,然應瞭解,此等實例不具限制性且可作出進一步修改。例如,儘管上文所描述之方法係結合一儲存裝置控制器描述,然應瞭解,可在韌體中實施此等方法。此外,該二階處理不受限於快閃記憶體,而亦可用於圖形處理單元(GPU)、通用GPU (GPGPU)、複製至CPU記憶體之神經網路加速器或將資料移動至主機記憶體之其他加速器。 由於可在不背離由申請專利範圍界定之標的之情況下利用上文所論述特徵之此等及其他變動及組合,所以例示性態樣之先前描述應被視為具繪示性而非限制由申請專利範圍界定之標的。亦應瞭解,提供本文中所描述之實例(以及用於片語「諸如」、「例如」、「包含」及類似者表達之子句)不應被解譯為將所主張標的限制於該等指定實例;相反,該等實例意欲僅繪示諸多可行態樣之一些者。
100‧‧‧系統
110‧‧‧主記憶體
115‧‧‧位址重新映射表
120‧‧‧主機中央處理單元(CPU)
125‧‧‧DRAM
130‧‧‧輸入/輸出記憶體管理單元(IOMMU)
140‧‧‧周邊互連卡片快速(PCIe)開關
150‧‧‧系統裝置
160‧‧‧第二層記憶體
170‧‧‧儲存控制器
175‧‧‧內部緩衝器
210‧‧‧處理器
230‧‧‧記憶體
232‧‧‧資料
234‧‧‧指令
270‧‧‧儲存控制器
275‧‧‧內部緩衝器
280‧‧‧命令緩衝器
310‧‧‧操作
320‧‧‧操作
330‧‧‧操作
400‧‧‧方法
410‧‧‧方塊
420‧‧‧方塊
430‧‧‧方塊
440‧‧‧方塊
450‧‧‧方塊
500‧‧‧方法
510‧‧‧方塊
520‧‧‧方塊
530‧‧‧方塊
540‧‧‧方塊
圖1係根據本發明之態樣之一例示性系統之一方塊圖。 圖2係根據本發明之態樣之一例示性儲存控制器之一方塊圖。 圖3係根據本發明之態樣之一例示性時序圖。 圖4係繪示根據本發明之態樣之一例示性方法之一流程圖。 圖5係繪示根據本發明之態樣之又一例示性方法之一流程圖。
500‧‧‧方法
510‧‧‧方塊
520‧‧‧方塊
530‧‧‧方塊
540‧‧‧方塊

Claims (19)

  1. 一種方法,其包括: 在一第一階段中,使用一或多個處理器將資料自一給定第二層記憶體位址複製至一儲存控制器之一內部緩衝器中,該複製至少部分發生於由一作業系統映射一指定實體位址至一輸入/輸出記憶體管理單元(IOMMU)中之期間; 藉由該一或多個處理器來判定是否已觸發一第二階段;及 若已觸發該第二階段,則使用該一或多個處理器將該資料自該儲存控制器之該內部緩衝器複製至動態隨機存取記憶體(DRAM)之該指定實體位址。
  2. 如請求項1之方法,其中判定是否已觸發該第二階段包括:判定是否已自一作業系統接收一已更新命令元組。
  3. 如請求項2之方法,其中該已更新命令元組改變一初始命令元組中之一位元,該已改變位元被指定為觸發該第二階段之一旗標。
  4. 如請求項2之方法,其中該指定實體位址PA包括一虛擬位址。
  5. 如請求項4之方法,其中在該第一階段中自該給定第二層記憶體位址複製該資料係回應於識別該第二層記憶體位址之一初始命令元組。
  6. 如請求項5之方法,其中該已更新命令元組指示該指定實體位址及用以起始該第二階段之開始之一位元。
  7. 如請求項1之方法,進一步包括藉由該一或多個處理器將一基底位移新增至該已判定實體位址,使得該一或多個處理器之該第二階段複製係針對該指定位址。
  8. 一種方法,其包括: 識別儲存資料之一特定第二層記憶體位址; 在動態隨機存取記憶體(DRAM)之一特定實體位址處分配一頁; 將一命令發送至一儲存控制器,該命令識別該特定第二層記憶體位址及該特定實體位址,且起始一第一階段,在該第一階段中將該所儲存資料自該特定第二層記憶體位址讀取至該儲存控制器之一緩衝器中; 將該特定實體位址映射至一輸入/輸出記憶體管理單元(IOMMU),該映射至少部分發生於該第一階段讀取期間;及 編輯至該讀取控制器之該命令以起始一第二階段,在該第二階段中,將該所儲存資料自該儲存控制器緩衝器寫入至該特定DRAM實體位址。
  9. 如請求項8之方法,其中在該第一階段完成之前完成該映射。
  10. 如請求項8之方法,其中該命令包括一元組,其具有指定用於識別該第一階段之一起始或該第二階段之一起始之至少一者之一位元。
  11. 如請求項8之方法,其中將該命令發送至該儲存控制器進一步包括:識別該特定實體位址。
  12. 如請求項8之方法,其中編輯至該儲存控制器之該命令包括:識別該特定實體位址,在至該IOMMU中之該映射之後,該特定實體位址係一虛擬位址。
  13. 一種儲存控制器,其包括: 一記憶體,其包含一緩衝器; 一或多個處理器,其與該記憶體通信,該一或多個處理器用於: 在一第一階段中,將資料自一給定第二層記憶體位址複製至該儲存控制器之該緩衝器中,該複製至少部分發生於由一作業系統映射一指定實體位址至一輸入/輸出記憶體管理單元(IOMMU)中之期間; 判定是否已觸發一第二階段;及 若已觸發該第二階段,則將該資料自該儲存控制器之該緩衝器複製至動態隨機存取記憶體(DRAM)之該指定實體位址。
  14. 如請求項13之儲存控制器,其中為了判定是否已觸發該第二階段,該一或多個處理器判定是否已自一作業系統接收一已更新命令元組。
  15. 如請求項14之儲存控制器,其中該已更新命令元組改變一初始命令元組中之一位元,該已改變位元被指定為觸發該第二階段之一旗標。
  16. 如請求項14之儲存控制器,其中該指定實體位址PA包括一虛擬位址。
  17. 如請求項16之儲存控制器,其中在該第一階段中自該給定第二層記憶體位址複製該資料係回應於識別該第二層記憶體位址之一初始命令元組。
  18. 如請求項17之儲存控制器,其中該已更新命令元組指示該指定實體位址及一位元起始該第二階段之開始。
  19. 如請求項13之儲存控制器,進一步包括藉由該一或多個處理器將一基底位移新增至該已判定實體位址,使得該一或多個處理器之該第二階段複製係針對該指定位址。
TW106121714A 2016-07-14 2017-06-29 重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器 TWI640864B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662362353P 2016-07-14 2016-07-14
US62/362,353 2016-07-14
US15/267,404 2016-09-16
US15/267,404 US10296256B2 (en) 2016-07-14 2016-09-16 Two stage command buffers to overlap IOMMU map and second tier memory reads

Publications (2)

Publication Number Publication Date
TW201802684A true TW201802684A (zh) 2018-01-16
TWI640864B TWI640864B (zh) 2018-11-11

Family

ID=59269889

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106121714A TWI640864B (zh) 2016-07-14 2017-06-29 重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器

Country Status (4)

Country Link
US (2) US10296256B2 (zh)
EP (1) EP3270293B1 (zh)
DE (1) DE202017103915U1 (zh)
TW (1) TWI640864B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613772B2 (en) * 2017-03-16 2020-04-07 Qualcomm Incorporated Methods and apparatuses for copying a data page in an unmanaged flash memory device
US11182302B2 (en) 2019-06-06 2021-11-23 Macronix International Co., Ltd. Memory device, electronic device, and associated read method
US20210042255A1 (en) * 2019-08-09 2021-02-11 Sony Interactive Entertainment LLC Methods for Using High-Speed Data Communication Fabric to Enable Cross-System Command Buffer Writing for Data Retrieval in Cloud Gaming
US11036434B2 (en) * 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory systems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139503A (ja) 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法
US7130229B2 (en) 2002-11-08 2006-10-31 Intel Corporation Interleaved mirrored memory systems
KR100562906B1 (ko) 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US9355031B2 (en) 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US9569243B2 (en) 2014-12-05 2017-02-14 International Business Machines Corporation Offloading and parallelizing translation table operations

Also Published As

Publication number Publication date
DE202017103915U1 (de) 2017-10-23
TWI640864B (zh) 2018-11-11
US10866755B2 (en) 2020-12-15
US20180018123A1 (en) 2018-01-18
US10296256B2 (en) 2019-05-21
EP3270293A1 (en) 2018-01-17
EP3270293B1 (en) 2020-10-21
US20190227729A1 (en) 2019-07-25

Similar Documents

Publication Publication Date Title
CN111177029B (zh) 用于管理软件定义的永久性存储器的系统及方法
US9852069B2 (en) RAM disk using non-volatile random access memory
TWI640864B (zh) 重疊輸入輸出記憶體管理單元映射及第二層記憶體讀取之二階命令緩衝器
TWI752620B (zh) 與記憶體類型相關的頁表
TWI752619B (zh) 存取儲存的元資料以識別儲存資料的記憶體裝置
TWI696188B (zh) 混合式記憶體系統
US11016904B2 (en) Storage device for performing map scheduling and electronic device including the same
US20230072589A1 (en) Hierarchical memory systems
US20170300255A1 (en) Method and Apparatus for Detecting Transaction Conflict and Computer System
US20210349822A1 (en) Three tiered hierarchical memory systems
US10915267B2 (en) Atomic cross-media writes on a storage device
EP4018329A1 (en) Hierarchical memory systems
CN114258534B (zh) 阶层式存储器系统
US20210390060A1 (en) Hierarchical memory systems
US20240012564A1 (en) Memory controller and storage device including the same
EP4018322A1 (en) Hierarchical memory systems
WO2017020194A1 (zh) 一种文件系统保护方法、装置及存储设备