コンピュータアーキテクチャ 第 6 週演算アーキテクチャ ( 続き ) ノイマン型コンピュータ 命令とは 命令の使い方 2013 年 10 月 30 日 金岡晃
授業計画 第 1 週 (9/25) 第 2 週 (10/2) 第 3 週 (10/9) 第 4 週 (10/16) 第 5 週 (10/23) 第 6 週 (10/30) 第 7 週 (11/6) 授業概要 2 進数表現 論理回路の復習 2 進演算 ( 数の表現 ) 演算アーキテクチャ ( 演算アルゴリズムと回路 ) 休講 休講 ノイマン型コンピュータ 命令とは 命令の使い方 命令セットアーキテクチャ ( 命令の表現 命令の実行の仕組 ) 第 8 週 (11/13) 第 9 週 (11/20) 第 10 週 (11/27) 第 11 週 (12/4) 第 12 週 (12/11) 第 13 週 (12/18) 第 14 週 (1/8) 第 15 週 (1/17) 中間試験 休講 ハーバードアーキテクチャ RISC と CISC 制御アーキテクチャ メモリの仕組 キャッシュメモリと仮想メモリ 割込みアーキテクチャ パイプライン 1/22-2/8 期末試験 入出力アーキテクチャ まとめ 1
コンピュータアーキテクチャ 第 3 週 復習 演算アーキテクチャ ( 演算アルゴリズムと回路 ) 2
加減算アルゴリズム 加算 減算 全加算器をビット数分並べる 2 の補数表現にして加算にする これらを合わせると加減算を両方演算可能な回路を構成できる X 3 Y 3 X 2 Y 2 加減算器の例 C SGN : 制御信号 X + Y if C SGN = 0 X Y if C SGN = 1 X C Y FA 0 C S S 3 1 X C Y FA 0 C S 1 C O S 2 x y 全加算器 (FA) s X 1 Y 1 X C Y FA 0 C S 1 S 1 c in c out X 0 Y 0 C SGN X C Y FA 0 C S 1 S 0 3
乗算アルゴリズム 前提 P = X Y を求める このとき X を被乗数 Y を乗数と呼ぶ また X を 2 進数表現した際の各ビットを x i で表す i (0,1, ) は下位から数えて何ビット目かを示す ブース法 (Booth Altorithm) 負の乗算にも対応した広く利用されている方式 負の数は 2 の補数で表現される 乗数を 2 進展開し 各ビットについてシフトと加算を行っていく 各ビットとその前のビットの値の組み合わせによりシフトと加算の動作が異なる i ビット目の動作では y i と y i 1 の組み合わせを見る 組合せは以下の 3 種類 :00 または 11 10 01 動作は加算の位置が変化する方法と加算の位置を変化させない方法で異なる 4
ブース法 (Booth Algorithm) 加算位置が変化する方法 P = 0, y 1 = 0 とする各ビット i (0,1,, n 1) について以下の動作を行う y i と y i 1 が等しい場合 : なにも行わない y i = 0, y i 1 = 1 の場合 :X 2 i を P に加算 y i = 1, y i 1 = 0 の場合 :X 2 i を P から減算 加算位置が変化しない方法 P = 0, y 1 = 0 とする各ビット i (0,1,, n 1) について以下の動作を行う y i と y i 1 が等しい場合 : なにも行わなず P を右にシフト y i = 0, y i 1 = 1 の場合 :X 2 n を P に加算し P を右にシフト y i = 1, y i 1 = 0 の場合 :X 2 n を P から減算し P を右にシフト 右にシフトする際 MSB に入る値は直前の MSB と同じになる 5
除算アルゴリズム 前提 X と Y の商 Q と剰余 R 求める このとき X を被除数 Y を除数と呼ぶ また X を 2 進数表現した際の各ビットを x i で表す i (0,1, ) は下位から数えて何ビット目かを示す X は 2n ビット Y は n ビットとする また X の上位 n ビットを X1 下位 n ビットを X2 とする 引き戻し法 (Restoring Division) X の上位 n ビットから Y を引いていく 筆算では X の上位 n ビットと Y の大小を比較し 大きければその桁の商を 1 小さければ 0 としているが 引き戻し法ではまず減算を行い その結果の正負を判定する 負である場合 同じものを加算することで元に戻す 引き放し法 (nrestoring Division) 引き戻すタイミングを遅らせることにより高速化した手法 6
除算アルゴリズム : 引き戻し法 START X1 X2 C を左へ 1 ビットシフト Y 0 X1 X1 Y X1 X1 Y X1 0 X1 < 0 C 1 C 0 X1 X1 + Y X1 X1 + Y オーバフロー n n 1 n 0 フローチャート END 7
除算アルゴリズム : 引き戻し法 START Y 0 X1 X1 Y X1 < 0 X1 X1 + Y 減算の結果が正か負か判断 一度減算を行う 負であれば商のその桁は0とし 減算を元に戻すオーバフロー ( 引き戻し ) X1 X2 C C 1 を左へ 1 ビットシフト X1 X1 Y X1 0 n n 1 C 0 X1 X1 + Y Cに入れられた値を上位よりフローチャート記載すると商が求まり 最終的なX1が剰余を示している n 0 END 8
引き戻し法 : 演算例 X = 22, Y = 6 X = 35, Y = 7 9
引き放し法のフローチャート START X1 0 Y 0 X1 X1 Y C 1 X1 X2 C X1 X1 Y を左へ 1 ビットシフト C 0 X1 X2 C X1 X1 + Y を左へ 1 ビットシフト X1 < 0 n n 1 X1 X2 C を左へ 1 ビットシフト オーバフロー n 0 X1 0 X1 X1 + Y n n 1 C 1 C 0 X1 X1 + Y フローチャート END 10
引き放し法のフローチャート START X1 0 Y 0 X1 X1 Y X1 X1 + Y n n 1 引き戻し法と比較するとループ部分の X1 演算回数が < 0 少なくなっている ( 高速化 ) X1 X2 C を左へ 1 ビットシフト オーバフロー C 1 Cに入れられた値を上位より記載すると商が求まり 最終的なX1が剰余を示している フローチャート X1 X2 C X1 X1 Y を左へ 1 ビットシフト C 1 n n 1 n 0 END C 0 X1 X1 + Y X1 0 C 0 X1 X1 + Y X1 X2 C を左へ 1 ビットシフト 11
引き戻し法 : 演算例 X = 22, Y = 6 X = 35, Y = 7 12
コンピュータアーキテクチャ 第 6 週ノイマン型コンピュータ 命令とは 命令の使い方 13
本日の到達目標と概要 到達目標 ノイマン型コンピュータの概要を理解する 概要 コンピュータの歴史 ノイマン型コンピュータの特徴と基本構成 CPUの発展 コンピュータの基本動作 PC 用 CPUの構成と動作 14
コンピュータの歴史 (1) 古代より現代 バビロニア : 小石を移動した計算 アバカス ( そろばん ) 数表 機械式計算機 シカルトによる計算機 (1623) パスカリーヌ (1642) ライプニッツ (1673) バベッジの階差エンジンの提案 (1823) バベッジの解析エンジン (1834) ホレリス国勢調査用作表機 (1890) アバカス ライプニッツの計算機 15
コンピュータの歴史 (2) 電子式計算機 エレックスとジョルダンによる電子式フリップフロップ (1919) ウィリアムスによる 2 進カウンタ (1932) アタナソフとベリーによる ABC マシン (1937) < この辺から第 1 世代 >: 論理素子として真空管 エイケンと IBM 社によるハーバード Mark-I (1943) ドイツの COLOSSUS (1943) モークリとエッカートによる ENIAC (1946) ウィリアムズらによる SSEM (1948) ウィルクスらによる EDSAC (1949) モークリとエッカートによる EDVAC (1952) ノイマン EDVAC に関する報告書 < 第 2 世代 > 論理素子がトランジスタ :1942-1954 < 第 3 世代 >IC(Integrated Circuit, 集積回路 )1964-1974 < 第 4 世代 >VLSI(Very Large Scale Integration) COLOSSUS 今日のコンピュータの基本ともなる概念 ノイマン型が基本 16
ノイマン型コンピュータの特徴 プログラム可変内蔵方式 プログラムを内部のメモリに記憶させることで プログラムの入力や変更が簡単に行える プログラム記憶方式とも 逐次処理方式 命令は 原則として実行順にメモリに格納されており この命令を順次取り出しながら処理を進める 取り出す命令のアドレスは プログラムカウンタに従って指示する 単一メモリ方式 プログラムとデータは 同じメモリ内に格納され メモリにはアドレスが割り振られている 一時的なデータ格納領域として 高速に動作する小容量メモリであるレジスタを備えている レジスタとメモリ間のデータ転送は プログラムで指示できるため メモリの効果的な利用が可能となる 17
ノイマン型コンピュータの基本構成 (1) 演算装置 (Arithmetic Unit) データの算術演算や論理演算を行う装置 制御装置 (Control Unit) すべての装置をコントロールする装置 一般的には 演算装置と制御装置を超大規模集積回路 (VLSI: Very Large Scale IC) として構成し 中央処理装置 (Central Processing Unit:CPU) ということが多い CPU は MPU(Micro Processor Unit) とも呼ばれる 18
ノイマン型コンピュータの基本構成 (2) 記憶装置 (Memory Unit) 入力装置 (Input Unit) データやプログラムを記憶しておく装置である CPU や入出力装置とデータのやり取りを高速に行う主記憶装置 (Main Memory Unit) と 大量のデータを長期間記憶しておく補助記憶装置 (Auxiliary Memory Unit) がある 主記憶装置は IC メモリが主流であり 補助記憶装置にはハードディスクや DVD などが使われている プログラムやデータを主記憶装置に入力する装置である キーボードやマウス イメージスキャナなどがある 出力装置 (Output Unit) コンピュータが処理したデータを出力する装置 ディスプレイやプリンタなどがある 19
CPU の発展 世界最初のCPU インテル社 i4004 (1971) 2300 個のトランジスタ 処理量は4ビット 年代 1971 1974 1976 1978 1985 1993 2000 2010 型番 4004 8080 6800 処理量 ( ビット ) 8085 6809 Z80 8086 80386 Pentium PowerPC Pentium4 core i7-980x (6 コア ) 4 8 8 16 32 32 32 64 素子数 ( 個 ) 2300 8500 1 万 3 万 28 万 310 万 4200 万 11 億 7000 万 クロック 100kHz 1MHz 5MHz 10MHz 20MHz 100MHz 1GHz 3GHz メモリ空間 ( バイト ) 4.5K 64K 64K 16M 4G 4H 4G (64Gに拡張可) 24G 20
CPU の構成 汎用レジスタ GR0 GR1 算術論理演算装置 (ALU) フラグレジスタ FR GR2 GR4 GR6 GR3 GR5 GR7 算術演算や論理演算を行う演算回路 ALU が処理した処理に基づいた動作を行う 高速に動作する置数器であり データを一時的に記憶し ALU やメインメモリ ( 主記憶装置 ) などと連携しながら処理を効率的に進めていく働きをする 21
制御装置 プログラムカウンタ 命令レジスタ IR デコーダ PC 命令コード OP オペランド opr DEC 制御信号 プログラムカウンタ (PC) 次に実行するプログラムが格納されているメモリのアドレスを記憶しているレジスタであり プログラムレジスタ (PR) と呼ばれることもある 通常は命令を実行するたびにカウントアップしていくが 分岐命令などを実行した場合には 分岐先命令の格納されているアドレスを記憶する 命令レジスタ (IR) メモリから取り出された命令を一時的に記憶するレジスタであり 命令コードとオペランドからなる デコーダ (DEC) 命令レジスタに記憶されている命令を復号 ( 解読 ) して 実行に必要な制御信号 ( デコード情報 ) を出力する 22
基本動作 命令呼び出し段階 命令実行段階 命令の取り出し 命令の解読 命令の実行 命令実行サイクル 23
基本動作 アドレスバス プログラムカウンタ PC 命令レジスタ IR 制御装置主記憶装置演算装置 OP opr メモリアドレスレジスタ MAR アドレス メモリ 命令 ALU 汎用レジスタ GR デコーダ DEC フラグレジスタ FR 制御信号 データバス 24
例 : 加算命令 ADD の実行 < 初期状態 > アドレスバス 制御装置主記憶装置演算装置 プログラムカウンタ PC 命令レジスタ IR 0054 OP opr メモリアドレスレジスタ MAR アドレス 0054 A メモリ ADD r, A 27 ALU 汎用レジスタ GR 60 デコーダ DEC フラグレジスタ FR 1 1 1 データバス 25
例 : 加算命令 ADD の実行 < 流れ > アドレスバス プログラムカウンタ PC 命令レジスタ IR 制御装置主記憶装置演算装置 ADD 0054 OP opr r, A メモリアドレスレジスタ MAR アドレス 0054 A メモリ ADD r, A 27 ALU 汎用レジスタ GR 60 87 デコーダ DEC 制御信号 フラグレジスタ FR 0 0 0 データバス 26
サブルーチンの実行 アドレス 0000 0010 0011 8000 メモリメインルーチン CALL 8000H ~ サブルーチンRTS ~ スタック 9000 27
PC 用 CPU の構成と動作 ノースブリッジへ 32 ビット 汎用レジスタプログラムカウンタフラグレジスタ 8 BTB, BHT 命令 TLB 命令用 1 次キャッシュメモリ バスインタフェース 2 次キャッシュメモリ デコーダ 命令制御装置 整数演算用スケジューラ 浮動小数点演算用スケジューラ AGU AGU ALU ALU FPU SIMD SIMD データ用 1 次キャッシュメモリデータ TLB 28
PC の構成例 CPU グラフィックスカード CPU バス チップセット ( ノースブリッジ ) メモリ ハードディスク CD-ROM チップセット ( サウスブリッジ ) IEEE1394 対応機器 USB 対応機器 キーボード マウス プリンタ 29
本日の到達目標と概要 到達目標 ノイマン型コンピュータの概要を理解する 概要 コンピュータの歴史 ノイマン型コンピュータの特徴と基本構成 CPUの発展 コンピュータの基本動作 PC 用 CPUの構成と動作 30