JP6677627B2 - 情報処理装置およびメモリアクセス方法 - Google Patents

情報処理装置およびメモリアクセス方法 Download PDF

Info

Publication number
JP6677627B2
JP6677627B2 JP2016247049A JP2016247049A JP6677627B2 JP 6677627 B2 JP6677627 B2 JP 6677627B2 JP 2016247049 A JP2016247049 A JP 2016247049A JP 2016247049 A JP2016247049 A JP 2016247049A JP 6677627 B2 JP6677627 B2 JP 6677627B2
Authority
JP
Japan
Prior art keywords
queue
command
request
processing
queues
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.)
Active
Application number
JP2016247049A
Other languages
English (en)
Other versions
JP2018101301A (ja
JP2018101301A5 (ja
Inventor
英幸 斎藤
英幸 斎藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
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 Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2016247049A priority Critical patent/JP6677627B2/ja
Priority to TW106136823A priority patent/TWI662418B/zh
Priority to CN201780077153.8A priority patent/CN110073337B/zh
Priority to PCT/JP2017/044777 priority patent/WO2018116937A1/ja
Priority to EP17883337.2A priority patent/EP3561678B1/en
Priority to KR1020197016557A priority patent/KR102246840B1/ko
Priority to US16/346,717 priority patent/US11281572B2/en
Publication of JP2018101301A publication Critical patent/JP2018101301A/ja
Publication of JP2018101301A5 publication Critical patent/JP2018101301A5/ja
Application granted granted Critical
Publication of JP6677627B2 publication Critical patent/JP6677627B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Description

本発明は、フラッシュメモリにアクセスする情報処理装置およびメモリアクセス方法に関する。
NAND型フラッシュメモリの容量拡大に伴い、従来のHDD(Hard Disk Drive)に代わる記憶装置としてSSD(Solid State Drive)が用いられるようになってきた。SSDはHDDと比較しデータアクセスを高速かつ低消費電力で行える、という利点がある一方、繰り返しのデータ読み出しや書き換えに対する耐久性が低い、という特性を有する。そのためSSDに対するデータ書き換えには、書き換え対象の領域を分散させる処理がなされる。例えばホストCPUから書き換え要求がなされたとき、指定された論理ブロックアドレスを異なる物理アドレスに置き換えることにより、書き換え対象をできるだけ複数のメモリセルに分散させる(例えば特許文献1参照)。
WO 2014/132346 A1公報
上述のとおりSSDは高速アクセスが可能なため、情報処理に必要なデータの多くを、必要となった時点で読み出すようにすることで、システムメモリの容量を抑えることができる。一方で、そのようにアクセスの頻度が増加すると、SSD特有の管理処理の問題が顕在化する。管理処理には例えば次のようなものがある。すなわち、NAND型フラッシュメモリは上書きができないため、上述のように様々な領域にデータが書き込まれた場合、いずれかの段階でそれらを連続した領域にコピーして、空いた領域のデータを、以後の書き込みに備えて消去する必要が生じる。
また、読み出しが繰り返されることにより素子の電荷がリークしデータが破壊される可能性に備え、ある段階でデータを別の領域に待避させることも必要になる。さらに書き込みを高速に行うため、1メモリセル当たり1ビットを記録するSLC(Single Level Cell)をキャッシュとして用い、後のタイミングで、1メモリセル当たり3ビットを記録可能なTLC(Triple Level Cell)に格納し直すこともなされる。これらの管理処理を、ホストCPUからの要求より優先させると、情報処理に看過できない遅延時間を生じさせることがある。一方で、管理処理を適切なタイミングで行わないと、ホストCPUからの要求を処理できなくなることもあり得る。
本発明はこうした課題に鑑みてなされたものであり、その目的は、メモリアクセスのための遅延時間を抑えながらSSDを利用した情報処理を安定的に行える技術を提供することにある。
本発明のある態様は情報処理装置に関する。この情報処理装置は、ホストプロセッサからメモリへのアクセス要求を受け付けるコマンド受付部と、アクセス要求が分類して格納された複数のキューのいずれかからアクセス要求を読み出し、実行するコマンド処理部と、を含むメモリコントローラを備え、コマンド処理部は、キューごとに設定された規則に応じたタイミングで、複数のキューのうち要求読み出し先のキューを次へ切り替えることを特徴とする。
本発明のさらに別の態様はメモリアクセス方法に関する。このメモリアクセス方法は、メモリコントローラが、ホストプロセッサからメモリへのアクセス要求を受け付けるステップと、アクセス要求を分類して格納する複数のキューのいずれかからアクセス要求を読み出すステップと、読み出したアクセス要求を実行するステップと、を含み、読み出すステップは、キューごとに設定された規則に応じたタイミングで、複数のキューのうち要求読み出し先のキューを次へ切り替えることを特徴とする。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によると、メモリアクセスのための遅延時間を抑えながらSSDを利用した情報処理を安定的に行える。
本実施の形態における情報処理装置の回路構成を示す図である。 本実施の形態における情報処理装置の機能ブロックの構成を示す図である。 本実施の形態におけるキューの構成例を示す図である。 本実施の形態において各フェーズで処理するキューの種類と、各フェーズにおけるコマンドの処理上限数と制限時間の設定例を示す図である。 本実施の形態におけるコマンド処理部が、フェーズ1およびフェーズ4においてデータを読み出す処理の手順を示すフローチャートである。 本実施の形態におけるコマンド処理部が、フェーズ2においてデータの読み出しあるいは書き込みを行う処理手順を示すフローチャートである。 本実施の形態におけるコマンド処理部が、フェーズ3において管理処理のうち読み出し処理を行う処理手順を示すフローチャートである。 本実施の形態におけるコマンド処理部が、フェーズ5において管理処理のうち書き込み処理およびデータ消去を行う処理手順を示すフローチャートである。 本実施の形態において、ホストユニットからの通知に応じてフェーズを切り替えるような規則を導入する形態を説明するための図である。 本実施の形態のコマンド調整部による調整に主眼を置いたフラッシュコントローラの処理手順を示すフローチャートである。
図1は、本実施の形態の情報処理装置の回路構成を示している。ここで例示する情報処理装置は、携帯ゲーム機、パーソナルコンピュータ、携帯電話、タブレット端末、PDAなど一般的な情報機器のいずれでもよい。情報処理装置10は、CPUを含むホストユニット12、システムメモリ14、NAND型フラッシュメモリ20(以後、単にフラッシュメモリ20と呼ぶ)、フラッシュコントローラ18を含む。
ホストユニット12は、フラッシュメモリ20に格納されたプログラムやデータをシステムメモリ14にロードし、それを用いて情報処理を行う。またアプリケーションプログラムやデータを、図示しない記録媒体駆動部において駆動された記録媒体から読み出したり、通信部によりネットワーク接続されたサーバからダウンロードしたりしてフラッシュメモリ20に格納する。この際、ホストユニット12はフラッシュコントローラ18に、フラッシュメモリ20に対するアクセス要求を発行し、フラッシュコントローラ18はそれに応じてフラッシュメモリ20に対し読み出し/書き込み処理を実施する。
フラッシュメモリ20には複数のNAND型フラッシュメモリが接続されており、データは図示するように複数のチャネル(図では「ch0」〜「ch3」の4チャネル)に分散されて格納される。フラッシュコントローラ18は、ホストユニット12とのインターフェース機能を有するホストコントローラ22、フラッシュメモリ20とのインターフェース機能を有するメモリコントローラ28、およびSRAM(Static Random Access Memory)24を含む。
ホストユニット12は、情報処理の進捗に応じてフラッシュメモリ20に対するアクセス要求を発生させ、それをシステムメモリ14に格納する。当該アクセス要求にはアクセス先の論理アドレス(LBA:Logical Block Address)が含まれる。フラッシュコントローラ18のホストコントローラ22は、システムメモリ14に格納されたアクセス要求を読み出し、LBAをフラッシュメモリ20の物理アドレスに変換する。この際、必要となるアドレス変換テーブルは、元々、フラッシュメモリ20に格納されていたものの少なくとも一部をSRAM24に展開しておく。
ホストコントローラ22は、当該アドレス変換テーブルを参照して、LBAに基づき取得した物理アドレスをメモリコントローラ28に供給する。メモリコントローラ28は、当該物理アドレスに基づきフラッシュメモリ20の該当する領域にアクセスすることにより、データを読み出したり書き込んだりする。書き込むべきデータは、ホストユニット12がシステムメモリ14に格納したものをメモリコントローラ28が読み出す。読み出したデータは、メモリコントローラ28がシステムメモリ14に格納し、ホストユニット12が読み出せるようにする。
一般に、フラッシュメモリ20に対するデータの読み出しや書き込みは、4096バイト等のアクセス単位でなされる。NAND型フラッシュメモリを用いた場合、データの上書きはできないため、データを書き込む際は、何も書き込まれていない領域を確保しておく必要がある。上述のとおり書き込み領域を分散させるために論理アドレスのみ変更してデータの更新が繰り返されると、無効となった元のデータを格納する領域が増えていき、やがて新たに書き込みができる領域が枯渇する。
データの消去は数MiB(1MiB=1020バイト)のブロック単位でなされるため、何も書き込まれていない領域を確保するには、消去対象のブロックに格納されている有効なデータを別のブロックにコピーしたうえで元のブロックのデータ全体を消去する。このような処理を一般に「ガベージコレクション(Garbage Collection)」と呼ぶ。つまりメモリコントローラ28は、フラッシュメモリ20において書き込みが可能な領域が枯渇するか、それ以前の適切なタイミングで、ガベージコレクションを実施する必要がある。
またNAND型フラッシュメモリは、電荷のリークによってデータ不良を発生させる。この電荷のリークは、データの読み出しにおける電圧印加によって加速する。メモリコントローラ28は一般に、このような不良データの誤り訂正機能を有するが、読み出し動作が高頻度になされると、誤り率が訂正能力を超え、やがてはデータが消失してしまうこともある。このような不良は一般に「読み出しディスターブ(Read Disturb)」と呼ばれる。
読み出し動作は対象のデータ領域以外に電圧を印加することによりなされるため、同一ブロックへの読み出しが繰り返されることにより、ブロック全体で不良が発生し得る。したがってメモリコントローラ28は、同一ブロックの読み出し回数が所定値に達したら、当該ブロック全体のデータを別のブロックに待避させることで、リークした電荷をチャージし直す。
さらにNAND型フラッシュメモリは、蓄積する電荷量にしきい値を設定して8段階とすることで、1メモリセル当たり3ビットのデータを記録するTLCを含む。しかしながらTLCは、2段階の電荷量により1メモリセルあたり1ビットのデータを記録するSLCと比較して複雑な書き込みシーケンスが必要となるため、書き込み処理に時間がかかる。そこでフラッシュメモリ20の一部をSLCの領域として確保しておき、それをキャッシュとして用いることにより書き込み処理を高速化する。このときメモリコントローラ28は、書き込み要求の遂行とは別の適切なタイミングで、SLCに書き込まれたデータをTLCへコピーしておく。
このようにメモリコントローラ28は、NAND型フラッシュメモリ特有の管理処理を、ホストユニット12からの要求とは別に実施する必要がある。一旦、管理処理の必要が生じると、それが完了するまでの比較的長い期間、通常のデータ読み出しや書き込み処理が待機を余儀なくされる。その結果、情報処理に看過できない遅延が発生したり処理全体のスループットが著しく低下したりすることがある。フラッシュメモリ20に格納されたデータを頻繁に読み出して表示画像を描画するような態様では、アクセス回数の増加に伴い管理処理の頻度も増加するため、画像表示までの時間制限の厳しさと相まって問題が顕在化しやすい。
そこで本実施の形態では、情報処理に必要なデータ読み出しや書き込みの処理と管理処理との実施頻度のバランスを適切に保ち、破綻なく両者を実施しつつ情報処理の遅延を最小限に抑えられるようにする。具体的には、上述のような管理処理と、ホストユニット12からのアクセス要求を、それぞれ処理内容によって分類し、異なるキューに格納する。そして処理内容の種類に応じた固有の規則で対象のキューを切り替えることにより、確実に遂行すべき処理については絶対的な尺度で完遂できるようにする。
またホストユニット12からのアクセス要求の処理頻度と管理処理の必要性が生じる頻度との因果関係を踏まえてキューの切り替え規則を決定することにより、両者のバランスを最適化するとともに所要時間やバンド幅の見積もりを容易にする。以後、管理処理のための処理要求とホストユニット12からのアクセス要求をまとめて「コマンド」と呼ぶことがある。
図2は、本実施の形態における情報処理装置の機能ブロックの構成を示している。図2に示す各機能は、ハードウェア的には図1に示す回路構成で実現でき、ソフトウェア的には、内部のメモリに保持するプログラムで実現される。したがってハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
ホストユニット12は、フラッシュメモリ20へのアクセスのためのコマンドを発行するコマンド発行部30、アプリケーションプログラムなどを処理する情報処理部32、フラッシュメモリ20に対し読み出しあるいは書き込みされるデータを入出力するデータ入出力部34を含む。システムメモリ14は、ホストユニット12から発行されたコマンドを格納する複数のキュー36および、フラッシュメモリ20に対し読み出しあるいは書き込みされるデータを格納するデータ格納部38を含む。
フラッシュコントローラ18は、コマンドが発行された旨の通知をホストユニット12から取得するコマンド受付部40、フラッシュメモリ20の管理のためのコマンドを発生させる管理コマンド生成部42、管理のためのコマンドを含む各コマンドを格納する複数のキュー44、キュー44に格納されたコマンドを順次処理するコマンド処理部46、処理対象のキューを切り替える規則を格納する切り替え規則記憶部48、および、管理処理を実施する割合を所定の手法で調整するコマンド調整部50を含む。
ホストユニット12の情報処理部32は、ユーザが選択したアプリケーションなどのプログラムを処理する。その過程においてフラッシュメモリ20に格納されたデータを読み出したり、フラッシュメモリ20にデータを書き込んだりする必要が生じたら、情報処理部32はその旨をコマンド発行部30に通知する。これに応じコマンド発行部30は、アクセス先の論理アドレスを指定して、読み出しあるいは書き込みのコマンドを発行する。
より詳細には、システムメモリ14の複数のキュー36のいずれかにコマンドを格納するとともに、フラッシュコントローラ18にその旨を通知する。この際、コマンド発行部30は、読み出し要求か書き込み要求か、といったアクセス内容のほか、緊急性の高さに基づきコマンドを分類し、分類結果に対応するキューに格納する。このため、アクセス内容、制限時間、アクセスするデータのサイズなどに基づくコマンドの分類規則と、対応するキューのアドレス情報を、情報処理部32が処理するプログラムなどであらかじめ設定しておく。
コマンドが書き込み要求である場合、データ入出力部34は、書き込むべきデータを情報処理部32から取得し、システムメモリ14のデータ格納部38に格納する。またデータ入出力部34は、読み出し要求に応じてフラッシュコントローラ18がフラッシュメモリ20から読み出したデータを、データ格納部38から読み出して情報処理部32に供給する。
フラッシュコントローラ18のコマンド受付部40は、コマンドが発行された旨の通知をホストユニット12から受け付け、システムメモリ14の該当するキューからコマンドを読み出したうえ、内部に保持する複数のキュー44のうち対応するキューに格納する。ここでフラッシュコントローラ18が保持するキュー44は、システムメモリ14内の複数のキュー36と同じ構成の複数のキューを含む。あるいはシステムメモリ14内のキュー36を、キュー44の一部として参照できるようにしてもよい。
管理コマンド生成部42は、上述のガベージコレクション、読み出しディスターブ回避のためのデータコピー、SLCからTLCへのデータコピー、といった管理処理が必要になった段階で、それらの処理を要求するコマンドを発行する。より詳細には、フラッシュメモリ20に対するデータの書き込み状況や読み出し状況を監視して、管理処理のコマンドを発行すべきタイミングを判定する。判定規則は管理処理の内容ごとにあらかじめ設定しておく。
そして、処理内容、データのコピー元アドレス、コピー先アドレス、データ消去すべきブロックなどを指定したコマンドを、キュー44の管理処理のためのキューのうち、処理内容に対応するキューに格納する。なお同図では、キュー44のうち、ホストユニット12が発行したコマンドを格納するキューを白抜き、管理コマンド生成部42が発行したコマンドを格納するキューを網掛けで示して区別している。
コマンド処理部46は、キュー44に格納されたコマンドを順次処理する。この際、1つのキューに格納されたコマンドは、その格納順を守って処理する。またコマンド処理部46は処理対象のキューを、それぞれに設定された切り替え規則にしたがって次のキューへ切り替える。すなわち別のキューに格納されたコマンドは、発行順と異なる順序で処理されることがあり得る。キューの切り替え規則は切り替え規則記憶部48に格納しておき、コマンド処理部46が参照する。
キューから読み出したコマンドが書き込み要求である場合、コマンド処理部46は、書き込むべきデータをシステムメモリ14のデータ格納部38から読み出し、コマンドに含まれる論理アドレスに対応する領域に当該データを書き込む。コマンドが読み出し要求である場合、コマンド処理部46は、コマンドに含まれる論理アドレスに対応する領域から読み出したデータを、システムメモリ14のデータ格納部38に格納する。コマンドがフラッシュメモリ20内部でのデータの移動である場合、コマンド処理部46は、コマンドに含まれるコピー元のアドレスからコピー先のアドレスへデータをコピーする。また必要に応じてコピー元のブロックのデータを消去する。
コマンド調整部50は、管理処理が完了せずメモリアクセスが破綻することのないように、実施する処理の割合を調整する。例えばキュー44に格納された管理処理のためのコマンドの数が所定のしきい値を超えたとき、切り替え規則記憶部48に格納された、キューの切り替え規則の少なくともいずれかを一時的に変更したり、ホストユニット12にその旨を通知したりする。
前者の場合、管理処理のコマンドを格納するキューから次のキューへ切り替える規則として設定されている制限時間やコマンド処理数の上限を増加させたり、それ以外のキューのコマンド処理数の上限を減少させたりする。これにより、実質的に管理処理を実施する割合を増やすことができる。キュー44に格納された管理処理のためのコマンドの数が上記しきい値以下となったらキューの切り替え規則を元に戻す。
ホストユニット12に通知する場合、ホストユニット12のコマンド発行部30は通知を受けてコマンドの発行を制限する。例えば緊急性の低いコマンドの発行を一時停止したり発行の頻度を所定値以下に制限したりする。このようにしても実質的に管理処理を実施する割合を増やすことになる。なおキューの切り替え規則を変更したりホストユニット12に通知したりするタイミングは上記以外であってもよい。
例えば、ガベージコレクションや読み出しディスターブを回避するための処理の必要性は、それまでのメモリアクセスの状況によって予測できるため、前もってそれらの対策を講じておくこともできる。具体的には、書き込み可能なブロック数が所定のしきい値以下になったとき、ガベージコレクションのコマンドが近々発行されると判定する。ここで用いるしきい値は当然、実際にガベージコレクションのコマンドを発行する際のしきい値より大きい値とする。
あるいは、同一ブロックに対する読み出し処理の回数が所定のしきい値に達したとき、読み出しディスターブ回避のためのデータコピーコマンドが近々発行されると判定する。ここで用いるしきい値は当然、実際にデータコピーコマンドを発行する際のしきい値より小さい値とする。そしてこれらのタイミングで、キューの切り替え規則を変更したりホストユニット12に通知したりすれば、前もって調整できる分、調整量を抑えることができる。
書き込み可能なブロック数や同一ブロックに対する読み出し処理の回数を、ホストユニット12へ定期的に通知することにより、ホストユニット12によるコマンドの発行を徐々に制限できるようにしてもよい。また、キューの切り替え規則を変更する対応と、ホストユニット12への通知は、独立して行ってもよいし、同時に行ってもよい。このような調整処理により、ホストユニット12からのアクセス要求の処理とフラッシュメモリ20自身が必要とする管理処理とのバランスを適切に保ち、かつ緊急性の高いコマンドの処理については低遅延を保障することができる。
図3は、キュー44の構成例を示している。ここで円柱は各キューを模式的に示しており、その直下には、各キューに格納されるコマンドの種類を示している。フラッシュメモリ20は異なる名前空間(NS: Name Space)を有する論理的なパーティションに分けられ、排他アクセスされる。キューも当該パーティションごとに設けられ、図では上段から順に、識別符号a、b、cの名前空間(「NSIDa」、「NSIDb」、「NSIDc」)に対し設けられるキューを示している。さらに最下段には、管理処理を示す「BG Job」(Background Job)として、それに対し設けられるキューも示している。
この例で「NSIDa」は、通常のファイルシステムによりアクセスされるパーティションであり、標準的な読み出しコマンドと書き込みコマンドが混在するキュー51を設けている。「NSIDb」は、読み出しのみのファイルアーカイブを扱うためのパーティションであり、一旦、書き込みコマンド専用のキュー58を用いてファイルを書き込んだら、読み出しコマンド専用のキュー52、54、56を用いてデータを読み出す。
ここで読み出しコマンド専用のキューは、緊急性の高さに応じて複数のキューで構成され、同図では緊急性が最も高い「緊急」のキュー52、次に緊急性が高い「高優先度」のキュー54、緊急性が最も低い「通常優先度」のキュー56、の3段階としている。ただし段階数をこれに限る主旨ではない。また書き込みコマンド専用のキュー58は、「NSIDa」のキュー51と同程度の優先度を有する標準的なキューとしている。
「NSIDc」はSLCで構成されるパーティションであり、高速な書き込み専用のキュー60と、読み出しコマンドと書き込みコマンドが混在するキュー62を設けている。また後者は「NSIDa」のキュー51と同程度の優先度を有する標準的なキューとしている。
「BG Job」としては上述のとおり、SLCからTLCへデータをコピーするコマンドのためのキュー64、読み出しディスターブ回避のためのデータコピーコマンドのためのキュー66、ガベージコレクションコマンドのためのキュー68を設ける。キューとしてはこのほか、運用中にバックグラウンドで実行すべき上述のような管理処理とは別に、システムを管理するためのコマンドを格納するキューなどがあってよい。
フラッシュコントローラ18のコマンド処理部46は上述のとおり、切り替え規則記憶部48に格納された規則に従いキューを切り替えながら、格納されているコマンドを順に処理していく。より詳細には、キュー51〜68自体を複数種類に分け、各種類に対し処理の期間を割り当てて循環させる。ある種類のキューを処理対象としている期間において、コマンドの処理数が上限まで達した時点、あるいは制限時間が満了した時点で、次の種類のキューを処理対象とする期間に移行する。処理上限数や制限時間は、キューの種類ごとに独立して設定可能とする。以後、キューの種類ごとに割り当てられる期間を「フェーズ」と呼ぶ。
図4は各フェーズで処理するキューの種類と、各フェーズにおけるコマンドの処理上限数と制限時間の設定例を示している。この例ではフェーズ1からフェーズ5の5つの期間に分けており、フェーズ1、2、3、4、5、1、2、・・・と循環して移行させる。まずフェーズ1は、NSIDbに対する読み出し専用のキュー、すなわち図3の例ではキュー52、54、56の3つのキューを処理対象とする。これらのキューのうち、緊急性が高いキューほど優先して処理対象とする。コマンドの処理上限は50個としている。なおコマンド数は、所定サイズのデータに対するアクセスを1単位としてカウントする。以後の説明でも同様である。
フェーズ2は、NSIDcに対する高速書き込み専用のキュー、NSIDaおよびcに対する標準の読み出し/書き込みのキュー、および、NSIDbに対する標準の書き込み専用のキューを処理対象とする。これらは図3の例では、キュー60、51、62、58にそれぞれ対応する。これらのキューのうち、高速書き込み専用のキュー60にコマンドが格納されていれば、それを優先することによりSLCへの高速書き込みを実現する。
フェーズ3は、BG Job、すなわち管理処理用のキュー(図3の例ではキュー64、66、68)を処理対象とする。これらのキューに格納されるコマンドはいずれも、フラッシュメモリ20に格納済みのデータを別の領域に移す処理を含むが、フェーズ3ではそのうち、元のデータを読み出す部分のみを実施する。読み出したデータは一時的に内部のメモリあるいはシステムメモリ14に格納しておく。
フェーズ4はフェーズ1と同様、NSIDbに対する読み出し専用のキューを処理対象とする。同じキューに対する処理を2つの期間に分けることで、前の期間終了直後に発行されたコマンドを次の期間ですぐに処理でき、最大遅延時間を少なくできる。フェーズ5は、BG Job、すなわち管理処理用のキューに格納されたコマンドのうち、フェーズ3で読み出したデータの書き込みおよび、コピーにより無効となったデータの消去を行う。
例えばNSIDbに格納されたデータを用いて、所定のフレームレートで表示画像を描画する場合、そのデータ読み出しが遅延することにより画面がフリーズしたりコマ落ちしたりすることがあり得る。管理処理用のキューに格納されるコマンドはいずれも、処理の完了に多くの時間を要するため、フェーズ3とフェーズ5で分けて2段階の処理とすることにより、表示画像の描画などリアルタイム性を追求される処理が妨げられないようにする。
またデータの読み出しやSLCへの書き込みと比較し、TLCへの書き込みやデータ消去は数倍以上の時間を要する。したがって後者をフェーズ5としてまとめるとともに、制限時間を設けて、処理の途中であっても一旦中断して別のフェーズへ移行できるようにする。図の例では、フェーズ5の制限時間を「3.0msec」としている。制限時間のほか、緊急性の高いキュー、例えば図3の緊急読み出しキュー52にコマンドが格納された時点で、フェーズ5の処理を中断するようにしてもよい。
これにより、上述のとおりNSIDbから読み出したデータを用いて表示画像を描画する態様において、表示画像への影響を最小限に抑えることができる。なおフェーズ5の処理を中断した場合、中断させた処理が完了するまでは、フェーズ2およびフェーズ3をスキップしてフェーズを移行させてもよい。
図4では、各フェーズに与えるコマンド数の処理上限と、それにより想定される最大所要時間も例示している。フェーズ1および4では、NSIDbからのデータ読み出しを「50」コマンドを上限として処理する。読み出し処理が1コマンド当たり100μsec、それ以外に要する時間を100μsecとすると、フェーズ1および4の所要時間は最大5.1msecとなる。フェーズ2では、NSIDa〜NSIDcに対する書き込みであれば「1」コマンド、読み出しであれば「4」コマンドを上限として処理する。
ここでなされるSLCへの書き込み処理が1コマンド当たり500μsecとし、読み出し処理が上述同様、1コマンド当たり100μsec、それ以外に要する時間を100μsecとすると、書き込み、読み出しのいずれにおいてもフェーズ2の所要時間は最大0.5msecとなる。フェーズ3では、コピー元のデータの読み出しを「3」コマンドを上限として処理する。読み出し処理が上述同様、1コマンド当たり100μsec、それ以外に要する時間を100μsecとすると、フェーズ3の所要時間は最大0.4msecとなる。
フェーズ5では、コピー先へのデータの書き込みを「1」コマンドを上限として処理する。無効となった領域のデータ消去は上述とおり制限時間「3.0msec」で拘束され、徐々に進捗させていく。このように制限を与えると、フェーズ1からフェーズ5までの1サイクル分の処理は最大で14.1msecとなり、メモリアクセスのための遅延時間を一定値以下に抑え込むことができる。またフラッシュメモリ20とフラッシュコントローラ18間に必要なバンド幅も所定値以下に制御できる。
図示する例で、1コマンド当たりのデータサイズを65536B(バイト)とした場合、14.1msecの周期中、フェーズ1および4で最大100コマンド分の読み出し処理がなされることから、必要なバンド幅はNANDの1チャネル当たり、65536×100/14.1=465MB/secとなる。同様に、フェーズ2で処理されるコマンドのために必要なバンド幅はNANDの1チャンネル当たり、読み出し処理は18.6MB/sec、書き込み処理は4.65MB/secとなる。なおここで述べた各種数値や設定はあくまで例示であり、情報処理の内容や処理性能などに応じて適宜変更してよい。
図5はフェーズ1およびフェーズ4において、コマンド処理部46がNSIDbからデータを読み出す処理の手順を示すフローチャートである。この例は、図3に示すように緊急性の高さに応じて読み出し専用のキューが3つに分けられている場合を想定している。まず最も緊急性の高いキュー(図3の緊急の読み出しキュー52)にコマンドが格納されているか否かを確認する(S10)。格納されている場合(S10のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、論理アドレスを物理アドレスに変換するなどして該当領域にあるデータを読み出す(S12)。
最も緊急性の高いキューにコマンドが格納されている限りは、それを順次読み出して処理する(S10のY、S12)。当該キューに処理すべきコマンドがなく(S10のN)、それまでに処理したコマンド数が設定された処理上限未満であれば(S14のY)、次に緊急性の高いキュー(図3の高優先度の読み出しキュー54)にコマンドが格納されているか否かを確認する(S16)。格納されている場合(S16のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、上述と同様にデータを読み出す(S18)。
これによっても設定された処理上限数に到達しなければ(S20のY)、コマンド処理部46はコマンドを1つ処理する都度、最も緊急性の高いキューにコマンドが格納されているか否かを再び確認し、格納されていればそれを処理する(S10のY、S12)。最も緊急性の高いキューに処理すべきコマンドがなく(S10のN)、それまでに処理したコマンド数が設定された処理上限未満であれば(S14のY)、次に緊急性の高いキューに格納されているコマンドを処理する(S16のY、S18)。当該キューに処理すべきコマンドがなければ(S16のN)、最も緊急性の低いキュー(図3の通常優先度の読み出しキュー56)にコマンドが格納されているか否かを確認する(S22)。
格納されている場合(S22のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、上述と同様にデータを読み出す(S24)。これによっても設定された処理上限数に到達しなければ(S20のY)、コマンド処理部46はコマンドを1つ処理する都度、最も緊急性の高いキューにコマンドが格納されているか否かを再び確認し、格納されていればそれを処理する(S10のY、S12)。このようなサイクルにおいていずれかの処理によりコマンドの処理数が上限に達したり(S14のNまたはS20のN)、処理すべきコマンドがなくなったりしたら(S22のN)、当該フェーズを終了させて次のフェーズへ移行する。
このような処理手順により、緊急性が高いキューほどを高頻度で監視できるとともにコマンドを先に処理でき、コマンドの格納から処理までの遅延時間を最小限に抑えることができる。また比較的緊急性の低いコマンドについては、処理数の上限を拘束条件として処理を後回しにし、別のフェーズへ譲ることで、フェーズ全体での所要時間やバンド幅を制御できる。
図6はフェーズ2おいて、コマンド処理部46がNSIDa〜cに対しデータの読み出しあるいは書き込みを行う処理手順を示すフローチャートである。コマンド処理部46はまず、NSIDcに対する高速の書き込みのためのキュー(図3の高速書き込みキュー60)にコマンドが格納されているか否かを確認する(S30)。格納されている場合(S30のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、論理アドレスを物理アドレスに変換するとともに、システムメモリ14から読み出したデータを該当領域に書き込む(S32)。
この時点で処理したコマンド数が設定された書き込み処理の上限に達していたら、当該フェーズを終了させて次のフェーズへ移行する(S34のN)。図4で示した処理上限数の設定によれば、フェーズ2における書き込みは1コマンドを上限とするため、S32の処理を1度実施したら本フェーズは終了することになる。それ以外の設定であって、処理したコマンド数が設定された書き込み処理の上限未満であれば(S34のY)、再度、高速の書き込みのためのキューにコマンドが格納されているか否かを確認し、格納されていればそれを処理する(S30のY、S32)。
それを繰り返す過程で書き込み処理の上限に到達したら、当該フェーズを終了させて次のフェーズへ移行する(S34のN)。高速の書き込みのためのキューに処理すべきコマンドがなければ(S30のN)、NSIDa〜NSIDcに対する標準的な読み出しあるいは書き込みのためのキュー(図3の標準の読み出し/書き込みキュー51および62、標準の書き込みキュー58)のいずれかにコマンドが格納されているか否かを確認する(S36)。
格納されている場合(S36のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、上述と同様にデータを書き込んだり読み出したりする(S38)。フェーズ2では、読み出し処理と書き込み処理のそれぞれに対し処理上限が設定されるため、1コマンドを処理する都度、その処理内容ごとに、コマンド数と上限を比較する。処理上限数に到達していなければ(S34のY)、再度、高速の書き込みのためのキューにコマンドが格納されているか否かを確認し、格納されていればそれを処理する(S30のY、S32)。
当該キューに処理すべきコマンドがなければ(S30のN)、標準的な読み出しあるいは書き込みのためのキューにコマンドが格納されているか否かを確認し、格納されていればそれを処理する(S36のY、S38)。当該サイクルにおいて処理したコマンド数が上限に到達したり、処理すべきコマンドがなくなったりしたら、当該フェーズを終了させて次のフェーズへ移行する(S34のNまたはS36のN)。このような処理手順により、高速の書き込みを優先的に処理できる。なおS36において確認処理の対象とされるキューは図3の例では3つあるが、基本的にはそれらを順繰りに確認し、コマンドがあれば処理するラウンドロビン方式でよい。
図7はフェーズ3において、コマンド処理部46が管理処理のうち読み出し処理を行う処理手順を示すフローチャートである。コマンド処理部46は、管理処理に対して設けたキュー(図3のSLC→TLCコピーのキュー64、読み出しディスターブ回避用データコピーのキュー66、ガベージコレクションのキュー68)のいずれかにコマンドが格納されているか否かを確認する(S40)。格納されている場合(S40のY)、コマンド処理部46は当該キューに最先に格納されたコマンド読み出し、そのうちデータを読み出す処理のみを実施する(S42)。
処理したコマンド数がフェーズ3で設定されている上限未満であれば、キューにコマンドがある限り、そのうちの読み出し処理を繰り返す(S44のY、S40のY、S42)。処理の上限に達したとき(S44のN)、あるいは処理すべきコマンドがいずれのキューにもないとき(S40のN)、当該フェーズを終了させて次のフェーズへ移行する。なおS40において確認処理の対象とされるキューは複数(図3の例では3つ)あるが、それらをラウンドロビン方式で順繰りに確認し、コマンドが存在すれば処理することを基本とする。
またフェーズ3については、処理数の上限を絶対値で設定する代わりに、フェーズ5で書き込みを実施する分だけ読み出すようにしてもよい。またSLCの空き領域が所定サイズより少なくなった場合、フェーズ2におけるSLCへの書き込み処理のコマンドをスキップしてフェーズ3に移行することにより、TLCへのデータコピーが先になされるようにする。この場合もフェーズ1や4は順序通りに行うことで必要なデータ読み出しは遂行される。
図8はフェーズ5において、コマンド処理部46が管理処理のうち書き込み処理およびデータ消去を行う処理手順を示すフローチャートである。なおフェーズ3において読み出し処理のみ実施した管理処理のコマンドは、フラグを立てるなどして他と区別したうえでキューに残しておく。あるいは管理処理のコマンドを読み出しコマンド、書き込みコマンド、消去コマンドに分けて格納し、フェーズ3で処理された読み出しコマンドをキューから削除してもよい。
まずコマンド処理部46は、それ以前のフェーズ5のタイミングで処理を中断したコマンドがないか確認する(S50)。上述のとおりフェーズ5における処理は比較的時間を要するため、緊急の読み出しキューにコマンドが格納されたり、フェーズ5の制限時間を満了したりした場合に処理を中断してフェーズ1に移行する。処理を中断したコマンドは図示しない別のキューに格納するか、それが識別されるような状態で元のキューに残しておく。
中断したコマンドがあれば(S50のY)、当該コマンドを中断した時点から再開する(S54)。中断したコマンドがなければ(S50のN)、コマンド処理部46は管理処理に対して設けたキューのいずれかにコマンドが格納されているか否かを確認する(S52)。ただしここで対象とするコマンドは、フェーズ3においてデータの読み出しのみが実施されているコマンドである。そのようなコマンドがなければ、当該フェーズを終了させ次のフェーズへ移行する(S52のN)。コマンドがあれば(S52のY)、当該コマンドの書き込み処理と、必要に応じたデータ消去処理を開始する(S54)。
そして、NSIDbに対する緊急性の最も高い読み出しキューにコマンドが格納されないか、フェーズ5に設定されている制限時間に達しないか、を確認しながら処理を続行する(S56のN、S58のN、S60のN)。緊急キューへのコマンドの格納、および制限時間の満了のどちらかが発生したら(S56のYまたはS58のY)、開始した処理を中断して次のフェーズへ移行する(S62)。この場合、フェーズ1、フェーズ4と移行してフェーズ5へ再び戻り、中断した処理を再開する。
緊急キューへのコマンドの格納、および制限時間の満了のどちらも発生せず処理が完了したら(S60のY)、コマンドの処理数が上限に達しているかを確認し、達していた場合、当該フェーズを終了させて次のフェーズへ移行する(S64のN)。図4で示した処理上限数の設定によれば、フェーズ5における書き込みは1コマンドを上限とするため、S60において書き込み処理が完了した時点で本フェーズは終了することになる。またデータ消去処理は長時間に渡るため、処理が完了した時点でフェーズを終了させる。
それ以外の設定であって、処理したコマンド数が設定された書き込み処理の上限未満であれば(S64のY)、各キューにコマンドが格納されているか否かを確認し、格納されていればそれを処理する(S52のY、S54〜S60)。この場合も当然、緊急キューへのコマンドの格納、および制限時間の満了のどちらかが発生したら(S56のYまたはS58のY)、開始した処理を中断して次のフェーズへ移行する(S62)。一方、処理が完了し、コマンドの処理数が上限に達したら当該フェーズを終了させて次のフェーズへ移行する(S64のN)。
ところでフェーズ3およびフェーズ5で実施される管理処理の発生頻度は、フェーズ1、フェーズ2、およびフェーズ4で実施されるコマンドの数に影響される。例えばSLCをTLCにコピーする処理は3ページ単位でなされる。ここでフェーズ2において毎回、1ページ分のSLCへの書き込みがなされた場合、3周期に1回、SLCからTLCへのコピーを行うことで帳尻を合わせることができる。したがって残りの66%の時間を別の管理処理に割り当てられる。
また1ブロックが768ページで、フェーズ3およびフェーズ5において1周期当たり3ページのコピーを完了させると、256周期で1ブロックのコピーが完了する。読み出しディスターブを回避するため、同一ブロックが平均1,000,000回、読み出されたら該当ブロックをコピーする場合、フェーズ1およびフェーズ4において1周期当たり最大100回の読み出しがなされると、10,000周期に1回、ブロックコピーの必要が生じる。1ブロックのコピーに上述のとおり256周期を要するとすると、読み出しディスターブ回避のための管理処理に必要な時間割合は最大で256/10000≒2.5%である。
このようにホストユニット12から発行されるコマンド数と管理処理の発生との因果関係を考慮し、適切なバランスで各フェーズにおけるコマンドの処理上限数を設定することにより、管理処理を破綻させずに全てを円滑に処理できる。また各フェーズで処理対象とするキューを、上述のとおり処理内容や優先度に応じて適切に切り替えることにより、各コマンドの発行から処理までの遅延時間を制御することができる。
例えば図4の設定によれば、NSIDbのキューに格納された先頭コマンドの処理が他の処理により遅延する時間は、最大でもフェーズ5の制限時間である3.0msec程度に抑えることができる。これにより、NSIDbから読み出したデータを用いて表示画像を描画する場合に、画面のフリーズやコマ落ちなどの不具合を最小限に抑えることができる。
これまで述べたように本実施の形態では、コマンドの内容に応じてフェーズ、ひいてはキューの切り替え規則を独立に設定する。そこで、より情報処理の特性に即した規則を特定のフェーズに課すこともできる。図9はその一例として、ホストユニット12からの通知に応じてフェーズを切り替える規則を導入する形態を説明するための図である。この例において情報処理装置は、フラッシュメモリ20に格納されたデータを用いて直後に表示すべき画像を描画する処理を、表示装置のフレーム表示周期に合わせて繰り返す。
フラッシュメモリ20から、描画に必要なデータをその場で読み出すようにすると、前もって多くのデータを読み出しておくよりシステムメモリ14の容量を節約できる。図は横方向を時間軸とし、上段から、フレームn、フレームn+1、フレームn+2、・・・を表示装置に表示する期間、各フレームを描画する期間、およびフラッシュコントローラ18によるメモリアクセスの各フェーズを矩形で示している。
最上段の表示処理における黒塗りの期間は垂直帰線期間に対応する。このような周期的な表示処理に対し、情報処理装置(主にホストユニット12)は、表示が開始される前に同フレームの描画を完成させる必要がある。画像の内容によって、各フレームの描画期間およびフラッシュメモリ20から読み出すべきデータのサイズやその要求頻度も異なる。描画期間の矩形から下向きに出ている白抜きの矢印(例えば矢印80)は、ホストユニット12からの読み出しコマンドの発行タイミングを例示している。
図示するように、あるフレームの描画が完了してから次のフレームの描画が開始されるまでには、フレームの描画期間に応じた空き時間Tn+1、Tn+2、Tn+3、・・・が発生する。そこでこの時間を利用して、管理処理のうち時間を要する処理をまとめて行うことにより、描画期間においては読み出し処理の遅延がより抑えられるようにする。具体的には、1フレーム分の描画処理が完了する都度、ホストユニット12からフラッシュコントローラ18へその旨を通知する。同図ではこのタイミングを矢印82a、82b、82c、82dで示している。
フラッシュコントローラ18は、当該通知を受けたことを条件に、フェーズ4からフェーズ5へ移行する。同図ではこのタイミングを矢印84a、84b、84c、84dで示している。このようにホストユニット12における処理の進捗状況に合わせて、フラッシュコントローラ18が処理するコマンドの種類を切り替えることにより、ホストユニット12が必要とする処理と、フラッシュメモリ20自身が必要とする処理とを、それぞれに適したタイミングで実施できる。
同図の例では、ホストユニット12から描画データの読み出しコマンドが発行される期間、すなわちフレームの描画期間には、フェーズ1〜4に限定してコマンド処理がなされるため、読み出し処理の遅延時間は最大でもフェーズ2およびフェーズ3の期間分ですむことになる。図4で示したような処理上限数を設定した場合、当該遅延時間は最大0.9msecとなる。
図10は、コマンド調整部50による調整に主眼を置いたフラッシュコントローラ18の処理手順を示すフローチャートである。フラッシュコントローラ18のコマンド受付部40、管理コマンド生成部42、およびコマンド処理部46は、これまで述べたようにして、ホストユニット12から発行されたコマンドを受け付けたり管理処理のためのコマンドを生成したりして、順次処理する(S70)。このステップには詳細には上述のとおり、フェーズ1〜5や、各フェーズで処理対象とするキューを、切り替え規則記憶部48に設定された規則に従い切り替える処理が含まれる。
さらに、図9で示したようにホストユニット12からの通知を条件としてフェーズ5へ移行する動作が含まれていてよい。このようなコマンド処理と並行して、コマンド調整部50は、フラッシュメモリ20のうち同一ブロックに対する読み出しの回数が所定のしきい値を超えたか否かを監視する(S72)。また新たに書き込みが可能なブロックの数が所定のしきい値以下となったか否かを監視する(S74)。前者は読み出しディスターブを回避するためのデータコピーコマンドの発行タイミングの到来を事前に予測するものである。
後者はガベージコレクションコマンドの発行タイミングの到来を事前に予測するものである。どちらの監視結果も否であれば、コマンド調整部50による調整はなされず、コマンド処理が続行される(S72のN、S74のN、S70)。同一ブロックに対する読み出しの回数が所定のしきい値を超えるか(S72のY)、新たに書き込みが可能なブロックの数が所定のしきい値以下となったら(S74のY)、コマンド調整部50は切り替え規則記憶部48に格納された切り替え規則のいずれかを調整する(S76)。
例えばフェーズ1、フェーズ2、フェーズ4において、通常優先度の読み出しキューや標準の書き込み、読み出しのキューに格納されたコマンドを一時的に処理しないようにしたり、処理数を制限したりする一方、フェーズ3やフェーズ5の処理上限数や制限時間を増加させる。これにより、1周期に対し管理処理に使える時間の割合が増加する。
またコマンド調整部50は、同一ブロックに対する読み出しの回数が所定のしきい値を超えた旨や、新たに書き込みが可能なブロックの数が所定のしきい値以下となった旨を、ホストユニット12へ通知する(S78)。これに応じてホストユニット12は、通常優先度の読み出し処理や標準の書き込み処理、読み出し処理のコマンドの発行数を一時的に低下させる。このようにしても、切り替え規則の変更と同様、1周期に対し管理処理に使える時間の割合が増加する。なおホストユニット12へは、同一ブロックに対する読み出し回数や書き込み可能なブロック数を随時通知し、ホストユニット12側でコマンドの発行数を調整してもよい。
結果として、ホストユニット12からの要求のうち緊急性の高いコマンドの処理を保障したうえで、管理処理が間に合わず正確なデータが読み出せなくなったり書き込みができなくなったりすることもなくなる。なおS72とS74の監視項目はどちらか一方のみとしてもよいし、管理処理が必要になることを予測できるような別の監視項目を採用したり組み合わせたりしてもよい。例えば管理処理のキューに実際に格納されているコマンドの数にしきい値を設けたり、それまでのコマンドの格納状況から以後の格納数を予測したりして調整の必要性を判定してもよい。
またS76の切り替え規則の変更とS78のホストユニット12への通知はどちらか一方のみ実施してもよい。また図示を省略しているが、監視項目がターゲットとする管理処理が完了したら、コマンド調整部50は切り替え規則を元に戻したり、その旨をホストユニットに通知してコマンドの発行数を通常状態に戻させたりする。
以上述べた本実施の形態によれば、フラッシュメモリに対するアクセス要求を、読み出し、書き込みといった処理の内容とその中での優先度に応じた異なるキューに格納する。そしてキューごとに設定した規則に従い、対象のキューを切り替えてコマンドを読み出し、処理する。これにより情報処理の特性、例えばデータ読み出しおよび書き込みのどちらが支配的か、どちらが時間に対する拘束条件が厳しいか、両者が対等か、といった特性に適した順序や頻度でアクセス要求を処理できる。
また複数のキューを分類し、種類ごとに処理する期間(フェーズ)を設ける。これにより個々のキューに対しては、同一フェーズで処理されるキュー間の切り替え規則とフェーズ間の切り替え規則を2重に課すことになり、それらの組み合わせによりきめ細かい設定、ひいては実態に即した柔軟な運用が可能になる。
このようなシステムに、ガベージコレクション、読み出しディスターブ回避のためのデータコピー、SLCからTLCへのデータコピー、といった管理処理用のキューも同様に組み入れる。これにより、ホストユニットからの緊急性の高いアクセス要求の処理が、管理処理によって滞るのを防ぐことができる。特に上記のような管理処理は、ホストユニットからのアクセス要求の内容や頻度に依存して発生するため、コマンド処理数の上限や制限時間など、キューごとに絶対的な指標を用いた規則を設定することにより、双方のバランスを最適化し、破綻することなく必要な処理を低遅延で行える。またフェーズを循環させることにより、処理周期の見積もりが容易となり、バンド幅の制御が可能となる。
さらに上記の管理処理には、頻度は高くないが一旦、必要性が生じると多くの時間を要する独特の性質を有するものがある。そのような処理が開始されるタイミングを事前に予測し、一時的に切り替え規則を変化させたりホストユニットによる要求のうち緊急性の低いものの発行を抑制したりする。これにより、管理処理に割り当てる時間を一時的に増加させて促進させる一方、ホストユニットの処理に最低限必要なアクセス処理を担保する、といった臨機応変な対応を容易に実現できる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
10 情報処理装置、 12 ホストユニット、 14 システムメモリ、 18 フラッシュコントローラ、 20 フラッシュメモリ、 22 ホストコントローラ、 24 SRAM、 28 メモリコントローラ、 30 コマンド発行部、 32 情報処理部、 34 データ入出力部、 36 キュー、 40 コマンド受付部、 42 管理コマンド生成部、 44 キュー、 46 コマンド処理部、 48 切り替え規則記憶部、 50 コマンド調整部。

Claims (17)

  1. ホストプロセッサからメモリへのアクセス要求を受け付けるコマンド受付部と、
    前記アクセス要求が分類して格納された複数のキューのいずれかから前記アクセス要求を読み出し、実行するコマンド処理部と、
    を含むメモリコントローラを備え、
    前記コマンド処理部は、前記複数のキューを分類してなるグループ内で、前記キューごとに設定された規則に応じたタイミングで、前記複数のキューのうち要求読み出し先のキューを次へ切り替えるとともに、前記グループごとに設定された処理の制限に基づくタイミングで、前記要求読み出し先のキューを次のグループへ切り替えることを特徴とする情報処理装置。
  2. 前記複数のキューは、アクセスの内容および優先度によって分類された前記アクセス要求をそれぞれ格納するとともに、当該アクセスの内容によって前記グループに分けられ、
    前記コマンド処理部は、前記グループごとに独立して設定された処理上限数または制限時間に到達した時点で、前記要求読み出し先のキューを次のグループへ切り替えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記コマンド処理部は、前記優先度によって設定された規則に応じたタイミングで、読み出し先のキューを前記グループ内で切り替えることを特徴とする請求項に記載の情報処理装置。
  4. 前記メモリコントローラは、前記メモリの管理に必要な処理の要求を発行する管理コマンド生成部をさらに備え、
    前記複数のキューはさらに、前記管理コマンド生成部が発行した管理用処理の要求を格納するキューを含み、
    前記コマンド処理部は、前記キューから、前記管理用処理の要求を読み出してさらに実行することを特徴とする請求項1から3のいずれかに記載の情報処理装置。
  5. 前記コマンド処理部は、前記管理用処理の要求を格納するキューを読み出し先としている際、設定された制限時間を経過したタイミングで、要求読み出し先を次のキューへ切り替えることを特徴とする請求項に記載の情報処理装置。
  6. 前記コマンド処理部は、前記管理用処理の要求を格納するキューを読み出し先としている際、別のキューに所定の優先度を有するアクセス要求が格納されたタイミングで、要求読み出し先を当該別のキューへ切り替えることを特徴とする請求項またはに記載の情報処理装置。
  7. 前記コマンド処理部は、前記ホストプロセッサが通知したタイミングで、前記管理用処理の要求を格納するキューを要求読み出し先とすることを特徴とする請求項からのいずれかに記載の情報処理装置。
  8. 前記コマンド処理部は、前記管理用処理のうち読み出し処理の要求を読み出す期間と、書き込み処理の要求を読み出す期間を分離することを特徴とする請求項からのいずれかに記載の情報処理装置。
  9. 前記管理用処理は、あるブロックに格納されたデータを別のブロックに待避させたうえで元のブロックのデータを消去する処理を含むことを特徴とする請求項からのいずれかに記載の情報処理装置。
  10. 前記管理用処理は、1メモリセル当たり1ビットを記録するSLC(Single Level Cell)領域に書き込まれたデータを、1メモリセル当たり3ビットを記録するTLC(Triple Level Cell)領域にコピーする処理を含むことを特徴とする請求項からのいずれかに記載の情報処理装置。
  11. 前記メモリコントローラは、前記キューに格納済みの前記管理用処理の要求量および、前記管理用処理の要求が発行されるタイミングの予測結果の少なくともいずれかに基づき、前記キューごとに設定された規則および前記グループごとに設定された処理の制限の少なくともいずれかを変更するコマンド調整部をさらに備えたことを特徴とする請求項から10のいずれかに記載の情報処理装置。
  12. 前記メモリコントローラは、前記キューに格納済みの前記管理用処理の要求量および、前記管理用処理の要求が発行されるタイミングの予測結果の少なくともいずれかに基づき、前記ホストプロセッサへアクセス要求の発行制御を依頼するコマンド調整部をさらに備えたことを特徴とする請求項から10のいずれかに記載の情報処理装置。
  13. 前記コマンド処理部は、所定の基準以上の優先度を有する読み出し要求をまとめて格納するキューから、当該読み出し要求を順次読み出し、実行することを特徴とする請求項1から12のいずれかに記載の情報処理装置。
  14. 前記ホストプロセッサからのアクセス要求の対象となるデータを格納するNAND型フラッシュメモリをさらに備えたことを特徴とする請求項1から13のいずれかに記載の情報処理装置。
  15. 情報処理を実施し、前記メモリコントローラに前記メモリへのアクセス要求を発行するホストプロセッサをさらに備えたことを特徴とする請求項1から14のいずれかに記載の情報処理装置。
  16. ホストプロセッサからメモリへのアクセス要求を受け付けるステップと、
    前記アクセス要求を分類して格納する複数のキューのいずれかから前記アクセス要求を読み出すステップと、
    読み出したアクセス要求を実行するステップと、
    を含み、
    前記読み出すステップは、前記複数のキューを分類してなるグループ内で、前記キューごとに設定された規則に応じたタイミングで、前記複数のキューのうち要求読み出し先のキューを次へ切り替えるとともに、前記グループごとに設定された処理の制限に基づくタイミングで、前記要求読み出し先のキューを次のグループへ切り替えることを特徴とするメモリコントローラによるメモリアクセス方法。
  17. ホストプロセッサからメモリへのアクセス要求を受け付ける機能と、
    前記アクセス要求が分類して格納された複数のキューのいずれかから前記アクセス要求を読み出し、実行する機能と、
    をメモリコントローラに実現させるコンピュータプログラムであって、
    前記実行する機能は、前記複数のキューを分類してなるグループ内で、前記キューごとに設定された規則に応じたタイミングで、前記複数のキューのうち要求読み出し先のキューを次へ切り替えるとともに前記グループごとに設定された処理の制限に基づくタイミングで、前記要求読み出し先のキューを次のグループへ切り替えることを特徴とするコンピュータプログラム。
JP2016247049A 2016-12-20 2016-12-20 情報処理装置およびメモリアクセス方法 Active JP6677627B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2016247049A JP6677627B2 (ja) 2016-12-20 2016-12-20 情報処理装置およびメモリアクセス方法
TW106136823A TWI662418B (zh) 2016-12-20 2017-10-26 Information processing device and memory access method
PCT/JP2017/044777 WO2018116937A1 (ja) 2016-12-20 2017-12-13 情報処理装置およびメモリアクセス方法
EP17883337.2A EP3561678B1 (en) 2016-12-20 2017-12-13 Information processing device and memory access method
CN201780077153.8A CN110073337B (zh) 2016-12-20 2017-12-13 信息处理装置和存储器访问方法
KR1020197016557A KR102246840B1 (ko) 2016-12-20 2017-12-13 정보 처리 장치, 메모리 액세스 방법 및 컴퓨터 프로그램
US16/346,717 US11281572B2 (en) 2016-12-20 2017-12-13 Information processing apparatus and memory access method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016247049A JP6677627B2 (ja) 2016-12-20 2016-12-20 情報処理装置およびメモリアクセス方法

Publications (3)

Publication Number Publication Date
JP2018101301A JP2018101301A (ja) 2018-06-28
JP2018101301A5 JP2018101301A5 (ja) 2019-02-21
JP6677627B2 true JP6677627B2 (ja) 2020-04-08

Family

ID=62626406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016247049A Active JP6677627B2 (ja) 2016-12-20 2016-12-20 情報処理装置およびメモリアクセス方法

Country Status (7)

Country Link
US (1) US11281572B2 (ja)
EP (1) EP3561678B1 (ja)
JP (1) JP6677627B2 (ja)
KR (1) KR102246840B1 (ja)
CN (1) CN110073337B (ja)
TW (1) TWI662418B (ja)
WO (1) WO2018116937A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061822B2 (en) * 2018-08-27 2021-07-13 Qualcomm Incorporated Method, apparatus, and system for reducing pipeline stalls due to address translation misses
CN111124254B (zh) * 2018-10-30 2023-09-29 伊姆西Ip控股有限责任公司 调度存储空间回收请求的方法、电子设备和程序产品
KR20210001414A (ko) * 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법
CN110362275B (zh) * 2019-07-10 2021-09-07 深圳大普微电子科技有限公司 提升固态硬盘服务质量的方法及固态硬盘
US11029874B2 (en) * 2019-07-30 2021-06-08 Western Digital Technologies, Inc. Rolling XOR protection in efficient pipeline
JP2021086583A (ja) * 2019-11-29 2021-06-03 キヤノン株式会社 情報処理装置、制御装置および制御装置の制御方法
US20220004337A1 (en) * 2020-07-06 2022-01-06 Micron Technology, Inc. Command prioritization in a command queue
CN114168495A (zh) * 2020-09-10 2022-03-11 西部数据技术公司 存储设备的增强的预读能力

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570876B1 (en) * 1998-04-01 2003-05-27 Hitachi, Ltd. Packet switch and switching method for switching variable length packets
JP2000285082A (ja) * 1999-03-31 2000-10-13 Toshiba Corp 中央演算装置及びコンパイル方法
JP4327081B2 (ja) * 2004-12-28 2009-09-09 京セラミタ株式会社 メモリアクセス制御回路
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
JP4419868B2 (ja) * 2005-02-25 2010-02-24 ソニー株式会社 情報処理装置および方法、メモリ制御装置および方法、記録媒体、並びにプログラム
JP4142068B2 (ja) * 2006-06-16 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびアクセス制御方法
US8208406B1 (en) * 2008-03-25 2012-06-26 Juniper Networks, Inc. Packet forwarding using feedback controlled weighted queues dynamically adjusted based on processor utilization
JP5147584B2 (ja) * 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法
JP2010176646A (ja) * 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法
CN101498994B (zh) * 2009-02-16 2011-04-20 华中科技大学 一种固态硬盘控制器
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8595411B2 (en) * 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8271692B1 (en) * 2010-10-01 2012-09-18 Western Digital Technologies, Inc. Throttled command completion time
US20120246385A1 (en) * 2011-03-22 2012-09-27 American Megatrends, Inc. Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8996782B2 (en) * 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
JP2013200692A (ja) * 2012-03-23 2013-10-03 Toshiba Corp メモリシステム
US9058208B2 (en) * 2012-11-12 2015-06-16 Skymedi Corporation Method of scheduling tasks for memories and memory system thereof
CN103488578B (zh) * 2012-12-28 2016-05-25 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器
US8959263B2 (en) * 2013-01-08 2015-02-17 Apple Inc. Maintaining I/O priority and I/O sorting
US20160011782A1 (en) 2013-02-27 2016-01-14 Hitachi, Ltd. Semiconductor storage
US9268495B2 (en) * 2013-03-15 2016-02-23 Apple Inc. Managing I/O priorities
US9898201B2 (en) * 2014-03-24 2018-02-20 Hitachi, Ltd. Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering
US10073714B2 (en) * 2015-03-11 2018-09-11 Western Digital Technologies, Inc. Task queues
TWI588652B (zh) * 2015-09-01 2017-06-21 慧榮科技股份有限公司 讀取及寫入命令排程方法以及使用該方法的裝置
US10866910B2 (en) * 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
JP6783645B2 (ja) * 2016-12-21 2020-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US10831403B2 (en) * 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection

Also Published As

Publication number Publication date
US20200073793A1 (en) 2020-03-05
EP3561678A1 (en) 2019-10-30
US11281572B2 (en) 2022-03-22
JP2018101301A (ja) 2018-06-28
EP3561678B1 (en) 2023-05-17
KR20190079672A (ko) 2019-07-05
WO2018116937A1 (ja) 2018-06-28
CN110073337A (zh) 2019-07-30
TWI662418B (zh) 2019-06-11
CN110073337B (zh) 2023-06-02
TW201824010A (zh) 2018-07-01
KR102246840B1 (ko) 2021-04-30
EP3561678A4 (en) 2020-08-05

Similar Documents

Publication Publication Date Title
JP6677627B2 (ja) 情報処理装置およびメモリアクセス方法
US9244617B2 (en) Scheduling requests in a solid state memory device
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
JP7366795B2 (ja) メモリシステムおよび制御方法
US20200004674A1 (en) Non-deterministic window scheduling for data storage systems
KR101563875B1 (ko) 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템
US8171239B2 (en) Storage management method and system using the same
CN102713866B (zh) 减少基于闪存的存储系统中的存取争用
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US20170160953A1 (en) Data storage device that stabilizes write latency
JP2005293205A (ja) 記憶制御装置、制御方法、および制御プログラム。
JP2011145838A (ja) 記憶装置管理装置および記憶装置の管理方法
US20170003911A1 (en) Information processing device
CN106598504B (zh) 数据存储方法及装置
JP2019046238A (ja) メモリシステム
JP2011209963A (ja) メモリ制御装置及びメモリ制御方法
JP5687649B2 (ja) 半導体記憶装置の制御方法
US10872015B2 (en) Data storage system with strategic contention avoidance
US20150074492A1 (en) Memory system and memory controller
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2017068804A (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
WO2022234740A1 (ja) 情報処理装置、情報処理システム、および情報処理方法
JP2005174468A (ja) フラッシュメモリのアクセス制御方法
JP2017134446A (ja) メモリ制御装置、記憶装置、メモリ制御方法およびコンピュータプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200313

R150 Certificate of patent or registration of utility model

Ref document number: 6677627

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150