ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Lispマシーンのマイクロコード

IM-528_CADR.pdfからLispマシーンCADRの命令フォーマットをまとめました。CADRの命令長は48bit+奇パリティで、以下の部分が全命令で共通の仕様になっています。

bit 機能
IR[48] パリティビット
IR[47] 未使用
IR[46] 統計用bit(Statistics)。特定エリアのマイクロコードの実行された回数を数えたり、マイクロコードブレークポイントを実装したり、一定の時間でマシーンを止めるのに使用できる。
IR[45] ILONG 1で遅いクロックを意味する
IR[44:43] オペコード 0:ALU 1:JUMP 2:DISPATCH 3:BYTE
IR[42] POPJ Transfer。追加の1命令を実行した後、マイクロサブルーチンからリターンする。
IR[11:10] その他の機能。0:Normal、1:未使用、2:オペコードがDISPATCHの時、ディスパッチメモリへの書き込み、3:ロケーションカウンタ(LC)によるM-ROTATEフィールドの修正イネーブル

パリティやクロックの制御が命令フォーマットに入っている点が、最近のプロセッサとは違う所です。42bit目のPOPJ Transferが、1命令を実行した後に関数から戻る仕様になっており、スタック専用のメモリと合わせて関数の呼び出しとリターンに専用の仕組みがありそうです。