Small Computer System Interface
Small Computer System Interface(スモールコンピュータシステムインタフェース、小型計算機システムインタフェース)、略してSCSI (スカジー)は、主に周辺機器とコンピュータなどのハードウェア間のデータのやりとりを行うインタフェース規格の一つである。SCSIを使用可能にするインタフェース装置をSCSIインタフェースと呼ぶ。ANSI(米国規格協会)によって規格化されている。
パソコンやワークステーションと周辺機器との接続インタフェースとして、シュガートのSASI (Shugart Associates System Interface) を拡張し、ANSIによって規格化されたバス型のインタフェースである。8ビットまたは16ビットのパラレルインタフェース。Ultra SCSIではシリアル型もある。後述の大型のコネクタ・バス等は近年その役目を終えたが、SCSI規格自体は物理的な仕様のみならずデバイス間の通信プロトコルも規定している。実際に現在普及している高速規格であるATA、SATA、USB、IEEE 1394、ファイバチャネル上ではSCSIコマンドが未だにやり取りされている。
SCSIバスは、周辺機器を接続するインタフェースではあるが、コンピュータと周辺機器という、主従関係ではなく、各機器が対等の動作をすることを基本として設計されている。入出力要求を行なう要求を出す機器(イニシエータ)から実際の動作を受ける機器(ターゲット)に対して指示を行ない、その結果を返す、という形で動作する。
一般には、インタフェース1台に複数のSCSI機器を接続するものであると認識されているが、実際には複数台のパソコンで1台のディスクを共有するなどの構成も可能な仕組みになっている。すなわち、イニシエータは1つのバス上に複数の機器が存在してもよい。しかし、実際には、コンピュータがバス上の唯一のイニシエータで、各周辺機器(ディスクやテープ装置など)はターゲットとしてのみ動くのが普通である。
図中、SCSIバスから各機器のコントローラやホストバスアダプタまでの接続線をスタブと呼称し、規格上は各々の機器につき15cmまでが許容されている。また、SCSIバス上での機器の間隔は25cm以上が推奨されている。
SCSIはバス形式ではあるが、各機器を数珠つなぎで繋いでいくため、ヒナギクの花輪になぞらえ「デイジーチェーン接続」とも言われる。各機器は1つのSCSIバスに接続しなければならない。また、バスの両端には信号の反射を防ぐため、ターミネータを接続しなければならない。なお、ターミネータは、必ずしもバス終端に接続されるわけではなく、ホストバスアダプタやSCSI機器に内蔵される場合もある。
SCSIバスに接続する各機器はSCSIデバイスと呼ばれる。各々0から7(または15)までの番号で区別される。この番号のことをSCSI IDという。通常、SCSI機器は各々、明示的にSCSI IDを設定しなければならないが、SCAMという拡張仕様を用いることで、自動的に設定することも可能である。
SCSI IDは、7→0、15→8の順にバス使用優先権が割り振られるため、コントローラのIDは7に、処理が遅くバスを頻繁に開放する機器(テープドライブやCD-ROM等)に優先順位の高い番号を割り当てる。
また、各々のSCSIデバイスは、さらにユニットを8つまで持つことができる。これをロジカルユニットという。各ロジカルユニットには番号がつけられる。この番号のことをLUN (Logical Unit Number) という。ロジカルユニットは、1つのデバイスで複数の媒体を持つことができる多連装CD-ROM装置や、ディスクアレイ装置、多連装テープ装置などで使われる。
注)ディスクアレイ装置の場合、LUNではなく、RAIDコントローラを介して内部に別のSCSIバスを用意しそこにHDDを接続する実装が殆どである。
もっとも、一般向けの機器でこれを用いているのはPD、DVD-RAM、多連装CD-ROMドライブ程度であるため通常の使用においてはまず気にする必要は無い。
SCSI装置はいくつかの種類ごとにカテゴリ分けされる。たとえば、ディスク装置、テープ装置などであり、それぞれのカテゴリごとに利用できるコマンド類が定義される。これは、ディスクはランダムアクセスできるが、テープはシーケンシャルアクセスしかできないため、ランダムアクセスのコマンドは定義しようにもできないからである。
並列(パラレル)SCSIでは、8ビット幅 (NARROW) では50芯、16ビット幅 (WIDE) では68芯のケーブルを用い、各機器をバス接続する。バスの両端には終端抵抗(ターミネータ)が必要である。NARROWでは8台、WIDEでは16台のSCSI機器を接続できる。ただしインタフェースボードがIDを一つ消費するので、実際に接続可能な機器はNARROWで7台、WIDEで15台となる。
なお、SCSI-2の16/32ビットWIDEはNARROWにケーブルをもう1本追加するものであったためまったく普及せず、Ultra SCSIで廃止され、新たに16bit WIDEが規定された。
通常、WIDEといえばUltra SCSIの16bit WIDEを指す。
SCSIは何度か規格を更新し、速度の向上や機能の追加が行われている。
SCSI-1
1986年にANSIにて制定された最初の規格。HVD(電圧差動型)もこの時点で制定されている。
CCS (Common Command Set)
SCSI-1制定後、色々と開発されたHDD以外の製品などの制御方式を統一するために業界が制定したコマンドセット。ANSIとは無関係である。
SCSI-2
1989年にANSIで制定。CCSをベースに、Fast10、16bit/32bit WIDE(要オプションケーブル)、ケーブル、ターミネータの抵抗値、コネクタ形状、パリティの必須化、記憶装置以外の周辺機器(モデム、スキャナ等)の接続機能等が規格化された。
Ultra SCSI
1992年にANSIで制定。WIDEの再定義、シリアルSCSI、Fast20等、包括的に様々な仕様が定義された。これ以降の機能追加 (Ultra2、U160、U320) はUltra SCSIの改訂と言う形で行われている。
SCSI-1や2という規格名より、Narrow SCSI、Fast SCSI、Wide SCSIなどという名称のほうが一般的である。またUltra SCSIの事をSCSI-2の次の規格のためSCSI-3だと良く勘違いされるが、実際にはSCSI-3という規格は存在せずUltra SCSIというのが規格の正式な名称である。
SCSIには、転送速度やバス幅以外にも電圧、伝送方式による違いがあり、現状、SE(シングルエンド)、HVD(ハイボルテージディファレンシャル)、LVD(低電圧差動型:ローボルテージディファレンシャル)の3種類の機器が流通している。SEとLVDに関してはピン互換性があり、また、電気的に相互に接続する事が可能となるよう設計されているが、HVDについては、電気的互換性が考慮されていないため、誤って接続すると機器の故障の原因となるので注意を要する。
また、パラレルSCSIの開発はU640(製品化はU320まで)で終了し、次世代のSCSIはシリアル (Serial Attached SCSI, SAS) で一本化される事になっている。
内部接続コネクタはSCSI-1時代には規格化されており、SCSI-2で追加されたWide規格においては、SCSI-1からの8ビット幅の50ピンケーブル(Aコネクタ)と、オプションの68ピンケーブル(Bコネクタ)を併用する必要があった。
Ultra SCSIにてWideの再定義を行い、68ピンケーブル(Pコネクタ)一本で16bitWideが使用可能になった。32bitWideを使用するときはもう一本68ピンケーブル(Qコネクタ)を併用する必要があったが、1つのバスに多くの機器を(しかもケーブル2本使用してまで)接続する必要も現実問題として無く(32bit規格は理論上32台のデバイスをサポートしている)、転送速度のアドバンテージもLVD化により薄れ、LVD規格では32bit規格はドロップされた。
SCSI外部機器がケーブルの接続に使用するコネクタは、SCSI-2/Ultra SCSIで規格化され、NarrowはD-Sub 50pin ハーフピッチコネクタ、Ultra SCSIの16ビットWideは内部接続と同じ D-Sub 68pin ハーフピッチコネクタに固定用の螺子を追加した物が使用される。ただ、ピン形状やコネクタ形状、螺子穴の位置は規格化されているが、それを覆うコネクタカバー部の厚さと螺子の切り方(インチ螺子なのかJIS螺子なのか)には規定が無く、機器と干渉する場合もある。
また、RAIDカードや複数チャネルを持つコントローラは狭いスロットカバーに複数のWideケーブルを接続出来るようにする為、超高密度68pinコネクタを採用している。
SCSI-1時代には、内部接続コネクタ形状のみ規格化されていたため、一般的にはセントロニクスコネクタと同様なベローズ形状のフルピッチの50ピンコネクタが使用されていたが、AppleのMacintoshやIO-MEGAのZipドライブではRS-232Cと同じD-SUB 25pinが、また、日本電気 (NEC) のPC-9800シリーズでは、ベローズ形状をシュリンクしたSCSI-2のそれと同サイズのコネクタを採用している。NECのEWS4800シリーズはこれに加え、ケーブル側コネクタの外周部に2つの突起があり、機器側のマイクロスイッチでケーブルが接続されているか否かを判断する仕組みが追加されている。このため、一般のSCSI機器にEWS4800用のSCSI機器は接続出来ない(逆は可能)。また、AppleのPowerBook 5300では HDI-30 が採用されていた。
ターミネータ(terminator, 終端抵抗)には外部に接続するもの、SCSI機器内部のコントローラ基板上にあるものの二種類がある。また、動作方式としてパッシブターミネータとアクティブターミネータがある。
パッシブターミネータは単に抵抗をバスラインに接続するだけである。一方アクティブターミネータは、抵抗だけでなく、能動素子(定電圧レギュレータ)を使っている。SCSI-2以降はアクティブターミネータの使用が必須であり、その回路はSCSIの規格書に記載されている。パッシブターミネータの場合、アクティブな信号が多いほどターミネータに流れる電流が多くなり、TERMPWRラインの電圧が下がり動作が不安定になる場合がある。アクティブターミネータの場合は同様の条件であっても抵抗に接続されているのは定電圧レギュレータであるため、SCSIの仕様内であればレギュレータの出力電圧が補正され安定した動作が期待できる。
かつて日本でも各種パソコンやワークステーション(PC-9800シリーズ、FMRシリーズ/FM TOWNS、X68000や、また、日本国内で販売されたMacintosh、サン・マイクロシステムズなど)でハードディスクドライブ (HDD) やイメージスキャナ、CD-ROM、MOなどを接続する高速インタフェースとして使われていた。PC-9800シリーズやMacintoshではSCSIが記憶装置や入出力装置の標準インタフェースとなっており、PC-9800シリーズやMacintoshではSCSI接続したMOディスクからも起動が可能であった。また、MacintoshではSCSI接続したMacintosh本体を外付けハードディスクとして利用する、SCSIターゲットディスクモードと呼ばれる仕様(接続先から起動も可能な仕様になっていた)も用意されていた。FM TOWNSも登場時はSCSIを標準搭載としていた。これらの機種のようにフロッピーディスクドライブとHDDのいずれからもシステムの起動に失敗した場合に、SCSI接続機器から「第三の選択肢」としてシステム起動を試みることができる仕様となっていたものもあり、当時潤沢ではなかったシステム資源を有効活用する面でも重要な選択肢として活躍した。
その一方でPC/AT互換機では、内蔵HDDは歴史的にST-506を始祖とするIDEが主流であり、主に外付けCD-ROMやMO等の接続の為に使用されていただけだった。CD-ROMについてはコスト削減のため、内蔵化され、SoundBlasterのMKEやミツミ、ソニーの独自接続規格を経て1996年頃からはATAPIによる接続が主流となった。また2002年以降は順次シリアル伝送による規格への置換が進んでおり、パーソナルコンピューター向けではシリアルATA、サーバー向けではSerial Attached SCSI (SAS) への置換が進んでいたが、2020年現在では2013年に規格が固まり製品が登場したより高速なNVMeが両者ともに主流となっている。
MOやイメージスキャナなど、外付けの周辺機器についても、2000年頃からUSB 1.1(さらに2002年頃からは、より転送速度が速いUSB 2.0)やIEEE 1394に、その後はUSB 3.0に取って代わられた状況である。
Macintosh(特にiMac以降)でも同様に、HDDやCD-ROMといった内蔵機器はIDE、MOやイメージスキャナなどの外付け機器はUSBやIEEE 1394に、更にUSB 3.0やIEEE1394bを経て、2020年現在ではUSB 3.1 Gen2とThunderbolt 3へ置き換わっている。ターゲットディスクモードも、IEEE 1394やThunderboltでサポートされている。
高速な処理速度が強く求められるサーバ用途では、CPUへの負荷を抑えられることから、現在でもSCSI接続のハードディスクが主に用いられている。この場合、故障に対する耐性を高める目的で、冗長性を持たせるためRAID構成(RAID1、あるいはRAID5)として用いられることが多い。
また一般用途でも、日常的にアクセスする外付けHDDを増設する場合、USBやIEEE1394はバスパワー供給の干渉で論理的に切断される現象がまれに発生するため、これを嫌ってSCSIを採用するユーザも少なからずいる。この場合、現在はSCSI用のHDDが非常に高価なため、ATA、シリアルATAのHDDをSCSIに接続する為の変換基板(ATA-SCSIブリッジ、S・ATA-SCSIブリッジ)が使用されることが多い。
複数のイニシエータを持つことが出来る事から、コンピュータクラスタのストレージ用バスとして使われている。ストレージを共有することで個々のストレージへのアクセスをモニタするオーバーヘッドを削減し、異常事態が生じてフェイルオーバーする時は最終状態が保存されているストレージにアクセスできるため瞬時にクラスタ構成要素を切り離したり代替する事ができた。これはIEEE 1394にも引き継がれている。
一般向けでもSCSIのハードディスクが多用されていた時代には、ドライブユニットはIDEと同じで、制御基板のみ差し替えていた製品が多くを占めていたが、近年のSCSIハードディスクは(SCSI規格そのものによる優位性ではないが)サーバでの使用を前提とした専用設計となり、小口径プラッタ採用によるシーク速度性能の向上や、信頼性確保の為、IDEハードディスクとは文字通り桁違いの平均故障時間を実現している。
近年ではSCSIという規格名称を冠した製品を見かける機会は以前と比べて減少しているが、SCSIのデータ伝送プロトコルを応用した規格として、前述の SAS (Serial Attached SCSI)、UASP (USB Attached SCSI Protocol)の対応製品が、またIPネットワーク技術の進展にともない、SCSI機器をIPネットワーク経由で接続するための iSCSIという規格がIETFにおいて標準化されている。従来のストレージエリアネットワーク (SAN) ではファイバチャネルが使われることが多かったが、コストが高くなりがちである、ファイバチャネルに精通した技術者が少ない、などの問題点があった。これに対し、IPネットワーク機器は広く普及しており、IP ネットワーク技術に関連した技術者も多いことから、iSCSIをベースとしたSANも普及をみせている。
「SCSIインタフェース」というインタフェースが二重になったような言い方をされることがある。これは「SCSIという規格に合致したインタフェース機器」という意味で解釈すれば、必ずしも間違いではないが、混乱を避けるには「SCSIカード」「SCSI端子(ポート)」などと言う。
SCSIのインタフェースカードはHost Bus Adapter (HBA) と呼ばれる。これはストレージシステムにおいて、ディスク側にもアダプターが実装されることもあり、ホスト (PC) 側のアダプターであることを明示する必要があるからである。
SCSIは、ホットスワップ(電源投入後の脱着)に対応しておらず、起動後に機器を繋いでも認識されない。認識させる為にはコンピュータの再起動が必要であり、外部周辺機器でホットスワップにも対応している、USBやIEEE 1394に取って代わられたひとつの要因と言える。
SCSIの規格としては、接続さえしておけばホストアダプタ側の電源投入後も機器側のコネクト/ディスコネクトが可能となっている。ただしオペレーティングシステム (OS) 又はドライバが対応している必要がある。たとえばWindows 95以降であればOS起動後にHDDの電源を入れても、デバイスマネージャからデバイスの更新操作を行えば再スキャンが行われ再設定される。
2006年現在、日本国内で販売されている一般向けのSCSI機器は、HDDのベアドライブを除けば、IDE→SCSI変換基板を介したものがほとんどである。ある意味、初期のST-506+変換基板の時代に回帰したとも言える。
NECの超並列コンピュータ Cenju の外部SCSIコネクタは一部配線が間違えて接続されているため、最初の機器を接続する場合、専用のケーブルを購入しなければならない。
PC-9800シリーズの初期の純正SCSIボード (PC-9801-55) において、NEC製以外のHDDを接続すると認識しないという処置がされており、たちの悪いプロテクトであると一般に思われている。しかしこれは、当時SCSIの代替セクタの解釈にゆれがあり、他社製HDDをつなぐとトラブルが起きる可能性があるため、やむなくとられた措置である。とはいえ、このために純正ボードがリファレンスとして機能せず、サードパーティーのHDDは自社のSCSIボードとのセット販売が主流となり、互換性をめぐる混乱(HDDを他社のボードにつなぎかえるとジオメトリの違いによりパーティションが認識されない)を引き起こす遠因となったことは否定できない。55ボード問題を参照。
PC-9800シリーズにおける純正インタフェースボードが、SASIのものとSCSIのもので別々のコントローラを使用していて非互換であるため、日本においてはSASIとSCSIは別物であると考えられている事が多い(これは、同様にPC-9800シリーズ、FMRシリーズとその上位互換であるFM TOWNSで、当初IDEに専用のI/Oが定義されず、ソフトウェア上はSASIの上位互換として処理する事で導入された経緯もある)。しかし実際には、元々SASIを大幅に拡張した上で規格化したものがSCSIであり、SCSIはSASIの上位互換規格となっている。このため、プロトコルシーケンスを全てソフトウェアで実現する原始的なSASIコントローラの場合、ソフトウェア次第ではSCSIデバイスを接続することも不可能では無い。実際、PC-9800シリーズ用SASIボードにSCSIのHDDを接続するためのドライバソフトは存在する。また、X68000でも、SCSIインタフェース搭載以前の機種で、本来はSASIのインタフェースに対し、SCSIプロトコルをソフトウェア的に実装し、接続を実現したSxSIというドライバが存在する。またSCSI普及初期には、一部サードパーティー製SCSIボードにSASIのHDDが使用可能なものがあったり、SCSI/SASIを切り替えて使えるHDDなども存在した。