과목명 : 컴퓨터 구조(Computer Organization & Architecture)
수업일자 : 2022년 11월 17일 (목)
< 컴퓨터 산술(Computer arithmetic) Chapter list>
(A) 정수 표현
- 부호 - 크기 (부호와 절대치)
- 1의 보수
- 2의 보수
(B) 산술 연산 동작 과정
- 덧셈, 뺄셈, 곱셈, 나눗셈
(C) 실수 표현
- 고정 소수점(Fixed point)
- 부동 소수점(Floating-point)
1. Arithmetic and Logic Unit(ALU)
1-1. Arithmetic and Logic Unit(ALU)의 정의
- 산술 논리 장치는 덧셈, 뺄셈 같은 두 수에 대한 산술 연산과 배타적 논리합, 곱과 같은 논리 연산을 계산할 수 있는 디지털 회로를 의미하며 이러한 산술 논리 장치는 컴퓨터의 핵심인 프로세서에 포함된 기본 설계 장치입니다.
1-2. 제어 신호(Control signal)
- 산술 논리 장치의 동작과 데이터 이동을 제어하는 신호입니다.
1-3. 오퍼랜드(Operand)
- 산술 및 논리 연산에 사용되는 데이터를 의미합니다.
1-4. 플래그(Flag)
- 연산 결과의 상태를 저장합니다.
- Example) 올림수, 오버플로우, Zero interrupt 등
1-5. 결과 레지스터
- 산술 및 논리 연산에 대한 결과값을 저장합니다.
1-6. 컴퓨터에서 음의 정수를 표현하기 위한 세 가지 방법
(1) 부호 -크기 표현(Signed-magnitude representation)
(2) 1의 보수 표현(1's complement representation)
(3) 2의 보수 표현(2's complement representation)
(1) 부호 - 크기 표현(Signed-magnitude representation)
(2) 1의 보수 표현(1's complement representation)
- 1의 보수 표현은 모든 비트들을 반전시킵니다.(0 → 1, 1→ 0)
(3) 2의 보수 표현(2's complement representation)
- 모든 비트들을 반전시키고, 해당 결과값에 1을 더합니다.
(4) 부호가 존재하는 8비트 2진 정수의 표현 방법
10진수 | 부호화 - 크기 표현 | 1의 보수 | 2의 보수 |
127 | 01111111 | 01111111 | 01111111 |
126 | 01111110 | 01111110 | 01111110 |
... | ... | ... | ... |
1 | 00000001 | 00000001 | 00000001 |
+0 | 00000000 | 00000000 | 00000000 |
-0 | 10000000 | 11111111 | 존재하지 않음 |
-1 | 10000001 | 11111110 | 11111111 |
-2 | 10000010 | 11111101 | 11111110 |
... | ... | ... | ... |
-126 | 11111110 | 10000001 | 10000010 |
-127 | 11111111 | 10000000 | 10000001 |
-128 | 존재하지 않음 | 존재하지 않음 | 10000000 |
2. 비트 확장(Bit extension)
2-1. 정의
- 비트 확장은, 부호가 있는 데이터의 비트 수를 늘릴 수 있는 연산을 의미합니다.
2-2. 부호 - 크기 표현
- 부호 비트를 맨 좌측으로 이동시키고, 그 외의 비트들은 모두 0으로 할당합니다.
+21 = 00010101 (8 Bit)
+21 = 0000000000010101 (16 Bit)
-21 = 10010101 (8 Bit)
-21 = 1000000010010101 (16 Bit)
2-3. 2의 보수 표현
- 확장된 상위 비트들을 부호 비트와 동일한 값으로 할당시킵니다.
+21 = 00010101 (8 Bit)
+21 = 0000000000010101 (16 Bit)
-21 = 10010101 (8 Bit)
-21 = 1111111110010101 (16 Bit)
2-4. 음수화(Negation)
- 각 비트들에 부울 보수(Boolean complement)를 취합니다.
- 0 → 1, 1 → 0
3. 덧셈과 뺄셈(Addition and Subtraction)
3-1. 2의 보수로 표현된 수들의 덧셈
- 두 수가 부호 없는 수인 것으로 간주하고 진행합니다.
- 연산의 결과가 양수이면 정상적인 2진수로 표현된 양수를 얻습니다.
- 연산의 결과가 음수이면 2의 보수 형태로 음수를 얻게 됩니다.
- 결과값의 최상위 비트를 넘어가는 올림수 비트(Carry bit)가 발생했다면 무시합니다.
3-2. 2의 보수로 표현된 수들의 뺄셈 (M-S)
(1) 피감수(Minuend)에서 다른 감수(Subtrahend)를 빼는 과정
- 감수의 보수(Complement)를 취한 뒤 피감수와 더합니다.
3-3. 2의 보수 정수들의 기하학적 표현(Geometric expression)
3-3. 덧셈 / 뺄셈 하드웨어 블록 다이어그램
3-4. 곱셈(Multiplication)
(1) 곱해지는 수를 피승수 M(Multiplicand), 곱하는 수를 승수 Q(Multiplier)라고 정의합니다.
(2) 부호가 없는 경우의 곱셈의 예시
3-5. 부호가 없는 2진 곱셈의 순서도(Flowchart)
3-6. 승수와 피승수가 서로 음수인 경우
-5(1011) × -3(1101) = -113(100011111)
3-7. 피승수가 음수인 경우
- 비트 좌측에 1을 할당시킵니다.
3-8. 승수가 음수인 경우
- 승수의 비트는 시프트(Shift)나 곱셈에 대응될 수 없는 특징을 가집니다.
- 승수가 음수인 경우 Booth 알고리즘을 통해 해결할 수 있습니다.
4. Booth Algorithm
4-1. Booth 알고리즘
- Booth 알고리즘은 부호가 존재하는 두 수의 곱셈을 처리할 때 사용되는 알고리즘입니다.
4-2. 나눗셈의 예시 : 147 / 11 = 몫(13), 나머지(4)
(1) 피제수를 좌측에서 우측으로 차례로 검사합니다.
(2) 제수가 피제수를 나눌 수 있을 때까지 한 비트씩 이동하면서 검사합니다.
(3) 만약 나눠지지 않는다면 몫은 0이고, (2)번 과정으로 되돌아갑니다.
(4) 나눠지면 몫은 1, 부분 피제수에서 제수를 빼고 (2)번 과정으로 되돌아갑니다.
- 이에 따라 결과는 partial reminder입니다.
5. 부동 소수점(Floating-point) 표현 방식
5-1. 고정 소수점(Fixed-point) 방식
- 매우 큰 수 및 매우 작은 수의 표현이 불가합니다.
5-2. 부동 소수점(Floating-point) 방식
- 과학적인 표기 방법인 지수(Exponent)를 사용하여 소수점의 위치를 이동시킬 수 있는 표현 방법입니다.
- 이를 통해 수의 표현 범위가 확대됩니다.
- 아래는 10진수에 대한 부동 소수점 표현 방식입니다.
5-3. 부동 소수점 수(Floating-point number)의 표현 방식
- S은 가수(Significand), B는 기수(Base), E는 지수(Exponent)를 나타냅니다.
- 2진 부동 소수점 수(Binary floating-point number)의 경우 가수 S는 0, 1로 구성되며 기수 B는 2입니다.
5-4. 비트 수에 따른 분류
(1) 단일 - 정밀도(Single-precision) 부동 소수점 수 - 32 Bit
(2) 복수 - 정밀도(Double-precision) 부동 소수점 수 - 64 Bit
5-5. 정규화된 표현(Normalized expression)
5-6. 전형적인 32 비트 형식으로 표현 가능한 수의 범위
5-7. 부동 소수점의 밀도
(1) 부동 소수점을 사용한다고 해서 표현 가능한 수의 개수가 증가하진 않습니다.
(2) 수가 선상에 균등한 간격으로는 나열되지 않습니다.
- 계산 값의 정확도가 떨어질수록, 근접한 값으로 반올림되어야 합니다.
(3) 범위와 정밀도 사이의 상호 조정(Trade-off)이 가능합니다.
- 표현 가능한 수는 일정하다면, 지수가 증가할수록 표현 범위는 증가하지만 정밀도는 감소합니다.
- 가수가 증가할수록 표현 범위는 감소하지만 정밀도는 증가합니다.
6. 부동 소수점의 산술 연산
6-1. 부동 소수점의 산술
(1) 가수와 지수의 연산을 분리해서 수행합니다.
(2) 덧셈과 뺄셈
- 지수를 같은 값으로 조정한 후, 가수들에 대해 덧셈과 뺄셈을 수행합니다.
(3) 곱셈과 나눗셈
- 가수끼리는 곱셈과 나눗셈을 수행합니다.
- 지수의 연산에서는 곱셈의 경우는 덧셈을 수행하고 나눗셈의 경우에는 뺄셈을 수행합니다.
6-2. 부동 소수점 수의 덧셈과 뺄셈
(1) 우선적으로 0인지 검사합니다.
- 어느 한 오퍼랜드가 0이면 다른 오퍼랜드가 결과값이 됩니다.
(2) 가수들의 자릿수 위치가 일치되도록 위치를 조정합니다.
- 두 수의 지수들을 같아지도록 조정합니다.
(3) 가수들 간에 덧셈 / 뺄셈을 수행합니다.
- 두 가수들의 부호를 고려해 더합니다.
(4) 결과를 정규화(Normalization)합니다.
- 가장 왼쪽 비트가 0이 아닐 때까지 좌측으로 시프트(Shift)시킵니다.
(5) 2진수의 부동 소수점 수(Floating-point numbers)의 덧셈 예시
6-3. 부동 소수점 수의 곱셈
(1) 가수끼리는 곱셈 연산을 수행하고 지수끼리는 덧셈을 수행합니다.
(2) 2진 부동 소수점 수의 곱셈의 예시
6-4. 부동 소수점 수의 나눗셈
(1) 가수 부분은 나눗셈 연산을 수행하고, 지수 부분은 뺄셈 연산을 수행합니다.
(2) 2진수 부동 소수점 나눗셈의 예시
- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.
- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.
'전공 수업 > 컴퓨터 구조(Computer Architecture)' 카테고리의 다른 글
[14주 차] - 기계 명령어 세트 : 주소 지정 방식과 형식 (0) | 2023.01.04 |
---|---|
[13주 차] - 기계 명령어의 특성, 오퍼랜드, 연산의 종류 (0) | 2023.01.04 |
[11주 차] - 프로그램 I/O, 인터럽트-구동 I/O, 직접 기억 장치 액세스(DMA) (0) | 2022.11.24 |
[10주 차] - 외부 기억 장치 (2), I/O Module (0) | 2022.11.15 |
[8주 차] - 내부 기억 장치 (2), 외부 기억 장치 (1) (0) | 2022.11.11 |
댓글