JP7179489B2 - ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム - Google Patents

ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム Download PDF

Info

Publication number
JP7179489B2
JP7179489B2 JP2018096344A JP2018096344A JP7179489B2 JP 7179489 B2 JP7179489 B2 JP 7179489B2 JP 2018096344 A JP2018096344 A JP 2018096344A JP 2018096344 A JP2018096344 A JP 2018096344A JP 7179489 B2 JP7179489 B2 JP 7179489B2
Authority
JP
Japan
Prior art keywords
command
bridge
storage device
sata
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018096344A
Other languages
English (en)
Other versions
JP2019200709A5 (ja
JP2019200709A (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.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2018096344A priority Critical patent/JP7179489B2/ja
Priority to US16/401,656 priority patent/US11216402B2/en
Publication of JP2019200709A publication Critical patent/JP2019200709A/ja
Publication of JP2019200709A5 publication Critical patent/JP2019200709A5/ja
Application granted granted Critical
Publication of JP7179489B2 publication Critical patent/JP7179489B2/ja
Active 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/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ストレージシステム及びその制御方法、プログラム、並びに記憶制御システムに関する。
MFP(Multi Function Printer)などの情報処理装置は、装置のプログラムやユーザの画像データを保存するため、HDD(Hard Disk Drive)など記憶装置を備える。また、従来から、記憶装置のインターフェース規格であるATA(Advanced Technology Attachment)などのコマンドの制御方法が提案される。例えば、特許文献1は、メインコントローラとSATAブリッジのセキュリティ認証の際、ATA8-ACSなどでリザーブされている領域にベンダユニークコマンドとして拡張したコマンドを用いる技術を開示する。この技術では、SATAブリッジは、認証開始前に記憶装置へのアクセスコマンドを発行せず、認証終了後に記憶装置へのアクセスコマンドを発行する。
特許第4829639号公報
特許文献1に開示されるSATAブリッジは、認証されたかどうかにかかわらず、SATA I/Fから拡張コマンドを発行しない。そのため、SATAブリッジは、SSD、HDDなどの記憶装置にしか接続できないという課題を有する。
一方、SATAブリッジがホストとして拡張コマンドを送信可能することで、SATAブリッジに記憶装置以外のデバイス、例えば、後段のSATAデバイスを接続することもできる。この場合、前段のSATAブリッジに高速なアクセス動作を実現するSSD装置を接続し、後段のSATAブリッジに複数のHDD装置を接続し、かつ複数のHDD装置を用いてミラーリング機能を実現することも可能と考えられる。しかし、前段のブリッジは、自らに接続される後段のデバイスの種類を判断する機能を有しないため、コマンドの種類(標準コマンド又は拡張コマンド)に基づいて、適切に、当該コマンドを後段のデバイスに送信することができない。従って、誤ったコマンドの送信により後段のデバイスが誤動作する虞が生じる。
本発明は、ブリッジに記憶装置以外のデバイスを接続可能とすると共に、後段のデバイスの種類に応じて当該デバイスに送信可能なコマンドを変更することで、ミラーリング機能と高速なアクセス速度とを両立することを目的とする。
本発明の一実施形態のストレージシステムは、複数のストレージが接続されたストレージシステムであって、メインコントローラと通信する第1ブリッジと、前記第1ブリッジと通信可能な第2ブリッジと、前記第1ブリッジと通信可能な第1記憶装置と、前記第2ブリッジと通信可能な第2記憶装置および第3記憶装置と、を備え、前記第1ブリッジは、コントローラを有し、前記コントローラは、前記メインコントローラから受け付けたコマンドの宛先が前記第2ブリッジであることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第2ブリッジに送信し、前記メインコントローラから受け付けたコマンドが前記第1記憶装置に対応するコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信し、前記メインコントローラから受け付けたコマンドが、前記第1記憶装置に対応しないコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信しないことを特徴とする。
本発明によれば、ブリッジに記憶装置以外のデバイスを接続可能とすると共に、後段のデバイスの種類に応じて当該デバイスに送信可能なコマンドを変更することで、ミラーリング機能と高速なアクセス速度とを両立することができる。
本発明のストレージシステムの構成図である。 メインコントローラの詳細構成図である。 第1のブリッジの詳細構成図である。 第2のブリッジの詳細構成図である。 デバイス判断部の動作を示すフローチャートである。 デバイス判断部の動作を示すフローチャートである。 コマンド処理部の動作を示すフローチャートである。 コマンド処理時の状態遷移図である。 拡張コマンドの例を示す図である。 標準コマンドの例を示す図である。 第1のブリッジの詳細構成図である。 第2のブリッジの詳細構成図である。 コマンド処理部の動作を示すフローチャートである。 コマンドリストの例を示す図である。 比較例のストレージシステムの構成図である。
以下の実施形態では、前段のブリッジから拡張コマンドを送信可能することで、前段のブリッジに記憶装置以外のデバイス、例えば、後段のブリッジを接続可能とする技術を説明する。例えば、前段のブリッジに記憶装置が接続される場合、拡張コマンドをマスクする、即ち送信しない。また、前段のブリッジに後段のブリッジが接続される場合、拡張コマンドをその後段のブリッジに送信する。これにより、ブリッジに記憶装置とそれ以外のデバイスの両方を接続できる。
ところで、MFPなどの情報処理装置の中には、複数の記憶装置を装着し、各記憶装置に同一データを書き込むことで、データを強固に保護可能なミラーリング機能を備えたモデルが存在する。ミラーリング機能は、複数の記憶装置の1つが故障し、それがリード/ライト不能な状態になっても、残りの記憶装置からデータを復元可能である点に特徴を有し、データを失う危険性を回避できることから有望な技術と言える。
一方、近年、記憶装置としてSSD(Solid State Drive)装置が登場し、リード/ライトの高速処理が行えることから、MFPなどの情報処理装置の記憶装置としても使用され始めている。そこで、上述のミラーリング機能を複数のSSD装置で実現することが検討されるが、SSD装置単体のコストはHDD装置単体のコストよりも高く、SSD装置のみでミラーリング機能を実現することは、コストの面から現実的に不可能である。
上述の手段は、このような課題を解決する。即ち、第1及び第2のブリッジをカスケード接続し、前段である第1のブリッジに高速なアクセス速度を実現する第1の記憶装置(例えば、SSD装置)を接続する。また、後段である第2のブリッジにミラーリング機能を実現する第2及び第3の記憶装置(例えば、HDD装置)を接続する。この場合、第1の記憶装置にアクセスする標準コマンドは、第1の記憶装置に送信され、かつ第2のブリッジに対してはマスクされる。また、ミラーリングに関する拡張コマンドは、第2のブリッジが実行可能な形式に変更したうえで第2のブリッジに送信され、かつ第1の記憶装置に対してはマスクされる。
このように、第1のブリッジに接続される後段のデバイスの種類に応じて当該デバイスに送信可能なコマンドを変更することで、ミラーリング機能と高速なアクセス速度とを両立した情報処理装置が実現される。従って、以下のストレージシステムは、HDD装置などの大容量の記憶装置とSSD装置などの小容量かつ高速の記憶装置とが接続され、ATAコマンド、ベンダユニークコマンドなどでミラーリング機能及び暗号化・復号化機能を制御するのに好適である。
以下、本発明の実施例を具体的に説明する。
(第1の実施例)
図1は、本発明のストレージシステムの構成図を示す。
このストレージシステムは、情報処理装置としてのMFPに適用されることを前提として説明するが、これに限定されるものではなく、例えば、複数の記憶装置を備える情報処理装置であれば本発明を適用可能である。
ストレージシステムは、メインコントローラ100と、第1乃至第3の記憶装置400、401、402と、第1及び第2のブリッジ200、300と、を備える。メインコントローラ100は、MFP全体を制御する。第1乃至第3の記憶装置400、401、402は、データを記憶する。第1及び第2のブリッジ200、300は、第1乃至第3の記憶装置400、401、402に対してデータの送受信を行う。
以下の説明では、第1の記憶装置400は、SSD装置を前提とし、第2及び第3の記憶装置401、402は、HDD装置を前提とするが、これに限定されるものではない。第1の記憶装置400は、第2及び第3の記憶装置401、402に比べて、高速なアクセス速度でデータを記憶可能な記憶装置であればよい。また、第2及び第3の記憶装置401、402は、第1の記憶装置400に比べて、アクセス速度が遅いが、大きな記憶容量を有する記憶装置であればよい。第2及び第3の記憶装置401、402は、起動プログラムやユーザデータなどを記憶する。また、このようなデータは、信頼性が要求されるので、ミラーリング機能により保存される。
メインコントローラ100、第1のブリッジ200、及び第2のブリッジ300は、直列接続される。第1のブリッジ200は、複数の接続ポートを備える。第1のブリッジ200の複数の接続ポートのうちの1つには、第1の記憶装置400が接続可能であり、他の1つには、第2のブリッジ300が接続可能である。同様に、第2のブリッジ300も、複数の接続ポートを備える。第2のブリッジ300の複数の接続ポートのうちの1つには、第2の記憶装置401が接続可能であり、他の1つには、第3の記憶装置402が接続可能である。本例では、ブリッジの数は、2つであるが、これに限定されるものではない。第1及び第2のブリッジ200、300に、さらに他のブリッジを接続してもよい。
また、第1及び第2のブリッジ200、300は、メインコントローラ100から見たときに、1つのブリッジとして認識される。
図2は、メインコントローラの詳細構成図を示す。
メインコントローラ(ホスト)100は、CPU101と、ROM102と、DRAM103と、Network104と、を備える。さらに、メインコントローラ100は、スキャン画像処理部105と、スキャナ106と、プリンタ画像処理部107と、プリンタ108と、操作部109と、SATAコントローラ110と、を備える。
CPU101は、ストレージシステム全体を制御するコントローラであり、システム制御、演算処理、OS、アプリケーションなどを実行する。ROM102は、リード専用のメモリであり、CPU101で実行されるプログラム及び設定情報を記憶する。DRAM103は、CPU101で実行する制御プログラムを記憶する。DRAM103は、一時的なワークエリアとしても使用される。
Network104は、ネットワークI/Fであり、ストレージシステム内で画像処理を施した画像データをLAN111経由で外部、即ち、図示しない情報機器に送信する。Network104は、外部から画像データを受信する。
スキャン画像処理部105は、スキャナ106から受信した画像データに画像処理を施す。スキャン画像処理部105で処理された画像データは、SATAコントローラ110を経由して第1及び第2のブリッジ200、300に送信され、第1乃至第3の記憶装置400~402に記憶される。スキャナ106は、画像入力デバイスであり、例えば、原稿となる紙上の画像に光を照射し、CCDラインセンサを走査させ、反射光を検出することで、ラスター・イメージデータとしての電気信号を取得する。
プリンタ画像処理部107は、外部、又は第1乃至第3の記憶装置400~402から受信した画像データに画像処理を施す。プリンタ画像処理部107で処理された画像データは、プリンタ108に送信される。プリンタ108は、画像出力デバイスであり、ラスター・イメージデータを用紙上に印刷すべき画像に変換する。
操作部109は、表示機能と操作機能を兼ね揃えたタッチパネルなどのデバイスである。操作部109は、入力された画像データを表示する役割と、ユーザが入力した情報をCPU101に伝える役割と、を有する。SATAコントローラ110は、SATA(Serial ATA)規格に準拠して接続機器を制御し、かつ第1のブリッジ200に対してデータの送受信を行う。LAN111は、メインコントローラ100を含む情報処理装置と外部(情報機器)との間で通信を行うためのネットワーク網である。
図3は、第1のブリッジ200の詳細構成図を示す。
CPU201は、第1のブリッジ200のシステム制御、演算処理、ATAコマンド処理などを行う。また、CPU201は、メインコントローラ100から受信し、かつ第2のブリッジ300又は第1の記憶装置400に送信すべき入力コマンドの処理を行う。
コマンド処理は、CPU201内のデバイス判断部による、第1のブリッジ200に接続されるデバイスの種類を判断する処理、及びCPU201内のコマンド処理部による、当該デバイスの種類に基づき入力コマンドの処理を変更する処理を含む。
コマンド処理部は、入力コマンドが第2のブリッジ300に対する設定又は問い合わせに関する拡張コマンドである場合に、当該拡張コマンドを第2のブリッジ300に送信し、かつ当該拡張コマンドの応答をメインコントローラ100に送信する。
また、コマンド処理部は、入力コマンドが第1の記憶装置400にアクセスする標準コマンドである場合に、当該標準コマンドを第1の記憶装置400に送信する。さらに、コマンド処理部は、入力コマンドが暗号化又は復号化に関する拡張コマンドである場合に、当該拡張コマンドを第1のブリッジ200内で処理し、第2のブリッジ300に送信しない。一方、コマンド処理部は、入力コマンドがミラーリングに関する拡張コマンドである場合に、当該拡張コマンドを第2のブリッジ300に送信する。
さらに、第1及び第2のブリッジ200、300がメインコントローラ100から見たときに、1つのブリッジとして認識される場合、コマンド処理部は、以下の処理を行う。例えば、入力コマンドが当該1つのブリッジに対する設定又は問い合わせに関する拡張コマンドである場合、コマンド処理部は、当該拡張コマンドを第1のブリッジ200内で処理すると共に第2のブリッジ300に送信する。また、コマンド処理部は、第1及び第2のブリッジからの応答をマージしてメインコントローラ100に送信する。
ROM202は、CPU201の制御プログラム、各種モードの設定値に関するデータなどを記憶する。RAM203は、CPU201で実行する制御プログラムを記憶する。RAM203は、一時的なワークエリアとしても使用される。
SATA I/F204は、メインコントローラ100に接続される接続ポートを備え、SATA規格に準拠して、メインコントローラ100内のSATAコントローラ110(図2)と通信を行う。この場合、メインコントローラ100は、ホストとして機能し、SATA I/F204は、ホストに制御されるデバイスとして機能する。
SATA I/F205は、第1の記憶装置400に接続される接続ポートを備え、かつSATA I/F206は、第2のブリッジ300に接続される接続ポートを備える。SATA I/F205、206は、SATA規格に準拠して、第1の記憶装置400又は第2のブリッジ300と通信を行う。この場合、SATA I/F205、206は、ホストとして機能し、第1の記憶装置400及び第2のブリッジ300は、ホストに制御されるデバイスとして機能する。
図4は、第2のブリッジ300の詳細構成図を示す。
CPU1001は、第2のブリッジ300のシステム制御、演算処理、ATAコマンド処理などを行う。また、CPU1001は、第1のブリッジ200から受信し、かつ第2の記憶装置401又は第3の記憶装置402に送信すべき入力コマンドの処理を行う。
コマンド処理は、CPU1001内のデバイス判断部による、第2のブリッジ300に接続されるデバイスの種類を判断する処理、及びCPU1001内のコマンド処理部による、当該デバイスの種類に基づき入力コマンドの処理を変更する処理を含む。
コマンド処理部は、入力コマンドが第2又は第3の記憶装置401、402にアクセスする標準コマンドである場合に、当該標準コマンドを第2又は第3の記憶装置401、402に送信する。また、コマンド処理部は、入力コマンドがミラーリングに関する拡張コマンドである場合に、当該拡張コマンドを第2のブリッジ300内で処理する。
ROM1002は、CPU1001の制御プログラム、各種モードの設定値に関するデータなどを記憶する。RAM1003は、CPU1001で実行する制御プログラムを記憶する。RAM1003は、一時的なワークエリアとしても使用される。
SATA I/F1004は、第1のブリッジ200に接続される接続ポートを備え、SATA規格に準拠して、第1のブリッジ200内のSATA I/F206(図3)と通信を行う。この場合、SATA I/F206(図3)は、ホストとして機能し、SATA I/F1004は、ホストに制御されるデバイスとして機能する。
SATA I/F1005は、第2の記憶装置401に接続される接続ポートを備え、かつSATA I/F1006は、第3の記憶装置402に接続される接続ポートを備える。SATA I/F1005、1006は、SATA規格に準拠して、第2の記憶装置401又は第3の記憶装置402と通信を行う。この場合、SATA I/F1005、1006は、ホストとして機能し、第2の記憶装置401及び第3の記憶装置402は、ホストに制御されるデバイスとして機能する。
尚、図3及び図4の例では、第1及び第2のブリッジ200、300は、同一の要素を備えるが、これに限定されるものではない。即ち、第1及び第2のブリッジ200、300の一方は、その他方にない要素又は機能を備えていてもよい。
また、図2のSATAコントローラ110、第1のブリッジ200、及び第2のブリッジ300は、それぞれ異なるチップ内に形成されててもよいし、同一チップ内に形成されてもよい。また、SATAコントローラ110と第1のブリッジ200が同一チップ内に形成されてもよいし、又は第1のブリッジ200と第2のブリッジ300が同一チップ内に形成されてもよい。
次に、図5乃至図7のフローチャートを用いて、第1及び第2のブリッジ200,300の動作を説明する。
図5及び図6は、CPU201、1001内のデバイス判断部の動作を示す。
このフローチャートは、CPU201、1001上で動作するプログラムにより実行され、当該プログラムは、RAM203、1003、ROM202、1002、又は、第1乃至第3の記憶装置400~402のいずれかに記憶される。
また、このフローチャートは、SATA I/F毎に実行される。即ち、本例では、図3に示すように、第1のブリッジ200は、2つのSATA I/F 205、206を備えるため、本フローは、SATA I/F205、206に対して1回ずつ、合計2回実行される。SATA I/F205、206のうち、いずれを先に本フローチャートの対象とするか、については、特に限定されない。
例えば、SATA I/F205に対して本フローチャートを実行した後、SATA I/F206に対して本フローチャートを実行してもよいし、又は、その逆でもよい。また、2つのSATA I/F205、206に対して、並列に、本フローチャートを実行してもよい。
同様に、本例では、図4に示すように、第2のブリッジ300は、2つのSATA I/F 1005、1006を備えるため、本フローは、SATA I/F1005、1006に対して1回ずつ、合計2回実行される。SATA I/F1005、1006のうち、いずれを先に本フローチャートの対象とするか、については、特に限定されない。
また、本フローチャートは、本ストレージシステムを起動するときなど、第1及び第2のブリッジ200、300の初期化時に実行することが望ましい。但し、本フローチャートは、これに限定されるものではなく、例えば、メインコントローラ100がSATAデバイスにアクセスするときに実行してもよい。
・ 第1のブリッジ200の動作
S401~S403は、第1のブリッジ200にSATAデバイスが接続されるか否か、及び第1のブリッジ200にSATAデバイスが接続される場合には、当該SATAデバイスの種類を判断するステップである。
まず、S401において、デバイス判断部は、SATAホストにSATAデバイスが接続されるか否かを判断する。ここで、SATAホストとは、図3のSATA I/F205、206のことであり、SATAデバイスとは、図3の第1の記憶装置400及び第2のブリッジ300のことである。
例えば、デバイス判断部は、IDENTIFY DEVICEなどのATAコマンドを発行し、SATA I/F205、206から応答がなければ、それらにSATAデバイスが接続されないと判断し、S404に進む。一方、デバイス判断部は、IDENTIFY DEVICEなどのATAコマンドを発行し、SATA I/F205、206から応答があれば、それらにSATAデバイスが接続されると判断し、S402に進む。
但し、SATAホストにSATAデバイスが接続されるか否かの判断は、IDENTIFY DEVICEなどのATAコマンドの発行による判断に限定されるものではない。当該判断は、SATAデバイスの接続の有無を確認できる方法であれば、どのような方法を用いても構わない。もちろん、この判断に使用されるコマンドも、ATAコマンドに限定されるものはなく、拡張コマンドを発行してもよい。
尚、S401は、必須の処理ではなく、省略しても構わない。
次に、S402において、デバイス判断部は、SATAホストにブリッジが接続されるか否かを判断する。例えば、デバイス判断部は、ATAコマンド又は拡張コマンドを発行し、SATA I/F205、206から応答がなければ、それらにブリッジが接続されないと判断し、S403に進む。一方、デバイス判断部は、ATAコマンド又は拡張コマンドを発行し、SATA I/F205、206から応答があれば、それらにブリッジが接続されると判断し、S406に進む。
次に、S403において、デバイス判断部は、SATAホストに記憶装置が接続されるか否かを判断する。例えば、デバイス判断部は、ATAコマンドを発行し、SATA I/F205、206から応答がなければ、それらに記憶装置が接続されない、即ち、未知のSATAデバイスが接続されると判断し、S404に進む。一方、デバイス判断部は、ATAコマンドを発行し、SATA I/F205、206から応答があれば、それらに記憶装置が接続されると判断し、S405に進む。
以上により、デバイス判断部は、SATA I/F(接続ポート)205、206の各々について、SATAデバイスの接続無し、ブリッジ(第2のブリッジ300)の接続有り、及び記憶装置(第1の記憶装置400)の接続有りの3つの状態を確認できる。但し、SATAデバイスの接続無しは、未知のSATAデバイスが接続される場合を含む。また、デバイス判断部は、この3つの状態に、SATAデバイスの探索前(本フローチャートの実行前)という状態を加え、合計4つの状態(4段階)で、SATA I/F205、206を管理できる。
また、デバイス判断部は、SATA I/F(接続ポート)205、206のうち所定の接続ポートがSATAデバイスの探索前の状態にあるとき、さらに、その所定の接続ポートについてSATAデバイスの探索を行う。そして、デバイス判断部は、所定の接続ポートの状態を、SATAデバイスの接続無し、ブリッジの接続有り、及び記憶装置の接続有りのいずれにあるかを判断する。
従って、SATAホストにSATAデバイスが未接続であるか、又は未知のSATAデバイスが接続される場合、CPU201は、第1のブリッジ200が未接続モードにあると判断できる。また、CPU201は、例えば、第1のブリッジ200が未接続モードにあることを把握し続けるため、例えば、未接続モードにあることを示す2ビットデータ“00”をROM202又はRAM203に記憶する(S404)。
さらに、CPU201は、第1のブリッジ200が未接続モードにあることをメインコントローラ100に通知する。この通知は、例えば、SATA規格のRegister Device to Host(RegDH)などを用い、SATA I/F204を経由して行うことができる(S404)。
一方、SATAホストに記憶装置(第1の記憶装置400)が接続される場合、CPU201は、第1のブリッジ200が記憶装置接続モードにあると判断できる。また、CPU201は、例えば、第1のブリッジ200が記憶装置接続モードにあることを把握し続けるため、例えば、記憶装置接続モードにあることを示す2ビットデータ“01”をROM202又はRAM203に記憶する(S405)。
さらに、CPU201は、第1のブリッジ200が記憶装置接続モードにあることをメインコントローラ100に通知する。この通知は、上述のように、例えば、SATA規格のRegDHなどを用い、SATA I/F204を経由して行うことができる(S405)。
また、SATAホストにブリッジ(第2のブリッジ300)が接続される場合、CPU201は、第1のブリッジ200がブリッジ接続モードにあると判断できる。また、CPU201は、例えば、第1のブリッジ200がブリッジ接続モードにあることを把握し続けるため、例えば、ブリッジ接続モードにあることを示す2ビットデータ“10”をROM202又はRAM203に記憶する(S406)。
さらに、CPU201は、第1のブリッジ200がブリッジ接続モードにあることをメインコントローラ100に通知する。この通知は、上述のように、例えば、SATA規格のRegDHなどを用い、SATA I/F204を経由して行うことができる(S406)。
図5のフローチャートにおいて、第1のブリッジ200が記憶装置接続モードにあると判断された場合(S405)、続けて、図6のフローチャートが実行される。図6のフローチャートは、第1のブリッジ200に接続される記憶装置(第1の記憶装置400)の種類(SSD装置又はHDD装置)を判別するためのものである。
但し、図6のフローチャートの実行は、省略してもよい。即ち、第1のブリッジ200に接続される記憶装置の種類を特定する必要がないときは、図5のフローチャートのみを実行すればよい。
まず、S501において、デバイス判断部は、第1のブリッジ200が記憶装置接続モードにあるか否かを判断する。即ち、デバイス判断部は、第1のブリッジ200に記憶装置(第1の記憶装置400)が接続される場合、S502に進む。一方、デバイス判断部は、第1のブリッジ200に記憶装置(第1の記憶装置400)が接続されない場合、S504に進む。
次に、S502において、デバイス判断部は、SATAホストにHDD装置が接続されるか否かを判断する。例えば、デバイス判断部は、第1のブリッジ200に接続可能なHDD装置の型番をROM202に予め格納しておく。この場合、デバイス判断部は、図5のS401で発行したIDENTIFY DEVICEで取得した型番(Word 27~46)を、ROM202内に予め格納した型番と比較することで、第1の記憶装置400がHDD装置か否かを判断できる。
また、デバイス判断部は、例えば、IDENTIFY DEVICEのメディア回転レート(Word 217)に基づいて、第1のブリッジ200に接続される記憶装置がHDD装置であるか否かを判断できる。例えば、デバイス判断部は、当該メディア回転レート(Word 217)がNon-rotating media(0x0001)以外の場合、第1のブリッジ200に接続される記憶装置がHDD装置であると判断できる。
但し、第1のブリッジ200に接続される記憶装置がHDD装置であるか否かの判断は、これに限定されるものではなく、種々の方法を採用することができる。
S502において、デバイス判断部は、第1のブリッジ200に接続される記憶装置がHDD装置であると判断した場合、S506に進む。一方、デバイス判断部は、第1のブリッジ200に接続される記憶装置がHDD装置でないと判断した場合、S503に進む。
次に、S503において、デバイス判断部は、SATAホストにSSD装置が接続されるか否かを判断する。第1のブリッジ200に接続される記憶装置がSSD装置であるか否かの判断は、第1のブリッジ200に接続される記憶装置がHDD装置であるか否かの判断と同様に行うことができる。
S503において、デバイス判断部は、第1のブリッジ200に接続される記憶装置がSSD装置であると判断した場合、S505に進む。一方、デバイス判断部は、第1のブリッジ200に接続される記憶装置がSSD装置でないと判断した場合、即ち、第1のブリッジ200に接続される記憶装置が未知の記憶装置である場合、S504に進む。
以上の処理により、デバイス判断部は、SATA I/F205、206の各々について、未接続モード、SSD接続モード、及びHDD接続モードを確認できる。
未接続モードの場合、CPU201は、例えば、第1のブリッジ200が未接続モードにあることを把握し続けるため、例えば、未接続モードにあることを示す2ビットデータ“00”をROM202又はRAM203に記憶する。また、CPU201は、第1のブリッジ200が未接続モードにあることをメインコントローラ100に通知する。この通知は、例えば、SATA規格のRegDHなどを用い、SATA I/F204を経由して行うことができる(S504)。
SSD接続モードの場合、CPU201は、例えば、第1のブリッジ200がSSD接続モードにあることを把握し続けるため、例えば、SSD接続モードにあることを示す2ビットデータ“11”をROM202又はRAM203に記憶する。また、CPU201は、第1のブリッジ200がSSD接続モードにあることをメインコントローラ100に通知する。この通知は、例えば、SATA規格のRegDHなどを用い、SATA I/F204を経由して行うことができる(S505)。
HDD接続モードの場合、CPU201は、例えば、第1のブリッジ200がHDD接続モードにあることを把握し続けるため、例えば、HDD接続モードにあることを示す2ビットデータ“01”をROM202又はRAM203に記憶する。また、CPU201は、第1のブリッジ200がHDD接続モードにあることをメインコントローラ100に通知する。この通知は、例えば、SATA規格のRegDHなどを用い、SATA I/F204を経由して行うことができる(S506)。
・ 第2のブリッジ300の動作
第2のブリッジ300においても、第1のブリッジ200と同様に、CPU1001内のデバイス判断部により、図5及び図6のフローチャートが実行される。
まず、S401~S403において、デバイス判断部は、第2のブリッジ300にSATAデバイスが接続されるか否か、及び第2のブリッジ300にSATAデバイスが接続される場合には、当該SATAデバイスの種類が何であるかを判断する。
まず、S401において、デバイス判断部は、SATAホストにSATAデバイスが接続されるか否かを判断する。SATAホストにSATAデバイスが接続されない場合、S404に進む。一方、SATAホストにSATAデバイスが接続される場合、S402に進む。尚、S401は、第1のブリッジ200の場合と同様に、省略しても構わない。
次に、S402において、デバイス判断部は、SATAホストにブリッジが接続されるか否かを判断する。SATAホストにブリッジが接続されない場合、S403に進む。一方、SATAホストにブリッジが接続される場合、S406に進む。
次に、S403において、デバイス判断部は、SATAホストに記憶装置が接続されるか否かを判断する。SATAホストに記憶装置が接続されない場合、S404に進む。一方、SATAホストに記憶装置が接続される場合、S405に進む。
以上の処理により、デバイス判断部は、SATA I/F1005、1006の各々について、SATAデバイスの接続無し、ブリッジの接続有り、及び記憶装置(第2及び第3の記憶装置401、402)の接続有りの3つの状態を確認できる。但し、第1のブリッジ200の場合と同様に、SATAデバイスの接続無しは、未知のSATAデバイスが接続される場合を含む。また、デバイス判断部は、この3つの状態に、SATAデバイスの探索前(本フローチャートの実行前)という状態を加え、合計4つの状態(4段階)で、SATA I/F1005、1006を管理してもよい。
そして、CPU1001は、第2のブリッジ300が未接続モードにあることを把握し続けるため、例えば、未接続モードにあることを示す2ビットデータ“00”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300が未接続モードにあることをメインコントローラ100に通知する(S404)。
また、CPU1001は、第2のブリッジ300が記憶装置接続モードにあることを把握し続けるため、例えば、記憶装置接続モードにあることを示す2ビットデータ“01”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300が記憶装置接続モードにあることをメインコントローラ100に通知する(S405)。
さらに、CPU1001は、第2のブリッジ300がブリッジ接続モードにあることを把握し続けるため、例えば、ブリッジ接続モードにあることを示す2ビットデータ“10”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300がブリッジ接続モードにあることをメインコントローラ100に通知する(S406)。
図5のフローチャートにおいて、第2のブリッジ300が記憶装置接続モードにあると判断された場合(S405)、第1のブリッジ200の場合と同様に、続けて、図6のフローチャートを実行してもよい。
まず、S501において、デバイス判断部は、第2のブリッジ300が記憶装置接続モードにあるか否かを判断する。即ち、デバイス判断部は、第2のブリッジ300に記憶装置(第2及び第3の記憶装置401,402)が接続される場合、S502に進む。一方、デバイス判断部は、第2のブリッジ300に記憶装置が接続されない場合、S504に進む。
次に、S502において、デバイス判断部は、SATAホストにHDD装置が接続されるか否かを判断する。デバイス判断部は、第2のブリッジ300に接続される記憶装置がHDD装置であると判断した場合、S506に進む。一方、デバイス判断部は、第2のブリッジ300に接続される記憶装置がHDD装置でないと判断した場合、S503に進む。
次に、S503において、デバイス判断部は、SATAホストにSSD装置が接続されるか否かを判断する。デバイス判断部は、第2のブリッジ300に接続される記憶装置がSSD装置であると判断した場合、S505に進む。一方、デバイス判断部は、第2のブリッジ300に接続される記憶装置がSSD装置でないと判断した場合、即ち、第2のブリッジ300に接続される記憶装置が未知の記憶装置である場合、S504に進む。
以上の処理により、デバイス判断部は、SATA I/F1005、1006の各々について、未接続モード、SSD接続モード、及びHDD接続モードを確認できる。
未接続モードの場合、CPU1001は、第2のブリッジ300が未接続モードにあることを把握し続けるため、例えば、未接続モードにあることを示す2ビットデータ“00”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300が未接続モードにあることをメインコントローラ100に通知する(S504)。
SSD接続モードの場合、CPU1001は、第2のブリッジ300がSSD接続モードにあることを把握し続けるため、例えば、SSD接続モードにあることを示す2ビットデータ“11”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300がSSD接続モードにあることをメインコントローラ100に通知する(S505)。
HDD接続モードの場合、CPU1001は、第2のブリッジ300がHDD接続モードにあることを把握し続けるため、例えば、HDD接続モードにあることを示す2ビットデータ“01”をROM1002又はRAM1003に記憶する。また、CPU1001は、第2のブリッジ300がHDD接続モードにあることをメインコントローラ100に通知する(S506)。
図7は、CPU201、1001内のコマンド処理部の動作を示す。
このフローチャートは、CPU201、1001上で動作するプログラムにより実行され、当該プログラムは、RAM203、1003、ROM202、1002、又は、第1乃至第3の記憶装置400~402のいずれかに記憶される。
また、本フローチャートは、第1及び第2のブリッジ200、300が初期化されるとき、メインコントローラ100がSATAデバイスにアクセスするときなど、上述の図5及び図6のフローチャートに続けて実行することが望ましい。但し、本フローチャートは、これに限定されるものではなく、例えば、上述の図5及び図6のフローチャートに並行して、又は当該フローチャートの実行後、一定期間を空けて実行してもよい。
・ 第1のブリッジ200の動作
まず、S601において、コマンド処理部は、メインコントローラ100からのコマンドを受信したか否かを判断する。メインコントローラ100からコマンドを受信していない場合、当該コマンドを受信するまで、S601を繰り返す。当該コマンドを受信したか否かの確認は、一定期間毎に行うのが望ましい。
一方、メインコントローラ100からコマンドを受信した場合、S602に進む。S602において、コマンド処理部は、S601で受信したコマンドが拡張ATAコマンドであるか否かを判断する。当該受信したコマンドが拡張ATAコマンドでない場合、即ち標準ATAコマンドである場合、又は当該受信したコマンドが拡張ATAコマンドであるが実行不可能な場合、S609に進む。当該受信したコマンドが拡張ATAコマンドであり、かつ実行可能な場合、S603に進む。
S603において、コマンド処理部は、S601で受信した拡張ATAコマンドが第1のブリッジ200で実行可能であり、かつ第1のブリッジ200の内部にアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが第1のブリッジ200で実行可能でないか、又は第1のブリッジ200の内部にアクセスするコマンドでない場合、S604に進む。当該拡張ATAコマンドが第1のブリッジ200で実行可能であり、かつ第1のブリッジ200の内部にアクセスするコマンドである場合、S606に進む。
S604において、コマンド処理部は、S601で受信した拡張ATAコマンドが第1の記憶装置400にアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが第1の記憶装置400にアクセスするコマンドでない場合、S605に進む。当該拡張ATAコマンドが第1の記憶装置400にアクセスするコマンドである場合、即ち第1の記憶装置400で実行不可能なコマンドである場合、S607に進む。
S605において、コマンド処理部は、S601で受信した拡張ATAコマンドがSATA I/F206に接続される第2のブリッジ300にアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが第2のブリッジ300にアクセスするコマンドでない場合、又は当該拡張ATAコマンドが第2のブリッジ300で実行可能でない場合、S607に進む。当該拡張ATAコマンドが第2のブリッジ300にアクセスするコマンドであり、かつ第2のブリッジ300で実行可能である場合、S608に進む。
S606において、コマンド処理部は、S601で受信した拡張ATAコマンドを第1のブリッジ200の内部で処理する。即ち、CPU201は、当該拡張ATAコマンドを解釈し、SATA I/F204、205、206のレジスタに対してデータの読み出し/書き込みを行う、又は第1のブリッジ200を認証するなどの動作を行う。
S607は、S601で受信した拡張ATAコマンドが第1及び第2のブリッジ200、300で処理できず、かつ第1乃至第3の記憶装置400、401、402でも処理できない場合に行われるステップである。即ち、S607において、コマンド処理部は、実行不可能な拡張ATAコマンドを受信すると、当該拡張ATAコマンドをマスクする(エラー処理)。従って、CPU201は、第2のブリッジ300又は第1の記憶装置400に当該拡張ATAコマンドを送信せず、メインコントローラ100にアボートエラーを通知する。
尚、S601で受信した拡張ATAコマンドが実行可能か又は実行不可能かは、例えば、ROM202又はRAM203内に予め記憶された実行可能なコマンドのリストに基づいて判断される。これについては後述する。
S608において、コマンド処理部は、S601で受信した拡張ATAコマンドをSATA I/F206経由で、第2のブリッジ300に送信する。また、S609において、コマンド処理部は、S601で受信した標準ATAコマンドをSATA I/F205、206経由で、第1の記憶装置400又は第2のブリッジ300に送信する。
・ 第2のブリッジ300の動作
第2のブリッジ300においても、第1のブリッジ200と同様に、CPU1001内のコマンド処理部により、図7のフローチャートが実行される。
まず、S601において、コマンド処理部は、メインコントローラ100から、第1のブリッジ200経由で、コマンドを受信したか否かを判断する。メインコントローラ100からコマンドを受信していない場合、当該コマンドを受信するまで、S601を繰り返す。当該コマンドを受信したか否かの確認は、第1のブリッジ200と同様に、一定期間毎に行うのが望ましい。
一方、メインコントローラ100からコマンドを受信した場合、S602に進む。S602において、コマンド処理部は、S601で受信したコマンドが拡張ATAコマンドであるか否かを判断する。当該受信したコマンドが拡張ATAコマンドでない場合、又は当該受信したコマンドが拡張ATAコマンドであるが実行不可能な場合、S609に進む。当該受信したコマンドが拡張ATAコマンドであり、かつ実行可能な場合、S603に進む。
S603において、コマンド処理部は、S601で受信した拡張ATAコマンドが第2のブリッジ300で実行可能であり、かつ第2のブリッジ300の内部にアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが第2のブリッジ300で実行可能でないか、又は第2のブリッジ300の内部にアクセスするコマンドでない場合、S604に進む。当該拡張ATAコマンドが第2のブリッジ300で実行可能であり、かつ第2のブリッジ300の内部にアクセスするコマンドである場合、S606に進む。
S604において、コマンド処理部は、S601で受信した拡張ATAコマンドが第2又は第3の記憶装置401、402にアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが第2又は第3の記憶装置401、402にアクセスするコマンドでない場合、S605に進む。当該拡張ATAコマンドが第2及び第3の記憶装置401、402にアクセスするコマンドである場合、即ち第2及び第3の記憶装置401、402で実行不可能なコマンドである場合、S607に進む。
S605において、コマンド処理部は、S601で受信した拡張ATAコマンドが第2のブリッジ300のSATA I/F(図示せず)に接続される他のブリッジにアクセスするコマンドであるか否かを判断する。当該拡張ATAコマンドが当該他のブリッジにアクセスするコマンドでない場合、又は当該拡張ATAコマンドが当該他のブリッジで実行可能でない場合、S607に進む。当該拡張ATAコマンドが当該他のブリッジにアクセスするコマンドであり、かつ当該他のブリッジで実行可能である場合、S608に進む。
S606において、コマンド処理部は、S601で受信した拡張ATAコマンドを第2のブリッジ300の内部で処理する。即ち、CPU1001は、当該拡張ATAコマンドを解釈し、SATA I/F1004、1005、1006のレジスタに対してデータの読み出し/書き込みを行う、又は第2のブリッジ300を認証するなどの動作を行う。
S607は、S601で受信した拡張ATAコマンドが第2のブリッジ300及び当該他のブリッジで処理できず、かつ第2及び第3の記憶装置401、402でも処理できない場合に行われるステップである。即ち、S607において、コマンド処理部は、実行不可能な拡張ATAコマンドを受信すると、当該拡張ATAコマンドをマスクする(エラー処理)。従って、CPU1001は、当該他のブリッジ、又は第2及び第3の記憶装置401、402に当該拡張ATAコマンドを送信せず、第1のブリッジ200経由で、メインコントローラ100にアボートエラーを通知する。
尚、S601で受信した拡張ATAコマンドが実行可能か又は実行不可能かは、第1のブリッジ200と同様に、例えば、ROM1002又はRAM1003内に予め記憶された実行可能なコマンドのリストに基づいて判断される。これについては後述する。
S608において、コマンド処理部は、S601で受信した拡張ATAコマンドをSATA I/F(図示せず)経由で、当該他のブリッジに送信する。また、S609において、コマンド処理部は、S601で受信した標準ATAコマンドをSATA I/F1005、1006経由で、第2又は第3の記憶装置401、402に送信する。
図8は、コマンド処理時の状態遷移図を示す。
第1及び第2のブリッジ200、300の動作モードは、大きく分けて「通常ステート」と、「バイパスステート」と、「内部動作ステート」と、を備える。第1及び第2のブリッジ200、300をいずれの動作モードにて動作させるかは、CPU201、1001がROM202、1002、又はRAM203、1003内に記憶されたプログラムを実行することにより判断する。
第1及び第2のブリッジ200、300に電源が投入されると、第1及び第2のブリッジ200、300は、まず、通常ステートS702に設定される。通常ステートS702は、第2のブリッジ300、又は第1乃至第3の記憶装置400、401、402に対するアクセスを行うステートである。
SATAコントローラ110からのコマンドに対して、第1及び第2のブリッジ200、300は、自らが当該コマンドを実行可能か否か、及び自らに接続される第1乃至第3の記憶装置400、401、402が当該コマンドを実行可能か、を判断する。例えば、第1及び第2のブリッジ200、300は、後述するように、図9及び図10で指定されるコマンド以外は、実行不可能なコマンドとして、第1乃至第3の記憶装置400、401、402に送信しない。
SATAコントローラ110からのコマンドが第1及び第2のブリッジ200、300、又は第1乃至第3の記憶装置400、401、402にて実行可能であるか否かの判断は、例えば、RAM203、1003内に記憶された参照データに基づき行われる。即ち、第1及び第2のブリッジ200、300は、SATAコントローラ110からのコマンドをSATA I/F204、1004にて受信し、かつCPU201、1001にて認識する。CPU201、1001は、当該コマンドをRAM203、1003内の参照データと比較することで、当該判断を行う。
CPU201、1001は、当該コマンドを実行可能であると判断したら、SATA I/F205、206を設定し、かつ第1乃至第3の記憶装置400、401、402に当該コマンドを送信する。
第1及び第2のブリッジ200、300は、レジスタアクセスコマンド(「PIO READ」タイプのコマンド)を受け取ると、PIOデータ転送を開始し、通常ステートS702からバイパスステートS703に移行する。そして、第1及び第2のブリッジ200、300は、メインコントローラ100へのPIOデータ送信がを完了した後、バイパスステートS703から通常ステートS702に移行する。
また、第1及び第2のブリッジ200、300は、データの読み出し/書き込みを示すDMA転送タイプのコマンドを受け取ると、DMAデータ転送を開始し、通常ステートS702からバイパスステートS703に移行する。そして、第1及び第2のブリッジ200、300は、メインコントローラ100へのDMAデータ転送が完了した後、バイパスステートS703から通常ステートS702に移行する。
図9は、拡張コマンドの例を示す。
ここに示す拡張コマンドは、第1及び第2のブリッジ200、300が実行可能な拡張コマンドの例である。即ち、ここに示す拡張コマンドは、通常のHDDアクセスで使用されるATAコマンドとは異なり、第1及び第2のブリッジ200、300のみが実行可能なコマンドである。これらのコマンドリストは、実行可能な拡張コマンドとして、RAM203、1003、又はROM202、1002内に記憶される。
コマンド名801は、実行可能なコマンドの名称を示す。タイプ802は、アクセスの種類を示す。例えば、「Non Data」タイプは、データ転送を伴わないアクセスを意味し、例えば、ステータスの確認/遮断モードから通常モードへの移行などで使用される。「PIO data-out」タイプ、及び「PIO data-in」タイプは、データの読み出し/書き込みを伴うアクセスを意味し、例えば、バージョン情報の取得、後述する認証のチャレンジなどで使用される。
以下、拡張コマンドの例を説明する。
803は、SELECT PORTコマンドであり、SATA I/F205及びSATA IF206のいずれか一方を指定するコマンドである。即ち、SELECT PORTコマンドは、対象となるコマンド名とSATA I/Fとを対応付ける。
例えば、SELECT PORTコマンドでSATA I/F205を指定した場合を考える。この場合、その指定直後に、拡張コマンドがメインコントローラ100から第1又は第2のブリッジ200、300に発行されると、第1又は第2のブリッジ200、300は、SATA I/F205に対してコマンドを発行する。一方、SELECT PORTコマンドが発行されていない場合、ミラーリングのホスト側となるSATA I/F205、206にコマンドを発行する。
但し、SATA I/F205、206を指定する方法は、上述のようなコマンドを用いる方法に限定されるものではない。即ち、SATA I/F205、206を指定する方法は、それ以外の方法、例えば、SATAのFIS(Frame Information Structure)のPM Portビットを用いる方法などを使用できる。
804は、TO CASCADEコマンドであり、後段のブリッジに対する拡張コマンドであることを示す。例えば、第1のブリッジ200は、TO CASCADEコマンドを受信すると、そのコマンドの次のコマンドの実行を行わず、当該次のコマンドを第2のブリッジ300に送信する。これは、判断の対象となるコマンドのうち、その直前にTO CASCADEコマンドが存在しないコマンドについては、S603でYesと判断され、第1のブリッジ200の内部で実行されることを意味する。
図10は、標準コマンドの例を示す。
メインコントローラ100から第1乃至第3の記憶装置400,401、402に転送可能なコマンドは、例えば、図10に示す標準コマンドに限定される。ここに示すコマンドのリストは、ATAコマンドとして、RAM203、1003、又はROM202、1002、及び、ROM102又はDRAM103内に記憶される。
コマンド名901は、実行可能なコマンドの名称を示す。タイプ902は、アクセスの種類を示す。「Non-Data」転送タイプは、データ転送を伴わないアクセスを意味する。「PIO data-in」転送タイプは、データの読み出しを伴うアクセスを意味する。「DMA data-in」及び「DMA data-out」転送タイプは、DMAを用いたデータの読み出し/書き込みを伴うアクセスを意味する。
尚、「PIO data-in」転送タイプは、メインコントローラ100内のDRAM103と第1乃至第3の記憶装置400、401、402との間のデータ転送を、メインコントローラ100内のCPU101の管理の下で行う。一方、「DMA data-in」及び「DMA data-out」転送タイプは、これらの間のデータ転送を、メインコントローラ100内のCPU101を介さずに行う。
ここで、図9及び図10を、図7のフローチャート及び図8の状態遷移図に関連付けて説明する。メインコントローラ100からコマンドが発行されると、コマンド処理部は、第1及び第2のブリッジ200、300の内部でコマンドを一旦保持する(S601)。また、コマンド処理部は、当該コマンドが、第2のブリッジ300、又は第1乃至第3の記憶装置400、401、402にて実行可能であるか否かを判断する(S604、S605)。
そして、コマンド処理部は、第2のブリッジ300にて実行可能なコマンド(図9に示すコマンド)を第2のブリッジ300に送信する(S608)。また、コマンド処理部は、第1乃至第3の記憶装置400、401、402にて実行可能なコマンド(図10に示すコマンド)を第2のブリッジ300又は第1の記憶装置400に送信する(S609)。
ここで、実行不可能であると判断されたコマンド(図9及び図10に示すコマンド以外のコマンド)は、エラーと判断される。即ち、コマンド処理部は、当該コマンドを第2のブリッジ300又は第1の記憶装置400に送信することなく、アボートエラーをメインコントローラ100に通知する(S607)。尚、アボートエラーは、例えば、SATA I/F204のATAタスクファイルレジスタのStatusレジスタのERRビット=1、かつErrorレジスタのABRTビット=1で、メインコントローラ100に通知される。
(第2の実施例)
上述の第1の実施例は、第1及び第2のブリッジ200、300がSSD制御機能、及びミラーリング機能を有する場合を例に説明した。しかし、本発明は、これに限定されるものではなく、第1及び第2のブリッジ200、300に他の機能を追加してもよいことは言うまでもない。そこで、第2の実施例は、第1及び第2のブリッジ200、300が暗号化機能及び復号化機能を有する場合を例に説明する。
図11は、第1のブリッジの詳細構成図を示す。
CPU201は、認証の制御、送受信データの暗号化及び復号化の制御、第1のブリッジ200のシステム制御、演算処理、ATAコマンド処理などを行い、かつ第1乃至第3の記憶装置400、401、402に対するコマンド処理などを行う。
ROM202は、CPU201の起動プログラム、暗号化・復号化プログラム、暗号化及び復号化を含む各種モードの設定値のデータ、暗号鍵情報などを記憶する。RAM203は、CPU201で実行する制御プログラムを記憶する。また、RAM203は、暗号化及び復号化に関する処理を含む一時的なワークエリアとしても使用される。尚、SATA I/F204、205、206は、第1の実施例と同様なので、ここでの詳細な説明を省略する。
207は、暗号器であり、認証後、SATA I/F204により受信した入力データを暗号化し、かつ暗号化されたデータ(暗号データ)を生成する。暗号データは、SATA I/F205、206に転送される。208は、復号器であり、認証後、SATA I/F205、206により受信した暗号データを復号化し、かつ復号化されたデータ(復号データ)を生成する。復号データは、SATA I/F204に転送される。209は、認証機能であり、メインコントローラ100と第1のブリッジ200との間で認証を行う際に使用される。
図12は、第2のブリッジの詳細構成図を示す。
以下では、第2のブリッジ300の要素が第1のブリッジ200の要素と同じであることを前提とするが、第1の実施例の場合と同様に、これに限定されるものではない。第2のブリッジ300は、第1のブリッジ200内に存在しない要素を含んでもよいし、逆に、第1のブリッジ200は、第2のブリッジ300内に存在しない要素を含んでもよい。
CPU1401は、認証の制御、送受信データの暗号化及び復号化の制御、第2のブリッジ300のシステム制御、演算処理、ATAコマンド処理などを行い、かつ第2及び第3の記憶装置401、402に対するコマンド処理などを行う。
ROM1402は、CPU1401の起動プログラム、暗号化・復号化プログラム、暗号化及び復号化を含む各種モードの設定値のデータ、暗号鍵情報などを記憶する。RAM1403は、CPU1401で実行する制御プログラムを記憶する。また、RAM1403は、暗号化及び復号化に関する処理を含む一時的なワークエリアとしても使用される。尚、SATA I/F1404、1405、1406は、第1の実施例と同様なので、ここでの詳細な説明を省略する。
1407は、暗号器であり、認証後、SATA I/F1404により受信した入力データを暗号化し、かつ暗号化されたデータ(暗号データ)を生成する。暗号データは、SATA I/F1405、1406に転送される。1408は、復号器であり、認証後、SATA I/F1405、1406により受信した暗号データを復号化し、かつ復号化されたデータ(復号データ)を生成する。復号データは、SATA I/F1404に転送される。1409は、認証機能であり、メインコントローラ100と第2のブリッジ300との間で認証を行う際に使用される。
図13は、CPU201、1401内のコマンド処理部の動作を示す。
このフローチャートは、CPU201、1401上で動作するプログラムにより実行され、当該プログラムは、RAM203、1403、ROM202、1402、又は、第1乃至第3の記憶装置400~402のいずれかに記憶される。
また、本フローチャートは、第1及び第2のブリッジ200、300が初期化されるとき、メインコントローラ100がSATAデバイスにアクセスするときなど、上述の図5及び図6のフローチャートに続けて実行することが望ましい。但し、本フローチャートは、これに限定されるものではなく、例えば、上述の図5及び図6のフローチャートに並行して、又は当該フローチャートの実行後、一定期間を空けて実行してもよい。
・ 第1のブリッジ200の動作
まず、S1201において、コマンド処理部は、メインコントローラ100からのコマンドを受信したか否かを判断する。メインコントローラ100からコマンドを受信していない場合、当該コマンドを受信するまで、S1201を繰り返す。当該コマンドを受信したか否かの確認は、一定期間毎に行うのが望ましい。
一方、メインコントローラ100からコマンドを受信した場合、S1202に進む。S1202において、コマンド処理部は、S1201で受信したコマンドが図14のコマンドリストに記載されるか否かを判断する。尚、図14のコマンドリストの詳細については、後述する。当該受信したコマンドが図14のコマンドリストに記載されてない場合、即ち、実行可能なコマンドでない場合、S1207に進む。当該受信したコマンドが図14のコマンドリストに記載される場合、即ち、実行可能なコマンドである場合、S1203に進む。
S1203において、コマンド処理部は、S1201で受信したコマンドが第1のブリッジ200の内部にアクセスするコマンドであるか否かを判断する。当該コマンドが第1のブリッジ200の内部にアクセスするコマンドでない場合、S1204に進む。当該コマンドが第1のブリッジ200の内部にアクセスするコマンドである場合、S1206に進む。
S1204において、コマンド処理部は、S1201で受信したコマンドが第1の記憶装置400にアクセスするコマンドであるか否かを判断する。当該コマンドが第1の記憶装置400にアクセスするコマンドでない場合、S1205に進む。当該コマンドが第1の記憶装置400にアクセスするコマンドである場合、S1209に進む。
S1205において、コマンド処理部は、S1201で受信したコマンドがSATA I/F206に接続される第2のブリッジ300にアクセスするコマンドであるか否かを判断する。当該コマンドが第2のブリッジ300にアクセスするコマンドでない場合、S1207に進む。当該コマンドが第2のブリッジ300にアクセスするコマンドである場合、S1208に進む。
S1206において、コマンド処理部は、S1201で受信したコマンドを第1のブリッジ200の内部で処理する。即ち、CPU201は、当該コマンドを解釈し、SATA I/F204、205、206のレジスタに対してデータの読み出し/書き込みを行う、又は第1のブリッジ200を認証するなどの動作を行う。
S1207は、S1201で受信したコマンドが第1及び第2のブリッジ200、300で処理できず、かつ第1乃至第3の記憶装置400、401、402でも処理できない場合に行われるステップである。即ち、S1207において、コマンド処理部は、実行不可能なコマンドを受信すると、当該コマンドをマスクする(エラー処理)。従って、CPU201は、第2のブリッジ300又は第1の記憶装置400に当該コマンドを送信せず、メインコントローラ100にアボートエラーを通知する。
S1208において、コマンド処理部は、S1201で受信したコマンドをSATA I/F206経由で、第2のブリッジ300に送信する。また、S1209において、コマンド処理部は、S1201で受信したコマンドをSATA I/F205、206経由で、第1の記憶装置400又は第2のブリッジ300に送信する。
・ 第2のブリッジ300の動作
第2のブリッジ300においても、第1のブリッジ200と同様に、CPU1401内のコマンド処理部により、図13のフローチャートが実行される。
まず、S1201において、コマンド処理部は、メインコントローラ100から、第1のブリッジ200経由で、コマンドを受信したか否かを判断する。メインコントローラ100からコマンドを受信していない場合、当該コマンドを受信するまで、S1201を繰り返す。当該コマンドを受信したか否かの確認は、第1のブリッジ200と同様に、一定期間毎に行うのが望ましい。
一方、メインコントローラ100からコマンドを受信した場合、S1202に進む。S1202において、コマンド処理部は、S1201で受信したコマンドが図14のコマンドリストに記載されるか否かを判断する。当該受信したコマンドが図14のコマンドリストに記載されてない場合、即ち、実行可能なコマンドでない場合、S1207に進む。当該受信したコマンドが図14のコマンドリストに記載される場合、即ち、実行可能なコマンドである場合、S1203に進む。
S1203において、コマンド処理部は、S1201で受信したコマンドが第2のブリッジ300の内部にアクセスするコマンドであるか否かを判断する。当該コマンドが第2のブリッジ300の内部にアクセスするコマンドでない場合、S1204に進む。当該コマンドが第2のブリッジ300の内部にアクセスするコマンドである場合、S1206に進む。
S1204において、コマンド処理部は、S1201で受信したコマンドが第2又は第3の記憶装置401、402にアクセスするコマンドであるか否かを判断する。当該コマンドが第2又は第3の記憶装置401、402にアクセスするコマンドでない場合、S1205に進む。当該コマンドが第2及び第3の記憶装置401、402にアクセスするコマンドである場合、S1209に進む。
S1205において、コマンド処理部は、S1201で受信したコマンドが第2のブリッジ300のSATA I/F(図示せず)に接続される他のブリッジにアクセスするコマンドであるか否かを判断する。当該コマンドが当該他のブリッジにアクセスするコマンドでない場合、S1207に進む。当該コマンドが当該他のブリッジにアクセスするコマンドである場合、S1208に進む。
S1206において、コマンド処理部は、S1201で受信したコマンドを第2のブリッジ300の内部で処理する。即ち、CPU1401は、当該コマンドを解釈し、SATA I/F1404、1405、1406のレジスタに対してデータの読み出し/書き込みを行う、又は第2のブリッジ300を認証するなどの動作を行う。
S1207は、S1201で受信したコマンドが第2のブリッジ300及び当該他のブリッジで処理できず、かつ第2及び第3の記憶装置401、402でも処理できない場合に行われるステップである。即ち、S1207において、コマンド処理部は、実行不可能なコマンドを受信すると、当該コマンドをマスクする(エラー処理)。従って、CPU1401は、当該他のブリッジ、又は第2及び第3の記憶装置401、402に当該コマンドを送信せず、第1のブリッジ200経由で、メインコントローラ100にアボートエラーを通知する。
S1208において、コマンド処理部は、S1201で受信したコマンドをSATA I/F(図示せず)経由で、当該他のブリッジに送信する。また、S1209において、コマンド処理部は、S1201で受信したコマンドをSATA I/F1405、1406経由で、第2又は第3の記憶装置401、402に送信する。
図14は、コマンドリストの例を示す。
ここに示すコマンドリストは、第1及び第2のブリッジ200、300、又は第1乃至第3の記憶装置400,401、402で実行可能なコマンドのリストである。既に述べたように、同図のコマンドリストは、予めRAM203、ROM202などに記憶される。そして、メインコントローラ100からのコマンドが実行可能であるか否かの判断は、CPU201、1401内のコマンド処理部が当該コマンドとコマンドリストとを比較することにより行われる。
1301は、コマンド受信時の動作ステートである。1302は、コマンドの行先(処理先)がブリッジ内部であることを示す。例えば、第1のブリッジ200が図13のコマンドリストを備える場合、1302は、コマンドの行先(処理先)が第1のブリッジ200であることを意味する。また、第2のブリッジ300が図13を用いる場合、コマンドの行先(処理先)が第2のブリッジ300が図13のコマンドリストを備える場合、1302は、コマンドの行先(処理先)が第2のブリッジ300であることを意味する。
1303は、コマンドの行先が、SATA I/F(SATAホスト)に接続されるデバイス、即ち、SATAホストの接続先であることを示す。例えば、第1のブリッジ200が図13のコマンドリストを備える場合、1303は、コマンドの行先(処理先)がSATA IF205、206の接続先であることを意味する。また、第2のブリッジ300が図13を用いる場合、コマンドの行先(処理先)がSATA IF1405、1406の接続先であることを意味する。
尚、1303は、例えば、図5のS404、S405、及びS406において、デバイス判断部が認識かつ記憶したデバイスを示し、かつ図6のS504、S505、及びS506において、デバイス判断部が認識かつ記憶したデバイスを示す。
コマンド処理部は、1301、1302、及び1303に基づき、SATAホスト(接続ポート)毎に、実行可能なコマンドを判断する。ここで、同図では、ATAコマンド(標準コマンド)と拡張コマンドの2つのリストを示すが、これに限定されるものではなく、どちらか一方のみを用いてリストを形成しても構わない。
(比較例)
図15は、比較例のストレージシステムの構成図を示す。
フラッシュメモリデバイスを備えるSSD(ソリッド・ステート・ドライブ)装置は、不揮発性記憶装置の代表格であるHDD(ハード・ディスク・ドライブ)装置と比較して、2倍以上の高速動作が可能である。しかし、SSD装置は、データ書き換え回数に対する耐性が低いという特徴を有する。
この比較例では、この問題を解消するため、情報処理装置、例えば、印刷装置を、HDD装置とSSD装置の両方を搭載するハイブリッド構成とする。そして、印刷データの処理過程でのページ単位書き込みに必要なデータサイズが所定の閾値以下の場合に、HDD装置を使用して当該データを記憶する。また、当該データサイズが所定の閾値を超える場合には、SSD装置を使用して当該データを記憶する。即ち、HDD装置の処理スピードで十分な処理は、HDD装置を利用し、HDD装置の処理スピードでは不十分な高速処理については、SSD装置を利用する。これにより、SSD装置の欠点であるデータ書き換え回数を実質的に減らし、ストレージシステム全体の寿命を延ばす。
図15は、比較例のストレージシステムの構成図を示す。
このストレージシステムは、MFP全体を制御するメインコントローラ100と、データを記憶する第1及び第2の記憶装置400、401と、これらの記憶装置に対してデータ送受信を実行するブリッジ200´と、を備える。
第1の記憶装置400は、例えば、SSD装置であり、第2の記憶装置401は、例えば、HDD装置である。第1の記憶装置400は、高速なアクセス速度が要求されるデータを記憶する。第2の記憶装置401は、高速なアクセス速度が要求されない、例えば、起動プログラム、ユーザデータなどを記憶する。このような構成の場合、アクセス速度が異なるこれら第1及び第2の記憶装置400、401を用いてミラーリングを実質的に行えず、結果として、データの信頼性が確保できない問題が生じる。
これに対し、第1及び第2の実施例で説明したストレージシステムによれば、図1に示すように、第1のブリッジ200に第2のブリッジ300をカスケード接続する。そして、高速なアクセス速度が要求されるデータは、第1のブリッジ200に接続される第1の記憶装置400内に記憶される。また、高速なアクセス速度が要求されないデータは、第2のブリッジ300に接続される第2及び第3の記憶装置401、402内に記憶される。
即ち、ミラーリングは、第2のブリッジ300に接続される第2及び第3の記憶装置401、402を用いて行えるため、データの信頼性を向上できる。しかも、高速なアクセス速度が要求されるデータは、第1の記憶装置400内に記憶可能なため、ミラーリング機能と高速なアクセス速度とを両立することができる。
尚、比較例では、ブリッジ200´は、拡張コマンドをSATA I/Fに発行しないので、図1に示すように、複数のブリッジをカスケード接続できない。上述の第1及び第2の実施例では、第1のブリッジ200が拡張コマンドをSATA I/Fに発行する種々の工夫について提案する。従って、第1及び第2の実施例では、第1及び第2のブリッジ200、300をカスケード接続し、ミラーリング機能と高速なアクセス速度とを両立することができる。
(その他の実施形態)
本発明は、記憶装置又は外部ブリッジ装置からコマンドを受信し、当該コマンドを記憶装置又は外部ブリッジ装置とは別のデバイスに対して自ブリッジ装置を介して転送するコマンド転送部を備える記憶制御システムに適用可能である。この場合、記憶制御システムは、転送先となる別のデバイスとして外部ブリッジ装置とは別のブリッジ装置が自ブリッジ装置に対して装着されているか否かを問い合わせるコマンドを発行するコマンド発行部を備える。そして、転送先となる別のデバイスとして別のブリッジ装置が自ブリッジ装置に装着されていない場合には、自ブリッジ装置は、上流のデバイス(記憶装置又は外部ブリッジ装置)から受信したコマンドを別のデバイスへに転送しない処理を行う。このような記憶制御システムにおいても、上述の実施形態と同様の効果を得ることができる。
本発明は、上述の1つ以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム/装置に供給し、そのシステム/装置のコンピュータにおける1つ以上のプロセッサが該プログラムを実行する場合にも適用可能である。また、本発明は、上述の1つ以上の機能を所定の回路(例えば、ASIC)によって実現することも可能である。
(むすび)
以上、説明したように、本発明によれば、ブリッジに記憶装置以外のデバイスを接続可能とすると共に、後段のデバイスの種類に応じて当該デバイスに送信可能なコマンドを変更することで、ミラーリング機能と高速なアクセス速度とを両立することができる。
本発明は、上述の実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
100 メインコントローラ
110 SATAコントローラ
200 第1のブリッジ
300 第2のブリッジ
201 CPU
400 第1の記憶装置
401 第2の記憶装置
402 第3の記憶装置

Claims (14)

  1. 複数のストレージが接続されたストレージシステムであって、
    メインコントローラと通信する第1ブリッジと、
    前記第1ブリッジと通信可能な第2ブリッジと、
    前記第1ブリッジと通信可能な第1記憶装置と、
    前記第2ブリッジと通信可能な第2記憶装置および第3記憶装置と、を備え、
    前記第1ブリッジは、コントローラを有し、
    前記コントローラは、
    前記メインコントローラから受け付けたコマンドの宛先が前記第2ブリッジであることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第2ブリッジに送信し、
    前記メインコントローラから受け付けたコマンドが、前記第1記憶装置に対応するコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信し、
    前記メインコントローラから受け付けたコマンドが、前記第1記憶装置に対応しないコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信しない
    ことを特徴とするストレージシステム。
  2. 前記コントローラは、
    前記メインコントローラから受け付けたコマンドが、前記第1記憶装置に対応しないコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信せず、前記メインコントローラにエラー通知を送信することを特徴とする請求項1に記載のストレージシステム。
  3. 前記コントローラは、前記メインコントローラから受け付けたコマンドが、前記第1記憶装置に対応しないコマンドであり且つ前記コマンドの宛先が前記第1記憶装置であることに基づいて、前記受け付けたコマンドに対応するコマンドを前記第1記憶装置および前記第2ブリッジに送信しないことを特徴とする請求項1または2に記載のストレージシステム。
  4. 前記メインコントローラから受け付けたコマンドの宛先が前記第1ブリッジに送信されたコマンドである場合、前記第1ブリッジは、前記受け付けたコマンドに基づく処理を実行することを特徴とする請求項1に記載のストレージシステム。
  5. 前記コントローラは、
    前記メインコントローラからの入力データに基づいて暗号データを生成し、
    前記第2ブリッジまたは前記第1記憶装置からの暗号データに基づき復号データを生成することを特徴とする請求項1乃至4のいずれか1項に記載のストレージシステム。
  6. 前記第1記憶装置に対応しないコマンドが暗号化または復号化に関するコマンドである場合、前記コントローラが前記受け付けたコマンドに基づく処理を実行することを特徴とする請求項5に記載のストレージシステム。
  7. 前記第1記憶装置に対応するコマンドが前記第1記憶装置にアクセスする標準コマンドである場合に、前記コントローラは前記受け付けたコマンドに対応するコマンドを前記第1記憶装置に送信することを特徴とする請求項1乃至6のいずれか1項に記載のストレージシステム。
  8. 前記第2ブリッジは、前記第2記憶装置及び前記第3記憶装置に対するミラーリングを行うミラーコントローラを有することを特徴とする請求項1乃至7のいずれか1項に記載のストレージシステム。
  9. 前記第1記憶装置に対応しないコマンドが前記ミラーリングに関するコマンドである場合に、前記コントローラは、前記受け付けたコマンドに対応するコマンドを前記第2ブリッジに送信することを特徴とする請求項8に記載のストレージシステム。
  10. 前記メインコントローラ、前記第1ブリッジ、及び前記第2ブリッジは、直列接続されることを特徴とする請求項1乃至9のいずれか1項に記載のストレージシステム。
  11. 前記第1記憶装置はSSDであり、前記第2記憶装置および前記第3記憶装置はHDDであることを特徴とする請求項1乃至10のいずれか1項に記載のストレージシステム。
  12. 前記第1ブリッジは、複数の接続ポートを備え、
    前記コントローラは、各接続ポートの状態を、デバイスの探索前、前記第2ブリッジの接続有り、前記第1記憶装置の接続有り、及びデバイスの接続無し、の4つの段階で管理することを特徴とする請求項1乃至11のいずれか1項に記載のストレージシステム。
  13. 前記複数の接続ポートのうち所定の接続ポートの状態が前記デバイスの探索前である場合に、前記コントローラは、前記所定の接続ポートの状態が前記第2ブリッジの接続有り、前記第1記憶装置の接続有り、及び前記デバイスの接続無し、のいずれにあるかを判断することを特徴とする請求項12に記載のストレージシステム。
  14. 前記複数の接続ポートの状態が前記第1記憶装置の接続有り及び前記デバイスの接続無しの何れかであり、且つ、前記受け付けたコマンドが前記第2ブリッジにアクセスするコマンドである場合に、前記コントローラは、前記受け付けたコマンドを送信しないことを特徴とする請求項13に記載のストレージシステム。
JP2018096344A 2018-05-18 2018-05-18 ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム Active JP7179489B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018096344A JP7179489B2 (ja) 2018-05-18 2018-05-18 ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム
US16/401,656 US11216402B2 (en) 2018-05-18 2019-05-02 Storage system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018096344A JP7179489B2 (ja) 2018-05-18 2018-05-18 ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム

Publications (3)

Publication Number Publication Date
JP2019200709A JP2019200709A (ja) 2019-11-21
JP2019200709A5 JP2019200709A5 (ja) 2021-07-26
JP7179489B2 true JP7179489B2 (ja) 2022-11-29

Family

ID=68532586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018096344A Active JP7179489B2 (ja) 2018-05-18 2018-05-18 ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム

Country Status (2)

Country Link
US (1) US11216402B2 (ja)
JP (1) JP7179489B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636826B1 (en) * 2021-11-12 2023-04-25 Getac Technology Corporation Electronic device with connector supporting multiple connection standards and update method thereof

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008242872A (ja) 2007-03-28 2008-10-09 Hitachi Ltd ストレージシステム
JP2009187483A (ja) 2008-02-08 2009-08-20 Hitachi Ltd ストレージサブシステム及びこれの制御方法
JP2012073304A (ja) 2010-09-28 2012-04-12 Tomoegawa Paper Co Ltd 電子写真用トナー
US20130138851A1 (en) 2011-11-30 2013-05-30 Lsi Corporation Method and apparatus for expander-based data duplication
US20140229652A1 (en) 2013-02-12 2014-08-14 Lsi Corporation Methods and structure for fast context switching among a plurality of expanders in a serial attached scsi domain
US20180032267A1 (en) 2016-07-29 2018-02-01 Western Digital Technologies Inc. Extensible storage system controller
JP2018055472A (ja) 2016-09-29 2018-04-05 キヤノン株式会社 情報処理装置、デバイス、情報処理方法及びプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US20030051110A1 (en) * 2001-09-10 2003-03-13 Gaspard Walter A. Self mirroring disk drive
US6880025B2 (en) * 2001-12-27 2005-04-12 Koninklijke Philips Electronics N.V. Efficient timeout message management in IEEE 1394 bridged serial bus network
US7299331B2 (en) * 2003-01-21 2007-11-20 Hewlett-Packard Development Company, L.P. Method and apparatus for adding main memory in computer systems operating with mirrored main memory
KR100553348B1 (ko) * 2004-05-31 2006-02-20 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
US20060114918A1 (en) * 2004-11-09 2006-06-01 Junichi Ikeda Data transfer system, data transfer method, and image apparatus system
TW200705273A (en) * 2005-07-26 2007-02-01 Mitac Technology Corp Method instantly initializing and executing a computer program by using a high-speed data access memory to load kernel program of operating system
US8656487B2 (en) * 2005-09-23 2014-02-18 Intel Corporation System and method for filtering write requests to selected output ports
JP4611901B2 (ja) * 2006-01-16 2011-01-12 株式会社ソニー・コンピュータエンタテインメント 信号伝送方法、ブリッジユニット、および情報処理装置
JP4829639B2 (ja) 2006-02-24 2011-12-07 キヤノン株式会社 データ処理装置およびデータ処理方法
JP2008090375A (ja) * 2006-09-29 2008-04-17 Hitachi Ltd 割込み制御システム、およびこれを利用した記憶制御システム
US7835373B2 (en) * 2007-03-30 2010-11-16 International Business Machines Corporation Method and apparatus for buffer linking in bridged networks
JP5399570B2 (ja) * 2010-11-29 2014-01-29 株式会社日立製作所 計算機システム、それに使用されるスイッチ及びパケット転送制御方法
JP5966243B2 (ja) * 2010-12-20 2016-08-10 富士通株式会社 ストレージ装置及びストレージ装置の制御方法
WO2013140459A1 (en) * 2012-03-23 2013-09-26 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
US9756097B2 (en) * 2013-06-24 2017-09-05 Cisco Technology, Inc. Non-DSG mechanisms for aligning client devices with their multicast data flows in a DOCSIS network environment
US9645954B2 (en) * 2014-06-05 2017-05-09 Lenovo (Singapore) Pte. Ltd. Embedded microcontroller and buses

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008242872A (ja) 2007-03-28 2008-10-09 Hitachi Ltd ストレージシステム
JP2009187483A (ja) 2008-02-08 2009-08-20 Hitachi Ltd ストレージサブシステム及びこれの制御方法
JP2012073304A (ja) 2010-09-28 2012-04-12 Tomoegawa Paper Co Ltd 電子写真用トナー
US20130138851A1 (en) 2011-11-30 2013-05-30 Lsi Corporation Method and apparatus for expander-based data duplication
US20140229652A1 (en) 2013-02-12 2014-08-14 Lsi Corporation Methods and structure for fast context switching among a plurality of expanders in a serial attached scsi domain
US20180032267A1 (en) 2016-07-29 2018-02-01 Western Digital Technologies Inc. Extensible storage system controller
JP2018055472A (ja) 2016-09-29 2018-04-05 キヤノン株式会社 情報処理装置、デバイス、情報処理方法及びプログラム

Also Published As

Publication number Publication date
US11216402B2 (en) 2022-01-04
JP2019200709A (ja) 2019-11-21
US20190354501A1 (en) 2019-11-21

Similar Documents

Publication Publication Date Title
US20240078188A1 (en) Direct host access to storage device memory space
US8839359B2 (en) Data processing device and data processing method
US11720283B2 (en) Coherent access to persistent memory region range
US8789137B2 (en) Data processing device
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
TWI620093B (zh) 用於保全電腦大容量儲存資料的方法和裝置
US11354454B2 (en) Apparatus and method of detecting potential security violations of direct access non-volatile memory device
US8635379B2 (en) Data storage device and method of operating the same
JP2006190275A (ja) システム管理の遮断を克服するための方法
US8402284B2 (en) Symbiotic storage devices
JP7179489B2 (ja) ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム
US11934542B2 (en) Methods and apparatus for offloading encryption
US20220283714A1 (en) Storage device having encryption
US7900028B2 (en) Method for initializing bus device
JP2012252653A (ja) 情報処理装置及びその制御方法
US20240184899A1 (en) Methods and apparatus for offloading encryption
JP5263574B2 (ja) データ処理装置及びデータ消去方法
JP2005346426A (ja) データ共有ディスク装置
JP2022071543A (ja) 制御装置および制御装置の制御方法
CN114968855A (zh) 对持久性存储区域范围的一致访问
JP5359309B2 (ja) 電子機器
KR100937715B1 (ko) Usb 허브 장치 및 이를 이용한 usb 저장장치 통합관리 방법
JP4981981B2 (ja) データ処理装置およびデータ処理方法
JP2001043136A (ja) データ保護装置及びその保護方法
JP2004178508A (ja) データ記録再生装置及びデータ記録再生方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220816

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220930

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221116

R151 Written notification of patent or utility model registration

Ref document number: 7179489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151