The technology of the disclosure relates to solid-state drives (SSDs) that store data in non-volatile memory (e.g., FLASH memory) and more particularly to interfaces within SSDs for accessing the non-volatile memory.
Solid-state drives (SSDs) are an example of semiconductor-based data storage devices employing non-volatile memory (NVM) dies in FLASH memories providing long term data storage. NVM dies retain data stored therein in the absence of a power supply, similar to a rotating magnetic disk drive (“disk drive”). SSDs are widely employed in laptops, tablets, and other mobile devices as an alternative to disk drives for their speed, storage capacity, and low power consumption. A SSD couples to a processing system via a system interface, such as a Peripheral Component Interface Express (PCIe) interface, Serial Advanced Technology Attachment (SATA) interface, SATA Express interface, etc. A storage controller on the SSD receives memory access instructions from the system over the system interface and responds by forwarding FLASH instructions for accessing memory in the FLASH memories. The storage controller communicates with each of the FLASH memories over an interface (“FLASH interface”) such as an Open NAND FLASH Interface (ONFI) or Toggle Double Data Rate (DDR) interface, for example.
The storage controller and FLASH memories of a SSD are located on a substrate, such as a printed circuit board (PCB), with interconnects for the FLASH interfaces routed on the substrate. For a typical FLASH interface having in the range of about 40 wires (traces) per FLASH chip, a SSD with a number (“N”) of FLASH memories includes at least 40×N interconnects to the storage controller, in addition to power, ground, and other signals routed on the substrate. Routing congestion makes it difficult to place FLASH memories close together on a substrate, which can force the traces to be routed in long, non-optimal paths. Traces having long paths may have a lower quality of data transmission reliability than traces having shorter paths. Long traces also have higher capacitance, which causes higher power consumption in the FLASH interface. Power consumption in the FLASH interface is exacerbated by some aspects of an interface protocol between the storage controller and the FLASH memories. One aspect of the interface protocol causing high power consumption is the polling required by a storage controller to obtain an indication that a memory access instruction sent to a FLASH memory has been completed. To minimize latency, the polling must be repeated frequently until the storage controller receives an indication of completion.
Aspects disclosed herein include a solid-state drive (SSD) with a storage controller employing differential two-wire serial buses to access FLASH memory. A SSD having reduced routing congestion and lower power consumption, as disclosed herein, includes an exemplary storage control circuit coupled to each FLASH memory in the SSD via a differential two-wire transmit bus and a differential two-wire return bus. The storage control circuit receives memory instructions from a processing system, determines a corresponding FLASH instruction, generates a transmit packet including the FLASH instruction, and serially transmits the transmit packet including the FLASH instruction to a FLASH memory via the transmit bus. The FLASH memory serially transmits return packets to the storage control circuit via the return bus. A return packet transmitted from the FLASH memory may be in response to a transmit packet, and may include a response indicating whether the transmit packet was received successfully or the return packet may include data stored in the FLASH memory that was requested by a FLASH instruction in the transmit packet. The return packet sent from the FLASH memory may not be in response to a transmit packet or FLASH instruction. For example, the return packet may contain information, such as a state of the FLASH memory. Information in the return packet may be an instruction to the storage control circuit initiated by the FLASH memory.
In one aspect a SSD circuit is disclosed. The SSD circuit includes a system interface configured to couple to a processing system, a FLASH memory configured to store data, a differential two-wire transmit (Tx) bus coupled to the FLASH memory, a differential two-wire return (Rx) bus coupled to the FLASH memory, and a storage control circuit coupled to the system interface, the Tx bus, and the Rx bus. The storage control circuit is configured to receive a memory instruction from the processing system, determine a FLASH instruction corresponding to the memory instruction, generate a transmit packet comprising the FLASH instruction, and serially transmit the transmit packet on the Tx bus to the FLASH memory.
In another aspect, a method in a SSD circuit is disclosed. The method includes receiving, in a storage control circuit coupled to a system interface, a memory instruction from a processing system, determining, in the storage control circuit, a FLASH instruction corresponding to the received memory instruction, generating, in the storage control circuit, a transmit packet comprising the determined FLASH instruction, and serially transmitting the generated transmit packet on a differential two-wire Tx bus from the storage control circuit to a FLASH memory.
In another aspect, a storage control circuit in a SSD circuit is disclosed. The storage control circuit includes a system interface circuit configured to receive a memory instruction from a processing system, a memory control circuit, and a serial transmit bus circuit. The memory control circuit is configured to determine a FLASH instruction corresponding to the memory instruction and generate a transmit packet comprising the FLASH instruction. The serial transmit bus circuit is configured to serially transmit, to a FLASH memory, the transmit packet on a differential two-wire Tx bus.
In another aspect, a FLASH memory in a SSD circuit is disclosed. The FLASH memory includes at least one non-volatile memory (NVM) die configured to store data, a serial transmit bus circuit configured to receive a transmit packet comprising a FLASH instruction on a differential two-wire Tx bus, a FLASH control circuit, and a serial return bus circuit. The FLASH control circuit is configured to access the at least one NVM die in response to the FLASH instruction in the transmit packet, and generate a return packet. The serial return bus circuit is configured to serially transmit, to a storage control circuit, the generated return packet.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
Aspects disclosed herein include a solid-state drive (SSD) with a storage controller employing differential two-wire serial buses to access FLASH memory. A SSD having reduced routing congestion and lower power consumption, as disclosed herein, includes an exemplary storage control circuit coupled to each FLASH memory in the SSD via a differential two-wire transmit bus and a differential two-wire return bus. The storage control circuit receives memory instructions from a processing system, determines a corresponding FLASH instruction, generates a transmit packet including the FLASH instruction, and serially transmits the generated transmit packet including the FLASH instruction to a FLASH memory via the transmit bus. The FLASH memory serially transmits return packets to the storage control circuit via the return bus. A return packet transmitted from the FLASH memory may be in response to a transmit packet, and may include a response indicating whether the transmit packet was successfully received or the return packet may include data stored in the FLASH memory that was requested by a FLASH instruction in the transmit packet. The return packet sent from the FLASH memory may not be in response to a transmit packet or FLASH instruction. For example, the return packet may contain information, such as a state of the FLASH memory. Information in the return packet may be an instruction to the storage control circuit initiated by the FLASH memory.
FLASH memory is an electronic non-volatile memory (NVM) medium that can be electrically accessed using program (write), read, and erase instructions (FLASH instructions). Examples of FLASH memory include NAND and NOR logic circuits implemented in semiconductor devices on FLASH dies. A FLASH memory as referred to herein is a chip, package, or device including one or more FLASH dies and electronic circuits for accessing memory in the FLASH dies in response to FLASH instructions. FLASH memory is employed in a SSD to provide memory space to store and retrieve data for a processing system.
In some situations, the SSD 100 is included inside a housing of the processing system. In this regard, it would be preferable for the SSD 100 to be as small as possible. Reduced size also helps to reduce cost of the SSD 100. The SSD 100 in this example includes a printed circuit board (PCB) 108 or other substrate with the storage control circuit 102 in the form of a chip or package mounted on a surface of the PCB 108. The FLASH memories 104 are also mounted on the PCB 108. The storage control circuit 102 is coupled to each of the FLASH memories 104 by a conventional FLASH interface 110. In the example shown in
A problem with reducing the size of the SSD 100 in
Another problem with the SSD 100, in which the storage control circuit 102 is coupled to the FLASH memories 104 by a conventional FLASH interface 110, is due to a protocol for the storage control circuit 102 to access memory in the FLASH memories 104. In particular, when the storage control circuit 102 sends a FLASH instruction (e.g., a program instruction) to a FLASH memory 104 for the FLASH memory 104 to execute internally, the FLASH memory 104 does not indicate to the storage control circuit 102 whether the FLASH instruction was successfully received or when the FLASH instruction has been completed by the FLASH memory 104. To determine the outcome of the FLASH instruction sent to the FLASH memory 104, the storage control circuit 102 issues a polling instruction to read a status register internal to the FLASH memory 104. If the FLASH instruction is successfully received, the FLASH memory 104 sets the status bit to a known value when the instruction is successfully completed. Until a successfully received instruction has completed, the storage control circuit 102 will periodically issue a polling instruction to request (i.e., poll) the value of the status bit in the FLASH memory 104. Each of such polling instructions consumes power on the FLASH interface 110. Increasing the period of such polling, so polling events occur less frequently, reduces power consumption, but increases latency associated with the FLASH instruction. Thus, to achieve the shortest memory access times, a large amount of power may be consumed due to polling under the conventional FLASH interface protocol.
Compared to the nineteen (19) traces of an ONFI interface, the five (5) traces in the FLASH interfaces 404 between each FLASH die set 202 of the FLASH memories 300 allows the SSD circuit 400 (“SSD 400”) in
In another aspect, the power consumed due to polling in the conventional FLASH interface is avoided. After receiving a FLASH instruction on the Tx bus 302, the FLASH control 310 may continue to receive transmissions on the Tx bus 302 while generating and transmitting a response to the storage control circuit 402 on the Rx bus 304. As described in more detail below, the Rx bus 304 may be used to serially transmit a response to a FLASH instruction, such as an acknowledgement indicating that the FLASH instruction is received. Alternatively, or additionally, the Rx bus 304 may be used by the FLASH memory 300 to inform the storage control circuit 402 that a FLASH instruction has been completed. In this regard, there is no need for the storage control circuit 402 to repeatedly issue polling instructions to the FLASH memory 300 for status information, which conserves power.
Communication between the storage control circuit 402 and the FLASH memories 300 over the FLASH interfaces 404 for accessing memory in the FLASH die sets 202 is described with reference to
The fields of the command packet format 600 in the example in
CMD STRT [0:1]: Bytes indicating start of command packet format 600;
CMD ID: Unique Identifier for a particular command ;
CMD LNG: Optional Length indication;
CMD EXT: Optional Extension information;
COMMAND: Actual Command ;
ADDRESS: Memory/Register as command source/destination; and
CMD END [0:1]: Bytes indicating end of command packet format 600.
RSP STRT [0:1]: Bytes indicating start of response packet format 602;
CMD ID: Identifier of the command associated with this response;
RSP LNG: Optional Length indication;
RSP EXT: Optional Extension information;
RESP/ACK: Content of Response (e.g., ACK/NACK or requested data); and
RSP END [0:1]: Bytes indicating end of response packet format 602.
Some of the lengths of the fields in
In the SSD 400 in
The SER 702 serializes data in the form of transmit packets obtained from a management circuit 706, and the DES 704 deserializes data of return packets received on the Rx bus 304 to the management circuit 706. The storage control circuit 402 also includes a system interface control 708 to handle bidirectional communication on the system interface 106. The management circuit 706 receives memory instructions from the system interface control 708, and provides responses to such memory instructions back to the system interface control 708 for transmission to the processing system. The management circuit 706 employs internal controllers and/or state machine logic (not shown) to interpret memory instructions received from the processing system. The management circuit 706 works together with the FLASH memory 300 to manage the NVM in the FLASH die sets 202.
For example, a memory instruction from the processing system may instruct the SSD 400 to write data into a page of NVM at a particular memory location. In response, the management circuit 706 may need to read data that is already stored in such page of the NVM, merge the data read from the page with the data to be written to the page, and transmit a PROGRAM instruction (command) to the FLASH memory 300 to program a page with the combined data.
The read instruction in the above example is explained in more detail. The management circuit 706 receives the memory access instruction from the processing system via the system interface 106. The management circuit 706 determines that a FLASH instruction corresponding to the received memory instruction is needed (e.g., to read data from a FLASH memory 300). The management circuit 706 generates a transmit packet in the command packet format 600, in which the COMMAND field indicates a FLASH instruction (e.g., read instruction) and the ADDRESS field indicates an address of the page of NVM to be read. The management circuit 706 determines which FLASH memory 300 contains the data that is the target of the read instruction, and provides the transmit packet to the SER 702 of the appropriate FLASH interface 404. The SER 702 serially transmits the transmit packet having the command packet format 600 on the Tx bus 302 to the FLASH memory 300. In response to the FLASH instruction (read instruction), the storage control circuit 402 will receive, on the Rx bus 304, a return packet having the response packet format 602. The return packet may contain an acknowledgement indicating whether the data has been received or the data that is the target of the read. The CMD ID field of the transmit packet contains a transmit identifier. The CMD ID field of the return packet received in response to the read instruction includes a return identifier. In order to associate the response (i.e., return packet) with the read instruction in the transmit packet, the value of the return identifier in the CMD ID field of the return packet is the same as the transmit identifier in the CMD ID field of the transmit packet.
The storage control circuit 402 may also receive return packets on the Rx bus 304 that are not in response to a FLASH instruction transmitted in a transmit packet on the Tx bus 302. Return packets that are not in response to a FLASH instruction are in the command packet format 600. Such return packets contain information or instructions from the FLASH memory 300. The information received from the FLASH memory 300 in a return packet in the command packet format 600 may be status information of the FLASH memory, for example. The instructions may be memory management instructions. For example, the FLASH memory 300 may also include memory management capabilities working cooperatively with the storage control circuit 402. Where a conventional storage control circuit 102 as shown in
The storage control circuit 402 in the SSD 400 comprises a system interface circuit (e.g., the system interface control 708) configured to receive a memory instruction from a processing system. The storage control circuit 402 further includes a memory control circuit (e.g., the management circuit 706) configured to determine a FLASH instruction corresponding to the memory instruction, and generate a transmit packet comprising the FLASH instruction. The storage control circuit 402 further includes a serial transmit bus circuit (the SER 702) configured to serially transmit, to a FLASH memory 300, the transmit packet on the differential two-wire Tx bus 302. The storage control circuit 402 further includes a serial return bus circuit (the DES 704) configured to receive, from the FLASH memory 300, return packets serially transmitted on the differential two-wire Rx bus 304.
Continuing with the example of the read instruction discussed above with respect to
The FLASH state machine 808 may also include some of the memory management functions conventionally found in the storage control circuit 102 in
As a result of incorporating the FLASH state machine 808, the FLASH memory 300 may internally support other memory management functions that may have previously been managed by conventional SSDs. In one example, a FLASH memory 300 can execute read instructions in a short amount of time, but program and erase instructions take a much longer time to complete. Forcing a read instruction to be sequentially executed (i.e., by waiting until a program or erase is complete) would cause excessive latency. The FLASH memory 300 may internally support suspending a longer executing instruction temporarily to allow the read instruction to complete, and then resuming execution of the longer operation. In another example, functions requiring information about the internal mapping of memory in a FLASH die can be handled more easily within the FLASH memory 300 than in a storage controller. Asynchronous Independent Plane Read (AIPR) and Synchronous Independent Plane Read (SIPR) are examples of such functions. In addition, the FLASH state machine 808 may be able to reorder instructions for internal memory management purposes or for other high-priority purposes as needed either as determined by the FLASH state machine 808 or in response to an instruction from the storage control circuit 402. These and other fine-grained tasks of memory management may be supported directly within the FLASH memory 300 as needed.
The FLASH memory 300 in the SSD 400 includes at least one NVM die (FLASH die set 202) configured to store data, and a serial transmit bus circuit (the DES 804) configured to receive a transmit packet comprising a FLASH instruction on the differential two-wire Tx bus 302. The FLASH memory 300 also includes a FLASH control 310 configured to access the NVM die (FLASH die set 202) in response to the FLASH instruction in the transmit packet, and generate a return packet. The FLASH memory 300 also includes a serial return bus circuit (the SER 802) configured to serially transmit, to the storage control circuit 402, the generated return packet. In the FLASH memory 300, the FLASH control 310 is configured to generate, in response to the FLASH instruction, a return packet comprising a response to the FLASH instruction. The FLASH control 310 is also configured to generate, not in response to the FLASH instruction, a return packet comprising an instruction.
The processor 902 and system memory 908 are coupled to a system bus 906 that can intercouple peripheral devices included in the processor-based system 900. As is well known, the processor 902 communicates with these other devices by exchanging address, control, and data information over the system bus 906. For example, the processor 902 can communicate bus transaction requests to a memory controller 912 in the system memory 908 as an example of a slave device. Although not illustrated in
Other devices can be connected to the system bus 906. As illustrated in
The processor-based system 900 in
While the computer-readable medium 930 is shown in an exemplary embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that stores the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the processing device and that causes the processing device to perform any one or more of the methodologies of the embodiments disclosed herein. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical medium, and magnetic medium.
The embodiments disclosed herein include various steps. The steps of the embodiments disclosed herein may be formed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, the steps may be performed by a combination of hardware and software.
The embodiments disclosed herein may be provided as a computer program product, or software, that may include a machine-readable medium (or computer-readable medium) having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the embodiments disclosed herein. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes: a machine-readable storage medium (e.g., ROM, random access memory (“RAM”), a magnetic disk storage medium, an optical storage medium, FLASH memory devices, etc.); and the like.
Unless specifically stated otherwise and as apparent from the previous discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data and memories represented as physical (electronic) quantities within the computer system's registers into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatuses to perform the required method steps. The required structure for a variety of these systems will appear from the description above. In addition, the embodiments described herein are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments as described herein.
Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the embodiments disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer-readable medium and executed by a processor or other processing device, or combinations of both. The components of the distributed antenna systems described herein may be employed in any circuit, hardware component, IC, or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends on the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present embodiments.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), or other programmable logic device, a discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein.
Furthermore, a controller may be a processor. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
The embodiments disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in RAM, FLASH memory, ROM, Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a
CD-ROM, or any other form of computer-readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
It is also noted that the operational steps described in any of the exemplary embodiments herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary embodiments may be combined. Those of skill in the art will also understand that information and signals may be represented using any of a variety of technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips, that may be references throughout the above description, may be represented by voltages, currents, electromagnetic waves, magnetic fields, or particles, optical fields or particles, or any combination thereof.
Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps, or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is in no way intended that any particular order be inferred.
It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the spirit or scope of the invention. Since modifications, combinations, sub-combinations and variations of the disclosed embodiments incorporating the spirit and substance of the invention may occur to persons skilled in the art, the invention should be construed to include everything within the scope of the appended claims and their equivalents.