산술 연산

 

정수의 산술 연산

1. 보수화

2. 덧셈

- 두 수를 더하고, 만약 올림수가 발생하면 버림

(올림수란 4자리 수 더하기에서 5자리에 값이 생기면 5자리 수를 올림수로 표현.)->버린다.

- 덧셈을 수행하는 하드웨어 (병렬 가산기)

-> 비트 수만큼의 전가산기(FA)들로 구성 -> 덧셈 연산 결과에 따라 해당 조건 플래그를 세트

- C플래그(올림수), S플래그(부호), Z플래그(0), V플래그(오버플로우) 존재

- 덧셈 오버플로우 : 덧셈의 결과가 범위를 초과 -> 결과값이 틀리게 되는 상태

-> 두 올림수 간의 exclusive-OR을 이용(검출 방법) 

3. 뺄셈

A-(+B) = A + (-B) 즉, 덧셈을 이용해 사용

- 4비트 병렬 가감산기 -> 4비트 데이터 간의 덧셈 및 뺄셈을 모두 수행하는 조합 회로

- 제어신호 M = 0 : 덧셈, M =1 : 뺄셈(입력 B의 비트 들을 반전하고, 최하위 올림수로서 M을 입력)

- 뺄셈 오버플로우 : 뺄셈의 결과가 범위를 초과하여 결과값을 틀리게 되는 상태

-> 검출 방법은 덧셈과 동일

4. 곱셈 

부호 없는 정수의 곱셈

- 각 비트에 대하여 부분 적 계산

- 부분 적들을 모두 더하여 최종 결과를 얻는다..

부호 없는 정수 승산기의 하드웨어 구성도

- M 레지스터 : 피승수 저장

- Q 레지스터 : 승수 저장 

- 두 배 길이의 결과값은 A레지스터와 Q레지스터에 저장

2의 보수들 간의 곱셈

- Booth 알고리즘 사용

- 부호 없는 정수 승산기에서 M 레지스터와 병렬 가산기 사이 보수기 추가

- Q레지스터 우측에 Q-1이라는 1-비트 레지스터 추가하고, 출력을 Q0와 함께 제어 회로로 입력.

5. 나눗셈

A%B=q ... r // A 피제수 B 제수 Q 몫 R 나머지 수

6. 증가

7. 감소

 

부동소수점 표현 : 소수점의 위치를 이동시킬 수 있는 수 표현 방법 -> 수 표현 범위 확대

부동소수점 수의 일반적인 형태

N=(-1)^s M * B^E

2진 부동소수점 수

-> 단일 정밀도 부동소수점 수 32비트 float

S(부호) : 1 E(지수) : 8 M(가수) : 23

지수 필드의 비트 수 증가 -> 표현 가능한 수의 범위 확장

가수 필드의 비트 수 증가 -> 정밀도 증가

표현가능한 수 크기 범위 1.47*10^-39~1.7*10^38

-> 복수 정밀도 부동소수점 수 64비트 double

정규화 된 표현 -> 0.1bbbbbbb*2^E 

 

IEEE 754

바이어스는 127

소수점 좌측의 1은 제외

 

부동소수점 산술 연산

- 덧셈, 뺄셈

1. 지수들이 일치되도록 조정

2. 가수들 간의 연산 수행

3. 결과를 정규화

-> 이를 파이프라이닝을 하면 효율적이다.

-> 대부분의 모든 슈퍼컴퓨터들에서 채택

- 곱셈

1. 가수들을 곱함

2. 지수들을 곱함

3. 결과값을 정규화

- 나눗셈

1. 가수들을 나눔

2. 피제수의 지수에서 제술의 지수를 뺀다.

3. 결과값을 정규화

 

부동소수점 연산 과정에서 발생 가능한 문제

1. 가수 언더플로우 -> 반올림 적용으로 해결

2. 가수 오버플로우 -> 재조정 과정을 통하여 정규화

3. 지수 오버플로우 -> +무한 또는 -무한으로 세트

4. 지수 언더플로우 - > 0으로 세트

'학교수업' 카테고리의 다른 글

윈도우즈 프로그래밍 5주차  (0) 2022.04.16
윈도우즈 프로그래밍 6주차  (0) 2022.04.16
인공지능개론 6주차  (0) 2022.04.13
컴퓨터그래픽스기초 6주차  (0) 2022.04.13
게임공학개론 6주차  (0) 2022.04.11

+ Recent posts