연산 [4].

임승섭·2023년 4월 25일
0

Computer Architecture

목록 보기
9/19

Floating Point Addition

4-digit decimal example

9.999101+1.6101019.999 * 10^1 + 1.610 * 10^{-1}

  1. Allign decimal points
    Shift number with smaller exponent(?)
    9.999+101+0.0161019.999 + 10^1 + 0.016 * 10^1

  2. Add significands
    9.999101+0.016101=10.0151019.999 * 10^1 + 0.016 * 10^1 = 10.015 * 10^1

  3. Normalize result and check for over/underflow
    1.00151021.0015 * 10^2

  4. Round and renormalize if necessary
    1.0021021.002 * 10^2

4-digit binary example

1.00021+1.110221.000 * 2^{-1} + -1.110 * 2^{-2}
(0.5+0.4375)(0.5 + -0.4375)

  1. Align binary point
    Shift number with smaller exponent
    1.00021+0.111211.000 * 2^{-1} + -0.111 * 2^{-1}

  2. Add significands
    1.00021+0.11121=0.001211.000 * 2^{-1} + -0.111 * 2^{-1} = 0.001 * 2^{-1}

  3. Normalize result and check for over/underflow
    1.000241.000 * 2^{-4}

  4. Round and renormalize if necessaru
    1.00024=>0.06251.000 * 2^{-4} => 0.0625


Floating Point Multiplication

4-digit decimal example

1.11010109.2001051.110 * 10^{10} * 9.200 * 10^{-5}

  1. Add exponents
    For biased exponents, subtract bias from sum
    newexponent=10+5=5new \,\,exponent = 10 + -5 = 5

  2. Multiply significads
    1.1109.200=10.2121.110 * 9.200 = 10.212
    =>10.212105=>10.212 * 10^5

  3. Normalize result and check for over/underflow
    1.02121061.0212 * 10^6

  4. Round and renormalize if necessary
    1.0211061.021 * 10^6

  5. Determine sign of result from signs of operands
    +1.021106+1.021 * 10^6

4-digig binary example

1.000211.110221.000 * 2^{-1} * -1.110 * 2^{-2}
(0.50.4375(0.5 * -0.4375

  1. Add exponents
    unbiased : -1 + -2 = -3
    biased : (-1 + 127) + (-2 + 127) = -3 + 254 - 127 = -3 + 127

  2. Multiply significands
    1.0001.110=1.1101.000 * 1.110 = 1.110
    =>1.11023=> 1.110 * 2^{-3}

  3. Normalize result and check for over/underflow
    1.110231.110 * 2^{-3}

  4. Determine sign
    1.11023-1.110 * 2^{-3}


FP Instructions in MIPS

  • single precision arithmetic
    • add.s, sub.s, mul.s, div.s
  • double precision arithmetic
    • add.d, sub.d, mul.d, div.d
  • single- and double- precision comparison
    • c.eq.s, c.eq.d, c.lt.s, c.lt.d, ...
  • branch on FP condition code true or false
    • bc1t, bc1f

Subword Parallellism

  • 원래 많은 그래픽 시스템이 화소 하나당 32bit를 사용하였다. 여기에 소리에 대한 지원도 필요하게 되었고, 소리 샘플은 16bit 정도의 정밀도면 충분하다.

  • 모든 마이크로프로세서는 byte나 halfword가 메모리에 저장될 때 공간을 덜 차지하도록 지원한다. 하지만 일반적인 정수 프로그램에서 이 정도 크기의 데이터에 대한 산술연산이 많이 쓰이지 않기 때문에, 데이터 전송 이상의 지원은 거의 없었다.

  • 그러다가 많은 그래픽과 오디오 응용 프로그램이 이런 데이터의 백터에 같은 연산을 반복 수행한다는 것을 설계자가 알게 되었다.

  • 128bit Adder 내부의 올림수 체인을 분할하면 프로세서가 병렬성을 활용해서, 8 bit operand 16개나 16 bit operand 8개, 32 bit operand 4개, 64bit operand 2개를 동시에 연산할 수 있다.

  • 큰 워드 내부에 병렬성이 있다고 할 때, 이것의 확장을 Subword Parallellism(서브워드 병렬성)이라고 한다.

0개의 댓글