본문 바로가기
전공 수업/컴퓨터 구조(Computer Architecture)

[12주 차] - 컴퓨터 산술(Computer arithmetic)

by TwoJun 2022. 12. 20.

    과목명 : 컴퓨터 구조(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)의 정의 

- 산술 논리 장치는 덧셈, 뺄셈 같은 두 수에 대한 산술 연산과 배타적 논리합, 곱과 같은 논리 연산을 계산할 수 있는 디지털 회로를 의미하며 이러한 산술 논리 장치는 컴퓨터의 핵심인 프로세서에 포함된 기본 설계 장치입니다.

 

ALU(Arithmetic and Logic Unit)의 입력과 출력

 

 

 

 

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)가 발생했다면 무시합니다.

2의 보수로 표현된 수들의 덧셈

 

 

 

 

3-2. 2의 보수로 표현된 수들의 뺄셈 (M-S)

(1) 피감수(Minuend)에서 다른 감수(Subtrahend)를 빼는 과정

- 감수의 보수(Complement)를 취한 뒤 피감수와 더합니다.

2의 보수로 표현된 수들의 뺄셈

 

 

 

 

3-3. 2의 보수 정수들의 기하학적 표현(Geometric expression)

(좌) 4 비트 수 / (우) n-비트 수

 

 

 

 

3-3. 덧셈 / 뺄셈 하드웨어 블록 다이어그램

덧셈/뺄셈 하드웨어 기능 블록 다이어그램

 

 

 

 

3-4. 곱셈(Multiplication)

(1) 곱해지는 수를 피승수 M(Multiplicand), 곱하는 수를 승수 Q(Multiplier)라고 정의합니다.

 

 

(2) 부호가 없는 경우의 곱셈의 예시

 

 

 

 

3-5. 부호가 없는 2진 곱셈의 순서도(Flowchart)

부호가 존재하지 않는 2진 곱셈의 순서도

 

 

 

 

3-6. 승수와 피승수가 서로 음수인 경우

-5(1011) × -3(1101) = -113(100011111)

 

 

 

 

3-7. 피승수가 음수인 경우

- 비트 좌측에 1을 할당시킵니다.

(좌) 부호 없는 정수들 / (우) 2의 보수 정수들

 

 

 

 

3-8. 승수가 음수인 경우

- 승수의 비트는 시프트(Shift)나 곱셈에 대응될 수 없는 특징을 가집니다.

 

- 승수가 음수인 경우 Booth 알고리즘을 통해 해결할 수 있습니다.

 

 

 

 

 

 

 

4. Booth Algorithm

4-1. Booth 알고리즘

- Booth 알고리즘은 부호가 존재하는 두 수의 곱셈을 처리할 때 사용되는 알고리즘입니다.

Booth 알고리즘의 적용 예시 (7 * 3 곱셈)

 

 

 

 

4-2. 나눗셈의 예시 : 147 / 11 = 몫(13), 나머지(4)

(1) 피제수를 좌측에서 우측으로 차례로 검사합니다.

 

(2) 제수가 피제수를 나눌 수 있을 때까지 한 비트씩 이동하면서 검사합니다.

 

(3) 만약 나눠지지 않는다면 몫은 0이고, (2)번 과정으로 되돌아갑니다.

 

(4) 나눠지면 몫은 1, 부분 피제수에서 제수를 빼고 (2)번 과정으로 되돌아갑니다.

- 이에 따라 결과는 partial reminder입니다.

부호 없는 2진 정수 나눗셈 예시

 

 

(좌) 2의 보수 나눗셈 예시(7/3)  /  (우) 부호 없는 2진 나눗셈을 위한 순서도

 

 

 

 

 

 

 

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 비트 형식으로 표현 가능한 수의 범위

부동 소수점 수(Floating-point numbers)

 

 

 

 

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)의 덧셈 예시

부동 소수점 수의 덧셈(2진수 기준)

 

 

 

 

6-3. 부동 소수점 수의 곱셈

(1) 가수끼리는 곱셈 연산을 수행하고 지수끼리는 덧셈을 수행합니다.

 

(2) 2진 부동 소수점 수의 곱셈의 예시

부동 소수점 수의 곱셈(2진수 기준)

 

 

 

 

6-4. 부동 소수점 수의 나눗셈

(1) 가수 부분은 나눗셈 연산을 수행하고, 지수 부분은 뺄셈 연산을 수행합니다.

 

(2) 2진수 부동 소수점 나눗셈의 예시

부동 소수점 수의 나눗셈(2진수 기준)

 

 

 

 

 

 

 

- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.

- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.

댓글