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

               (9)2017.12.4
藤木 文彦


 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の主流である、i7,i5,i3 が、どのように進化してきたのかを表に掲げました。
(もちろん、他の種類のCPUもありますが、ここでは、省略しました。)

年代 ビット数 CPU型 トランジスタ数 クロック コア数  製造プロセス(nm)  リンク先 
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 Pentium2 750万 450MHz    
1999 32 Pentium3 950万 500MHz-1GHz  1    
2000 32 Pentium4 2350万 1.3GHz-3.6GHz    
2006 64  Core 2 65-45  https://ja.wikipedia.org/wiki/Intel_Core_2 
1998  Celelon *   https://ja.wikipedia.org/wiki/Intel_Celeron 
2008 Atom**     https://ja.wikipedia.org/wiki/Intel_Atom 
 2010    Core i3       https://ja.wikipedia.org/wiki/Intel_Core_i3 
 2008
2010
   Core I5,I7       https://ja.wikipedia.org/wiki/Intel_Core_i7 
               

* Celelon は、前モデルのCPUを廉価版に改造したもの
** Atom は、各種CPUを モバイル用に省電力化したもの

・CPUのビット数は、内部レジスタのビット数または、外部バスのビット数。配線が多くなるのを避けるために、内部は64ビット外部バスは32ビットというような時代もあったが、現在は64ビット。
・トランジスタ数、とは、内部の回路を構成する素子で、トランジスタに相当する部分の数をさす。
・クロックは、1秒に計算出来る回数(の最大)であり、多少の幅がある場合もある。(命令によって2クロック以上を必要とする物もあるから)

 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.4



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


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

課題:

教室で指示します。