JP2010514063A - シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング - Google Patents

シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング Download PDF

Info

Publication number
JP2010514063A
JP2010514063A JP2009542981A JP2009542981A JP2010514063A JP 2010514063 A JP2010514063 A JP 2010514063A JP 2009542981 A JP2009542981 A JP 2009542981A JP 2009542981 A JP2009542981 A JP 2009542981A JP 2010514063 A JP2010514063 A JP 2010514063A
Authority
JP
Japan
Prior art keywords
command
status
communication system
commands
coupled
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.)
Granted
Application number
JP2009542981A
Other languages
English (en)
Other versions
JP4961481B2 (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.)
LSI Corp
Original Assignee
LSI Corp
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 LSI Corp filed Critical LSI Corp
Publication of JP2010514063A publication Critical patent/JP2010514063A/ja
Application granted granted Critical
Publication of JP4961481B2 publication Critical patent/JP4961481B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

開示される本発明の実施形態は、SATA規格に準拠するように構成され、1つ以上のホストとSATAデバイスとの間の通信をもたらす通信システムを含む。本発明の一実施形態による通信システムは、1つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ(CSM)と、1つ以上のホストからのデータに応答して、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするためのデータマネージャ(DM)とを有する、マルチポートブリッジデバイスを含む。

Description

(発明の分野)
本発明は、概して、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment ATA;SATA)/High Speed Serialized AT Attachmentおよび/またはシリアルアタッチトスモールコンピュータシステムインターフェース(Serial Attached Small Computer System Interface;SCSI、SAS)規格に準拠して、ホストにデバイスとの通信を行わせる大容量メモリシステムに関し、より具体的には、SASおよびSATA接続のブリッジングに関する。
(SATAプロトコルの概要)
種々のアプリケーションのための大容量メモリシステムの必要性に伴い、ここ数10年において、その使用のフレキシビリティを向上させることを目指して、大容量メモリシステムによる通信を規格化する必要性が生じている。
SATAは、大容量記憶デバイスのパラレルAdvanced Technology Attachment(ATA)アタッチメントの代わりとなる高速シリアルリンクである。採用されるシリアルリンクは、当業者には既知のギガビット技術と、8b/10b符号化とを利用するポイントツーポイント高速差動リンクである。SATAプロトコルは、Open System Interconnection(OSI)Reference Modelと類似の階層通信モデルに基づく。概要は、以下に提示される。詳細は、参照することによって本明細書に組み込まれ、2005年10月27日付刊行物「Serial ATA:High Speed Serialized ATA Attachment」または「Serial ATA International Organization:Serial ATA」 Revisions2.5、および2002年10月16日付刊行物「Serial ATA II:Extensions to Serial ATA 1.0」Revision2.5に提供され、両方とも、Serial ATAワークグループのウェブサイトwww.serialata.orgから現在利用可能である、SATA規格または仕様を参照されたい。
SATAプロトコルでは、プロトコルの各層は、その相手側と直接または間接的に通信する。シリアルATAリンクは、既知の規格に従うプロトコルによって規定されており、4つの通信層、すなわち、物理レベルで通信を行うための物理層、リンク層、トランスポート層、およびコマンド層として称される場合もあるアプリケーション層を有する。送信器および受信器は、直接相互に後の層と通信することはできず、これらの層は、他の応答する層に到達する前に、システムの他の層を通り抜けなければならない。例えば、送信器の物理層が受信器のトランスポート層と通信するためには、最初にリンク層を通って送信器のトランスポート層およびアプリケーション層、その後、シリアルATAリンクを通って受信器のアプリケーション層に進み、最後に、受信器のトランスポート層に到達しなければならない。
通信または交換の基本単位はフレームである。フレームは、フレーム開始部(SOF)と、フレーム終了部(EOF)とから構成され、SATAおよびSAS仕様に従って、異なるデリミタである。SATAでは、STPは、フレーム情報構造(FIS)、FISのコンテンツにわたって計算されるCyclic Redundancy Checksum(CRC)、およびフレーム終了部(EOF)プリミティブを備える。シリアルATA機関は、フレームの定義が提供される仕様を規定しており、それは、本文書全体にわたって使用されることを意図する。プリミティブは、シリアルラインのステータスを制御および提供するために用いられるダブルワード(Dword)エンティティである。シリアルATA機関は、許可されるプリミティブの定義が提供される仕様を規定しており、それは、本文書全体にわたって使用されることを意図する。
図1は、フレーム30の例を示す。フレームは、図1では、SOFプリミティブ30aで開始し、次に、第1のFISコンテンツ30b、次に、送信器が利用可能なデータを有しないことを示すHOLDプリミティブ30c、次に、第2のFISコンテンツ30d、次に、HOLDプリミティブの受信を通知するために送信され、受信機バッファが「レディ」状態ではないことを示し、受信機によって送信されるHOLDAプリミティブ30e、次に、CRC30f、およびEOFプリミティブ30gが続く。
フレーム30は、図1では、フロー制御のために用いられる2つのプリミティブであるHOLDおよびHOLDAプリミティブを含む。HOLDプリミティブは、FISコンテンツを送信または受信できないことを示す。HOLDAプリミティブは、HOLDプリミティブの受信を通知するために送信される。例えば、受信ノードが、そのバッファがほぼフルであることを検出すると、HOLDプリミティブを送信ノードに送信し、送信機ノードを停止するように要求し、バッファがさらにデータを受信するためにレディ状態になると、受信ノードは、HOLDプリミティブの送信を停止するであろう。送信ノードは、HOLDプリミティブの受信を通知するためにHOLDAプリミティブを送信する。HOLDAプリミティブが受信されるまで、受信ノードは、データの受信を継続する。バッファのオーバーランを防止するために、SATAプロトコルは、HOLDプリミティブを送信するノードとHOLDAプリミティブを受信するノードとの間に20Dwordsの最大遅延を必要とする。
いくつかの異なるフレームタイプがある。例えば、Direct Memory Access(DMA)を介してデータを送信するために、DMAセットアップFISとして既知のフレームが利用され、次に、DMAデータFISが続く。概して、3つのタイプのFIS構造があり、1つは、コマンド用、1つは、転送のセットアップ用、およびもう1つは、転送に関連するデータ用である。各フレーム構造は、異なった目的で用いられる。コマンドタイプのフレームは、コマンドを実行するために送信され、セットアップフレームは、コマンドのデータ転送フェーズを準備するために用いられ、データフレームは、データを転送するために用いられる。
「SATAドライブ」は、本明細書で使用されるように、ドライブ間で情報を転送するためのSATA規格に準拠するメディアまたはディスクドライブを指す。ドライブと、そこに連結されるデバイスとの間のインターフェースは、SATA規格によって規定される。「SATAポート」は、SATA規格に従うポートである。「SATAドライブ」は、「SATAデバイス」の例であり、「SATAデバイス」は、「ターゲット」の例である。「ターゲット」は、コマンドを受け入れ、受信したコマンドに応答するデバイスである。
SATAホストとSATAデバイス、またはSASホストとSATAデバイス、あるいはSATAデバイスを有する複数のSASデバイス等のSATAとSASデバイスとの間の通信をブリッジングするためのデバイスまたは機器の必要性がある。
SASをリンクとして使用することによって、3つの異なるタイプの通信プロトコルを採用して、接続をオープンしてもよい。それらは、Serial ATA Tunneled Protocol(STP)、SSP、およびSMPである。STPは、SATAで使用される。STPを使用して、SATA規格に規定されるSATA通信方法を可能にし、SSPおよびSMPを使用して、SAS規格に規定される小型コンピュータシステムインターフェース(SCSI)タイプの通信を可能にする。
STP接続が「オープン」になると、概して、SATAプロトコルに従う。SMP接続が「オープン」になると、SMPプロトコルに従う。より具体的には、接続がオープンとなり、接続が確立され、要求フレームがイニシエータによって送信され、応答フレームがターゲットによって送信され、接続がクローズされる。上述の通信技術およびSASに関するさらなる情報は、SAS規格に見られ、そのコピーは、ウェブサイトwww.t10.orgを参照することによって検索できる。イニシエータからの要求は、ベンダユニークエリアとして、エリアがリザーブされる機能コードを含み、例えば、ターゲットによって行われる機能をさらに規定するために使用される。
「イニシエータ」は、本明細書で使用されるように、コマンドを送信し、コマンドを送信するための応答を受信可能なユニットまたはデバイスを指す。「ターゲット」は、本明細書で使用されるように、コマンドを受信可能なユニットまたはデバイスを指す。
現在、2つ以上のSASポートとSATAデバイスとの間の通信をもたらすための単一デバイスはない。さらに、SAS規格に規定されるようなSTPターゲットであると自己報告する、SAS規格に規定されるような端末デバイスタイプはない。SASポートは、SAS規格に準拠するポートである。さらに、SATAデバイスの動作速度は、恐らく、SASホストよりも遅い場合が多く、現在、パフォーマンスにおけるこの差異は、システムパフォーマンスに伝播する。したがって、低速によって生じる明らかな遅延がないように、システムパフォーマンスに透過的であるべきであるSASおよびSATAデバイス/ホストのパフォーマンス速度に差異をもたらす必要性がある。
上述の観点から、SATAまたはSASポートおよびSATAデバイスの異なるトポロジ間の通信を可能にする高パフォーマンスデバイスの必要性が生じる。
(発明の概要)
簡潔には、本発明の実施形態は、SATA規格に準拠するように構成され、1つ以上のホストとSATAデバイスとの間の通信をもたらす、通信システムを含む。本発明の一実施形態による通信システムは、1つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ(CSM)と、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、1つ以上のホストからデータに応答するデータマネージャ(DM)とを有する、マルチポートブリッジデバイスを含む。
本発明の上述のおよび他の目的、特徴、および利点は、図面のいくつかの図を参照して、好ましい実施形態の以下の発明を実施するための形態から明白となるであろう。
図1は、従来のSATAプロトコル通信層を示す。 図2は、本発明の別の実施形態による、SASポート12と、SASポート14とを含み、SATAポート18に連結して示されるマルチポートブリッジデバイス16と通信するように示される、通信システム10を示す。 図3は、本発明の代替実施形態による、SATAポート44に連結して示されるブリッジデバイス42に連結される、SASポート40を示す。 図4は、本発明の実施形態による、その挙動においてSATAタイプであるが、SATAポートではない、ポート50と通信するように示されるブリッジデバイス48と通信する、SASポート46を示す。 図5は、SATAポートと通信するように示されるブリッジデバイス54と通信する、SATAポート52を示す。 図6は、SATAポート64と通信するように示されるマルチポートブリッジデバイス62と通信する、SATAポート58およびSATAポート60を示す。 図7は、システム10は、図6のものと類似構成を含むが、但し、図7のマルチポートブリッジデバイス70は、ポート58および60に応答し、デバイス62にさらに連結される、マルチプレクサ78をさらに含む、代替実施形態を示す。 図8は、本発明の実施形態による、図2のシステム10のさらなる詳細を示す。 図9は、本発明の実施形態による、CSM94のさらなる詳細を示す。 図10は、テーブル116のコンテンツの例を示す。 図10(a)は、本発明の方法による、ステータスがSATAデバイスから受信されると、ステートマシン119によって行われる関連ステップのフローチャートを示す。 図11は、SATAデバイスから受信したステータス150の例と、ステータス内を示す。 図12は、図10(a)のマッピングのブロック図を示す。 図13は、図8内のSASポート0または1のうちの1つ内のSASエンジン160のさらなる詳細を示す。 図14は、本発明の実施形態による、データマネージャ96のさらなる詳細を示す。 図15は、コマンドの数に対する、SATAデバイスのパフォーマンスのグラフを示す。 図16は、コマンドがホストから受信されると、CSM94によって行われるステップのフローチャートを示す。 図17は、(図9の)CSM94のステートマシン118によって行われる関連ステップを示す。 図18は、図17のステップ214において、受信したコマンドが待機コマンドではないと判断後、ステートマシン118によって行われる関連ステップを示す。 図19〜図21は、SATAデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。 図19〜図21は、SATAデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。 図19〜図21は、SATAデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンする際に実行される関連ステップを示す。 図22は、上述の公正ポリシーを施行する際に、ステータスマネージャ120または121によって行われる関連ステップを示す。 図23は、SATAデバイスがイニシエータの要求に応答して、ステータスをリターンする際の関連ステップを示す。 図24は、ステータスレジスタ120および121のそれぞれ内に含まれる、例示的な保持ステータスレジスタ314を示す。 図25は、本発明の実施形態による、エキスパンダ1400、E0、およびE1の群に連結されるイニシエータ1200、I0、およびI1の群を含み、エキスパンダの群は、通信システム1600と通信する、メモリシステム1000を示す。
(好適な実施形態の詳細な説明)
実施形態の以下の説明では、その一部を形成する添付の図面が参照され、例示として、本発明が実践され得る特定の実施形態が示される。本発明の範囲から逸脱することなく、構造的変更がなされ得るため、他の実施形態が利用されてもよいことを理解されたい。
本発明の実施形態では、通信システムは、SATA規格に準拠するように構成され、1つ以上のホストとSATAデバイスとの間の通信をもたらす。本発明の一実施形態による通信システムは、1つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ(CSM)と、コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、1つ以上のホストからデータに応答するデータマネージャ(DM)とを有する、マルチポートブリッジデバイスを含む。
Redundant Array of Independent Disks(RAID)等の大容量メモリシステムでは、マルチポートブリッジデバイスを使用して、1つ以上のイニシエータとターゲットとの間で通信を行う。ターゲットは、イニシエータによって提供され、イニシエータによってアクセスされる情報を格納するためのディスクドライブであってもよい。ホストおよびイニシエータは、本明細書の同一デバイスを指すために使用される。業界は、本業界で周知のSATAおよびSerial Attached SCSI(SAS)規格に準拠する記憶装置のためのシリアルインターフェース通信インターフェースを規格化している。
通信ブリッジを使用して、1つまたは複数のSASポートあるいはSATAポートと、SATAデバイスまたはSATAタイプのデバイスとの間の通信を可能にする。デバイスの例は、ディスクドライブまたはCD−ROMである。
次に図2を参照すると、本発明の別の実施形態による、通信システム(または、ブリッジ)10は、SATAポート18に連結して示されるマルチポートブリッジデバイス16と通信するように示される、SASポート12およびSASポート14を含むように示される。ポート12および14は、SAS規格に準拠し、ポート18は、図2の実施形態におけるSATA規格に準拠する。図2では図示されないが、ポート18は、SATAリンクと称される場合がある接続24を通して、SATAデバイスと通信し、各ポート12および14は、それぞれ、接続20および22を通して、ホストと通信する。接続20および22はそれぞれ、SASリンクと称される場合がある。
本発明の一実施形態では、通信システム10は、メモリまたは記憶装置である。ポート18に連結されるSATAデバイスは、ターゲットとしてみなされ、SATA規格に準拠する。デバイス16は、SASプロトコルをSATAまたはSATAタイプの挙動に変換する。
次に、システム10の異なる構成またはトポロジが、種々の本発明の実施形態を参照して示されるが、他の構成またはトポロジも企図される。代替実施形態である図3では、SASポート40は、SATAポート44に連結して示されるブリッジデバイス42に連結して示される。
図4は、本発明の代替実施形態によると、その挙動においてSATAタイプであるが、SATAポートではない、ポート50と通信するように示されるブリッジデバイス48と通信するように示される、SASポート46を示す。図5は、SATAポートと通信するように示されるブリッジデバイス54と通信する、SATAポート52を示す。図6は、SATAポート64と通信するように示されるマルチポートブリッジデバイス62と通信する、SATAポート58およびSATAポート60を示す。上述の図では図示されないが、ホストまたはイニシエータは、SASポートと通信する。例えば、図6では、ホストは、ポート58に連結されてもよく、別のホストは、ポート60に連結されてもよい。図2および6の実施形態の差異は、後者の場合は、ポート64の出力は、SATAドライブに向けられて示され、図6では、ブリッジ62は、2つのSATAポート58および60に連結されて示されるが、図2では、SASポートに連結されて示される。
上述の図のいずれかにおけるブリッジデバイスが、2つ以上のソースから入力を受信する場合、図2および図6に示されるように複数ポートを有するが、その入力が、1つのソースからの場合、図3、図4、および図5に示されるように、複数ポートを有する必要はない。さらに、2つのSASまたはSATAポートが、ブリッジデバイスに連結して示される実施形態では、多数のそのようなポートが、そこに連結されてもよい。
図7は、システム10が、図6と類似構成を含むが、但し、図7のマルチポートブリッジデバイス70は、ポート58および60に応答し、デバイス62にさらに連結されるマルチプレクサ78をさらに含む、代替実施形態を示す。図7の実施形態では、マルチプレクサ78は、2つのポート58と60との間で選択するが、ポート58および60の両方をブリッジ62に連結可能にするために、無効化または不使用(あるいは、除去)可能である。
図8は、本発明の実施形態による、図2のシステム10のさらなる詳細を示す。図8では、本発明の実施形態による、SAS−SATA変換デバイス80が、バス84を通して、入力/出力および周辺デバイス82に連結されて示される。デバイス80は、デバイス70、あるいはデバイス62、もしくはデバイス54、48、42、または16等の前図に示されるブリッジデバイスであってもよい。
本発明の一実施形態では、デバイス80は、SATAデバイスを制御するためのSTPターゲットまたはSMPターゲットである端末デバイスである。
システム10は、バス84を通して、デバイス82およびデバイス80に連結されるマイクロプロセッサ100を含むようにさらに示され、マイクロプロセッサ100は、コントローラ、ステートマシン等の任意の種類の処理ユニットであることができ、メモリ102に連結してさらに示される。マイクロプロセッサ100の機能は、フレームの構築、情報トラフィックの誘導、およびマイクロプロセッサによって行われる他のタイプの機能等、種々のシステム機能を行うことである。メモリ102は、オプションであって、ステートマシン等に制限されない、他のデバイスに交換されてもよい。
デバイス80は、SASポート86および88、接続プロトコルマネージャ(CPM)0 90およびCPM 1 92、コマンドステータスマネージャ(CSM)94、データマネージャ96、およびドライブマネージャ(DRVM)98を含むように示される。ポート86は、CPM 0 90に連結して示され、ポート88は、CPM 1 92に連結して示される。マネージャ98は、SATAディスクドライブ等のSATAデバイスと通信するが、他のタイプのSATAデバイスが採用されてもよい。
ポート86は、CSM94およびDM96に連結して示される、CPM 0 90に連結して示される。ポート88は、DM96およびCSM94に連結して示される、CPM 1 92に連結して示される。CSM94およびDM96は、互いに連結して示され、DRVM98は、DM96に連結して示される。DRVM98は、CSM94に連結して示される。
参照番号104の下方では、SATAプロトコルに従うが、参照番号104の上方では、ポート86および88によって、SASプロトコルに従う。CPM 0 90およびCPM 1 92はそれぞれ、SATAプロトコルがそれらに準拠することを確実にする。また、CPM 0 90およびCPM 1 92はそれぞれ、コマンドフレームと、データフレームと、制御フレームとを区別し、それに従って、処理のために、コマンドフレームをCSM94に、データフレームをDM96に伝送する。CSM94は、コマンドをDRVM98に発行または伝送し、DRVM98は、本情報を使用して、最終的には、コマンドをSATAデバイスに送信し、SATAデバイス(図示せず)が情報を返送する場合、DRVM98からのコマンドに応答して、情報をCSM94に伝送または送信する。それに応答して、DRVM98は、ステータスをCSM94に送信し、CSM94は、CPM 0 90およびCPM 1 92の一方または両方に情報を送信する。しかし、応答が、データまたは制御タイプである場合、DRVM98は、情報をDM96に送信し、DM96は、CPM 0 90またはCPM 1 92の一方にデータを伝送する。
デバイス80に連結して示されるデバイス82は、汎用入力/出力(GPIO)および周辺デバイスを含むようにさらに示され、バス84は、上述のように、システム10の種々のブロックと通信する。バス84は、マイクロプロセッサバスと称される場合がある。マイクロプロセッサ100は、システム10の残りが、GPIOを使用するように、GPIOを構成する。
ブリッジ機能は、DRVM98までの参照番号104の下方に位置するブロックによって行われる。DRVM98は、SATAプロトコルに従い、SATA仕様の要件を充足するように機能する。システム10は、任意の多重化または選択プロセスを伴わずに、ポート86および88の一方または両方からコマンドを受け入れる。すなわち、ポートのそれぞれからのコマンドは、システム10のブロックの残りを通過し、それによって処理される。このように、SMPは、参照番号104の上方の通信のために使用され、STPは、参照番号104の下方の通信のために使用される。さらに、CSM94は、ポート86および88の両方からコマンドを受信し、受信したコマンドをバッファリングまたは格納する。このように、システム10は、任意の多重化または選択プロセスを伴わずに、2つのポートからコマンドを受信する。
1つのみのSASポートが使用される実施形態では、ポート86またはポート88の一方が存在せず、CPM0またはCPM1に連結されるそのそれぞれもまた、存在しないであろう。ポート86および88はそれぞれ、構成テーブルを維持するために、個々のSASエンジン(図8に図示せず)を含む。本明細書で使用されるように、テーブルは、更新可能な任意のタイプの記憶場所であることができる。各ポートのステータス情報と、ポートと通信するために連結されるイニシエータとを含む構成テーブルは、個々のSASポート内に維持される。例えば、ポート86と、ポート86に連結される(または、連結されない)イニシエータとのステータスに関する情報は、ポート86のSASエンジン内に維持され、構成テーブルの一部である。同様に、ポート88と、ポート88に連結される(または、連結されない)イニシエータとのステータスに関する情報は、ポート88のSASエンジン内に維持され、構成テーブルの一部である。各SASリンクは、より大きな構成テーブルの一部である構成テーブルを有する。より大きな構成テーブルは、ポート86および88のそれぞれから、テーブルの一部を結合することによって形成される。次に、以下の図を参照して、図8の関連ブロックのさらなる詳細が論じられる。
図9は、本発明の実施形態による、CSM94のさらなる詳細を示す。図9では、CSM94は、本発明の実施形態による、受信バッファ0 103、受信バッファ1 106、コマンドプロセッサステートマシン108、コマンドバッファ110、ステータス0マネージャ120、ステータス1マネージャ121、コマンド保留記憶場所114、コマンド属性テーブル112、ドライブキューテーブル116、コマンド発行ステートマシン118、および受信ステータスステートマシン119を含むように示される。
バッファ0 103および1 106は、コマンドバッファ110に連結されて示され、コマンド属性テーブル112およびコマンド保留記憶場所114に連結されてさらに示される、ステートマシン108に連結されて示される。コマンド保留記憶場所114は、ステートマシン118に連結されて示される。ステートマシン119は、テーブル116に連結されて示され、テーブル112は、ステートマシン118に連結されて示される。サーチエンジン105は、ステータス0マネージャ120およびステータス1マネージャ121に連結されて示される。
バッファ0 103および1 106はそれぞれ、その個々のCPMを通して、個々のホストからのコマンドに応答し、故に、その個々のCPMに連結して示される。例えば、バッファ0 103は、CPM0からコマンドを受信し、バッファ0 106は、CPM1からコマンドを受信する。バッファ0 103および1 106はそれぞれ、その処理のために、受信したコマンドおよびそれに関連する情報をステートマシン108に伝える。
本明細書で称されるように、ステートマシンは、プロセスを制御または生じさせる。例えば、ステートマシン108は、コマンドを処理させる。コマンドバッファ110は、ステートマシン118に連結して示される。
記憶場所114は、コマンド発行ステートマシン118に連結して示され、順に、DRVM98に連結される。ステートマシン118は、テーブル116に連結して示される。ステータス0マネージャ120およびステータス1マネージャ121は、ステートマシン119およびコマンド属性テーブル112に連結して示され、CPM 0 90およびCPM 1 92にさらに連結される。ステータスマネージャ120は、ステータスマネージャ121のように、ステートマシン108に連結して示される。また、ステータスマネージャ120および121は、データマネージャ96との間で情報を受信および伝送するように示される、テーブル116に連結して示される。
図9にさらに示されるように、CSM94は、ステートマシン108に連結されるコマンドカウンタ91と、ステートマシン108、状態マネージャ120および121、ステートマシン119に連結される未使用キューポインタテーブル93とを含む。カウンタ91は、ステータスマネージャ0 120および1 121に連結してさらに示される。カウンタ91は、イニシエータまたはホストが存在するだけの数のカウンタまたはカウント計測方法を含むことに留意されたい。
加えて、CSM94は、マイクロプロセッサ100と、テーブル112と、テーブル116とに連結される、サーチエンジン105を含むように示される。テーブル93は、それぞれ、バッファ110およびにテーブル112にコマンドならびにコマンド属性を格納する際、ステートマシン108によって使用するための未使用または利用可能なポインタを格納する。コマンドの実行が終了すると、実行されるコマンドのためのポインタは、ステートマシン119によって、利用可能なポインタとして、テーブル93内に復元される。コマンドが受信されると、テーブル93は、ステートマシン108によってアクセスされ、未使用ポインタを検索し、ポインタを使用して、それぞれ、バッファ110およびテーブル112にコマンドならびにコマンド属性を格納する。同様に、ステータスマネージャ0 120および1 121はそれぞれ、テーブル93を更新可能である。
オプションであるが、使用される場合、各イニシエータのためのカウンタであるコマンドカウンタ91は、コマンドプロセッサステートマシン108の一部であって、イニシエータから受信したコマンドをカウントする。カウンタ91によって計測されるカウントは、イニシエータに割り当てられたコマンドの数を表す所定の値と比較され、比較が割り当てられたコマンドの数の過剰を示す場合、エラーメッセージが、ステートマシン108によって、コマンドが受信されたステータスマネージャに報告される。カウンタ91内のコマンドカウントは、随意に、種々の他の理由のために使用されてもよい。各イニシエータは、それと関連付けられた一意の所定の最大のコマンドの数を有し、この目的を達成するために、各そのような所定のコマンドの数が、カウンタ91内の種々のカウンタによって使用される。本発明の一実施形態では、イニシエータと関連付けられた所定の最大のコマンドの数は、構成テーブル内に格納される。
サーチエンジン105は、マイクロプロセッサ100の指揮下、テーブル116および/またはテーブル112を検索する能力を有し、したがって、コマンド、属性等に関する有益な情報を提供することができる。随意に、サーチエンジン105を使用して、ステータスマネージャ0 120および1 121内を検索する。
記憶場所114は、イニシエータから受信したコマンドのトラックを維持する一方、テーブル116は、SATAデバイスに実際に伝達するまたは伝送されることが可能なコマンドのトラックを維持する。2つのそのような場所の存在は、イニシエータのコマンドが、SATAデバイスによって実行可能なコマンドの数を超える場合を考慮したフレキシビリティを提供する。したがって、イニシエータから入って来るコマンドは、記憶場所114に待機され、SATAデバイスへ送信される準備ができているコマンドは、テーブル116に待機される。これによって、SATAデバイスが処理可能以上のコマンドを受け入れ、エラーを報告することなく、行うことが可能となる。この点において、イニシエータの観点から、本状況は、懸念の必要がない。
ステートマシン118は、記憶場所114内のコマンドが、待機または非待機コマンドであるかを判断し、コマンドのタイプに応じて、コマンドタイプ、すなわち、待機対非待機が、SATAデバイス内の保留コマンドのタイプと一致することが確実となる。非待機コマンドの場合、コマンドは、SATAデバイスが、保留コマンドを有していなくなるまで、SATAデバイスに送信されない。待機コマンドの場合、コマンドは、待機コマンドを受け入れ可能または他の保留待機コマンドを有することが可能な場合、SATAデバイスに送信される。イニシエータが、(図7の)システム10に連結される場合、ステートマシン118によって、同一または異なるポートへの他のイニシエータコマンドの完了前であっても、複数のイニシエータは、同一(SAS)ポートへ、あるいはSASリンク86または88を通して、コマンドを送信可能となる。
動作において、コマンドは、並行して、受信バッファ0 104および1 106のそれぞれによって受信される。次に、受信したコマンドは、ステートマシン108によって処理される。バッファ0 104および1 106によって受信されたコマンドは、SATAプロトコルに従うことに留意されたい。利用可能なポインタは、未使用キューポインタテーブル93から検索される。ステートマシン108は、次いで、テーブル93からのポインタの場所に基づいて、処理されたコマンドをバッファ110内に格納する。テーブル93からの、バッファ110内の場所を指し示すポインタは、コマンドを格納するために使用される、すなわち、コマンドポインタは、ステートマシン108によって、記憶場所114内に格納される。
記憶場所114は、コマンドが到着すると、コマンドのポインタを格納またはキューに入れるためのキューである。この点において、記憶場所114は、先着順に基づくリンクリストである。別様に、優先順位リストを使用して、優先度順にコマンドを優先化する。さらに別様に、2つのリストを採用されるが、1つのリストは、コマンドポインタのリンクリストを含む、別のリストである優先順位リストは、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な、優先コマンドのリストを含む。実行されるコマンドの優先度の変更は、システム10に連結されるイニシエータに透過的なままである。
コマンドのポインタが、場所114内の他のコマンドポインタのリストの先頭に来ると、コマンドは、バッファ110から、ステートマシン118内に格納され、コマンドをデバイスまたはディスクドライブ(または、ターゲット)に発行するDRVM98に提供される。ステートマシン118は、コマンド情報をテーブル116内に格納し、それをDRVM98に送信する。ステートマシン118が、コマンドをドライブ(SATAデバイス)に送信すると、同様に、コマンド情報をテーブル116に送信する。
ターゲットは、最終的には、ステートマシン119内にステータスを格納するDRVM98に、ステータスを返送する。ステートマシン119は、順に、ステータスマネージャ0 120または1 121の一方または両方にステータスを提供し、ステータスを受信したいずれかのステータスマネージャは、次いで、DRVM98から受信したステータスを含むフレームを構築するであろう。SATA規格に準拠する構築されたフレームは、フレームを構築したステータスマネージャに応答して、CPM 0 90またはCPM 1 92に伝送される。言い換えると、ステータスマネージャ0 120が、フレームを構築すると、フレームは、CPM 0 90に伝送され、ステータスマネージャ1 92が、フレームを構築すると、フレームは、CPM1 92に伝送される。ステータスマネージャを通してフレームを受信するCPMは、最終的には、そのSASポートまたはエンジンを通して、システム10に連結されるイニシエータ(図示せず)にフレームを伝送する。DRVMからSAS初期化へのステータスのパスは、「リターンステータス」と称される。上述のように、SASプロトコルはすべて、CSM94に到達する前に、フレームから除去されるため、SATAフレームのみ処理され、CSM94によって受信される。
テーブル116のコンテンツの例は、図10に示される。テーブル116の行は、インデックスと称され、インデックス0〜31と標識される32のインデックスが存在する。テーブル116の列は、「有効な」ビット列140、コマンドバッファへのポインタ列142、イニシエータ番号列144、およびイニシエータタグ列146を含む。列142は、コマンドバッファ110内の場所およびコマンド属性テーブル112内の場所をそれぞれ指し示す、関連付けられたインデックスのためのポインタを格納する。コマンド属性テーブル112は、コマンドに関する属性、すなわち、コマンドのタイプ、コマンドと関連付けられた潜在的エラー等を含み、コマンドが到着すると、ステートマシン108によって更新される。テーブル116は、ステートマシン118、あるいはステータスマネージャ119、もしくはステータスマネージャ120または121によって更新される。
ポインタは、最終的には、テーブル93内に格納され、他のコマンドのための使用に利用可能である。列144は、そこからインデックスを付けられた行のコマンドが由来する、インデックスと関連付けられたイニシエータ番号を含み、列140は、テーブル116の関連付けられた行のコマンドの有効性に関する情報を表す。タグは、最初、イニシエータによって、システム10に送信され、コマンド属性テーブル112内に格納される。格納されたタグは、次いで、例えば、2つのタグ0が、SATAデバイスまたはドライブに送信不可能なため、イニシエータが、同一タグに送信される状況を回避するように、再マッピングされる。タグの再マッピングは、本状況を回避し、ステートマシン118によってなされる。ステートマシン118は、タグがその中で利用可能な第1のエントリのために、テーブル116を検索し、見つけたエントリを使用する。
他の実施形態では、最終エントリまたは乱数エントリ等を含むが、それらに限定されない、第1のエントリ以外が見つけられてもよい。すなわち、テーブル116を使用して、次または第1の有効なインデックスを見つける。ステートマシン118は、「有効」ではないと示されるテーブル116内の第1の場所を探し、新しいタグとして、その中のタグ値を使用する。列146は、次いで、最終的には、テーブル116の各インデックスまたは行に対し、SATAデバイスをアドレス指定するために使用されるタグを含む。
関連付けられた列140内に値を有し、無効なコマンドに設定されるテーブル116の行は、タグに対し保留コマンドがないため、自由に使用される関連付けられた列146内に(イニシエータ)タグを有するであろう。SATAデバイスまたはドライブへのイニシエータタグのマッピングおよびその逆は、本発明の実施形態に従って、非固定フォーマットで、あるいは動的に行われる。すなわち、タグは、イニシエータと関連付けられる一方、従来の技術システムでは、一式のタグは、所与のイニシエータに永久に割り当てられ、別の一式のタグは、イニシエータおよび固定されたままのタグの関係を有し、別のイニシエータに永久に割り当てられ、本発明の一実施形態では、イニシエータタグは、動力学に基づいて割り当てられる。すなわち、タグは、イニシエータに永久に割り当てられず、むしろ、ステートマシン118は、タグをイニシエータに割り当て、後で別のイニシエータに再割り当て可能である。一実施形態では、コマンド発行ステートマシン118は、動的に、ホストからSATAデバイスにタグの割り当てをもたらす。
列142によって、イニシエータが、コマンドへの再アクセスを所望する場合、コマンドバッファへのポインタを使用して、容易に成し得るように、コマンドは、コマンドバッファ110内または属性テーブル112内に容易に位置することが可能となる。列144は、ステータスマネージャ0 120および1 121の一方または両方を判断するための情報を含み、SATAデバイスは、それにステータスを送信する。例えば、SATAデバイスがステータスを提供し、ステータスが2つの異なるイニシエータに提供されるように生じる場合、またはSATAデバイスが応答し、応答が2つの異なるイニシエータに提供されるように生じる場合、ステータスは、2つのステータスマネージャに提供される。
テーブル116において、「NOT SET」を示す関連した「有効な」エントリがあるいずれかのインデックスまたは行では、それと関連付けられたタグは、使用に利用可能である。図10の例では、32のインデックスが存在するため、32のタグが使用可能である。テーブル116がフルである場合、または32すべてのインデックスが、有効なコマンドを有している場合、SATAデバイスにコマンドを発行することはできない。数字32は、例として単に使用され、したがって、他の数のインデックスが採用されてもよい。
ステータスは、1つ以上のイニシエータにリターンされてもよい。したがって、テーブル116は、1つ以上のイニシエータが、ステータスをリターンしたかどうか、およびどのタグが、SATAドライブに割り当てられているかを判断する方法を提供する。
次に、図9および図10のテーブル116内の情報がマッピングされる方法のいくつかの議論が提示される。図10(a)では、本発明の方法による、ステータスがSATAデバイスから受信される場合に、ステートマシン119によって行われる関連ステップのフローチャートが示される。最初に、ステップ189では、DRVM98は、ステータスをステートマシン119に提供する。次いで、ステップ191では、ステートマシン119は、組み合わせ復号化を行い、次いで、ステップ193では、ステータスをステータスマネージャ0 120および1 121に提供する。ステップ191では、DRVM98からのステータスは、テーブル116内の情報と組み合わせて比較され、効率的かつ迅速な方式でイニシエータにステータスをもたらす。別様に、組み合わせ比較以外が採用されてもよい。
図11は、SATAデバイスから受信したステータス150の例と、ステータス内を示す。SATA仕様では、ステータス150は、SACTIVEレジスタと称される。32ビットあり、各ビットは、テーブル116のインデックスのうちの1つとして機能する。タグあたり1ビットあり、したがって、タグの数は、ステータス150のビットの幅または数によって判断される。次に、テーブル116のコンテンツによって享受される利点のうちのいくつかが、図11および図12に関連してさらに説明される。
図12では、図10(a)のマッピングのブロック図を示す。第1のタグの例は、テーブル116へのインデックスとして機能し、イニシエータおよびタグに関する情報を迅速に検索する。すなわち、ステップ152では、ステータス150内のビット1の値が判断され、ステップ154では、テーブル116内のインデックス1とインデックスが付けられた行に、インデックスを付けるために使用される。次に、ステップ156では、インデックス1と関連付けられた列144内のイニシエータ番号と、インデックス1と関連付けられた列146のIタグとが、テーブル116から検索される。次に、適切なビットが、次のビットまたはインデックスに設定される。テーブル116の使用によって、イニシエータ番号およびIタグ(イニシエータタグ)は、両方とも周知の組み合わせ論理またはメモリのいずれかを使用して、迅速に検索可能になる。
イニシエータは、未履行タグよりも多くコマンドを発行することが防止される。すなわち、上述の例では、33番目のコマンドが、イニシエータによって発行されるが、32が未履行である場合、エラーが生じる。「非待機」コマンドの場合、同一イニシエータに対し2つ以上の非待機コマンドが存在するかどうか判断され、その場合、エラーとなる。上述のように、コマンドを処理するためのルールは、コマンド属性テーブル112によって検証される。「待機」コマンドは、上記に参照したように、SATA規格に規定される。
図13は、図8内のSASポート0または1のうちの1つ内のSASエンジン160のさらなる詳細を示す。図13では、SASエンジン160は、接続ステートマシン162、アフィリエーション(affiliation)テーブル164、プリミティブ割り込みプロセッサ168、SMPバッファステートマシン166を含むように示され、すべて、ステートマシン170に連結して示される。テーブル164は、本明細書に参照される構成テーブルの一部である。エンジン160は、リンク86または88であり得、CPM0 90または CPM1 92の一方に連結されるSASリンクを通して、情報を受信する。エンジン160は、動作時、最初に、オープンフレームを構築し、SASリンクを通して、イニシエータにオープンフレームを送信し、イニシエータからオープン承認プリミティブを受信し、イニシエータへの接続を確立する。CPMは、イニシエータへの接続を要求し、次いで、ステートマシン162および166は、SASバス(または、リンク)を要求されたイニシエータに接続するために必要なステップを行う。
接続が確立され、データが転送されると、接続がクローズされる。システム10のアーキテクチャによって、接続は、すぐにクローズされる、または所定の時間後にクローズされる、あるいはクローズするフレームタイプを使用して、プログラムすることができる。後者の例は、フレームが転送された時を検出することによって、またはフレームのステータスによって、接続がオープンのままであっても、接続を使用することを含む。別の例では、フレームのタイプを知ることによって、使用のために必要な接続の時間が既知となり、したがって、タイマを使用して、検出されたフレームタイプおよびタイマが所定の時間に達した時に基づいて、所定の時間を記録し、接続をクローズすることができる。データ/ステータス/制御のバッファリングによって、ドライブから情報を受信するための待ち時間が回避される。すなわち、フレームがバッファリングまたは格納され、接続のクローズを待つ必要がなく、システムのパフォーマンス向上に貢献するため、接続がオープンとなり、データのフレームがバッファリングされ、次いで、接続は、クローズされ、データは、その後、SATAデバイスに送信可能となる。これは、システムを通して伝播するために、SATAデバイスと関連付けられるいかなる遅延も却下する際にさらに重要である。さらに、コマンドは、SATAデバイスの能力を制限することなく、イニシエータからリアルタイムで受信可能である。
イニシエータがデータをSATAデバイスに送信している場合、データは、システム10によって受信されるとバッファリングされ、次いで、SATAデバイスに送信され、それによって、データを受け入れるSATAデバイスと関連付けられる遅延を回避する。これは、システム効率およびパフォーマンスの向上に貢献する。
イニシエータは、SMP接続をオープンにし、SMP機能を行う。エンジン160に対しやり取りされる情報は、SMPバッファおよびステートマシン166内に格納される。マイクロプロセッサ100は、イニシエータに送信されるフレームを構築し、SMPバッファおよびステートマシン166内に格納し、最終的には、イニシエータに伝送される。このように、イニシエータは、SATAのアクティビティから独立して、制御機能を行うことができ、システムパフォーマンスの向上に貢献する。
図14は、本発明の実施形態による、データマネージャ96のさらなる詳細を示す。データマネージャ96は、本発明の実施形態による、上流ステートマシン176、データバッファ174、制御FISバッファ178、FISプロセッサステートマシン182、データマネージャ制御ステートマシン172、および下流ステートマシン180を含むように示される。ステートマシン180は、DRVM98に連結して示され、ステートマシン176は、CPM0およびCPM1に連結して示される。ステートマシン172は、CSM94に連結して示される。ステートマシン176は、ステートマシン172と、バッファ178と、データバッファ174とに連結してさらに示される。
ステートマシン182は、バッファ178に連結して示され、順に、ステートマシン180に連結して示される。データバッファ174は、1つ以上のフレームを格納する。図14では、制御FISは、バッファ178によって、バッファリングされる。情報のフローは、ステートマシン176からステートマシン180へ、またはその逆のいずれかである。一実施形態では、ステートマシン172および182は、物理的に同一ステートマシンであってもよい。
動作において、制御FISが、SATAデバイスから受信されると、バッファ178内にバッファリングまたは格納される。制御FISが受信されると、ステートマシン182は、受信した制御FISを修正し、修正された制御FISをさらに修正し、ステートマシン176に通知し、バッファ178からデータを送信する、ステートマシン172に通知する。
ステートマシン176から下方に情報を送信する場合、ステートマシン176は、ステートマシン180に通知し、情報を送信するステートマシン172に情報を提供し、転送の完了に応じて、ステートマシン172は、ステートマシン180に通知し、バッファ174からFISを除去する。
データに関し、受信すると、ステートマシン182の指揮下で、データは、データバッファ174内にバッファリングまたは格納され、その後、ステートマシン180に送信される。データは、SATAデバイスのために、イニシエータに送信する準備ができると、ステートマシンが、バッファ174からデータを検索し、ステートマシン172に通知し、次いで、ステートマシン176に通知し、データが送信される。SATAデバイスからイニシエータに送信するデータが来ると、ステートマシン182の指揮下、ステートマシン172に通知され、データは、バッファ174内に格納され、ステートマシン172は、ステートマシン176に通知し、ステートマシン180を通して提供されたデータは、イニシエータに伝送される。システム10から送信されるデータフレームの順序は、受信と同一順序である。
フレーム全体のバッファリングによって、SATAリンクと関連付けられる遅延が存在する場合、本発明の種々の実施形態のバッファリングが主な原因であるSASリンクは、拘束されない。さらに、SASとSATAリンクとの間の異なるデータ速度が達成され、フレームバッファリングによって、イニシエータに対し透過的となり、また、接続をクローズする効率的方法を可能にする。一例として、SASリンクが、1秒あたり6ギガビットの速度で情報を転送する一方、本発明の種々の実施形態のバッファリングによって、SATAドライブが、1秒あたり3ギガビットの速度でしか情報を受信可能でない場合、イニシエータは遅延を受けないが、従来技術では、遅延を受ける。本発明の実施形態のシステム10は、本質的に、いかなるそのような遅延も緩和する。
本発明の実施形態になされるように、システム10によるステータス、コマンド、制御、およびデータのバッファリングによって、別のイニシエータがそれを使用可能にするために、SASリンクの空きを作ることによって、システム改良を実現する。フレーム全体をバッファリングすることによって、データマネージャ内で行われるように、SATAデバイスと関連付けられる遅延は、透過的なままである。
図15は、コマンドの数に対する、SATAデバイスのパフォーマンスのグラフを示す。すなわち、x軸上には、コマンドの数が示され、y軸上には、システムのパフォーマンスが示される。システムの最大パフォーマンスは、32個のコマンドの前に生じ、実際に、32個のコマンドの点の後およびその近傍で減少し、パフォーマンスは、一定のままである。最大パフォーマンスのコマンドの数が計算され、ステートマシン118内に格納される。ステートマシン118は、最大パフォーマンスのコマンドの数から1を引いた数のみに対してテーブル116内を検索し、このように、コマンドの検索に関連付けられた時間を短縮する。また、SATAデバイスに送信されるコマンドの数を減少することは、図15のグラフに見られるように、SATAデバイスのパフォーマンスを向上させることによって、システムパフォーマンスを向上させる。
図16は、コマンドがホストから受信されると、CSM94によって行われるステップのフローチャートを示す。最初に、ステップ200では、未使用または利用可能なポインタは、未使用キューポインタテーブル93から検索される。ポインタが利用可能な場合、プロセスは、ステップ202に進むが、しかしながら、未使用ポインタが利用可能ではない場合、204ではフェイルとなり、エラー状態が通知される。
ステップ202では、受信したコマンド自体がチェックされ、有効または可読コマンドであるかどうか判断し、そうである場合、プロセスは、206に進み、そうではない場合、プロセスは、204に進む。206では、コマンドが待機しているかどうか判断され、そうである場合、プロセスは、ステップ208に進み、そうではない場合、プロセスは、ステップ210に進む。ステップ210では、受信したコマンドは、コマンドバッファ110内に格納され、イニシエータ番号、待機または非待機コマンドステータス、および他の関連付けられた属性等の受信したコマンドの属性は、テーブル112内に格納される。他の実施形態では、コマンド属性は、コマンドに関する他の情報であってもよい。
ステップ208では、ステータスマネージャ120または121は、「解放」を送信するように通知され、終了すると、ステータスマネージャが、CPMを通して、連結され、コマンドを受信していたリンクを効果的に解放するか、または使えるようにする。次に、ステップ210では、受信したコマンドは、場所114内に配置または格納される。
図17は、(図9の)CSM94のステートマシン118によって行われる関連ステップを示す。212では、ドライブに未だ送信されておらず、したがって、キュー(場所114内)内で実行されるのを待っている場所114内には保留コマンドが存在する。次に、214では、現在の(または、保留)コマンド(または、次に実行されるコマンド)が、「待機」コマンドであるかどうか判断される。コマンドが、待機コマンドであると判断される場合、プロセスは、218に進み、そうではない場合、プロセスは、216に進む。
218では、ステートマシン118は、SATAデバイスが、キューモードにあるかどうか判断し、そうである場合、プロセスは、224に進み、そうではない場合、プロセスは、ステップ220に進む。ステートマシン118内のステータスビットは、キュー/非キューモードを示す。キューモードは、待機コマンドを有しているのと同じであって、非キューモードは、非待機コマンドを有しているのと同じである。キューモードは、2つ以上のコマンドをSATAデバイスに送信可能とする一方、非キューモードは、1つのコマンドをそこに送信することのみ可能にする。SATA規格は、キューモードおよび非キューモードを規定する。
ステップ220では、テーブル116が空になる、すなわち、キューモードから脱するのを待つための時間が割かれ、同様に、ステータスマネージャ118が空になるのを待つための時間が割かれ、これが生じると、ステップ222が行われ、ステートマシン118内のステータスは、キューモードに設定され、プロセスは、218に進み、ステートマシン118がキューモードにあると判断される。
次に、224では、テーブル116内の場所が、利用可能であるかどうか判断され、そうである場合、プロセスは、ステップ226に進み、そうではない場合、場所が116内で利用可能になるのを待つための時間が割かれる。次に、ステップ226では、SATAドライブまたはデバイスに送信されるコマンドは、場所114からテーブル116に移動する。次に、ステップ228では、コマンドは、SATAデバイスに送信され、プロセスは、ステップ212に戻る。
図18では、図17のステップ214において、受信したコマンドが待機コマンドではないと判断後、ステートマシン118によって行われる関連ステップを示す。図18では、216後、230において、ステートマシン118がキューモードにあるかどうか判断され、そうである場合、プロセスは、ステップ232に進み、テーブル116が空になるのを待つための時間が割かれ、それが行われると、次のステップ234が実行される。ステップ234では、ステートマシン118は、非キューモードに設定され、プロセスは、230に進む。230において、ステートマシン118がキューモードにあると判断される場合、ステップ236が行われる。ステップ236では、テーブル116が空になるのを待つための時間が割かれる。テーブル116が空になると、コマンドは、SATAデバイスに送信され、プロセスは、図17のステップ212に戻る。
図19〜図21は、SATAデバイスまたはドライブが、ホストあるいはイニシエータにステータスをリターンすると、行われる関連ステップを示す。図19では、ステップ240において、SATAデバイスまたはドライブは、ステートマシン119によって管理されるデバイス80に、ステータスをリターンまたは返送する。ステートマシン119は、現在のモードが待機モードであるかどうかを判断する。モードがキューモードである場合、ステップ244では、ステータスは、ステートマシン119によって、復号化される。次に、ステップ246では、ステータスマネージャ120または121の保持レジスタ内のビットは、ステータスをホストに中継するために、復号化されたステータスに従って設定され、プロセスは、248に進む。
242において、モードがキューモードではないと判断される場合、プロセスは、ステップ250に進み、SATAデバイスから受信したステータス情報は、ステータスマネージャ120または121に送信され、プロセスは、248に進む。
図20では、248の後、252において、手動ステータス要求がなされたかどうか判断され、そうである場合、プロセスは、ステップ254に進み、SATAデバイスのステータスは、手動で送信される。252において、手動ステータス要求が送信されていないと判断される場合、プロセスは、256に進み、キューモードに関する判断が行われ、現在のモードがキューモードであると判断される場合、プロセスは、258に進むが、しかしながら、キューモードが検出されない場合、プロセスは、260に進み、別の判断が行われる。260では、コマンドステータスが利用可能であるかどうか判断され、そうである場合、プロセスは、ステップ262に進み、そうではない場合、プロセスは、252に戻る。
260において、コマンドステータスが利用可能であると判断される場合、コマンドステータスは、ステップ262において、ホストまたはイニシエータに送信される。次に、ステップ264では、テーブル116は更新され、利用可能な場合、次の保留ステータスを反映する。さらに、ステップ266では、テーブル93が更新され、使用されたポインタを再び利用可能にする。同様に、ステップ268では、テーブル112が更新される。
258の後、プロセスは、270に進み、図21では、CSM94によって、コマンドステータスが利用可能であるかどうか判断され、コマンドステータスが利用可能ではないと判断される場合、プロセスは、図19のステップ240に進み、そうでなければ、プロセスは、ステップ272に進む。ステップ272では、最優先ステータスは、イニシエータに送信される。274では、ステータスが、イニシエータに無事送信されたかどうか判断され、そうである場合、プロセスは、ステップ276に進み、そうでなければ、プロセスは、ステップ240に進む。
ステップ276では、優先ステータスは、ステップ272で送信された前の最優先ステータスに照らして更新される。次に、ステップ278では、テーブル116が更新され、利用可能な場合、次の保留ステータスを反映する。さらに、ステップ280では、テーブル112が更新され、同様に、ステップ282では、テーブル93が更新され、ポインタを利用可能にする。ステップ282後、プロセスは、ステップ240に戻る。
また、ステータスマネージャ120および121はそれぞれ、実行される要求の公正を達成するために、イニシエータからの要求を実行する際の公正を記録する。本公正ポリシーは、最初に実行されたイニシエータからの最も古い要求に基づき、さらに、イニシエータのステータスがビジー状態であるかどうかに基づく。ステータスマネージャは、図13のリトライタイマ171をチェックすることによって、イニシエータがビジー状態であるかどうかの知識を有する。イニシエータがビジー状態であると判断されると、SASエンジンは、タイマ171を始動し、タイマ171が満了していると、SASエンジンは、イニシエータの可用性を判断する目的のために、ステータスマネージャによってチェックされるステータスビットを消去する。
ビジー状態ではないイニシエータからの最も古い要求は、最初に実行され、次に、ビジー状態ではないイニシエータからの次に最も古い要求が続き、以降同様である。イニシエータからの要求が実行されると、要求は、要求リストの最後に移動する。したがって、テーブルまたはリンクリストが使用される場合、ビジー状態ではないイニシエータからのテーブルまたはリンクリストの最初に位置する要求が実行され、実行後、テーブルまたはリンクリストの最後に移動する。
図22は、上述の公正ポリシーを施行する際に、ステータスマネージャ120または121によって行われる関連ステップを示す。ステップ290では、保留ステータスが存在し、ステータスは空ではないと仮定すると、次のステップ292は、イニシエータに対する保留要求(上述のように、本発明の一実施形態では、これらの要求は、テーブルまたはリンクリスト内にあるであろう)の中の最初のエントリをフェッチし、次いで、294では、ステップ292において要求がフェッチされたイニシエータがビジー状態であるかどうか判断し、そうである場合、フェッチされたエントリは処理されず、むしろ、ステップ296において、要求テーブルまたはリンクリストの最初から、次のエントリがフェッチされ、エントリがステップ296においてフェッチされたイニシエータは、294において、ビジー状態をチェックされる。イニシエータが、ビジー状態であると検出されると、ステータスマネージャが、本エントリをスキップし、優先順位リストの最初に維持することを確認可能なように、図13のリトライタイマ171が始動される。
294において、イニシエータがビジー状態ではないと分かった場合、ステップ298においてフェッチされたエントリまたは要求に応答して、ステータスは、イニシエータに送信される。次に、300では、送信されたステータスの成功が検証され、ステータスが無事に送信されなかったと判断される場合、プロセスは、ステップ290に戻り、そうでなければ、プロセスは、ステップ302に進む。
ステップ302では、要求テーブル内にないイニシエータからの新しいエントリまたは要求は、テーブルまたはリストの最後に追加される。すなわち、テーブルが更新され、追加要求を含むが、公正ポリシーに従って、新しい要求は、テーブルの最後に追加される。
次に、308では、保留イニシエータのさらなるステータスがないかどうか判断される場合、そうである場合、プロセスは、ステップ306に進み、そうでなければ、プロセスは、ステップ290に戻る。ステップ306では、イニシエータからのさらなるエントリまたは要求があると判断される場合、追加要求/エントリは、エントリのリストまたはテーブルの最後に格納される。
図23は、SATAデバイスがイニシエータの要求に応答して、ステータスをリターンする際の関連ステップを示す。最初に、ステップ310では、SATAデバイスのステータスは、DRVM98からリターンされる。一実施形態では、これは、32ビット値であるが、値は、長さならびにフォーマットが異なり得ることを理解されたい。次に、上述のように、テーブル116のマッピングが行われる。次に、ステップ312では、送受信され得る現在のステータスは、ステータスマネージャ120または121内に格納されたステータスと、後者によって比較される。格納されたステータスは、保持ステータスレジスタ314内に位置する。
図24は、ステータスレジスタ120および121のそれぞれ内に含まれる、例示的な保持ステータスレジスタ314を示す。レジスタ314は、ステータスマネージャに入って来るステータスを比較し、同様に、レジスタ314から出て行くステータスを比較する。
次に図25を参照すると、メモリシステム1000は、本発明の実施形態による、エキスパンダ1400、E0、およびE1の群に連結されるイニシエータ1200、I0、およびI1の群を含むように示され、エキスパンダの群は、通信システム1600と通信する。2つのイニシエータおよび2つのエキスパンダが示されるが、任意の数のイニシエータおよびエキスパンダが採用されてもよいことを理解されたい。システム1600は、「ターゲット」とみなされ得る。エキスパンダE0およびE1は、スイッチとして機能し、典型的には、そこに接続される多くのターゲットおよび/またはエキスパンダの階層を有する。随意に、エキスパンダが使用されなくても、さらに随意に、イニシエータは、エキスパンダ内に位置されてもよい。全体として、システム1000のトポロジは、フレキシブルに変更可能である。I0は、E0およびE1に連結して示され、I1は、E1およびE0に連結して示され、E0およびE1は、互いに連結して示される。
システム1000は、SATAディスクドライブ1800に連結して示される。ディスクドライブ1800は、SATAドライブであって、したがって、SATA規格を使用して、システム1000と通信する。システム1000は、SASインターフェースを使用して、エキスパンダE0およびE1との通信をもたらすための2つのポート、ポート2000および2200を含むように示される。システム1000は、SATA規格プロトコルを使用して、ドライブ1800と通信するために、第3のポート2400を使用する。ドライブ1800は、同時に有効であってもよい2つ以上の通信パスを有するデュアルポートである。
図25には示されないが、実際の用途では、システム1000は、エキスパンダに連結されるドライブ1800に類似の多くのドライブを含んでもよい。例えば、エキスパンダ2600は、多数のドライブに連結されてもよく、エキスパンダ2600以外に、他のエキスパンダ(図示せず)を採用し、他のドライブをシステムにさらに連結してもよい。上述のシステムでは、典型的には、同様に、多数のイニシエータが存在するであろう。それ自体がシステム10の用途例である、図25のシステム1000のいくつかの用途例は、文書の記憶および検索、写真の記憶および検索、会計ソフトウェアの記憶および検索、ならびにRAIDを使用する基本的にあらゆる他の用途を含むが、それらに限定されない。大記憶容量が採用されるため、そのステータスおよびエラーに関する種々の情報同様に、イニシエータ等のデバイスへの複数のパスを有することが、非常に望ましい。これによって、他の効果の中でも、さらなるフレキシビリティ、より優れたシステムパフォーマンス、およびさらなる低コストを可能にすることが明白である。
ドライブ1800は、RAIDに類似するが、但し、デュアルポートであって、電子情報の記憶のためのドライブを使用するイニシエータによってアクセスされる。2つ以上のイニシエータが採用される場合、イニシエータがすべてのドライブへのアクセスを必要とする等の複数の課題が生じるが、本明細書に開示される種々の実施形態および方法によって解決される。
本発明は、特定の実施形態の観点から説明されたが、その変更および修正は、当業者には明白となることは疑う余地がないことが予測される。したがって、以下の請求項は、本発明の真の精神および範囲内であるとして、あらゆるそのような変更および修正を網羅するものと解釈されることが意図される。本発明と従来技術を組み合わせ、本発明の教示を含む、複数の機能を行うデバイスおよび方法を開発することは、当業者には明白である。そのようなデバイスおよび方法は、本発明の範囲内である。

Claims (74)

  1. SATA規格に準拠するように構成され、1つ以上のホストとSATAデバイスとの間の通信をもたらす通信システムであって、
    マルチポートブリッジデバイス
    を備え、
    該マルチポートブリッジデバイスは、
    1つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ(CSM)と、
    コマンドおよびステータスのデータとは実質的に別々に、データをバッファリングするために、1つ以上のホストからデータに応答するデータマネージャ(DM)と
    を含む、
    システム。
  2. 前記CSMに連結され、前記1つ以上のホストの第1のホストからのコマンドおよびステータスに応答する第1の接続プロトコルマネージャ(CPM)と、該CSMに連結され、該1つ以上のホストの第2のホストからのコマンドおよびステータスに応答する第2のCPMとをさらに含む、請求項1に記載の通信システム。
  3. 前記第1のCPMと、コマンド、データ、およびステータスを受信するために、前記第1のホストとの間に連結される第1のSASポートをさらに含む、請求項2に記載の通信システム。
  4. 前記第2のCPMと、コマンド、データ、およびステータスを受信するために、前記第2のホストとの間に連結される第2のSASポートをさらに含む、請求項3に記載の通信システム。
  5. SATAデバイスと前記1つ以上のホストとの間のステータス、コマンド、およびデータの転送をもたらすために、前記CSMおよびDMに連結されるドライブマネージャ(DRVM)をさらに含む、請求項4に記載の通信システム。
  6. 前記CSMは、第1の受信バッファと、第2の受信バッファとをさらに含み、該第1のバッファは、前記第1のCPMに連結され、該第2の受信バッファは、前記第2のCPMに連結される、請求項5に記載の通信システム。
  7. 前記CSMは、コマンドを処理するために、前記第1および第2の受信バッファに連結される、コマンド処理ステートマシンをさらに含む、請求項6に記載の通信システム。
  8. 前記CSMは、前記1つ以上のホストからのコマンドを受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンドバッファをさらに含む、請求項7に記載の通信システム。
  9. 前記CSMは、前記1つ以上のホストからのコマンドと関連付けられる属性を受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンド属性テーブルをさらに含む、請求項8に記載の通信システム。
  10. 前記CSMは、前記1つ以上のホストから受信した前記コマンドを格納するために、前記コマンド処理ステートマシンによってアクセスされるコマンド保留テーブルをさらに含む、請求項9に記載の通信システム。
  11. 前記コマンド保留テーブルは、前記コマンドが到着すると、前記1つ以上のホストから受信したコマンドを格納するためのキューまたはキューポインタである、請求項10に記載の通信システム。
  12. 前記コマンド保留テーブルは、先着順に基づくリンクリストである、請求項10に記載の通信システム。
  13. 前記コマンド保留テーブルは、優先度順にコマンドを優先させるために使用される優先順位リストである、請求項10に記載の通信システム。
  14. 前記コマンド保留テーブルは、コマンドポインタのリンクリストを有する第1のリストと、優先順位リストであり、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な優先コマンドのリストを含む第2のリストとを含む、請求項10に記載の通信システム。
  15. 前記第2のリストは、システムに連結されるホストに対し透過的なままで実行されるコマンドの優先度を変化させる、請求項14に記載の通信システム。
  16. 前記CSMは、前記1つ以上のホストから前記SATAデバイスにコマンドを発行させるために、前記コマンド保留テーブルに連結されるコマンド発行ステートマシンをさらに含む、請求項10に記載の通信システム。
  17. 前記コマンド発行ステートマシンは、複数のイニシエータに、同一または異なるSASポートに対する他のイニシエータコマンドの完了前に、SASポートに対してコマンドを送信させる、請求項10に記載の通信システム。
  18. 前記コマンド発行ステートマシンは、前記SATAデバイスに送信されるコマンドの数として、最大パフォーマンスのコマンドの数を使用する、請求項17に記載の通信システム。
  19. 前記CSMは、前記コマンド発行ステートマシンによって、前記SATAドライブに発行されることが判断されるコマンドをキューに入れるために、該コマンド発行ステートマシンに連結されるドライブキューテーブルをさらに含む、請求項17に記載の通信システム。
  20. 前記ドライブキューテーブルは、行と列とを含み、
    「有効な」ビット列は、関連付けられた行のコマンドの有効性に関する情報を含み、
    コマンドバッファへのポインタ列は、それぞれ、前記コマンドバッファ内の場所と、前記コマンド属性テーブル内の場所とを指し示す関連付けられたインデックスのためのポインタを含み、
    イニシエータ番号列は、イニシエータ番号を含み、それぞれ、インデックスと関連付けられ、
    イニシエータタグ列は、イニシエータによってシステムに最初に送信されるタグを含む、請求項17に記載の通信システム。
  21. 前記CSMは、前記第1のCPMに連結される第1の受信ステータスマネージャをさらに含む、請求項19に記載の通信システム。
  22. 前記CSMは、前記第2のCPMに連結される第2の受信ステータスマネージャをさらに含む、請求項21に記載の通信システム。
  23. 前記CSMは、前記SATAデバイスからステータスを受信し、該受信したステータスを前記第1または第2のステータスマネージャに提供するように連結される受信ステータスステートマシンをさらに含む、請求項22に記載の通信システム。
  24. 前記CSMは、前記1つ以上のホストから受信したコマンドをカウントするために、前記コマンドプロセッサステートマシンに連結されるコマンドカウンタをさらに含む、請求項23に記載の通信システム。
  25. 前記CSMは、コマンドへのポインタの可用性に関する情報を格納するために、前記コマンドプロセッサステートマシンおよび前記第1および第2のステータスマネージャに連結される未使用キューポインタ場所をさらに含む、請求項24に記載の通信システム。
  26. 前記CSMは、前記コマンド属性テーブルに連結され、前記ドライブキューテーブルにさらに連結され、前記テーブルを検索するために、前記第1および第2の受信ステータスマネージャにさらに連結されるサーチエンジンをさらに含む、請求項25に記載の通信システム。
  27. 前記DMは、データの少なくとも1つのフレームを格納するために、データバッファを含む、請求項5に記載の通信システム。
  28. 前記DMは、SATAデバイスから受信した制御FISを格納するために、制御FISバッファを含む、請求項27に記載の通信システム。
  29. 前記1つ以上のホストは、SASリンクを通して、前記ブリッジデバイスに連結されるイニシエータである、請求項4に記載の通信システム。
  30. 前記第1のSASポートは、第1のSASリンクを通して、前記イニシエータ間の情報に応答し、SATAドライブから該イニシエータに情報を転送するように動作する第1のSASエンジンを含む、請求項5に記載の通信システム。
  31. 前記第2のSASポートは、第2のSASリンクを通して、前記イニシエータ間の情報に応答し、SATAドライブから該イニシエータに情報を転送するように動作する第2のSASエンジンを含む、請求項30に記載の通信システム。
  32. 前記第1および第2のSASエンジンはそれぞれ、その個々のSASリンクとの接続をもたらすために、SMPバッファとステートマシンとを含む、請求項31に記載の通信システム。
  33. 種々のタスクを行うために、前記デバイスに連結されるマイクロプロセッサをさらに含む、請求項32に記載の通信システム。
  34. 前記デバイスに連結される汎用入力/出力(GPIO)をさらに含む、請求項33に記載の通信システム。
  35. 前記デバイスは、SATAデバイスを制御するためのSTPターゲットまたはSMPターゲットである端末デバイスである、請求項1に記載の通信システム。
  36. 前記コマンド発行ステートマシンは、ホストから前記デバイスへのタグの割り当てを動的に生じさせる、請求項16に記載の通信システム。
  37. SATAデバイスに送信されるコマンドの数は、前記システムの最大パフォーマンスを示す閾値数に制限される、請求項1に記載の通信システム。
  38. イニシエータからSATAデバイスに保留コマンドを転送する方法であって、
    保留コマンドが待機コマンドであるかどうかを判断するステップと、
    該保留コマンドが待機コマンドであるという判断に応じて、該SATAデバイスがキューモードにあるかどうかを判断するステップと、
    該保留コマンドが待機コマンドであるという判断に応じて、ドライブキューテーブル内の場所が利用可能であるかどうかを判断するステップと、
    該テーブル内の該場所が利用可能であると判断される場合、該待機コマンドを該テーブルに格納するステップと、
    該格納された待機コマンドを該SATAデバイスに転送するステップと
    を包含する、方法。
  39. 前記保留コマンドが待機コマンドであるという判断に応じて、待機モードを設定する、請求項38に記載の転送方法。
  40. 前記保留コマンドが非待機コマンドであるという判断に応じて、非待機モードを設定する、請求項38に記載の転送方法。
  41. 1つ以上のイニシエータから、SATAデバイス対象のコマンドを転送する方法であって、
    コマンドを受信するステップと、
    該コマンドが格納され得る場所を指し示すための未使用ポインタを判断するステップと、
    該未使用ポインタを使用して、該コマンドが格納される記憶場所を特定するステップと、
    該ポインタによって特定される該記憶場所内に、該コマンドを格納するステップと、
    該SATAデバイスに転送するために、該格納されたコマンドの優先順位を決めるステップと、
    該優先コマンドを該SATAデバイスに転送するステップと
    を包含する、方法。
  42. SATAドライブのステータスをホストに転送する方法であって、
    該SATAドライブからステータスを受信するステップと、
    現在のモードが待機モードであるかどうか判断するステップと、
    該モードが待機モードであると判断される場合、該受信したステータスを復号化し、該復号化されたステータスに従って、保持レジスタ内のビットを設定し、該モードが待機モードではないと判断される場合、該受信したステータスを送信するステップと、
    手動ステータス要求がなされたかどうかを判断するステップと、
    手動ステータス要求がなされたと判断される場合、該受信したステータスを手動で送信するステップと、
    手動ステータス要求がなされていないと判断される場合、該モードがキューモードであるかどうかを判断するステップと、
    該モードがキューモードではないと判断される場合、該受信したステータスを送信するステップと、
    ドライブキューテーブルを更新するステップと、
    未使用キューポインタを更新するステップと、
    コマンド属性テーブルを更新するステップと
    を包含する、方法。
  43. 手動ステータス要求がなされておらず、前記モードが待機であるという判断に応じて、コマンドステータスが利用可能であるかどうか判断され、
    該コマンドステータスが利用可能ではないと判断される場合、前記ドライブからステータスを受信するステップを継続し、
    該コマンドステータスが利用可能であると判断される場合、最優先ステータスをイニシエータに送信し、
    利用可能である場合、次の保留ステータスを反映するために、ドライブキューテーブルを更新するステップをさらに含む、請求項42に記載のステータスを転送する方法。
  44. コマンド属性テーブルを更新し、未使用キューテーブルを更新するステップをさらに含む、請求項43に記載のステータスを転送する方法。
  45. メモリシステムであって、
    複数のイニシエータと、
    SATAドライブと、
    該イニシエータと該SATAドライブとの間に連結され、少なくとも2つのSASポートを有し、該イニシエータと該SATAドライブとの間のデータ、コマンド、およびステータスフローを実質的に別々にバッファリングするように動作するターゲットと
    を備える、システム。
  46. SAS−SATA変換デバイスであって、
    1つ以上のホストからのコマンドおよびステータスに応答するコマンドステータスマネージャ(CSM)と、
    1つ以上のホストからデータに応答するデータマネージャ(DM)と
    を含み、
    データ、コマンド、およびステータスは、別々に管理されることにより、システムパフォーマンスを実質的に向上させる、
    デバイス。
  47. 前記CSMに連結され、前記1つ以上のホストの第1のホストからのコマンドおよびステータスに応答する第1の接続プロトコルマネージャ(CPM)と、該CSMに連結され、該1つ以上のホストの第2のホストからのコマンドおよびステータスに応答する第2のCPMとをさらに含む、請求項46に記載の通信システム。
  48. コマンド、データ、およびステータスを受信するために、前記第1のCPMと前記第1のホストとの間に連結される第1のSASポートをさらに含む、請求項47に記載の通信システム。
  49. コマンド、データ、およびステータスを受信するために、前記第2のCPMと前記第2のホストとの間に連結される第2のSASポートをさらに含む、請求項48に記載の通信システム。
  50. SATAデバイスと前記1つ以上のホストとの間のステータス、コマンド、およびデータの転送をもたらすために、前記CSMおよびDMに連結されるドライブマネージャ(DRVM)をさらに含む、請求項49に記載の通信システム。
  51. 前記CSMは、第1の受信バッファと、第2の受信バッファとをさらに含み、該第1のバッファは、前記第1のCPMに連結され、該第2の受信バッファは、前記第2のCPMに連結される、請求項50に記載の通信システム。
  52. 前記CSMは、コマンドを処理するために、前記第1および第2の受信バッファに連結されるコマンド処理ステートマシンをさらに含む、請求項51に記載の通信システム。
  53. 前記CSMは、前記1つ以上のホストからのコマンドを受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンドバッファをさらに含む、請求項52に記載の通信システム。
  54. 前記CSMは、前記1つ以上のホストからのコマンドと関連付けられる属性を受信および格納するために、前記コマンド処理ステートマシンに連結されるコマンド属性テーブルをさらに含む、請求項53に記載の通信システム。
  55. 前記CSMは、前記1つ以上のホストから受信した前記コマンドを格納するために、前記コマンド処理ステートマシンによってアクセスされるコマンド保留テーブルをさらに含む、請求項54に記載の通信システム。
  56. 前記コマンド保留テーブルは、前記コマンドが到着すると、前記1つ以上のホストから受信したコマンドのポインタを格納またはキューに入れるためのキューである、請求項55に記載の通信システム。
  57. 前記コマンド保留テーブルは、先着順に基づくリンクリストである、請求項56に記載の通信システム。
  58. 前記コマンド保留テーブルは、優先度順にコマンドを優先させるために使用される優先順位リストである、請求項57に記載の通信システム。
  59. 前記コマンド保留テーブルは、コマンドポインタのリンクリストを有する第1のリストと、優先順位リストであり、他の受信コマンドよりも高優先レベルに基づく順序で実行可能な優先コマンドのリストを含む第2のリストとを含む、請求項58に記載の通信システム。
  60. 前記第2のリストは、システムに連結されるホストに対し透過的なままで、実行されるコマンドの優先度を変化させる、請求項59に記載の通信システム。
  61. 前記CSMは、前記1つ以上のホストから前記SATAデバイスにコマンドを発行させるために、前記コマンド保留テーブルに連結されるコマンド発行ステートマシンをさらに含む、請求項60に記載の通信システム。
  62. 前記コマンド発行ステートマシンは、複数のイニシエータに、同一または異なるSASポートに対する他のイニシエータコマンドの完了前に、SASポートにコマンドを送信させる、請求項61に記載の通信システム。
  63. 前記コマンド発行ステートマシンは、前記SATAデバイスに送信されるコマンドの数として、最大パフォーマンスのコマンドの数を使用する、請求項62に記載の通信システム。
  64. 前記CSMは、前記コマンド発行ステートマシンによって、前記SATAドライブに発行されることが判断されるコマンドをキューに入れるために、該コマンド発行ステートマシンに連結されるドライブキューテーブルをさらに含む、請求項63に記載の通信システム。
  65. 前記ドライブキューテーブルは、行と列とを含み、
    「有効な」ビット列は、関連付けられた行のコマンドの有効性に関する情報を含み、
    コマンドバッファへのポインタ列は、それぞれ、前記コマンドバッファ内の場所と、前記コマンド属性テーブル内の場所とを指し示す、関連付けられたインデックスのためのポインタを含み、
    イニシエータ番号列は、イニシエータ番号を含み、それぞれ、インデックスと関連付けられ、
    イニシエータタグ列は、イニシエータによってシステムに最初に送信されるタグを含む、請求項64に記載の通信システム。
  66. 前記CSMは、前記第1のCPMに連結される第1の受信ステータスマネージャをさらに含む、請求項65に記載の通信システム。
  67. 前記CSMは、前記第2のCPMに連結される第2の受信ステータスマネージャをさらに含む、請求項66に記載の通信システム。
  68. 前記CSMは、前記SATAデバイスからステータスを受信し、該受信したステータスを前記第1または第2のステータスマネージャに提供するように連結される受信ステータスステートマシンをさらに含む、請求項67に記載の通信システム。
  69. 前記CSMは、前記1つ以上のホストから受信したコマンドをカウントするために、前記コマンドプロセッサステートマシンに連結されるコマンドカウンタをさらに含む、請求項68に記載の通信システム。
  70. 前記CSMは、コマンドへのポインタの可用性に関する情報を格納するために、前記コマンドプロセッサステートマシンおよび前記第1および第2のステータスマネージャに連結される未使用キューポインタ場所をさらに含む、請求項69に記載の通信システム。
  71. 前記CSMは、前記コマンド属性テーブルと、前記ドライブキューテーブルと、前記テーブルを検索するために、前記第1および第2の受信ステータスマネージャとに連結されるサーチエンジンをさらに含む、請求項70に記載の通信システム。
  72. 前記DMは、データの少なくとも1つのフレームを格納するために、データバッファを含む、請求項50に記載の通信システム。
  73. 前記DMは、SATAデバイスから受信した制御FISを格納するために、制御FISバッファを含む、請求項72に記載の通信システム。
  74. 前記1つ以上のホストは、SASリンクを通して、前記ブリッジデバイスに連結されるイニシエータである、請求項73に記載の通信システム。
JP2009542981A 2006-12-22 2007-09-18 シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング Expired - Fee Related JP4961481B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/644,549 2006-12-22
US11/644,549 US7761642B2 (en) 2006-12-22 2006-12-22 Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
PCT/US2007/078779 WO2008079468A1 (en) 2006-12-22 2007-09-18 Serial advanced technology attachment (sata) and serial attached small computer system interface (scsi) (sas) bridging

Publications (2)

Publication Number Publication Date
JP2010514063A true JP2010514063A (ja) 2010-04-30
JP4961481B2 JP4961481B2 (ja) 2012-06-27

Family

ID=39544555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009542981A Expired - Fee Related JP4961481B2 (ja) 2006-12-22 2007-09-18 シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング

Country Status (5)

Country Link
US (3) US7761642B2 (ja)
EP (1) EP2126705B1 (ja)
JP (1) JP4961481B2 (ja)
CN (2) CN101611383B (ja)
WO (1) WO2008079468A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101266572B1 (ko) * 2010-08-25 2013-05-22 엘에스아이 코포레이션 스위칭 디바이스 및 스위칭 디바이스에서 동작 가능한 방법
JP2013137737A (ja) * 2011-12-27 2013-07-11 Lsi Corp Sasドメインを通してsataホストとsataターゲット・デバイスとの間で通信するための方法および構造
JP2013232053A (ja) * 2012-04-27 2013-11-14 Buffalo Memory Co Ltd 外部記憶装置

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953917B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Communications protocol expander
US7962676B2 (en) * 2006-12-22 2011-06-14 Lsi Corporation Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
US7653775B2 (en) * 2007-04-09 2010-01-26 Lsi Logic Corporation Enhancing performance of SATA disk drives in SAS domains
US20090113454A1 (en) * 2007-10-29 2009-04-30 Inventec Corporation System and method of testing bridge sas channels
US7912995B1 (en) * 2007-12-20 2011-03-22 Emc Corporation Managing SAS topology
JP5146123B2 (ja) * 2008-06-10 2013-02-20 富士通株式会社 管理装置、管理方法、管理プログラム及び電子装置
US8190983B2 (en) * 2008-06-12 2012-05-29 Lsi Corporation Apparatus and methods for CRC error injection in a storage system
US9384160B2 (en) * 2008-09-04 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and controllers for affiliation managment
US8082391B2 (en) * 2008-09-08 2011-12-20 International Business Machines Corporation Component discovery in multi-blade server chassis
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
CN101853235B (zh) * 2009-04-02 2014-04-30 鸿富锦精密工业(深圳)有限公司 串行端口切换装置
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8286004B2 (en) * 2009-10-09 2012-10-09 Lsi Corporation Saving encryption keys in one-time programmable memory
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US20110004718A1 (en) * 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US8255607B2 (en) * 2009-11-05 2012-08-28 Emulex Design & Manufacturing Corporation SAS expander-based SAS/SATA bridging
US9063655B2 (en) * 2010-05-12 2015-06-23 Silicon Image, Inc. Multi-level port expansion for port multipliers
US8275925B2 (en) * 2010-08-25 2012-09-25 Lsi Corporation Methods and apparatus for improved serial advanced technology attachment performance
JP5593184B2 (ja) 2010-09-30 2014-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチパスを使用するシステム及び方法
US8677048B2 (en) * 2010-10-26 2014-03-18 Netapp Inc. Communication with two or more storage devices via one SAS communication port
CN102043631A (zh) * 2010-12-31 2011-05-04 富泰华工业(深圳)有限公司 窗口控制系统及其控制方法
CN103135938A (zh) * 2011-11-23 2013-06-05 英业达股份有限公司 主动式raid的单关连性sata驱动器的控制系统及其方法
US9626318B2 (en) 2012-01-26 2017-04-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for storage protocol compliance testing
US9081818B2 (en) 2012-03-13 2015-07-14 Hewlett-Packard Development Company, L.P. SAS fabric discovery
US9026702B2 (en) * 2012-11-12 2015-05-05 Avago Technologies General Ip (Singapore) Pte Ltd Methods and apparatus for fast context switching of serial advanced technology attachment in enhanced serial attached SCSI expanders
WO2014163627A1 (en) * 2013-04-02 2014-10-09 Hewlett-Packard Development Company, L.P. Sata initiator addressing and storage device slicing
CN104834500A (zh) * 2014-02-07 2015-08-12 鸿富锦精密工业(深圳)有限公司 指令处理系统及方法
WO2016014063A1 (en) * 2014-07-24 2016-01-28 Hewlett-Packard Development Company, L.P. Expander transmission data rate determination
US9886382B2 (en) 2014-11-20 2018-02-06 International Business Machines Corporation Configuration based cache coherency protocol selection
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US20160275036A1 (en) * 2015-03-19 2016-09-22 Western Digital Technologies, Inc. Single board computer interface
CN110647481A (zh) * 2019-09-09 2020-01-03 苏州浪潮智能科技有限公司 转换板卡和硬盘接口装置
CN111241016B (zh) * 2019-12-31 2021-06-25 杭州华澜微电子股份有限公司 一种接口转换装置
US11513832B2 (en) 2020-07-18 2022-11-29 Vmware, Inc. Low-latency shared memory channel across address spaces in a computing system
CN112559407B (zh) * 2020-12-22 2021-11-16 无锡众星微系统技术有限公司 Stp链路层状态机优化方法
CN114637712B (zh) * 2022-03-18 2023-03-10 无锡众星微系统技术有限公司 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236953A1 (en) * 2002-06-21 2003-12-25 Compaq Information Technologies Group, L.P. System and method for providing multi-initiator capability to an ATA drive
JP2005151562A (ja) * 2003-11-13 2005-06-09 Dell Products Lp 直列アタッチドscsi記憶ネットワークにおける通信のためのシステムおよび方法
JP2005327230A (ja) * 2003-06-11 2005-11-24 Siliconstor Inc SATA(SerialAdvancedTechnologyAttachment)スイッチ
US20060031612A1 (en) * 2004-08-03 2006-02-09 Bashford Patrick R Methods and structure for assuring correct data order in SATA transmissions over a SAS wide port

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6388590B1 (en) * 1999-09-24 2002-05-14 Oak Technology, Inc. Apparatus and method for transmitting data serially for use with an advanced technology attachment packet interface (atapi)
US6247100B1 (en) 2000-01-07 2001-06-12 International Business Machines Corporation Method and system for transmitting address commands in a multiprocessor system
US6763402B2 (en) 2000-05-25 2004-07-13 Bnl Technologies, Inc. Data storage subsystem
US20020154633A1 (en) 2000-11-22 2002-10-24 Yeshik Shin Communications architecture for storage-based devices
TW507896U (en) 2001-06-26 2002-10-21 Feiya Technology Co Ltd Hot plug device for ATA interface
US20030033465A1 (en) * 2001-08-08 2003-02-13 Cheng-Chih Chien Hot-swap device applicable to ATA interface
JP4212811B2 (ja) 2002-01-10 2009-01-21 富士通株式会社 情報処理システム、インタフェース装置、情報処理装置、情報記憶装置
US6948036B2 (en) * 2002-06-21 2005-09-20 Hewlett-Packard Development Company, L.P. System and method for providing multi-initiator capability to an ATA drive
JP4015898B2 (ja) * 2002-07-26 2007-11-28 松下電器産業株式会社 プログラム実行装置
US6735650B1 (en) 2002-08-30 2004-05-11 Western Digital Technologies, Inc. Disk drive and method for data transfer initiated by nonstandard disk-drive commands on a serial ATA interface that only supports standard ATA disk-drive commands
US7360010B2 (en) * 2003-04-14 2008-04-15 Copan Systems, Inc. Method and apparatus for storage command and data router
US7539797B2 (en) * 2003-06-11 2009-05-26 Lsi Corporation Route aware Serial Advanced Technology Attachment (SATA) Switch
US7526587B2 (en) * 2004-02-09 2009-04-28 Lsi Corporation Dual port serial advanced technology attachment (SATA) disk drive
CN100433623C (zh) * 2003-06-11 2008-11-12 硅斯托尔公司 串行高级技术附件(sata)交换机
DE10355583A1 (de) 2003-11-28 2005-07-07 Advanced Micro Devices, Inc., Sunnyvale Gemeinsame Nutzung eines Speichers in einer Zentralsteuerung
JP2005190036A (ja) * 2003-12-25 2005-07-14 Hitachi Ltd 記憶制御装置及び記憶制御装置の制御方法
US20050198425A1 (en) 2004-03-05 2005-09-08 Wang Liang-Yun Combined optical storage and flash card reader using single ide or sata port and method thereof
US7340616B2 (en) * 2004-05-26 2008-03-04 Intel Corporation Power management of storage units in a storage array
US20060004935A1 (en) * 2004-06-30 2006-01-05 Pak-Lung Seto Multi-protocol bridge
US7523272B2 (en) * 2004-07-12 2009-04-21 Dell Products L.P. System and method for identifying a storage drive in a storage network
JP4669263B2 (ja) * 2004-11-04 2011-04-13 株式会社日立製作所 ストレージ装置
US8301810B2 (en) 2004-12-21 2012-10-30 Infortrend Technology, Inc. SAS storage virtualization controller, subsystem and system using the same, and method therefor
TW200629072A (en) 2005-02-01 2006-08-16 Sunplus Technology Co Ltd Bridge system for hetero-serial interfaces
US7711989B2 (en) * 2005-04-01 2010-05-04 Dot Hill Systems Corporation Storage system with automatic redundant code component failure detection, notification, and repair
US20060271739A1 (en) 2005-05-24 2006-11-30 Shu-Fang Tsai Management of transfer of commands
JP4634268B2 (ja) * 2005-10-03 2011-02-16 株式会社日立製作所 ストレージシステムの省電力化方法及びストレージシステム
TWI307034B (en) * 2005-11-23 2009-03-01 Infortrend Technology Inc Storage virtualization subsystem and system with host-side redundancy via sas connectivity
US7921185B2 (en) * 2006-03-29 2011-04-05 Dell Products L.P. System and method for managing switch and information handling system SAS protocol communication
US7536508B2 (en) * 2006-06-30 2009-05-19 Dot Hill Systems Corporation System and method for sharing SATA drives in active-active RAID controller system
JP2008112292A (ja) * 2006-10-30 2008-05-15 Hitachi Ltd ストレージシステム及びストレージシステムの電源供給制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236953A1 (en) * 2002-06-21 2003-12-25 Compaq Information Technologies Group, L.P. System and method for providing multi-initiator capability to an ATA drive
JP2005327230A (ja) * 2003-06-11 2005-11-24 Siliconstor Inc SATA(SerialAdvancedTechnologyAttachment)スイッチ
JP2005151562A (ja) * 2003-11-13 2005-06-09 Dell Products Lp 直列アタッチドscsi記憶ネットワークにおける通信のためのシステムおよび方法
US20060031612A1 (en) * 2004-08-03 2006-02-09 Bashford Patrick R Methods and structure for assuring correct data order in SATA transmissions over a SAS wide port

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101266572B1 (ko) * 2010-08-25 2013-05-22 엘에스아이 코포레이션 스위칭 디바이스 및 스위칭 디바이스에서 동작 가능한 방법
JP2013137737A (ja) * 2011-12-27 2013-07-11 Lsi Corp Sasドメインを通してsataホストとsataターゲット・デバイスとの間で通信するための方法および構造
JP2013232053A (ja) * 2012-04-27 2013-11-14 Buffalo Memory Co Ltd 外部記憶装置

Also Published As

Publication number Publication date
US20080155163A1 (en) 2008-06-26
CN102306138A (zh) 2012-01-04
CN101611383A (zh) 2009-12-23
US7822908B2 (en) 2010-10-26
JP4961481B2 (ja) 2012-06-27
US20080155145A1 (en) 2008-06-26
US7865652B2 (en) 2011-01-04
US20080155162A1 (en) 2008-06-26
EP2126705B1 (en) 2013-01-23
EP2126705A4 (en) 2011-01-05
CN101611383B (zh) 2013-07-24
WO2008079468A1 (en) 2008-07-03
US7761642B2 (en) 2010-07-20
EP2126705A1 (en) 2009-12-02

Similar Documents

Publication Publication Date Title
JP4961481B2 (ja) シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング
US7739432B1 (en) Command switching for multiple initiator access to a SATA drive
US6298398B1 (en) Method to provide checking on data transferred through fibre channel adapter cards
US9052829B2 (en) Methods and structure for improved I/O shipping in a clustered storage system
US6609165B1 (en) Method and apparatus for using fibre channel extended link service commands in a point-to-point configuration
CN102810081B (zh) 光纤信道输入/输出数据路由系统和方法
US8364853B2 (en) Fibre channel input/output data routing system and method
US7643410B2 (en) Method and apparatus for managing a connection in a connection orientated environment
US7962676B2 (en) Debugging multi-port bridge system conforming to serial advanced technology attachment (SATA) or serial attached small computer system interface (SCSI) (SAS) standards using idle/scrambled dwords
US6338083B1 (en) Method and apparatus for transfer of information using optical fiber connections
US8583989B2 (en) Fibre channel input/output data routing system and method
CN102446073A (zh) 延迟对操作的确认直至操作完成的方法和系统
US20130103858A1 (en) Fibre channel input/output data routing system and method
US8683083B2 (en) Fibre channel input/output data routing system and method
US8769253B2 (en) Fibre channel input/output data routing system and method
US7986630B1 (en) High performance architecture for fiber channel targets and target bridges
US6499066B1 (en) Method and apparatus for using fibre channel test extended link service commands for interprocess communication
JP4432388B2 (ja) 入出力制御装置
JP4930554B2 (ja) 入出力制御装置
US20040111537A1 (en) Method, system, and program for processing operations

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110712

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111011

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111018

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111101

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: 20120227

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120326

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees