Transcript パート07

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