2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

MSXハードソフトスレ2 (売買関係を除く)

1 :ナイコンさん:2008/01/24(木) 19:25:41 .net

MSXのハードやソフト、技術関係について語るスレです。


↓オクや売買に関する話はこちらの隔離スレで思う存分どうぞ。
■MSXハードソフトスレ(ヤフーオークション)■
http://bubble6.2ch.net/test/read.cgi/i4004/1201164364/





725 :ナイコンさん:2011/11/15(火) 16:43:48.49 .net
>718
基本的にR800は内部RISCであるがZ80互換命令セットなのでRISCではない。
Z80のバイナリ互換を持つので、必然的に命令セットはCISCとなる。
CISC命令体系を維持しつつRISC哲学を取り込むこの設計はIntelのComplexRISCに近い。

R800はMIPSやSH2のようにコンパイラが命令セットのディレイスロットを配置しない。
(SH2系列は工夫されているので通常ディレイスロットは目立たない)
RISCであっても、MIPSやSH2とは設計が大きく異なる。
あなたの提示した例はCISCであっても実行に違いが生じ互換性が無い。
分岐時のRISCのパイプラインの説明としても不向きだ。

加えてCISC命令体系は可変長なので、通常のRISCと異なりそれだけで命令パイプラインの振る舞いに
影響を与える。
このパイプラインの振る舞いはeZ80でも同様で、内部回路でパイプラインにディレイスロットが挿入
されている。
恐らくRenesasの78K0R・RL78系列の設計も命令が可変長なのでそれらに近いだろう。
しかし実際のパイプラインの振る舞いは設計者にしかわからない。詳細なデータが提示されていないからだ。

726 :ナイコンさん:2011/11/15(火) 16:55:05.95 .net
R800にはLD(MOVE)命令が複数存在する。R800によって新設された命令の幾つかは大きく三つに分かれる。
一つは掛け算命令(Z800互換だが、割り算は実装されていない)。この命令はクロック数が多く、
大半の命令がRISC的であるのに対し、乗算命令だけはCISC的で回路設計に問題があるように思う。

二つ目はIX,IYに対する拡張で、これはZ80の非公開命令として実装されていたものである。

三つ目はLD(MOVE)命令に対する拡張で、LD A,Hなどの機械語に三つのバリエーションを持つ。
これは同じ処理を三つの機械語から選択出来るという事を意味する。しかしアセンブラレベルでは
区別する事が出来ない。(ニーモニックが区別されておらずアセンブラも未対応の為)
違いは命令語の長さやレジスタセレクタビット列の配置の仕方だが、これらは命令デコーダに
直接影響する。つまりR800のパイプライン実行状態に依存して命令を並べ替える事で、より
最適化されたR800のコードが選択出来る事を意味するだろう。

727 :ナイコンさん:2011/11/15(火) 17:01:27.68 .net
恐らくこのLD(MOVE)命令の選択的なバリエーションは、可変命令語長(や当然分岐も含まれる)が要因の
パイプラインハザードによるレイテンシを隠蔽する為に新設されている。
なぜならこの選択は二つの意味で最終的な選択肢となりえるからだ。それはつまり、CISCを維持し
つつ、かつ、インオーダやアウトオフオーダーのような設計ではない設計においてパイプラインを
最適化する方法であろうからだ。
恐らくコンパイラによって最適化されたコードは、この選択的バリエーションを使いこなす事になるだろう。

これらの違いはR800の一つの特徴であろう。

総レス数 981
378 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200