Computer-based systems typically contain semiconductor devices such as memory. The semiconductor devices are controlled by a controller, which may form part of the central processing unit (CPU) of the computer or may be separate therefrom. The controller has an interface for communicating information with the semiconductor devices. Known interfaces include interfaces that are “parallel” and interfaces that are “serial”.
Interfaces that are parallel use a large number of pins to read and write information. As the number of pins and wires increases, so do a number of undesired effects, including inter-symbol interference, signal skew and cross talk. These effects are exacerbated at high operating frequencies. Thus, an interface that is serial with a minimal number of input pins and wires may be desirable. A plurality of semiconductor devices can be connected to one another in series via their interfaces in a point-to-point fashion, thereby forming a configuration of series-connected semiconductor devices.
In configuration of series-connected semiconductor devices, one or more of the devices may fail, while leaving other ones of the devices in an operable state. The operable devices are still capable of functioning normally, although the functionality of the configuration of series-connected semiconductor devices as a whole will have been impaired. Methods and systems providing the ability to identify one or more of the failed devices would be useful. Also, methods and systems for recovering data from one or more of the still operable devices in the configuration of series-connected semiconductor devices would be desirable.
Thus, it would be advantageous to improve methods and systems for failure isolation and data recovery in a configuration of series-connected semiconductor devices.
According to a first broad aspect, the present invention seeks to provide a method of identifying at least one anomalous device in a configuration of series-connected semiconductor devices. The method comprises selecting a device in the configuration of series-connected semiconductor devices; sending a command to the selected device, the command for placing the selected device into a recovery mode of operation; attempting to elicit identification data from the selected device while in the recovery mode of operation; if the attempt is successful, selecting a next device in the configuration of series-connected semiconductor devices and repeating the sending and the attempting to elicit; and if the attempt is unsuccessful, concluding that the selected device is an anomalous device.
According to a second broad aspect, the present invention seeks to provide a computer-readable medium comprising computer-readable program code which, when interpreted by a controller, causes the controller to execute a method of recovering data from a configuration of series-connected semiconductor memory devices having undergone a failure. The computer-readable program code comprises first computer-readable program code for causing the controller to select a device in the configuration of series-connected semiconductor devices; second computer-readable program code for causing the controller to send a command to the selected device, the command for placing the selected device into a recovery mode of operation; third computer-readable program code for causing the controller to attempt to elicit identification data from the selected device while in the recovery mode of operation; fourth computer-readable program code for causing the controller to select a next device in the configuration of series-connected semiconductor devices and repeat the sending and the attempting to elicit, if the attempt is successful; and fifth computer-readable program code for causing the controller to conclude that the selected device is an anomalous device if the attempt is unsuccessful.
According to a third broad aspect, the present invention seeks to provide a semiconductor device, comprising: an interface comprising a plurality of input ports and a plurality of output ports; an information storage medium; a control module operable to cause information to be stored in, or retrieved from, the information storage medium, the control module further operable to receive commands and data from a controller over the input ports in a downstream direction while in a normal mode of operation, the control module further operable to send commands and data to the controller over the output ports in the downstream direction while in the normal mode of operation, the control module further operable to respond to a command from the controller to enter into a recovery mode of operation in which the semiconductor device is operable to either (I) receive commands from the controller over at least one of the output ports or (II) send data to the controller over at least one of the input ports, in an upstream direction opposite to the downstream direction, depending on a directionality to be adopted by the semiconductor device when in the recovery mode of operation.
According to a fourth broad aspect, the present invention seeks to provide a method for execution by a semiconductor device in a configuration of series-connected semiconductor devices operatively coupled to a controller. The method comprises communicating with the controller in a normal mode of operation by receiving commands and data from a controller over a set of input ports in a downstream direction and sending commands and data to the controller over a set of output ports in the downstream direction; entering into a recovery mode of operation in response to receipt of a command from the controller to enter into the recovery mode of operation; communicating with the controller in the recovery mode of operation by either (I) receiving commands from the controller over at least one of the output ports; or (II) sending data to the controller over at least one of the input ports, in an upstream direction opposite to the downstream direction, and depending on a directionality adopted by the semiconductor device when in the recovery mode of operation.
According to a fifth broad aspect, the present invention seeks to provide a system, comprising: a configuration of series-connected semiconductor devices, having an input end and an output end; a controller electrically connected to the configuration of series-connected semiconductor devices, the controller configured for: selecting a device in the configuration of series-connected semiconductor devices; sending a command to the selected device, the command for placing the selected device into a recovery mode of operation; attempting to elicit identification data from the selected device while in the recovery mode of operation; if the attempt is successful, selecting a next device in the configuration of series-connected semiconductor devices and repeating the sending and the attempting to elicit; and if the attempt is unsuccessful, concluding that the selected device is an anomalous device.
According to a sixth broad aspect, the present invention seeks to provide a method of recovering data from a configuration of series-connected memory devices having undergone a failure. The method comprises placing an operable device of the configuration of series-connected semiconductor memory devices into a recovery mode of operation; while the operable device is in the recovery mode of operation, retrieving data currently stored by the operable device; and storing the retrieved data in an alternate memory facility.
According to a seventh broad aspect, the present invention seeks to provide a computer-readable medium comprising computer-readable program code which, when interpreted by a controller, causes the controller to execute a method of recovering data from a configuration of series-connected semiconductor memory devices having undergone a failure. The computer-readable program code comprises first computer-readable program code for causing the controller to place an operable device of the configuration of series-connected semiconductor memory devices into a recovery mode of operation; second computer-readable program code for causing the controller to retrieve data currently stored by the operable device while the operable device is in the recovery mode of operation; and third computer-readable program code for causing the controller to store the retrieved data in an alternate memory facility.
According to an eighth broad aspect, the present invention seeks to provide a system, comprising: a configuration of series-connected semiconductor memory devices; an alternate memory facility; and a controller electrically connected to the configuration of series-connected semiconductor memory devices and to the alternate memory facility. The controller is configured for: issuing a particular command to place an operable device of the configuration of series-connected semiconductor memory devices into a recovery mode; while the operable device is in the recovery mode of operation, retrieving data currently stored by the operable device; and storing the retrieved data in the alternate memory facility.
According to a ninth broad aspect, the present invention seeks to provide a system, comprising a configuration of series-connected semiconductor memory devices; an alternate memory facility; means for placing an operable device of the configuration of series-connected semiconductor memory devices into a recovery mode; means for retrieving data currently stored by the operable device while the operable device is in the recovery mode of operation; and means for transferring the retrieved data in the alternate memory facility.
According to a tenth broad aspect, the present invention seeks to provide a method of recovering data from a configuration of series-connected semiconductor memory devices having undergone a failure. The method comprises selecting at least one operable device of the configuration of series-connected semiconductor memory devices; sending a command to the selected device; in response to receipt of the command, the selected device retrieving data currently stored by the selected device and outputting the retrieved data; receiving the data output by the operable device; storing the retrieved data in an alternate memory facility; wherein the sending or the receiving involves the selected device communicating in a direction opposite to a direction in which the selected device communicated prior to the failure.
Reference will now be made, by way of example, to the accompanying drawings:
In the following detailed description of embodiments of the present invention, reference is made to the accompanying drawings which form a part hereof, and which show by way of illustration certain embodiments in which the present invention may be practiced. These embodiments are described in sufficient detail to enable those of ordinary skill in the art to practice those embodiments, and it is to be understood that other embodiments may be utilized and that logical, electrical, and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
Examples of semiconductor devices contemplated herein include devices with serial input bit stream control, i.e., which perform actions in response to signals received at one or more input ports, such signals being sampled at “acquisition instants” that depend on the behavior of a clock signal. Accordingly, the semiconductor devices contemplated herein can be semiconductor integrated circuit (IC) devices such as memories (including volatile and/or non-volatile memories), central processing units, graphics processing units, display controller ICs, disk drive ICs, solid state drives and so on. Functionally, the semiconductor devices contemplated herein may be semiconductor memory devices, including those characterized as NAND Flash electrically erasable programmable read-only memory (EEPROM), NOR Flash EEPROM, AND Flash EEPROM, DiNOR Flash EEPROM, Serial Flash EEPROM, dynamic random access memory (DRAM), static random access memory (SRAM), read-only memory (ROM), electrically programmable read-only memory (EPROM), ferroelectric random access memory (FRAM), magnetoresistive random access memory (MRAM), phase change random access memory (PRAM or PCRAM), to name a few non-limiting possibilities.
Examples of a configuration of series-connected semiconductor devices are provided in the following U.S. patent applications, the contents of which are entirely incorporated herein by reference:
The controller 102 is hereinafter referred to as a “master device”, while the devices 1040 . . . N−1 are hereinafter referred to as “slave devices”. Thus, slave device 104j is in communication with a previous upstream device in the configuration of series-connected semiconductor devices and a next downstream device in the configuration of series-connected semiconductor devices. Where j=0, the previous upstream device is the master device 102 and the next downstream device is slave device 1041. Where 0<j<N−1, the previous upstream device is slave device 104j−1 and the next downstream device is slave device 104j+1. Where j=N−1, the previous upstream device is 104N−2 and the next downstream device is the master device 102.
It should of course be apparent to those of ordinary skill in the art that the configuration of series-connected semiconductor devices may include any number of slave devices. By way of non-limiting example, the master device 102 and the slave devices 1040 . . . N−1 may be implemented in a single multi-chip package (MCP) or as discrete units.
It should also be appreciated that different types of slave devices can be utilized as long as they have compatible interfaces. For example, where the slave devices 1040 . . . N−1 are memory devices, such memory devices may be of the same type (e.g., all having NAND Flash memory core), or they may be of different types (e.g., some having NAND Flash memory core and others having NOR Flash memory core). Other combinations of memory types and device types will occur to those of skill in the art and are within the scope of the present invention.
With reference now to
Slave device 104j selectively operates in a so-called “normal” mode of operation or a so-called “recovery” mode of operation. In the normal mode of operation, the control module 206 is responsive to signals received from the master device 102 via the input ports of the interface of slave device 104j. Specifically, the control module 206 performs various control and processing functions with access to the information storage medium 208 in response to signals arriving via the input ports, and provides signals to the next downstream device via the output ports. As mentioned above, the next downstream device can be another slave device or the master device 102, for example, depending on the relative position of slave device 104j within the configuration of series-connected semiconductor devices.
To be more specific, the interface of slave device 104j includes a data input port (hereinafter, the “Dj port”) and a data output port (hereinafter, the “Qj port”). The Dj port is used to transfer information (e.g., address, command and data information) carried by an input information signal SD−j into slave device 104j, with some of this information being destined for the control module 206 and some being destined for the information storage medium 208. The Qj port provides an output information signal SQ−j that carries information (e.g., address, command and data information) out of slave device 104j, with some of this information possibly having originated from the information storage medium 208. The Dj and Qj ports may be configured to have multiple pins, although less than for an interface that is parallel. In some non-limiting example embodiments, each of the Dj and Qj ports may be configured to have 1, 2, 4 or 8 pins.
In addition, the interface of slave device 104j includes a command strobe input port (hereinafter, the “CSIj port”) and a command strobe echo output port (hereinafter, the “CSOj port”). The CSIj port receives a command strobe signal SCSI−j. The command strobe signal SCSI−j is used by slave device 104j to enable the Dj port such that when the command strobe signal SCSI−j is asserted, this allows the serial input of data to slave device 104j via the Dj port for processing by the control module 206. Such data may include commands destined for slave device 104-j or another slave device further downstream. The command strobe signal SCSI−j is propagated through to a command strobe echo signal SCSO−j at the CSOj port of slave device 104j.
In addition, the interface of slave device 104j includes a data strobe input port (hereinafter, the “DSIj port”) and a data strobe echo output port (hereinafter, the “DSOj port”). The DSIj port receives a data strobe signal SDSI−j. The data strobe signal SDSI−j is used by slave device 104j to enable the Qj port such that when the data strobe signal SDSI−j is asserted, this allows the serial output of data expected to be sent out by device 104j via the Qj port. The data strobe signal SDSI−j is also propagated through to a data strobe echo signal SDSO−j at the DSOj port of slave device 104j.
In addition, the interface of slave device 104j includes a clock input port (hereinafter, the “RCKj port”). The RCKj port receives an input clock signal SRCK−j from the master device 102. The input clock signal SRCK−j is received either directly from the master device 102 or is a propagated version received from the previous upstream device. The input clock signal SRCK−j is used to control latching of the signals present at the Dj port into registers internal to slave device 104j, as well as to control latching of signals onto the Qj port from registers internal to slave device 104j. The input clock signal SRCK−j is also used to control latching of the signals present at the CSIj and DSIj ports into registers internal to slave device 104j and subsequently onto the CSOj and DSOj ports, respectively.
In addition, the interface of slave device 104j may include a chip select port (not shown), which receives a chip select signal from the master device 102 that enables operation of slave device 104j and possibly other slave devices concurrently. A reset port (not shown) may also be provided, for the purposes of carrying a reset signal from the master device 102 for resetting one or more functions of the slave device 104j.
It is noted that the aforementioned command and data strobe echo signals SCSO−j and SDSO−j are propagated versions of the command strobe signal SCSI−j and the data strobe signal SDSI−j, respectively, and, as such, will have undergone a delay, referred to herein as an input-to-output latency (or “flow-through” latency) and denoted TIOL−j. TIOL−j, which in one embodiment can be expressed in terms of a number of clock cycles, characterizes the design of slave device 104j and, more particularly, the control module 206 of slave device 1040. TIOL−j can be different for devices of different types and specifications. In a non-limiting embodiment, TIOL−j is designed to be as low as possible for a nominal clock rate, while guaranteeing that the control module 206 has sufficient time to process information carried by the input information signal SD−j at the Dj port and complete any requisite interactions with the information storage medium 208.
Specifically, upon assertion of the command strobe signal SCSI−j, it is expected that the data carried by the input information signal SD−j will have been processed by slave device 104j after a delay of TIOL−j clock cycles. Thus, one can view the state of the command strobe signal SCSI−j as establishing a time window during which the input information signal SD−j carries data to be processed by slave device 104j. Meanwhile, the current states of the command strobe signal SCSI−j, the data strobe signal SDSI−j and the input information signal SD−j are transferred out onto the command strobe echo signal SCSO−j, the data strobe echo signal SDSO-j and the output information signal SQ−j, respectively, so that they appear thereon after the aforesaid delay of TIOL−j clock cycles. Any relationship in terms of synchronism that may have existed among the input information signal SD−j, the command strobe signal SCSI−j and the data strobe signal SDSI−j is therefore preserved for the benefit of the next downstream device.
The impact of assertion of the data strobe signal SDSI−j is slightly different. On the one hand, slave device 104j may expect to send out data based on a previously received instruction (e.g., a READ command as will be described below). Here, assertion of the data strobe signal SDSI−j will cause such data to begin to appear in the output information signal SQ−j after a delay of TIOL−j clock cycles. Meanwhile, the current states of the command strobe signal SCSI−j and the data strobe signal SDSI−j are transferred out onto the echo signals SCSO−j and SDSO−j, respectively, so that they appear thereon after the aforesaid delay of TIOL−j clock cycles. Thus, where slave device 104j indeed expects to send out information, one can view the state of the data strobe echo signal SDSO−j as establishing a time window during which the output information signal SQ−j validly carries data that has been output by slave device 104j.
On the other hand, where slave device 104j does not expect to send out information based on a previously received instruction (or in the absence of such instruction altogether), assertion of the data strobe signal SDSI−j is meaningless for slave device 104j. In such cases, the current states of the command strobe signal SCSI−j, the data strobe signal SDSI−j and the input information signal SD−j are simply transferred out onto the command strobe echo signal SCSO−j, the data strobe echo signal SDSO−j and the output information signal SQ−j, respectively, so that they appear thereon after the aforesaid delay of TIOL−j clock cycles. Any synchronism relationship that may have existed among the input information signal SD−j, the command strobe signal SCSI−j and the data strobe signal SDSI−j is therefore preserved for the benefit of the next downstream device.
As mentioned above, slave device 104j can operate in a normal mode of operation or in a recovery mode of operation. The behaviour described above is characteristic of the normal mode of operation. To enable operation in the recovery mode of operation, slave device 104j exhibits a certain degree of bidirectional functionality. Specifically, the CSOj port is configured to be bidirectional, thereby to allow back-propagated commands received from the next downstream device to be latched by slave device 104j and processed. The control module 206 of slave device 104j is thus equipped with circuitry 270 required to latch and process back-propagated commands received over the CSOj port. As will be described in further detail later on, the CSOj port may be used to cause slave device 104j to enter into the recovery mode of operation, and therefore it is within the scope of the present invention for the control module 206 to be continually attentive to back-propagated commands received over the CSOj port. When such back-propagated commands are destined for a device further upstream than slave device 104j, then forwarding to the previous upstream device is appropriate, and to this end the CSIj port is also configured to be bidirectional.
In addition, one or more of the pins of the Dj port are configured to be bidirectional, in order to allow data to be back-propagated to the previous upstream device when necessary in the recovery mode of operation. In some cases, the data that is back-propagated to the previous upstream device via the bidirectional pin(s) of the Dj port may itself have been back-propagated to slave device 104j by the next downstream device. Accordingly, one or more of the pins of the Qj port are also configured to be bidirectional. The control module 206 of slave device 104j is thus equipped with circuitry 280 required to latch and process data received over the bidirectional pin(s) of the Qj port and to transfer this data over to the bidirectional pin(s) of the Dj port, leading towards the previous upstream device.
In other cases, the data that is back-propagated to the previous upstream device via the bidirectional pin(s) of the Dj port may originate from the information storage medium 208 of slave device 104j. Accordingly, slave device 104j is equipped with a switching element 212 that receives data from the information storage medium 208 at a switching element input port 214. The switching element 212 also has a first switching element output port 216 electrically connected to the Qj port and a second switching element output port 218 electrically connected to the bidirectional pin(s) of the Dj port. The switching element 212 is used to divert data received at the switching element input port 214 towards either the first switching element output port 216 or the second switching element output port 218 (and therefore to either the Qj port or the Dj port of slave device 104j, respectively), depending upon the value of a select signal received at a switching element select port 220. The select signal is received from the control module 206 and is controlled in a manner to be described later. In one non-limiting example, the switching element can be embodied as a demultiplexer.
Additionally, and optionally, the DSIj port can also be configured to be bidirectional, to allow the presence of data on the bidirectional pin(s) of the Dj port to be announced to the previous upstream device when such data either originates from the information storage medium 208 of slave device 104j or is being forwarded after having been received from the next downstream device. Indeed, in the latter case, a similar announcement made by the next downstream device will appear at the DSOj port and may need to be back-propagated by slave device 104j; hence the DSOj port can also be configured to be bidirectional.
Those skilled in the art will also appreciate that other components may be provided in slave device 104j without departing from the scope of the present invention, such as, for example, buffers, phase shifters, logic sub-circuits, depending on clock rate type (e.g., single data rate versus double data rate), clock response type (e.g., edge-aligned versus center-aligned) and various other aspects of the functionality of slave device 104j. For example, in the illustrated non-limiting embodiment, slave device 104j includes a plurality of buffers 250 electrically connected to the RCKj, Dj, DSIj and CSIj ports and a plurality of buffers 252 electrically connected to the Qj, DSOj and CSOj ports. Where a particular one of the buffers 250, 252 is electrically connected to a bidirectional port or pin, the buffer exhibits buffering functionality in both directions of signal flow.
Reference is now made to
The clock generation module 302 generates the master output clock signal STCK, which is distributed in a desired manner to the slave devices 1040 . . . N−1, as well as to the output port controller 304 and the input port controller 306. It should be noted that in the non-limiting embodiment shown in
The output ports of the output port controller 304 carry a group of signals to the input end of the configuration of series-connected semiconductor devices via the first slave device 1040. Specifically, the output ports of the output port controller 304 include a master clock output port (hereinafter, the “TCK port”) over which is output a master output clock signal STCK, a master serial output port (hereinafter, the “Q port”) over which is provided a master serial output information signal SQ, a master command strobe output port (hereinafter, the “CSI port”) over which is provided a master command strobe signal SCSI, and a master data strobe output port (hereinafter, the “DSI port”) over which is provided a master data strobe signal SDSI. The interface of the master device 102 may further comprise various other output ports over which can be provided the aforementioned chip select signal and reset signal, as well as various other control and data information destined for the slave devices 1040 . . . N−1. In operation, the output port controller 304 issues commands, and asserts the master command strobe signal SCSI and the master data strobe signal SDSI at the appropriate instants.
In one non-limiting embodiment, the signals output by the output port controller 304 are timed so that the intended acquisition instants are aligned with the falling edges of the master output clock signal STCK. In another non-limiting embodiment, the signals output by the output port controller 304 are timed so that the intended acquisition instants are aligned with the rising edges of the master output clock signal STCK. In yet another non-limiting embodiment, the signals output by the output port controller 304 are timed so that the intended acquisition instants are intermediate the rising and falling edges of the master output clock signal STCK.
For its part, the input port controller 306 receives a group of signals from the output end of the configuration of series-connected semiconductor devices via last slave device 104N−1. Specifically, the interface of the master device 102 comprises a master serial input port (hereinafter, the “D port”) over which is received a master serial input information signal SD from the last slave device 104N−1 of the configuration of series-connected semiconductor devices. In addition, the interface of the master device 102 further comprises a master data strobe echo input port (hereinafter, the “DSO” port) over which is received a master data strobe echo signal SDSO from the last slave device 104N−1 of the configuration of series-connected semiconductor devices. In addition, the interface of the master device 102 further comprises a master command strobe echo input port (hereinafter, the “CSO” port) over which is received a master command strobe echo signal SCSO from the last slave device 104N−1 of the configuration of series-connected semiconductor devices.
The output ports of the master device 102 (i.e., the Q, CSI and DSI ports) are electrically connected to the input ports of the first slave device 1040 (i.e., the D0, CSI0 and DSI0 ports, respectively), whose output ports (i.e., the Q0, CSO0 and DSO0 ports) are electrically connected to the input ports of slave device 1040 (i.e., the D1, CSI1 and DSI1 ports, respectively), and so on. Finally, the output ports of slave device 104N−2 (i.e., the QN−2, CSON−2 and DSON−2 ports) are electrically connected to the input ports of slave device 104N−1 (i.e., the DN−1, CSIN−1 and DSIN−1 ports, respectively). Finally, the QN−1 port of slave device 104N−1 is electrically connected to the D port of the master device 102 (allowing delivery of the master serial input information signal SD to the master device 102), the CSON−1 port of slave device 104N−1 is electrically connected to the CSO port of the master device 102 (allowing delivery of the master command strobe echo signal SCSO to the master device 102), and the DSON−1 port of slave device 104N−1 is electrically connected to the DSO port of the master device 102 (allowing delivery of the master data strobe echo signal SDSO to the master device 102).
As mentioned above, the slave devices 1040 . . . N−1 selectively operate in either the normal mode of operation or the recovery mode of operation. Details of how to cause a particular slave device to enter one mode or the other will be provided later on. For now, it is sufficient to recognize that in order to cause a particular slave device to enter into the recovery mode of operation, and to subsequently communicate with the particular slave device while it is in recovery mode, the master device 102 needs to establish communication with the particular device. In the case where a portion of the configuration of series-connected semiconductor devices has failed, only those slave devices that are on “either side” of the failed portion will be reachable. It should thus be appreciated that a particular slave device on either side of the failed portion will be reachable either exclusively by the output port controller 304 or exclusively by the input port controller 306, and not in the ring-like manner that applies when the configuration of series-connected semiconductor devices is fully operational.
To allow communication to be established with a particular slave device on either side of the failed portion of the configuration of series-connected semiconductor devices, the input port controller 304 and the output port controller 306 each exhibit a certain degree of bidirectional functionality. Specifically, the CSO port and at least one pin of the D port of the input port controller 306 are configured to be bidirectional, thereby to allow commands to be back-propagated to slave device 104N−1 and other slave devices closer to the failed portion when approached from a first side. Similarly, in order to receive and process back-propagated responses from slave device 1040 and other slave devices closer to the failed portion from the other side, the CSI port and at least one pin of the Q port of the output port controller 304 are also configured to be bidirectional.
Additionally, and optionally, the DSI port can also be configured to be bidirectional so that the output port controller 304 can be alerted to the presence of data arriving from slave device 1040 on the bidirectional pin(s) of the D port. Similarly, the DSO port can be configured to be bidirectional to allow the input port controller 306 to specify a time window during which it would like to see slave device 104N−1 back-propagate data to the next upstream device on the bidirectional pin(s) of the DN−1 port. Let it now be assumed that the slave devices 1040 . . . N−1 are all in the normal mode of operation. This means that the switching element 212 in each of the slave devices 104j (0≦j≦N−1) is configured to route data output from the respective information storage medium 208 onto the respective Qj port via the first switching element output port 216. Assume also that the master device 102 wishes to communicate with one or more “target” devices in the configuration of series-connected semiconductor devices. This is done by the master device 102 issuing a command destined for the target device(s). The command identifies the target device(s), which can be one or more slave devices 1040 . . . N−1 in the configuration of series-connected semiconductor devices.
In a non-limiting embodiment, commands may be issued in the form of packets which form a higher-layer protocol of communication between the master device 102 and the slave devices 1040 . . . N−1. Non-limiting examples of a command that can be processed by slave device 104j (0≦j≦N−1) while in the normal mode of operation include:
There will now be provided some detail, in accordance with some examples, regarding the generation and effect of the above commands.
Read Command
The
Having passed through zero or more other slave devices further upstream, the READ command reaches slave device 104j at the latter's Dj port in the form of the serial input information signal SD−j, and the accompanying master command strobe signal SCSI is received by slave device 104j at the latter's CSIj port in the form of the command strobe signal SCSI−j. As will now be shown, the received READ command is interpreted by the control module 206 and translated into control signals fed to various elements of the information storage medium 208 and other circuitry (not shown) of slave device 104j.
In a non-limiting example embodiment, the
The first segment of the
The second segment of the
The third segment of the
The data accessed in response to the READ command is to be placed onto the Qj port, but at a later time and in dependence upon the state of the data strobe signal SDSI−j, which is a propagated version of the master data strobe signal SDSI. Specifically, the master data strobe signal SDSI is asserted by the output port controller 304 after issuing the
The master data strobe signal SDSI reaches slave device 104j at the latter's DSIj port in the form of the data strobe signal SDSI−j. Once the control module 206 detects that the data strobe signal SDSI−j has been asserted, the control module 206 places the data accessed from the information storage medium onto the Qj port via the first switching element output port 216 after a further TIOL−j clock cycles. However, if the data strobe signal SDSI−j signal is not asserted, the control module 206 does not feed any data to the switching element input port 214.
In view of the foregoing, it will be appreciated that the master device 102 issues a READ command to control the behavior of a target device in the configuration of series-connected semiconductor devices by using the D, CSI and DSI ports. The target device then responds to the
Since release of the response data by the target device follows detection by the target device that the data strobe signal SDSI−j received by the target device has been asserted, and since the data strobe signal SDSI−j corresponds to the master data strobe signal SDSI with a delay of TIOL−j at each upstream slave device in the configuration of series-connected semiconductor devices, it will be appreciated that release of the response data by the target device will be delayed relative to assertion of the master data strobe signal SDSI by the sum total of the flow-through latencies TIOL−j of each slave upstream from (and including) the target device. Thereafter, the response data will undergo a further delay of TIOL−j at each downstream device in the configuration of series-connected semiconductor devices. Thus, the response data appearing in the master serial input information signal SD will be delayed relative to assertion of the master data strobe signal SDSI by a total flow-through latency of the configuration of series-connected semiconductor devices, denoted TIOL−TOTAL, where TIOL−TOTAL=ΣjTIOL−j.
Ultimately, therefore, the master device 102 begins to receive the response data via its D port at an arrival time that will be delayed relative to assertion of the master data strobe signal SDSI by TIOL−TOTAL. Although this arrival time may not apparent from the content of the master serial input information signal SD itself, it is apparent from the master data strobe echo signal SDSO. Specifically, the master data strobe echo signal SDSO is a propagated version of the master data strobe signal SDSI, and has undergone the same delay as the master serial input information signal SD, corresponding to the total flow-through latency TIOL−TOTAL. Thus, processing of the master data strobe echo signal SDSO can permit the master device 102 to extract valid response data from the master serial input information signal SD.
Write Command
The
Having passed through zero or more other slave devices further upstream, the
In a non-limiting example embodiment, the
The first segment of the
The second segment of the
The third segment of the
The fourth segment of the
The
It is noted that the master device 102 sends the
As such, in one direction around the configuration of series-connected semiconductor devices, the
In the other direction around the configuration of series-connected semiconductor devices, the
The received
Of course, other formats for the
Returning now to the above example format, the first segment of the
Meanwhile, in the case where the first segment of the
The second segment of the
Meanwhile, in the case where the second segment of the
The third segment of the
Meanwhile, in the case where the third segment of the
Entry into the recovery mode of operation involves adopting a directionality, which varies depending on whether slave device 104j is reachable from the output port controller 304 or from the input port controller 306. Specifically, if slave device 104j is reachable from the output port controller 304, then slave device 104j acts as a “fore branch” device. In order for slave device 104j to operate in the recovery mode of operation as a fore branch device, the control module 206 configures itself for:
On the other hand, if slave device 104j is reachable from the output port controller 306, then slave device 104j acts as an “aft branch” device. In order for slave device 104j to operate in the recovery mode of operation as an aft branch device, the control module 206 will configure itself for:
In order for control module 206 to determine whether it is in fact reachable from the output port controller 304 or from the input port controller 306 (and therefore to ascertain which directionality to adopt in the recovery mode of operation), a further bit may be written to the configuration register by way of the
Let it now be assumed that certain ones of the slave devices 1040 . . . N−1 are in the recovery mode of operation. Specifically, let it be assumed that some of these devices are fore branch devices (which were reached via the output port controller 304) and that others of these devices are aft branch devices (which were reached via the input port controller 306). Assume also that the master device 102 wishes to communicate with one or more “target” devices that are in the recovery mode of operation, without assuming that the master device 102 initially knows whether to use the output port controller 304 or the input port controller 306 to reach a particular target device. To this end, communication is effected by the master device 102 issuing a command destined for the target device expected to be in the recovery mode of operation.
Non-limiting examples of a command that can be processed by slave device 104j (0≦j≦N−1) while in the recovery mode of operation include:
There will now be provided some detail, in accordance with some examples, regarding the generation and effect of the above commands.
Identification Query Command
The
In the other direction, the
It is noted that the master device 102 sends the
The received
The first segment of the
Meanwhile, in the case where the first segment of the
The second segment of the
Meanwhile, in the case where the second segment of the
Referring now to the specific response provided by the control module 206, the
The resulting “identification data” (i.e., the identity of slave device 104j or a code) is then to be placed onto the Qj port or the bidirectional pin(s) of the Dj port (depending on the directionality adopted by slave device 104j for operation in the recovery mode of operation). In one embodiment, the identification data is placed on the appropriate port (Qj or Dj) at a later time that depends upon the state of the data strobe signal (SDSI−j or SDSO−j), which is a propagated version of the master data strobe signal SDSI or the master data strobe echo signal SDSO.
Specifically, in one direction, the master data strobe signal SDSI is asserted by the output port controller 304 after issuing the
In the other direction, the master data strobe echo signal SDSO is asserted by the input port controller 306 after issuing the
It is also within the scope of the present invention for the identification data to be output onto the Qj port (or the bidirectional pin(s) of the Dj port, as appropriate) without issuance of the master data strobe signal SDSI or the master data strobe echo signal SDSO by the master device 102.
Salvage Command
The
It is noted that the master device knows whether the target device is reachable from the output port controller 304 (i.e., the target device is a fore branch device) or from the input port controller 306 (i.e., the target device is an aft branch device).
When the target device is a fore branch device, the
When the target device is an aft branch device, the
Irrespective of how it is received by slave device 104j, the
The first segment of the
Meanwhile, in the case where the first segment of the
The second segment of the
Meanwhile, in the case where the second segment of the
The third segment of the
The data accessed in response to the
Specifically, in one direction, the master data strobe signal SDSI is asserted by the output port controller 304 after issuing the
In the other direction, the master data strobe echo signal SDSO is asserted by the input port controller 306 after issuing the
It is also within the scope of the present invention for the accessed data to be output onto the Qj port (or the bidirectional pin(s) of the Dj port, as appropriate) without issuance of the master data strobe signal SDSI or the master data strobe echo signal SDSO by the master device 102.
Write Configuration Register-Recovery Command
The
If the
On the other hand, if the
The received
The first segment of the
Meanwhile, in the case where the first segment of the
The second segment of the
Meanwhile, in the case where the second segment of the
The third segment of the WCR-R command (DATA) represents a hexadecimal or other value to be written to the configuration register 210 of slave device 104j. The control module 206 responds by transferring the received data to the configuration register 210. By setting or toggling a specific bit in the configuration register 210, and with the control module 206 being made sensitive to changes in the configuration register 210, slave device 104j can be triggered to re-enter into the normal mode of operation.
Meanwhile, in the case where the third segment of the
With reference now to the flowchart in
In one specific non-limiting example embodiment, commands issued by the output port controller 304 are monitored. Specifically, the commands are encoded into the master serial output information signal SQ sent over the Q port. The master command strobe signal SCSI is asserted while the master serial output information signal SQ is being transmitted, and is then de-asserted. The master device 102 thus knows the instant at which the master command strobe signal SCSI was asserted and de-asserted. Moreover, the master device 102 knows the flow-through latency TIOL−TOTAL of the configuration of series-connected semiconductor devices. Thus, the master device 102 can monitor whether a command that is issued by the output port controller 304 returns via the D port of the input port controller 306 with an expected delay of TIOL−TOTAL seconds following its issuance. Specifically, the returned command is expected to begin with a delay of TIOL−TOTAL following assertion of the master command strobe signal SCSI and is expected to end with a delay of TIOL−TOTAL seconds following de-assertion of the master command strobe signal SCSI (or, equivalently, a delay of TIOL−TOTAL+LCMD seconds following assertion of the master command strobe signal SCSI, where LCMD is the length of the command, which can be known or measured). If the command does not return with the expected delay (or does not return at all), then the configuration of series-connected semiconductor devices can be deemed impaired, thus proceeding to the remaining steps.
Assume now that at some point, the master device 102 indeed detects that the configuration of series-connected semiconductor devices is impaired. Let this be due to a failure between an anomalous (e.g., failed) slave device 104K (which defines a fore branch consisting of slave devices 1040 . . . K−1) and an anomalous (e.g., failed) slave device 104M (K<M, which defines an aft branch consisting of slave devices 104M+1 . . . N−1). It is noted that the master device 102 does not yet know the values K or M, and that identification of K and M is one outcome of the failure detection and isolation function.
The master device 102 then proceeds to execute step 404, where one or more of the slave devices 104p (0≦p<K, or M<p≦N−1, where K and M are still unknown to the master device 102) are placed into the recovery mode of operation. Specifically, an attempt can be made to broadcast the previously described
Next, with slave devices 104p (0≦p<K, or M<p≦N−1) in the recovery mode of operation, the master device 102 executes steps 406A and 406B, by virtue of which the slave devices 104K and 104M, respectively, can be identified. Specifically, step 406A can be performed in accordance with the following non-limiting example pseudocode listing of sub-steps:
It is noted that if it is in the recovery mode of operation (which means that it is still operable), each successive slave device 104j will respond in the manner previously described between sub-steps b) and c) above. Otherwise, slave device 104j is not operable will not respond, nor will it be able to back-propagate a response received from a device further downstream. Thus, if no response is received while j has a particular value, it can be inferred that the slave device with which the master device 102 is trying to communicate (i.e., slave device 104j) is located at the “fore” edge of the failure, and therefore K is equal to this particular value of j.
Analogously, step 406B can be performed in accordance with the following non-limiting example pseudocode listing of sub-steps:
It is noted that if it is in the recovery mode of operation (which means that it is still operable), each successive slave device 104j will respond in the manner previously described between sub-steps b) and c) above. Otherwise, slave device 104j is not operable will not respond, nor will it be able to propagate a response received from a device further upstream. Thus, if no response is received while j has a particular value, it can be inferred that the slave device with which the master device 102 is trying to communicate (i.e., slave device 104j) is located at the “aft” edge of the failure, and therefore M is equal to this particular value of j.
It should be noted that if K ever equals, or surpasses, M, this implies that all of the slave devices can be reached by the master device 102 from at least one direction.
It should be appreciated that variations of the above method can be made without departing from the scope of the present invention. For example, it is contemplated that the
Reference is now made to
In accordance with an example embodiment, the primary memory facility 504 includes a configuration of series-connected semiconductor devices, such as slave devices 1040 . . . N−1. The alternate memory facility 506 can be a second configuration of series-connected semiconductor devices, or any other memory system, including but not limited to a conventional memory architecture. In accordance with a specific non-limiting embodiment, the master device 102 is capable of executing a recovery function. In the illustrated embodiment, access to the alternate memory facility 506 is via the output port controller 304 and the input port controller 306. However, in other embodiments, access to the alternate memory facility 506 may be via other elements of the master device 102 or the computing system with which it interacts.
The recovery function involves retrieving data from one or more of the operable slave devices 104p (0≦p<K, or M<p≦N−1) on either side of a previously identified failed portion of the primary memory facility 504. It is assumed that at least one such operable device exists. In addition, the recovery function involves placing the retrieved data in the alternate memory facility 504. By way of non-limiting example, the operable slave devices 104p (0≦p<K, or M<p≦N−1) may be identified using the previously described fault detection and isolation function.
With reference to the flowchart in
At step 620, the master device 102 places the recovered data can be placed in the alternate memory facility 506. It should be appreciated that the recovered data can be placed in the alternate memory facility 506 as it is retrieved from each of the slave devices 104p (0≦p<K, or M<p≦N−1), or the recovered data from the slave devices 104p (0≦p<K, or M<p≦N−1) can be temporarily buffered by the master device 102 and then placed in bulk in the alternate memory facility 506.
It should be appreciated that the use of bidirectional pins and ports allows data to be transferred out of the slave devices 104p (0≦p<K, or M<p≦N−1) even where there is a portion of the configuration of series-connected semiconductor devices (namely, between slave device 104K and 104M, inclusively) that has failed. The rate at which recovered data can be transferred back through the master device 102 depends on the number of bidirectional pins on the Dj and Qj ports. However, those skilled in the art will recognize that an increased data transfer rate obtained from usage of a greater number of bidirectional pins needs to be traded off against the resultant cost of the slave devices. Thus, it is possible that a particular slave device 104p may have a maximum rate of data transfer during operation in the recovery mode of operation that is lower than a maximum rate of data transfer during the normal mode of operation.
It should also be understood that many variants that would now appear to those of ordinary skill in the art, and these variants are contemplated as remaining within the scope of the present invention. These include variants based on changes in clock rate type (e.g., single data rate (SDR), double data rate (DDR), quad data rate (QDR), octal data rate (ODR), graphics double data rate (GDDR)), clock response type (e.g., source-synchronous, center-aligned), signal level mode (e.g., single-ended, differential), the number of slave devices in the interconnection, voltage supply levels, whether a signal is considered active when high or when low, and various other functional characteristics. There is also no limitation on the types of slave devices that may be interconnected or on the number of different types of devices connected in the same configuration of series-connected semiconductor devices.
Persons skilled in the art should also appreciate that embodiments of the present invention can be used in conjunction with other innovations relating to arrangements of serially interconnected semiconductor devices. Furthermore, it should be understood that certain combinations of some example embodiments with certain other innovations, the combining of which would only be apparent through juxtaposed reading of disclosures, may result in further innovations which are not herein dedicated to the public. Examples of such other innovations can be found in various patent applications, a non-limiting set of which includes:
Moreover, where components and circuitry of the various devices have been illustrated as being directly connected to one another, one should appreciate that this has been done for the sake of simplicity and that other components and circuitry may be placed therebetween or coupled thereto without departing from the scope of the invention. As a result, what appear to be direct connections in the drawings may in fact be implemented as indirect connections in an actual realization.
It should also be apparent to those of ordinary skill in the art that the operations and functions of certain ones of the above-described controllers, control modules and other elements may be achieved by hardware or software. Specifically, these operations and functions may be achieved using a computing apparatus that has access to a code memory (not shown) which stores computer-readable program code for operation of the computing apparatus, in which case the computer-readable program code could be stored on a medium which is fixed, tangible and readable directly by the controller, control module or other element in question, or the computer-readable program code could be stored remotely but transmittable to the device in question via a modem or other interface device connected to a network (including, without limitation, the Internet) over a transmission medium, which may be either a non-wireless medium (e.g., optical or analog communications lines) or a wireless medium (e.g., microwave, infrared or other transmission schemes) or a combination thereof.
While specific embodiments of the present invention have been described and illustrated, it will be apparent to those skilled in the art that numerous modifications and variations can be made without departing from the scope of the present invention as defined in the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4174536 | Misunas et al. | Nov 1979 | A |
5243703 | Farmwald et al. | Sep 1993 | A |
5319598 | Aralis et al. | Jun 1994 | A |
5404460 | Thomsen et al. | Apr 1995 | A |
5430859 | Norman et al. | Jul 1995 | A |
5452259 | McLaury | Sep 1995 | A |
5475854 | Thomsen et al. | Dec 1995 | A |
5636342 | Jeffries | Jun 1997 | A |
5721840 | Soga | Feb 1998 | A |
5729683 | Le et al. | Mar 1998 | A |
5740379 | Hartwig | Apr 1998 | A |
5768173 | Seo et al. | Jun 1998 | A |
5777488 | Dryer et al. | Jul 1998 | A |
5806070 | Norman et al. | Sep 1998 | A |
5828899 | Richard et al. | Oct 1998 | A |
5835935 | Estakhri et al. | Nov 1998 | A |
5859809 | Kim | Jan 1999 | A |
5896400 | Roohparvar et al. | Apr 1999 | A |
5898615 | Chida | Apr 1999 | A |
6002638 | John | Dec 1999 | A |
6009479 | Jeffries | Dec 1999 | A |
6052331 | Araki et al. | Apr 2000 | A |
6144576 | Leddige et al. | Nov 2000 | A |
6148363 | Lofgren et al. | Nov 2000 | A |
6304921 | Rooke | Oct 2001 | B1 |
6317350 | Pereira et al. | Nov 2001 | B1 |
6317352 | Halbert et al. | Nov 2001 | B1 |
6317812 | Lofgren et al. | Nov 2001 | B1 |
6453365 | Habot | Sep 2002 | B1 |
6658509 | Bonella et al. | Dec 2003 | B1 |
6680904 | Kaplan et al. | Jan 2004 | B1 |
6715044 | Lofgren et al. | Mar 2004 | B2 |
6763426 | James et al. | Jul 2004 | B1 |
6792003 | Potluri et al. | Sep 2004 | B1 |
6799133 | McIntosh et al. | Sep 2004 | B2 |
6928501 | Andreas et al. | Aug 2005 | B2 |
6931571 | Bernadat et al. | Aug 2005 | B2 |
6944697 | Andreas | Sep 2005 | B2 |
6950325 | Chen | Sep 2005 | B1 |
6961882 | Manfred et al. | Nov 2005 | B2 |
6978402 | Hirabayashi | Dec 2005 | B2 |
6996644 | Schoch et al. | Feb 2006 | B2 |
7024605 | Sera et al. | Apr 2006 | B2 |
7031221 | Mooney et al. | Apr 2006 | B2 |
7032039 | DeCaro | Apr 2006 | B2 |
7047450 | Iwamitsu et al. | May 2006 | B2 |
7072994 | Britton | Jul 2006 | B2 |
7093076 | Kyung | Aug 2006 | B2 |
7130958 | Chou et al. | Oct 2006 | B2 |
7168027 | Lee et al. | Jan 2007 | B2 |
7210634 | Sapiro | May 2007 | B2 |
7308524 | Grundy et al. | Dec 2007 | B2 |
20020188781 | Schoch et al. | Dec 2002 | A1 |
20040001380 | Becca et al. | Jan 2004 | A1 |
20040019736 | Kim et al. | Jan 2004 | A1 |
20040024960 | King et al. | Feb 2004 | A1 |
20040039854 | Estakhri et al. | Feb 2004 | A1 |
20040073829 | Olarig | Apr 2004 | A1 |
20040199721 | Chen | Oct 2004 | A1 |
20040230738 | Lim et al. | Nov 2004 | A1 |
20050160218 | See et al. | Jul 2005 | A1 |
20050213421 | Polizzi et al. | Sep 2005 | A1 |
20050262422 | Yamauchi | Nov 2005 | A1 |
20060005078 | Guo et al. | Jan 2006 | A1 |
20060050594 | Park | Mar 2006 | A1 |
20060239107 | Boecker et al. | Oct 2006 | A1 |
20070043975 | Varadarajan et al. | Feb 2007 | A1 |
20070076479 | Kim et al. | Apr 2007 | A1 |
20070076502 | Pyeon et al. | Apr 2007 | A1 |
20070096774 | Yang et al. | May 2007 | A1 |
20070109833 | Pyeon et al. | May 2007 | A1 |
20070233903 | Pyeon | Oct 2007 | A1 |
20070233917 | Pyeon et al. | Oct 2007 | A1 |
20070234071 | Pyeon | Oct 2007 | A1 |
20080016269 | Chow et al. | Jan 2008 | A1 |
20080140899 | Oh et al. | Jun 2008 | A1 |
20080140916 | Oh et al. | Jun 2008 | A1 |
20080168296 | Oh et al. | Jul 2008 | A1 |
20080226004 | Oh | Sep 2008 | A1 |
20080246504 | Surico et al. | Oct 2008 | A1 |
20090097342 | Tseng et al. | Apr 2009 | A1 |
Number | Date | Country |
---|---|---|
1281775 | Mar 1991 | CA |
WO 2005069150 | Jul 2005 | WO |
WO 2006036811 | Apr 2006 | WO |
PCTCA2007002092 | Feb 2008 | WO |
PCTCA2008000237 | May 2008 | WO |
PCTCA2007002068 | Sep 2008 | WO |
Number | Date | Country | |
---|---|---|---|
20090129184 A1 | May 2009 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/CA2007/002068 | Nov 2007 | US |
Child | 11941131 | US |