Many modern electronic devices such as cell phones, PDAs, portable music players, appliances, and so on typically incorporate an embedded computer system. An embedded computer system typically contains a computer processor (referred to as a host), non-volatile memory (such as a flash memory and/or ROM memory), and volatile memory such as a dynamic random access memory (DRAM). The host may include a central processing unit (CPU), digital signal processor (DSP), microcontroller unit (MCU) or direct memory access (DMA) data transmission device. The embedded system may also include a nonvolatile memory controller which may be used to control and/or access the nonvolatile memory.
In the embedded system, the volatile memory may typically be accessed more quickly than non-volatile memory. Thus, for example, code executed by the host may be stored in the volatile memory and accessed from the volatile memory by the host. However, because volatile memory typically requires a power source to maintain data stored therein, the volatile memory is typically erased when the embedded system is powered down. Accordingly, the nonvolatile memory, which typically does not require a power source to maintain stored data, may be used to store the code executed by the host while the embedded system is powered down. When the embedded system is powered up (e.g., when the embedded system enters a reset state), the code used by the host system may be loaded into the volatile memory and executed from the volatile memory by the host. The process of loading code stored in the non-volatile memory into the volatile memory and executing the code from the volatile memory may be referred to as code shadowing.
To maintain flexibility in accessing data in the embedded system, there may be a desire to transfer data between the host, volatile memory, and nonvolatile memory in a variety of ways. For example, there may be a desire to perform data transfers between the volatile memory and the host, and between the volatile memory and one or more nonvolatile memories. While maintaining flexibility in accessing data in the embedded system, there may also be a desire to reduce the cost and complexity of the interface between the host and the components of the memory system.
Accordingly, what is needed is an improved system and method for accessing memory in an embedded system.
Embodiments of the invention generally provide a method and apparatus for controlling a shared bus. The shared bus is shared between a volatile memory device via a nonvolatile memory interface of the volatile memory and two or more nonvolatile memory controllers. In one embodiment, the method includes receiving a request from a first nonvolatile memory controller of the two or more nonvolatile memory controllers for control of the shared bus. In response to receiving the request, control of the shared bus is granted to the first nonvolatile memory controller if the priority for each of the two or more nonvolatile memory controllers indicates that control should be granted. When control is granted to the first nonvolatile memory controller, the first nonvolatile memory controller is the only nonvolatile memory controller of the two or more nonvolatile memory controllers which performs data access operations via the shared bus.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Embodiments of the invention generally provide methods and apparatus for controlling a shared bus. The shared bus is shared between a volatile memory device via a nonvolatile memory interface of the volatile memory and two or more nonvolatile memory controllers. In one embodiment, a method includes receiving a request from a first nonvolatile memory controller of the two or more nonvolatile memory controllers for control of the shared bus. In response to receiving the request, control of the shared bus is granted to the first nonvolatile memory controller if the priority for each of the two or more nonvolatile memory controllers indicates that control should be granted. When control is granted to the first nonvolatile memory controller, the first nonvolatile memory controller may be the only nonvolatile memory controller of the two or more nonvolatile memory controllers which performs data access operations via the shared bus. By providing exclusive control of the shared bus, embodiments of the invention may prevent devices from performing conflicting access operations via the shared bus.
In one embodiment, the host 102 may include control circuitry 132 and a volatile memory interface 110 for communicating with a volatile memory interface 112 of the volatile memory 104. In one embodiment, the volatile memory interface 112 may include an interface which conforms to the Joint Electron Device Engineering Council (JEDEC) Low Power Double Data Rate (LPDDR) synchronous dynamic random access memory (SDRAM) Specification. Optionally, any other appropriate volatile memory interface (e.g., utilizing DRAM interface control signals such as write enable (WE), row access strobe (RAS), column access strobe (CAS), and chip select (CS)) may be used.
The control circuitry 132 may be used, for example, to execute computer instructions and process data received from the volatile memory 104 or another location (e.g., a disk drive or other storage device). In some cases, the host 102 may also include additional circuitry, e.g., input/output (I/O) interfaces for receiving user input and additional interfaces to other embedded system components such as additional memory components, disk drives, and other devices. Also, the host 102 may utilize the volatile memory interface 112 to provide commands and information and to receive information from the volatile memory 104, nonvolatile memory controllers 106, and/or nonvolatile memories 108.
In one embodiment, the volatile memory 104 may include a volatile memory interface 112 for communicating with the host 102 and a nonvolatile memory interface 120 for communicating with the nonvolatile memory controllers 106 via the shared bus 182. The volatile memory 104 may act as a slave (e.g., the volatile memory 104 may be controlled by the other nonvolatile memory controllers 106 via the shared bus 182) with respect to both the host 102 and the nonvolatile memory controller 106. Optionally, the volatile memory 104 may be master with respect to the nonvolatile memory controller 106. The nonvolatile memory interface 120 may include any interface used to access the nonvolatile memory 108, including, for example, the write enable (WE), output enable (OE), and chip select (CS) control signals. As mentioned, in one embodiment, the bus mediator circuit 180, which may either be provided as part of a nonvolatile memory controller 106 or as a separate device, may be used to control sharing of the shared bus 182 between the nonvolatile memory controllers 106.
The volatile memory 104 may also include volatile memory control circuitry 114 for processing commands received via the volatile memory interface 112 and/or nonvolatile memory interface 120. The volatile memory 104 may further include a volatile memory array 116 for storing data and one or more buffers 118 for transferring data and/or commands between the host 102, volatile memory 104, nonvolatile memory controllers 106, and/or nonvolatile memories 108. In one embodiment, the buffers 118 may be dynamic RAM (DRAM) memory. Optionally, the buffers 118 may be static Ram (SRAM) memory. The volatile memory 104 may also include a nonvolatile memory interface 120 for communicating with the nonvolatile memory controllers 106.
In one embodiment of the invention, each nonvolatile memory controller 106 may include a first nonvolatile memory interface 122 for communicating with the volatile memory 104 via the shared bus 182 and a second nonvolatile memory interface 126 for communicating with a corresponding nonvolatile memory 108. Each nonvolatile memory controller 106 may also include nonvolatile memory control circuitry 124 for controlling data transfers between the volatile memory 104, nonvolatile memory controller 106, and nonvolatile memory 108. In one embodiment, each nonvolatile memory 108 may be accessed via a nonvolatile memory interface 128. Data in each nonvolatile memory 108 may be stored in the nonvolatile memory array 130.
In one embodiment of the invention, the volatile memory 104 may further provide internal direct memory access (iDMA) control registers 140 for controlling DMA transfers between the nonvolatile memory 108, nonvolatile memory controller 106, and volatile memory 104. As described below, modifying the iDMA control register settings in the volatile memory 104 may cause the volatile memory 104 to issue commands to the nonvolatile memory controller 106 causing corresponding changes to be made in iDMA control registers 152 in an iDMA controller 150 of the nonvolatile memory controller 106. Such changes may, for example, result in a command being issued to the iDMA controller 150 which causes a DMA transfer to be performed, e.g., between the volatile memory 104, a given nonvolatile memory controller 106, and a corresponding nonvolatile memory 108.
In one embodiment, the DMA transfer may, for example, utilize buffers 154 in the nonvolatile memory controller 106 to temporarily hold data being transferred between the nonvolatile memory 108 and the volatile memory 104. With respect to the volatile memory 104, the DMA transfer may utilize an iDMA volatile memory access control 162 to access the volatile memory array 116 (e.g., to read or write data for the DMA transfer). Data from the volatile memory array 116 may be transferred to or from an iDMA buffer 144 which may in turn be used to transfer data via the nonvolatile memory interface 120 of the volatile memory 104. An iDMA buffer controller 148 may be used to control the data transfer between the iDMA volatile memory access control 162, iDMA buffer 144, and nonvolatile memory interface 120 of the volatile memory 104.
In one embodiment, the volatile memory 104 may also include Universal Serial Bus (USB)/Advanced Technology Attachment (ATA) registers 142 which may be used to control USB/ATA functionality in the nonvolatile memory controller 106. For example, in one embodiment, when a change is made to the USB/ATA registers in the volatile memory 104, the volatile memory 104 may automatically cause a corresponding change to be made in USB/ATA control registers 158 in the nonvolatile memory control circuitry 124 of the nonvolatile memory controller 106. Thus, the host 102 may be able to access USB/ATA functionality of the nonvolatile memory controller 106 via the volatile memory 104.
In one embodiment of the invention, a portion of the volatile memory address space 190 (depicted in
In one embodiment, the overlay window 192 may be enabled or disabled, for example, as a result of a command received via the volatile memory interface 112 (e.g., by setting or clearing an overlay window enable bit, OWE). Furthermore, in some cases, the volatile memory addresses occupied by the overlay window 190 may be configurable. Thus, for example, the base address (OW Base Address) of the overlay window 192 as well as the size 194 of the overlay window 192 may be configurable by modifying control register settings in the volatile memory 104.
In some cases, by accessing addresses in the overlay window 192 via the volatile memory interface 112, the host 102 may be able to access data in the nonvolatile memory 108 as well as overlay window control registers 138, iDMA control registers 140, and USB/ATA control registers 142. Thus, the overlay window 192 may allow access to registers and memory arrays other than the volatile memory array 116 via the volatile memory interface 112. If an access command (e.g., a read or a write command) received via the volatile memory interface 112 does not fall within the range of addresses specified by the overlay window, then the access command may be used to access the volatile memory array 116. If the received address does fall within the overlay window 192, then the access command may be used to access other data such as data in the overlay window buffer 146 (via buffer address space 196) or control registers 138, 140, 142 in the volatile memory 104. The particular buffer portion or register 138, 140, 142 via the overlay window 192 may depend, for example, on the relative offset of the buffer address space 196 or register 138, 140, 142 within the overlay window 192.
Use of the overlay window 192 for issuing commands, as well as other aspects of communication in the embedded system 100 are described in greater detail in U.S. patent application Ser. No. 11/456,061, Attorney Docket No. QIMO/0263, entitled CONTROL PROTOCOL AND SIGNALING IN A NEW MEMORY ARCHITECTURE, filed Jul. 6, 2006, by Rom-Shen Kao, which is hereby incorporated by reference in its entirety. While described above with respect to using an overlay window 192 for accessing and issuing commands to the volatile memory 104, nonvolatile memory controllers 106, and nonvolatile memories 108, in general, embodiments of the invention may be utilized with any type of control mechanism (e.g., different interfaces using different interfaces including different connection pins or providing different commands) for communication and control between the host 102 and other components of the embedded system 100.
In one embodiment of the invention, the host 102 may issue commands to the volatile memory 104 and nonvolatile memory controllers 106 via the volatile memory interface 112 of the volatile memory 104. The commands may, for example, cause data to be transferred between one of the nonvolatile memories 108 and the volatile memory 104 via a nonvolatile memory controller 106. The commands may also cause data to be transferred between one nonvolatile memory 108 and another volatile memory 108 via two nonvolatile memory controllers 106. The commands may further modify control settings in the volatile memory 104, nonvolatile memory controllers 106, and/or nonvolatile memories 108.
Upon determining that the command requires usage of a first nonvolatile memory controller 106, the volatile memory device 104 may provide an interrupt to the first nonvolatile memory controller 106 via the shared bus 182 at step 206. For example, the volatile memory 104 may assert an interrupt signal and/or an interrupt vector across the shared bus 182 indicating which nonvolatile memory controller 106 is the target of the interrupt. Optionally, a separate interrupt signal may be provided for each nonvolatile memory controller 106 (e.g., via separate pins of the volatile memory 104) and the volatile memory 104 may only assert a given interrupt signal for the selected nonvolatile memory controller 106 if the received command targets the selected nonvolatile memory controller 106. As described below, upon receiving the interrupt, the first nonvolatile memory controller 106 may attempt to service the interrupt by requesting control of the shared bus 182 from the bus mediator 180. If the first nonvolatile memory controller 106 is able to obtain control of the shared bus 182, the volatile memory 104 may process any commands received by the first nonvolatile memory controller via the shared bus while the interrupt is being serviced at step 208.
As described above, after an interrupt if received by one of the nonvolatile memory controllers 106, the nonvolatile memory controller 106 may be configured to request control of the shared bus 182 from the bus mediator circuit 180. After obtaining exclusive control of the shared bus 182, the nonvolatile memory controller 106 may be configured to service the interrupt, as described below.
At step 216, a response may be received from the bus mediator circuit 180 indicating whether control of the shared bus is granted. The response may include, for example, a control grant signal which is lowered to indicate that control is not granted or asserted to indicate that control is granted. At step 218, a determination may be made of whether control of the shared bus 182 is granted by the bus mediator 180.
If control of the shared bus 182 is not granted, the nonvolatile memory controller 106 requesting control may wait until control of the shared bus 182 is granted at step 220. For example, the nonvolatile memory controller 106 may poll the control grant signal provided by the bus mediator circuit 180 until the signal is asserted. Optionally, the nonvolatile memory controller 182 may go into a sleep state until the bus mediator circuit 180 asserts the control grant signal and wakes the nonvolatile memory controller 182 from the sleep state. In some cases, the nonvolatile memory controller 106 may also be configured with a timeout. If the bus mediator circuit 180 does not grant control of the shared bus 182 within the timeout period, the nonvolatile memory controller 106 may issue another request to the bus mediator circuit 180 or provide an error indication to the host 102, for example, via the nonvolatile memory interface 120 of the volatile memory 104.
If control of the shared bus is granted, the nonvolatile memory controller 106 which received the interrupt may determine the interrupt source at step 222. For example, an interrupt may be issued by the volatile memory 104 in response to a command received from the host 102 or in response to a request from the iDMA buffer controller 148 (e.g., the interrupt may be issued by the iDMA buffer controller 148 to request that the nonvolatile memory controller 106 a DMA transfer or a portion of a DMA transfer). Similarly, the interrupt may be issued by another nonvolatile memory controller 106.
The nonvolatile memory controller 106 may determine the interrupt source in any manner. For example, the interrupt source may be provided as an interrupt source vector via pins of the nonvolatile memory interface 122 and decoded by the nonvolatile memory controller 106. Optionally, nonvolatile memory controller 106 may provide a separate pin for each interrupt source, and the interrupt source may be determined from the pin on which the interrupt is received. As another example, the nonvolatile memory controller 106 may determine the interrupt source by reading from a location in the volatile memory 104 such as a memory mapped register corresponding to the nonvolatile memory controller 106 and configured to provide an indication (e.g., a value decoded by the nonvolatile memory controller 106) of the source of the interrupt.
At step 224, the nonvolatile memory controller 106 may determine the reason for the interrupt. For example, the interrupt may indicate that the host 102 has issued a command to the nonvolatile memory controller 106 to modify one or more of its control settings. The interrupt may also indicate that the nonvolatile memory controller 106 should perform a data transfer or part of a data transfer, for example, between the nonvolatile memory 108 and the volatile memory 104. As described above, such a data transfer command may be issued both by the host 102 and/or by DMA circuitry such as the iDMA buffer controller 148 in the volatile memory 104.
After determining the reason for the interrupt, the nonvolatile memory controller 106 may service the interrupt at step 226. For example, where the host 102 has provided new control settings for the nonvolatile memory controller 106 in a location in the volatile memory 104 (e.g., in a memory-mapped register), the nonvolatile memory controller 106 may download the new control settings from the volatile memory 104 via the shared bus 182 and the nonvolatile memory interface 120 of the volatile memory 104 and implement the new control settings. Where the host 102 or other circuitry in another device has requested that the nonvolatile memory controller 106 perform a data transfer, the nonvolatile memory controller 106 may retrieve a source address (e.g., for the volatile memory array 116, in a buffer 118, or in a nonvolatile memory array 130) and a destination address (e.g., to one of the other listed locations) and amount of data to be transferred. Information for the transfer may, for example, be retrieved from memory-mapped registers in the volatile memory 104. The nonvolatile memory controller 106, acting as master with respect to the volatile memory 104 and the corresponding nonvolatile memory 108, may then perform the requested transfer of data via the shared bus 182.
As described above, in one embodiment, the bus mediator 180 may be used to grant control of the shared bus 182.
In one embodiment, the determination may be made using a priority for each of the two or more nonvolatile memory controllers 106 which share the shared bus 182. For example, affixed priority may be established between each of the nonvolatile memory controllers 106 which share the shared bus 182. Priority may also be established, for example, by determining a priority from an interrupt vector or other indication of the interrupt type, using round-robin scheduling, or using any other priority/scheduling mechanism known to those skilled in the art. Also, in some cases, control of the shared bus 182 may be granted on a first come, first serve basis. In one embodiment, each nonvolatile memory controller 106 may maintain control of the shared bus 182 as long as the nonvolatile memory controller 106 is performing an operation. Optionally, in some cases, a nonvolatile memory controller 106 in control of the shared bus 182 may temporarily lose control to another nonvolatile memory controller 106 and resume operation after control is returned.
At step 236, a determination is made of whether control of the shared bus 182 should be granted. If control of the shared bus 182 should not be granted (for example, if one or more other nonvolatile memory controllers 106 maintains priority for control of the shared bus 182), then at step 238, the bus mediator 180 may wait until control of the shared bus 182 is relinquished by other nonvolatile memory controllers 106 with higher priority. When a determination is made to grant control of the shared bus 182 to the first nonvolatile memory controller 106, then control of the shared bus 182 may be granted at step 240. Control of the shared bus 182 may, for example, be granted by asserting a shared bus control signal which is detected by the first nonvolatile memory controller 106.
In some cases, when granting control of the shared bus 182 to a first nonvolatile memory controller 106, a second nonvolatile memory controller 106 may be temporarily interrupted, for example, while the second nonvolatile memory controller 106 is performing a data transfer such as a DMA transfer. Where a second nonvolatile memory controller 106 is temporarily interrupted by a first nonvolatile memory controller 106, the second nonvolatile memory controller 106 may later be allowed to continue the interrupted data transfer after the first nonvolatile memory controller 106 has completed servicing its interrupt.
For example, when the second controller 106 is interrupted, the bus mediator 180 may store a record indicating that the second controller 106 was interrupted. After the first controller 106 has received control, services the interrupt, and relinquished control, the bus mediator 180 may then use the stored record to return control of the shared bus 182 to the second controller 106, thereby allowing the second controller 106 to resume the interrupted data transfer. In one embodiment, instead of using a record stored by the bus mediator 180, the second controller 106 may provide an indication to the bus mediator 180 that control should be returned after the first controller 106 has finished. For example, upon losing control, the second controller 106 may assert a control request signal to the bus mediator 180. After the first controller 106 has relinquished control to the bus mediator 180, the bus mediator 180 may then provide control of the shared bus 180 to the second controller 106 in response to the control request signal asserted by the second controller 106.
In general, devices 104, 106 connected to the shared bus 182 may communicate across the shared bus 182 using any appropriate type of interface. Two exemplary interfaces are described below with respect to
In one embodiment, the depicted control signals may correspond to a pseudo-static random access memory (PSRAM) interface. As described below, the interface 300 may be used to perform synchronous burst operations. In some cases, the interface 300 may not utilize refresh configuration registers (RCR) or bus configuration registers (BCR). Also, in some cases, the interface 300 may omit wait signals, high address pins, and/or byte enable (UB/LB) signals.
In one embodiment, the interface 300 may also include an interrupt signal (INT) and reset signal (RESET). The interrupt signal may be used to provide an indication to the nonvolatile memory controller 106 when an interrupt has been issued. The reset signal may be used to reset the nonvolatile memory controller 106. In some cases, separate connections (e.g., connections which are not shared) may be provided for each reset and interrupt signal which is issued to a nonvolatile memory controller 106. Optionally, a single shared interrupt signal and shared reset signal may be provided to all nonvolatile memory controllers 106, and separate chip enable (/CE) signals may be provided to each controller 106 to indicate which controllers are receiving the interrupt signals and/or reset signals.
In one embodiment of the invention, the interface 300 may be used to issue a reset command to a nonvolatile memory controller 106. Issuing the reset command may be performed, for example, when the embedded system 100 is initiated (e.g., powered up) or if the nonvolatile memory controller 106 experiences an error. By resetting the nonvolatile memory controller 106, the nonvolatile memory controller 106 may be place in a defined state, for example, by loading predefined settings into controller memory and preparing the controller 106 to service any received interrupts. In some cases, multiple reset states may be provided (e.g., the nonvolatile memory controller 106 may be placed in one of multiple configurations after receiving a reset command) by providing a reset vector indicating which reset state should be assumed by the controller 106 after receiving the reset command.
In one embodiment of the invention, the interface 300 may be used to perform a burst read operation to read multiple data from an address within the volatile memory 104. The address may, for example, correspond to a buffer 118 or a location within the volatile memory array 116. During the burst read operation, a single burst read command and address are provided by the nonvolatile memory controller 106 via the command pins and address and data pins ADQ[15:0]. After the single burst read command and address are provided, subsequent data for the burst read command may be provided via the address and data pins ADQ[15:0].
After receiving the burst read command, the volatile memory 104 may be configured to begin outputting data for the read command after a given latency (usually defined in clock cycles). For example, the latency may be specified either by changing settings within a control register of the volatile memory 104. The latency setting may also be specified by providing the setting in a command issued to the volatile memory 104. In the case depicted in
In one embodiment of the invention, the interface 300 may also be used to perform a burst write operation to an address in the volatile memory 104. During the burst write operation, a single burst write command and address are provided by the nonvolatile memory controller 106 via the command pins and address and data pins ADQ[15:0]. After the burst write command and address have been provided, subsequent data for the burst write command may also be provided via the same address and data pins ADQ[15:0].
Similar to the burst read command, the volatile memory 104 may be configured to receive data for the burst write command after a specified latency. In the case depicted in
In one embodiment of the invention, the interface between a given nonvolatile memory controller 106 and the volatile memory 104 may be further simplified by reducing the number of dedicated command pins and sending command information across the address and data bus pins ADQ[15:0]. Thus,
In one embodiment, command data may be provided via one or more pins of the address and data bus ADQ[15:0] as mentioned above. For example, three of the higher order pins of the address and data bus ADQ[15:13] may be used to provide a command code after the activate /ACT signal is lowered. For example, if the three higher order pins are used to transmit ‘000’ to the volatile memory 104, then the command may be a burst read command as described below with respect to
As mentioned above, the host 102 may be configured to provide a variety of commands to the volatile memory 104 via an overlay window or other mechanism. After the volatile memory 104 has received the commands, the volatile memory 104 may provide an interrupt to one or more nonvolatile memory controllers 106 designated by the host 102. Also as described above, the interrupt may provide an interrupt vector which indicates the type of command which has been issued by the host 102 and/or where the nonvolatile memory controller 106 should obtain data for the command (e.g., such as op-codes for the command, addresses for the command, and/or data for the command). For example, the interrupt vector may provide either an address or a number corresponding to a register within the volatile memory 104 from which the nonvolatile memory controller 106 receiving the interrupt may obtain command data for servicing the interrupt.
As described above, in one embodiment of the invention, in order to provide different commands to different nonvolatile memory controllers 106, separate control signals (e.g., chip-enable (/CE) signals, activate (/ACT) signals, reset (RESET) signals, and/or interrupt (INT) signals) may be provided to each nonvolatile memory controller 106.
As another option for providing separate commands to each nonvolatile memory controller 106, the host 102 and/or volatile memory 104 may be configured to identify each separate nonvolatile memory controller 106 using a separate memory controller identification (ID). For example, the host 102 may use a separate memory controller ID when providing commands to the volatile memory 104, and the volatile memory may then use separate control signals as described above to communicate an interrupt or a reset command to a corresponding nonvolatile memory controller 106.
Optionally, instead of using separate control signals, the volatile memory 104 may be configured to provide a given memory controller ID to each nonvolatile memory controller 106 when issuing an interrupt or reset command. The given memory controller ID may then be examined by each nonvolatile memory controller 106 to determine whether the interrupt or reset command was issued to that specific nonvolatile memory controller 106. For example, each nonvolatile memory controller 106 may have a specific memory controller ID encoded into circuitry on the nonvolatile memory controller 106 during manufacturing. Optionally, the memory controller ID may be specified by burning one or more fuses in the nonvolatile memory controller 106 or by storing the memory controller ID into nonvolatile memory within the nonvolatile memory controller 106 itself.
Also, in one embodiment, the memory controller ID for each nonvolatile memory controller 106 may be specified using one or more pins connected to the nonvolatile memory controller 106. For example, the pins may be connected to pull-up or pull-down resistors by the manufacturer of the embedded system 100 in a manner specifying separate memory controller IDs for each nonvolatile memory controller 106. In one embodiment, as depicted in
As described above, the bus mediator 180 may provide a simple and flexible tool for providing shared control of a shared bus 182. The shared control may ensure that multiple nonvolatile memory controllers 106 using the shared bus 182 to communicate data between a volatile memory device 104 and nonvolatile memory device 108 do not perform conflicting access operations via the shared bus 182.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
This application is related to U.S. patent application Ser. No. 11/456,061, Attorney Docket No. QIMO/0263, entitled CONTROL PROTOCOL AND SIGNALING IN A NEW MEMORY ARCHITECTURE, filed Jul. 6, 2006, by Rom-Shen Kao, U.S. patent application Ser. No. 11/456,063, Attorney Docket No. QIMO/0267, entitled METHOD FOR ACCESSING A NON-VOLATILE MEMORY VIA A VOLATILE MEMORY INTERFACE, filed Jul. 6, 2006, by Rom-Shen Kao, U.S. patent application Ser. No. 11/456,064, Attorney Docket No. QIMO/0268, entitled SYSTEM AND METHOD FOR ISSUING COMMANDS, filed Jul. 6, 2006, by Rom-Shen Kao, and U.S. patent application Ser. No. 11/456,067, Attorney Docket No. QIMO/0269, entitled METHOD FOR ACCESSING CONTROL REGISTERS VIA A MEMORY DEVICE, filed Jul. 6, 2006, by Rom-Shen Kao. Each of these related patent applications are herein incorporated by reference respectively in its entirety.