« RGB-12 | Main | RGB-13 »

2004.08.23

情シス1.1:CPUアーキテクチャ(フェッチとデコードって?)

ANの試験勉強で、どうにも午前問題の勉強が退屈に思う。

ANの午前問題は
・コンピュータシステム
・システムの開発と運用
・セキュリティと標準化
・情報化と経営
の4分野なのだが、最初に選んだ参考書はCPUの動作原理を5ページでCPUの動作原理から高速化技法(RISCとCISC、パイプライン)マルチプロセッサを駆け足で紹介する。

アイテックライブブックスというシリーズは、講義で喋ったまま本にした感じで、頭に入って来やすいが、それでも、試験にしか出てこないような言葉ばかりである。国家試験の参考書という手前、特定のメーカーの製品名とかを入れたりするのは問題あるんだろうか。

というわけで、情シスに出てくる用語が、実際の製品で使われている例などを、Webで見つかった記事を引用しながら紹介してみようかと思う。

(多分、連載になると思う。始めたばかりの50音ブログそっちのけで)

--

最初はCPUの動作原理。

参考書では

IF…命令フェッチ ID…デコード OA…オペランドアドレスの計算 OF…オペランドフェッチ EX…命令の実行 RS…演算結果の格納

と書かれている。フェッチやデコードが何を意味するのかはわからなくない。
でも、実際の製品がフェッチやデコードをしてるんだろうか。「それは基本で、今は違うんだよ」という話だったら勉強する意欲もなくなってしまう。

というわけで、とりあえず検索してみた。

頭脳放談 第1回 Pentium IIIとAthlonなるモノ

では、PentiumとAthlonの違いでデコーダの話が出て来る。

/*


インストラクション デコーダとは、命令解読器と訳されるが、0と1の並びである機械語命令を解読し、どのような仕事をしたらよいのか、プロセッサが認識する最初のステージなのである。エンジンにたとえれば、インストラクション デコーダは吸気装置のようなものと思えばいいだろう。

(略)

Pentiumより前のプロセッサには、インストラクションデコーダが1つしかなかったことを考えると、Pentium以降はエンジンにターボ チャージャがついたようなものである。ガンガンと命令を吸い込むことができる。しかし、AthlonとPentium II/IIIではこのターボチャージャの出来がちょっと違う。Athlonはシンメトリ(同じ機能のものが並んでいる。実際には中くらいに複雑な命令を解読できるインストラクションデコーダが複数ある)なのに対し、Pentium IIIは、シンメトリでない(ハードをけちって簡単な命令だけデコードできるデコーダを2つ並べ、中くらいに複雑な命令までデコードできるデコーダは1つしかない)。そのためPentium II/IIIは、レジスタ間オペレーションといった簡単な命令を主体とした最適化(Pentium II/III用にコンパイル)を行ったコードでないと性能が出にくいと言われている。一方のAthlonは、486やPentiumの頃にコンパイルされたようなコードでも性能が出るハズ、という議論になる(つまり、昔のプログラムでもAthlonは速いかも、ということ)。

*/

最初から、素晴らしい記事を見つけることができてラッキー!
この記事の作者は日本で数少ないx86のアーキテクトだとのこと。

この方の記事は、本当にためになるので、ぜひ原文を。
(私も引用を最小限にとどめたいので)

--

オペランドアドレスの計算(OA)に関係あるかな、と思うのが次の記事

Windowsの歴史、メモリの歴史 (1)

/*


8086は、AX、BX、CX、DX、SI、DI、BP、SPという8本の16bit汎用レジスタを持っている(AX~DXは8bitずつ半分に分けて使用することも可能)。各レジスタは命令によって用途がある程度決まっており、汎用性が低いのであまり使い勝手はよくないが、これは8080(およびZ80)のアーキテクチャをそのまま引き継いだからである。実際、8080のアセンブリ言語プログラムをそのまま8086のアセンブリ言語に変換するという変換ソフトウェアも用意されており、既存の8080ユーザーにとっては移行がしやすかった。

 しかしレジスタは16bit幅しかないので、そのままでは64Kbytes以上のアドレス空間を指し示すことができない。そこで考え出されたのが「セグメント方式」というアドレッシング方法である

*/

こちらも原文を見ていただかないとでしょう。
8086プロセッサが80386に進化するまでの工夫について書かれていて、仮想記憶を紹介する際に、再び紹介したいと思う。

--

最初にフェッチについて。

マイクロプロセッサの25年

/*


分岐予測機能は PowerPC 601(1993 年)から搭載された.一般的に,5~6 命令に1回は分岐が生じるので,分岐予測は重要になった.予測が可能になると命令フェッチを止め,分岐命令を解読し命令フェッチの流れを変え,プロセッサに命令を供給し続けることが可能となる.

(略)

80486 や第1世代の RISC プロセッサでは,分岐は常に成立しないという前提で命令 フェッチを行っていた.その場合の予測率は 40% ぐらいであった.

(略)

Super SPARC では逆に分岐は常に成立するという前提で分岐予測を行い 50% の予測率を得た.フェッチした命令列に分岐命令があると現在の命令フェッチを止め分岐先から4命令分フェッチしバッファに貯え,分岐が成立したらバッファの内容を命令デコーダに送った.条件が成立しなかった場合には元の命令フェッチを再開する.また,飛び先が後方にあれば分岐と判断すると予測率は 65% ほどになる.

*/

電子情報通信学会のページに載っていたこの記事も、読むだけでコンピュータアーキテクチャの復習になりそうなので、何回か紹介することになると思う。


--

なんとなく、情シスに出てくる用語で、各社がしのぎを削りながら性能強化している雰囲気が伝わったでしょうか?

次回はRISCとCISCについて書かれている記事を紹介したいと思います。

|

« RGB-12 | Main | RGB-13 »

試験対策」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference 情シス1.1:CPUアーキテクチャ(フェッチとデコードって?):

« RGB-12 | Main | RGB-13 »