1命令セットコンピュータ( OISC ) は、究極の縮小命令セットコンピュータ( URISC )とも呼ばれ、機械語オペコードを必要としない、1つの命令のみを使用する抽象マシンです。[ 1 ] [ 2 ] [ 3 ]単一の命令を慎重に選択し、任意の数のリソースを与えられると、OISC は複数の命令を持つ従来のコンピュータと同じように汎用コンピュータになることができます。 [ 2 ] : 55 OISC は、コンピュータアーキテクチャの教育の補助として推奨されており[ 1 ] : 327 [ 2 ] : 2 、構造コンピューティングの研究における計算モデルとして使用されています。[ 3 ]最初のカーボンナノチューブコンピュータは、 1ビットの1命令セットコンピュータです(トランジスタはわずか178個)。[ 4 ]
機械アーキテクチャ
チューリング完全なモデルでは、各メモリ位置に任意の整数を格納でき、モードによっては任意の数のメモリ位置が存在する場合があります。命令自体は、そのような整数のシーケンスとしてメモリ内に存在します。
ビットコピーやビット反転といったビット操作に基づく単一命令を持つ汎用コンピュータのクラスが存在する。これらのビット操作マシンのメモリモデルは、実際のコンピュータで使用されるメモリ構造と同様に有限であるため、チューリングマシンではなく実際のコンピュータと同等である。[ 5 ]
現在知られている OISC は、おおよそ次の 3 つのカテゴリに分けられます。
- ビット操作マシン
- トランスポートトリガーアーキテクチャマシン
- 算術ベースのチューリング完全マシン
ビット操作マシン
ビット操作マシンは最も単純なクラスです。
フリップジャンプ
FlipJumpマシンはa;bという1つの命令を持ちます。これはビットaを反転し、bにジャンプします。これは最も原始的なOISCですが、それでも有用です。標準ライブラリの助けを借りて、数学/論理演算、分岐、ポインタ、関数呼び出しを正常に実行できます。
ビットビットジャンプ
ビットコピーマシン[ 5 ]はBitBitJumpと呼ばれ、メモリ内の1ビットをコピーし、命令のオペランドの1つで指定されたアドレスに無条件に実行を移します。このプロセスは、ビットコピーによってその後実行されるコピーアドレスを条件付きで変更できるため、汎用計算(つまり、任意のアルゴリズムを実行でき、他の汎用マシンを解釈できる)が可能であることが証明されています。
トーガコンピューター
トーガ・コンピュータと呼ばれる別のマシンは、ビットを反転し、その結果に応じて条件付きで実行を続行します。このマシンの独特な命令はTOGA(a,b)で、これは「TOG gle a A 」を意味し、トグル演算の結果が真であれば bに分岐します。
このセクションは拡張が必要です。不足している情報を追加していただければ幸いです。 (2016年12月) |
マルチビットコピー機
BitBitJumpと同様に、マルチビットコピーマシンは複数のビットを同時にコピーします。この場合、計算の普遍性の問題は、事前に定義されたジャンプテーブルをメモリに保持することで解決されます。
トランスポートトリガーアーキテクチャ
トランスポートトリガーアーキテクチャ(TTA)は、データ転送の副作用として演算が行われる設計です。通常、共通アドレス空間内のいくつかのメモリレジスタ(トリガーポート)は、命令が参照した際に指定された操作を実行します。例えば、単一のメモリ間コピー命令を使用するOISCでは、書き込み時に算術演算と命令ポインタジャンプを実行するポートをトリガーすることでこれを実行します。
算術ベースのチューリング完全マシン
算術ベースのチューリング完全マシンは、算術演算と条件分岐を使用します。前述の2つの汎用コンピュータと同様に、このクラスもチューリング完全です。命令は整数を演算しますが、整数はメモリ上のアドレスとなる場合もあります。
現在、このクラスの OISC は、さまざまな算術演算に基づいていくつか知られています。
- 加算(addleq、ゼロ以下の場合は加算して分岐)[ 6 ]
- デクリメント(DJN、デクリメントして分岐(ジャンプ)Nがゼロの場合)[ 7 ]
- 増分(P1eq、Pに1を加算し、別の値と等しい場合は分岐) [ 8 ]
- 減算(減算、減算、ゼロ以下の場合は分岐)[ 9 ] [ 10 ]
- 可能な場合は正の減算、そうでない場合は分岐(算術機械)[ 11 ]
命令の種類
単一命令の一般的な選択肢は次のとおりです。
- 0以下の場合は減算して分岐する
- 減算して負の場合は分岐する
- 正の場合は減算、それ以外の場合は分岐
- 逆に減算して、借りる場合はスキップする
- 移動(トランスポートトリガーアーキテクチャの一部として使用される)[ 12 ]
- 減算してゼロ以外の場合は分岐する(SBNZ a、b、c、宛先)
- Cryptoleq(異種の暗号化および非暗号化計算)
これらの命令のうち、特定の実装で使用されるのは1つだけです。したがって、どの命令を実行するかを識別するためのオペコードは必要ありません。命令の選択はマシンの設計に内在しており、OISCは通常、使用する命令にちなんで命名されます(例:SBN OISC、 [ 2 ] : 41 SUBLEQ言語、[ 3 ] : 4 など)。上記の各命令は、チューリング完全なOISCを構築するために使用できます。
本稿では、トランスポートトリガーではない減算ベースの命令についてのみ説明します。しかし、加算などの他の算術演算に基づく命令を用いてチューリング完全なマシンを構築することは可能です。例えば、DLN(Decrement and jump if not zero)と呼ばれる派生言語は、オペランドが2つしかなく、デクリメントを基本演算としています。詳細については、Subleq派生言語[1]を参照してください。
減算してゼロでない場合は分岐する
命令SBNZ a, b, c, d (「減算してゼロでない場合は分岐」)は、アドレスbの内容からアドレスaの内容を減算し、その結果をアドレスcに格納し、結果が0でない場合は制御をアドレスdに移します(結果がゼロの場合は、次の命令に進みます)。[ 3 ]
0以下の場合は減算して分岐する
subleq命令(「減算してゼロ以下の場合は分岐」)は、アドレスaの内容をアドレスbの内容から減算し、その結果をアドレスbに格納し、結果が正でない場合は制御をアドレスcに移します(結果が正の場合は、次の命令に進みます)。[ 3 ]:4–7 疑似コード:
命令subleqa,b,c Mem[b] = Mem[b] - Mem[a] (Mem[b] ≤ 0) の場合c へ進む条件分岐は、第3オペランドを次の命令のアドレスに設定することで抑制できます。第3オペランドが書き込まれていない場合、この抑制は暗黙的に行われます。
2つのオペランドと内部アキュムレータを用いたバリアントも可能です。この場合、アキュムレータの値は、第1オペランドで指定されたメモリ位置から減算されます。結果はアキュムレータとメモリ位置の両方に格納され、第2オペランドは分岐アドレスを指定します。
命令subleq2a,b Mem[a] = Mem[a] - ACCUM ACCUM = メモリ[a] (Mem[a] ≤ 0) の場合、 b へ移動します。この場合、命令ごとに 3 つではなく 2 つのオペランドのみが使用されますが、さまざまな論理演算を実行するには、それに応じてより多くの命令が必要になります。
合成命令
subleq命令のみを使用して、多くの種類の高階命令を合成することが可能である。[ 3 ]:9–10
無条件分岐:
- JMP c
部分語Z 、Z 、c
加算は、条件分岐なしで減算を繰り返すことによって実行できます。たとえば、次の命令を実行すると、位置aの内容が位置bの内容に追加されます。
- a、bを加える
部分集合a 、Z部分集合Z 、b部分集合Z 、Z
最初の命令は、位置aの内容を位置Zの内容(0)から減算し、その結果(aの内容の負の数)を位置Zに格納します。2番目の命令は、この結果をbから減算し、その差(つまり元のaとb の内容の合計)をbに格納します。3番目の命令は、値 0 をZに戻します。
コピー命令も同様に実装できます。たとえば、次の命令を実行すると、位置bの内容が位置aの内容に置き換えられます。ここでも、位置Zの内容は0 として維持されると仮定します。
- 移動 a, b
部分集合b 、b部分集合a 、Z部分集合Z 、b部分集合Z 、Z
任意の算術テストを構築できます。例えば、以下の命令でゼロ分岐条件を組み立てることができます。
- BEQ b、c
サブレックb 、Z 、L1サブレックZ 、Z 、OUT L1:サブレックZ 、ZサブレックZ 、b 、c OUT: ...
Subleq2は高階命令の合成にも使用できますが、一般的に特定のタスクにはより多くの演算が必要になります。例えば、特定のバイト内のすべてのビットを反転するには、少なくとも10個のsubleq2命令が必要です。
- ではない
subleq2 tmp ; tmp = 0 (tmp = 一時レジスタ) subleq2 tmp subleq2 one ; acc = -1 subleq2 a ; a' = a + 1 subleq2 Z ; Z = - a - 1 subleq2 tmp ; tmp = a + 1 subleq2 a ; a' = 0 subleq2 tmp ; tmp を acc にロードsubleq2 a ; a' = - a - 1 ( = ~a ) subleq2 Z ; Z を 0 に戻す
エミュレーション
次のプログラム (擬似コードで記述) は、 subleqベースの OISCの実行をエミュレートします。
intメモリ[],プログラムカウンタ、a 、b 、cプログラムカウンタ= 0 while (プログラムカウンタ>= 0 ) : a =メモリ[プログラムカウンタ] b =メモリ[プログラムカウンタ+ 1 ] c =メモリ[プログラムカウンタ+ 2 ] if ( a < 0またはb < 0 ) :プログラムカウンタ= -1 else :メモリ[ b ] =メモリ[ b ] -メモリ[ a ] if (メモリ[ b ] > 0 ) :プログラムカウンタ+= 3 else :プログラムカウンタ= cこのプログラムは、memory[]が非負整数でインデックス付けされていると仮定しています。したがって、subleq命令(a、b、c)の場合、プログラムはa < 0、b < 0 、またはc < 0への分岐の実行を停止条件として解釈します。subleqベースの言語で記述された同様のインタープリタ(つまり、subleq命令の性質上、自己書き換えコードを使用できる自己インタープリタ)は、以下の外部リンクにあります。
Dawn OSと呼ばれる汎用SMP対応64ビットオペレーティングシステムが、Subleqエミュレーションマシンに実装されています。このOSにはC言語ライクなコンパイラが含まれています。仮想マシン内の一部のメモリ領域は、キーボード、マウス、ハードドライブ、ネットワークカードなどの周辺機器に使用されます。Dawn OS用に作成された基本的なアプリケーションには、メディアプレーヤー、ペイントツール、ドキュメントリーダー、科学計算用電卓などがあります。[ 13 ]
グラフィックディスプレイとキーボードを備えた32ビットのSubleqコンピュータIzhoraは、Yoel Matveyevによって大規模なセルオートマトンパターンとして構築されました。[ 14 ] [ 15 ]
コンピレーション
Oleg Mazonkaによって書かれたHigher Subleqというコンパイラがあり、これは簡略化されたCプログラムをsubleqコードにコンパイルします。[ 16 ]
あるいは、リチャード・ジェームズ・ハウによって書かれた、Subleq VM上で動作し、Subleqマシンの対話型プログラミングが可能なセルフホスティングForth実装がある[ 17 ]
減算して負の場合は分岐する
subneg命令(「負の数の場合は減算して分岐する」)はSBNとも呼ばれ、 subleqと同様に定義される:[ 2 ]:41、51–52
命令subnega,b,c Mem[b] = Mem[b] - Mem[a] (Mem[b] < 0) の場合、 c へ移動します。条件分岐は、第3オペランドを次の命令のアドレスに設定することで抑制できます。第3オペランドが書き込まれていない場合、この抑制は暗黙的に行われます。
合成命令
subneg命令のみを使用して、多くの種類の高階命令を合成できます。ここでは、 subleqとsubnegの違いを示すために、合成された命令を1つだけ示します。
無条件分岐: [ 2 ] : 88–89
- JMP c
サブネガティブPOS 、Z 、c
ここで、ZとPOS はそれぞれ 0 と正の整数を含むように事前に設定された場所です。
無条件分岐は、 Z が初期値として 0 (またはPOSに格納されている整数より小さい値)である場合にのみ保証されます。分岐後にZ をクリアするための後続命令が必要です。ただし、 Zの内容は0 に維持される必要があります。
サブネガティブ4
オペランドを4つ指定するバリアント(subneg4)も可能です。被減数と被減数の反転により、ハードウェア実装が容易になります。非破壊的な結果のため、合成命令が簡素化されます。
命令(* 減数、被減数、結果、ジャンプアドレス *)subnegs,m,r,j Mem[r] = Mem[m] - Mem[s] (Mem[r] < 0) の場合、 j へ移動します。演算機械
チューリングマシンをより直感的にするために、ZAメルザックは正の数の計算というタスクを考察した。このマシンは無限のそろばんと、最初は特別な位置Sにある無限の数のカウンター(小石、棒)を備えている。このマシンは1つの演算を実行できる。
場所 X から場所 Y にあるのと同じ数のカウンターを取り出し、場所 Z に転送して、命令 y に進みます。
Xに十分なカウンタがないためこの操作が不可能な場合は、そろばんをそのままにして命令nに進みます。[ 18 ]
すべての数値を正に保ち、現実世界のそろばんを使って計算する人間のオペレーターを模倣するために、減算の前にテストを実行します。擬似コード:
命令if (Mem[X] < Mem[Y]) goto nmelzakX,Y,Z,n,y メモリ[X] -= メモリ[Y] メモリ[Z] += メモリ[Y] 行くy 乗算、gcd、n番目の素数の計算、任意の数のb基数での表現、大きさの順序によるソートなど、いくつかのプログラムを示した後、Melzak は、彼の算術マシンで任意のチューリング マシンをシミュレートする方法を明示的に示しています。
- 乗数 p, q
multiply: melzak P , ONE , S , stop ; 1個のカウンタをPからSへ移動します。不可能な場合はstopへ移動します。melzak S , Q , ANS , multiply , multiply ; q個のカウンタをSからANSへ移動します。最初の命令へ移動します。stop:
ここで、メモリ位置 P はp、 Q はq、 ONE は 1、 ANS は最初は 0 で最後にpq、 S は大きな数です。
彼は、再帰関数の要素を用いて、算術マシン上で計算可能なすべての数が計算可能であることが容易に示されると述べています。その証明は、Lambek [ 19 ]によって、等価な2つの命令マシン、すなわちX+(Xをインクリメント)とX− else T(Xが空でない場合はXをデクリメント、そうでない場合はTにジャンプ)を用いて示されました。
逆に減算して、借りる場合はスキップする
逆減算・借用スキップ命令(RSSB)では、アキュムレータからメモリアドレスを減算し、借用があった場合(メモリアドレスがアキュムレータより小さかった場合)は、次の命令をスキップします。結果はアキュムレータとメモリアドレスの両方に格納されます。プログラムカウンタはメモリアドレス0にマッピングされます。アキュムレータはメモリアドレス1にマッピングされます。[ 2 ]
命令rssbx ACCUM = メモリ[x] - ACCUM メモリ[x] = 累計 (ACCUM < 0) の場合、PC + 2 へ移動します。例
x を y から z を引いた値に設定するには:
# まず、z を宛先位置 x に移動します。RSSB temp # acc、temp をクリアするには 3 つの命令が必要です [注 1 を参照] RSSB temp RSSB temp RSSB x # acc はすでにクリアされているため、2 つの命令で acc、x をクリアしますRSSB x RSSB y # y を acc にロードします。借用はありませんRSSB temp # -y を acc、temp に格納します。常に借用してスキップしますRSSB temp # スキップしましたRSSB x # y を x、acc に格納します# 次に、操作を実行します。RSSB temp # acc、temp をクリアするには 3 つの命令が必要ですRSSB temp RSSB temp RSSB z # z をロードしますRSSB x # x = y - z [注 2 を参照]- [注 1] 「temp」に格納されている値が最初は負の値であり、このルーチンの最初の「RSSB temp」の直前に実行された命令が借用された場合、ルーチンが機能するには 4 つの「RSSB temp」命令が必要になります。
- [注 2] 「z」に格納された値が最初に負の値である場合、最後の「RSSB x」はスキップされ、ルーチンは機能しません。
トランスポートトリガーアーキテクチャ
トランスポートトリガーアーキテクチャは移動命令のみを使用するため、元々は「移動マシン」と呼ばれていました。この命令は、あるメモリ位置の内容を別のメモリ位置に移動し、移動先のメモリ位置の現在の内容と組み合わせます。[ 2 ] : 42 [ 20 ]
命令( a -> bとも表記)movxa,b OP = GetOperation(Mem[ b ]) Mem[ b ] := OP(Mem[ a ], Mem[ b ]) 実行される演算は、格納先のメモリセルによって定義されます。一部のセルは加算、他のセルは乗算などに特化しています。つまり、メモリセルは単なる記憶ではなく、算術論理ユニット(ALU)と連携して、セルの現在の値を用いて1種類の演算のみを実行します。一部のセルは、ジャンプ、条件付き実行、サブルーチン、if-then-else、for-loopなど によってプログラム実行を変更する制御フロー命令です。
MAXQと呼ばれる商用トランスポートトリガーアーキテクチャマイクロコントローラが開発され、これは転送命令の可能なすべての宛先を表す「転送マップ」を使用することでOISCの明らかな不便さを隠しています。[ 21 ]
クリプトレク

Cryptoleq [ 22 ]はSubleqに似た言語です。1つの同名の命令で構成され、暗号化されたプログラムに対して汎用的な計算を実行できます。Cryptoleqは、直接アドレス指定と間接アドレス指定を用いて連続したメモリセルに対して動作し、3つの値A、B、Cに対して2つの演算O 1とO 2を実行します。
命令 Mem[b] = O 1 (Mem[a], Mem[b]) if O 2 (Mem[b]) ≤ 0cryptoleqa,b,c IP = c それ以外 IP = IP + 3 ここで、a、b、c は命令ポインタ IP によってアドレス指定され、IP の値は a をアドレス指定し、IP + 1 は b を、IP + 2 は c を指します。
Cryptoleq 演算では、O 1とO 2は次のように定義されます。
Subleqとの主な違いは、SubleqではO 1 ( x,y )は単にxからyを減算し、O 2 ( x )はxに等しいという点です。CryptoleqもSubleqと準同型であり、モジュラー反転と乗算は減算と準同型であり、値が暗号化されていない場合、 O 2の演算はSubleqテストに対応します。Subleqで書かれたプログラムはCryptoleqマシンで実行できるため、下位互換性があります。ただし、Cryptoleqは完全に準同型の計算を実装しており、乗算も可能です。暗号化されたドメインでの乗算は、リバースエンジニアリングが困難であると想定される独自の関数Gによって支援され、O 2演算に基づいて値の再暗号化を可能にします。
ここで、 はyの再暗号化された値であり、はゼロに暗号化されています。xは変数の暗号化された値で、mとすると、 と等しくなります。
乗算アルゴリズムは加算と減算に基づいており、関数Gを使用し、条件ジャンプや分岐はありません。Cryptoleq暗号化はPaillier暗号システムに基づいています。
参照
- フラクトラン
- ブール代数の最小公理
- レジ機
- チューリングタールピット
- 縮小命令セットコンピュータ
- 複合命令セットコンピュータ
- 明示的に並列化された命令計算
- 最小命令セットコンピュータ
- 非常に長い命令語
- ゼロ命令セットコンピュータ
参考文献
- ^ a b Mavaddat, F.; Parhami, B. (1988年10月). 「URISC: 究極の縮小命令セットコンピュータ」(PDF) . International Journal of Electrical Engineering Education . 25 (4). Manchester University Press: 327– 334. doi : 10.1177/002072098802500408 . S2CID 61797084. 2010年10月4日閲覧. この論文では、「RISC設計の究極形(URISC)」として、単一の3アドレス命令を持つマシンを考察しています。命令名を明示することなく、SBN OISCとそれに関連するアセンブリ言語について解説し、これが汎用的(すなわちチューリング完全な)マシンであることを強調しています。そのシンプルさゆえに、授業での使用に最適です。
- ^ a b c d e f g hウィリアム・F・ギルリース、フィリップ・A・ラプランテ(2003年)『コンピュータアーキテクチャ:ミニマリストの視点』シュプリンガー・サイエンス+ビジネス・メディア、ISBN 978-1-4020-7416-52009年6月13日時点のオリジナルよりアーカイブ。 研究者、コンピュータシステムエンジニア、計算理論家、そして学生を対象とした本書は、SBNやMOVEを含む様々なOISCを詳細に検証しています。SBNはWL van der Poel (1956)に帰属します。
- ^ a b c d e f Nürnberg, Peter J.; Wiil, Uffe K.; Hicks, David L. (2003年9月)、「構造計算のための大統一理論」、メタインフォマティクス:国際シンポジウム、MIS 2003、グラーツ、オーストリア:Springer Science+Business Media、pp. 1– 16、ISBN 978-3-540-22010-7、2015年1月3日にオリジナルからアーカイブ、 2009年9月7日取得 この研究論文は、SUBLEQ OISC とそれに関連するアセンブリ言語に完全に焦点を当てており、「命令とそれに基づく言語の両方」を表すために SUBLEQ という名前を使用しています。
- ^ 「カーボンナノチューブで作られた初のコンピューターが発表される」 BBC、2013年9月26日。 2013年9月26日閲覧。
- ^ a bオレグ・マゾンカ、「ビットコピー:究極の計算の単純さ」、Complex Systems Journal 2011、Vol 19、N3、pp. 263–285
- ^ "Addleq" . Esolang Wiki . 2017年9月16日閲覧。
- ^ "DJN OISC" . Esolang Wiki . 2017年9月16日閲覧。
- ^ "P1eq" . Esolang Wiki . 2017年9月16日閲覧。
- ^ Mazonka, Oleg (2009年10月). 「SUBLEQ」 . 2017年6月29日時点のオリジナルよりアーカイブ。2017年9月16日閲覧。
- ^ "Subleq" . Esolang Wiki . 2017年9月16日閲覧。
- ^ ZA Melzak (1961). 「計算可能性と計算への非公式算術的アプローチ」 . Canadian Mathematical Bulletin . 4 (3): 279– 293. doi : 10.4153/CMB-1961-031-9 .
- ^ xoreaxeaxeax. 「movfuscator」 . GitHub . 2022年11月12日閲覧。
- ^ 「SUBLEQの夜明け」。
- ^ https://www.gazetaeao.ru/zanimatelnaya-nauka-vchera-segodnya-zavtra/ビロビジャネル・シュテルン紙に掲載されたロシアの科学雑誌の記事。ヨエル・マトヴェイエフのイジョラ・コンピュータについて簡単に解説されている。
- ^ https://habr.com/ru/post/584596/ Habr上の仮想コンピュータIzhoraの説明(ロシア語)
- ^ Oleg Mazonka Subleqに基づくシンプルなマルチプロセッサコンピュータ
- ^リチャード・ジェームズ・ハウSUBLEQ eForth
- ^ ZA Melzak (2018-11-20) [1961年9月]. 「計算可能性と計算への非公式算術的アプローチ」 . Canadian Mathematical Bulletin . 4 (3): 279– 293. doi : 10.4153/CMB-1961-032-6 .
- ^ J. Lambek (2018-11-20) [1961年9月]. 「無限そろばんのプログラミング方法」 . Canadian Mathematical Bulletin . 4 (3): 295– 302. doi : 10.4153/CMB-1961-032-6 .
- ^ Jones, Douglas W. (1988年6月). 「The Ultimate RISC」 . ACM SIGARCH Computer Architecture News . 16 (3). ニューヨーク: ACM: 48– 55. doi : 10.1145/48675.48683 . S2CID 9481528. 2010年10月4日閲覧。 縮小命令セット(RISC)コンピュータアーキテクチャは、1980年代以降、大きな注目を集めてきました。ここで紹介する究極のRISCアーキテクチャは、そのようなアーキテクチャの極端でありながらシンプルな例です。メモリからメモリへの移動というたった1つの命令しか持たないにもかかわらず、非常に有用です。
- ^ Catsoulis, John (2005),組み込みハードウェアの設計(第2版)、O'Reilly Media、pp. 327– 333、ISBN 978-0-596-00755-3
- ^マゾンカ、オレグ;ツォウトソス、ネクタリオス・ゲオルギオス;マニアタコス、ミハイル(2016)、「Cryptoleq:暗号化および非暗号化計算のための異種抽象マシン」、IEEE Transactions on Information Forensics and Security、11(9):2123– 2138、Bibcode:2016ITIF...11.2123M、doi:10.1109/TIFS.2016.2569062、S2CID 261387
外部リンク
- 難解なプログラミング言語WikiのSubleq – インタプリタ、コンパイラ、例、派生言語
- クリストファー・ドマスによるYouTubeの「Reductio ad absurdum」
- 実験室用サブレクコンピュータ- VHDLを使用したFPGA実装
- レトロコンピューティング博物館– SBNエミュレータとサンプルプログラム
- 実験室用SBNコンピュータ– 7400シリーズの集積回路で実装
- 難解なプログラミング言語に関するWikiのRSSB - インタプリタと例
- Dr. Dobb の 32 ビット OISC 実装- Verilogを使用したFPGA上のトランスポート トリガー アーキテクチャ (TTA)
- MAXQアーキテクチャの紹介- 転送マップ図を含む
- OISC エミュレータ– グラフィカルバージョン
- TrapCC (最近の Intel x86 MMU は実際にはチューリング完全な OISC です。)
- イジョラ– セルラーオートメーションとして構築されたヨエル・マトヴェイエフのSubleqコンピュータ
- SBNシミュレーター- CARDboard Illustrative Aid to Computationにインスパイアされたシミュレーターとデザイン
- 60 Hz の 1 ビット コンピューティング– コンピューターとステート マシンの中間
- NORマシン – たった1つの命令でCPUを構築する方法
- SUBLEQ eFORTH SUBLEQ OISC 上で実行される完全な Forth インタープリター。
- Cryptoleq – Cryptoleq リソースリポジトリ
- CAAMP – コンピュータアーキテクチャのミニマリスト的視点
- SICO – シングル命令コンピュータ: 符号なし整数を使用するSUBLEQの変種