コンピュータ・アーキテクチュア第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
HTテクノロジーとは、
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進数 |
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
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進数で表せ