오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 11. DIVISION 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 11. DIVISION

쫑알bot 2023. 10. 8. 17:25
728x90

DIVISION은 Shift Left와 Subtract로 이루어진다. 

 

일반적으로 우리가 나눗셈을 할 때를 생각해보자.

Divisor    = A

Dividend = B

 

B-A 의 값을 보고 몫이 될지 정하는데,

우선 B의 가장 큰 자릿수부터 훑으면서 간다. 

 

- 1- 1000 은 X 그럼 첫번째 1위에는 0

- 10- 1000도 X 두번째 0위에도 0

...

- 1001 - 1000 은 가능! 그 위에 1

  그 연산을 하면 아래에 값은 10이 남는다.

- 10 - 1000도 X 그 위에도 0   (현재 몫 00010)

- 101 - 1000도 X 그 위에도 0   (현재 몫 000100)

 

- 1010 -1000 가능 그 위에 1 ( 몫 (000)1001 )

나머지는 1010-1000인 10

 

계산 알고리즘은 이렇다. 

내가 한 방식대로

B-A > 0 이면,

                몫 비트에 1

                 나머지 = 나머지 - A

그렇지 않다면

                  몫 비트에 1

                  B비트 하나 더 늘리기.

 


Division Hardware

 

Register 의 HI에는 Remainder / LO 에는 몫을 넣어둔다.

 

구현한 모습은 Multiplication과 비슷하다.

 

(기본적인 형태)

 

 

(발전된,우리가 배울 형태)

 

여기서 7/2 를 해보자.

 

7/2 연산.

각 단계별로 보자. 우리가 위에서 배웠던 방식과는 조금 차이가 있다.

우리는 안 되면 비트 밀고 했는데

 

- 여기에서는 그냥 일단 빼본 다음에 음수가 나오면 다시 뺀 값만큼 더해주고, 미는 방식이다.

 

- HI 먼저 계산하고 몫에 관한 정보가 나오면 LO 가장 오른쪽 비트에 더해주는 걸로

 

- 뭐든 할 때 [ 밀고 > 빼고 ] 이걸 한 세트로 생각해야한다. + 더할 땐 항상 가장 높은 비트에서 다 함

 

1) 처음에 밀어서 00001110 으로 만든 뒤에 - 0010을 해준다.

-0010은 1의 보수 : 1101  > 2의 보수 : 1110 이므로, 

   00001110

+ 1110  

= 11101110 이다. 

가장 앞이 1. 즉, 음수가 나왔단 뜻이니까 여기는 몫이 맞지 않다는 뜻이다.

따라서 몫을 나타내는 LO 가장 아래에 0을 넣는다.

그리고 맞지 않았다는 뜻이니 다시 뺀 만큼 더해주자

  11101110

+0010 

=00001110 

 

2) [ 밀고 > 빼고 ] 이걸 한 세트로 생각해야하므로

00001110 에서 00011100이 된다.

여기에서 -0010 = 1110을 더하면

  00011100

+1110

=11111100

근데 이거도 가장 앞이 1이 됨. 따라서 뒤에 몫으로 0넣고

다시 뺀 만큼 더해주기

  11111100

+0010

=00011100

 

3) 밀고 빼기

00011100 에서 밀자.

  00111000

+1110

=00011001   

 

4) 밀고 빼기

00011001 에서 밀자 

  00110010

+1110

  0001 0011 

→  HI 0001 = 나머지 / LO 0011 몫

 


위 계산이 Hardware에서는 어떻게 이루어지는지 보자

 

 1) 시작 단계에서 DIvisor는 위에 있고, Dividend는 LO에 들어가있다.

 

2) SLL를 먼저 한 뒤 SUB를 한다.

 

sign bit가 1이므로 Control test에 들어간다.

 

3)  Restore 하기 위해 뺐던 0010를 다시 더해주고 몫 비트에 0을 넣는다.

 

4) 또 밀고 뺀다.

 

sign bit가 1이므로 다시 뺸만큼 더해주자

 

 

5)밀 뺄

잘못된 곳 없음

 

몫 1 추가

 

6)ㅁ>ㅃ

 

 

문제없음

 

몫 1추가

 

 

 

 

(출처)

한동대학교 용환기 교수님 - 컴퓨터 구조