TW202407547A - 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法 - Google Patents

儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法 Download PDF

Info

Publication number
TW202407547A
TW202407547A TW112105317A TW112105317A TW202407547A TW 202407547 A TW202407547 A TW 202407547A TW 112105317 A TW112105317 A TW 112105317A TW 112105317 A TW112105317 A TW 112105317A TW 202407547 A TW202407547 A TW 202407547A
Authority
TW
Taiwan
Prior art keywords
storage device
command
timer
address
memory
Prior art date
Application number
TW112105317A
Other languages
English (en)
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 TW202407547A publication Critical patent/TW202407547A/zh

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • 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
    • 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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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

Abstract

本發明揭露用於對自主機計算裝置至儲存裝置的命令進行處理的系統和方法。所述方法包括:由儲存裝置對來自主機計算裝置的命令進行辨識,所述命令包括邏輯位址;偵測條件;基於偵測到所述條件,由儲存裝置請求將邏輯位址轉換成實體位址;由儲存裝置將實體位址儲存於高速緩衝記憶體中;以及根據所述命令而基於實體位址傳送資料。

Description

用於預填充地址轉換緩存的系統和方法
根據本揭露的實施例的一或多個態樣是有關於對記憶體進行管理,且更具體而言是有關於對儲存與虛擬記憶體位址相關聯的實體記憶體位址的高速緩衝記憶體記憶體的利用進行管理。 [相關申請案的交叉參考]
本申請案主張於2022年4月11日提出申請且名稱為「針對讀取進行的即時位址轉換高速緩衝記憶體預填充(JUST IN TIME ATC PRE-POPULATION FOR READS)」的美國臨時申請案第63/329,755號的優先權及權益,所述美國臨時申請案的全部內容併入本案供參考。
主機裝置可在一或多個虛擬記憶體位址空間中與儲存裝置進行交互。用於各種用途(例如提交命令及完成命令或者發送資料或接收資料)的共享記憶體可能需要裝置將主機的虛擬位址轉換成實體位址,以使得可正確地對資料進行定位。讀取請求及寫入請求可包括虛擬記憶體位址。由轉換代理(Translation Agent,TA)將虛擬記憶體位址轉換成實體記憶體位址,且可將經轉換實體位址儲存於儲存裝置的位址轉換高速緩衝記憶體(address translation cache,ATC)中。高速緩衝記憶體的記憶體空間通常是有限的。因此,為高效且有效地使用ATC,可期望對實體記憶體位址進行填充。
本先前技術部分中所揭露的以上資訊僅用於增強對本揭露的背景的理解,且因此以上資訊可能包含不構成先前技術的資訊。
本揭露的實施例是有關於一種處理自主機計算裝置至儲存裝置的命令的方法。所述方法包括:由所述儲存裝置對來自所述主機計算裝置的命令進行辨識,所述命令包括邏輯位址;偵測條件;基於偵測所述條件,由所述儲存裝置請求將所述邏輯位址轉換成實體位址;由所述儲存裝置將所述實體位址儲存於高速緩衝記憶體中;以及基於所述實體位址根據所述命令傳送資料。
根據一個實施例,所述方法包括由所述儲存裝置因應於辨識出所述命令而起動第一定時器,其中所述條件包括對所述第一定時器的逾時進行偵測。
根據一個實施例,所述第一定時器的長度短於對所述命令進行處理的預測潛時。所述第一定時器的長度可基於欲處理的有效命令的數目而以動態方式進行計算。
根據一個實施例,所述方法更包括:由所述儲存裝置對第二定時器進行設定;對所述第二定時器的逾時進行偵測;基於所述第二定時器的所述逾時,由所述儲存裝置請求所述將所述邏輯位址轉換成所述實體位址,其中所述第二定時器的長度是基於完成所述儲存裝置對所述命令進行處理期間的事件的預期長度。
根據一個實施例,所述事件包括調用錯誤復原動作。
根據一個實施例,所述命令包括用於自所述儲存裝置讀取所述資料的命令,其中所述邏輯位址用於將所述資料儲存於所述主機計算裝置的記憶體位置中。
根據一個實施例,所述方法更包括:對所述命令的執行進度進行監測,其中所述偵測所述條件包括確定出已到達里程碑。
根據一個實施例,所述監測包括對針對所述命令執行的多個步驟進行監測。
根據一個實施例,所述里程碑包括完成對來自所述儲存裝置的一或多個記憶體胞元的訊號的感測。
本揭露的實施例亦是有關於一種儲存裝置,所述儲存裝置包括:高速緩衝記憶體;以及處理器,耦合至所述高速緩衝記憶體,所述處理器被配置成執行邏輯,所述邏輯使所述處理器進行以下操作:對來自主機計算裝置的命令進行辨識,所述命令包括邏輯位址;偵測條件;基於偵測所述條件,請求將所述邏輯位址轉換成實體位址;將所述實體位址儲存於所述高速緩衝記憶體中;以及基於所述實體位址根據所述命令傳送資料。
本揭露的實施例更是有關於一種處理自主機計算裝置至儲存裝置的命令的方法,所述方法包括:由儲存裝置對來自主機計算裝置的多個寫入命令進行辨識;由儲存裝置將所述多個寫入命令儲存於儲存裝置的佇列中;由儲存裝置自所述佇列選擇寫入命令;由儲存裝置對自所述佇列選擇的寫入命令的邏輯位址進行辨識;由儲存裝置請求將邏輯位址轉換成實體位址;由儲存裝置將實體位址儲存於高速緩衝記憶體中;以及基於實體位址根據自所述佇列選擇的寫入命令傳送資料。
根據一個實施例,所述方法更包括確定出寫入緩衝器已滿,其中所述將寫入命令儲存於所述佇列中是因應於確定出寫入緩衝器已滿來進行。
本揭露的實施例更是有關於一種處理自主機計算裝置至儲存裝置的命令的方法,所述方法包括:由儲存裝置對來自主機計算裝置的寫入命令進行辨識,其中所述寫入命令包括第一邏輯位址;基於第一邏輯位址對第一資料傳送進行處理,其中所述對所述第一資料傳送進行處理包括:對第二邏輯位址進行辨識;由儲存裝置請求將第二邏輯位址轉換成實體位址;以及由儲存裝置將實體位址儲存於高速緩衝記憶體中;以及基於第二邏輯位址對第二資料傳送進行處理。
根據一個實施例,所述對第二資料傳送進行處理包括:自高速緩衝記憶體擷取實體位址;以及將資料自實體位址傳送至儲存裝置中的位置。
根據一個實施例,第一邏輯位址儲存於第一資料結構中,且第二邏輯位址儲存於第二資料結構中。
熟習此項技術者應認識到,本揭露的實施例在對來自主機計算裝置的命令進行處理方面提供效率。
當針對以下詳細說明、隨附申請專利範圍及附圖而進行考量時,將更全面地理解本揭露的實施例的該些及其他特徵、態樣及優點。當然,本發明的實際範圍是由隨附申請專利範圍界定。
在下文中,將參照附圖更詳細地闡述實例性實施例,在附圖中相同的參考編號始終指代相同的元件。然而,本揭露可實施為各種不同的形式,且不應被視為僅限於本文中所示的實施例。確切而言,提供該些實施例作為實例是為了使本揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本揭露的態樣及特徵。因此,可不闡述對於此項技術中具有通常知識者全面理解本揭露的態樣及特徵而言所不必要的過程、元件及技術。除非另外指出,否則在附圖及本書面說明中,相同的參考編號始終表示相同的元件,且因此可不再對其予以贅述。此外,在圖式中,為清晰起見,可誇大及/或簡化元件、層及區的相對大小。
主機裝置可在一或多個虛擬記憶體位址空間中與儲存裝置進行交互。舉例而言,可使用共享記憶體來提交輸入/輸出(input/output,I/O)命令(例如讀取命令或寫入命令)並完成I/O命令。主機裝置與儲存裝置之間的通訊可經由例如以下介面(例如,連接器及其協定)來進行:快速非揮發性記憶體(non-volatile memory express,NVMe)協定、串列附接小型電腦系統介面(small computer system interface,SCSI)(serial attached SCSI,SAS)協定、串列進階技術附接(serial advanced technology attachment,SATA)協定及/或類似協定。
在一個實施例中,來自主機的I/O命令對虛擬位址進行辨識。舉例而言,讀取命令的虛擬位址對主機記憶體中欲儲存自儲存裝置讀取的資料的位置進行辨識,且寫入命令的虛擬位址對主機記憶體中欲擷取資料以寫入至儲存裝置中的位置進行辨識。用於執行讀取命令及寫入命令的儲存裝置對主機記憶體的記憶體讀取可為繞過主機的中央處理單元(central processing unit,CPU)的直接記憶體存取(direct memory access,DMA)。
在一個實施例中,讀取命令/寫入命令中的虛擬位址由轉換代理(Translation Agent,TA)轉換成主機記憶體的實體記憶體位址。一旦被轉換,便將實體記憶體位址儲存於儲存裝置的位址轉換高速緩衝記憶體(ATC)中,以供由DMA讀取操作及寫入操作進行使用。儲存裝置的控制器可針對是否存在與讀取命令/寫入命令中的虛擬位址對應的實體記憶體位址而對ATC進行檢查。若在ATC中存在與讀取命令/寫入命令中的虛擬位址對應的實體記憶體位址,則控制器可使用經轉換實體記憶體位址來對主機記憶體進行存取。
在一個實施例中,被轉換成實體位址的虛擬位址儲存於儲存裝置的ATC中。為了使儲存裝置的控制器因應於讀取請求或寫入請求而對主機記憶體進行存取,控制器對ATC進行檢查以判斷是否存在虛擬位址至實體位址的轉換。若存在所述轉換,則控制器使用經變換實體位址來進行記憶體讀取,且不需要單獨向主機請求位址轉換。
虛擬記憶體位址至實體記憶體位址的位址轉換可能會給讀取操作及/或寫入操作增加延遲。由儲存裝置在虛擬化定址環境中進行的記憶體讀取必須進行等待直至位址轉換完成之後才對記憶體位置進行存取。儲存裝置必須向TA請求位址轉換(AT)。TA必須自位址轉換及保護表(address translation and protection table,ATPT)辨識出正確的轉換,且TA必須提供對位址轉換請求的響應。由於讀取資料或寫入資料將由主機保存於虛擬位址空間中,因此對虛擬位址進行轉換的過程可能會阻礙讀取命令/寫入命令的處理流程。
在ATPT中不存在虛擬位址的情況下,延遲可能會較長。如前面所述,儲存裝置必須向TA請求AT。TA將無法在ATPT中找出正確的轉換。TA將以失敗來對原始AT作出響應。在失敗的情況下,裝置將向TA發送頁請求介面(Page Request Interface,PRI)。TA將以供應商專用的方式與主機系統的其餘部分進行通訊,以將虛擬至實體的轉換填充至ATPT中。TA最終將針對裝置的PRI請求發送完成響應。裝置將向TA發送第二AT,且TA現在將能夠在ATPT中找出虛擬位址,使其成為對記憶體位置進行存取的更進一步的分區活動。
一旦將經轉換位址儲存於ATC中,在DMA期間使用所述經轉換位址之前所述經轉換位址在ATC中保留的時間長度可端視ATC的大小及/或儲存裝置在給定時間可處置的有效讀取命令/有效寫入命令的數目而定。舉例而言,在具有由主機提交至提交佇列(在下文中被稱為提交佇列表項(submission queue entry,SQE))的實質上大量的有效命令的實質上高的佇列深度(queue depth,QD)環境中,ATC可能會隨著請求被處理而填滿,進而使得自ATC驅逐較舊請求的較舊轉換位址,以為較新請求的較新轉換位址騰讓空間(room)。ATC的另一常見用途是以推測方式儲存先前使用的位址轉換,以防再次需要位址轉換。較高的ATC填充請求率及更加期望維持最近有用的位址轉換二者可能會導致ATC的驅逐率高於最佳驅逐率。較高的驅逐率可與在SSD需要對主機記憶體進行存取時ATC中存在所需位址轉換的機率降低相關。較大大小的ATC可有助於解決所述問題,但ATC大小增大會佔據靜態隨機存取記憶體(static random access memory,SRAM)的儲存ATC的更大面積,進而導致成本增加及所使用功率增加。
本揭露的實施例是有關於用於對ATC的早期填充(亦被稱為預填充)進行協調以避免位址轉換請求(及PRI請求)在直接記憶體存取期間成為阻礙活動的系統及方法。在一個實施例中,採用定時器來觸發位址轉換請求。定時器可被設定成在接收包含輸入/輸出(I/O)命令(例如,讀取命令)的SQE並對所述SQE進行剖析之後、但在對命令的執行終止之前逾時。定時器的逾時可觸發對I/O命令中所包括的虛擬位址的位址轉換請求的發射。可將定時器設定成使得將經轉換位址插入至ATC中的時間實質上接近由控制器使用所述經轉換位址來根據I/O命令實行記憶體存取的時間。
在一個實施例中,基於所偵測的對經解析SQE中的I/O命令(例如(舉例而言)讀取命令)進行處理的進度來觸發位址轉換請求。對I/O命令流程的進度進行監測可使得提交位址轉換請求的定時能夠是動態的且符合I/O命令流程的進度。舉例而言,若I/O命令流程在命令流程中實質上在早期遇到阻礙活動,則記憶體位址的轉換可能不會被觸發,直至命令流程進展至到達命令流程中稍後的里程碑。
對於讀取命令而言,可由控制器進行監測以判斷是否應提交位址轉換請求的命令流程中的一或多個步驟一般可包括:1)由儲存裝置的控制器接收SQE;2)對所述命令進行剖析以辨識出儲存裝置中欲自其擷取資料的一或多個實體位置;3)自媒體讀取所述資料(例如,對儲存於反及閘(not and,NAND)晶粒中的資料進行讀取感測);4)將資料自媒體傳送至控制器;5)進行錯誤校正碼(error correction code,ECC)解碼,以檢查及/或移除任何潛在累積的錯誤;以及6)進行對主機記憶體的直接記憶體存取,以提供讀取資料。在一個實施例中,控制器對所述讀取命令的步驟的進度進行監測,且在偵測到反及閘已完成所述讀取感測之後且在將所感測的資料自反及閘傳送至控制器之前向主機啟動位址轉換請求。當執行步驟5時,此可使得經轉換位址能夠存在於ATC中,且讀取命令可不被延遲。
在一個實施例中,因應於多個定時器的逾時而啟動位址轉換請求。舉例而言,可如以上所闡述般對第一定時器進行設定,以在完成讀取命令之前啟動位址轉換。除第一定時器之外,可對第二定時器進行設定(例如,與對第一定時器進行設定同時進行)。可將第二定時器設定成解決在執行讀取命令期間可能會引入的附加潛時。
在一個實施例中,附加潛時由所偵測的事件引入。附加潛時可為可預測的。可基於預測潛時/預期潛時對第二定時器進行設定。舉例而言,可將第二定時器的長度設定成短於預測潛時。當第二定時器逾時時,可觸發位址轉換請求。以此種方式,即使在第一定時器逾時之後獲得的經轉換位址被驅逐出ATC(例如,由於所偵測的事件引入的附加潛時),使用第二定時器亦可使得位址能夠被即時地重新填充至ATC中,以用於進行根據讀取命令的記憶體存取。
在一個實施例中,第一定時器的值及/或第二定時器的值是固定的預設值,且第一定時器及/或第二定時器在接收到SQE並對SQE進行剖析時起動。在一個實施例中,在對第一定時器及/或第二定時器進行設定之前以動態方式確定第一定時器的值及/或第二定時器的值。在一個實施例中,定時器的值是讀取QD及/或寫入QD的函數,其中讀取QD代表提交佇列中可由儲存裝置在給定時間進行處理的有效讀取命令的數目,且寫入QD代表提交佇列中的有效寫入命令的數目。在一個實施例中,第二定時器的長度大於第一定時器的長度。在一些實施例中,儲存裝置可對完成讀取感測的平均時間進行監測且對第一定時器及/或第二定時器進行重新評估。在一些實施例中,平均時間可與儲存裝置所偵測的特定條件相關聯,且可基於平均時間來對第一定時器及/或第二定時器進行設定。
寫入命令亦可受益於對ATC的預填充。舉例而言,針對寫入命令對ATC進行預填充在實質上高的QD環境(例如,QD > 50)中可為有益的。在實質上高的QD環境中,控制器可在等待某一控制器資源(例如,在程式化至反及閘之前保存寫入資料的寫入緩衝器)變得可用的同時使用自提交佇列獲取的有效寫入命令來對內部寫入命令佇列進行填充。可以先進先出(first-in-first-out,FIFO)方式自內部寫入命令佇列以一次一個的方式對寫入命令進行處理。在此種情形中,可針對內部寫入佇列中共N個寫入命令之中的X個寫入命令起動位址轉換請求,且經轉換位址將被放置於ATC中。隨著寫入命令經由控制器進行,針對寫入命令的位址轉換可能已經完成,且經轉換位址將存在於ATC中。
根據一個實施例,對ATC進行預填充亦可幫助達成對調用實質上長的記憶體位置列表的寫入命令的更高效處理。舉例而言,用於大型寫入命令的SQE可使用經由實體區頁(Physical Region Page,PRP)表項或分散收集列表(Scatter Gather List,SGL)區段而辨識出的資料結構的鏈接列表(linked list)。該些PRP SQE命令結構或SGL·SQE命令結構中的每一者可被放置於一組非常不同的主機記憶體位置中,所述主機記憶體位置全部需要位址轉換。在一個實施例中,當正在處理當前記憶體位置的資料傳送及處理時,可請求對即將到來的記憶體位址中的一或多者的位址轉換。以此種方式,在針對所述記憶體位址進行資料傳送的時間之前,可在ATC中對轉換進行填充。
圖1是根據一個實施例的用於對位址高速緩衝記憶體進行預填充的系統的方塊圖。所述系統包括主機計算裝置100,所述主機計算裝置100耦合至一或多個端點,例如(舉例而言)一或多個儲存裝置102a至102c(被統稱為102)。在下文中,將以可互換方式來使用用語端點與儲存裝置102。
端點可藉由網路組構(例如(舉例而言)周邊組件互連(Peripheral Component Interconnect,PCI)匯流排或快速PCI(PCI-Express,PCIe)匯流排)與主機裝置100進行通訊。如此一來,所示實例中的端點亦可被稱為PCIe裝置。在一些情形中,端點亦可包括整合至主機裝置100中的端點101。NVMe一般是藉由PCIe承載的協定。在一些實施例中,端點可藉由除PCIe之外的通訊鏈路進行通訊,所述通訊鏈路包括例如快速計算鏈路(Compute Express Link,CXL)、組構上NVMe(NVMe over Fabrics)、串列附接小型電腦系統介面(SAS)、串列進階技術附接(SATA)、加速器高速緩衝記憶體同調互連(Cache Coherent Interconnect for Accelerators,CCIX)或類似通訊鏈路。
主機裝置100可藉由PCIe組構向儲存裝置102寫入資料及自儲存裝置102讀取資料。儲存裝置102可在對讀取命令及寫入命令進行處理時實行對主機裝置100的本地記憶體104的直接存取。直接記憶體存取可使得能夠在不涉及主機裝置100的處理器105的軟體的情況下將資料傳送至主機記憶體104中以及傳送出主機記憶體104。
在一個實施例中,主機裝置100更包括記憶體管理單元106,所述記憶體管理單元106可包括轉換代理(TA)108及位址轉換及保護表(ATPT)110。TA 108可向端點(例如,儲存裝置102)提供位址轉換服務,以將虛擬位址轉換成主機記憶體104的真實實體位址。在一個實施例中,AT 108可自ATPT 110擷取與虛擬位址對應的實體位址。
主機裝置100可更包括介面112(例如PCIe介面)。PCIe介面可實施根複合體(root complex,RC)以將處理器105及主機記憶體104連接至PCIe組構。介面112可包括一或多個埠114,以將所述一或多個端點(例如,儲存裝置102)連接至RC 112。在一些情形中,端點可耦合至交換機116,且然後交換機可經由埠114中的一者連接至RC 112。在一些實施例中,TA 108可整合至RC 112中。
在一個實施例中,藉由PCIe組構將自儲存裝置102發送至TA 108的訊息(例如(舉例而言)對位址轉換的請求)遞送至RC 112,RC 112轉而將所述請求遞送至TA 108。將自TA 108發送至儲存裝置102的訊息(例如(舉例而言)對來自儲存裝置102的請求的響應)自TA 108遞送至RC 112,RC 112藉由PCIe組構將訊息發送至儲存裝置102。
在一個實施例中,至少一個所述儲存裝置102包括用於儲存虛擬(未經轉換)位址與實體(經轉換)位址之間的映射的位址轉換高速緩衝記憶體(ATC)118a、118b或118c(被統稱為118)。當儲存裝置102自主機100接收到具有虛擬位址的讀取命令/寫入命令時,儲存裝置102可對本地ATC 118進行檢查以判斷所述高速緩衝記憶體是否已經包含經轉換位址。若ATC 118已經包含經轉換位址,則儲存裝置102可在不涉及RC 112及TA 108的情況下高效地對實體位址處的主機記憶體104進行存取。若ATC 118不包含經轉換位址,則儲存裝置102可向TA 118發射具有欲轉換的虛擬位址(或位址範圍)的位址轉換請求。
圖2是根據一個實施例的儲存裝置102的方塊圖。儲存裝置102可包括通訊介面200、裝置控制器202、內部記憶體204及非揮發性記憶體(NVM)媒體206。通訊介面200可包括PCIe埠及端點,所述PCIe埠及端點使得能夠達成自主機100至儲存裝置102的通訊的入口以及自儲存裝置102至主機100的通訊的出口。在一個實施例中,通訊介面200儲存具有一或多個虛擬位址至實體位址的映射的ATC 118。
在一個實施例中,裝置控制器202執行主機100所請求的命令(例如(舉例而言)讀取命令及寫入命令)。裝置控制器202可包括但不限於一或多個處理器208及媒體介面210。所述一或多個處理器208可被配置成執行電腦可讀取指令,以對來自主機100的命令進行處理且對儲存裝置102的操作進行管理。由所述一或多個處理器208執行的電腦可讀取指令可為例如韌體碼。
在一個實例中,所述一或多個處理器208可被配置成對去往或來自NVM媒體206的寫入命令或讀取命令進行處理。所述一或多個處理器140可藉由媒體介面210與NVM媒體206進行交互,以達成寫入動作或讀取動作。NVM媒體206可包括一或多種類型的非揮發性記憶體,例如(舉例而言)快閃記憶體、反及閘、電阻式隨機存取記憶體(resistive random access memory,ReRAM)、相變記憶體(phase-change memory,PCM)、磁阻式隨機存取記憶體(magneto-resistive random access memory,MRAM)。儲存裝置亦可為具有不同內部控制器架構的硬碟驅動機(hard disk drive,HDD)。
在一個實施例中,內部記憶體204被配置成在儲存裝置104的操作期間進行短期儲存或暫時儲存。內部記憶體138可包括動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(SRAM)及/或資料緊密耦合記憶體(Data Tightly Coupled Memory,DTCM)。內部記憶體138可更包括緩衝器(例如讀取緩衝器212及寫入緩衝器214),所述緩衝器用於在對讀取命令及寫入命令進行處理的同時暫時儲存被傳送至主機記憶體104及自主機記憶體104傳送的資料。內部記憶體138可更包括內部寫入佇列216,所述內部寫入佇列216用於儲存自主機100接收的可能由於例如寫入緩衝器214中缺少空間而無法被立即處理的寫入命令。內部寫入佇列216可為例如先進先出(FIFO)佇列。
在一個實施例中,控制器202被配置成自主機100辨識/接收(例如,經由獲取動作)具有讀取命令/寫入命令的SQE。主機一次向控制器202提供的讀取命令/寫入命令(飛行命令(command in flight))的數目可被稱為命令的佇列深度(QD)。在低QD環境(例如,QD = 1,其中主機一次向驅動機提供一個未處理命令(outstanding command))中,對命令(例如,讀取命令)進行處理的潛時可為可預測的。對於低讀取QD環境,控制器202可將定時器設定成在定時器逾時的時間觸發經由通訊介面200對位址轉換請求的發射。在一個實施例(例如,具有實質上大的ATC 118)中,控制器202可將定時器的長度設定成0。值為0的定時器可使得在控制器202接收到讀取命令時發送位址轉換請求,而不具有任何延遲。此種實施方案藉由假設低ATC利用率來利用低QD。低ATC利用率會降低在需要轉換時高速緩衝記憶體表項被驅逐的機率。
在一個實施例中,控制器202將定時器的長度設定成短於預期讀取潛時。舉例而言,若預測讀取潛時是50微秒,則可將定時器設定成在45微秒時逾時。所述預測可為早期表徵或建模工作的結果,或者可為正在進行的驅動機量測的結果。可在45微秒時逾時的時間將位址轉換請求自裝置發送至主機,且主機可在例如接近50微秒的時間時完成位址轉換,以用於在經轉換位址處實行直接記憶體存取。
在一個實施例中,定時器的長度作為讀取命令及/或寫入命令的QD的函數而發生變化。控制器202可在基於其中部署有定時器的環境對定時器進行設定之前計算定時器的長度。在一個示例性函數中,QD越高,定時器的長度越長。在一個實施例中,定時器的長度作為NVM媒體206晶粒的數目、對晶粒進行的操作的時間、對晶粒進行的操作的類型、控制器202中的時間、控制器202中的資源衝突及/或類似項中的一或多者的函數而發生變化。
在一個實施例中,控制器202可對除第一定時器之外的第二定時器進行設定,以觸發第二位址轉換。舉例而言,可基於可能在讀取流程期間發生的事件(在下文中被稱為預期事件)來對第二定時器進行設定。所述事件可為例如調用正常讀取流程之外的動作(例如(舉例而言)第二階段錯誤復原動作)。復原動作可能會增加讀取流程的潛時,此可能會導致經轉換位址自ATC 118被驅逐。在此種情形中,控制器202可在第二定時器逾時的時間經由通訊介面200發射位址轉換請求,以將經轉換位址放回至ATC 118中。
在一個實施例中,位址轉換被驅逐出ATC的風險可能是高的,且針對ATC中是否存在位址轉換進行檢查的成本為低的。因此,第一定時器將如上般進行。將存在基於次級預期事件的預測潛時/預期潛時進行設定的第二定時器。舉例而言,第二定時器的長度可等於讀取的長度(前面的實例為50微秒)加上自其他驅動機內資料對失敗的讀取進行重新構建的時間的長度。舉例而言,一些固態驅動機(solid state drive,SSD)可對其他若干位置進行讀取且對丟失的資料執行獨立磁碟冗餘陣列(redundant array of independent disk,RAID)復原。將RAID復原的時間長度與正常讀取的時間長度加在一起,以對第二定時器的值進行設定。此意指第一定時器可能已觸發位址轉換,但位址轉換可能已自ATC被驅逐。在位址轉換被驅逐的情況下,第二定時器將觸發對ATC中的位址的新的請求。在位址轉換仍處於ATC中的情況下,由於在高速緩衝記憶體中存在位址轉換,因此將立即返送成功的第二位址轉換請求。
在一個實施例中,對讀取命令的位址轉換請求的定時是基於在讀取處理流程中達成一或多個里程碑。就此而言,控制器202對讀取處理流程的進度進行監測且判斷是否已達到進度里程碑/步驟。進度里程碑可包括例如因應於自控制器發送至儲存裝置102中的反及閘晶粒的輪詢事件而完成的讀取感測。
對於在實質上高的QD環境(例如QD > 50)中對寫入命令進行處理而言,亦可期望對ATC進行預填充。舉例而言,在寫入命令的不受阻礙的流程中,在主機的提交佇列上可存在長的命令佇列。可將命令帶入至控制器中並對所述命令進行剖析。將在剖析階段期間被發現是寫入命令的命令路由至寫入處理流水線,且起動盡可能多的命令,且將與命令一起提供的寫入資料傳送至內部緩衝器中。然後確認出寫入命令完成。寫入資料繼續駐存於揮發性緩衝器中,且以獨立於寫入完成的速度將所述寫入資料程式化至用於非揮發性儲存的反及閘。在功率損失的情況下,電容器為SSD保存能量達足夠長的時間,以便揮發性高速緩衝記憶體向NAND進行程式化。
然而,寫入命令有可能因資料量非常大而為非常長的,或者有可能一次向驅動機發送諸多寫入命令。所述兩種情形皆可能會導致控制器耗盡緩衝器空間。在此種情形中,寫入完成由控制器保存。在等待足夠的緩衝器空間的同時在內部佇列(例如,寫入緩衝器214)上對寫入進行管理。在任一情形中,一旦所有寫入資料皆處於驅動機中,便向主機發送寫入完成。因此,大型寫入命令可能會自緩衝器中對初始資料進行程式化,而大型寫入命令的後續部分可能會等待緩衝器空間釋放。
更具體而言,在對寫入命令進行處理時,控制器202可在將自主機記憶體104傳送的資料傳送至NVM媒體206之前將所述資料儲存於寫入緩衝器214中。在可在給定時間對多個寫入命令進行處理的實質上高的QD環境中,所述多個寫入命令中的一或多者可能需要等待寫入緩衝器214變得可用,以便繼續進行所述處理。在一個實施例中,由主機提供至裝置的多個寫入命令SQE或者可能是一或多個大型寫入命令SQE將需要較可用寫入緩衝器大的寫入緩衝器214。可將寫入命令中的一個寫入命令、多於一個寫入命令或其餘部分放置於內部寫入命令佇列216中。在一個實施例中,控制器202選擇在內部寫入命令佇列216中進行等待的寫入命令的子集,以請求對所選擇寫入命令的位址轉換。以此種方式,可使用所選擇寫入命令的經轉換位址來對ATC進行預填充。
對於對儲存於主機記憶體104內的實質上長的記憶體位置列表中的資料的寫入命令進行處理而言,亦可期望對ATC進行預填充。可在一或多個資料結構中辨識記憶體位置,例如SGL區段及/或SGL描述符的鏈接列表。在一個實施例中,發射一或多個位址轉換請求,以將SGL區段中的第一SGL區段及/或SGL描述符中的第一SGL描述符中的虛擬位址轉換成對應的實體位址。控制器202可實行對主機記憶體104的直接記憶體存取,以擷取儲存於經轉換實體位址中的資料。可將所擷取的資料儲存於寫入緩衝器214中,且可將寫入緩衝器214中的資料寫入至NVM媒體206中(例如,基於所接收的寫入命令中的虛擬區塊位址(virtual block address,LBA)資訊)。
在第二SGL區段及/或第二SGL描述符儲存寫入命令的虛擬位址的情況下,控制器202可發射對第二SGL區段中的虛擬位址的位址轉換請求,以在基於第一SGL區段的經轉換位址進行第一直接記憶體存取的同時使用經轉換位址對ATC進行預填充。使經轉換位址提前可使得能夠在第一直接記憶體存取之後進行第二直接記憶體存取(基於第二SGL區段的經轉換位址),而無需等待第二SGL區段中的虛擬位址的位址轉換完成。在一個實施例中,在基於當前SGL區段對寫入命令進行處理的同時繼續進行針對下一SGL區段的對ATC的預填充,直至最末SGL區段已得到處理。
在另一實施例中,PRP區段可以與SGL區段及/或SGL描述符相似的方式進行。指向另一PRP區段的每一PRP區段將具有需要轉換的位址。控制器202可在請求轉換之前請求位址轉換。可選地,可將一或多個PRP區段讀取至控制器202中,以便開始對PRP進行剖析。PRP的此種早期讀取進一步使得控制器202能夠進行潛在的早期位址轉換請求。
圖3A至圖3B是在不對ATC進行預填充的情況下的讀取流程的流程圖。開始進行所述流程且在動作280中,控制器202接收包含讀取命令的SQE並對所述SQE進行剖析。
在動作282中,控制器202對NVM媒體206中欲自其擷取讀取資料的位置進行辨識。舉例而言,控制器202可在儲存裝置的內部記憶體204中在邏輯至實體轉換表中實行查找,以辨識出自其擷取讀取資料的LBA。
在動作284中,向NVM媒體206發出讀取感測命令。
在動作286中,執行讀取感測,且將讀取資料加載至NVM媒體的鎖存器中。
在動作288中,將鎖存器中的資料傳送至控制器202。
在動作290中,控制器202調用錯誤復原動作(例如(舉例而言)ECC解碼),以對讀取資料中的錯誤進行校正。
在動作292中,在動作290中的錯誤校正在對所有錯誤進行校正時不成功的情況下,控制器202調用可選的第二階段錯誤復原動作。第二階段錯誤復原動作可為例如類似於RAID的外部ECC解碼。
在動作294中,可對讀取資料進行解密,且可在動作296中對資料的任何加擾進行反轉。
在動作297中,控制器200向主機裝置100中的轉換代理108發射位址轉換請求且將經轉換位址儲存於ATC 118中。
在動作298中,控制器200將資料傳送至主機裝置100。就此而言,控制器200自ATC 188擷取用於儲存資料的經轉換位址且將資料儲存至由經轉換位址辨識出的主機記憶體104的位置中。
在動作299中,控制器200發射儲存於主機記憶體104的完成佇列中的完成佇列表項(completion queue entry,CQE)且警示主機處理器105讀取請求完成。此可例如藉由使主機裝置100中斷來完成。
圖4是根據一個實施例的基於定時器對ATC 118進行預填充的過程的流程圖。開始進行所述過程且在動作300中,控制器202自主機100接收儲存讀取命令的SQE並對所述SQE進行剖析。SQE可儲存於例如主機裝置100中的提交佇列中。讀取命令可遵守通訊協定(例如(舉例而言)NVMe協定)。讀取命令可對例如NVM媒體206的欲自其讀取資料的位址(例如,起始LBA)、欲讀取的資料量以及主機記憶體104中欲經由DMA傳送資料的虛擬位址進行辨識。
控制器202在動作302中起動定時器。定時器的長度可短於讀取命令的典型潛時/預期潛時。
在一個實施例中,在動作302中起動定時器的同時,控制器202亦在動作312中根據所接收的讀取命令啟動讀取流程並執行讀取流程。讀取流程可與圖3A所示讀取流程的一部分相似。舉例而言,動作312的讀取流程可實施圖3A所示動作282至292。
在執行讀取流程的同時,控制器202在動作304中檢查定時器是否已逾時。在一個實施例中,定時器被設定成在動作312的讀取流程完成之前逾時。
若定時器已逾時,則控制器202在動作306中對ATC 118進行檢查,以判斷ATC 118是否包含讀取命令中所辨識的虛擬位址的轉換。若位址轉換已經處於高速緩衝記憶體中,則已經滿足對位址轉換的請求且可跳過動作308及310。
再次參照動作302,若ATC 118尚未包含虛擬位址的轉換,則控制器202在動作308中向TA 108提交對虛擬位址的位址轉換請求。TA 108可在ATPT 110中搜尋虛擬位址且輸出對應的實體位址。
在動作310中,以與對應的虛擬位址相關聯的方式將經轉換實體位址儲存於ATC 118中。
在動作313中,控制器202等待動作312的讀取流程完成。若動作312的讀取流程花費的時間較預期時間長,則ATC 118中的經轉換位址可能已被驅逐,且所述經轉換位址可能不再處於ATC 118中。因此,在動作314中,控制器202進行檢查以判斷ATC 118是否仍包含虛擬位址的轉換。
若答案為否(NO),則控制器202在動作316中向TA 108提交對虛擬位址的位址轉換請求。
在動作318中,控制器202以與對應的虛擬位址相關聯的方式將經轉換位址儲存於ATC 118中。
在動作320中,控制器將包含虛擬位址的ATC表項標記為繁忙。所述標記為繁忙可能是為了進行保護以防止轉換變得無效,且在使用AT的裝置上存在競爭條件。就此而言,主機可出於一或多個原因而選擇移動主機記憶體位址頁。當主機移動所述頁時,主機與TA進行通訊,且TA可對ATPT進行更新。TA可向具有ATC的一或多個端點廣播無效封包。封包通知終端裝置使位址或位址範圍無效,且裝置自ATC移除所述位址。若裝置需要轉換,則需要向TA發出新的請求。
當ATC表項被標記為繁忙時,ATC保持舊有的無效AT。容許所述裝置對正在進行的資料傳送使用舊有的陳舊值。主機負責以供應商專用方式覆蓋競爭條件。一旦AT被使用完成,裝置上的ATC組件便自高速緩衝記憶體驅逐AT且完成來自TA的無效請求。
在動作322中,將讀取資料傳送至主機記憶體104中的經轉換實體位址。
在動作324中,控制器202向主機提交CQE以指示讀取命令的完成。
圖5是根據一個實施例的使用經轉換位址對ATC 118進行填充的過程的流程圖。圖5所示過程可例如作為執行圖4所示動作306至308或314至316的一部分來執行。
在動作400中,控制器202判斷讀取命令的虛擬位址是否處於ATC 118中。若答案為否,則控制器202在動作402中向TA 108提交對虛擬位址的位址轉換請求。
在動作404中,TA 108使用經轉換位址或轉換失敗來對控制器202作出響應。
在動作406中,檢查轉換是否成功。若答案是否(意指轉換失敗響應),則TA未在ATPT中找出所述位址。在主機裝置記憶體104中不存在具有所請求記憶體位址的頁。在此種情形中,在動作408中將PRI請求發送至TA 108。
TA 108執行主機專用操作來對此主機裝置記憶體位址104的ATPT進行填充,且TA 108在動作410中完成PRI。
在動作412中,控制器202向TA 108提交對虛擬位址的另一位址轉換請求。
在動作414中,由控制器接收經轉換位址以儲存於ATC 118中。
圖6是根據一個實施例的基於至少兩個定時器來對ATC 118進行預填充的過程的流程圖。開始進行所述過程,且在動作450中,控制器202接收包含讀取命令的SQE並對所述SQE進行剖析。
在動作452中,控制器202起動具有第一逾時值/長度的第一定時器以及具有第二逾時值/長度的第二定時器。可如參照圖4所示動作302所闡述般對第一定時器進行設定。
在一個實施例中,第二定時器的長度長於第一定時器的長度。可基於在執行讀取流程期間可能會發生的潛在事件來對第二定時器進行設定,此可能會使讀取流程的完成延遲。潛在事件可為例如第二階段錯誤復原動作(例如,第二ECC解碼階段),若第一階段ECC解碼在對自NVM媒體206擷取的資料中的錯誤進行校正時失敗,則可啟動所述第二階段錯誤復原動作。在一個實施例中,所偵測的事件(例如第二階段錯誤復原)具有預測潛時/預期的潛時。控制器202可在452中基於預測潛時起動第二定時器。
在起動第一定時器及第二定時器的同時,可在動作470中根據所接收的讀取命令而啟動讀取流程並執行讀取流程。讀取流程可與圖3A所示讀取流程的一部分相似。舉例而言,動作470的讀取流程可實施圖3A所示動作282至292。
在執行讀取流程的同時,控制器202分別在動作454及462中檢查第一定時器及第二定時器是否已逾時。在一個實施例中,第一定時器首先在動作470的讀取流程完成之前逾時。
若第一定時器已逾時,則控制器202在動作456中對ATC 118進行檢查,以判斷ATC 118是否包含虛擬位址的轉換。
若ATC 118不包含虛擬位址的轉換,則控制器202在動作458中向TA 108提交對虛擬位址的位址轉換請求。TA 108可在ATPT 110中搜尋虛擬位址且輸出對應的實體位址。
在動作460中,以與對應的虛擬位址相關聯的方式將經轉換實體位址儲存於ATC 118中。
在一個實施例中,在執行動作470中的讀取流程期間對事件進行偵測。所述事件可為例如執行第二階段錯誤復原動作(例如,外部ECC解碼動作),此可能會使動作470中的讀取流程的執行延遲。執行的延遲可能會導致經轉換位址自ATC 118被驅逐。
在一個實施例中,在動作462中對第二定時器進行設定使得能夠在經轉換位址已自ATC 118被驅逐的情況下對ATC進行預填充。第二定時器可被設定成在實質上接近第二階段錯誤復原動作結束時逾時。就此而言,在動作462中,判斷第二定時器是否已逾時。
若答案為是(YES),則在動作464中判斷經轉換位址是否仍處於ATC 118中。
若答案為否,則控制器202在動作466中向TA 108提交對虛擬位址的位址轉換請求。TA 108可在ATPT 110中搜尋虛擬位址且輸出對應的實體位址。
在動作468中,以與對應的虛擬位址相關聯的方式將經轉換實體位址儲存於ATC 118中。
當動作470的讀取流程完成執行時,在動作472中進行另一檢查,以判斷經轉換實體位址是否仍處於ATC 118中。動作470的讀取流程可能隨時間而發生變化。舉例而言,所述讀取流程可包括可能需要非常長的時間的第二階段ECC復原。
若答案為否,則控制器202在動作474中向TA 108提交對虛擬位址的位址轉換請求。
在動作476中,控制器202以與對應的虛擬位址相關聯的方式將經轉換位址儲存於ATC 118中。
在動作478中,控制器202將包含虛擬位址的ATC表項標記為繁忙。
在動作480中,將讀取資料(例如,暫時儲存於讀取緩衝器212中的讀取資料)傳送至主機記憶體104中的經轉換實體位址。
在動作482中,控制器202向主機提交CQE以指示讀取命令的完成。
應理解,當讀取命令完成且資料的DMA使用ATC 118中的經轉換位址時,ATC中的位址可來自第一定時器的成功使用。在此種情形中,可不再需要第二定時器。在一個實施例中,停止/刪除第二定時器,使得不調用動作466中的附加位址轉換請求。在一些實施例中,容許第二定時器繼續運行且容許多餘的第二請求繼續進行。
圖7是根據一個實施例的基於對讀取處理流程的進度進行監測來對ATC 118進行預填充的過程的流程圖。開始進行所述過程,且在動作500中,控制器202對來自主機100的針對儲存裝置102的讀取命令進行辨識。
在動作502中,控制器202對讀取命令的執行進行監測。舉例而言,控制器202可對在讀取流程503期間達成的里程碑/步驟的進度進行監測。讀取流程可與圖3A所示讀取流程的一部分相似。舉例而言,動作503的讀取流程可實施圖3A所示動作282至292。
在執行讀取流程的同時,控制器202在動作504中檢查是否已達到進度里程碑。所述里程碑可為例如由感測放大器偵測到感測訊號的成功完成。在一些實施例中,所述里程碑可為偵測到感測訊號的成功完成之前的其他步驟。
若答案為是,則在動作505中判斷經轉換位址是否處於ATC 118中。若答案為否,則控制器202在動作506中向TA 108發射對讀取命令中所包含的虛擬位址進行位址轉換的請求。TA 108可在ATPT 110中搜尋虛擬位址且輸出對應的實體位址。
在動作508中,將經轉換實體位址儲存於ATC 118中。
在動作510中,控制器202等待動作503的讀取流程完成。若動作503的讀取流程所花費的時間長於預期時間,則ATC 118中的經轉換位址可能已自ATC 118被驅逐。因此,在動作512中,控制器202進行檢查以判斷ATC 118是否仍包含虛擬位址的轉換。
若答案為否,則控制器202在動作514中向TA 108提交對虛擬位址的位址轉換請求。
在動作516中,控制器202以與對應的虛擬位址相關聯的方式將經轉換位址儲存於ATC 118中。
在動作518中,控制器202將包含虛擬位址的ATC表項標記為繁忙。
在動作520中,將讀取資料傳送至主機記憶體104中的經轉換實體位址。
在動作522中,控制器202向主機提交CQE以指示讀取命令的完成。
應理解,可相對於進度標記對一或多個定時器進行設定。舉例而言,控制器202可在到達命令對反及閘晶粒進行讀取感測的步驟之後起動計時器(例如,達30微秒)。
圖8是根據一個實施例的在實質上高的QD環境中對ATC 118進行預填充的過程的流程圖,在所述實質上高的QD環境中可在給定時間對多個寫入命令進行處理。開始進行所述過程,且在動作600中,控制器202對來自主機100的針對儲存裝置102的多個寫入命令進行辨識。所述多個寫入命令可能需要等待寫入緩衝器214的可用性,以便繼續進行對所述多個寫入命令的處理。在所述多個寫入命令正在進行等待的同時,控制器202可將命令放置於儲存裝置的內部記憶體204中的內部寫入佇列216中。
在動作602中,控制器202選擇在內部寫入佇列216中進行等待的寫入命令的子集。所選擇的子集可少於儲存於佇列216中的寫入命令的總數目。所選擇的寫入命令可為任意次序。
在動作604中,控制器202對所選擇的寫入命令的子集中的虛擬位址進行辨識。
在動作606中,控制器202向TA 108發射針對所辨識的虛擬位址的一或多個位址轉換請求。
在動作608中,控制器202自AT 108接收經轉換實體位址且以與對應的虛擬位址相關聯的方式將實體位址儲存於ATC 118中。由於對ATC 118進行預填充,因此當自可選佇列擷取命令並對所述命令進行處理時,可繞過內部寫入佇列216中的寫入命令中的一者的位址轉換。
在動作610中,控制器202根據內部寫入佇列216中的寫入命令中的一或多者而基於ATC 118中的實體位址傳送資料。
圖9是根據一個實施例的針對調用實質上長的記憶體位置列表的寫入命令而對ATC進行預填充的過程的流程圖。開始進行所述過程,且在動作700中,控制器202對來自主機100的寫入命令進行辨識。寫入命令可包括例如NVM媒體206的欲被寫入資料的位址(例如,起始LBA)、欲被寫入的資料量、以及包含主機記憶體104中的包含欲被寫入的資料的第一虛擬位址的第一SGL區段、以及指向第二SGL區段的指針。
在動作702中,控制器202自第一SGL區段辨識第一虛擬位址。
在動作704中,控制器202發射對第一虛擬位址的位址轉換請求,且以與第一虛擬位址相關聯的方式將經轉換第一實體位址儲存於ATC 118中。
在動作706中,控制器202基於經轉換第一位址進行資料傳送。資料傳送可包括對主機記憶體104進行存取以自經轉換第一位址讀取資料、將所讀取的資料儲存於寫入緩衝器214中以及基於寫入命令中的起始LBA將寫入緩衝器214中的資料寫入至NVM媒體206的位置。
在動作708中,在進行來自經轉換第一位址的資料傳送的同時,控制器202對由第一SGL區段指向的第二SGL區段進行辨識且更辨識第二SGL區段中的第二虛擬位址。
在動作710中,控制器202發射對第二虛擬位址的位址轉換請求且以與第二虛擬位址相關聯的方式將經轉換第二實體位址儲存於ATC 118中。
在動作712中,控制器202基於經轉換第二位址進行資料傳送。儘管若圖7所示流程中未明確示出,然而熟習此項技術者應理解,在基於當前SGL區段對寫入命令進行處理的同時繼續進行針對下一SGL區段的對ATC的預填充,直至最末SGL區段已得到處理。
應理解,在控制器202請求ATC的位址轉換的每個實例中皆具有對ATC高速緩衝記憶體驅逐方案進行更新或不對ATC高速緩衝記憶體驅逐方案進行更新的選項。舉例而言,流程圖中的每一者中的第一請求可對高速緩衝記憶體驅逐方案進行更新。然而,高速緩衝記憶體驅逐方案可能不將第二位址轉換請求或後續位址轉換請求考量在內。舉例而言,此可針對每個命令達成僅一次高速緩衝記憶體驅逐方案更新。
在一些實施例中,在一或多個處理器中實施以上所論述的內容。用語處理器可指一或多個處理器及/或一或多個處理核心。所述一或多個處理器可代管於單個裝置中或者分佈於多個裝置之上(例如,雲端系統之上)。處理器可包括例如應用專用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理單元(CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)及可程式化邏輯裝置,例如現場可程式化閘陣列(field programmable gate array,FPGA)。在如本文中所使用的處理器中,每一功能由被配置(即,硬接線)成實行所述功能的硬體來實行,或者由被配置成執行儲存於非暫時性儲存媒體(例如,記憶體)中的指令的更通用的硬體(例如,CPU)來實行。處理器可製作於單個印刷電路板(printed circuit board,PCB)上或者分佈於若干互連的PCB之上。處理器可包含其他處理電路;舉例而言,處理電路可包括在PCB上互連的兩個處理電路、FPGA及CPU。
應理解,儘管可在本文中使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區、層或區段。因此,在不背離本發明概念的精神及範圍的條件下,本文中所論述的第一元件、第一組件、第一區、第一層或第一區段可被稱為第二元件、第二組件、第二區、第二層或第二區段。
本文中所使用的術語僅出於闡述特定實施例的目的,而不旨在限制本發明概念。另外,除非明確陳述,否則本文中所闡述的實施例並不相互排斥。可在一些實施方案中對本文中所闡述的實施例的各態樣進行組合。
關於圖3至圖7所示流程圖,應理解,該些流程圖中的過程的步驟順序不是固定的,而是如熟習此項技術者應認識到,所述步驟順序可被修改、在次序上發生改變、以不同方式實行、依序實行、併發實行或同時實行,或者被變更成任何所期望的順序。
如本文中所使用的用語「實質上(substantially)」、「大約(about)」及相似用語用作近似用語、而並非用作程度用語,且旨在慮及此項技術中具有通常知識者將知的量測值或計算值的固有偏差。
除非上下文清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。如本文中所使用的用語「及/或(and/or)」包括相關所列項中一或多個項的任意及所有組合。例如「…中的至少一者(at least one of)」等表達當出現在一系列元件之後時,是修飾整個系列的元件而並非修飾所述系列的各別元件。此外,在闡述本發明概念的實施例時使用「可(may)」是指「本揭露的一或多個實施例」。另外,用語「示例性的」旨在指實例或例示。本文中所使用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
應理解,當稱一元件或層位於另一元件或層「上」、「連接至」、「耦合至」或「相鄰於」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至或直接相鄰於所述另一元件或層,或者可存在一或多個中間元件或層。相比之下,當稱一元件或層「直接」位於另一元件或層「上」、「直接連接至」、「直接耦合至」或「緊鄰於」另一元件或層時,則不存在中間元件或層。
本文中所述的任何數值範圍旨在包括所述範圍內所包含的具有相同數值精度的所有子範圍。舉例而言,範圍「1.0至10.0」旨在包括介於所述最小值1.0與所述最大值10.0之間(且包括1.0及10.0)的所有子範圍,即,具有等於或大於1.0的最小值及等於或小於10.0的最大值(例如(舉例而言,2.4至7.6))。本文中所述任何最大數值限制旨在包括其中所包含的所有較低的數值限制,且本說明書中所述的任何最小數值限制旨在包括其中所包含的所有較高的數值限制。
儘管已在本文中具體闡述並示出了根據一個實施例的用於預填充位址高速緩衝記憶體的系統和方法的示例性實施例,然而諸多潤飾及變型將對熟習此項技術者顯而易見。因此,應理解,根據本揭露的原理構造的用於預填充位址高速緩衝記憶體的系統和方法可被實施成不同於本文中所具體闡述者。亦在以下申請專利範圍及其等效範圍中界定本揭露。
100:主機計算裝置/主機裝置/主機 101:端點 102、102a、102b、102c:儲存裝置 104:主機記憶體/主機裝置記憶體/主機裝置記憶體位址/本地記憶體/儲存裝置 105、208:處理器 106:記憶體管理單元 108:轉換代理(TA) 110:位址轉換及保護表(ATPT) 112:介面/根複合體(RC) 116:交換機 118、118a、118b、118c:位址轉換高速緩衝記憶體(ATC) 200:通訊介面 202:裝置控制器/控制器 204:內部記憶體 206:非揮發性記憶體(NVM)媒體 210:媒體介面 212:讀取緩衝器 214:寫入緩衝器 216:內部寫入命令佇列/內部寫入佇列/佇列 280、282、284、286、288、290、292、294、296、297、298、299、300、302、304、306、308、310、312、313、314、316、318、320、322、324、400、402、404、406、408、410、412、414、450、452、454、456、458、460、462、464、466、468、470、472、474、476、478、480、482、500、502、504、505、506、508、510、512、514、516、518、520、522、600、602、604、606、608、610、700、702、704、706、708、710、712:動作 503:動作/讀取流程
參照以下各圖闡述本揭露實施例的非限制性及非窮盡性實施例,其中除非另外規定,否則在各個視圖中相同的參考編號始終指代相同的部件。 圖1是根據一個實施例的用於對位址高速緩衝記憶體進行預填充的系統的方塊圖。 圖2是根據一個實施例的儲存裝置的方塊圖。 圖3A至圖3B是根據一個實施例的讀取流程的流程圖。 圖4是根據一個實施例的基於定時器對位址轉換高速緩衝記憶體(ATC)進行預填充的過程的流程圖。 圖5是根據一個實施例的在ATC中對位址轉換進行填充的過程的流程圖。 圖6是根據一個實施例的基於至少兩個定時器來對ATC進行預填充的過程的流程圖。 圖7是根據一個實施例的基於對讀取處理流程的進度進行監測來對ATC進行預填充的過程的流程圖。 圖8是根據一個實施例的在實質上高的佇列深度環境中對ATC進行預填充的過程的流程圖,在所述實質上高的佇列深度環境中可在給定時間對多個寫入命令進行處理。 圖9是根據一個實施例的針對調用實質上長的記憶體位置列表的寫入命令而對ATC進行預填充的過程的流程圖。
100:主機計算裝置/主機裝置/主機
101:端點
102、102a、102b、102c:儲存裝置
104:主機記憶體/主機裝置記憶體/主機裝置記憶體位址/本地記 憶體/儲存裝置
105:處理器
106:記憶體管理單元
108:轉換代理(TA)
110:位址轉換及保護表(ATPT)
112:介面/根複合體(RC)
114、114a、114b:根埠
116:交換機
118a、118b、118c:位址轉換高速緩衝記憶體(ATC)

Claims (20)

  1. 一種處理自主機計算裝置至儲存裝置的命令的方法,所述方法包括: 由所述儲存裝置對來自所述主機計算裝置的命令進行辨識,所述命令包括邏輯位址; 偵測條件; 基於偵測所述條件,由所述儲存裝置請求將所述邏輯位址轉換成實體位址; 由所述儲存裝置將所述實體位址儲存於高速緩衝記憶體中;以及 基於所述實體位址根據所述命令傳送資料。
  2. 如請求項1所述的方法,更包括: 由所述儲存裝置因應於辨識出所述命令而起動第一定時器,其中所述條件包括對所述第一定時器的逾時進行偵測。
  3. 如請求項2所述的方法,其中所述第一定時器的長度短於對所述命令進行處理的預測潛時。
  4. 如請求項2所述的方法,其中所述第一定時器的長度是基於欲處理的有效命令的數目而以動態方式進行計算。
  5. 如請求項2所述的方法,更包括: 由所述儲存裝置對第二定時器進行設定; 對所述第二定時器的逾時進行偵測; 基於所述第二定時器的所述逾時,由所述儲存裝置請求所述將所述邏輯位址轉換成所述實體位址,其中所述第二定時器的長度是基於完成在所述儲存裝置對所述命令進行處理期間的事件的預期長度。
  6. 如請求項5所述的方法,其中所述事件包括調用錯誤復原動作。
  7. 如請求項1所述的方法,其中所述命令包括用於自所述儲存裝置讀取所述資料的命令,其中所述邏輯位址用於將所述資料儲存於所述主機計算裝置的記憶體位置中。
  8. 如請求項1的方法,更包括: 對所述命令的執行進度進行監測,其中所述偵測所述條件包括確定出已到達里程碑。
  9. 如請求項8所述的方法,其中所述監測包括對針對所述命令執行的多個步驟進行監測。
  10. 如請求項8所述的方法,其中所述里程碑包括完成對來自所述儲存裝置的一或多個記憶體胞元的訊號的感測。
  11. 一種儲存裝置,包括: 高速緩衝記憶體;以及 處理器,耦合至所述高速緩衝記憶體,所述處理器被配置成執行邏輯,所述邏輯使所述處理器進行以下操作: 對來自主機計算裝置的命令進行辨識,所述命令包括邏輯位址; 偵測條件; 基於偵測所述條件,請求將所述邏輯位址轉換成實體位址; 將所述實體位址儲存於所述高速緩衝記憶體中;以及 基於所述實體位址根據所述命令傳送資料。
  12. 如請求項11所述的儲存裝置,更包括: 因應於辨識出所述命令而起動第一定時器,其中使所述處理器對所述條件進行偵測的所述邏輯包括使所述處理器對所述第一定時器的逾時進行偵測的邏輯。
  13. 如請求項12所述的儲存裝置,其中所述第一定時器的長度短於對所述命令進行處理的預測潛時。
  14. 如請求項12所述的儲存裝置,其中邏輯使所述處理器基於欲處理的有效命令的數目而以動態方式計算所述第一定時器的長度。
  15. 如請求項12所述的儲存裝置,其中所述邏輯更使所述處理器進行以下操作: 對第二定時器進行設定; 對所述第二定時器的逾時進行偵測; 基於所述第二定時器的所述逾時,所述邏輯使所述處理器請求所述將所述邏輯位址轉換成所述實體位址,其中所述第二定時器的長度是基於完成在所述儲存裝置對所述命令進行處理期間的事件的預期長度。
  16. 如請求項15所述的儲存裝置,其中所述事件包括調用錯誤復原動作。
  17. 如請求項11所述的儲存裝置,其中所述命令包括用於自所述儲存裝置讀取所述資料的命令,其中所述邏輯位址用於將所述資料儲存於所述主機計算裝置的記憶體位置中。
  18. 如請求項11的儲存裝置,其中所述邏輯更使所述處理器進行以下操作: 對所述命令的執行進度進行監測,其中所述偵測所述條件包括確定出已到達里程碑。
  19. 如請求項18所述的儲存裝置,其中使所述處理器進行監測的所述邏輯包括使所述處理器對針對所述命令執行的多個步驟進行監測的邏輯。
  20. 如請求項18所述的儲存裝置,其中所述里程碑包括完成對來自所述儲存裝置的一或多個記憶體胞元的訊號的感測。
TW112105317A 2022-04-11 2023-02-15 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法 TW202407547A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263329755P 2022-04-11 2022-04-11
US63/329,755 2022-04-11
US17/879,713 US12032483B2 (en) 2022-04-11 2022-08-02 Systems and methods for pre-populating address translation cache
US17/879,713 2022-08-02

Publications (1)

Publication Number Publication Date
TW202407547A true TW202407547A (zh) 2024-02-16

Family

ID=85198976

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112105317A TW202407547A (zh) 2022-04-11 2023-02-15 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法

Country Status (4)

Country Link
US (1) US12032483B2 (zh)
EP (1) EP4261697A1 (zh)
KR (1) KR20230145907A (zh)
TW (1) TW202407547A (zh)

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940596A (en) * 1996-03-25 1999-08-17 I-Cube, Inc. Clustered address caching system for a network switch
US6715057B1 (en) 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US20060179173A1 (en) 2005-02-02 2006-08-10 Bockhaus John W Method and system for cache utilization by prefetching for multiple DMA reads
US7870301B2 (en) 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US8621120B2 (en) * 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
JP5624510B2 (ja) * 2011-04-08 2014-11-12 株式会社東芝 記憶装置、記憶システム及び認証方法
US8635407B2 (en) 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
JP5362145B1 (ja) * 2013-03-29 2013-12-11 株式会社東芝 論理アドレスと物理アドレスとの間のマッピングを管理するストレージシステム、ストレージコントローラ及び方法
US10645164B1 (en) * 2015-10-27 2020-05-05 Pavilion Data Systems, Inc. Consistent latency for solid state drives
US20170139716A1 (en) * 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
GB2546343A (en) 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions
US10078588B2 (en) 2016-03-25 2018-09-18 Advanced Micro Devices, Inc. Using leases for entries in a translation lookaside buffer
US10223305B2 (en) 2016-06-27 2019-03-05 International Business Machines Corporation Input/output computer system including hardware assisted autopurge of cache entries associated with PCI address translations
US10095620B2 (en) * 2016-06-29 2018-10-09 International Business Machines Corporation Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions
GB2563879B (en) 2017-06-28 2019-07-17 Advanced Risc Mach Ltd Realm identifier comparison for translation cache lookup
US11372787B2 (en) 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US10747679B1 (en) * 2017-12-11 2020-08-18 Amazon Technologies, Inc. Indexing a memory region
US10846235B2 (en) * 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10824526B2 (en) * 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
KR20200025518A (ko) * 2018-08-30 2020-03-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10732900B2 (en) * 2018-10-24 2020-08-04 Western Digital Technologies, Inc. Bounded latency and command non service methods and apparatus
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11010095B2 (en) 2019-07-25 2021-05-18 Western Digital Technologies, Inc. Dynamic and adaptive data read request scheduling
US20210081312A1 (en) 2020-11-18 2021-03-18 Intel Corporation Shared memory

Also Published As

Publication number Publication date
US20230325321A1 (en) 2023-10-12
KR20230145907A (ko) 2023-10-18
EP4261697A1 (en) 2023-10-18
US12032483B2 (en) 2024-07-09

Similar Documents

Publication Publication Date Title
US10909012B2 (en) System having persistent memory
US11579779B2 (en) Computing systems including storage devices controlled by hosts
KR101480659B1 (ko) 2-레벨 시스템 메인 메모리
US9870157B2 (en) Command balancing and interleaving for write and reads between front end and back end of solid state drive
US8250283B1 (en) Write-distribute command for RAID mirroring
JP7010809B2 (ja) デデュープ可能なメモリキャッシュ及びそのための動作方法
US9990138B2 (en) Out of order SGL read sorting in a mixed system with PRP read or system that supports only SGL reads
TWI684864B (zh) 管理輸入輸出可虛擬化儲存裝置中之功能級重置
US10540096B2 (en) Method and design for dynamic management of descriptors for SGL operation
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
US10990463B2 (en) Semiconductor memory module and memory system including the same
WO2019090493A1 (zh) 内存块回收方法和装置
US9075720B2 (en) Locking a cache line for write operations on a bus
JP2006252358A (ja) ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法
JP6649989B2 (ja) ストレージシステム及びその制御方法
TW202318205A (zh) 記憶體系統及資料輸入輸出系統
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
TW202407547A (zh) 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法
US11436150B2 (en) Method for processing page fault by processor
CN113254363A (zh) 具有部分逻辑到物理地址转换表的非易失性存储控制器
CN116893985A (zh) 用于预填充地址转换高速缓存的系统和方法
JP2014182812A (ja) データ記憶装置
US20240168681A1 (en) Solving submission queue entry overflow with shadow submission queue
US20240168877A1 (en) Solving submission queue entry overflow with an additional out-of-order submission queue entry