US20020103966A1 - System and method for efficient data mirroring in a pair of storage devices - Google Patents

System and method for efficient data mirroring in a pair of storage devices Download PDF

Info

Publication number
US20020103966A1
US20020103966A1 US09/729,762 US72976200A US2002103966A1 US 20020103966 A1 US20020103966 A1 US 20020103966A1 US 72976200 A US72976200 A US 72976200A US 2002103966 A1 US2002103966 A1 US 2002103966A1
Authority
US
United States
Prior art keywords
ata
signals
devices
recited
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US09/729,762
Other versions
US6813688B2 (en
Inventor
Chia Wu
Whay Lee
Nisha Talagala
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle America Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority to US09/729,762 priority Critical patent/US6813688B2/en
Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEE, WHAY S., TALAGAL, NISHA D., WU, CHIA Y.
Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME, FILED 12/04/00, RECORDED AT REEL 011348, FRAME 0822. ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT OF THE ENTIRE INTEREST. Assignors: LEE, WHAY S., TALAGALA, NISHA D., WU, CHIA Y.
Publication of US20020103966A1 publication Critical patent/US20020103966A1/en
Application granted granted Critical
Publication of US6813688B2 publication Critical patent/US6813688B2/en
Assigned to Oracle America, Inc. reassignment Oracle America, Inc. MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: Oracle America, Inc., ORACLE USA, INC., SUN MICROSYSTEMS, INC.
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller

Definitions

  • This invention relates to computer data storage systems, and more particularly to disk mirroring techniques in computer data storage systems.
  • a typical computer system includes one or more hard disk drives (i.e., disk drives) for storing data. While the reliabilities of disk drives continue to improve, it is only a matter of time before a given disk drive fails.
  • Data storage systems commonly implement one of several redundant array of inexpensive/independent disks (RAID) techniques in order to allow stored data to remain available despite a failure of one of the disk drives.
  • RAID redundant array of inexpensive/independent disks
  • RAID level 1 stores identical copies of data on two different disk drives. Disk mirroring involves the exact replication of data. A mirrored disk array uses twice as many disks as a non-redundant disk array. Data written to one disk is also written to a redundant disk, such that there are always two physical copies of the same information. When data is read, it can be retrieved from the disk with the shorter queuing, seek, and rotational delays. If a disk drive of a RAID-1 system fails, the other copy is used to service requests and reconstruct a new mirrored disk. Disk mirroring is frequently used in database applications where availability and transaction rates are more important than storage efficiency. Since a block of data needs to be written to two different locations, a write performance penalty may be associated with mirroring.
  • IDE Intelligent/Integrated drive electronics
  • ATA AT Attachment
  • the two terms and their acronyms are often used interchangeably.
  • ATA standard including the basic ATA standard, Fast ATA, ATA-2, Fast ATA-2, ATA-3, and Ultra ATA.
  • AT attachment and the acronyms “ATA” and “IDE” refer to all variants of ATA-type or IDE-type interfaces.
  • the basic ATA standard (ANSI X3.221-1994) supports a single 16-bit parallel data channel which may be shared by two separate devices configured as master and slave.
  • ATA AT attachment
  • SCSI small computer systems interface
  • fibre channel drives Fibre channel and SCSI drives are employed in enterprise class storage systems, while ATA drives are often limited to desktop applications.
  • ATA drives are often a factor of between 2 to 3 times cheaper than SCSI drives.
  • the ATA bus is a shared bus between a host and a maximum of 2 ATA drives.
  • Both the master and slave drives include a set of interface registers that provide control and status information. Whenever the host writes to a register, the information is written into the corresponding registers of both the master drive and the slave drive. For example, during ATA operations, the host selects the desired drive by writing 0 (selects master drive) or 1 (selects slave drive) to a drive selection bit in an ATA device/head register. The host then writes a command to an ATA command register. Both the master drive and the slave drive check the device selection bit, and only the selected drive executes the command and responds to the host.
  • FIG. 1 is a diagram of one embodiment of a typical computer system 10 including a host 12 coupled to two devices 16 A- 16 B via an ATA controller 14 and an ATA bus 18 .
  • Devices 16 A and 16 B include ATA interfaces, and may be ATA storage devices. Examples of ATA storage devices include hard disk drives, compact disk read only memory (CD-ROM) drives, and tape drives.
  • Devices 16 A and 16 B in FIG. 1 are configured to form a “master/slave” device pair according to the ATA standards. Either device 16 A or device 16 B is configured to be a “master” device, and the other device 16 is configured to be a “slave” device.
  • Host 12 accesses devices 16 A and 16 B via ATA controller 14 and ATA bus 18 .
  • the current ATA standards allow one or two devices to be coupled to host 12 via ATA controller 14 . It is noted that many computer systems include two ATA controllers, thus allowing up to four devices with ATA interfaces to be coupled to a host.
  • ATA bus 18 is typically implemented as a flat ribbon cable having multiple conductors with three connectors attached thereto. A first of the three connectors is located at one end of the ribbon cable, and the other two connectors are positioned close together near the other end of the ribbon cable.
  • ATA controller 14 is coupled to the first connector, and devices 16 A and 16 B are coupled to the other two connectors.
  • ATA bus 18 acts as a “shared bus” coupling devices 16 A and 16 B to ATA controller 14 .
  • ATA bus 18 includes a data bus 20 , a control bus 22 , and a status bus 24 .
  • Signal lines of data bus 20 are bidirectional signal lines which convey the ATA data signals between ATA controller 14 and devices 16 A and 16 B.
  • the ATA data signals include data bus bit 0 (DD 0 ) through DD 15 .
  • Signal lines of control bus 22 convey the ATA control signals from ATA controller 14 to devices 16 A and 16 B.
  • the ATA control signals include address signals and other control signals.
  • the address signals include chip select 0 (CS 0 ⁇ ), CS 1 ⁇ , device address bit 0 (DA 0 ), DA 1 , and DA 2 .
  • the “ ⁇ ” symbol after a signal name indicates that the signal is active low; asserted when the signal is a logic low level and negated or deasserted when the signal is a logic high level.
  • the other control signals include input/output read (DIOR ⁇ ), input/output write (DIOW ⁇ ), direct memory access acknowledge (DMACK ⁇ ), passed diagnostics (PDIAG ⁇ ), and reset (RESET ⁇ ).
  • Signal lines of status bus 24 convey the ATA status signals from device 16 A or device 16 B to ATA controller 14 .
  • the ATA status signals include direct memory access request (DMARQ), interrupt request (INTRQ), and input/output ready (IORDY).
  • DMARQ direct memory access request
  • INTRQ interrupt request
  • IORDY input/output ready
  • the current ATA standards allow only one of the devices 16 A and 16 B to be selected at any given time. Only the selected device drives the signal lines of status bus 24 . Thus the current ATA standards rule out a situation where both devices 16 A and 16 B are driving one or more signal lines of status bus 24 at the same time.
  • devices 16 A and 16 B may form a mirrored pair of disk drives.
  • a significant amount of time is spent sequentially writing data to one disk drive of the mirrored pair, and then writing the same data to the other disk drive of the mirrored pair.
  • First one ATA drive must be selected and written to, and then the other drive is selected and written to with the same data. It would thus be desirable to have a mechanism for more efficiently mirroring data in storage systems such as ATA systems in which conventionally only one drive on a port may be written to at a time.
  • a circuit comprising mirroring logic configured to couple to a controller, a first device, and a second device may be provided.
  • first and second devices e.g., data storage devices
  • a system including the mirroring logic, the controller, and the first and second devices may be provided.
  • the first and second devices may include multiple registers.
  • the mirroring logic may be configured to operate in a first connect mode wherein the mirroring logic allows the registers of the first device to be accessed from the controller and prevents the registers of the second device from being accessed from the controller.
  • the mirroring logic may also be configured to operate in a second connect mode wherein the mirroring logic allows the registers of the second device to be accessed from the controller and prevents the registers of the first device from being accessed.
  • the first and second devices may be configured via the mirroring logic such that the first and second devices are selected simultaneously. When selected simultaneously, the first and second devices may carry out a subsequently issued command simultaneously.
  • the registers of the first and second devices may be accessed via multiple control signals produced by the controller.
  • the mirroring logic may be coupled to receive a portion of the control signals and configured to selectively provide the portion of the control signals to the first and second devices.
  • the mirroring logic In the first connect mode, the mirroring logic provides the portion of the control signals to only the first device such that the registers of only the first device are accessed.
  • the mirroring logic In the second connect mode, the mirroring logic provides the portion of the control signals to only the second device such that the registers of only the second device are accessed.
  • the first and second devices may include AT Attachment (ATA) interfaces conforming to an ATA standard.
  • the control signals include ATA control signals, and the first and second devices are configurable to be selected in response to register accesses via the ATA control signals.
  • the first and second devices carry out received commands only when selected.
  • the mirroring logic when the mirroring logic is in the first connect mode, the mirroring logic provides the ATA address signals to only the first device such that the registers of only the first device are accessed.
  • the mirroring logic provides the ATA address signals to only the second device such that the registers of only the second device are accessed.
  • the mirroring logic may be coupled to receive a first set of status signals from the first device, and a corresponding second set of status signals from the second device.
  • the mirroring logic may be configured to produce a third set of status signals dependent upon the first and second sets of status signals.
  • the mirroring logic may provide the third set of status signals to the controller.
  • the mirroring logic may be further configurable to operate in a simultaneous write mode, wherein in the simultaneous write mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third set of status signals by logically ANDing corresponding status signals of the first and second sets of status signals.
  • the mirroring logic may be further configurable to operate in a normal mode, wherein in the normal mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third set of status signals by connecting together corresponding status signals of the first and second sets of status signals.
  • an embodiment of a system may include the controller, the first and second devices (e.g., data storage devices), and the mirroring logic.
  • the controller may be configured to produce multiple control signals
  • the first and second devices may include multiple registers accessed via the control signals.
  • the mirroring logic may be coupled to the first and second devices and to receive a portion of the control signals.
  • the mirroring logic may be configurable to provide the portion of the control signals to: (i) only the first device in a first mode so that the registers of the second device are not accessed, (ii) only the second device in a second mode so that the registers of the first device are not accessed, and (iii) both the first and second devices in a third mode so that the registers of both the first and second devices are accessed.
  • the mirroring logic may be configured to allow both the first and second devices to be selected simultaneously.
  • the third mode may correspond to a normal mode or a simultaneous write mode.
  • One embodiment of the system may include a pair of devices (e.g., hard disk drives) each having an ATA interface conforming to an ATA standard, wherein one of the pair of devices is configured as a master device and the other device is configured as a slave device.
  • the mirroring logic may be coupled to the pair of devices and to receive multiple ATA control signals, wherein the ATA control signals include multiple ATA address signals.
  • the mirroring logic is configurable to operate in one of multiple modes comprising: (i) a first connect mode wherein the mirroring logic provides the ATA address signals to only the master device, and (ii) a second connect mode wherein the mirroring logic provides the ATA address signals to only the slave device.
  • the mirroring logic may be configured to allow both the master and slave devices to be selected simultaneously.
  • the mirroring logic may be configured to enter the first connect mode in response to receiving a first connect mode command (e.g., three consecutive writes to the ATA features register).
  • the mirroring logic may also be configured to enter the second connect mode in response to a second connect mode command (e.g., receiving three consecutive writes to the ATA device/control register).
  • the mirroring logic may produce a third set of ATA status signals dependent upon a first set of ATA status signals received from the master device and a corresponding second set of status signals received from the slave device.
  • the mirroring logic may provide the third set of status signals to the controller.
  • the mirroring logic In the normal mode, the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third set of ATA status signals by connecting together corresponding ATA status signals of the first and second sets of ATA status signals to behave as in a conventional ATA configuration.
  • the mirroring logic may be configured to enter the normal mode in response to receiving a normal mode command (e.g., three consecutive writes to the ATA cylinder low register).
  • the mirroring logic In the simultaneous write mode, the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third set of ATA status signals by logically ANDing corresponding ATA status signals of the first and second sets of ATA status signals.
  • the mirroring logic may be configured to enter the simultaneous write mode in response to receiving a simultaneous write mode command (e.g., three consecutive writes to the ATA cylinder high register).
  • a method for configuring the first storage device and the second storage device to carry out a command from the controller simultaneously includes writing to a first register in the address space to select the first storage device to respond to commands.
  • the registers of the first storage device are prevented from being accessed. While the registers of the first storage device are prevented from being accessed, a write operation is directed to the first register in the address space to select the second storage device.
  • both the first storage device and the second storage device are selected.
  • the registers of both the first storage device and the second storage device are allowed to be accessed. While the registers of both the first and second storage devices are allowed to be accessed, a command is written to a command register in the register address space.
  • the first storage device and the second storage device receive the command and both carry out the command approximately simultaneously.
  • the method may include determining if the first storage device is ready to receive data, determining if the second storage device is ready to receive data, and performing the following if both the first storage device and the second storage device are ready to receive data: (i) allowing the registers of both the first storage device and the second storage device to be accessed, and (ii) writing a block of data to corresponding data registers of the first storage device and the second storage device, wherein the first storage device and the second storage device store the data approximately simultaneously.
  • the determining if the first storage device is ready to receive data may include: (i) preventing the registers of the second storage device from being accessed, and (ii) while the registers of the second storage device are prevented from being accessed, reading a value from a status register of the first storage device.
  • the determining if the second storage device is ready to receive data may include: (i) preventing the registers of the first storage device from being accessed, and (ii) while the registers of the first storage device are prevented from being accessed, reading a value from a status register of the second storage device.
  • FIG. 1 is a diagram of one embodiment of a conventional computer system including a host coupled to two devices via an ATA controller and an ATA bus, wherein to perform a mirrored write operation, one of the two devices must be selected and written to, and then the other device must be selected and written to with the same data;
  • FIG. 2 is a diagram of one embodiment of a system including a host, ATA controller, two devices, and an ATA bus, wherein the system further includes mirroring logic coupled to the ATA controller and the two devices, and wherein the mirroring logic is configurable to allow the two devices to be selected simultaneously;
  • FIG. 3 is a diagram of an embodiment of the system of FIG. 2 wherein the host includes a peripheral bus, and wherein the ATA controller is coupled to the peripheral bus;
  • FIG. 4 is a flow chart of one embodiment of a setup portion of a method for writing to the two devices of FIGS. 2 - 3 simultaneously;
  • FIGS. 5 A- 5 C in combination form a flow chart of one embodiment of a programmed input/output (PIO) portion of the method for writing to the two devices of FIGS. 2 - 3 simultaneously; and
  • PIO programmed input/output
  • FIG. 6 is a flow chart of one embodiment of a method for clearing interrupt signals set by the two devices of FIGS. 2 - 3 and checking for errors during a simultaneous write operation.
  • FIG. 2 is a diagram of one embodiment of a computer system 30 including host 12 coupled to devices 16 A- 16 B via ATA controller 14 , ATA bus 18 , and mirroring logic 32 .
  • Devices 16 A and 16 B include ATA interfaces, and may be ATA storage devices. Examples of ATA storage devices include hard disk drives, compact disk read only memory (CD-ROM) drives, and tape drives.
  • Devices 16 A and 16 B are configured to form a “master/slave” device pair according to the ATA standards. Either device 16 A or 16 B is configured to be a “master” device, and the other device 16 is configured to be a “slave” device.
  • Mirroring logic 32 is coupled between ATA controller 14 and devices 16 A and 16 B. As described in detail below, mirroring logic 32 is configurable to provide ATA address signals from ATA controller 14 to: (i) the master device only, (ii) the slave device only, or (iii) both the master device and the slave device. Mirroring logic 32 is used to configure both devices 16 A and 16 B to be selected simultaneously. This allows the storing of data within devices 16 A and 16 B simultaneously (i.e., simultaneous writes to devices 16 A and 16 B). Mirroring logic 32 also logically combines corresponding ATA status signals from devices 16 A and 16 B and provides a resulting single set of ATA status signals to ATA controller 14 .
  • a RAID 1 disk mirroring data storage system may be established within computer system 30 wherein devices 16 A and 16 B form a mirrored pair of disk drives.
  • Mirroring logic 32 facilitates the ability to perform simultaneous writes to devices 16 A and 16 B in order to avoid a write operation to the mirrored pair involving writing data to one disk drive of the mirrored pair (e.g., device 16 A) and then writing the same data to the other disk drive of the mirrored pair (e.g., device 16 B) as described above for conventional systems.
  • mirroring logic 32 and the ability to perform simultaneous writes to devices 16 A and 16 B significant amounts of time may be saved during write operations to the mirrored pair, and the performance of the RAID 1 disk mirroring data storage system may be substantially increased.
  • Host 12 accesses devices 16 A and 16 B via ATA controller 14 , ATA bus 18 , and mirroring logic 32 .
  • ATA controller 14 and ATA bus 18 may conform to AT attachment (ATA) standard ANSI X3.221-1994, or any other ATA standard or variant thereof.
  • AT attachment ATA
  • computer system 30 may include additional ATA controllers 14 and associated additional ATA buses 18 , thus allowing more than two devices with ATA interfaces to be coupled to host 12 .
  • ATA bus 18 includes data bus 20 , control bus 22 , and status bus 24 described above.
  • Signal lines of data bus 20 are bi-directional signal lines which convey the ATA data signals (i.e., DD 0 -DD 15 ) between ATA controller 14 and devices 16 A and 16 B.
  • Signal lines of control bus 22 include address signal lines 22 A and other control signal lines 22 B.
  • the other control signal lines 22 B convey ATA control signals other than the ATA address signals (i.e., DIOR ⁇ , DIOW ⁇ , DMACK ⁇ , PDIAG ⁇ , and RESET ⁇ ) from ATA controller 14 to devices 16 A and 16 B.
  • the other control signal lines 22 B also convey ATA control signals DIOR ⁇ and DIOW ⁇ to mirroring logic 32 .
  • Address signal lines 22 A convey ATA address signals (i.e., CS 0 ⁇ , CS 1 ⁇ , DA 0 , DA 1 , and DA 2 ) from ATA controller 14 to mirroring logic 32 .
  • Mirroring logic 32 receives the ATA address signals.
  • mirroring logic 32 is configurable to provides the ATA address signals to: (i) device 16 A via address signal lines 34 A, (ii) to device 16 B via address signal lines 34 B, or (iii) both device 16 A and device 16 B via respective address signal lines 34 A and 34 B.
  • Mirroring logic is used to configure both devices 16 A and 16 B to be selected simultaneously for certain operations.
  • Mirroring logic 32 also receives a first set of ATA status signals (i.e., DMARQ, INTRQ, and IORDY) from device 16 A via status signal lines 36 A, and a second set of ATA status signals from device 16 B via status signal lines 36 B. Mirroring logic 32 produces a third set of ATA status signals dependent upon the first and seconds sets of ATA status signals. Signal lines of status bus 24 convey the third set of ATA status signals from mirroring logic 32 to ATA controller 14 .
  • a first set of ATA status signals i.e., DMARQ, INTRQ, and IORDY
  • mirroring logic 32 is configurable to operate in one of various modes including a “normal mode” and a “simultaneous write mode”. In both the normal mode and the simultaneous write modes, mirroring logic 32 provides ATA address signals from ATA controller 14 to both device 16 A and device 16 B. In the normal mode, mirroring logic 32 produces the third set of ATA status signals by connecting together corresponding ATA status signals of the first set of ATA status signals received from device 16 A and the second set of ATA status signals received from device 16 B. Thus in the normal mode, mirroring logic 32 produces the DMARQ signal of the third set of ATA status signals by connecting or wiring together the DMARQ signal received from device 16 A with the DMARQ signal received from device 16 B.
  • mirroring logic 32 produces the INTRQ signal of the third set of ATA status signals by connecting or wiring together the INTRQ signal received from device 16 A with the INTRQ signal received from device 16 B, and produces the IORDY signal of the third set of ATA status signals by connecting or wiring together the IORDY signal received from device 16 A with the IORDY signal received from device 16 B.
  • mirroring logic 32 is configured to report a “ready” or “complete” status of devices 16 A and 16 B to ATA controller 14 only when both devices 16 A and 16 B have reported the “ready” or “complete” status.
  • mirroring logic 32 produces the third set of ATA status by logically ANDing corresponding ATA status signals of the first set of ATA status signals received from device 16 A and the second set of ATA status signals received from device 16 B.
  • mirroring logic 32 produces the DMARQ signal of the third set of ATA status signals by logically ANDing the DMARQ signal received from device 16 A with the DMARQ signal received from device 16 B.
  • mirroring logic 32 produces the INTRQ signal of the third set of ATA status signals by logically ANDing the INTRQ signal received from device 16 A with the INTRQ signal received from device 16 B, and produces the IORDY signal of the third set of ATA status signals by logically ANDing the IORDY signal received from device 16 A with the IORDY signal received from device 16 B.
  • the simultaneous write mode thus allows the host to properly respond to the status of both devices 16 A and 16 B. For example, both device 16 A and device 16 B must assert their respective DMARQ signals before the DMARQ signal of the third set will be asserted to indicate that DMA may now proceed.
  • FIG. 3 is a diagram of an embodiment of computer system 30 of FIG. 2 wherein host 12 includes a central processing unit (CPU) 40 , a local bus 42 , bridge logic 44 , a memory 46 , and a peripheral component interconnect (PCI) bus 50 .
  • CPU 40 is coupled to local bus 42 and executes software instructions stored in memory 46 .
  • CPU 40 may be, for example, a microprocessor.
  • Bridge logic 44 is coupled between local bus 42 and PCI bus 50 , and controls the transfer of information (i.e., commands and/or data) between local bus 42 and PCI bus 50 .
  • memory 46 may be coupled to local bus 42 .
  • bridge logic 44 may include a memory controller, and memory 46 may be coupled to bridge logic 44 .
  • ATA controller 14 is coupled to PCI bus 50 .
  • An “enhanced” ATA driver 48 resides within memory 46 and includes software instructions.
  • CPU 40 communicates with devices 16 A and 16 B via ATA controller 14 by executing the software instructions of ATA driver 48 .
  • ATA driver 48 and mirroring logic 32 work together to accomplish simultaneous writes to device 16 A and 16 B.
  • simultaneous writes may be carried out using two primary protocols of ATA data transfer: programmed input/output (PIO) techniques and direct memory access (DMA) techniques (e.g., multiword DMA as defined in the ATA/ATAPI-4 standard).
  • PIO programmed input/output
  • DMA direct memory access
  • host 12 may include ATA controller 14 , and may also include mirroring logic 32 .
  • Mirroring logic 32 may be formed upon a semiconductor substrate, and may be housed within an integrated circuit package forming an integrated circuit “chip”. It is also noted that mirroring logic 32 may be incorporated within ATA controller 14 .
  • ATA controller 14 and mirroring logic 32 may be formed upon the same semiconductor substrate, and may be housed within the same integrated circuit package forming an integrated circuit “chip”.
  • the ATA interfaces of devices 16 A and 16 B include the standard ATA register set accessed using the ATA address signals CS 0 ⁇ , CS 1 ⁇ , DA 0 , DA 1 , and DA 2 .
  • the standard ATA register set includes the ATA control block registers and the ATA command block registers.
  • the ATA control block registers include the ATA alternate status register and the ATA device control register.
  • the ATA command block registers include the ATA data register, the ATA features register, the ATA sector count register, the ATA sector number register, the ATA cylinder low register, the ATA cylinder high register, the ATA device/head register, the ATA status register, and the ATA command register.
  • Mirroring logic 32 is configured to enter one of several different modes in response to receiving a corresponding mode command on the ATA bus. Mirroring logic 32 performs different functions in each mode. Table 1 below lists modes of mirroring logic 32 and corresponding mode commands and mode functions. Table 2 below lists exemplary implementations of the mode commands of Table 1. It is noted that other implementations of the mode commands are possible and contemplated. TABLE 1 Modes of Mirroring Logic 32 And Corresponding Mode Commands and Mode Functions. Mirroring Mode Mode Logic 32 Mode: Command: Functions: Master Connect Master Connect Disconnect address signal lines connected to slave device 1 from address signal lines 22A. Slave Connect Slave Connect Disconnect address signal lines connected to master device 0 from address signal lines 22A.
  • Simultaneous Simultaneous Drive address signal lines Write Write connected to master device 0 and slave device 1 with values from address signal lines 22A.
  • Drive status bus 24 with ATA status signals formed by logically ANDing corresponding ATA status signals received from master device 0 and slave device 1.
  • Normal Normal Drive address signal lines connected to master device 0 and slave device 1 with values from address signal lines 22A.
  • Drive status bus 24 with ATA status signals formed by wiring together corresponding ATA status signals received from master device 0 and slave device 1.
  • the “master connect mode” and the “slave connect mode” are used to disconnect either device 16 A or 16 B from address signals lines 22 A in order to configure devices 16 A and 16 B to be selected simultaneously. How this is accomplished in one embodiment is described in detail below.
  • Receiving the “master connect” mode command e.g., 3 consecutive writes to the ATA features register via ATA bus 18 ) causes mirroring logic 32 to operate in the master connect mode.
  • either device 16 A or device 16 B is configured as the master device (i.e., master device 0), and the other device 16 is configured as the slave device (i.e., slave device 1).
  • Mirroring logic 32 includes detection circuitry coupled to driver circuitry.
  • the detection circuitry detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to slave device 1 from address signal lines 22 A. (See Table 1 above.) Thus in the master connect mode, only master device 0 receives the address signals present upon address signal lines 22 A so that only the master device 0 will respond to register accesses.
  • address signal lines i.e., address signal lines 34 A or 34 B
  • Receiving the “slave connect” mode command causes mirroring logic 32 to operate in the slave connect mode.
  • the detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to master device 0 from address signal lines 22 A. (See Table 1 above.)
  • address signal lines i.e., address signal lines 34 A or 34 B
  • control signals other than the address lines may be connected or disconnected from the devices in the “master connect” and “slave connect” modes so that one of the devices will be temporarily “disconnected”.
  • Receiving the “simultaneous write” mode command causes mirroring logic 32 to operate in the above described simultaneous write mode.
  • the detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to both master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • status signal generation circuitry within mirroring logic 32 receives a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1.
  • the status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • mirroring logic 32 receives the “normal” mode command (e.g., 3 consecutive writes to the ATA cylinder low register via ATA bus 18 ) causes mirroring logic 32 to operate in the above described normal mode.
  • the detection circuitry within mirroring logic 32 detects the normal mode command, and signals the driver circuitry to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • the status signal generation circuitry within mirroring logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1.
  • the status signal generation circuitry connects or wires together corresponding status signals of the first and second sets to form the third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • devices 16 A and 16 B are coupled to ATA controller 14 via mirroring logic 32 in conventional ATA fashion.
  • FIG. 4 is a flow chart of one embodiment of a setup portion 60 of a method for writing to devices 16 A and 16 B of FIGS. 2 - 3 simultaneously (e.g., causing devices 16 A and 16 B of FIGS. 2 - 3 to perform a mirrored write operation simultaneously).
  • the method for writing to devices 16 A and 16 B simultaneously may be embodied within ATA driver 48 (FIG. 3), and the following description of setup portion 60 will be presented accordingly.
  • ATA driver 48 (FIG. 3) sets up the desired simultaneous transfer protocol with the drives. For example, if a multiword DMA write is desired, ATA driver 48 may issue a SET FEATURE command to both drives, following the standard ATA protocol. This action selects multiword DMA and deselects any Ultra DMA modes.
  • either device 16 A or device 16 B is configured as master device 0, and the other device 16 is configured as slave device 1.
  • ATA driver 48 selects master device 0.
  • the driver circuitry within mirroring logic 32 drives address signal lines 34 A and 34 B with values received from ATA controller 14 via address signal lines 22 A.
  • ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register).
  • the detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to master device 0 from address signal lines 22 A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22 A.
  • ATA driver 48 selects slave device 1.
  • both master device 0 and slave device 1 are selected.
  • ATA driver 48 issues the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register).
  • the detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • status signal generation circuitry within mirroring logic 32 receives a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1.
  • the status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • ATA driver 48 loads ATA registers of master device 0 and slave device 1 with write parameters. For example, ATA driver 48 writes the parameters to the following ATA registers: cylinder low, cylinder high, sector count, and sector number, as in preparation for a normal ATA write operation. As both master device 0 and slave device 1 receive address signals driven upon address signal lines 22 A, both master device 0 and slave device 1 receive and store the write parameters.
  • ATA driver 48 writes a write command to the command register (e.g., the ATA command register).
  • exemplary write commands include the ATA WRITE SECTOR, WRITE MULTIPLE, and WRITE DMA commands.
  • both master device 0 and slave device 1 receive address signals driven upon address signal lines 22 A, both master device 0 and slave device 1 receive the write command and store the write command in respective command registers.
  • both master device 0 and slave device 1 are selected both master device 0 and slave device 1 carry out the command.
  • FIGS. 5 A- 5 C in combination form a flow chart of one embodiment of a programmed input/output (PIO) portion 80 of the method for writing to devices 16 A and 16 B of FIGS. 2 - 3 simultaneously, wherein PIO portion 80 may follow setup portion 60 of FIG. 4 if a PIO simultaneous transfer is desired.
  • PIO programmed input/output
  • either device 16 A or device 16 B is configured as master device 0, and the other device 16 is configured as slave device 1.
  • both master device 0 and slave device 1 are selected, and mirroring logic 32 is in the simultaneous write mode.
  • ATA driver 48 waits for master device 0 and slave device 1 to respond to a previous write command (e.g., an ATA write command written to the ATA command registers of master device 0 and slave device 1 during 74 of the above described setup portion 60 ).
  • ATA driver 48 may wait, for example, a maximum amount of time (e.g., 400 nanoseconds) allowed by ATA standards for master device 0 and slave device 1 to set the busy (BSY) bit 7 of the status register in response to the writing of the ATA write command to the ATA command register.
  • a maximum amount of time e.g. 400 nanoseconds allowed by ATA standards for master device 0 and slave device 1 to set the busy (BSY) bit 7 of the status register in response to the writing of the ATA write command to the ATA command register.
  • ATA driver 48 issues the master connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the features register).
  • the detection circuitry within mirroring logic 32 detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to slave device 1 from address signal lines 22 A. (See Table 1 above.) As a result, only master device 0 receives the address signals present upon address signal lines 22 A.
  • DRQ data request
  • ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register).
  • the detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to master device 0 from address signal lines 22 A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22 A.
  • ATA driver 48 issues the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register).
  • the detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • the status signal generation circuitry within mirroring logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1.
  • the status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form the third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • ATA driver 48 writes a block of data to the ATA data registers of master device 0 and slave device 1. Both master device 0 and slave device 1 store the write data dependent upon the write parameters and the write command.
  • the status signal generation circuitry of mirroring logic 32 logically ANDs the corresponding IORDY status signals from master device 0 and slave device 1 to produce the IORDY signal provided to ATA controller 14 : (i) either master device 0 or slave device 1 may suspend the transfer by deasserting the IORDY signal, and (ii) once suspended, the transfer does not resume until both devices assert the IORDY signal.
  • the device When one of the devices completes the transfer, the device asserts the INTRQ signal.
  • the status signal generation circuitry within mirroring logic 32 produces the INTRQ signal provided to ATA controller 14 as the logical AND of the INTRQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the INTRQ signal provided to ATA controller 14 until both master device 0 and slave device 1 have completed the block data transfer.
  • ATA driver 48 tests the value of the INTRQ signal received by ATA controller 14 from mirroring logic 32 to determine if both master device 0 and slave device 1 have completed the block data transfer. If the INTRQ signal is asserted, both master device 0 and slave device 1 have completed the block data transfer, and 102 is performed next. On the other hand, if the INTRQ signal is not asserted, master device 0 and/or slave device 1 has not completed the block data transfer. In this situation, 100 is repeated until both master device 0 and slave device 1 have completed the block data transfer.
  • ATA driver 48 clears the INTRQ signals of master device 0 and slave device 1 by reading the status registers of each device in sequence. (A method for performing this procedure is shown in FIG. 6 and described in detail below.) ATA driver 48 checks the status register values to see if master device 0 and/or slave device 1 indicted an error occurred during the block data transfer. As described below, if an error occurred during the block data transfer, ATA driver 48 may abort the write operation, and 108 may be performed next.
  • ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation.
  • the detection circuitry within mirroring logic 32 detects the normal mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • the status signal generation circuitry within mirroring logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1.
  • the status signal generation circuitry connects corresponding status signals of the first and second sets to form the third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation. (See 106 above.)
  • ATA driver 48 executes a standard ATA error recovery procedure.
  • FIG. 6 is a flow chart of one embodiment of a method 120 for clearing interrupt signals (e.g., ATA INTRQ signals) set by devices 16 A and 16 B of FIGS. 2 - 3 and checking for errors during a simultaneous write operation.
  • Method 120 may be used to perform 102 of PIO portion 80 (FIGS. 5 A- 5 C) of the above described method for simultaneously writing to devices 16 A and 16 B.
  • the method for writing to devices 16 A and 16 B simultaneously is preferably embodied within ATA driver 48 (FIG. 3), and the following description of method 120 will be presented accordingly.
  • one of the devices 16 A and 16 B is configured as master device 0, and the other device 16 is configured as slave device 1.
  • ATA driver 48 issues the master connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the features register).
  • the detection circuitry within mirroring logic 32 detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to slave device 1 from address signal lines 22 A. (See Table 1 above.) As a result, only master device 0 receives the address signals present upon address signal lines 22 A.
  • ATA driver 48 reads the status register. As only master device 0 receives the address signals present upon address signal lines 22 A, ATA driver 48 reads the status register of master device 0 during 124 . The reading of the status register of master device 0 causes master device 0 to deassert the INTRQ signal.
  • ATA driver 48 tests the status register value obtained from master device 0 during 124 . If the status register value indicates an error, ATA driver 48 aborts the simultaneous write operation, and 108 of PIO portion 80 (FIGS. 5 A- 5 C) described above is performed next. During 108 , ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation. Following 108 , 110 of PIO portion 80 is performed, resulting in ATA driver 48 executing a standard ATA error recovery procedure as described above. If, on the other hand, the status register value does not indicate an error in 124 , 128 is performed next.
  • mirroring logic 32 e.g., by performing 3 consecutive writes to the ATA cylinder low register
  • ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register).
  • the detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34 A or 34 B) connected to master device 0 from address signal lines 22 A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22 A.
  • ATA driver 48 reads the status register. As only slave device 1 receives the address signals present upon address signal lines 22 A, ATA driver 48 reads the status register of slave device 1 during 130 . The reading of the status register of slave device 1 causes slave device 1 to deassert the INTRQ signal.
  • ATA driver 48 tests the status register value obtained from slave device 1 during 130 . If the status register value indicates an error, ATA driver 48 aborts the simultaneous write operation, and 108 of PIO portion 80 described above is performed next. (See 126 above.) If, on the other hand, the status register value does not indicate an error in 124 , method 120 is complete.
  • a multiword DMA simultaneous transfer protocol will now be described. If a multiword DMA simultaneous transfer is indicted (e.g., via bits 7 - 5 of the value written to the cylinder high register during the final write operation of 70 of setup portion 60 of FIGS. 4 A- 4 B), master drive 0 and slave drive 1 will assert DMARQ signals when ready to transfer data.
  • ATA driver 48 issued the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register).
  • the detection circuitry within mirroring logic 32 detected the simultaneous write mode command, and signaled the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34 A and 34 B) with values received from ATA controller 14 via address signal lines 22 A.
  • status signal generation circuitry within mirroring logic 32 was configured to receive a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1, and to logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above.
  • Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • mirroring logic 32 As the status signal generation circuitry within mirroring logic 32 produces the DMARQ signal provided to ATA controller 14 as the logical AND of the DMARQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the DMARQ signal provided to ATA controller 14 until the DMARQ signals from master device 0 and slave device 1 are both asserted (i.e., both master device 0 and slave device 1 are ready to transfer data).
  • the device When a given device completes the multiword DMA transfer, the device asserts the INTRQ signal. As the status signal generation circuitry within mirroring logic 32 produces the INTRQ signal provided to ATA controller 14 as the logical AND of the INTRQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the INTRQ signal provided to ATA controller 14 until both master device 0 and slave device 1 have completed the multiword DMA transfer.
  • ATA driver 48 clears the INTRQ signals of master device 0 and slave device 1 and checks for errors during the multiword DMA transfer (e.g., using method 120 of FIG. 6). If a status register value indicates an error, ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation (e.g., 108 of PIO portion 80 of FIGS. 5 A- 5 C). ATA driver 48 then executes a standard ATA error recovery procedure (e.g., 110 of PIO portion 80 ). If, on the other hand, the status register values do not indicate an error, the multiword DMA transfer is complete.
  • a standard ATA error recovery procedure e.g., 110 of PIO portion 80 .

Abstract

A system may include mirroring logic, a controller, and first and second devices (e.g., data storage devices). The first and second devices may include multiple registers. The mirroring logic may be configured in a first mode wherein the mirroring logic allows the registers of the first device to be accessed from the controller and prevents the registers of the second device from being accessed from the controller. The mirroring logic may be configured in a second mode wherein the mirroring logic allows the registers of the second device to be accessed from the controller and prevents the registers of the first device from being accessed. The first and second devices may be configured via the mirroring logic such that the first and second devices are selected simultaneously. When selected simultaneously, the first and second devices may carry out a subsequently issued command substantially simultaneously.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention [0001]
  • This invention relates to computer data storage systems, and more particularly to disk mirroring techniques in computer data storage systems. [0002]
  • 2. Description of the Related Art [0003]
  • A typical computer system includes one or more hard disk drives (i.e., disk drives) for storing data. While the reliabilities of disk drives continue to improve, it is only a matter of time before a given disk drive fails. Data storage systems commonly implement one of several redundant array of inexpensive/independent disks (RAID) techniques in order to allow stored data to remain available despite a failure of one of the disk drives. [0004]
  • [0005] RAID level 1, or disk mirroring, stores identical copies of data on two different disk drives. Disk mirroring involves the exact replication of data. A mirrored disk array uses twice as many disks as a non-redundant disk array. Data written to one disk is also written to a redundant disk, such that there are always two physical copies of the same information. When data is read, it can be retrieved from the disk with the shorter queuing, seek, and rotational delays. If a disk drive of a RAID-1 system fails, the other copy is used to service requests and reconstruct a new mirrored disk. Disk mirroring is frequently used in database applications where availability and transaction rates are more important than storage efficiency. Since a block of data needs to be written to two different locations, a write performance penalty may be associated with mirroring.
  • Intelligent/Integrated drive electronics (IDE) is an interface technology for mass storage devices (e.g., disk drives) wherein the controller is integrated into the drive, and AT Attachment (ATA) is a disk drive interface standard. The two terms and their acronyms are often used interchangeably. Several versions of the ATA standard exist, including the basic ATA standard, Fast ATA, ATA-2, Fast ATA-2, ATA-3, and Ultra ATA. As used herein, the term “AT attachment” and the acronyms “ATA” and “IDE” refer to all variants of ATA-type or IDE-type interfaces. The basic ATA standard (ANSI X3.221-1994) supports a single 16-bit parallel data channel which may be shared by two separate devices configured as master and slave. [0006]
  • Today's disk drive market consists mainly of AT attachment (ATA), small computer systems interface (SCSI) and fibre channel drives. Fibre channel and SCSI drives are employed in enterprise class storage systems, while ATA drives are often limited to desktop applications. At the time of this disclosure, ATA drives are often a factor of between 2 to 3 times cheaper than SCSI drives. The ATA bus is a shared bus between a host and a maximum of 2 ATA drives. [0007]
  • When two ATA drives are connected to an ATA bus, they are popularly referred to as a master/slave pair. Both the master and slave drives include a set of interface registers that provide control and status information. Whenever the host writes to a register, the information is written into the corresponding registers of both the master drive and the slave drive. For example, during ATA operations, the host selects the desired drive by writing 0 (selects master drive) or 1 (selects slave drive) to a drive selection bit in an ATA device/head register. The host then writes a command to an ATA command register. Both the master drive and the slave drive check the device selection bit, and only the selected drive executes the command and responds to the host. [0008]
  • FIG. 1 is a diagram of one embodiment of a [0009] typical computer system 10 including a host 12 coupled to two devices 16A-16B via an ATA controller 14 and an ATA bus 18. Devices 16A and 16B include ATA interfaces, and may be ATA storage devices. Examples of ATA storage devices include hard disk drives, compact disk read only memory (CD-ROM) drives, and tape drives. Devices 16A and 16B in FIG. 1 are configured to form a “master/slave” device pair according to the ATA standards. Either device 16A or device 16B is configured to be a “master” device, and the other device 16 is configured to be a “slave” device. Host 12 accesses devices 16A and 16B via ATA controller 14 and ATA bus 18. The current ATA standards allow one or two devices to be coupled to host 12 via ATA controller 14. It is noted that many computer systems include two ATA controllers, thus allowing up to four devices with ATA interfaces to be coupled to a host.
  • In the known embodiment of FIG. 1, ATA [0010] bus 18 is typically implemented as a flat ribbon cable having multiple conductors with three connectors attached thereto. A first of the three connectors is located at one end of the ribbon cable, and the other two connectors are positioned close together near the other end of the ribbon cable. ATA controller 14 is coupled to the first connector, and devices 16A and 16B are coupled to the other two connectors. ATA bus 18 acts as a “shared bus” coupling devices 16A and 16B to ATA controller 14.
  • ATA [0011] bus 18 includes a data bus 20, a control bus 22, and a status bus 24. Signal lines of data bus 20 are bidirectional signal lines which convey the ATA data signals between ATA controller 14 and devices 16A and 16B. The ATA data signals include data bus bit 0 (DD0) through DD15. Signal lines of control bus 22 convey the ATA control signals from ATA controller 14 to devices 16A and 16B. The ATA control signals include address signals and other control signals. The address signals include chip select 0 (CS0−), CS1−, device address bit 0 (DA0), DA1, and DA2. (The “−” symbol after a signal name indicates that the signal is active low; asserted when the signal is a logic low level and negated or deasserted when the signal is a logic high level.) The other control signals include input/output read (DIOR−), input/output write (DIOW−), direct memory access acknowledge (DMACK−), passed diagnostics (PDIAG−), and reset (RESET−).
  • Signal lines of [0012] status bus 24 convey the ATA status signals from device 16A or device 16B to ATA controller 14. The ATA status signals include direct memory access request (DMARQ), interrupt request (INTRQ), and input/output ready (IORDY). As described above, the current ATA standards allow only one of the devices 16A and 16B to be selected at any given time. Only the selected device drives the signal lines of status bus 24. Thus the current ATA standards rule out a situation where both devices 16A and 16B are driving one or more signal lines of status bus 24 at the same time.
  • In order to preclude a loss of critical data stored via disk drives, it is possible to implement a [0013] RAID 1 data storage system in the typical computer system 10 of FIG. 1. In this situation, devices 16A and 16B may form a mirrored pair of disk drives. However, as only one of the mirrored pair of disk drives may be accessed at any given time, a significant amount of time is spent sequentially writing data to one disk drive of the mirrored pair, and then writing the same data to the other disk drive of the mirrored pair. First one ATA drive must be selected and written to, and then the other drive is selected and written to with the same data. It would thus be desirable to have a mechanism for more efficiently mirroring data in storage systems such as ATA systems in which conventionally only one drive on a port may be written to at a time.
  • SUMMARY OF THE INVENTION
  • A circuit comprising mirroring logic configured to couple to a controller, a first device, and a second device may be provided. Various methods for configuring first and second devices (e.g., data storage devices) to carry out a command from a controller simultaneously, which may be embodied within the mirroring logic, may be provided. A system including the mirroring logic, the controller, and the first and second devices may be provided. The first and second devices may include multiple registers. The mirroring logic may be configured to operate in a first connect mode wherein the mirroring logic allows the registers of the first device to be accessed from the controller and prevents the registers of the second device from being accessed from the controller. The mirroring logic may also be configured to operate in a second connect mode wherein the mirroring logic allows the registers of the second device to be accessed from the controller and prevents the registers of the first device from being accessed. The first and second devices may be configured via the mirroring logic such that the first and second devices are selected simultaneously. When selected simultaneously, the first and second devices may carry out a subsequently issued command simultaneously. [0014]
  • In one embodiment, the registers of the first and second devices may be accessed via multiple control signals produced by the controller. The mirroring logic may be coupled to receive a portion of the control signals and configured to selectively provide the portion of the control signals to the first and second devices. In the first connect mode, the mirroring logic provides the portion of the control signals to only the first device such that the registers of only the first device are accessed. In the second connect mode, the mirroring logic provides the portion of the control signals to only the second device such that the registers of only the second device are accessed. [0015]
  • For example, in some embodiments the first and second devices may include AT Attachment (ATA) interfaces conforming to an ATA standard. In this situation, the control signals include ATA control signals, and the first and second devices are configurable to be selected in response to register accesses via the ATA control signals. The first and second devices carry out received commands only when selected. In one embodiment, when the mirroring logic is in the first connect mode, the mirroring logic provides the ATA address signals to only the first device such that the registers of only the first device are accessed. In the second connect mode, the mirroring logic provides the ATA address signals to only the second device such that the registers of only the second device are accessed. [0016]
  • In an embodiment, the mirroring logic may be coupled to receive a first set of status signals from the first device, and a corresponding second set of status signals from the second device. The mirroring logic may be configured to produce a third set of status signals dependent upon the first and second sets of status signals. The mirroring logic may provide the third set of status signals to the controller. [0017]
  • The mirroring logic may be further configurable to operate in a simultaneous write mode, wherein in the simultaneous write mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third set of status signals by logically ANDing corresponding status signals of the first and second sets of status signals. [0018]
  • The mirroring logic may be further configurable to operate in a normal mode, wherein in the normal mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third set of status signals by connecting together corresponding status signals of the first and second sets of status signals. [0019]
  • In general, an embodiment of a system may include the controller, the first and second devices (e.g., data storage devices), and the mirroring logic. As described above, the controller may be configured to produce multiple control signals, and the first and second devices may include multiple registers accessed via the control signals. The mirroring logic may be coupled to the first and second devices and to receive a portion of the control signals. The mirroring logic may be configurable to provide the portion of the control signals to: (i) only the first device in a first mode so that the registers of the second device are not accessed, (ii) only the second device in a second mode so that the registers of the first device are not accessed, and (iii) both the first and second devices in a third mode so that the registers of both the first and second devices are accessed. The mirroring logic may be configured to allow both the first and second devices to be selected simultaneously. The third mode may correspond to a normal mode or a simultaneous write mode. [0020]
  • One embodiment of the system may include a pair of devices (e.g., hard disk drives) each having an ATA interface conforming to an ATA standard, wherein one of the pair of devices is configured as a master device and the other device is configured as a slave device. The mirroring logic may be coupled to the pair of devices and to receive multiple ATA control signals, wherein the ATA control signals include multiple ATA address signals. The mirroring logic is configurable to operate in one of multiple modes comprising: (i) a first connect mode wherein the mirroring logic provides the ATA address signals to only the master device, and (ii) a second connect mode wherein the mirroring logic provides the ATA address signals to only the slave device. The mirroring logic may be configured to allow both the master and slave devices to be selected simultaneously. [0021]
  • The mirroring logic may be configured to enter the first connect mode in response to receiving a first connect mode command (e.g., three consecutive writes to the ATA features register). The mirroring logic may also be configured to enter the second connect mode in response to a second connect mode command (e.g., receiving three consecutive writes to the ATA device/control register). [0022]
  • The mirroring logic may produce a third set of ATA status signals dependent upon a first set of ATA status signals received from the master device and a corresponding second set of status signals received from the slave device. The mirroring logic may provide the third set of status signals to the controller. [0023]
  • In the normal mode, the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third set of ATA status signals by connecting together corresponding ATA status signals of the first and second sets of ATA status signals to behave as in a conventional ATA configuration. The mirroring logic may be configured to enter the normal mode in response to receiving a normal mode command (e.g., three consecutive writes to the ATA cylinder low register). [0024]
  • In the simultaneous write mode, the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third set of ATA status signals by logically ANDing corresponding ATA status signals of the first and second sets of ATA status signals. The mirroring logic may be configured to enter the simultaneous write mode in response to receiving a simultaneous write mode command (e.g., three consecutive writes to the ATA cylinder high register). [0025]
  • In a system comprising a controller (e.g., an ATA controller), a first storage device and a second storage device (e.g., ATA storage devices coupled to the same port of the ATA controller), wherein each of the pair of devices includes multiple registers mapped to the same register address space, a method for configuring the first storage device and the second storage device to carry out a command from the controller simultaneously includes writing to a first register in the address space to select the first storage device to respond to commands. The registers of the first storage device are prevented from being accessed. While the registers of the first storage device are prevented from being accessed, a write operation is directed to the first register in the address space to select the second storage device. As a result, both the first storage device and the second storage device are selected. The registers of both the first storage device and the second storage device are allowed to be accessed. While the registers of both the first and second storage devices are allowed to be accessed, a command is written to a command register in the register address space. The first storage device and the second storage device receive the command and both carry out the command approximately simultaneously. [0026]
  • Where the command is a write command, the method may include determining if the first storage device is ready to receive data, determining if the second storage device is ready to receive data, and performing the following if both the first storage device and the second storage device are ready to receive data: (i) allowing the registers of both the first storage device and the second storage device to be accessed, and (ii) writing a block of data to corresponding data registers of the first storage device and the second storage device, wherein the first storage device and the second storage device store the data approximately simultaneously. [0027]
  • The determining if the first storage device is ready to receive data may include: (i) preventing the registers of the second storage device from being accessed, and (ii) while the registers of the second storage device are prevented from being accessed, reading a value from a status register of the first storage device. [0028]
  • The determining if the second storage device is ready to receive data may include: (i) preventing the registers of the first storage device from being accessed, and (ii) while the registers of the first storage device are prevented from being accessed, reading a value from a status register of the second storage device. [0029]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a diagram of one embodiment of a conventional computer system including a host coupled to two devices via an ATA controller and an ATA bus, wherein to perform a mirrored write operation, one of the two devices must be selected and written to, and then the other device must be selected and written to with the same data; [0030]
  • FIG. 2 is a diagram of one embodiment of a system including a host, ATA controller, two devices, and an ATA bus, wherein the system further includes mirroring logic coupled to the ATA controller and the two devices, and wherein the mirroring logic is configurable to allow the two devices to be selected simultaneously; [0031]
  • FIG. 3 is a diagram of an embodiment of the system of FIG. 2 wherein the host includes a peripheral bus, and wherein the ATA controller is coupled to the peripheral bus; [0032]
  • FIG. 4 is a flow chart of one embodiment of a setup portion of a method for writing to the two devices of FIGS. [0033] 2-3 simultaneously;
  • FIGS. [0034] 5A-5C in combination form a flow chart of one embodiment of a programmed input/output (PIO) portion of the method for writing to the two devices of FIGS. 2-3 simultaneously; and
  • FIG. 6 is a flow chart of one embodiment of a method for clearing interrupt signals set by the two devices of FIGS. [0035] 2-3 and checking for errors during a simultaneous write operation.
  • While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. [0036]
  • DETAILED DESCRIPTION OF THE INVENTION
  • FIG. 2 is a diagram of one embodiment of a [0037] computer system 30 including host 12 coupled to devices 16A-16B via ATA controller 14, ATA bus 18, and mirroring logic 32. Devices 16A and 16B include ATA interfaces, and may be ATA storage devices. Examples of ATA storage devices include hard disk drives, compact disk read only memory (CD-ROM) drives, and tape drives. Devices 16A and 16B are configured to form a “master/slave” device pair according to the ATA standards. Either device 16A or 16B is configured to be a “master” device, and the other device 16 is configured to be a “slave” device.
  • Mirroring [0038] logic 32 is coupled between ATA controller 14 and devices 16A and 16B. As described in detail below, mirroring logic 32 is configurable to provide ATA address signals from ATA controller 14 to: (i) the master device only, (ii) the slave device only, or (iii) both the master device and the slave device. Mirroring logic 32 is used to configure both devices 16A and 16B to be selected simultaneously. This allows the storing of data within devices 16A and 16B simultaneously (i.e., simultaneous writes to devices 16A and 16B). Mirroring logic 32 also logically combines corresponding ATA status signals from devices 16A and 16B and provides a resulting single set of ATA status signals to ATA controller 14.
  • When [0039] devices 16A and 16B are ATA disk drives, a RAID 1 disk mirroring data storage system may be established within computer system 30 wherein devices 16A and 16B form a mirrored pair of disk drives. Mirroring logic 32 facilitates the ability to perform simultaneous writes to devices 16A and 16B in order to avoid a write operation to the mirrored pair involving writing data to one disk drive of the mirrored pair (e.g., device 16A) and then writing the same data to the other disk drive of the mirrored pair (e.g., device 16B) as described above for conventional systems. With mirroring logic 32 and the ability to perform simultaneous writes to devices 16A and 16B, significant amounts of time may be saved during write operations to the mirrored pair, and the performance of the RAID 1 disk mirroring data storage system may be substantially increased.
  • [0040] Host 12 accesses devices 16A and 16B via ATA controller 14, ATA bus 18, and mirroring logic 32. ATA controller 14 and ATA bus 18 may conform to AT attachment (ATA) standard ANSI X3.221-1994, or any other ATA standard or variant thereof. As described above, the current ATA standards allow one or two devices to be coupled to host 12 via ATA controller 14 and ATA bus 18. It is noted that computer system 30 may include additional ATA controllers 14 and associated additional ATA buses 18, thus allowing more than two devices with ATA interfaces to be coupled to host 12.
  • [0041] ATA bus 18 includes data bus 20, control bus 22, and status bus 24 described above. Signal lines of data bus 20 are bi-directional signal lines which convey the ATA data signals (i.e., DD0-DD15) between ATA controller 14 and devices 16A and 16B. Signal lines of control bus 22 include address signal lines 22A and other control signal lines 22B. The other control signal lines 22B convey ATA control signals other than the ATA address signals (i.e., DIOR−, DIOW−, DMACK−, PDIAG−, and RESET−) from ATA controller 14 to devices 16A and 16B. The other control signal lines 22B also convey ATA control signals DIOR− and DIOW− to mirroring logic 32.
  • [0042] Address signal lines 22A convey ATA address signals (i.e., CS0−, CS1−, DA0, DA1, and DA2) from ATA controller 14 to mirroring logic 32. Mirroring logic 32 receives the ATA address signals. As described in more detail below, mirroring logic 32 is configurable to provides the ATA address signals to: (i) device 16A via address signal lines 34A, (ii) to device 16B via address signal lines 34B, or (iii) both device 16A and device 16B via respective address signal lines 34A and 34B. Mirroring logic is used to configure both devices 16A and 16B to be selected simultaneously for certain operations.
  • Mirroring [0043] logic 32 also receives a first set of ATA status signals (i.e., DMARQ, INTRQ, and IORDY) from device 16A via status signal lines 36A, and a second set of ATA status signals from device 16B via status signal lines 36B. Mirroring logic 32 produces a third set of ATA status signals dependent upon the first and seconds sets of ATA status signals. Signal lines of status bus 24 convey the third set of ATA status signals from mirroring logic 32 to ATA controller 14.
  • As described in more detail below, mirroring [0044] logic 32 is configurable to operate in one of various modes including a “normal mode” and a “simultaneous write mode”. In both the normal mode and the simultaneous write modes, mirroring logic 32 provides ATA address signals from ATA controller 14 to both device 16A and device 16B. In the normal mode, mirroring logic 32 produces the third set of ATA status signals by connecting together corresponding ATA status signals of the first set of ATA status signals received from device 16A and the second set of ATA status signals received from device 16B. Thus in the normal mode, mirroring logic 32 produces the DMARQ signal of the third set of ATA status signals by connecting or wiring together the DMARQ signal received from device 16A with the DMARQ signal received from device 16B. In the normal mode, mirroring logic 32 produces the INTRQ signal of the third set of ATA status signals by connecting or wiring together the INTRQ signal received from device 16A with the INTRQ signal received from device 16B, and produces the IORDY signal of the third set of ATA status signals by connecting or wiring together the IORDY signal received from device 16A with the IORDY signal received from device 16B.
  • In the simultaneous write mode, mirroring [0045] logic 32 is configured to report a “ready” or “complete” status of devices 16A and 16B to ATA controller 14 only when both devices 16A and 16B have reported the “ready” or “complete” status. Thus in the simultaneous write mode, mirroring logic 32 produces the third set of ATA status by logically ANDing corresponding ATA status signals of the first set of ATA status signals received from device 16A and the second set of ATA status signals received from device 16B. In the simultaneous write mode, mirroring logic 32 produces the DMARQ signal of the third set of ATA status signals by logically ANDing the DMARQ signal received from device 16A with the DMARQ signal received from device 16B. In the simultaneous write mode, mirroring logic 32 produces the INTRQ signal of the third set of ATA status signals by logically ANDing the INTRQ signal received from device 16A with the INTRQ signal received from device 16B, and produces the IORDY signal of the third set of ATA status signals by logically ANDing the IORDY signal received from device 16A with the IORDY signal received from device 16B. The simultaneous write mode thus allows the host to properly respond to the status of both devices 16A and 16B. For example, both device 16A and device 16B must assert their respective DMARQ signals before the DMARQ signal of the third set will be asserted to indicate that DMA may now proceed.
  • FIG. 3 is a diagram of an embodiment of [0046] computer system 30 of FIG. 2 wherein host 12 includes a central processing unit (CPU) 40, a local bus 42, bridge logic 44, a memory 46, and a peripheral component interconnect (PCI) bus 50. CPU 40 is coupled to local bus 42 and executes software instructions stored in memory 46. CPU 40 may be, for example, a microprocessor. Bridge logic 44 is coupled between local bus 42 and PCI bus 50, and controls the transfer of information (i.e., commands and/or data) between local bus 42 and PCI bus 50. As indicated in FIG. 3, memory 46 may be coupled to local bus 42. Alternately, bridge logic 44 may include a memory controller, and memory 46 may be coupled to bridge logic 44. In the embodiment of FIG. 3, ATA controller 14 is coupled to PCI bus 50.
  • An “enhanced” [0047] ATA driver 48 resides within memory 46 and includes software instructions. CPU 40 communicates with devices 16A and 16B via ATA controller 14 by executing the software instructions of ATA driver 48.
  • [0048] ATA driver 48 and mirroring logic 32 work together to accomplish simultaneous writes to device 16A and 16B. Such simultaneous writes may be carried out using two primary protocols of ATA data transfer: programmed input/output (PIO) techniques and direct memory access (DMA) techniques (e.g., multiword DMA as defined in the ATA/ATAPI-4 standard).
  • As indicated in FIG. 3, [0049] host 12 may include ATA controller 14, and may also include mirroring logic 32. Mirroring logic 32 may be formed upon a semiconductor substrate, and may be housed within an integrated circuit package forming an integrated circuit “chip”. It is also noted that mirroring logic 32 may be incorporated within ATA controller 14. For example, ATA controller 14 and mirroring logic 32 may be formed upon the same semiconductor substrate, and may be housed within the same integrated circuit package forming an integrated circuit “chip”.
  • The ATA interfaces of [0050] devices 16A and 16B include the standard ATA register set accessed using the ATA address signals CS0−, CS1−, DA0, DA1, and DA2. The standard ATA register set includes the ATA control block registers and the ATA command block registers. The ATA control block registers include the ATA alternate status register and the ATA device control register. The ATA command block registers include the ATA data register, the ATA features register, the ATA sector count register, the ATA sector number register, the ATA cylinder low register, the ATA cylinder high register, the ATA device/head register, the ATA status register, and the ATA command register.
  • Mirroring [0051] logic 32 is configured to enter one of several different modes in response to receiving a corresponding mode command on the ATA bus. Mirroring logic 32 performs different functions in each mode. Table 1 below lists modes of mirroring logic 32 and corresponding mode commands and mode functions. Table 2 below lists exemplary implementations of the mode commands of Table 1. It is noted that other implementations of the mode commands are possible and contemplated.
    TABLE 1
    Modes of Mirroring Logic 32
    And Corresponding Mode Commands and Mode Functions.
    Mirroring Mode Mode
    Logic
    32 Mode: Command: Functions:
    Master Connect Master Connect Disconnect address signal lines
    connected to slave device 1
    from address signal lines 22A.
    Slave Connect Slave Connect Disconnect address signal lines
    connected to master device 0
    from address signal lines 22A.
    Simultaneous Simultaneous Drive address signal lines
    Write Write connected to master device 0
    and slave device 1
    with values from
    address signal lines 22A.
    (Note 1)
    Drive status bus 24 with ATA
    status signals formed by logically
    ANDing corresponding ATA status
    signals received from master
    device
    0 and slave device 1.
    Normal Normal Drive address signal lines
    connected to master device 0
    and slave device 1
    with values from
    address signal lines 22A.
    Drive status bus 24 with ATA
    status signals formed by wiring
    together corresponding ATA status
    signals received from master
    device
    0 and slave device 1.
  • Note 1: Bits [0052] 7-5 of the value written to the cylinder high register during the final write operation indicate whether a PIO transfer or a multiword DMA transfer will take place. For example, bits 7-5=101 may indicate a PIO will take place, and bits 7-5=010 may indicate a multiword DMA transfer will take place.
    TABLE 2
    Exemplary Implementations
    Of the Mode Commands of Mirroring Logic 32
    Mode Exemplary
    Command: Implementation:
    Master Connect Three consecutive writes
    to the ATA features register.
    Slave Connect Three consecutive writes
    to the ATA device/control register.
    Simultaneous Three consecutive writes
    Write to the ATA cylinder high register.
    Normal Three consecutive writes
    to the ATA cylinder low register.
  • The “master connect mode” and the “slave connect mode” are used to disconnect either [0053] device 16A or 16B from address signals lines 22A in order to configure devices 16A and 16B to be selected simultaneously. How this is accomplished in one embodiment is described in detail below. Receiving the “master connect” mode command (e.g., 3 consecutive writes to the ATA features register via ATA bus 18) causes mirroring logic 32 to operate in the master connect mode. As described above, either device 16A or device 16B is configured as the master device (i.e., master device 0), and the other device 16 is configured as the slave device (i.e., slave device 1). Mirroring logic 32 includes detection circuitry coupled to driver circuitry. The detection circuitry detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to slave device 1 from address signal lines 22A. (See Table 1 above.) Thus in the master connect mode, only master device 0 receives the address signals present upon address signal lines 22A so that only the master device 0 will respond to register accesses.
  • Receiving the “slave connect” mode command (e.g., 3 consecutive writes to the ATA device/control register via ATA bus [0054] 18) causes mirroring logic 32 to operate in the slave connect mode. The detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to master device 0 from address signal lines 22A. (See Table 1 above.) Thus in the slave connect mode, only slave device 1 receives the address signals present upon address signal lines 22A so that only the slave device 1 will respond to register accesses.
  • Although the embodiment described above connects or disconnects the address signal lines to each device so that only one device will respond to register accesses, other mechanisms may be employed to achieve this functionality. For example, control signals other than the address lines may be connected or disconnected from the devices in the “master connect” and “slave connect” modes so that one of the devices will be temporarily “disconnected”. [0055]
  • Receiving the “simultaneous write” mode command (e.g., 3 consecutive writes to the ATA cylinder high register via ATA bus [0056] 18) causes mirroring logic 32 to operate in the above described simultaneous write mode. The detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to both master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In the simultaneous write mode, status signal generation circuitry within mirroring [0057] logic 32 receives a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1. The status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • In one embodiment, bits [0058] 7-5 of the value written to the cylinder high register during the final of the three write operations are used to indicate whether a PIO transfer or a multiword DMA transfer will take place. For example, as indicated in Note 1 of Table 1 above, bits 7-5=101 indicate a PIO will take place, and bits 7-5=010 indicate a multiword DMA transfer will take place.
  • Receiving the “normal” mode command (e.g., 3 consecutive writes to the ATA cylinder low register via ATA bus [0059] 18) causes mirroring logic 32 to operate in the above described normal mode. The detection circuitry within mirroring logic 32 detects the normal mode command, and signals the driver circuitry to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In the normal mode, the status signal generation circuitry within mirroring [0060] logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1. The status signal generation circuitry connects or wires together corresponding status signals of the first and second sets to form the third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry. Thus in the normal mode, devices 16A and 16B are coupled to ATA controller 14 via mirroring logic 32 in conventional ATA fashion.
  • FIG. 4 is a flow chart of one embodiment of a [0061] setup portion 60 of a method for writing to devices 16A and 16B of FIGS. 2-3 simultaneously (e.g., causing devices 16A and 16B of FIGS. 2-3 to perform a mirrored write operation simultaneously). In one embodiment, the method for writing to devices 16A and 16B simultaneously may be embodied within ATA driver 48 (FIG. 3), and the following description of setup portion 60 will be presented accordingly. During 62 of setup portion 60, ATA driver 48 (FIG. 3) sets up the desired simultaneous transfer protocol with the drives. For example, if a multiword DMA write is desired, ATA driver 48 may issue a SET FEATURE command to both drives, following the standard ATA protocol. This action selects multiword DMA and deselects any Ultra DMA modes.
  • As described above, either [0062] device 16A or device 16B is configured as master device 0, and the other device 16 is configured as slave device 1. During 64, ATA driver 48 selects master device 0. In conventional ATA fashion, ATA driver 48 may write a value to the ATA device/head register with DEV bit 4=0, thereby selecting master device 0. At this point, the driver circuitry within mirroring logic 32 drives address signal lines 34A and 34B with values received from ATA controller 14 via address signal lines 22A. Both master device 0 and slave drive 1 may receive the value with DEV bit 4=0 and store the value in their respective device/head registers to indicate that master device 0 is selected.
  • During [0063] 66, ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register). The detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to master device 0 from address signal lines 22A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22A.
  • During [0064] 68, ATA driver 48 selects slave device 1. In conventional ATA fashion, ATA driver 48 may write a value to the ATA device/head register with DEV bit 4=1, thereby selecting slave device 1. At this point, the driver circuitry within mirroring logic 32 drives only the address signal lines (i.e., address signal lines 34A or 34B) connected to slave device 1 with values received from ATA controller 14 via address signal lines 22A. Only slave drive 1 receives the value with DEV bit 4=1 and stores the value in the device/head register.
  • Following [0065] 68, both master device 0 and slave device 1 are selected. For example, the device/head register of master device 0 may have a value with DEV bit 4=0 stored therein, and the device/head register of slave device 1 may have a value with DEV bit 4=1 stored therein. In this situation both master device 0 and slave device 1 are selected simultaneously.
  • During [0066] 70, ATA driver 48 issues the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register). The detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In addition, status signal generation circuitry within mirroring [0067] logic 32 receives a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1. The status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • In one embodiment, bits [0068] 7-5 of the value written to the cylinder high register during the final write operation of 70 are used to indicate whether a PIO transfer or a multiword DMA transfer will take place. For example, as indicated in Note 1 of Table 1 above, bits 7-5=101 indicate a PIO will take place, and bits 7-5=010 indicate a multiword DMA transfer will take place.
  • During [0069] 72, ATA driver 48 loads ATA registers of master device 0 and slave device 1 with write parameters. For example, ATA driver 48 writes the parameters to the following ATA registers: cylinder low, cylinder high, sector count, and sector number, as in preparation for a normal ATA write operation. As both master device 0 and slave device 1 receive address signals driven upon address signal lines 22A, both master device 0 and slave device 1 receive and store the write parameters.
  • During [0070] 74, ATA driver 48 writes a write command to the command register (e.g., the ATA command register). Exemplary write commands include the ATA WRITE SECTOR, WRITE MULTIPLE, and WRITE DMA commands. As both master device 0 and slave device 1 receive address signals driven upon address signal lines 22A, both master device 0 and slave device 1 receive the write command and store the write command in respective command registers. As both master device 0 and slave device 1 are selected both master device 0 and slave device 1 carry out the command.
  • FIGS. [0071] 5A-5C in combination form a flow chart of one embodiment of a programmed input/output (PIO) portion 80 of the method for writing to devices 16A and 16B of FIGS. 2-3 simultaneously, wherein PIO portion 80 may follow setup portion 60 of FIG. 4 if a PIO simultaneous transfer is desired. As described above, a method for writing to devices 16A and 16B simultaneously may be embodied within ATA driver 48 (FIG. 3), and the following description of PIO portion 80 will be presented accordingly.
  • As described above, either [0072] device 16A or device 16B is configured as master device 0, and the other device 16 is configured as slave device 1. Prior to 82, both master device 0 and slave device 1 are selected, and mirroring logic 32 is in the simultaneous write mode. During 82 of PIO portion 80, ATA driver 48 waits for master device 0 and slave device 1 to respond to a previous write command (e.g., an ATA write command written to the ATA command registers of master device 0 and slave device 1 during 74 of the above described setup portion 60). During 82, ATA driver 48 may wait, for example, a maximum amount of time (e.g., 400 nanoseconds) allowed by ATA standards for master device 0 and slave device 1 to set the busy (BSY) bit 7 of the status register in response to the writing of the ATA write command to the ATA command register.
  • During [0073] 84, ATA driver 48 issues the master connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the features register). The detection circuitry within mirroring logic 32 detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to slave device 1 from address signal lines 22A. (See Table 1 above.) As a result, only master device 0 receives the address signals present upon address signal lines 22A.
  • During [0074] 86, ATA driver 48 reads the status register. As only master device 0 receives the address signals present upon address signal lines 22A, ATA driver 48 reads the status register of master device 0 during 86. During 88, ATA driver 48 tests the value read from the status register of master device 0 during 86 to determine if master device 0 is ready to transfer data. For example, according to ATA standards, if BSY bit 7=0 and the data request (DRQ) bit 3=1, master device 0 is ready to transfer data. In this situation, 90 is performed next. On the other hand, if BSY bit 7=1 or DRQ bit 3=0, master device 0 is not ready to transfer data. In this situation, 86 and 88 are repeated until master device 0 is ready to transfer data.
  • During [0075] 90, ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register). The detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to master device 0 from address signal lines 22A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22A.
  • During [0076] 92, ATA driver 48 reads the status register. As only slave device 1 receives the address signals present upon address signal lines 22A, ATA driver 48 reads the status register of slave device 1 during 92. During 94, ATA driver 48 tests the value read from the status register of slave device 1 during 92 to determine if slave device 1 is ready to transfer data. For example, according to ATA standards, if BSY bit 7=0 and DRQ bit 3=1, slave device 1 is ready to transfer data. In this situation, 96 is performed next. On the other hand, if BSY bit 7=1 or DRQ bit 3=0, slave device 1 is not ready to transfer data. In this situation, 92 and 94 are repeated until slave device 1 is ready to transfer data.
  • During [0077] 96, ATA driver 48 issues the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register). The detection circuitry within mirroring logic 32 detects the simultaneous write mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In addition, the status signal generation circuitry within mirroring [0078] logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1. The status signal generation circuitry logically ANDing corresponding status signals of the first and second sets to form the third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • During [0079] 98, ATA driver 48 writes a block of data to the ATA data registers of master device 0 and slave device 1. Both master device 0 and slave device 1 store the write data dependent upon the write parameters and the write command. As the status signal generation circuitry of mirroring logic 32 logically ANDs the corresponding IORDY status signals from master device 0 and slave device 1 to produce the IORDY signal provided to ATA controller 14: (i) either master device 0 or slave device 1 may suspend the transfer by deasserting the IORDY signal, and (ii) once suspended, the transfer does not resume until both devices assert the IORDY signal.
  • When one of the devices completes the transfer, the device asserts the INTRQ signal. As the status signal generation circuitry within mirroring [0080] logic 32 produces the INTRQ signal provided to ATA controller 14 as the logical AND of the INTRQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the INTRQ signal provided to ATA controller 14 until both master device 0 and slave device 1 have completed the block data transfer.
  • During [0081] 100, ATA driver 48 tests the value of the INTRQ signal received by ATA controller 14 from mirroring logic 32 to determine if both master device 0 and slave device 1 have completed the block data transfer. If the INTRQ signal is asserted, both master device 0 and slave device 1 have completed the block data transfer, and 102 is performed next. On the other hand, if the INTRQ signal is not asserted, master device 0 and/or slave device 1 has not completed the block data transfer. In this situation, 100 is repeated until both master device 0 and slave device 1 have completed the block data transfer.
  • During [0082] 102, ATA driver 48 clears the INTRQ signals of master device 0 and slave device 1 by reading the status registers of each device in sequence. (A method for performing this procedure is shown in FIG. 6 and described in detail below.) ATA driver 48 checks the status register values to see if master device 0 and/or slave device 1 indicted an error occurred during the block data transfer. As described below, if an error occurred during the block data transfer, ATA driver 48 may abort the write operation, and 108 may be performed next.
  • During [0083] 104, if all data blocks have not been transferred, 98, 100, and 102 are repeated until all data blocks are transferred. Once all data blocks have been transferred, 106 is next performed.
  • During [0084] 106, ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation. The detection circuitry within mirroring logic 32 detects the normal mode command, and signals the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In addition, the status signal generation circuitry within mirroring [0085] logic 32 receives the first set of ATA status signals from master device 0 and the second set of ATA status signals from slave device 1. The status signal generation circuitry connects corresponding status signals of the first and second sets to form the third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • During [0086] 108 in the case of error, ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation. (See 106 above.) During 110, ATA driver 48 executes a standard ATA error recovery procedure.
  • FIG. 6 is a flow chart of one embodiment of a [0087] method 120 for clearing interrupt signals (e.g., ATA INTRQ signals) set by devices 16A and 16B of FIGS. 2-3 and checking for errors during a simultaneous write operation. Method 120 may be used to perform 102 of PIO portion 80 (FIGS. 5A-5C) of the above described method for simultaneously writing to devices 16A and 16B. As described above, the method for writing to devices 16A and 16B simultaneously is preferably embodied within ATA driver 48 (FIG. 3), and the following description of method 120 will be presented accordingly.
  • As described above, one of the [0088] devices 16A and 16B is configured as master device 0, and the other device 16 is configured as slave device 1. During 122, ATA driver 48 issues the master connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the features register). The detection circuitry within mirroring logic 32 detects the master connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to slave device 1 from address signal lines 22A. (See Table 1 above.) As a result, only master device 0 receives the address signals present upon address signal lines 22A.
  • During [0089] 124, ATA driver 48 reads the status register. As only master device 0 receives the address signals present upon address signal lines 22A, ATA driver 48 reads the status register of master device 0 during 124. The reading of the status register of master device 0 causes master device 0 to deassert the INTRQ signal.
  • During [0090] 126, ATA driver 48 tests the status register value obtained from master device 0 during 124. If the status register value indicates an error, ATA driver 48 aborts the simultaneous write operation, and 108 of PIO portion 80 (FIGS. 5A-5C) described above is performed next. During 108, ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation. Following 108, 110 of PIO portion 80 is performed, resulting in ATA driver 48 executing a standard ATA error recovery procedure as described above. If, on the other hand, the status register value does not indicate an error in 124, 128 is performed next.
  • During [0091] 128, ATA driver 48 issues the slave connect mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the device/control register). The detection circuitry within mirroring logic 32 detects the slave connect mode command, and signals the driver circuitry within mirroring logic 32 to disconnect address signal lines (i.e., address signal lines 34A or 34B) connected to master device 0 from address signal lines 22A. (See Table 1 above.) As a result, only slave device 1 receives the address signals present upon address signal lines 22A.
  • During [0092] 130, ATA driver 48 reads the status register. As only slave device 1 receives the address signals present upon address signal lines 22A, ATA driver 48 reads the status register of slave device 1 during 130. The reading of the status register of slave device 1 causes slave device 1 to deassert the INTRQ signal.
  • During [0093] 132, ATA driver 48 tests the status register value obtained from slave device 1 during 130. If the status register value indicates an error, ATA driver 48 aborts the simultaneous write operation, and 108 of PIO portion 80 described above is performed next. (See 126 above.) If, on the other hand, the status register value does not indicate an error in 124, method 120 is complete.
  • A multiword DMA simultaneous transfer protocol will now be described. If a multiword DMA simultaneous transfer is indicted (e.g., via bits [0094] 7-5 of the value written to the cylinder high register during the final write operation of 70 of setup portion 60 of FIGS. 4A-4B), master drive 0 and slave drive 1 will assert DMARQ signals when ready to transfer data.
  • During [0095] 70 of setup portion 60, ATA driver 48 issued the simultaneous write mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder high register). The detection circuitry within mirroring logic 32 detected the simultaneous write mode command, and signaled the driver circuitry within mirroring logic 32 to drive address signal lines connected to master device 0 and slave device 1 (i.e., address signal lines 34A and 34B) with values received from ATA controller 14 via address signal lines 22A.
  • In addition, status signal generation circuitry within mirroring [0096] logic 32 was configured to receive a first set of ATA status signals from master device 0 and a second set of ATA status signals from slave device 1, and to logically ANDing corresponding status signals of the first and second sets to form a third set of ATA status signals as described above. Signal lines of status bus 24 are driven with the third set of ATA status signals produced by the status signal generation circuitry.
  • As the status signal generation circuitry within mirroring [0097] logic 32 produces the DMARQ signal provided to ATA controller 14 as the logical AND of the DMARQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the DMARQ signal provided to ATA controller 14 until the DMARQ signals from master device 0 and slave device 1 are both asserted (i.e., both master device 0 and slave device 1 are ready to transfer data).
  • When a given device completes the multiword DMA transfer, the device asserts the INTRQ signal. As the status signal generation circuitry within mirroring [0098] logic 32 produces the INTRQ signal provided to ATA controller 14 as the logical AND of the INTRQ signals from master device 0 and slave device 1, mirroring logic 32 does not assert the INTRQ signal provided to ATA controller 14 until both master device 0 and slave device 1 have completed the multiword DMA transfer.
  • When [0099] ATA controller 14 receives the INTRQ signal from mirroring logic 32, ATA driver 48 clears the INTRQ signals of master device 0 and slave device 1 and checks for errors during the multiword DMA transfer (e.g., using method 120 of FIG. 6). If a status register value indicates an error, ATA driver 48 issues the normal mode command to mirroring logic 32 (e.g., by performing 3 consecutive writes to the ATA cylinder low register) in order to restore normal ATA operation (e.g., 108 of PIO portion 80 of FIGS. 5A-5C). ATA driver 48 then executes a standard ATA error recovery procedure (e.g., 110 of PIO portion 80). If, on the other hand, the status register values do not indicate an error, the multiword DMA transfer is complete.
  • Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications. [0100]

Claims (55)

What is claimed is:
1. A circuit, comprising:
mirroring logic configured to couple to a controller, a first device, and a second device, wherein each of the first and second devices comprises a plurality of registers; and
wherein the mirroring logic is configurable to operate in:
a first connect mode wherein the mirroring logic allows the registers of the first device to be accessed from the controller and prevents the registers of the second device from being accessed from the controller; and
a second connect mode wherein the mirroring logic allows the registers of the second device to be accessed from the controller and prevents the registers of the first device from being accessed.
2. The circuit as recited in claim 1, wherein the first and second devices are data storage devices.
3. The circuit as recited in claim 1, wherein the registers of the first and second devices are accessed via a plurality of control signals produced by the controller, and wherein the mirroring logic is coupled to receive a portion of the control signals and configured to selectively provide the portion of the control signals to the first and second devices.
4. The circuit as recited in claim 3, wherein in the first connect mode the mirroring logic provides the portion of the control signals to only the first device such that the registers of only the first device are accessed, and wherein in the second connect mode the mirroring logic provides the portion of the control signals to only the second device such that the registers of only the second device are accessed.
5. The circuit as recited in claim 4, wherein each of the first and second devices includes an AT Attachment (ATA) interface conforming to an ATA standard.
6. The circuit as recited in claim 5, wherein the control signals include ATA control signals, and wherein each of the first and second devices is configurable to be selected in response to register accesses via the ATA control signals, and wherein the first and second devices carry out received commands only when selected.
7. The circuit as recited in claim 6, wherein the ATA control signals include a plurality of ATA address signals, and wherein in the first connect mode the mirroring logic provides the ATA address signals to only the first device, and wherein in the second connect mode the mirroring logic provides the ATA address signals to only the second device.
8. The circuit as recited in claim 7, wherein each of the first and second devices is configurable to be selected dependent upon the ATA address signals.
9. The circuit as recited in claim 8, wherein the ATA address signals comprise a chip select 0 (CSO) signal, a chip select 1 (CS1), a device address bit 0 (DA0) signal, a device address bit 1 (DA1) signal, and a device address bit 2 (DA2) signal, and wherein the CS0 and CS1 signals are active low, and wherein the DA0, DA1, and DA2 signals are active high.
10. The circuit as recited in claim 1, wherein the mirroring logic is coupled to receive a first plurality of status signals from the first device and a second plurality of status signals from the second device, and wherein the mirroring logic is configured to produce a third plurality of status signals dependent upon the first and second pluralities of status signals.
11. The circuit as recited in claim 10, wherein the mirroring logic is further configurable to operate in a simultaneous write mode, and wherein in the simultaneous write mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third plurality of status signals by logically ANDing corresponding status signals of the first and second pluralities of status signals.
12. The circuit as recited in claim 11, wherein the first, second, and third pluralities of status signals comprise ATA status signals including a direct memory access request (DMARQ) signal, an interrupt request (INTRQ) signal, and an input/output ready (IORDY) signal, and wherein the DMARQ, INTRQ, and IORDY signals are active high.
13. The circuit as recited in claim 10, wherein the mirroring logic is further configurable to operate in a normal mode, and wherein in the normal mode the mirroring logic is configured to: (i) provide all of the control signals to both the first and second devices, and (ii) produce the third plurality of status signals by wiring together corresponding status signals of the first and second pluralities of status signals.
14. The circuit as recited in claim 13, wherein the first, second, and third pluralities of status signals comprise ATA status including a direct memory access request (DMARQ) signal, an interrupt request (INTRQ) signal, and an input/output ready (IORDY) signal, and wherein the DMARQ, INTRQ, and IORDY signals are active high.
15. A system, comprising:
a controller configured to produce a plurality of control signals;
a first device and a second device, wherein each of the first and second devices comprises a plurality of registers accessed via the control signals; and
mirroring logic coupled to the first and second devices and to receive a portion of the control signals, wherein the mirroring logic is configurable to provide the portion of the control signals to: (i) only the first device in a first mode so that the registers of the second device are not accessed, (ii) only the second device in a second mode so that the registers of the first device are not accessed, and (iii) both the first and second devices in a third mode so that the registers of both the first and second devices are accessed.
16. The system as recited in claim 15, wherein the first and second devices are data storage devices.
17. The system as recited in claim 15, wherein the mirroring logic is configured to allow both the first and second devices to be selected simultaneously.
18. The system as recited in claim 15, wherein the first and second devices have AT Attachment (ATA) interfaces conforming to an ATA standard, and wherein the control signals are ATA control signals.
19. The system as recited in claim 18, wherein the ATA control signals include a plurality of ATA address signals, and wherein the mirroring logic is configurable to provide the ATA address signals to: (i) only the first device in the first mode so that the registers of the second device are not accessed, (ii) only the second device in the second mode so that the registers of the first device are not accessed, and (iii) both the first and second devices in the third mode so that the registers of both the first and second devices are accessed.
20. The system as recited in claim 19, wherein the first and second devices are configurable to be selected dependent upon the ATA address signals, and wherein the first and second devices carry out received commands only when selected.
21. The system as recited in claim 15, wherein the mirroring logic is coupled to receive a first plurality of status signals from the first device and a second plurality of status signals from the second device, and wherein the mirroring logic is configured to produce a third plurality of status signals dependent upon the first and second pluralities of status signals.
22. The system as recited in claim 21, wherein the third mode is a normal mode and in the normal mode the mirroring logic is configured to produce the third plurality of status signals by wiring together corresponding status signals of the first and second pluralities of status signals.
23. The system as recited in claim 21, wherein the third mode is a simultaneous write mode and in the simultaneous write mode the mirroring logic is configured to produce the third plurality of status signals by logically ANDing corresponding status signals of the first and second pluralities of status signals.
24. A system, comprising:
a pair of devices each having an AT Attachment (ATA) interface conforming to an ATA standard, wherein one of the pair of devices is configured as a master device and the other device is configured as a slave device; and
mirroring logic coupled to the pair of devices and to receive a plurality of ATA control signals, wherein the ATA control signals include a plurality of ATA address signals, and wherein the mirroring logic is configurable to operate in one of a plurality of modes comprising:
a first connect mode wherein the mirroring logic provides the ATA address signals to only the master device; and
a second connect mode wherein the mirroring logic provides the ATA address signals to only the slave device.
25. The system as recited in claim 24, wherein each of the pair of devices is a hard disk drive.
26. The system as recited in claim 24, wherein the mirroring logic is configured to allow both the first and second devices to be selected simultaneously.
27. The system as recited in claim 24, wherein each of the pair of devices is configurable to be selected dependent upon the ATA address signals, and wherein a selected one of the pair of device carries out received commands.
28. The system as recited in claim 24, wherein the ATA address signals comprise a chip select 0 (CSO) signal, a chip select 1 (CS1), a device address bit 0 (DAO) signal, a device address bit 1 (DA1) signal, and a device address bit 2 (DA2) signal, and wherein the CS0 and CS1 signals are active low, and wherein the DA0, DA1, and DA2 signals are active high.
29. The system as recited in claim 24, wherein the mirroring logic is configured to enter the first connect mode in response to receiving three consecutive writes to the ATA features register.
30. The system as recited in claim 24, wherein the mirroring logic is configured to enter the second connect mode in response to receiving three consecutive writes to the ATA device/control register.
31. The system as recited in claim 24, wherein the mirroring logic is coupled to receive a first plurality of ATA status signals from the master device and a second plurality of ATA status signals from the slave device, and wherein the mirroring logic is configured to produce a third plurality of ATA status signals dependent upon the first and second pluralities of ATA status signals.
32. The system as recited in claim 31, wherein the mirroring logic is further configurable to operate in a normal mode, and wherein in the normal mode the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third plurality of ATA status signals by wiring together corresponding ATA status signals of the first and second pluralities of ATA status signals.
33. The system as recited in claim 32, wherein the first, second, and third pluralities of ATA status signals comprise a direct memory access request (DMARQ) signal, an interrupt request (INTRQ) signal, and an input/output ready (IORDY) signal, and wherein the DMARQ, INTRQ, and IORDY signals are active high.
34. The system as recited in claim 32, wherein the mirroring logic is configured to enter the normal mode in response to receiving three consecutive writes to the ATA cylinder low register.
35. The system as recited in claim 31, wherein the mirroring logic is further configurable to operate in a simultaneous write mode, and wherein in the simultaneous write mode the mirroring logic: (i) provides the ATA address signals to both the master and slave devices, and (ii) produces the third plurality of ATA status signals by logically ANDing corresponding ATA status signals of the first and second pluralities of ATA status signals.
36. The system as recited in claim 35, wherein the first, second, and third pluralities of ATA status signals comprise a direct memory access request (DMARQ) signal, an interrupt request (INTRQ) signal, and an input/output ready (IORDY) signal, and wherein the DMARQ, INTRQ, and IORDY signals are active high.
37. The system as recited in claim 35, wherein the mirroring logic is configured to enter the simultaneous write mode in response to receiving three consecutive writes to the ATA cylinder high register.
38. In a system comprising a controller, a first storage device and a second storage device, wherein each of the pair of devices comprises a plurality of registers mapped to the same register address space, a method for configuring the first storage device and the second storage device to carry out a command from the controller simultaneously, the method comprising:
writing to a first register in the address space to select the first storage device to respond to commands;
preventing the registers of the first storage device from being accessed;
while the registers of the first storage device are prevented from being accessed, writing to the first register in the address space to select the second storage device to respond to commands so that both the first storage device and the second storage device are selected to respond to command;
allowing the registers of both the first storage device and the second storage device to be accessed; and
while the registers of both the first and second storage devices are allowed to be accessed, writing a command to a command register in the register address space, wherein the first storage device and the second storage device receive the command and both carry out the command approximately simultaneously.
39. The method as recited in claim 38, wherein said writing to a first register in the address space to select the first storage device comprises writing a first value to corresponding registers of both the first storage device and the second storage device, wherein the first value selects the first storage device.
40. The method as recited in claim 38, wherein the registers of the first storage and the second storage devices are accessed via a plurality of control signals produced by the controller, and wherein said preventing the registers of the first storage device from being accessed comprises providing a portion of the control signals to only the second storage device such that the registers of the first storage device are not accessed.
41. The method as recited in claim 38, wherein said writing to the first register in the address space to select the second storage device comprises writing a second value to a register of the second storage device, wherein the second value selects the second storage device.
42. The method as recited in claim 38, wherein the registers of the first storage and second storage devices are accessed via a plurality of control signals produced by the controller, and wherein said allowing the registers of both the first storage device and the second storage device to be accessed comprises providing the control signals to both the first storage device and the second storage device such that the registers of the both the first storage device and the second storage device are accessed.
43. The method as recited in claim 38, wherein the command is a write command.
44. The method as recited in claim 43, further comprising:
determining if the first storage device is ready to receive data;
determining if the second storage device is ready to receive data;
performing the following if both the first storage device and the second storage device are ready to receive data:
allowing the registers of both the first storage device and the second storage device to be accessed; and
writing a block of data to corresponding data registers of the first storage device and the second storage device, wherein the first storage device and the second storage device store the data approximately simultaneously.
45. The method of claim 44, wherein said determining if the first storage device is ready to receive data comprises:
preventing the registers of the second storage device from being accessed; and
while the registers of the second storage device are prevented from being accessed, reading a value from a status register of the first storage device.
46. The method of claim 44, wherein said determining if the second storage device is ready to receive data comprises:
preventing the registers of the first storage device from being accessed; and
while the registers of the first storage device are prevented from being accessed, reading a value from a status register of the second storage device.
47. The method of claim 38, wherein said controller is an AT Attachment (ATA) controller and said first and second storage devices are ATA storage devices both coupled to the same port of said ATA controller.
48. A method for communicating with devices, comprising:
sending a first communication to a first device, wherein said communication indicates that the first device, but not a second device, is selected to respond to subsequent communications;
subsequent to said sending a first communication, sending a second communication to the second device, wherein the second communication indicates that the second device, but not the first device, is selected to respond to subsequent communications, wherein said sending a second communication is performed while preventing the first device from recognizing the second communication so that both the first device and the second device are selected to respond to subsequent communications; and
subsequent to said sending a second communication, sending a third communication to both the first device and the second device, wherein both the first device and the second device respond to the third communication.
49. The method as recited in claim 48, wherein said sending a first communication comprises writing a value to corresponding registers of both the first device and the second device, wherein the value selects the first device.
50. The method as recited in claim 48, said preventing the first device from receiving the second communication comprises providing a portion of communication control signals to only the second device such that the first device does not recognize the second communication.
51. The method as recited in claim 48, wherein said sending a second communication comprises writing a value to a register of the second device, wherein the second value selects the second device.
52. The method as recited in claim 48, further comprising:
determining if the first device is ready to receive data;
determining if the second device is ready to receive data; and
if both the first device and the second device are ready to receive data, communicating a block of data to the first device and the second device while both the first device and the second device are selected, wherein the first storage device and the second storage device both store the data.
53. The method of claim 52, wherein said determining if the first device is ready to receive data comprises:
while preventing the second device from recognizing communications, reading a value from a status register of the first device.
54. The method of claim 52, wherein said determining if the second device is ready to receive data comprises:
while preventing the first device from recognizing communications, reading a value from a status register of the second device.
55. The method of claim 48, wherein said first and second devices are ATA storage devices both coupled to the same port of an ATA controller.
US09/729,762 2000-12-04 2000-12-04 System and method for efficient data mirroring in a pair of storage devices Expired - Lifetime US6813688B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/729,762 US6813688B2 (en) 2000-12-04 2000-12-04 System and method for efficient data mirroring in a pair of storage devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/729,762 US6813688B2 (en) 2000-12-04 2000-12-04 System and method for efficient data mirroring in a pair of storage devices

Publications (2)

Publication Number Publication Date
US20020103966A1 true US20020103966A1 (en) 2002-08-01
US6813688B2 US6813688B2 (en) 2004-11-02

Family

ID=24932505

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/729,762 Expired - Lifetime US6813688B2 (en) 2000-12-04 2000-12-04 System and method for efficient data mirroring in a pair of storage devices

Country Status (1)

Country Link
US (1) US6813688B2 (en)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010668A1 (en) * 2002-05-30 2004-01-15 Takeshi Inagaki Backup technique for data stored on multiple storage devices
US6701385B1 (en) * 2002-01-16 2004-03-02 Adaptec, Inc. Raid 1 write mirroring method for host adapters
US6728791B1 (en) * 2002-01-16 2004-04-27 Adaptec, Inc. RAID 1 read mirroring method for host adapters
US20050015652A1 (en) * 2001-08-31 2005-01-20 Dong Han Method for backing up and recovering data in the hard disk of a computer
JP2005092884A (en) * 2003-09-19 2005-04-07 Harman Becker Automotive Systems Gmbh Data transfer interface
US20060101173A1 (en) * 2004-11-10 2006-05-11 Yu-Lun Cheng Pin sharing system
US7143250B1 (en) 2003-06-02 2006-11-28 Lsi Logic Corporation Methods and systems for improving mirror performance via optimized multi-channel utilization
US20070005851A1 (en) * 2005-06-30 2007-01-04 Seiko Epson Corporation Data transfer control device and electronic instrument
US20080140961A1 (en) * 2006-12-07 2008-06-12 Atherton William E Single channel memory mirror
US20080250270A1 (en) * 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US20090204758A1 (en) * 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
US20090293457A1 (en) * 2008-05-30 2009-12-03 Grichnik Anthony J System and method for controlling NOx reactant supply
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
US20110126045A1 (en) * 2007-03-29 2011-05-26 Bennett Jon C R Memory system with multiple striping of raid groups and method for performing the same
KR101307953B1 (en) * 2009-10-09 2013-09-12 바이올린 메모리 인코포레이티드 Memory system with multiple striping of raid groups and method for performing the same
US8726064B2 (en) 2005-04-21 2014-05-13 Violin Memory Inc. Interconnection system
US20140300697A1 (en) * 2011-11-24 2014-10-09 Koninklijke Philips N.V. Interlaced 3d video
US10176861B2 (en) 2005-04-21 2019-01-08 Violin Systems Llc RAIDed memory system management
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4651797B2 (en) * 2000-10-03 2011-03-16 富士通セミコンダクター株式会社 Backup system and duplication device
US7107343B2 (en) * 2001-07-12 2006-09-12 Adaptec, Inc. Method and apparatus for improved RAID 1 write performance in low cost systems
US7146492B2 (en) * 2002-02-08 2006-12-05 Quantum Corporation Method and apparatus for attaching more than two disk devices to an IDE bus
US7346135B1 (en) 2002-02-13 2008-03-18 Marvell International, Ltd. Compensation for residual frequency offset, phase noise and sampling phase offset in wireless networks
JP3898968B2 (en) * 2002-03-15 2007-03-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Information recording method and information recording system
US20040078630A1 (en) * 2002-06-28 2004-04-22 Niles Ronald Steven System and method for protecting data
US7263153B2 (en) * 2002-10-09 2007-08-28 Marvell International, Ltd. Clock offset compensator
US7319705B1 (en) 2002-10-22 2008-01-15 Marvell International Ltd. Programmable pre-emphasis circuit for serial ATA
US7039829B2 (en) * 2002-11-07 2006-05-02 Lsi Logic Corporation Apparatus and method for enhancing data availability by implementing inter-storage-unit communication
US7107483B2 (en) * 2002-11-15 2006-09-12 Lsi Logic Corporation Apparatus and method for enhancing data availability by leveraging primary/backup data storage volumes
US6978337B1 (en) * 2002-12-02 2005-12-20 Marvell International Ltd. Serial ATA controller having failover function
US7246192B1 (en) 2003-01-10 2007-07-17 Marvell International Ltd. Serial/parallel ATA controller and converter
JP4406402B2 (en) * 2003-07-02 2010-01-27 聰 山竹 Database system
US8930583B1 (en) 2003-09-18 2015-01-06 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for controlling data transfer in a serial-ATA system
US7958292B2 (en) 2004-06-23 2011-06-07 Marvell World Trade Ltd. Disk drive system on chip with integrated buffer memory and support for host memory access
US7280428B2 (en) 2004-09-30 2007-10-09 Rambus Inc. Multi-column addressing mode memory system including an integrated circuit memory device
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
TWI298840B (en) * 2005-07-13 2008-07-11 Via Tech Inc Bus device used in computer system
US8156259B2 (en) 2005-07-21 2012-04-10 Elliptic Technologies Inc. Memory data transfer method and system
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
US8028110B1 (en) * 2007-06-28 2011-09-27 Emc Corporation Non-disruptive data migration among storage devices using integrated virtualization engine of a storage device
JP4482044B2 (en) * 2008-03-18 2010-06-16 株式会社東芝 Information processing apparatus and device controller drive control method
US9268719B2 (en) 2011-08-05 2016-02-23 Rambus Inc. Memory signal buffers and modules supporting variable access granularity

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4059729A (en) * 1976-06-09 1977-11-22 Martin Marietta Aerospace Method and system for selectively accessing multiplexed data transmission network for monitoring and testing of the network
US5778252A (en) * 1992-08-10 1998-07-07 Advanced Research Logic, Inc. On-board interface for concurrent seeks of multiple disk drives of a computer
US6275879B1 (en) * 1998-04-30 2001-08-14 Tony Goodfellow ATA compatible adapter having a shadow register configured to intercept device select information and an automatic interrupt polling for overlapped ATA commands
US6446148B1 (en) * 1998-11-14 2002-09-03 Tony Goodfellow Enhanced ATA channel command structure for automatic polling, hot swapping and extending coupled peripheral devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5239445A (en) 1990-12-20 1993-08-24 Dell Usa L.P. Method and apparatus for simultaneous operation of two IDE disk drives
US5740397A (en) 1995-10-11 1998-04-14 Arco Computer Products, Inc. IDE disk drive adapter for computer backup and fault tolerance
US6073220A (en) * 1997-09-03 2000-06-06 Duocor, Inc. Apparatus and method for providing a transparent disk drive back-up

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4059729A (en) * 1976-06-09 1977-11-22 Martin Marietta Aerospace Method and system for selectively accessing multiplexed data transmission network for monitoring and testing of the network
US5778252A (en) * 1992-08-10 1998-07-07 Advanced Research Logic, Inc. On-board interface for concurrent seeks of multiple disk drives of a computer
US6275879B1 (en) * 1998-04-30 2001-08-14 Tony Goodfellow ATA compatible adapter having a shadow register configured to intercept device select information and an automatic interrupt polling for overlapped ATA commands
US6446148B1 (en) * 1998-11-14 2002-09-03 Tony Goodfellow Enhanced ATA channel command structure for automatic polling, hot swapping and extending coupled peripheral devices

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015652A1 (en) * 2001-08-31 2005-01-20 Dong Han Method for backing up and recovering data in the hard disk of a computer
US7146525B2 (en) * 2001-08-31 2006-12-05 Legend (Beijing) Limited Method for backing up and recovering data in the hard disk of a computer
US6934771B1 (en) 2002-01-16 2005-08-23 Adaptec, Inc. Hardware I/O control block structure for mirrored and non-mirrored data transfers
US6701385B1 (en) * 2002-01-16 2004-03-02 Adaptec, Inc. Raid 1 write mirroring method for host adapters
US6728791B1 (en) * 2002-01-16 2004-04-27 Adaptec, Inc. RAID 1 read mirroring method for host adapters
US6862631B1 (en) 2002-01-16 2005-03-01 Adaptec, Inc. Hardware I/O control block array for mirrored data transfers
US6871238B1 (en) 2002-01-16 2005-03-22 Adaptec, Inc. Method for configuring a single hardware I/O control block architecture for use with both mirrored and non-mirrored data transfers
US7085900B2 (en) * 2002-05-30 2006-08-01 International Business Machines Corporation Backup technique for data stored on multiple storage devices
US20040010668A1 (en) * 2002-05-30 2004-01-15 Takeshi Inagaki Backup technique for data stored on multiple storage devices
US7143250B1 (en) 2003-06-02 2006-11-28 Lsi Logic Corporation Methods and systems for improving mirror performance via optimized multi-channel utilization
US20050114575A1 (en) * 2003-09-19 2005-05-26 Pirmin Weisser Data transfer interface
JP2005092884A (en) * 2003-09-19 2005-04-07 Harman Becker Automotive Systems Gmbh Data transfer interface
US7730231B2 (en) * 2003-09-19 2010-06-01 Harman Becker Automotive Systems Gmbh Data transfer interface for a direct transfer of data from a first device to a second device
US20060101173A1 (en) * 2004-11-10 2006-05-11 Yu-Lun Cheng Pin sharing system
US10176861B2 (en) 2005-04-21 2019-01-08 Violin Systems Llc RAIDed memory system management
US10417159B2 (en) 2005-04-21 2019-09-17 Violin Systems Llc Interconnection system
US8726064B2 (en) 2005-04-21 2014-05-13 Violin Memory Inc. Interconnection system
US20070005851A1 (en) * 2005-06-30 2007-01-04 Seiko Epson Corporation Data transfer control device and electronic instrument
WO2008068176A1 (en) * 2006-12-07 2008-06-12 International Business Machines Corporation Single channel memory mirroring
US20080140961A1 (en) * 2006-12-07 2008-06-12 Atherton William E Single channel memory mirror
US9262284B2 (en) * 2006-12-07 2016-02-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Single channel memory mirror
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US10157016B2 (en) 2007-03-29 2018-12-18 Violin Systems Llc Memory management system and method
US20080250270A1 (en) * 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US11599285B2 (en) 2007-03-29 2023-03-07 Innovations In Memory Llc Memory system with multiple striping of raid groups and method for performing the same
US20110126045A1 (en) * 2007-03-29 2011-05-26 Bennett Jon C R Memory system with multiple striping of raid groups and method for performing the same
US9081713B1 (en) 2007-03-29 2015-07-14 Violin Memory, Inc. Memory management system and method
US9189334B2 (en) 2007-03-29 2015-11-17 Violin Memory, Inc. Memory management system and method
US10372366B2 (en) 2007-03-29 2019-08-06 Violin Systems Llc Memory system with multiple striping of RAID groups and method for performing the same
US9311182B2 (en) 2007-03-29 2016-04-12 Violin Memory Inc. Memory management system and method
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US10761766B2 (en) 2007-03-29 2020-09-01 Violin Memory Llc Memory management system and method
US20090204758A1 (en) * 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
US20090293457A1 (en) * 2008-05-30 2009-12-03 Grichnik Anthony J System and method for controlling NOx reactant supply
US10754769B2 (en) 2009-06-12 2020-08-25 Violin Systems Llc Memory system having persistent garbage collection
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
KR101411566B1 (en) 2009-10-09 2014-06-25 바이올린 메모리 인코포레이티드 Memory system with multiple striping of raid groups and method for performing the same
KR101307953B1 (en) * 2009-10-09 2013-09-12 바이올린 메모리 인코포레이티드 Memory system with multiple striping of raid groups and method for performing the same
US20140340494A1 (en) * 2011-11-24 2014-11-20 Koninklijke Philips N.V. Interlaced 3d video
US9848179B2 (en) * 2011-11-24 2017-12-19 Koninklijke Philips N.V. Interlaced 3D video
US20170104975A1 (en) * 2011-11-24 2017-04-13 Koninklijke Philips N.V. Interlaced 3d video
US9560336B2 (en) * 2011-11-24 2017-01-31 Koninklijke Philips N.V. Interlaced 3D video
US9532026B2 (en) * 2011-11-24 2016-12-27 Koninklijke Philips N.V. Interlaced 3D video
US20140300697A1 (en) * 2011-11-24 2014-10-09 Koninklijke Philips N.V. Interlaced 3d video

Also Published As

Publication number Publication date
US6813688B2 (en) 2004-11-02

Similar Documents

Publication Publication Date Title
US6813688B2 (en) System and method for efficient data mirroring in a pair of storage devices
US10896105B2 (en) SAS storage virtualization controller, subsystem and system using the same, and method therefor
JP5128079B2 (en) Universal storage bus adapter
US8423818B2 (en) Disk array apparatus and method for controlling the same
US5682509A (en) Bus interface to a RAID architecture
US7093043B2 (en) Data array having redundancy messaging between array controllers over the host bus
US6772310B2 (en) Method and apparatus for zeroing a transfer buffer memory as a background task
US7716421B2 (en) System, method and apparatus to aggregate heterogeneous raid sets
US5694581A (en) Concurrent disk array management system implemented with CPU executable extension
US7284082B2 (en) Controller apparatus and method for improved data transfer
US20050228924A1 (en) Expander device capable of persistent reservations and persistent affiliations
US6728791B1 (en) RAID 1 read mirroring method for host adapters
US20050223181A1 (en) Integrated circuit capable of copy management
WO2002023547A2 (en) Command read-back to verify integrity of command data written to disk drive
US20150127872A1 (en) Computer system, server module, and storage module
US20060064568A1 (en) Integrated circuit capable of mapping logical block address data across multiple domains
CN103403667A (en) Data processing method and device
US7143234B2 (en) Bios storage array
US7162565B1 (en) Universal serial bus interface to mass storage device
US20040044864A1 (en) Data storage
US6154789A (en) Peripheral controller comprising first messaging unit for communication with first OS driver and second messaging unit for communication with second OS driver for mass-storage peripheral
US6701385B1 (en) Raid 1 write mirroring method for host adapters
US20060155888A1 (en) Request conversion
CN101135950B (en) Magnetic disc adaptation card
TW461998B (en) Signal switching device

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WU, CHIA Y.;LEE, WHAY S.;TALAGAL, NISHA D.;REEL/FRAME:011348/0822;SIGNING DATES FROM 20001129 TO 20001130

AS Assignment

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME, FILED 12/04/00, RECORDED AT REEL 011348, FRAME 0822;ASSIGNORS:WU, CHIA Y.;LEE, WHAY S.;TALAGALA, NISHA D.;REEL/FRAME:011650/0607;SIGNING DATES FROM 20001129 TO 20001130

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: ORACLE AMERICA, INC., CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037278/0801

Effective date: 20100212

FPAY Fee payment

Year of fee payment: 12