コンピュータ・アーキテクチュア第9回

               (9)2016.12.5
藤木 文彦


 CPUに命令を実行させる仕組み

  16ビットCPU 8086 の命令体系
(今の64ビットCPUでは命令が拡張されているが基本構造は変らない)

 プログラムの実行過程


 ここで、具体的に、CPUが命令を実行する様子を、簡単な例で説明しましょう。

 「4000番地のデータと、4004番地のデータを加えて、結果を、4008番地に書き出す。」

 という命令があったとします。
 これを、次のように書くとします。( [ ] は、そのアドレスにあるデーを現しますが、詳細は後で説明します。)

 [4000] + [4004] −> [4008]

CPUは、次のような順序で命令を実行していきます。

(1) IPレジスタ(次に実行する命令のアドレスを示すレジスタ。)の示すアドレスを、命令読み込み位置として指定する。
(2) 命令を読み込み、解釈する。
(3) データの読み込み位置を示すアドレスレジスタを指定する。
(4) データを読み込むアドレスを指定する。
(5)(6) 指定のアドレスから、データを、汎用レジスタに読み込む。
(7) ALUに指定の演算を指示
(8)(9) 指定の汎用レジスタの内容をALUに送って演算を行う。
(10) 演算結果を汎用レジスタに書き戻す。
(11) 汎用レジスタのデータを、指定のアドレスに書き戻す。

(注)上記の動作は、1つの命令では出来ず、複数の命令を実行することになりますが、煩雑になるので、命令の読み込みは、最初の1回だけ掲げました。











 86系CPUの進化

 現在のパソコンで使用されているCPUの主流である、Pentium4が、どのように進化してきたのかを表に掲げました。
(もちろん、他の種類のCPUもありますが、ここでは、省略しました。)

年代 ビット数 CPU型 トランジスタ数 クロック
1971 4004 2250 0.75MHz
1972 8008 3500 0.5MHz
1974 8080 6000 2MHz
1975 8085 6500 3MHz
1978 16 8086 13万 5−8MHz
1982 16 80286 13万 6−16MHz
1985 32 80386 28万 12−33MHz
1989 32 80486 120万 50−66MHz
1993 32 Pentium 330万 60−266MHz
1997 32 Pentium? 750万 450MHz
1999 32 Pentium? 950万 500MHz−1GHz
2000 32 Pentium4 2350万 1.3GHz−3.6GHz
? ?   ★ ? ?
? ?  ★★ ? ?
? ★★★ ? ?

ビット数は、一般的に考えられているビット数である。80486以降、外部バス幅は64ビットになっているが、内部レジスタが32ビットなので、32ビットCPUに分類する。
トランジスタ数、とは、内部の回路を構成する素子で、トランジスタに相当する部分の数をさす。
クロックは、大体のクロックであり、多少の幅がある場合もある。


 現在のPentium4 は、それ以前の物より、処理能力が向上しているとはいえ、基本的な設計思想は、80386に於いて提唱されたものを引きついでいる。そのため、80386以降のCPUは、内部処理の形式の変化や、命令の充実、速度の向上などがあるものの、「386アーキテクチュア」と呼ばれている。

 86系CPUの命令体系


 86系CPUの命令体系の基本は、8086CPUによって作られ、その後、命令を拡張する形で発展してきたが、ここでは、その基本となる、8086CPUの命令を基本に、CPUでは、どのような命令が実行されているのかを解説していく。

 Javaにしても、C言語にしても、どのような言語で書かれたプログラムも、最終的には、CPUの分かる言語「機械語」に変換されてから、実行される。この、各言語を、機械語に変換する作業を「コンパイル」という。
 なお、「機械語」を直接人間が書くのは困難なので、機械語を、人間のわかりやすい形式でプログラムできるように作られた言語を「アセンブリ言語」という。

 ここのリンクからの書籍コピーを用いてアセンブリ言語の概要を説明します。


8086CPUの命令体系

 なお、この命令解説は、CPUの動作を理解するために重要な問題を多数含んでいるので、来週、再来週も、引き続き行います。

 各種参考ページへのリンク


第4世代coreアーキテクチュア(2013年) i7
http://www.nikkei.com/article/DGXNASFK0402N_U3A600C1000000/

CPUのまとめ




CPUの構造などについての教材を書いてある人のページリンク
http://www.way-on.com.tw/PCbasal/kiso/cpu6.htm

http://www.takenet.or.jp/~ichirou/shittakaburi/c/language/program.html

http://www.calvadoshof.com/Advocate/2007No03.html

4コアCPU(2006年)
http://pcnomori.blog.fc2.com/blog-entry-139.html

私のページと似ている(鹿児島大学)
http://www.ibe.kagoshima-u.ac.jp/edu/expI/theme13/

AMD2013年のロードマップ(読みこなしの練習に使える)
http://pc.watch.impress.co.jp/docs/column/kaigai/20121121_574241.html

AMD CPUの構造
http://pc.nikkeibp.co.jp/article/news/20121002/1065306/?SS=imgview_sp&FD=-652795730

i5 内部構造の記事(2010)
http://news.mynavi.jp/special/2010/clarkdale/index.html

CPU と GPU  
http://ja.wikipedia.org/wiki/Graphics_Processing_Unit

PC用語いろいろ解説 DDR3など
http://kakaku.com/magazine/062/p01.html

X86-64アーキテクチュア(分岐予測)(2002年)
http://news.mynavi.jp/news/2002/06/27/10.html

 今日の課題 第9回 12.5



タイトル  arch9         宛先 fujiki.kougei@gmail.com


宛先   fujiki.kougei@gmail.com
タイトル arch9

課題:

(1) CPU進化の表の最後の部分の ★ ★★ ★★★ の部分には、どのようなCPUを入れたらよいか。

(2) 一般に、メモリ上では、プログラムとデータは、別の領域に置かれる。なぜ、そのようにするのか。一緒にすると、どのような問題があるのか、考えて述べなさい。

(3) 上の図に書かれている略号の、 IP とは、何をするものか。ALUとは、何をする物か、説明しなさい。

inserted by FC2 system