KR100198783B1 - 직렬처리 나눗셈기의 구동 방법 - Google Patents
직렬처리 나눗셈기의 구동 방법 Download PDFInfo
- Publication number
- KR100198783B1 KR100198783B1 KR1019960046460A KR19960046460A KR100198783B1 KR 100198783 B1 KR100198783 B1 KR 100198783B1 KR 1019960046460 A KR1019960046460 A KR 1019960046460A KR 19960046460 A KR19960046460 A KR 19960046460A KR 100198783 B1 KR100198783 B1 KR 100198783B1
- Authority
- KR
- South Korea
- Prior art keywords
- value
- register
- accumulator
- temporary
- bit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
직렬처리 방식의 나눗셈 연산에서 순차적으로 뺄셈을 수행한 후 쉬프트 하여 오랜 연산 시간이 소요되던 종래 방식을 개성하기 위한 본 발명은 뺄셈 연산과 쉬프트를 동시에 수행하고 뺄셈기의 출력을 쉬프트 레지스터의 입력으로 제공하여 직렬처리 나눗셈 연산 수행속도를 줄일 수 있는 직렬처리 나눗셈기의 구동 방법이 개시된다.
Description
본 발명은 나눗셈기에 관한 것으로, 특히 뺄셈 연산과 쉬프트 연산을 동시에 수행하여 빠르게 나눗셈 연산을 할 수 있는 직렬처리 나눗셈기의 구동 방법에 관한 것이다.
대부분의 마이크로프로세서, 마이크로콘트롤러 또는 신호처리 프로세서는 나눗셈 연산을 수행 할 수 있는 기능을 갖고 있다, 이러한 프로세서에서 나눗셈 연산은 뺄셈기와 쉬프트 레지스터를 이용한 뺄셈과 쉬프트(Subtract and Shift)를 반복 수행하여 다수의 명령 싸이클에 수행하는 직렬처리 나눗셈 방법을 사용한다.
일반적으로 나눗셈 연산은 피제수와 제수가 모두 양수인 부호가 없는 나눗셈 연산(Unsigned Division)과 피제수, 제수 모두 양수와 음수를 가질 수 있는 부호를 갖는 수의 나눗셈 연산(Signed Division)의 두 가지 경우가 있다. 부호를 갖는 수의 나눗셈 연산과 부호가 없는 나눗셈 연산의 동작상의 차이점은 부호를 갖는 나눗셈 연산에서는 부호를 갖는 피제수 와 제수를 모두 양수로 바꾸고 난 다음 부호가 없는 나눗셈 연산을 수행하고, 이후 부호를 다시 변화하는 과정을 수행한다. 즉 부호를 갖는 나눗셈 연산은 부호가 없는 나눗셈 연산에 부호를 변환하는 과정이 추가된 것이다.
직렬처리 방식의 나눗셈 연산은 회로 구현이 간단한 장점이 있으나, 뺄셈과 쉬프트 연산을 순차적으로 반복하므로 연산 처리 속도가 느린 단점을 가지고 있다.
따라서, 본 발명은 직렬처리 나눗셈 연산의 연산 속도를 증가시킬 수 있는 직렬처리 나눗셈기의 구동 방법을 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명은 직렬처리 방식의 나눗셈 연산에서 순차적으로 뺄셈 연산을 수행한 후 쉬프트 하던 종래의 방식을 개선하여 직렬처리 나눗셈 연산 수행 속도를 줄일 수 있도록 하기 위해 뺄셈 연산과 쉬프트를 동시에 수행하고 뺄셈기의 출력을 쉬프트 레지스터의 입력으로 사용하는 것을 특징으로 한다.
제1도는 종래의 직렬처리 나눗셈기의 하드웨어 구조도.
제2도는 본 발명에 따른 직렬처리 나눗셈기의 하드웨어 구조도.
제3a도 및 제3b도는 본 발명의 일 실시에 따른 직렬처리 나눗셈기의 나눗셈 연산 동작 순서도.
* 도면의 주요부분에 대한 부호의 설명
11,21 : 템포러리 레지스터(Temporary Register)
12,21 : 비교기(Comparator) 13,23 : 뺄셈기(Subtractor)
14,24 : 누산기(Accumulator) 15,25 : 쉬프트 레지스터(Shifter)
16,26 : 카운터(Counter) 17,27 : N레지스터(N Register)
18,28 : C 레지스터 (C Register)
첨부된 도면을 참조하여 본 발명을 상세히 설명하기로 한다.
제1도는 뺄셈기와 쉬프트 레지스터를 이용한 종래의 직렬처리 나눗셈기의 하드웨어 구조도 이다. 도시된 바와 같이 16비트의 제수를 저장하는 템포러리 레지스터(Temporaty Register: 이하 TMP라 함)(11)와 32 비트 피제수를 상위 16비트를 저장하는 누산기(Accumulator: 이하 ACC라 함)(14),하위 16 비트를 저장하는 쉬프트레지스터(Shifter: 이하 SHF라 함)(15)와 뺄셈 연산을 수행하는 뺄셈기(Subtractor: 이하 SUB라 함)(13),ACC와 TMP의 값을 비교하는 비교기(Comparator)(12)와 ACC, SHF 와 연결되어 직렬 경로(serial path)를 구성하는 N레지스터(17)와 C레지스터 (18),그리고 연산의 횟수를 세는 카운터(Counter)(16)으로 구성되어 있다. 이러한 직렬처리 나눗셈기는 뺄셈 과정을 수행한 후 1비트 쉬프트 레프트 과정을 수행하기 때문에 연산 속도가 느리다.
제2도는 본 발명에 따른 직렬처리 나눗셈기의 하드웨어 구조도이다. 본 발명에서 제안하는 구조는 뺄셈 과정과 1비트 쉬프트 레포트 과정을 동일한 싸이클에서 수행할 수 있도록 한 구조로서, 도시된 바와 같이 SUB(23)의 출력을 미리 1비트씩 쉬프트 레프트시켜서 ACC(24)에 입력되도록 신호경로를 만들어 놓은 구조이다. 즉 SUB(23)의 15 번째 출력 비트 N 레지스터(27)에 입력시키고, SUB(23)의 14번째 출력 비트를 ACC(24)의 상위 비트인 15 번째로 입력시키는 방법으로 1비트씩 쉬프트레프트 하여 입력시키게 된다. 제시한 구조를 사용하면 SUB(23)의 출력은 미리 1 비트 쉬프트레프트 되도록 만들어 놓은 신호 경로를 따라 ACC(24)에 입력되므로 자동적으로 빼고 쉬프트 하는 과정이 한 싸이클에 수행되며 또한 SHF(25)도 이 싸이클에 쉬프트 레프트 동작을 수행하므로 결과적으로 1 싸이클에 뺄셈 연산 쉬프트레프트 연산이 가능하다. 예로써 32 비트/16 비트 연산인 경우 제안된 구조는 종래의 구조를 사용한 경우보다 최대16 싸이클을 줄일 수 있다. 이와 같이 제안된 구조는 최대 제수의 비트 수 만큼의 나눗셈 연산 싸이클을 줄일 수 있다. 더 자세한 연산 과정을 제3a도 및 제3도를 참조하여 설명하기 한다.
제3a도 및 제3b도는 본 발명의 일 실시 예에 따른 직렬처리 나눗셈기의 나눗셈 연산 동작 순서도 이다. 나눗셈 연산의 예로써, 피제수 X가 32비트 데이터이고, 제수Y가 16비트 데이터인 나눗셈D=X/Y를 수행하여 보기로 한다. 32비트 /16비트 나눗셈 연산 결과의 몫과 나머지는 각각 16비트 데이터로 나타나다. 나눗셈의 첫 단계로 32비트 데이터인 피제수X의 상위16비트 X를 ACC에 저장하고, 하위 16 비트 XL를 16비트 SHF에 저장한다.그리고 16비트 데이터인 제수 Y를 16비트의 TMP에 저장한다. 그 다음 1 비트 레지스터 C의 초기값을 '0'로 하고, 카운터 값을 '16;으로 설정한다.(301)다음 단계로 영으로 나누어지는 것을 방지하기 위해 TMP의 값을 점검하여(302) 영이면 나눗셈 연산을 끝내게 된다(303). TM{ 값이 영이 아닐 경우, 피제수 X의 상위 16 비트 값 ACC와 제수 Y의 16 비트 값 TMP를 비교하여 (304)ACC 값이 크거나 같을 경우에는 몫을 16비트로 저장할 수 없으므로 나눗셈 연산을 끝낸다.(305). ACC 값이 TMP 값보다 작을 경우에는 N레지스터, ACC ,SHF,와 C레지스터로 연결되는 serial path를 1 비트만큼 왼쪽으로 쉬프트시킨다.(306).그리고 카운터 값을 1 만큼 감소시킨다.(307) 다음 단계로 N 레지시터 값이 '1'인지를 검사하여(308), N 레지스터 값이 '1'이 아니면 ACC 와 TMP를 비교한다(309).N레지스터의 값이'1'이거나 ACC 값이 TMP보다 크거나 같으면 ACC에서 TMP를 뺀 값을 ACC에 저장하고 C 레지스터를 '1'로 설정한 후 N 레지스터, ACC,SHF와 C 레지스터로 연결되는 serial path 1 비트만큼 왼쪽으로 쉬프트시킨다.(310).그리고 카운트 값을 1만큼 감소시킨다(311). 만일 N 레지스터 값이 '0'이고, ACC 와 TMP를 비교하여 ACC 값이 TMP보다 작으면 C 레지스터를 '0'으로 설정하고 N 레지스터, ACC, SHF와 C 레지스터로 연결되는 serial path 1 비트만큼 왼쪽으로 쉬프트시킨다.(312). 그리고 카운터 값을 1만큼 감소 시킨다.(313) 그후 카운터 값이'0'인지를 검사하여(314) 카운터 값이 '0'이 아니면 N 레지스터의 값이 '1'인지를 검사하는 단계부터 이러한 과정을 카운터 값이 '0'이 될 때 까지 반복한다. 만일 카운터 값이 '0'인 경우에는 ACC와 TMP를 비교하여 (315) ACC 값이 크거나 같으면 ACC에서 TMP를 뺀 값을 ACC에 저장한다. 이때 저장되는 ACC 값이 나눗셈 연산의 나머지 값이다. 이후 C 레지스터를 '1'로 설정한 다음 SHF와 C 레지스터로 연결되는 serial path 1 비트만큼 왼쪽으로 쉬프트 시키고(316) 종료한다. 이때 SHF에 저장되는 값이 나눗셈 연산의 몫이다. ACC 와 TMP를 비교하여 ACC 값이 작은 경우에는 ACC 값이 나눗셈 연산의 나머지 값이다. 이후 C 레지스터를 '0'으로 설정한 후 SHF와 C 레지스터로 연결되는 serial path를 1 비트 만큼 왼쪽으로 쉬프트 시키고 (317)종료한다. 이때 SHF에 저장되는 값이 나눗셈 연산의 몫이다.
상술한 바와 같이 본 발명에 의하면 뺄셈 연산과 쉬프트 연산을 동시에 수행 함으로써 직렬처리 방식의 나눗셈 연산 수행 시간을 줄일 수 있을 뿐만 아니라 최대제수의 비트 수만큼 나눗셈 연산 싸이클을 줄일 수 있는 훌륭한 효과가 있다.
Claims (1)
- 32비트 데이터인 피제수의 상위 16비트를 누산기에 저장하고, 하위 16비트를 쉬프트 레지스터에 저장한 후 16비트 데이터인 제수를 템포러리 레지스터에 저장하고 C 레지스터의 초기값을'0' ,카운터 값을 '16'으로 설정하는 단계와, 상기 템포러리 레지스터 값을 검사하는 단계와 , 상기 템포러리 레지스터 값의 검사 결과에 따라 템포러리 레지스터 값이 영일 경우'0' 분할 에러로 나눗셈 연산을 종료하는 단계와, 상기 템포러리 레지스터 값의 검사 결과에 따라 템포러리 레지스터 값이 영이 아닐 경우 누산기 값과 템포러리 레지스터 값을 비교하는 단계와, 상기 누산기 값과 템포러리 레지스터 값의 비교 결과에 따라 누산기의 값이 템포러리 레지스터 값보다 크거나 같을 경우 오버플롤우 에러로 나눗셈 연산을 종료하는 단계와, 상기 누산기 값과 템포러리 레지스터 값의 비교결과에 따라 누산기 값이 템포러리 값보다 작을 경우 C 레지스터부터 N 레지스터 까지 1 비트 쉬프트 레프트시킨 후 카운터 값을 1 만큼 감소시킨는 단계와, 상기 레프트 쉬프트 시킨 후 N 레지스터 값이 '1'인지를 검사하는 단계와, 상기 N 레지스터 값의 검사 결과에 따라 N 레지스터 값이 '1'이 아니면 누산기 값과 템포러리 레지스터 값을 비교하는 단계와, 상기 N레지스트 값의 검사 결과에 따라 N 레지스터 값이 '1' 일 경우 누산기 값을 템포러리 레지스터 값을 뺀 값을 누산기에 저장하고 C 레지스터를 '1'로 설정함과 동시에 C 레지스터로부터 N 레지스터까지 1 비트 쉬프트 레프트시킨 후 카운터 값을 1만큼 감소시키는 단계와, 상기 누산기 값과 템포러리 레지스터 값의 비교 결과에 따라 누산기 값이 템포러리 레지스터보다 크거나 같을 경우 누산기 값에서 템포러리 레지스터 값을 뺀 값을 누산기에 저장하고 C 레지스터를 '1'로 설정함과 동시에 C 레지스터로부터 N 레지스터까지 1 비트 쉬프트 레프 트시킨 후 카운터 값을 1만큼 감소시키는 단계와, 상기 누산기 값과 템포러리 레지스터 값의 비교 결과에 따라 누산기 값이 템포러리 레지스터 값보다 작을 경우 C 레지스터를 '0'으로 설정하고 C 레지스터로부터 누산기까지 1 비트 쉬프트 레프트시킨 후 카운터 값을 1만큼 감소시키는 단계와, 상기 카운터 값을 1 만큼 감소시킨 후에 카운터 값이 '0'인지를 검사하는 단계와, 상기 카운터 값의 검사 결과에 따라 카운터 값이'0' 일 N 레지스터 값이 '1'인지를 검사하는 단계로 천이하는 단계와, 상기 카운터 값의 검사 결과에 따라 카운터 값이 '0'일 경우 경우 누산기 값과 템포러리 레지스터 값을 비교하는 단계와, 상기 누산기 값과 템포러리 레지스터 값을 비교 결과에 따라 누산기 값이 템포러리 레제스터 값보다 크거나 같을 경우 누산기 값에서 템포러리 레지스터 값을 뺀 값을 누산기에 저장한 후 C 레지스터를 '1'로 설정하고 C 레지스터에서 쉬프트 레지스터로 1 비트 만큼 쉬프트 레프트시키고 종료한 단계와, 상기 누산기 값과 템포러리 레지스터 값의 비교 결과에 따라 누산기 값이 템포러리 레지스터 값보다 작을 경우 누산기 값을 저장한 후 C 레지스터를 '0'로 설정하고 C 레지스터에서 쉬프트 레지스터로 1 비트만큼 쉬프트 레프트 시키고 종료하는 단계로 이루어진 것을 특징으로 하는 직렬처리 나눗셈기의 구동 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960046460A KR100198783B1 (ko) | 1996-10-17 | 1996-10-17 | 직렬처리 나눗셈기의 구동 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960046460A KR100198783B1 (ko) | 1996-10-17 | 1996-10-17 | 직렬처리 나눗셈기의 구동 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980027626A KR19980027626A (ko) | 1998-07-15 |
KR100198783B1 true KR100198783B1 (ko) | 1999-06-15 |
Family
ID=19477799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960046460A KR100198783B1 (ko) | 1996-10-17 | 1996-10-17 | 직렬처리 나눗셈기의 구동 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100198783B1 (ko) |
-
1996
- 1996-10-17 KR KR1019960046460A patent/KR100198783B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980027626A (ko) | 1998-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR950006580B1 (ko) | 나눗셈연산장치 | |
KR900010545A (ko) | 연산장치와 연산방법 | |
US5309383A (en) | Floating-point division circuit | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
US5815423A (en) | Parallel processing division circuit | |
JP2502836B2 (ja) | 除算回路の前処理装置 | |
US4692891A (en) | Coded decimal non-restoring divider | |
EP0379998A2 (en) | Divider for carrying out high speed arithmetic operation | |
KR100198783B1 (ko) | 직렬처리 나눗셈기의 구동 방법 | |
EP0472030A2 (en) | Method and apparatus for modifying two's complement multiplier to perform unsigned magnitude multiplication | |
JPH0346024A (ja) | 浮動小数点演算器 | |
JPH10283164A (ja) | 除算回路 | |
US6907442B2 (en) | Development system of microprocessor for application program including integer division or integer remainder operations | |
JP2664750B2 (ja) | 演算装置及び演算処理方法 | |
JPH0383127A (ja) | 10進除算器 | |
JPS60167030A (ja) | シフトフラグ生成方式及びシフトフラグ生成回路 | |
JPS60537A (ja) | 正規化回路 | |
JP2591250B2 (ja) | データ処理装置 | |
JP3068640B2 (ja) | 計算装置 | |
JPH04141727A (ja) | 除算回路 | |
JPH0354631A (ja) | 乗算装置 | |
JPH0553768A (ja) | 除算器 | |
JPH07104777B2 (ja) | 浮動小数点加減算装置 | |
JPH0553759A (ja) | 固定小数点演算ユニツト | |
JPH025128A (ja) | 除算回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20080303 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |