コンピュータアーキテクチャ 第 7 回
演算回路(算術論理演算ユニットとシフタ) 算術論理演算ユニットの構成モジュール 加算器 足し算をつかさどる組み合せ回路 減算器にも拡張可 フリップフロップ を付け加えることでカウンタを構成 論理演算器(AND, OR, XOR) 論理加減算器(16 ビットの符号なし 2 進数の加減算) シフタ シフト演算を実現する組合せ回路 今回の内容 ~以下の各要素と全体構成の例~ 半加算器と全加算器: 並列加算器: 加減算器: カウンタ: 書き換え機能つきカウンタ,ダウンカウンタ シフタ: 1 ビットシフタに限定 1 ビットの加算 * N ビットの加算 * 2の補数による負数の加算 *
ハードウェアモデルにおける位置付け 書き換え機能付きダウンカウンタ * * 並列加減算器 書き換え機能付きカウンタ *
半加算器 (HA: Half Adder) 演算データ a, b (1 ビット)を入力 演算結果 f, c を出力 c : 桁上げ出力 *
全加算器 (FA: Full Adder) 演算データ a, b, cin (1 ビット)を入力 演算結果 f, cout を出力 cin : 桁上げ入力, cout : 桁上げ出力 * *
論理演算の性質
演習問題 7.1
2進数の加算はどのように実行されるか? A + B = 3 + 2 = (0011)2 + (0010)2 4 ビットの例 (1) A + B = 3 + 2 = (0011)2 + (0010)2 * A ・・・ B ・・・ キャリー(桁上り) ・・・ 0 0 1 1 0 0 1 0 1 オーバフローなし ( -8 < 5 < 7 ) 1 1 4 ビットの例 (2) A + B = 7 + 3 = (0111)2 + (0011)2 * A ・・・ B ・・・ キャリー(桁上り) ・・・ 0 1 1 1 0 0 1 1 1 1 1 オーバフローあり ( 7 < 10 ) 1 1
並列加算器(parallel adders) * リップルキャリー方式: 下位ビットから上位ビットへ 順次桁上げを伝える方式
結果的にキャリー c1~c4 は, a0~a3 , b0~b3 で決定できる * *
ルックアヘッドキャリー (look-ahead carry) リップルキャリー方式 より高速 * リップルキャリー方式 よりハードウェア量大 *
演習問題 7.2
減算をどうやって実現するか? A – B = 7 – 5 = (0111)2 – (0101)2 4 ビットの例 A – B = 7 – 5 = (0111)2 – (0101)2 = (0111)2 + (0101)2 の2の補数 = (0111)2 + (0101)2 の1の補数 + 1 A ・・・ Bの1の補数 ・・・ キャリー(桁上り) ・・・ 0 1 1 1 * 1 0 1 0 1 1 1 1 1 +1 1
加減算器 (adder-subtractor) のとき加算器, のとき減算器 * 制御入力 * * s0 = 0, c0 = 0 s0 = 1, c0 = 1
4 ビット加減算器の真理値表 *
演習問題 7.3 前記の 4 ビット加減算器において,A 入力または B 入力をすべて 1 としたとき,どのような演算が おこなわれるか?それぞれ s0, c0 の組み合せごと に示せ.また,それらを確かめる具体的な数値例を 示せ.
カウンタ (counter) (1) * (a) 4 ビット 2 進数に 1 を加える加算器
カウンタ (counter) (2) * (b) 半加算器と基本ゲートによる置き換え
カウンタ (counter) (3) (c) フリップフロップを追加してできた 4 ビットカウンタ * インクリメンタ (incrementer) とも呼ばれる clock 信号がハイレベルに変わるごとに2進数 f3 f2 f1 f0 の値が 1 増加
演習問題 7.4 前述のように, 4 ビット 2 進数に 1 を加える加算器を,半加算器と基本ゲートによって置き換えられることを示せ.
書き換え機能つきカウンタ s がハイレベルのときは ,ローレベルのときは プログラムカウンタに使用される カウンタ データ取り込み inc * * カウンタ データ取り込み inc
書き換え機能つきダウンカウンタ s がハイレベルで ,ローレベルでは 本講義ではスタックポインタに使用 ダウンカウンタ データ取り込み * * ダウンカウンタ データ取り込み dcr
4 ビット書き換え機能つきカウンタのタイムチャート例
演習問題 7.5 右の 4 ビット ダウンカウンタの タイムチャート例を 完成せよ.
算術論理演算ユニット (ALU: Arithmetic Logic Unit) * COMET II の ALU構成例
算術論理演算ユニットの真理値表
演習問題 7.6 4 ビットの符号なし 2 進数の減算は,5 ビットの符号つき 2 進 数の減算として実行できる.これが実際には, 4 ビットの符号 つき 2 進数用加減算器で実行可能であることを示せ.
シフタ (Shifter) データ幅 4 ビットの 1 ビットシフタ構成例 sari がハイレベルで算術シフト sL がハイレベルで左シフト * sL がハイレベルで左シフト *
データ幅 4 ビットの 1 ビットシフタの真理値表
シフト命令の実行概念 1ビットシフタ: 1 クロックで 1 ビットシフトする バレルシフタ(barrel shifter): 1 クロックで * バレルシフタ(barrel shifter): 1 クロックで ハードウェア量大 * 任意の ビット数シフトする
算術左シフト命令実行例
演算回路の構成