特許第6265706号(P6265706)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特許6265706記憶装置及びそれを含むコンピューティングシステムと、それのデータ転送方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6265706
(24)【登録日】2018年1月5日
(45)【発行日】2018年1月24日
(54)【発明の名称】記憶装置及びそれを含むコンピューティングシステムと、それのデータ転送方法
(51)【国際特許分類】
   G06F 13/36 20060101AFI20180115BHJP
   G06F 13/28 20060101ALI20180115BHJP
   G06F 13/10 20060101ALI20180115BHJP
【FI】
   G06F13/36 310E
   G06F13/28 310A
   G06F13/10 340A
【請求項の数】10
【全頁数】20
(21)【出願番号】特願2013-243556(P2013-243556)
(22)【出願日】2013年11月26日
(65)【公開番号】特開2014-106977(P2014-106977A)
(43)【公開日】2014年6月9日
【審査請求日】2016年9月9日
(31)【優先権主張番号】10-2012-0134589
(32)【優先日】2012年11月26日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】沈 昊 俊
(72)【発明者】
【氏名】金 恩 賛
【審査官】 田上 隆一
(56)【参考文献】
【文献】 米国特許出願公開第2010/0077117(US,A1)
【文献】 国際公開第2012/140670(WO,A1)
【文献】 特開2006−164012(JP,A)
【文献】 米国特許第09189166(US,B1)
【文献】 特表2012−508428(JP,A)
【文献】 特開2006−059365(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/36
G06F 13/10
G06F 13/28
(57)【特許請求の範囲】
【請求項1】
少なくともホストプロセッサ及びホストメモリを含む外部のホストと第1インターフェースを介して通信し、内部に第2インターフェースを介して通信するホストバスアダプタを備える記憶装置のデータ転送方法に於いて、
前記ホストプロセッサから前記ホストメモリに入出力要求に対応するコマンドキューを送信する段階と、
前記ホストプロセッサが、前記ホストバスアダプタに書き込みコマンドと読み取りコマンドを発行する段階と、
前記記憶装置から、前記発行された書き込みコマンドと読み取りコマンド情報に応答して前記ホストメモリに前記入出力要求に対応するフレーム情報構造を転送することによって前記入出力要求をフェッチする段階と、
前記記憶装置が前記ホストメモリとの間で、前記書き込みコマンドに応答して前記第1インターフェースを使用して読み取りダイレクトメモリアクセスの動作を実行するとともに、前記読み取りコマンドに応答して前記第1インターフェースを使用して書き込みダイレクトメモリアクセスの動作を実行する段階と、
前記記憶装置が、前記書き込みコマンド及び前記読み取りコマンドに応答して前記第2インターフェースの規定による書き込み及び読み取りデータフレーム情報構造のシーケンス(DMAセットアップFIS,ノンデータFIS、及びSDB−FISをこの順に含む)を生成し、前記ホストメモリに送信する段階と
但し、書き込みの際のノンデータFISのみは、前記ホストメモリにより生成されて前記記憶装置に送信され、
前記記憶装置のホストバスアダプタから割り込みを発生して前記ホストメモリに送信する段階と、
前記ホストプロセッサから前記発生された割り込みをもとにして前記入出力要求を完了する段階と、を含み、
前記第1インターフェースは双方向のデータ転送を実行し、前記第2インターフェースは単方向のデータ転送を実行することを特徴とするデータ転送方法。
【請求項2】
前記書き込みコマンド及び前記読み取りコマンドは、ネイティブコマンドキューイング(native command queuing;NCQ)によって前記ホストバスアダプタに入力されることを特徴とする請求項1に記載のデータ転送方法。
【請求項3】
前記書き込み及び読み取りコマンドを発行する前に、前記記憶装置の前のコマンドが完了したことを判別するために前記ホストバスアダプタの第1レジスタを読み取る段階をさらに含むことを特徴とする請求項1に記載のデータ転送方法。
【請求項4】
前記ホストに前記発行された書き込みコマンドと読み取りコマンドに対応するフレーム情報構造を転送することによってコマンドをフェッチする段階をさらに含むことを特徴とする請求項1に記載のデータ転送方法。
【請求項5】
前記フレーム情報構造のシーケンスはそれぞれダイレクトメモリアクセスセットアップのフレーム情報構造(DMA Setup FIS)、プログラムアイオーフレーム情報構造(PIO Setup FIS)、データフレーム情報構造(Data FIS)、セット装置ビットフレーム情報構造(SDB FIS)を含むことを特徴とする請求項1に記載のデータ転送方法。
【請求項6】
前記データフレーム情報構造は、ノン−データ(non−data)フレーム情報構造であることを特徴とする請求項5に記載のデータ転送方法。
【請求項7】
前記読み取り及び書き込みのダイレクトメモリアクセス動作が完了した後に、前記フレーム情報構造のシーケンスが発生されることを特徴とする請求項1に記載のデータ転送方法。
【請求項8】
中央処理装置、メインメモリ、前記中央処理装置と第1インターフェースを介して通信し、内部に第2インターフェースを介して通信するホストバッファアダプタを備える記憶装置を含むコンピューティングシステムのデータ転送方法に於いて、
前記中央処理装置から前記メインメモリに入出力要求に対応するコマンドキューを送信する段階と、
前記中央処理装置から前記メインメモリに前記入出力要求された情報を前記ホストバッファアダプタに送信する段階と、
前記記憶装置から前記情報に応答して前記メインメモリに前記入出力要求に対応するフレーム情報構造を転送することによって前記入出力要求をフェッチする段階と、
前記記憶装置から前記第1インターフェースによって前記メインメモリと前記記憶装置との間でデータを転送する段階と、
前記記憶装置が、前記データ転送後に前記第2インターフェースの規定によって書き込み及び読み取りフレーム情報構造のシーケンス(DMAセットアップFIS,ノンデータFIS、及びSDB−FISをこの順に含む)を発生し、前記メインメモリに送信する段階と、
但し、書き込みの際のノンデータFISのみは前記メインメモリから前記記憶装置に送信され、
前記記憶装置のホストバスアダプタから割り込みを発生してホストメモリに送信する段階と、
前記中央処理装置から前記発生された割り込みをもとにして前記入出力要求を完了する段階と、を含むことを特徴とするデータ転送方法。
【請求項9】
前記第1インターフェースは双方向のデータ転送を実行し、
前記第2インターフェースは単方向のデータ転送を実行することを特徴とする請求項8に記載のデータ転送方法。
【請求項10】
前記第1インターフェースはPCIe(peripheral component interconnect express)インターフェースであり、前記第2インターフェースはSATA(serial advanced technology attachment)インターフェースであることを特徴とする請求項9に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は記憶装置及びそれを含むコンピューティングシステムと、該データ転送方法に関する。
【背景技術】
【0002】
近年のコンピューティングシステム(computing system)の記憶装置(storage device)としてソリッドステートドライブ(SSD、solid state drive)が広く使用されている。SSDはデータを保存するためにフラッシュメモリのような不揮発性メモリを使用し、従来のHDD(hard disk drive)と比較して耐久性、サイズ、消費電力などの面で良好な特性を有している。SSDはホストとの通信方法によって、PCI(peripheral component interconnect)SSDとSATA(serial advanced technology attachment)SSDとに区分される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第8055816号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は双方向のデータ転送を行うことができる記憶装置を提供する。
本発明はホストバッファアダプタを備える記憶装置を提供する。
【課題を解決するための手段】
【0005】
本発明の実施形態に於いて、外部のホストと第1インターフェースを介して通信し、内部に第2インターフェースを介して通信するホストバスアダプタを備える記憶装置のデータ転送方法は、前記ホストバスアダプタへの書き込みコマンド及び読み取りコマンドを発行する段階と、前記書き込みコマンドに応答して前記第1インターフェースを使用して読み取りダイレクトメモリアクセス動作を実行するとともに、前記読み取りコマンドに応答して前記第1インターフェースを使用して書き込みダイレクトメモリアクセス動作を実行する段階と、前記書き込みコマンド及び前記読み取りコマンドに応答して前記第2インターフェースによるフレーム情報構造のシーケンスを生成する段階を含み、前記第1インターフェースは双方向のデータ転送を実行し、前記第2インターフェースは単方向のデータ転送を実行する。
【0006】
本発明の実施形態による中央処理装置、メインメモリ、前記中央処理装置と第1インターフェースを介して通信し、内部に第2インターフェースを介して通信するホストバッファアダプタを備える記憶装置を含むコンピューティングシステムのデータ転送方法は、前記メインメモリに入出力要求に対応するコマンドキューを送信する段階と、前記メインメモリに前記入出力要求された情報を前記ホストバッファアダプタに送信する段階と、前記情報に応答して前記メインメモリに前記入出力要求に対応するフレーム情報構造を転送することにより前記入出力要求をフェッチする段階と、前記入出力要求に応答して前記第1インターフェースによって前記メインメモリと前記記憶装置との間でデータを転送する段階と、前記データ転送後前記第2インターフェースによってフレーム情報構造のシーケンスを生成する段階と、前記記憶装置から割り込みを発生する段階と、前記中央処理装置から前記発生された割り込みをもとにして前記入出力要求を完了する段階を含む。
【0007】
本発明の実施形態による記憶装置は、第1インターフェースに応じて外部と通信する第1インターフェース回路と、前記第1インターフェース回路と前記第1インターフェースによって通信するホストバスアダプタと、前記ホストバスアダプタと第2インターフェースによって通信する第2インターフェースエミュレータと、外部のホストメモリとのデータ転送を実行するためのダイレクトメモリアクセス回路と、データを保存する少なくとも1つの不揮発性メモリ装置と、前記第2インターフェースエミュレータから出力された入出力要求により、前記少なくとも1つの不揮発性メモリ装置を制御するメモリコントローラを含み、前記ダイレクトメモリアクセス回路は前記データ転送のとき前記第1インターフェース回路から双方向のデータ転送を実行するように構成され、前記データ転送後に前記第2インターフェースによるフレーム情報構造のシーケンスが発生する。
【0008】
本発明の実施形態によるコンピューティングシステムは、ホストバスと、前記ホストバスに第1インターフェースを介して接続されたホストプロセッサと、前記ホストプロセッサに接続されたホストメモリと、前記ホストバスに前記第1インターフェースを介して接続され、RAID(redundant array of independent disks)機能を実行するためのRAIDコントローラと、前記RAIDコントローラに前記第1インターフェースを介して接続された複数の記憶装置を含み、前記複数の記憶装置の中で少なくとも1つは前記第1インターフェースによってデータを送受信する第1インターフェース回路と、前記第1インターフェース回路と前記第1インターフェースによって通信するホストバスアダプタと、前記ホストバスアダプタと前記第2インターフェースによって通信する第2インターフェースエミュレータと、前記ホストメモリとのデータ転送を実行するためのダイレクトメモリアクセス回路と、データを保存する少なくとも1つの不揮発性メモリ装置と、前記第2インターフェースエミュレータから出力された入出力要求に応じて前記少なくとも1つの不揮発性メモリ装置を制御するメモリコントローラを含み、前記ダイレクトメモリアクセス回路は前記データ転送のとき前記第1インターフェース回路から双方向のデータ転送を実行するように具現され、前記データ転送後に前記第2インターフェースによるフレーム情報構造のシーケンスが発生される。
【発明の効果】
【0009】
本発明の実施形態による記憶装置はホストバスアダプタのドライバを備えることにより、従来のものと比較して互換性を維持することができる。
また、本発明の実施形態による記憶装置は双方向のデータ転送を行うことにより、データ転送の効率を極大化することができる。
【図面の簡単な説明】
【0010】
図1】本発明によるコンピューティングシステムの第1実施形態を示すブロック図。
図2】本発明の実施形態によるホストと記憶装置間のデータの流れを概略的に示す図。
図3図2に示された双方向のデータ転送を例示的に示すフローチャート。
図4】本発明によるデータ転送方法を例示的に示すフローチャート。
図5】本発明によるコンピューティングシステムの第2実施形態を示すブロック図。
図6】本発明によるコンピューティングシステムの第3実施形態を示すブロック図。
図7】本発明によるコンピューティングシステムの第4実施形態を示すブロック図。
図8】本発明によるコンピューティングシステムの第5実施形態を示すブロック図。
図9】本発明によるコンピューティングシステムの第6実施形態を示すブロック図。
図10】本発明の実施形態による入出力要求の観点から見たコンピューティングシステムを示す図。
図11図10に図示されたAHCIコントローラを含むSSDコントローラのPCIヘッダを例示的に示す図。
図12図10に図示されたAHCIエンジンに格納されているホストの制御情報を例示的に示す図。
図13図10に図示されたAHCIエンジンに格納されているポートの情報を例示的に示す図。
図14A図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14B図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14C図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14D図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14E図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14F図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14G図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図14H図10に図示されたAHCIエンジンとSATAエミュレータとの間で送受信されるFISの規定を例示的に示す図。
図15図10に図示されたメインメモリのホストバッファの構造を例示的に示す図。
図16図15に図示されたコマンドリストの構造を例示的に示す図。
図17図16に図示されたコマンドテーブルを例示的に示す図。
図18図15に図示されたReceivedFIS構造を例示的に示す図。
図19図10に図示されたコンピューティングシステムで読み取りコマンドを実行する過程を例示的に示す図。
【発明を実施するための形態】
【0011】
以下、本発明が属する技術分野において通常の知識を有する者が本発明の技術的思想を容易に実施できるように、本発明の実施形態を添付図面を参照して説明する。
図1は本発明によるコンピューティングシステム1000の第1実施形態を示すブロック図である。図1を参照すると、コンピューティングシステム1000は、ホストバス1001、少なくとも1つのホストプロセッサ1100、少なくとも1つのホストメモリ1200及び記憶装置1300を備える。以下では、ホストバス1001、ホストプロセッサ1100及びホストメモリ1200をホスト(Host)と称する。
【0012】
ホストバス1001は、コンピューティングシステム1000の構成要素(例えば、プロセッサ1100と記憶装置1300)間の第1インターフェース(1st interface)によってデータを転送することができる。ここで第1インターフェースは双方向のデータ転送(full duplex、他の用語で、“全二重通信”)が可能である。すなわち、第1インターフェースは個別に利用可能な送信チャネル(Tx)及び受信チャネル(Rx)を提供する。例えば、第1インターフェースはFC(fiber channel)、USB(universal serial bus)3.0、SAS(serial attached SCSI)、PCIe(peripheral component interconnect express)、SPI(serial peripheral interface)、サンダーボルトインターフェース(thunder bolt interface)、ライトニングボルトインターフェース(lightning bolt interface)などからなる。
【0013】
ホストプロセッサ1100はコンピューティングシステム1000の全ての動作を制御する。ホストプロセッサ1100は第1インターフェース回路1110を備える。第1インターフェース回路1110は第1インターフェースによってホストバス1001に接続される。ホストプロセッサ1100は図示されていないが、ホストメモリ1200を制御するためのメモリコントローラを備える。
ホストメモリ1200はホストプロセッサ1100に接続され、ホストプロセッサ1100の制御によって動作中に必要なデータを保存することができる。ホストメモリ1200はDRAMのような不揮発性メモリ装置またはPRAMのような不揮発性メモリ装置から構成できる。
【0014】
記憶装置1300は第1インターフェースによってホストバス1001に接続され、データを保存する。記憶装置1300は第1インターフェースによって外部のホストプロセッサ1100と通信を行い、第2インターフェースによって内部の通信を行う。ここで第2インターフェースは第1インターフェースとは違って、双方向のデータ転送(fullduplex)を実行せずに、単方向のデータ転送(half duplex)を実行する。例えば、第2インターフェースにはATAインターフェース、SATAインターフェースなどがある。
【0015】
記憶装置1300は第1インターフェース回路1310(他の用語で、“外部インターフェース回路”)、ホストバスアダプタ1320、第2インターフェースエミュレータ1330(他の用語で、“内部インターフェース回路”)、ダイレクトメモリアクセス(direct memory access; DMA)回路1340、少なくとも1つの不揮発性メモリ装置1350及びメモリコントローラ1360を備える。
【0016】
第1インターフェース回路1310はホストバス1001に接続され、外部と第1インターフェースによって通信する。
ホストバスアダプタ1320は第1インターフェースによって第1インターフェース回路1310と通信する。ホストバスアダプタ1320はホストプロセッサ1100から出力された少なくとも1つのコマンドを記憶装置1300が検知できるように構成されるハードウェア及び/またはソフトウェアからなる。実施形態では、ホストバスアダプタ1320はAHCI(advanced host controller interface)から構成される。
【0017】
第2インターフェースエミュレータ1330は第2インターフェースによってホストバスアダプタ1320と通信する。第2インターフェースエミュレータ1330は記憶装置1300のための第2インターフェースのエミュレーションを提供する。例えば、第2インターフェースエミュレータ1330は第2インターフェースのフレーム情報構造(frame information structure; FIS)を利用してホストバスアダプタ1320と通信できるように構成される。従って、FISは第2インターフェースの規定によるデータパケットである。第2インターフェースエミュレータ1330はメモリコントローラ1360に/からFISトランザクション(transaction)を処理したり、ホストバスアダプタ1320を介してホストのFISを処理したりすることができる。
【0018】
DMA回路1340はホストプロセッサ1100から入力されたNCQ(native command queuing)コマンド(write command、read command)に基づいて第1インターフェース回路1310を制御することによって、記憶装置1300がホストメモリ1200にデータを読み取りまたは書き込みできるように構成される。
【0019】
DMA回路1340はホストバス1001の送信チャネル(TX)と受信チャネル(RX)を利用して双方向のデータ転送(full duplex data transfer)を実行するための送信DMA回路(図示せず)と受信DMA回路(図示せず)を備える。
少なくとも1つの不揮発性メモリ装置1350はデータを保存する装置として、フラッシュメモリ(例えば、NAND型フラッシュメモリ)、PRAM(phase−change RAM)、MRAM(magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(ferroelectric RAM)、VNAND(vertical NAND)などからなる。
メモリコントローラ1360は第2インターフェースエミュレータ1330から出力されたFISトランザクションによって、不揮発性メモリ装置1350を制御する。
【0020】
一般的に、第2インターフェース(例えば、単方向データを転送するインターフェース)を支援している記憶装置は双方向のデータ転送は不可能である。しかし、本発明の実施形態によるコンピューティングシステム1000は記憶装置1300が第1インターフェース(例えば、双方向データを転送するインターフェース)を支援するホストバスアダプタ1320と第2インターフェースのFISを利用してホストバスアダプタと通信する第2インターフェースエミュレータ1330を備えることによって、内部では第2インターフェースによってデータを転送するとともに外部とは第1インターフェースによって双方向のデータ転送を可能にする。すなわち、本発明によるコンピューティングシステム1000は第2インターフェースの条件を満足するとともに、データの転送速度を2倍に極大化することができる。
【0021】
また、本発明の実施形態によるコンピューティングシステム1000は第1インターフェースを支援するホストバスアダプタ1320を有する記憶装置1300を備えることによって、従来のものと比較して記憶装置1300のためのホストドライバ(host driver)を別に開発する必要はない。すなわち、本発明の実施形態によるホストプロセッサ1100は従来のホストドライバを使用して本発明の記憶装置1300を駆動することができる。
【0022】
図2は本発明の実施形態によるホストと記憶装置間のデータの流れを概略的に示す図である。図1及び図2を参照すると、データの流れは次のとおりである。
ホストプロセッサ1100は記憶装置1300にデータ転送に関するNCQコマンド(書き込みコマンドまたは読み取りコマンド、CMD)を実行できるかどうかをまず判断する。このために、ホストプロセッサ1100は前のコマンド(prior CMD)が完了したことを確認するためのホストバスアダプタ1320のレジスタを読み取る(S11)。もし、ホストバスアダプタ1320のレジスタを読み取った結果として前のコマンド(prior CMD)が完了したら、ホストプロセッサ1100はコマンド(CMD)をホストメモリ1200に発行する(S12)。この後、ホストプロセッサ1100はホストメモリ1200のコマンド(CMD)が発行されたことを通知するコマンドFIS(CMDFIS)をホストバスアダプタ1320に送信する(S13)。その後、第2インターフェースエミュレータ1330はホストメモリ1200にコマンドFIS関連情報(例えば、コマンドの種類、アドレス、データなど)を保存することによりコマンドをフェッチ(CMD Fetching)する(S14)。これによって、ホストメモリ1200は記憶装置1300へデータを転送することができる領域を設定する。
【0023】
この後、読み取りコマンドまたは書き込みコマンド(CMD)によってホストメモリ1200と記憶装置1300との間に第2インターフェースの規定を満足するとともにデータ転送が行われる。ここで、データ転送は双方向のデータ転送である。即ち、同時に入力された読み取りコマンドと書き込みコマンドによって双方向のデータ転送が実行されたり、読み取りコマンドと書き込みコマンドが混在した状態で双方向のデータ転送が実行されたりする(S15)。データ転送が完了すると、ホストバスアダプタ1320は割り込みをホストメモリ1200に送信する(S16)。この後、ホストプロセッサ1100はコマンド(CMD)に応じた動作の完了即ち、コマンド完了の情報をホストメモリ1200に送信する(S17)。
本発明によるコンピューティングシステム1000はNCQコマンド(CMD)によって双方向のデータ転送を行うことができる。
【0024】
図3図2に図示された双方向のデータ転送を例示的に示すフローチャートである。図3を参照すると、双方向のデータ転送は次のとおりである。
DMA回路1340の送信DMA回路は書き込みコマンド(Write CMD)によって、ホストバス1001の送信チャネル(TX)を使用して書き込みデータ(Write Data)をホストメモリ1200から受信し、DMA回路1340の受信DMA回路は読み取りコマンド(Read CMD)によって、ホストバス1001の受信チャネル(RX)を使用して読み取りデータ(Read Data)をホストメモリ1200に転送する(S21)。即ち、書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送は並列に処理される。
【0025】
ホストバス1001の送信チャネル(TX)を介して書き込みデータ(Write Data)の送信が完了すると、第2インターフェースの規定による書き込みデータFIS(Write Data FIS: DMA Setup FIS、Non−Data FIS、SDB(set device bits)FIS)がホストメモリ1200に送信される(S22、S23、S24)。ここで、DMA Setup FISはデータを送信するためにDMA回路1340(図1参照)を設定する情報を含み、Non−Data FISはデータが存在しない情報を含み、SDBFISはデータの送信完了または送信状態の情報を含む。ここで、Non−Data FISはホストメモリ1200から発生して記憶装置1300に送信される。図示されていないが、第2インターフェースの転送の規定を満足するためにData FISは第2インターフェースエミュレータ1330(図1参照)から発生したヘッダだけを含み、発生されたData FISはホストバスアダプタ1320(図1を参照)で第2インターフェースのエミュレーションのために使用される。
【0026】
また、ホストバス1001の受信チャネル(RX)を介して読み取りデータ(Read Data)の転送が完了すると、第2インターフェースの規定による読み取りデータFIS(Read Data FIS: DMA Setup FIS、Non−Data FIS、SDBFIS)がホストメモリ1200に転送される(S25、S26、S27)。ここで、DMA Setup FISはデータを受信するためにDMA回路1340(図1を参照)を使用するかどうかの情報を含み、Non−Data FISはデータが存在しない情報を含み、SDBFISはデータの受信完了または受信状態の情報を含む。
【0027】
実施形態において、書き込みデータFIS(Write Data FIS)と読み取りデータ(Read Data FIS)は書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送が終わった後順次に発生する。
実施形態において、書き込みデータFIS(Write Data FIS)と読み取りデータ(Read Data FIS)のそれぞれは、DMA Setup FIS、Non−Data FIS、SDB FISを順次に発生する。
【0028】
本発明の実施形態による双方向のデータ転送方法は、第1インターフェースの規定による書き込みデータ(Write Data)と読み取りデータ(Read Data)の転送を実行した後、第2インターフェースの規定によるDATA FIS(Write FIS、Read FIS)を仮想的に生成及び転送する。
【0029】
図4は本発明によるデータ転送方法を例示的に示すフローチャートである。図1図4を参照すると、データ転送方法は次のとおりである。
ホストプロセッサ1100は記憶装置1300にNCQコマンド(読み取り/書き込み)を発行する(S110)。ここで、NCQコマンドは書き込みコマンドと読み取りコマンドを同時に発行したり、順次に発行したりする。NCQコマンドに応じてホストメモリ1200と記憶装置1300との間で第1インターフェースを使用して並列的に書き込みDMA動作と読み取りDMA動作が実行される(S120)。書き込みDMA動作と読み取るDMA動作が完了した後、第2インターフェースを満足するためのデータFISシーケンス(例えば、DMA Setup FIS ⇒ Non−Data FIS ⇒ SDB FIS)が記憶装置1300からホストメモリ1200に転送される(S130)。
【0030】
本発明の実施形態によるデータ転送方法は、第1インターフェースの規定によりDMA動作を実行した後、第2インターフェースの規定によりData FISを転送する。
図1図4で説明されたコンピューティングシステム1000は外部から第1インターフェースの規定によりホストバス1001に接続され、内部に第2インターフェースの規定によって動作する記憶装置1300を備えている。本発明の実施形態によるコンピューティングシステムは第1インターフェースの規定によってホストバスに接続されて動作する記憶装置をさらに備える。
【0031】
図5は本発明によるコンピューティングシステムの第2実施形態を示すブロック図である。図5を参照すると、コンピューティングシステム2000はホストバス2001、少なくとも1つのホストプロセッサ2100、少なくとも1つのホストメモリ2200、第1記憶装置2300と第2記憶装置2400を備える。ここで、ホストバス2001、ホストプロセッサ2100及びホストメモリ2200は図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0032】
第2記憶装置2400は第1インターフェースによってホストバス2001に接続される。第2記憶装置2400は第1インターフェース回路2410、少なくとも1つの不揮発性メモリ装置2450とメモリコントローラ2460を備える。第1インターフェース回路2410は第1インターフェースの規定によって、ホストとの通信を実行するように構成される。メモリコントローラ2460は第1インターフェースの規定によってコマンド及びデータ転送を実行し、ホストからの要求に応じて不揮発性メモリ装置2450を制御する。
一方、第2記憶装置2400は第1インターフェース記憶装置と呼ばれる。このとき、第1記憶装置2300はホストが第1インターフェース記憶装置とみなすので、疑似(pseudo)第1インターフェース記憶装置と呼ばれる。
【0033】
本発明の実施形態によるコンピューティングシステムは、RAID(redundant array of independent disks)の機能をさらに備える。ここで、RAID機能は複数の記憶装置を単一の論理デバイスとして動作するようにすることで、個々の記憶装置の限られた容量をユーザーが希望するだけ拡張したり、記憶装置に保存されたデータの信頼性を確保したりするために使用される。
【0034】
図6は本発明によるコンピューティングシステムの第3実施形態を示すブロック図である。図6を参照すると、コンピューティングシステム3000はホストバス3001、少なくとも1つのホストプロセッサ3100、少なくとも1つのホストメモリ3200、RAIDコントローラ3300、第1記憶装置3400と第2記憶装置3500を備える。ここで、ホストバス3001、ホストプロセッサ3100及びホストメモリ3200は、図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0035】
RAIDコントローラ3300は第1インターフェースによって、ホストバス3001に接続され、RAID機能を提供するために第1及び第2記憶装置3400、3500を制御する。ここで、RAID機能はデータのミラーリング技術を含む。例えば、データのミラーリング技術は第1記憶装置3400にデータを保存しながら同時に同じデータを第2記憶装置3500に保存する。RAIDコントローラ3300は第1インターフェースによって、第1及び第2記憶装置3400、3500に接続される。第1及び第2記憶装置3400、3500はそれぞれ図1に図示された記憶装置1300と同様に構成される。すなわち、第1及び第2記憶装置3400、3500は疑似第1インターフェース記憶装置になる。
【0036】
本発明の実施形態によるコンピューティングシステム3000は疑似第1インターフェース記憶装置3400、3500を使用してRAID機能を実行する。
図6に図示されたコンピューティングシステム3000には2つの記憶装置3400、3500が示されている。しかし、本発明のRAID機能を実行するための記憶装置の数はこれに限定されない。本発明のコンピューティングシステム3000は3つ以上の疑似第1インターフェース記憶装置を使用してRAID機能を実行することができる。
【0037】
図6に図示されたコンピューティングシステム3000の記憶装置はすべて疑似第1インターフェース記憶装置3400、3500である。しかし、本発明のコンピューティングシステムはこれに限定されない。本発明のコンピューティングシステムは少なくとも1つのHDD(hard disk drive)を備える。
【0038】
図7は本発明によるコンピューティングシステムの第4実施形態を示すブロック図である。図7を参照すると、コンピューティングシステム4000は、ホストバス4001、少なくとも1つのホストプロセッサ4100、少なくとも1つのホストメモリ4200、RAIDコントローラ4300、記憶装置4400とHDD4500を備える。ホストバス4001、ホストプロセッサ4100及びホストメモリ4200は、図1に示されたホストバス1001、ホストプロセッサ1100、ホストメモリ1200と同じ動作及び構造で構成される。
【0039】
RAIDコントローラ4300は第1インターフェースによって、ホストバス4001に接続され、RAID機能を提供するために記憶装置4400とHDD4500を制御する。RAIDコントローラ4300はホストの書き込み要求に応答して書き込みデータを記憶装置4400に保存するとともにHDD4500にも保存する。
【0040】
本発明の実施形態によるコンピューティングシステム4000は疑似第1インターフェース記憶装置4400とHDD4500を使用してハイブリッド方式でRAID機能を実行する。
本発明の実施形態によるコンピューティングシステムにおいて、第1インターフェースはPCIeインターフェースからなり、第2インターフェースはSATAインターフェースからなる。
【0041】
図8は本発明によるコンピューティングシステムの第5実施形態を示すブロック図である。図8を参照すると、コンピューティングシステム5000はホストチップセット5100とSSDe記憶装置5300を備える。ホストチップセット5100とSSDe記憶装置5300は、PCIeインターフェースを介して接続される。
ホストチップセット5100はAHCIコントローラ5110、PCIeルートポート5120及びPCIeレーン5130を備える。SSDe記憶装置5300はSSDコントローラ5301を備える。SSDコントローラ5301は、PCIe物理層5310、PCIeリンク層5320、PCIe転送層5330及びAHCIコントローラ5340を備える。
【0042】
PCIe物理層5310はPCIeレーン5130を介してホストチップセット5100のPCIeルートポート5120に接続される。PCIe物理層5310は、ホストチップセット5100から受信したアナログ信号をデジタルデータに変換したり、ホストチップセット5100に送信するデジタルデータをアナログ信号に変換したりする。
PCIeリンク層5320は、PCIe物理層5310のデジタルデータをPCIe標準符号化/復号化する。
【0043】
PCIe転送層5330は、ホストチップセット5100とアプリケーション層との間で符号化/復号化されたデータ(あるいは、データパケット)を送信するためのFISを管理する。AHCIコントローラ5340は、PCIe規定のデータパケットをSATAe規定のデータパケットに変更する。
AHCIコントローラ5340はSSDe記憶装置5300をPCIeリンクを介してホストに接続されているPCIe記憶装置とみなすようにする。
【0044】
本発明の実施形態によるコンピューティングシステム5000は、ホストチップセット5100とSSDe記憶装置5300との間でPCIeレーンを介してPCIeリンク層のフォーマットを有するデータパケットを送受信する。
本発明の実施形態によるコンピューティングシステムは、疑似第1インターフェース記憶装置と第2インターフェース記憶装置の両方を備えることもできる。
【0045】
図9は本発明によるコンピューティングシステムの第6実施形態を示すブロック図である。図9を参照すると、コンピューティングシステム6000は、中央処理装置6100(CPU)、DRAM6200、内部チャネルコントローラ6300、AHCI記憶装置6400、及びSATA記憶装置6500を備える。中央処理装置6100及びDRAM6200は、図1に示されたホストプロセッサ1100及びホストメモリ1200にそれぞれ対応する。
【0046】
内部チャネルコントローラ6300は、PCIeインターフェースによって接続され、PCIeルートコンプレックス6310、AHCIコントローラ6320、SATAコントローラ6330を備える。
AHCI記憶装置6400は、PCIeインターフェースを介して内部チャネルコントローラ6300に接続され、PCIe規定のデータパケットをSATA規定のデータパケットに変換するAHCIコントローラ6410を含む。AHCI記憶装置6400は、外部からはPCIe記憶装置とみなされるが、内部的にはSATA記憶装置である。AHCI記憶装置6400は、図1に図示された記憶装置1300と同様に動作するように構成される。
【0047】
SATA記憶装置6500は、SATAインターフェースを介して内部チャネルコントローラ6300に接続され、SATA規定のデータパケットを処理するSATAコントローラ6510を備える。SATA記憶装置6500は、内部チャネルコントローラ6300のSATAコントローラ6330の制御によってSATAデータパケットを送受信する。送受信されたSATAデータパケットは内部チャネルコントローラ6300のAHCIコントローラ6320によってPCIeデータパケットに変換され、変換されたPCIeデータパケットはPCIeインターフェースを介して中央処理装置6100に送受信される。
【0048】
本発明の実施形態によるコンピューティングシステム6000は、PCIeインターフェースを介して内部チャネルコントローラ6300に接続された疑似PCIe記憶装置6400及びSATA記憶装置6500を備える。
図10は本発明の実施形態による入出力要求(IO RQ)の観点から見たコンピューティングシステム7000を示す図である。図10を参照すると、コンピューティングシステム7000は、中央処理装置7100、メインメモリ7200及びSATAe記憶装置7300を備える。
【0049】
SATAe記憶装置7300は、不揮発性メモリ装置7350とそれを制御するSATAコントローラ7360を備える。SATAコントローラ7360は、PCIeインターフェース回路7361、SATAeエンジン7362、オン−チップSRAM7363及びDRAMバッファ7364を備える。SATAeエンジン7362は、AHCIエンジン7320、SATAエミュレータ7330、DMA回路7340を備える。特に、DMA回路7340は、データ転送のための送信DMA回路7341(DMA1)、データ受信のための受信DMA回路7342(DMA2)を含む。
【0050】
入出力要求(IO RQ)のプロセスは次のとおりである。入出力要求(IO RQ)が可能であれば、中央処理装置7100はメインメモリ7200に入出力要求(IO RQ)を送信する((1))。入出力要求(IO RQ)に対応するコマンドキュー(command queue)は、コマンドヘッド(command header; CH)/コマンドFIS(command frame information structure; CFIS)、PRDT(physical region descriptor table)、ホストバッファ(host buffer)を含む。PRDTは、ホストに送信されるデータやホストから送信されるデータを格納するメモリ領域の構造体を格納するテーブルである。PRD(physical region descriptor)は、対応するメモリ領域のアドレスとサイズを含む。
【0051】
中央処理装置7100は、入出力要求(IO RQ)のブザー(doorbell)情報をSATAe記憶装置7300に転送する((2))。SATAe記憶装置7300のAHCIエンジン7320にはブザー情報を保存するためのホストレジスタ(例えば、PxCI)を備える。SATAe記憶装置7300は、入出力要求(IO RQ)に応答してFIS関連情報をメインメモリ7200に転送することにより、入出力要求(IO RQ)に対してフェッチする((3))。また、入出力要求(IO RQ)に対応するFISが自主的に更新される((4))。メインメモリ7200とSATAe記憶装置7300との間で送信DMA回路7341及び受信DMA回路7342を介して入出力要求(IO RQ)によるデータ転送がそれぞれ行われる。データ転送が完了すると、SATAe記憶装置7300は中央処理装置7100に割り込みを送信する((5))。中央処理装置7100に割り込みが入力された後、中央処理装置7100は入出力要求が完了した情報をSATAe記憶装置7300に転送する((6))。
【0052】
本発明の実施形態によるコンピューティングシステム7000は、メインメモリ7200とSATAe記憶装置7300との間で入出力要求に基づいて双方向のデータ転送を行うことができる。
図11図10に図示されたAHCIエンジン7320に入出力されるデータパケットのPCIヘッダを例示的に示す図である。図11を参照すると、ABARはAHCIベースアドレスとして、ホスト制御レジスタの開始アドレスはABARに0x0000を加えた値になり、ポートレジスタの開始アドレスはABARに0x0100を加えた値になる。
【0053】
図12図10に図示されたAHCIエンジン7320に格納されているホストの制御情報を例示的に示す図である。図12を参照すると、00h〜03hに対応するホスト制御レジスタはホストの能力情報を保存し、0Ch〜0Fhに対応するホスト制御レジスタは結合されたポート情報を保存する。
【0054】
図13図10に図示されたAHCIエンジン7320に保存されているポート情報を例示的に示す図である。図13を参照すると、00h〜03hに対応するポートレジスタはコマンドリストベースアドレスに対するポート情報を格納し、08h〜0Bhに対応するポートレジスタはFISベースアドレスに対するポート情報を格納し、28h〜2Bhに対応するポートレジスタはSATA状態に対するポートの情報を格納し、38h〜3Bhに対応するポートレジスタはコマンドに対するポート情報を格納する。
【0055】
図14A図14H図10に図示されたAHCIエンジン7320とSATAエミュレータ7330との間に送受信されるFISの規定を例示的に示す図である。図14A図14Bを参照すると、FISの規定はSATA3.0仕様を満足する。図14AはFISの種類であり、図14BはH2DFISレイアウト、図14CはD2HFISレイアウト、図14DはPIO Setup FISレイアウト、図14EはDMA Setup FISレイアウト、図14Fは、DMA Activate FISレイアウト、図14GはData FISレイアウト、図14HはSDB FISレイアウトを示す図である。
【0056】
図15図10に示されているメインメモリ7200のホストバッファの構造を例示的に示す図である。図15を参照すると、ポートレジスタPxCLBはコマンドテーブル(CT)を識別するための複数のコマンドを有するコマンドリスト構造(コマンドキュー)を保存し、ポートレジスタPxFBは入力されたFIS構造を保存する。コマンドリスト構造に対するメインメモリ7200からホストバッファベースアドレスはポートレジスタPxCLBによって識別することができる。FIS構造に対するメインメモリ7200からホストバッファベースアドレスはポートレジスタPxFBによって識別することができる。
【0057】
図16図15に図示されたコマンドリストの構造を例示的に示す図である。図16を参照すると、コマンドヘッダ(command header)のそれぞれはコマンドテーブルのベースアドレス(DW2)とコマンドテーブルのベースアドレスの上位32ビット(DW3)を保存する。
【0058】
図17図16に図示されたコマンドテーブルを例示的に示す図である。図17を参照すると、コマンドテーブルは複数のアイテム(Item0〜ItemCHz[PRDTL]−1)を有するPRDT(physical region descriptor table)を含む。アイテム(Item0〜ItemCHz[PRDTL]−1)のそれぞれはデータベースアドレス(DBA)を含む。データベースアドレス(DBA)はメインメモリ7200のホストバッファに保存される。PRDTはプリフェッチ(prefetching)のために使用される。
【0059】
図18図15に図示されたReceived FIS構造を例示的に示す図である。図18を参照すると、FISはDMAセットアップFIS、PIOセットアップFIS、D2HレジスタFIS、未確認FIS、予備領域を備える。
【0060】
図19図10に図示されたコンピューティングシステム7000から実行される読み取りコマンドの過程を例示的に示す図である。図19を参照すると、AHCIエンジン7320のレジスタPxCIはNCQコマンドを受信し、AHCIエンジン7320はNQQコマンドによるFIS情報をSATAeエミュレータ7330とやりとりし、関連するFIS情報(CH、H2DFIS、PRDテーブルなど)をメインDRAM7200に転送することによってコマンドをフェッチする。その後、SATAeエンジン7362はメインメモリ7200にアクセスすることによってコマンドによる入出力データが転送される。その後、SATAの規定によるDMAセットアップFIS及びSDBFISがSATAeエミュレータ7330からAHCIエンジン7320に転送され、AHCIエンジン7320はこれらをメインメモリ7200に転送する。その後、読み取りの完了情報がAHCIエンジン7320に転送される。
【符号の説明】
【0061】
1000、2000、3000、4000、5000、6000、7000・・・コンピューティングシステム
1100・・・ホストプロセッサ
1200・・・ホストメモリ
1001・・・ホストバス
1300・・・記憶装置
1310・・・第1インターフェース回路
1320・・・ホストバスアダプタ
1330・・・第2インターフェースエミュレータ
1340・・・ダイレクトメモリアクセス回路
1350・・・不揮発性メモリ装置
1360・・・メモリコントローラ
FIS・・・フレーム情報構造
CH・・・コマンドヘッダ
CFIS・・・コマンドFIS
PRDT・・・物理領域ディスクリプタテーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14A
図14B
図14C
図14D
図14E
図14F
図14G
図14H
図15
図16
図17
図18
図19