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

컴퓨터구조9 Computer Arithmetic

by 맑은청이 2020. 6. 23.
728x90
반응형

Arithmetic & Logic Unit (ALU)

- 컴퓨터 내에서의 정수 연산 

- floating point(실수) 표현

- 과거에는 Co-processor 

 

Control Unit 에는 제어 신호가 들어갑니다. Flags 는 오버플로우 등의 신호가 나옵니다. 

 

 

 

 

Sigh-Magnitude(부호와 절댓값으로 표현)

가장 왼쪽 부호(LSB)양수,음수를 나타내는 bit 입니다. 

이거에 단점은 +0 , -0 처럼 0의 표현식이 두개 입니다.  또 연산 후 부호를 다시 판단 해야함으로 불편합니다. 

 

그래서 2의 보수법이 나왔습니다.

0이 단 하나의 표현식이 있습니다. 

 

간단히 2의 보수를 음수로 바꾸는 법에 대해 말하자면 

 

식을 0->1 ,1->0 로 반전시키고

+1 을 해주면 됩니다. (-3)

 

 

이 2의 보수를 가지고 하드워어적인 덧셈기와 뺄셈기를 보겠습니다.

보면 뺄셈기가 없습니다. 뺄셈기는 덧셈기를 활용하면 되기 때문에 없습니다. ( a - b = a + (-b))  

 

 

 

 

곱셈기는 좀 복잡합니다. 

이 식으로 좀 더 쉽게 구할 수 있는 회로가 있습니다.

1011 Multiplicand 에 세팅 
1101 은 Multiplier 에 저장 

4비트 + 4비트를 하면 5비트가 나옵니다. 즉 가장 큰 자리수의 값은 Carry 에 읽을 겁니다 .

 

 

 

 

실행 예시 

첫번째 계산 

C는 캐리고 A 는 덧셈의 결과가 나오는 부분입니다. 

Multiplier 에 마지막 비트가 색칠되어 있는데 이건 뭘까요? 

이 하위 비트 만을 보고 있습니다. (곱셈을 해야하고 쉬프트 해줘야하니깐요) 

 

Q 의 전체 값입니다. 숫자가 보이지 않나요?

Multiplier 입니다. 이 계산을 다하면 multiplier가 쉬프트 레프트가 다 되면 

이렇게 값이 사라집니다. 

 

그럼 이제 1011 x 1101 을 해보겠습니다. '1101 '의 1을 1011 와 곱해주어야합니다. Q0이 1이기 때문에 

add 를 하게 됩니다.(나중에 shift 도 진행됩니다)

이 두 값이 더해져서 다음과 같이 됩니다. 

 

다음과 같이 더한 값이 A 에 저장이 됩니다. 

 

그리고 쉬프트가 됩니다.

다음 Q1 은 0이기 때문에 add 말고 shift 만 해두면 됩니다. 

 

 

마지막의 Q A 값이 연산의 결과와 동일한 것을 볼 수 있습니다. 

 

이 회로가 굉장히 효율적인 걸 볼 수 있습니다. 결과를 다른 위치가 아니였기 때문입니다. 

 

이걸로 음수 계산도 가능할까요? 그건 불가능합니다. 

 

 

 

 


Real Numbers

실수가 컴퓨터 상에서 어떻게 표현이 되는지 알아보겠습니다 .

 

Floating Point

biased exponent 에서 -127 을 해주어야 의도한 값이 나옵니다.

127을 기준으로 크면 양수 작으면 음수로 구분하기 위해서 이렇게 해줍니다. 

 

 

728x90
반응형