1. Field of the Invention
The present invention relates generally to a method and apparatus for decreasing the speed of write operations in systems utilizing nonvolatile memory and particularly to decreasing the speed of write operations in such systems when performing random write operations.
2. Description of the Prior Art
With the advent of the digital information revolution, nonvolatile memory (or FLASH memory or EEPROM memory) has enjoyed considerable popularity within less than a decade. This is in large part due to the particular characteristics, known to those of ordinary skill in the art, attributed to nonvolatile memory, such as maintenance of information even when power is interrupted or disconnected.
Nonvolatile memory has a wide variety of utilization, some of which include digital cameras where they are used to store photographs, in digital format, for later editing or loading elsewhere and personal computers (PCs) where they are used to store various types of digital information.
One of the problems posing a constant challenge to those interested in using nonvolatile memory is known to be the speed of read and write operations. As after each write operation, which involves changing the state of only cells that are still at a logical one state, an erase operation is necessary prior to a subsequent write operation to the same location, it is clear that any improvements to the speed of a write operation proves to be an impressive improvement to the overall system performance.
By way of a brief background to the way in which information is organized within nonvolatile memory, the memory, which may be one or more integrated circuits, typically more than one, is prearranged into blocks with each block including a predetermined number of sectors and each sector including a predetermined number of bytes. A sector is identified by the system by a logical block address (LBA) but when it is to be written to or read from nonvolatile memory, it is identified by a physical block address (PBA). There is generally a known correspondence between LBAs and PBAs, which may be maintained in random access memory (RAM).
An individual block or an individual sector may be defined as an erasable unit depending on the user. For example, a sector might and typically does include 512 bytes of data and 16 bytes of overhead information and in a given application, during an erase operation, the entire sector may be erased, which include many cells. In fact, a number of sectors may be erased at a time, in which case, the user has probably designed the system so that one or more blocks are erased together.
In existing systems employing nonvolatile memory, two types of data are stored therein. One type is file system data, another type is user system data. File system data provides information to the operating system as to the location in which a file, which includes user data, is located. User system data is the contents of a file, each file is generally comprised of large blocks of data typically requiring sequential write operations. In sequential write operations, LBAs appear in sequential order, i.e. sequential sectors are being written thereto.
Write operations are generally initiated by a host that interacts with a controller to direct information in and out of the memory. Sectors, identified by the host, are written thereto in memory. In mass storage applications, the host may initiate two types of write operation, one is a sequential write operation, as discussed hereinabove, and the other is a random write operation. One method of random write operation is generally performed when updating file system data.
In the more recent Windows operating system, employed in most PCs and workstations, a new file system, referred to as “FAT32” (File Allocation Table 32) is utilized, which allows file systems of the size greater than 2 Gigabytes. Advantages allowed by using FAT32 include formatting cards used for various applications, such as digital cameras, that have much larger capacity than prior file systems would have allowed.
In FAT32 type file systems, a special sector, referred to as “FSInfo” (File System Information) is employed. The FSInfo sector is continuously updated with information regarding the location of the next free cluster. In effect, this saves the file system software (operating system) from having to search the FAT for the location of a free cluster, which can be a time-consuming task. Not only FSInfo sectors but certain types of sectors as well, are generally written or re-written thereto more often than types of sectors.
However, continuous writing or updating of these certain sectors that are written thereto more often than others has the side effect of slowing down the system performance, in general, as well as consuming much nonvolatile memory space thereby causing inefficiencies in the use of nonvolatile memory.
As stated above, nonvolatile memory is organized into sectors with a group of sectors comprising a block. A sector typically includes 512 bytes of user data and 16 bytes of overhead information and a block may include 256 sectors, although, a sector may have a different number of bytes and a block may have a different number of sectors.
In existing nonvolatile memory systems, when a sector is to be written thereto, a free block is first located. A logical block address (LBA) value is correlated with a new physical block address (PBA) addressing a free or available block in nonvolatile memory. At this point, the free found block is considered to be ‘open’ or ‘pending’, i.e. being written thereto with sector information. For the purposes of discussion, the free found block, having an ‘open’ or ‘pending’ status, will be referred to as block 0, identified by VLBA 0.
Next, a sector subsequent to that being written is examined and if it is found that the subsequent sector is sequential or belongs to the correlated VLBA block, i.e. block 0 (PBA 0), the sector information is written to the sector location within the same block. Succeeding sectors of information, which belong to the correlated VLBA block, i.e. block 0, continue to be written thereto until block 0 is no longer free and has no more free locations in which case a different free block, for example, block 10 identified by VLBA 10 (PBA 10), is designated to be written thereto. Now, if there are further writes or updates of an already written sector of block 0, they will be written or stored in block 10. In this case, all of the sector information that was not updated is moved from block 0 to block 10 and block 0 is ‘closed’ pending erasure thereof.
In the previous example, after block 0 is no longer free, and assuming the new write command has sector information, which belongs to the same VLBA block, i.e. block 0, and is now being updated, a different free block, for example, block 10, identified by VLBA 0 and VPBA 10, is designated to be written thereto and is thus used to store updated sector information. At this point, blocks 0 and 10 are ‘pending’ or ‘open’. If yet another write command is received commanding updating of sector information that does not belong to block 0 and thus corresponds to an LBA other than VLBA 0, yet another free block, i.e. block 20 identified by VLBA 1 and VPBA 20 is used to store such update. An example of sector information that does not belong to the same VLBA block would be non-sequential sectors relative to those sectors being stored in block 0 or block 10. In this example, if block 0 and therefore block 10 are each designated to store sectors 0-255 (LBA 0 . . . LBA 255), then a write to sector 614 (LBA 614) is considered a write to a sector that does not belong to the same VLBA block as that of block 0 or block 10. All of the sector information that was not updated however is moved from block 0 to block 10. Now, in this case, blocks 10 and 20 will be ‘open’ or ‘pending’ and block 0 will be ‘closed’. As explained in U.S. patent application Ser. No. 09/620,544, entitled “Moving Sectors Within A Block of Information In A Flash Memory Mass Storage Architecture” and filed on Jul. 21, 2000, and U.S. Pat. No. 5,845,313, entitled “Direct Logical Block Addressing Flash Memory Mass Storage Architecture,” and issued on Dec. 1, 1998.
Still using the same example as above, yet another scenario is the case where even prior to block 0 running out of free space, that is, while it remains free or has available sector locations, if the new write command is a write operation to one of the sectors that was already updated once, again, another block, such as block 10, is used to store the second update of the already once-updated sector information and subsequent sectors, to the extent they are in sequential order and/or belong to the same LBA group as that of block 0, are written to corresponding sector locations of block 10. Un-updated sectors of block 0 are eventually moved to block 10 and block 0 is ‘closed’, Block 10 remains ‘open’ or ‘pending’.
To this end, in the case where a block includes, for example, 256 sectors, a maximum of possible 255 move operations of sector information would have to be performed, which is quite time consuming and degrades system performance.
This is illustrated, in high-level block diagram form, in
Thus, the need arises for a system and method for minimizing the time required for performing writing operations of non-sequential sectors in the file system area of nonvolatile memory.
Briefly, an embodiment of the present invention includes a digital equipment system having a host for sending random write commands to write files having sector information and having a controller device responsive to the commands for writing and updating FSInfo sector information. The controller controls a nonvolatile memory system (an example of nonvolatile memory is flash memory, as well known to those of ordinary skill in the art) organized into blocks, each block including a plurality of sector locations for storing sector information, a particular free block, designated for storing FSInfo sector information. Upon updating of the FSInfo sector, the updated FSInfo sector information is written to a next free sector of the dedicated block thereby avoiding moving the sectors of the particular block to another block, hence, improving system performance.
The foregoing and other objects, features and advantages of the present invention will be apparent from the following detailed description of the preferred embodiments which make reference to several figures of the drawing.
a) shows another embodiment of the present invention.
b) shows the management of frequently accessed sectors by the nonvolatile memory system 20.
Referring now to
The previous block 22 is dedicated to storing a particular type of sector, namely, a sector that is accessed more frequently than others. This type of sector is detected by using a predetermined threshold for the number of times a sector is accessed and if the number of times a sector is accessed exceeds the threshold, then, it will be treated differently, as discussed hereinbelow. The threshold value is programmed as a fixed value and used by the firmware or software that is directing the operation of the nonvolatile memory system, within the controller. In one embodiment of the present invention, an access counter is used to maintain track of the number of times a sector is accessed.
An example of an access counter value 21 is shown in
Another way of identifying these types of sectors is by a comparison of the number of times are accessed relative to each other and if sectors are detected that are in the category of being accesses more so than others, they are treated special, as noted below. In both of these methods, a counter, i.e. the access counter, is used to count each time a sector is accessed; the counter value for each sector is generally stored in the overhead portion of the sector information in nonvolatile memory in one example embodiment.
In one method of the present invention, such as the example of FAT 32, system traffic is analyzed and a sector that is accessed more often than other sectors, such as the FSInfo sector is detected as a frequently-accessed sector or if the sector, which belongs to a VLBA block and is accessed repeatedly during writing a file. The FSInfo sector is an example of such a sector. While the discussion below is mostly regarding the FSInfo sector, it should be noted that the present invention applies to whatever kind of sector is accessed more frequently than others and is not limited to the FSInfo sector and that the latter is merely an example embodiment of the present invention. While a discussion of the FSInfo sector is provided hereinabove, a part of the same, namely the function of the FSInfo sector, is repeated.
In FAT32 type file systems, a special sector, referred to as “FSInfo” is employed. The FSInfo sector is continuously updated with information regarding the location of the last known free cluster. In effect, this saves the file system software (operating system) from having to search the FAT for the location of a free cluster, which can be a time-consuming task.
As noted above, FSInfo sector is merely an example of a sector that is frequently accessed. The present invention applies to any type of sector that is detected or known to be accessed more frequently than other sectors and that may cause an unnecessary move if all of the data is not being updated and belongs to the same VLBA block. At any given time, one of the locations of the block 22 stores a current version of the FSInfo sector. For example, the first version of the FSInfo sector might be stored at location 26 of the block 22 and when the FSInfo sector is updated, the updated version may be stored at location 28 and still the following version of the FSInfo sector may be stored at location 30 of the block 22 and so on and so forth until all of the locations of the block 22 are written thereto with various versions of the FSInfo sector with the most recent version being stored at location ‘n’ of block 22 with ‘n’ being an integer, such as 256 in the case where there are 256 sectors per block. Thus, every time the FSInfo sector is updated, it is written to a new (or next although it need not be the next location) sector location within the block 22 and the previous sector location is designated as being ‘old’. This designation is so that upon a read operation, the most recent version of the FSInfo sector can be easily identified. That is, the sector location, which includes the most recent version of the FSInfo sector will have a designation other than ‘old’, whereas, all sector locations, which include a previous version of the FSInfo sector will have a designation of ‘old’. There are other ways of identifying the most recent version of FSInfo sector, one way is to keep track of the LBA value identifying the sector location, which includes the most recent version of FSInfo sector.
Once the block 22 is full, that is, all of its sector locations are written thereto with various versions of the FSInfo sector, the block 24 is written thereto and the block 22 is ready to be erased and an ‘old’ designation of the same is made. Again, with respect to block 24, as with block 22, the FSInfo sector is written to a sector location thereof each time the FSInfo sector is updated. To reiterate, the updating of the FSInfo sector in prior art techniques, as noted hereinabove, required moving the ‘good’ sectors of the previous block to another block (or read and written) resulting in time-consuming operations, i.e. many read and write operations, that need not occur in the present invention.
In the present invention, there is no moving of all of the ‘good’ sectors of a block to another block when the FSInfo sector is updated, accordingly, there is no need to move, for example, 255 sectors from the block 22 to the block 24, as there would have been in prior art systems.
In the embodiment of
In the present invention, each time FSInfo sector is updated, a write operation occurs. In the present invention, there is no requirement to move, i.e. read and write, the sectors of the block 22 to the block 24. The block 22 is dedicated to storing no other type of sectors other than the FSInfo sector. Upon completion of writing to all of the sector locations of the block 22 and upon receiving the next update of the FSInfo sector and storing the same in a new block, the block 22 is erased.
In another embodiment of the present invention, more than one sector is treated differently, in that, there are more than one type of sectors that are accessed much more often than others and are thus dedicated, at all times, a block. This is perhaps best understood using an example.
Assuming that sectors, identified by LBA 0 and LBA 50, are accessed much more frequently than others, every time LBA 0 is written, it will be written to a particular block within the nonvolatile memory and following the same, when LBA 50 is written, it is also written to the particular block and then again, when LBA 0 is re-written, rather than being written to a different block, as done by the prior art, it is written to the particular block (perhaps the third location, as the first two locations are occupied by the first writes to the LBA 0 and LBA 50). Next, upon a re-write of sector 50, it too is written to the particular block and so forth and so on until all of the sector locations of the particular are written thereto. Afterwards, a different block is dedicated to which following re-writes of LBA 0 and LBA 50 are made and the particular block is erased.
An alternative embodiment of the present invention includes writing the particular sector recognized to be accessed more often than other sectors to a different block every time it is written, as opposed to the same dedicated block.
An example of such an embodiment is shown in
b) shows the management of frequently accessed sectors by the nonvolatile memory system 20. The system 20, in
Each block includes a predetermined number of sector storage locations, such as 16, each for storing sector information, i.e. user data and overhead information. Block 0 is identified or addressed by VPBA 0, block 1 is identified by VPBA 1 and block M is identified by VPBA 17, by way of example. Each of the sector storage locations is identified by a particular PBA. For example, the first sector storage location 60 of block 0 is identified by a PBA 0 and the last sector storage location 62 of block 0 is identified or addressed by PBA 15. While not shown, the remaining blocks of
In the example of
First, sectors are written to the sector storage locations of block 0. Upon a re-write of these sectors, they are written to the sectors of block 1 with the exception of sector 15, or that sector identified by LBA 15. That is, rather than writing sector 15 to block 1, it is written to the dedicated block, block M, in this case, as are subsequent updates to sector 15. Thus, every time sector 15 is updated either as part of a sequential number of sectors, i.e. sectors 0-15, or otherwise, such as in a random write operation, it is written to an unused or available sector location within the block M. The first time it is updated, it may be written to the sector location 66, the next time it is updated it may be written to the sector location 68 and so on until it is written to the sector location 70. Thereafter, another available block is allocated to include updates of sector 15.
The controller circuit 506 may be a semiconductor (otherwise referred to as an “integrated circuit” or “chip”) or optionally a combination of various electronic components. In the preferred embodiment, the controller circuit is depicted as a single chip device. The nonvolatile memory unit 508 is comprised of one or more memory devices, which may each, be flash or EEPROM types of memory. In the preferred embodiment of
The host 502 is coupled through host information signals 504 to a controller circuit 506. The host information signals comprise of address and data busses and control signals for communicating command, data and other types of information to the controller circuit 506, which in turn stores such information in memory unit 508 through flash address bus 512, flash data bus 514, flash signals 516 and flash status signals 518 (508 and 512-516 collectively referred to as signals 538). The signals 538 may provide command, data and status information between the controller 506 and the memory unit 508.
The controller 506 is shown to include high-level functional blocks such as a host interface block 520, a buffer RAM block 522, a flash controller block 532, a microprocessor block 524, a microprocessor controller block 528, a microprocessor storage block 530, a microprocessor ROM block 534, an ECC logic block 540 and a space manager block 544. The host interface block 520 receives host information signals 504 for providing data and status information from buffer RAM block 522 and microprocessor block 524 to the host 502 through host information signals 504. The host interface block 520 is coupled to the microprocessor block 524 through the microprocessor information signals 526, which is comprised of an address bus, a data bus and control signals.
The microprocessor block 524 is shown coupled to a microprocessor controller block 528, a microprocessor storage block 530 and a microprocessor ROM block 534, and serves to direct operations of the various functional blocks shown in
Controller 506 further includes a flash controller block 532 coupled to the microprocessor block 524 through the microprocessor information signals 526 for providing and receiving information from and to the memory unit under the direction of the microprocessor. Information such as data may be provided from flash controller block 532 to the buffer RAM block 522 for storage (may be only temporary storage) therein through the microprocessor signals 526. Similarly, through the microprocessor signals 526, data may be retrieved from the buffer RAM block 522 by the flash controller block 532.
ECC logic block 540 is coupled to buffer RAM block 522 through signals 542 and further coupled to the microprocessor block 524 through microprocessor signals 526. ECC logic block 540 includes circuitry for generally performing error coding and correction functions. It should be understood by those skilled in the art that various ECC apparatus and algorithms are commercially available and may be employed to perform the functions required of ECC logic block 540. Briefly, these functions include appending code that is for all intensive purposes uniquely generated from a polynomial to the data being transmitted and when data is received, using the same polynomial to generate another code from the received data for detecting and potentially correcting a predetermined number of errors that may have corrupted the data. ECC logic block 540 performs error detection and/or correction operations on data stored in the memory unit 508 or data received from the host 502.
The space manager block 544 employs a preferred apparatus and algorithm for finding the next unused (or free) storage block within one of the flash memory devices for storing a block of information, as will be further explained herein with reference to other figures. As earlier discussed, the address of a block within one of the flash memory devices is referred to as VPBA, which is determined by the space manager by performing a translation on an LBA received from the host. A variety of apparatus and method may be employed for accomplishing this translation. An example of such a scheme is disclosed in U.S. Pat. No. 5,845,313, entitled “Direct Logical Block Addressing Flash Memory Mass Storage Architecture”, the specification of which is herein incorporated by reference. Other LBA to PBA translation methods and apparatus may be likewise employed without departing from the scope and spirit of the present invention.
Space manager block 544 includes SPM RAM block 548 and SPM control block 546, the latter two blocks being coupled together. The SPM RAM block 548 stores the LBA-PBA mapping information (otherwise herein referred to as translation table, mapping table, mapping information, or table) under the control of SPM control block 546. This mapping can be kept also in the non-volatile memory. Alternatively, the SPM RAM block 548 may be located outside of the controller, such as shown in
The RAM memory is arranged to be addressable by the same address as the LBA provided by the host. Each such addressable location in the RAM includes a field which holds the physical address of the data in the nonvolatile mass storage expected by the host.
Ultimately, the way in which a block is addressed in nonvolatile memory is by a virtual logical block address (VLBA), which is a modified LBA, for each block. The way in which a sector is addressed within each block is by the use of a virtual physical block address (VPBA). The VPBA locations are for storing information generally representing a PBA value corresponding to a particular LBA value.
In operation, the host 502 writes and reads information from and to the memory unit 508 during for example, the performance of a read or write operation through the controller 506. In so doing, the host 502 provides an LBA to the controller 506 through the host signals 504. The LBA is received by the host interface block 520. Under the direction of the microprocessor block 524, the LBA is ultimately provided to the space manager block 544 for translation to a PBA and storage thereof, as will be discussed in further detail later.
Under the direction of the microprocessor block 524, data and other information are written into or read from a storage area, identified by the PBA, within one of the flash memory devices 510-512 through the flash controller block 532. The information stored within the flash memory devices may not be overwritten with new information without first being erased, as earlier discussed. On the other hand, erasure of a block of information (every time prior to being written), is a very time and power consuming measure. This is sometimes referred to as erase-before-write operation. The preferred embodiment avoids such an operation by continuously, yet efficiently, moving a sector (or multiple sectors) of information, within a block, that is being re-written from a PBA location within the flash memory to an unused PBA location within the memory unit 508 thereby avoiding frequent erasure operations. A block of information may be comprised of more than one sector such as 16 or 32 sectors. A block of information is further defined to be an individually-erasable unit of information. In the past, prior art systems have moved a block stored within flash memory devices that has been previously written into a free (or unused) location within the flash memory devices. Such systems however, moved an entire block even when only one sector of information within that block was being re-written. In other words, there is waste of both storage capacity within the flash memory as well as waste of time in moving an entire block's contents when less than the total number of sectors within the block are being re-written. The preferred embodiments of the present invention, as discussed herein, allow for “moves” of less than a block of information thereby decreasing the number of move operations of previously-written sectors, consequently, decreasing the number of erase operations.
Although the present invention has been described in terms of specific embodiments it is anticipated that alterations and modifications thereof will no doubt become apparent to those skilled in the art. It is therefore intended that the following claims be interpreted as covering all such alterations and modification as fall within the true spirit and scope of the invention.
This application is a continuation-in-part of my prior U.S. patent application Ser. No. 09/620,544 now U.S. Pat. No. 6,978,342, entitled “Moving Sectors Within A Block of Information In A Flash Memory Mass Storage Architecture” filed Jul. 21, 2000 and issued on Dec. 20, 2005, which is a continuation of U.S. patent application Ser. No. 09/264,340, now U.S. Pat. No. 6,145,051, filed on Mar. 8, 1999 issued on Nov. 7, 2000 and entitled “Moving Sectors Within A Block of Information In A Flash Memory Mass Storage Architecture”, which is a continuation of a prior application Ser. No. 08/831,266, filed on Mar. 31, 1997, now U.S. Pat. No. 5,907,856, issued on May 25, 1999, entitled “Moving Sectors Within A Block of Information In A Flash Memory Mass Storage Architecture,” which is a continuation-in-part of prior application Ser. No. 08/509,706, filed Jul. 31, 1995, now U.S. Pat. No. 5,845,313, issued on Dec. 1, 1998, entitled “Direct Logical Block Addressing Flash Memory Mass Storage Architecture.” U.S. Pat. Nos. 5,907,856 and 5,845,313 are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4099069 | Cricchi et al. | Jul 1978 | A |
4130900 | Watanabe | Dec 1978 | A |
4210959 | Wozniak | Jul 1980 | A |
309627 | Tabata | Jan 1982 | A |
4355376 | Gould | Oct 1982 | A |
4398248 | Hsia et al. | Aug 1983 | A |
4405952 | Slakmon | Sep 1983 | A |
4414627 | Nakamura | Nov 1983 | A |
4450559 | Bond et al. | May 1984 | A |
4456971 | Fukuda et al. | Jun 1984 | A |
4468730 | Dodd et al. | Aug 1984 | A |
4473878 | Zolnowsky et al. | Sep 1984 | A |
4476526 | Dodd | Oct 1984 | A |
4498146 | Martinez | Feb 1985 | A |
4525839 | Nozawa et al. | Jun 1985 | A |
4532590 | Wallach et al. | Jul 1985 | A |
4609833 | Gutterman | Sep 1986 | A |
4616311 | Sato | Oct 1986 | A |
4654847 | Dutton | Mar 1987 | A |
4710871 | Belknap et al. | Dec 1987 | A |
4746998 | Robinson et al. | May 1988 | A |
4748320 | Yorimoto et al. | May 1988 | A |
4757474 | Fukushi et al. | Jul 1988 | A |
4774700 | Satoh et al. | Sep 1988 | A |
4780855 | Iida et al. | Oct 1988 | A |
4788665 | Fukuda et al. | Nov 1988 | A |
4797543 | Watanabe | Jan 1989 | A |
4800520 | Iijima | Jan 1989 | A |
4829169 | Watanabe | May 1989 | A |
4843224 | Ohta et al. | Jun 1989 | A |
4896262 | Wayama et al. | Jan 1990 | A |
4914529 | Bonke | Apr 1990 | A |
4920518 | Nakamura et al. | Apr 1990 | A |
4924331 | Robinson et al. | May 1990 | A |
4943745 | Watanabe et al. | Jul 1990 | A |
4953122 | Williams | Aug 1990 | A |
4970642 | Yamamura | Nov 1990 | A |
4970727 | Miyawaki et al. | Nov 1990 | A |
5070474 | Tuma et al. | Dec 1991 | A |
5093785 | Iijima | Mar 1992 | A |
5168465 | Harari | Dec 1992 | A |
5198380 | Harari | Mar 1993 | A |
5200959 | Gross et al. | Apr 1993 | A |
5218695 | Noveck et al. | Jun 1993 | A |
5220518 | Haq | Jun 1993 | A |
5226168 | Kobayashi et al. | Jul 1993 | A |
5227714 | Lou | Jul 1993 | A |
5253351 | Yamamoto et al. | Oct 1993 | A |
5267218 | Elbert | Nov 1993 | A |
5268318 | Harari | Dec 1993 | A |
5268870 | Harari | Dec 1993 | A |
5270979 | Harari et al. | Dec 1993 | A |
5293560 | Harari | Mar 1994 | A |
5297148 | Harari et al. | Mar 1994 | A |
5303198 | Adachi et al. | Apr 1994 | A |
5305276 | Uenoyama | Apr 1994 | A |
5305278 | Inoue | Apr 1994 | A |
5315541 | Harari et al. | May 1994 | A |
5315558 | Hag | May 1994 | A |
5329491 | Brown et al. | Jul 1994 | A |
5337275 | Garner | Aug 1994 | A |
5341330 | Wells et al. | Aug 1994 | A |
5341339 | Wells | Aug 1994 | A |
5341341 | Fukuzo | Aug 1994 | A |
5353256 | Fandrich et al. | Oct 1994 | A |
5357475 | Hasbun et al. | Oct 1994 | A |
5359569 | Fujita et al. | Oct 1994 | A |
5365127 | Manley | Nov 1994 | A |
5369615 | Harari et al. | Nov 1994 | A |
5371702 | Nakai et al. | Dec 1994 | A |
5381539 | Yanai et al. | Jan 1995 | A |
5382839 | Shinohara | Jan 1995 | A |
5384743 | Rouy | Jan 1995 | A |
5388083 | Assar et al. | Feb 1995 | A |
5396468 | Harari et al. | Mar 1995 | A |
5404485 | Ban | Apr 1995 | A |
5406527 | Honma | Apr 1995 | A |
5412612 | Oyama | May 1995 | A |
5418752 | Harari et al. | May 1995 | A |
5422842 | Cernea et al. | Jun 1995 | A |
5422856 | Sasaki et al. | Jun 1995 | A |
5428621 | Mehrotra et al. | Jun 1995 | A |
430682 | Ishikawa et al. | Jul 1995 | A |
5430859 | Norman et al. | Jul 1995 | A |
5431330 | Wieres | Jul 1995 | A |
5434825 | Harari | Jul 1995 | A |
5438573 | Mangan et al. | Aug 1995 | A |
465338 | Clay | Nov 1995 | A |
5465235 | Miyamoto | Nov 1995 | A |
5471478 | Mangan et al. | Nov 1995 | A |
5473765 | Gibbons et al. | Dec 1995 | A |
5479638 | Assar et al. | Dec 1995 | A |
5485595 | Assar et al. | Jan 1996 | A |
5490117 | Oda et al. | Feb 1996 | A |
5495442 | Cernea et al. | Feb 1996 | A |
5504760 | Harari et al. | Apr 1996 | A |
5508971 | Cernea et al. | Apr 1996 | A |
5513138 | Manabe et al. | Apr 1996 | A |
5515333 | Fujita et al. | May 1996 | A |
5519847 | Fandrich et al. | May 1996 | A |
5523980 | Sakui et al. | Jun 1996 | A |
5524230 | Sakaue et al. | Jun 1996 | A |
5530673 | Tobita et al. | Jun 1996 | A |
5530828 | Kaki et al. | Jun 1996 | A |
5530938 | Akasaka et al. | Jun 1996 | A |
5532962 | Auclair et al. | Jul 1996 | A |
5532964 | Cernea et al. | Jul 1996 | A |
5534456 | Yuan et al. | Jul 1996 | A |
5535328 | Harari et al. | Jul 1996 | A |
5541551 | Brehner et al. | Jul 1996 | A |
5544118 | Harari | Aug 1996 | A |
5544356 | Robinson et al. | Aug 1996 | A |
5552698 | Tai et al. | Sep 1996 | A |
5553261 | Hasbun et al. | Sep 1996 | A |
5554553 | Harari | Sep 1996 | A |
5563825 | Cernea et al. | Oct 1996 | A |
5566314 | DeMarco et al. | Oct 1996 | A |
5568439 | Harari | Oct 1996 | A |
5572466 | Sukegawa | Nov 1996 | A |
5579502 | Konishi et al. | Nov 1996 | A |
5581723 | Hasbun et al. | Dec 1996 | A |
5583812 | Harari | Dec 1996 | A |
5592415 | Kato et al. | Jan 1997 | A |
5592420 | Cernea et al. | Jan 1997 | A |
5596526 | Assar et al. | Jan 1997 | A |
5598370 | Niisima et al. | Jan 1997 | A |
5602987 | Harari et al. | Feb 1997 | A |
5603001 | Sukegawa et al. | Feb 1997 | A |
5606660 | Estakhri et al. | Feb 1997 | A |
5611067 | Okamoto et al. | Mar 1997 | A |
5640528 | Harney et al. | Jun 1997 | A |
5642312 | Harari | Jun 1997 | A |
5648929 | Miyamoto | Jul 1997 | A |
5663901 | Wallace et al. | Sep 1997 | A |
5693570 | Cernea et al. | Dec 1997 | A |
5712819 | Harari | Jan 1998 | A |
5719808 | Harari et al. | Feb 1998 | A |
723990 | Roohparvar | Mar 1998 | A |
5734567 | Griffiths et al. | Mar 1998 | A |
5745418 | Ma et al. | Apr 1998 | A |
758100 | Odisho | May 1998 | A |
5754567 | Norman | May 1998 | A |
5757712 | Nagel et al. | May 1998 | A |
768195 | Nakamura et al. | Jun 1998 | A |
5761117 | Uchino et al. | Jun 1998 | A |
5768190 | Tanaka et al. | Jun 1998 | A |
5773901 | Kanter | Jun 1998 | A |
5778418 | Auclair et al. | Jul 1998 | A |
5781478 | Takeeuchi et al. | Jul 1998 | A |
5787445 | Daberko | Jul 1998 | A |
5787484 | Norman | Jul 1998 | A |
RE35881 | Barrett et al. | Aug 1998 | E |
5799168 | Ban | Aug 1998 | A |
809515 | Kaki et al. | Sep 1998 | A |
5802551 | Komatsu et al. | Sep 1998 | A |
5809558 | Matthews et al. | Sep 1998 | A |
5809560 | Schneider | Sep 1998 | A |
5818350 | Estakhri et al. | Oct 1998 | A |
5818781 | Estakhri et al. | Oct 1998 | A |
5822245 | Gupta et al. | Oct 1998 | A |
5822252 | Lee et al. | Oct 1998 | A |
5822781 | Wells et al. | Oct 1998 | A |
5831929 | Manning | Nov 1998 | A |
5835935 | Estakhri et al. | Nov 1998 | A |
5838614 | Estakhri et al. | Nov 1998 | A |
5845313 | Estakhri et al. | Dec 1998 | A |
5847552 | Brown | Dec 1998 | A |
5860083 | Sukegawa | Jan 1999 | A |
5860124 | Matthews et al. | Jan 1999 | A |
5862099 | Gannage et al. | Jan 1999 | A |
5890192 | Lee et al. | Mar 1999 | A |
5901086 | Wang et al. | May 1999 | A |
5907856 | Estakhri et al. | May 1999 | A |
5909586 | Anderson | Jun 1999 | A |
5920884 | Jennings, III et al. | Jul 1999 | A |
5924113 | Estakhri et al. | Jul 1999 | A |
5928370 | Asnaashari | Jul 1999 | A |
5930815 | Estakhri et al. | Jul 1999 | A |
5933368 | Ma et al. | Aug 1999 | A |
5933846 | Endo | Aug 1999 | A |
5936971 | Harari et al. | Aug 1999 | A |
5937425 | Ban | Aug 1999 | A |
5953737 | Estakhri et al. | Sep 1999 | A |
5956473 | Ma et al. | Sep 1999 | A |
5959926 | Jones et al. | Sep 1999 | A |
5966727 | Nishino et al. | Oct 1999 | A |
5986933 | Takeuchi et al. | Nov 1999 | A |
5987563 | Itoh et al. | Nov 1999 | A |
5987573 | Hiraka | Nov 1999 | A |
5991849 | Yamada et al. | Nov 1999 | A |
6000006 | Bruce et al. | Dec 1999 | A |
6011322 | Hiraka | Jan 2000 | A |
6011323 | Camp | Jan 2000 | A |
6018265 | Keshtbod | Jan 2000 | A |
6021408 | Ledain et al. | Feb 2000 | A |
6026020 | Matsubara et al. | Feb 2000 | A |
6026027 | Terrell, II et al. | Feb 2000 | A |
6034897 | Estakhri et al. | Mar 2000 | A |
6035357 | Sakaki | Mar 2000 | A |
6040997 | Estakhri | Mar 2000 | A |
6041001 | Estakhri | Mar 2000 | A |
6047352 | Lakhani et al. | Apr 2000 | A |
6055184 | Acharya et al. | Apr 2000 | A |
6055188 | Takeuchi et al. | Apr 2000 | A |
6069827 | Sinclair | May 2000 | A |
6072796 | Christensen et al. | Jun 2000 | A |
6076137 | Asnaashari | Jun 2000 | A |
6081447 | Lofgren et al. | Jun 2000 | A |
6081878 | Estakhri et al. | Jun 2000 | A |
6084483 | Keshtbod | Jul 2000 | A |
6097666 | Sakui et al. | Aug 2000 | A |
6115785 | Estakhri et al. | Sep 2000 | A |
6122195 | Estakhri et al. | Sep 2000 | A |
6125424 | Komatsu et al. | Sep 2000 | A |
6125435 | Estakhri et al. | Sep 2000 | A |
6128695 | Estakhri et al. | Oct 2000 | A |
6134145 | Wong | Oct 2000 | A |
6134151 | Estakhri et al. | Oct 2000 | A |
6141249 | Estakhri et al. | Oct 2000 | A |
6145051 | Estakhri et al. | Nov 2000 | A |
6151247 | Estakhri et al. | Nov 2000 | A |
6172906 | Estakhri et al. | Jan 2001 | B1 |
6173362 | Yoda | Jan 2001 | B1 |
6181118 | Meehan et al. | Jan 2001 | B1 |
6182162 | Estakhri et al. | Jan 2001 | B1 |
6202138 | Estakhri et al. | Mar 2001 | B1 |
6222762 | Guterman et al. | Apr 2001 | B1 |
6223308 | Estakhri et al. | Apr 2001 | B1 |
6226708 | McGoldrick et al. | May 2001 | B1 |
6230234 | Estakhri et al. | May 2001 | B1 |
6262918 | Estakhri et al. | Jul 2001 | B1 |
6272610 | Katayama et al. | Aug 2001 | B1 |
6275436 | Tobita et al. | Aug 2001 | B1 |
6279069 | Robinson et al. | Aug 2001 | B1 |
6279114 | Toombs et al. | Aug 2001 | B1 |
6282605 | Moore | Aug 2001 | B1 |
6285607 | Sinclair | Sep 2001 | B1 |
6327639 | Asnaashari | Dec 2001 | B1 |
6345367 | Sinclair | Feb 2002 | B1 |
6374337 | Estakhri | Apr 2002 | B1 |
6385667 | Estakhri et al. | May 2002 | B1 |
6393513 | Estakhri et al. | May 2002 | B2 |
6397314 | Estakhri et al. | May 2002 | B1 |
6411546 | Estakhri et al. | Jun 2002 | B1 |
6426893 | Conley et al. | Jul 2002 | B1 |
6467021 | Sinclair | Oct 2002 | B1 |
6490649 | Sinclair | Dec 2002 | B2 |
6567307 | Estakhri | May 2003 | B1 |
6578127 | Sinclair | Jun 2003 | B1 |
6587382 | Estakhri et al. | Jul 2003 | B1 |
6711059 | Sinclair et al. | Mar 2004 | B2 |
6721819 | Estakhri et al. | Apr 2004 | B2 |
6721843 | Estakhri | Apr 2004 | B1 |
6725321 | Sinclair et al. | Apr 2004 | B1 |
6728851 | Estakhri et al. | Apr 2004 | B1 |
6751155 | Gorobets | Jun 2004 | B2 |
6757800 | Estakhri et al. | Jun 2004 | B1 |
6772274 | Estakhri | Aug 2004 | B1 |
6813678 | Sinclair et al. | Nov 2004 | B1 |
6898662 | Gorobets | May 2005 | B2 |
6901499 | Aasheim et al. | May 2005 | B2 |
6912618 | Estakhri et al. | Jun 2005 | B2 |
6950918 | Estakhri | Sep 2005 | B1 |
6957295 | Estakhri | Oct 2005 | B1 |
6973519 | Estakhri et al. | Dec 2005 | B1 |
6978342 | Estakhri et al. | Dec 2005 | B1 |
7000064 | Payne et al. | Feb 2006 | B2 |
7085879 | Aasheim et al. | Aug 2006 | B2 |
20030033471 | Lin et al. | Feb 2003 | A1 |
20030046482 | Venkiteswaran | Mar 2003 | A1 |
20030135688 | Tai et al. | Jul 2003 | A1 |
20030163630 | Aasheim et al. | Aug 2003 | A1 |
20030163631 | Aasheim et al. | Aug 2003 | A1 |
20030163633 | Aasheim et al. | Aug 2003 | A1 |
20040083335 | Gonzalez et al. | Apr 2004 | A1 |
Number | Date | Country |
---|---|---|
0 557 723 | Jan 1987 | AU |
0 220 718 | May 1987 | EP |
0 243 503 | Nov 1987 | EP |
0 392 895 | Oct 1990 | EP |
0 424 191 | Apr 1991 | EP |
0 489 204 | Jun 1992 | EP |
0 522 780 | Jan 1993 | EP |
0 522 780 | Jan 1993 | EP |
0 544 252 | Jun 1993 | EP |
0 613 151 | Aug 1994 | EP |
0 617 363 | Sep 1994 | EP |
0 619 541 | Oct 1994 | EP |
0 663 636 | Jul 1995 | EP |
0 686 976 | Dec 1995 | EP |
0 897 579 | Jul 2000 | EP |
0 891 580 | Nov 2000 | EP |
0 896 699 | Nov 2000 | EP |
0 852 766 | May 2001 | EP |
0 852 765 | Sep 2001 | EP |
0 722 585 | May 2002 | EP |
0 910 826 | Jun 2002 | EP |
0 691 008 | Nov 2002 | EP |
0 861 468 | Apr 2003 | EP |
0 978 040 | May 2004 | EP |
1 157 328 | May 2005 | EP |
1 548 599 | Jun 2005 | EP |
93 01908 | Aug 1993 | FR |
2 251 323 | Jul 1992 | GB |
2 291 990 | Feb 1996 | GB |
2 291 991 | Jul 1996 | GB |
2 291 991 | Jul 1996 | GB |
2 297 637 | Jul 1996 | GB |
2 304 428 | Mar 1997 | GB |
2 351 822 | Jan 2003 | GB |
2 384 337 | Jul 2003 | GB |
2 382 883 | Oct 2005 | GB |
2 384 338 | Nov 2005 | GB |
2 384 072 | Dec 2005 | GB |
2 411 499 | Feb 2006 | GB |
117881 | May 2003 | IS |
58-215794 | Dec 1983 | JP |
58-215795 | Dec 1983 | JP |
59-45695 | Mar 1984 | JP |
59-162695 | Sep 1984 | JP |
60-212900 | Oct 1985 | JP |
61-96598 | May 1986 | JP |
62-283496 | Dec 1987 | JP |
62-283497 | Dec 1987 | JP |
63-183700 | Jul 1988 | JP |
1-138694 | May 1989 | JP |
3-228377 | Oct 1991 | JP |
4-57295 | Feb 1992 | JP |
4-254994 | Sep 1992 | JP |
4-268284 | Sep 1992 | JP |
4-278297 | Oct 1992 | JP |
4-332999 | Nov 1992 | JP |
5-128877 | May 1993 | JP |
5-282883 | Oct 1993 | JP |
6-36578 | Feb 1994 | JP |
6-124175 | May 1994 | JP |
6-124231 | May 1994 | JP |
6-131889 | May 1994 | JP |
6-132747 | May 1994 | JP |
6-149395 | May 1994 | JP |
6-266596 | Sep 1994 | JP |
7-93499 | Apr 1995 | JP |
7-311708 | Nov 1995 | JP |
8-18018 | Jan 1996 | JP |
8-69696 | Mar 1996 | JP |
9-147581 | Jun 1997 | JP |
1388877 | Apr 1988 | SU |
1408439 | Jul 1988 | SU |
1515164 | Oct 1989 | SU |
1541619 | Feb 1990 | SU |
1573458 | Jun 1990 | SU |
1686449 | Oct 1991 | SU |
WO 8400628 | Feb 1984 | WO |
WO 9420906 | Sep 1994 | WO |
Number | Date | Country | |
---|---|---|---|
20050055497 A1 | Mar 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09264340 | Mar 1999 | US |
Child | 09620544 | US | |
Parent | 08831266 | Mar 1997 | US |
Child | 09264340 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09620544 | Jul 2000 | US |
Child | 10741129 | US | |
Parent | 08509706 | Jul 1995 | US |
Child | 08831266 | US |