JP2012252416A - 記憶装置、データ制御方法、及びデータコントローラ - Google Patents
記憶装置、データ制御方法、及びデータコントローラ Download PDFInfo
- Publication number
- JP2012252416A JP2012252416A JP2011122753A JP2011122753A JP2012252416A JP 2012252416 A JP2012252416 A JP 2012252416A JP 2011122753 A JP2011122753 A JP 2011122753A JP 2011122753 A JP2011122753 A JP 2011122753A JP 2012252416 A JP2012252416 A JP 2012252416A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- amount
- host
- unit
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0613—Improving I/O performance in relation to throughput
-
- 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/0658—Controller construction arrangements
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0028—Serial attached SCSI [SAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】バスの使用効率の低下を抑止する。
【解決手段】実施形態の記憶装置は、不揮発性メモリと、記憶手段と、通知手段と、転送手段と、制御手段と、を備える。記憶手段は、データを一時的に記憶する。通知手段は、ホストに対して、記憶手段にデータを書き込む量を指定してデータの転送許可を通知する。転送手段は、ホストから転送許可に従って転送されるデータを記憶手段に転送し、記憶手段に記憶されたデータを、不揮発性メモリに書き込むために転送する。制御手段は、不揮発性メモリに書き込むために必要なデータ量が記憶手段に記憶されてから、転送手段による不揮発性メモリへのデータの転送が終了するまで、通知手段による転送許可の通知を抑止させる。
【選択図】図1
【解決手段】実施形態の記憶装置は、不揮発性メモリと、記憶手段と、通知手段と、転送手段と、制御手段と、を備える。記憶手段は、データを一時的に記憶する。通知手段は、ホストに対して、記憶手段にデータを書き込む量を指定してデータの転送許可を通知する。転送手段は、ホストから転送許可に従って転送されるデータを記憶手段に転送し、記憶手段に記憶されたデータを、不揮発性メモリに書き込むために転送する。制御手段は、不揮発性メモリに書き込むために必要なデータ量が記憶手段に記憶されてから、転送手段による不揮発性メモリへのデータの転送が終了するまで、通知手段による転送許可の通知を抑止させる。
【選択図】図1
Description
本発明の実施形態は、記憶装置、データ制御方法、及びデータコントローラに関する。
従来から、SSD(Solid State Drive)という記憶装置が提供されている。SSDは、半導体メモリであるフラッシュメモリを使用している。そして、近年、PC(Personal Computer)に内蔵される記憶装置として、HDDの代わりにSSDが使用される傾向が高まりつつある。
これら記憶装置を接続するインターフェイスとして、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)、FC(Fibre Channel)等が提案されている。SATAは、個人が利用する等の低価格であることを重視する用途で利用されている。また、SASは、例えばサーバーなど高性能・高信頼性が要求される用途で利用されている。そして、FCは、ストレージ・ネットワーク用に使用される技術であって、ネットワーク上でIPの代わりに、SASと同様SCSIコマンドが用いられている。
例えば、SASやFC等がインターフェイスとして用いられた場合、接続先の状態が確認されてからデータが送信されるため、信頼性を向上できる。より詳細には、これらインターフェイスを用いたSSDは、転送可能なデータ量をホストにコミットすることで、確実にデータを転送できるよう制御している。
ところで、SSDは、内部に複数のチャネルを備えており、それぞれのチャネルで、不揮発性メモリに対して、読み出し又は書き込みを行っている。そして、SSDでは、インターリーブ方式で書き込み動作を行うことができる。つまり、SSDは、複数チャネルで同時に、不揮発性メモリに対して、書き込みを行うことができる。これにより、高速書き込みが実現できる。
しかしながら、従来技術を用いたSSDでは、転送可能なデータ量を、ホストにコミットした時に、複数チャネルで同時に書き込みが行われる場合、SSD内部のコントローラは当該書き込みのための処理を優先して行うため、ホストから転送されてくるデータを適切に処理できず、バスを接続した状態でフリーズが生じる可能性がある。この場合、バスを共有する他のデバイスもバスを使用できなくなり、バスの使用効率が低下する。
本発明は、上記に鑑みてなされたものであって、バスの使用効率の低下を抑止する記憶装置、データ制御方法、及びデータコントローラを提供することを目的とする。
実施形態の記憶装置は、不揮発性メモリと、記憶手段と、通知手段と、転送手段と、制御手段と、を備える。記憶手段は、データを一時的に記憶する。通知手段は、ホストに対して、記憶手段にデータを書き込む量を指定してデータの転送許可を通知する。転送手段は、ホストから転送許可に従って転送されるデータを記憶手段に転送し、記憶手段に記憶されたデータを、不揮発性メモリに書き込むために転送する。制御手段は、不揮発性メモリに書き込むために必要なデータ量が記憶手段に記憶されてから、転送手段による不揮発性メモリへのデータの転送が終了するまで、通知手段による転送許可の通知を抑止させる。
図1は、実施形態にかかる半導体ディスク装置1の構成の例を示すブロック図である。図1に示すように半導体ディスク装置1は、半導体ディスクコントローラ100と、DRAM150と、8個のNANDメモリ160−1〜160−8と、を備えている。
DRAM150は、データを一時的に記憶する記憶装置である。DRAM150は、ホストから転送されてきたデータを一時的に記憶する。また、DRAM150は、NANDメモリ160−1〜160−8から読み出したデータを一時的に記憶する。
NANDメモリ160−1〜160−8は、ホストで利用するデータ(以下、ユーザデータと称す)等を記憶する。本実施形態は、8個のNANDメモリ160−1〜160−8を備える例とするが、個数を制限するものではない。
半導体ディスクコントローラ100は、第1のMPU101と、チャネルコントローラ102と、第2のMPU103と、SASコントローラ104−1、104−2と、FIFOバッファ105−1〜105−4と、DMAコントローラ106と、NANDメモリコントローラ107−1〜107−8と、シェアードRAM108と、を備える。
また、半導体ディスクコントローラ100は、2ポートのSASインターフェイスを備えている。そして、半導体ディスクコントローラ100は、それぞれのポートを介して、ホストとの間でデータ入出力を行なう。
SASは、全2重通信のポイントツーポイント接続であるが、SASエキスパンダーを中継器として接続することで、1つのホストに対して、複数台の装置を接続することが可能となる。このように、バスは、他の装置と共有で利用することが可能となる。
第1のMPU101は、バスを介して接続されたホストとの間のデータの送受信を制御する。例えば、第1のMPU101は、ライトコマンドを実行する際、DRAM150にデータを収めるために必要な領域を確保し、確保できた領域を示したデータ転送データ量をフレーム形式“Transfer_Ready”に従ってホストに通知する。本実施形態はSASの場合について説明するが、FCの場合でも同様とする。
ところで、ホストがデータを半導体ディスク装置1に記憶したい場合、ホストは、半導体ディスク装置1に対してライトコマンドを発行する。そしてライトコマンドが発行された場合、SASコントローラ104−1、104−2が当該ライトコマンドを受信する。そして、第1のMPU101が、当該ライトコマンドを、プロセッサバス109を通して受け取り、ライトコマンドを実行することになる。
そして、第1のMPU101は、ライトコマンドの実行に伴い、ホストからユーザデータを受け取るために、Transfer_Readyフレームの作成及びホストへの送信を行うことになる。なお、実際には、第1のMPU101単独でTransfer_Readyフレームを通知するのではなく、SASコントローラ104−1、104−2に対して、Transfer_Readyフレームの発行を要求することで実現する。
FIFOバッファ105−1〜105−4は、SASコントローラ104−1、104−2によるデータの転送速度と、DMAコントローラ106によるデータの転送速度と、の間の速度差を吸収するバッファとする。SASインターフェイスは、各ポートで双方向同時通信が可能である。このため、FIFOバッファ105−1〜105−4は、送信ラインと受信ラインでそれぞれ独立して設けられている。
SASコントローラ104−1、104−2は、SASインターフェイスによるデータ転送を制御するコントローラとする。また、SASコントローラ104−1、104−2は、FIFOバッファ105−1〜105−4を介して、DMAコントローラ106と接続されている。
また、SASコントローラ104−1、104−2は、第1のMPU101からの要求に応じて、Transfer_Readyフレームの作成及びホストへの送信を行う。Transfer_Readyフレームは、ホストに対してデータの転送を許可することを示す情報であり、ホストから半導体ディスク装置1へのデータ転送データ量を指定する情報が含まれている。
なお、第1のMPU101は、1つのライトコマンドに必要なデータの格納スペースを、DRAM150上に一度に確保できない場合、ホストへのデータ転送要求を複数に分割する。この場合、ホストへのTransfer_Readyフレームの送信と、ホストからのデータ受信と、による手順を複数回繰り返す。なお、SASの仕様上、半導体ディスク装置1は、ホストからのライトコマンドの応答としてTransfer_Readyフレームを送信し、当該フレームに対応するデータをホストから受信し終える前に、異なるライトコマンドを受信した場合、コマンドが異なる限り、別のTransfer_Readyフレームをホストに応答することができる。
ホストは、Transfer_Readyフレームに含まれているデータ転送データ量のデータを半導体ディスク装置1に転送する。SASコントローラ104−1、104−2は、ホストから転送されてきたデータを受信した場合、DMAコントローラ106が、第1のMPU101により指定されたDRAM150アドレスに、当該データを格納する。その際、SASコントローラ104−1、104−2は、受信したデータを、NANDメモリ160−1〜160−8の最小書き込み単位に分割する。そして、SASコントローラ104−1、104−2は、チャネルコントローラ102に対して、NANDメモリ160−1〜160−8へのライトコマンドを発行する。
チャネルコントローラ102は、NANDメモリ160−1〜160−8との間のデータの転送を制御するコントローラとする。例えば、SASコントローラ104−1、104−2がライトコマンドを発行した場合、チャネルコントローラ102は、DRAM150に記憶されているデータを、NANDメモリ160−1〜160−8に書き込むよう制御する。
DMA(direct memory access)コントローラ106は、チャネルコントローラ102からの要求に従って、SASインターフェイス−DRAM150間、及びDRAM150―NANDメモリ160−1〜160−8間で、MPU(例えば、第1のMPU101)を介さないDMAデータ転送を制御するコントローラとする。
DMAコントローラ106は、ホストからTransfer_Readyフレームに従って転送されてきたユーザデータをDRAM150に転送する。また、DMAコントローラ106は、DRAM150に記憶されたデータを、DRAM150―NANDメモリ160−1〜160−8に書き込むために全チャネルを同期させて転送する。この転送は、ホストから転送されてきたデータが、シェアードRAM108に記憶された、書き込み可能なデータ量だけDRAM150に記憶された場合に行われる。なお、本実施形態では、全チャネル同時書き込みを行うこととするが、全チャネルではなく複数のチャネルが同期していればよい。
NANDメモリコントローラ107−1〜107−8は、チャネルコントローラ102からの要求に従って、NANDメモリ160−1〜160−8に対する、データの書き込み及びデータの読み出しを制御するコントローラとする。
また、DMAコントローラ106と、NANDメモリコントローラ107−1〜107−8と、の間には、チャネル毎に図示しないFIFOバッファが設けられている。チャネル毎に設けられたFIFOバッファは、リードコマンドが発行された場合に、NANDメモリ160_1〜160_8から読み出したデータを格納可能な最小の容量を有している。しかしながら、ライトコマンドでは書き込み速度を向上させるためにNANDメモリの複数の領域に同時書き込みを実施する。このため、ライトコマンドが実行された場合に書き込むデータ量は、リードコマンドが実行された場合に読み込むデータ量よりも大きく、FIFOバッファでは吸収できない。このため、本実施形態にかかる半導体ディスク装置1では、全チャネル同時書き込みを行う場合に、後述した処理を行うこととした。
ところで、ホスト転送をホールドすることが可能なSATAインターフェイスや、転送自体を半導体ディスク装置側でコントロールするPCIeインターフェイスでは、半導体ディスク装置側から、ホストからのデータの送信を止めることが可能である。しかしながら、転送可能なデータ量を、予めホストにコミットしてから通信を行なうSASインターフェイスやファイバーチャネル(FC)・インターフェイスでは、コミットしてしまったホストからの転送を途中で止める事は難しい。このため、従来のSASインターフェイスや、FCインターフェイスを用いた場合には、以下に示すような問題が生じる。
従来のSASインターフェイスの半導体ディスク装置におけるシーケンシャルのタイミングについて説明する。従来の半導体ディスク装置では、ホストからライトコマンドを受け付けた場合、DRAMに確保できたバッファスペースに応じて、1つ以上のTransfer_Readyフレームを出力して、ホストに対して転送可能なデータ量を指定するための通知をしていた。そして、ホストは、通知されたデータ量だけデータを、半導体ディスク装置に転送する。従来、このようなTransfer_Readyフレームの通知と、対応するデータの転送と、が繰り返し行われていた。
複数のシーケンシャルライトコマンドを受けた半導体ディスク装置は、DRAM上に設けられたバッファに収まるだけのデータの送信を、ホストに対して許可する。このため、従来の半導体ディスク装置は、基本的には受信したデータをバッファに格納することができるはずである。しかしながら、DMAコントローラが、全チャネルを同期した上で同時にNANDメモリに書き込むためにDRAMからユーザデータの読み出しを開始している時に、SASインターフェイスからユーザデータの受信が行われることがある。この場合、DMAコントローラにおいて、DRAMからのユーザデータの読み出し処理と、SASコントローラからDRAMへのユーザデータの書き出し処理と、が競合する。この場合、DMAコントローラは、DRAMからのユーザデータの読み出し処理を優先的に行う。このため、ホストから半導体ディスク装置に対してユーザデータの転送が行われなくなる。そして、Transfer_Readyフレームに対応するユーザデータを受信する際、DMAコントローラがNANDコントローラにユーザデータを転送するタイミングで、SASインターフェイスにユーザデータが転送されない無転送期間が生じる。
より具体的には、NANDメモリへの書き込みが完了したタイミングにおいて、書き込みが終了した分のバッファスペースがDRAMから解放される。DRAMにデータが書き込み可能となることで、SASコントローラが、Transfer_Readyフレームを送信し、当該フレームに対応するユーザデータを受信する。このタイミングは、DMAコントローラが、正にその次のチャネル同期転送が始まるタイミングである。このため、DMAコントローラで処理が競合し、必ず無転送期間が現れる。この無転送期間においても、ホストと半導体ディスク装置との間の接続が継続している。このように、従来の半導体ディスク装置は、データ転送が行われていないにも拘わらず、接続を継続するといったフリーズ現象が生じる。この場合、バスを共有する他のデバイスもバスを使用できなくなり、バスの使用効率が低下し、システム全体の性能が低下する。
これに対し、本実施形態においては、SASインターフェイスを適用した半導体ディスク装置1では、無転送期間が現れないよう、後述する制御を行うこととした。
図1に戻り、第2のMPU103は、NANDメモリ160−1〜160−8に対するデータの送受信を制御する。第2のMPU103は、チャネルコントローラ102に対して、NANDメモリ160−1〜160−8の全チャネル分の物理アドレスを提供する。
チャネルコントローラ102は、提供された物理アドレスに対して、ライトコマンドで書き込むデータを割り当てる。本実施形態では、全チャネル同時に一回の書き込みを行なう度に、第2のMPU103が、チャネルコントローラ102へ物理アドレスを提供すると記述しているが、これは一実施形態に過ぎない。
第2のMPU103が、物理アドレスを提供するタイミングについて説明する。第2のMPU103は、チャネルコントローラ102の動作状態を周期的に監視する。そして、チャネルコントローラ102が、全チャネルを同期させて同時に書き込む制御を開始したことを検出した場合、第2のMPU103は、再びチャネルコントローラ102に対して新たな物理アドレスを提供する。
また、チャネルコントローラ102は、信号出力部111を備える。そして、チャネルコントローラ102は、全チャネル同時書き込みを行うために、全チャネルを同期させてNANDメモリ160−1〜160−8に書き込むために必要なデータ量をDRAM150に記憶する。その後、チャネルコントローラ102は、DMAコントローラ106がNANDメモリ160−1〜160−8へのデータの転送を終了するまで、SASコントローラ104−1、104−2によるTransfer_Readyフレームの通知を抑止する。
当該通知を抑止するために、信号出力部111は、DMAコントローラ106がNANDメモリ160−1〜160−8にデータの転送を行っているか否かを示す転送判定信号を出力する。例えば、チャネルコントローラ102が全チャネルを同期させて同時に書き込むための転送開始を検出した場合に、信号出力部111は、データの転送を行っていることを示す‘1’を出力し、データの転送の終了を検出した場合に信号を‘0’に切り替える。
また、第2のMPU103は、チャネルコントローラ102に対して、物理アドレスを提供する際、NANDメモリ160−1〜160−8のうち、書き込みできない欠陥(Defect)があるチャネルには、書き込むデータを割り当てない。
チャネルコントローラ102に対して新たな物理アドレスを提供する際、第2のMPU103は、同時に、データ量をシェアードRAM108に設定する。この設定されるデータ量は、全チャネルを同期させて一度にNANDメモリ160−1〜160−8に同時書き込み可能なデータ量とする。このデータ量を決定する際、第2のMPU103は、Defectの存在で書き込みできないチャネルを考慮する。これにより、シェアードRAM108に設定される、同時書き込み可能なデータ量は毎回変動する可能性がある。
シェアードRAM108は、第1のMPU101及び第2のMPU103から参照可能なデュアルポートRAMとし、全チャネルを同期させて一度に同時書き込み可能なデータ量を記憶する。
本実施形態にかかる第1のMPU101は、ホストからユーザデータを受信するためにTransfer_Readyフレームの送信を要求する際、シェアードRAM108を参照する。そして、第1のMPU101は、シェアードRAM108に記憶されたデータ量が‘0’でない場合に限り、Transfer_Readyフレームの送信を、SASコントローラ104−1、104−2に要求する。
第1のMPU101は、Transfer_Readyフレームの送信を要求する度に、要求したデータ量に相当する値を、シェアードRAM108に記憶されたデータ量から減算する。シェアードRAM108に記憶されたこのデータ量が‘0’になると、第1のMPU101はそれ以上のTransfer_Readyフレームの送信要求はできないものとする。
ところで、従来、Transfer_Readyフレームに含まれる転送データ量は、コマンドが要求する転送データ量、及びDRAM上で空いているバッファ容量のどちらか小さい方に制限されていた。このような従来の技術では、DRAM上のバッファ容量が空いている限り、データを受信し続けるので、半導体ディスク装置のチャネルを同期したNANDメモリへの同時書き込みと、データの受信処理が競合する可能性があった。
そこで、本実施形態では、これらの条件(転送データ量、及びDRAM150上で空いているバッファ容量)に加えて、シェアードRAM108に記憶されている、書き込み可能なデータ量を、判定の条件に加えることとした。そして、第1のMPU101は、これら3つの条件のうち、最も小さいデータ量を、Transfer_Readyフレームに含まれるデータ転送データ量と設定することとした。さらに、これら3つの条件のうち、いずれか1つが0バイトの場合には、転送をコミットしないように制御した。
さらに、第1のMPU101が、SASコントローラ104−1、104−2へTransfer_Readyフレームの送信を要求する際、チャネルコントローラ102の信号出力部111が出力する転送判定信号を参照し、DMAコントローラ106がデータを転送しているタイミングであるか否かを確認する。この転送判定信号が、DMAコントローラ106がDRAM150から書き込み処理のためのデータを転送しているタイミングを示している場合、第1のMPU101が、Transfer_Readyフレームの送信要求を抑止する。
チャネルコントローラ102は、ユーザデータを書き込むために提供された有効な物理アドレスがある限り、第1のMPU101から発行されるライトコマンドに対して、ラウンドロビン方式でチャネルを更新しながら書き込み先の物理アドレスを割り当てる。そして、チャネルコントローラ102は、ライトコマンドを、チャネルコントローラ102内の(図示しない)ライトコマンドキューに蓄積する。なお、チャネルコントローラ102は、物理アドレスを割り当てる際、Defectに指定されているチャネルを除外する。
そして、全てのチャネルに対するライトコマンドの蓄積がなされた時点で、チャネルコントローラ102は、以下の手順で全チャネル同期ライトの準備を行なう。
まず、チャネルコントローラ102は、NANDメモリコントローラ107−1〜107−8に対する新たなコマンドの発行を停止する。次に、チャネルコントローラ102は、NANDメモリコントローラ107−1〜107−8が実行中のコマンドを全て終了するまで、待機する。
そして、全チャネルのNANDメモリコントローラ107−1〜107−8がコマンド実行を終えた時点で、チャネルコントローラ102は、シェアードRAM108にこれから行う書き込みの種類(例えば、ユーザデータの書き込み、またはコンパクションによる書き込み)を設定する。例えば、第1のMPU101から発行されたユーザデータのライトコマンドの場合、チャネルコントローラ102は、「ユーザデータの書き込み」である旨をシェアードRAM108に設定する。なお、設定された書き込みの種類を示す情報は、第1のMPU101により参照される。
ところで、NANDメモリのような不揮発性メモリでは、書き込み単位とイレーズ単位とが異なる。このため、不揮発性メモリでは、更新書き込みがなされた場合でも、書き込み単位には無効となった古いデータが残った状態となる。そして、複数の書き込み単位で構成されるイレーズ単位には、無効となったデータのみならず、有効なデータも存在する。新たな書き込みを可能とするためには、イレーズ単位に残る有効データだけを集めて、別の領域に設けられた書き込み単位に全てコピーして、有効データが少なくなったイレーズ単位を再利用する必要がある。このような処理をコンパクションと称す。本実施形態にかかる半導体ディスク装置1では、このコンパクションが行われる場合でも、無転送期間が生じないよう制御を行う。
そして、チャネルコントローラ102が、DMAコントローラ106に書き込みのためのデータの転送を指示することをトリガーとして、信号出力部111が、DMAコントローラ106がデータの転送を行っていることを示す転送判定信号(例えば‘1’)の出力を開始する。そして、第1のMPU101は、当該転送判定信号を参照することで、DMAコントローラ106が全チャネル同時書き込みのためのデータの転送を行っているか否かを認識できる。
以上の準備処理を終えた後、チャネルコントローラ102は、ライトコマンドキューに蓄積したライトコマンドを、先頭から順に、各チャネルのNANDメモリコントローラ107−1〜107−8に一斉に発行する。これにより、全チャネルを同期させた書き込み処理が開始される。同時に、チャネルコントローラ102は、DMAコントローラ106に対して、チャネル毎のライトコマンドの対象となるデータを、DRAM150から読み出すよう指示する。
全チャネル同時転送を実行した後、DMAコントローラ106は、チャネルコントローラ102から設定された総転送バイトを、全チャネルのNANDメモリコントローラ107_1〜107_8に転送し終えた時点で、転送が終了したことをチャネルコントローラ102に通知する。これにより、信号出力部111が、DMAコントローラ106が書き込み処理のためにデータを転送していることを示す転送判定信号(例えば‘1’)から、当該データの転送をしていないことを示す転送判定信号(例えば‘0’)に切り替える。
ところで、DRAM150に全チャネルで同時に書き込むユーザデータが全て記憶された時点で、シェアードRAM108の書き込み可能なデータ量が‘0’となる。このため、第1のMPU101は、ホストに対して新たなデータ送信をコミットできない。そこで、第1のMPU101は、シェアードRAM108の書き込み可能なデータ量が、第2のMPU103により‘0’でない値に更新されるまで待機する。
この間に、DMAコントローラ106による全チャネルの同時書き込みのためのデータの転送が開始される。このタイミングで、第2のMPU103は、チャネルコントローラ102に対して次回の書き込みで使用する物理アドレスを提供すると共に、次回の全チャネル同時書き込みで書き込み可能なデータの量をシェアードRAM108に設定する。
このように、全チャネルによる同時書き込みのための転送が開始された後、早いタイミングでシェアードRAM108の書き込み可能なデータ量が、第2のMPU102により更新される。しかしながら、更新された時点では、DMAコントローラ106がデータの転送を実行中である(信号出力部111が転送判定信号‘1’を出力している)ため、第1のMPU101は、新たなデータ送信をコミットできない。そして、DMAコントローラ106によるデータの同時転送が完了した後(信号出力部111が出力する転送判定信号が‘0’に切り替わった後)、第1のMPU101は、Transfer_Readyフレームの送信を、SASコントローラ104−1、104−2に対して要求することができる。
図2は、第1のMPU101及び第2のMPU103のソフトウェア構成を示したブロック図である。図2に示すように、第1のMPU101は、コマンド管理部311と、ライトクレジット管理部312と、Transfer_Ready通知部313と、ライト実行開始部314と、ライト終了検出部315と、リード転送開始部316と、リード終了検出部317と、を備える。
また、第2のMPU103は、ユーザデータ書込先提供部321と、コンパクション対象データ書込先提供部322と、データ量設定部323と、ブロック検索部324と、コンパクション実行部325と、を備える。
コマンド管理部311は、SASコントローラ104−1、104−2がバスを介してコマンド(リードコマンド又はライトコマンド)を受信しているか否かを判定する。そして、SASコントローラ104−1、104−2がコマンドを受信している場合に、当該コマンドを取り出して、第1のMPU101のメモリ上に構成したライトコマンドキュー及びリードコマンドキューに記憶する。これらコマンドキューは、受信したコマンドの実行順序も管理する。また、コマンド管理部311は、DRAM150上にリードコマンドのデータを格納する領域を割り当ててから、リードコマンドをチャネルコントローラ102に発行する。なお、DRAM150上でデータを格納する領域が不足している場合、各コマンドの発行は待機される。そして、コマンド管理部311は、リードコマンドキューにリードコマンドが蓄積された場合に、チャネルコントローラ102に対してリードコマンドを発行する。これにより、NANDメモリ160−1〜160−8からのデータの読み込みが開始される。
ライトクレジット管理部312は、ライトコマンドキューにライトコマンドが蓄積されている場合、ライトコマンドのデータを格納する領域を管理する。さらに、ライトクレジット管理部312は、シェアードRAM108の書き込み可能なデータ量と、チャネルコントローラ102の信号出力部111から出力される転送判定信号と、を参照し、データを受信可能であるか否か(Transfer_Readyフレームの送信が可能であるか否か)を判定する。
Transfer_Ready通知部313は、ライトクレジット管理部312によりTransfer_Readyフレームの送信が可能と判定された場合に、受信可能なデータ量を指定したTransfer_Readyフレームの通知を、SASコントローラ104−1、104−2に要求する。その際、Transfer_Ready通知部313は、受信可能なデータ量と、DRAM150内の格納可能なアドレスと、をSASコントローラ104−1、104−2に設定する。そして、Transfer_Ready通知部313は、Transfer_Readyフレームの送信と、当該フレームに伴うデータの受信と、をSASコントローラ104−1、104−2に実行させる。
ライト実行開始部314は、ホストから送られてくるデータを、DMAコントローラ106を介してDRAM150に格納する処理の終了をポーリングする。そして、ライト実行開始部314は、全チャネル同時書き込みのために必要なデータのDRAM150への格納の完了を検知した場合に、当該データの送信要求を行ったTransfer_Readyフレームに含まれているデータ転送データ量に相当するライトコマンドを、データが格納されたDRAM150のアドレスと共に、チャネルコントローラ102に発行する。ライトコマンドは、一旦、チャネルコントローラ102のライトコマンドキューに蓄積される。そして、全てのチャネルを同期した同時書き込みに必要な所定の書き込みデータ量に相当するコマンド数がライトコマンドキューに蓄積された時点で、チャネルコントローラ102が、NANDメモリコントローラ107−1〜107−8に対して、コマンドを転送する。
また、ライト実行開始部314は、シェアードRAM108に記憶されている、書き込み可能なデータ量から、発行したライトコマンドで書き込まれるデータ量を減算する。
ライト終了検出部315は、NANDメモリコントローラ107−1〜107−8に対して一斉に転送されたライトコマンドの終了を検出する。本実施形態では、NANDメモリコントローラ107−1〜107−8が、ライトコマンドの終了ステータスを、内部の図示しないFIFOバッファに蓄積する。そして、ライト終了検出部315が、これらステータスをポーリングし、ライトコマンドの終了を検出する。そして、ライト終了検出部315は、終了したライトコマンドのデータに割り当てていた、DRAM150上のバッファ領域を解放する。
リード転送開始部316は、コマンド管理部311により開始されたNANDメモリ160−1〜160−8からのデータの読み込みの終了を検出する。NANDメモリコントローラ107−1〜107−8は、リードコマンドの終了ステータスを、内部の図示しないFIFOバッファに蓄積する。そして、リード転送開始部316が、これらステータスをポーリングし、リードコマンドの終了を検出する。そして、リード転送開始部316は、当該リードコマンドでDRAM150上に格納されたデータを、ホストに転送するよう、SASコントローラ104−1、104−2に要求する。これにより、リードされたデータのホストへの転送が開始される。
リード終了検出部317は、SASコントローラ104−1、104−2をポーリングして、ホストへの転送終了を検出する。そして、転送終了を検出した場合に、リード終了検出部317は、当該転送の対象であったデータに割り当てていたDRAM150上のバッファ領域を開放する。
そして、本実施形態にかかる第1のMPU101では、コマンド管理部311、ライトクレジット管理部312、Transfer_Ready通知部313、ライト実行開始部314、ライト終了検出部315、リード転送開始部316、及びリード終了検出部317の順番に従って、各構成の処理が繰り返されるものとする。
次に、第2のMPU103の構成について説明する。ユーザデータ書込先提供部321は、チャネルコントローラ102をポーリングし、全チャネルを同期した同時書き込みの開始を検出する。そして、ユーザデータ書込先提供部321は、チャネルコントローラ102に対して、当該開始を検出した場合に、次の書込先となる、新たなNANDメモリ160−1〜160−8のアドレスを提供する。なお、新たなNANDメモリ160−1〜160−8のアドレスは、コンパクション実行部325により設けられた空きブロックを利用する。
コンパクション対象データ書込先提供部322は、チャネルコントローラ102をポーリングし、コンパクションライトの開始を検出する。そして、コンパクション対象データ書込先提供部322は、チャネルコントローラ102に対して、次にコンパクションによる書込先となる、新たなNANDメモリ160−1〜160−8のアドレスを提供する。なお、新たなNANDメモリ160−1〜160−8のアドレスは、コンパクション実行部325により設けられた空きブロックを利用する。
データ量設定部323は、全チャネルを同期した一度に書き込み可能なデータ量を示す情報を、シェアードRAM108に設定する。この同時書き込みは、ユーザデータの書き込みでもコンパクションライトでも良い。なお、データ量設定部323による設定は、ユーザデータ書込先提供部321による同時開始の検出、又はコンパクション対象データ書込先提供部322によるコンパクションライトの開始の検出をトリガーとして行われる。
ブロック検索部324は、コンパクションの対象となるブロックをDRAM150に格納されたブロック管理テーブルから検索する。選択に使用するアルゴリズムは様々な手法が提案されているため説明を省略するが、ブロック検索部324は、一般的に、有効なデータが含まれている量が少ないブロックを選択する。
コンパクション実行部325は、コンパクションを実行する。コンパクション実行部325は、ブロック検索部324により選択されたブロックの有効なデータを含むページを、DRAM150のデータ格納領域へ読み出すリードコマンドを、チャネルコントローラ102に発行する。その後、コンパクション実行部325は、DRAM150への読み出し終了をポーリングで検出する。検出した場合に、コンパクション実行部325は、DRAM150に記憶されたデータを移動先へコピーするためのライトコマンドを、チャネルコントローラ102に発行する。
コンパクション実行部325による複数ブロックの移動によって空きブロックが生成されるが、これらはユーザデータ書込先提供部321及びコンパクション対象データ書込先提供部322で提供する空きブロックそのものとなる。
第2のMPU103では、上述した構成による処理を時分割的に実行する。このため、上述したコンパクション処理は、一括して実行するのではない。
本実施形態にかかる半導体ディスク装置1は、一回の全チャネル同時書き込みで書き込み可能なデータ量を記憶するシェアードRAM108と、DMAコントローラ106が全チャネルの同時書き込みのためのデータを転送しているか否かを示す転送判定信号を出力するチャネルコントローラ102の信号出力部111を備えた。
つまり、第1のMPU101が、シェアードRAM108の書き込み可能なデータ量に従って、ホストからデータを受信し、DRAM150に格納するよう制御を行うこととした。これにより、DRAM150には、全チャネル同時書き込みで書き込める分のデータだけ格納され、それ以上のデータの受信を抑止した。これにより、全チャネル同時書き込みの準備中に、ホストからデータが送信されてくるのを抑止した。
さらには、信号出力部111が全チャネル同時書き込み中であることを示す転送判定信号を出力することとした。そして、第1のMPU101が、全チャネルで同時書き込みのためのデータ転送が行われている間は、シェアードRAM108に設定されている書き込み可能なデータ量にかかわらず、ホストからデータを受信することを抑止した。
これら処理の組み合わせにより、全チャネル同時書き込みのための処理が行われている間は、ホストからデータの受信が行われないため、DMAコントローラ106において、全チャネル同時書き込みのためのDRAM150からのデータの読み出しと、ホストから受信したデータのDRAM150への書き込みと、が競合することを防ぐことが可能となった。次に、具体的なデータの転送タイミングについて説明する。
図3は、本実施形態にかかる半導体ディスク装置1における、シーケンシャルライトの転送タイミングを示した図である。図3のSAS TX400は、半導体ディスク装置1がホストにTransfer_Readyフレームを送信するタイミングを示している。SAS RX410は、半導体ディスク装置1がホストからユーザデータを受信するタイミングを示している。
Write Xfer420は、信号出力部111が出力する転送判定信号のタイミングを示している。DMA(SAS)430は、SASコントローラ104−1、104−2により受信されたデータを、DMAコントローラ106がDRAM150に転送するタイミングを示している。DMA(Ch0−7)440は、DRAM150に記憶されたデータを、DMAコントローラ106がNANDメモリコントローラ107−1〜107−8に転送するタイミングを示している。
データ転送タイミング450は、NANDメモリコントローラ107−1〜107−8がNANDメモリ160−1〜160−8にデータを転送するタイミングを示している。データ転送タイミング450は、NANDメモリコントローラ107−1〜107−8がユーザデータをNANDメモリ160−1〜160−8に転送するタイミング452と、NANDメモリ160−1〜160−8がユーザデータを書き込むタイミング453と、で構成されている。
図3に示すように、SASコントローラ104−1、104−2は、Transfer_Readyフレームの送信に対応して、ホストからユーザデータを受信する。そして、受信したユーザデータは、FIFOバッファ105−1〜105−4に一時的に格納されるが、DMAコントローラ106が、受信したユーザデータを、転送期間431−1、431−2及び431−3の間に、DRAM150に転送する。
そして、全チャネル同時書き込みのためのデータがDRAM150に蓄積され、且つNANDメモリ160−1〜160−8への書き込みが完了した(例えば、タイミング451−1)後、DMAコントローラ106は、チャネルコントローラ102の指示に従って、ユーザデータを、NANDメモリコントローラ107―1〜107−8に転送する(転送タイミング440)。その際、信号出力部111は、チャネルコントローラ102の制御に従って、DMAコントローラ106が全チャネル同時書き込みのためのデータ転送をしていることを示す転送判定信号を出力する(期間421−1、421−2、及び422−3参照)。
なお、図3に示す例において、Defectが無い場合に1回で書き込まれるデータ量は、DMAコントローラ106による転送期間431−1で転送されるデータ量と一致する。一方、Defectが有る場合に一回で書き込まれるデータ量は、DMAコントローラ106による転送期間431−2で転送されるデータ量と一致する。本実施形態においては、次回に書き込むデータ量分をホストからデータを正確に受信することが可能となるため、全チャネルを同期して同時に書き込む処理を容易に実現できる。換言すれば、本実施形態にかかる半導体ディスク装置1では、全チャネルを同期して同時に書き込む処理の直前に、ホストへTransfer_Readyフレームを送信しない。これにより、全チャネル同期転送の直前でホストからユーザデータの受信を抑止できる。
また、本実施形態にかかる半導体ディスク装置1では、全チャネル同時書き込みが終了したタイミング(例えばタイミング451−2)であっても、全チャネル同時書き込みのためのデータ量がDRAM150に格納されていない場合、DMAコントローラ106は、DRAM150に、当該データ量が格納されるまで待機する。そしてデータ量が格納された後、DMAコントローラ106は、チャネルコントローラ102の指示に従って、ユーザデータを、NANDメモリコントローラ107―1〜107−8に転送する。
そして、信号出力部111が、データ転送をしていることを示す転送判定信号‘1’を出力している間に、第2のMPU103のデータ量設定部323が、シェアードRAM108に次に書き込み可能なデータ量を設定する。
そして、信号出力部111が出力する転送判定信号が‘1’から‘0’に切り替えられた時点で、第1のMPU101のライトクレジット管理部312が、ホストからのデータを受信可能であると判定する。この判定に基づいて、Transfer Ready通知部313がTransfer Readyフレームの通知を、SASコントローラ104−1、104−2に対して要求する。
このような制御を行うことで、図3に示すように、DMAコントローラ106において、DRAM150からのデータの読み込みと、DRAM150へのデータの書き込みと、の競合を抑止できる。これにより、無転送期間が現れないよう制御することが可能となった。
図4は、本実施形態にかかる半導体ディスク装置1における、ランダムライトの転送タイミングを示した図である。図4のSAS TX500は、半導体ディスク装置1がホストにTransfer_Readyフレームを送信するタイミングを示している。SAS RX510は、半導体ディスク装置1がホストからユーザデータを受信するタイミングを示している。
Write Xfer520は、信号出力部111が出力する転送判定信号のタイミングを示している。DMA(SAS)530は、SASコントローラ104−1、104−2により受信されたデータを、DMAコントローラ106がDRAM150に転送するタイミングを示している。DMA(Ch 0−7)540は、DRAM150に記憶されたデータを、DMAコントローラ106がNANDメモリコントローラ107−1〜107−8に転送するタイミングを示している。
データ転送タイミング550は、NANDメモリコントローラ107−1〜107−8がNANDメモリ160−1〜160−8にデータを転送するタイミングを示している。データ転送タイミング550は、NANDメモリコントローラ107−1〜107−8がユーザデータをNANDメモリ160−1〜160−8に書き込むまでの期間551と、コンパクションのためにNANDメモリ160−1〜160−8からDRAM150にデータを読み出す期間552と、コンパクションのためにDRAM150に保持されたデータをNANDメモリ160−1〜160−8に書き込む期間553と、で構成されている。
ところで、半導体ディスク装置1においては、ランダムライトを行うことで無効なデータがランダムな物理位置に発生する。このため、新たなデータを書き込み可能とするためにコンパクションが必要になる。一般にコンパクションは、コマンドを処理していない期間に実行することで、性能低下を抑止する。しかしながら、ライトコマンドが頻繁に発行される期間では、このペースに合わせて新たな書き込みを行なう領域を確保しなければならない。このため、図4に示す様に、ユーザデータの受信と並行してコンパクションが必要となる。
ランダムライトでは、1回のユーザデータの書き込み(期間551)に対して、コンパクション処理(期間552、553)が複数回必要となる。期間552は、コンパクション元のデータを、DRAM150に確保したコンパクション用のバッファに読み出す期間とする。期間553は、DRAM150上に格納されたデータを、コンパクション先に書き込む期間とする。コンパクションでは、有効なデータをまとめて移動させる処理である。コンパクションの書き込み処理(期間553で行われる処理)は、ユーザデータの書き込み処理と同じであり、コンパクションのために全チャネル同時転送を実行する期間521−2では、ホストからのデータの受信を抑止する必要がある。
このコンパクションを実施している間でもホストからはライトコマンドが発行される。これに対し、本実施形態にかかる半導体ディスク装置1では、Write Xfer520として‘1’が出力されている期間は、ユーザデータの書き込みか、コンパクションによる書き戻しか、を問わず、ホストに対してTransfer_Readyフレームによるコミットを出力しないよう制御できる。この結果、コンパクションによる書き戻しのための転送期間521−2では、ホストからのデータ転送が重なる確率を低く保つことができる。
次に、第2のMPU103による、全チャネル同時書き込みを行うための処理について説明する。図5は、本実施の形態にかかる第2のMPU103における上述した処理の手順を示すフローチャートである。図5に示す例では、ユーザデータの書き込みのための処理とするが、コンパクションであっても同様の処理を行うものとする。
まず、第2のMPU103のユーザデータ書込先提供部321が、チャネルコントローラ102をポーリングし、全チャネルを同期した同時書き込みを開始したか否かを判定する(ステップS601)。同時書き込みを開始していないと判定した場合(ステップS601:No)、処理を終了する。
そして、ユーザデータ書込先提供部321が、同時書き込みを開始したと判定した場合(ステップS601:Yes)、次の書き込みアドレス、及びDefect位置を、チャネルコントローラ102に設定する(ステップS602)。
その後、第2のMPU103のデータ量設定部323が、次の同時書き込み処理で書き込むデータ量を、シェアードRAM108に設定する(ステップS603)。このデータ量は、Defectの有無等により変化する。
上述した処理手順により、次の全チャネル同時書き込みに必要な設定を行うことができる。なお、上述した処理手順は、第2のMPU103が所定時間毎に定期に行うこととする。
次に、第1のMPU101による、ライトコマンドを実行するための処理について説明する。図6は、本実施の形態にかかる第1のMPU101における上述した処理の手順を示すフローチャートである。図6に示す例では、ユーザデータの書き込みのための処理とするが、コンパクションであっても同様の処理を行うものとする。
まず、ライトクレジット管理部312が、ライトコマンドキューを参照し、転送未完了のライトコマンドがあるか否かを判定する(ステップS701)。ライトコマンドがないと判定した場合(ステップS701:No)、処理を終了する。
一方、ライトクレジット管理部312が、転送未完了のライトコマンドがあると判定した場合(ステップS701:Yes)、シェアードRAM108を参照し、書き込み可能なデータ量があるか否かを判定する(ステップS702)。書き込み可能なデータ量が無いと判定した場合(ステップS702:No)、処理を終了する。
そして、ライトクレジット管理部312が、書き込み可能なデータ量があると判定した場合(ステップS702:Yes)、当該書き込み可能なデータ量で、ライトコマンドが必要とするデータ量分を書き込み可能であるか否かを判定する(ステップS703)。書き込み可能であると判定した場合(ステップS703:Yes)、次の全チャネル同時書き込み処理で書き込む量として、ライトコマンドが必要とするデータ量分を設定する(ステップS704)。一方、書き込み可能ではないと判定した場合(ステップS703:No)、次の全チャネル同時書き込み処理で書き込む量として、シェアードRAM108に記憶されていた書き込み可能なデータ量を設定する(ステップS705)。
その後、ライトクレジット管理部312は、信号出力部111が出力する転送判定信号に基づいて、DMAコントローラ106が、NANDメモリ160−1〜160−8に書き込むためのデータを転送中であるか否かを判定する(ステップS706)。転送中であると判定した場合(ステップS706:Yes)、処理を終了する。
一方、ライトクレジット管理部312が、転送中ではないと判定した場合(ステップS706:No)、データを受信可能であるとみなし、Transfer_Ready通知部313が、書き込む量を示したTransfer_Readyフレームの通知を、SASコントローラ104−1、104−2に要求する(ステップS707)。これにより、SASコントローラ104−1、104−2が、Transfer_Readyフレームをホストに通知する。
その後、ライト実行開始部314は、シェアードRAM108に記憶されている、書き込み可能なデータ量を、発行したライトコマンドで書き込むデータ量で減算する(ステップS708)。
その後、ライト実行開始部314は、ライトコマンドで書き込むデータ量から、今回の処理で書き込むデータ量で減算する(ステップS709)。
そして、ライト実行開始部314は、ライトコマンドで書き込むデータ量が‘0’になったか否かを判定する(ステップS710)。‘0’になっていないと判定した場合(ステップS710:No)、ライトコマンドを、ライトコマンドキューに保持し(ステップS712)、終了する。
一方、ライト実行開始部314が、ライトコマンドで書き込むデータ量が‘0’になったと判定した場合(ステップS710:Yes)、ライトコマンドの転送が終了したものとして、当該ライトコマンドをライトコマンドキューから削除し(ステップS711)、処理を終了する。
上述した処理手順により、DMAコントローラ106がデータの転送中以外のタイミングで、Transfer_Readyフレームが送信されることになる。なお、上述した処理手順は、第1のMPU101が所定時間毎に定期に行うこととする。
このように本実施形態では、第2のMPU103のデータ量設定部323が、1回の全チャネル同時書き込み処理で書き込み可能なデータ量を、シェアードRAM108に設定する。そして、第1のMPU101のライト実行開始部314が、書き込み処理が行われる毎に、シェアードRAM108に設定された書き込み可能なデータ量から、書き込み処理されたデータ量を減算する。そして、SASコントローラ104−1、104−2が、書き込み可能なデータ量が‘0’になるまで、ホストからデータを受信する。そして、書き込み可能なデータ量が‘0’になった場合に、ホストからのデータの受信が抑止される。そして、全チャネル同時書き込み処理の開始時に、データ量設定部323が、その次の全チャネル同時書き込み処理で書き込み可能なデータ量を、シェアードRAM108に再設定する。
本実施形態にかかる半導体ディスク装置1では、ユーザデータの全チャネル同期転送と、ホストからのデータ転送と、の競合が抑止される。さらに、コンパクションライトによる全チャネル同期転送の期間でも、新たなTransfer_Readyフレームの発行を抑止できる。
これにより、本実施形態にかかる半導体ディスク装置1ではSASやFCを用いた場合における共用バス・インターフェイスでのバスフリーズを防止できる。その際に、半導体ディスク装置1に、DMAコントローラ106とNANDメモリコントローラ107−1〜107−8との間に低容量又は低速バッファメモリを使用しても性能を低下させることを抑止できる。
本実施形態にかかる半導体ディスク装置1では、ホストから受信してDRAM150に記憶させる総データ量と、次回に全チャネル同時書き込み処理で一度に書き込めるデータ量と、を一致させた。これを実現するために、シェアードRAM108に記憶された書き込み可能なデータ量に基づいて、Tranfer_Readyフレームの発行を制御することとした。これにより、一度の書き込み処理で、書き込めるデータ量だけコミットすることとした。
さらに、本実施形態にかかる半導体ディスク装置1では、DMAコントローラ106が全チャネルの同時書き込みのための同時転送期間中は、ホストに対してTranfer_Readyフレームによる新たなコミットを制限することとした。
このように、本実施形態にかかる半導体ディスク装置1によれば、複数デバイスでバスをシェアする形のSASインターフェイスやFCインターフェイスを有する場合でも、高価な高速バッファメモリを使わずに、転送効率を可能な限り向上させる事が可能となる。さらに、バスを共用するシステム全体の性能を向上させることができる。
このように、本実施形態にかかる半導体ディスク装置1によれば、ホスト転送と、非同期に開始されるコンパクションの書き戻しのための全チャネル同時転送と、が競合することを低減させることができる。これにより、バスフリーズを防止でき、システム全体の性能を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100…半導体ディスクコントローラ、101…第1のMPU、102…チャネルコントローラ、103…第2のMPU、104−1、104−2…SASコントローラ、105−1〜105−4…FIFOバッファ、106…DMAコントローラ、107―1〜107−8…NANDメモリコントローラ、108…シェアードRAM、109…プロセッサバス、111…信号出力部、160−1〜160−8…NANDメモリ、311…コマンド管理部、312…ライトクレジット管理部、313…Transfer_Ready通知部、314…ライト実行開始部、315…ライト終了検出部、316…リード転送開始部、317…リード終了検出部、321…ユーザデータ書込先提供部、322…コンパクション対象データ書込先提供部、323…データ量設定部、324…ブロック検索部、325…コンパクション実行部
Claims (7)
- 不揮発性メモリと、
データを一時的に記憶する記憶手段と、
ホストに対して、前記記憶手段にデータを書き込む量を指定してデータの転送許可を通知する通知手段と、
前記ホストから前記転送許可に従って転送されるデータを前記記憶手段に転送し、前記記憶手段に記憶されたデータを、前記不揮発性メモリに書き込むために転送する転送手段と、
前記不揮発性メモリに書き込むために必要なデータ量が前記記憶手段に記憶されてから、前記転送手段による前記不揮発性メモリへの前記データの転送が終了するまで、前記通知手段による前記転送許可の通知を抑止させる制御手段と、
を備える記憶装置。 - 前記転送手段は、前記不揮発性メモリからコンパクションの対象となるデータを前記データ量だけ前記記憶手段に転送し、前記記憶手段に転送された前記コンパクションの対象となるデータをまとめて前記不揮発性メモリに転送する、
請求項1に記載の記憶装置。 - 前記通知手段は、前記複数チャネルを同期させて転送するために必要なデータ量が、前記記憶手段に記憶されるまで通知し、
前記転送手段は、前記ホストから転送されてきたデータが、前記データ量だけ前記記憶手段に記憶された場合に、当該データを前記不揮発性メモリに前記複数チャネルを同期させて転送する、
請求項1又は2に記載の記憶装置。 - 前記複数チャネルを同期させて一度で書き込み可能なデータ量を示すデータ量情報を、前記制御手段が参照可能な共有記憶部に設定する設定手段を、さらに備え、
前記制御手段は、前記共有記憶部に記憶された前記データ量情報で示されるデータ量のデータを前記記憶手段が記憶した場合に、前記転送許可の通知を抑止させる、
請求項1乃至3のいずれか1つに記載の記憶装置。 - 前記ホストと接続するインターフェイスとしてSAS(Serial Attached SCSI)又はファイバーチャネルを用いる、
請求項1乃至4のいずれか1つに記載の記憶装置。 - 記憶装置で実行されるデータ制御方法であって、
前記記憶装置は、不揮発性メモリと、データを一時的に記憶する記憶手段と、を備え、
通知手段が、ホストに対して、前記記憶手段にデータを書き込む量を指定してデータの転送許可を通知する通知ステップと、
転送手段が、前記ホストから前記転送許可に従って転送されるデータを前記記憶手段に転送し、前記記憶手段に記憶されたデータを、前記不揮発性メモリに書き込むために転送する転送ステップと、
制御手段が、前記不揮発性メモリに書き込むために必要なデータ量が前記記憶手段に記憶されてから、前記転送ステップによる前記不揮発性メモリへの前記データの転送が終了するまで、前記通知ステップによる前記転送許可の通知を抑止させる制御ステップと、
を含むことを特徴とするデータ制御方法。 - ホストに対して、記憶手段にデータを書き込む量を指定してデータの転送許可を通知する通知手段と、
前記ホストから前記転送許可に従って転送されるデータを前記記憶手段に転送し、前記記憶手段に記憶されたデータを、不揮発性メモリに書き込むために転送する転送手段と、
前記不揮発性メモリに書き込むために必要なデータ量が前記記憶手段に記憶されてから、前記転送手段による前記不揮発性メモリへの前記データの転送が終了するまで、前記通知手段による前記転送許可の通知を抑止させる制御手段と、
を備えるデータコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011122753A JP2012252416A (ja) | 2011-05-31 | 2011-05-31 | 記憶装置、データ制御方法、及びデータコントローラ |
US13/424,351 US20120311236A1 (en) | 2011-05-31 | 2012-03-19 | Memory system, data control method, and data controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011122753A JP2012252416A (ja) | 2011-05-31 | 2011-05-31 | 記憶装置、データ制御方法、及びデータコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012252416A true JP2012252416A (ja) | 2012-12-20 |
Family
ID=47262584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011122753A Withdrawn JP2012252416A (ja) | 2011-05-31 | 2011-05-31 | 記憶装置、データ制御方法、及びデータコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120311236A1 (ja) |
JP (1) | JP2012252416A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10394727B2 (en) | 2017-01-11 | 2019-08-27 | Toshiba Memory Corporation | Semiconductor memory device with data buffering |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933497B (zh) | 2015-12-31 | 2020-02-21 | 华为技术有限公司 | 一种基于sas的管理调度装置、系统及方法 |
CN107885671B (zh) * | 2016-09-30 | 2021-09-14 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442704A (en) * | 1994-01-14 | 1995-08-15 | Bull Nh Information Systems Inc. | Secure memory card with programmed controlled security access control |
US7411757B2 (en) * | 2006-07-27 | 2008-08-12 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory having multiple modes of operation |
JP2008046791A (ja) * | 2006-08-14 | 2008-02-28 | Fujitsu Ltd | 記憶装置、ファームウェア更新方法、及び制御装置 |
US20090024784A1 (en) * | 2007-07-20 | 2009-01-22 | Wang Liang-Yun | Method for writing data into storage on chip and system thereof |
-
2011
- 2011-05-31 JP JP2011122753A patent/JP2012252416A/ja not_active Withdrawn
-
2012
- 2012-03-19 US US13/424,351 patent/US20120311236A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10394727B2 (en) | 2017-01-11 | 2019-08-27 | Toshiba Memory Corporation | Semiconductor memory device with data buffering |
Also Published As
Publication number | Publication date |
---|---|
US20120311236A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8639898B2 (en) | Storage apparatus and data copy method | |
US9032161B2 (en) | Storage system control method | |
US11960749B2 (en) | Data migration method, host, and solid state disk | |
US8589646B2 (en) | Storage apparatus and method for storage apparatus | |
US8745150B2 (en) | Storage control apparatus and storage control method | |
JP2002259063A (ja) | バックアップ処理可能な記憶システム | |
JP5531091B2 (ja) | 計算機システム及びその負荷均等化制御方法 | |
US9423984B2 (en) | Storage apparatus and control method thereof | |
US7558937B2 (en) | Disk array device memory having areas dynamically adjustable in size | |
JP2010049502A (ja) | ストレージサブシステム、及びこれを有するストレージシステム | |
US8694698B2 (en) | Storage system and method for prioritizing data transfer access | |
US20150242146A1 (en) | Storage control apparatus and storage system | |
US7451285B2 (en) | Computer systems, management computers and storage system management method | |
US10234929B2 (en) | Storage system and control apparatus | |
US9367492B2 (en) | Storage virtualization apparatus causing access request process to be delayed based on incomplete count and storage virtualization method | |
US20110238915A1 (en) | Storage system | |
US9141306B2 (en) | Information processing apparatus and area release control method | |
US20110191551A1 (en) | Storage apparatus and storage management method | |
US10007467B2 (en) | Storage system | |
JP2012252416A (ja) | 記憶装置、データ制御方法、及びデータコントローラ | |
US11080192B2 (en) | Storage system and storage control method | |
US9990148B2 (en) | Storage control device and storage system for data backup | |
US20120254531A1 (en) | Storage apparatus and storage control device | |
US8972634B2 (en) | Storage system and data transfer method | |
US9383938B2 (en) | Method, system, and apparatus for re-conveying input/output operations utilizing a sequential-access data storage device secondary communication port |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140805 |