IBM System/360の形式記述

 こういう話もあったので。RISC-V仕様のFormal表現いろいろ(FPGA開発日記)
 命令セットアーキテクチャは色々あるけれども、どれも自然言語による定義と擬似コードによる動作の補足説明があるくらい。IBMのSystem/360はAPLで記述してあるらしいことはどっかで聞いたことがあった。
検索してみると:IBM System/360 emulator written in APL(HackerNews)
 これによるとIBM System/360を2ページのAPLで記述したエミュレータがあるという。実際は動作するエミュレータではなくAPLで形式的に記述してあるようだ。

 論文は A formal description of SYSTEM/360 だけれどもたどっていくと有料アクセス。うーん。もうちょっと頑張ってたどってみたらあった。
falkoff.pdf[pdf]

 この論文はIBM Systems JournalのVol.3 Issue 2 1964年に掲載されている。この時期から形式記述への取り組みがあったようだ。

 System/360の完全で簡潔な記述と書いてあり、記述にはAPLを用いている。論文にはAPLの発明者Iversonの名前もある。この形式記述はマニュアル等から起こしたとあるので、最初にSystem/360を定義したものは自然言語のようだ。最初のほうのTable1 Notationに記述一覧があるが、これが2ページなので勘違いしたのではないだろうか。

 動作の記述は最後の方にある。各命令の動作に9ページ。割り込みやメモリアクセスの定義が6ページ。その他命令一覧などの表。しかしちょっとみただけではさっぱりわからん。タイマーのところはなんとか読めますね。タイマーのサイクル数分待ってtickを1にする。

DELAY ((1÷timer frequency) seconds)
tick ← 1


 あと、命令のPACK/UNPKのところ。これはBCDのパック化十進数を作ったり展開したりする命令だけど割と行数が多い。で気付いたんだがこれはマイクロ命令の動作記述になるんじゃないだろうか。System/360は高級なモデルから安価なモデルまで同一命令セットで動作するのが売りだが、その差はハードウェアのサポートによる実行速度で、安価なモデルはマイクロ命令がたくさん動いて命令を実現している。内部のハードウェア構成が異なればマイクロ命令もまったく違ってくるが、このソースに従っていれば同等の動作が保証できるはず。まあ実際は自然言語のマニュアルに従って実装したのかもしれないけれども。

 根性がないのでこれ以上読めない。すまん。APL記述の定義は論文の中ですべて定義してあるので、あとSystem/360の命令セットは以下を参考に。

アセンブラプログラミング入門 (コンピュータ サイエンス 大学講座 2)アセンブラプログラミング入門 (コンピュータ サイエンス 大学講座 2)
金山 裕

近代科学社(インプレス) 1997-05-20
売り上げランキング : 323764

Amazonで詳しく見る
by G-Tools

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック