본문 바로가기
🏫학부 공부/컴퓨터구조

[컴구] Multiplication and Division

by meteorfish 2023. 10. 21.
728x90

Arithmetic for Computers

  • 정수의 연산자
    1. 덧셈, 뺄셈, 곱셈, 나눗셈
    2. Overflow 처리

정수 덧셈

  • 같은 부호를 더할때, Overflow 발생 가능

정수 뺄셈

  • 다른 부호끼리 뺄때, Overflow 발생 가능

오버플로우 처리

  • C와 같은 언어들을 오버플로우를 무시한다.

  • Ada같은 언어들은 예외 처리가 필요하다.

  • Exception Handler을 통해 ㅇ/외처리



Arithmetic for Multimedia

그래픽과 미디어 처리를 위해 8비트, 16비트 벡터로 계산
(Carry 전달을 위해 64bit adder을 사용함 - 8*8, 4*16, ...)

  • SIMD(Single Instcurtion, Multiple Data) : 여러 데이터를 하나의 명령어로 다루는 것을 의미

  • 포화 연산: Overflow 발생 시, 결과를 가장 큰 값으로 결정하는 것



Multiplication

multiplicand와 multiplier을 통해 product를 구하자.

Optimized Multiplier

  • add와 shift를 한번에 하는 연산
  • 한 덧셈마다 1사이클 소요

Faseter Multiplier (Wallace Tree)

  • 다수의 adder를 사용한다.
  • Cost와 성능의 반비례 관계
  • 파이프 라인 사용 가능 (병렬 수행)

unsigned Multiply

  • 기존의 Multiplication과 마찬가지로 작동
  • 덧셈을 하나하나 진행하기 때문에 매우 오래 걸림

unsigned array Multipy

  • 덧셈을 병렬로 동시에 실행하고, Carry를 왼쪽으로 전달한다.


Division

과정

  1. Remainder - Divisor = Remainder
  2. MSB=1이면, Remainder 복구 -> quotient의 LSB=0
  3. MSB=0이면, Remainder 그대로 두기 -> quotient의 LSB에 1 추가

Faster Division

  • 나눗셈은 병렬적 하드웨어 사용 불가 (나머지의 부호에 따라 달라지기 때문)
  • 빠른 수행을 위해 매 step마다 여러 개의 몫을 계산 (SRT Division)
728x90

'🏫학부 공부 > 컴퓨터구조' 카테고리의 다른 글

[컴구] 메모리 계층구조  (0) 2023.12.13
[컴구] 프로세서 - 2  (0) 2023.11.21
[컴구] 프로세서 - 1  (0) 2023.11.16
[컴구] 컴퓨터 추상화와 기술  (0) 2023.10.21
[컴구] 연산자와 피연산자  (0) 2023.10.11