アダルト・ヴァイオリン May the force be with you..

2009年6月12日

【不定期連載】 UMLで16ビットCPUを作ろう:第4回 BIUのインタフェース検討

Filed under: Weblog — い~ぐる @ 4:40 PM


EUとBIUの機能を考えつつ、BIUとCPUコアのインタフェースを検討する。

一番、大きな検討課題は、x86では、ワードアクセスを奇数番地からスタートでき、その場合、2つのメモリトランザクションを起こして、まとめた16ビットのワードデータを命令が利用できる部分だ。このEUからは、単にワードかバイトの要求として、この部分をBIUで吸収する。こうしておけば、後日、BIUのマイナーチェンジで、8ビットバスオンリーのCPUも作成できる。

もう一つの検討課題は、命令プリフェッチである。ここに分岐予測を入れたくなるのであるが、まぁ、それは、後でも実装できるので、とりあえずは、CPUコアは、命令キューから1バイトずつ命令を取り出すように作っておく。

CPUコア側のつくりとしては、命令単位で取り出せた方が楽なのだけれど、BIUに命令解読はさせたくないので、一番単純に作っておこう。

という、概略の戦略を考えると、BIUのインタフェースは、図のようになる。

もちろん、実装方式は人によって違って当然であり、単なる例に過ぎないし、深く検討したわけではないので、抜けや考え落ちがあるかもしれないのは、重々承知である。

ところで、ArgoUMLは、とても便利なのだが、属性や操作を一度描いたら、その順序を交換する方法が見つからない。(ないのか?)後からきれいに整理することができた方が、設計図を描くツールとしては便利なのだが・・

【不定期連載】 UMLで16ビットCPUを作ろう:第3回 x86向け、拡張

Filed under: Weblog — い~ぐる @ 2:17 PM


x86は、通常のメモリIOの他に、IOアドレス空間を持つので、16bitのクラスを継承して、x86のクラスを作る。また、ソフトウェアから見えるレジスタもBIUとEUに分離して配置しよう。まだ、BIUとEUとのインタフェース仕様は決めていないので、ブランクのままだが、今後、詰めていくことにしよう。

今のクラス図は、ia16bitCPUの部分には、属性が何もなく、継承した属性しか作られないので、この形でもSFLに変換できるように、UML2SFLを多少変更。0.2.4からの対応

【不定期連載】 UMLで16ビットCPUを作ろう:第2回 入出力仕様の続き

Filed under: Weblog — い~ぐる @ 7:27 AM


メモリと割り込み、停止要求のトランザクションを、シーケンス図に描いてみる。が、シーケンス図は、今回初めて描くのと、ArgoUMLでの描き方がよく分からないので、シーケンス図もどきと言っておこう。

関係ないが、UML2SFLの通常のセットアップ版のインストールキットをWEBにおいた。.NETの発行は、Document and Settingsの下の奥の方にあって、分かりにくいのと、アイコンがうまく表示されないので、独自のセットアッププロジェクトを作った。

ただ、.NET Frameworkの自動ダウンロードには対応していないので、.NET Frameworkをインストール済みの人専用である。

Powered by WordPress