컴퓨터 산술
산술 논리 연산 장치(ALU)
- 컴퓨터의 한 부품으로서 데이터에 대하여 실제적으로 산술 및 논리 연산을 수행하는 부분
- 컴퓨터 시스템의 다른 모든 요소들, 즉 제어 유닛, 레지스터, 기억장치 및 I/O 장치는 처리될 데이터를 ALU로 가져오거나 그 결과를 다시 내보내는 일을 수행
- ALU를 비롯하여 사실상 컴퓨터의 모든 전자 부품들은 이진수를 저장하고 간단한 부울 논리 연산(Boolean logical opreations)을 수행할 수 있는 간단한 디지털 논리 회로들을 이용하여 만들어졌다.
- CPU는 Control과 Computation을 담당
- ALU가 계산
- 어떤 CPU를 선택할 것인가(Architecture는 같으나, Configuration이 다름)
ALU의 입력 및 출력들
정수 표현
- 이진수 체계에서 임의의 수는 아래와 같이 표현된다.
- 0과 1
- 음수에 대한 마이너스 부호(sign bit)
- 소수점(period) 혹은 기수점(radix point)
- 컴퓨터의 저장 및 처리 목적을 위해서는, 마이너스 부호와 소수점을 위한 특수 기호들의 이점을 활용할 수 없다.
- 이진 숫자들만 수를 표현하는 데에 사용될 수 있다.
부호-크기 표현(Signed-Magnitude Representation)
- 음수를 표현하는 방법은 여러 가지가 있다.
- 단어(word)의 가장 중요한 맨 좌측 비트(leftmost bit)는 부호 비트(sign bit)로 사용된다.
- 만약 그 비트가 0이면 양수, 1이면 음수이다.
- 부호-크기(sign-magnitude) 표현은 부호 비트를 사용하는 가장 간단한 표현 형태이다.
- 단점
- 사칙연산을 수행하는 과정에서 부호와 상대적 크기를 모두 고려해야 한다.
- 0에 대한 표현이 두 가지이다.
이와 같은 단점 때문에 부호-크기 표현은 ALU의 정수 부분을 표현하는 데에 거의 사용되지 않는다.
2의 보수 표현
- 최상위 비트를 부호 비트로 사용한다.
- 연산에 유리하며, 다른 비트들을 해석하는 방법은 부호-크기 표현의 경우와 다르다.
범위 | $-2^{n-1}$ ~ $2^{n-1}-1$ |
---|---|
0의 표현 | 방법 단 한 가지 |
음수화 | 양의 정수에 대응되는 각 비트의 불리언 보수를 취하고, 1을 더한다. |
비트 길이 확장 | 왼쪽으로 비트를 확장시키고, 그 비트를 sign bit와 같은 비트로 다 채운다. |
오버플로우 규칙 | 두 수가 같은 부호이며 오버플로우가 일어나면, 해당 sign bit와 반대되는 부호로 바뀐다. |
뺄셈 규칙 | A-B는 B를 2의 보수를 취하고, A에 더한다. |
참고자료
범위 확장
- 비트의 길이를 증가시킴에 따라 표현될 수 있는 수의 범위가 확장됨.
- 부호-크기 표현에서는 단순히 부호 비트를 새로운 제일 좌측 비트 위치로 이동시키고, 그 외의 비트들은 0으로 채운다.
- 2의 보수 표현에서 음의 정수의 범위 확장은 다르다.
- 부호 비트를 새로운 제일 좌측 비트 위치로 이동시키고, 그 외의 비트들은 부호 비트와 같은 값으로 채운다.(
부호확장
)
- 부호 비트를 새로운 제일 좌측 비트 위치로 이동시키고, 그 외의 비트들은 부호 비트와 같은 값으로 채운다.(
고정-소수점 표현(fixed-point)
- 이진 소수점(radix point or binary point)이 제일 우측 비트의 우측에 고정되어 있다고 가정
- 프로그래머는 이진 소수점의 위치를 묵시적으로 조정함으로써 이진 소수(binary fraction)들에 대해서도 같은 표현 방법들을 사용할 수 있다.
음수화(Negation)
- 부호-크기 표현에서 정수를 음수로 바꾸는 규칙
- 정수의 각 비트(부호 비트 포함)에 대하여 불 보수(Boolean Complement)를 취한다.
- 그 결과를 부호없는 이진 정수로 취급하고 1을 더한다.
수식 | 내용 | |
---|---|---|
+18 | = | 00010010 |
비트 단위 보수 | = | 11101101 |
연산 | + | 1 |
-18 | = | 11101110 |
- 그 음수화된 수의 음수화는, 다시 원점회귀
수식 | 내용 | |
---|---|---|
-18 | = | 11101110 |
비트 단위 보수 | = | 00010001 |
연산 | + | 1 |
+18 | = | 00010010 |
- 음수화의 특수 경우
0의 two's complement
- 오버플로우가 무시된다.
-128의 two's complement
- 똑같이 -128이 된다.
덧셈
뺼셈
규칙
오버플로우 규칙
- Flag 체크 : 두 수들이 더해질 때, 두 수들이 모두 양수이거나, 음수이지만, 결과가 반대의 부호이면 오버플로우가 발생한 것이다.
뺄셈 규칙
- 어떤 수(subtrahend)를 다른 수(minuend)에서 빼기 위해서는, 어떤 수(subtrahend)의 two's complement(Negation)를 취하고 그 수를 다른 수(minuend)와 더한다.
two's complement 기하학적 표현
덧셈 및 뺄셈을 위한 하드웨어
곱셈
보호(Gaurd) 없는 이진 곱셈
2의 보수 곱셈
Booth Algorithm
나눗셈
Sign 나눗셈
부동-소수점 표현(Float-Point Representation)
- fixed-point가 컴퓨터에서 사용하기엔 비효율적이라서 나온 표현
- 고정 이진(fixed binary) 혹은 기수 소수점(radix point)이 있다고 가정하면 소수(fraction)도 표현할 수 있다.
- 매우 큰 수와 매우 작은 수는 나타낼 수 없다.
- 매우 큰 두 수의 나눗셈에서 몫의 분수 부분을 잃어버릴 수 있다.
전형적인 32 비트 부동-소수점 형식
부동-소수점 가수(Significand)
- 단어의 마지막 부분
- 부동-소수점 수는 여러 가지 방법으로표현 가능하다.
$$
0.110 \times 2^{5}
$$
$$
110 \times 2^{2}
$$
$$
0.0110 \times 2^{6}
$$
- 정규화된 수(normalized number)
- 가수의 가장 중요한 숫자(most significant digit)가 0이 아닌 값(non-zero)로 표현
$$
\pm 1.bbbb...b \times 2^{ \pm E}
$$
위의 표현에서 b는 이진수 0 or 1 중 하나
부동-소수점 표현의 표현 가능한 수의 범위
부동-소수점 밀도
IEEE 표준 754
- 가장 중요한 부동-소수점 표현이 정의됨
- 프로세서들 간의 이식성(portability)을 향상시키는 것과 복잡한 수리-중심 프로그램들(numerically-oriented programs)의 개발을 용이하기 위하여 개발되었다.
- IEEE 754-2008은 이진 및 십진 부동-소수점 표현을 모두 다루고 있다.
IEEE 754-2008
- 아래와 같은 여러 가지 형태의 부동-소수점 정의
산술적 형식(Arithmetic Format)
- 표준에 의해 정의된 모든 필수적인 연산들이 이 형식에 의하여 지원된다.
- 표준에서 설명된 부동-소수점 operand or 연산의 결과들을 표현하는데 사용될 수도 있다.
기본 형식(Basic Format)
- 이 형식은 다섯 가지 부동-소수점 표현들을 다루고 있는데, 세 가지의 이진 표현과 두 가지의 십진 표현이다.
- encoding는 표쥰에 의해 지정되며, 산술을 위해 사용될 수 있다.
상호 교환 형식(Interchange Format)
- 서로 다른 플랫폼들 간에 데이터 상호 교환을 허용하고, 저장을 위해 사용될 수 있는, 완전히 규격화된 고정-길이의 이진 encoding이다.
IEEE 754 Format and Parameter
확장된 형식
확장된 정밀도 형식(Extended Precision Format)
- 지수에 추가적인 비트들(확장된 범위)을 제공하고, 가수에도 추가적인 비트(확장된 정밀도)를 제공한다.
- 확장된 형식들은 과도한 반올림 오류(roundoff error) 에 의해 최종 결과가 손상될 가능성을 줄여준다.
- 범위가 더 커짐에 따라 최종 결과 값이 기본 형식에서 표현될 수 있는, 계산이 중간 오버플로우(intermediate overflow) 가 중단시킬 가능성을 줄여준다.
- 정밀도가 높아질 때, 발생하는 시간 패널티를 발생시키지 않고 더 큰 기본 형식의 이점을 누릴 수 있다.
확장 가능한 정밀도 형식(Extendable Precision Format)
- 정밀도 및 제어가 사용자 제어 하에서 정의된다.
- 중간 계산을 위해 사용될 수도 있지만, 표준은 형식이나 길이에 어떠한 제한도 두지 않는다.
부동-소수점 덧셈 및 뺄셈
부동-소수점 곱셈
부동-소수점 나눗셈
정밀도 문제
간격 산술
버림
- 추후 수정
이진 부동-소수점 산술을 위한 IEEE 표준
'컴퓨터 구조' 카테고리의 다른 글
명령어 세트 : 주소 지정 방식과 형식 (0) | 2024.03.28 |
---|---|
제 12장 명령어 세트 : 특성과 기능 (1) | 2024.03.28 |
제 8장 운영 체제 지원 (1) | 2024.03.28 |
제 7장 입력/출력 (1) | 2024.03.28 |
제 6장 외부 기억장치(I/O 모듈에 연결된 기억장치) (0) | 2024.03.28 |