
SDS 9シリーズコンピュータは、Scientific Data Systems社が1960年代から1970年代にかけて製造したトランジスタコンピュータの下位互換性を備えた製品ラインです。このシリーズには、 SDS 910、SDS 920、SDS 925、SDS 930、SDS 940、SDS 945が含まれます。SDS 9300は9xxアーキテクチャの拡張版です。1965年に発売されたSDS 92は、モノリシック集積回路を使用して構築された互換性のない12ビットシステムです。
910と920は1962年8月に初めて出荷されました。9300は1963年6月に発表されました。[ 1 ] 925と930は1964年に発表されました。[ 1 ] 940は1965年に発表され、[ 2 ] 945は1968年に発表されました。 [ 3 ]
9 シリーズはSDS シグマ シリーズに置き換えられました。
すべてのシステムは24ビットのシングルアドレスマシンです。プログラマがアクセスできるレジスタは、A(アキュムレータ)、B(拡張)、X(インデックス)、P(プログラムカウンタ - 14ビット)、そしてオーバーフローインジケータです。9300にはX1からX3までの3つのインデックスレジスタがあり、これらをベースレジスタとして使用することで、16Kワードを超えるメモリにアクセスすることができます。WレジスタとYレジスタは入出力に使用されます。
910 と 920 の最大アドレス空間は、2 14または 16,384 ワード (16 KW - 64 K 文字) です。9300 と 930 は最大 32K (128 K 文字) をサポートし、940 と 945 は最大 64K (256 K 文字) をサポートしますが、16K を超えるメモリにアクセスする方法は異なります。
固定小数点データは 24 ビット、2 の補数、ビッグ エンディアンです。
浮動小数点演算は、ハードウェア浮動小数点演算機能を持つSDS 9300を除き、「プログラム演算子」を用いてソフトウェアで実装されます。すべての浮動小数点数は48ビットのダブルワードとして格納されます。単精度浮動小数点数は24ビットの符号付き小数部と9ビットの符号付き指数部を持ち、倍精度浮動小数点数は39ビットの小数部と9ビットの指数部を持ちます。指数部と小数部はどちらもビッグエンディアンの2の補数形式で格納されます。2進小数点は、小数部の上位ビットのすぐ左に位置するものとみなされます。数値の値は です。ここで、Fは小数部、Eは指数部です。 F*2E
浮動小数点形式は次のとおりです。
倍精度浮動小数点 +-+-----------------------+ |±| 分数 | 上位ワード +-+-----------+-+---------+ | frac(cont) |±|指数 | 下位ワード +-------------+-+---------+ ビット0 1 2 5 3 上位ワード: ビット0小数点 ビット1~23 小数部の上位部分 下位ワード: ビット0~14 小数部の下位部分 ビット15指数符号 ビット16~23 指数
単精度浮動小数点 +-+-----------------------+ |±| 分数 | 上位ワード +-+-----------+-+---------+ | 未使用 |±|指数 | 下位ワード +-------------+-+---------+ ビット0 1 2 5 3 形式は倍精度と同じですが、小数部の 24 ビットのみが使用される点が異なります。
アドレス生成において、インデックス指定(指定されている場合)は間接指定の前に実行されます。有効な間接アドレスにあるワードは、命令コードが無視されることを除き、命令であるかのようにデコードされるため、間接アドレスで間接指定またはインデックス指定も指定できます。複数レベルの間接アドレス指定が可能です。
プログラム演算子機能により、命令コードフィールドはサブルーチンアドレスのベクトルへの呼び出しを示すことができます。6ビットの命令コードは、最大64個のプログラム演算子(8進数00~77)を許可します。Pビットが設定されている場合、命令コードxxは位置1xx(8進数)への呼び出しとして扱われます。POP命令の位置は位置0に保存されます。位置0のビット0はオーバーフローインジケータの現在の値に設定され、インジケータはリセットされます。位置0のビット9は間接アドレスを示すために「1」bに設定され、プログラム演算子ルーチンはPOP命令のアドレスで指定されたデータに間接的にアクセスできます。
910のメインメモリは、2048~16384ワードの磁気コアメモリで、サイクルタイムは8μsです。固定小数点加算命令は16μs、固定小数点乗算命令は248μsです。ハードウェア割り込みは標準で2つ、オプションで最大896個まで追加可能です。
910 および 920 システムの命令形式は次のとおりです。
+-+-+-+------+-+--------------+ |0|X|P|オペコード|I| アドレス| +-+-+-+------+-+--------------+ 1 2 ビット 0 1 2 3 8 9 0 3 ビット0~2は「タグ」と呼ばれる ビット 0 は常にゼロです。 ビット 1 '1'b は、オペランド アドレスがインデックス付けされることを示します。 ビット2 '1'bは、この命令が プログラム演算子 (POP) です。 ビット 3 ~ 8 は命令コードまたはプログラムされたオペレータ ID です。 ビット9 '1'bはオペランドアドレスが間接的に指定されることを示す (間接指定に先行するインデックス)、潜在的に再帰的。 ビット 10 ~ 23 にはオペランド アドレスが含まれます。
SDS 910の重量は約900ポンド(410 kg)でした。[ 4 ]
920のメインメモリは、4096~16384ワードの磁気コアメモリです。固定小数点加算時間は910と同じ16μsですが、固定小数点乗算は128μsと約2倍高速です。920は最大1024個の優先割り込みに対応しています。
920の重量は約1,000ポンド(450 kg)でした。[ 5 ]
930は、16284ワードを超えるアドレス指定を可能にする「メモリ拡張システム」を備えています。EM2およびEM3と呼ばれる2つの3ビット「拡張メモリレジスタ」が用意されており、実効アドレスの上位3ビットとして使用する値をロードできます。アドレス00000 8~ 17777 8(メモリの最初の8192ワード)は常に変更されません。命令内のアドレスの上位8進数が2の場合、実効アドレスの上位桁はEM2の内容に置き換えられます。上位桁が3の場合、EM3の内容が使用されます。
以前のモデルとの互換性を維持するため、コンピュータの起動時にEM2の値は2に、EM3の値は3に設定され、プログラムはメモリの最初の16384ワードをアドレス指定できます。これらのレジスタはプログラムによってロードできます。
プログラム ローダーは、すべてのモデルで無視される命令の上位ビットを、現在ロードされている命令が再配置されることを示すフラグとして使用します。
930メモリのサイクルタイムは1.75μsです。固定小数点加算は3.5μs、固定小数点乗算は7.0μsです。優先割り込みシステムでは、2~38個の入出力割り込みと最大896個のシステム割り込みが可能です。
930 システムの命令フォーマットは、拡張メモリに使用されるビットを除いて、以前のシステムと互換性があります。
+-+-+-+------+-+--+----------+ |0|X|P|オペコード|I|EM| アドレス| +-+-+-+------+-+--+----------+ ビット 0 1 2 3 3 9 11 1 2 01 2 3 ビット10と11は拡張メモリの有無を指定します (EM='00'b—メモリの最初の8Kワードを参照) または、 EM2 (EM='10'b) または EM3 (EM='11'b) 有効なアドレスを形成します。
940では、複数のユーザーをサポートするために動作モードが追加されました。以前のモデルの動作モードは通常モードに名称変更されました。新しいモニターモードは、入出力および特定の特権命令へのアクセスを制限します。ユーザーモードは、ユーザーのアプリケーションプログラムを実行するために使用されます。
メモリマップレジスタのセットは、仮想アドレスを物理アドレスにマッピングするために使用されます。8つのメモリマップレジスタがあり、それぞれ2Kワードをマッピングすることで、16Kのアドレス空間を提供します。
通常モードの命令フォーマットは930と同じです。アドレス指定はユーザーモードとモニターモードで異なります。[ 6 ]:p.6
SDS 940 ユーザーモード命令フォーマット: +-+-+-+------+-+---+---------+ |U|X|P|オペコード|I|Blk| アドレス| +-+-+-+------+-+---+---------+ ビット 0 1 2 3 3 9 1 1 2 0 3 3 ビット位置2(P)でない限り、ビット0はユーザーモードでは無視されます。 これはプログラムされた演算子であることを示します。 この場合、ビット位置 0 の '1'b は、これが標準のプログラム演算子ではなく、「システム POP」または「SYSPOP」であることを示します。 ユーザー モードでは、ビット位置 10 ~ 12 は「仮想メモリ ブロック番号を構成」し、つまりメモリ マップ レジスタを指定し、ビット 13 ~ 23 は「仮想メモリ ブロック内の場所を指定します。」 メモリ マップ レジスタの内容が命令ビット 13 ~ 23 の先頭に追加され、有効アドレスが形成されます。
940は仮想メモリを提供するためにメモリマップ[注1 ]を介してメモリにアクセスします。マップの形式は、ユーザーメモリマップとモニターメモリマップで若干異なります。
ユーザーモードで実行されているプログラムの場合、命令のアドレスフィールドの上位 3 ビットは、8 つのレジスタ (R0~R7) の配列のインデックスとして機能します。[注 2 ] 各レジスタには 5 ビットの値 ( R n ) が含まれており、これが命令アドレスフィールドの下位 11 ビットの前に付加されて 16 ビットの物理アドレスを形成します。これにより、仮想メモリが 2048 ワードずつの 8 つのブロックに論理的に分割されます。レジスタを使用すると、最大 32K ワードの物理メモリから 16K ワードに同時にアクセスできます。各レジスタの 6 番目のビット ( P n ) は、読み取り専用のストレージブロックを示します。R n = 0 およびP n =1 は割り当てられていないブロックを示し、参照するとトラップが発生します。マップレジスタは、モニターモードでのみ設定できます。
モニターモードのメモリマップも同様です。Pビットは存在しません。R 0 ~ R 5に相当するM 0~M 5には、読み取り専用値0~5が格納され、物理アドレス0~8K-1(00000~17777 8 )に直接アクセスできます。8K~12K-1(20000~27777 8 )の範囲のアドレスについては、メモリ拡張レジスタEM2を使用して、通常モードと同様に物理アドレスを生成します。12K~16K-1(30000~37777 8 )のアドレスについては、メモリマップレジスタM 6とM 7の内容を使用してアドレスを生成します。
モニターは、命令のビット0の値によって決定されるモニターメモリマップまたはユーザーメモリマップのいずれかを使用できます。これにより、モニターはユーザーのアドレス空間にアクセスできます。
ユーザーモードでは、プログラム演算子は通常モードと同様に機能し、ユーザーの仮想アドレス100~177 8にアクセスします。940には、モニターサービスを呼び出すために使用されるシステムプログラム演算子(SYSPOPS)を実行する機能も含まれています。ユーザーモードでSYSPOP(命令ビット0と2が「1」b)が検出されると、コンピューターはまずモニターモードに入り、次にモニターの(物理的な)アドレス100~177 8にある命令ベクトルにアクセスします。
945は940タイムシェアリングシステムのアップグレード版です。「最大24人の同時ユーザーと最大64人の承認ユーザーをサポート」すると宣伝されていました。[ 3 ]
MAGPAK 9446テープドライブサブシステムと関連の 9401 テープカートリッジ[ 7 ]は、 SDS が SDS 900 シリーズ用に開発し、1964 年 5 月に発表されました[ 8 ]。各テープドライブユニットは、標準の 10.5 インチ x 19 インチパネルに搭載された 2 つの独立制御磁気テープドライブで構成されています。[ 9 ]データは、7.5 インチ/秒、1,400 ビット/インチで記録されます。[ 7 ] 9448 テープ制御ユニットは、テープドライブユニットを任意のシリーズ 900 システムに接続します。[ 7 ]テープカートリッジには、約 600 フィートのマイラーテープが含まれており、2 つの独立したトラックがそれぞれ約 150 万の IBM 文字 (6 ビット + パリティ) を保持し、カートリッジあたり約 400 万の 6 ビット文字の容量が得られます。
940と945を除くこのラインの主要オペレーティングシステムは、 MONARCHオペレーティングシステムです。MONARCHはシングルタスクのバッチオペレーティングシステムです。当初は磁気テープ上に常駐していましたが、後のバージョンではRAD (Rapid Access Data)ファイルと呼ばれる、トラックごとにヘッドを持つ磁気ディスク上に常駐できるようになりました。MONARCHは実行システムではありません。アプリケーションプログラムは実行時にコンピュータのすべてのリソースを制御するためです。MONARCHはモニターであり、ジョブ間の遷移とアプリケーションへのサポートサービスを提供します。
モニタールーチンは制御情報を受け取ります。これには、指定された標準システムルーチンのロードと実行の要求などが含まれる場合があります。モニターはジョブ間で機能を実行し、プログラムがロードされ、モニターが制御を移した後は、プログラムの実行を制御しません。…プログラム実行中にコアメモリに保持されるモニターの部分は、モニターブートストラップルーチンとユニット割り当てテーブルで構成されます。
モニターに含まれる他の標準的なシステムルーチンは以下のとおりです。[ 10 ]
1969年までにALGOL 60コンパイラが利用可能になりました。[ 11 ]