
ホットスワッピングとは、コンピュータシステムを停止、シャットダウン、または再起動することなく、コンピュータシステムのコンポーネントを交換または追加することです。[ 1 ]ホットプラグとは、稼働中のコンピュータシステムにコンポーネントを追加することのみを指します。[ 2 ]このような機能を持つコンポーネントはホットスワップ可能またはホットプラグ可能と言われ、同様に、そうでないコンポーネントはコールドスワップ可能またはコールドプラグ可能と言われます。ホットスワッピングのより広い概念は電気システムや機械システムにも適用できますが、通常はコンピュータシステムの文脈で言及されます。
ホットスワップの一例として、USBメモリ、マウス、キーボード、プリンターなどのUSB周辺機器を、コンピュータの電源を切らずにコンピュータのUSBスロットから簡単に取り外せる機能が挙げられます。
CPUやメモリなど、ほとんどのデスクトップコンピュータのハードウェアは、コールドプラグのみに対応しています。しかし、中級から高級サーバーやメインフレームでは、 CPU、メモリ、PCIe、SATA、SASドライブなどのハードウェアコンポーネントをホットスワップできる機能が一般的になっています。
トレイ式のSIMカードホルダーを備えたほとんどのスマートフォンやタブレットは、システムをシャットダウンすることなくSIMカードを交換できます。
専用のデジタルカメラやビデオカメラは、通常、メモリーカードとバッテリーの収納部が簡単にアクセスできる構造になっており、操作の中断を最小限に抑えながら素早く交換できます。予備バッテリーは、使用していない間に外部で充電することで、バッテリーを循環させることができます。多くのカメラやビデオカメラには内蔵メモリーが搭載されているため、メモリーカードが挿入されていなくても撮影が可能です。
ホットスワップは、システムを中断することなく構成を変更したり、稼働中のシステムを修復したりすることが望ましい場合に主に使用されます。[ 3 ]システムを常に稼働させておく必要がある典型的な例は、サーバーの場合です。サーバーは、クライアントと呼ばれる他のコンピューターが必要とする重要なデータやアプリケーションへのアクセスを提供するコンピューターです。また、スマートフォンの充電など、デバイスをシャットダウンしてから再起動する際の遅延や煩わしさを回避するために、ホットスワップが実装される場合もあります。
ホットスワップは、周辺機器やコンポーネントの追加・削除、および故障したモジュールの交換を、機器の動作を中断することなく行うために使用されます。例えば、あるマシンにはホットスワップ可能な電源が2つ搭載されており、それぞれが単独でマシンに電力を供給するのに十分な能力を持っている場合があります。これらの電源のうち1つが故障してシャットダウンしても、マシンはもう一方の正常に動作する電源から電力を供給されるため、シャットダウンしません。故障した電源はマシンの動作中に交換でき、最終的にマシンは冗長状態に戻ります。サーバーにおいては、ディスクコントローラやホストアダプタなどの重要な拡張カードは、サーバーの動作を中断することなく交換できるように、特別な冗長機能を備えて設計されている場合があります。
ホットスワップのもう 1 つの使用例は、2 つのデバイスを接続する前にどちらかのデバイスの電源を切る必要がないため、2 つのデバイス間でより高速なデータ同期を可能にすることです。たとえば、iPhone をUSB ケーブルでMac コンピュータに接続してデータを同期する場合、iPhone または Mac の電源を切って再起動を待つ必要はありません。[ 4 ]さらに便利なことに、データ同期はユーザーの操作なしで自動的に開始するように構成できます。また、デバイスのプラグを抜くだけでいつでもデータ同期を中断することもできますが、データの破損を避けるため、指示があるまではそうすることはお勧めしません。
ホットスワップに対応する機器は、構成変更を検知した際に自動的に、またはユーザーによる操作によって、変更された構成に合わせて動作を変更できる必要があります。ホットスワップに関連するすべての電気的および機械的な接続は、ホットスワップ中に機器やユーザーが損傷を受けないように設計されなければなりません。システム内の他のコンポーネントは、ホットスワップ可能なコンポーネントを取り外しても動作が中断されないように設計されなければなりません。
保護カバープレート、シールド、またはベゼルは、取り外し可能な部品または本体自体に使用でき、作業者が通電中の回路に接触するのを防ぐため、追加または取り外される部品に静電気防止保護を提供するため、または取り外し可能な部品が誤って動作中の機器内の電源部品に接触してショートするのを防ぐために使用されます。
追加のガイドスロット、ピン、切り欠き、または穴は、他の活電部品の間に部品を適切に挿入するのを補助するために使用できます。また、機械的な係合ラッチ、ハンドル、またはレバーは、接続または切断に大きな力が必要なデバイスの適切な挿入および取り外しを補助するため、または電源コネクタと通信コネクタの適切な嵌合と保持を補助するために使用できます。
実装によっては、コンポーネントを取り外す前にシャットダウン手順が必要となる場合があります。これは通常、設計の簡素化につながりますが、コンポーネントの故障時にはデバイスが不安定になります。このような場合、使用中にコンポーネントを取り外すと、そのデバイスに対する操作が失敗し、必要に応じてユーザーが再試行する必要があります。実際には、信頼性よりもコストが重要な特定の設計においては、これは有利なトレードオフとなる可能性があります。
より複雑な実装では、コンポーネントのシャットダウンを推奨するものの、必須とはしない場合があります。最適とは言えないケースとして、コンポーネントがシャットダウンされずに取り外された場合でも、これらの実装では通常、重要な動作を継続できるだけの十分な冗長性が確保されています。このようなシステムでは、通常、コンピュータの定期メンテナンスや故障したコンポーネントの交換にホットスワップが使用されます。
多くのデバイスには、データ破損のリスクを軽減するために、接続されたホットスワップ対応デバイスを取り外す機能が備わっています。デバイスを取り外すべきでない場合は、そのデバイスがどこで使用されているか、そして安全にシャットダウンする方法を説明するエラーメッセージが表示されます。

最新のホットスワップ方式のほとんどは、ピンが互い違いに配置された専用コネクタを使用しており、特定のピンが他のピンよりも先に接続されるようになっています。ほとんどのピン配置設計では、接地ピンが他のピンよりも長くなっており、システムの確実な接地が確立される前に、繊細な回路が接続されないようになっています。他のピンはすべて同じ長さの場合もありますが、場合によっては3種類の長さのピンを使用し、デバイスを挿入すると、まずデバイスが接地され、次にデータラインが接続され、最後に電源が供給されるというように、デバイス挿入時に素早く接続が行われます。公称長さが同じピンであっても、機械的な公差やコネクタ挿入時の角度によって、必ずしも同時に接触するとは限りません。
かつては千鳥配置のピンは高価なソリューションと考えられていましたが、現在では多くのコネクタ製品が千鳥配置のピンを標準装備しています。例えば、最新のシリアルSCSIディスクドライブはすべて千鳥配置を採用しています。ホットプラグ対応の電源コネクタピンは、最大16AのDC電流遮断定格を再現性高く備えた製品が市販されています。 プリント基板は、バックプレーンコネクタに直接ホットプラグ接続できるよう、千鳥配置のエッジフィンガーを備えています。
差し込み速度を正確に制御することはできませんが、実用的な観点から、最悪のケースを想定した限界値を設定することができます。長さの差が0.5mmの一般的な千鳥配置ピン設計の場合 、長いピンと短いピンが接触するまでの経過時間は25ms から250msの間です 。この速度で動作するホットスワップ回路を設計することは、非常に実用的です。

ホットスワップコネクタが十分に剛性があれば、4つのコーナーピンのうちの1つが必ず最初に接続されます。一般的な2列コネクタ構成では、これにより、通常グランドに使用される4つのコーナーピンが最初に接続されます。コーナー付近の他のピンは、コネクタが完全に挿入されたかどうかの検出など、この効果の恩恵を受ける機能に使用できます。この図は、グランドがコーナーにあり、電源ピンが中央付近にあるという優れた構成を示しています。2つのセンスピンは反対側のコーナーに配置されているため、両方のピンがスロットに接触した場合にのみ、完全に挿入されたことが確認されます。残りのピンは、その他のすべてのデータ信号に使用されます。
ホットスワップ対応部品へのDC電源は通常、メイン電源ピンの前に接触する専用の長いピンによってプリチャージされます。これらのプリチャージピンは、突入電流を許容値に制限する回路によって保護されており、ピンを損傷したり、隣接するスロットへの電源電圧を乱したりすることはありません。プリチャージ回路は、単純な直列抵抗、負温度係数(NTC)抵抗、または電流制限回路である場合があります。さらに、部品内部のDC電源電圧を段階的に上昇させる「ソフトスタート」回路によって、保護を強化することもできます。
ホットスワップ対応部品をスロットに差し込む際の一般的な手順は以下のとおりです。
ホットスワップ対応の電源回路は、ホットスワップ電源マネージャ(HSPM)と呼ばれる専用設計のASICとして市販されている。
ホットスワップ対応部品の信号ピンに接続される回路には、静電気放電(ESD)に対する保護機能が必要です。これは通常、グランドとDC電源電圧へのクランプダイオードによって実現されます。ホットスワップ対応部品の周囲の機械的パッケージを慎重に設計することで、ESDの影響を軽減できます。例えば、導電性材料の薄膜でパッケージをコーティングするなどの方法があります。
複数のホットスワップ対応コンポーネントに配線されたバス信号を使用するシステムを設計する際には、特に注意が必要です。ホットスワップ対応コンポーネントを挿入すると、その入力信号ピンと出力信号ピンは一時的にグランドに短絡されます。これにより、信号に不要なグランドレベルパルスが発生し、システム内の他のホットスワップ対応コンポーネントの動作を妨害する可能性があります。これは、初期のパラレルSCSIディスクドライブで問題となっていました。一般的な設計上の解決策の一つは、バス信号ピンを直列ダイオードまたは抵抗で保護することです。現在では、ホットスワップ動作中のバス信号への影響を最小限に抑える専用の入力と出力を備えたCMOSバッファデバイスが利用可能です。それでも解決しない場合は、ホットスワップ動作中はすべてのコンポーネントの動作を停止させるという方法もあります。
現代のラジオ送信機(および一部のテレビ送信機)は、真空管の代わりに高出力RFトランジスタパワーモジュールを使用しています。パワーモジュールのホットスワップは新しい技術ではなく、1930年代に製造された多くのラジオ送信機は、送信機が動作中でもパワーチューブを交換できる機能を備えていましたが、より信頼性の高い高出力真空管の登場により、この機能は広く普及しませんでした。
1990年代半ば、米国の複数の無線送信機メーカーが、交換可能な高出力RFトランジスタモジュールを提供し始めた。
パワーモジュールの再導入は、イノベーションを促進したため、無線送信機業界にとって良い影響を与えた。送信場所の状況に合わせて送信機を適切に選択すれば、モジュール式送信機は真空管式送信機よりも信頼性が高いことが証明されている。
電力制限:
現代のほとんどのビデオゲームシステムは、電源を切らずにゲームやマルチメディア(Blu-rayなど)を交換できますが、古い世代のシステムではホットスワップ機能のサポートが異なっていました。たとえば、ソニーのPlayStationとPlayStation 2は、システムに電源を入れたままゲームディスクを取り出すことができましたが、任天堂のゲームボーイアドバンスとニンテンドー64は、電源を入れたままゲームカートリッジを取り外すとフリーズし、データが破損する可能性がありました。メーカーは、取扱説明書やゲームカートリッジで、このような行為をしないように特に警告していました。[ 5 ]バンジョーとカズーイシリーズとドンキーコング64からストップ・アンド・スワップが削除されたのは、おそらくこのためでしょう。セガジェネシス/メガドライブシステムでは、カートリッジがホットスワップできるように設計されていなかったにもかかわらず、ホットスワップによってゲームにチート(プレイヤーが無限のライフを持つなど)やその他の一時的なソフトウェア変更を適用できることがありました。 [ 6 ]
ホットスワップ対応キーボードでは、キーボードを分解することなくスイッチを交換できます。 [ 7 ]標準的なメカニカルスイッチキーボードでは、スイッチはPCBに直接はんだ付けされています。ホットスワップ対応キーボードでは、その場所にソケットがあり、再はんだ付けせずにスイッチを自由に交換できます。[ 8 ]ホットスワップ対応キーボードは、より特殊な人間工学に基づいたレイアウトを含め、さまざまなサイズとレイアウトで見つけることができます。
ホットスワップとは、プログラムの実行を中断することなく、実行中のコードを変更できる機能を指す場合もあります。対話型プログラミングは、ホットスワップを多用するプログラミングパラダイムであり、プログラミング作業自体がプログラムの流れの一部となります。
ホットスワップをネイティブにサポートするプログラミング言語はごくわずかで、Pike、Lisp、Erlang、Smalltalk、Visual Basic 6 ( VB.NETを除く)、Java 、そして最近ではElm [ 9 ]とElixir などが含まれます。Microsoft Visual Studio は、Edit and Continue と呼ばれる一種のホットスワップをサポートしており、これはデバッガで実行されている場合にC#、VB.NET、C / C++でサポートされます。[ 10 ]
ホットスワップはライブコーディングにおける中心的な手法であり、プログラミングは実行時プロセスに不可欠な要素です。一般的に、SuperCollider、TidalCycles、Extemporeなど、ライブコーディングで使用されるすべてのプログラミング言語はホットスワップをサポートしています。
Djangoなどの一部のWebフレームワークは、モジュールの変更を検知してオンザフライで再読み込みする機能をサポートしています。ただし、ほとんどの場合ホットスワップと同じように見えますが、技術的にはこれは新しいファイルによってトリガーされるキャッシュのクリアに過ぎません。これは、 HTMLやPHPなどのマークアップ言語やプログラミング言語には一般的には当てはまりません。これらのファイルは通常、使用されるたびにデフォルトで再解釈されるためです。ただし、キャッシュを使用するCMSやその他のPHPベースのフレームワーク( Drupalなど)もいくつか存在します。これらの場合、同様の機能と例外が適用されます。
ホットスワッピングは、バイオインフォマティクスアルゴリズムにおけるゲノム全体など、大量のデータを処理するシステムの開発も容易にします。[ 11 ]
「HOT PLUG」という用語は、1992年11月に米国でCore International, Inc.に商標登録され、1999年5月に取り消されました。[ 12 ]
適切に設計された並列構成により、故障したモジュールをオンラインで交換(ホットスワップ)することが可能です。これにより、中断することなく保守・修理を行うことができ、連続稼働する高信頼性システムにおいて非常に望ましい機能となります。