プログラミング
OpenBSD Stories: 奇妙な中世のデバイス
OpenBSD Stories: Strange Medieval Devices (miod.online.fr)
要約
この記事は、1970年代から80年代にかけて高性能・大容量ストレージとして利用されていたSMDディスクについて解説しています。その物理的な大きさ、重量、インターフェースの特徴を説明し、著者がOpenBSD開発のためにSun-4/260サーバーとSMDディスクを入手し、セットアップした経験を詳細に語っています。
全文翻訳
OpenBSD stories miod > software > OpenBSD > stories > Strange Medieval Devices
Strange Medieval Devices
1970年代後半から1980年代にかけて、高性能・大容量ストレージの最良の選択肢は、いわゆるSMDディスクでした。SMDインターフェースは、 ANSI X3.91M-1982 として標準化されたのは、実に1982年で、5年間の作業を経てのことでした。その後1987年に改訂され、その改訂版はBitsaversで見つけることができます。1980年代にはESDI(1984年標準化)やSCSI(1986年標準化)のような他のストレージ技術が登場しましたが、最も大容量のディスクはすべてSMDインターフェースを使用していました。
SMDディスクは当初11インチプラッタを使用し、後に8インチになりました。公称速度は3600rpm、つまり毎秒60回転でした(ただし、富士通は後にこの標準から外れ、さらに高速な3961rpmで回転するドライブもいくつか製造しました)。これらのディスクを回転させるにはかなりの電力が必要で(回転を維持するにはそれより少ない電力で済みましたが、電気料金の請求書でそれを実感することになります)、もちろん、死んだロバ、あるいは2頭分の重さがありました。8インチモデルは一人で慎重に運ぶことができましたが、11インチディスクの移動には通常、何らかの台車が必要でした。
SCSI標準ドキュメント(クリックすると拡大表示されます)。
そのため、Sun MicrosystemsがハイエンドサーバーやワークステーションにSMDディスクとXylogicsコントローラーを搭載して出荷していたのも不思議ではありませんでした。
Xylogics 451 Multibusコントローラーボード(中央)が、下部のMultibus-to-VMEコンバーターに接続されています(クリックすると拡大表示されます)。
ESDIと同様ですが、SCSIやより現代的なストレージインターフェースとは異なり、SMDインターフェースはコマンドケーブルとデータケーブルが分離されています。コントローラーによっては、コマンドケーブルはすべてのディスクを通り抜けるか、デイジーチェーン接続されるか、ディスクごとにコントローラーに直接接続される専用のコマンドケーブルがあります。データケーブルは独立しており、常にコントローラーとディスクを直接接続します。451は4台のディスクを駆動できますが、Sun仕様ではコマンドケーブル(中央)と4本のデータケーブルのうち2本しか配線されておらず、2台のディスクしか使用できません。Sunのコネクタ選択では、コマンドも2本の小さなケーブルに分割されます。
これらのシステムがホビイストの地下室に持ち込まれる頃には、大容量SCSIドライブが登場していました。私は2000年代初頭に、私のSun-3/260で2GBのMicropolis 1924 5インチ1/4 SCSIディスクを使用していました。私の知る限り、これまでで最大のSMDディスクドライブ容量は約1.25GBで、そのSCSIディスク容量の3分の2未満でした。
2000年にOpenBSD/sun3の作業を開始したとき、私はSMDドライブを持っていなかったので、Xylogicsドライバーをテストできませんでした。これが2001年夏に変わりました。前年の夏、どこかの部屋の隅で、同じフォームファクタのSMDディスクキャビネットの隣に、廃止されたSun-4/260キャビネットを見つけました。それが何であるかを認識した後、その状態について問い合わせ、適切な人々に、私の車をその部屋の近くに駐車させ、両方のエンクロージャーを車のトランクに移動させることを説得するのに丸1年かかりました。
Sun-4/260とは何か、とあなたは尋ねるかもしれません。4/200シリーズはSunが最初に販売したSPARCシステムでした。VMEエンクロージャーの実際のサイズに応じて、12スロットの大型デスクサイドキャビネットに車輪が付いた4/260か、19インチラックの半分を占め、この構成で16個のVMEスロットを可能にするラックマウント可能な4/280でした。しかし、マザーボードは同じで、16.67MHzのSPARCプロセッサーとその浮動小数点ユニットを備えた大型(9U)の正方形ボードでした。2つのシリアルポート、Sun Type 3キーボード用の複合キーボード/マウスポート、モノクロ高解像度(1600x1200)フレームバッファ、およびイーサネットインターフェースを備えていました。
Sun-4/200ボード(クリックすると拡大表示されます)。左側のCPUチップ用のZIFソケットに注意してください。
しかし、オンボードメモリはありませんでした。メモリはVMEボードとしてインストールされ、メモリへのアクセスを高速化し、VMEバスの残りの部分とバス帯域幅を共有しないように、Sun独自の「P2」バスでCPUボードと通信しました。最大4枚のメモリボードをインストールでき、8MB、16MB、または32MBのモデルがあったため、最大128MBの物理メモリが可能でした。ストレージコントローラーもVMEボードとして追加されました。ほとんどのシステムには、内部ドライブベイを処理するためのSCSIコントローラーが少なくとも1つ(スロット7)ありました。これは、パリティ信号を正しく処理できず、接続されているすべてのデバイスで無効にする必要があった非常に限定的な自家製「Sun-2」scコントローラーか、そのような制限のない、わずかに優れたNCR5380ベースの「Sun-3」siコントローラーでした。通常、スロット8に別のコントローラーが追加されました。これは、外部SCSIデバイスを接続できるようにするための外部コネクタ付きの別のSCSIコントローラーか、SMDコントローラー(場合によっては2つ)でした。
ハイエンドXylogics 7053 VME(9U)コントローラーボード(クリックすると拡大表示されます)。
このコントローラーは4台のディスクを駆動できますが、Xylogics 451とはバックプレーンのコネクタが異なるため、異なるケーブルが必要です(残念ながら私は持っていません)。モデル7053は、古いSilicon GraphicsシステムやMotorolaのものなど、他のVMEシステムで使用するための、より小型の(6U)VMEボードとしても存在します。この小型サイズでは、モデル753として知られており、Sub-Dではなくシールド付き高密度コネクタを使用しています(これも適切なケーブルを持っていません)。
シャーシ内のさまざまなVMEスロット間の微妙な違いにより、Sunは各ボードの推奨される配置と、適切な割り込み配信のためにVMEバックプレーンジャンパーを構成する方法について、特定のマニュアルを作成しました。これは「cardcage slot assigment and backplane configuration procedures」(Bitsaversへのリンク)と呼ばれています。全盛期には、100ページを超える表と脚注にまで膨れ上がりました。
上記のマニュアル(クリックすると拡大表示されます)。
そのマシンを自宅でセットアップしたとき、セルフテストでメモリボードの1枚が欠陥品であると報告されました。これが、そのマシンがサービスから外された理由の1つであった可能性があります(そして、電気代と限られた処理能力も)。しかし、4枚の16MBメモリボードが搭載されていたため、1枚を取り外しても48MBで作業を続けることができました。ストレージキャビネットにあった2台のSMDディスクは、どちらも生の(フォーマットされていない)容量は約368MBでしたが、フォーマット後の容量はわずか280MBでした。そのうち1台だけが動作しているようでした。欠陥のあるメモリボードを取り除き、そのうち2枚を当時私にとってより重要だったSun-3/260に移動した後、ついにマシンをセットアップすることができました。
日付: Sun, 15 Jul 2001 05:05:25 +0000
差出人: Miod Vallat
宛先: dmesg@openbsd.org
件名: sun 4/260
うわー、ディスクレス4/260にSMDとSCSIディスクを追加しました。まだ遅いですが、気にしません、評判を維持しなければなりません。カーネルはSUN4 07/13/2001で、後にmickeyがコミットした私のdmesg修正が含まれています。
OpenBSD 2.9-current (SUN4) #2: Sun Jul 15 04:32:56 GMT 2001
root@tekumel:/src/current/src/sys/arch/sparc/compile/SUN4
real mem = 16752640
avail mem = 13221888
using 102 buffers containing 835584 bytes of memory
bootpath: /vmes0/xyc0/xy@0,0
mainbus0 (root): SUN-4/200 series
cpu0 at mainbus0: MB86900/1A or L64801 @ 16.670 MHz, MB86910 or WTL1164/5 FPU
cpu0: 128K byte write-back, 16 bytes/line, sw flush cache enabled
obio0 at mainbus0
clock0 at obio0 addr 0xf3000000
delay constant 6
eeprom0 at obio0 addr 0xf2000000
memreg0 at obio0 addr 0xf4000000
zs0 at obio0 addr 0xf1000000 pri 12, softpri 6
zs0a: console i/o
zs1 at obio0 addr 0xf0000000 pri 12, softpri 6
bwtwo0 at obio0 addr 0xfd000000: bwtwo, 1152 x 900
bwtwo0: attached to /dev/fb
ie0 at obio0 addr 0xf6000000 pri 6 address 08:00:20:00:c8:78, type onboard
vmel0 at mainbus0
vmes0 at mainbus0
xyc0 at vmes0 addr 0xffffee40 vec 0x48 pri 3: Xylogics 450/451
xy0 at xyc0 drive 0: ready (drive type 1)
xy0: <CDC EMD 9720 cyl 1147 alt 2 hd 10 sec 48>, pcyl 1149
xy0: 268MB, 1147 cyl, 10 head, 48 sec, 512 bytes/sec
xy1 at xyc0 drive 1: off-line
si0 at vmes0 addr 0xff200000 vec 0x40 pri 3: options=1<DMA>
scsibus0 at si0: 8 targets
sd0 at scsibus0 targ 0 lun 0: <EMULEX, MD21/S2 ESDI, A00> SCSI0 0/direct