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

               2016.11.7
藤木 文彦



 後半には、CPU動作を理解するために必要な 2進数、16進数の基礎や、命令の実行フロー、簡単な命令が、どのような論理回路で構成されているか、などを掲げてありますので、適宜参照します。



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




core i7 の構造
http://www.pasonisan.com/column/pc_cpu/09_1018_04cpu_corei7_800.html


Core i7、Core i5を理解する:まずは基礎知識

HTテクノロジーとは、



1つのCPUに一度に2つの仕事をさせて見かけ上CPUが2つあるように見せる。
Core i7、Core i5を理解する:マルチコアについて
Core i7、Core i5を理解する:HT テクノロジーとは
Core i7、Core i5を理解する:ターボ・ブースト・テクノロジー
Core i7-800、i5-700シリーズは強化されたターボ・ブースト・テクノロジー
Core i7-800、i5-700シリーズのプラットフォーム

CPUのまとめ

Core 2 Duoの特徴
Core 2 Quadの特徴
Core i7-900シリーズの特徴
Core i7-800シリーズの特徴
Core i5-700シリーズの特徴
今後(2010年)登場予定とされるCore i3とCore i9  (実際には、i9は出されていない)




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


 今日の課題 11月7日

 以下の問に答えて、メールを提出してください。

タイトル  arch500       宛先 fujiki.kougei@gmail.com
(先週勘違いして、 arch5 で出してもらったため、上記のような番号とします。)
(1) CPUの型番、 Core i7 にも、 i7 - xxxx
 のように、、型番に xxxx のような数字がついている。この数字は何を意味するものか。
(2) キャッシュメモリには、L1,L2,L3等があるが、どのような役割をするものか説明しなさい。
(2) GPUとは何か
(3) 32nmプロセス、などの、ナノメートルは、何の大きさを示すものか




 以下は、今日、進めればやります。






 2進数、16進数の基礎

コンピュータを使うときには、2進数、16進数を使用します。もうおなじみだと思いますが、念のため掲げておきます。

 8ビット

1 0 1 1 1 0 0
16ビット 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1
32ビット 0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 10 1 0 1 1 0 1 1 1
64ビット 1 1 1 10 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 ........ 1 1 1 0 0 1 0 1


10進数 − 2進数 − 16進数 対応表

10進数  2進数  16進数 
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111


 CPUの働き  数値の加算




 CPUは、メモリ上に格納されたプログラムを読み込み、解釈して、計算を行います。
 計算は、2進数で行われます。
 一度に行う計算のビット数により、
 8bit
?16bit
?32bit
?64bit

などの種類があり、現在は、ほぼ64bit のものが使われていますが、最初の実用化されたCPUは、8bitはおろか、4bitのものでした。それからどんどんと発達し、今のようなものとなっていますが、用途によっては8bitCPUが使われているものもあります。(マイコン内蔵の洗濯機、といったものは、処理することが簡単なので、使われています。)

 64BitCPUの動作の仕組みも、基本的には8bitCPUから発展してきたものであり、いきなり64bitの解説をするのは、複雑ですので、しばらくのあいだは8bitまたは、16bitCPUの動作を基本に説明していきます。



 8ビットメモリと アドレス







 CPUが2つのデータを加算する動作


 「メモリ上に置かれた 2つの数値を CPUが加算する」
という動作を、CPU内の回路の仕組みを見ながら説明します。













 加算回路の構造



 1bitの数を2つ加える計算を考える。

 0+0=0
 0+1=1
 1+0=1
 1+1=10


 桁上がりを考えた、1bitの加算は、3つの数の足し算になります。(以下の結果は自分で考えてください。)

 0+0+0=
 0+0+1=
 0+1+0=
 0+1+1=
 1+0+0=
 1+0+1=
 1+1+0=
 1+1+1= 

 加算回路を論理回路で作る




WikiPedia 加算器
http://ja.wikipedia.org/wiki/%E5%8A%A0%E7%AE%97%E5%99%A8




半加算器 (図面は WikiPedia より。以下の図面も同様)


半加算器(XOR回路を使用)




全加算器



加算器



減算器


 負の数の表現


2進数での負の数の表現は、「2の補数表現」という方法で表します。

 たとえば、8bitで負の数を表現する方法としては、下のような方法が考えられます。

A) 8bitの数に、もう1bit加えて、それで正負を表す。

  例)
 10進数の +2           0 00000010
 10進数の −2           1 00000010


B) 8bitの数の、最上位ビットを、正負を表すビットとする。

 こうしたいところですが、
  例)
 10進数の +2           00000010
 10進数の −2           10000010

C)  こうします。
  例)
 10進数の +2           00000010
 10進数の −2           11111110   (2の補数表現)




 A) の方法が、一見分かりやすそうですが、普通に使われている8bitメモリに、もう1bit継ぎ足したハードウエアを作成しなければなりませんので、実現は面倒です。
 B) の上の方法が一番わかりやすそうですが、実は、正負の数を扱う演算(計算)を行うための回路構成が複雑なものとなります。


 そこで、 C) の方法を用いて負の数を表します。
 このような表現を「2の補数表現」(この場合は、正確には2の8乗の補数というが、多くの場合ビット数が、乗数になることが自明なので省略する。)といいます。この表現の良いところは、
 「数値が正か負か最上位ビットを見ただけで(検査すれば)分かる」
 「数値が正か負かを考慮せずに同一の加算器で加算できる」
ということがあります。
 不便な点としては、人間が見たときにわかりにくいということがありますが、どちらにしても、人間が直接数値計算をする必要はないので、計算機が計算しやすいものであれば構わない、ということになります。

 2の補数表現で数値を表す


 補数の計算法



  +2 → −2 を求める例

+2 を2進数で表記    00000010

全ビットを逆転        11111101

1を足す            11111110 → −2

 今日の課題  11月 できた日の分。


 以下の(1)、(2)、(3)、(4) は、紙に書いて提出してください

(1) 2進 − 10進 − 16進 対応表を書く (0〜15)


(2) 2進 − 10進 − 16進 対応表を書く (0〜65535)

(3) 論理演算 AND OR XOR の表を書く

(4)   CPUの構造(一部)を書き、授業で説明した図を参考に

 2010番地にあるデータ ”3F” と
 2012番地にあるデータ ”2D" との加算結果を
 2020番地に保存する様子を描きなさい。




 以下の (5)、(6)は、メールで提出してください。

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


(5) 同じ性能のCPU を4台並べて使うより、4つぶんのCPUを1パッケージに納めて共有メモリを使う形式の方が性能がよくなる。その理由を考察し、5〜10行程度で書きなさい。


(6)負の数の表現

   10進数の 100、−100 を、8bit補数表現の2進数で表せ

inserted by FC2 system