変わった
Mac使い
渡邊鼎の!言いたい放談!
 

97:68Kマック用G3アクセラレーター・カードの可能性・実現法

まずは、ご存じとは思うけど、ネタを紹介。

日経Mac での記事によると、Sonnet Technologyが、68Kマシン向けG3カードを計画
98年夏の出荷に向けて現在開発中 とのことであった。

製品の詳細は明らかにしなかったが,98年夏ごろの出荷を目指し,「Macintosh Quadra」シリーズ向け開発中。

「技術的にはすべての68Kマックに適用可能。市場の要求があれば他の機種も検討する」とのこと。

Sonnet社の68Kマック向けG3アクセラレーター・カードは,同社がかねてから開発を進めていたQuadraシリーズ向けのPowerPC 60xアクセラレーター・カードがベースになっている。


68Kマックに搭載されているToolbox ROMは68Kコードだけで書かれており,本来PowerPCマシンでは使えないはずだ。そのため「68Kマシン向け750カードは不可能か,できても非常にパフォーマンスの悪い製品になり意味がない」(Newer Technology社上級副社長兼CTOのRoger Kasten Jr.氏)という
意見が支配的だ。

かつて米DayStar Digital社が「Turbo 601」というPowerPC 601を使った68Kマシン向けアクセラレーターを出荷していたが「あれはAppleからROMのライセンスを受けたから実現した。現在のAppleの状況を見ると再びROMライセンスを行うとは思えない」(NewerのKasten Jr.氏)

この点についてFarnsworth社長は「そのままではROMに問題があるのは事実。だが,詳しくは説明できないが我々はこの問題を回避する手法を開発した。他のベンダーはそれを知らないだけだ」と自信を見せる。

ってな話があったのです。 で、どうやればこれが実現できるか、考えてみました。

まず、基本的なことから。

Macは、CPU、ROM、DRAMがあり、電源立ち上げ後は、ROMをまず読み始めます。DRAMはなにも有意なデータはありません。ROM上のデータを読み、この値により決まるアドレスから、プログラムを動かそうとします。この最初のプログラムで、ある程度のハードチェックや、IO機器のチェックを行い、EEPROMに書き込まれている、Boot装置からOSなどを読みだそうとします。

読み出せないとき、いろんな装置をbootできるかやってみる。どうしても読めないとき、おなじみSadMacが出て、止まる、という感じだと思います。

また、ROMが遅いときなどは、はじめの頃にROMからDRAMにプログラムをコピーしてDRAMで実行させる場合もあるでしょう。

HDなど、外部記憶装置から、プログラムを読み出してDRAMに書き込む(ダウンロード)する方式は、プログラムがバージョンアップするときにROMを変えなくてよいメリットがあり、また、ROM内のBootプログラムを最低限にして、さらに高級な仕様のBootLoaderプログラムを落としてきて実行させ、最終的なOSをLoadし実行させる、という(ブートストラップローダー)方式も、UNIXなど昔から使われています。

なにしろ、ROM内のプログラムが即実行できる状態でないと、上記の動作はしません。当たり前ですが、そのCPUの機械語がROMに入ってないと、思うとおりの動作をしませんね。

で、68Kマシンというのは、ROMには68K系のBootプログラムの機械語データが書かれている状態なわけです。それを単純にPPCをつなぐと、PPCが電源ON直後読みだそうとしているのはPPCの機械語なので、68Kの命令が読み出されて、暴走しちゃうわけです。

これをうまく解決すれば、68Kマック用G3アクセラレーター・カード が実現できるわけです。(たぶん・うふふ)

 

で、これを回避する手が、何種類かあるでしょうが、まず、暴走しないようにしないといけません。すると、電源ON直後、別に用意したPPCの機械語が書かれているROMが読めるようにしないといけないわけです。で、いろいろやって、これが出きるようにします。例えば、ON直後0番地に、PPC-ROMが見えるようにアドレスバスの一部を切り替え、このROMでPPCを実行させます。後に、ハード的に切り替えるとか。

立ち上げはこれで暴走しなくなりましたが、その後のハ−ドチェックや外部記憶の読み出しなどが、やはり、68Kの機械語で書かれているROMでは、単純には使えません。もちろん、ROM内には、Boot部だけではなく、MacのTOOLBOXといわれる、プログラム群が入っています。これは、Apple社が作り、他社にライセンスしないソフト/ROMチップであり、上記DayStar Digital社が「Turbo 601」でライセンスできたのがこのROMです。これは、ライセンスを他社に与える方針だったのでできたわけで、去年8月から方針を変えて、互換機を閉め出したのはご存じでしょう。それで、今後は、殆ど不可能と言われています。

で、68Kマシンのアップグレードだけを考慮すると、その実行マシン自身には、Apple製のROMがついているわけなので、ライセンスはすでにあると思えるわけです。なので、68Kの機械語のROMしかないとき、PPCでそれを実行できるようにすればよい、ということになります。

68Kの機械語を、PPCで実行する手法がまずありますが、PPCの機械語のROMを作る手もあります。

まず、PPCの機械語のROMを考えます。窓機も同様のBOOT-ROMが必要です。
これには、ご存じ、当初IBMが作ったIBM-PCのBIOS-ROMチップがあって、同様に互換機が作れなかったのを、biosメーカーが、これをコピーでなく、コンパチのものを完全に自前で開発して、裁判闘争の後、公に認められました。IBM-PCのハードウェアマニュアルに、BIOSのソースが載ってたぐらいですから、互換なBIOSを作るのも少しは楽だったかもしれません。
互換機メーカーがBIOSが自前で作れても、MacOSをAppleは正式には売ってくれないので、OSバンドル状態では互換機を売れません。で、最悪、ハードを買ったユーザーが、市販のMacOSを買ってインストールして使うという手になるのです。

同様に、入出力仕様を合わせて、Boot,ToolBoxのROMを作れば、まずなんとかなるでしょう。でも、もう一つ問題があったと思いますToolBoxの版権だったか、ちょっと忘れましたが。ToolBoxの入出力仕様そのものの権利だったと思います。

ま、この辺は詳しく覚えてないのですが、去年の8月頃、互換機つぶしの話が華やかだった頃、いろんなところで議論されていたので、ご存じの方も多いでしょう。

ま、なにしろ、各互換機メーカーはAppleのライセンスがとれないと、互換機を作れない、商売にできないと言う状況は今も変わらないわけです。IBM-PCの時との違いは、ハードがIBMOSがMicroSoftと別会社だったので、BIOSの版権さえ問題がクリアすれば、OSが入手できたところです。

でも、もうすでに68K用のROMを内蔵している、G3などへのUpGradeボードの場合は、これは問題無い気がします。

PPCの機械語のROMで実行できれば、あとは、元々ついてるROMのアドレスを見れないようにハードでごまかしたりとか、適当にやればいいわけです。

 

次に、ROMをそのまま使用する方法です。もちろんBoot時は,PPCの機械語のROMが必須です。で、ToolBoxの機能を実行しようとするとき、次の何種類か方法があります。

1・インタープリター   68系の機械語を実行するエミュレーター。これまでMacを68KからPPCに移行するときにAppleで作られた68Kエミュレーターはこれで、これを別に作るわけです。当然、10倍も遅くなるでしょうが、一番最低の部分の入出力を駆動するデバイスドライバを、PPC命令で作っておき、エミュレータの実行時にコールすると、ある程度速くなります。

上記、ニューワーテックが言ってるのはこの、インタープリタ方式だろうと思います。遅いって言ってんだから。

2・逆コンパイラー    電源立ち上げ時に、ROMをすべて解析して、PPC命令になるようコンパイルする。こういう手法があるとは、昔聞いたのですが、今もあるのかな。昔聞いたのは、86系の命令の市販のアプリケーションを購入し、PCでなく、SUNなどの別のCPUで実行させたい。このとき、インタープリターでなく、逆コンパイラーで、ある程度もとのソースコードまで戻して、ターゲットの機械語になるようコンパイルする、というものだったと思います。これは、アプリケーションソフトのメーカーから、いちゃもんがつき、結局売り出されなかったという記憶があります。別のCPU用のソフトが売れるチャンスを逃されてしまった(販売チャンス)、というようなものだったと思います。(または、購入ソフトの、使用許可ライセンスの中の、リバースエンジニアリングの禁止事項違反てのもありますね)。
でも、このような技術は確立しているわけで、やろうと思えばできるでしょう。

やるっていっても、なかなか実行する人は現れないでしょう。市場を奪われると危機感を感じたら,Appleは裁判闘争を始めるでしょうから。資力がないと、なかなかやりきれないと思います。やる会社は、この辺は十分調査してやるんでしょうけど。

3・2種類の機械語を実行できるCPUを作る。  IBM、Motorolaならできます。IntelもMercedでやろうとしてますよね。Motorolaだって、プロセスルールが進み、より小さく作れるようになって、その分他のものを入れられるようになって、Altevec など、入れるようになっています、68Kをそのまま入れちゃっても入るんじゃないの68000なんて、68000個のトランジスタって言われてたじゃない。マイクロコードを実行して、68系命令を実行したっていいじゃないですか。

ま、でも、これは、先の話ですね。

ってな感じで、実現できる。・・・・かも・・・・・

この項、終わり。


[Home] [Linkし放題] [Fleamarket]