TW201941060A - 儲存裝置及電腦系統 - Google Patents

儲存裝置及電腦系統 Download PDF

Info

Publication number
TW201941060A
TW201941060A TW107123304A TW107123304A TW201941060A TW 201941060 A TW201941060 A TW 201941060A TW 107123304 A TW107123304 A TW 107123304A TW 107123304 A TW107123304 A TW 107123304A TW 201941060 A TW201941060 A TW 201941060A
Authority
TW
Taiwan
Prior art keywords
program
data
block
host
memory
Prior art date
Application number
TW107123304A
Other languages
English (en)
Other versions
TWI682279B (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 TW201941060A publication Critical patent/TW201941060A/zh
Application granted granted Critical
Publication of TWI682279B publication Critical patent/TWI682279B/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/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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • 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/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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0608Saving storage space on storage 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/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
    • 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
    • G06F3/0649Lifecycle management
    • 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/0658Controller construction 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/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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7211Wear leveling

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Abstract

實施形態提供一種能提高性能之儲存裝置及電腦系統。 根據實施形態,儲存裝置具備包含複數個區塊之非揮發性記憶體及控制器。上述控制器自上述主機接收表示正在上述主機上運行之總程序數之資訊。上述控制器判定出上述總程序數高於第1閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。

Description

儲存裝置及電腦系統
本發明之實施形態係關於一種控制非揮發性記憶體之技術。
個人電腦所代表之電腦系統包含執行用戶所希望之處理之主機(主機電腦)、以及儲存計算結果及資料等之儲存裝置等。
作為儲存裝置,具備非揮發性記憶體之儲存裝置廣為普及。作為此種儲存裝置之一,已知有具備NAND(Not And,反及)快閃記憶體之固態驅動器(SSD)。
最近,正在尋求儲存裝置之性能之提高,以期電腦系統之性能改善。
本發明之實施形態提供一種能提高性能之儲存裝置及電腦系統。
根據實施形態,能連接於主機之儲存裝置具備:非揮發性記憶體,其包含複數個區塊;及控制器,其席以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成。上述控制器自上述主機接收表示正在上述主機上運行之總程序數之資訊。上述控制器判定出上述總程序數高於第1閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。
以下,參照圖式對實施形態進行說明。 (第1實施形態) <電腦系統之說明>
首先,參照圖1,對包含第1實施形態之儲存裝置之電腦系統1之構成進行說明。
該儲存裝置係以向非揮發性記憶體寫入資料,自非揮發性記憶體讀出資料之方式構成之半導體儲存裝置。該儲存裝置例如係以具備NAND快閃記憶體之固態驅動器(SSD)3之形態實現。
電腦系統1包含主機(主機裝置)2及SSD3。主機2係對SSD3進行存取之電腦(主機電腦)。作為主機2而發揮功能之電腦之例包括個人電腦、伺服器電腦及其他各種各樣之電子機器(例如,智能手機等)。 <主機與SSD之間之連接及通信協定之說明>
主機2與SSD3之間存在用以於兩者之間收發要求或資訊之路徑。又,作為用以收發要求或資訊之約定,存在標準規格等。
主機2經由信號線20將各種各樣之要求傳送至SSD3。該等要求包括包含要求讀出資料之讀出要求、及要求寫入資料之寫入要求在內之各種資料處理要求,讓SSD3之狀態發生變化之狀態變化要求,獲取SSD3之狀態之狀態獲取要求等。
另一方面,SSD3經由信號線20將針對自主機2所接收到之要求之回復傳送至主機2。回復之例有資料讀出/寫入之結果、狀態變化之結果、SSD3自身之狀態等。
作為經由信號線20傳送要求或回復以使各種各樣之主機與各種各樣之儲存裝置能相互連接之方法,存在標準規格。
作為用以經由信號線20於主機與儲存裝置之間收發資訊之標準規格,例如存在PCI Express(PCIe)(註冊商標)。
又,作為於主機與儲存裝置之間收發之要求或回復之過程或者資料格式等之標準規格,例如存在Non-Volatile Memory Express(NVMe)(註冊商標)。
於本實施形態中,關於用以經由信號線20收發資訊之機制、或者用以收發要求或回復之過程及資料格式,並不設定特定規格。本實施形態之技術於使用以PCIe或NVMe為代表之各種各樣之標準規格及標準規格以外之方法之情形時,均能應用。
進而,主機2與SSD3無需使用物理信號線加以連接。主機2與SSD3可採用無線LAN(Local Area Network,局域網路)等無物理信號線之方法加以連接。即便主機2與SSD3係採用無物理信號線之方法加以連接,亦能應用本實施形態之技術。 <主機之說明>
主機2具備主機記憶體控制器11、處理器12及記憶體13作為其硬體組件。該等主機記憶體控制器11、處理器12及記憶體13可經由匯流排10相互連接。主機2亦可進而具備網路介面14及顯示器介面15。
主機記憶體控制器11執行與SSD3之通信。詳細而言,主機記憶體控制器11於處理器12之控制之下,將上述各種各樣之要求發送至SSD3,並自SSD3接收針對該等要求之回復。處理器12係控制主機2內各種各樣之組件之CPU(Central Processing Unit,中央處理單元),執行自SSD3加載至記憶體13之各種各樣之程式。記憶體13係以動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)等隨機存取記憶體之形態實現。 <SSD之說明>
SSD3具備控制器4及非揮發性記憶體(NAND快閃記憶體)5。NAND快閃記憶體5可包含複數個NAND快閃記憶體晶片。控制器4作為以電性連接於NAND快閃記憶體5,而控制NAND快閃記憶體5之方式構成之記憶體控制器運行。該控制器4亦可藉由系統晶片(System-on-a-chip,SoC)等電路實現。SSD3亦可進而具備DRAM。於SSD3為進而具備DRAM之構成之情形時,DRAM亦可設置於控制器4之外部。
NAND快閃記憶體5包含儲存單元陣列,該儲存單元陣列包含呈矩陣狀配置之複數個儲存單元。NAND快閃記憶體5可為二維構造之NAND快閃記憶體,亦可為三維構造之NAND快閃記憶體。 <主機之內部構成>
圖2表示主機(主機電腦)2之內部構成例。
於主機2中,作為於處理器12上運行之主機軟體,存在記憶體驅動器31、作業系統(OS)32、檔案系統33、用戶程序34及系統程序35。 <作業系統(OS)與程序之說明>
此處,對如下內容進行說明,即,對程序分配記憶體,及作業系統(OS)32、進一步而言為作業系統(OS)32之程序管理部知道於主機2上運行之程序之所有資訊。
作業系統(OS)32包含程序管理部321、記憶體管理部322及裝置管理部323。
於圖2之例中,作業系統(OS)32包含上述3個管理部,又,作業系統(OS)32亦可進而包含檔案系統33及記憶體驅動器31中之一部分或全部。
作業系統(OS)32例如為Microsoft Windows(註冊商標)、Linux(註冊商標)等軟體,管理包括處理器12、記憶體13及SSD3在內之電腦系統1整體之資源。
作業系統32進而管理於主機2上運行之應用程式(以下記作程式)。於主機2上,在作業系統32之管理之下,實現1個以上功能之程式處於一種以上運行狀態下。
程式進入運行狀態時,會執行以下過程。
首先,遵照由用戶直接提出之要求,對程序管理部321要求程式之啟動;或為了給用戶提供特定功能,而由作業系統32自身對程序管理部321要求程式之啟動。
其次,程序管理部321同意該程式之啟動而生成該程式用程序。然後,程序管理部321對記憶體管理部322要求針對該程序之記憶體分配。收到記憶體分配要求之記憶體管理部322對該程序分配記憶體13內之儲存區域。程序管理部321自SSD3讀出該程式,並將該程式加載至分配給該程序之儲存區域。最後,程序管理部321將該程序作為處理器12之執行時間之分配對象。即,程式之執行實體係程序,對程序分配記憶體。
於本實施形態中,將遵照用戶之要求而生成之程序稱為用戶程序。與此相對地,將作業系統32自身為了實現特定功能而生成之程序等用戶程序以外之程序稱為系統程序。
例如,由用戶啟動用以瀏覽網頁之網頁瀏覽器之程式所生成之程序係用戶程序。另一方面,由受理來自鍵盤或滑鼠之輸入之程式、或進行向顯示器之影像輸出之程式所生成之程序係系統程序。
因此,程序管理部321能不拘於用戶程序及系統程序地,掌握某時刻存在於主機2上之所有程序。 <程序之交換分區之說明>
此處,對將分配給程序之儲存區域之內容於換出或換入之時機下寫入至SSD3或自SSD3讀出進行說明。
程序管理部321欲生成新程序時,有分配給該程序之記憶體不足之情況。此時,自程序管理部321收到記憶體分配要求之記憶體管理部322為了確保分配給該程序之儲存區域,會將其他程序之儲存區域中所儲存之資料退避至SSD3。將該退避處理稱為程序之換出。
換出之對象程序係依照各種各樣之基準而選定。例如,有自最後於處理器12上運行之時刻最早之程序起依序選擇之方法。又,例如,亦有自生成時刻最早之程序起依序選擇之方法。進而,例如,更有將選擇對象之程序限定於用戶程序之方法。
總而言之,分配給程序之儲存區域內所儲存之資料會藉由換出被寫入至SSD3。
再者,一旦經換出後之程序於處理器12上再次運行,便會進行將藉由換出寫入至SSD3之資料自SSD3讀出,並復位至記憶體13內之儲存區域之處理。將該復位處理稱為程序之換入。
於本實施形態中,換出及換入之處理係由程序管理部321執行。 <程序對SSD3進行存取時之處理之說明>
此處,對如下內容進行說明,即,於各程序經由檔案系統33對SSD3進行存取之案例中,檔案系統33知道哪個程序何時對哪個邏輯位址(邏輯區塊位址:LBA)進行了存取;及亦存在不經由檔案系統33便能對SSD3進行存取之路徑。
於程序對SSD3進行資料之讀出或寫入之情形時,一般而言,會對檔案系統33要求資料之讀出或寫入。該點無論於用戶程序中還是於系統程序中均相同。
於經由檔案系統33對SSD3進行資料之讀出或寫入之情形時,程序會對檔案系統33送出存取要求。詳細而言,程序會對檔案系統33指定希望進行讀出或寫入之檔案名、讀出/寫入之類別、希望進行讀出或寫入之資料尺寸、讀出目標儲存區域(於資料讀出之情形時)、儲存希望寫入之資料之儲存區域(於資料寫入之情形時)。
檔案系統33檢查該程序對所指定之檔案是否具有存取權限,於該程序具有存取權限之情形時同意存取要求,於不具有存取權限之情形時駁回該存取要求。
即,檔案系統33知道哪個程序何時對哪個檔案要求了存取。
檔案系統33若同意程序所提出之存取要求,則釋放與該存取對象檔案對應之SSD3之邏輯區塊位址(LBA)。
於資料讀出之情形時,檔案系統33根據檔案系統自身所具有之表示各檔案名與各LBA之對應關係之表格,創建一個以上對SSD3要求讀出之開頭LBA與尺寸之組。開頭LBA與尺寸之組有可能變成複數個之原因在於:構成一個檔案之資料有可能於SSD3之LBA空間上被分割(分片化)成複數個區域。
於資料寫入之情形時,檔案系統33自檔案系統33自身所具有之未使用LBA區域當中選擇一個以上分配給該寫入要求之LBA區域,創建一個以上開頭LBA與尺寸之組。開頭LBA與尺寸之組有可能變成複數個之原因在於:能將寫入要求尺寸彙總而儲存之閒置之連續LBA區域有可能不存在。
若檔案系統33創建對SSD3要求之包含讀寫對象之開頭LBA與尺寸之組之要求資訊,則檔案系統33將該要求資訊及資料讀出/寫入要求送出至記憶體驅動器31。
記憶體驅動器31根據自檔案系統33所接收到之資料讀出/寫入要求,生成對主機記憶體控制器11之操作,得當地操作主機記憶體控制器11,而經由信號線20將讀出/寫入要求(讀取/寫入指令)發送至SSD3。
記憶體驅動器31經由主機記憶體控制器11接收由SSD3回復之讀出/寫入要求之結果,並將讀出/寫入要求之結果傳送至剛才送出資料讀出/寫入要求之檔案系統33。檔案系統33向該資料讀出/寫入要求本源之要求起源即程序,傳送該資料讀出/寫入要求之結果。
如此,則程序所要求之自SSD3之資料讀出及程序所要求之向SSD3之資料寫入得到處理。因此,檔案系統33便會知道哪個程序何時對哪個LBA進行了存取。
再者,自程序向SSD3送出之要求並不僅限於讀出/寫入要求。例如,亦有將如下要求發送至SSD3之情況,即,自SSD3獲取向SSD3之總寫入資料量、自SSD3之總讀出資料量等統計資訊之要求,或使SSD3之狀態向低耗電狀態變化之要求。
該等要求多數不經由檔案系統33,而自程序直接送出至記憶體驅動器31。
檔案系統33例如為NTFS(NT(New Technology,新技術) File System,新技術檔案系統)、或ext4(fourth extended file system,第四擴展檔案系統)等。亦有主機2內存在複數個檔案系統之情況。 <SSD3之構成之說明>
此處,對如下內容進行說明,即,SSD3之資料控制部403管理著主機2為了讀出/寫入資料而指定之LBA、及儲存有與該LBA對應之最新資料之NAND快閃記憶體5上之儲存位置兩者之間之對應關係。
圖3表示SSD3之構成例。
正如圖1中所說明般,SSD3包含控制器4及NAND快閃記憶體5。如圖3所示,控制器4包含介面控制器401、主機要求處理部402、資料控制部403、緩衝記憶體404、直接記憶體存取控制器(Direct Memory Access Controller,DMAC)405、錯誤校正碼處理部406及NAND介面控制器407。
介面控制器401接收經由信號線20自主機2發送之對SSD3之處理要求,並將該要求之內容傳達給主機要求處理部402。又,介面控制器401遵照來自主機要求處理部402之要求,將針對來自主機2之要求之處理結果之回復經由信號線20發送至主機2。而且,介面控制器401遵照來自DMAC405之指示,將寫入資料自主機2側之記憶體13讀出並寫入至緩衝記憶體404,或將藉由來自主機2之讀取要求指定之資料自緩衝記憶體404讀出並寫入至主機2側之記憶體13。
主機要求處理部402自介面控制器401接收由主機2發送之處理要求,並分析處理要求之內容,然後遵照處理要求之內容,控制SSD3內部之動作。
主機要求處理部402例如若自主機2接收到讀出要求(讀取指令),則對資料控制部403指示自NAND快閃記憶體5將藉由該讀出要求指定之資料讀出至緩衝記憶體404,並操作DMAC405,而將讀出至緩衝記憶體404之資料傳輸至主機2側之記憶體13。又,主機要求處理部402例如若自主機2接收到寫入要求(寫入指令),則操作DMAC405,自主機2側之記憶體13將寫入資料傳輸至緩衝記憶體404,並對資料控制部403指示將緩衝記憶體404內之寫入資料寫入至NAND快閃記憶體。然後,主機要求處理部402於自主機2所接收到之要求之處理完成後,向主機2發送處理結果。
SSD3自主機2接收之要求並不僅限於讀出要求、寫入要求。如上所述,例如,亦會接收獲取總寫入資料量或總讀出資料量等統計資訊之要求、或者使SSD3之狀態向低耗電狀態變化之要求。接收到該等要求之主機要求處理部402對資料控制部403要求具體處理,而實現所期望之處理。
資料控制部403進行SSD3內所儲存之資料之管理、及對NAND快閃記憶體5之存取之控制。具體而言,資料控制部403儲存有由主機指定之LBA與位置資訊之組,其中上述位置資訊表示儲存有與該LBA對應之最新資料之NAND快閃記憶體5內之儲存位置。將該NAND快閃記憶體5內之位置資訊稱為NAND物理位址(NAND Physical Address:NPA)。又,將由資料控制部403管理之管理各LBA與各NPA之間之對應關係之表格稱為邏輯轉換表。
NAND快閃記憶體5包含具有儲存單元陣列之1個以上NAND快閃記憶體晶片。儲存單元陣列具有呈矩陣狀排列之複數個儲存單元。如圖4所示,NAND快閃記憶體5之儲存單元陣列包含複數個區塊(物埋區塊)BLK0〜BLK(j-1)。區塊BLK0〜BLK(j-1)作為刪除動作之單位而發揮功能。
區塊BLK0〜BLK(j-1)包含複數個頁(物理頁)。即,區塊BLK0〜BLK(j-1)各自包含頁P0、P1、…P(k-1)。各頁包含連接於同一字元線之複數個儲存單元。於NAND快閃記憶體5中,資料讀出及資料寫入係以頁為單位而執行。 <向SSD3寫入資料之處理之說明>
此處,對在資料寫入時更新邏輯轉換表進行說明。
於由主機2對SSD3傳送了資料寫入要求之情形時,SSD3之控制器4會以如下方式進行處理。
於控制器4中,首先,主機要求處理部402經由介面控制器401接收該寫入要求。
該寫入要求中包含寫入目標LBA區域之開頭LBA、寫入尺寸及儲存有寫入資料之主機記憶體之開頭位址。因此,主機要求處理部402操作DMAC405,將與該寫入尺寸相當之資料自該主機記憶體之開頭位址傳輸至緩衝記憶體404。然後,主機要求處理部402指示資料控制部403將緩衝記憶體404內之資料寫入至NAND快閃記憶體5。
再者,主機要求處理部402可於已將被要求寫入之資料全部傳輸至緩衝記憶體404之時點,將針對自主機2所接收到之寫入要求之回復發送至主機2,亦可於已將被要求寫入之資料全部寫入至NAND快閃記憶體5之時點,將上述回復發送至主機2。
自主機要求處理部402收到資料寫入指示之資料控制部403決定將該資料寫入至NAND快閃記憶體5之與哪個NPA對應之儲存位置,然後視需要操作錯誤校正碼處理部406,而基於該資料創建包含該資料與錯誤校正碼之編碼化資料,再操作NAND介面控制器407,將該資料(或該編碼化資料)寫入至NAND快閃記憶體5。
資料控制部403將該資料寫入至NAND快閃記憶體5後,更新邏輯轉換表,以使該資料之LBA與表示寫入有該資料之儲存位置之NPA建立對應關係。於邏輯轉換表中,若該LBA對應關聯著與該LBA之舊資料對應之NPA,則與該舊資料對應之NPA將會被更新為表示寫入有該資料之儲存位置之NPA(新NPA)。如此,則邏輯轉換表之內容便會被以LBA與NPA之對應關係始終最新之方式管理。 <多值度之區分使用>
此處,對如下內容進行說明,即,SSD3能將表示一個儲存單元中所儲存之位元數之多值度互不相同之多種程式模式(SLC模式/MLC模式/TLC模式)適當區分使用,而將資料寫入至NAND快閃記憶體5。
例如,於NAND快閃記憶體5係以一個儲存單元中儲存3位元資料之三層單元(TLC)-NAND快閃記憶體之形態實現之情形時,NAND快閃記憶體5能選擇性地使用多值度互不相同之複數個程式模式,即,(1)一個儲存單元中儲存1位元資料之單層單元(SLC)模式,(2)一個儲存單元中儲存2位元資料之雙層單元(MLC)模式,(3)一個儲存單元中儲存3位元資料之三層單元(TLC)模式;而將資料寫入至NAND快閃記憶體5。
一般而言,寫入至一個儲存單元之資料量(位元數)越多,即多值度越高,則記憶體成本越低,NAND快閃記憶體5之利用效率越高。但若欲以多值度較高之程式模式將資料寫入至儲存單元,又若欲將以多值度較高之程式模式寫入之資料自儲存單元讀出,則多數需要執行複雜之處理,從而資料寫入/讀出所花費之時間便會變長。
因此,資料控制部403於希望使被主機2指示之寫入要求儘量迅速地完成之情形時,會以SLC模式等多值度較低之程式模式對NAND快閃記憶體5之區塊進行寫入。
相反地,資料控制部403於希望提高NAND快閃記憶體5之利用效率時,會實施垃圾回收(GC)等,而將以多值度較低之程式模式寫入之資料以TLC模式等多值度相對較高之程式模式重新寫入。GC係將有效資料與無效資料混合存在之若干區塊(GC源區塊)內之有效資料移動至新區塊(GC目的地區塊),而使GC源區塊變成不含有效資料之空閒區塊之動作。
程式模式之切換係以NAND快閃記憶體5之區塊為單位而進行。即,NAND快閃記憶體5中包含之複數個區塊被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種。
以後,將以SLC形態使用之NAND快閃記憶體5之區塊(即,以SLC模式寫入資料之區塊)稱為SLC區塊。同樣地,將以MLC形態使用之NAND快閃記憶體5之區塊(即,以MLC模式寫入資料之區塊)稱為MLC區塊,將以TLC形態使用之NAND快閃記憶體5之區塊(即,以TLC模式寫入資料之區塊)稱為TLC區塊。
例如,資料控制部403亦可首先將與自主機2所接收到之幾乎所有寫入要求對應之寫入資料寫入至多值度較低之區塊(例如SLC區塊),以便使主機2所要求之資料寫入迅速地完成。而且,之後,資料控制部403亦可視需要,將多值度較低之一個以上區塊中所儲存之資料(有效資料)移動至多值度相對較高之一個以上區塊(MLC區塊或TLC區塊)。
此處,所謂資料之移動,係指將NAND快閃記憶體5之至少一個區塊(移動源頭區塊)中所儲存之資料複製至NAND快閃記憶體5之其他至少一個區塊(移動目標區塊),而將移動源頭區塊內之該資料無效化。
所謂有效資料,係指與LBA等邏輯位址相關聯之最新資料。所謂無效資料,係指與任何邏輯位址均不關聯之老舊資料。
為了控制此種移動處理,資料控制部403創建圖5所示之管理表,管理NAND快閃記憶體5之使用狀況。 <管理NAND快閃記憶體之使用狀況之表格之說明>
圖5表示資料控制部403創建並管理之管理SSD3內之NAND快閃記憶體5之使用狀況之表格。以下將該表格稱為NAND管理表。
於該圖5之NAND管理表中,按照SLC、MLC、TLC等NAND快閃記憶體5之可利用多值度,記錄並管理著各多值度下使用之NAND快閃記憶體5之區塊數(使用區塊數)、所使用之區塊內儲存之有效資料之總量(有效資料量)、各多值度下可使用之最大區塊數、各多值度下使用最大區塊數時所能儲存之最大資料量、及各多值度下當前可使用之閒置區塊數(空閒區塊數)。
又,於圖5之NAND管理表中,亦記錄並管理著與多值度無關之SSD3整體上之上述使用區塊數、有效資料量、最大區塊數、最大資料量及空閒區塊數。
於資料控制部403已將資料寫入至NAND快閃記憶體5之情形時,資料控制部403會按照寫入時之多值度,更新NAND管理表。例如,若資料控制部403自SLC之空閒區塊中抽取一個區塊,並向該區塊以SLC模式寫入4千位元組之資料,則資料控制部403使NAND管理表內之SLC之列之使用區塊數增加1,使SLC之列之有效資料量增加4千位元組,使SLC之列之空閒區塊數減少1。
此時,於藉由該資料寫入而例如MLC區塊中所儲存之4千位元組之資料變成最舊資料(變成無效資料)之情形時,資料控制部403會使NAND管理表內之MLC之列之有效資料量減少4千位元組。
又,資料控制部403使SSD整體之列之使用區塊數增加1,使SSD整體之列之空閒區塊數減少1。再者,SSD整體之列之有效資料量不變。其原因在於:代替新寫入至SLC區塊之4千位元組之資料變成了有效資料,MLC區塊中所儲存之4千位元組之資料變成了無效資料。 <由NAND管理表可知之事情之說明>
若查閱圖5之NAND管理表,則關於SSD3內部之狀態,可知如下事情。
可知:於SLC區塊之使用區塊數較多之情形時,NAND快閃記憶體5之利用效率降低。就SLC區塊而言,雖然讀寫較快,但因多值度較低,故利用效率較差。因此,作為SLC區塊而使用之最大區塊數於某種程度上要設定得較少。
於SLC之使用區塊數接近於預先設定之最大區塊數之情形時,不僅NAND快閃記憶體5之利用效率會下滑,而且將無法再進一步針對來自主機2之寫入要求分配SLC區塊。因此,能判斷出需要使SLC區塊中所儲存之資料移動至多值度相對較高之區塊。
又,可知:就所有多值度而言,無論使用區塊數是否增加,於有效資料量與最大資料量相比較少之情形時,無效資料較多,NAND快閃記憶體5內之許多區塊尚未被有效運用。
此時,整體上之空閒區塊數同時減少。因此,資料控制部403能判斷出需要藉由GC減少使用區塊數,而增加空閒區塊數。
藉由如此地使用圖5之NAND管理表,檢查SSD3內之NAND快閃記憶體5之使用狀況,資料控制部403能判斷出繼而需要執行如何之處理。 <第1實施形態之資料移動處理之說明>
首先,對第1實施形態之資料移動處理之概要進行說明。
於由主機2之處理器12執行之主機軟體中,追加程序監視部41。該程序監視部41能知道於主機2上運行之程序數,並將總程序數通知SSD3。再者,程序監視部41亦可將總程序數之增減通知SSD3。
SSD3之控制器4判定由主機2通知之總程序數是否高於某閾值,於判定出總程序數高於某閾值之情形時,執行使多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理。於此種情形時,例如,將SLC區塊中所儲存之資料(有效資料)移動至MLC區塊或TLC區塊之處理得以執行。藉此,能使當前正在使用之SLC區塊變成空閒區塊。如上所述,若總程序數增多,則換出、換入變得易於發生。於本實施形態中,會基於總程序數,執行使多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,因此能於換出、換入變得易於發生前,增加多值度較低之區塊(例如SLC區塊)之空閒區塊數。藉此,於以後發生程序之換出或換入時能使用多值度較低之區塊進行資料寫入及資料讀出之可能性提高。其結果,能縮短換出或換入所花費之時間。
再者,資料之移動亦可於多值度相同之區塊之間進行。該資料之移動係上述GC之一種形態。若分配藉由該資料之移動所生成之空閒區塊作為SLC之空閒區塊,則能為後續之來自主機2之寫入要求做好準備。
又,移動資料之處理未必於判定出總程序數高於某閾值之時點立即執行,而只要於判定出總程序數高於某閾值後執行即可。
例如亦可為:於判定出總程序數高於某閾值之時點,控制器4(例如主機要求處理部402)決定應該執行移動資料之處理,而將該用以移動資料之處理排入等待隊列中。
或者亦可為:將總程序數高於閾值作為觸發,主機要求處理部402提高用以移動資料之處理之優先度。藉此,用以移動資料之處理之優先度變得高於其他若干處理之優先度,故而能優先於上述其他若干處理地執行用以移動資料之處理。
或者亦可為:於判定出總程序數高於某閾值之時點,主機要求處理部402決定應該執行移動資料之處理,然後一直等到SLC之有效資料量降至某閾值,或SSD3整體之空閒區塊數降至某閾值等條件成立,當該條件成立時,執行用以移動資料之處理。
以下,對用以實現基於總程序數之資料移動處理之具體構成進行說明。
圖6表示包含程序監視部41之主機2之內部構成例。
該圖6之構成例係於圖2之構成例中追加程序監視部41而成。
程序監視部41藉由與OS32之程序管理部321、或記憶體管理部322、乃至檔案系統33之間之資訊收發,獲取並管理正在主機2上運行之程序、分配給該等程序之儲存區域及區域之尺寸、乃至各程序所存取之SSD3之LBA等資訊。
具體而言,程序監視部41使用圖7所示之管理表,管理著上述資訊。圖7所示之管理表具有與複數個程序對應之複數個條目(列)。各列包含程序識別碼欄位、程序類別欄位、記憶體使用量欄位、複數個LBA利用清單欄位及最終啟動時刻欄位。
於與某程序對應之列中,程序識別碼欄位表示該程序之識別碼。程序類別欄位表示該程序之類別(用戶程序/系統程序)。記憶體使用量欄位表示正被該程序使用之主機記憶體上之儲存區域之容量。LBA利用清單欄位表示該程序所存取(讀出/寫入)之SSD3之LBA之清單。最終啟動時刻欄位表示該程序最後被啟動之時刻。
如上所述,於程序生成時,除了程序管理部321自SSD3讀出程式以外,程序亦會發佈針對SSD3之讀出/寫入要求。因此,若生成程序,則進行向SSD3之資料寫入、自SSD3之資料讀出之可能性較高。
因此,若程序監視部41藉由詢問程序管理部321檢測到程序已生成,則程序監視部41將該情況通知SSD3。關於該對SSD3實施之通知,可使用NVMe等標準規格之指令,亦可使用其他方法。
於被主機2通知程序數增加之SSD3之控制器4中,收到該通知之主機要求處理部402使資料控制部403將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊,藉此增加多值度較低之區塊用之空閒區塊數,以備後續之自主機2之存取所用。
又,程序數減少意味著程序已結束。若程序結束,則該已結束之程序對SSD3所讀寫之資料暫時不會被存取之可能性較高。
因此,若程序監視部41藉由詢問程序管理部321檢測到程序已結束,則程序監視部41將該情況通知SSD3。同樣地,關於該對SSD3實施之通知,可使用NVMe等標準規格之指令,亦可使用其他方法。
於被主機2通知程序數減少之SSD3之控制器4中,收到該通知之主機要求處理部402使資料控制部403將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊,藉此增加多值度較低之區塊用之空閒區塊數,從而謀求NAND快閃記憶體5之利用效率之改善。
進而,程序之總數較少表示自主機2向SSD3發送之讀出/寫入要求有可能較少。
又,程序之總數較多表示上述程序之換出及換入發生之可能性較高。
因此,程序監視部41根據詢問程序管理部321所得到之結果,管理總程序數,並將該總程序數通知SSD3。同樣地,關於該對SSD3實施之通知,可使用NVMe等標準規格之指令,亦可使用其他方法。關於將總程序數通知SSD3之時機,可為程序數增減之時,亦可為定期地進行通知。
於自主機2收到總程序數之通知之SSD3之控制器4中,收到該通知之主機要求處理部402檢查被通知之總程序數是否高於預先設定之閾值(第1閾值)。
於總程序數高於上述第1閾值之情形時,主機要求處理部402對資料控制部403指示將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊。藉此,多值度較低之區塊中所儲存之資料被移動至多值度相對較高之區塊,故而多值度較低之區塊用之空閒區塊數增加,於以後發生程序之換出或換入時能使用多值度較低之區塊之可能性提高。其結果,能縮短換出或換入所花費之時間,從而提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
又,主機要求處理部402檢查總程序數是否低於預先設定之閾值(第2閾值)。例如,第2閾值係小於第1閾值之值。
於總程序數低於第2閾值之情形時,主機要求處理部402對資料控制部403指示將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊。藉此,多值度較低之區塊中所儲存之資料被移動至多值度相對較高之區塊,故而多值度較低之區塊用之空閒區塊數增加,NAND快閃記憶體5之利用效率改善。
圖8之流程圖表示由主機2及SSD3執行之總程序數通知處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理正在主機2之處理器12上運行之總程序數(步驟S11)。當總程序數增減,或自上次之通知起經過一定期間等通知條件成立時(步驟S12為是),程序監視部41將表示總程序數之資訊發送至SSD3,而將總程序數通知SSD3(步驟S13)。
SSD3之控制器4自主機2接收表示總程序數之通知(步驟S21)。控制器4之主機要求處理部402將由主機2通知之總程序數與第1閾值加以比較,判定總程序數是否高於第1閾值(步驟S22)。
若總程序數高於第1閾值(步驟S22為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S23)。於步驟S23中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。例如,資料控制部403讀出SLC區塊中所儲存之資料(有效資料),並將該資料以MLC模式寫入至MCL區塊,或以TLC模式寫入至TLC區塊。藉此,SLC區塊中所儲存之資料被自SLC區塊移動至MCL區塊或TLC區塊。藉由資料之移動而有效資料消失後之SLC區塊變成空閒區塊。
因此,能於因正在主機2(處理器12)上運行之程序數增加而導致換出發生前,事先確保SLC之空閒區塊,從而能減少換出所需之時間。其結果,能改善電腦系統1整體之性能。
若總程序數並不高於第1閾值(步驟S22為否),則主機要求處理部402將總程序數與第2閾值(<第1閾值)加以比較,判定總程序數是否低於第2閾值(步驟S24)。
若總程序數低於第2閾值(步驟S24為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S25)。於步驟S25中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。例如,資料控制部403讀出SLC區塊中所儲存之資料(有效資料),並將該資料以MLC模式寫入至MCL區塊,或以TLC模式寫入至TLC區塊。藉此,SLC區塊中所儲存之資料被自SLC區塊移動至MCL區塊或TLC區塊。藉由該資料之移動,NAND快閃記憶體5之利用效率得到改善。
再者,於步驟S23中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
同樣地,於步驟S25中,例如亦可為於TLC區塊之間移動資料(有效資料)。
圖9之流程圖表示由主機2及SSD3執行之程序數增減通知處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理正在主機2之處理器12上運行之總程序數之增減(步驟S31)。
若總程序數增加(步驟S32為是),則程序監視部41將表示總程序數增加之通知發送至SSD3(步驟S33)。
另一方面,若總程序數減少(步驟S34為是),則程序監視部41將表示總程序數減少之通知發送至SSD3(步驟S35)。
若SSD3之控制器4自主機2接收到表示總程序數增加之通知(步驟S41為是),則控制器4之主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S42)。於步驟S42中,由主機要求處理部402對資料控制部403指示資料之移動,從而資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。例如,資料控制部403讀出SLC區塊中所儲存之資料(有效資料),並將該資料以MLC模式寫入至MCL區塊,或以TLC模式寫入至TLC區塊。藉此,SLC區塊中所儲存之資料被自SLC區塊移動至MCL區塊或TLC區塊。藉由資料之移動而有效資料消失後之SLC區塊變成空閒區塊。
因此,能於換出發生前,事先確保SLC用空閒區塊,從而能減少換出所需之時間。其結果,能改善電腦系統1整體之性能。
若SSD3之控制器4自主機2接收到表示總程序數減少之通知(步驟S43為是),則控制器4之主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S44)。於步驟S44中,由主機要求處理部402對資料控制部403指示資料之移動,從而資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。例如,資料控制部403讀出SLC區塊中所儲存之資料(有效資料),並將該資料以MLC模式寫入至MCL區塊,或以TLC模式寫入至TLC區塊。藉此,SLC區塊中所儲存之資料被自SLC區塊移動至MCL區塊或TLC區塊。藉由該資料之移動,NAND快閃記憶體5之利用效率得到改善。
再者,於步驟S42中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
同樣地,於步驟S44中,例如亦可為於TLC區塊之間移動資料(有效資料)。藉此,能降低TLC區塊之分片。
參照圖8之流程圖及圖9之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。 (第2實施形態)
於第1實施形態中,基於由主機2通知SSD3之總程序數(或總程序數之增減)執行了資料之移動。於第2實施形態中,由主機2將程序之識別碼通知SSD3,使藉由特定程序寫入之資料於區塊與區塊之間移動。再者,第2實施形態中之SSD3之硬體構成及主機2之硬體構成與第1實施形態之SSD3及主機2相同。 <第2實施形態之資料移動處理之說明>
首先,對第2實施形態之資料移動處理之概要進行說明。
主機2能將表示主機2中所生成之各程序之識別碼之資訊通知SSD3。又,主機2能將各自被賦予要求寫入資料之程序之識別碼之各寫入要求發送至SSD3。SSD3之控制器4使用管理表,管理所生成之各程序之識別碼、及與藉由上述生成之各程序寫入之資料對應之位址範圍兩者之間之對應關係。
SSD3之控制器4自主機2接收到表示某程序之結束之通知後,基於管理表,執行將藉由已結束之程序寫入至NAND快閃記憶體5之資料自多值度較低之區塊移動至多值度相對較高之區塊之處理。
與已結束之程序對應之資料短時間內不會被主機2存取。因此,即便使與已結束之程序對應之資料移動至多值度相對較高之區塊,亦不會發生該資料之讀出速度下降等現象,故而能不引起性能降低地,為後續之來自主機2之寫入要求做好準備。
再者,與已結束之程序對應之資料之移動亦可於多值度相同之區塊之間進行。於此種情形時,資料之移動亦係上述GC之一種形態。若分配藉由該資料之移動所生成之空閒區塊作為SLC之空閒區塊,則能為後續之來自主機2之寫入要求做好準備。
又,亦可為:主機2不僅會將各自被賦予要求寫入資料之程序之識別碼之寫入要求發送至SSD3,而且亦會將各自被賦予要求讀出資料之程序之識別碼之讀出要求發送至SSD3。於此種情形時,SSD3之控制器4只要使用管理表,管理所生成之各程序之識別碼、及與藉由所生成之各程序存取(讀出或寫入)之資料對應之位址範圍兩者之間之對應關係即可。然後,SSD3之控制器4自主機2接收到表示某程序之結束之通知後,基於該管理表,使藉由已結束之程序存取(讀出或寫入)之資料自多值度較低之區塊移動至多值度相對較高之區塊。
又,與第1實施形態同樣地,移動資料之處理未必於被主機2通知已結束之程序之時點立即執行,亦可於之後執行。
以下,對用以實現第2實施形態之資料移動處理之具體構成進行說明。
圖10表示主機2之內部構成例。
圖10之內部構成例較圖6之內部構成例,不同點在於:記憶體驅動器31之前段追加有過濾器驅動器42。
正如第1實施形態中所說明般,主機2之程序監視部41掌握著正在主機2上運行之各程序。又,程序監視部41自檔案系統33,獲取到了各程序所讀寫之LBA區域(LBA範圍)之資訊。而且,讀出要求及寫入要求各自包含指定存取目標LBA區域之資訊(開頭LBA與資料尺寸)。因此,程序監視部41藉由追加過濾器驅動器42,而參照讀出/寫入要求中包含之存取目標LBA區域,能特定出該要求讀出/寫入資料之要求起源程序,進而能使用過濾器驅動器42,對該讀出/寫入要求賦予該特定出之程序之識別碼。因此,記憶體驅動器31能將被賦予要求讀出/寫入資料之程序之識別碼之讀出/寫入要求發送至SSD3。於此種情形時,亦可將包含程序之識別碼之讀出/寫入要求(讀取/寫入指令)發送至SSD3。
SSD3之控制器4自主機2接收被賦予有程序之識別碼之讀出/寫入要求。因此,控制器4能基於該讀出/寫入要求,檢測要求讀出/寫入資料之要求起源程序之識別碼。
該程序之識別碼可為程序ID,亦可為作為程序起源之程式之ID,或可為該程式之名稱或該程式之檔案名。
SSD3之資料控制部403使用所接收到之讀出/寫入要求內之程序識別碼,創建圖11所示之表格(以下,稱為程序資料管理表)。
資料控制部403使用程序資料管理表,管理要求讀出/寫入資料之各程序之識別碼、及與藉由上述各程序存取(讀出/寫入)之資料對應之各位址範圍兩者之間之對應關係。
該程序資料管理表具有與複數個程序對應之複數個條目(行)。各行包含程序識別碼欄位、SLC欄位、MLC欄位、TLC欄位、程序類別欄位、LBA區域-多值度欄位及最終存取時刻欄位。
於與某程序對應之列中,程序識別碼欄位表示該程序之識別碼。SLC欄位表示藉由該程序存取之總資料量中以SLC模式儲存之資料量。MLC欄位表示藉由該程序存取之總資料量中以MLC模式儲存之資料量。TLC欄位表示藉由該程序存取之總資料量中以TLC模式儲存之資料量。程序類別欄位表示該程序為系統程序還是為用戶程序。LBA區域-多值度欄位表示藉由該程序存取(讀出、寫入)之LBA區域(開頭LBA與尺寸(邏輯區塊數))、及該LBA區域之資料儲存於哪個多值度之區塊中。該LBA區域表示與藉由該程序讀出/寫入之資料對應之位址範圍。最終存取時刻欄位表示該程序最後對SSD3進行存取之最終存取時刻,即表示該程序最後實施自SSD3之資料讀出或向SSD3之資料寫入之最終存取時刻。再者,最終存取時刻亦可如圖11所示,按每個LBA區域逐一加以管理。
於本實施形態中,藉由於多值度不同之複數個區塊之間移動資料,能使同一程序之資料分散於多值度不同之複數個區塊。例如,可將與某程序對應之程式儲存於TLC區塊等多值度較高之區塊中,亦可將藉由該程序創建之檔案等資料儲存於SLC區塊中。於此種情形時,與分配給該程式之LBA區域對應之多值度表示TLC,與分配給檔案等資料之LBA區域對應之多值度表示SLC。通常,程式很少會被更新,而檔案等資料則會以相對較高之頻度得到更新。因此,藉由利用如下資料配置,能實現高速地讀出/寫入檔案等資料、及改善NAND快閃記憶體5之利用效率兩者,即,將與某程序對應之程式儲存於TLC區塊等多值度較高之區塊中,將藉由該程序創建之檔案等資料儲存於SLC區塊中。
圖11之程序資料管理表與圖5之NAND管理表同樣地,由資料控制部403管理及更新。
向程序資料管理表中追加新程序之列之時機例如為主機2之程序監視部41通知SSD3程序已生成之時。例如,亦可為程序監視部41將包含主機2中所生成之程序之識別碼之資訊作為表示程序之生成之通知發送至SSD3。
另一方面,自程序資料管理表中抹除特定程序之列之時機例如為主機2之程序監視部41通知SSD3程序已結束之時。例如,亦可為程序監視部41將包含主機2中所結束之程序之識別碼之資訊作為表示程序之結束之通知發送至SSD3。
再者,亦可考慮如下形態,即,即便被主機2通知程序已結束,亦不自程序資料管理表中抹除該程序之列。
尤其是於使用作為程序起源之程式之名稱作為識別程序之識別碼之構成中,可考慮如下運用方法,即,預先於程序資料管理表中保留與被結束之程序相關之資料(列),以備之後啟動同一程式之情況所用。於此種情形時,關於自程序資料管理表中抹除資料(列)之時機,可考慮程序資料管理表之尺寸變得過大之時等。
具體處理如下。
首先,於程序結束時,主機2之程序監視部41將已結束之程序之識別碼通知SSD3。SSD3之控制器4自主機2接收到已結束之程序之識別碼後,控制器4自程序資料管理表中特定出該已結束之程序之列,並使該已結束之程序所存取之資料(例如,藉由已結束之程序寫入至NAND快閃記憶體5之資料、或者藉由已結束之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)移動至多值度相對較高之區塊。藉此,能更有效率地增加多值度較低之區塊之空閒區塊,從而謀求NAND快閃記憶體5之利用效率之改善。
又,圖11之程序資料管理表亦可用以於第1實施形態中選擇移動對象資料。
例如,若由主機2之程序監視部41通知之總程序數超過第1閾值,或被主機2之程序監視部41通知總程序數增加,則SSD3之控制器4參照圖11之程序資料管理表,特定出於多值度較低之區塊中儲存有相對較多資料之程序,並執行將該特定出之程序所存取之資料(例如,藉由該特定出之程序寫入至NAND快閃記憶體5之資料、或者藉由該特定出之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)自多值度較低之區塊移動至多值度相對較高之區塊之處理。
或者亦可為:若由主機2之程序監視部41通知之總程序數超過第1閾值,或被主機2之程序監視部41通知總程序數增加,則SSD3之控制器4參照圖11之程序資料管理表,特定出最終存取時刻最早之程序,並執行將該特定出之程序所存取之資料(例如,藉由該特定出之程序寫入至NAND快閃記憶體5之資料、或者藉由該特定出之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)自多值度較低之區塊移動至多值度相對較高之區塊之處理。
圖12之流程圖表示由主機2及SSD3執行之資料讀出/寫入處理之步序。
當應該將讀出/寫入要求發送至SSD3時(步驟S51為是),主機2之程序監視部41將要求讀出或寫入資料之要求起源程序之識別碼賦予給該讀出/寫入要求(步驟S52),並將該被賦予要求起源程序之識別碼之讀出/寫入要求發送至SSD3(步驟S53)。
SSD3之控制器4自主機2接收讀出/寫入要求(步驟S61)。主機要求處理部402基於該接收到之讀出/寫入要求,對資料控制部403指示自NAND快閃記憶體5之資料讀出或向NAND快閃記憶體5之資料寫入,從而資料控制部403進行自NAND快閃記憶體5之資料讀出或向NAND快閃記憶體5之資料寫入(步驟S62)。進而,資料控制部403將賦予給讀出/寫入要求之程序之識別碼、及藉由該程序讀出或寫入之資料之位址範圍(LBA區域)兩者之間之對應關係儲存至圖11之程序資料管理表中(步驟S63)。
圖13之流程圖表示對應於程序之結束而由主機及第2實施形態之儲存裝置執行之程序識別碼通知處理及資料移動處理之步序。
當某程序已結束時(步驟S54為是),主機2之程序監視部41將該已結束之程序之識別碼通知SSD3(步驟S55)。
SSD3之控制器4自主機2接收已結束之程序之識別碼(步驟S64)。主機要求處理部402對資料控制部403指示已結束之程序之資料之移動,從而資料控制部403基於圖11之程序資料管理表,執行將藉由已結束之程序存取之資料(例如,藉由已結束之程序寫入至NAND快閃記憶體5之資料、或者藉由已結束之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)移動至多值度相對較高之區塊之處理(步驟S65)。
圖14之流程圖表示於總程序數超過閾值之情形時、或接收到程序數增加之通知之情形時由SSD3執行之資料移動處理之步序。
若由主機2通知之總程序數超過第1閾值,或被主機2之程序監視部41通知總程序數增加(步驟S71為是),則主機要求處理部402對資料控制部403指示資料之移動。資料控制部403參照圖11之程序資料管理表,特定出於多值度較低之區塊中儲存有相對較多資料之程序,並執行將該特定出之程序所存取之資料(例如,藉由該特定出之程序寫入至NAND快閃記憶體5之資料、或者藉由該特定出之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)自多值度較低之區塊移動至多值度相對較高之區塊之處理(步驟S72)。
或者亦可為:於步驟S72中,資料控制部403參照圖11之程序資料管理表,特定出最終存取時刻最早之程序,並執行將該特定出之程序所存取之資料(例如,藉由該特定出之程序寫入至NAND快閃記憶體5之資料、或者藉由該特定出之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)自多值度較低之區塊移動至多值度相對較高之區塊之處理。
參照圖12之流程圖、圖13之流程圖及圖14之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。 (第3實施形態)
以下,將如下構成作為第3實施形態而進行說明,即,由主機2通知SSD3所生成之程序之識別碼、及表示所生成之程序為系統程序還是為用戶程序之類別(程序類別),從而SSD3執行如下處理,即,優先於藉由系統程序存取之資料(例如藉由系統程序寫入至NAND快閃記憶體5之資料、或者藉由系統程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)地,選擇藉由用戶程序存取之資料(例如藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料。
再者,第2實施形態中之SSD3之硬體構成及主機2之硬體構成與第1實施形態之SSD3及主機2相同,主機2之內部構成與圖10中所說明之內部構成相同。
於第1實施形態及第2實施形態中,程序監視部41管理著主機2上之程序之狀態,如上所述,程序有用戶程序與系統程序兩類。
如上所述,關於程序,有進行換出或換入之情況,但因系統程序係使主機2正常運行所必需之程序,故很少會進行換出。換言之,進行換出、換入之大部分程序係用戶程序,多數情形時系統程序常駐於主機2之記憶體13。因此,被啟動後之系統程序對SSD3送出讀出/寫入要求之可能性較高。
因此,主機2之程序監視部41將程序之生成通知SSD3時,不僅會將該生成之程序之識別碼通知SSD3,而且亦會將表示該生成之程序為系統程序還是為用戶程序之類別通知SSD3。
SSD3之資料控制部403使用圖11之程序資料管理表,管理所生成之各程序之識別碼、所生成之各程序之類別、及與藉由所生成之各程序存取之資料(例如,藉由所生成之程序寫入至NAND快閃記憶體5之資料、或者藉由所生成之程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)對應之位址範圍(LBA區域)等幾者之間之對應關係。而且,資料控制部403於判斷使哪個程序之資料移動至多值度相對較高之區塊之情形時,會優先於藉由類別為系統程序之程序存取之資料地,選擇藉由類別為用戶程序之程序存取之資料。藉此,能將用戶程序之資料優先於被存取之可能性較高之系統程序之資料地移動至多值度較高之區塊,故而能進一步提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
圖15之流程圖表示由主機2執行之將所生成之程序之類別(用戶程序/系統程序)通知SSD3之處理之步序。
於檢測到主機2中生成新程序之情形時(步驟S81為是),主機2之程序監視部41將所生成之程序之識別碼、及該生成之程序之類別通知SSD3(步驟S82)。
圖16之流程圖表示由主機2及SSD3執行之程序數增減通知處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理正在主機2之處理器12上運行之總程序數之增減(步驟S91)。
若總程序數增加(步驟S92為是),則程序監視部41將表示總程序數增加之通知發送至SSD3(步驟S93)。
另一方面,若總程序數減少(步驟S94為是),則程序監視部41將表示總程序數減少之通知發送至SSD3(步驟S95)。
若SSD3之控制器4自主機2接收到表示總程序數增加之通知(步驟S101為是),則控制器4之主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S102)。於步驟S102中,由主機要求處理部402對資料控制部403指示資料之移動,從而資料控制部403基於圖11之程序資料管理表,優先於藉由系統程序存取之資料(例如,藉由系統程序寫入至NAND快閃記憶體5之資料、或者藉由系統程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)地,選擇藉由用戶程序存取之資料(例如,藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料,並將該被選擇之移動對象資料自多值度較低之區塊移動至多值度較高之區塊。
因此,能於換出發生前,事先確保SLC用空閒區塊,從而能減少換出所需之時間。其結果,能改善電腦系統1整體之性能。
若SSD3之控制器4自主機2接收到表示總程序數減少之通知(步驟S103為是),則控制器4之主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S104)。於步驟S104中,由主機要求處理部402對資料控制部403指示資料之移動,從而資料控制部403基於圖11之程序資料管理表,優先於藉由系統程序存取之資料(例如,藉由系統程序寫入至NAND快閃記憶體5之資料、或者藉由系統程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)地,選擇藉由用戶程序存取之資料(例如,藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料,並將該被選擇之移動對象資料自多值度較低之區塊移動至多值度較高之區塊。藉由該資料之移動,NAND快閃記憶體5之利用效率得到改善。
再者,於步驟S102中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動藉由用戶程序存取之資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
同樣地,於步驟S104中,例如亦可為於TLC區塊之間移動用戶程序之資料(有效資料)。
圖17之流程圖表示由主機2及SSD3執行之總程序數通知處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理正在主機2之處理器12上運行之總程序數(步驟S111)。當總程序數增減,或自上次之通知起經過一定期間等通知條件成立時(步驟S112為是),程序監視部41將表示總程序數之資訊發送至SSD3,而將總程序數通知SSD3(步驟S113)。
SSD3之控制器4自主機2接收表示總程序數之通知(步驟S121)。控制器4之主機要求處理部402將由主機2通知之總程序數與第1閾值加以比較,判定總程序數是否高於第1閾值(步驟S122)。
若總程序數高於第1閾值(步驟S122為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S123)。於步驟S123中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403基於圖11之程序資料管理表,優先於藉由系統程序存取之資料(例如,藉由系統程序寫入至NAND快閃記憶體5之資料、或者藉由系統程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)地,選擇藉由用戶程序存取之資料(例如,藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料,並將該被選擇之移動對象資料自多值度較低之區塊移動至多值度較高之區塊。
因此,能於換出發生前,事先確保SLC用空閒區塊,從而能減少換出所需之時間。其結果,能改善電腦系統1整體之性能。
若總程序數並不高於第1閾值(步驟S122為否),則主機要求處理部402將總程序數與第2閾值(<第1閾值)加以比較,判定總程序數是否低於第2閾值(步驟S124)。
若總程序數低於第2閾值(步驟S124為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S125)。於步驟S125中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403基於圖11之程序資料管理表,優先於藉由系統程序存取之資料(例如,藉由系統程序寫入至NAND快閃記憶體5之資料、或者藉由系統程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)地,選擇藉由用戶程序存取之資料(例如,藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料,並將該被選擇之移動對象資料自多值度較低之區塊移動至多值度較高之區塊。藉由該資料之移動,NAND快閃記憶體5之利用效率得到改善。
再者,於步驟S123中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動藉由用戶程序存取之資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
同樣地,於步驟S125中,例如亦可為於TLC區塊之間移動用戶程序之資料(有效資料)。
又,若由主機2將複數個程序之結束通知SSD3,則SSD3之控制器4亦可自被通知已結束之程序中,優先於藉由類別為系統程序之程序存取之資料地,選擇藉由類別為用戶程序之程序存取之資料作為移動對象資料。
於此種情形時,圖18之流程圖所示之步序將由SSD3之控制器4執行。
若由主機2將複數個程序之結束通知SSD3,則SSD3之控制器4之主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403基於圖11之程序資料管理表,自被通知已結束之程序中,優先於系統程序之資料地,選擇藉由類別為用戶程序之程序存取之資料(藉由用戶程序寫入至NAND快閃記憶體5之資料、或者藉由用戶程序被實施自NAND快閃記憶體5之讀出或向NAND快閃記憶體5之寫入二者之一之資料)作為移動對象資料(步驟S127)。
然後,資料控制部403執行將該移動對象資料移動至多值度相對較高之區塊之處理(步驟S128)。
參照圖15之流程圖、圖16之流程圖、圖17之流程圖及圖18之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。 (第4實施形態)
於第4實施形態中,由主機2將主機2之記憶體13之使用量通知SSD3。於記憶體13之使用量高於第3閾值之情形時,SSD3之控制器4進行資料之移動以備換出所用。該資料之移動係GC之一種形態。
又,亦可為:於記憶體13之使用量低於比第3閾值小之第4閾值之情形時,SSD3之控制器4同樣進行資料之移動。該資料之移動亦係GC之一種形態。於記憶體13之使用量較少時,不易發生換出,因此來自主機2之資料之寫入量相對較少。因此,藉由於記憶體13之使用量較少時進行資料之移動,能不引起立於主機2之角度而視之SSD3之資料寫入性能降低地,例如事先增加SLC之空閒區塊。
再者,主機2之記憶體13之使用量可由記憶體13之總使用量表示,亦可由記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率表示。
又,第4實施形態中之SSD3之硬體構成及主機2之硬體構成與第1實施形態之SSD3及主機2相同,主機2之內部構成與圖10中所說明之內部構成相同。
如上所述,主機2之程序監視部41知道分配給正在主機2上運行之程序之儲存區域之尺寸。因此,程序監視部41將主機2之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)通知SSD3。SSD3接收與主機2之記憶體13之使用量相關之資訊,並進行以下處理。
於主機2之記憶體13之使用量多於第3閾值之情形時,SSD3之控制器4使多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊。主機2之記憶體使用量變多表示於不久之將來進行程序之換出之可能性較高。因此,藉由預先創造出較低多值度用空閒區塊,能以更短之時間進行程序之換出及換入。藉此,能進一步提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
又,於主機2之記憶體13之使用量少於第4閾值(<第3閾值)之情形時,SSD3之控制器4使多值度較低之區塊中所記錄之資料移動至多值度相對較高之區塊。主機2之記憶體使用量較少表示於不久之將來較少對SSD3進行存取之可能性較高。因此,藉由創造出較低多值度用空閒區塊,能改善NAND快閃記憶體5之利用效率。
關於為了創造出空閒區塊而進行之將哪個程序之資料作為移動對象之判斷,例如可採用與此前所說明之各實施形態相同之方法進行。
圖19之流程圖表示由主機2及SSD3執行之使用記憶體量通知處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理主機2之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)(步驟S131)。當記憶體13之使用量增減,或自上次之通知起經過一定期間等通知條件成立時(步驟S132為是),程序監視部41將表示主機2之記憶體13之使用量之資訊(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)發送至SSD3,而將主機2之記憶體13之使用量通知SSD3(步驟S133)。
SSD3之控制器4自主機2接收主機2之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)(步驟S141)。控制器4之主機要求處理部402將由主機2通知之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)與第3閾值加以比較,判定記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)是否高於第3閾值(步驟S142)。
若記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)高於第3閾值(步驟S142為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S143)。於步驟S143中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。
若記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)並不高於第3閾值(步驟S142為否),則主機要求處理部402將記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)與第4閾值(<第3閾值)加以比較,判定記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)是否低於第4閾值(步驟S144)。
若記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)低於第4閾值(步驟S144為是),則主機要求處理部402使用資料控制部403,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(步驟S145)。於步驟S145中,由主機要求處理部402對資料控制部403指示資料之移動。然後,資料控制部403將資料自多值度較低之區塊移動至多值度較高之區塊。
再者,於步驟S143中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理(GC之一種形態),但例如亦可為執行於TLC區塊之間移動資料(有效資料)之處理(GC之一種形態)。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
同樣地,於步驟S145中,例如亦可為執行於TLC區塊之間移動資料(有效資料)之處理(GC之一種形態)。
參照圖19之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。 (第5實施形態)
於第5實施形態中,將表示藉由繼而發生之換出自主機2寫入至SSD3之資料量之資訊通知SSD3。例如,於記憶體13之使用量高於第3閾值之情形時,SSD3之控制器4執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,以確保多值度較低之區塊具有與由主機2通知之資料量對應之閒置容量。
主機2之程序監視部41能知道繼而於主機2上進行之換出之對象程序。換出之對象程序例如為最終啟動時刻最早之程序、或分配記憶體尺寸最大之程序。因此,程序監視部41能預測出藉由繼而發生之換出寫入至SSD3之資料量。因此,程序監視部41將被預測為會藉由繼而發生之換出寫入至SSD3之資料量通知SSD3。
收到通知之SSD3之控制器進行資料之移動,以使多值度較低之區塊空出被通知之量之閒置容量。藉此,能縮短換出所花費之時間,從而能進一步提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
關於將哪個程序之資料作為移動對象之判斷,例如可採用與此前所說明之各實施形態相同之方法進行。
圖20之流程圖表示由主機2及SSD3執行之通知藉由換出寫入至SSD3之資料量之處理及資料移動處理之步序。
主機2之程序監視部41推定藉由繼而發生之換出寫入至SSD3之資料量(步驟S151)。然後,程序監視部41將表示該推定出之資料量之資訊發送至SSD3,而將該推定出之資料量通知SSD3(步驟S152)。
SSD3之控制器4自主機2接收該推定出之資料量之通知(步驟S161)。控制器4之主機要求處理部402對資料控制部403指示應該將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊,以確保多值度較低之區塊具有與該推定出之資料量對應之閒置容量。收到該指示之資料控制部403執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,以確保多值度較低之區塊具有與該推定出之資料量對應之閒置容量(步驟S162)。
再者,於步驟S162中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
圖21之流程圖表示由主機2及SSD3執行之通知使用記憶體量/藉由換出寫入至SSD3之資料量之處理及資料移動處理之步序。
主機2之程序監視部41與程序管理部321共同管理主機2之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)。然後,程序監視部41將表示主機2之記憶體13之使用量之資訊、及藉由繼而發生之換出寫入至SSD3之推定資料量通知SSD3(步驟S153)。
SSD3之控制器4自主機2接收主機2之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)、及藉由繼而發生之換出寫入至SSD3之推定資料量(步驟S163)。
控制器4之主機要求處理部402將由主機2通知之記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)與第3閾值加以比較,判定記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)是否高於第3閾值(步驟S164)。
若記憶體13之使用量(記憶體13之總使用量、或記憶體13之總使用量相對於記憶體13之總記憶體尺寸之比率)高於第3閾值(步驟S164為是),則主機要求處理部402對資料控制部403指示應該使用資料控制部403將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊,以確保多值度較低之區塊具有與被通知之推定資料量對應之閒置容量。收到該指示之資料控制部403執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,以確保多值度較低之區塊具有與該推定出之資料量對應之閒置容量(步驟S165)。
再者,於步驟S165中,執行了將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,但例如亦可為於TLC區塊之間移動資料(有效資料)。如上所述,該資料之移動係GC之一種形態。於此種情形時,同樣地,若分配藉由資料之移動所生成之空閒區塊作為SLC用空閒區塊,則能為後續之換出做好準備。
又,由主機2將藉由繼而發生之換出自主機2寫入至SSD3之資料量通知SSD3之處理不僅可應用於第4實施形態,亦可應用於第1實施形態、第2實施形態或第3實施形態。例如,若對第1實施形態應用由主機2將藉由換出自主機2寫入至SSD3之資料量通知SSD3之處理,則亦可為:SSD3之控制器4判定出總程序數高於第1閾值後,將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊,以確保多值度較低之區塊具有與被通知之資料量相當之閒置容量。
又,參照圖20之流程圖及圖21之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。 (第6實施形態)
於第6實施形態中,主機2之程序監視部41管理著各程式被啟動之頻度及該等程式之清單。程序監視部41將表示啟動頻度較高之程式之資訊通知SSD3。某程式之啟動頻度例如可由該程式於某基準期間內被啟動之次數、或於自主機2之OS32之啟動至結束為止之期間內該程式被啟動之次數等表示。亦可檢測出於基準期間內被啟動之次數(或於自OS32之啟動至結束為止之期間被啟動之次數)高於某閾值之程式作為啟動頻度較高之程式。
SSD3之控制器4執行將藉由與由主機2通知之啟動頻度較高之程式對應之程序讀出或寫入之資料自多值度較高之區塊移動至多值度相對較低之區塊之處理。藉此,能縮短啟動該程式所需之時間,從而能高速地啟動該程式。
執行將啟動頻度較高之程式之資料移動至多值度相對較低之區塊之處理之時機並不限定於此,例如,可為判定出由主機2通知之總程序數低於第2閾值後,亦可為被主機2通知總程序數減少後,或可為判定出主機記憶體之使用量低於第4閾值後。
又,SSD3之控制器4使多值度較低之區塊之資料移動至多值度較高之區塊時,亦可優先選擇啟動頻度較低之程式之資料作為移動對象資料。
再者,第6實施形態中之SSD3之硬體構成及主機2之硬體構成與第1實施形態之SSD3及主機2相同,主機2之內部構成與圖10中所說明之內部構成相同。
以下,對第6實施形態之資料移動處理具體地進行說明。
如上所述,主機2之程序監視部41管理著正在主機2上運行之程序與哪個程式對應。程式反覆啟動及結束,每次啟動及結束均會生成、廢除程序。
於程序之識別碼中,關於程序ID,每次生成程序均會被分配不同之數值,但對應之程式、例如程式名相同。因此,程序監視部41藉由預先記錄所生成之程序與哪個程式對應,能知道被頻繁啟動之程式。因此,程序監視部41將被頻繁啟動之程式、即啟動頻度較高之程式通知SSD3。
SSD3之控制器4使用圖11之程序資料管理表,管理所生成之各程序之識別碼、以及與藉由所生成之各程序讀出或寫入之資料對應之位址範圍等幾者之間之對應關係。進而,SSD3之控制器4對照各程序識別碼與哪個程式對應,而將其等記錄至圖11之程序資料管理表中。然後,控制器4選擇與由程序監視部41通知之被頻繁啟動之程式對應之程序所存取(讀出或寫入)之資料作為移動對象資料,並將該移動對象資料自多值度較高之區塊移動至多值度相對較低之區塊。藉此,能將被用戶或系統頻繁啟動之程式之資料集中於多值度較低之區塊,從而能進一步提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
又,於選擇其他各實施形態中所說明之資料移動處理對象之程序時,控制器4亦可不選擇由程序監視部41通知之被頻繁啟動之程式作為應該自多值度較低之區塊移動至多值度較高之區塊之移動對象資料。例如亦可為:判定出於主機2上運行之總程序數高於第1閾值後,或判定出主機2之記憶體13之使用量高於第4閾值後,控制器4基於圖11之程序資料管理表,自與除由主機2通知之啟動頻度較高之程式以外之其他程式對應之程序當中,選擇應該移動資料之程序,然後使藉由該被選擇之程序讀出或寫入之資料自多值度較低之區塊移動至多值度較高之區塊。
藉此,用戶或系統頻繁啟動之程式之資料記錄於多值度較低之區塊中之狀態得以維持,故而能進一步提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。
圖22之流程圖表示由主機2及SSD3執行之通知被頻繁啟動之程式之處理及資料移動處理之步序。
主機2之程序監視部41檢測被頻繁啟動之程式(步驟S171)。程序監視部41將表示所檢測出之程式、即啟動頻度較高之程式之資訊發送至SSD3,而將啟動頻度較高之程式通知SSD3(步驟S172)。
SSD3之控制器4自主機2接收表示啟動頻度較高之程式之資訊。然後,控制器4之主機要求處理部402對資料控制部403指示應該將藉由啟動頻度較高之程式存取之資料移動至多值度相對較低之區塊。收到該指示之資料控制部403基於圖11之程序資料管理表,執行將藉由與由主機2通知之啟動頻度較高之程式對應之程序讀出或寫入之資料自多值度較高之區塊移動至多值度相對較低之區塊之處理(步驟S173)。
參照圖22之流程圖說明之主機2之處理係由構成為執行主機軟體(記憶體驅動器31、作業系統(OS)32、檔案系統33、程序監視部41等)之處理器12執行。
綜合以上說明,根據本第1實施形態〜第6實施形態,由主機2將與主機2之內部狀態相關之資訊(總程序數、總程序數之增加或減少、所生成之各程序之識別碼、所生成之各程序之類別、被結束之程序之識別碼、被賦予要求起源程序之識別碼之讀出/寫入要求、主機記憶體之使用量、藉由繼而發生之換出寫入至SSD3之資料量、被頻繁地啟動之程式等)通知SSD3,而基於該資訊,控制多值水準互不相同之區塊之間之資料移動或用於GC之資料移動等SSD3之內部動作。
藉由如此地將主機2之狀態變化用於SSD3之內部控制,能提高立於主機2之角度而視之SSD3之性能、乃至立於用戶之角度而視之SSD3之性能。又,能謀求SSD3內部之NAND快閃記憶體5之利用效率之改善。
再者,此處,將通知主機2之內部狀態之處理、及基於由主機2通知之內部狀態之資料移動處理於第1實施形態〜第6實施形態中各自分開進行了說明,但該等實施形態之處理可適當組合而使用。又,亦可利用兼具第1實施形態〜第6實施形態中任意2個以上實施形態之構成之構成。
又,關於對SSD3實施之主機2之狀態之通知,可採用依照各種各樣之標準規格之方法進行,亦可採用標準規格以外之方法進行。
對本發明之若干實施形態進行了說明,但該等實施形態僅作為示例而提出,並非意圖限定發明之範圍。該等新穎之實施形態能以其他各種各樣之形態加以實施,於不脫離發明主旨之範圍內,可進行各種省略、替換、變更。該等實施形態及其等之變形包含於發明之範圍及主旨中,並且包含於申請專利範圍所記載之發明及其等同之範圍內。 [相關申請]
本申請享有以日本專利申請2018-54918號(申請日:2018年3月22日)為基礎申請之優先權。本申請藉由參照該基礎申請而包含基礎申請之全部內容。
1‧‧‧電腦系統
2‧‧‧主機
3‧‧‧SSD(儲存裝置)
4‧‧‧控制器
5‧‧‧NAND快閃記憶體
10‧‧‧匯流排
11‧‧‧主機記憶體控制器
12‧‧‧處理器
13‧‧‧記憶體
14‧‧‧網路介面
15‧‧‧顯示器介面
20‧‧‧信號線
31‧‧‧記憶體驅動器
32‧‧‧作業系統
33‧‧‧檔案系統
34‧‧‧用戶程序
35‧‧‧系統程序
41‧‧‧程序監視部
42‧‧‧過濾器驅動器
321‧‧‧程序管理部
322‧‧‧記憶體管理部
323‧‧‧裝置管理部
401‧‧‧介面控制器
402‧‧‧主機要求處理部
403‧‧‧資料控制部
404‧‧‧緩衝記憶體
405‧‧‧直接記憶體存取控制器
406‧‧‧錯誤校正碼處理部
407‧‧‧反及介面控制器
BLK0~BLK(j-1)‧‧‧區塊
P0~P(k-1)‧‧‧頁
圖1係表示包含第1實施形態之儲存裝置之電腦系統之構成例之方塊圖。 圖2係表示主機(主機電腦)之內部構成例之方塊圖。 圖3係表示第1實施形態之儲存裝置之構成例之方塊圖。 圖4係表示第1實施形態之儲存裝置內所設置之非揮發性記憶體之構成例之圖。 圖5係表示被第1實施形態之儲存裝置使用之用以管理非揮發性記憶體之使用狀況之表格之例之圖。 圖6係表示包含程序監視部之主機之內部構成例之方塊圖。 圖7係表示被主機之程序監視部使用之管理表之例之圖。 圖8係表示由主機及第1實施形態之儲存裝置執行之總程序數通知處理及資料移動處理之步序之流程圖。 圖9係表示由主機及第1實施形態之儲存裝置執行之程序數增減通知處理及資料移動處理之步序之流程圖。 圖10係表示與第2實施形態之儲存裝置對應之主機之內部構成例之方塊圖。 圖11係表示由第2實施形態之儲存裝置創建之管理表之例之圖。 圖12係表示由主機及第2實施形態之儲存裝置執行之資料讀出/寫入處理之步序之流程圖。 圖13係表示對應於程序之結束而由主機及第2實施形態之儲存裝置執行之程序識別碼通知處理及資料移動處理之步序之流程圖。 圖14係表示於總程序數超過閾值之情形時、或接收到程序數增加之通知之情形時由第2實施形態之儲存裝置執行之資料移動處理之步序之流程圖。 圖15係表示由主機執行之將所生成之程序之類別(用戶程序/系統程序)通知儲存裝置之處理之步序之流程圖。 圖16係表示由主機及第3實施形態之儲存裝置執行之程序數增減通知處理及資料移動處理之步序之流程圖。 圖17係表示由主機及第3實施形態之儲存裝置執行之總程序數通知處理及資料移動處理之步序之流程圖。 圖18係表示由第3實施形態之儲存裝置執行之於被結束之程序中優先移動用戶程序之資料之處理之步序之流程圖。 圖19係表示由主機及第4實施形態之儲存裝置執行之使用記憶體量通知處理及資料移動處理之步序之流程圖。 圖20係表示由主機及第5實施形態之儲存裝置執行之通知藉由換出寫入至儲存裝置之資料量之處理及資料移動處理之步序之流程圖。 圖21係表示由主機及第5實施形態之儲存裝置執行之通知使用記憶體量/藉由換出寫入至儲存裝置之資料量之處理及資料移動處理之步序之流程圖。 圖22係表示由主機及第6實施形態之儲存裝置執行之通知被頻繁啟動之程式之處理及資料移動處理之步序之流程圖。

Claims (18)

  1. 一種儲存裝置,其能連接於主機,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成; 上述控制器構成為, 自上述主機接收表示正在上述主機上運行之總程序數之資訊, 判定出上述總程序數高於第1閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。
  2. 如請求項1之儲存裝置,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,判定出上述總程序數高於上述第1閾值後,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理。
  3. 如請求項1之儲存裝置,其中上述控制器構成為, 自上述主機接收表示上述主機中所生成之各程序之識別碼及表示上述生成之各程序為系統程序還是為用戶程序之類別之資訊、以及各自被賦予要求寫入資料之程序之識別碼之各寫入要求, 使用第1管理表,管理上述生成之各程序之識別碼、上述生成之各程序之類別、及與藉由上述生成之各程序寫入之資料對應之位址範圍幾者之間之對應關係, 判定出上述總程序數高於上述第1閾值後,基於上述第1管理表,優先於藉由類別為上述系統程序之程序寫入至上述非揮發性記憶體之資料地,選擇藉由類別為上述用戶程序之程序寫入至上述非揮發性記憶體之資料作為移動對象資料,並執行將上述移動對象資料自儲存有上述移動對象資料之區塊移動至其他區塊之處理。
  4. 如請求項3之儲存裝置,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,執行將上述移動對象資料自多值度較低之區塊移動至多值度相對較高之區塊之處理。
  5. 一種儲存裝置,其能連接於主機,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成; 上述控制器構成為, 自上述主機接收表示上述主機中所生成之各程序之識別碼之資訊、及各自被賦予要求寫入資料之程序之識別碼之各寫入要求, 使用第1表,管理上述生成之各程序之識別碼、及與藉由上述生成之各程序寫入之資料對應之位址範圍兩者之間之對應關係, 自上述主機接收到表示已結束之程序之識別碼之資訊後,基於上述第1表,執行將藉由上述已結束之程序寫入至上述非揮發性記憶體之第1資料自儲存有上述第1資料之區塊移動至其他區塊之處理。
  6. 如請求項5之儲存裝置,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,執行將藉由上述已結束之程序寫入至上述非揮發性記憶體之上述第1資料自多值度較低之區塊移動至多值度相對較高之區塊之處理。
  7. 一種儲存裝置,其能連接於主機,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成; 上述控制器構成為, 自上述主機接收表示上述主機之記憶體之使用量之資訊, 判定出上述主機之記憶體之使用量高於第3閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。
  8. 如請求項7之儲存裝置,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,判定出上述主機之記憶體之使用量高於上述第3閾值後,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理。
  9. 如請求項7之儲存裝置,其中上述控制器構成為, 自上述主機接收表示藉由繼而發生之程序之換出而寫入至上述儲存裝置之資料量之資訊, 判定出上述主機之記憶體之使用量高於上述第3閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理,以確保與上述接收到之資訊所示之資料量對應之閒置容量。
  10. 如請求項7之儲存裝置,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為, 自上述主機接收表示藉由繼而發生之程序之換出而寫入至上述儲存裝置之資料量之資訊, 判定出上述主機之記憶體之使用量高於上述第3閾值後,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理,以確保多值度較低之區塊具有與上述接收到之資訊所示之資料量對應之閒置容量。
  11. 一種儲存裝置,其能連接於主機,且具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成; 上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為, 自上述主機接收表示上述主機中所生成之各程序之識別碼之資訊、各自被賦予要求讀出或寫入資料之程序之識別碼之各讀出/寫入要求、及表示啟動頻度較高之程式之資訊, 使用第1管理表,管理上述生成之各程序之識別碼、及與藉由上述生成之各程序讀出或寫入之資料對應之位址範圍兩者之間之對應關係, 基於上述第1管理表,執行將藉由與上述啟動頻度較高之程式對應之程序讀出或寫入之資料自多值度較高之區塊移動至多值度相對較低之區塊之處理。
  12. 一種電腦系統,其具備包含處理器及記憶體之電腦、以及儲存裝置,且 上述處理器構成為,執行將正在上述處理器上運行之總程序數通知上述儲存裝置之處理, 上述儲存裝置具備: 非揮發性記憶體,其包含複數個區塊;及 控制器,其以電性連接於上述非揮發性記憶體,而控制上述非揮發性記憶體之方式構成;且 上述控制器構成為, 判定出由上述電腦通知之上述總程序數高於第1閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。
  13. 如請求項12之電腦系統,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,判定出上述總程序數高於上述第1閾值後,執行將多值度較低之區塊中所儲存之資料移動至多值度相對較高之區塊之處理。
  14. 如請求項12之電腦系統,其中上述處理器構成為,將上述電腦中所生成之各程序之識別碼及表示上述生成之各程序為系統程序還是為用戶程序之類別之資訊、以及各自被賦予要求寫入資料之程序之識別碼之各寫入要求發送至上述儲存裝置;且 上述控制器構成為, 使用第1管理表,管理上述生成之各程序之識別碼、上述生成之各程序之類別、及與藉由上述生成之各程序寫入之資料對應之位址範圍幾者之間之對應關係, 判定出上述總程序數高於上述第1閾值後,基於上述第1管理表,優先於藉由類別為上述系統程序之程序寫入至上述非揮發性記憶體之資料地,選擇藉由類別為用戶程序之程序寫入至上述非揮發性記憶體之資料作為移動對象資料,並執行將上述移動對象資料自儲存有上述移動對象資料之區塊移動至其他區塊之處理。
  15. 如請求項14之電腦系統,其中上述複數個區塊各自被選擇性地用作表示一個儲存單元中所儲存之位元數之多值度互不相同之多種區塊中之任一種,且 上述控制器構成為,執行將上述移動對象資料自多值度較低之區塊移動至多值度相對較高之區塊之處理。
  16. 如請求項12之電腦系統,其中上述處理器構成為,將上述電腦之上述記憶體之使用量通知上述儲存裝置,且 上述控制器構成為,判定出上述電腦之上述記憶體之使用量高於第3閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理。
  17. 如請求項16之電腦系統,其中上述處理器構成為,將藉由繼而發生之程序之換出寫入至上述儲存裝置之資料量通知上述儲存裝置,且 上述電腦系統構成為,判定出上述電腦之上述記憶體之使用量高於上述第3閾值後,執行將上述非揮發性記憶體之至少一個區塊中所儲存之資料移動至上述非揮發性記憶體之其他至少一個區塊之處理,以確保與上述被通知之資料量對應之閒置容量。
  18. 如請求項12之電腦系統,其中上述處理器構成為執行如下處理:將上述電腦中所生成之各程序之識別碼通知上述儲存裝置;將各自被賦予要求讀出或寫入資料之程序之識別碼之各讀出/寫入要求發送至上述儲存裝置;及將啟動頻度較高之程式通知上述儲存裝置;且 上述控制器構成為, 使用第1管理表,管理上述生成之各程序之識別碼、及與藉由上述生成之各程序讀出或寫入之資料對應之位址範圍兩者之間之對應關係, 基於上述第1管理表,執行將藉由與上述啟動頻度較高之程式對應之程序讀出或寫入之資料自多值度較高之區塊移動至多值度相對較低之區塊之處理。
TW107123304A 2018-03-22 2018-07-05 儲存裝置及電腦系統 TWI682279B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018-054918 2018-03-22
JP2018054918A JP6968016B2 (ja) 2018-03-22 2018-03-22 ストレージデバイスおよびコンピュータシステム

Publications (2)

Publication Number Publication Date
TW201941060A true TW201941060A (zh) 2019-10-16
TWI682279B TWI682279B (zh) 2020-01-11

Family

ID=67983633

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107123304A TWI682279B (zh) 2018-03-22 2018-07-05 儲存裝置及電腦系統

Country Status (5)

Country Link
US (2) US10871920B2 (zh)
JP (1) JP6968016B2 (zh)
KR (1) KR102094236B1 (zh)
CN (1) CN110297780B (zh)
TW (1) TWI682279B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN113590509B (zh) * 2020-04-30 2024-03-26 华为技术有限公司 一种页交换的方法、存储系统和电子设备
JP7490469B2 (ja) 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US11907539B2 (en) * 2020-11-20 2024-02-20 Samsung Electronics Co., Ltd. System and method for stream based data placement on hybrid SSD
CN112559392B (zh) * 2020-12-23 2023-08-15 深圳大普微电子科技有限公司 一种加速读存储介质的方法、读加速硬件模块及存储器
US20220374216A1 (en) * 2021-05-20 2022-11-24 Lenovo (United States) Inc. Method of manufacturing information processing apparatus and mobile computer
CN113504994B (zh) * 2021-07-26 2022-05-10 上海遁一信息科技有限公司 一种内存池性能弹性伸缩的实现方法及系统
CN114201233A (zh) * 2021-11-18 2022-03-18 成都网思科平科技有限公司 一种基于快照参照的减少进程模块加载数据存储的方法
US11977739B2 (en) 2022-09-01 2024-05-07 Western Digital Technologies, Inc. Handling write data burst for improved performance and resource usage
US11960742B1 (en) * 2022-10-14 2024-04-16 Oracle International Corporation High-performance, block-level fail atomicity on byte-level non-volatile media

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7594128B2 (en) * 2004-08-04 2009-09-22 Hewlett-Packard Development Company, L.P. Systems and methods to determine processor utilization
JP4805696B2 (ja) 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
JP2008152464A (ja) 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US8627029B2 (en) * 2007-03-08 2014-01-07 Sandisk Il Ltd. Methods for managing files according to application
TW200841343A (en) * 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
KR101085393B1 (ko) * 2008-12-24 2011-11-21 주식회사 코아로직 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치
JP2010266962A (ja) * 2009-05-12 2010-11-25 Toshiba Storage Device Corp 記憶装置、その制御方法及びその記憶装置を備える電子装置
US8402214B2 (en) * 2009-09-16 2013-03-19 Hitachi, Ltd. Dynamic page reallocation storage system management
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
CN102473136B (zh) * 2010-05-31 2014-12-31 松下电器(美国)知识产权公司 存储器管理装置、存储器管理方法以及集成电路
JP2012033002A (ja) 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
TWI471862B (zh) 2011-08-19 2015-02-01 Silicon Motion Inc 快閃記憶體控制器
US20170017406A1 (en) * 2015-07-14 2017-01-19 HGST Netherlands B.V. Systems and methods for improving flash-oriented file system garbage collection
US9916248B2 (en) * 2013-12-12 2018-03-13 Hitachi, Ltd. Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
US9678797B2 (en) * 2014-03-10 2017-06-13 Microsoft Technology Licensing, Llc Dynamic resource management for multi-process applications
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US10452280B2 (en) * 2014-10-03 2019-10-22 International Business Machines Corporation Hybrid storage system employing reconfigurable memory
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) * 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
TWI672706B (zh) * 2015-12-14 2019-09-21 南韓商愛思開海力士有限公司 記憶體儲存裝置及其操作方法
KR102259868B1 (ko) * 2015-12-17 2021-06-01 에스케이텔레콤 주식회사 메모리제어장치 및 메모리제어장치의 동작 방법
US11169707B2 (en) * 2016-01-22 2021-11-09 Netapp, Inc. Garbage collection pacing in a storage system
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US20170249092A1 (en) * 2016-02-25 2017-08-31 Canon Kabushiki Kaisha Apparatus having volatile memory, memory control method, and storage medium
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
KR102550343B1 (ko) 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
TWI615710B (zh) * 2016-12-14 2018-02-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
TWI602061B (zh) * 2017-03-16 2017-10-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置與記憶體控制電路單元
TWI615711B (zh) * 2017-03-28 2018-02-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10496297B2 (en) * 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
US10713158B2 (en) * 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring

Also Published As

Publication number Publication date
CN110297780A (zh) 2019-10-01
US20210072923A1 (en) 2021-03-11
KR102094236B1 (ko) 2020-04-23
US10871920B2 (en) 2020-12-22
KR20190111714A (ko) 2019-10-02
US20190294365A1 (en) 2019-09-26
CN110297780B (zh) 2023-08-25
JP2019168822A (ja) 2019-10-03
TWI682279B (zh) 2020-01-11
JP6968016B2 (ja) 2021-11-17

Similar Documents

Publication Publication Date Title
TWI682279B (zh) 儲存裝置及電腦系統
US10185656B2 (en) Memory system and method for controlling nonvolatile memory
US20220414002A1 (en) Memory system and method for controlling nonvolatile memory
JP6414853B2 (ja) メモリシステムおよび制御方法
US10761731B2 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
JP2020046963A (ja) メモリシステムおよび制御方法
KR102663661B1 (ko) 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
JP2018049522A (ja) メモリシステム及び制御方法
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
TW201941061A (zh) 電子機器及其控制方法、電腦系統及其控制方法以及主機之控制方法
JP2020123040A (ja) メモリシステムおよび制御方法
JP2019148913A (ja) メモリシステム
JP2018160189A (ja) メモリシステム
CN110908595B (zh) 存储装置及信息处理系统
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
JP6721765B2 (ja) メモリシステムおよび制御方法
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
JP6666405B2 (ja) メモリシステムおよび制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法
KR20230166803A (ko) 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법
CN117149052A (zh) 提供高清除性能的存储设备及其存储块管理方法
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법