ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2006-3-18 23:11
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
ウォーミングアップ後のもろもろの感想
ウォーミングアップをしている間にあれこれ昔の記憶とかが不思議に良くよみがえってきた。

20年前に最初に就職した会社で国産32bitスーパーマイコンを搭載したCPUボードを開発するプロジェクトが同じフロア内に発足した。私はその時ハードウェアのリードデザイナがどんな風に設計をしているのか興味があって時々そっと遠くから見ていた。当時はパソコンも初代のPC9801がある程度で、ハードウェア設計者はコンピュータの力をいっさい借りずに回路を設計していた。これは当時は当たり前のことだった。

ハードウェア設計者は見ているとほとんど机の上でメモ用紙になにか升目の入った四角形を書いてはその中に小さな長方形やら四角形をマーカーで描いては別のノートに何か設計情報を書き写していた。

後に自分でディジタル回路設計を独学した時にそれがカルノーマップというものだったということを知った。古いディジタル回路設計の教科書にはおそらくどれにでも書いてある実用的な論理回路合成方法である。直感的でありかつ手順が簡単であるため人間が行うにはとてもいい方法である。他にもクワイン・マクラスキー法といのが並んで紹介されているものもあるが、こちらは私もやってみたが人間が行うには煩雑すぎてアルゴリズムが複雑で途中で間違いをして正しい結果が得られることがなかった。おそらくコンピュータにやらせるには好都合なのかもしれない。標準LSIを使って回路を構成していた昔はカルノーマップがもっぱら用いられていたのである。

マイクロプロセッサーやPLDが一般的になると以前は標準LSIを使って組んでいたプロセッサー周辺の雑魚ロジックもPLDにひとまとめする時代になり、この段階で人間が論理圧縮する必要は無くなってしまった。PLDのコンパイラーが真理値表レベルから一気に最適なPLDの内部ロジック配線情報にマッピングしてしまうからだ。もはや誰もコンパイラーと最適化の優劣を競おうとする人はいなくなった。せいぜいロジックハザード(ヒゲやスパイク)を回避するための冗長論理を付け加える時に古いカルノーマップを持ち出す程度である。カルノーマップはロジックハザードが生じる条件を見つけるのにも大変重宝する。

30年以上前にすべて標準LSIでコンピューターレベルの回路を設計しようとしたらやはりカルノーマップに頼らざるを得なかったろう。実際そうしないと短期間に少ない部品数の回路を設計できないからだ。XeroxのPalo Alto研究所で30年前に作られたパーソナルコンピュータAltoも標準LSIと当時出たばかりのIntelのDRAMチップを使っていた。その当時既にEthernetとVGAクラスの高解像度グラフィックアダプターにマウスとキーボードを備えていたのは驚きである。30年前に今のパーソナルコンピュータの原型は既にあったのである。当時のIntelのDRAMはメモリーセルチップとセンスアンプが別チップだったのも驚きである。それほどICの集積度は当時まだ低かったということだ。その後日米がDRAM開発競争に突入してIntelは早々にDRAMから撤退して今日がある。

今ならAltoもFPGAにすっぽり入ってしまうのかもしれない。マイクロプログラミング方式のCISCアーキテクチャだからちょっとそのままでは難しいかもしれない。でも回路規模は写真を見る限りではずいぶん小さい感じがする。ALUだけで基板一枚使っているし。

夢としては仮想記憶をサポートしたCPUをFPGAを使ってつくれたらいいなと思う。たぶんやっている人は少ないはず。Sun Microsystemも最初は仮想記憶をサポートしないMC68000を二つ使ってむりやりデマンドページングとかを実現していた。その後例外発生後に命令を再実行可能なように仕様変更されたMC68010が出てCPUは一つで済むようになった。MMUとかもCPUに内蔵されるまではカスタムで外付けされていたはず。今からするとしょぼいものだった。でも4.2BSDベースのSunOSは瞬く間に仮想記憶をサポートしたUNIXを世間に知らしめるものとなった。元祖のAT&TのUNIXはまだサポートしてなかったからね。あわててSystem VのR3で仮想記憶をやっとサポートした。その前のR2はVAX版も仮想記憶サポート無しなのは知る人ぞ知るところ。

やはりメモリが数MBも使えてswappingも仮想記憶も無いと今時はつらいものがある。20年前に飛ぶように売れたDECのVAX/VMSは512KBのメインメモリで複数ユーザーで利用できた。もっともVAXは1ページが512バイトとディスクのセクターサイズと同一で粒度が細かかったからそれが可能だったのかも。カーネルはすべてアセンブラでかかれていたのでノンページド部は100KBしかメモリを占有しなかった。残りはすべてページブルなので参照されたときにページングされる。

AppleのMachintoshもはじめは仮想記憶などなくて少ないメインメモリでGUIアプリケーションが動作するというのが注目をあつめた。次第に大きなアプリケーションが開発されるようになって、そうしたアプリケーションを使うにはメモリを山ほど増設しなければならず次々と大きなメモリが搭載できる上位機種に買い換えが必要だった。ある時点でついに仮想記憶をサポートして複数の巨大なアプリケーションを同時に使うことが可能になった。

WindowsもNTになってやっと仮想記憶を使うようになった。それ以前の32bitアプリケーションはMACと一緒で無理矢理メモリにロードして動かしていたようなものだった。

組み込み用でもメモリがリニアーにしか管理できないCPUだと複数のアプリケーションを入れ替わり立ち替わり走らせる用途にはちょっとつらいものがある。仮想記憶といわなくてもページ単位やセグメント単位でメモリを細かい粒度で管理できるとうれしい。

DECの爆発的に売れたミニコンピューターPDP-11も初期のIntel x86がまねたようなセグメント方式のメモリ管理をサポートしていた。それによってマルチタスク・マルチユーザーなシステムにとても重宝した。現在の組み込み用マイコンはメモリコントローラとかを内蔵しているので自分でメモリ管理ユニットを外付けしようとしても無理なんだよね。DRAMとの間につけても仕方ないし。CPUの仮想アドレスとメモリコントローラの間に入れないといけないからねMMUは。

やはり自分で作るしかないのかも。

話を元に戻すと、ハードウェア設計の世界ではコンピューターの力を最大限に活用してもう人間が論理圧縮とかしなくても良く、もっと大きな規模でシステムを考えるのに注力できるようになったのはいいことだ。

ソフトウェア設計者はさすがにすべてアセンブラでかく必要はなくなったといえ、細かいところに足をすくわれて泥まみれな状態から抜け出せていない気がする。もっとコンピュータを信じて活用しないといけないと思う。

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   デザインのウォーミングアップから webadm 2006-3-18 13:43
     回路図入力してみた結果 webadm 2006-3-18 13:44
     HDLで入力してみた結果 webadm 2006-3-18 22:02
   » ウォーミングアップ後のもろもろの感想 webadm 2006-3-18 23:11

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索