アカウント名:
パスワード:
直接的には、それだけバイナリ互換が重要だったからなんだけれども386のアーキテクチャ設計が非常に優秀だったからってのがあるでしょう。
で、ARMがx86を殺すかどうかなんとも言えないと思うけどな。
386が優秀ではないとは言わないが、i686で採用した内部RISCによって延命できたと思うよ。別の見方をすると、CPUシリーズで異なるuOPを吸収しているのがx86じゃないかな。生物界でも、優秀な種が生き残っているというわけでもなく、柔軟性があったからという例は多い。
私はi386より68Kの方が優秀だったと思う。
> 私はi386より68Kの方が優秀だったと思う。i386比でなら68kは善戦していますが、最短命令が1ワード(2バイト)と言うのは、i386の最短命令長1バイトと比べてメモリ貧乏だった当時はコード密度の点で厳しかったです。また、i386は自力で仮想記憶をサポートしていますが、68kは68010に外部MMUを追加しなければ仮想記憶をサポートできなかったり、命令セットが32bit化けを最初から想定しているなど掲げた理想は高かったのに比べて実装が追いついていない面もありました。
アーキレベルの残念な点は・CLR命令でRMWバスサイクル発生させる( MOVEQ #0, DST で十分)・相対ジャンプのオフセットが何故バイト?奇数だとアドレスエラーになるのでワードで指定すれば倍の範囲にジャンプできた・直交性のあるアーキを標榜する割にデータレジスタとアドレスレジスタが別などなど、それほど良いプロセッサかどうかは疑問。
結局、i386と競ったというのが伝説の原因?
> ・相対ジャンプのオフセットが何故バイト?奇数だとアドレスエラーになるのでワードで指定すれば倍の範囲にジャンプできた
PC相対アドレッシングもバイト単位でしょ同じ加算器を使ってんのよ
> ・直交性のあるアーキを標榜する割にデータレジスタとアドレスレジスタが別
単一の大きなレジスタファイルは遅い、アドレッシングに4ビット必要になり命令のレジスタ指定フィールドが足りなくなる、分割するとバンド幅倍増->データとアドレス計算を並行に実行可能とちゃんと考慮した上での設計になっている
x86も同じくよく練られた設計だし、教条主義的でぼくのかんがえたさいきょうのマイコンみたいなところのある68kよりもx86のほうが美しいとさえ言えるね
> PC相対アドレッシングもバイト単位でしょ> 同じ加算器を使ってんのよ
LEAも同じ加算器使ってますよね
> 単一の大きなレジスタファイルは遅い、アドレッシングに4ビット必要になり命令のレジスタ指定フィールドが足りなくなる、分割するとバンド幅倍増->データとアドレス計算を並行に実行可能とちゃんと考慮した上での設計になっている
それこそLEAを駆使したり、この特徴を活かすのが高速化の肝でした。
> x86も同じくよく練られた設計だし、教条主義的でぼくのかんがえたさいきょうのマイコンみたいなところのある68kよりもx86のほうが美しいとさえ言えるね
全面的に同意見です。
同時代のZ8000あたりと比べてもx86は、いろいろな意味で現実的な選択の積み重ねで出来てると思います(レジスタごとに性格付けがあるのは意外とコード書きやすいし)。
>(レジスタごとに性格付けがあるのは意外とコード書きやすいし)。
これ本当にそうなんですよねえ。私も6809 -> 68000(x68k)と来て68のアセンブラが好きなんですけど何やら制約があったほうがコードが書きやすいってのは実感したことがあります。
脱サラした後、仕事があまりなかったので、暇に任せてDOS上で86のアセンブラで短いコードを書いて遊んでたんだけど(いわゆる常駐プログラム(死語)とかそういったもの)意外に楽しいしサクサク書けるんで、なるほどなあと思ったですね。レジスタが少なく性格付けされている利点ってあるんですよね。
なんで書いたこと無いけどRISCみたいに汎用レジスタが大量にあるCPUは多分きっと書きづらいと思う。
レジスタに性格付けがあるほうが、誰が書いても同じコードを書くことになりますね。
レジスタ番長なプロセッサは、コンパイラが書きやすいってのはあると思います。
68kもSPやFPまでアドレスレジスタなので必要以上にアドレッシングモード増やす必要があったり(スタックポインタ相対が欲しいだけなのにアドレスレジスタ相対を用意することになるとか)
(スタックポインタ相対が欲しいだけなのにアドレスレジスタ相対を用意することになるとか)という事実はない
説明が要りますねSP=A7 なんですよA7でけで有効なアドレッシングモードというのはなくてアドレスレジスタ間接アドレスレジスタ間接ディスプレスメント付きアドレスレジスタ間接インデックス付きディスプレスメント付きなどスタックフレームを操作していのにSP間接etcでなく、すべからくアドレスレジスタ間接etcを用意してんですよ(用意したはのはモトローラのプロセッサアーキテクト)
これが直行的なレジスタ・アドレッシングモードが目的化しているといわれる所以です。
68kに強い影響を与えたと思われるPDP-11ではスタックポインタもプログラムカウンタも汎用レジスタで、即値もPCのポストインクリメントモードで実現したりしていますhttp://ja.wikipedia.org/wiki/PDP-11 [wikipedia.org](PCを汎用レジスタにするのはDECの特許)
当時の少ないリソースでは合理的でよくできた設計だと思いますが、スタックや命令フェッチというのは抽象度が高いものですから、こういう形で一般化してしまうと後々の最適化の余地を減じてしまうことになります実際にA7はシステムスタックとして使い、他のレジスタをユーザースタックとして使う処理系もありましたこうなるとスタックキャッシュをハードウェアで用意するのは難しい
「そういう点で」、x86は68kよりも優れた設計になっていると思う次第です68kは例えば32kよりも圧倒的に速く、モトローラの設計陣も優秀だったことは疑いようもないので、半ば偶然の産物だと思いますが、浪花節の人としては貧乏な新興インテルvsお金持ちの名門モトローラでは前者を贔屓したくなります。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
そりゃあれですよ (スコア:2)
直接的には、それだけバイナリ互換が重要だったからなんだけれども
386のアーキテクチャ設計が非常に優秀だったからってのがあるでしょう。
で、ARMがx86を殺すかどうかなんとも言えないと思うけどな。
Re: (スコア:0)
386が優秀ではないとは言わないが、i686で採用した内部RISCによって延命できたと思うよ。
別の見方をすると、CPUシリーズで異なるuOPを吸収しているのがx86じゃないかな。
生物界でも、優秀な種が生き残っているというわけでもなく、柔軟性があったからという例は多い。
私はi386より68Kの方が優秀だったと思う。
Re: (スコア:2)
> 私はi386より68Kの方が優秀だったと思う。
i386比でなら68kは善戦していますが、最短命令が1ワード(2バイト)と言うのは、i386の最短命令長1バイトと比べてメモリ貧乏だった当時はコード密度の点で厳しかったです。
また、i386は自力で仮想記憶をサポートしていますが、68kは68010に外部MMUを追加しなければ仮想記憶をサポートできなかったり、命令セットが32bit化けを最初から想定しているなど掲げた理想は高かったのに比べて実装が追いついていない面もありました。
アーキレベルの残念な点は
・CLR命令でRMWバスサイクル発生させる( MOVEQ #0, DST で十分)
・相対ジャンプのオフセットが何故バイト?奇数だとアドレスエラーになるのでワードで指定すれば倍の範囲にジャンプできた
・直交性のあるアーキを標榜する割にデータレジスタとアドレスレジスタが別
などなど、それほど良いプロセッサかどうかは疑問。
結局、i386と競ったというのが伝説の原因?
Re: (スコア:0)
> ・相対ジャンプのオフセットが何故バイト?奇数だとアドレスエラーになるのでワードで指定すれば倍の範囲にジャンプできた
PC相対アドレッシングもバイト単位でしょ
同じ加算器を使ってんのよ
> ・直交性のあるアーキを標榜する割にデータレジスタとアドレスレジスタが別
単一の大きなレジスタファイルは遅い、アドレッシングに4ビット必要になり命令のレジスタ指定フィールドが足りなくなる、分割するとバンド幅倍増->データとアドレス計算を並行に実行可能
とちゃんと考慮した上での設計になっている
x86も同じくよく練られた設計だし、教条主義的でぼくのかんがえたさいきょうのマイコンみたいなところのある68kよりもx86のほうが美しいとさえ言えるね
Re: (スコア:2)
> PC相対アドレッシングもバイト単位でしょ
> 同じ加算器を使ってんのよ
LEAも同じ加算器使ってますよね
> 単一の大きなレジスタファイルは遅い、アドレッシングに4ビット必要になり命令のレジスタ指定フィールドが足りなくなる、分割するとバンド幅倍増->データとアドレス計算を並行に実行可能とちゃんと考慮した上での設計になっている
それこそLEAを駆使したり、この特徴を活かすのが高速化の肝でした。
> x86も同じくよく練られた設計だし、教条主義的でぼくのかんがえたさいきょうのマイコンみたいなところのある68kよりもx86のほうが美しいとさえ言えるね
全面的に同意見です。
同時代のZ8000あたりと比べてもx86は、いろいろな意味で現実的な選択の積み重ねで出来てると思います(レジスタごとに性格付けがあるのは意外とコード書きやすいし)。
Re: (スコア:3)
>(レジスタごとに性格付けがあるのは意外とコード書きやすいし)。
これ本当にそうなんですよねえ。
私も6809 -> 68000(x68k)と来て68のアセンブラが好きなんですけど
何やら制約があったほうがコードが書きやすいってのは実感したことがあります。
脱サラした後、仕事があまりなかったので、暇に任せてDOS上で86のアセンブラで
短いコードを書いて遊んでたんだけど(いわゆる常駐プログラム(死語)とかそういったもの)
意外に楽しいしサクサク書けるんで、なるほどなあと思ったですね。
レジスタが少なく性格付けされている利点ってあるんですよね。
なんで書いたこと無いけどRISCみたいに汎用レジスタが大量にあるCPUは
多分きっと書きづらいと思う。
Re: (スコア:2)
レジスタに性格付けがあるほうが、誰が書いても同じコードを書くことになりますね。
レジスタ番長なプロセッサは、コンパイラが書きやすいってのはあると思います。
68kもSPやFPまでアドレスレジスタなので必要以上にアドレッシングモード増やす必要があったり
(スタックポインタ相対が欲しいだけなのにアドレスレジスタ相対を用意することになるとか)
Re: (スコア:0)
(スタックポインタ相対が欲しいだけなのにアドレスレジスタ相対を用意することになるとか)
という事実はない
Re: (スコア:2)
説明が要りますね
SP=A7 なんですよ
A7でけで有効なアドレッシングモードというのはなくて
アドレスレジスタ間接
アドレスレジスタ間接ディスプレスメント付き
アドレスレジスタ間接インデックス付きディスプレスメント付き
などスタックフレームを操作していのに
SP間接etcでなく、すべからくアドレスレジスタ間接etcを用意してんですよ
(用意したはのはモトローラのプロセッサアーキテクト)
これが直行的なレジスタ・アドレッシングモードが目的化しているといわれる所以です。
Re:そりゃあれですよ (スコア:0)
68kに強い影響を与えたと思われるPDP-11ではスタックポインタもプログラムカウンタも汎用レジスタで、即値もPCのポストインクリメントモードで実現したりしています
http://ja.wikipedia.org/wiki/PDP-11 [wikipedia.org]
(PCを汎用レジスタにするのはDECの特許)
当時の少ないリソースでは合理的でよくできた設計だと思いますが、スタックや命令フェッチというのは抽象度が高いものですから、こういう形で一般化してしまうと後々の最適化の余地を減じてしまうことになります
実際にA7はシステムスタックとして使い、他のレジスタをユーザースタックとして使う処理系もありました
こうなるとスタックキャッシュをハードウェアで用意するのは難しい
「そういう点で」、x86は68kよりも優れた設計になっていると思う次第です
68kは例えば32kよりも圧倒的に速く、モトローラの設計陣も優秀だったことは疑いようもないので、半ば偶然の産物だと思いますが、浪花節の人としては貧乏な新興インテルvsお金持ちの名門モトローラでは前者を贔屓したくなります。