Booth's algorithm

컴퓨터 구조 수업을 듣다가 ALU 부분에서 곱셈에 대해 배울때 조사했던 Booth's algorithm에 대한 정리입니다.

기본적인 곱셈의 경우 multiflier의 해당 자리수가 multiflicant를 product에 더해주고 0일 경우 0을 더해준뒤 1bit left shift를 해주고 난뒤 multiflier의 다음 자리수를 0,1인지 비교하여 product에 더해주게 된다
1010 * 1001 일 경우(부호비트 생략)

     0110  (6)
  * 1001  (9)
     0110
    0000
   0000
  0110
  0110110
이런식으로 구하게 되며 자리수 만큼의 반복을 거쳐야 계산이 완료하게 된다 지금의 경우는 양의 정수끼리의 곱셈이며 음의 정수일 경우 부호비트에 대한 처리를 따로 해줘야한다.

이것을 좀더 빠르게 하기위해 나온 것이 Booth's algorithm이다. Booth's algorithm은 음수와의 곱셈을 지원하며 한번에 2bit씩 left shift를 하며 반복 횟수를 줄여주게 된다. Booth's algorithm은 multiflier의 맨오른쪽 bit 오른쪽에 0이 하나 더 붙이고 1자리씩 겹치게 3자리로 끈어서 Booth's Table에 대입한다

Booth's Table
011      2     multiflicant를 1bit left shift 시킨다음 product에 더해준다
010      1     multiflicant를 product에 더해준다
001      1     multiflicant를 product에 더해준다
000      0     0을 product에 더해준다
111      0     0을 product에 더해준다
110     -1    multiflicant를 2의보수로 변경한 다음 product에 더해준다
101     -1    multiflicant를 2의보수로 변경한 다음 product에 더해준다
100     -2    multiflicant를 2의보수로 변경한 다음1bit left shift 시킨다음 product에 더해준다

위의 문제를 여기에 맞춰서 풀어준다면
0110*1001(첫자리를 부호비트로 생각)      (6)*(-7)

multiflier를 끈어주어야한다
1001에 0을 하나더 붙여서 10010으로 만들고 1자리씩 겹치게 3자리로 끈는다.
1 0|0|1 0
100 010 2개가 나오게 된다

이것을 booth's table에 대입하게 되면
100 010
-2   1
이며 연산은 오른쪽에서 왼쪽으로 간다

처음은 1이므로 multiflicant를 product에 더해주면 된다
0000+0110
product:0110

2bit left shift를 한다.

다음은 -2이므로 multiflicant를 2의보수로 변경한 다음1bit left shift 시킨다음 product에 더해준다
0000110+1010000
product:1010110 (-42)
6*(-7)=-42
위와 같은 결과가 나오게 된다
위쪽에선 4번의 반복으로 나왔던 결과가  2번의 반복으로 가능하며, 부호비트가 있는 데이터의 연산이 가능하게 됩니다

by 제이시스 | 2007/12/08 00:37 | 공부 | 트랙백 | 덧글(6)

트랙백 주소 : http://baical.egloos.com/tb/1104025
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by FeeLuck at 2007/12/08 09:14
글씨색 바꾸는 게 어때? 잘 안보이는데;
Commented by 집이그리워 at 2007/12/09 21:31
Commented by 제이시스 at 2007/12/10 00:05
지비/뭐가 즐이냐..ㄱ-
Commented by 모갸리 at 2009/04/06 20:26
프로덕트가뭔가요?
Commented by 제이시스 at 2009/04/11 10:51
곱셈의 결과를 저장하는공간입니다
Commented by blueweek at 2009/10/28 10:09
좋은 자료 감사합니다.
modified booth에 대해서 찾고 있었는데
3개씩 묶는걸 보니 맞는거 같네요 ㅎ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶