본문 바로가기
Computer Science/컴퓨터 구조

컴퓨터의 산술연산

by Luinesse 2024. 1. 8.
반응형

덧셈

먼저 덧셈입니다. 덧셈은 일반적인 10진수 간의 덧셈 처럼 수행합니다. 단, 이때 올림수는 버리게 됩니다.

이 덧셈과 뺄셈을 처리하는 H/W는 병렬 가산기가 처리합니다. 병렬 가산기는 비트 수만큼의 전가산기로 구성되고, 여러 비트들로 이루어진 두 개의 데이터에 대한 덧셈을 수행하는 회로입니다.

 

이때 병렬 가산기에 상태 비트 제어회로를 포함시켜, 덧셈 과정에서 상태를 저장합니다.

상태 비트는 4가지를 저장하는데, 덧셈을 수행했을 때, 마지막 발생 올림수, 그 한단계전 올림수의 XOR 연산으로 V Flag(Overflow 판단) 를 저장하고, 마지막 연산에서의 발생 올림수로 C Flag, 각 덧셈의 결과의 NOR 연산으로 Z Flag, 마지막 연산의 부호로 S Flag를 세트합니다.

 

뺄셈

뺄셈은 덧셈과 마찬가지로 같은 병렬 가산기를 통해 수행합니다. 단, 보수기를 추가하여 해당 연산이 덧셈인지 뺄셈인지 확인하고, 뺄셈일 때, A와 B 중 A를 병렬 가산기로, B는 보수기를 통해 2의 보수로 변환 된 후 병렬 가산기로 입력됩니다.

 

곱셈

곱셈은 일반적으로 10진수 곱셈과 같이 승수와 피승수를 곱하고, 나온 부분 적들의 합을 최종결과로 사용합니다.

  1. 승수와 피승수를 저장할 레지스터 M, Q에 각각 세트
  2. 결과값이 저장될 A 레지스터와 C 비트 0으로 초기화
  3. 승수의 최하위 비트를 검사
  4. 승수의 최하위 비트로 피승수와 곱(2진수 이므로, 피승수 그대로 내려오거나, 0으로 세트)
  5. Q, A는 우측 시프트. (승수의 최하위 비트는 검사가 끝났으므로)
  6. 위를 계산이 끝날때 까지 반복

2의 보수간 곱셈의 복잡함을 해결하기 위해 사용하는 특별한 알고리즘 중 하나인 Booth 알고리즘은 다음처럼 사용합니다.

  • M 레지스터와 병렬 가산기 사이에 보수기 추가
  • Q 레지스터 옆 Q-1 이라는 1bit 레지스터 추가

이때 Qi와 Qi-1의 값을 통해 Yi를 도출해내서 연산을 다르게합니다.

Qi Qi-1 Yi
0 0 0
1 1 0
1 0 1'
0 1 1

 

Yi가 0과 1일때는 기존의 곱셈처럼 진행하고, 1'가 나온경우 피승수를 2의 보수로 취하여 진행합니다.

 

나눗셈

나눗셈은 일반적인 10진수 나눗셈 처럼 수행합니다. 순서도는 다음과 같은 형태로 이어집니다.

  1. 결과값을 저장할 A 레지스터는 0으로 초기화, 각 레지스터의 길이가 n비트라면, 피제수는 2*n 비트 길이의 2의 보수 표현 피제수, 제수는 각각 Q,M 레지스터에 세트
  2. A와 Q를 좌측 시프트 1회
  3. M과 A의 부호를 검사하여, 같다면 A-M을 수행하여  A에 저장, 다르다면, A+M을 수행하여 A에 저장합니다.
  4. 연산 전과 후 A의 부호가 같다면, 연산이 성공한 케이스입니다. 이때, 연산이 성공이거나 A = 0이라면, Q0를 1로 세트합니다. 반대로 연산이 실패이고 A != 0이라면, Q0를 0으로 세트하고 A를 이전의 값으로 복구합니다.
  5. 계수 n을 1 뺍니다.
  6. n이 0이 아니라면 위 연산을 반복합니다.
반응형

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

제어 유닛  (0) 2024.01.09
컴퓨터의 실수표현  (1) 2024.01.08
컴퓨터의 논리연산  (1) 2024.01.08
컴퓨터의 수 표현  (0) 2024.01.08
명령어 세트(Instruction Set)  (1) 2024.01.04