WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Multifunction arithmetic logic unit circuit    
United States Patent4815021   
Link to this pagehttp://www.wikipatents.com/4815021.html
Inventor(s)Steiner; Walter R. (Ormond Beach, FL); Simoncic; Paul A. (Daytona Beach, FL)
AbstractA multifunction arithmetic logic circuit having comparison and numeric conversion circuitry, particularly adapted for use in graphics processing. The inventive architecture comprises a modular arithmetic logic unit in a pipelined architecture circuit. Functions performed are conversion of floating point numbers to fixed point numbers, and vise versa, arithmetic and logical operations, and numeric comparison operations. A visibility logic subcircuit is included for rapidly tracking numeric comparisons to indicate whether a graphics object is to be considered visible, partially visible, or invisible.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 4815021
Multifunction arithmetic logic unit circuit - US Patent 4815021 Drawing
Multifunction arithmetic logic unit circuit
Inventor     Steiner; Walter R. (Ormond Beach, FL); Simoncic; Paul A. (Daytona Beach, FL)
Owner/Assignee     Star Technologies, Inc. (Sterling, VA)
Patent assignment
All assignments
Publication Date     March 21, 1989
Application Number     06/824,053
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 30, 1986
US Classification     708/233 708/231
Int'l Classification     G06F 007/38
Examiner     Harkcom; Gary V.
Assistant Examiner     Nguyen; Long T.
Attorney/Law Firm     Spensley Horn Jubas & Lubitz
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/716 364/748 364/768 364/784 364/785 364/736 340/146.2 340/347 DD 307/465 235/310 235/311
Patent Tags     multifunction arithmetic logic circuit
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4631696
Sakamoto
708/204
Dec,1986

[0 after 0 votes]
4620292
Hagiwara
708/501
Oct,1986

[0 after 0 votes]
4524345
Sybel
708/212
Jun,1985

[0 after 0 votes]
4475237
Glasby
382/181
Oct,1984

[0 after 0 votes]
4454589
Miller
708/233
Jun,1984

[0 after 0 votes]
4417314
Best
708/230
Nov,1983

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A multifunction arithmetic logic circuit having a modular arithmetic logic circuit, the modular arithmetic logic circuit including:

a. an adder circuit for operating on an input number and a previously stored output number, and generating and outputing the sum, logical OR, logical AND, and logical EXCLUSIVE OR thereof;

b. an adder selection multiplexer coupled to the adder circuit for selectively outputing one of the adder circuit outputs; and

c. a multiple register and selector means coupled to the adder selection multiplexer and the adder circuit, for temporarily storing at least one output number of the adder selector multiplexer and for selectively coupling a stored output number to the adder circuit.

2. The multifunction arithmetic logic circuit of claim 1, further including an input multiplexer coupled to the adder circuit, for selectively outputing the input number or the inverse of the input number to the adder circuit.

3. The multifunction arithmetic logic circuit of claim 1, further including a conditional mask circuit coupled to and between the adder selection multiplexer and the multiple register and selection means, for selectively logically AND'ing and outputing the output of the adder selection multiplexer an a number from the multiple register and selection means.

4. The multifunction arithmetic logic circuit of claim 1, wherein the multiple register and selection means comprises a register bank and a multiplexer.

5. A multifunction arithmetic logic circuit having a modular arithmetic logic circuit, the modular arithmetic logic circuit including:

a. an input multiplexer for selectively outputing an input number or the inverse of the input number;

b. an adder circuit for operating on the input number and a previously stored output number, and generating and outputing the sum, logical OR, logical AND, and logical EXCLUSIVE OR thereof;

c. an adder selection multiplexer coupled to the adder circuit for selectively outputing one of the adder circuit outputs;

d. a multiple register and selector means coupled to the adder selection multiplexer and the adder circuit, for temporarily storing at least one output number of the adder selector multiplexer and for selectively coupling a stored output number to the adder circuit; and

e. a conditional mask circuit coupled to and between the adder selection multiplexer and the multiple register and selection means, for selectively logically AND'ing and outputing the output of the adder selection multiplexer and a number from the multiple register and selection means.

6. The multifunction arithmetic logic circuit of claim 5, further including a fixed-point number and floating-point number comparison circuit coupled to the adder circuit, wherein the adder circuit generates and outputs signals indicative of the signs of two numbers input into the adder circuit, the sign of the difference of the two numbers, and the equality of the two numbers, and the comparison circuit selectively compares the adder inputs and outputs a signal indicative of the equality of the two numbers, whether one number is greater than the other number, or whether one number is greater than or equal to the other number.

7. The multifunction arithmetic logic circuit of claim 6, wherein the comparison circuit further selectively outputs a signal indicative of the inverse of the selected output comparison.

8. The multifunction arithmetic logic circuit of claim 5, further including a visibility circuit means coupled to the comparison circuit, for sequentially testing a series of comparison circuit outputs, and indicating a change in the output of any of the series of comparisons and a change in the output of all of the comparisons.

9. The multifunction arithmetic logic circuit of claim 8, wherein the means for testing and indicating a change in the output of any of the series of comparisons comprises a latch.

10. The multifunction arithmetic logic circuit of claim 8, wherein the means for testing and indicating a change in the output of all of the comparisons comprises a multiplicity of latches, one for each comparison in the tested series, the outputs of the latches being coupled to a logical OR gate.

11. A pipelined architecture, multifunction arithmetic logic circuit, the circuit including:

a. an input pipeline circuit for receiving and temporarily storing an input number and control commands;

b. a modular arithmetic logic circuit including:

(1) an adder circuit coupled to the output of the input circuit, for operating on the input number and a previously stored output number, and generating and outputing the sum, logical OR, logical AND, and logical EXCLUSIVE OR thereof;

(2) an adder selection multiplexer coupled to the adder circuit for selectively outputing one of the adder circuit outputs;

(3) a multiple register and selector means coupled to the adder selection multiplexer and the adder circuit, for temporarily storing at least one output number of the adder selector multiplexer and for selectively coupling a stored output number to the adder circuit; and

c. an output pipeline circuit coupled to the output of the modular arithmetic logic circuit, for receiving and temporarily storing the output of that circuit.

12. The multifunction arithmetic logic circuit of claim 11, further including an input multiplexer coupled to and between the input circuit and the adder circuit, for selectively outputing the input number or the inverse of the input number to the adder circuit.

13. The multifunction arithmetic logic circuit of claim 11, further including a conditional mask circuit coupled to and between the adder selection multiplexer and the multiple register and selection means, for selectively logically AND'ing and outputing the output of the adder selection multiplexer and a number from the multiple register and selection means.

14. The multifunction arithmetic logic circuit of claim 11, wherein the multiple register and selection means comprises a register bank and a multiplexer.

15. A pipelined architecture, multifunction arithmetic logic circuit, the circuit including:

a. an input pipeline circuit for receiving and temporarily storing an input number and control commands;

b. a modular arithmetic logic circuit including:

(1) an adder circuit coupled to the output of the input circuit, for operating on the input number and a previously stored output number, and generating and outputing the sum, logical OR, logical AND, and logical EXCLUSIVE OR thereof;

(2) an adder selection multiplexer coupled to the adder circuit for selectively outputing one of the adder outputs;

(3) a multiple register and selector means coupled to the adder selection multiplexer and the adder, for temporarily storing at least one output number of the adder selector multiplexer and for selectively coupling a stored output number to the adder circuit;

c. an intermediate pipeline circuit coupled to the output of the modular arithmetic logic circuit, for receiving and temporarily storing the output of that circuit;

d. a shifter circuit coupled to the output of the intermediate pipeline circuit, for selectively shifting the output of the modular arithmetic logic circuit; and

e. an output pipeline circuit coupled to the output of the shifter circuit, for receiving and temporarily storing the output of that circuit.

16. The multifunction arithmetic logic circuit of claim 15, wherein the shifter circuit further includes a shift select means for directing selected bits of a floating-point number to selected inputs of a shift circuit.

17. The multifunction arithmetic logic circuit of claim 16, wherein the shifter circuit further includes:

a. a flag register coupled to the shift circuit for cumulatively logically OR'ing the output of the shift circuit; and

b. an output multiplexer coupled to the shift circuit and the flag register for selecting and outputing one of the outputs thereof.

18. The multifunction arithmetic logic circuit of claim 15, further including a numeric conversion circuit means for converting floating-point numbers to fixed-point numbers, comprising:

a. a subtraction circuit coupled to the exponent bits of an input floating point number and to a selected scale input, for determining the difference between the exponent and the scale input; and

b. a conditional twos' complement conversion circuit, coupled to the output of the subtraction circuit and to the intermediate pipeline stage, for converting a negative difference to twos' complement form, thereby generating a shift code;

c. wherein the shift code is coupled to the shifter circuit, for controlling the direction and amount of shift of the input floating-point number, thereby generating the desired fixed-point number.

19. The multifunction arithmetic logic circuit of claim 15, further including a numeric conversion circuit means for converting fixed-point numbers to floating-point numbers, comprising:

a. a priority encoder circuit, coupled to the output of the adder circuit and to the intermediate pipeline circuit, for determining the number of leading zeros in an input fixed-point number, thereby generating a shift code; and

b. a subtraction circuit coupled to the shift code and to a selected scale input, for determining the difference between the shift code and the scale input, that difference comprising an exponent for the converted number;

c. wherein the shift code is coupled to the shifter circuit, for controlling the direction and amount of shift of the input fixed-point number, and wherein the generated exponent and the shifted input number are combined to form the desired floating-point number.

20. A pipelined architecture, multifunction arithmetic logic circuit, the circuit including:

a. an input pipeline circuit for receiving and temporarily storing an input number and control commands;

b. a modular arithmetic logic circuit including:

(1) an input multiplexer coupled to the output of the input circuit, for selectively outputing the input number or the inverse of the input number;

(2) an adder circuit coupled to the input multiplexer, for operating on the input number and a previously stored output number, and generating and outputing the sum, logical OR, logical AND, and logical EXCLUSIVE OR thereof;

(3) and adder selection multiplexer coupled to the adder circuit for selectively outputing one of the adder outputs;

(4) a multiple register and selector means coupled to the adder selection multiplexer and the adder, for temporarily storing at least one output number of the adder selector multiplexer and for selectively coupling a stored output number to the adder circuit;

(5) a conditional mask circuit coupled to and between the adder selection multiplexer and the multiple register and selection means, for selectively logically AND'ing and outputing the output of the adder selection multiplexer and a number from the multiple register and selection means;

c. an intermediate pipeline circuit coupled to the output of the modular arithmetic logic circuit, for receiving and temporarily storing the output of that circuit;

d. a shifter circuit coupled to the output of the intermediate pipeline circuit, for selectively shifting the output of the modular arithmetic logic circuit, said shifter circuit including:

(1) a shift select means for directing selected bits of a floating-point number to selected inputs of a shift circuit;

(2) a flag register coupled to the shift circuit for commulatively logically OR'ing the output of the shift circuit; and

(3) an output multiplexer coupled to the shift circuit and the flag register for selecting and outputing one of the outputs thereof; and

e. an output pipeline circuit coupled to the output of the shifter circuit, for receiving and temporarily storing the output of that circuit.

21. The multifunction arithmetic logic circuit of claim 20, further including a fixed-point number and floating-point number comparison circuit coupled to the adder circuit, wherein the adder circuit generates and outputs signals indicative of the signs of two numbers input into the adder circuit, the sign of the difference of the two numbers, and the equality of the two numbers, and the comparison circuit selectively compares the adder inputs and outputs a signal indicative of the equality of the two numbers, whether one number is greater than the other number, or whether one number is greater than or equal to the other number.

22. The multifunction arithmetic logic circuit of claim 21, wherein the comparison circuit further selectively outputs a signal indicative of the inverse of the selected output comparison.

23. The multifunction arithmetic logic circuit of claim 20, further including a visibility circuit means coupled to the comparison circuit, for sequentially testing a series of comparison circuit outputs, and indicating a change in the output of any of the series of comparisons and a change in the output of all of the comparisons.

24. The multifunction arithmetic logic circuit of claim 23, wherein the means for testing and indicating a change in the output of any of the series of comparisons comprises a latch.

25. The multifunction arithmetic logic circuit of claim 23, wherein the means for testing and indicating a change in the output of all of the comparisons comprises a multiplicity of latches, one for each comparison in the tested series, the outputs of the latches being coupled to a logical OR gate.

26. The multifunction arithmetic logic circuit of claim 20, further including a numeric conversion circuit means for converting floating-point numbers to fixed-point numbers, comprising:

a. a subtraction circuit coupled to the exponent bits of an input floating point number and to a selected scale input, for determining the difference between the exponent and the scale input; and

b. a conditional twos' complement conversion circuit, coupled to the output of the subtraction circuit and to the intermediate pipeline circuit, for converting a negative difference to twos' complement form, thereby generating a shift code;

c. wherein the shift code is coupled to the shifter circuit, for controlling the direction and amount of shift of the input floating-point number, thereby generating the desired fixed-point number.

27. The multifunction arithmetic logic circuit of claim 20, further including a numeric conversion circuit means for converting fixed-point numbers to floating-point numbers, comprising:

a. a priority encoder circuit, coupled to the output of the adder circuit and to the intermediate pipeline circuit, for determining the number of leading zeros in an input fixed-point number, thereby generating a shift code; and

b. a subtraction circuit coupled to the shift code and to a selected scale input, for determining the difference between the shift code and the scale input, that difference comprising an exponent for the converted number;

c. wherein the shift code is coupled to the shifter circuit, for controlling the direction and amount of shift of the input fixed-point number, and wherein the generated exponent and the shifted input number are combined in the output multiplexer to form the desired floating-point number.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to electronic computation circuits, and more particularly to a multifunction arithmetic logic circuit having comparison and numeric conversion circuitry.

2. Background Information

In many high speed electronic systems, such as graphic processing systems, a large number of mathematical calculations must be performed. For high speed electronic systems, time is of the essence in performing such calculations. Therefore, it is desirable to have a dedicated circuit that can perform such mathematical functions at a very high rate of speed. In the graphics area, it is particularly desirable to have such a circuit that can perform calculations on floating point numbers, fixed point numbers, and logical data. It is also desirable to be able to convert floating point numbers to fixed point numbers, and vice versa. It is further desirable to be able to compare the values of two numbers, and to be able to track changes in the value of a string of such comparisons for purposes of determining whether an object in a graphics environment is to be displayed. In the prior art, some of these functions have been performed by a dedicated integrated circuit. A typical circuit is the Weitek Corporation WTL 1033 Arithmetic Logic Unit. However, the known prior art integrated logic circuits are not optimized for use in a graphics processing system, and do not include many desirable functions.

Therefore, it is an object of the present invention to provide a high speed pipelined architecture arithmetic logic circuit having a number conversion subcircuit, a number comparison subcircuit, and a visibility logic subcircuit particularly useful in a graphics processor. The invention is described in the context of an integrated circuit capable of performing such calculations in 300 nanoseconds, with a throughput rate of 100 nanoseconds at a clock frequency of 10 MHz.

DESCRIPTION OF THE DRAWINGS

FIGS. 1a and 1b are general block diagrams of the multifunction arithmetic logic circuit.

FIG. 2 is a simplified block diagram of the conversion subcircuit of the invention.

FIG. 3 is a simplified block diagram of the comparison subcircuit of the invention.

FIG. 4 is a simplified block diagram of the visibility logic subcircuit of the present invention.

Like reference numbers and names in the various figures refer to like elements.

SUMMARY OF THE INVENTION

The present invention in its preferred embodiment comprises a single integrated circuit having four interrelated sections. These are an input section, an arithmetic logic unit ("ALU") section, a shifter section, and an output section.

The input section receives 83 input signals comprising data and control signals. Forty-eight input signal lines are used to receive the data input to the circuit, either 32 ; bits at one time, or 16 bits at one time in a time multiplexed fashion. All input signals are temporarily stored in an input register during the same clock period.

The ALU section of the circuit is centered around a 32-bit fixed point ALU subcircuit. The input data to the multifunction circuit always enters the ALU subcircuit as the "A" input. A "B" input value used by the ALU subcircuit is chosen from one of four internal registers by means of a clearable multiplexer. Any of these four internal registers, as well as a mask register, may be written to from the ALU subcircuit output. The mask register may be used to clear certain bits from the output of the ALU subcircuit.

Also contained within the ALU section is a compare subcircuit that permits comparison of the "A" and "B" values, a visibility logic subcircuit used to determine if an object is visible for graphics applications, and a conversion subcircuit used to convert numbers from a twos' complement, fixed point number representation to the proposed IEEE 32-bit floating point number representation, and vice versa.

The shifter section of the multifunction circuit receives inputs from a register which follows the ALU section (not to be confused with the four internal registers which select the "B" input or with the mask register). The input to the shifter circuit from the ALU section may be selectively shifted left or right as determined by a shift code, which can be set by the user as an input to the multifunction circuit, or which is derived from the conversion section when converting number representations.

The output from the shifter feeds into a multiplexer and into a flag register, the output of which is also coupled to the multiplexer. The flag register allows the output of the shifter to be stored and combined with other outputs to pack data or create flag words. The multiplexer chooses whether the flag register data or the shifter output is coupled to the output section.

The last stage of the pipelined architecture multifunction circuit is the output register. Thirty-five of the multifunction circuit's 36 outputs leave from this register (a visible flag signal VIS leaves one register bank earlier).

The multifunction circuit can operate on logical data as well as numbers represented in fixed or floating point numeric representations. When manipulating floating point numbers, the present invention uses the proposed IEEE standard floating point format, which consists of 23 bits of mantissa, 8 bits of exponent, and a sign bit. In this format, a binary point is understood to exist between bit positions 22 and 23. A floating point number is represented in one of the following ways:

1. If the exponent is nonzero, then:

Number=[(-1).sup.(sign) * 2.sup.(exponent-127) * (1 data)]

2. If the exponent is zero, but the data is nonzero (indicating a denormalized number), then:

Number=[(-1).sup.(sign) * 2.sup.(-127) * (0.data)]

3. If both the exponent and the data are zero, then:

Number=0.0

4. If the exponent is FF.sub.16 and the mantissa is zero, then:

Number is considered to be: (+ or -) infinity.

5. If the number is FF.sub.16 and the mantissa is nonzero, then:

Number is considered to be: not a number.

In order to simplify the circuitry of the present invention, a denormalized number is forced to zero, and any number with an exponent of FF.sub. 16 is forced to (+ or -) infinity, depending on the sign bit.

For fixed point numbers, the data is in twos' complement format. A binary point may be assumed to exist anywhere in a fixed point number. However, for mathematical functions, the "A" and "B" inputs are assumed to have the same binary point locations. Provision is made for manipulating the binary point location during conversions from one numeric format to another.

The multifunction circuit indicates fixed point overflow and underflow. Fixed point overflow can occur in one of two ways. A signal (ALUOFLW) output from the multifunction circuit indicates whether an overflow was caused by an adder function in the ALU subcircuit. The other source of overflow for fixed point data is from the shifter subcircuit. If the shifter subcircuit shifts a fixed point number to the left and leaves nothing but zeros, an overflow has occurred. The circuit does not flag this overflow, nor is the data altered.

Fixed point data underflow occurs when the shifter subcircuit shifts out all data bits which are different from the sign bit. The multifunction circuit in this case does clear the data and sign. Fixed point underflow and overflow in the shifter subcircuit can also occur during number conversions, and are treated in the same manner.

DETAILED DESCRIPTION

FIGS. 1a and 1b show a block diagram of the overall inventive multifunction arithmetic logic circuit. In the preferred embodiment of the inventive circuit, extra circuitry is added for the convenience of the end-user. The presence of such circuitry should not be taken as a limitation of the basic invention.

The preferred embodiment of the present invention has 83 input signal lines and 36 output signal lines. The input signal lines include a 32-bit bus for input data as well as a 16-bit time multiplexed bus for input data. A multiplexer select signal MLTPX determines which of the two input busses is selected.

An 8-bit SCALE input bus is also provided, the input of which is used to control the shifter section. Also, for a fixed to floating point number conversion, the SCALE input determines the exponent of the generated output. For a floating point to fixed point number conversion, the SCALE input is used as a base to make positioning of the binary point consistent and in a desired range.

Input control signals include the following:

WRITE--Three signals are provided to determine one of five internal registers to which the ALU subcircuit section will write data.

READ--Two signal lines are provided to select which of four internal registers are selected to provide data to the "B" input of the ALU subcircuit.

TESTSEL--Three signal lines determine which of six visibility tests are to be performed in the visibility logic subcircuit.

FLOAT--The FLOAT signal is used to indicate floating point number operations.

COMPARE--The COMPARE signal activates the compare mode. The "A" input is compared with a number stored in one of four internal registers of the circuit. If the compare operation is true, a value in an internal register (which may differ from the internal register used in the comparison) is passed through the first pipeline stage of the multifunction circuit. If the compare operation proves false, the "A" input value is passed through the first pipeline stage.

FNSEL--Four signals are used in conjunction with the FLOAT and COMPARE signals to select which function the multifunction arithmetic logic circuit performs. These six signals are decoded in various combinations to enable various circuitry as desired by the end-user.

ENFLV--This signal enables the "fully visible" test of the visibility logic subcircuit. It is used with the ENVIS signal to control what test is performed on particular input data.

ENVIS--This signal enables the "visible" test of the visibility logic subcircuit, and is used in conjunction with the ENFLV signal.

SELVIS--This signal selects the "Fully Visible" flag to be the input to the shifter subcircuit.

BYPMSK--This bypass signal is used to activate or deactivate the mask register, the contents of which may be used to mask off bits leaving the ALU subcircuit. This signal has no effect in the COMPARE mode or when selecting the visibility tests.

SELFLG--This signal selects the flag word as the output of the multifunction arithmetic logic circuit. The shifter section output is logically OR'd with the contents of the flag word register before the contents are output from the multifunction circuit.

LDFLGW--This signal loads the flag word register with the results of the existing flag word contents logically OR'd with the output of the shifter subcircuit.

RESET--This signal clears the flag word register, and sets the output of the visibility logic subcircuit as "Visible" and "Fully Visible".

HOLD--This signal holds data and control signals in the input register for the next clock cycle, ignoring any new inputs.

The output of the multifunction circuit includes a 32-bit wide bus comprising the generated output number or data. Additional outputs include the following signals:

ALUOFLW--This is an overflow signal from the ALU section, and is only meaningful when a fixed point number is added or subtracted within the ALU.

ALUSIGN--This is the sign of the data that actually left the ALU section before any other processing of the data may have altered it.

CMTRUE--This signal indicates that a COMPARE operation performed in the ALU section proved to be true.

VIS--This signal indicates that a series of comparison tests has shown that the input data, when representing a graphics object, is such that the object is visible within the graphic space selected by the user. This signal exits the circuit after only two clock delays rather than three clock delays (which is the case for all other output signals from the multifunction circuit).

FIGS. 1a and 1b show the overall architecture of the inventive multifunction arithmetic logic circuit. Data can be input either sixteen bits at a time over a set of signals lines denoted "FIX", or thirty-two bits at a time over a set of signal lines denoted "FLOAT". In the former case, during the first clock period sixteen bits of data are strobed into a latch 1, and during a next clock period, a second set of sixteen bits, along with the sixteen bits previously stored in the latch 1, are input through a 32-bit multiplexer 2 to an input register 3. In the latter case, all thirty-two bits are directly entered into the input register 3 through the multiplexer 2. The inputs to the multiplexer 2 are selected by the MLTPX signal. All of the other control inputs to the multifunction circuit are also temporarily stored in the input register 3.

The input register 3 may be disabled by the HOLD signal after the HOLD signal has first passed through the input register 3 on a previous clock cycle.

The ALU section has a simple block-style design that permits it to perform the following functions in the preferred embodiment:

______________________________________ Data Type Function ______________________________________ LOGICAL SET LOGICAL RESET LOGICAL A LOGICAL B LOGICAL A AND B LOGICAL A OR B LOGICAL A XOR B LOGICAL NOT(A) FIXED A FIXED -A FIXED ABS(A) FIXED B FIXED A + B FIXED -A + B FIXED A FIX-FLT FIXED A GT B FIXED A LE B FIXED A GE B FIXED A LT B FIXED A EQ B FIXED A NE B FLOAT A FLOAT B FLOAT ABS(A) FLOAT ABS(B) FLOAT A FLT-FIX FLOAT A GT B FLOAT A LE B FLOAT A GE B FLOAT A LT B FLOAT A EQ B FLOAT A NE B FLOAT -A GT B FLOAT -A LE B FLOAT -A GE B FLOAT -A LT B FLOAT -A EQ B FLOAT -A NE B ______________________________________

Additional functions could be performed with the disclosed ALU architecture by increasing the number of function select control signal lines.

The entire ALU subcircuit of the ALU section is composed of six parts plus five internal registers. Of these six parts, four are multiplexers as shown in FIG. 1, the data input from the input register 3 is coupled to a setable/clearable selection multiplexer 4 which is in turn coupled to a carry look-ahead adder 5. The selection multiplexer 4, which is coupled to the decoded FNSEL function select signals, controls whether the data input into the adder 5 is left unchanged, is inverted, is set all to zeros, or is set all to ones. The output of the selection multiplexer 4 is then coupled to the adder. The adder generates four natural outputs, comprising the sum of the two input numbers (A and B), the EXCLUSIVE OR logical operation on the two inputs, the logical OR operation on the two inputs, and the logical AND operation on the two inputs. Such carry look-ahead adders are well known in the prior art. These four outputs are coupled to a 4-to-1 multiplexer 9, which is controlled by the FNSEL function select signals. The output of the 4-to-1 multiplexer 9 is coupled to a conditional mask circuit 10, which logically AND's the output of the multiplexer 9 with the contents of a MASK register 11, unless the bypass mask mode is selected by the BYPMSK signal. If the bypass mask mode is selected, the output from the multiplexer 9 is simply fed forward through the conditional mask circuit 10 to a 3-to-1 multiplexer 12. The other inputs to the the 3-to-1 multiplexer 12 are the original data input into the multifunction circuit, and the output of one of four internal registers in an internal register bank 14. The output of the 3-to-1 multiplexer 12 is coupled to an intermediate register 13, to a bank of four internal registers (denoted as W, X, Y, and Z) comprising the register bank 14, and to the MASK register 11. The W, X, Y, and Z registers are used to store intermediate values, while the MASK register 11 is used to store a masking data pattern. The WRITE signals control which of the registers in the register bank 14 and the MASK register 11 will store the output from the multiplexer 12. The outputs of the register bank 14 are coupled to a 4-to-1 clearable multiplexer 15, the output of which is selected by the READ signals. The output of the multiplexer 15 is coupled to the "B" input of the adder circuit 5, and to the "C" input of the 3-to-1 multiplexer 12.

With the above configuration, data can be input to the multifunction circuit, operated on by the ALU subcircuit, and stored either in the MASK register 11 or in the register bank 14. In this later case, any register in the register bank 14 may be used as the "B" input to the adder circuit 5. The circuit shown thus can perform addition, subtraction, and logical operations on input data or on intermediate stored data.

The data stored in the intermediate register 13 is coupled to a shift select circuit 16, which performs two functions. The first function is a clamping function, which clamps a floating point number to zero if the exponent of the number is zero, and clamps a floating point number to (+ or -) infinity if the exponent is equal to FF.sub.16. The shift select circuit also generates high order fill bits for a floating point number, to fill out the mantissa (which is only twenty-three bits long) to a full thirty-two bits. The fill bits are equal to "zero" if the input floating point number is positive, and to "one" if the input number is negative. Fixed point numbers and logical data are passed through the shift select circuit 16 unchanged.

The output of the shift select circuit 16 is coupled to a left-right shifter circuit 17. The amount of a shift performed by the shifter 17 is controlled by a five-bit shift code SHCD, while the direction of the shift is controlled by a shift sign signal SHSGN. In addition, a FILL signal is used in conjunction with fixed-point data to indicate either a zero or a one as the fill bit when shifting.

The output of the shifter 17 is coupled to a flag register 18, and a 3-to-1 multiplexer 19. The output of the flag register 18 is coupled to another input of the 3-to-1 multiplexer 19. The third input to the 3-to-1 multiplexer 19 comprises the exponent signal EXP derived from the conversion subcircuit (described below with respect to FIG. 2), the sign bit from the shifter 17 output, and bits 8 through 30 from the shifter 17 output. The last configuration permits conversion of fixed point numbers to floating point numbers, with a shift being performed in the shifter 17 of the bits that will ultimately form the mantissa of the output floating point number, while the exponent of the output floating point number is calculated in the conversion subcircuit.

The output of the 3-to-1 multiplexer 19 is coupled to an output register 20, which also receives and temporarily stores an ALU overflow signal ALUOFLW, and an ALU sign signal ALUSIGN.

The flag register 18 is controlled by a reset signal RESET and a load flag word signal LDFLGW, which permit the clearing of the flag register 18, or the loading of the flag register with the output of the shifter 17. Multiple loads of the flag word register cause the prior contents of the flag word register to be logically OR'd with each new shifter 17 output. The output of the flag register 18 thus can be used to store and combine data in order to pack data or create flag words for use outside of the multifunction circuit.

Part of the ALU section and shifter section is a converter circuit 6a, 6b, shown in greater detail in FIG. 2. This circuit has two pipelined sections. The first section converts a number from fixed point representation to floating point representation The second section converts a number from floating point representation to fixed point representation.

To convert a number from fixed point representation to floating point representation, an exponent input is required as a starting point That exponent is then decreased to account for leading zeros in the fixed point number. The fixed-point number to be converted is first coupled to the adder 5 shown in FIG. 1a, and converted to a signed magnitude format in the adder circuit. This is done by taking the twos' complement of the input number if it is negative. The signed magnitude result is then fed from the output of the adder 5 into a priority encoder circuit 30 shown in FIG. 2. This circuit, which is well known in the prior art, determines the number of leading zeros in the input number. The output of the priority encoder 30 is a fixed-point shift code SCB, which is temporarily stored in the intermediate register 13, along with the output of the ALU subcircuit (comprising the twos' complement form of the input number). The SCALE input is used as a starting exponent and is also stored in the intermediate register as a scale shift code SCC. Bits 5 and 6 of the SCALE input are OR'd to form a clear signal CLRC which can be used to clear the shifter 17. The fixed-point shift code SCB and the scale shift code SCC from the intermediate register 13 are coupled to a subtraction circuit 31, the output of which is a clear signal CLRB which can be used to clear the shifter 17, and a new exponent signal EXP which is coupled to the 3-to-1 multiplexer 19 shown in FIG. 1b. The fixed-point shift code SCB and the scale shift code SCC are also directly coupled to a shift code select multiplexer 34. The outputs of the select multiplexer 34 are coupled to the shifter 17 as control signals. The select multiplexer 34 is controlled by three signals derived from the function select signals FNSEL and FLOAT, and determine which shift code input to the select multiplexer 34 is coupled to the shifter 17.

In the fixed to floating point conversion mode, the fixed-point shift code SCB stored in the intermediate register 13 causes the shifter 17 to remove any leading zeros from the mantissa. The exponent EXP, calculated by taking the shift code output from the intermediate register 13 and subtracting it from the SCALE input by means of the subtraction circuit 31, is merged with the output of the shifter 17 in the 3-to-1 multiplexer 19 to form the proper floating point number.

Again referring to FIG. 2, to convert a number from floating point representation to fixed point representation, the SCALE input is used to align the binary point of the resulting output. The conversion requires that the mantissa of the floating point number be put into twos' complement form in the adder 5 (in the same manner as the twos' complement is taken for conversions from fixed point to floating point representation), and temporarily stored in the intermediate register 13. Simultaneously, bits 23 through 30 of the input number are subtracted from the SCALE input in a subtraction circuit 32 to scale the generated fixed point number to a desired range. The output of the subtraction circuit 32 is a twos' complement number, which is converted to a signed magnitude number by complement circuit 33 (which simply takes the twos' complement of the input number if it is negative). The resulting output is a floating-point shift code SCA. If the magnitude of the difference is greater than thirty-one, or if the exponent input from the subtraction circuit 32 is zero, a clear signal CLRA is generated which can be used to clear the shifter 17. The select multiplexer 34 then couples the floating-point shift code SCA to the shifter 17, and the shift select circuit 16 couples bit positions 0 through 22 of the twos' complement form of the input number to the shifter 17. The eight most significant bits of the shifter 17 input are set by the shift select circuit 16 to the same value as the sign of the input number. Bit position 23 is set to the value of the "hidden" bit inherent in the IEEE 32-bit floating point number representation format This is done by making that bit position a "one" if the input number was positive, and a "zero" if the input number was negative (unless all of the mantissa bits are zero, in which case the hidden bit number is set to "one", regardless of the sign of the input number). The input to the shifter 17 is shifted by the amount of the floating-point shift code SCA, thus completing the conversion. By adjusting the SCALE input, the user may "position" an implied binary point anywhere in the output number.

When the multifunction arithmetic logic circuit has not been placed into the conversion mode, the SCALE input can directly control the shifter 17 by selecting the scale shift code SCC input to the selection multiplexer 34. The SCALE input is entered in a signed magnitude format. A shift code SCC greater than "31" causes the shifter 17 to shift its input completely out, effectively clearing the shifter. A negative SCALE input shifts a number left, a positive SCALE input shifts a number right. For a left shift, the new bits shifted in on the right of the input number are always zeros. If the multifunction circuit output is going to be a fixed point result (resulting from any fixed point function or a floating point to fixed point conversion), the sign is preserved in left shifts and extended in right shifts. If the output is considered logical data, the most significant bit is freely shifted out on left shifts and zeros are shifted in on right shifts.

Also included in the ALU section is a compare subcircuit 7. This circuit allows numbers to be compared and sorted, and is also used in conjunction with a v