System and method for clock correlated data flow in a multi-processor communication system

Information

  • Patent Grant
  • 6463070
  • Patent Number
    6,463,070
  • Date Filed
    Tuesday, September 28, 1999
    26 years ago
  • Date Issued
    Tuesday, October 8, 2002
    23 years ago
Abstract
A system for processing multiple channel buffers in a communication system using multiple processors in a hub station. One embodiment of the invention includes one or more remote units, a satellite in operable communication with the remote units, and a hub station in operable communication with the satellite. The hub station includes a plurality of channel buffers for storing data that is transmitted from the satellite and a plurality of processors. Each of the processors respectively processes in sequence each of the plurality of channel buffers, and each of the plurality of processors determines with respect to a currently selected channel whether the channel has a sufficient amount of databits to process. The determining step includes determining a current time, determining a previous point in time in which the databits have been processed, and determining whether the difference in time between the current time and the previous point in time is above a predefined threshold. Each of the processors process the databits upon the determination that their respective channel has a sufficient amount of databits to process. After determining that a sufficient amount of databits are present, each of the processors atomically updates a last processed time entry that is maintained in a table by the hub station with respect to each of the channel buffers, thereby indicating to the other processors that the databits of that particular channel have been processed.
Description




BACKGROUND OF THE INVENTION




I. Field of the Invention




This invention relates generally to communication systems. More specifically, the invention relates to a communication system having multiple processors to process data.




II. Description of the Related Art




The use of wireless communication systems for the transmission of digital data is becoming more and more pervasive. In a typical wireless system, a digital data network is connected to a plurality or remote units via a hub station and satellite. The satellite receives signals from the remote units and forwards them to the hub station. The hub station then transmits the signals to the digital data network. The path from the remote units to the digital network is referred to as a reverse link.




According to the prior art, each processor in the hub station is assigned to service a fixed group of channel buffers. In order to prevent overflow of the channel buffers, the processing resources of the processor assigned to a group of channel buffers must exceed the worst case expected processing demands of the group of channel buffers. However, by providing a processor which has more processing resources than the worst case processing demand of the group of channel buffers to which it is assigned, some of the processor's resources will remain unutilized at all times. When as the number of groups of channels increases, the unutilized processor resources increases proportionately. In some cases, the cumulative unutilized processing resources in a system can exceed the processing resources provided by multiple processors.




For example, in a system in which the worst case processing demands of a group of 3 channel buffers is 2.1 Mega-instructions per second and the processor assigned to service the group of channel buffers is 2.5 Mega-instructions per second, 400 kila-instuctions per second of the processor's resources remain unutilized at all times. If the same system has 300 channel buffers, 100 processors are used to service 100 groups of channels. In such a case, the cumulative unutilized processing resource is 40 Mega-instructions per second or the equivalent processing power of about 16 processors. Such extravagant under-utilization of processing resources increases the cost, power consumption, size and heat dissipation requirements of the system.




Therefore, there is a need for a system and method of reducing the amount of un-utilized processing power that are present in the hub station, yet ensuring that data communications being routed through the hub station are handled in a timely manner.




SUMMARY




One embodiment of the invention includes a system comprising a communication system, comprising at least one remote unit, a satellite in operable communication with the at least one remote unit, a hub station in operable communication with the satellite, the hub station comprising a plurality of channel buffers for storing databits received from the satellite at the hub station, each of the channel buffers having an associated last-processed time, and a plurality of processors, wherein each of the processors respectively analyzes each of the plurality of channel buffers, and wherein each of the plurality of processors determines with respect to a currently selected channel buffer whether the currently selected channel buffer has sufficient amount of databits to process, the determining comprising determining a current time, and determining whether the difference in time between the current time and the last-processed time associated with the currently selected channel buffer is greater than a threshold, and wherein each of the processors processes the databits upon the determination that the currently selected channel buffer for the processor has a sufficient amount of databits to process, and wherein the each of the processors determines whether the databits have been processed by another one of the processors by performing a compare/exchange command with respect to the last-processed time that is associated with the selected channel buffer.




Another embodiment of the invention includes a method of identifying one or more databits for processing in a communication system, the method comprising successively storing one or more databits in a channel buffer, wherein the databits collectively comprise a data stream, determining a data rate for the data stream, determining a start location in the channel buffer, the art of determining based at least in part upon the data rate, a last-processed time that is associated with the channel buffer, and the size of the channel buffer, and determining an end location in the channel buffer.




Yet another embodiment of the invention includes a system for identifying one or more databits for processing in a communication system, the system comprising means for successively storing one or more databits in a channel buffer, wherein the databits collectively comprise a data stream, means for determining a data rate for the data stream, means for determining a start location in the channel buffer, the determining means acting based at least in part upon the data rate, a last-processed time that is associated with the channel buffer, and the size of the channel buffer, and means for determining an end location in the channel buffer.











BRIEF DESCRIPTION OF THE DRAWINGS




The features, objectives, and advantages of the invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings wherein like parts are identified with like reference numerals throughout and wherein:





FIG. 1

is a block diagram illustrating a communication system including a hub station, a satellite, and an Internet.





FIG. 2

is a block diagram illustrating one embodiment of the hub station of

FIG. 1

, the hub station including a plurality of processors, a plurality of channel buffers, and channel information.





FIG. 3

is a block diagram illustrating the data fields that are included in the channel information of FIG.


2


.





FIGS. 4A and 4B

are collectively a flowchart illustrating a process which is performed by each of the processors of

FIG. 2

with reference to the channel buffers of FIG.


2


.











DETAILED DESCRIPTION OF THE INVENTION




The following detailed description is directed to certain specific embodiments of the invention. However, the invention can be embodied in a multitude of different ways as defined and covered by the claims.





FIG. 1

is a block diagram illustrating an exemplifying system in which the invention may be embodied. The system in

FIG. 1

provides high-speed, reliable Internet communication service over a satellite link.




In particular, in

FIG. 1

, content servers


100


are coupled to the Internet


102


which is in turn coupled to a hub station


104


such that the hub station


104


can request and receive digital data from the content servers


100


. The hub station


104


also communicates via satellite


106


with a plurality of remote units


108


-


108


N. For example, the hub station


104


transmits signals over a forward uplink


110


to the satellite


106


. The satellite


106


receives the signals from the forward uplink


110


and re-transmits them on a forward downlink


112


. Together, the forward uplink


110


and the forward downlink


112


are referred to as the forward link. The remote units


108


-


108


N monitor one or more channels which comprise the forward link in order to receive remote-unit-specific and broadcast messages from the hub station


104


.




In a similar manner, the remote units


108


-


108


N transmit signals over a reverse uplink


114


to the satellite


106


. The satellite


106


receives the signals from the reverse uplink


114


and re-transmits them on a reverse downlink


116


. Together, the reverse uplink


114


and the reverse downlink


116


are referred to as the reverse link. The hub station


104


monitors one or more channels which comprise the reverse link in order to extract messages from the remote units


108


-


108


N. For example, in one embodiment of the system


150


, the reverse link carries multiple access channels as described in assignee's co-pending application entitled METHOD AND APPARATUS FOR MULTIPLE ACCESS IN A COMMUNICATION SYSTEM, application Ser. No. 09/407,639, filed concurrently herewith, the entirety of which is hereby incorporated by reference.




In one embodiment of the exemplifying system, each remote unit


108


-


108


N is coupled to a plurality of system users. For example, in

FIG. 1

, the remote unit


108


A is shown as coupled to a local area network


116


which in turn is coupled to a group of user terminals


118


A-


118


N. The user terminals


118


A-


118


N may be one of many types of local area network nodes such as a personal or network computer, a printer, digital meter reading equipment or the like. When a message is received over the forward link intended for one of the user terminals


118


A-


118


N, the remote unit


108


A forwards it to the appropriate user terminal


118


over the local area network


116


. Likewise, the user terminals


118


A-


118


N can transmit messages to the remote unit


108


A over the local area network


116


.




In one embodiment of the exemplifying system, the remote units


108


-


108


N provide Internet service to a plurality of users. For example, assume that the user terminal


118


A is a personal computer which executes browser software in order to access the World Wide Web. When the browser receives a request for a web page or embedded object from the user, the user terminal


118


A creates a request message according to well-known techniques. The user terminal


118


A forwards the request message over the local area network


116


to the remote unit


108


A, also using wellknown techniques. Based upon the request message, the remote unit


108


A creates and transmits a wireless link request over a channel within the reverse uplink


114


and the reverse downlink


116


. The hub station


104


receives the wireless link request over the reverse link. Based upon the wireless link request, the hub station


104


passes a request message to the appropriate content server


100


over the Internet


102


.




In response, the content server


100


forwards the requested page or object to the hub station


104


over the Internet


102


. The hub station


104


receives the requested page or object and creates a wireless link response. The hub station transmits the wireless link response over a channel within the forward uplink


110


and forward downlink


112


. For example, in one embodiment of the exemplifying system, the hub station


104


creates and sends the wireless link response in accordance with assignee's co-pending U.S. patent application Ser. No. 09/407,646, entitled TRANSMISSION OF TCP/IP DATA OVER A WIRELESS COMMUNICATION CHANNEL, filed Sept. 28, 1999, and assignee's co-pending U.S. patent application Ser. No. 09/407645, entitled METHOD AND SYSTEM FOR FREQUENCY SPECTRUM RESOURCE ALLOCATION, filed Sept. 28, 1999, each of which is filed concurrently herewith and the entireties of which are hereby incorporated by reference.




The remote unit


108


A receives the wireless link response and forwards a corresponding response message to the user terminal


118


over the local area network


116


. In one embodiment of the exemplifying system, the process of retrieving a web page or object is executed in accordance with assignee's co-pending application entitled DISTRIBUTED SYSTEM AND METHOD FOR PREFETCHING OBJECTS, application Ser. No. 09/129,142, filed Aug. 5, 1998, the entirety of which is hereby incorporated by reference. In this way, a bi-directional link between the user terminal


118


A and the content servers


100


is established.





FIG. 2

is a block diagram illustrating selected components of the hub station


104


(FIG.


1


). The hub station


104


includes a plurality of channel buffers


204


A-


204


M that are in operable connection with processors


208


A-


208


L. The processors


208


A-


208


L process data from the channel buffers


204


A-


204


M after it has been stored in the channel buffers


204


A-


204


M. In one embodiment of the invention, each of the processors


208


A-


208


L processes data in groups of a predetermined size referred to as processing blocks. Each of the processors


208


A-


208


L analyzes one of the channel buffers


204


A-


204


M to determine if a complete processing block has been received, and, if so, processes the processing block. If a processing block has not been received, the processors


208


A-


208


L analyze another one of the channel buffers


204


A-


204


M to determine if a complete processing block has been received.




In one embodiment of the invention, each of the channel buffers


204


A-


204


M is a circular register having a plurality of memory locations. In this embodiment, as data is received by the hub station


104


, it is stored in successive memory locations of the channel buffer until the channel buffer is full. In this instance, the contents of the memory that were first received are overwritten and replaced by new data that is received by the hub station


104


. In order to prevent overflow, the data in the channel buffers must be processed by one of the processors


208


A-


208


L before it is over written. In one embodiment, the channel buffers


204


A-


204


M are capable of storing between one and two processing blocks worth of data. In one embodiment of the invention, each of the channel buffers


204


A-


204


M can store identical amounts of data. In another embodiment of the invention, selected ones or all of the channel buffers


204


A-


204


M are of varied length with respect to each other.




Although only three channel buffers and only three processors are shown in

FIG. 2

, the number of channel buffers and processors and the ratio of channel buffers to processors can be increased or decreased depending on the type of data that is to be received, the speed of the processors, and the size of the channel buffers. For example, the number of processors


208


A-


208


L in the hub station


104


can range anywhere between 1 and 100 and upwards. Further, the number of channel buffers


204


A-


204


M in the hub station


104


can range anywhere between 1 and 100 and upwards.




None of the processors


208


A-


208


L is assigned to a specific channel buffer


204


A-


204


M and each of the processors


208


A-


208


L is coupled to and capable of servicing each of the channel buffers


204


A-


204


M. In one embodiment of the invention, each of the channel buffers


204


A-


204


M is logically arranged in a predefined order. The predefined selection process identifies for a respective processor the next channel buffer


204


to be analyzed when the processor finishes its current task.




Each of the processors


208


A-


208


L are operably connected to a clock


216


and buffer information


220


. The buffer information


220


maintains various items of information to assist the processors


208


A-


208


L in processing the data in the channel buffers


204


A-


204


M.





FIG. 3

is a block diagram illustrating in further detail the components of the buffer information


220


and the channel buffer


204


A. The channel buffers


204


A-


204


M include a plurality of locations


302


A-


302


N, each of the locations being adapted to hold an element of data. In one embodiment of the invention, each element of data is one bit in length. In another embodiment of the invention, each element of data is a byte in length. It is to be appreciated that other lengths may be used.




The buffer information


220


includes a last-processed time field


308


, a data rate field


312


, and a start time field


316


corresponding to each of the channel buffers


204


A-


204


M. The last-processed time field


308


indicates the time corresponding to the last databit in the channel buffer


204


A that was processed or similarly, the start time of the current processing block being stored. The data rate field


312


indicates the rate at which data is received by the channel buffers


204


A-


204


M. In one embodiment of the invention, each of the channel buffers


204


A-


204


M receives data at a constant rate. In another embodiment, each of the channel buffers


204


A-


204


M is configured to receive data at a plurality of rates. The start time field


316


identifies the time at which the respective channel began to store data.




In one embodiment of the invention, the values for the last-processed time field


308


, the data rate field


312


, and the start time field


316


are independently maintained with respect to each of the channel buffers


204


A-


204


M. However, it should be appreciated that selected items of the buffer information, depending on the embodiment, may be used to reflect information for more than one or all of the channel buffers


204


A-


204


M. For example, it is to be appreciated that the data rate may be applicable to more than one of the channel buffers


204


A-


204


M.





FIGS. 4A and 4B

are collectively a flowchart illustrating a process by which each of the processors


208


A-


208


L (

FIG. 2

) process the databits that are successively stored in the channel buffers


204


A-


204


M. It is noted that each of the databits is collectively referred to as a data stream. For convenience of description, the following description describes the processing process which is performed with respect to the processor


208


A. However, it should be appreciated that each of the processors


208


B-


208


L perform the same or a similar process.




Starting at a step


404


, the processor


208


A (

FIG. 2

) selects one of the channel buffers


204


A-


204


M (

FIG. 2

) according to a predefined selection process. As was discussed further above, the selection process defines a processing sequence with respect to the processor


208


A and each of the channel buffers


204


A-


204


M.




Moving to a step


408


, the processor


208


A (

FIG. 2

) determines a last-processed time with respect to the selected channel buffer. The last-processed time can be retrieved from the last-processed time field


308


(

FIG. 3

) which is maintained in the buffer information


220


.




Continuing to a decision step


412


, the processor


208


A determines whether the difference in between the current time and last-processed time (determined in the step


408


) is greater than a threshold. The threshold is determined based on the data rate and processing block size and may be fixed or variable. At the decision step


412


, the processor


208


A uses the determination to know whether a complete processing block of data is stored in the selected channel buffer. If an insufficient amount of databits have been received by the processor


208


A, the processor


208


A is unable to process the data.




Still referring to the decision step


412


, if the difference in the current time and the last-processed time is less than or equal to the threshold, the processor


208


A (

FIG. 2

) knows that an insufficient amount of data has accumulated in the selected channel buffer and returns to the step


404


to select a different one of the channel buffers


204


A-


204


M (FIG.


2


). However, if the difference in the current time and the last proceed time is greater than the threshold, the processor


208


A proceeds to a step


416


.




At the step


416


, the processor


208


A determines a start location in the selected channel buffer. The start location identifies a data element, such as a data bit, within the selected channel buffer that is the first data element within the processing block available for processing. In one embodiment of the invention, the processor determines the start location using Equation 1.






start_loc=size_buf MODULO ((last_processed_time−start_time)*data_rate)  Eq. 1






wherein:




size_buf is the size of the selected channel;




last_processed_time is the time identified by the last processed time field


308


;




start_time is the time identified by the start time field


316


; and




data_rate is the rate identified by the data rate field


312


.




Next, at a step


420


, the processor


208


A determines an end location in the processing block. In one embodiment of the invention, the end location is determined by first calculating the total amount of databits that have been received by the selected channel. In this embodiment, the last received location is calculated by the Equation 2.






last_received=size_buf MODULO ((current_time−start_time)*data_rate)  Eq. 2






wherein:




current_time is the current time according to the clock


216


.




In another embodiment, the last received location is determined by the modulo addition of the processing block size and the start location. The processor


208


A then sets the end location to reference the end of the last bit in the block.




Moving to a decision step


428


, the processor


208


A determines whether the last-processed time identified by the last-processed time field


308


has changed. In the time it took for the processor


208


A to identify the start and end locations of the processing block to be processed, another one of the processors


208


B-


208


L may have begun processing the block. Accordingly, the processor


208


A reads the last-processed time from the last processing time field


308


to determine whether it has been updated by another one of the processors


208


B-


208


L.




If the last-processed time has been modified, the processor


208


A assumes another one of the processors


208


B-


208


L has begun processing the data and returns to the step


404


to select another channel for processing. However, if the last processing time has not been modified, the processor


208


A assumes that the data is still in need of processing and proceeds to a step


432


. At the step


432


, the processor


208


A atomically updates the last-processed time field to reflect the start time of the next block being stored in the channel buffer. For example, the value in the last-processed time field is increased by the reception time corresponding to one processing block. In one embodiment of the invention, the steps


428


and


432


are performed using a predefined processing instruction. For example, the processor


208


A sends a “compare/exchange command” which logically says “if the contents of the buffer is XX, change it to YY and return an indicator as to whether a change was made.”




Continuing to a step


436


, the processor


208


A processes the databits identified by the start and end locations. The processor


208


A then returns to the step


404


to select another one of the channel buffers


204


A-


204


M for processing.




Advantageously, the processing system of the present invention allows multiple processors to share the processing of several channel buffers. Using the processing system of the present invention, it is possible to have improper fraction processor to channel buffers ratios such as 2:3, 2:5, 2:7, 3:4, 3:5, etc. wherein the workload associated with each of the channel buffers is evenly distributed amongst each of the processors. Further, given a number of channel buffers and corresponding processing demand, the present invention, depending on the embodiment, may reduce the number of processors that are required to service the channel buffers.




For example, assume the hub station


104


of the present invention includes two processors which can successfully service the demands of three channel buffers. However, in contrast, if a prior art communication system required a one to one or a one to many relationship between the processors and channel buffers, then either (i) one processor must be used for three of the channel buffers, (ii) two processors must be used but would require one processor to be dedicated to two of the channel buffers and the other processor to be dedicated to the remaining channel buffer, or (iii) three processors must be provided, one processor for each of the channel buffers. In the first alternative, the single processor may become overloaded and be unable to process each of the channel buffers. In the second alternative, one of the processors has twice the number of channel buffers to process as the other and a similar result may occur as in the first alternative. In the third alternative, three processors are used which is more costly than two processors.




Accordingly, the present communication system overcomes these limitations by allowing multiple processors to share the processing of multiple channel buffers. The communication system coordinates the work with respect to each of the processors


208


A-


208


L and ensures that the same data is not processed twice.




While the above detailed description has shown, described, and pointed out novel features of the invention as applied to various embodiments, it will be understood that various omissions, substitutions, and changes in the form and details of the device or process illustrated may be made by those skilled in the art without departing from the spirit of the invention. The scope of the invention is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.



Claims
  • 1. A communication system, comprising:at least one remote unit; a satellite in operable communication with the at least one remote unit; a hub station in operable communication with the satellite, the hub station comprising: a plurality of channel buffers for storing databits received from the satellite at the hub station, each of the channel buffers having an associated last-processed time; and a plurality of processors, wherein each of the processors respectively analyzes each of the plurality of channel buffers, and wherein each of the plurality of processors determines with respect to a currently selected channel buffer whether the currently selected channel buffer has sufficient amount of databits to process, the determining comprising: determining a current time, and determining whether the difference in time between the current time and the last-processed time associated with the currently selected channel buffer is greater than a threshold, and wherein each of the processors processes the databits upon the determination that the currently selected channel buffer for the processor has a sufficient amount of databits to process, and wherein the each of the processors determines whether the databits have been processed by another one of the processors by performing a compare/exchange command with respect to the last-processed time that is associated with the selected channel buffer.
  • 2. The method of claim 1, wherein each of the plurality of channel buffers is a circular buffer.
  • 3. A method of identifying one or more databits for processing in a communication system, the method comprising:successively storing one or more databits in a channel buffer, wherein the databits collectively comprise a data stream; determining a data rate for the data stream; determining a start location in the channel buffer, wherein the determining is based at least in part upon the data rate, a last-processed time that is associated with the channel buffer, and the size of the channel buffer; and determining an end location in the channel buffer.
  • 4. The method of claim 3, additionally comprising processing each of the databits in the channel buffer that are located between the databit identified by the start location and the databit identified by the end location.
  • 5. The method of claim 3, wherein determining the start location includes evaluating the equation:start_loc=size_buf MODULO ((last_processed_time−start_time)*data_rate), wherein the variable size_buf corresponds to the size of the channel buffer, wherein the variable last_processed_time corresponds to the time that the channel buffer was last processed, wherein the variable start_time corresponds to the time that the channel buffer began to receive the databits, and wherein the variable data rate corresponds to the rate at which data is received by the channel buffer.
  • 6. A method of determining the availability of one or more databits for processing, the method comprising:successively receiving one or more databits; and periodically analyzing the databits, the act of periodically analyzing comprising: determining a current time, determining a previous point in time at which the databits were processed, and determining whether the difference in time between the current time and the previous point in time is above a predefined threshold.
  • 7. The method of claim 6, additionally including processing one or more of the databits that have not been previously processed.
  • 8. A system for identifying one or more databits for processing in a communication system, the system comprising:means for successively storing one or more databits in a channel buffer, wherein the databits collectively comprise a data stream; means for determining a data rate for the data stream; means for determining a start location in the channel buffer, wherein to determine the start location the determining means uses at least in part upon the data rate, a last-processed time that is associated with the channel buffer, and the size of the channel buffer; and means for determining an end location in the channel buffer.
  • 9. The system of claim 8, additionally comprising means for processing each of the databits position in the channel buffer that are located between the data element identified by the start location and the data element identified by the end location.
  • 10. A system for determining the availability of one or more databits for processing, the system comprising:means for successively receiving one or more databits; and means for periodically analyzing the databits, the periodically analyzing means comprising: means for determining a current time, means for determining a previous point in time in which the databits have been processed, and means for determining whether the difference in time between the current time and the previous point in time is above a predefined threshold.
  • 11. A communication system, comprising:a plurality of channel buffers for storing data bits; and a plurality of processors which each respectively analyzes in sequence each of the plurality of channel buffers, each of the plurality of processors determining with respect to a selected one of the channel buffers whether the channel buffer has a sufficient amount of databits to process, the determining comprising: determining a current time; determining a previous point in time in which the databits have been processed; and determining whether the difference in time between the current time and the previous point in time is above a predefined threshold.
RELATED APPLICATION

The present application is related to co-pending U.S. application Ser. No. 09/407589, entitled SYSTEM AND METHOD FOR TASK COORDINATION IN A MULTI-PROCESSOR COMMUNICATION SYSTEM, filed Sep. 28, 1999.

US Referenced Citations (99)
Number Name Date Kind
3611435 Cooper Oct 1971 A
3818453 Schmidt et al. Jun 1974 A
4543574 Takagi et al. Sep 1985 A
4545061 Hileman Oct 1985 A
4555782 Alaria et al. Nov 1985 A
4736371 Tejima et al. Apr 1988 A
4763325 Wolfe et al. Aug 1988 A
4774707 Raychaudhuri Sep 1988 A
4811200 Wagner et al. Mar 1989 A
4837786 Gurantz et al. Jun 1989 A
4841527 Raychaudhuri et al. Jun 1989 A
4868795 McDavid et al. Sep 1989 A
4974223 Ancheta et al. Nov 1990 A
5012469 Sardana Apr 1991 A
5121387 Gerhardt et al. Jun 1992 A
5159592 Perkins Oct 1992 A
5166929 Lo Nov 1992 A
5172375 Kou Dec 1992 A
5216427 Yan et al. Jun 1993 A
5218680 Farrell et al. Jun 1993 A
5239677 Jasinski Aug 1993 A
5276703 Budin et al. Jan 1994 A
5297144 Gilbert et al. Mar 1994 A
5345583 Davis Sep 1994 A
5381443 Borth et al. Jan 1995 A
5384777 Ahmadi et al. Jan 1995 A
5420864 Dahlin et al. May 1995 A
5448706 Fleming et al. Sep 1995 A
5471473 Tejima Nov 1995 A
5485464 Strodtbeck et al. Jan 1996 A
5490087 Redden et al. Feb 1996 A
5537397 Abramson Jul 1996 A
5539730 Dent Jul 1996 A
5541924 Tran et al. Jul 1996 A
5550992 Hashimoto Aug 1996 A
5566168 Dent Oct 1996 A
5570355 Dail et al. Oct 1996 A
5577024 Malkamaki et al. Nov 1996 A
5586121 Moura et al. Dec 1996 A
5596581 Saeijs et al. Jan 1997 A
5612703 Mallinckrodt Mar 1997 A
5613195 Ooi Mar 1997 A
5615212 Ruszczyk et al. Mar 1997 A
5621752 Antonio et al. Apr 1997 A
5638361 Ohlson et al. Jun 1997 A
5642354 Spear Jun 1997 A
5644576 Bauchot et al. Jul 1997 A
5651009 Perreault et al. Jul 1997 A
5652892 Ugajin Jul 1997 A
5673322 Pepe et al. Sep 1997 A
5677909 Heide Oct 1997 A
5678208 Kowalewski et al. Oct 1997 A
5696903 Mahany Dec 1997 A
5704038 Mueller et al. Dec 1997 A
5706278 Robillard et al. Jan 1998 A
5719867 Borazjani Feb 1998 A
5732328 Mitra et al. Mar 1998 A
5734833 Chiu et al. Mar 1998 A
5745485 Abramson Apr 1998 A
5758088 Bezaire et al. May 1998 A
5768254 Papadopoulos et al. Jun 1998 A
5774467 Herrera Van Der Nood et al. Jun 1998 A
5790533 Burke et al. Aug 1998 A
5790535 Kou Aug 1998 A
5790551 Chan Aug 1998 A
5790939 Malcolm et al. Aug 1998 A
5790940 Laborde et al. Aug 1998 A
5796726 Hassan et al. Aug 1998 A
5802061 Agarwal Sep 1998 A
5809093 Cooper Sep 1998 A
5809400 Abramsky et al. Sep 1998 A
5809414 Coverdale et al. Sep 1998 A
5815652 Ote et al. Sep 1998 A
5815798 Bhagalia et al. Sep 1998 A
5818831 Otonari Oct 1998 A
5818845 Moura et al. Oct 1998 A
5818887 Sexton et al. Oct 1998 A
5822311 Hassan et al. Oct 1998 A
5828655 Moura et al. Oct 1998 A
5848064 Cowan Dec 1998 A
5859852 Moura et al. Jan 1999 A
5862452 Cudak et al. Jan 1999 A
5872820 Upadrasta Feb 1999 A
5887187 Rostoker et al. Mar 1999 A
5889766 Ohnishi et al. Mar 1999 A
5905719 Arnold et al. May 1999 A
5909447 Cox et al. Jun 1999 A
5910945 Garrison et al. Jun 1999 A
5915207 Dao et al. Jun 1999 A
5926458 Yin Jul 1999 A
5946602 Sayegh Aug 1999 A
5958018 Eng et al. Sep 1999 A
5959982 Federkins et al. Sep 1999 A
5960001 Shaffer et al. Sep 1999 A
5963557 Eng Oct 1999 A
5966412 Ramaswamy Oct 1999 A
5966636 Corrigan et al. Oct 1999 A
5970069 Kumar et al. Oct 1999 A
6021124 Haartsen Feb 2000 A
Provisional Applications (1)
Number Date Country
60/151282 Aug 1999 US