The present invention relates, in general, to the field of networked computers and computer systems. More particularly, the present invention relates to a uniquely efficient system and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques as herein disclosed.
Human language would not be possible without the use of words. Fundamentally, words are short utterances or symbols (or groups of symbols) that connote standardized meaning between the speaker and listener and serve as an effectively shorthand notation for their definitions (i.e. “dog” has a universal meaning in the English language). Language uses words to communicate efficiently, but that communication is dependent on the sender and receiver having a common database of meanings for these words. If the receiver does not recognize a particular word and the meaning it is intended to convey, the definition can ultimately be obtained from a common database (i.e. a dictionary).
The current state of computer data communications is entirely devoid of a language system and data transmissions generally consist of sending an entirely self-contained image. In other words, there is no universal, commonly-understood digital equivalent of “words”. Computer communications, therefore, suffer under the tremendous burden of the need for sending extremely large amounts of data in a byte-by-byte format that ultimately serves to reduce the overall efficiency of all communications.
In present day computer systems, network bandwidth is a valuable and limited commodity wherein demand often exceeds supply. Moreover, as demands on available bandwidth increase faster than additional resources can be brought on line, supply will likely continue to lag demand for the foreseeable future. Moreover, current data transmission mechanisms, as previously noted, rely on conventional byte-by-byte transmission of data itself across the network and secure data transmission can only be approximated through the use of a variety of techniques to guarantee the integrity of transmitted data and reduce the risk of eavesdropping and interception. In any event, a certain amount of risk is nevertheless inherent in all known approaches.
Instead of the transfer of data on a byte-for-byte basis as is currently the state of the art, the system and method of the present invention advantageously implements the technique of system “DNA transmission” comprising a system for symbolic data exchange. In a particular embodiment, this may be effectuated utilizing one or more techniques disclosed in the aforementioned patent applications, including the hash file system (“HFS”) lexicon implementing a one-to-one symbol to data translation table at every relevant branch point of a transmission stream. This enables construction of point-to-point or point-to-multipoint data transmissions comprising primarily the exchange of symbols shared by the lexicons involved in each leg of the transmission and only secondarily of data associated with symbols new to one or more of the involved lexicons. Consequently, the system and method of the present invention minimizes the amount of redundant data transmitted across the system.
Because, in an exemplary embodiment, hashes (or hashsums) may be utilized to generate and define the symbols in the system, overall security is improved since, for any hash-to-data pair, it is computationally impossible to regenerate the data from only the hash value without access to the translation table that maps the connection. Therefore, the system and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques provides a means for securely creating and maintaining a universal “dictionary” of unique identifiers (e.g. hashes or hashsums) and the corresponding data they represent.
In accordance with the present invention, a system and method is provided for moving and storing data that allows networked computers or other devices to communicate through the synchronization of unique identifiers (e.g. hashes or hashsums) for the digital sequences (e.g. data, video streams etc.) that they represent. This system vastly decreases the amount of total data movement otherwise required between computers for accurate data communication without loss of data integrity.
In a representative embodiment, the system may comprise partially synchronized databases or translation tables capable of entering data based on its unique identifier (or a list of unique identifiers, or a recipe for combining data associated with unique identifiers) and retrieving data based on its unique identifier or list of unique identifiers or a recipe. A sender (or server) application is capable of breaking a digital sequence of data (e.g. disk blocks, files, still pictures, graphics, images, audio or video streams, network traffic, databases, directories, entire systems, entire data centers etc.) into a hash or set of hashes in concert with the partially synchronized databases. A receiver (or client) application is capable of converting the hashes or set of hashes back into the data sequenced using one of these translation tables.
The system and method of the present invention is implemented by means of unique identifiers (e.g. hashes or hashsums) which comprise numbers within a range large enough to reduce the chance of random collisions to an acceptably small error rate. The sender application partitions digital sequences (e.g. data etc.) using a standardized means to increase the likelihood of matching existing sequences in the shared database using a method such as “sticky byte” factoring disclosed and claimed in the aforementioned patent application for: “System and Method for Unorchestrated Determination of Data Sequences Using Sticky Byte Factoring to Determine Breakpoints in Digital Sequences”. The unique identifiers may be managed in association with digital sequence chunks in accordance with the disclosure of the aforementioned patent application for: “Hash File System and Method for Use in a Commonality Factoring System”.
In general, what has been disclosed herein is a system and method for moving and storing data that allows networked computers or other devices to communicate through symbolic exchange (i.e. the unique identifiers), vastly decreasing the amount of total data movement necessary for accurate communication without loss of data integrity. A client application is capable of sequencing digital sequences (e.g. blocks of data, files, directories, entire systems, and entire data centers etc.) into a comparatively smaller string or strings of binary digits (system DNA) unique to that original set of data. In addition, a server application comprises a “Primordial Data Pool” (also referred to as a “DNA Lexicon”), comprising “Binary Building Blocks” capable of reconstituting the entire digital sequence (e.g. files, systems, and sets of data etc.) when provided with the system DNA under the proper, or an otherwise acceptable, reconstitution protocol. Optionally, a secure transmission protocol may be implemented between the client and server applications that allows for the fully encrypted exchange of data over public or non-public network connections such as the Internet.
The aforementioned and other features and objects of the present invention and the manner of attaining them will become more apparent and the invention itself will be best understood by reference to the following description of a preferred embodiment taken in conjunction with the accompanying drawings, wherein:
With reference now to
In general terms, a “network” comprises a system of general purpose, usually switched, physical connections that enable logical connections between processes operating on nodes 18. The physical connections implemented by a network are typically independent of the logical connections that are established between processes using the network. In this manner, a heterogeneous set of processes ranging from file transfer, mail transfer, and the like can use the same physical network. Conversely, the network can be formed from a heterogeneous set of physical network technologies that are invisible to the logically connected processes using the network. Because the logical connection between processes implemented by a network is independent of the physical connection, internetworks are readily scaled to a virtually unlimited number of nodes over long distances.
In a particular implementation of the present invention, storage devices holding DNA Lexicon translation tables may, for example, be placed at nodes 18. The storage at any node 18 may comprise a quantity of RAM, single hard drive, or may comprise a managed storage system such as a conventional RAID device having multiple hard drives configured as a single logical volume. Optionally, one or more of the nodes 18 may implement storage allocation management (“SAM”) processes that manage data storage across nodes 18 in a distributed, collaborative fashion. SAM processes preferably operate with little or no centralized control for the system as whole. SAM processes provide data distribution across nodes 18 and implement recovery in a fault-tolerant fashion across network nodes 18 in a manner similar to paradigms found in RAID storage subsystems.
However, because SAM processes operate across nodes rather than within a single node or within a single computer, they allow for greater fault tolerance and greater levels of storage efficiency than conventional RAID systems. For example, SAM processes can recover even where a network node 18, LAN 16, or WAN 14 become unavailable. Moreover, even when a portion of the Internet backbone 12 becomes unavailable through failure or congestion, the SAM processes can recover using data distributed on nodes 18 that remain accessible.
With reference additionally now to
As shown, a representative computer system, such as personal computer 202, may include a DNA network lexicon transcription system embodied in locally resident software in conjunction with a local primordial data pool stored on the personal computer 202 hard disk 204. The personal computer 202 is shown as coupled to the Internet 206 (or any other type of computer communications network) and capable of transmitting and receiving DNA factored transmissions in accordance with the present invention, as will be more fully described hereinafter. DNA factored transmissions comprise highly optimized network traffic utilizing unique identifiers that are both secure and highly efficient.
Further illustrated is, for example, a super computer or data center 208 (or any other type of computer system) which may be coupled to the Internet 206 by means of a supplementary network coupled server 210. The computer 208 may communicate with the server 210 through conventional unfactored (or normal) communications protocols. The server 210 in conjunction with, for example, a very fast access speed solid state memory 212 comprising a locally accessible primordial data pool may serve as a hardware based DNA network lexicon transcription system and associated primordial data pool to provide high speed DNA factoring and unfactoring functions (also denominated as “transcription” or “reconstitution” operations herein) also as more fully described hereinafter. As before, the computer system comprising the computer 208, network server 210 and primordial data pool 212 are capable of transmitting and receiving DNA factored transmissions with other Internet 206 coupled computer systems. The transcription and reconstitution process are depicted using a hardware based device 210 and a software based method in the Personal Computer 202 to illustrate that compatibility between DNA Lexicons are independent of the speed or means by which they are factored.
The operating environment 200 may further comprise, for example, a set of computers 214, 220, 224 working cooperatively via a private WAN 218. While DNA factoring can be done without cooperation, DNA reconstitution commonly requires requesting numeric sequences not present in the Lexicon translation table. While these numeric sequences can be supplied by any source (trusted or untrusted), transmitting them takes time. DNA reconstitution therefore benefits from quick access to numeric sequences and the high speed private WAN 218 is shown as an example of how a set of computers 214, 220, 224 can be used to efficiently serve requests for numeric sequences.
The term “Partial Primordial Data Pool” is used to indicate that systems can partition a single DNA Lexicon across the storage resources of separate systems 216, 222 and 226. Partitioning can be more effective particularly when there are disparate network connections 218 and 206. Instead of a system holding an isolated DNA Pool 204 covering the entire range of possible unique identifiers, a set of systems can partition that space, each managing a subrange but collectively covering the entirety of values. Such a practice can reduce the requests for numeric sequences sent over a slow speed network 206 by serving them over a local high speed network 218.
A “Partial Primordial Data Pool” configuration 216, 222, 2260, 2261, 2262 may also be used in conjunction with isolated complete primordial data pools. Systems holding both types would be capable of reconstituting most local network 218 traffic to accelerate local communications while resorting to communal, partial translation tables to reduce requests over slow speed network connections 206.
Full or partial primordial data pools can be lost or corrupted without compromising DNA transmission or reception. This is because unique identifiers provide an implicit validity check. The unique identifier for any digital or numeric sequence can be readily produced making verification autonomous. A corrupted Lexicon translation table can be used by simply preserving those entries that are valid, while removing those entries which are not. In the case of lost translation tables, the system functions as if all unique identifiers are not locally known, necessitating transmission of all data associated with each unique identifier. With proper selection of numeric sequence size, this overhead can be kept below a few percent of unfactored traffic volume.
With reference additionally now to
In this particular figure, new data (DATA5) enters the system 300 at Point A 302 which is thereafter to be transmitted via the communications link 312 to Point B 304. Specifically new data can be any digital or numeric sequence that has not previously or recently been seen at Point A 302. The method described herein is not dependent on having a complete or even accurate history of the transmissions between Point A 302 and Point B 304. The table 306 at Point A 302 is depicted containing various data elements from previous transmissions. This table 306 maybe large or small to operate within the constraints of a particular implementation. The table 306 space can be managed with industry standard techniques such as LRU (Least Recently Used) to remove old items in preference to new ones. Other methods of managing the table 306 space are also possible.
With reference additionally now to
Note that the tables 306 at both Point A 302 and Point B 304 can be implemented as standard computer hash table data structures in software, or as associative arrays in hardware. Both data structures allow for rapid checking for existing hashes (Unique Identifiers) and for translating hashes back into their associated digital or numeric sequences.
With reference additionally now to
An important point of the series of the preceding figures (
With reference additionally now to
With reference additionally now to
With reference additionally now to
It should be noted that the preceding series of three figures (
With reference additionally now to
With reference additionally now to
With reference additionally now to
With reference additionally now to
One important point of the series of
A request to send data associated with hash(DATA3) does not have to be answered with DATA3 but may instead be answered with, for example: a list of hashes whose associated data together combine to create DATA3; or a recipe for editing some data present at Point B 304 that will result in creating DATA3.
With reference additionally now to
Note that what has also been demonstrated in
With reference additionally now to
In this illustration, the DNA transmission 400 operation takes place between a transmitting system 402 (the function of which is indicated by the steps above the dashed lines and which corresponds generally to Point A 302 of
The operation commences at decision step 406 wherein the transmitting systems 402 makes a determination as to whether the numeric sequence to be transmitted 408 (e.g. a data file, video stream etc.) is too big to be considered a single chunk. If it is, then at step 410, the numeric sequence is broken into digital sequence chunks using sticky byte factoring as disclosed and claimed in the aforementioned pending patent applications. Thereafter, at step 412, unique identifiers are generated for each of the digital sequence chunks using, for example, industry standard hashing algorithms. If, at decision step 406, the numeric sequence 408 to be transmitted is not too large to be considered a single chunk, a unique identifier for that chunk is generated at step 412.
At step 414, each chunk and its unique identifier generated at step 412 is entered into the local primordial data pool 416 (e.g. a lexicon), if not already present. The primordial data pool contains digital sequence chunks and their corresponding unique identifiers, the presence of which is determined in accordance with the tables 306 and their respective portions 310 and 308 as described with respect to the preceding
The receiving system 404 then determines at decision step 420 whether or not the unique identifier received from the transmitting system is already maintained in the local primordial data pool 422. Again, this determination is made with respect to the entries in the table 306 associated with the primordial data pool 422 as previously described. If the unique identifier received is currently maintained in the primordial data pool 422 then, at decision step 424, the receiving system 404 determines whether or not all of the unique identifiers for each chunk in the message received from the transmitting system have now been received. If not, then the receiving system 404 requests the transmitting system 402 to send the remaining unique identifiers for the remaining chunks of the numeric sequence 408. At step 428, the received chunks are then assembled by the receiving system into the original numeric sequence and the numeric sequence received 430 by the receiving system 404 will correspond exactly with the numeric sequence 408 which was to be transmitted by the transmitting system 402.
At decision step 420, if the unique identifier is not already maintained in the local primordial data pool 422, the receiving system 404 requests the transmission of the chunk corresponding to the unique identifier and enters both into the primordial data pool 422 along with appropriate entries in the corresponding table 306 (
It should be noted that although the method described here serially transmits data for each unique identifier not present in the receiving systems primordial data pool, the same method applies to transmission in parallel. For example nearly all of the steps in
With reference additionally now to
The DNA sequencing operation 500 is initiated by the local system 502 at step 506 wherein a numeric (or digital) sequence such as a computer system file 508 is broken into chunks using sticky byte factoring. It should be noted that the numeric sequence can be any digital sequence including a file, video stream or other data. At step 510, a unique identifier (e.g. a hashsum) is generated for each digital sequence chunk of the numeric sequence. Thereafter, if desired, the unique identifiers may be encrypted prior to transmission at step 512. In any event, the first of the unique identifiers generated at step 510 are transmitted to the global storage network 504 at step 514.
At decision step 516, the global storage network 504 determines if the unique identifier received (and hence, its corresponding digital sequence chunk) is already present in the global storage area network 504 primordial data pool 518 which contains previously received digital sequence chunks and their corresponding unique identifiers indexed by means of a table containing these entries. If the unique identifier received by the global storage network 504 is currently in the primordial data pool 518, the next unique identifier for the digital sequence chunks is transmitted by the local system 502. Alternatively, if the unique identifier received is not currently in the primordial data pool 518, the global storage network 504 then requests the local system 502 to instead transmit the digital sequence chunk corresponding to the unique identifier not found in the primordial data pool 518 at step 520. Any new digital chuck and its corresponding unique identifier then received from the local system 502 at the global storage network 504 are then added to the primordial data pool. This process is monitored at decision step 524 until all of the chunks to be transmitted by the local system 502 are then added to the primordial data pool 518 of the global storage network 504.
With reference additionally now to
The system DNA reconstitution operation 600 commences at step 602 when a request is issued by the local system 502 to the global storage network 504 for a particular digital sequence (e.g. a file, video stream etc.). At step 604, the global storage network 504 determines the requisite digital sequence chunks required for the requested digital sequence (or file, video stream etc.) from the unique identifiers for the digital sequence chunks comprising the requested digital sequence. This information as well as the required digital sequence chunks is maintained in the global storage network 504 primordial data pool 608 and the latter is retrieved from the primordial data pool 608 at step 606.
If the requested file (or digital sequence) is to be assembled prior to transmission to the local system 502 by the global storage network 504, then the system DNA reconstitution operation 600 proceeds to step 612 where the system file is assembled from its constituent digital sequence chunks. At step 614, the assembled system file may be encrypted if desired prior to its transmission to the request issuing local system 502 at step 616. Alternatively, the global storage network 504 can transmit the required unique identifiers for the chunks constituting the requested digital sequence to the requesting system which, in this case, is the local system 502 as shown in step 618.
The local system 502 receives the unique identifiers from the global storage network 504 and determines whether all of the digital sequence chunks corresponding to the unique identifiers received are presently available locally to the local system 502 at decision step 620. If one or more of the digital sequence chunks corresponding to the unique identifiers received are not available locally, a request is sent at step 622 to the global storage network 504 to transmit those digital sequence chunks to the local system 502. Once all of the digital sequence chunks are received by the local system 502, the originally requested digital sequence (e.g. system file, video stream etc.) is assembled at step 624.
With reference additionally now to
At decision step 712, the local primordial data pool 706 is queried to determine if a server somewhere else is known to supply the unique identifier is indicated. If so, then at step 714, a request is sent to the indicated server for the data associated with the unique identifier. At decision step 716, if data for the unique identifier is returned from the server, a check can be performed to confirm that the data produced produces the same unique identifier. If it does, then the operation 700 concludes with a successful system DNA reception transmission. Otherwise, the operation 700 returns to decision step 718, as in the case of a negative result at decision step 712.
It should be noted that, with respect to decision steps 710 and 716, the secure reception of data is assured by these operations because the data element must produce the same unique identifier or it cannot be the same data element. Also, the local system may optionally assist in future location requests for this particular unique identifier by transmitting it to the list of servers 720 known to hold information on identifiers encompassing this one's range. This, then, would serve to accelerate future lookups at the local system or for other systems.
At decision step 718, a list of servers 720 is consulted to determine if a set of servers is known that is likely to hold the unique identifier received in step 702. The list of servers 720 comprises a list of servers known to hold information on ranges of unique identifiers (their data or the servers that would have their data or there whereabouts). If so, then at step 722, a request is sent to one or more of the servers known to handle the range of unique identifiers comprising the unique identifier received. If data for the particular unique identifier is returned at decision step 724, the operation 700 concludes with a successful system DNA reception transmission. Otherwise, the operation 700 returns to decision step 726, as in the case of a negative result at decision step 718.
With respect to decision step 718, the data for the unique identifier does not have to come from the transmitting source itself. Rather, it can come from any server willing to supply it. Moreover, the server does not have to be a trusted source inasmuch as, if the data sent produces the same unique identifier requested, the data is then, ipso facto, known to be correct (and with a high degree of certainty dependent on the hash algorithm or method of producing unique identifiers).
At decision step 726, if the originating source is able to send the data corresponding to the unique identifier, then at step 728, a request is sent to the originating system for the data associated with the unique identifier. If, at decision step 730, the data corresponding to the unique identifier is returned, then the operation 700 concludes with a successful system DNA reception transmission. Otherwise, the operation 700 concludes with an unsuccessful system DNA reception transmission, as in the case of a negative result at decision step 712.
Note that this series of steps is only meant to be illustrative of an exemplary implementation of distributed DNA reception. Other means for finding data for unique identifiers can be performed in the spirit of the steps depicted in
It should be noted that, contrary to conventional web traffic hypertext transfer protocol (“HTTP”), the supplier of the reference to the data does not have to be the supplier of the data for that reference. The DNA transmission system and method of the present invention allows any source to supply that data. In the exemplary operation 700 illustrated, the originating source of the transmission is asked for the data only after exhausting other sources. This is counter to normal HTTP transfer protocol methods that request all data from the same target source.
Disclosed herein, therefore, is a dynamic system DNA transmission and transcription technique wherein a digital sequence or data stream is selected for transmission from a first location to a second location. The digital sequence is parsed utilizing a factoring engine, such as those disclosed in the aforementioned patent applications, to consistently break the digital sequence (or data) into subsequences (or chunks) and associate unique identifiers with each subsequence. In operation, a secure communications link to the second location is initiated by the first location and the first location checks its local lexicon to determine if the second location has previously been demonstrated to have seen any of the unique identifiers associated with each subsequence in a prior communication. If the lexicon at the first location is aware that the lexicon at the second location contains one or more of the identifier-data pairs, the lexicon at the first location only sends the unique identifier associated with each data subsequence in question. The first location then inquires of the lexicon at the second location to determine if it contains any of the other unique identifiers associated with each identified subsequence of the digital sequence to be transmitted.
If the lexicon at the second location contains one or more of the unique identifiers in question, the data associated with those unique identifiers in the lexicon are simply inserted in the appropriate places in the digital sequence. On the other hand, if the lexicon at the second location does not contain one or more of the unique identifiers in question, the data associated with each identifier is sent from the first location in full for insertion at the appropriate place in the sequence and the new identifier-data pair is then entered into the lexicon at the second location for future reference. The lexicon at the first location is annotated to reflect which unique identifiers the lexicon at the second location has either been shown to have or updated to reflect knowledge as a result of this particular data transmission. The lexicon at the second location is also annotated to reflect which unique identifiers the lexicon at the first location has been shown to have as well.
Through the use of the system and method of the present invention disclosed above, a dramatic reduction in the volume of otherwise necessary data transmission between computers or computer systems may be effectuated over networks or other data transmission media. The present invention also advantageously improves the security of communications by sending unique identifiers (e.g. hashes or hashsums) as an alternative to the data itself. Consequently, this renders eavesdropping a significantly more difficult proposition due to the fact that, if the eavesdropper lacks the identifier to data correspondence table, decoding the message is computationally infeasible.
The system and method of the present invention solves the problem of how to effectively transmit data between locations without having to transmit the entire body of the data itself. This is readily distinguishable from data compression techniques which are able to, at best, merely compress a complete data image, often with concomitant losses. System DNA transmission is operative, instead, to replace the bulk of the intended transmission with unique symbols corresponding to one or more subsequences of the requested data.
The applications of the techniques disclosed herein are wide-ranging and any device that is required to transmit data to another point can benefit from a reduction in the volume of data that need ultimately be transferred. Since most applications reference units of information much larger than what is required for their immediate operations (e.g. a word processing program document might need to be opened to correct a single spelling error and the majority of the document would not need to be examined) the system and method of the present invention can transmit only the affected subsequence of the digital sequence representing the entire document.
While there have been described above the principles of the present invention in conjunction with specific operations and system configurations, it is to be clearly understood that the foregoing description is made only by way of example and not as a limitation to the scope of the invention. Particularly, it is recognized that the teachings of the foregoing disclosure will suggest other modifications to those persons skilled in the relevant art. Such modifications may involve other features which are already known per se and which may be used instead of or in addition to features already described herein. Although claims have been formulated in this application to particular combinations of features, it should be understood that the scope of the disclosure herein also includes any novel feature or any novel combination of features disclosed either explicitly or implicitly or any generalization or modification thereof which would be apparent to persons skilled in the relevant art, whether or not such relates to the same invention as presently claimed in any claim and whether or not it mitigates any or all of the same technical problems as confronted by the present invention. The applicants hereby reserve the right to formulate new claims to such features and/or combinations of such features during the prosecution of the present application or of any further application derived therefrom.
The present invention claims priority from U.S. Provisional Patent Application Ser. No. 60/183,762 for: “System and Method for Decentralized Data Storage” filed Feb. 18, 2000, the disclosure of which is herein specifically incorporated by this reference. The present invention is also related to the subject matter disclosed in U.S. patent applications Ser. No. 09/777,149 filed Feb. 5, 2001 for: “System and Method for Unorchestrated Determination of Data Sequences Using Sticky Byte Factoring to Determine Breakpoints in Digital Sequences” and 09/777,150 filed Feb. 5, 2001 for: “Hash File System and Method for Use in a Commonality Factoring System”, the disclosures of which are also herein specifically incorporated by this reference. The aforementioned patent applications are all assigned to Undoo, Inc., Irvine, Calif. assignee of the present invention.
Number | Name | Date | Kind |
---|---|---|---|
3668647 | Evangelisti et al. | Jun 1972 | A |
4215402 | Mitchell et al. | Jul 1980 | A |
4649479 | Advani et al. | Mar 1987 | A |
4761785 | Clark et al. | Aug 1988 | A |
4887204 | Johnson et al. | Dec 1989 | A |
4887235 | Holloway et al. | Dec 1989 | A |
4897781 | Chang et al. | Jan 1990 | A |
4901223 | Rhyne | Feb 1990 | A |
4982324 | McConaughy et al. | Jan 1991 | A |
5005122 | Griffin et al. | Apr 1991 | A |
5018060 | Gelb et al. | May 1991 | A |
5089958 | Horton et al. | Feb 1992 | A |
5109515 | Laggis et al. | Apr 1992 | A |
5133065 | Cheffetz et al. | Jul 1992 | A |
5146568 | Flaherty et al. | Sep 1992 | A |
5155835 | Belsan | Oct 1992 | A |
5162986 | Graber et al. | Nov 1992 | A |
5163148 | Walls | Nov 1992 | A |
5210866 | Milligan et al. | May 1993 | A |
5218695 | Noveck et al. | Jun 1993 | A |
5239637 | Davis et al. | Aug 1993 | A |
5239647 | Anglin et al. | Aug 1993 | A |
5239659 | Rudeseal et al. | Aug 1993 | A |
5263154 | Eastridge et al. | Nov 1993 | A |
5276860 | Fortier et al. | Jan 1994 | A |
5276867 | Kenley et al. | Jan 1994 | A |
5278838 | Ng et al. | Jan 1994 | A |
5305389 | Palmer | Apr 1994 | A |
5317728 | Tevis et al. | May 1994 | A |
5325505 | Hoffecker et al. | Jun 1994 | A |
5347653 | Flynn et al. | Sep 1994 | A |
5355453 | Row et al. | Oct 1994 | A |
5367637 | Wei | Nov 1994 | A |
5367698 | Webber et al. | Nov 1994 | A |
5379418 | Shimazaki et al. | Jan 1995 | A |
5403639 | Belsan et al. | Apr 1995 | A |
5404508 | Konrad et al. | Apr 1995 | A |
5404527 | Irwin et al. | Apr 1995 | A |
5448718 | Cohn et al. | Sep 1995 | A |
5452440 | Salsburg | Sep 1995 | A |
5452454 | Basu | Sep 1995 | A |
5454099 | Myers et al. | Sep 1995 | A |
5479654 | Squibb | Dec 1995 | A |
5487160 | Bemis | Jan 1996 | A |
5497483 | Beardsley et al. | Mar 1996 | A |
5513314 | Kandasamy et al. | Apr 1996 | A |
5515502 | Wood | May 1996 | A |
5524205 | Lomet et al. | Jun 1996 | A |
5535407 | Yanagawa et al. | Jul 1996 | A |
5544320 | Konrad | Aug 1996 | A |
5559991 | Kanfi | Sep 1996 | A |
5574906 | Morris | Nov 1996 | A |
5586322 | Beck et al. | Dec 1996 | A |
5604862 | Midgely et al. | Feb 1997 | A |
5606719 | Nichols et al. | Feb 1997 | A |
5640561 | Satoh et al. | Jun 1997 | A |
5649196 | Woodhill et al. | Jul 1997 | A |
5659743 | Adams et al. | Aug 1997 | A |
5659747 | Nakajima | Aug 1997 | A |
5696901 | Konrad | Dec 1997 | A |
5751936 | Larson et al. | May 1998 | A |
5754844 | Fuller | May 1998 | A |
5765173 | Cane et al. | Jun 1998 | A |
5771354 | Crawford | Jun 1998 | A |
5778395 | Whiting et al. | Jul 1998 | A |
5794254 | McClain | Aug 1998 | A |
5802264 | Chen et al. | Sep 1998 | A |
5802297 | Engquist | Sep 1998 | A |
5842224 | Fenner | Nov 1998 | A |
5943443 | Itonori et al. | Aug 1999 | A |
5978791 | Farber et al. | Nov 1999 | A |
6014676 | McClain | Jan 2000 | A |
6016553 | Schneider et al. | Jan 2000 | A |
6021409 | Burrows | Feb 2000 | A |
6029168 | Frey | Feb 2000 | A |
6085298 | Ohran | Jul 2000 | A |
6122754 | Litwin et al. | Sep 2000 | A |
6307487 | Luby | Oct 2001 | B1 |
6320520 | Luby | Nov 2001 | B1 |
Number | Date | Country | |
---|---|---|---|
20020010797 A1 | Jan 2002 | US |
Number | Date | Country | |
---|---|---|---|
60183762 | Feb 2000 | US |