[Chapter 3] Arithmetic for Computers

slchoi·2022년 1월 5일
0

컴퓨터구조

목록 보기
7/15
post-thumbnail

KOCW에 공개된 영남대 최규상 교수님 컴퓨터구조 강의를 수강 후 정리한 내용입니다.

3.2 Addition and Subtraction


Integer Addition and Subtraction

1. Integer Addition

  • Overflow: 어떤 값이 범위를 벗어나는 경우 발생
    • positive와 negative를 더할 경우 overflow는 절대 발생하지 않음
    • 두 개의 positive를 더하거나 두 개의 negative를 더하는 경우 overflow가 발생 가능
      • 두 개의 positive를 더한 결과 sign bit이 1인 경우(음수인 경우) overflow 발생
      • 두 개의 negative를 더한 결과 sign bit이 0인 경우(양수인 경우) overflow 발생

2. Integer Subtraction

  • 두 개의 positive와 두 개의 negative의 subtraction에서는 overflow가 발생하지 않음
  • negative에서 positive를 빼는 경우 sign bit이 0이 되면 overflow 발생
  • positive에서 negative를 빼는 경우 sign bit이 1이 되면 overflow 발생

3. Dealing with Overflow

  • C언어의 경우 overflow를 무시
    • MIPS의 addu, addui, subu 명령어의 경우 overflow 무시
  • Ada, Fortran의 경우 exception을 발생
    • MIPS의 add, addi, sub 명령어의 경우 overflow가 발생하면 예외 처리
    • 예외 처리 방법은 4장에서 다룸

3.3 Multiplication


MIPS Multiplication

  • MIPS의 곱하기 연산 결과는 64bit으로 저장되므로 32bit 레지스터 2개가 필요
    • HI: MS 32bit
    • LO: LS 32bit
    • mult는 64bit의 결과를 mul은 32bit의 결과를 만듦

3.4 Division


MIPS Division

3.5 Floating Point


1. IEEE Floating-Point Format

  • S: sign bit. 0이면 양수, 1이면 음수
  • 1+Fraction: significand(X 앞의 숫자). float에서는 정수 부분이 항상 1이므로 소수점 아래 숫자만 저장하면 됨. 이 때 소수점 아래 숫자를 fraction이라고 부름
    • significand 범위: 1 이상 2 미만
  • Bias: Single일 경우 127, Double일 경우 1203
  • Exponent를 저장할 때는 실제 exponent 값에 bias를 더한 값을 저장하기 때문에 값을 구할 때는 bias 값을 빼준 후 계산

2. Floating-Point

1. Relative Precision

  • Single: 6자리의 10진수 표현 가능
  • Double: 16자리의 10진수 표현 가능

2. Infinities and NaNs

  • Infinities: Exponent = 111...1, Fraction = 000...0일 경우
  • NaNs: Exponent = 111...1, Fracion이 000...0이 아닌 경우

3. Floating-Point Addition

  • Integer보다 연산이 복잡해 하나의 clock cycle로 연산을 수행하기에는 오래 걸림. 이럴 경우 다른 모든 명령어의 수행이 늦어지기 때문에 일반적으로 여러 cycle를 사용
  • 이 단점을 보완하기 위해 pipline(병렬)로 처리. 하나의 명령어는 여러 cycle에서 실행되지만 throughput을 높여 여러 개의 명령어가 동시에 실행되기 때문에 단위 시간당 float-point adder를 할 수 있는 명령어의 개수는 증가

4. Floating-Point Arithmetic Hardware

  • Addition, subtraction, multiplication, division, reciprocal, squareroot를 지원
  • FP와 Integer의 변환도 지원해줌
  • 연산들은 여러 사이클을 통해 수행되며 파이프라인을 사용해 성능을 향상시킬 수 있음

6주차 끝!!!
게시물에 사용된 사진은 강의 내용을 캡쳐한 것입니다.

profile
예비 백엔드 개발자

0개의 댓글