Dave's Patent Content Factory
Applications
Terms
Paragraphs
Claims
Docket
Logout
About
New Paragraph
Paragraphs
Search Content
Para #
Notes
Any Field
Search
Clear
Actions
Matter
Content
Para #
Notes
Modified
View
Edit
Delete
US-8380915-A1
In one embodiment, the master controller 224 uses embedded controller(s). In another embodiment, the master controller 224 uses local memory such as a dynamic memory array 230 (dynamic random access memory “DRAM”), a static memory array 232 (static random access memory “SRAM”), etc. In one embodiment, the local memory is controlled using the master controller 224. In another embodiment, the master controller 224 accesses the local memory via a memory controller 228. In another embodiment, the master controller 224 runs a Linux server and may support various common server interfaces, such as the World Wide Web, hyper-text markup language (“HTML”), etc. In another embodiment, the master controller 224 uses a nano-processor. The master controller 224 may be constructed using programmable or standard logic, or any combination of controller types listed above. The master controller 224 may be embodied as hardware, as software, or as a combination of hardware and software. One skilled in the art will recognize many embodiments for the master controller 224.
79
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
The solid-state storage device controller 202 includes a master controller 224 that controls higher-level functions within the solid-state storage device 102. The master controller 224, in various embodiments, controls data flow by interpreting object requests and other requests, directs creation of indexes to map object identifiers associated with data to physical locations of associated data, coordinating DMA requests, etc. Many of the functions described herein are controlled wholly or in part by the master controller 224.
78
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In one embodiment, the solid-state storage device controller 202 includes a memory controller 228 which controls a dynamic random memory array 230 and/or a static random memory array 232. As stated above, the memory controller 228 may be independent or integrated with the master controller 224. The memory controller 228 typically controls volatile memory of some type, such as DRAM (dynamic random memory array 230) and SRAM (static random memory array 232). In other examples, the memory controller 228 also controls other memory types such as electrically erasable programmable read only memory (“EEPROM”), etc. In other embodiments, the memory controller 228 controls two or more memory types and the memory controller 228 may include more than one controller. Typically, the memory controller 228 controls as much SRAM 232 as is feasible and by DRAM 230 to supplement the SRAM 232.
87
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
The local bus 206 is typically a bidirectional bus or set of busses that allows for communication of data and commands between devices internal to the solid-state storage device controller 202 and between devices internal to the solid-state storage device 102 and devices 244-258 connected to the system bus 240. The bridge 238 facilitates communication between the local bus 206 and system bus 240. One of skill in the art will recognize other embodiments such as ring structures or switched star configurations and functions of buses 240, 206, 204, 210 and bridges 238.
76
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Typically the data is transferred from the local bus 206 to one or more data buffers 222 as directed by the master controller 224 and the buffer controller 208. The data then flows out of the buffer(s) 222 to the data bus 204, through a solid-state controller 104, and on to the solid-state storage media 110 such as NAND flash or other storage media. In one embodiment, data and associated out-of-band metadata (“metadata”) arriving with the data is communicated using one or more data channels comprising one or more solid-state storage controllers 104a-104n−1 and associated solid-state storage media 110a-110n−1 while at least one channel (solid-state storage controller 104n, solid-state storage media 110n) is dedicated to in-band metadata, such as index information and other metadata generated internally to the solid-state storage device 102.
75
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Data may also be communicated to the solid-state storage controller(s) 104 from a requesting device 155 through the system bus 240, bridge 238, local bus 206, buffer(s) 222, and finally over a data bus 204. The data bus 204 typically is connected to one or more buffers 222a-n controlled with a buffer controller 208. The buffer controller 208 typically controls transfer of data from the local bus 206 to the buffers 222 and through the data bus 204 to the pipeline input buffer 306 and output buffer 330. The buffer controller 208 typically controls how data arriving from a requesting device can be temporarily stored in a buffer 222 and then transferred onto a data bus 204, or vice versa, to account for different clock domains, to prevent data collisions, etc. The buffer controller 208 typically works in conjunction with the master controller 224 to coordinate data flow. As data arrives, the data will arrive on the system bus 240, be transferred to the local bus 206 through a bridge 238.
74
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Typically the solid-state storage controller(s) 104 communicate data to the solid-state storage media 110 over a storage I/O bus 210. In a typical embodiment where the solid-state storage is arranged in banks 214 and each bank 214 includes multiple storage elements 216a, 216b, 216m accessed in parallel, the storage I/O bus 210 is an array of busses, one for each column of storage elements 216, 218, 220 spanning the banks 214. As used herein, the term “storage I/O bus” may refer to one storage I/O bus 210 or an array of data independent busses 204. In one embodiment, each storage I/O bus 210 accessing a column of storage elements (e.g. 216a, 218a, 220a) may include a logical-to-physical mapping for storage divisions (e.g. erase blocks) accessed in a column of storage elements 216a, 218a, 220a. This mapping (or bad block remapping) allows a logical address mapped to a physical address of a storage division to be remapped to a different storage division if the first storage division fails, partially fails, is inaccessible, or has some other problem.
73
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In various embodiments, the solid-state storage device controller 202 also includes a data bus 204, a local bus 206, a buffer controller 208, buffers O-N 222a-n, a master controller 224, a direct memory access (“DMA”) controller 226, a memory controller 228, a dynamic memory array 230, a static random memory array 232, a management controller 234, a management bus 236, a bridge 238 to a system bus 240, and miscellaneous logic 242, which are described below. In other embodiments, the system bus 240 is coupled to one or more network interface cards (“NICs”) 244, some of which may include remote DMA (“RDMA”) controllers 246, one or more central processing unit (“CPU”) 248, one or more external memory controllers 250 and associated external memory arrays 252, one or more storage controllers 254, peer controllers 256, and application specific processors 258, which are described below. The components 244-258 connected to the system bus 240 may be located in the computer 112 or may be other devices.
72
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Solid-State Storage Device Controller
71
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Beneficially, sequentially writing packets facilitates a more even use of the solid-state storage media 110 and allows the solid-storage device controller 202 to monitor storage hot spots and level usage of the various logical pages in the solid-state storage media 110. Sequentially writing packets also facilitates a powerful, efficient garbage collection system, which is described in detail below. One of skill in the art will recognize other benefits of sequential storage of data packets.
70
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In a copy operation, the index includes an entry for the original requested data mapped to a number of packets stored in the solid-state storage media 110. When a copy is made, a new copy of the requested data is created and a new entry is created in the index mapping the new copy of the requested data to the original packets. The new copy of the requested data is also written to the solid-state storage media 110 with its location mapped to the new entry in the index. The new copy of the requested data packets may be used to identify the packets within the original requested data that are referenced in case changes have been made in the original requested data that have not been propagated to the copy of the requested data and the index is lost or corrupted.
69
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
The write data pipeline 106 includes a packetizer 302 that receives a data or metadata segment to be written to the solid-state storage, either directly or indirectly through another write data pipeline 106 stage, and creates one or more packets sized for the solid-state storage media 110. The data or metadata segment is typically part of a data structure such as an object, but may also include an entire data structure. In another embodiment, the data segment is part of a block of data, but may also include an entire block of data. Typically, a set of data such as a data structure is received from a computer 112, client 114, or other computer or device and is transmitted to the solid-state storage device 102 in data segments streamed to the solid-state storage device 102 or computer 112. A data segment may also be known by another name, such as data parcel, but as referenced herein includes all or a portion of a data structure or data block.
96
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Each of the storage elements 216, 218, 220, in one embodiment, store binary data in a plurality of storage cells that exhibit a bias. Each storage cell stores one or more binary bits, or values. Flash memory storage cells may be single-level cells (“SLC”) that each store a single binary bit, or multi-level cells (“MLC”) that each store two or more binary bits. Examples of storage cells include transistors, capacitors, magnetic elements, mechanical elements, optical elements, and the like. In flash memory, each storage cell is typically a floating-gate transistor. NRAM, MRAM, DRAM, PRAM, and other types of solid-state storage may have other types of storage cells, and may store either a single binary bit or two or more binary bits per storage cell.
105
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
For example, in one embodiment, end sections of data files may be padded with binary zeroes, causing the data packets that store the end sections to exhibit a bias toward binary zeroes, meaning that the data packets have more binary zeroes than binary ones. Other data packets may have more binary ones than zeroes, or a balance of binary ones and zeroes. While data packets may each have an individual bias based on data within the packets, a bias of the storage cells of the solid-state storage media 110 may be based on some benefit associated with the storage of a particular binary value or pattern, or some property of the storage cells. One example of a storage cell property, NAND flash storage cells presently are biased to all binary one values or almost all binary one values when provided by a manufacturer. In addition, performing an erase operation on the NAND flash storage cells sets the binary values in each storage cell to a binary one, such that programming of the storage cells comprises changing certain storage cells to a binary zero value. This bias to all binary one values or almost all binary one values when provided by a manufacturer or when erased represents one example of an empty state for storage cells of a non-volatile solid-state storage media.
104
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In one embodiment, the write data pipeline 106 also includes a bias module 318 that receives the one or more packets from the packetizer 302, either directly or indirectly. The bias module 318 biases the bits of the data packets toward a bias of storage cells of the solid-state storage media 110. As used herein, a “bias” is a preference, probability, tendency, or desirability of values for bits within a set of bits to exhibit a specific data pattern. A bias may be a natural property, a designed attribute, a property of performing an operation on storage media, or a random occurrence. Data itself may have a bias and data storage media may have a bias. A bias may be toward binary ones, toward binary zeroes, toward a balance of binary ones and zeroes, toward a certain binary value for certain bits, or the like.
103
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In another embodiment, the write data pipeline 106 also includes a write synchronization buffer 308 that buffers packets received from the ECC encoder 304 prior to writing the packets to the solid-state storage media 110. The write synchronization buffer 308 is located at a boundary between a local clock domain and a solid-state storage clock domain and provides buffering to account for the clock domain differences. In other embodiments, synchronous solid-state storage media 110 may be used and synchronization buffers 308328 may be eliminated.
102
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
In one embodiment, the write pipeline 106 includes an input buffer 306 that receives a data segment to be written to the solid-state storage media 110 and stores the incoming data segments until the next stage of the write data pipeline 106, such as the packetizer 302 (or other stage for a more complex write data pipeline 106) is ready to process the next data segment. The input buffer 306 typically allows for discrepancies between the rate data segments are received and processed by the write data pipeline 106 using an appropriately sized data buffer. The input buffer 306 also allows the data bus 204 to transfer data to the write data pipeline 106 at rates greater than can be sustained by the write data pipeline 106 in order to improve efficiency of operation of the data bus 204. Typically when the write data pipeline 106 does not include an input buffer 306, a buffering function is performed elsewhere, such as in the solid-state storage device 102 but outside the write data pipeline 106, in the computer 112, such as within a network interface card (“NIC”), or at another device, for example when using remote direct memory access (“RDMA”).
101
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Beneficially, using a robust ECC algorithm allowing more than single bit correction or even double bit correction allows the life of the solid-state storage media 110 to be extended. For example, if flash memory is used as the storage medium in the solid-state storage media 110, the flash memory may be written approximately 100,000 times without error per erase cycle. This usage limit may be extended using a robust ECC algorithm. Having the ECC encoder 304 and corresponding ECC decoder 322 onboard the solid-state storage device 102, the solid-state storage device 102 can internally correct errors and has a longer useful life than if a less robust ECC algorithm is used, such as single bit correction. However, in other embodiments the ECC encoder 304 may use a less robust algorithm and may correct single-bit or double-bit errors. In another embodiment, the solid-state storage media 110 may comprise less reliable storage such as multi-level cell (“MLC”) flash in order to increase capacity, which storage may not be sufficiently reliable without more robust ECC algorithms.
100
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
The write data pipeline 106 includes an ECC encoder 304 that that generates one or more error-correcting codes (“ECC”) for the one or more packets received from the packetizer 302. The ECC encoder 304 typically uses an error correcting algorithm to generate ECC check bits which are stored with the one or more data packets. The ECC codes generated by the ECC encoder 304 together with the one or more data packets associated with the ECC codes comprise an ECC chunk. The ECC data stored with the one or more data packets is used to detect and to correct errors introduced into the data through transmission and storage. In one embodiment, packets are streamed into the ECC encoder 304 as un-encoded blocks of length N. A syndrome of length S is calculated, appended and output as an encoded block of length N+S. The value of N and S are dependent upon the characteristics of the algorithm which is selected to achieve specific performance, efficiency, and robustness metrics. In one embodiment, there is no fixed relationship between the ECC blocks and the packets; the packet may comprise more than one ECC block; the ECC block may comprise more than one packet; and a first packet may end anywhere within the ECC block and a second packet may begin after the end of the first packet within the same ECC block. In one embodiment, ECC algorithms are not dynamically modified. In one embodiment, the ECC data stored with the data packets is robust enough to correct errors in more than two bits.
99
Added by DJM 3 2021
3/12/21, 12:00 AM
View
Edit
Delete
US-8380915-A1
Each packet includes a header and possibly data from the data or metadata segment. The header of each packet includes pertinent information to relate the packet to the data structure to which the packet belongs. For example, the header may include an object identifier or other data structure identifier and offset that indicates the data segment, object, data structure or data block from which the data packet was formed. The header may also include a logical address used by the storage bus controller 348 to store the packet. The header may also include information regarding the size of the packet, such as the number of bytes included in the packet. The header may also include a sequence number that identifies where the data segment belongs with respect to other packets within the data structure when reconstructing the data segment or data structure. The header may include a header type field. Type fields may include data, data structure attributes, metadata, data segment delimiters (multi-packet), data structure types, data structure linkages, and the like. One of skill in the art will recognize other information that may be included in a header added to data or metadata by a packetizer 302 and other information that may be added to a packet.
98
Added by DJM 3 2021
3/12/21, 12:00 AM
<< first
< previous
387
388
389
390
391
392
393
394
395
next >
last >>
Page 391 of 438, showing 20 record(s) out of 8,747 total