PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

제 4 장 연산
컴퓨터구조
Computer System Architecture
멀티미디어공학과 김 해영
[email protected]
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 연산
구성
수치 연산
비수치 연산
2
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 연산
 컴퓨터 연산이란?
컴퓨터 외부에서 들어오는 입력 데이터, 컴퓨터 내부의 기억장치 내에 저장 되어 있는 데이터와
중앙처리장치 내의 레지스터 내에 저장 되어 있는 데이터 등을 가지고 중앙 처리장치 내의 산술 논리
연산장치를 이용하여 처리하는 것
 비수치 연산 : 논리 연산과 문자 데이터의 처리에 대한 연산
 수치 연산 : 덧셈, 뺄셈, 곱셈, 나눗셈 등의 사칙 연산에 의한 산술연산
 데이터의 수에 따라
 단항 연산(unary operation) : 입력데이터의 수가 하나 뿐일 때의 연산,
논리 시프트, 로테이트, 산술 시프트, 보수 등
 이항 연산 (binary operation) : 입력데이터가 2개일 때의 연산,
사칙 연산, AND, OR, XOR 등
 중앙처리장치 내의 산술 논리 연산장치가 연산을 수행하기 위해서는 연산에 사용될
데이터를 준비  중앙처리장치의 레지스터(register)에 적재
3
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 수치연산 : 고정 소수점 표현 방식으로 나타낸 수의 연산을 기본으로 부동 소수점
표현 방식으로 나타낸 수의 연산을 병용하여 사칙연산 수행
 감 산 : 보수의 가산으로 연산을 수행
 곱 셈 : 가산의 반복이나 산술 시프트 연산을 이용
 나눗셈 : 감산의 반복이나 산술 시프트 연산을 이용
 산술 시프트(Arithmetic Shift)
 곱셈과 나눗셈 연산에 보조적으로 사용
 좌측/우측 시프트, 클록과 동기 되어 모든 비트들이 좌측/우측으로 이동
 부호 없는 n비트 양의 정수에 대한 산술 시프트
n 비트
우측 시프트
Added bit
'0'
좌측 시프트
An-1
A0
Added bit
'0'
우측 시프트 : 최소 유효비트 A0 가 손실되고, An-1자리에 0이 첨가됨, truncation 발생
a) 1110 (우측시프트) 0111 : 14  7 : 2 로 나눈 값고 같음
b) 1111 (우측시프트)0111 : 15 7 : 2로 나눈값의 소수점 이하가 없어짐  truncation
좌측 시프트 : 최대 유효비트 An-1 가 손실되고, A0에 0이 첨가됨, overflow 발생
a) 0111 (좌측시프트) 1110 : 7  14 : 2를 곱한 값과 같음
b) 1001 (좌측시프트)0010 : 9 2 : 2를 곱한 값보다 훨씬 작은 값이 됨  overflow
4
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 부호가 있는 n 비트 수에 대한 산술 시프트 고려
 부호 절대값
Added bit
'0'
부호 비트는 불변, 첨가되는 비트는 항상 ‘0’
An-1 An-2
Added bit
'0'
A0
1 01100 (왼쪽 시프트) 1 11000
 부호와 2의 보수
Added bit
An-1
우측시프트 : 부호 비트가 복사되어 한 비트씩 우측으로 이동
좌측시프트 : A0 에 ‘0’이 첨가되어 한 비트씩 왼쪽으로 이동
An-1 An-2
A0
Added bit
'0'
1 10100 (왼쪽 시프트) 1 01000
 부호와 1의 보수 좌/우측 시프트 : 부호 비트가 복사되어 한 비트씩 좌/우측으로 이동
Added bit
An-1
5
Computer System Architecture
An-1 An-2
A0
Added bit
An-1
1 10011 (왼쪽 시프트) 1 00111
멀티미디어공학과 김해영
제 4 장 수치 연산
 부호가 있는 n 비트 수에 대한 산술 시프트 고려
 양수 :
+12 : 0 01100
오른쪽 시프트
+6 : 0 00110
 부호가 있는 수
- 부호 + 절대값 :
-12 : 1 01100
오른쪽 시프트
-6 : 1 00110
- 부호 + 1의 보수 : -12 : 1 10011
오른쪽 시프트
-6 : 1 11001
- 부호 + 2의 보수 : -12 : 1 10100
오른쪽 시프트
-6 : 1 11010
6
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 고정 소수점 수의 연산
 부호와 절대값, 부호와 1의 보수, 부호와 2의 보수
 연산 방법 서로 상이
 덧셈
 부호 절대값
(-12) + (-13) = -25
(+12) + (+13) = +25
(+25) + (-37)
= 37 - 25 = -12
» 두 수의 부호 비트가 같으면 덧셈
» 두 수의 부호비트가 다르면 뺄셈(큰 수 – 작은 수), 부호(sign) : 큰 수의 부호
 부호와 1의 보수 : 두 수를 더한다
+6
0 000110
-6
1 111001
+) - 9
+ 1 110110 +) +9 + 0 001001
-3
1 111100
+3
1 0 000010
+
1 캐리가 발생  1을 한번 더 더함
0 000011
 부호와 2의 보수 : 부호 비트를 포함하여 두 수를 더한다
+6
0 000110
-6
1 111010
+) -9
+ 1 110111 +) +9 + 0 001001
-3
1 111101
+3
1 0 000011
7
Computer System Architecture
버린다 캐리는 버린다.
멀티미디어공학과 김해영
제 4 장 수치 연산
 뺄셈
 (± A) - (+ B) = (± A) + (- B)
 (± A) - ( - B) = (± A) + (+ B)
뺄셈 : 감수를 보수로 바꾸어 가산
B 레지스터
Complementer and
parallel adder
V
Overflow
n자리의 두 수를 더해 (n+1)자리의
합이 발생  범람(overflow)
범람 발생  f/f  1로 set
A 레지스터
2의 보수 덧셈과 뺄셈을 위한 하드웨어 블록도
8
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 범람 (overflow)
 레지스터의 길이  한정, 범람 발생
 범람 : n자리의 두 수를 더해서 n+1자리의 합이 발생할 시
 범람이 발생  오버플로 플립플롭을 세트
 범람의 검사
» 부호가 없는 수 : 최상위 비트(MSB)에서 end carry가 발생  범람
» 부호가 있는 수
주의 : MSB는 부호 비트이며, 부호 비트도 수의 일부분으로 간주
end carry(부호비트)는 오버 플로로 간주하지 않음
(1) 부호 절대값 : 절대값의 최대 유효비트(MSB)에서 캐리 발생 범람
(2) 부호와 2의 보수  ①,②의 carry 가 서로 다르면 범람 발생
(① 부호비트에서 발생된 캐리) XOR (② 부호비트 아래에서 발생된 캐리)
①②
* 예제
carries 0 1
carries 1
+ 70 0 1000110 - 70
+ 80 0 1010000 - 80
+ 150 1 0010110 - 150
9
Computer System Architecture
양수  음수부호
0
1 0111010
1 0110000
0 1101010
Overflow f/f 세트
음수  양수부호
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈 : 소프트웨어적 연산, 하드웨어적 연산
 가산기 : 소프트웨어적으로 연산 수행
 배열 승산기(Array processor) : 하드웨어적 연산 수행
 소프트웨어에 의한 곱셈 : 덧셈이 기본
(1) 피승수를 승수의 횟수 반복 가산
(2) 좌측 시프트와 부분적(partial product)을 이용(10진수 곱셈과 동일)
(1) 2(피승수) × 5(승수)
0010 × 0101 = 0010 + 0010 + 0010 + 0010 + 0010 = 1010
(2) 2(피승수) × 5(승수)
0010
× 0101
0010(부분적)
0000 (부분적)
0010 (부분적)
0000 (부분적)
0001010(곱셈 결과)
(1) 승수의 각 자리에 하나씩 부분적이 나타나며, 이
부분적은 최종 곱셈 결과를 얻기 위해 합산된다.
(2) 승수의 비트가 0이면 부분적 모두가 0, 승수의
비트가 1이면 피승수의 값(0010)이 부분적이 된다.
(3) 각 부분적은 직전의 부분적에 비해 한 자리 왼쪽으로
자리이동(shift)된다.
(4) n비트 부호가 없는 양의 정수에 대해 곱셈 결과를
오차 없이 나타내기 위하여 곱하는 두 수의 비트 합인
최대 2n 비트가 필요하다.
10
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈
 두 번째 방법의 요점
반복적인 자리 이동(shift) 및 덧셈
(1) 최종 부분적이 나타날 때까지 기다리지 않고 부분적이 나타날 때마다
합산을 수행한 후 결과를 오른쪽으로 한 자리 이동시킨다.
(2) 승수의 값을 시험하여 1이면 피승수의 값을 누적시킨 후 한 자리
오른쪽으로 이동시키고, O이면 오른쪽으로 이동만 시킨다.
(3) 승수의 각 비트가 1인지 0인지를 시험할 때는 승수를 올림수와 함께
오 른 쪽으 로 한 비 트 씩 로테 이트 하 여 시 험코 자 하 는 비 트를 올림 수
플립플롭에 넣어 시험하면 된다.
0
Yn-1
Y0
올림수
올림수와 함께 오른쪽 로테이트
11
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈
 양의 정수 곱셈 알고리즘
(1) Z ← 0
(2) i ← 0
(3) 승수 Yi = 0이면 (4)를 수행하고, Yi=1이면 Z ← Z + X·2n
(X와 Z의 최대 유효 비트를 같은 위치에 오도록 하고 덧셈을 함)를 수행
(4) 오른쪽으로 한 비트 시프트(Z ← Z·2-1)
(5) i = n-1이면 (6)을 수행하고, 아니면 i = i+1한 후 (3)을 반복 수행
(6) Y를 원상으로 환원(즉 Y의 값을 한번 더 로테이트 하면 원래의 값이 된다)
12
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈
 부호와 절대값 : 부호를 제외하고 곱셈, 부호가 같으면 양수, 부호가
서로 다르면 음수
 부호와 2의 보수 : 음수를 양수호 변환 후 두 수의 곱을 구하고, 곱셈결과에
따라 음수일 경우에는 다시 2의 보수로 변환
 Booth 알고리즘
- 2진수 00001110(+14)는 23에서 21(k=3, m=1) 자리 값이 1
 00001110 = 2k+1 – 2m = 24 – 21 = 14
곱셈 동작은 승수의 값 0 : 부분적을 더할 필요 없이 시프트
승수의 값 1 : 2k+1 – 2m
- M×14 = M × 24 - M × 21
피승수 M을 좌측으로 4번 시프트 한 수에서 좌측으로 한 번 시프트 한 수를
빼면 얻을 수 있음을 의미
(1) 승수의 1의 그룹에서 처음 0을 만나게 되면 피승수를 부분적으로부터 뺀다.
(2) 승수의 0의 그룹에서 처음 1을 만나게 되면 피승수를 부분적에 더한다.
(3) 승수에서 이전의 비트와 같은 비트가 나오면 부분적은 바뀌어지지 않는다.
13
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈
 Booth 알고리즘을 위한 하드웨어 구성
 승수 : Q 레지스터, Qn+1 플립플롭 : 승수의 값(0인지 1인지 구별)
 SC : 승수의 비트 수, 최종 결과 : A, Q 레지스터
M 레지스터(피승수)
계수기(SC)
Complementer and
parallel adder
AC 레지스터
Fig. 4-6
Q0
Qn+1
Q 레지스터(승수)
Booth 알고리즘을 위한 하드웨어
14
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
START
 Booth 알고리즘
AC ← 0, Qn+1 ← 0
SC ← n
M ← 피승수
Q ← 승수
 10 : 부분적 - 피승수
 01 : 부분적 + 피승수
10
01
Q0 : Qn+1
Fig. 4-7
00, 11
AC ← AC+M+1
AC ← AC+M
산술 우측 시프트(AC & Q)
SC ← SC-1
No
SC = 0
Yes
END
15
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 예제 7 × 3
Booth 알고리즘을 이용한 곱셈 예
16
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 나눗셈
 뺄셈을 기본
피제수에서 제수를 뺄 수 없을 때까지 반복하여 뺀 후 횟수는 몫
뺀 후 남은 값은 나머지
0
 피제수(A)와 제수(B)를 비교
 부분 나머지(피제수) >= 제수  몫은 1, 제수를 우측 시프트,
부분나머지(피제수) - 제수
 부분 나머지(피제수) < 제수  몫은 0, 제수를 우측 시프트
17
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 나눗셈
 앞의 과정 변형
» 제수를 오른쪽 시프트 하지 않고 피제수 혹은 부분 나머지를 왼쪽으로 시프트
» 피제수 혹은 부분 나머지 – 제수 = 피제수 혹은 부분 나머지 + 제수(B)의 2의 보수
B 레지스터(제수)
계수기(SC)
Fig. 4-8
Complementer and
parallel adder
E
A 레지스터(피제수)
Q 레지스터(피제수)
부호 없는 양의 정수 나눗셈 하드웨어
 E : 피제수와 제수의 크기 비교(E=1이면 몫 Qn = 1, E=0이면 Qn = 0)
18
Computer System Architecture
멀티미디어공학과 김해영
Computer System Architecture
No
Qn ← 0
EA ← A+B
A<B
E=1
EA ← A+B+1
No
END
몫:Q
나머지 : A
Yes
SC = 0
SC ← SC-1
Yes
E=1
좌측 시프트 EAQ
AQ ← 피제수
M ← 제수
SC ← n
START
No
Qn ← 1
A>B
A ← A+B+1
Yes
제 4 장 수치 연산
 나눗셈 알고리즘의 순서도
19
멀티미디어공학과 김해영
제 4 장 수치 연산
 예제 48÷7
 Q : 몫, A : 나머지
피제수 = 48
나머지
몫
20
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 음의 정수의 나눗셈
 부호와 절대값
» 부호를 제외한 절대값의 계산은 양의 정수에 대한 알고리즘과 동일
» 몫과 나머지의 부호는 각각 피제수와 제수의 부호에 의해 결정
- 몫은 피제수와 제수의 부호가 같을 때는 양수가 되고, 부호가 서로
다를 때에는 음수
- 나머지의 부호는 피제수의 부호와 동일
 부호와 2의 보수, 부호와 1의 보수의 경우 부호와 절대값
» 음수를 양수로 변환한 후 양수의 나눗셈과 동일한 알고리즘을 적용하되
» 피제수와 제수의 부호가 다른 경우에는 몫을 다시 각각의 음수 표현
방법으로 변환
» 피제수가 음수일 경우에는 나머지도 각각의 음수 표현 방법으로 변환해
주어야 함
21
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 부동 소수점 수의 연산
 지수 부분과 소수 부분 ( 0.123 x 102, 0.123 x 10-2 )
 두 개의 부분에 대해 각각 독립적으로 연산, 고정 소수점 연산 방식 사용
 덧셈과 뺄셈
 가수의 정렬 필요
» 즉, 지수부 조정
» 작은 지수 값을 가진 가수를 시프트
 덧셈과 뺄셈 알고리즘
(1) 0인지 여부를 검사
(2) 가수의 위치 조정
(3) 가수의 덧셈 혹은 뺄셈
(4) 결과를 정규화
A=0.12345×104
 예 B=0.6789×103
A + B = 0.12345×104 + 0.6789×103
# 정규화된 두 수의 덧셈에서 범람이
발생 할 경우에는 그 합을 오른쪽
으로 한자리 시프트 시킨 후 지수를
하나 증가 시킴
-1
(0.91 + 0.32 =1.23  0.123 x 10 )
A - B = 0.12345×104 - 0.6789×103
= (0.12345 + 0.06789) × 104
= (0.12345 - 0.06789) × 104
= 0.19134×104
= 0.05556×104 = 0.5556×103
22
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 수치 연산
 곱셈과 나눗셈
 가수의 정렬 불필요
» 곱셈 : 지수 부분  덧셈, 가수부분  곱셈
» 나눗셈 : 지수 부분  뺄셈, 가수 부분  나눗셈
 곱셈과 나눗셈 알고리즘
A=0.123×105
B=0.3×10-4
제수가 0이면 에러,
피제수가 0이면 몫은 0
(1) 가수가 0인지 여부를 검사
(1) 0인지 여부를 검사
(2) 지수를 더한다.
(2) 지수의 뺄셈을 한다.
(3) 가수를 곱한다.
(3) 가수의 나눗셈을 한다.
(4) 결과를 정규화 한다.
(4) 결과를 정규화 한다.
예
지수부 : 5 + (-4) = 1
지수부 5 - (-4) = 9
가수부 0.123 × 0.3 = 0.0369
가수부 0.123 ÷ 0.3 = 0.41
A × B = (0.123×105 ) × (0.3×10-4 )
A / B = (0.123×105 ) / (0.3×10-4 )
= 0.0369×101
= 0.41×109
= 0.369
23
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 비수치 연산
 논리 연산과 문자 데이터 처리 연산, 부울 연산을 기반으로 함
 기본 논리연산 : AND, OR, XOR, NOT
 논리 연산
 SET 연산
 B 레지스터의 1에 대응하는 A 레지스터의 비트를 1로 세트
 한 레지스터의 일부분을 선택하고자 할 때 사용
 결과는 A와 B의 OR 연산
레지스터 A
레지스터 B
1 0 1 0
1 1 0 0
OR
(Set)
ALU : Arithmetic logic unit
ALU
산술논리장치
1 1 1 0
24
Computer System Architecture
레지스터 A
멀티미디어공학과 김해영
제 4 장 비수치 연산
 논리 연산
 MASK 연산
 B 레지스터의 0에 대응하는 A 레지스터의 비트를 0으로 클리어
 주로 자료의 특정 비트 혹은 문자를 삭제하고자 할 경우 사용
 결과는 A와 B의 AND 연산
AND
(mask)
레지스터 A
레지스터 B
1 0 1 1
1 1 0 0
ALU
A레지스터의 하위 2비트를 삭제
할 경우 B레지스터의 마스크의
하위 2비트를 00로 둠
1 0 0 0
레지스터 A
25
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 논리 연산
 Selective Complement 연산
 B 레지스터의 1에 대응하는 A 레지스터의 비트를 보수로 만듦
 레지스터 내의 일부 비트를 보수로 만들 때 사용
 결과는 A와 B의 XOR 연산
레지스터 A
레지스터 B
1 0 1 1
1 1 0 0
XOR
(selective complement)
ALU
A레지스터의 상위 2비트를 보수로
만들기 위해 B레지스터의 마스크
의 하위 2비트를 11로 둠
0 1 1 1
레지스터 A
26
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 논리 연산
 Selective Clear 연산
 B 레지스터의 1에 대응하는 A 레지스터의 비트를 클리어
 레지스터 내의 일부 비트를 클리어 시킬 때 사용
 결과는 A ← A ∧ B'
selective clear
레지스터 A
레지스터 B
1 0 1 1
1 1 0 0
ALU
0 0 1 1
레지스터 A
27
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 논리 시프트와 로테이트
 논리 시프트
 서로 이웃한 비트들을 좌측 혹은 우측으로 자리 이동
 첨가되는 비트 : ‘0’
Lost bit
An-1 An-2
A0
Added bit
'0'
(a) 논리 좌측 시프트
Added bit
'0'
An-1 An-2
첨가 되는
비트는 항상 0
A0
Lost bit
(b) 논리 우측 시프트
 올림수를 포함한 논리 시프트
Lost bit
X
An-1
An-2
A0
Added bit
'0'
A0
Lost bit
(a) 올림수와 함께 좌측 시프트
Added bit
'0'
28
Computer System Architecture
X
An-1 An-2
(b) 올림수와 함께 우측 시프트
멀티미디어공학과 김해영
제 4 장 비수치 연산
 논리 시프트의 예
• 올림수와 함께 오른쪽 시프트
• 올림수와 함께 왼쪽 시프트
C
x 1100000111000010
0
C
x 1100000111000010
0
0 x110000011100001
x
0
1 1000001110000100
• 오른쪽 시프트
• 왼쪽 시프트
1100000111000010
0
1100000111000010
0
0110000011100001
1
0
1000001110000100
29
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 로테이트
 한쪽 끝에서 밀려나간 비트들이 다른 쪽으로 다시 입력
 레지스터 내의 특정 비트를 검사 혹은 문자의 위치 교환 시
 시프트에 의한 자료 전송 시 사용
1 0 01 1 0 0 11
0 1 0 0 1 1 0 0 1 11
0
0
1 0 1 0 01 1 0 0 1
1 0
1 0 01 1 0 0 1 1
(a) 우측 로테이트
(b) 좌측 로테이트
30
Computer System Architecture
멀티미디어공학과 김해영
제 4 장 비수치 연산
 로테이트의 예
• 올림수와 함께 오른쪽 로테이트
• 올림수와 함께 왼쪽 로테이트
C
x 1100000111000010
C
x 1100000111000010
0
1
x110000011100001
• 오른쪽 로테이트
100000011100010x
• 왼쪽 로테이트
1100000111000010
1100000111000010
0110000011100001
1000001110000101
31
Computer System Architecture
멀티미디어공학과 김해영