Transcript パート07

コンピュータアーキテクチャ
第7回
1
演算回路(算術論理演算ユニットとシフタ)

算術論理演算ユニットの構成モジュール
– 加算器



足し算をつかさどる組み合せ回路
減算器にも拡張可
フリップフロップ を付け加えることでカウンタを構成
– 論理演算器(AND, OR, XOR)
– 論理加減算器(16 ビットの符号なし 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
1
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
12
加減算器 (adder-subtractor)


s0 :
*
*
のとき加算器,
*
のとき減算器
13
4 ビット加減算器の真理値表
*
14
演習問題 7.3
前記の 4 ビット加減算器において,A 入力または
B 入力をすべて 1 としたとき,どのような演算が
おこなわれるか?それぞれ s0, c0 の組み合せごと
に示せ.また,それらを確かめる具体的な数値例を
示せ.
15
カウンタ (counter) (1)
(a)
*
16
カウンタ (counter) (2)
(b)
*
17
カウンタ (counter) (3)
(c)


インクリメンタ (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)
*
算術論理演算ユニットの真理値表
演習問題 7.6
4 ビットの符号なし 2 進数の減算は,5 ビットの符号つき 2 進
数の減算として実行できる.これが実際には, 4 ビットの符号
つき 2 進数用加減算器で実行可能であることを示せ.
シフタ (Shifter)
データ幅 4 ビットの 1 ビットシフタ構成例
*
*
データ幅 4 ビットの
1 ビットシフタの真理値表
シフト命令の実行概念
1ビットシフタ:
バレルシフタ(barrel shifter):
• 1 クロックで
• ハードウェア量大
*
*
算術左シフト命令実行例
演算回路の構成