JP2009065547A - 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 - Google Patents
半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 Download PDFInfo
- Publication number
- JP2009065547A JP2009065547A JP2007233103A JP2007233103A JP2009065547A JP 2009065547 A JP2009065547 A JP 2009065547A JP 2007233103 A JP2007233103 A JP 2007233103A JP 2007233103 A JP2007233103 A JP 2007233103A JP 2009065547 A JP2009065547 A JP 2009065547A
- Authority
- JP
- Japan
- Prior art keywords
- integrated circuit
- scale integrated
- logical block
- block
- logic
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2005—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2007—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
- G06F11/201—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Microcomputers (AREA)
Abstract
【解決課題】第1の大規模集積回路動作中に論理ブロックの不良を検出しても、停止することなく動作を継続する。
【解決手段】半導体集積回路装置は、複数の1の論理ブロックを有する第1の大規模集積回路と、第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、第1の大規模集積回路の動作中に第1の論理ブロックの不良を検出した場合に、前第2の論理ブロックに不良を検出した第1の論理ブロックと対応するメモリに保存されたデータを書き込み、不良を検出した第1の論理ブロックの代替として第2の論理ブロックを使用する制御を行なう制御部とを備える。
【選択図】図1
【解決手段】半導体集積回路装置は、複数の1の論理ブロックを有する第1の大規模集積回路と、第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、第1の大規模集積回路の動作中に第1の論理ブロックの不良を検出した場合に、前第2の論理ブロックに不良を検出した第1の論理ブロックと対応するメモリに保存されたデータを書き込み、不良を検出した第1の論理ブロックの代替として第2の論理ブロックを使用する制御を行なう制御部とを備える。
【選択図】図1
Description
本発明は、半導体集積回路装置及びストレージ装置に関し、特に大規模集積回路に不具合が生じた場合に書換え可能な大規模集積回路を使用することで正常な装置動作を実現する半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置に適用しても好適なものである。
近年、半導体技術の向上によりLSI(Large Scale Integration circuit)またはASIC(Application Specific Integrated Circuit)と呼ばれる半導体集積回路の製造プロセスの微細化による集積度向上・高速化・高性能化が進んでいる。ASICは一度製造してしまうと、仕様変更や論理回路にバグがあったとしても修正することができず、新たな論理回路を用いてASICを再製する必要がある。特に近年はプロセスの微細化によりASICの開発費用および開発に要する期間が増加しており、再製に伴うコストが膨大になっている。
この問題を解決するため、FPGA(Field Programmable Gate Array)とASICを併用することでASICの再製を不要とする技術が知られている。この技術では、ASICを構成する論理ブロックの1つにバグがあった場合や、仕様変更により論理を変更する必要がある場合に、該当論理ブロックをFPGAに実装して使用することでASICを再製することなくバグ修正や仕様変更に対応することを可能としている(例えば、特許文献1参照)。
また、別の技術としてASICに搭載された自己診断機能によりASICの不良を検出し、不良となった部分をFPGAで置き換えることによりASICを交換しなくても動作可能となるものもある。
特開2001−177058号公報
従来技術では、FPGAで置き換える論理ブロックは固定されている。例えば、バグのあるブロックや、仕様変更により修正となったブロックをFPGAで置き換える場合、置き換え対象となる論理ブロックは既知であり、事前にFPGAに実装した上で使用され、ASIC内の該当ブロックは使用されない。
また、自己診断機能を用いる場合でも、ASICが動作していないとき、例えば電源起動時などに自己診断を行い不良となった論理ブロックをFPGAで置き換えるものであり、置き換え対象となる論理ブロックはASIC動作中には変更されない。
近年、半導体集積回路の製造プロセスの微細化により、製造時にASICに付着した微小なゴミなどが不良の要因となりえる。プロセスの微細化によりASIC内部のトランジスタや配線の集積度が向上しており、従来のプロセスでは問題とならなかった微小なゴミなどでもASICの不良となる場合がある。
また、ASIC不良の中には、当初は正常に動作しているがしばらく通電していることによりASIC内部の配線ショートや断線を引き起こし、不良が発生する場合もある。このような経年劣化不良を自己診断機能のみで検出するのは困難である。例えば自己診断機能を実施した際は不良には至っていないが、その直後に不良に至る可能性がある。この場合自己診断機能の結果は正常となるが、実際には不良が存在していることとなる。定期的に自己診断を実施することで経年劣化を検出することは可能であるが、より信頼性を高めるためには頻繁に自己診断を実施する必要がある。しかしながら、ASICの自己診断を行うには、ASICは通常の処理を行うことができず、一旦通常動作を止めて自己診断機能を有効にする必要がある。さらには、通常動作を止める際、自己診断後に再度継続動作ができるよう、必要な情報を保存しておく必要がある。
従って、動作中に頻繁に自己診断を行うとASICの性能劣化の要因となる。例えばストレージ装置に搭載されるASICは主にデータ転送を行っており、データ転送中に自己診断を行うと性能劣化、つまり転送速度が低下する。その結果、ストレージ装置全体のパフォーマンスが低下することになる。ストレージ装置においては、データ転送速度は重要であり、データ転送速度が低下するのは致命的である。つまり、ASICの動作を止めて頻繁に自己診断を行うのは現実的ではない。
また、自己診断機能は万全ではないため、実際には不良があるにもかかわらず不良を検出できない場合がある。例えば特定のタイミングでデータ転送を行った場合や、特定のパターンを転送する場合にのみ不良が発生するなどが考えられる。自己診断機能が、前述のタイミングやパターンで転送を行わない限り不良を検出することはできない。
つまり、従来技術では、ASICに不良がある場合でも事前に検出できない場合が有り、その場合には半導体集積回路装置を一旦停止させ、搭載しているASICを良品と交換する必要があった。
本発明の目的は、第1の大規模集積回路装置の動作中に論理ブロックの不良を検出しても、停止することなく動作を継続することができる半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置を提供することにある。
なお、後述する実施形態では、第1の大規模集積回路としてASIC、この第1の大規模集積回路と接続される書換え可能な第2の大規模集積回路としてFPGAを用いて説明しているが、これに限定されるものではなく、ASICは汎用LSI(Large Scale Integrated circuit)、FPGAはCPLD(Complex Programmable Logic Device)であっても何ら問題ない。
本発明は、半導体集積回路装置であって、複数の第1の論理ブロックを有する第1の大規模集積回路と、前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出した場合に、前記不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックに書き込み、前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用する制御を行なう制御部とを備えるものである。
この構成によると、第1の大規模集積回路の動作中に複数の第1の論理ブロックから論理ブロックの不良を検出しても、停止することなく動作を継続することができ、動作の信頼性を高めた半導体集積回路装置とすることができる。
また、第1の大規模集積回路と書換え可能な第2の大規模集積回路との接続を簡易にすることにより接続ピンを削減することができ、チップサイズやパッケージサイズの影響を抑えてサイズを小さくすることでき、コストの増加を押さえた半導体集積回路装置とすることができる。
また、本発明は、外部のホストコンピュータと情報の授受を行うための半導体集積回路装置が搭載されたチャネルアダプタボードと、
外部のディスクとデータの授受を行うための半導体集積回路装置が搭載されたディスクアダプタボードと、
前記ホストコンピュータから前記ディスクとの間で授受する情報を一時的に保持するための半導体集積回路装置が搭載されたキャッシャボードと、前記チャネルアダプタボードと前記キャッシュボードおよび前記ディスクアダプタボード間のデータ転送を制御するための半導体集積回路装置が搭載されたスイッチボードとを備えたストレージ装置であって、前記チャネルアダプタボード、前記ディスクアダプタボート、前記キャッシュボード及び前記スイッチボードの各ボードに搭載された半導体集積回路装置は、複数の第1の論理ブロックを有する第1の大規模集積回路と、前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出した場合に、その不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックに書き込み、前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用する制御を行なう制御部とを備えたものである。
外部のディスクとデータの授受を行うための半導体集積回路装置が搭載されたディスクアダプタボードと、
前記ホストコンピュータから前記ディスクとの間で授受する情報を一時的に保持するための半導体集積回路装置が搭載されたキャッシャボードと、前記チャネルアダプタボードと前記キャッシュボードおよび前記ディスクアダプタボード間のデータ転送を制御するための半導体集積回路装置が搭載されたスイッチボードとを備えたストレージ装置であって、前記チャネルアダプタボード、前記ディスクアダプタボート、前記キャッシュボード及び前記スイッチボードの各ボードに搭載された半導体集積回路装置は、複数の第1の論理ブロックを有する第1の大規模集積回路と、前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出した場合に、その不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックに書き込み、前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用する制御を行なう制御部とを備えたものである。
この構成によると、第1の大規模集積回路の動作中に複数の第1の論理ブロックから論理ブロックの不良を検出しても、停止することなく動作を継続することができ、動作の信頼性を高めたストレージ装置とすることができる。
本発明によれば、第1の大規模集積回路動作中に論理ブロックの不良を検出しても、停止することなく動作を継続することができる半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置を提供できる。
また、第1の大規模集積回路と書換え可能なる第2の大規模集積回路間の接続ピン数を削減することで、チップサイズやパッケージサイズへの影響を抑え、かつ基板設計への影響および基板コストの増加も抑える半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置を提供できる。
本発明の半導体集積回路装置は、ASIC動作中に不良を検出した場合、自動的に該当論理ブロックをFPGAに実装し使用することで、あたかも不良が発生していないかのように振舞うことのできるものである。以下、本発明の各実施形態について図面を参照して説明する。なお、以下の各実施形態においては、本発明の半導体集積回路装置に搭載される第1の大規模集積回路をASICに、書換え可能な第2の大規模集積回路をFPGAに適用した場合で説明する。
(第1の実施形態)
図1は、半導体集積回路装置であるASIC搭載基板1の構成を示す図である。ASIC搭載基板1上に、ASIC10と、CPU20、FPGA30とメモリ40が搭載されている。CPU20は、ASIC10,FPGA30と信号線51,53を介してそれぞれデータ送受信可能となるように接続されている。また、CPU20はメモリ40と信号線54を介して接続されており、CPU20はメモリ40に対してデータを送信できるように接続されている。また、メモリ40とFPGA30は信号線55を介して接続されており、メモリ40からデータをFPGA30へ送信できるように接続されている。さらに、ASIC10とFPGA30は信号線52を介してデータ送受信できるように接続されている。
図1は、半導体集積回路装置であるASIC搭載基板1の構成を示す図である。ASIC搭載基板1上に、ASIC10と、CPU20、FPGA30とメモリ40が搭載されている。CPU20は、ASIC10,FPGA30と信号線51,53を介してそれぞれデータ送受信可能となるように接続されている。また、CPU20はメモリ40と信号線54を介して接続されており、CPU20はメモリ40に対してデータを送信できるように接続されている。また、メモリ40とFPGA30は信号線55を介して接続されており、メモリ40からデータをFPGA30へ送信できるように接続されている。さらに、ASIC10とFPGA30は信号線52を介してデータ送受信できるように接続されている。
ASIC10は、第1の大規模集積回路であり、各業務等を実行するための処理を行うための回路が構成されている。CPU20は、ASIC10、FPGA30及びメモリ40を制御することにより、ASIC搭載基板1を制御する。FPGA30は、プログラミングすることができる第2の大規模集積回路であり、回路を消去して書換えることが可能である。メモリ40は、FPGA30のコンフィギュレーション情報(実装データ情報)を保存している。
なお、メモリ40は、ROMやフラッシュメモリなどFPGA30のコンフィギュレーション情報を扱えるものであれば形式は問わない。コンフィギュレーション情報は、ASIC10内の論理ブロック11A〜11Eに実装されている回路の情報を示すものである。なお、ブロックとは、設計の単位(例えば、モジュール)である。メモリ40から不良を検出した論理ブロックと対応するコンフィギュレーション情報をFPGA30に書き込むことで、FPGA30にて不良を検出した論理ブロックの機能を実現することができる。なお、メモリ40に保存されるコンフィギュレーション情報については後述する。
図2はASIC10とFPGA30の内部構成を示す図である。ASIC10は複数の論理ブロック11A、11B、11C、11D、11Eから構成されており、論理ブロック11A〜11EおよびI/F変換ブロック13Aは内部バス12により相互に接続されている。
なお、図2においては論理ブロック11A〜11Eの5個を論理ブロックとして示しているが、これは図示および説明を簡略化するために一例として記載したものである。近年は半導体集積回路の集積度が向上しており、ASICに実装する論理ブロックの規模が増大している。数十メガゲートクラスのASICでは、論理ブロックは100〜200くらいになる。内部バス12はデータ転送を行うものであり、例えばブロック11Aと11Bで必要な情報をやり取りするために用いられる。内部バス12に記載されている数字はアドレスを示しており、後述するアドレステーブル14で使用される。ASIC10とFPGA30の接続には、I/F変換ブロック13A、13Bおよび信号線52を経由して行う。I/F変換ブロック13A、13Bは内部バス12形式の信号を変換し、ASIC10とFPGA30を接続するためのインタフェースである。内部バス12で送受信される信号には大きく分けてアドレス線・データ線・コマンド線などを用いて送受信される信号がある。
これら内部バス12で送受信される信号は、例えば、1つのデータ単位でまとめてパケット化し、パケット化したデータに対してアドレスを割り当て、アドレスの先頭から順にシリアル化して送信される。図3は、内部バス12で送受信される信号をデータ単位でパケット化したデータ100の一例を示す図である。図3に示すように、データ100は、アドレス101と内容102とにより構成されている。なお、伝送の際はシリアル化せず、例えば1バイト単位でのパラレル伝送も可能であり、伝送方法は特に限定されるものではない。また、パケット化する方式についても図3は一例であり、本構成に限定されるものではない。
次に、アドレステーブル14について説明する。アドレステーブル14は、内部バス12において使用するアドレスの対応表が格納されている。図4は、アドレステーブル14の一例を示す図である。アドレステーブル14は、ブロック名欄14Aとアドレス欄14Bを有している。ブロック名欄14Aには、論理ブロック11Aから11Eのいずれが格納される。アドレス欄14Bには、ブロック名欄14Aに格納されて論理ブロックに対応する内部バス12におけるアドレスが格納される。
例えば、論理ブロック11Aには、図2に示すようにアドレス“1”が対応しているため、論理ブロック11Aが格納されているブロック名欄14Aに対応してアドレス欄14Bには、“1”が格納される。
また、例えば、論理ブロック11Bにデータを送りたい場合、アドレステーブル14を参照してアドレスは“2”となる。すなわち、内部バス12におけるアドレス“2”に対して送りたいデータが送信される。なお、図4で説明したアドレステーブル14は、一例であり、図4等で示す構成に限定されるものではない。
次に、メモリ40に保存されるコンフィギュレーション情報について説明する。図7はコンフィギュレーション情報41の一例を示す図である。図7に示すように、コンフィギュレーション情報41は、先頭アドレス42及び内容43が複数の組となって構成されている。先頭アドレス42はメモリ40に割り当てられたアドレスを示している。また、内容43は論理ブロック11A〜論理ブロック11Bの実装データが格納されている。
なお、FPGA30のデバイスの種類によってはアドレスではなくページという概念を用いる場合がある。図7を例に挙げて説明すると、論理ブロック11Aのデータはページ1、論理ブロック11Bのデータはページ2というようにページ毎に異なる論理ブロックの実装データを格納することになる。
また、ASICに搭載される論理ブロック数は100〜200程度と述べた。従って、メモリ40には、これら全ての論理ブロックの実装データを保存する必要がある。しかしながら、通常は同一構成の論理ブロックを複数使用することもあるため、100〜200の論理ブロックを全て保存する必要は無く、メモリ40に保存する必要のある論理ブロック数の実装データは30〜60程度である。
別の方法としては、マルチコンテキストFPGA(図示せず。)を使用することもある。マルチコンテキストFPGAとは、FPGAの実装データを複数用意しておき、使用する実装データを切り替えることで瞬時にFPGAの回路構成を切り替えることができるものである。
次に、CPU20に保存される論理ブロックIDとメモリアドレスの対応を示すテーブルについて説明する。図8は、このテーブル110を示す図である。このテーブル110は、不良を検出した論理ブロックのIDから、FPGA30に実装すべきデータが格納されているメモリ40上のアドレスを求めるために使用するものである。テーブル110は、論理ブロックID欄111と先頭アドレス欄112を有している。論理ブロックID欄111には、論理ブロック11A〜11EのID(全論理ブロックにユニークに割当てられた識別子)が保持される。また、先頭アドレス欄112には、論理ブロックID欄111に保持される論理ブロックIDと対応する実装データのメモリ40に格納されているアドレスを示すための先頭アドレスが保持される。
次に、ASIC10で論理ブロックの不良を検出し、FPGA30で置き換える場合の処理を説明する。図5はASIC10における当該処理を示すフローチャートであり、また、図6はCPU20における当該処理を示すフローチャートである。なお、これらの処理はASIC搭載基板1が例えば、ストレージ装置に実装され動作したときに開始される処理である。
先ず、図5におけるステップS101からS102の処理について説明する。ステップS101において、ASIC10は通常動作中にエラー有無をチェックしている。エラー有無のチェックとは、例えばデータ線に付加されているパリティのエラーや、通信相手からの応答待ちでのタイムアウト等である。なお、エラーとなったデータは破棄するなど適切な処理が行われる。ストレージ装置では、ホスト装置−ディスク間で伝送するデータ保護のため、ASIC10内部の各所にてデータ化けなど異常有無をチェックしている。従って、ストレージ装置に用いるようなASICであれば通常動作中にエラー有無をチェックすることが可能である。
ASIC10はエラーチェックを行い、全ての論理ブロックでエラーが発生していない場合は(S101:NO)、通常動作を継続する。エラーを検出した場合は(S101:YES)、ステップS102において、ASIC10は、信号線51を経由してCPU20に割り込みを発行し、エラーを通知する。
このようにエラー通知を受信すると、CPU20は図6におけるステップS201からS207の処理を実行する。ステップS201において、CPU20は割り込み有無をチェックしている。そして、CPU20は、割り込みがあった場合は(S201:YES)、ステップS202において、エラー情報の解析を行う。このとき、エラー情報は、例えばASIC10のレジスタ(図示せず。)等に保持されており、CPU20からレジスタリードを行うことで情報を取得しても良いし、別の方法としては信号線51にエラー情報用の信号線も確保しておき、信号線51を通して取得しても良い。このように、エラー情報の取得手段はどのような手法を用いても良い。また、エラー情報には、不良を検出したブロックのIDや不良の内容のような情報を含む。不良の内容は、例えば、初期不良のような製造不良、経年劣化による不良等である。
次に、ステップS203において、CPU20は、FPGA30に該当論理ブロックを実装して置き換え可能か否かを判断する。既に他の論理ブロック不良等によりFPGA30を使用している場合は論理ブロックを置き換えることができない。この場合は(S203:置換不可能)、CPU20は、ステップS207において、パス閉鎖処理などのエラー処理を実行する。このエラー処理では、ASIC10に対して、エラー処理を行い置換えが不可能な場合であっても指示する。置換不可能と判断される場合は、例えば、既にASIC10で不良が発生しており、FPGA30で不良が検出された論理ブロックを論理ブロック11Fで置き換えている場合である。
また、他の論理ブロックによりFPGA30を使用していない場合は(S203:置換可能)、CPU20は、ステップS204において、ステップS202で解析してエラー情報を元に、ASIC10のどの論理ブロックが不良になったかの解析を行う。
次に、ステップS205において、CPU20は、不良となった論理ブロックをFPGA30に実装する。
このステップS204及びS205の処理については、以下に具体的に説明する。メモリ40には、既述のようにASIC10の論理ブロック11A〜11Eのコンフィギュレーション情報が保存されている。
CPU20は、不良を検出したときにテーブル110を用いて求めた不良が検出された論理ブロックの先頭アドレスを、信号線54を通してメモリ40に送信する。
そして、CPU20は、信号線53を通して、FPGA30に実装データの読み込みを指示する。FPGA30は、指定されたメモリ40のアドレスから信号線55を通してデータを読み込み、所望の回路を実現する。
さて、FPGA30は実装データの読み込みが完了したら、信号線53を通してCPU20に完了を通知する。
次に、ステップS206において、CPU20は、ASIC10に対してFPGA30での置き換え実施とデータパスの切り替え指示を発行する。なお、CPU20は、置き換え実施とデータパスの置換指示を発行すると、ステップS201の処理に戻り、再び、割り込みが発生するまで待機状態となる。
続いて、図5に戻り、ステップS103からS106の処理について説明する。CPU20から指示を受けると、ステップS103において、ASIC10はCPU20からの指示がステップS206における置換指示又はステップS207の置換不可能の指示であるかを判断する。
CPU20からの指示が置換え可能であると判断した場合は(S103:置換可能)ASIC10は、FPGA30への切り替え処理を行う。ASIC10は、ステップS104において、データパスの切替を実施する。このデータパスの切替は、ASIC10内のアドレステーブル14を書き換えることにより実現する。
図9は、図4で示したアドレステーブル14を書き換えた例であるアドレステーブル14´示している。この例ではブロック名欄14´A欄の論理ブロック11Bに不良があった場合を示している。このため、論理ブロック11Bと対応するアドレス欄14´Bのアドレスが6(FPGA30内の論理ブロックのアドレス)になっている。このようにアドレステーブル14を書き換えることで、例えば、論理ブロック11A〜論理ブロック11Bにデータ転送を行う場合、論理ブロック11Bのアドレスは、アドレステーブル14´が参照されることによりアドレス“6”となるので、I/F変換ブロック13Aを経由してFPGA30に接続される。つまり、ASIC10内の不良が検出された論理ブロック11Bが使用されず、FPGA30に実装した論理ブロック11Fが使用されるようになる。
次に、ステップS105において、ASIC10は、データの再送処理を実行する。このとき、内部バス12に再送機能があれば、その機能を利用しても良い。内部バス12に再送機能が無い場合は、送信元の論理ブロックに対して再送要求を行う。なお、再送機能に関しては図示していない。再送されたデータは、新しいアドレステーブル14´を参照してFPGA30経由で処理され、不良が検出された論理ブロックが使用されることは無い。従って、エラー検出からFPGA30での置き換え処理までをASIC搭載基板1で自動的に行うことで、ASIC10内でエラーが発生したとしても、そのエラーを意識することなく正常処理が可能となる。
一方、CPU20からの指示が置換可能でないと判断した場合は(S103:置換不可能)、ASIC10は、ステップS106において、エラー処理を実行する。
ここで、エラー処理とは、例えば不良が検出された論理ブロックを含むデータパスを使わないようにするパス閉塞などが考えられる。
ここで、エラー処理とは、例えば不良が検出された論理ブロックを含むデータパスを使わないようにするパス閉塞などが考えられる。
この第1の実施形態によると、ASIC10の動作中に論理ブロック11A〜11Eから論理ブロックの不良を検出しても、停止することなく動作を継続することができ、動作の信頼性を高めたASIC搭載基板1とすることができる。
また、ASIC10とFPGA30を接続する信号の数を減らし、ASICやFPGAのチップサイズへの影響を最小限にし、さらに基板配線も容易とすることができる。従来技術では、FPGAで置き換える論理ブロックの信号をそのまま若しくはセレクタ経由でFPGAと接続している。セレクタを用いることで、複数の論理ブロックとFPGAを接続することが可能になるが、ASICとFPGAを接続する信号数は、最大の信号数をもつ論理ブロックに合わせる必要がある。例えばストレージ装置では高速データ伝送を行うため、ASIC内部でのデータは例えば256ビットや512ビットなど、多数のビット幅を持っている。このようなデータ信号を外部ピンにする場合、ピン数が256本若しくは512本増加する。そのため、ASICのチップサイズ増加やパッケージサイズ増加の要因となりえる。また、ASICとFPGAの間を256本若しくは512本もの配線で接続することになり、基板設計が複雑になり、ひいては基板層数の増加による基板コストアップの要因となりえる。この第1の実施形態によると、ASICとFPGA間を、I/F変換ブロック13A,13Bを介して信号線52で接続する構成により、信号数を減らすことが可能となる。
したがって、ASIC10とFPGA30間を信号線52のみで接続することにより接続ピンを削減することができ、チップサイズやパッケージサイズの影響を抑えてサイズを小さくすることでき、コストの増加を押さえたASIC搭載基板1とすることができる。
(第2の実施形態)
本発明の第2の実施形態について説明する。従来、α線や中性子線が照射されることにより、ASICに搭載されているRAMやフリップフロップが保持しているデータが化ける、例えば本来”0”を保持している素子が”1”を保持してしまうことがある。特に、近年はプロセスの微細化によりRAMやフリップフロップが小型化され、より少ないエネルギーでデータが化けてしまう可能性がある。このようなエラーはソフトエラーと呼び、ハード的な故障ではないため、仮にソフトエラーが発生しても、別の正しいデータをRAMまたはフリップフロップに書き込めば正常に動作可能である。
本発明の第2の実施形態について説明する。従来、α線や中性子線が照射されることにより、ASICに搭載されているRAMやフリップフロップが保持しているデータが化ける、例えば本来”0”を保持している素子が”1”を保持してしまうことがある。特に、近年はプロセスの微細化によりRAMやフリップフロップが小型化され、より少ないエネルギーでデータが化けてしまう可能性がある。このようなエラーはソフトエラーと呼び、ハード的な故障ではないため、仮にソフトエラーが発生しても、別の正しいデータをRAMまたはフリップフロップに書き込めば正常に動作可能である。
従って、第1の実施形態では、不良を検出した際、実際にはハードエラーではなくソフトエラーによるものだとしても、ハードエラーとしてFPGA30の論理ブロック11Fで置き換えを実施する。しかしながら、前述のようにASIC10自体の不良ではないため、この場合はFPGA30を使用する必要はなく、ASIC10のみで動作を継続することが可能である。このため、この第2の実施形態では、ソフトエラーかハードエラーであるかを判断し、ソフトエラーの場合はFPGA30でなくASIC10をそのまま使用する構成について述べる。
図10は、本発明の第2の実施形態の構成を示したものである。第1の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。第1の実施形態との違いは、ASIC10の論理ブロック11A〜11Eの内部に自己診断回路15A〜15Eを搭載していることである。自己診断回路15Aは論理ブロック11Aについて自己診断を行い、論理ブロック11Aに不良があるかどうかを判断する機能を有している。自己診断回路15B〜15Eに関しても同様である。
次に、第2の実施形態におけるASIC10で論理ブロックの不良を検出し、FPGA30で置き換える場合の処理を説明する。図11はASIC10における当該処理を示すフローチャートであり、また、図12はCPU20における当該処理を示すフローチャートである。なお、図11におけるステップS301からS306の処理はステップS101からS106と、図12におけるステップS401からS407はステップS201からS207と同じ処理であるため説明は省略し、以下では、追加された処理について説明する。
図12において、ステップS406の処理を終えた後、CPU20はステップS408において、ASIC10に自己診断の実施を指示する。
ASIC10はこの指示を受けると、ステップS307において、不良となった論理ブロックの自己診断を自己診断部15A〜15Eのいずれかを用いて行う。この時、ASIC10は通常動作しているが該当論理ブロックはFPGA30の論理ブロック11Fを代替として使用しているためASIC10内の論理ブロックは使用されていない。従って、ASIC10が動作中であっても該当ブロックの自己診断を行うことは差し支えない。この自己診断によりソフトエラーか、ハードエラーかが診断される。
ASIC10は、ステップS308において、自己診断の結果に基づいて、不良を検出したか否かについて判断する。ソフトエラーである場合は不良でないと、ハードエラーである場合は不良であると判断される。不良を検出した場合は(S308:YES)、ハードエラーであるため、ASIC10は、そのままFPGA30の論理ブロック11Fの使用を継続する。この場合は、CPU20が実行するステップS409の不良検出か否かの処理も“YES”となり、そのままFPGA30の論理ブロック11Fが使用される。
一方、自己診断の結果不良が検出されなかった場合は(S308:NO)、ソフトエラーであるため、ステップS309において、ASIC10は、FPGA30の論理ブロック11Fの使用を中止し、ASIC10の該当論理ブロックを使用する構成に戻す。
具体的には、ステップS304で切り替えたデータパスを元に戻し、FPGA30の論理ブロック11FではなくASIC10の該当論理ブロックを使用するようにする。この時、CPU20は、ステップS409でNOとなり、ステップS410において、FPGA30は不要であるので動作を停止させる。
なお、この第2の実施形態では自己診断結果によりソフトエラーか否かを判断しているが、自己診断では検出できないハードエラーの可能性もある。前述のように特定のタイミングや特定のパターンのみで発生する不良の場合は自己診断機能では検出できない可能性がある。
従って、より望ましくは例えばASIC10の各論理ブロック11A〜11Eが不良になった回数をCPU20でカウントし、一定値以上のカウント値であれば自己診断の結果は不良なしであってもFPGA30の論理ブロック11Fで置き換える構成が良い。若しくは、自己診断回路15A〜15Eは搭載せず不良となった回数のみで、FPGA30を使い続けるか、ASIC10に戻すかを判断しても良い。
この第2の実施形態によると、論理ブロック11A〜11Eそれぞれが自己診断回路15A〜15Eにより、発生したエラーがハードウェア的なものであるか、ソフトウェア的なものであるかを診断することができる。これにより、ハードウェア的なエラーである場合には、FPGA30の論理ブロック11Fをエラーが発生した論理ブロックの代替として使用し、ソフトウェア的なエラーである場合にはそのエラーが発生した論理ブロックを再度使用する制御を行なうことができ、論理ブロック11Fを有効に利用することができる。
(第3の実施形態)
次に、本発明の第3の実施形態を示す。第1、第2の実施形態では、I/F変換ブロック13A,13Bを使用する構成であるが、第3の実施形態は、これらI/F変換ブロック13A,13Bを使用しない構成である。なお、以下では、第1,第2の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
次に、本発明の第3の実施形態を示す。第1、第2の実施形態では、I/F変換ブロック13A,13Bを使用する構成であるが、第3の実施形態は、これらI/F変換ブロック13A,13Bを使用しない構成である。なお、以下では、第1,第2の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
図13は、第3の実施形態におけるASIC10とFPGA30の接続構成を示す図である。ASIC10内の内部バス12から、FPGA30内の論理ブロック11Fに直接接続している。この場合のASIC10およびCPU20の処理フローは第1,第2の実施形態と同様である。なお、図13においては、第2の実施形態で使用する自己診断回路15A〜15Eの図示は省略している。
この第3の実施形態によると、第1,第2の実施形態のようにI/F変換ブロック13A,13Bを設ける必要がなく、ASIC10とFPGA30とを接続しやすいASIC搭載基板1とすることができる。
(第4の実施形態)
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。第1〜第3の実施形態の、ASIC10の構成は図2に示すように論理ブロック11A〜11Eが内部バス12により接続されている。しかしながら、各論理ブロック11A〜11Eは、内部バス12のみに接続されているが、論理ブロック同士を接続する信号もありえる。例えばエラー検出を示す信号などは内部バス12経由で伝送を行うと時間がかかるので、論理ブロックから直接伝送したい論理ブロックに伝送することが望ましい。この第4の実施形態では、このように内部バス12以外に接続するインタフェースがある場合について説明する。なお、以下では、第1〜3の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
図14は、第4の実施形態におけるASIC10とFPGA30の接続構成を示す図である。図14に示すように、ASIC10には内部バス12以外にも論理ブロック同士を接続する信号線16A、16Bを有している。なお、図14においては説明を簡略化するためASIC10の論理ブロックの数を減らしている。
信号線16Aは論理ブロック11Aと11Bを接続しており、信号線16Bは論理ブロック11Bと11Cを接続している。この場合、内部バス12に接続される信号線は前述の通りI/F変換ブロック13Aを経由してFPGA30に接続し、残る信号線16A,16Bに関しては入出力セレクタ17を経由してFPGA30に接続する。
例えば、論理ブロック11BをFPGA30に実装して置き換える場合を説明する。この時、論理ブロック11Aから内部バス12経由で論理ブロック11Bにアクセスするためには、内部バス12からI/F変換ブロック13A、信号線52A、I/F変換ブロック13Bを経由してFPGA30内の論理ブロック11Fにアクセスする。一方、論理ブロック11Aから論理ブロック11Bに直接アクセスする場合は、論理ブロック11Aから入出力セレクタ17、信号線52Bを経由してFPGA30内の論理ブロック11Fにアクセスする。FPGA30内の論理ブロック11FからASIC10内の論理ブロック11A〜11Cにアクセスする場合も同様の経路によって成される。
この第4の実施形態によると、内部バス12を通過する信号以外の信号に対しても対応できるASIC搭載基板1とすることができる。
(第5の実施形態)
次に、本発明の第5の実施形態について説明する。この第5の実施形態は第4の実施形態の別の手段である。なお、以下では、第1〜3の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
次に、本発明の第5の実施形態について説明する。この第5の実施形態は第4の実施形態の別の手段である。なお、以下では、第1〜3の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
図15は、第5の実施形態におけるASIC10とFPGA30の接続構成を示す図である。図15に示すように、第5の実施形態では、論理ブロック間の信号もI/F変換ブロック13A経由でFPGA30と接続する。この第5の実施形態におけるI/F変換ブロック13Aで扱うパケットの構成の一例を説明する。図16は、パケットの構成例を示す図である。図3に示すパケット構成100では8バイト単位でアドレス欄101にアドレス、内容欄102にコマンドのデータを有する構成をしていた。しかしながら、この第5の実施形態のパケット構成150では、図16に示すように、アドレス欄151にアドレス、内容欄152にコマンドデータ及び論理ブロック間信号を有し、7バイト単位でアドレス、コマンドデータ、残る1バイトに論理ブロック間で伝送する信号を格納する構成となっている。なお、図16においては図示の都合上、論理ブロックアドレス間信号のデータ量が大きく示されている。
論理ブロック間で伝送する信号は前述のようにエラー検出を示す信号など、即時性を求められるものが多い。そのため、パケットの8バイト毎に1バイトの割合で論理ブロック間信号を挿入し、できるだけ速く伝送できるようにしている。
なお、図16には図示していないが、8バイト毎に論理ブロック間信号を付加する必要は無く、例えばコマンド・アドレス・データは8バイト単位としたまま、そこに1バイトの論理ブロック間信号を挿入しても良い。また、即時性を求めない信号であれば、パケットの先頭や最後に論理ブロック間信号を付加するのみでも良い。
この第5の実施形態によると、内部バス12を通過する信号以外の信号に対しても対応できるASIC搭載基板1とすることができる。
(第6の実施形態)
次に、本発明の第6の実施形態について説明する。図17は第6の実施形態におけるASIC10とFPGA30の接続構成を示す図である。なお、以下では、第1の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
次に、本発明の第6の実施形態について説明する。図17は第6の実施形態におけるASIC10とFPGA30の接続構成を示す図である。なお、以下では、第1の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
図17に示すように、ASIC10において、論理ブロック11Cが2つ搭載されている。なお、以下では説明上区別するために2つの論理ブロック11Cを、論理ブロック11C1,論理ブロック11C2と称することもあることとする。このように構成するのは信頼性を高めるために同じ処理を2つの論理ブロック11C1,11C2で行い、両論理ブロック11C1,11C2の結果が一致した場合のみに正常と判断し、結果が異なっている場合はどちらかの論理ブロック11C1,11C2に異常があると判断するものである。また、ASIC10には、I/F変換ブロック13Cが設けられているとともに説明の都合上第1の実施形態から論理ブロックの数を減らしている。FPGA30には、I/F変換ブロック13B,13D及び論理ブロック11F,11Gが配置されている。I/F変換ブロック13Bと論理ブロック11Fとは信号線56Aで接続されており、I/F変換ブロック13Dと論理ブロック11Gとは信号線56Bで接続されている。さらに、I/F変換ブロック13AとI/F変換ブロック13Bは信号線52Aで接続され、I/F変換ブロック13BとI/F変換ブロックDは信号線52Bで接続されている。
また、論理ブロック11A,11B,11C1,11C2、I/F変換ブロック13A,13Cの内部バス12におけるアドレスは、それぞれ“1”,“2,”“4”,“5”,“6”,“3”となっている。
このような構成の場合、論理ブロック11Cの処理の結果、不良と判断されても、どちらのブロックが不良なのかは判断することができない。従って、この第6の実施形態では、両方の論理ブロック11C1,11C2をFPGA30に実装し置き換える構成とする。置き換える論理ブロックが2つになるため、I/F変換ブロック13A,13Cの2つをASIC10内に搭載している。また、同様にFPGA30にもI/F変換ブロック13B,13Dを2つ搭載するとともに、論理ブロック11F,11Gを2つ搭載し、論理ブロック11C1,11C2の2つの論理ブロックを実装可能な構成としている。
次に、この第6の実施形態のアドレステーブル120とCPUに保存されるテーブル130について説明する。図18は、この第6の実施形態におけるアドレステーブル120を示している。アドレステーブル120は、ブロック名欄121とアドレス欄122を有している。ブロック名欄121に論理ブロック名が保存され、アドレス欄122にそのアドレスが保存されるのは、既述のアドレステーブル14と同様である。この第6の実施形態では、論理ブロック11Cが2つあるので、論理ブロック11Cが2つブロック名欄121に保存され、アドレス欄122にアドレス“4”、“5”が保存されている。
図19は、この第6の実施形態における論理ブロックIDとメモリアドレスの対応を示すテーブル130を示している。テーブル130は、論理ブロックID欄131と先頭アドレス欄132を有している。論理ブロック11Cはそれぞれ同じ処理を行うため、論理ブロックID欄131の“003”、“004”には、同じ先頭アドレスが保存され、同一の実装データをメモリ40から読み出せるようになっている。
次に、論理ブロック11C1,11C2の置換え処理について説明する。図20は、この置換え処理を行う際のCPU20の処理を示すフローチャートである。なお、ステップS501〜S505の処理は、図6を用いて説明したステップS201〜S204,S207の処理と同様であるため説明を省略し、以下ではステップS506〜S510の処理について説明する。また、置換え処理を行う際のASIC10の処理は、図5と同様であるため図示及び説明を省略する。
ステップS504で不良ブロックの解析が行なわれると、ステップS506において、CPU20は対象ブロックが二重化されているか否かを判断する。すなわち、不良が発生した論理ブロックが二重化されているか否かが判断される。この判断は、例えば、CPU内に保存された二重化されている論理ブロックの情報に基づいて行なわれる。なお、その情報は予めCPU20内に保存しておく。
対象ブロックが二重化されていると判断されなければ(S506:NO)、CPU20は、ステップS507において不良ブロックと対応するデータをFPGA30に実装し、ステップS508において、ASIC10へ置換え通知及びASIC10内のパス切り替え指示を行なう。これらの処理は、上記ステップS205,S206と同様である。
一方、対象ブロックが二重化されていると判断されれば(S506:YES)、CPU20は、ステップS509において、二重化されたブロックをFPGA30内に実装する。すなわち、二重化された論理ブロックと対応するメモリ40内に保存された実装データそれぞれをFPGA30内の論理ブロック11F、11Gへ書き込む。この際、テーブル130が参照され、その二重化された論理ブロックの論理ブロックIDと対応する先頭アドレスから読み出された実装データが保存される。メモリ40には、二重化された論理ブロック2つのデータがまとめて格納されており、FPGA30内の論理ブロック11F,11Gに二重化されたブロックが実装される。
続いて、ステップS510において、CPU20は、ASIC10へ置換え通知及びASIC10内のパス切り替え指示を行なう。
図21は、不良を検出したブロックが二重化されている場合(すなわち、論理ブロック11C1,11C2のいずれか不良であった場合)に、置換え処理が行われときのアドレステーブル140を示す図である。ブロック名欄141に保存された2つの論理ブロック11Cと対応するアドレス欄142のアドレスが“3”,“6”となっている。すなわち、アドレステーブル120では、論理ブロック11C1,11C2と対応するアドレス欄122のアドレスが“4”,“5”となっていたが、それらがアドレス“3”,“6”へ置き換えられている。これにより、以後の処理ではASIC搭載基板1は、FPGA30内の論理ブロック11F,11Gを論理ブロック11C1,11C2に代替して使用する。
この第6の実施形態によると、データの信頼性を高める構成を有するASIC搭載基板1にも本発明を適用することができる。
なお、FPGA30に論理ブロック11C1,11C2を2つ格納するだけの容量が無い場合は、FPGA30を2つ用い、それぞれに論理ブロック11C1,11C2を1つずつ実装するように構成しても良い。
(第7の実施形態)
次に、第7の実施形態について説明する。図22は第7の実施形態におけるFPGA30の接続構成を示す図である。なお、以下では、第1の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
次に、第7の実施形態について説明する。図22は第7の実施形態におけるFPGA30の接続構成を示す図である。なお、以下では、第1の実施形態と異なる点について説明し、同一の部分については図示及び説明を省略することとする。
この第7の実施形態では、I/F変換ブロック13内に2つのバッファ18A,18Bを設けている。また、FPGA30内に、論理ブロック11F,11Gの2つを設け、論理ブロック11Fとバッファ18A、論理ブロック11Gとバッファ18Bが信号線57A,57Bを介してそれぞれ接続されている。そして、FPGA30は、2つの論理ブロック11F,11Gを交互に使用し、2つのコマンドを並列処理するように構成されている。なお、この第7の実施形態では、論理ブロックが論理ブロック11F,11Gの2つの場合で説明するが、論理ブロックを3つ以上配置する構成としてもよい。
次に、2つの論理ブロックを交互に使用して並列処理するための処理について説明する。先ず、I/F変換ブロック13で信号線52Cより受信したデータが、バッファ18Aに格納される。そして、バッファ18Aから受け取ったデータは論理ブロック11Fにより処理される。別のデータがI/F変換ブロック13に到着したら、今度はそのデータはバッファ18Bに格納される。そして、バッファ18Bから受け取ったデータは論理ブロック11Gにより処理される。
最初のデータ、すなわち、論理ブロック11Fで処理されているデータの処理が完了されると、論理ブロック11Fで処理された内容がバッファ18Aに格納される。そして、I/F変換ブロック13を介してバッファ18Aの内容がASIC10へ送信される。
さらに、別のデータが到着したら、バッファ18Aに格納され、論理ブロック11Fにより処理される。論理ブロック11Gで処理されているデータの処理が完了されると、論理ブロック11Gで処理された内容がバッファ18Bに格納される。そして、I/F変換ブロックを介してバッファ18Bの内容がASIC10へ送信される。
この第7の実施の形態によると、複数のコマンドのデータがASIC10からFPGA30に送信されたときに、データの並列処理を実現することができるので、ASIC搭載基板1の処理を高速化できる。
また、この第7の実施形態によると、データを並列処理する構成を有するASIC搭載基板1にも本発明を適用することができる。
(第8の実施形態)
上述した各実施形態のASIC搭載基板1は、ストレージ装置に搭載することができる。図23及び図24はストレージ装置1000の主要な構成を示す図である。図23はストレージ装置1000の前面側の内部構成を示す図であり、図24はストレージ装置1000の後面側の内部構成を示す図である。
上述した各実施形態のASIC搭載基板1は、ストレージ装置に搭載することができる。図23及び図24はストレージ装置1000の主要な構成を示す図である。図23はストレージ装置1000の前面側の内部構成を示す図であり、図24はストレージ装置1000の後面側の内部構成を示す図である。
ストレージ装置1000は、HDD(Hard Disc Drive)ボックス1001、論理ユニット1002、電源部1003、バッテリ1004、ファン1005,1006を有している。
HDDボックス1001は、複数のHDDが搭載される。論理ユニット1002には、複数の導体部品を搭載した基板(ASIC搭載基板1を含む)が実装されており、ホスト装置とHDDボックス1001に搭載されるHDDとの間のデータ転送等の制御を行なう。論理ユニット1002に搭載される複数の基板は、機能毎に異なる種類の基板を複数搭載したり、同一機能をもつ基板を複数搭載することで多重化を実現する。電源部1003、バッテリ1004は、HDDボックス1001及び論理ユニット1002に電源を供給する。
次に、ストレージ装置にASIC搭載基板を搭載した構成について説明する。図25は、ASIC搭載基板1を搭載したストレージ装置1000の内部構成の一例を示す図である。
ストレージ装置1000は、ホスト装置1100,1101と接続されている。また、ディスクスアレイ装置1000内に配置される論理ユニット1002は、ホスト装置1100,1101と接続されているとともにディスクドライブ装置1600,1601と接続されている。なお、ディスクドライブ装置1600,1601は、HDDボックス1001内に搭載されたHDDを用いて構成される。論理ユニット1002は、ホスト装置1100,1101と、ディスクドライブ装置1600,1601との間に接続されており、例えば、ホスト装置1100からのライトデータをディスクドライブ装置1600に書き込み、ホスト装置1100からの指示に基づいてディスクドライブ装置1600内に保存されているデータをリードする。なお、この実施形態では、ホスト装置1100,1101、ディスクドライブ装置1600,1601のようにホスト装置、ディスクドライブ装置をそれぞれ2台ずつ配置する構成で説明しているが、これに限るものではない。
論理ユニット1002は、4種類で6つの基板が搭載されている。6つの基板は、チャネルアダプタボード1200,1210、スイッチボード1300、キャッシュボード1400、ディスクアダプタボード1500,1510である。
チャネルアダプタボード1200は、ホスト装置1100とストレージ装置1000とを接続する役割を持つボードである。チャネルアダプタボード1200には、チャネルアダプタLSI1201、CPU1202,1203、プロトコルチップ1204,1205が搭載されている。プロトコルチップ1204,1205は、ホスト装置1100とチャネルアダプタLSI1201と接続している。また、チャネルアダプタLSI1201は、CPU1202,1203とそれぞれ接続しているとともに、スイッチボード1300と接続している。
チャネルアダプタボード1210は、ホスト装置1101とストレージ装置100とを接続する役割を持つボードである。チャネルアダプタボード1210には、チャネルアダプタLSI1211、CPU1212,1213、プロトコルチップ1214,1215が搭載されている。プロトコルチップ1214,1215は、ホスト装置1101とチャネルアダプタLSI1211と接続している。また、チャネルアダプタLSI1211は、CPU1212,1213とそれぞれ接続しているとともに、スイッチボード1300と接続している。
スイッチボード1300は、チャネルアダプタボード1200,1210、キャッシュボード1400、ディスクアダプタボード1500,1510間のデータ転送を制御する役割を持つボードである。スイッチボード1300には、上記データ転送を制御するスイッチLSI1301が搭載されている。
キャッシュボード1400は、ホスト装置1100,1101からディスクドライブ装置1600,1601へのライトデータ、ディスクドライブ装置1600,1601からのリードデータを一時的に保持する役割を持つボードである。キャッシュボード1400には、上記ライトデータ及びリードデータを一時的に保持する機能を制御するキャッシュLSI1401及びデータを保持するための大容量のメモリ1402が搭載されている。キャッシュLSI1401は、スイッチLSI1301と接続している。また、メモリ1402はキャッシュLSI1401と接続している。なお、メモリ1402としては、例えば、DIMM(Double Inline Memory Module)が用いられる。
ディスクアダプタボード1500は、ディスクドライブ装置1600,1601へのデータの書き込み、又は、ディスクドライブ装置1600,1601に保存されたデータの読み出しを制御するボードである。ディスクアダプタボード1500には、ディスクアダプタLSI1501、CPU1502,1503、プロトコルチップ1504,1505が搭載されている。プロトコルチップ1504,1505は、ディスクアダプタLSI1501とディスクドライブ装置1600,1601と接続している。また、ディスクアダプタLSI1501は、CPU1502,1503とそれぞれ接続しているとともに、スイッチLSI1501と接続している。
ディスクアダプタボード1510は、ディスクドライブ装置1600,1601へのデータの書き込み、又は、ディスクドライブ装置1600,1601に保存されたデータの読み出しを制御するボードである。ディスクアダプタボード1510には、ディスクアダプタLSI1511、CPU1512,1513、プロトコルチップ1514,1515が搭載されている。プロトコルチップ1514,1515は、ディスクアダプタLSI1511とディスクドライブ装置1600,1601と接続している。また、ディスクアダプタLSI1511は、CPU1512,1513とそれぞれ接続しているとともに、スイッチLSI1501と接続している。
このようにストレージ装置1000内に搭載されたチャネルアダプタボード1200,1210、スイッチボード1300、キャッシュボード1400、ディスクアダプタボード1500,1510にそれぞれ搭載されているチャネルアダプタLSI1201,1211、スイッチLSI1301、キャッシュLSI1401、ディスクアダプタLSI1501、1511に第1から第7の実施形態で説明したASIC搭載基板1を適用する。
この第8の実施形態によると、チャネルアダプタLSI1201,1211、スイッチLSI1301、キャッシュLSI1401、ディスクアダプタLSI1501、1511が動作中に論理ブロックの不良を検出しても、停止することなく動作を継続することができ、動作の信頼性を高めたストレージ装置1000とすることができる。
(他の実施形態)
なお、以上で説明した各実施形態は本発明の一例を示すものであり、本発明に対して何ら制限的な意味を有するものではない。
なお、以上で説明した各実施形態は本発明の一例を示すものであり、本発明に対して何ら制限的な意味を有するものではない。
例えば、実施例で示した構成はASIC10とFPGA30は基板上に1つのみ搭載した構成しているが、ASICを複数搭載またはFPGAを複数搭載、さらにはASICとFPGAを複数搭載することも可能である。
別の例としては、ASIC10は内部バス12を通して論理ブロックと接続されているが、内部バス12を用いない構成でも適用可能である。さらに別の例ではASIC10、CPU20、FPGA30が同一基板1上に実装されているが、それぞれ別々の基板に搭載されており、その基板同士をコネクタ等で接続する構成でも良い。また、例えばASIC10とFPGA30を同一パッケージに搭載したマルチチップモジュール(MCM)構成であっても良い。
また、既述の上記実施形態においては、本発明を、論理ブロック11A〜11Eを有するASIC10と、ASIC10に接続するとともに論理ブロック11Fを有する書換え可能なFPGA30と、論理ブロック11A〜11Eで実行される用途を実現するためのコンフィギュレーション情報を保存するメモリ40と、ASIC10の動作中に論理ブロック11A〜11Eの不良を検出した場合に、論理ブロック11Fに不良を検出した論理ブロックと対応するメモリ40に保存されたコンフィギュレーション情報を書き込み、不良を検出した論理ブロックの代替として論理ブロック11Fを使用する制御を行なうCPU10を備えるASIC搭載基板1について適用した場合で説明したが、本発明は、既述の実施形態に限られるものではない。
さらに、既述の上記実施形態においては、本発明を、外部のホスト装置1100,1101と情報の授受を行うためのチャネルアダプタLSI1201,1201が搭載されたチャネルアダプタボード1200,1210と、外部のディスクドライブ装置1600,1601とデータの授受を行うためのディスクアダプタLSI1501,1511が搭載されたディスクアダプタボード1500と、ホスト装置1100,1101と外部のディスクドライブ装置1600,1601との間で授受する情報を一時的に保持するためのキャッシュLSI1401が搭載されたキャッシャボード1400と、チャネルアダプタボード1200,1210とキャッシュボード1400およびディスクアダプタボード1500,1510間のデータ転送を制御するためのスイッチLSI1301が搭載されたスイッチボード1300とを備えたストレージ装置1000であって、チャネルアダプタボード1200,1210、ディスクアダプタボート1500,1510、キャッシュボード140及びスイッチボード1300の各ボードに搭載されたチャネルアダプタLSI1201,1211、ディスクアダプタLSI1501,1511、キャッシュLSI1401、スイッチLSI1301は、それぞれ、論理ブロック11A〜11Eを有するASIC10と、ASIC10に接続するとともに論理ブロック11Fを有する書換え可能なFPGA30と、論理ブロック11A〜11Eで実行される用途を実現するためのコンフィギュレーション情報を保存するメモリ40と、ASIC10の動作中に論理ブロック11A〜11Eの不良を検出した場合に、論理ブロック11Fに不良を検出した論理ブロックと対応するメモリ40に保存されたコンフィギュレーション情報を書き込み、不良を検出した論理ブロックの代替として論理ブロック11Fを使用する制御を行なうCPU10を備えるストレージ装置1000について適用した場合で説明したが、本発明は、既述の実施形態に限られるものではない。
本発明は、半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置に広く適用することができる。
1…ASIC搭載基板、10…ASIC、11A〜11F…論理ブロック、12…内部バス、13A,13C…I/F変換ブロック、14,14´…アドレステーブル、20…CPU、30…FPGA、40…メモリ、1000…ディスクアレイ装置、1002…論理ユニット、1200,1210…チャネルアダプタボード、1300…スイッチボード、1400…キャッシュボード、1500,1510…ディスクアダプタボード
Claims (19)
- 半導体集積回路装置であって、
複数の第1の論理ブロックを有する第1の大規模集積回路と、
前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、
前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、
前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出した場合に、前記不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックに書き込み、前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用する制御を行なう制御部と、
を備えることを特徴とする半導体集積回路装置。 - 前記第1の大規模集積回路は、前記複数の第1の論理ブロックが内部バスにより接続されており、
前記第1の大規模集積回路及び前記第2の大規模集積回路は前記内部バスの信号とシリアルインタフェースを互いに変換するインタフェース回路を有し、
前記第1の大規模集積回路と前記第2の大規模集積回路は前記インタフェース回路を用いて接続されること、
を特徴とする請求項1記載の半導体集積回路装置。 - 前記複数の第1の論理ブロックは、前記第1の大規模集積回路の動作中に不良を検出した場合、不良の原因がハードエラーによるものか、ソフトエラーによるものかを判別可能な判別部を備えること、
を特徴とする請求項1記載の半導体集積回路装置。 - 前記第1の大規模集積回路を複数備え、
前記第2の大規模集積回路は前記複数の第1の大規模集積回路と接続し、
前記制御部は、前記複数の第1の大規模集積回路を制御するとともに、前記複数の第1の大規模集積回路のうちの1つの第1の大規模集積回路において不良を検出した場合、その不良を検出した第1の大規模集積回路の前記不良を検出した第1の論理ブロックの代替として前記第2の大規模集積回路の第2の論理ブロックを使用する制御を行なうこと、
を特徴とする請求項1に記載の半導体集積回路装置。 - 前記第2の大規模集積回路を複数備え、
前記制御部は、前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を2つ以上検出した場合に、その不良を検出した2つ以上の第1の論理ブロックと対応する前記メモリに保存されたデータを前記複数の大規集積回路の第2の論理ブロックにそれぞれに書き込むこと、
を特徴とする請求項1記載の半導体集積回路装置。 - 前記第1の大規模集積回路を複数備えるとともに前記第2の大規模集積回路を複数備え、
前記制御部は、前記複数の第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を2つ以上検出した場合に、その不良を検出した2以上の第1の論理ブロックと対応する前記メモリに保存されたデータを前記複数の大規集積回路の第2の論理ブロックそれぞれに書き込むこと、
を特徴とする請求項1記載の半導体集積回路装置。 - 前記第1の大規模集積回路の複数の第1の論理ブロックの一部を二重化し、
前記第2の大規模集積回路は前記第2の論理ブロックを複数有し、
前記制御部は、前記第1の大規模集積回路の動作中に前記二重化された第1の論理ブロックの処理結果の不一致を検出した場合に、その不一致を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックにそれぞれ書き込み、前記二重化された第1の論理ブロックの代替として前記第2の論理ブロックを使用すること、
を特徴とする請求項1記載の半導体集積回路装置。 - 前記第1の大規模集積回路はASIC(Application Specific Integrated Circuit)であり、前記第2の大規模集積回路はFPGA(Field Programmable Gate Array)であること、
を特徴とする請求項1記載の半導体集積回路装置。 - 外部のホストコンピュータと情報の授受を行うための半導体集積回路装置が搭載されたチャネルアダプタボードと、
外部のディスクとデータの授受を行うための半導体集積回路装置が搭載されたディスクアダプタボードと、
前記ホストコンピュータから前記ディスクとの間で授受する情報を一時的に保持するための半導体集積回路装置が搭載されたキャッシャボードと、
前記チャネルアダプタボードと前記キャッシュボードおよび前記ディスクアダプタボード間のデータ転送を制御するための半導体集積回路装置が搭載されたスイッチボードとを備えたストレージ装置であって、
前記チャネルアダプタボード、前記ディスクアダプタボート、前記キャッシュボード及び前記スイッチボードの各ボードに搭載された半導体集積回路装置は、
複数の1の論理ブロックを有する第1の大規模集積回路と、
前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、
前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリと、
前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出した場合に、その不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックに書き込み、前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用する制御を行なう制御部と、
を備えることを特徴とするストレージ装置。 - 前記第1の大規模集積回路は、前記複数の第1の論理ブロックが内部バスにより接続されており、
前記第1の大規模集積回路及び前記第2の大規模集積回路は前記内部バスの信号とシリアルインタフェースを互いに変換するインタフェース回路を有し、
前記第1の大規模集積回路と前記第2の大規模集積回路は前記インタフェース回路を用いて接続されること、
を特徴とする請求項9記載のストレージ装置。 - 前記複数の第1の論理ブロックは、前記第1の大規模集積回路の動作中に不良を検出した場合、不良の原因がハードエラーによるものか、ソフトエラーによるものかを判別可能な判別部を備えること、
を特徴とする請求項9記載のストレージ装置。 - 前記第1の大規模集積回路を複数備え、
前記第2の大規模集積回路は前記複数の第1の大規模集積回路と接続し、
前記制御部は、前記複数の第1の大規模集積回路を制御するとともに、前記複数の第1の大規模集積回路のうちの1つの第1の大規模集積回路において不良を検出した場合、その不良を検出した第1の大規模集積回路の前記不良を検出した第1の論理ブロックの代替として前記第2の大規模集積回路の第2の論理ブロックを使用する制御を行なうこと、
を特徴とする請求項9に記載のストレージ装置。 - 前記第2の大規模集積回路を複数備え、
前記制御部は、前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を2つ以上検出した場合に、その不良を検出した2つ以上の第1の論理ブロックと対応する前記メモリに保存されたデータを前記複数の大規集積回路の第2の論理ブロックにそれぞれに書き込むこと、
を特徴とする請求項9記載のストレージ装置。 - 前記第1の大規模集積回路を複数備えるとともに前記第2の大規模集積回路を複数備え、
前記制御部は、前記複数の第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を2つ以上検出した場合に、その不良を検出した2以上の第1の論理ブロックと対応する前記メモリに保存されたデータを前記複数の大規集積回路の第2の論理ブロックそれぞれに書き込むこと、
を特徴とする請求項9記載のストレージ装置。 - 前記第1の大規模集積回路の複数の第1の論理ブロックの一部を二重化し、
前記第2の大規模集積回路は前記第2の論理ブロックを複数有し、
前記制御部は、前記第1の大規模集積回路の動作中に前記二重化された第1の論理ブロックの処理結果の不一致を検出した場合に、その不一致を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを前記第2の論理ブロックにそれぞれ書き込み、前記二重化された第1の論理ブロックの代替として前記第2の論理ブロックを使用すること、
を特徴とする請求項9記載のストレージ装置。 - 前記第1の大規模集積回路はASIC(Application Specific Integrated Circuit)であり、前記第2の大規模集積回路はFPGA(Field Programmable Gate Array)であること、
を特徴とする請求項9記載のストレージ装置。 - 半導体集積回路装置の論理ブロック代替方法であって、
前記半導体集積回路装置は、
複数の1の論理ブロックを有する第1の大規模集積回路と、
前記第1の大規模集積回路に接続するとともに第2の論理ブロックを有する書換え可能な第2の大規模集積回路と、
前記複数の第1の論理ブロックで実行される用途を実現するためのデータを保存するメモリとを備え、
前記第1の大規模集積回路の動作中に前記第1の論理ブロックの不良を検出するステップと、
このステップで不良を検出した場合に、前第2の論理ブロックに前記不良を検出した第1の論理ブロックと対応する前記メモリに保存されたデータを書き込むステップと、
前記不良を検出した第1の論理ブロックの代替として前記第2の論理ブロックを使用するステップと、
を備えることを特徴とする半導体集積回路装置の論理ブロック代替方法。 - 前記不良を検出するステップが不良を検出した場合、不良の原因がハードエラーによるものか、ソフトエラーによるものかを判別するステップを備えること、
を特徴とする請求項17記載の半導体集積回路装置の論理ブロック代替方法。 - 前記第1の大規模集積回路はASIC(Application Specific Integrated Circuit)であり、前記第2の大規模集積回路はFPGA(Field Programmable Gate Array)であること、
を特徴とする請求項17記載の半導体集積回路装置の論理ブロック代替方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007233103A JP2009065547A (ja) | 2007-09-07 | 2007-09-07 | 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 |
US12/010,596 US7609083B2 (en) | 2007-09-07 | 2008-01-28 | Semiconductor integrated circuit device and storage apparatus having the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007233103A JP2009065547A (ja) | 2007-09-07 | 2007-09-07 | 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009065547A true JP2009065547A (ja) | 2009-03-26 |
Family
ID=40431190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007233103A Pending JP2009065547A (ja) | 2007-09-07 | 2007-09-07 | 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7609083B2 (ja) |
JP (1) | JP2009065547A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8818802B2 (en) | 2008-10-10 | 2014-08-26 | Spansion Llc | Real-time data pattern analysis system and method of operation thereof |
DE112009002426T5 (de) * | 2008-10-10 | 2011-09-29 | Richard M. Fastow | Echtzeit-Datenmuster-Analysesystem und Verfahren zu seinem Betrieb |
US8207752B2 (en) * | 2010-01-11 | 2012-06-26 | Kannan Raj | Fault-tolerant multi-chip module |
JP6011210B2 (ja) * | 2012-09-28 | 2016-10-19 | 富士通株式会社 | ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム |
US9875810B2 (en) | 2013-07-24 | 2018-01-23 | Microsoft Technology Licensing, Llc | Self-identifying memory errors |
JP6295113B2 (ja) * | 2014-03-17 | 2018-03-14 | ルネサスエレクトロニクス株式会社 | 自己診断装置及び自己診断方法 |
JP6489954B2 (ja) * | 2015-06-19 | 2019-03-27 | ルネサスエレクトロニクス株式会社 | 半導体装置及びその制御方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3365581B2 (ja) * | 1994-07-29 | 2003-01-14 | 富士通株式会社 | 自己修復機能付き情報処理装置 |
JP2001177058A (ja) | 1999-12-17 | 2001-06-29 | Minolta Co Ltd | Asicを搭載した回路基板 |
-
2007
- 2007-09-07 JP JP2007233103A patent/JP2009065547A/ja active Pending
-
2008
- 2008-01-28 US US12/010,596 patent/US7609083B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US7609083B2 (en) | 2009-10-27 |
US20090066361A1 (en) | 2009-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8140936B2 (en) | System for a combined error correction code and cyclic redundancy check code for a memory channel | |
US7770077B2 (en) | Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem | |
JP7247213B2 (ja) | デバッグコントローラ回路 | |
USRE46201E1 (en) | Method and controller for performing a sequence of commands | |
US7334070B2 (en) | Multi-channel memory architecture for daisy chained arrangements of nodes with bridging between memory channels | |
TWI242780B (en) | System and method for self-testing and repair of memory modules | |
JP5107880B2 (ja) | データ転送処理装置及び方法 | |
JP2009065547A (ja) | 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 | |
KR100640037B1 (ko) | 파일 제어 시스템 및 파일 제어 장치 | |
US7475279B2 (en) | Data storage system, data storage control device, and write error diagnosis method for disks thereof | |
US8103900B2 (en) | Implementing enhanced memory reliability using memory scrub operations | |
CN105373345B (zh) | 存储器设备和模块 | |
KR20160143940A (ko) | 저장 장치 및 그것을 내장한 메인 보드 및 그것의 자가 진단 방법 | |
KR101498452B1 (ko) | 복합 멀티-코어 및 멀티-소켓 시스템의 디버깅 | |
JP2009181425A (ja) | メモリモジュール | |
CN107807902B (zh) | 一种抗单粒子效应的fpga动态重构控制器 | |
US9110796B2 (en) | Apparatus and circuitry for memory-based collection and verification of data integrity information | |
US10831963B1 (en) | Apparatus and method of parallel architecture for NVDIMM | |
CN117420945A (zh) | 用于经由多个模式存取存储器装置的控制器和方法 | |
WO2012046343A1 (ja) | メモリモジュール冗長化方法、記憶処理装置、及びデータ処理装置 | |
US20100146224A1 (en) | Request processing device, request processing system, and access testing method | |
TW201438020A (zh) | 快閃記憶體轉接器及快閃記憶體儲存裝置 | |
JP2006338533A (ja) | Ecc回路を有するマルチレイヤバスシステム | |
JP3638773B2 (ja) | ディスクアレイ装置 | |
JP2003022222A (ja) | 情報処理装置及びその保守方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090223 |