KR100218615B1 - 고정 소수점 디바이더 장치 및 고정 소수점 나눗셈 연산 수행방법 - Google Patents
고정 소수점 디바이더 장치 및 고정 소수점 나눗셈 연산 수행방법 Download PDFInfo
- Publication number
- KR100218615B1 KR100218615B1 KR1019950033665A KR19950033665A KR100218615B1 KR 100218615 B1 KR100218615 B1 KR 100218615B1 KR 1019950033665 A KR1019950033665 A KR 1019950033665A KR 19950033665 A KR19950033665 A KR 19950033665A KR 100218615 B1 KR100218615 B1 KR 100218615B1
- Authority
- KR
- South Korea
- Prior art keywords
- adder
- quotient
- adders
- phase
- during
- 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
-
- 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5352—Non-restoring division not covered by G06F7/5375
Abstract
내용없음.
Description
제 1 도는 고정 소수점 디바이더 유닛(a fixed-point divider units)의 블록 도.
제 2 도는 제 1 도에 도시된 오퍼랜드 선택 블럭 회로(operand selection block circuit)의 블럭 도.
제 3 도는 제 1 도에 도시된 가산기 선택 블럭 회로(adder selection block circuit)의 블록도.
제 4 도는 제 1 도에 도시된 잔여 몫 결정 블럭 회로(remain quotient determination block circuit)의 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : 고정 소수점 디바이더 프로세서 12 : 레지스터
14 : 제 1 래치 16 : 제 2 래치
18 : 오퍼랜드 선택 블럭 20 : 가산기 블럭
21 : 선택 신호 라인 22 : 잔여 몫 결정 블럭
120 : 레지스터
본 발명은 데이터 프로세싱 시스템(data processing system)에 관한 것으로, 특히 고정 소수점 산술 연산(fixed-point arithmetic operations)을 제공하는 데이터 프로세싱 시스템에 관한 것이다. 특히, 본 발명은 그 사이클 시간의 절반을 가산기 로직(adder logic)에 대해, 그 나머지 절반을 기타 잔여 로직(remaining logic)에 대해 사용하는 비복원(non-restoring) 고정 소수점 디바이더(fixed-point divider)를 포함하는 데이터 프로세싱 시스템에 관한 것이다.
종래의 기본 이진 나눗셈 장치(basic binary dividing apparatus)는 비복원 알고리즘(non-restoring algorithm)에 따라, 반복적으로 젯수(divisor)가 피젯수(dividend) 또는 부분 나머지(partial remainer)에 가산되거나 이로부터 감산되는 동안 한 비트씩 몫(quotient)을 발생시킨다.
한 사이클내에 다수의 몫 비트(aplurality of quotient bits)를 발생시킬 수 있는 개선된 장치도 존재한다. 이 장치는 부분 나머지를 이동(shift)하고, 젯수의 적절한 배수를 이동된 부분 나머지에 가산하거나 또는 감산하도록 설계되어 있고, 그 결과로 생긴 부분 나머지에 기초하여, 다수의 몫 비트를 계산함과 동시에 다음 연산에 대비하여 부분 나머지의 이동 길이를 결정하도록 설계되어 있다.
불행하게도, 이러한 유형의 나눗셈 장치는 각각의 가산 또는 감산의 결과에 기초하여 그 이동 길이를 결정하고 있어, 사이클 시간을 감소시키기가 어렵다.
따라서, 디바이더 장치내의 가산기 부분과 기타 잔여 로직 사이에 그 프로세싱 시간을 동일하게 분할하여 단일 사이클로 다수의 몫 비트를 발생시킬 수 있는 고정 소수점 디바이더 장치가 필요하다.
따라서 본 발명의 목적은 데이터 프로세싱 시스템을 제공하는 것이다.
본 발명의 다른 목적은 고정 소수점 산술 연산을 제공하는 데이터 프로세싱 시스템을 제공하는 것이다.
또한 본 발명의 다른 목적은 그 사이클 시간의 절반을 가산기 로직에 대해, 그 나머지 절반을 기타 잔여 로직에 대해 사용하는 비복원 고정 소수점 디바이더를 포함하는 데이터 프로세싱 시스템을 제공하는 것이다.
본 발명에 따르면, 64비트 비복원 구조에 기초한 고정 소수점 디바이더 장치 및 방법이 개시된다. 디바이더 장치는 가산 또는 감산 기능을 수행하기 위해 상호 병렬로 접속된 세 개의 67-비트 가산기를 포함하고, 각 가산기는 제 1클럭 페이스(first clock phase) 동안에 사전충전되고(precharged), 제 2클럭 페이스(second clock phase) 동안에 선택된 기능을 실행하며, 양 페이스은 단일 클럭 사이클 동안에 발생한다.
제 1가산기(first adder)는 각각 제 1 및 제 2 오퍼랜드를 선택하기 위한 제 1 및 제 2멀티플렉서에 접속된다. 제 2가산기에 접속된 제 3멀티플렉서는, 제 2가산기에 대한 제 1 오퍼랜드를 선택하는데 이용된다.
제 3가산기에 접속된 제 4 및 제 5멀티플렉서는, 제 3가산기에 대한 제 1 및 2 오퍼랜드를 각각 선택하는데 이용된다.
가산기 오퍼랜드 선택 로직은 가산기 및 멀티플렉서에 접속되어, 가산 기능을 수행할지 혹은 감산 기능을 수행할지를 선택하고, 멀티플렉서가 그들 각각의 가산기에 대해 어떤 오퍼랜드를 공급할 것인가를 선택한다. 오퍼랜드 선택 회로가 더 부가되고, 이것은 멀티플렉서 및 가산기 오퍼랜드 선택 로직에 접속되며, 클럭 사이클의 제 2페이스 동안 가산기의 연산을 제어하는데 이용된다. 디바이더 장치는 가산기에 접속된 잔여 몫 결정 회로를 더 포함하며, 이 회로는 나눗셈 연산이 완료된 시기, 나눗셈 결과, 잔여 몫의 증분이 존재하는지의 여부를 판정하는데 이용된다.
가산기는, 제 1가산기가 [잔여 몫 ± 3× 젯수]의 출력을 발생시키고, 제 2가산기가 [잔여 몫 ± 2× 젯수]의 출력을 발생시키며, 제 3가산기가 [잔여 몫 ± 젯수]의 출력을 발생시키도록 선택된다. 각 클럭 사이클은 약 6 나노초(nanoseconds)로 동작하며, 따라서 각 출력 페이스은 약 3 나노초 길이이다.
67-비트인 가산기는 64-비트 및 32-비트 연산을 처리할 수 있다.
본 발명의 장치는 두 타이밍 경로가 형성되도록 설계되고, 제 1경로에서는 다음 디바이더 연산이 결정되고 각 멀티플렉서에 대한 선택 신호가 생성된다. 이 제 1데이타 경로는 반 클럭 사이클내에서 동작을 완료한다.
제 2경로는, 가산기로부터 부호형 비트를 전송하고, 어떤 가산기 출력이 정확한지를 판정하고, 몫 비트를 생성하며, 다음 디바이더 연산에 필요한 다음의 오퍼랜드 세트를 생성하도록 형성된다. 제 1데이타 경로와 같이, 제 2데이타 경로도 반 클럭 사이클내에서 동작을 완료한다.
본 발명의 방법은 전술한 장치와 실제적으로 유사한 디바이더 장치상에서 동작하도록 설계되어 있다. 클럭 사이클의 제 1페이스 동안 발생하는 제 1단계에서는, 제 1 및 제 2 오퍼랜드가 오퍼랜드 선택 회로로 전송된다. 그 결과, 가산기는 이들 오퍼랜드에 의해 사전충전될 수 있다. 클럭 사이클의 제 2페이스 동안, 가산기는 자신의 계산 동작을 수행하고, 그 결과가 다음에 실행될 가산기 연산을 결정하기 위해 평가된다. 특히, 가산기 결과를 결정하고, 적합한 가산기 결과를 선택하며, 부호(signage)를 체킹(checking)하고, 다음 가산기 연산을 위한 적절한 가산기를 선택하며, 2 비트 몫을 발생시키는 로직 기능은, 모두 지정된 클럭 사이클의 제 1페이스 동안 수행되도록 설계되어 있다.
가산기 연산중 오퍼랜드의 실제 계산은 항상 클럭 사이클의 제 2페이스 동안 수행된다. 이 방법은, 특정한 클럭 사이를의 제 1 또는 제 2페이스중의 임의의 시간에 가산기 연산이 발생하는 경우보다 더 효율적인 디바이더 장치 설계를 가능하게 한다.
본 발명의 전술한 목적 및 부가적인 목적, 특징, 장점은 다음의 상세한 설명에서 더욱 명확해질 것이다.
본 발명의 특성으로 믿어지는 신규한 특징은 첨부된 청구 범위에 개시되어 있다. 그러나 본 발명 자체 및 바람직한 사용 모드, 다른 목적 및 장점은 이하 수반되는 도면을 참조하는 다음의 예시적인 실시예의 상세한 설명으로부터 가장 잘 이해될 것이다.
제 1 도를 참조하면 고정 소수점 디바이더 프로세서(fixed-point divider porcessor)(10)가 도시되어 있다. 레지스터(12)는 예약 스테이션(Reservation Station)에 접속되고, 그 예약 스테이션은 버퍼(buffers)로부터 레지스터(12)로 인스트럭션을 송출하고, 레지스터(12)는 고정 소수점 디바이더 프로세서(10)내의 각종 블럭(blocks)으로 인스트럭션을 전송한다.
레지스터(12)는 제 1 래치(14)와 제 2 래치(16)를 더 포함한다(각각 L1 및 L2으로 표시됨). 레지스터(12)는 두 페이스으로 동작한다. 즉, 래치(14)는 제 2페이스을 설정하는 클럭(C1)에 의해 제어되고, 래치(16)는 제 1페이스을 설정하는 클럭(C2)에 의해 제어된다.
레지스터(12)는 제 2 도에서 보다 상세히 도시되고 이하 상세히 기술되는 오퍼랜드 선택 블럭(18)에 제 1 오퍼랜드(op_a)와 제 2 오퍼랜드(op_b)를 공급한다.
제 1사이클(first-cycle), 부호(sign) 및 op_64 입력이 레지스터(12)로부터 오퍼랜드 선택 블럭(18)으로 역시 전송된다. 오퍼랜드 선택 블럭(18)은 나눗셈 연산이 부호형(signed)인지 또는 무부호형(unsigned)인지와, 64-비트를 갖는지 또는 32-비트를 갖는지와, 분모가 0으로 인한 나눗셈 오버플로우(divide overflow)가 존재하는지의 여부를 판정한다.
일단 제 1 오퍼랜드와 제 2 오퍼랜드가 처리되었으면, 그들은 별개의 클럭사이클(separate clock cycle)로부터의 잔여 몫 신호(remain quotient signal)와 더불어 가산기 블럭(20)으로 전송된다. 가산기 블럭(20)은 나눗셈 산술 기능을 수행하고 제 3 도에 보다 상세히 도시되어 있으며, 차후에 상세히 기술된다. 가산기 블럭(20)으로부터의 결과는 레지스터(120)로 공급되며, 이 레지스터(120)로부터 합1(sum1), 합2(sum2), 합3(sum3) 라인을 통해 잔여 몫 결정 블럭(remain quotient determination block)(22)으로 공급된다. 잔여 몫 결정 블럭(22)은 합1(sum1), 합2(sum2), 합3(sum3) 라인으로부터의 세 개의 합중 임의의 합 결과에 기초하여 임의의 잔여 몫을 결정하는데 이용된다.
선택 신호 라인(21)은 가산기 블럭(20)내의 각종 멀티플렉서와 가산기 기능을 선택하기 위해 가산기 블럭(20)에 또한 접속된다. 잔여 몫 결정 블럭(22)은 잔여 몫 라인(r_q)을 더 포함한다. 몫 증가 라인(quot_inc) 및 제로 나머지 라인(zero_remainder)은 임의의 잔여 몫, 몫 증가, 및 제로 나머지 혹은 완료 신호에 관한 부가의 정보를 제공하기 위해 레지스터(120)에 접속된다.
제 2 도에는 고정 소수점 디바이더(10)의 오퍼랜드 선택 블럭(18)에 대한 블럭도가 도시되어 있다. 오퍼랜드A(op_a) 및 오퍼랜드 B(op_b)는 무부호형 확장블럭(unsigned extension blocks)(22 및 26)과 부호형 확장 블럭(signed extension blocks)(24 및 28)에 공급된다.
확장 블럭(22 및 24)의 쌍은 제 14×1 멀티플렉서(four-to-one multiplexer)(30)에 공급되는 반면에, 확장 블럭(26 및 28)의 쌍은 제 2 4×1 멀티플렉서(four-to-one multiplexer)(32)에 공급된다. 두 멀티플렉서(30 및 32)에 대한 MUX 선택은 로직(34)에 의해 제어되고, 이 로직은 부호(sign) 라인 및 op_64 신호의 입력에 기초하여 멀티플렉싱될 신호를 결정한다.
디바이더는 64-비트 또는 32-비트 연산을 처리할 수 있으므로, op-64 라인은 64-비트 연산이 수행될지 또는 32-비트 연산이 수행될지를 결정한다. 부호 라인은 무부호형 연산을 수행할지 또는 부호형 연산을 수행할지를 결정한다. 멀티플렉서(30)로부터의 출력은 제 3 도의 가산기 블럭(20)에 직접 공급되고 1-비트 멀티플렉서(42)에도 공급되며, 이 1-비트 멀티플렉서는 전체 나눗셈 연산 동안 op_a(피젯수)의 부호 비트를 추적하는 a_daq0로부터의 부가의 입력을 포함한다.
멀티플렉서(42)는 단일 멀티플렉서(44)를 역시 제어하는 제 1사이클(first_cycle) 라인에 의해 제어된다. 멀티플렉서(44)는 op_64 신호와 op_64q 신호(래치된 op_64 신호)를 수신하고, 그 op_64q 신호는 최초의 로드 연산 후의 수 사이클상에서 활성(active)된다.
오퍼랜드 B는 제 3 도에 도시된 가산기 블럭(20)에 직접 공급되고, 67-비트 멀티플렉서(46)에 접속되며, 이 멀티플렉서는 전체 나눗셈 연산 동안 1× 젯수를 추적하는 1× 젯수(divis_1q) 신호를 또한 수신한다.
멀티플렉서(46)도 제 1사이클 신호(first_cycle)에 의해 제어된다. 부가적인 67-비트 멀티플렉서(48)는, 전체 나눗셈 연산 동안 3× 젯수를 추적하는 3× 젯수 신호(divis_3q)와 합3(sum3) 신호 간을 선택하는데 이용된다. 멀티플렉서(48)는 제 2클럭 사이클, 즉 제 2사이클(second_cycle) 라인에 의해 제어된다. 멀티플렉서(44)는 출력 라인 op_64_in을 가지며 이 라인은 op_64_q를 공급하는 레지스터에 피드백된다. 멀티플렉서(42)는 출력 신호 a_da0를 가지며, 이 신호는 a_daa의 부호(a_daq0)를 저장하는 레지스터에 공급된다. 멀티플렉서(46)는 출력 신호 divis_1_in를 가지며, 이 신호는 1× 젯수(divis_1q)를 저장하는 레지스터에 공급된다. 멀티플렉서(48)는 출력 신호 divis_3_in를 가지며, 이 신호는 3× 젯수(divis_3q)를 저장하는 레지스터에 공급된다. 오퍼랜드 선택 블럭(18)은 제로 나눗셈 검출 로직(divide/zero detect logic)(36)을 더 포함한다.
나눗셈 오버플로우 로직(divide overflow logic)(36)은 오퍼랜드 A와 오퍼랜드 B를 수신하여 분모가 0이 되면 나눗셈 연산이 불가능하다고 판정한다. 이 로직(36)의 부가적인 입력 신호로는 op_64 신호와 제 1사이클 신호가 있으며, 이들 신호는 제 1사이클에서 64-비트/32-비트 오버플로우임을 판정하는데 필요하다. 블럭(36)으로부터의 출력은 가산기 블럭(20)으로 공급된다.
가산기 블럭(20)은 제 3 도의 블럭도에 보다 상세히 도시되어 있다. 가산기 블럭(20)은 가산기 오퍼랜드 선택 로직(adder operand select logic)(50)을 포함하는데, 이 로직(50)은 div_ov 및 do_add 신호를 수신하여 다음 사이클에서 수행되어질 다음의 가산 또는 감산 연산을 결정하고, 가산기로 공급되는 오퍼랜드를 결정한다. 가산기 오퍼랜드 선택 로직(50)으로부터의 멀티플렉서 신호 선택 라인(select signals for MUXs)(21)은 가산기 블럭(20)내의 세 가산기로 공급된다. 두 개의 부가적인 출력 신호는, 가산기에 의해 가산이 수행되어야 하는지 또는 감산이 수행되어야 하는지를 결정하는 do_sub×q와, 디바이더가 비지(busy) 상태인지, 준비(ready) 상태인지, 종료(finish) 상태인지, 잔여 몫 결정 블럭에서 증가(increment)되어야 하는지를 표시하기 위한 비지, 준비, 종료, 증가 라인(busy, ready, finish, inc line)을 포함한다. 비지, 준비, 종료, 증가 라인은 레지스터(120)에 공급되고, 이 레지스터(120)는 예약 스테이션에 또한 공급된다.
가산기 블럭(20)은 다수의 멀티플렉서(54, 56, 58, 60, 및 62)를 통해 오퍼랜드 선택 블럭(18)으로부터의 다수의 입력 신호를 수신한다. 멀티플렉서(54)는 가산기(64)의 제 1 오퍼랜드를 결정한다. 멀티플렉서(56)는 가산기(64)의 제 2 오퍼랜드를 결정한다. 멀티플렉서(58)는 가산기(66)의 제 1 오퍼랜드를 결정한다. 멀티플렉서(60)는 가산기(68)의 제 1 오퍼랜드를 결정하고 멀티플렉서(62)는 가산기(68)의 제 2 오퍼랜드를 결정한다.
멀티플렉서(54 및 56)는 가산기(64)에 접속된다. 멀티플렉서(58)는 r_q 라인으로부터의 입력 신호를 또한 수신하는 가산기(66)에 접속된다. 멀티플렉서(60 및 62)는 또한 가산기(68)에 접속된다. 가산기(64, 66 및 68)는 나눗셈 연산 동안 병렬로 동작하는 67-비트 가산기이다. 각 가산기(64, 66 및 68)는 가산기 오퍼랜드 선택 로직(50)으로부터의 신호에 의해 제어된다. 가산기(64, 66 및 68)로부터의 출력은 래치(140)를 통해 레지스터(120)로 공급된다. 가산기(64)는 [잔여 몫(remain_quotient) ± 3 × 젯수]의 출력을 발생시킨다. 가산기(66)는 [잔여 몫(remain_quotient) ± 2 × 젯수]의 출력을 발생시킨다. 가산기(68)는 [잔여 몫(remain_quotient) ± 젯수]의 출력을 발생시킨다. 이들 세 출력은 제로 검출 및 합 선택 회로 로직(zero detect and sum selector circuit line)(70)으로 전송되고, 이 로직은 합1(sum1), 합2(sum2), 또는 합3(sum3)의 부호 비트를 또한 수신한다. 제로 검출 및 합 선택 회로 로직(70)은, 다음 연산에 대해 가산 기능을 수행할지 또는 감산 기능을 수행할지의 여부와 그 기능이 합1(sum1), 합2(sum2), 또는 합3(sum3)를 포함하는지의 여부를 역시 결정한다.
이들 신호는 제 2 래치(160)를 통해 출력된다. 가산기 출력 합1(sum1), 합2(sum2), 합3(sum3)은 제 4 도에 도시된 잔여 몫 결정 블럭(22)에 또한 접속된다.
제 4 도는 잔여 몫 결정 블럭(22)의 블럭도를 보다 상세히 도시한다. 블럭(22)은, 오퍼랜드 선택 블럭(18)으로부터의 divis_1q0 입력 및 합1(sum1), 합2(sum2), 합3(sum3)의 부호 비트가 입력되는 몫 발생기(quotient generator)(72)를 포함한다. 두 개의 3×1 멀티플렉서(three-by-one)(74 및 76)가 또한 제공된다.
멀티플렉서(74)는 선택 블럭(70)으로부터의 합 선택 신호 select_sum1, select_sum2, select_sum3에 기초하여 합1(sum1), 합2(sum2), 합3(sum3)중 어느 하나를 선택출력한다. 멀티플렉서(76)는 합 선택 신호 select_sum1, select_sum2, select_sum3에 기초하여 zero_sum1, zero_sum2, zero_sum3 중 어느 하나를 선택출력한다. 멀티플렉서(76)로부터 출력되는 제로합 신호(zero_sum)는 제로 나머지 계산 회로(zero remainder calculation circuit)(78)에 공급되고, 이 회로는 제로 나머지 신호(z_remainderq) 및 잔여 몫 신호(r_qq)를 수신한다.
회로(78)로부터의 출력 zero_d 및 zero_e은 멀티플렉서(80)에 공급되고, 이 멀티플렉서는 두 입력중 어느 하나를 선택하여 레지스터(120) 및 몫 정정 회로(quotient correction circuit)(90)로 공급하며, 레지스터(120)는 멀티플렉서(80)으로부터 수신한 신호를 z-remainder 신호로서 회로(78)로 피드백한다.
부호 확장 회로(sign extention circuit)(82)는 67 비트의 신호 a_daa를 131 비트의 신호 a_da로 부호확장하여 멀티플렉서(66)로 출력한다. r_qq, quot, p_remainder 및 sum1과 같은 각종 다른 입력 신호는 멀티플렉서(86)에 접속되고, 이 멀티플렉서의 출력은 레지스터(120)에 접속된다. 이 출력은 잔여 몫 신호, 즉 r_q이다. 멀티플렉서(86)의 제어는 잔여 몫 선택 로직(remain quotient select logic)(88)에 의해 수행되고, 이 잔여 몫 선택 로직은 finishq, quot_incq 및 제 2사이클 (second_cycle) 신호에 기초하여 잔여 몫 선택 신호 sel_rq1, 2, 3, 4 출력을 생성하여 멀티플렉서(86)를 제어한다. quot_incq는 최후의 사이클에서 몫을 1씩 증가시킬지의 여부를 표시하는 신호이고, a_daq0, divis_q1 및 finish 입력을 이용하는 몫 정정 회로(quotient correction circuit)(90)로부터 출력된다.
고정 소수점 디바이더 회로(10)는 단지 반 사이클만을 사용하는 디바이더의 가산기를 이용하여 한 사이클로 두 개의 몫 비트를 생성할 수 있다. 바람직한 실시예에 있어서, 사이클 시간은 6 나노초(6 ns)이고, 이것은 가산기 페이스에 3 나노초가 전용되고, 고정 소수점 나눗셈 연산을 수행하는데 필요한 기타 잔여 로직단계에 3 나노초가 전용됨을 의미한다.
6 나노초의 사이클 시간으로 매 사이클당 2 비트를 생성하는 본 디바이더는 병렬로 동작하는 세 개의 67 비트 가산기를 이용함으로써 달성된다. 이들 가산기는 클럭 사이클의 제 1 페이스중에 사전충전되고 클럭 사이클의 제 2 페이스중에 연산이 행해진다. 최적 동작을 위해, 가산기는 사이클의 제 2 페이스중에 동작하여 필요한 잠재적인 67 비트 레지스터의 수를 여섯 개에서 세 개로 감소시킨다.
가산기는 제 1 페이스중에 사전충전되므로 디바이더 회로(10)의 기타 잔여 로직이 수행될 수 있도록 한다.
제 1 도를 다시 참조하면, 샘플 동작중에 예약 스테이션이 출력한 데이터는 오퍼랜드 A 및 B로서 제 1 사이클의 시작시에 오퍼랜드 선택 블럭(18)으로 전송된다.
이 제 1 사이클 동안, 오퍼랜드 선택 블럭(18)은 오퍼랜드가 부호형인지 또는 무부호형인지, 또는 64-비트인지 혹은 32-비트인지를 판정한다. 이 동작은 클럭(c1)의 상승 에지(rising edge) 전, 3 나노초 이내에 완료된다. 이 정보는 제 2 도에서 블럭 A로 표시된다. 오퍼랜드 선택 블럭(18)은 정적(static) 제로 및 -1 검출기를 이용하여 클럭(C1)에 의해 트리거(trigger)되지 않도록 하며, 이로써 사전충전 시간을 반 사이클 절약할 수 있다. 전형적인 나눗셈 연산의 일예는 표 1에 도시되어 있다.
연산 동안에 가장 임계적인(critical) 타이밍 경로는, 모든 데이터가 클럭(C1)의 상승 에지 전에 가산기 블럭의 가산기(64, 66 및 68)에 접속된 각각의 멀티플렉서에 도달하여야 한다는 것이다. 데이터는 3 나노초 전에 A, F 및 G 점에 도달한다. 세 가산기로부터의 결과에 기초하여 다음 연산(가산 또는 감산)을 결정하고, 이어서 가산기(64, 66 및 68)의 입력측의 멀티플렉서를 위한 선택 신호를 생성하는 경로도 임계적이다.
다음으로 임계적인 경로는 세 가산기의 결과로부터 부호 비트가 획득될 때, 가산기로부터의 결과가 정확한 결과인지를 판정하고, 그 다음에 2 비트 몫을 발생시키며, 마지막으로 다음 가산 연산을 위한 오퍼랜드를 발생시키는 것이다. 각 경로는 반 사이클, 즉 3 나노초내에 종료되어야 한다.
제 3 도를 다시 참조하면, 두 개의 임계적인 경로중 가장 임계적인 부분은, 동적 회로에 의해 실현된다. 예컨대, select_sum1 (2, 3)에는 1단 도미노 회로(one-stage domino circuit)가 사용되고, do_add에는 2단 도미노 회로(two-stage domino circuit)가 사용된다.
이들 동적 회로는 가산기가 연산 페이스에 있는 때에 사전충전되고, 그후 가산기가 사전충전되었을 때 연산을 행한다. 가산기(64, 66 및 68)로부터의 결과는 제 2 래치(160)에 공급되며, 제 2 래치(160)는 레벨 감지 스캔 설계(level sensitive scan design, LSSD) 포맷하의 룰(rule)을 위반하지 않도록 투명하다(transparent). select_sum 1, 2, 3을 수행하기 위한 연산에는 약 0.4-0.5 나노초가 필요하고 do_add 연산에는 대략 0.8-0.9 나노초가 걸린다.
따라서, 제 1 임계 경로는, 가산기 블럭(20) 및 래치(16)의 do_add에 대한 0.9 나노초와, 3 나노초의 RLM(최악의 경우 3 레벨의 게이트, 즉 반전(inv), 난드(nand), 및 반전)이다. 제 2 임계 경로는, 가산기 블럭의 select_sum1에 대한 0.4 나노초와, 제 4 도의 잔여 몫 결정 블럭(22)의 3×1 멀티플렉서(74) 및 이에 후속하는 5×1 멀티플렉서(86)이며, 다음 가산 또는 감산의 오퍼랜드를 위한 잔여 몫을 생성한다. 두 개의 임계 경로는 모두 최적 연산 시간을 위한 3 나노초 제한보다 충분히 작다.
본 발명의 디바이더는, 예를 들어, 파워PC 계열(PowerPC family)과 같은 고성능 고속 클럭 중앙 프로세싱 유닛(high performance fast clock central processing units)을 위해 설계되어 있다. 이 회로는 세 개의 주문 설계형 블럭(custom designd blocks)을 이용한다. 제 1 주문형 블럭은 오퍼랜드 선택 블럭(18)에서 사용되는 데이터 경로내의 정적 제로 검출기(static zero detector)이다.
제 2 주문형 블럭은 가산기 블럭(20)에서 가산기 결과를 결정하는 동적 제로 검출기(dynamic zero detector)이다. 제 3 주문형 블럭은 제 1 동적 블럭(first dynamic block)에 접속되어, 가산기 블럭(20)에서 do_add, sel_sum1, sel_sum2, sel_sum3 연산을 생성하는 제 2 동적 블럭(second dynamic block)이다. 세 개의 주문형 블럭만이 이용되므로, 이외의 기능은 시판형 설계(off-the-shelf type designs)로부터 용이하게 실현할 수 있다.
본 구조의 가장 두드러진 장점은, 나눗셈 기능에 필요한 연산을 복수의 상이한 기능 블럭 및 페이스로 분할하여 가장 임계적인 경로가 단순화되고 그 지연이 감소되게 하는 것이다. 특히, 그 가장 임계적인 경로는 동적 블럭(do_add) + 투명한 래치(transparent latch) + 반전(inv) + 난드(nand) + 반전이 반 사이클로 이루어지는데, 이는 타이밍 요건을 충족시키는 간단하고 효율적인 해결책이다. 따라서, 이 구조는 고속 클럭 속도에 적합하다.
본 발명은 바람직한 실시예에 대해 특정하게 도시되고 기술되었으나, 본 발명의 정신과 범주로부터 벗어나지 않고서 형태와 세부 사항에 있어 다양한 변경이 이루어질 수 있음을 통상의 지식을 가진자라면 이해할 것이다.
Claims (13)
- 입력 신호의 제 1, 2, 3, 4 및 5 그룹을 제공하는 디바이더 입력부를 구비하고, 상기 입력 신호의 그룹이 부분 나머지 및 젯수를 포함하며, 출력으로서 몫 비트가 생성되는 고정 소수점 디바이더 장치(a fixed-point divider apparatus)에 있어서, 가산 또는 감산 기능을 수행하기 위해 상호 병렬로 접속된 제 1, 제 2, 및 제 3 가산기로서, 각 가산기는 제 1 클럭 페이스(a first clock phase) 동안 사전충전되고(precharged), 제 2 클럭 페이스(a second clock phase) 동안 선택된 기능을 실행하되, 상기 제 1 및 제 2 클럭 페이스는 단일 클럭 사이클(a single clock cycle)동안 발생하는 상기 제 1, 제 2, 제 3 가산기와, 상기 디바이더 입력부 및 상기 제 1 가산기에 접속되어, 상기 제 1 가산기에 대한 제 1 및 제 2 오퍼랜드 - 상기 제 1 및 2 오퍼랜드는 상기 입력 신호의 제 1 및 2 그룹으로부터 각각 선택됨 -를 각각 선택하기 위한 제 1 및 제 2 멀티플렉서와, 상기 디바이더 입력부 및 상기 제 2 가산기에 접속되어, 상기 제 2 가산기에 대한 제 1 오퍼랜드 - 상기 제 2 가산기에 대한 상기 제 1 오퍼랜드는 상기 입력 신호의 제 3 그룹으로부터 선택됨 -를 선택하기 위한 제 3 멀티플렉서와 상기 디바이더 입력부 및 상기 제3가산기에 접속되어 상기 제 3가산기에 대한 제 1 및 제 2 오퍼랜드 - 상기 제 3 가산기에 대한 상기 제 1 및 2 오퍼랜드는 각각 상기 입력 신호의 제 4 및 5 그룹으로부터 선택됨 -를 각각 선택하기 위한 제 4 및 제 5 멀티플렉서와, 상기 제 1, 제 2 및 제 3 가산기와 상기 멀티플렉서들에 접속되어 가산 기능을 수행할 지 혹은 감산 기능을 수행할지를 선택하고, 상기 멀티플렉서가 상기 제 1, 2, 3 가산기로 어떤 오퍼랜드를 공급하는가를 선택하기 위한 가산기 오퍼랜드 선택 로직 회로(an adder operand select logic circuit)과, 상기 제 1, 2 및 3 가산기에 접속되어, 나눗셈 연산이 언제 완료되었는지, 나눗셈 결과가 상기 몫 비트의 형태로 어떠한지, 잔여 몫의 증분이 존재하는지의 여부를 판정하기 위한 잔여 몫 결정 회로(a remain quotient determination circuit)를 포함하는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 제 1 가산기는 [잔여 몫(remain quotient) ± 3 × 젯수(the divisor)]의 출력을 발생시키고, 상기 제 2 가산기는 [잔여 몫(remain quotient) ± 2 × 젯수]의 출력을 발생시키며, 상기 제 3 가산기는 [잔여 몫(remain quotient) ± 젯수]의 출력을 발생시키는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 클럭 사이클은 약 6 나노초(nanosecond)이고, 상기 각 제 1 및 제 2 클럭 페이스는 약 3 나노초인 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 제 1 , 제 2 및 제 3 가산기는 64-비트 또는 32-비트 연산을 처리할 수 있는 67-비트 가산기인 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 오퍼랜드 선택 로직 회로는 상기 오퍼랜드가 부호형(signed) 오퍼랜드인지 무부호형(unsigned) 오퍼랜드인지를 판정하는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 오퍼랜드 선택 로직 회로는 상기 기능이 젯수 0인 나눗셈 연산(a divide by zero operation)인지를 판정하는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 오퍼랜드 선택 회로 및 상기 잔여 몫 결정 회로는 상기 제 1 클럭 페이스 동안 동작하는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 잔여 몫 결정 회로는 다음 디바이더 연산 신호와, 상기 제 1, 2, 3, 4 및 5 멀티플렉서의 각각에 대한 선택 신호를 생성하며, 상기 다음 디바이더 연산은 반 클럭 사이클내에 수행되는 고정 소수점 디바이더 장치.
- 제 1 항에 있어서, 상기 잔여 몫 결정 회로는 상기 제 1, 2 및 3 가산기로부터 부호형 비트를 수신하고, 상기 부호형 비트중 어느 것이 정확한 결과를 구성하는지를 판정하며, 몫 비트와 다음 디바이더 연산을 위한 다음의 오퍼랜드 세트를 생성하며, 이들 모든 동작은 반 클럭 사이클내에서 수행되는 고정 소수점 디바이더 장치.
- 병렬로 접속된 제 1, 2 및 3 가산기를 포함하는 복수의 가산기, 상기 복수의 가산기에 접속된, 제 1, 2, 3, 4 및 5 멀티플렉서를 포함하는 복수의 멀티플렉서, 상기 복수의 가산기 및 상기 복수의 멀티플렉서에 접속된 가산기 오퍼랜드 선택 로직, 상기 가산기 오퍼랜드 선택 로직 및 상기 복수의 멀티플렉서에 접속된 오퍼랜드 선택 회로, 상기 복수의 가산기에 접속된 잔여 몫 결정회로를 구비하는 고정 소수점 디바이더 장치에서, 고정 소수점 나눗셈 연산을 수행하는 방법에 있어서, 제 1 및 제 2 페이스를 갖는 클럭 사이클의 제 1 페이스 동안, 상기 복수의 멀티플렉서에 의해 입력 신호의 그룹들로부터 선택된 제 1 오퍼랜드와 제 2 오퍼랜드를 상기 복수의 가산기에 대한 상기 오퍼랜드 선택 회로로 전송하는 단계와, 상기 제 1 페이스 동안, 상기 복수의 가산기를 사전충전하고 상기 제 1, 2 및 3 가산기의 각각에 대한 제각기의 제 1 및 2 오퍼랜드를 선택하는 단계와, 상기 제 2 페이스 동안, 상기 복수의 가산기에서 상기 선택된 제 1 및 2 오퍼랜드에 대한 가산기 연산을 수행하고 상기 가산기 연산은 제 1, 2 및 3 가산기 결과를 생성하는 단계와, 후속 제 1 페이스 동안, 상기 제 1, 2 및 3 가산기 결과 중 적어도 하나의 결과에 기초하여 다음 가산기 연산을 결정하는 단계와, 상기 후속 제 1 페이스 동안, 상기 복수의 멀티플렉서중 적어도 하나에 대한 가산기 결과 선택 신호를 생성하여, 상기 다음 가산기 연산을 수행하기 위한 상기 복수의 가산기 중 원하는 하나의 가산기를 선택하도록 하는 단계와, 상기 후속 제 1 페이스 동안, 상기 제 1, 2 및 3 가산기 결과로부터 정확한 결과를 선택하는 단계와, 다중 비트 몫(a multi-bit quotient)을 생성하는 단계와, 상기 선택된 정확한 결과에 기초하여 상기 다음 가산기 연산을 위한 다음의 오퍼랜드 세트를 생성하는 단계와, 클럭 사이클의 후속 제 2 페이스(a subsequent second phase of a clock cycle)동안, 상기 다음 가산기 연산을 수행하여, 제 1, 2 및 3 가산기 결과의 또다른 세트를 생성하는 단계를 포함하는 고정 소수점 나눗셈 연산 수행 방법.
- 제 10 항에 있어서, 상기 제 1 페이스 동안, 상기 제 1 및 제 2 오퍼랜드의 부호와, 상기 제 1 및 제 2 오퍼랜드의 길이를 결정하는 단계를 더 포함하는 고정 소수점 나눗셈 연산 수행 방법.
- 제 10 항에 있어서, 상기 제 1 클럭 페이스 동안, 상기 연산이 젯수가 0인 나눗셈 연산인지의 여부를 판정하는 단계를 더 포함하는 고정 소수점 나눗셈 연산 수행 방법.
- 피젯수 및 젯수의 수신에 응답하여 몫을 결정하는 고정 소수점 디바이더에 있어서, 동적 로직으로부터 형성되며, 제 1 및 제 2 페이스를 포함하는 클럭 사이클의 제 1 페이스동안에 사전충전되고, 상기 제 2 페이스 동안 개별적으로 부분 나머지와 상기 젯수의 복수의 상이한 배수의 각각과 결합하여 대응하는 복수의 중간 합을 형성하는 가산기 회로 - 상기 피젯수는 초기의 클럭 사이클동안 상기 부분 나머지를 형성함 - 와, 동적 로직으로부터 형성되며, 입력으로서 상기 중간 합을 수신하고, 상기 제 1 페이스 동안에, 상기 몫의 여러 비트와, 상기 클럭 사이클의 상기 제 2 페이스 동안 상기 부분 나머지로서 사용될 상기 복수의 중간 합중 하나를 지시하는 신호를 생성하는 잔여 몫 회로를 포함하는 고정 소수점 디바이더.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31920394A | 1994-10-05 | 1994-10-05 | |
US8/319,203 | 1994-10-05 | ||
US08/319,203 | 1994-10-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960015200A KR960015200A (ko) | 1996-05-22 |
KR100218615B1 true KR100218615B1 (ko) | 1999-09-01 |
Family
ID=23241282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950033665A KR100218615B1 (ko) | 1994-10-05 | 1995-10-02 | 고정 소수점 디바이더 장치 및 고정 소수점 나눗셈 연산 수행방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5673215A (ko) |
EP (1) | EP0706117B1 (ko) |
JP (1) | JP3210557B2 (ko) |
KR (1) | KR100218615B1 (ko) |
DE (1) | DE69529047D1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6109777A (en) * | 1997-04-16 | 2000-08-29 | Compaq Computer Corporation | Division with limited carry-propagation in quotient accumulation |
US6989843B2 (en) * | 2000-06-29 | 2006-01-24 | Sun Microsystems, Inc. | Graphics system with an improved filtering adder tree |
DE10158810C1 (de) * | 2001-11-30 | 2003-04-24 | Infineon Technologies Ag | Berechnungsschaltung zur Division eines Festpunktsignals |
US8185721B2 (en) * | 2008-03-04 | 2012-05-22 | Qualcomm Incorporated | Dual function adder for computing a hardware prefetch address and an arithmetic operation value |
DE202014103162U1 (de) | 2014-03-05 | 2014-07-23 | Gerald Wegl | System zum Sichern von Behältnissen zur Aufbewahrung von Wertsachen |
KR102470224B1 (ko) * | 2022-06-30 | 2022-11-23 | 이수용 | 편심축 및 구름 접촉을 이용한 감속장치 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0833816B2 (ja) * | 1988-10-08 | 1996-03-29 | 日本電気株式会社 | 固定小数点除算方式 |
US5128891A (en) * | 1990-04-02 | 1992-07-07 | Advanced Micro Devices, Inc. | High speed divider with square root capability |
JP2835153B2 (ja) * | 1990-06-25 | 1998-12-14 | 株式会社東芝 | 高基数除算器 |
JP2502836B2 (ja) * | 1991-03-19 | 1996-05-29 | 富士通株式会社 | 除算回路の前処理装置 |
US5420809A (en) * | 1993-11-30 | 1995-05-30 | Texas Instruments Incorporated | Method of operating a data processing apparatus to compute correlation |
-
1995
- 1995-09-08 DE DE69529047T patent/DE69529047D1/de not_active Expired - Lifetime
- 1995-09-08 EP EP95480123A patent/EP0706117B1/en not_active Expired - Lifetime
- 1995-10-02 KR KR1019950033665A patent/KR100218615B1/ko not_active IP Right Cessation
- 1995-10-02 JP JP25540595A patent/JP3210557B2/ja not_active Expired - Fee Related
-
1996
- 1996-11-15 US US08/746,708 patent/US5673215A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0706117A1 (en) | 1996-04-10 |
DE69529047D1 (de) | 2003-01-16 |
JP3210557B2 (ja) | 2001-09-17 |
KR960015200A (ko) | 1996-05-22 |
EP0706117B1 (en) | 2002-12-04 |
US5673215A (en) | 1997-09-30 |
JPH08123668A (ja) | 1996-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
US6099158A (en) | Apparatus and methods for execution of computer instructions | |
EP0585619B1 (en) | Method of detecting zero condition of arithmetic or logical computation result, and circuit for same | |
US4320464A (en) | Binary divider with carry-save adders | |
US9146707B2 (en) | Generating a fast 3x multiplicand term for radix-8 booth multiplication | |
US5426600A (en) | Double precision division circuit and method for digital signal processor | |
US4110832A (en) | Carry save adder | |
GB1570791A (en) | Multiplication apparatus | |
EP0487814A2 (en) | Overflow determination for three-operand alus in a scalable compound instruction set machine | |
KR19980041799A (ko) | 결합된 선두 1 및 선두 제로 예상기 | |
Prabhu et al. | 167 MHz radix-8 divide and square root using overlapped radix-2 stages | |
EP0529101B1 (en) | Floating-point dividing circuit | |
US5301139A (en) | Shifter circuit for multiple precision division | |
US20040267853A1 (en) | Method and apparatus for implementing power of two floating point estimation | |
US5357455A (en) | Floating point remainder generator for a math processor | |
KR100218615B1 (ko) | 고정 소수점 디바이더 장치 및 고정 소수점 나눗셈 연산 수행방법 | |
GB2196453A (en) | Treatment of floating point numbers | |
US6519621B1 (en) | Arithmetic circuit for accumulative operation | |
US5867413A (en) | Fast method of floating-point multiplication and accumulation | |
JP3306497B2 (ja) | 浮動小数点乗算器における丸め回路 | |
US7069290B2 (en) | Power efficient booth recoded multiplier and method of multiplication | |
US5675528A (en) | Early detection of overflow and exceptional quotient/remainder pairs for nonrestoring twos complement division | |
US5239498A (en) | Methods and apparatus for improved quotient correction in nonrestoring division computation circuits | |
US20040073593A1 (en) | Hybrid carry look ahead/carry select adder including carry logic generating complementary hot carry signals, and method for producing the carry logic | |
JPH0612239A (ja) | コンピュータaluにおける除算により生じさせられた不正確な結果を検出する装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20020410 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |