三元均衡番号システムを備えたソビエトロシアのコンピューター

コンピューターセン







「おそらく最も美しい数体系は、バランスのとれた3つです」-ドナルド・E・クヌート、プログラミングの芸術、第2巻。

多くの人は、コンピューターがデータを保存し、2進数システムを使用してデータを処理することを知っています。 これに関する主な説明の1つは、現代のコンピューターのスキームにあります。これは、数十億の単純で大量生産されたトランジスターとコンデンサーで構成され、一緒に2つの状態を表すことができます: 高電圧1



)と低電圧0



)。







この設計は今日広く普及しているため、コンピューターがどのように異なる動作をするかを想像するのは困難です。 しかし、50年代のソビエトロシアでは、彼らは異なった働きをしました。 聞いたことがない方は、1958年にモスクワ州立大学のブルゼンソフ率いる小グループによって開発された、バランスのとれた3コンポーネントコンピューターgoogle Setunをご覧ください。







ブルゼンソフとセトゥーンについて話す前に、少し三元のバランスの取れた数体系について説明させてください。







バランスのとれた三重



3進数または3進数は、 3つの推定値、 0



、および2



がある数値システムです。 バランスの取れたバージョンでは、 -1



+1



3つの確率があり、多くの場合+



それぞれ-



0



+



簡略化されています。







この形式では、3進値は中間点0



中心とする「集中化された」ものとして暗示され0



。 他の番号体系と同じ規則が適用されます。右端の文字R



には独自の意味があり、後続の各文字には、ベースB



掛けた値があり、 R



からの距離D



等しい累乗になりますR









ええ、例を挙げましょう。 114



書きましょう:







 +++-0 = (1 * 3^4) + (1 * 3^3) + (1 * 3^2) + (-1 * 3^1) + 0 = 81 + 27 + 9 + -3 = 114
      
      





そして、バイナリ(バイナリ)で:







 1110010 = (1 * 2^6) + (1 * 2^5) + (1 * 2^4) + 0 + 0 + (1 * 2^1) + 0 = 64 + 32 + 16 + 2 = 114
      
      





そして、自信のために、10進数システムに適用される同じルール:







 114 = (1 * 10^2) + (1 * 10^1) + (4 * 10^0) = 100 + 10 + 4 = 114
      
      





かっこいい







-114



を導入したい場合はどうしますか? 2進および10進システムでは、新しい記号signを使用する必要があります。 バイナリコンピューターのメインメモリでは、符号を示す先頭ビットを格納するか、表現できる数値の数を大幅に減らすことでこれを行います1 。 このため、プログラミング言語でsigned



unsigned



について話します。







しかし、対称三元システムでは、後で学習するように、数値(逆数)の逆数を表すには、すべての「+」を「-」に、またはその逆に変更するだけです。 サインを示すための追加情報は必要ありません!







ここを見てください:







 ---+0 = (-1 * 3^4) + (-1 * 3^3) + (-1 * 3^2) + (1 * 3^1) + 0 = -81 + -27 + -9 + 3 = -114
      
      





後ほど、バランスのとれた三元システムのこの特性といくつかの他の特性により、非常に興味深い計算上の利点が得られることがわかります。 しかし、今度は、Setunコンピューターの話に戻りましょう。







セツニの誕生



1950年代後半には、コンピューターの世界でエキサイティングな時代がありました。ナサニエルロチェスターとIBMの彼のチームは、プログラムをメモリに保存した最初の大量生産コンピューター、いわゆる「モダン」 IBM 701コンピューターを最近開発しました。 John Backusと彼のチームは、広く使用される最初の高級プログラミング言語であるFORTRANを発明しました。 そして、おそらく最も重要なことは、 TX-0Philco Transac S-2000などの最初の完全トランジスターコンピューターが開発され始めたことです。 バイナリコンピューターの開発の方向性が設定され、その後、支配的になり始めました。







しかし、それは北米にありました。







同時に、ロシアでは、 ブルゼンソフと彼の同僚であるセルゲイ・ソボレフが率いる数学者とエンジニアのグループが他のコンピューターシステムを開発しています2 。 Brusentsovと彼の同僚は、多くの西洋のコンピューターと技術の進歩を探求し、バイナリデータを表現するためのトランジスタの使用を理解しています。 しかし、これはソ連であることを覚えておいてください-トランジスタは鉄のカーテンの後ろではそれほど簡単にアクセスできません。 チューブ電子管は、ロシアと西洋の両方で同じように嫌です!







そのため、ブルゼンソフはミニチュアフェライトコアと半導体ダイオードの基本要素を開発しており、調整可能な変流器として機能することができます。 これは、 3値論理3を実装するための効果的なベースであることがわかりました。 これらの要素は、バイナリ対応要素と比較して、より高速で信頼性が高く、動作に必要な電力が少ないことがわかりました。







10人のチームが文字通りSetunをゼロから構築し、実験室のテーブル(彼ら自身が構築した!)で満たされた小さな部屋で働いていました。 毎朝、チームメンバーは5つの単純な機械要素を組み立てました。 彼らはフェライトコアを取り、通常の縫い針を使用して、それぞれ52コイルのワイヤーを巻きました。 その後、コアは技術者に転送され、技術者は組み立てプロセスを完了してブロックに取り付けました。







トリニティロジックは、2つのフェライト要素を組み合わせ、3つの安定状態をシミュレートするように接続することで実現しました。 このアプローチは成功しましたが、必要な要素の数は減りませんでした。実際には、2つのフェライトコアが潜在的に2つのバイナリビットであり、最終的に1つのトリプレット(3 ^ 1)よりも多くの情報(2 ^ 2) 、悲しいことに、少なくとも消費電力が削減されました!







Setunは最大18トリットの数値で動作します。つまり、1トリットは-387 420 489



間の任意の数値をシミュレートできます。 この機能を実現するには、バイナリコンピューターに少なくとも29ビットが必要です。







システムがテストの開始から10日以内に操作を実行できるという事実にもかかわらず、セタンの開発は2年続きました。 合計で、約50台が生産されました。 Setunコンピューターは、ロシアの極端な気候条件で長年スムーズに機能していましたが、プロジェクトは矛盾によって引き裂かれました。







製造業者が安価な科学の分野と見なしているものの大量生産を正当化することができないために、「大学の幻想の成果」である。 当時のロシアは、コンピュータの潜在的な重要性を理解する準備ができていなかったと想定するのは安全だと思います。 最終的に、Setunマシンは同等の効率で計算を処理できるバイナリ対応物に置き換えられましたが、運用コストは2倍以上でした!







三元系の特別なところは何ですか?



すでに述べたように、符号を示すために、先頭ビットを格納する必要はなく、トリットを格納する必要はありません。 したがって、符号付きまたは符号なしの整数の概念はありません-これはすべて整数です。 したがって、減算は、オペランドを反転し、加算を適用するだけで実現されます(これは、バイナリシステムのコンピューターと同様に実装されます)。 このプラスまたはマイナスの一貫性は、乗算演算に必要な転送の数を減らすこともできます。







バランスのとれた3進法(または対称数法)のもう1つの便利な機能は、浮動小数点数の丸めを実現する確率であり、数値の整数部分を明示的に強調表示するため、除算の実装を簡素化できます。 これは、3進システムが実数の小数部分を表示する方法が原因です。







簡単な例を挙げましょう。 数値0.2



コードへの変換0.2



次のとおりです。







 0.+--+ = 0 + (1 * (3^-1)) + (-1 * (3^-2)) + (-1 * (3^-3)) + (1 * (3^-4)) = 0.33 + -0.11 + -0.03 + 0.01 = 0.2
      
      





そして、 0.8



を書くには、高位の+から始めて、小数部分を反転するだけです(たとえば、1 + -0.2):







 +.-++- = 1 + (-1 * (3^-1)) + (1 * (3^-2)) + (1 * (3^-3)) + (-1 * (3^-4)) = 1 + -0.33 + 0.11 + 0.03 + -0.01 = 0.8
      
      





上記のように、ビット単位の右側のトリットの整数部分の割り当ては丸めと同等です。0.2はゼロになり、0.8は1になります。 かっこいい!







トリットと特性を使ったプログラミング!



さて、最後にセトゥンに戻りましょう。 60年代後半、ブルゼンソフはより近代的なSetun-70マシンを開発しました。 6つのトリット(約9.5ビット)で構成される「特性」の概念が導入されました。 Setun-70はスタックコンピューターであったため、意図的に入力および出力用のレジスタと呼ばれていたマシン命令の代わりに、すべての操作は2つのスタックで実行されました-1つはオペランド(入力)、もう1つは戻り値(出力)です。 この設計を適応させるために、機械語命令は逆ノンブロッキング表記 (逆ポーランド表記または後置表記)で記述されました。







70年代後半、Brusentsovと彼の学生の何人かは、Dialogun Structured Programming System(DSPP)と呼ばれるSetun-70用のプログラミング言語を開発しました。 私の研究4では、これはForthに似たスタック指向言語であり(これはまったく驚くことではありません)、逆ポーランド記法を使用していることに気付きました。 これにより、比較的高レベルの言語でプログラムを作成できますが、「低レベル」を感じ続けます。 そのため、その作成者は次のメッセージを受け取りました。







PRSPは発明されませんでした。 彼は開いていた。 したがって、言語にはバージョンがなく、拡張機能のみがあります。

PRSPのプログラムを考えてみましょう。これは、数字のグループを追加します。







 1 2 3 4 DEEP 1- DO +
      
      





分解してみましょう。 最初の列にはコマンドがあり、2番目の列には実行後のコンピューターの状態(オペランドのスタック)があり、3番目の列には説明があります。







 1 [1]  1  . 2 [2 1]  2  . 3 [3 2 1]  3  . 4 [4 3 2 1]  4  . DEEP [4 4 3 2 1]  " " (4)  . 1- [-1 4 4 3 2 1]  -1  . DO [4 3 2 1]  ,     .            0. + []   "+"   ,        ,  +      .
      
      





実行が終了すると、オペランドスタックは空になり、リターンスタックは[10]



ます。







DSPPについては、 Ivan Tikhonovのサイト(著者Sidorov S.A.およびShumakov M.N.)で詳細に書かれています。







未来



バランスのとれた三元コンピューターの開発は、コンピューター史の歴史の中で小さな脚注にほとんど変わりました。 また、3つの異なる状態を効果的に表すことができるメモリセルの研究は重要ではありませんでしたが、この分野ではいくつかの成果がありました。







つまり、90年代末の日本の研究者は、ジョセフソン遷移を使用して3項論理を実装する可能性を説明しました 。 これは、正(時計回り)、負(反時計回り)、またはゼロの超伝導電流の循環によって実現できます。 彼らは、これがメモリセルに「高速演算能力、低消費電力、および三元演算による要素の少ない非常にシンプルなデザイン」を提供することを発見しました。







しかし、近い将来、バランスのとれた三元コンピューターの概念に出くわすことはほとんどないと思います。 そして、そのDSPPは、プログラミング言語の積極的なファンの間でも画期的なものになるでしょう。 しかし、私は過去5から多くの賢明な決定を引き出すことができると信じています。







ナタリアベースによる翻訳)







脚注:







  1. 特定のマシンが数字をどのように表現するかによります。 追加のコードは、10進法での数値の表現であり、 n



    ビットで-((2^n) / 2)



    から((2^n) / 2) - 1



    n



    ます。


2)Setunコンピューターは3進システムを使用した最初の電子デバイスですが、コンピューティングデバイスでそのようなシステムを使用するというアイデアが100年以上前に最初に普及したことは注目に値します。 1840年、トーマスファウラーは完全に木材でコンピューターを構築し、三元システムを使用してデータを操作しました。







  1. より正確な説明は、 ロシアのコンピューター博物館のウェブサイトで見つけることができます。







  2. 英語のPRSPの参考資料にはあまりアクセスできないため、私の知識は限られており、憶測含まれている可能性があることを警告します。







  3. 私自身の貢献はcomputerpionee.rsで見ることができます







  4. この記事の画像は、 モスクワのMSUスーパーコンピューターコンプレックスのサイトから撮影されたもので、動作中のSetunマシンの1つです。



All Articles