JP2019175292A - 電子機器、コンピュータシステム、および制御方法 - Google Patents
電子機器、コンピュータシステム、および制御方法 Download PDFInfo
- Publication number
- JP2019175292A JP2019175292A JP2018065039A JP2018065039A JP2019175292A JP 2019175292 A JP2019175292 A JP 2019175292A JP 2018065039 A JP2018065039 A JP 2018065039A JP 2018065039 A JP2018065039 A JP 2018065039A JP 2019175292 A JP2019175292 A JP 2019175292A
- Authority
- JP
- Japan
- Prior art keywords
- command
- commands
- host
- storage device
- ssd
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 103
- 238000012545 processing Methods 0.000 claims abstract description 111
- 238000003860 storage Methods 0.000 claims description 77
- 230000008569 process Effects 0.000 claims description 53
- 230000004044 response Effects 0.000 description 36
- 230000007704 transition Effects 0.000 description 32
- 241001522296 Erithacus rubecula Species 0.000 description 16
- 238000013403 standard screening design Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 230000010365 information processing Effects 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】 状況に応じてコマンドをスケジューリングしながら消費電力を削減できる電子機器を実現する。【解決手段】 実施形態によれば、電子機器は、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、ホストにより発行された複数のコマンドを並列に処理可能なコントローラとを具備する。前記コントローラは、前記ホストによって、処理されるべきデッドライン時間がそれぞれ指定された一つ以上のコマンドが発行された場合、前記デッドライン時間に基づいて、前記一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式を決定し、前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行するように構成される。【選択図】図2
Description
本発明の実施形態は、不揮発性メモリを備える電子機器、コンピュータシステム、およびその制御方法に関する。
近年、不揮発性メモリを備えるストレージが広く普及している。
このようなストレージの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
現状のSSDは、ホストからのコマンド要求を常に全力(ベスト・エフォート)で処理し、応答する。全力とは、例えば、リードやライト等のホスト(PC)からストレージデバイス(SSD)への複数の要求コマンドがある場合に、要求された全てのコマンドを順番に処理しデータの読み書きを行い、処理完了を通知する、までの一連の処理をホストからのコマンド要求がなくなるまで可能な限り速く行うことを意味する。
電池で駆動するポータブルPCに搭載されるSSDでは、SSDを低消費電力状態に移行させることが重要である。このようなSSDは、コマンドキューに投入された全てのコマンドを処理した後、しばらく(例えば、数秒間)何ら処理が行われない状態が経過した後に低消費電力状態に入ることが一般的である。
実際のユースケースでは、特にコンシューマ向けSSDにおいて、SSDが全力で動作する必要がない場合も想定される。そのため、状況に応じたコマンドのスケジューリングで消費電力を削減できる新たな機能の実現が必要とされる。
本発明が解決しようとする課題は、状況に応じてコマンドをスケジューリングしながら消費電力を削減できる電子機器、コンピュータシステム、および制御方法を提供することである。
実施形態によれば、電子機器は、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、ホストにより発行された複数のコマンドを並列に処理可能なコントローラとを具備する。前記コントローラは、前記ホストによって、処理されるべきデッドライン時間がそれぞれ指定された一つ以上のコマンドが発行された場合、前記デッドライン時間に基づいて、前記一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式を決定し、前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行するように構成される。
以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、実施形態に係るコンピュータシステム1の構成を説明する。
コンピュータシステム1は、ホスト(ホストデバイス)2と、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された一つ以上の半導体ストレージデバイスとを含む。
ホスト2は、半導体ストレージデバイスにアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータを半導体ストレージデバイスに保存するサーバ(ストレージサーバ)であってもよいし、パーソナルコンピュータであってもよい。半導体ストレージデバイスは、例えば、NAND型フラッシュメモリを備えたソリッドステートドライブ(SSD)3として実現されている。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)、Universel Flash Storage(UFS)、エンベデッドマルチメディアカード(eMMC(登録商標))等が使用され得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。SSD3は、揮発性メモリであるランダムアクセスメモリ、例えば、DRAM6を備えていてもよい。あるいは、SRAMのようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。
DRAM6等のランダムアクセスメモリには、例えば、NAND型フラッシュメモリ5から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ(RB)61と、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ(WB)62およびGCバッファ63と、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)64のキャッシュ領域とが設けられている。さらに、DRAM6等のランダムアクセスメモリには、処理中に用いられる各種の情報の格納領域が設けられてもよい。なお、DRAM6は、コントローラ4の内部に設けられていてもよい。LUT64は、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現されている。
コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、複数のチャンネルを介して、NAND型フラッシュメモリ5内の複数のチップにそれぞれ接続されていてもよい。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去(イレーズ)動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス(LBA)が使用される。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するLUT64を用いて実行される。コントローラ4は、LUT64を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。LUT64は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
1つのページへのデータ書き込みは、1つのP/Eサイクル当たり1回のみ可能である。このため、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、LUT64を更新してこのLBAをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、LUT64から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション(GC)、等が含まれる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14等を含んでもよい。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンド、等を受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド、アンマップコマンド(トリムコマンド)、フォーマットコマンド、フラッシュコマンド等が含まれ得る。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAMコントローラとして機能する。DRAM6の記憶領域は、リードバッファ(RB)61、ライトバッファ(WB)62、GCバッファ63、LUT64等を格納するために利用される。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションレイヤ41、オペレーティングシステム(OS)42、デバイスドライバ(ミドルウェア)43等が含まれる。
一般に知られているように、OS42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
デバイスドライバ43は、SSD3へのアクセスのためのソフトウェアである。デバイスドライバ43は、ファイル操作(作成、保存、更新、削除等)のための制御を行うファイルシステムと連携して使用されてもよい。例えば、ZFS、Btrfs、XFS、ext4、NTFS等がファイルシステムとして使用される。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System(例えば、Rocks DB)がファイルシステムとして使用されてもよい。
様々なアプリケーションソフトウェアスレッドがアプリケーションレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションレイヤ41がリードコマンドまたはライトコマンドのようなリクエストをSSD3に対して発行することが必要な時、アプリケーションレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをデバイスドライバ43に送出する。デバイスドライバ43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。デバイスドライバ43は、コマンドを、SSD3に対して発行する。SSD3からのレスポンスが受信された際、デバイスドライバ43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションレイヤ41に送出する。
ホスト2には、SSD3に対して発行されるコマンドが投入されるキュー30が設けられる。キュー30は、例えば、一つ以上のサブミッションキュー31と、一つ以上のコンプリーションキュー32とを含む。サブミッションキュー31は、特定のスロットサイズを有し、ホスト2(ホストソフトウェア)が、SSD3のコントローラ4によって実行されるコマンドを発行(投入)するために用いられる命令キューである。コンプリーションキュー32は、特定のスロットサイズを有し、完了したコマンドに関するステータスを通知するために用いられる応答キューである。
デバイスドライバ43はコマンド発行部431を備える。コマンド発行部431は、OS42(アプリケーションレイヤ41)からのリクエストを受け付けた場合、このリクエストに対応するコマンドがSSD3において処理されるべきデッドライン時間を決定する。そして、コマンド発行部431は、そのデッドライン時間を指定したコマンドを発行し、サブミッションキュー31に投入する。
コマンド発行部431は、例えば、SSD3を全力で動作させる必要がない場合には、ホスト2がSSD3に対して要求する適切な性能(例えば、リード性能、ライト性能等)、速度(例えば、リード速度、ライト速度等)、タイミング(例えば、リード時間、ライト時間等)の少なくともいずれかに基づいて、デッドライン時間を決定する。SSD3では、指定されたデッドライン時間に基づいてコマンドを適切にスケジューリングすることにより、省電力化およびQoS向上(例えば、適切なリソース配分)の効果を得ることができる。
また、SSD3に設けられるコントローラ4内のCPU12は、リード制御部121、ライト制御部122、GC制御部123、およびアービトレーション制御部124として機能することができる。
リード制御部121は、論理アドレス(LBA)に対応するLUT64のエントリに基づいて、LBAに対応する物理アドレスを求め、NAND型フラッシュメモリ5からリードコマンドに応じたデータを読み出す。
ライト制御部122は、ライトコマンドに応じてホスト2から受信されたユーザデータを、DRAM6上のライトバッファ62に蓄積する。そして、ライト制御部122は、ライトバッファ62内にNAND型フラッシュメモリ5の書き込み単位分のユーザデータが蓄積されたならば、NAND型フラッシュメモリ5のチップ(チップのデータラッチ)にその書き込み単位分のユーザデータを転送する。ライト制御部122は、ライトバッファ62内の、転送されたユーザデータが蓄積されていた領域を解放する。
次いで、ライト制御部122は、NAND型フラッシュメモリ5のチップにプログラムを指示する。すなわち、ライト制御部122は、NAND型フラッシュメモリ5のチップにプログラムコマンドを送ることにより、当該チップに対して、転送されたユーザデータを書き込み先ブロックにプログラムさせる。チップ内のメモリセルアレイは複数のブロックを含んでいる。ブロックは、有効データを格納していて、新たにデータを書き込むことができないブロック(アクティブブロック)と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。1つ以上のフリーブロックから、1個が選択され、イレーズ処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
GC制御部123も、GCバッファ63を用いて、上述したようなライト制御部122による書き込み動作と同様にして、NAND型フラッシュメモリ5への書き込みを行うことができる。GC制御部123は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック(GCソースブロック)を選択し、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック(GCデスティネーションブロック)に書き込む。
また、アービトレーション制御部124は、サブミッションキュー31内のエントリ、すなわち、コマンドを任意の順序でフェッチすることができる。SSD3内の各部は、フェッチされたコマンドに応じて動作する。例えば、フェッチされたリードコマンドに応じて、リード制御部121によるリード処理が行われ、またフェッチされたライトコマンドに応じて、ライト制御部122によるライト処理が行われる。
初期のATA HDD(Parallel ATA)では1個のコマンドの処理が完了するまで次のコマンドを送出することができなかったが、SATA(Serial ATA) HDD/SSD規格におけるコマンドキューイング規格の拡張で一つのコマンドキューに対して複数個のコマンドをインオーダー要求することが可能になった。さらに、NVMe規格では複数個のコマンドキューに対して複数個のコマンドをアウトオブオーダー要求することができるように拡張された。NVMe規格上は、コマンドキュー(サブミッション)の個数は64K個まで、1個のコマンドキューにおいて要求できるコマンドの数は64K個まで、定義可能である。
市場に流通しているSSDおよびWindows(登録商標)10等のOSでは、例えば、1個あたり1KエントリのコマンドキューがCPUの個数分(例えば、8個)だけ作成される。この場合、最大で1K×8個=8Kコマンドを同時に発行できることになるが、数千個以上のコマンドを受け取ったSSDは、無数ある処理の順列(組み合わせ)から任意の順番でコマンドを処理可能である。限られた演算資源を持つSSDにおいて、最適な処理順番を解くことは困難である。SSDは、例えば、複数個のコマンドキューから数個のコマンドを入れられた順番に単純ラウンド・ロビン(または加重ラウンド・ロビン)で処理していくのが精一杯であり、完全にフェアな順番でコマンドを処理することは困難である。
本実施形態のアービトレーション制御部124は、サブミッションキュー31に格納された各コマンドに指定されたデッドライン時間に基づいて、デッドライン時間が早いコマンドから順に処理(フェッチ)されるように制御することができる。アービトレーション制御部124は、サブミッションキュー31に一つ以上のコマンドが格納されている場合、各コマンドに指定されたデッドライン時間に基づいて、それら一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式(scheduling)を決定する。アービトレーション制御部124は、例えば、一つ以上のコマンドが、各々のデッドライン時間までに処理され、且つできる限りその処理が遅延されるように、スケジューリング方式を決定する。このスケジューリング方式は、コマンドが処理されるタイミングに応じて、SSD3がいずれの電力状態に設定されるかをさらに示してもよい。SSD3が設定され得る電力状態は、例えば、フルスピード動作の電力状態、またはシャロースリープ(Shallow Sleep)もしくはディープスリープの低消費電力状態である。シャロースリープは浅いスリープ状態を示し、ディープスリープは深いスリープ状態を示す。例えば、シャロースリープに設定されたSSD3で消費される電力は、ディープスリープに設定されたSSD3で消費される電力よりも大きい。アービトレーション制御部124は、決定されたスケジューリング方式に従って、一つ以上のコマンドに応じた処理が実行されるように、SSD3内の各部を制御する。
なお、一般的に、SSD3は、リアルタイムクロックを持たないので、その内部で現在の時刻を得ることはできない。NVMe規格には、ホスト2がSSD3(コントローラ4)に現在の時刻を設定することを可能にするオプショナルコマンドであるSetFeaturesコマンドが規定されている。このSetFeaturesコマンドでは、いずれの特徴を設定するかを識別するためのFeature Identifierとして、タイムスタンプを示す“0Eh”が指定される。
SSD3は、通常電力状態である間は、通知された現在時刻を用い、内部タイマをカウントアップすることにより現在時刻を得ることができる。しかし、低消費電力状態で内部タイマも止まる場合には、現在時刻からのカウントアップができないので、低消費電力状態から通常電力状態への遷移時に、毎回、ホスト2からSSD3に現在時刻を通知する必要がある。
以下では、ホスト2とSSD3とが、NVMe規格に基づくインタフェースを介して接続される例を示すが、UFS、SATA、eMMC、SCSI等の他のストレージインタフェースで接続される場合にも同様に適用可能である。
図2を参照して、ホスト2とSSD3のコントローラ4とによるコマンド処理の動作の例についてより具体的に説明する。
まず、ホスト2(コマンド発行部431)は、サブミッションキュー31のエントリ(サブミッションキューエントリ)にコマンドを書き込むときに、そのコマンドの処理を期待する時間を指定する。この「処理を期待する時間」は、コマンドが処理されるべき時間であり、例えば、コマンドの投入発行時刻、SSD3内での処理開始時刻(例えば、サブミッションキュー31からコマンドがフェッチされる時刻)、コマンドに応じたデータの転送が開始される時刻、コマンドに応じたデータの転送が完了する時刻、コマンドに応じた割り込みが通知される時刻のような、コマンドの処理に関する任意の時刻が用いられ得る。以下では、この「処理を期待する時間」を、デッドライン時間とも称する。
ホスト2(コマンド発行部431)は、例えば、アプリケーションレイヤ41からの指示を受けてデッドライン時間を指定する。ホスト2は、例えば、プロセスの優先度、LBAの位置、参照頻度(アクセス頻度)、転送されるデータのサイズ、アプリケーション名、ファイルシステムメタデータ(例えば、NTFSでの$MFT)、SSD3の電源状態等の情報を用いて、デッドライン時間を算出(決定)する。
サブミッションキュー31は、特定のスロットサイズを有し、ホスト2(ホストソフトウェア)が、SSD3のコントローラ4によって実行されるコマンドを発行(投入)するために用いられる。各サブミッションキューエントリは、コマンドに相当する。コマンドは、例えば、64バイトのサイズを有する。つまり、一つのコマンド当たり64バイトのメモリ領域を用いて、ホスト2からSSD3に処理が指示される。
図3は、コンピュータシステム1で用いられるサブミッションキューエントリのフォーマットの例を示す。ここでは、NVMe規格(Revision 1.3)に示されるサブミッションキューエントリのフォーマットを、デッドライン時間に関する情報をさらに指定するように変更する場合について説明する。
ライトコマンドまたはリードコマンドが発行される場合、サブミッションキューエントリにおいて、[3−0]バイト内の[7−0]ビットに対応するOpcode(OPC)フィールドには、ライトを示す“01h”またはリードを示す“02h”が設定されている。
サブミッションキューエントリ内の[15−8]バイトのフィールドは、NVMe規格では空きフィールド(Reserved)であり、本実施形態では、このフィールドをデッドライン時間のタイムスタンプを設定するために用いる。例えば、発行されるコマンドがライトコマンドまたはリードコマンドである場合、このフィールドに、そのライトコマンドまたはリードコマンドが処理されるべきデッドライン時間が設定される。
図4は、8バイトのフィールドに設定されるタイムスタンプのフォーマットの例を示す。図4に示すように、8バイトのフィールドの内の[5−0]バイトに、タイムスタンプが設定される。このタイムスタンプは、例えば、1970年1月1日午前0時(UTC)から経過したミリ秒(ms)単位の秒数で表される。
なお、ホスト2は、サブミッションキュー31に入れられたコマンドの中止を要求するためのアボートコマンドを発行することもできる。アボートコマンドは、例えば、アドミンサブミッションキューに投入され、ベスト・エフォートコマンドとして処理される。アボートコマンドでは、例えば、中止すべきコマンドの識別情報と、そのコマンドが投入されたサブミッションキュー31の識別情報とが特定される。
図2に戻り、コントローラ4は、ホスト2により指定されたデッドライン時間に基づいて、各コマンドの処理の優先度を認識する。そして、コントローラ4は、その優先度に応じて、サブミッションキュー31内のコマンドをスケジューリングする。これにより、例えば、ホスト2内に複数のサブミッションキュー31が設けられる場合に、特定のサブミッションキュー内のコマンドの処理に注力してしまったがために、別のサブミッションキュー内のコマンドの処理が遅れてしまい、ホスト2上のアプリケーションを必要以上に待たせてしまうことを回避することができる。
より具体的には、コントローラ4は、各コマンドに指定されたデッドライン時間に基づいて、サブミッションキュー31から一つのコマンドをフェッチする。コントローラ4は、サブミッションキュー31に格納されている一つ以上のコマンドの各々のデッドライン時間に基づいて、例えば、それら一つ以上のコマンドをそれぞれのデッドライン時間までに処理し、且つSSD3によって消費される電力を低減できるコマンド処理のスケジューリング方式を決定する。このスケジューリング方式は、例えば、各コマンドが実行(フェッチ)されるタイミングを示す。また、このスケジューリング方式では、デッドライン時間に基づいて、例えば、各コマンドに応じた処理の開始をできるだけ遅延させるようにタイミングが決定される。
各コマンドに応じた処理の開始をできるだけ遅延させるスケジューリングにより、例えば、ある動作を途中でキャンセルするユーザ操作等に応じて、サブミッションキュー31に投入済みのコマンドをアボートコマンドの発行によって中止しようとする場合に、その投入済みのコマンドに応じた処理が既に行われている、あるいは既に行われたという状況を回避できる可能性が上がる。これにより、中止されるべき処理に要する電力の分だけ、SSD3の消費電力を削減することができる。
また、ホスト2に複数のサブミッションキュー31(アドミンサブミッションキューおよびI/Oサブミッションキュー)が設けられる場合、NVMe規格では、これらキュー31のアービトレーションアルゴリズムとして、ラウンド・ロビンと、加重ラウンド・ロビンと、ベンダ・スペシフィック・アービトレーションの三種類が規定されている。
図5に示すように、ラウンド・ロビンのアービトレーションでは、複数のサブミッションキュー31が均等な優先度で扱われ、コントローラ4は、ラウンド毎に、各サブミッションキュー31から、特定の数の処理すべき候補コマンドを選択(フェッチ)する。
また、図6に示すように、加重ラウンド・ロビンのアービトレーションでは、三つの優先度のクラスと、三つの優先度のレベルとが規定される。三つの優先度のクラスは、最も高い優先度のアドミンクラス91と、次に高い優先度の緊急(urgent)クラス92と、最も低い優先度の加重ラウンド・ロビンクラス93とで構成される。
アドミンクラス91には、アドミンサブミッションキュー911が割り当てられる。アドミンサブミッションキュー911に発行(投入)されるコマンドは、このアドミンクラス91以外のクラス92,93に割り当てられたサブミッションキューに発行されるコマンドよりも高い優先度を有している。
緊急クラス92に割り当てられたI/Oサブミッションキュー921に発行されるコマンドは、アドミンサブミッションキュー911に発行されたコマンドの後であって、加重ラウンド・ロビンクラス93に割り当てられたI/Oサブミッションキューに発行されるコマンドよりも前に、処理される。なお、緊急クラス92に割り当てられた複数のI/Oサブミッションキュー921の間では、ラウンド・ロビンのアービトレーションが適用される。
加重ラウンド・ロビンクラス93は、加重ラウンド・ロビンアービトレーションを用いて残りのバンド幅を共有する高優先度(High)93H、中優先度(Medium)93M、低優先度(Low)93Lの三つのレベルからなる。各レベル93H,93M,93Lには、それぞれI/Oサブミッションキュー931,932,933が割り当てられる。同一のレベルに割り当てられた複数のI/Oサブミッションキューの間では、ラウンド・ロビンのアービトレーションが適用される。そして、加重ラウンド・ロビンのラウンド毎に、例えば、各レベルから重みに応じた数の候補コマンドが選択される。
このようなラウンド・ロビンおよび加重ラウンド・ロビンのアービトレーションではいずれも、あるサブミッションキューから指定された数のコマンドがフェッチされた後に、フェッチの対象が別のサブミッションキューに移る。そのため、例えば、特定のサブミッションキューに一時的に大量の細かい単位(4KiB)のコマンドが投入された場合に、他のサブミッションキューの要求は待たされてしまうことになる。
NVMe規格のアービトレーション方式で規定されるもう一つのベンダ・スペシフィック・アービトレーションの実装方法は、NVMe規格書のスコープ外であり、ベンダが選択可能なアービトレーション方式である。
本実施形態では、このベンダ・スペシフィック・アービトレーションが用いられるようにSSD3を構成し、このベンダ・スペシフィック・アービトレーションとして、処理すべきデッドライン時間が指定されたコマンドを、デッドライン時間を考慮したスケジューリングに基づくアービトレーションを設定する。このようなスケジューリング方式としては、OSがプロセスの実行順序を動的に決める種々のスケジューリング方式を利用することができ、例えば、デッドライン時間が早いものから処理するEarliest Deadline First(EDF)や、Least Laxity(LL)、Earliest Deadline Zero Laxity(EDZL)、Earliest Deadline Critical Laxity(EDCL)、Least Slack Time(LST)等が挙げられる。
図7は、EDFスケジューリングに基づくアービトレーションの例を示す。ここでは、ホスト2に、四つのサブミッションキュー31−1,31−2,31−3,31−4が設けられていることを想定する。各サブミッションキュー31−1,31−2,31−3,31−4には、それぞれ複数のコマンド351〜362が格納されている。
コントローラ4は、サブミッションキュー31−1,31−2,31−3,31−4に格納されているコマンド351〜362を、指定されたデッドライン時間が早いものから順にフェッチする。図7に示す例では、コントローラ4は、デッドライン時間が5ミリ秒であるコマンド351、デッドライン時間が8ミリ秒であるコマンド361、デッドライン時間が10ミリ秒であるコマンド352、デッドライン時間が15ミリ秒であるコマンド357、……のように、デッドライン時間が早いものから順にコマンドをフェッチしている。
このようなEDFスケジューリングに基づくアービトレーションにより、全てのサブミッションキューに対してフェアなアービトレーションを行うことができる。したがって、ホスト2とSSD3とからなるコンピュータシステム1を、ソフトリアルタイムシステムとして実現でき、ホスト2からSSD3へのアクセスのワースト・レーテンシを削減することができる。
ソフトリアルタイムシステムは、システムに与えられたタスクの処理がデッドライン時間内に終了しなかったという事象(デッドラインミス)が起きたとしても、システム全体に致命的なダメージが生じず、その処理の価値が完了時間等に応じて低減するシステムである。これに対して、ハードリアルタイムシステムは、デッドラインミスにより故障するシステムであり、ファームリアルタイムシステムは、デッドラインミスが致命的なダメージを与えるものではないが、デッドライン時間までに終了しなかったことによってその処理の価値が即座にゼロになるシステムである。
図2に戻り、コントローラ4は、フェッチされたコマンドを実行する。すなわち、コントローラ4は、SSD3内の各部と連携して、コマンドに応じた処理(例えば、リード処理、ライト処理、等)を実行する。
そして、コントローラ4は、コマンドの実行が完了した場合、コンプリーションキュー32に、フェッチされたコマンドとコマンド完了時間とを示すコンプリーションキューエントリを書き込む。これにより、ホスト2は、各コマンドの完了時間を取得することができる。コマンド完了時間は、コマンドに応じた処理が完了した時間であってもよいし、指定されたデッドライン時間が対象とした動作(例えば、フェッチ、データ転送開始、データ転送完了、割り込み通知、等)が実際に行われた時間であってもよい。
コンプリーションキュー32は、完了したコマンドに関するステータスを通知するために用いられる。完了したコマンドは、ホスト2によって割り当てられた、関連付けられたサブミッションキューの識別情報とコマンドの識別情報との組に基づいて一意に特定される。複数のサブミッションキュー31が一つのコンプリーションキュー32に関連付けられてもよい。また、コンプリーションキュー32の各エントリは、例えば、少なくとも16バイトのサイズを有する。
図8は、コンピュータシステム1で用いられるコンプリーションキューエントリのフォーマット(応答メッセージプロトコル)の例を示す。ここでは、NVMe規格(Revision 1.3)に示されるコンプリーションキューエントリのフォーマットを、コマンド完了時間に関する情報をさらに指定するように変更する場合について説明する。
このフォーマットは、コマンド実行の成功/失敗およびその原因と、サブミッションキュー31およびコンプリーションキュー32の状態とを通知するように構成されている。本実施形態では、コンプリーションキューエントリ内の[3−0]バイトに対応するDword 0の領域、および[7−4]バイトに対応するDword 1の領域を、コマンドの完了時間のタイムスタンプを設定するための領域として用いる。例えば、発行されたコマンドがライトコマンドまたはリードコマンドである場合、このフィールドに、そのライトコマンドまたはリードコマンドの処理が完了した時間が設定される。さらに、このエントリ内の[15−12]バイトに対応する領域の内の[29−28]ビットに対応する領域を、指定されたデッドライン時間を超えてコマンドが処理されたかどうかを示す情報(Expired)を設定する領域として用いる。
ホスト2は、このコンプリーションキューエントリを用いて、指定されたデッドライン時間内に処理できなかったコマンドがあることを認識できるので、アプリケーションを利用しているユーザに伝える、コマンドの投入量を調整する、複数のストレージデバイスが設けられている場合には別のストレージデバイスの利用を検討する、ストレージデバイスに大量にアクセスしている別のアプリケーションがあって、それが不要ならば中止させる、等の対処をすることが可能になる。
なお、ホスト2のデバイスドライバ43には、疲弊度推定部432がさらに設けられていてもよい。疲弊度推定部432は、処理されたコマンドに関するSSD3からの応答であるコンプリーションキューエントリを解析し、SSD3の疲弊度を推定する。コンプリーションキューエントリには、例えば、コマンド完了時間と指定されたデッドライン時間を超えてコマンドが処理されたかどうかを示す情報とが含まれている。疲弊度推定部432は、例えば、指定されたデッドライン時間を超えてコマンドが処理されたかどうかを示す情報を用いるか、あるいはこのコマンド完了時間と、ホスト2が要求したデッドライン時間とを比較することにより、デッドライン時間までにコマンドが処理されたか否かに応じて、SSD3の疲弊度を推定する。
推定された疲弊度の利用方法は、ホスト2の運用次第であり、多数の応用例が考えられるが、例えば、以下の3点が挙げられる。
(1)SSD3の寿命が近づいたと判断し、ユーザに警告を出し、交換を促す。
(2)エラーがある領域(LBA+サイズ)のデータを、別の領域に移動し、解放する(リフレッシュ)。
(3)複数台のSSDが用いられるコンピュータシステム1では、以下のように対処する。
・複数台のSSDの内、デッドライン時間までにコマンドが処理されなかった違反の数が最大であるSSDを、寿命が近づいたと判断して交換する。
・複数台のSSDから書き込み先のSSDを選択するときに、違反の数が多いSSDほど選択されにくいようにする。
・複数台のSSDがミラー等のレプリカのSSDを含む場合に、違反の数が多いSSDほど長いデッドライン時間を指定したコマンドを発行する。これにより、違反の数が少ないSSDでリード動作のような処理が実際に行われたことに応じて、違反の数が多いSSDでは、コマンドがキャンセルされ、実際の処理が行われないようにする。つまり、違反の数が多いSSDでは、長いデッドライン時間を指定することで、コマンドがキャンセルされやすいようにする。
(1)SSD3の寿命が近づいたと判断し、ユーザに警告を出し、交換を促す。
(2)エラーがある領域(LBA+サイズ)のデータを、別の領域に移動し、解放する(リフレッシュ)。
(3)複数台のSSDが用いられるコンピュータシステム1では、以下のように対処する。
・複数台のSSDの内、デッドライン時間までにコマンドが処理されなかった違反の数が最大であるSSDを、寿命が近づいたと判断して交換する。
・複数台のSSDから書き込み先のSSDを選択するときに、違反の数が多いSSDほど選択されにくいようにする。
・複数台のSSDがミラー等のレプリカのSSDを含む場合に、違反の数が多いSSDほど長いデッドライン時間を指定したコマンドを発行する。これにより、違反の数が少ないSSDでリード動作のような処理が実際に行われたことに応じて、違反の数が多いSSDでは、コマンドがキャンセルされ、実際の処理が行われないようにする。つまり、違反の数が多いSSDでは、長いデッドライン時間を指定することで、コマンドがキャンセルされやすいようにする。
次いで、図9のフローチャートは、ホスト2によって実行されるコマンド発行処理の手順の例を示す。
ホスト2は、ホスト2上で実行されるアプリケーション41やOS42等によって、SSD3に対するコマンドの発行が要求されたか否かを判定する(ステップS11)。コマンドの発行が要求されていない場合(ステップS11のNO)、ステップS11に戻る。
コマンドの発行が要求された場合(ステップS11のYES)、ホスト2は、そのコマンドの処理のデッドライン時間を決定する(ステップS12)。そして、ホスト2は、デッドライン時間が指定されたコマンドをサブミッションキューに投入する(ステップS13)。例えば、ホスト2は、コマンドID、デッドライン時間、等をサブミッションキューエントリに書き込む。
以上により、サブミッションキュー31に、要求に応じたコマンドを投入することができる。
また、図10のフローチャートは、ホスト2によって実行されるコマンド中止処理の手順の例を示す。
ホスト2は、サブミッションキュー31に入れられたコマンドの中止が要求されたか否かを判定する(ステップS21)。ホスト2は、例えば、発行されたコマンドに対応するプロセスが中止されたことに応じて、当該コマンドの中止が要求されたと判定する。コマンドの中止が要求されていない場合(ステップS21のNO)、ステップS21に戻る。
コマンドの中止が要求された場合(ステップS21のYES)、ホスト2は、そのコマンドを中止するためのアボートコマンドをサブミッションキュー(アドミンサブミッションキュー)31に投入する(ステップS22)。
SSD3のコントローラ4は、このアボートコマンドに応じて、指定されたコマンドの処理を中止(キャンセル)するための処理を行うことができる。
図11のフローチャートは、SSD3のコントローラ4によって実行される実行制御処理の手順の例を示す。ここでは、説明を分かりやすくするために、サブミッションキュー31に複数のコマンドが一括で投入され、その処理中に新たなコマンドが投入されない場合について例示する。
コントローラ4は、サブミッションキュー31にコマンドが投入されたか否かを判定する(ステップS31)。サブミッションキュー31にコマンドが投入されていない場合(ステップS31のNO)、ステップS31に戻る。
サブミッションキュー31にコマンドが投入された場合(ステップS31のYES)、コントローラ4は、サブミッションキュー31内の各コマンドに指定されたデッドライン時間に基づいて、各コマンドが処理(フェッチ)されるタイミングを示すスケジューリング方式を決定する(ステップS32)。
次いで、コントローラ4は、決定されたスケジューリング方式に基づいて、フェッチすべきコマンドがあるか否かを判定する(ステップS33)。フェッチすべきコマンドがある場合(ステップS33のYES)、コントローラ4は、サブミッションキュー31からそのコマンドをフェッチする(ステップS35)。
一方、フェッチすべきコマンドがない場合(ステップS34のNO)、コントローラ4は、スケジューリング方式に基づいて、コマンドがフェッチされるべきタイミングまで待機し(ステップS34)、その後、サブミッションキュー31からコマンドをフェッチする(ステップS35)。なお、ステップS34の待機中、SSD3は低消費電力状態に移行されてもよい。
コントローラ4は、フェッチされたコマンドに応じた処理を実行する(ステップS36)。コントローラ4は、例えば、リードコマンドに応じてNAND型フラッシュメモリ5からデータを読み出したり、ライトコマンドに応じてNAND型フラッシュメモリ5にデータを書き込んだりする。
そして、コントローラ4は、コマンドに応じた処理の実行が完了したか否かを判定する(ステップS37)。実行が完了していない場合(ステップS37のNO)、ステップS37に戻る。
実行が完了した場合(ステップS37のYES)、コントローラ4は、コンプリーションキュー32に、完了したコマンドに関するコンプリーションキューエントリを書き込む(ステップS38)。このコンプリーションキューエントリには、完了時間や、デッドライン時間までに実行が完了したかどうかを示す情報等が含まれる。
次いで、コントローラ4は、投入された全てのコマンドに応じた処理が完了したか否かを判定する(ステップS39)。全てのコマンドに応じた処理が完了していない場合(ステップS39のNO)、ステップS33に戻り、スケジューリング方式に基づく処理が続行される。
一方、全てのコマンドに応じた処理が完了した場合(ステップS39のYES)、ステップS31に戻る。
なお、上記の処理中に新たなコマンドが投入された場合には、その新たなコマンドを含む、サブミッションキュー内のコマンドの実行(フェッチ)が再度スケジューリングされてもよい。
以上の構成により、状況に応じてコマンドをスケジューリングしながらSSD3の消費電力を削減することができる。ホスト2は、処理すべきデッドライン時間が指定された一つ以上のコマンドを発行し、キューに入れる。SSD3は、各々のデッドライン時間に基づいて、各コマンドが実行されるタイミングを示すスケジューリング方式を決定する。SSD3は、各々のデッドライン時間までにコマンドが処理され、且つSSD3が低消費電力状態に移行できる期間を長くすることができるようにスケジューリング方式を決定する。したがって、コンピュータシステム1では、一つ以上のコマンドに対応する一つ以上のデッドライン時間の状況に応じてコマンドをスケジューリングしながら、SSD3の消費電力を削減することができる。
以下、上述のような構成を有するコンピュータシステム1が適用される応用例についていくつか説明する。
(応用例1)
図12は、コンピュータシステム1における動画再生のためのストリーミング動作の例を示す。ここでは、ホスト2が、SSD3に格納された動画ファイル51を読み出しながら、読み出された動画ファイル51のデータに基づく動画を再生するユースケースを想定する。
図12は、コンピュータシステム1における動画再生のためのストリーミング動作の例を示す。ここでは、ホスト2が、SSD3に格納された動画ファイル51を読み出しながら、読み出された動画ファイル51のデータに基づく動画を再生するユースケースを想定する。
動画ファイルの再生では、ファイル内のプログラムストリーム(PS)/トランスポートストリーム(TS)等のストリーム情報から、ストリーム(データ)を読み出すべきビットレートが予め分かっている。ホストがSSDに大量のリードコマンドを発行した場合、通常の動作では、それら全てのリードコマンドの処理が完了するまで、SSDは低消費電力状態(低消費電力モード)に移行することはできない。
本実施形態では、ホスト2は、動画ファイル51を読み出すためのリードコマンドを発行する場合に、SSD3がホスト2に応答すべき時間をデッドライン時間として指定したリードコマンドを発行し、サブミッションキュー31に投入する。SSD3のコントローラ4は、指定されたデッドライン時間までに応答でき、且つSSD3の消費電力を削減するように、各コマンドを処理するタイミングをスケジューリングする。
コントローラ4は、サブミッションキュー31にコマンド(要求)があっても、例えば、デッドライン時間が10分後であるコマンドであれば、低優先度のコマンドと判断し、他のコマンドを優先する。応答すべきデッドライン時間が10分後であるリードコマンドに対しては、SSD3が、例えば、現時点から9分間、低電力状態に設定された後に、通常電力状態(通常モード)に復帰し、リードコマンドに応じたデータの読み出しを開始したとしても、ホスト2では、動画を破綻することなく適切に再生することができる。
さらに、ホスト2において、現時点から5分後に動画再生の停止が指示される可能性もあり、そのような場合、現時点から5分後より後のデータが前もって読み出されていたならば、その読み出しに要したエネルギー(電力)は無駄になる。
例えば、動画データのビットレートは、DVDで10Mbps程度、ブルーレイ(登録商標)で30〜50Mbps、ウルトラHDブルーレイで80〜100Mbpsであり、SSD3のシーケンシャルリード性能である1000〜3000MB/sと比較すると、数百分の一にも満たない。SSD3のリード速度を下げることで、SSD3の電力を下げることができる場合には、NAND型フラッシュメモリ5の並列動作を1/Nに減らすことにより、ピーク電力を削減することも可能である。
動画データをどの程度前もって読み出すかは、アプリケーションの実装に依存するが、一つのリードコマンドの処理が完了する毎に次のリードコマンドを発行して、バッファフルを保ち続けるような処理フローである場合、SSD3だけでなく、ホスト2内のCPUコア(プロセッサコア)も、長時間の低消費電力状態に入ることはできない。
また、昨今のPCプラットフォームでは、ハードウェアデコーダがCPUやGPU内に搭載されることも多い。ハードウェアデコーダによるデコード時間は確定的であるので、指定されたデッドライン時間までにデータをホスト2に供給できさえすれば、適切な動画再生が可能である。
(応用例2)
図13は、コンピュータシステム1におけるファイルのダウンロード動作の例を示す。ここでは、ホスト2が、ネットワーク上のサーバ等から大きなサイズのファイルを長時間かけてダウンロードしながら、そのファイルのデータをSSD3に書き込むユースケースを想定する。なお、ホスト2において、ダウンロード速度のおおよそのビットレートが既知であるものとする。
図13は、コンピュータシステム1におけるファイルのダウンロード動作の例を示す。ここでは、ホスト2が、ネットワーク上のサーバ等から大きなサイズのファイルを長時間かけてダウンロードしながら、そのファイルのデータをSSD3に書き込むユースケースを想定する。なお、ホスト2において、ダウンロード速度のおおよそのビットレートが既知であるものとする。
ホスト2は、ダウンロードされたデータを書き込むためのライトコマンドを発行し、サブミッションキュー31に投入する。ライトコマンドには、ダウンロードのビットレートに基づいて、データをSSD3に書き込むべきデッドライン時間が指定される。
コントローラ4は、サブミッションキュー31にコマンドがあっても、例えば、デッドライン時間が10分後であるコマンドであれば、低優先度のコマンドと判断し、他のコマンドを優先する。また、書き込むべきデッドライン時間が3分後であるライトコマンドに対しては、例えば、現時点から2分後にデータの書き込みを開始したとしても、ホスト2において、ファイルを適切にダウンロードすることができる。
例えば、ホスト2が、1GBのファイルを8Mbpsのビットレートで約16分かけてダウンロードする場合において、コントローラ4は、SSD3のライト性能の限界まで、全速力で、ダウンロードされたデータをNAND型フラッシュメモリ5に書き込む必要はない。SSD3は、最大限遅延させながらも8Mbpsのレートで書き込めば、ホスト2とSSD3とによるダウンロード動作は破綻しない。
このような動作により、ダウンロード中に、ユーザが異なる処理の実行を要求した際のレスポンスは改善することが見込まれる。また、ファイルのダウンロードが中止(キャンセル)された場合には、既にSSD3に書き込まれたデータは不要であるため削除されることになる。したがって、ライトコマンドに応じた処理が完了してしまったデータは、ダウンロードの中止により無駄になる。
しかし、ライトコマンドに応じた処理の開始を遅延させていた場合、ホスト2がアボートコマンドを発行することにより、サブミッションキュー31内のライトコマンドを中断することができる。したがって、ライト/イレーズ回数(プログラム/イレーズサイクル数)に制限のあるNAND型フラッシュメモリ5を用いたSSD3では、その寿命の延長が期待できる。
(応用例3)
図14は、複数のSSD3A,3Bが設けられたコンピュータシステム1における、第1SSD3Aから第2SSD3Bへのデータのバックアップ動作の例を示す。第1SSD3Aおよび第2SSD3Bは、上述したSSD3と同様の構成をそれぞれ有する。一般に、SSDのライト性能はリード性能よりも低いことが多い。ここでは、SSD3A,3Bのシーケンシャルのリード性能が3000MB/sであって、ライト性能が1000MB/sであり、リード性能とライト性能とがアンバランスである場合を想定する。なお、二つのSSD3A,3Bのリード/ライト性能が同一である場合を例示するが、第1SSD3Aのリード/ライト性能と第2SSD3Bのリード/ライト性能とは異なっていてもよい。
図14は、複数のSSD3A,3Bが設けられたコンピュータシステム1における、第1SSD3Aから第2SSD3Bへのデータのバックアップ動作の例を示す。第1SSD3Aおよび第2SSD3Bは、上述したSSD3と同様の構成をそれぞれ有する。一般に、SSDのライト性能はリード性能よりも低いことが多い。ここでは、SSD3A,3Bのシーケンシャルのリード性能が3000MB/sであって、ライト性能が1000MB/sであり、リード性能とライト性能とがアンバランスである場合を想定する。なお、二つのSSD3A,3Bのリード/ライト性能が同一である場合を例示するが、第1SSD3Aのリード/ライト性能と第2SSD3Bのリード/ライト性能とは異なっていてもよい。
第1SSD3Aが、そのリード性能の限界である全速力(ピーク性能)でデータを読み出す速度(3000MB/s)と同一の書き込み速度で、第2SSD3Bがデータを書き込むことはできない。一般的に、ホスト2は、第2SSD3Bによる書き込みの完了を待って、第1SSD3Aに次のリードコマンドを発行するので、第2SSD3Bへのデータ書き込みのための時間だけ、第1SSD3Aにおいて空き時間が生じるものの、断続的にリードコマンドが発行されることにより、第1SSD3Aが低消費電力状態に移行することはできない。
そのため、第1SSD3Aに格納されたデータを第2SSD3Bにコピー(バックアップ)する場合に、ホスト2は、第1SSD3Aに対して、第2SSD3Bのライト性能に相当するリード速度(1000MB/s)でゆっくり読み出してよいことを通知する。より具体的には、ホスト2は、第1SSD3Aのリード性能と第2SSD3Bのライト性能とに基づいて、第1SSD3Aからデータを読み出すためのリードコマンドが処理されるべきデッドライン時間を、第2SSD3Bのライト性能に相当するリード速度を満たすように決定する。
そして、ホスト2は、このデッドライン時間が指定されたリードコマンドを発行し、第1SSD3Aのためのサブミッションキュー31に投入する。これにより、第1SSD3Aは、デッドライン時間に基づいてリードコマンドの実行タイミングをスケジューリングすることが可能になり、例えば、バッファの容量の限界までデータを読み出した後、長時間の低消費電力状態に移行することができる。
また、ホスト2は、第1SSD3Aから読み出されたデータを、第2SSD3Bに書き込むためのライトコマンドを発行し、第2SSD3Bのためのサブミッションキュー31に投入する。ホスト2は、このデータを書き込む際に、第2SSD3Bがライト性能(1000MB/s)を発揮するようにデッドライン時間を指定してもよい。
バックアップを短時間に完了させることよりも、SSD3A,3Bが消費するピーク電力を下げることが重要である場合には、NAND型フラッシュメモリ5に対してプログラム/リードする並列数を下げることを優先するように、コマンドをスケジューリングする。これにより、ピーク消費電力を下げることができる。
(応用例4)
図15は、マルチレイヤストレージシステム7が設けられたコンピュータシステム1における、ホスト2からマルチレイヤストレージシステム7へのアクセスの例を示す。マルチレイヤストレージシステム7は、異なるアクセス性能のレイヤに属する複数のストレージデバイスから構成される。ここでは、マルチレイヤストレージシステム7が、第1リード/ライト性能を有する高速のキャッシュSSD3Cと、第1リード/ライト性能よりも低い第2リード/ライト性能を有する中速のデータSSD3Dと、第2リード/ライト性能よりも低い第3リード/ライト性能を有する低速のバックアップSSD3Eとから構成されることを想定する。キャッシュSSD3C、データSSD3D、およびバックアップSSD3Eは、上述したSSD3と同様の構成をそれぞれ有する。
図15は、マルチレイヤストレージシステム7が設けられたコンピュータシステム1における、ホスト2からマルチレイヤストレージシステム7へのアクセスの例を示す。マルチレイヤストレージシステム7は、異なるアクセス性能のレイヤに属する複数のストレージデバイスから構成される。ここでは、マルチレイヤストレージシステム7が、第1リード/ライト性能を有する高速のキャッシュSSD3Cと、第1リード/ライト性能よりも低い第2リード/ライト性能を有する中速のデータSSD3Dと、第2リード/ライト性能よりも低い第3リード/ライト性能を有する低速のバックアップSSD3Eとから構成されることを想定する。キャッシュSSD3C、データSSD3D、およびバックアップSSD3Eは、上述したSSD3と同様の構成をそれぞれ有する。
このようなマルチレイヤストレージシステムにおいて、各ストレージデバイスは、デッドライン時間(制限時間)内に完了しなかったコマンドについて、制限時間を超えたことを示すエラーを早期にホストに返却する機能(Fast Fail)を有することがある。ホストは、あるレイヤのストレージデバイスにコマンドを発行し、このコマンドについて制限時間を超えたことを示すエラーが返却された場合には、別のレイヤのストレージデバイスに同様のコマンドを発行することにより、マルチレイヤストレージシステム全体でのコマンドの応答時間を短縮することができる。
本実施形態のホスト2は、Fast Fail機能によるエラーを受けてから、別のレイヤのストレージデバイスにコマンドを発行するのではなく、複数のレイヤに属する複数のストレージデバイス3C,3D,3Eのそれぞれに対して、性能が高いものほど短いデッドライン時間を指定したコマンドを一斉に、投機的に発行する。ホスト2は、短いデッドライン時間を指定したコマンドを処理したストレージデバイス(例えば、キャッシュSSD3C)から正常終了の応答を受けたならば、より長いデッドライン時間を指定したコマンドを発行した別のストレージデバイス(例えば、データSSD3DおよびバックアップSSD3E)に対して、そのコマンドのキャンセルを要求するアボートコマンドをさらに発行する。
また、短いデッドライン時間を指定したコマンドを処理したストレージデバイス(例えば、キャッシュSSD3C)が異常終了したならば、より長いデッドライン時間を指定したコマンドを発行した別のストレージデバイスでのコマンド処理が続行される。以上により、冗長性を有するマルチレイヤストレージシステム7において、無駄なエネルギーを消費することなく投機的なアクセスが行われ、全体での応答時間も短縮することができる。
例えば、ホスト2からマルチレイヤストレージシステム7にリードコマンドが発行されることを想定する。図15に示すように、ホスト2は、キャッシュSSD3Cに対して5ミリ秒のデッドライン時間を指定したリードコマンドを、データSSD3Dに対して50ミリ秒のデッドライン時間を指定したリードコマンドを、バックアップSSD3Eに対して500ミリ秒のデッドライン時間を指定したリードコマンドを、一斉に、投機的に発行する。そして、発行した時点から1ミリ秒後に、キャッシュSSD3Cからリードの正常終了を示す応答を受けた場合、ホスト2は、データSSD3DおよびバックアップSSD3Eに、リードコマンドをキャンセルするためのアボートコマンドを発行する。
図16は、ホスト2からマルチレイヤストレージシステム7にリードコマンドが発行される場合の処理シーケンスの例を示す。ここでは、説明を分かりやすくするために、マルチレイヤストレージシステム7にキャッシュSSD3CとデータSSD3Dとが設けられる場合について例示するが、3台以上のSSD(ストレージデバイス)が設けられている場合も同様である。
まず、ホスト2は、データSSD3Dに対して50ミリ秒のデッドライン時間が指定された第1リードコマンドを、キャッシュSSD3Cに対して5ミリ秒のデッドライン時間が指定された第2リードコマンドを、一斉に発行することにより、リクエストを送出する(A1,A2)。すなわち、これら二つのリードコマンドは、一方のリードコマンドを発行してから他方のリードコマンドを発行するまでに特定の時間だけ待つ待ち合わせを行うことなく、発行される。発行されたコマンドは、例えば、SSD3C,3Dにそれぞれ対応するサブミッションキュー31に投入される。複数のリードコマンドが一斉に発行される場合、別々に発行される場合よりも、ホスト2にかかる負荷が、待ち合わせに要する負荷がない分だけ軽減される。
データSSD3Dは、第1リードコマンドに指定された50ミリ秒のデッドライン時間に基づいて、(50−α)ミリ秒だけ待つ(A3)。時間αは、例えば、データSSD3Dが第1リードコマンドに応じたリード処理を行うのに要する時間に対応する。つまり、データSSD3Dは、第1リードコマンドに応じたリード処理の開始をできるだけ遅延させるように、コマンド処理のスケジューリング方式を決定する。このスケジューリング方式は、例えば、現時点から(50−α)ミリ秒後に、フェッチおよびリード動作(A8,A9)が行われることを示す。
一方、キャッシュSSD3Cは、第2リードコマンドに指定された5ミリ秒のデッドライン時間に基づいて、例えば、即座に、第2リードコマンドをフェッチする(A4)。そして、キャッシュSSD3Cは、第2リードコマンドに応じたリード動作を行い(A5)、ホスト2に応答する(A6)。この応答には、リード動作が正常終了したならば、正常終了したことを示す情報が含まれる。以下では、リード動作が正常終了したことを想定する。
ホスト2は、この応答に応じて、データSSD3Dに対して発行された第1リードコマンドをキャンセルするためのアボートコマンドを、データSSD3Dに対して発行する(A7)。データSSD3Dは、このアボートコマンドに応じて第1リードコマンドを中止する。したがって、スケジューリングされていた、第1リードコマンドをフェッチし(A8)、リードする動作(A9)は、中止される。
このように、マルチレイヤストレージシステム7からあるデータを読み出すために、複数のSSDに対して複数のリードコマンドが発行されるものの、実際にリード動作が行われるSSDは、リードコマンドが発行された複数のSSDの内の一つに制限されるように制御することができる。これにより、コンピュータシステム1全体で消費される電力を低減できると共に、アクセスによるNAND型フラッシュメモリの疲弊も低減することができる。
なお、リードコマンドが発行されるキャッシュSSD3CとデータSSD3Dとが直接的に通信することはない。コンピュータシステム1では、ホスト2により発行される各コマンドにデッドライン時間が指定され、各SSD3C,3D内でデッドライン時間に基づいての動作の制御が行われるので、SSD3C,3D間の通信は不要である。
次いで、図17から図19を参照して、SSD3におけるコマンドの処理と電力状態との関係について説明する。
図17は、SSD3の動作における三つの電力状態と、それら状態間の遷移の例を示す。
電力状態PS0は、SSD3がフルスピードで動作するときの電力状態である。つまり、電力状態PS0であるSSD3は稼働状態であると云える。電力状態PS0であるSSD3の最大電力は、例えば、5Wである。ここでは、稼働状態である場合の電力状態としてPS0のみを示したが、PS0よりも消費電力が低い電力状態PS1,PS2がさらに設けられていてもよい。
電力状態PS3は、SSD3がシャロースリープに入っているときの電力状態である。電力状態PS3であるSSD3の最大電力は、例えば、50mWである。また、電力状態PS4は、SSD3がディープスリープに入っているときの電力状態である。電力状態PS4であるSSD3の最大電力は、例えば、2.5mWである。電力状態PS3またはPS4であるSSD3は非稼働状態である。
以下では、説明を分かりやすくするために、図17に示すように、SSD3が三つの電力状態PS0,PS3,PS4のいずれかで動作する場合について例示する。
電力状態PS0であるSSD3は、0.5秒のアイドル時間が経過したことに応じて、電力状態PS3に遷移する。電力状態PS3であるSSD3は、10秒のアイドル時間が経過したことに応じて、電力状態PS4に遷移する。また、電力状態PS3または電力状態PS4であるSSD3は、リクエスト(コマンド)が投入されたことに応じて、電力状態PS0に遷移する。
図18は、このように状態遷移するSSD3がコマンドを処理する場合の消費電力の変化の例を示す。図18に示す例では、リクエスト851,852,853が三回投入される場合における、デッドライン時間に基づくスケジューリングなしの動作による消費電力86と、デッドライン時間に基づくスケジューリングありの動作による消費電力87との変化が示されている。ここでは、一例として、各リクエスト851,852,853が、一つ以上のリードコマンドを含むことを想定する。
まず、デッドライン時間に基づくスケジューリングなしの動作による消費電力86について説明する。1回目のリクエスト851が投入されたことに応じて、SSD3は、PS4からPS0に遷移し、そのリクエスト851に応じた全てのリード処理を実行する。その後、0.5秒のアイドル時間が経過したならば、SSD3はPS0からPS3に遷移することにより、シャロースリープに入る。シャロースリープに対応するPS3では、PS0での電力よりも低い電力が消費されている。
このシャロースリープの期間が10秒未満である間に2回目のリクエスト852が投入されたことに応じて、SSD3は、PS3からPS0に遷移し、そのリクエスト852に応じた全てのリード処理を実行する。その後、0.5秒のアイドル時間が経過したならば、SSD3はPS0からPS3に遷移することにより、シャロースリープに入る。
さらに、このシャロースリープの期間が10秒未満である間に3回目のリクエスト853が投入されたことに応じて、SSD3は、PS3からPS0に遷移し、そのリクエスト853に応じた全てのリード処理を実行する。その後、0.5秒のアイドル時間が経過したならば、SSD3はPS0からPS3に遷移することにより、シャロースリープに入る。
上述したように、SSD3は、10秒のアイドル時間が経過したことに応じて、PS3からPS4(ディープスリープ)に遷移する。したがって、あるリクエストの処理後にPS3に遷移してから新たなリクエストが投入されるまでの間隔が10秒未満であるならば、SSD3は、PS0とPS3との間での遷移を繰り返し、PS4に遷移することがない。
次いで、本実施形態のコンピュータシステム1における、デッドライン時間に基づくスケジューリングありの動作による消費電力87について説明する。
1回目のリクエスト851が投入されたことに応じて、SSD3は、PS4からPS0に遷移し、そのリクエスト851に応じた必要最小限のリード処理を実行し、PS4に遷移する。つまり、SSD3は、デッドライン時間に基づいて、可能な限り遅延させてリード処理を実行するようにスケジューリングし、遅延させることができないリード処理のみを実行する。そして、SSD3は、PS0からPS4に遷移し、遅延させるリード処理を実行するべき時間まで、または新たなリクエストが投入されるまで、ディープスリープに入る。ディープスリープに対応するPS4では、シャロースリープのPS3での電力よりも低い電力が消費されている。
ディープスリープ中に2回目のリクエスト852が投入されたことに応じて、SSD3は、PS4からPS3に遷移し、そのリクエスト852に応じた全てのリード処理の実行を遅延させることができると判定して、遅延させるリード処理をスケジューリングする。リクエスト852に応じた全てのリード処理の実行を遅延させることができるので、SSD3は、再度、PS3からPS4に遷移する。
さらに、ディープスリープ中に3回目のリクエスト853が投入されたことに応じて、SSD3は、PS4からPS3に遷移し、そのリクエスト853に応じた全てのリード処理の実行を遅延させることができると判定して、遅延させるリード処理をスケジューリングする。リクエスト853に応じた全てのリード処理の実行を遅延させることができるので、SSD3は、再度、PS3からPS4に遷移する。
その後、スケジューリング方式に基づいて、リード処理の実行を再開すべき時間に達したならば、SSD3は、PS4からPS0に遷移し、リード処理を実行する。これにより、デッドライン時間までにリクエスト851,852,853が処理されるように、リード処理が実行される。そして、SSD3は、PS0からPS3(またはPS4)に遷移する。
上述したように、SSD3は、リクエスト(リードコマンド)に指定されたデッドライン時間に基づいて、可能な限り遅延させてリード処理を実行するようにスケジューリングし、必要最小限のリード処理を実行して、PS0からPS4に遷移する。そのため、スケジューリング方式に基づきリード処理が必要である場合にPS0に遷移し、新たなリクエストが投入された場合にPS3に遷移する以外では、可能な限り、最も消費電力が低いPS4に設定される。
図19は、デッドライン時間に基づくスケジューリングなしの場合と、デッドライン時間に基づくスケジューリングありの場合とにおいて、図18に示した全期間の内で、各電力状態PS0,PS3,PS4に設定される期間の割合を示す。
フルスピード動作するPS0に設定される期間は、デッドライン時間に基づくスケジューリングなしの場合と、デッドライン時間に基づくスケジューリングありの場合で、いずれも10%である。つまり、リクエスト851,852,853に応じた同一の処理内容では、PS0であるアクティブ時間は同じになる。
シャロースリープのPS3に設定される期間は、デッドライン時間に基づくスケジューリングなしの場合に90%であり、デッドライン時間に基づくスケジューリングありの場合には1%である。また、ディープスリープのPS4に設定される期間は、デッドライン時間に基づくスケジューリングなしの場合に0%であり、デッドライン時間に基づくスケジューリングありの場合には89%である。
デッドライン時間に基づくスケジューリングなしの場合にPS4に設定される期間がないのは、あるリクエストの処理後、PS3に遷移してから新たなリクエストが投入されるまでの間隔が10秒未満であるならば、SSD3が、PS0とPS3との間での遷移を繰り返し、PS4に遷移することがないためである。また、デッドライン時間に基づくスケジューリングありの場合にPS4に設定される期間が長いのは、デッドライン時間に基づいて、可能な限り遅延させて処理を実行するようにスケジューリングし、必要最小限の処理が実行されたことに応じて、PS0からPS4に遷移するためである。つまり、スケジューリング方式に基づき処理が必要である場合と、新たなリクエストが投入された場合以外では、可能な限り、最も消費電力が低いPS4に設定されるためである。
このような各電力状態PS0,PS3,PS4に設定される期間の割合の違いにより、デッドライン時間に基づくスケジューリングなしの場合に消費される総電力が545mWであるのに対して、デッドライン時間に基づくスケジューリングありの場合に消費される総電力は503mWである。したがって、この例では、デッドライン時間に基づくスケジューリングを行うことによって、7.8%の電力削減効果が得られると云える。
次いで、図20および図21を参照して、あるSSD3が、デッドライン時間に基づくスケジューリングなしで動作しているか、それともデッドライン時間に基づくスケジューリングありで動作しているかを判断するための例について説明する。ここでは、SSD3に、当該SSD3に供給される電源(例えば、DC3.3V)に流れる電流を計測するための電流計と、ホスト2とSSD3との間のバス(ホストI/F11)の論理的なトラフィック(コマンドやデータ)を時刻情報付きで観測するバスアナライザとが設けられていることを想定する。
図20は、デッドライン時間に基づくスケジューリングなしで動作するSSD3における、消費電力81とトラフィックの有無を示すバスアナライザ波形82との遷移を示す。
まず、SSD3は、ホスト2によって一括して投入されたリクエスト(コマンド)854に対応するジョブ1,2,3を処理するために、それぞれ電力P1,P2a,P2bで動作する。その間、バスアナライザ波形82は、ジョブ1とジョブ2との間に相当する位置と、ジョブ2とジョブ3との間に相当する位置とに、ホスト2との間で伝送されるトラフィックがないこと(OFF)を示す微小なアイドル時間Tidle(例えば、1ms)を含むものの、トラフィックがあること(ON)をほぼ示している。
リクエスト854に対応するジョブ1,2,3の処理が完了し、閾値(例えば、0.5秒)を超えるアイドル時間Tidleが経過したことに応じて、SSD3は、低消費電力状態(例えば、PS3)に遷移する。その間、ホスト2との間で伝送されるトラフィックはないので、バスアナライザ波形82はOFFを示す。
そして、SSD3は、ホスト2によるリクエストではなく、GCのようなSSD3の内部動作のために、電力Pinnerで動作する。SSD3の内部動作であるため、この間、ホスト2との間で伝送されるトラフィックはなく、バスアナライザ波形82はOFFを示している。
また、図21は、本実施形態のデッドライン時間に基づくスケジューリングありで動作するSSD3における、消費電力83とトラフィックの有無を示すバスアナライザ波形84との遷移を示す。
まず、SSD3は、ホスト2によって一括して投入されたリクエスト(コマンド)854に対応するジョブ1,2,3を、指定されたデッドライン時間に基づいてスケジューリングする。そして、SSD3は、ジョブ1,2,3の内、すぐに処理すべき最小限のジョブ1を処理するために、電力P1で動作する。その間、ジョブ1の処理に応じてホスト2との間で伝送されるトラフィックがあるので、バスアナライザ波形84はONを示している。
SSD3は、ジョブ1の処理が完了したことに応じて、スケジューリング方式に基づく待機時間Twait(例えば、100ms)だけ低消費電力状態(例えば、PS4)に入る。その間、ホスト2との間で伝送されるトラフィックはないので、バスアナライザ波形84はOFFを示す。
待機時間Twaitが経過したならば、SSD3は、スケジューリング方式に基づき、ジョブ2を処理するために電力P2で動作する。その間、ジョブ2の処理に応じてホスト2との間で伝送されるトラフィックがあるので、バスアナライザ波形84はONを示している。
そして、SSD3は、ジョブ2の処理が完了したことに応じて、低消費電力状態(例えば、PS4)に遷移した後、ホスト2によるリクエストではなく、GCのようなSSD3の内部動作のために、電力Pinnerで動作する。SSD3の内部動作であるため、この間、ホスト2との間で伝送されるトラフィックはなく、バスアナライザ波形84はOFFを示している。
さらに、SSD3は、この内部動作が完了したことに応じて、低消費電力状態(例えば、PS4)に遷移した後、スケジューリング方式に基づき、ジョブ3を処理するために電力P3で動作する。その間、ジョブ3の処理に応じてホスト2との間で伝送されるトラフィックがあるので、バスアナライザ波形84はONを示している。
図20に示したデッドライン時間に基づくスケジューリングなしで動作するSSDでは、リクエストに対応するジョブ1,2,3の処理が完了するまで、消費電力81は高いままであり、またバスアナライザ波形82も、ジョブ間の微小なアイドル時間TidleにOFFになることを除いて、ONのままである。そして、ジョブ1,2,3の処理が完了した後は、GCのようなSSD3の内部動作のために消費電力81が高くなることがあるものの、後続のリクエスト(ジョブ)が投入されない限り、バスアナライザ波形82はOFFのままである。すなわち、後続のリクエストが投入されない限り、ホスト2との間のトラフィックが発生することはない。
これに対して、図21に示したデッドライン時間に基づくスケジューリングありで動作する本実施形態のSSD3では、リクエストに対応するジョブ1,2,3の内、必要最小限のジョブ1のみを処理し、他のジョブ2,3の処理は可能な限り遅延させる。そのため、全てのジョブ1,2,3の処理が完了していない状態(例えば、ジョブ1の処理のみか完了した状態)において、消費電力83が下がり(低消費電力状態になり)、且つバスアナライザ波形84もオフになる長い待機時間Twaitが発生し得る。さらに、この待機時間Twaitの後には、新たなリクエストが投入されることなく、消費電力が高くなり(P2,P3)、且つバスアナライザ波形84がONになる期間が発生する。したがって、あるリクエスト854に応じた全てのジョブ1,2,3が処理される期間内に、長い待機時間Twaitが発生する。
このように、デッドライン時間に基づくスケジューリングありで動作するSSD3と、デッドライン時間に基づくスケジューリングなしで動作SSD3とでは、リクエスト854に応じたジョブが処理される期間において、バスアナライザ波形82,84がOFFになる時間の長さが異なることがある。例えば、図20および図21に示したように、デッドライン時間に基づくスケジューリングありで動作するSSD3におけるジョブ1の処理とジョブ2の処理との間の待機時間Twaitは、デッドライン時間に基づくスケジューリングなしで動作するSSD3におけるジョブ1の処理とジョブ2の処理との間のアイドル時間Tidleよりも長い。
したがって、あるリクエストに応じた全てのジョブが処理される期間内に、デッドライン時間に基づくスケジューリングなしで動作するSSDで想定されるアイドル時間Tidleよりも長い待機時間Twaitが発生しているならば、そのSSDは、本実施形態のデッドライン時間に基づくスケジューリングありのSSD3であると云える。そのため、ホスト2によるリクエストが投入された後の消費電力とバスアナライザ波形とを計測することにより、あるSSD3が、デッドライン時間に基づくスケジューリングなしで動作しているか、それともデッドライン時間に基づくスケジューリングありで動作しているかを判別することができる。
また、図22は、ホスト2として機能する情報処理装置(コンピューティングデバイス)のハードウェア構成例を示す。
この情報処理装置は、サーバ(例えば、ストレージサーバ)のようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションレイヤ41、OS42、デバイスドライバ43を含む。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。ネットワークコントローラ105を用いた有線通信または無線通信により、例えば、ストレージデバイスとの間でデータを送受信することもできる。
周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のSSD3が複数のコネクタ107Aにそれぞれ接続されてもよい。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボードなどの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
以上説明したように、本実施形態によれば、状況に応じてコマンドをスケジューリングしながら消費電力を削減することができる。ホスト2内のプロセッサ101は、SSD3に対して一つ以上のコマンドを発行することが要求される場合、それら一つ以上のコマンドがそれぞれ処理されるべき一つ以上のデッドライン時間を決定し、一つ以上のデッドライン時間がそれぞれ指定された一つ以上のコマンドをSSD3に対して発行する。SSD3のコントローラ4は、一つ以上のデッドライン時間に基づいて、一つ以上のコマンドの各々が実行されるタイミングを示すスケジューリング方式を決定し、そのスケジューリング方式に従って一つ以上のコマンドを実行する。
このように、コンピュータシステム1は、状況に応じたデッドライン時間が指定されたコマンドを発行するホスト2と、そのコマンドを適切にスケジューリングして処理するSSD3とで構成される。これにより、コンピュータシステム1で消費される電力量を削減し、ワーストケースでのコマンド応答時間を短縮する、すなわち、QoSを向上させる効果を得ることができる。
また、本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…コンピュータシステム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストI/F、12…CPU、13…NAND I/F、14…DRAM I/F、121…リード制御部、122…ライト制御部、123…GC制御部、124…アービトレーション制御部、30…キュー、31…サブミッションキュー、32…コンプリーションキュー、41…アプリケーションレイヤ、42…OS、43…デバイスドライバ、431…コマンド発行部、432…疲弊度推定部。
Claims (20)
- インターフェースを介してホストと接続可能な電子機器であって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記ホストにより発行された複数のコマンドを並列に処理可能なコントローラとを具備し、
前記コントローラは、前記ホストと接続された場合に、
前記ホストによって、処理されるべきデッドライン時間がそれぞれ指定された一つ以上のコマンドが発行された場合、前記デッドライン時間に基づいて、前記一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式を決定し、
前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行するように構成される電子機器。 - 前記コントローラは、前記ホストによって前記一つ以上のコマンドが格納されたキューから、前記スケジューリング方式に従って第1コマンドをフェッチ可能であり、前記フェッチされた第1コマンドに応じた処理を実行するように構成される請求項1記載の電子機器。
- 前記一つ以上のコマンドは、リードコマンドであり、
前記一つ以上のコマンドに対してそれぞれ指定される一つ以上のデッドライン時間は、前記ホストによって前記電子機器に対して要求されるリード速度に基づいて決定される請求項1記載の電子機器。 - 前記一つ以上のコマンドは、ライトコマンドであり、
前記一つ以上のコマンドに対してそれぞれ指定される一つ以上のデッドライン時間は、前記ホストによって前記電子機器に対して要求されるライト速度に基づいて決定される請求項1記載の電子機器。 - 前記コントローラは、さらに、前記ホストと接続された場合に、前記一つ以上のコマンドの処理がそれぞれ完了した時間を前記ホストに通知可能であるように構成される請求項1記載の電子機器。
- メモリと、
前記メモリに格納されたプログラムを実行するように構成されたプロセッサとを具備し、
前記プロセッサは、
当該プロセッサにより発行された複数のコマンドを並列に処理可能なストレージデバイスに対して、第1コマンドを発行することが要求される場合、前記第1コマンドが処理されるべきデッドライン時間を決定し、
前記デッドライン時間が指定された前記第1コマンドを前記ストレージデバイスに対して発行するように構成される電子機器。 - 前記プロセッサは、前記発行された第1コマンドをキューに格納し、
前記格納された第1コマンドは、前記デッドライン時間に基づいて決定されるスケジューリング方式に従って、前記キューからフェッチされる請求項6記載の電子機器。 - 前記第1コマンドは、リードコマンドであり、
前記プロセッサは、前記ストレージデバイスに対して要求するリード速度に基づいて、前記デッドライン時間を決定するように構成される請求項6記載の電子機器。 - 前記第1コマンドは、ライトコマンドであり、
前記プロセッサは、前記ストレージデバイスに対して要求するライト速度に基づいて、前記デッドライン時間を決定するように構成される請求項6記載の電子機器。 - 前記プロセッサは、さらに、
ファイルがネットワークを介して前記電子機器にダウンロードされる間に、前記ファイルを構成する少なくとも一部のデータを前記ストレージデバイスに書き込む場合、前記ファイルがダウンロードされる速度に基づいて、前記少なくとも一部のデータを書き込むためのライトコマンドが処理されるべき第1デッドライン時間を決定し、
前記第1デッドライン時間が指定された前記ライトコマンドを前記ストレージデバイスに発行するように構成される請求項6記載の電子機器。 - 前記プロセッサは、さらに、
第1ストレージデバイスに格納されたデータを第2ストレージデバイスにコピーする場合に、前記第1ストレージデバイスのリード性能と前記第2ストレージデバイスのライト性能とに基づいて、前記データを読み出すためのリードコマンドが処理されるべき第1デッドライン時間を決定し、
前記第1デッドライン時間が指定された前記リードコマンドを前記第1ストレージデバイスに発行するように構成される請求項6記載の電子機器。 - 前記プロセッサは、さらに、
第1性能を有する第1ストレージデバイスに対して、第1デッドライン時間が指定された第1コマンドを、前記第1性能よりも低い第2性能を有する第2ストレージデバイスに対して、前記第1デッドライン時間よりも長い第2デッドライン時間が指定された第2コマンドを、発行し、
前記第2ストレージデバイスによる前記第2コマンドの処理が完了する前に、前記第1ストレージデバイスによる前記第2コマンドの処理が完了した場合、前記第2ストレージデバイスに対して、前記第2コマンドを中止するアボートコマンドを発行する請求項6記載の電子機器。 - 前記プロセッサは、さらに、前記ストレージデバイスによって前記第1コマンドの処理が完了した時間に基づいて、前記ストレージデバイスの疲弊度を推定する請求項6記載の電子機器。
- ストレージデバイスとホストとを含むコンピュータシステムであって、
前記ストレージデバイスは、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記ホストにより発行された複数のコマンドを並列に処理可能なコントローラとを具備し、
前記ホストは、
メモリと、
前記メモリに格納されたプログラムを実行するように構成されたプロセッサとを具備し、
前記プロセッサは、
前記ストレージデバイスに対して一つ以上のコマンドを発行することが要求される場合、前記一つ以上のコマンドがそれぞれ処理されるべき一つ以上のデッドライン時間を決定し、
前記一つ以上のデッドライン時間がそれぞれ指定された前記一つ以上のコマンドを前記ストレージデバイスに対して発行するように構成され、
前記コントローラは、
前記一つ以上のデッドライン時間に基づいて、前記一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式を決定し、
前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行するように構成されるコンピュータシステム。 - 前記プロセッサは、前記発行された一つ以上のコマンドをキューに格納するように構成され、
前記コントローラは、前記キューから、前記スケジューリング方式に従ってコマンドをフェッチし、前記フェッチされたコマンドに応じた処理を実行するように構成される請求項14記載のコンピュータシステム。 - 前記一つ以上のコマンドは、リードコマンドであり、
前記プロセッサは、前記ストレージデバイスに対して要求するリード速度に基づいて、前記一つ以上のコマンドに対してそれぞれ指定される一つ以上のデッドライン時間を決定するように構成される請求項14記載のコンピュータシステム。 - 前記一つ以上のコマンドは、ライトコマンドであり、
前記プロセッサは、前記ストレージデバイスに対して要求するライト速度に基づいて、前記一つ以上のコマンドに対してそれぞれ指定される一つ以上のデッドライン時間を決定するように構成される請求項14記載のコンピュータシステム。 - 不揮発性メモリを備える電子機器の制御方法であって、
ホストによって、処理されるべきデッドライン時間がそれぞれ指定された一つ以上のコマンドが発行された場合、前記デッドライン時間に基づいて、前記一つ以上のコマンドの各々が処理されるタイミングを示すスケジューリング方式を決定し、
前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行する制御方法。 - 電子機器の制御方法であって、
前記電子機器により発行された複数のコマンドを並列に処理可能なストレージデバイスに対して、コマンドを発行することが要求される場合、前記コマンドが処理されるべきデッドライン時間を決定し、
前記デッドライン時間が指定された前記コマンドを前記ストレージデバイスに対して発行する制御方法。 - ホストと、不揮発性メモリを備える、ホストにより発行された複数のコマンドを並列に処理可能なストレージデバイスとを含むコンピュータシステムの制御方法であって、
前記ストレージデバイスに対して、一つ以上のコマンドを発行することが要求される場合、前記一つ以上のコマンドがそれぞれ処理されるべき一つ以上のデッドライン時間を決定し、
前記一つ以上のデッドライン時間がそれぞれ指定された前記一つ以上のコマンドを、前記ホストから前記ストレージデバイスに対して発行し、
前記一つ以上のデッドライン時間に基づいて、前記一つ以上のコマンドの各々が実行されるタイミングを示すスケジューリング方式を決定し、
前記スケジューリング方式に従って前記一つ以上のコマンドに応じた処理を実行する制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018065039A JP2019175292A (ja) | 2018-03-29 | 2018-03-29 | 電子機器、コンピュータシステム、および制御方法 |
TW107123305A TWI704496B (zh) | 2018-03-29 | 2018-07-05 | 電子機器、電腦系統及其等之控制方法 |
CN201810846319.4A CN110321066B (zh) | 2018-03-29 | 2018-07-27 | 电子设备、计算机系统及它们的控制方法 |
US16/052,880 US10891061B2 (en) | 2018-03-29 | 2018-08-02 | Electronic device, computer system, and control method |
US17/108,311 US11520496B2 (en) | 2018-03-29 | 2020-12-01 | Electronic device, computer system, and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018065039A JP2019175292A (ja) | 2018-03-29 | 2018-03-29 | 電子機器、コンピュータシステム、および制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019175292A true JP2019175292A (ja) | 2019-10-10 |
Family
ID=68056191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018065039A Pending JP2019175292A (ja) | 2018-03-29 | 2018-03-29 | 電子機器、コンピュータシステム、および制御方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10891061B2 (ja) |
JP (1) | JP2019175292A (ja) |
CN (1) | CN110321066B (ja) |
TW (1) | TWI704496B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021081858A (ja) * | 2019-11-15 | 2021-05-27 | キオクシア株式会社 | メモリシステム及びその制御方法 |
US11269559B2 (en) | 2020-03-18 | 2022-03-08 | Kioxia Corporation | Data processing device |
JP2023503027A (ja) * | 2019-11-19 | 2023-01-26 | マイクロン テクノロジー,インク. | プロセッサによるメモリアクセスのための存続時間 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11709539B2 (en) | 2018-01-24 | 2023-07-25 | Western Digital Technologies, Inc. | Low power state staging |
US11023457B1 (en) * | 2018-10-19 | 2021-06-01 | Palantir Technologies Inc. | Targeted sweep method for key-value data storage |
US10732900B2 (en) | 2018-10-24 | 2020-08-04 | Western Digital Technologies, Inc. | Bounded latency and command non service methods and apparatus |
JP7370696B2 (ja) * | 2018-11-08 | 2023-10-30 | キヤノン株式会社 | 通信装置、制御方法、およびプログラム |
US10809934B2 (en) * | 2018-12-11 | 2020-10-20 | Intel Corporation | NAND direct access horizontal queue |
KR102692901B1 (ko) | 2019-01-11 | 2024-08-08 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 비휘발성 메모리 블록 내 데이터를 삭제하는 방법 및 장치 |
JP6842480B2 (ja) * | 2019-02-14 | 2021-03-17 | 株式会社日立製作所 | 分散ストレージシステム |
US11188454B2 (en) * | 2019-03-25 | 2021-11-30 | International Business Machines Corporation | Reduced memory neural network training |
CN111128290B (zh) * | 2019-12-24 | 2021-08-17 | 深圳忆联信息系统有限公司 | 固态硬盘apst特性的测试方法、装置和计算机设备 |
TWI738442B (zh) * | 2020-07-29 | 2021-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
KR20220026432A (ko) | 2020-08-25 | 2022-03-04 | 삼성전자주식회사 | 고속 링크 스타트업을 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
TWI758978B (zh) * | 2020-11-30 | 2022-03-21 | 創意電子股份有限公司 | 時脈樹的修正裝置及其修正方法 |
WO2022126578A1 (en) * | 2020-12-18 | 2022-06-23 | Micron Technology, Inc. | Dynamic interval for memory device to enter low power state |
US11941298B2 (en) * | 2021-05-11 | 2024-03-26 | Mediatek Inc. | Abort handling by host controller for storage device |
US20220374149A1 (en) * | 2021-05-21 | 2022-11-24 | Samsung Electronics Co., Ltd. | Low latency multiple storage device system |
US12067254B2 (en) | 2021-05-21 | 2024-08-20 | Samsung Electronics Co., Ltd. | Low latency SSD read architecture with multi-level error correction codes (ECC) |
JP2023037883A (ja) * | 2021-09-06 | 2023-03-16 | キオクシア株式会社 | 情報処理装置 |
TWI769080B (zh) * | 2021-09-17 | 2022-06-21 | 瑞昱半導體股份有限公司 | 用於同步動態隨機存取記憶體之控制模組及其控制方法 |
US11967314B2 (en) * | 2021-11-02 | 2024-04-23 | Capital One Services, Llc | Automatic generation of a contextual meeting summary |
US11899978B2 (en) * | 2021-12-06 | 2024-02-13 | Samsung Electronics Co., Ltd. | Method and system to abort a command for PCIe based non-volatile memory express solid-state drive |
US11880575B2 (en) * | 2022-02-21 | 2024-01-23 | Dell Products L.P. | Adaptive memory device power saving setting in an information handling system |
US20240061580A1 (en) * | 2022-08-19 | 2024-02-22 | Samsung Electronics Co., Ltd. | Submission queue entry age tracking |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2950223B2 (ja) * | 1996-01-12 | 1999-09-20 | 日本電気株式会社 | データ読出装置 |
US6330625B1 (en) * | 1999-01-15 | 2001-12-11 | Oracle Corporation | System for initiating multiple read operation requests to multiple copies of a data item and identifying a first one of the requests as having the fastest response time |
US8055816B2 (en) * | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8122158B1 (en) | 2009-09-25 | 2012-02-21 | Emc Corporation | Method for improving I/O performance of host systems by applying future time interval policies when using external storage systems |
US8806106B2 (en) * | 2010-11-12 | 2014-08-12 | Seagate Technology Llc | Estimating wear of non-volatile, solid state memory |
US8645618B2 (en) | 2011-07-14 | 2014-02-04 | Lsi Corporation | Flexible flash commands |
US8793697B2 (en) * | 2012-02-23 | 2014-07-29 | Qualcomm Incorporated | Method and system for scheduling requests in a portable computing device |
US9032177B2 (en) | 2012-12-04 | 2015-05-12 | HGST Netherlands B.V. | Host read command return reordering based on time estimation of flash read command completion |
US9256384B2 (en) * | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
JP6088837B2 (ja) | 2013-02-12 | 2017-03-01 | 株式会社東芝 | ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラム |
TWI507981B (zh) | 2013-07-05 | 2015-11-11 | Phison Electronics Corp | 指令執行方法、連接器與記憶體儲存裝置 |
US9535627B2 (en) * | 2013-10-02 | 2017-01-03 | Advanced Micro Devices, Inc. | Latency-aware memory control |
US9110786B2 (en) * | 2013-11-07 | 2015-08-18 | Sandisk Technologies Inc. | Read operation prior to retrieval of scatter gather list |
US20160026402A1 (en) | 2014-07-22 | 2016-01-28 | NXGN Data, Inc. | System and method for providing consistent, reliable, and predictable performance in a storage device |
US9977751B1 (en) * | 2014-08-25 | 2018-05-22 | Marvell International Ltd. | Method and apparatus for arbitrating access to shared resources |
CN105224253A (zh) * | 2015-09-29 | 2016-01-06 | 浪潮电子信息产业股份有限公司 | 一种固态硬盘性能优化的方法 |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10365958B2 (en) * | 2016-09-13 | 2019-07-30 | Hewlett Packard Enterprise Development Lp | Storage drive management to fail a storage drive based on adjustable failure criteria |
US10331360B2 (en) * | 2016-09-29 | 2019-06-25 | Intel Corporation | Scalable bandwidth non-volatile memory |
-
2018
- 2018-03-29 JP JP2018065039A patent/JP2019175292A/ja active Pending
- 2018-07-05 TW TW107123305A patent/TWI704496B/zh active
- 2018-07-27 CN CN201810846319.4A patent/CN110321066B/zh active Active
- 2018-08-02 US US16/052,880 patent/US10891061B2/en active Active
-
2020
- 2020-12-01 US US17/108,311 patent/US11520496B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021081858A (ja) * | 2019-11-15 | 2021-05-27 | キオクシア株式会社 | メモリシステム及びその制御方法 |
JP7408357B2 (ja) | 2019-11-15 | 2024-01-05 | キオクシア株式会社 | メモリシステム及びその制御方法 |
JP2023503027A (ja) * | 2019-11-19 | 2023-01-26 | マイクロン テクノロジー,インク. | プロセッサによるメモリアクセスのための存続時間 |
JP7445368B2 (ja) | 2019-11-19 | 2024-03-07 | マイクロン テクノロジー,インク. | プロセッサによるメモリアクセスのための存続時間 |
US11269559B2 (en) | 2020-03-18 | 2022-03-08 | Kioxia Corporation | Data processing device |
Also Published As
Publication number | Publication date |
---|---|
CN110321066A (zh) | 2019-10-11 |
US20190303024A1 (en) | 2019-10-03 |
US10891061B2 (en) | 2021-01-12 |
US20210081120A1 (en) | 2021-03-18 |
TW201942738A (zh) | 2019-11-01 |
US11520496B2 (en) | 2022-12-06 |
CN110321066B (zh) | 2023-08-11 |
TWI704496B (zh) | 2020-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520496B2 (en) | Electronic device, computer system, and control method | |
JP6517684B2 (ja) | メモリシステムおよび制御方法 | |
US9110669B2 (en) | Power management of a storage device including multiple processing cores | |
US10248322B2 (en) | Memory system | |
JP6517685B2 (ja) | メモリシステムおよび制御方法 | |
US7856526B2 (en) | Storage apparatus and power-saving control method of storage apparatus | |
US8341374B2 (en) | Solid state drive and related method of scheduling operations | |
US8286015B2 (en) | Storage array power management using lifecycle information | |
JP6527577B2 (ja) | ファイルシステムにおけるフラッシング | |
KR20070089460A (ko) | 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법 | |
US20150242310A1 (en) | Data Accessing Method And Data Accessing Apparatus | |
JP2014522066A (ja) | 入出力デバイスとコンピューティングホストとの相互運用 | |
US11321022B2 (en) | Systems and methods for scheduling flash operations | |
US8161251B2 (en) | Heterogeneous storage array optimization through eviction | |
KR20130112210A (ko) | 메모리 시스템 및 그것의 페이지 교체 방법 | |
US20230315309A1 (en) | Techniques to predict or determine time-to-ready for a storage device | |
US20190354482A1 (en) | Time-based mechanism supporting flush operation | |
JP2013200692A (ja) | メモリシステム | |
US20160259571A1 (en) | Storage subsystem | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
JP2015184883A (ja) | 計算機システム | |
CN108345428B (zh) | 控制密集型控制系统及其方法 | |
US20240201869A1 (en) | Efficient Execution Of I/O Operations In A Storage Environment | |
KR101831126B1 (ko) | 스토리지 내의 데이터 처리 장치의 제어 방법 | |
JP2019040628A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |