Written by
xi-jjun
on
on
컴퓨터 구조 - 6
컴퓨터 구조 6강
KOCW 컴퓨터구조 2020-2학기 최규상 교수님 강의를 듣고 정리한 글이다.
Arithmetic for Computers
overflow와 floating-point를 처리해야 한다.
Dealing with Overflow
Overflow : 어떤 연산의 결과가 해당 bit의 표현범위를 벗어나는 것.
Program 언어마다 처리하는 방법이 다 다르다.
- C, Java는 Integer overflow를 무시한다.
- MIPS는 overflow를 탐지하면 exception을 발생시킨다. overflow가 발생한 명령어의 주소를 register에 저장하고, 해당 예외 처리 루틴으로 점프한다. 처리가 끝나면 프로그램 실행을 계속한다.
Saturating operation
overflow가 발생했을 때 결과를 최대값으로 준다.
0xFFFFFF
+0xFFFFFF
---------
0xFFFFFF
media 연산에서 주로 사용된다. Ex) RGB값 표현.
Floating Point
-2.345 x 10^(28) ← nomalized scientific notation
-2.345
: significand
IEEE Floating-Point Format
\[X=(-1)^S*(1+Fraction)*2^{Exponent-Bias}\]-
S
: sign bit -
\[1.0\leq|significand|<2.0\]1 + Fraction
: nomalized significand. -
Bias
- single bias = 127
- Double bias = 1023
Arithmetic for Multimedia
그래픽 + media(비디오)는 8bit, 16bit data를 많이 처리한다. 만약 우리가 64bit adder를 사용한다면 8bit data를 64bit adder로 처리하게 되는 것. 하지만 하나의 명령어로 여러개의 data를 처리할 수도 있다. → SIMD
SIMD(Single Instruction Multiple Data)
하나의 명령어로 여러개의 값을 동시에 계산.
따라서 64bit adder를 다음과 같이 쪼갤 수 있다.
- 8x8bit : 8bit data 8개를 한 개의 명령어로 계산할 수 있다.
- 4x16bit
- 2x32bit
bits는 그 자체로 의미를 담고 있지 않다. 어떤 Instruction이 쓰이냐가 중요하다.