The present invention relates to generally a semiconductor device, and in particular to reading data from a plurality of sources using a single buffer of the semiconductor device.
Semiconductor memory devices are important components in presently available industrial and consumer electronics products. For example, computers, mobile phones, and other portable electronics all rely on some form of memory for storing data. While many memory devices are typically available as commodity, or discrete memory devices, the need for higher levels of integration and higher input/output (I/O) bandwidth has led to the development of embedded memory, which can be integrated with systems, such as microcontrollers and other processing circuits.
Most consumer electronics employ, non-volatile devices, such as flash memory devices, for storage of data. Demand for flash memory devices has continued to grow significantly because these devices are well suited in various applications that require large amounts of non-volatile storage, while occupying a small physical area. For example, flash is widely found in various consumer devices, such as digital cameras, cell phones, universal serial bus (USB) flash drives and portable music players, to store data used by these devices. Also, flash devices are used as solid state drives (SSDs) for hard disk drive (HDD) replacement. Such portable devices are preferably minimized in form factor size and weight. Unfortunately, multimedia and SSD applications require large amounts of memory which can increase the form factor size and weight of their products. Therefore, consumer product manufacturers compromise by limiting the amount of physical memory included in the product to keep its size and weight acceptable to consumers. Furthermore, while flash memory has a higher density per unit area than DRAM or SRAM, its performance is limited due to its relatively low I/O bandwidth that negatively impacts its read and write throughput.
In order to take advantage of the improved speed of the memory device interface of
The bridge device includes a buffer, such as SRAM memory for example, for receiving and buffering the pages of read data from the memory devices and outputting the read data to the memory controller. The cost of the bridge device is driven mainly by its area, and the area of the bridge device is dominated by the size of the SRAM memory. Therefore, to minimize the cost of the bridge device, the SRAM memory should be minimized. This could mean that multiple discrete NAND flash memory devices share one data buffer of the bridge device that is sized for storing only one page of data. Therefore contention for the limited data buffer space between the discrete memory devices will arise, and data could be lost if a second memory device is outputting data to the bridge device, while a first memory device has access to the data buffer of the bridge device. Alternately, the discrete memory devices can have the capability to output multiple pages of data, which further compounds the problem of access to the data buffer.
Therefore, an improved bridge device having a minimally sized data buffer which can control access by the discrete memory devices, is needed.
In a first aspect, there is provided a method for controlling data transfer from two page buffer sources to a data buffer. The method includes initiating read operations in the two page buffer sources; automatically transferring data from a first page buffer source of the two page buffer sources that completes a read operation, to the data buffer; inhibiting transfer of data from a second page buffer source of the two page buffer sources when the second page buffer source completes a read operation and the data buffer is busy; waiting for the data buffer to become available; and, transferring data from the second page buffer source when the data buffer is available. According to embodiments of the first aspect, each of the two page buffer sources and the data buffer are sized to store one page of data, the first page buffer source is a first memory device and the second page buffer source is a second memory device, or the first page buffer source is a first page buffer of a memory device and the second page buffer source is a second page buffer of the memory device.
In another embodiment of the present aspect, automatically transferring data includes receiving a ready signal from the first page buffer source, and further includes issuing a data transfer command to the first page buffer source after the read signal is received from the first page buffer source. In yet another embodiment, inhibiting transfer of data includes setting a deferred status of the second page buffer source if the read operation for the second page buffer source is in progress, and setting a deferred status includes setting a deferred status register corresponding to the second page buffer source to a deferred state. In this embodiment, transferring data includes setting the deferred status register to a non-deferred state. In the present embodiment, inhibiting transfer of data includes receiving a ready signal from the second page buffer source and inhibiting issuance of a data transfer command to the second page buffer source after the read signal from the second page buffer source is received and the second page buffer source is set to the deferred status.
In an embodiment of the first aspect, waiting includes outputting the data of the first page buffer source stored in the data buffer, and transferring data includes issuing a data transfer command to the second page buffer source after the data buffer has finished outputting the data of the first page buffer source. In an alternate embodiment of the 1st aspect, inhibiting transfer of data includes setting a deferred status for the second page buffer source when the ready signal is received, where setting a deferred status includes setting a deferred status register corresponding to the second page buffer source to a deferred state.
In a second aspect, there is provided a method for reading data from a bridge device having two page buffer sources connected to a channel of the bridge device. The method includes issuing page read commands for reading data from the two page buffer sources to the bridge device; determining a first page buffer source of the two page buffer sources is in a ready state and is in a non-deferred state for indicating that data of the first page buffer source is stored in a data buffer of the bridge device; burst reading data from the data buffer of the bridge device; re-issuing a page read command to a second page buffer source of the two page buffer sources if the second page buffer source is in a ready state and is in a deferred state for transferring data of the second page buffer source to the data buffer of the bridge device; and, burst reading data from the data buffer of the bridge device.
In an embodiment of the second aspect, issuing page read commands includes issuing a first page read command to the first page buffer source, followed by issuing a second page read command to the second page buffer source after a predetermined latency period, such that the first page buffer source reads a page of data from a memory array and transfers the page of data to the data buffer of the bridge device in response to the first page read command. The bridge device sets a deferred status for the second page buffer source when the transfer of the page of data to the data buffer is initiated. In another embodiment of the second aspect, determining includes reading status registers of the bridge device indicating the ready state and the non-deferred state corresponding to each of the first page buffer source and the second page buffer source. In yet another embodiment, re-issuing includes reading the status registers of the bridge device to determine if the second page buffer source is in the ready state and in the deferred state where the second page buffer source reads a page of data from a memory array and transfers the page of data to the data buffer of the bridge device in response to the page read command. In this embodiment, the status registers of the bridge device are read to determine if the second page buffer source is in a ready state for indicating that data of the second page buffer source is stored in a data buffer of the bridge device.
In a third aspect, there is provided a bridge device for receiving read data from a first page buffer source and a second page buffer source. The bridge device includes a data buffer, and arbitrator circuit and a controller. The data buffer has a predetermined size for receiving first read data from the first page buffer source and the second read data from the second page buffer source, where the first read data and the second read data have the predetermined size. The arbitrator circuit generates a first read transfer signal in response to detecting a first page buffer source being ready to provide the first read data, and for inhibiting generation of a second read transfer signal when the second page buffer source becomes ready to provide the second read data at least when the first page buffer is ready to provide the first read data. The controller issues a data transfer command to the first page buffer source in response to the first read transfer signal for transferring the first read data from the first page buffer source to the data buffer from the first page buffer source to the data buffer.
According to an embodiment of the third aspect, the first page buffer source is a first memory device and the second page buffer source is a second memory device, and the arbitrator circuit receives a first ready/busy signal transition from the first memory device indicating that the first memory device you is ready to provide the first read data, and receives a second ready/busy signal transition from the second page buffer source after the first ready/busy signal transition. According to an alternate embodiment of the third aspect, the first page buffer is a first plane of a memory device and the second page buffer source is a second plane of the memory device, and the arbitrator circuit receives a ready/busy signal transition from the memory device indicating that the first plane and the second plane are ready to provide the first read data and the second read data.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
Embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:
Generally, the embodiments of the present invention are directed to a composite memory device including discrete memory devices and a bridge device for controlling the discrete memory devices in response to global memory control signals having a format or protocol that is incompatible with the memory devices. The discrete memory devices can be commercial off-the-shelf memory devices or custom memory devices, which respond to native, or local memory control signals. The bridge device functions as an interface between the discrete memory devices and the system by converting the global memory control signals into the native format compatible with the discrete memory devices. Write data is received by the bridge device and transferred to the addressed discrete memory device, and the bridge device receives read data from the discrete memory devices for transfer to the host.
It should be noted that the following description interchangeably uses the expressions “high logic state” and “logic 1 state”, which are intended to be the same. Similarly, the expressions “low logic state” and “logic 0 state” are intended to be the same.
Channel 18 includes a set of common buses, which include data and control lines that are connected to all of its corresponding memory devices. Each memory device is enabled or disabled with respective chip select (enable) signals CE1#, CE2#, CE3# and CE4#, provided by memory controller 14. In this and following examples, the “#” indicates that the signal is an active low logic level signal. In this scheme, one of the chip select signals is typically selected at one time to enable a corresponding one of the non-volatile memory devices 16-1-16-4. The memory controller 14 is responsible for issuing commands and data, via the channel 18, to a selected memory device in response to the operation of the host system 12. Read data output from the memory devices is transferred via the channel 18 back to the memory controller 14 and host system 12. The system 10 is generally said to include a multi-drop bus, in which the memory devices 16-1-16-4 are connected in parallel with respect to channel 18.
All the signals noted in Table 1 are generally referred to as the memory control signals for operation of the example flash memory device illustrated in
Each of the non-volatile memory devices of
In order to increase data throughput, a memory device having a serial data interface has been disclosed in commonly owned U.S. Patent Publication No. 20070153576 entitled “Memory with Output Control”, and commonly owned U.S. Patent Publication No. 20070076502 entitled “Daisy Chain Cascading Devices” which receives and provides data serially at a frequency, for example, 200 MHz. This is referred to as a serial data interface format. As shown in these commonly owned patent publications, the described memory device can be used in a system of memory devices that are serially connected to each other.
Having both the commonly available asynchronous flash memory devices of
At least some example embodiments provide a high performance composite memory device with a high-speed interface chip or a bridge device in conjunction with discrete memory devices, in a multi-chip package (MCP) or system in package (SIP). The bridge device provides an I/O interface with the system it is integrated within, and receives global memory control signals following a global format, and converts the commands into local memory control signals following a native or local format compatible with the discrete memory devices. The bridge device thereby allows for re-use of discrete memory devices, such as NAND flash devices, while providing the performance benefits afforded by the I/O interface of the bridge device. The bridge device can be embodied as a discrete logic die integrated with the discrete memory device dies in the package.
In the present examples, the global format is a serial data format compatible with the serial flash memory device of
Composite memory device 100 has an input port GLBCMD_IN for receiving a global command, and an output port GLBCMD_OUT for passing the received global command and read data.
It is noted that bridge device 102 does not execute the op code or access any memory location with the row and address information. The bridge device 102 uses the global device address 116 to determine if it is selected to convert the received global memory control signals 112. If selected, bridge device 102 then uses the local device address 118 to determine which of the discrete memory devices the converted global memory control signals 112 is sent to. In order to communicate with all four discrete memory devices 104, bridge device 102 includes four sets of local I/O ports, one set in each of channels CH1, CH2, CH3 and CH4, each connected to a corresponding discrete memory device. As previously mentioned, each set of local I/O ports includes all the signals that the discrete memory device requires for proper operation, and thereby functions as a local device interface.
Read data is provided by any one of a flash memory device 104 from composite memory device 100, or from a previous composite memory device. In particular, the bridge device 102 can be connected to a memory controller of a memory system, or to another bridge device of another composite memory device in a system of serially interconnected devices. The input port GLBCMD_IN and output port GLBCMD_OUT can be package pins, other physical conductors, or any other circuits for transmitting/receiving the global command signals and read data to and from the composite memory device 100, and in particular, to and from bridge device 102. The bridge device 102 therefore has corresponding connections to the input port GLBCMD_IN and the output port GLBCMD_OUT to enable communication with an external controller, such as memory controller 22 of
While the composite memory device 100 shown in the embodiment of
Each channel of bridge device 202 has a data storage unit, such as a dedicated data buffer 206 or a designated portion of a memory, for receiving and storing a correspondingly sized unit of data from either of the two memory devices 204 connected to the channel. The dedicated data buffer 206 is not shared between channels. A unit of data provided by a memory device 204 can be a page of data for example, or any maximum amount of data which can be accessed with one logical row address in a read operation. In flash memory devices, such as memory devices 204 in the present embodiments, a read operation results in a page of data stored in the memory array being read out and transferred to an internal page buffer. In response to a command received by the flash memory device 204, up to the entire contents of the internal page buffer is output as read data. It is noted that some memory devices are configured for reading out two or more pages of data in a read operation. This is explained further with reference to
Returning to
The data buffers 206 of bridge device 202 can be sized to store any number of pages of data received from the memory devices 204 associated with the channel. For example, if the pair of memory devices 204 connected to channel CH1 are each configured to have 2 planes as shown in
Such a configuration is suitable for the bridge device 102 of composite memory device 100 shown in
To illustrate this storage conflict when the bridge device channel data buffer capacity is less than the combined page source capacity, first consider how a page read is performed by the bridge device. When performing a page read command, the bridge device automatically transfers the read data from the memory device to the onboard data buffer once the memory device has retrieved the read data from its memory array. The bridge device then updates its status register to ‘Ready’ indicating to the memory controller that the requested read data is ready to be driven out. However, with more than one memory device connected to a given channel, or a memory device capable of simultaneously accessing a page on each of two planes, it is desirable to simultaneously issue as many concurrent page operations as the memory devices can support in order to hide any internal latency, thereby improving the overall bandwidth of the memory system. When a page read has been issued concurrently to more than one memory device or a memory device with multiple page buffers, and with less than the ideal data buffer capacity on the bridge device, there arises a conflict such as to where to store all of the read data.
To illustrate by example, when 2 single plane memory devices connected to one channel have completed their internal array access to retrieve the read data from the addressed pages, the bridge device should automatically transfer the data to its onboard data buffer associated with the channel. If there is not enough capacity to store all the data, then some data could potentially be lost.
Therefore, an arbitration method has been developed to resolve the storage space conflict which allows internal memory device read latencies to be over-lapped, as desired, and by scheduling the transfer of read data from the flash memory devices to the bridge device data buffer based on flash completion order, priority, and command sequencing. According to the present embodiments, status registers of the bridge device are used for the arbitration method.
The method starts at step 400 where the bridge device receives requests to read data from at least 2 different page buffer sources connected to one channel. The requests may arrive at the bridge chip at the same time or one after the other, and corresponding read commands are issued to the memory devices. In order to take advantage of the read latency of flash memory devices, such read commands are typically issued in rapid succession. Eventually, a first page buffer source is ready to transfer its page of data to the bridge device, and it signals the bridge device of its ready status. This first page buffer source is now referred to as page buffer source n. At this time, the other page buffer sources may not be ready to transfer their respective pages of data yet. At step 402, the bridge device instructs page buffer source n to transfer the stored read data to the bridge device page buffer. At step 404, the bridge device checks to see if there are read operations pending for at least one other page buffer source connected to the channel, indicating that a data transfer to the same data buffer is imminent. If there are no other read operations pending for at least one other page buffer source, then the method returns to step 400, and the bridge device data buffer is eventually filled with the read data from page buffer source n. On the other hand, if there is one other pending read operation for another page buffer source, then a deferred data transfer status is set for the other page buffer sources at step 406. It is assumed in the present example there are only two page buffer sources connected to the channel.
Now that the other page buffer source, referred to as page buffer source n+1, is set to the deferred status by the bridge device, the bridge device is inhibited from requesting data transfer from page buffer source n+1 to its data buffer while the data buffer is in use. As will be described later, this enables the bridge device to ignore any ready status issued by the other page buffer source n+1 that would have otherwise triggered the bridge device to issue a data transfer command to page buffer source n+1. The data buffer being in use can mean it is being filled with data transferred from page buffer source n, or that the data buffer is in the process of outputting its contents to the host system or memory controller. In either case, the data buffer is unavailable for receiving read data from another page buffer source.
At step 408, the bridge device waits for the data buffer of the channel to become available, and when it does, the value n is incremented at 410 to access the next page buffer source n+1. The method then returns to step 402 and the bridge device issues a data transfer command to page buffer source n+1 which is ready to provide its page of data.
In summary, the bridge device can determine the first page buffer source that is ready, while keeping track of the other page buffer source(s) which have pending read operations for the purpose of deferring their data transfer operations until the data buffer associated with the channel is available. In embodiments where there are multiple page buffer sources connected to the channel and all are ready to transfer their data, the bridge device can be configured with any number and combination of prioritization schemes in order to determine which specific page buffer source is next. Example prioritization schemes include one based on order of arrival, another can be importance of transactions, and yet another can be based on address ranges. Any prioritization scheme can be used with the presently described methods.
The method begins at step 500 where the bridge device monitors the ready/busy status signals (egg. RBb_1 and RBb_2) from all the devices connected to the channel. At step 502, a memory devices drives its ready/busy status signal to an active logic state, indicating to the bridge device that the corresponding memory device has completed internal read operations and its page buffer now stores read data from the memory array. It is assumed that this memory device is the first ready memory device, and is now referred to as device n. The bridge device now checks if device n has been set to a deferred state. Since it is the first device to be ready in the present example, the method proceeds to step 506 where the bridge device issues a data transfer command to device n. In response to the data transfer command, the memory device begins outputting the contents of its page buffer, which is received and stored in the data register of the bridge device. Proceeding to step 508, the bridge device checks if read commands have been issued to any other memory devices. As will be described later in further detail, the bridge device keeps track of the read commands it has issued to each memory device. If the bridge device determines there is at least one other memory device that has received a read command, it then sets a deferred status for each of these memory devices at step 510. In the present example, it is assumed that device n+1 is on such memory device, and the bridge device sets a deferred status for it. On the other hand, if no other read commands have been issued and device n is the only memory device connected to the channel which received a read command, then the method returns to step 500. Returning to step 510, the method returns to step 500 after the deferred status is set for the appropriate memory devices.
Returning to step 500, the bridge device waits for the ready/busy status signal for the next device to be ready, which in the example would be device n+1. It is eventually received at step 502 and the bridge device checks at step 504 if device n+1 is in the deferred state. Because device n+1 was previously set to the deferred state by the bridge device, the method then proceeds to step 512 where the bridge device waits for the data buffer of the channel to become available. In one embodiment, the memory controller queries the bridge device to check the status of the internal data transfer operations between the bridge device and the memory device. In another embodiment, the bridge device could issue its own ready/busy signal to the memory controller to indicate that the internal data transfer operation for that channel has been completed. In either case, the memory controller can issue a command to reinitiate the page read operation for memory device n+1 when it has received an indication that the internal data transfer operation for device n has been completed. Once the data buffer has become available, the bridge device then issues a data transfer command to device n+1 to initiate data transfer from the page buffer of device n+1 to the data buffer of the bridge device. If there are no other memory devices that received read commands, then the method returns to step 500, thereby ending the data transfer arbitration method for the channel.
The presently described bridge device embodiment can arbitrate data transfers from any number of memory devices connected to a single channel by including status register bits that record status information of each memory device connected to the channel.
The sequence diagram of
Internal signal D1_rd_in_prog is a status signal set by the bridge device when a read operation is issued to device 1. Internal signal neg_D1_rd_in_prog is pulsed in response to a falling edge of D1_rd_in_prog. Internal signal rd_data_D1_stb is a pulsed signal generated only when the neg_D1_rd_in_prog pulse is detected and deferred status signal defer_D1_rd is in the inactive state. When rd_data_D1_stb is pulsed, a read transfer command is issued to memory device 1 to initiate transfer of its page buffer data to the data buffer associated with the channel of the bridge device. The status signal defer_D1_rd can be derived from the status register. The remaining internal signals D2_rd_in_prog, neg_D2_rd_in_prog, rd_data_D2_stb and defer_D2_rd, function in the same was as their respective D1 counterpart signals, but are associated with memory device 2. A description of the sequence diagram now follows, and it is noted that the time periods are not shown to scale. At the bottom of
The host controller, such as a memory controller, may begin a 2-device read operation after it has determined that the target devices in the target channel are ‘Ready’, as shown at ‘A’, by reading the status bits. At ‘A’, both status bits b1 and b2 are logic 0, indicating that both memory devices D1 and D2 are ready. The first step is for the memory controller to issue two ‘page read’ commands where read command 600 is addressed device 1 and read command 602 is addressed to device 2. The bridge converts these commands into commands understood by the flash memory devices and issues them to the appropriate memory devices. After the bridge device decodes each of the read commands, it sets the corresponding Ready/Busy bit to 1, as shown at ‘B’ and ‘C’, and sets D1_rd_in_progress and D2_rd_in_progress to the high logic state to keep track of read commands that are currently in progress. After the memory devices have accepted their respective read commands, memory device 1 and 2 drives its RBb_1 and RBb_2 lines to a logic ‘0’ level, shown 604 and 606 respectively, indicating to the bridge device that they are busy with their respective read operations.
Since it takes some time for the bridge device to process each read command, issue the corresponding command to the target memory device and wait for that memory device to accept the command, the controller must wait a predefined separation latency period t2CR before issuing the second of the pair of read commands 602 so that the bridge device can finish processing the first read command 600. The controller is free to wait longer before issuing the second read command 602 but, generally, should issue it well in advance of the expiration of the first memory device's read time tR. Otherwise the bridge device's internal bus will be busy transferring data from the first memory device D1 to the bridge device and the bridge device could suffer a malfunction.
The memory devices are busy for a time period as defined in the manufacturer's specification of the particular devices being used, and may be denoted as tR. In
During a ‘normal’ single memory device read operation, the bridge device automatically issues a ‘data read’ command to the flash to transfer the read data from the memory device to the bridge device's data buffer following the rising edge of RBb. According to the present embodiment, extra control signals are used that allow for the scheduling of the transfer of the auto-read transfer during two-device (or multi-device) read operations. For two-device reads, the rising edge of the RBb causes the bridge device to de-assert rd_in_progress for that memory device. In the presently shown example, strobe signal rd_data_D1_stb is generated in response to RBb_1 rising to the logic 1 level. The strobe signal rd_data_D1_stb is the trigger for issuing the ‘read data’ command for memory device D1. This strobe is generated provided that the memory interface I/O bus is not busy transferring data from other device(s) connected to the bus of the channel. A mechanism for arbitrating this strobe is described below.
The provided example embodiments use logic-generated strobes to indicate when a signal of interest has made a positive edge transition from logic 0 to 1 or a negative edge transition from logic 1 to 0 but other techniques may be possible. The main concept in the present embodiments is that the edge is detected and used to trigger a subsequent logic event.
Since the two ready/busy signals RBb_1 and RBb_2 may go high close enough together that the data for the first memory device has not yet finished being transferred to the data buffer of the bridge device, there may be contention between the two pages of data for access to the data buffer of the bridge device. To solve this problem, a second set of control bits are provided that are used to defer the automatic read data transfer for the memory device that finishes later. In
(Positive edge of defer—Dj_rd)=pos_edge_RBbi&&Dj_rd_in_progress
The falling edge of D1_rd_in_progress triggers a strobe rd_data_D1_stb to be generated via neg_edge_D1_rd_in_prog, provided that defer_D1_rd is not high. This strobe causes the bridge device to begin transferring the read data from device 1 (D1) to the bridge device's data buffer. The NAND IO is shown at 609 to be carrying valid data from the page buffer of memory device D1 to the data buffer of the bridge device. The rising edge of defer_D2_rd causes the status register to log the read operation for memory device 2 as having been deferred as shown in interval ‘D’ where status bit d2 is set to the logic 1 state.
Later, at 610, memory device D2 becomes ‘Ready’ and de-asserts RBb_2, causing the D2_rd_in_progress in the bridge device to go low, thereby signaling the end of that memory device's page read process. Since defer_D2_rd is high at this time, the automatic transferring of the read data to the data buffer is deferred until a later time. In other words, defer_D2_rd being high prevents the generation of rd_data_D2_stb. As shown at 612, the rd_data_D2_stb strobe signal is shown in dashed lines, indicating where the strobe would have occurred if memory device D2 was not in the deferred state. The status register then changes status bit b2 to a logic 0 to reflect the fact that memory device D2 has become ‘Ready’ but that it is deferred, as shown in interval ‘E’.
Eventually, the data transfer from memory device D1 to the data buffer of the bridge device is completed at the end of the first “Internal Transfer Time” period, labeled with reference numeral 614. The bridge device then changes status bit b1 to a logic 0 to indicate that it is now ready, and in particular that the data transfer operation is finished. Now the memory controller reads out the status register of the bridge device to determine the status of the internal operations.
The status register may be read at any time, and in this particular operation the memory controller is looking for one of the devices to be ‘Ready’ and not in the deferred status before it can proceed to transferring out data. The status read operation is not shown in the diagram but the value the controller would read is shown in interval ‘F’. The memory controller is aware of what transactions it has outstanding so this status register value tells the memory controller that the read from memory device D1 is complete and the data is available in the data buffer. The status value also tells the memory controller that the read command sent to memory device D2 has also completed but that the data transfer to the data buffer has been deferred and requires further action to retrieve. The memory controller then proceeds to issue a burst read command, which is indicated by CSI strobed to the 1 logic level at 616. The data of memory device D1 stored in the data buffer is then read out of the bridge device with a read packet indicated by DSI strobed to the 1 logic level at 618. As shown in
After the memory controller has finished reading out the data from memory device D1, it is free to read the data from memory device D2. To do this it re-issues the original page read command to the same page in memory device D2, via another CSI strobe 620 with corresponding command (not shown). Since the page of data is still stored in the page buffer of memory device D2, and the bridge device auto-transfer operation was deferred, the bridge device simply reads out the data from the page buffer of memory device D2 into its data buffer by issuing a rd_data_D2_stb strobe at 622 in response to the re-issued page read command, making it available for the memory controller to later retrieve. During this time the status register indicates that memory device D2 is ‘Busy’ by setting status bit b2 to logic 1, but no longer in the deferred state as defer_D2_rd is set to the non-deferred 0 logic state, also shown in interval ‘G’ with status bit d2 at the logic 0 state. Once the data transfer from memory device D2 to the bridge device is completed, the status register value is updated to indicate that memory device D2 is ‘Ready’, as shown in interval ‘H’ with status bit b2 set back to logic 0. The memory controller is designed to know approximately how long to wait before checking to see if the internal bridge device data transfer operation is completed since this data is provided by the flash manufacturers and included with the bridge device specification. After the second “Internal Transfer Time” has elapsed, the memory controller reads the status register to confirm that memory device D2 is ‘Ready’ and that its data is available, and then proceeds to issue another burst read command at 622, and the data is output on the Qn output port in response to the subsequent DSI strobe.
The method of
The memory controller requests the status of the channel from the bridge device again at step 664, and based on the status bits write out, the memory controller determines if the other device connected to the channel is ready and deferred at step 666. Once again, if either condition is false, the method returns to step 664. Otherwise, the method proceeds to step 668, where the memory controller reissues a page read command to the deferred device. Within the bridge device, a data transfer operation is initiated to transfer the data stored in the page buffer of the memory device to the data buffer of the bridge device. At step 670, the memory controller waits for its internal read timer to elapse before reading the status of the channel at step 672. If the status register indicates that this other device is not ready at step 674, then the method returns to step 672. Otherwise, the page of data is now stored in the data buffer of the bridge device, and the memory controller issues a burst read command to read out the contents of the data buffer at step 676. The method then ends at step 678, if there are no further memory devices connected to the channel. The presently described example assumes that there are only 2 memory devices connected to the channel. In an alternate embodiment, if there were more than 2 memory devices connect to the channel and the memory controller issues page read commands to each of them, then the method would not end at step 678, but would instead return to step 664 for reading out data from the next memory device.
With reference to
Steps 616, 658, 660 and 662 corresponds to events occurring after the CSI strobe and up to the third CSI strobe. After the memory controller has issued the read commands it sets its internal timer, if it is equipped with one, and wait for it to elapse before reading the bridge device status register to determine which, if any, of the target memory devices are ‘Ready’ with data to be transmitted out of the bridge device. If the controller is not equipped with an internal read timer, it may poll the status register at intervals or have some other means of determining when to check the bridge device status register. When one of the memory devices is determined to be ‘Ready’ by information in the status register, the memory controller issues the Burst Read command to the its device followed by the read packet (DSI=1) in order to transmit the read data from the ‘Ready’ memory device out so that it may be returned to the memory controller.
Steps 664, 666 and 668 corresponds to events occurring at the 4th CSI strobe. The memory controller polls or otherwise checks the bridge device status register until the second memory device is ‘Ready’ but ‘Deferred’. The memory controller then re-issues the original page read command that it sent to this memory device causing the bridge device to read the data from the page buffer into the bridge device data buffer.
Steps 670, 672, 674 and 676 corresponds to events occurring after the fourth CSI strobe and after the fifth CSI strobe. After re-issuing the read command to the deferred device, the memory controller waits for it's read timer to elapse, indicating the end of the Internal Transfer Time, then polls the status register until the deferred memory device is ‘Ready’ and not ‘Deferred’. Again, there may be an alternate preferred method for determining when to read the status register but that is up to the memory controller designer. Once the desired status is read, the memory controller issues a Burst Read command for the data followed by the read packet to transmit the data back to the controller.
The previously described embodiments easily handle the situation where one device clearly becomes ready before a second device connected to the same channel becomes ready. There can be the situation where both memory devices connected to the same channel become ready at the same time, by virtue of their respective ready/busy signals RBb being asserted at the same time. In this situation, bridge device can be preprogrammed or hardwired to prioritize one memory device over the other. Alternately, the priority can be dynamically set. For example, an additional bit could be provided that is controlled by means of a programmable register. If the register is programmed with logic 0 for example, memory device 1 will be given priority. If the register is programmed with logic 1 for example, memory device 2 will be given priority. Any other techniques for prioritizing one memory device over another, or for prioritizing each memory device of a series of memory devices, can be used.
The previously described method of
The method of
The previously described multiplane arbitration method embodiment uses status register bits for tracking the planes of the memory device which are placed in the deferred status.
The two-plane read operation is very similar to the memory device read operation except that, since there is only one memory device involved, there is no device-to-device contention for data buffer space. When the ready/busy signal RBb goes high, both pages of read data are available so the choice of which page buffer transferred to defer should be predetermined. In this example plane 2 is always deferred and it is hardwired into the logic. Alternatively it is possible to give priority to plane 2 or set the priority through a control register so that the priority can be changed dynamically. Other methods are also possible.
Referring to
It should be noted that the two-plane read embodiment presented above can be combined with the two device read embodiment to yield a two-device-two-plane read. In such an embodiment, a first memory device to be ready reserves use of the data buffer of the bridge device for transferring data from its page buffers, while the remaining memory devices are held in a deferred a state.
The previously described data transfer arbitration method embodiments of
The bridge device controller 908 converts the global commands received from the bridge device interface 902 into the native commands, and can provide output data including status register data to the memory controller via bridge device interface 902. The data buffer 910 is sized for storing one page of data received from a memory device, which corresponds in size to a page buffer of the memory device. Bridge device controller 908 controls data buffer 910 to receive data from the memory devices and to output its contents to the memory controller via bridge device interface 902. The bridge device controller is also responsible for updating the bits of status register 904. The I/O interface 912 provides the commands and control signals to the memory devices connected to the channel. In the present example, interface 912 is a NAND flash I/O interface for communicating with NAND flash memory devices. While
Following is a brief discussion of the circuit of
The second data transfer control circuit has an identical configuration to that of the first data transfer control circuit, except that AND logic gate 972 receives pos_edge_RBb_1 and AND logic gate 974 receives Defer_RD_D2 (CSI). Therefore, the second data transfer control circuit can be inhibited from generating its strobe signal rd_data_D2_stb if a rising edge of RBb_1 is detected first. The read strobe generator 964 can include any logic which detects the falling edge of D1_rd_in_prog and generates a rd_data_D1_stb logic 1 pulse in response thereto while defer_D1_rd is at a logic 0 state, but is inhibited from doing so when defer_D1_rd is at a logic 1 state. Furthermore, the read strobe generator 964 logic should also generate a rd_data_D1_stb logic 1 pulse in response to a falling transition of defer_D1_rd. The read strobe generator 966 can include the same logic circuitry. The rd_data_D2_stb signal can be used by BD controller 908 of
The system and device in accordance with the techniques described herein are applicable to a memory system having a plurality of devices connected in series. The devices are, for example, memory devices, such as dynamic random access memories (DRAMs), static random access memories (SRAMs), flash memories, DiNOR Flash EEPROM memories, Serial Flash EEPROM memories, Ferro RAM memories, Magneto RAM memories, Phase Change RAM memories, and any other suitable type of memory.
In the preceding description, for purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the embodiments of the invention. However, it will be apparent to one skilled in the art that these specific details are not required in order to practice the invention. In other instances, well-known electrical structures and circuits are shown in block diagram form in order not to obscure the invention.
It will be understood that when an element is herein referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is herein referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (i.e., “between” versus “directly between”, “adjacent” versus “directly adjacent”, etc.).
Figures in this application are not necessarily to scale. For example, in
Certain adaptations and modifications of the described embodiments can be made. Therefore, the above-discussed embodiments are considered to be illustrative and not restrictive.
This application claims the benefit of priority from U.S. Provisional Patent Application No. 61/332,232 filed May 7, 2010, the disclosure of which is expressly incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61332232 | May 2010 | US |