シリアル汎用入出力(SGPIO) は、ホストバスアダプタ(HBA) とバックプレーン間で使用される 4 信号 (または 4 線) のバスです。4 つの信号のうち、3 つは HBA によって駆動され、1 つはバックプレーンによって駆動されます。通常、HBA は、サーバー、デスクトップ、ラック、またはワークステーション コンピュータ内部にあるストレージ コントローラで、ハードディスク ドライブまたはソリッドステート ドライブとインターフェースしてデータを保存および取得します。これは、汎用入出力(GPIO) の概念の拡張とみなされます。– SGPIO 仕様は、Small Form Factor CommitteeによってSFF-8485規格で維持されています。国際点滅パターン解釈は、 SGPIO 信号がディスク アレイおよびストレージ バックプレーン上の点滅する発光ダイオード(LED)にどのように解釈されるかを示しています。
SGPIOは、当時バックプレーンメーカーであったAmerican Megatrends Inc.とLSI-Logicとの技術協力により2004年に開発されました。その後、SFF委員会によって仕様SFF-8485として公開されました。

SGPIO信号は4つの電気信号で構成され、通常はホストバスアダプタ(HBA)から供給されます。iPassコネクタ(通常はSFF-8087またはSFF-8484)は、HBAとハードドライブ間のSAS/SATA電気接続と、4つのSGPIO信号の両方を伝送します。

バックプレーンとは、コネクタと電源回路を備えた回路基板で、ハードドライブが接続されます。バックプレーンには複数のスロットがあり、それぞれのスロットにハードドライブを装着できます。通常、バックプレーンにはLEDが搭載されており、その色と動作によってスロットの状態を示します。一般的に、スロットのLEDは特定の色を発したり、点滅パターンを変えたりして、現在の状態を示します。
多くのハードウェアベンダーは独自のLED点滅パターンを定義していますが、SGPIOの解釈とLED点滅パターンに関する共通規格はIBPI仕様に記載されています。
バックプレーンでは、ベンダーは通常、スロットごとに 2 個または 3 個の LED を使用します 。どちらの実装でも、緑色の LED は存在および/またはアクティビティを示します 。スロットごとに 2 つの LED を備えたバックプレーンでは、2 番目の LED はステータスを示しますが、3 つの LED を備えたバックプレーンでは、2 番目と 3 番目の LED は位置特定と障害を示します。
SGPIOバスは4本の信号線で構成され、イニシエータと呼ばれるHBAから始まり、ターゲットと呼ばれるバックプレーンで終わります。バックプレーン(またはターゲット)が存在しない場合でも、HBAはシステムに悪影響を与えることなくバスを駆動できます。バックプレーンが存在する場合は、4本目のワイヤを使用してHBAと通信できます。
SGPIOバスはオープンコレクタバスであり 、HBAとバックプレーンに2.0kΩのプルアップ抵抗が配置されています。他のオープンコレクタバスと同様に、バス上のデバイスがオープンコレクタトランジスタまたはオープンドレインFETを使用してラインをグランド(GND)にプルアップすることで情報が転送されます。
SGPIOバスにはイニシエータによって駆動される専用のクロックラインがあり(最大クロックレートは100kHz )、多くの実装ではより低速なもの(通常は48kHz )が使用されています。
このラインはクロックと同期しており、新しいデータフレームの開始を示すために使用されます。新しいSGPIOフレームは、SLoadが少なくとも5クロックサイクル低レベルであった後、クロックの立ち上がりエッジで高レベルになることで示されます。スタートコンディション後の4つの立ち下がりクロックエッジは、 HBAからバックプレーンに4ビットの値を伝送するために使用されます。この値の定義は独自仕様であり、システムベンダーによって異なります。
この回線は、HBAからバックプレーンへ3ビットのデータを伝送します。最初のビットは通常、アクティビティ情報、2番目のビットはロケート情報、3番目のビットは障害情報を表します。最初のビットの値が低い場合はアクティビティなし、高い場合はアクティビティありを示します。
このラインはバックプレーンで使用され、バックプレーンの状態をHBAに示します。最初のビットがハイになっている場合は、通常、ドライブが存在することを示します。続く2つのビットは通常使用されず、ローに駆動されます。バックプレーンが接続されていない場合、このラインの3つのビットすべてがハイになるため、HBAはSDataInの2番目または3番目のビットがローに駆動されることで、バックプレーンの存在を検出できます。
SDataInとSdataOutは、最後のドライブに到達するまで、ドライブごとに3クロックずつ繰り返され、その後サイクルが再び開始されます。
HBAやストレージコントローラのベンダーによって、SGPIOバスの実装方法には違いがあります。ケーブルの抜き差し後にバックプレーン上のLEDを素早く更新できる連続的なデータストリームを送信するベンダーもあれば、LEDパターンを更新する必要がある場合にのみデータを送信するベンダーもあります。
SGPIOおよびSGPIO仕様は、 LSI、Intel、Adaptec、Nvidia、Broadcom、Marvell Technology Group、PMC-Sierraといった主要なHBAおよびストレージコントローラベンダーの製品で広く採用され、実装されています。SASおよびSATAドライブをサポートする製品のほとんどは、この規格に対応しています。
SGPIOの仕様では、SClock、SLoad、SDataOutが64ms間ハイレベルになった時点で 、ターゲットはすべてのインジケータをオフにするよう規定されています。しかし実際には、すべてのベンダーがこれを一貫して遵守しているわけではありません。また、一部のベンダーの実装では、クロックが断続的に停止したり、サイクル中またはサイクル間に停止したりする場合があります。さらに、ベンダー間では、サイクル終了後のクロックの状態も、やや非現実的な違いとなっています。
この仕様の背後にある考え方は、バックプレーン上で低コストのCPLDまたはマイクロコントローラを使用してLEDを駆動できるようにすることでした。実際には、ベンダー間でタイミングとビットの解釈にばらつきがあることが判明しており、そのため単純なCPLDは、1つのベンダーの1つの製品で徹底的にテストされた特定の実装でのみ機能します。マイクロコントローラの方がこの目的に適していますが、4ビットSGPIOインターフェースのカスタムバスは実装されていません。100kHzのビット操作でGPIOを使用して4ビットラインをサンプリングすることは、LEDや他の機能を同時に処理しながら多くの低コストのマイクロコントローラで処理するには遅すぎます。ビットストリームの長さはHBAまたはストレージコントローラによって異なります。一部のベンダーは目的のドライブに到達するとビットストリームを停止しますが、他のベンダーは最後までクロックします。一部のSASエキスパンダのビットストリームは、108(36×3)ビットにもなる場合があります。
すべてのHBAおよびストレージコントローラベンダー間の互換性を保証する最も安全な実装方法は、 ASICを使用することです。具体的には、マイクロコントローラコアとハードウェアSGPIOインターフェースの組み合わせです。このコンセプトは、 MG9071、MG9072、MG9077、およびMG9082という名前の一連のバックプレーンコントローラチップで実装されました。
これらのチップは1つまたは2つのSGPIOストリームを受信し、それに応じてLEDを駆動します。AMIの最新チップであるMG9077は、プルアップ抵抗とプルダウン抵抗によって16種類のSGPIOバス構成に対応し、それに応じてLEDを駆動するように構成できます。AMIからこれらのチップが発売されて以来、NEC、日立、スーパーマイクロ、IBM、サン・マイクロシステムズなどの主要OEMは、さまざまなHBAベンダーやオンボードコントローラチップからSGPIOストリームを受信し、あらかじめ決められた点滅パターンでLEDを安定して駆動するために、これらのチップをバックプレーンに使用しています。