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

2009年6月13日

【不定期連載】 UMLで16ビットCPUを作ろう:第6回 メモリリクエスト制御

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


EUからBIUへのメモリ要求は、メモリアラインに関係なく、命令の必要とする幅でバイト読み出しだったりワード読み出しだったりする。

これ自体は、アラインフリーであるx86では当然であるが、物理メモリにアクセスするときには、問題なのだ。たとえば奇数番地からワードで読むというのは一度にはできない。

そこで、EUからのリクエストを物理メモリ要求に変換するリクエスト制御をBIUのサブモジュールとして作る。ついでながら、ここでは、メモリ要求を発生させるので、BIU内のすべてのメモリバストランザクションをここに集中させて、アービトレーションの役割を負わせよう。

つまり、バストランザクションとして必要となる、メモリ(EUの命令アクセスと、BIUの命令プリフェッチ)ならびに、IO要求を、ここで取りまとめて、物理バスにコマンドを出す。

もちろん、サブモジュールから直接ピンが出るのではないので、上位のモジュールを仲介する必要がある。そのため、本来ならば、サブモジュールに引っ張ってこなくてもよい信号まで入っているけれど、モジュールの切り分けは仮想的なものであり、物理的なピン数の制約条件が生まれるわけではないので、読みやすさ優先としておく。


UML的には、もしかしたら、関連をうまく使うと、直接ピンを外部にインタフェースする表現方法を取れるかもしれないが、まだ整理し切れていないので、これは、後日の検討としておく。

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress