SRAM Cache & Flash Micro-Controller with Differential Packet Interface
Claim Score by NHIP
Abstract
A flash microcontroller has a Static Random-Access-Memory (SRAM) buffer that stores several blocks of boot code read from a flash memory. The SRAM buffer also operates as a cache of flash data after booting is complete. Cache read and write hits use the SRAM cache rather than flash memory, while old cache lines and read misses access the flash memory. Both the external host and the microcontroller are booted from boot code buffered in the SRAM buffer. A boot-loader state machine reads the flash ID and programs flash parameter registers with timing parameters for the flash memory. The flash microcontroller uses a differential interface to the external host, with a differential transceiver and a differential serial interface. Frame, packet, and encoded clock processing is also performed by the serial interface.

Term
Term ended
Projected expiry passed 24 September 2020, 6 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
20 claims: 2 independent, 18 dependent
- 1A dual-boot caching flash microcontroller comprising:a flash bus for connecting to a flash-memory chip, the flash bus carrying address, data, and commands to the flash-memory chip;microcontroller boot code stored in the flash-memory chip in a first block;host boot code stored in the flash-memory chip in a host-boot block;a static random-access memory (SRAM) buffer;a central processing unit (CPU) for executing instructions read from the SRAM buffer;a host interface for connecting to an external host over a host bus;a flash-memory interface for generating flash-control signals and for buffering commands, addresses, and data to the flash bus, and for reading and writing the SRAM buffer;a boot-loader state machine, activated by a reset signal, for activating the flash-memory interface to read the microcontroller boot code from the flash-memory chip, the boot-loader state machine writing the microcontroller boot code to the first block in the SRAM buffer;a mapping table storing mapping entries each having a logical address from the external host and a physical address of corresponding data stored in the flash-memory chip;a tag portion of the SRAM buffer for storing tag portions of logical addresses from the external host;and a data portion of the SRAM buffer for caching data for locations in the flash-memory chip identified by the physical address in a matching entry in the mapping table, the matching entry also storing the logical address having a tag portion in a same cache line as data in the data portion.
- 13Broadest claimClaim Score 42, average(NHIP)A differential flash microcontroller comprising:external host differential interface means for connecting to an external host by transmission of differential data;flash bus means for connecting to a flash memory, the flash bus means carrying address, data, and commands to the flash memory;flash-memory controller means for generating flash-control signals and for buffering commands, addresses, and data to the flash bus means;volatile buffer means for storing instructions in a volatile memory;processor means for fetching and executing instructions from the volatile buffer means;cache means, using the volatile buffer means for storage, for caching data read from the flash memory and for caching data from the external host for writing to the flash memory;and differential transceiver means for physically transmitting differential data over differential lines to the external host, and for receiving differential data sent by the external host over the differential lines;wherein the differential transceiver means is coupled to the external host differential interface means, whereby differential data from the external host is cached in the volatile buffer means before writing to the flash memory.
Independent claims2
90 paragraphs in 6 sections, as filed
RELATED APPLICATION
0001This application is a continuation-in-part (CIP) of the co-pending application Ser. No. 11/773,830 filed Jul. 5, 2007, for “Molding Method to Manufacture Single-Chip On-Board Device”, which is a CIP of U.S. patent application for “Single Chip Multi-Media Card/Secure Digital (MMC/SD) Controller Reading Power-on Boot Code from Integrated Flash Memory for User Storage”, U.S. application Ser. No. 11/309,594 filed Aug. 28, 2006, which is a CIP of “Single-Chip USB Controller Reading Power-on Boot Code from Integrated Flash Memory for User Storage”, U.S. application Ser. No. 10/707,277, filed Dec. 2, 2003, now U.S. Pat. No. 7,103,684.
0002This is also a continuation-in-part (CIP) of the co-pending application for “Electronic Data Storage Medium with Fingerprint Verification Capability”, U.S. Ser. No. 11/624,667 filed Jan. 18, 2007, which is a divisional application of U.S. patent application Ser. No. 09/478,720, filed on Jan. 6, 2000, which has been petitioned to claim the benefit of CIP status of one of inventor's earlier U.S. patent applications for “Integrated Circuit Card with Fingerprint Verification Capability”, U.S. application Ser. No. 09/366,976, filed Aug. 4, 1999, now issued as U.S. Pat. No. 6,547,130.
0003This application is related to “Flash memory device and architecture with multi level cells”, U.S. Ser. No. 10/800,228, filed Mar. 12, 2004, now U.S. Pat. No. 7,082,056, and “Flash drive/reader with serial-port controller and flash-memory controller mastering a second RAM-buffer bus parallel to a CPU bus”, U.S. Ser. No. 10/605,140, filed Sep. 10, 2003, now U.S. Pat. No. 6,874,044.
FIELD OF THE INVENTION
0004This invention relates to flash micro-controllers, and more particularly to flash microcontrollers with a cache SRAM for booting an external device over a differential interface.
BACKGROUND OF THE INVENTION
0005Hard disks and other mass storage devices are being replaced or supplemented with solid-state mass storage such as flash memories. Flash memories use non-volatile memory cells such as electrically-erasable programmable read-only memory, (EEPROM), but are not randomly accessible at the byte level. Instead, whole pages or sectors of 512 bytes or more are read or written together as a single page. NAND flash memory is commonly used for data storage of blocks. Pages in the same block may have to be erased together, and limitations on writing may exist, such as only being allowed to write each page once between erases.
0006Program code is often stored in randomly-accessible memory such as a ROM or a NOR flash memory. Since NOR flash memory is byte-addressable, NOR flash can store code that can be executed. Byte-addressing is needed to execute code, since branch and jump instructions may have a target that is at a random location that must be fetched next. The target may be byte-addressable. Since boot routines execute instructions one at a time, rather than a whole page at a time, randomly-accessible memory is needed for boot-code execution.
0007Small portable devices such as personal digital assistants (PDA), multi-function cell phones, digital cameras, music players, etc. have a central processing unit (CPU) or microcontroller that must be booted just as a PC or host CPU must be booted. These small devices are often quite cost and size sensitive. Having a NOR flash or ROM may increase the size and cost of these portable devices.
0008NAND flash memory is less expensive than NOR flash memory, and thus preferable from a cost standpoint. NAND flash memory may already be present on some devices such as cell phones or music players as the primary mass storage memory. It is thus desirable to use NAND flash memory to store boot code.
0009Computers once required a complex series of steps to initialize and make them ready to run programs. Instructions for bootstrapping the computer were loaded into the computer after power-on, such as by manually toggling switches representing the 1's and 0's of bootstrap instructions on the front panel. The computer was brought from a dead state into a useful state, like lifting the computer up by its own bootstraps.
0010More recently, computers still execute a complex sequence of instructions after power-on to boot the computer and load its operating system (OS). The initial instructions may reside in a read-only memory (ROM), along with a personal computer's Basic Input-Output System (BIOS). The operating system such as Windows may be loaded from the hard disk, and when booting is complete the OS can execute user programs. Various system checks such as peripheral device and memory detection and sizing can be performed during booting.
0011Both the flash device and the host must be booted at some point in time. Typically, the host is booted from its hard disk before the flash device is inserted into the host. The flash device is then booted when power from the host reaches the flash device.
0012Cache memories are commonly used by host computers. A cache of the flash memory is desirable. Using this cache memory for booting both the flash-memory device and the external host is also desirable.
0013What is desired is a flash-memory microcontroller that is bootable from boot code stored in flash memory. It is further desired to boot both the flash microcontroller and the host. A flash microcontroller with a differential interface to the external host that is used to transfer boot code to the external host is also desired.
BRIEF DESCRIPTION OF THE DRAWINGS
0014<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a flash microcontroller with a differential interface to an external host that receives host boot code from a boot-loader SRAM for dual-device booting.
0015<figref idref="DRAWINGS">FIG. 2</figref> shows a flash device in more detail.
0016<figref idref="DRAWINGS">FIG. 3</figref> shows a flash memory.
0017<figref idref="DRAWINGS">FIG. 4</figref> shows a differential serial interface for a flash microcontroller in more detail.
0018<figref idref="DRAWINGS">FIG. 5</figref> shows the differential receive path in more detail.
0019<figref idref="DRAWINGS">FIG. 6</figref> shows the differential transmit path in more detail.
0020FIGS. <b>7</b>A-B are flowcharts of read cache operations of the SRAM buffer.
0021FIGS. <b>8</b>A-B are flowcharts of write cache operations of the SRAM buffer.
0022<figref idref="DRAWINGS">FIG. 9</figref> is a block diagram of a Secure-Digital (SD) flash microcontroller.
0023<figref idref="DRAWINGS">FIG. 10</figref> is a diagram showing multiple flash devices ganged together in a solid-state-disk array.
DETAILED DESCRIPTION
0024The present invention relates to an improvement in flash microcontrollers. The following description is presented to enable one of ordinary skill in the art to make and use the invention as provided in the context of a particular application and its requirements. Various modifications to the preferred embodiment will be apparent to those with skill in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the particular embodiments shown and described, but is to be accorded the widest scope consistent with the principles and novel features herein disclosed.
0025<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a flash microcontroller with a differential interface to an external host that receives host boot code from a boot-loader SRAM for dual-device booting. Flash device <b>140</b> is plugged into host <b>142</b> and powers up when plugged in.
0026Flash device <b>140</b> generates internal supply voltages from an external power supply input using voltage pump <b>144</b>. Central Processing Unit (CPU) <b>146</b> processes commands from host <b>142</b> which update operating registers <b>162</b> which control operation of flash memory controller <b>148</b>. Operating registers <b>162</b>, CPU <b>146</b>, and flash memory controller <b>148</b> may be part of microcontroller <b>168</b>.
0027A high-speed differential interface is placed between host <b>142</b> and flash device <b>140</b>. Commands, addresses, and data are received as serial data by differential transceiver <b>145</b>, and responses and data are sent back to host <b>142</b> by differential transceiver <b>145</b>.
0028Differential serial interface <b>143</b> receives a serial stream of data from differential transceiver <b>145</b> and extracts commands, data, and addresses from packets sent over the differential interface, and performs transaction handshaking or other requirements of the differential protocol. Differential serial interface <b>143</b> also generates headers, checksums, and divides data into multiple packets for transmission over the differential interface to host <b>142</b> by differential transceiver <b>145</b>.
0029Flash interface <b>150</b> provides a lower-level memory interface to multi-level-cell MLC flash memory <b>152</b>, which may contain one or more flash-memory chips, and to SRAM. SRAM buffer <b>154</b> may contain block and page buffers of data that is stored in MLC flash memory <b>152</b>, such as boot code. SRAM buffer <b>154</b> stores both blocks and smaller pages. Pages are stored in page buffer <b>160</b>.
0030Flash interface <b>150</b> generates signals for address, data, and command buses and associated control signals to the physical memory devices, both flash and SRAM. A SRAM cache of the data in MLC flash memory <b>152</b> is also provided by SRAM data cache <b>158</b>, with its associated tags stored in SRAM tags <b>156</b>. Requests that match SRAM tags <b>156</b> may be accessed in SRAM data cache <b>158</b>, which has a faster access time than MLC flash memory <b>152</b>.
0031<figref idref="DRAWINGS">FIG. 2</figref> shows a flash device in more detail. Microcontroller <b>168</b> receives high-level requests from a host using a bus protocol and generates lower-level memory-access commands that are sent to flash interface <b>150</b>. Flash interface reads, writes, and erases flash memory in MLC flash memory <b>152</b>, but can also access data more quickly using SRAM buffers <b>154</b>. SRAM buffers <b>154</b> is an array of SRAM that can be partitioned into a cache with SRAM tags <b>156</b> and SRAM data cache <b>158</b>.
0032SRAM buffers <b>154</b> can also include buffers used to store boot code that is read from MLC flash memory <b>152</b>. Blocks A, B, C can store blocks of boot or operating system (OS) code read from MLC flash memory <b>152</b>. When power-on is detected by power-on reset circuit <b>164</b>, boot-loader state machine <b>172</b> can be activated. Boot-loader state machine <b>172</b> configures flash interface <b>150</b> by reading parameters from a flash ID and programming these flash parameters into flash parameter registers <b>166</b> for use by flash interface <b>150</b>. These flash parameters are device-specific, and include device specifications such as the density and width of MLC flash memory <b>152</b>, the number of cycles needed for access, and other timing requirements that must be met. Once boot-loader state machine <b>172</b> configures flash interface <b>150</b>, boot-loader state machine <b>172</b> activates flash interface <b>150</b> to read the first page of the first block from MLC flash memory <b>152</b>. This first page contains system pointers to boot code in the flash. These pointers are flowed to locate instructions to jump to in the initial boot code, or in extended boot code. Additional boot code, control programs, and OS images are successively read from MLC flash memory <b>152</b> and loaded into SRAM buffers <b>154</b> for execution by the CPU in microcontroller <b>168</b>. Once this CPU is booted and running its OS, more boot code for the external host may be read from MLC flash memory <b>152</b> and sent to the host, so that the host can be booted.
0033Once the host is booted, mappings from host (logical) addresses to flash (physical) addresses may be stored in mapping table <b>170</b>. Flash interface <b>150</b> uses these mappings in mapping table <b>170</b> to locate physical pages in MLC flash memory <b>152</b> that correspond to the logical addresses from host requests.
0034<figref idref="DRAWINGS">FIG. 3</figref> shows a flash memory. Flash memory <b>152</b> may include some or all of the blocks shown in <figref idref="DRAWINGS">FIG. 3</figref>, and other blocks, or some of the functions may be performed by a separate flash controller. Flash memory <b>152</b> may be a separate flash chip or may be integrated with the flash microcontroller.
0035Flash-memory MLC cells <b>110</b> is an array of rows and columns of multi-level cell (MLC) EEPROM transistors that can store multiple bits of data in each memory cell using different voltage levels. The MLC cell's voltage levels are sensed by sense amplifiers <b>134</b> when a read current is drawn through a selected row of MLC cells. Word line drivers <b>128</b> drives one row or word line in MLC cells <b>110</b> while the other rows are disabled. A row portion of an address applied to address decoder <b>112</b> is further decoded by X decoder <b>124</b> to select which row to activate using word line drivers <b>128</b>.
0036A column portion of the address applied to address decoder <b>112</b> is further decoded by Y decoder <b>132</b> to select a group of bit lines for data access. Data buffers <b>126</b> may be a limited width, such as 64 bits, while MLC cells may have a larger number of bit lines, such as 8×64 columns. One of the 8 columns may be selected by Y decoder <b>132</b> for connection to data buffers <b>126</b>.
0037During writing, external data is collected by data buffers <b>126</b> and applied to write drivers <b>136</b>. Write drivers <b>136</b> generate voltages or currents so that the set currents are applied to bit lines for MLC cells that are to be written with a 1, while reset currents are applied to bit lines for MLC cells to be reset to 0.
0038State machines <b>122</b> can activate control logic <b>120</b> to enable and disable write drivers <b>136</b> after programming or erasure. State machines <b>122</b> can generate various internal control signals at appropriate times, such as strobes to pre-charge bit lines and latch sensed data into data buffers <b>126</b>.
0039Command register <b>114</b> can receive commands that are decoded and processed by control logic <b>120</b>. External control signals such as read/write, data strobes, and byte enables may also be received in some embodiments. Command register <b>114</b> may be replaced by a command decoder in some embodiments. Power management unit <b>116</b> can power down blocks to reduce power consumption, such as when the MLC flash memory is de-selected. Since MLC cells <b>110</b> are non-volatile, data is retained when power is disconnected.
0040There may be several arrays of MLC cells <b>110</b> and associated logic on a large MLC flash chip. An array-select portion of the address can be decoded by address decoders <b>112</b> to enable one of the many arrays or blocks on the MLC flash memory or chip.
0041<figref idref="DRAWINGS">FIG. 4</figref> shows a differential serial interface for a flash microcontroller in more detail. Host serializing unit <b>36</b> connects to differential transceiver <b>145</b> (<figref idref="DRAWINGS">FIG. 1</figref>) while receive hold register <b>58</b> and transmit hold register <b>68</b> connect to microcontroller <b>168</b>. Differential serial interface <b>143</b> operates between differential transceiver <b>145</b> to host <b>144</b>, and microcontroller <b>168</b>.
0042Host serializing unit <b>36</b> includes receive deserializer <b>44</b> which forms parallel data from the serial data stream received from the host, and transmit serializer <b>48</b>, which converts parallel data into a serial data stream for differential transmission to the host. Status and control registers <b>46</b> controls and reports the status of operation of host serializing unit <b>36</b>.
0043External crystal <b>30</b> provides a clock signal to clock mux <b>40</b>, which selects a clock to apply to delay line phase-locked loop (PLL) <b>42</b>. PLL <b>42</b> generates a clock to read FIFO <b>50</b>, which stores the deserialized data from receive deserializer <b>44</b>. Parallel data is also clocked out of write FIFO <b>60</b> to transmit serializer <b>48</b> by the clock from PLL <b>42</b>.
0044Receive data is processed by NRZI decoder <b>51</b> to remove not-return-to-zero decoding of the differential data. Bit unstuffer <b>52</b> removes stuff bits that were added by the host to fill packets or frames. Receive shift register <b>56</b> then shifts the decoded, unstuffed data into receive hold register <b>58</b> for use by microcontroller <b>168</b>. Receive state control logic <b>54</b> controls operation of the receive path.
0045Transmit state control logic <b>64</b> controls operation of the transmit path. Data from microcontroller <b>168</b> is latched into transmit hold register <b>68</b> and then shifted through transmit shift register <b>66</b> to bit stuffer <b>62</b>, which adds stuffing bits as needed to fill out packets or frames to the protocol-specified size. NRZI encoder <b>61</b> converts the data to not-return-to-zero encoding as differential data. The NRZI data is then stored in write FIFO <b>60</b> for later transmission as differential data. NRZI decoder <b>51</b> and NRZI encoder <b>61</b> can be an 8-10 bit encoder/decoder in some embodiments. Other modifications to NRZI decoder <b>51</b> and NRZI encoder <b>61</b> can be made for use with other protocols such as PCIE, USB 3.0, etc.
0046<figref idref="DRAWINGS">FIG. 5</figref> shows the differential receive path in more detail. A serial stream of data from differential transceiver <b>145</b> is amplified from a small-swing signal to a larger swing by differential detector <b>802</b> and converted to parallel data words by converter <b>804</b>. The clock is extracted or recovered from the data stream by clock separator <b>806</b>. Read-FIFO adjuster <b>810</b> adjusts the timing of data as it is stored into the read FIFO. Sync packet detector <b>812</b> searches for the packet's sync pattern while end of packet detector <b>814</b> searches for end-of-packet markers in the data stream. Frame detector <b>816</b> searches for frame markers.
0047Command and data separator <b>818</b> locates commands in the data stream and separates these commands from the data. Data recovery unit <b>820</b> recovers the protocol data within the data stream, while checksum unit <b>822</b> generates a running checksum or cyclical-redundancy-check (CRC) of the recovered data and compares the checksum to a transmitted checksum to verify the data transmission. The parallel data may then be sent to microcontroller <b>168</b> for use by the flash interface. This parallel data may include addresses, flash commands, and data for the flash interface.
0048<figref idref="DRAWINGS">FIG. 6</figref> shows the differential transmit path in more detail. Parallel transmit data from microcontroller <b>168</b> is latched and a sync packet marker is added by sync packet unit <b>854</b>. Commands and data are mixed together according to the differential protocol by protocol mixer <b>852</b>. Data redundancy such as a CRC or checksum is added by checksum unit <b>850</b>. The CRC or checksum is generated by CRC generator <b>848</b>.
0049Packet boundaries are added by packetizer <b>846</b>, while frame boundaries are added by frame boundary unit <b>842</b> after frames are checked and any frame redundancy or stuff bits are added by frame checker <b>844</b>. Dual-port write FIFO <b>840</b> buffers the data stream and adjusts the flow for stream synchronization. A transmit clock is mixed in with the data stream, and encoding such as NRZI decoding is added by clock mixer <b>836</b>. The parallel data words are converted to serial data by sterilizer <b>834</b> and the serial data is further formatted in the differential, serial format by differential converter <b>832</b>, which creates a small-voltage-swing analog signal for transmission.
0050FIGS. <b>7</b>A-B are flowcharts of read cache operations of the SRAM buffer. The SRAM buffer can be used for blocks of boot code read by the local CPU or the external host CPU during booting. Once booting is completed, some or all of this boot code may not longer be needed. The SRAM buffer could then be used for caching data from the flash memory. Alternately, the size of the SRAM buffer could be large enough for both a cache and for boot-code blocks for boot code storage.
0051In <figref idref="DRAWINGS">FIG. 7A</figref>, a read request of the flash memory is received from the host. The host address is a logical address, and the logical block index (LBI) is extracted from the host logical address, step <b>402</b>. The last 6 bits of the LBI are extracted as the page index, step <b>404</b>. The logical sector index (LSI), which is the lower part of the logical address that does not include the LBI, selects one of the tags in the cache, step <b>406</b>, while the page index selects the row within the cache. The selected tag has a stored tag address that corresponds to the LBI without the page index, and this stored tag is compared to the LBI without the page index, step <b>408</b>, to determine whether an address match has been found.
0052When the address matches, and a valid bit indicates that the cached data is valid, a hit occurs, step <b>410</b>. Then the requested data is read from the data portion of the cache in the SRAM buffer for that page index and selected sector (LSI), step <b>412</b>. The requested data is sent by the microcontroller to the host over the differential interface, and a ready signal is returned to the host, step <b>414</b>.
0053When a hit does not occur, step <b>410</b>, then a cache miss occurs. In <figref idref="DRAWINGS">FIG. 7B</figref>, mapping table <b>170</b> (<figref idref="DRAWINGS">FIG. 2</figref>) is consulted with the logical address to find the physical address in the flash memory, step <b>422</b>. Any old data in the cache line is written back to flash memory, step <b>430</b>. The physical address from mapping table <b>170</b> is used to fetch data from the flash memory, step <b>424</b>. This fetched data is written into the data fields of the cache line, step <b>426</b> and is returned to the host along with the ready signal.
0054Once the write back of the old cache line is completed, step <b>432</b>, then the tag address can be updated with the new address using the LBI without the page index, since the page index selects the line within the cache. The LSI selects which sector-tag within the line to update, step <b>428</b>.
0055FIGS. <b>8</b>A-B are flowcharts of write cache operations of the SRAM buffer. In <figref idref="DRAWINGS">FIG. 8A</figref>, a write request of the flash memory is received from the host. The host address is a logical sector address, and the logical block index (LBI) is extracted from the host logical address, step <b>442</b>. The last 6 bits of the LBI are extracted as the page index, step <b>444</b>. The logical sector index (LSI), which is the lower part of the logical address that does not include the LBI, selects one of 8 tags in the cache, step <b>446</b>, while the page index selects the row within the cache. The selected tag has a stored tag address that corresponds to the LBI without the page index, and this stored tag is compared to the LBI without the page index, step <b>448</b>, to determine whether an address match has been found.
0056When the address matches, step <b>450</b>, then the host data is written to the data portion of the cache in the SRAM buffer for that page index and selected sector (LSI), step <b>452</b>. The ready signal is returned to the host, step <b>454</b>.
0057When a hit does not occur, step <b>450</b>, then a cache miss occurs. In <figref idref="DRAWINGS">FIG. 8B</figref>, mapping table <b>170</b> (<figref idref="DRAWINGS">FIG. 2</figref>) is consulted with the logical address to find the physical address in the flash memory, step <b>462</b>. Any old data in the cache line is written back to flash memory, step <b>470</b>, using this physical address from mapping table <b>170</b>.
0058The host data is written into the data fields of the cache line, step <b>466</b>. Once the write back of the old cache line is completed, step <b>472</b>, then the tag address can be updated with the new address using the LBI without the page index, since the page index selects the line within the cache. The LSI selects which sector-tag within the line to update, step <b>468</b>.
0059<figref idref="DRAWINGS">FIG. 9</figref> is a block diagram of a Secure-Digital (SD) flash microcontroller. SD flash microcontroller <b>100</b> can be booted from external flash memory.
0060Internal bus <b>96</b> connects CPU <b>82</b> with SRAM <b>86</b>, FIFO data buffer <b>94</b>, direct-memory access (DMA) engine <b>88</b>, and flash-memory controller <b>90</b>. CPU <b>82</b> executes instructions read from SRAM <b>86</b>, using cache <b>79</b> to cache instructions and/or data.
0061DMA engine <b>88</b> can be programmed to transfer data between FIFO data buffer <b>94</b> and flash-memory controller <b>90</b>. CPU <b>82</b> can operate on or modify the data by reading the data over bus <b>96</b>. Cache <b>79</b> and external RAM can store instructions for execution by the CPU and data operated on by the CPU.
0062SD transceiver <b>84</b> connects to the clock CLK and parallel data lines D<b>0</b>:<b>3</b> of SD bus <b>16</b> and contains both a clocked receiver and a transmitter. An interrupt to CPU <b>82</b> can be generated when a new command is detected on SD bus <b>16</b>. CPU <b>82</b> can then execute a routine to handle the interrupt and process the new command.
0063SD operating registers <b>80</b> include the protocol registers required by the SD specification. Registers may include a data-port, write-protect, flash select, flash status, interrupt, and identifier registers. Other extension registers may also be present.
0064Command decode and validator <b>89</b> detects, decodes, and validates commands received over SD bus <b>16</b>. Valid commands may alter bus-cycle sequencing by bus state machine <b>83</b>, and may cause response generator <b>87</b> to generate a response, such as an acknowledgement or other reply. Different routines can be executed by CPU <b>82</b> or different transfer lengths can be performed by DMA engine <b>88</b> in response to the byte or sector capacity detected by command decode and validator <b>89</b>.
0065The transmit and receive data from SD engine <b>81</b> is stored in FIFO data buffer <b>94</b>, perhaps before or after passing through a data-port register in SD operating registers <b>80</b>. Commands and addresses from the SD transactions can also be stored in FIFO data buffer <b>94</b>, to be read by CPU <b>82</b> to determine what operation to perform.
0066Flash-memory controller <b>90</b> may also include a flash data buffer, which may contain the commands, addresses, and data sent over flash bus <b>18</b> to one or more flash mass-storage chips. Data can be arranged to match the bus width of flash bus <b>18</b>, such as in 32 or 94-bit words. DMA engine <b>88</b> can be programmed by CPU <b>82</b> to transfer a block of data between flash bus <b>18</b> and FIFO data buffer <b>94</b>.
0067Flash-specific registers in flash control registers <b>93</b> may include a data port register, interrupt, flash command and selection registers, flash-address and block-length registers, and cycle registers.
0068Error-corrector <b>92</b> can read parity or error-correction code (ECC) from flash mass storage chips and perform data corrections. The parity or ECC bits for data in that is being written to flash mass storage chips can be generated by error-corrector <b>92</b>.
0069Flash programming engine <b>97</b> can be a state machine that is activated on power-up reset. Flash programming engine <b>97</b> programs DMA engine <b>88</b> with the address of the boot loader code in the first page of the external flash mass-storage chip, and the first address in cache <b>79</b> or in another local RAM, or in SRAM <b>86</b>. Then flash programming engine <b>97</b> commands DMA engine <b>88</b> to transfer the boot loader from the flash mass storage chip to cache <b>79</b> or the other SRAM buffer, or to the external RAM. CPU <b>82</b> is then brought out of reset, executing the boot loader program starting from the first address in cache <b>79</b> or the SRAM buffer. The boot loader program can contain instructions to move a larger control program from the flash mass storage chip to SRAM <b>86</b>. Thus SD flash microcontroller <b>100</b> is booted without an internal ROM on internal bus <b>96</b>.
0070<figref idref="DRAWINGS">FIG. 10</figref> is a diagram showing multiple flash devices ganged together in a solid-state-disk array. Each of multiple flash devices <b>140</b>, <b>140</b>′ contains differential transceiver <b>145</b>, microcontroller <b>168</b>, flash interface <b>150</b>, SRAM buffer <b>154</b>, flash memory <b>152</b>, etc. as shown earlier in <figref idref="DRAWINGS">FIGS. 1-4</figref>. Host <b>142</b> is able to access a much larger amount of flash memory by ganging multiple flash devices <b>140</b>, <b>140</b>′ together using SSD array controller <b>520</b>.
0071As the density of flash devices grows rapidly, each flash device has its own control unit to cover first-level booting as well as wear-leveling and other housekeeping work, such as bad-block management. It is more efficient for a SSD array to adopt this cluster approach as to decentralize the heavy load of microcontroller <b>168</b> described earlier. A differential interface is preferred in this application; however, other non-differential interfaces such as SD, MMC etc, may also be applicable in this clustering SSD-array approach.
0072SSD array controller <b>520</b> is a solid-state-disk array controller that receives commands from host <b>142</b> and dispatches these commands to one of multiple flash devices <b>140</b>, <b>140</b>′ using dispatch unit <b>502</b>. CPU <b>506</b> and controller <b>508</b> control operation of SSD array controller <b>520</b>, processing host commands in disk command register <b>504</b>. Sector buffer memory <b>512</b> temporarily stores sectors of data from host <b>142</b> that have not yet been dispatched to one of multiple flash devices <b>140</b>, <b>140</b>′ by dispatch unit <b>502</b>.
ALTERNATE EMBODIMENTS
0073Several other embodiments are contemplated by the inventors. Universal-Serial Bus (USB) and other serial buses may be used such as PCI Express, ExpressCard, Firewire (IEEE 1394), serial ATA, serial attached small-computer system interface (SAS), etc., as the interface used between the host and flash device. For example, when PCI Express is used, additional pins for the PCI Express interface can be added or substituted for the USB differential data pins. PCI express pins include a transmit differential pair PET+, PET−, and a receive differential pair PER+, PER− of data pins. A multi-bus-protocol chip could have an additional personality pin to select which serial-bus interface to use, or could have programmable registers. ExpressCard has both the USB and the PCI Express bus, so either or both buses could be present on an ExpressCard device.
0074Instead of USB or other differential buses mentioned above, SD, MicroSD, MMC, or microMMC interfaces can also be applied in this invention. Rather than use SD buses, other buses may be used such as Memory Stick (MS), Compact Flash (CF), IDE bus, etc. Additional pins can be added or substituted for the SD data pins. A multi-bus-protocol chip could have an additional personality pin to select which bus interface to use, or could have programmable registers. Rather than have a SD microcontroller, a Memory Stick microcontroller could be substituted, for use with a memory-stick interface, etc.
0075A non-differential interface such as SD, MMC etc, serves as the link between an SSD array controller and each individual flash device. This may be more efficient for handling first-level controller booting as well as local management tasks which relieve the load of a SSD array controller.
0076Rather than write the initial boot sequence to address 0 in the SRAM, it can be written to another address in SRAM when the CPU can be configured to execute from an address other than address 0.
0077While a sector size of 512 bytes has been described, the page size may have another size, such as 1K, 2K, 4K, 8K, etc. Flash blocks may have 4 pages, 8 pages, 64 pages, or some other number, depending on the physical flash chips and arrangement used.
0078While the invention has been described using an SD controller, a MMC controller may be substituted. A combined controller that can function for both MMC and SD may also be substituted. SD may be considered an extension of MMC, or a particular type of MMC, rather than a separate type of bus.
0079While the invention has been described as not requiring ROM for booting, some ROM may still be present on the chip. For example, a revision number may be included in a small ROM. Hard-wired gates that are tied to power or ground may also function as a read-only memory. While such ROM may be present, ROM is not required for storing boot code or booting instructions. A few bytes or more of ROM may be thus present for other purposes.
0080Mode logic could sense the state of a pin only at power-on rather than sense the state of a dedicated pin. A certain combination or sequence of states of pins could be used to initiate a mode change, or an internal register such as a configuration register could set the mode.
0081The microcontroller and SD components such as the bus interface, DMA, flash-memory controller, transaction manager, and other controllers and functions can be implemented in a variety of ways. Functions can be programmed and executed by the CPU or other processor, or can be implemented in dedicated hardware, firmware, or in some combination. Many partitioning of the functions can be substituted.
0082Data and commands may be routed in a variety of ways, such as through data-port registers, FIFO or other buffers, the CPU's registers and buffers, DMA registers and buffers, and flash registers and buffers. Some buffers may be bypassed or eliminated while others are used or present. Virtual or logical buffers rather than physical ones may also be used. Data may be formatted in a wide variety of ways.
0083The host can transfer standard SD commands and data transactions to the SD transceiver during a transaction. Other transaction types or variations of these types can be defined for special purposes. These transactions may include a flash-controller-request, a flash-controller-reply, a boot-loader-request, a boot-loader-reply, a control-program-request, a control-program-reply, a flash-memory-request, and a flash-memory-reply. The flash-memory request/reply may further include the following request/reply pairs: flash ID, read, write, erase, copy-back, reset, page-write, cache-write and read-status.
0084The host may be a personal computer (PC), a portable computing device, a digital camera, a phone, a personal digital assistant (PDA), or other electronic device. The partition of SRAM among various functions could change over time.
0085Wider or narrower data buses and flash-memory blocks could be substituted, such as 4, 5, 8, 16, 32, 64, 128, 256-bit, or some other width data channels. Alternate bus architectures with nested or segmented buses could be used internal or external to the microcontroller. Two or more internal and flash buses can be used in the SD flash microcontroller to increase throughput. More complex switch fabrics can be substituted for the internal buses.
0086The flash mass storage chips or blocks can be constructed from any flash technology including multi-level-logic (MLC) memory cells. Data striping could be used with the flash mass storage blocks in a variety of ways, as can parity and error-correction code (ECC). Data re-ordering can be adjusted depending on the data arrangement used to prevent re-ordering for overlapping memory locations. An SD/MMC switch could be integrated with other components or could be a stand-alone chip. The SD/MMC switch could also be integrated with the SD single-chip flash device. While a single-chip device has been described, separate packaged chips or die may be stacked together while sharing I/O pins, or modules may be used.
0087The background of the invention section may contain background information about the problem or environment of the invention rather than describe prior art by others. Thus inclusion of material in the background section is not an admission of prior art by the Applicant.
0088Any methods or processes described herein are machine-implemented or computer-implemented and are intended to be performed by machine, computer, or other device and are not intended to be performed solely by humans without such machine assistance. Tangible results generated may include reports or other machine-generated displays on display devices such as computer monitors, projection devices, audio-generating devices, and related media devices, and may include hardcopy printouts that are also machine-generated. Computer control of other machines is another a tangible result.
0089Any advantages and benefits described may not apply to all embodiments of the invention. When the word “means” is recited in a claim element, Applicant intends for the claim element to fall under 35 USC Sect. 112, paragraph 6. Often a label of one or more words precedes the word “means”. The word or words preceding the word “means” is a label intended to ease referencing of claim elements and is not intended to convey a structural limitation. Such means-plus-function claims are intended to cover not only the structures described herein for performing the function and their structural equivalents, but also equivalent structures. For example, although a nail and a screw have different structures, they are equivalent structures since they both perform the function of fastening. Claims that do not use the word “means” are not intended to fall under 35 USC Sect. 112, paragraph 6. Signals are typically electronic signals, but may be optical signals such as can be carried over a fiber optic line.
0090The foregoing description of the embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto.
Contents6
13 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO2014101498A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9495250B2 | Cited by | United States of America | Search report |
| US8825940B1 | Cited by | United States of America | Search report |
| US2014006537A1 | Cited by | United States of America | Pre-grant |
| US10942654B2 | Cited by | United States of America | Search report |
| US9158578B1 | Cited by | United States of America | Applicant |
| US2011213921A1 | Cited by | United States of America | Pre-grant |
| US2011154008A1 | Cited by | United States of America | Pre-grant |
| US9053033B1 | Cited by | United States of America | Search report |
| US8402152B2 | Cited by | United States of America | Search report |
| US8589618B2 | Cited by | United States of America | Search report |
| US8266367B2 | Cited by | United States of America | Search report |
| US2018322043A1 | Cited by | United States of America | Search report |
| US2010250793A1 | Cited by | United States of America | Pre-grant |
| US8245024B2 | Cited by | United States of America | Applicant |
| US9009416B1 | Cited by | United States of America | Search report |
| US2013104004A1 | Cited by | United States of America | Pre-grant |
| US2011225352A1 | Cited by | United States of America | Pre-grant |
| US8341332B2 | Cited by | United States of America | Search report |
| US2009273977A1 | Cited by | United States of America | Pre-grant |
| US2010268869A1 | Cited by | United States of America | Pre-grant |
| US9110783B1 | Cited by | United States of America | Applicant |
| US8930947B1 | Cited by | United States of America | Applicant |
| TWI673716B | Cited by | Taiwan Province of China | Examiner |
| CN106790751A | Cited by | China | Search report |
| US2010058311A1 | Cited by | United States of America | Pre-grant |
| US9235524B1 | Cited by | United States of America | Applicant |
| KR20100112290A | Cited by | Republic of Korea | Search report |
| US7809878B2 | Cited by | United States of America | Search report |
| US2010174849A1 | Cited by | United States of America | Pre-grant |
| US2012224614A1 | Cited by | United States of America | Pre-grant |
| US10079048B2 | Cited by | United States of America | Applicant |
| US2015309729A1 | Cited by | United States of America | Search report |
| US8037234B2 | Cited by | United States of America | Search report |
| US10664166B2 | Cited by | United States of America | Search report |
| US2007198767A1 | Cited by | United States of America | Pre-grant |
| US2010318734A1 | Cited by | United States of America | Pre-grant |
| US11830563B2 | Cited by | United States of America | Search report |
| US2009240873A1 | Cited by | United States of America | Pre-grant |
| US2009037652A1 | Cited by | United States of America | Pre-grant |
| US2022254438A1 | Cited by | United States of America | Search report |
| US8543802B2 | Cited by | United States of America | Applicant |
| US9256556B2 | Cited by | United States of America | Search report |
| US2009193184A1 | Cited by | United States of America | Pre-grant |
| US11322223B2 | Cited by | United States of America | Search report |
| US9037842B2 | Cited by | United States of America | Applicant |
| US2017344260A1 | Cited by | United States of America | Pre-grant |
| TWI514143B | Cited by | Taiwan Province of China | Examiner |
| US2013318284A1 | Cited by | United States of America | Pre-grant |
| US10203962B2 | Cited by | United States of America | Search report |
| US2022164145A1 | Cited by | United States of America | Search report |
| US2011047366A1 | Cited by | United States of America | Pre-grant |
| US2012155171A1 | Cited by | United States of America | Pre-grant |
| US2007260813A1 | Cited by | United States of America | Pre-grant |
| US2009204872A1 | Cited by | United States of America | Pre-grant |
| US11237956B2 | Cited by | United States of America | Search report |
| US10025705B2 | Cited by | United States of America | Applicant |
| US2009327535A1 | Cited by | United States of America | Pre-grant |
| EP3236350A4 | Cited by | European Patent Office (EPO) | Search report |
| US2015309729A1 | Cited by | United States of America | Pre-grant |
| US9509421B2 | Cited by | United States of America | Search report |
| US7970919B1 | Cited by | United States of America | Search report |
| US2011202708A1 | Cited by | United States of America | Pre-grant |
| US2007131767A1 | Cited by | United States of America | Pre-grant |
| US8144517B2 | Cited by | United States of America | Search report |
| US9824006B2 | Cited by | United States of America | Applicant |
| US8176238B2 | Cited by | United States of America | Search report |
| US2015026509A1 | Cited by | United States of America | Pre-grant |
| US2008320214A1 | Cited by | United States of America | Pre-grant |
| US9104529B1 | Cited by | United States of America | Applicant |
| US8321630B1 | Cited by | United States of America | Search report |
| US2017344260A1 | Cited by | United States of America | Search report |
| US10769059B2 | Cited by | United States of America | Search report |
| US9785561B2 | Cited by | United States of America | Applicant |
| US5566110A | Cites | United States of America | Pre-grant |
499 members in 7 offices
Priority claims22
| Document | Office | Kind | Date |
|---|---|---|---|
| 36697699 | United States of America | A | |
| 36697699 | United States of America | A | |
| 47872000 | United States of America | A | |
| 47872000 | United States of America | A | |
| 70727703 | United States of America | A | |
| 70727703 | United States of America | A | |
| 30959406 | United States of America | A | |
| 30959406 | United States of America | A | |
| 62466707 | United States of America | A | |
| 62466707 | United States of America | A | |
| 87625107 | United States of America | A | |
| 09366976 | – | – | – |
| 09478720 | – | – | – |
| 10707277 | – | – | – |
| 11309594 | – | – | – |
| 11624667 | – | – | – |
| US19990366976 | – | – | – |
| US20000478720 | – | – | – |
| US20030707277 | – | – | – |
| US20060309594 | – | – | – |
| US20070624667 | – | – | – |
| US20070876251 | – | – | – |
Members499
| Document | Office | Kind | |
|---|---|---|---|
| US838915A | United States of America | A | |
| DE10001672A1 | Germany | A1 | |
| JP2001118046A | Japan | A | |
| JP3338417B2 | Japan | B2 | |
| US2003061474A1 | United States of America | A1 | |
| WO03027892A1 | World Intellectual Property Organization (WIPO) | A1 | |
| DE10001672C2 | Germany | C2 | |
| US2004236980A1 | United States of America | A1 | |
| US6854984B1 | United States of America | B1 | |
| US2005055481A1 | United States of America | A1 | |
| US2005059273A1 | United States of America | A1 | |
| US2005059301A1 | United States of America | A1 | |
| US6874044B1 | United States of America | B1 | |
| US2005070138A1 | United States of America | A1 | |
| US2005085129A1 | United States of America | A1 | |
| US2005085133A1 | United States of America | A1 | |
| US2005114587A1 | United States of America | A1 | |
| US2005120146A1 | United States of America | A1 | |
| US2005120157A1 | United States of America | A1 | |
| US2005120163A1 | United States of America | A1 | |
| US2005138288A1 | United States of America | A1 | |
| US2005156333A1 | United States of America | A1 | |
| US2005160213A1 | United States of America | A1 | |
| US2005160218A1 | United States of America | A1 | |
| US2005164532A1 | United States of America | A1 | |
| US2005181645A1 | United States of America | A1 | |
| US2005182881A1 | United States of America | A1 | |
| US2005193161A1 | United States of America | A1 | |
| US2005193162A1 | United States of America | A1 | |
| US2005197017A1 | United States of America | A1 | |
| US2005201148A1 | United States of America | A1 | |
| US2005204187A1 | United States of America | A1 | |
| US2005223158A1 | United States of America | A1 | |
| US2006002096A1 | United States of America | A1 | |
| US2006030080A1 | United States of America | A1 | |
| US7004794B2 | United States of America | B2 | |
| US2006067054A1 | United States of America | A1 | |
| US7021971B2 | United States of America | B2 | |
| US2006075395A1 | United States of America | A1 | |
| US7035110B1 | United States of America | B1 | |
| US7044802B2 | United States of America | B2 | |
| US7069369B2 | United States of America | B2 | |
| US7073010B2 | United States of America | B2 | |
| US2006161725A1 | United States of America | A1 | |
| US7082056B2 | United States of America | B2 | |
| US7094074B2 | United States of America | B2 | |
| US7095617B1 | United States of America | B1 | |
| US7103684B2 | United States of America | B2 | |
| US7103765B2 | United States of America | B2 | |
| US7104848B1 | United States of America | B1 | |
| US7108560B1 | United States of America | B1 | |
| US7125287B1 | United States of America | B1 | |
| US7130958B2 | United States of America | B2 | |
| US2006286865A1 | United States of America | A1 | |
| US2006294272A1 | United States of America | A1 | |
| CN2859750Y | China | Y | |
| US7174628B1 | United States of America | B1 | |
| US7182646B1 | United States of America | B1 | |
| US7186147B1 | United States of America | B1 | |
| CN2886681Y | China | Y | |
| US2007076387A1 | United States of America | A1 | |
| US2007079043A1 | United States of America | A1 | |
| US7215551B2 | United States of America | B2 | |
| US2007118688A1 | United States of America | A1 | |
| US2007130414A1 | United States of America | A1 | |
| US2007130436A1 | United States of America | A1 | |
| US2007143509A1 | United States of America | A1 | |
| US2007147157A1 | United States of America | A1 | |
| US2007150963A1 | United States of America | A1 | |
| US2007156587A1 | United States of America | A1 | |
| US7243185B2 | United States of America | B2 | |
| US2007168614A1 | United States of America | A1 | |
| US7249978B1 | United States of America | B1 | |
| US2007178769A1 | United States of America | A1 | |
| US2007180264A1 | United States of America | A1 | |
| US2007183209A1 | United States of America | A1 | |
| US2007184685A1 | United States of America | A1 | |
| US2007184719A1 | United States of America | A1 | |
| US7257714B1 | United States of America | B1 | |
| US7259967B2 | United States of America | B2 | |
| US2007197101A1 | United States of America | A1 | |
| US2007198856A1 | United States of America | A1 | |
| US2007201274A1 | United States of America | A1 | |
| US2007204128A1 | United States of America | A1 | |
| US2007204206A1 | United States of America | A1 | |
| US7264992B2 | United States of America | B2 | |
| US7269004B1 | United States of America | B1 | |
| US2007233955A1 | United States of America | A1 | |
| US2007250564A1 | United States of America | A1 | |
| US2007255891A1 | United States of America | A1 | |
| US2007262155A1 | United States of America | A1 | |
| US7296345B1 | United States of America | B1 | |
| US7297024B2 | United States of America | B2 | |
| US7299316B2 | United States of America | B2 | |
| US2007268754A1 | United States of America | A1 | |
| US7301776B1 | United States of America | B1 | |
| US2007274032A1 | United States of America | A1 | |
| US2007276987A1 | United States of America | A1 | |
| US2007276988A1 | United States of America | A1 | |
| US2007283428A1 | United States of America | A1 |
22 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Application Is Now CompleteCOMP | COMP | |
| Sent to Classification ContractorPGPC | PGPC | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.)LAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.)FEPP | FEPP | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20080098164
- Publication, DOCDB
- 2008098164
- Publication, EPODOC
- US2008098164
- Application
- 11876251
- Application, DOCDB
- 87625107
- Application, EPODOC
- US20070876251
Titles
- English
- SRAM Cache & Flash Micro-Controller with Differential Packet Interface
Patent term adjustment
- A delay
- +417 daysthe office missed an examination deadline
- Net adjustment
- 417 days
Classification
- CPC, 3
- G06F12/0866
- G06F2212/2022
- G06F2212/2515
- IPC, 1
- G06F12 00
- USPC, 2
- 711103000
- 711E12019