US6530043B1 - Write data error checking in a PCI Bus system - Google Patents

Write data error checking in a PCI Bus system Download PDF

Info

Publication number
US6530043B1
US6530043B1 US09/522,440 US52244000A US6530043B1 US 6530043 B1 US6530043 B1 US 6530043B1 US 52244000 A US52244000 A US 52244000A US 6530043 B1 US6530043 B1 US 6530043B1
Authority
US
United States
Prior art keywords
pci
data
pci bus
error
check value
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.)
Expired - Fee Related
Application number
US09/522,440
Inventor
Brent Cameron Beardsley
Michael Thomas Benhase
Gregg Steven Lucas
Juan Antonio Yanes
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to US09/522,440 priority Critical patent/US6530043B1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BEARDSLEY, BRENT CAMERON, BENHASE, MICHAEL THOMAS, LUCAS, GREGG STEVEN, YANES, JUAN ANTONIO
Application granted granted Critical
Publication of US6530043B1 publication Critical patent/US6530043B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end

Definitions

  • the incorporated '610 application describes an example of a complex PCI bus system for providing a connection path between a secondary PCI bus, to which are attached a plurality of agents, such as channel adapters, and at least one primary bus to which is attached a peripheral device server.
  • the incorporated '610application additionally defines many of the terms employed herein, and such definitions are also available from publications provided by the PCI Special Interest Group, and will not be repeated here.
  • Complex PCI bus systems such as that of the incorporated '610 application, employ arbitration between commands from the attached channel adapters on the PCI bus system to manage the usage of the bus system in an efficient manner.
  • Computer data storage systems may employ PCI bus systems to provide fast data storage from hosts, such as network servers, via channel adapters and the PCI bus system, to attached storage servers having storage devices, cache storage, or non-volatile cache storage. It is advantageous to provide data storage that operates at relatively fast speeds which approach or match the speeds of the host processors, or that release the host processors, such that the host processors are not slowed.
  • the incorporated '610 application additionally defines many of the terms employed herein, and such definitions are also available from publications provided by the PCI Special Interest Group, and will not be repeated here.
  • a typical requirement of any data transfer system is to provide verification of write data transferred by the system.
  • write data is encoded in accordance with an error checking algorithm, such as a longitudinal redundancy check algorithm (LRC), or a cyclic redundancy check algorithm (CRC), and the resultant check character appended to the write data.
  • LRC longitudinal redundancy check algorithm
  • CRC cyclic redundancy check algorithm
  • the data is then checked at the other side of the PCI bus system by the same algorithm, including the check character, and, if the data is error free, the remainder of the redundancy calculation is typically an all zero output.
  • data transfers including write data transfers, are conducted in a variable number of fixed sized blocks of data, such as blocks of 512 bytes of data, and the check character is appended at the end of the data.
  • a block may alternatively comprise a single multibyte word.
  • the error check may be conducted at the receiving device only, but will not identify the source of the error.
  • redundancy calculation logic has been provided as a part of many PCI bus systems in order to better isolate and identify the source of the error.
  • Two problems result.
  • the host channel adapter that originated the write data transfer will send a read command to the PCI bus system upon completion of the write data transfer and read the contents of a register which stores the calculated check value.
  • the read must have a return path which is maintained while the read operation passes through the bus system and then the check value is returned along the path, making a read operation slow and inefficient.
  • the host channel is stalled and must remain locked to the bus, and the bus elements are held until the read command results are correctly received.
  • the redundancy check read operation is both slow to complete and prevents other activities at the bus.
  • An alternative approach is to provide hardware that sends an interrupt to the host adapter if there is a problem.
  • the difficulty is that the hardware must know that the write data transfer from the host channel adapter is complete, and requires extensive and costly logic to identify that the transfer is completed and to respond.
  • a method and system are provided for checking errors in write data transferred from the PCI data source, across the PCI bus, to the PCI bus system, for the PCI data destination, the data comprising a plurality of blocks.
  • the error checking system comprises a storage memory, and redundancy calculation logic coupled to the PCI bus and to the storage memory.
  • the redundancy calculation logic receives the write data across the PCI bus, calculating a check value for each block of the data transferred across the PCI bus, and updating each calculated check value with any previously calculated check value at a storage location of the storage memory.
  • Data path logic is coupled to the PCI bus and to the storage memory, and responds to a subsequently sent redundancy write command sent, e.g., from the PCI data source.
  • the write command is highly efficient in PCI bus systems, so as to allow the PCI bus system to provide a prompt response.
  • the subsequently sent redundancy write command has an unique identifier and provides an address which relates to the storage location of the check value, and is sent subsequent to completion of the transfer of the write data across the PCI bus.
  • the data path logic responds to the write command unique identifier, detecting the updated calculated check value at the storage location of the storage memory.
  • Error check logic coupled to the data path logic determines whether the detected updated calculated check value indicates an error, and upon the detected updated calculated check value indicating an error, signaling the error.
  • the subsequently sent redundancy write command unique identifier comprises at least one bit of a PCI address of the write command.
  • the bit is outside the range of addresses employed for decoding the address of the target.
  • FIG. 1 is a block diagram of a PCI bus system in accordance with an embodiment of the present invention and attached host systems and devices;
  • FIG. 2 is a block diagram of the PCI bus system of FIG. 1, illustrating a PCI remote bridge and two PCI local bridges;
  • FIG. 3 is a bit chart representation of a PCI bus “write”command type employed by the present invention.
  • FIG. 4 is a bit chart representation of an embodiment of a PCI bus address identifying a special redundancy check write command in accordance with the present invention
  • FIG. 5 is a block diagram of an embodiment of a transaction control of FIG. 2 arranged in accordance with the present invention.
  • FIG. 6 is a flow chart depicting an embodiment of the method of the present invention.
  • a PCI bus system 11 is illustrated in accordance with an embodiment of the present invention which provides communication paths, for example, between one or more host systems 4 and devices such as processors 10 , 12 , a device 6 , and NVS (non-volatile store) units 32 , 34 .
  • the exemplary PCI bus system 11 is based upon that illustrated in the incorporated '610 application, employing similar components, modified in accordance with the present invention.
  • the device 6 may comprise a direct access storage device subsystem, such as a string of DASDs.
  • the PCI bus system 11 allows the host systems 4 to communicate with the processor 10 , 12 , employing adapters 14 A, B, C and D, 16 A, B, C and D or other communication agents (not shown), including any device that typically communicates over a PCI bus.
  • the channel adapters 14 , 16 may comprise channel adapter cards that are each connected via a slot on the PCI bus system to a remote bridge 18 , 20 of the PCI bus system 11 .
  • Each channel adapter card provides a connection to one or more host systems 4 at a secondary PCI bus 44 , 45 .
  • processor 10 controls a primary PCI bus 88
  • processor 12 controls a primary PCI bus 90 , each providing addresses for access by the adapters 14 , 16 at secondary PCI busses 44 , 45 .
  • Two remote bridges 18 , 20 may be provided coupled to different sets of channel adapters or other communication agents, and each remote bridge is coupled to local bridges.
  • remote bridge 18 is coupled to local bridges 22 , 26
  • remote bridge is coupled to local bridges 24 , 28 .
  • the local bridges 22 , 24 may communicate with processor 10 and NVS unit 32 on primary PCI bus 88
  • the local bridges 26 , 28 may communicate with processor 12 and NVS unit 34 on primary PCI bus 90 , although other arrangements may be envisioned by those of skill in the art.
  • the adapters 14 A-D coupled to remote bridge 18 may communicate with the processors 10 , 12 or NVS unit 32 , 34 over the PCI bus system 11 .
  • PCI bus system An important communication in a PCI bus system is the writing of data by a host system 4 at the NVS units 32 , 34 and at a device 6 , the data stored in the selected unit or device under the control of the processor 10 , 12 .
  • Host systems typically deal with and process large amounts of data and require prompt access to, or storage of, that data to allow the host systems to continue processing without substantial wait times. Therefore, low latency of the bus system is required for such prompt access or storage.
  • the Peripheral Component Interconnect (PCI) bus system is a high-performance expansion bus architecture which offers such a low latency path employing PCI bridges through which a host processor may directly access PCI devices.
  • a PCI bus system may include such functions as data buffering and PCI central functions such as arbitration over usage of the bus system.
  • PCI bus systems become increasingly complex.
  • the data to be stored is typically customer data which will be retrieved at a subsequent time. It is of the utmost importance to the customer that the customer data not be lost or compromised. Thus, in addition to fast data storage, there must be some assurance that customer data has been transmitted across the PCI bus system error free. Hence, most channel adapters for the hosts require that a longitudinal redundancy check be made of the data transferred across a PCI bus to provide verification that the data transfer write operations have completed successfully and the data is correct.
  • the channel adapters 14 , 16 perform PCI write commands at the secondary PCI bus to transfer data to their destinations, and the remote bridge to which the data is transferred across the secondary bus conducts the redundancy calculation to insure that the data was transferred correctly. The remainder of the redundancy calculation is checked subsequent to the completion of the transfer of all of the data.
  • a read cannot pass a write.
  • a write will have passed the remote bridge where the redundancy is calculated before a following read reaches the bridge.
  • the channel adapter provided a PCI read command to the remote bridge attached to the secondary bus for reading the remainder from the calculation to indicate whether the data was transferred successfully and is correct.
  • complex PCI systems employ arbitration between commands from the attached channel adapters on the secondary PCI bus to manage the usage of the bus system in an efficient manner.
  • the arbitration is conducted by a bus manager 46 .
  • the PCI bus manager 46 grants the commands from the channel adapters 14 A-D on secondary PCI bus 44 in a round-robin fashion.
  • PCI read commands are extremely slow operations to complete, especially in complex PCI bus systems with multiple hosts and with multiple PCI bridges between the channel adapters and the storage devices, and the requesting adapter holds onto the bridge so as to provide a return path.
  • the channel adapter sending the read command to determine if the transferred data was correctly transferred must pause, and all other users of the PCI bus are blocked and are stalled while the requester waits for the read to complete and indicate whether the data is correct, and only then can the other channel adapters conduct another operation.
  • the exemplary PCI bus system of FIG. 2 includes the PCI bus manager 46 which manages data and signals presented on the secondary PCI bus 44 .
  • the PCI bus manager 46 comprises bus central resource functions, which include circuitry that manages the bus arbitration discussed above, bus parking, and other bus management functions, preferably with standalone circuitry.
  • the bus manager 46 has information describing the address ranges of the agents attached to the remote bridge 18 , the PCI bus adapters 50 and 52 , and other elements of the remote bridge, and uses this information to determine which agent or element is targeted by a PCI operation.
  • the information on the address ranges was provided at initialization and is preferably written to registers in the bus manager 46 , and may be copied to the PCI bus adapters.
  • the remote bridge 18 also comprises remote address translators 54 , 56 , transaction controls 55 , 57 , remote distance interfaces 58 , 60 , and static random access memories (SRAM) 74 , 76 , or any other suitable memory devices.
  • the PCI bus adapter 50 , remote address translator 54 , transaction control 55 , and remote distance interface 58 provide communication between channel adapters 14 and local bridge 22 .
  • the PCI bus adapter 52 , remote address translator 56 , transaction control 57 , and remote distance interface 60 provide communication between channel adapters 14 and local bridge 26 .
  • the channel adapters 14 A, B, C, D communicate with either PCI bus adapter 50 or 52 via the secondary PCI bus 44 .
  • the PCI bus adapters 50 , 52 , remote address translators 54 , 56 , transaction control 55 , 57 , remote distance interfaces 58 , 60 and SRAMs 74 , 76 may comprise logical elements of PCI bridges as are known in the art or any other suitable type of bridge circuitry.
  • the remote 58 , 60 and local 62 , 64 distance interfaces include controls and buffers known in the art to control transactions between the remote bridge 18 and the local bridges 22 , 26 and provide for long distance communication therebetween over long distance connections 59 , 61 .
  • the remote bridge 20 of FIG. 1 may be the same or similar to the remote bridge 18 , and provides communication with the local bridges 24 , 28 .
  • Each local bridge 22 , 26 comprises, respectively, a local distance interface 62 , 64 , a local address translator 66 , 68 , a transaction control 67 , 69 , and a PCI bus adapter 70 , 72 .
  • the remote 54 , 56 and local 66 , 68 address translators include circuitry known in the art to map a received address to another address space.
  • Remote address translators 54 , 56 perform address translation operations by mapping an address provided by channel adapters 14 to the address space of the local PCI bus adapters 70 , 72 , respectively.
  • Local address translators 66 , 68 map an address from the local PCI bus adapters 70 , 72 to the remote PCI bus adapter 50 , 52 address space, such that this translated address is transmitted to the remote address translator 54 , 56 via the local 62 , 64 and remote 58 , 60 distance interfaces.
  • the remote address translator 54 , 56 may buffer and transmit this received address to the remote PCI bus adapters 50 , 52 .
  • remote address translator 54 , 56 translates an address received from the remote PCI bus adapter 50 , 52 to the address space of the local PCI bus adapter 70 , 72 , respectively, this translated address is transmitted to the local address translator 66 , 68 via the remote 58 , 60 and local 62 , 64 distance interfaces.
  • the local address translator 66 , 68 may buffer and transmit this received address to the local PCI bus adapter 70 , 72 .
  • the transaction control 55 , 57 comprises redundancy calculation logic which conducts the LRC calculation with respect to data transferred across the secondary PCI bus, and stores the remainder of the calculation in a space in the SRAM 74 , 76 .
  • the location of the space of the SRAM is specifically assigned to the agent attached to the secondary bus at initiation, as is understood by those of skill in the art.
  • the check value is calculated and updated with any previously calculated check value in the same space in the SRAM, e.g., a 32 bit space.
  • the remainder stored as the result of the calculation with respect to the total amount of the data is zero, if the transfer was correct.
  • the channel adapter upon completion of the data transfer across the secondary PCI bus, the channel adapter, in the prior art, provided a read command to read the remainder in the assigned space of the SRAM. If the remainder was non-zero, the channel adapter indicated that there was an error.
  • the FIFO buffer sections 80 , 82 , 84 , and 86 queue the read/write transactions in the PCI bus system 11 .
  • Each of the FIFO buffer sections comprises multiple FIFO buffers to queue the transaction from the channel adapters 14 A, B, C, D and other agents attached to the secondary bus.
  • each FIFO buffer is divided into sections, and separate sections are allocated to each adapter 14 A-D for write and for read operations.
  • each adapter, processor, and element in the PCI bus system is assigned one or more “windows”, comprising a predetermined range of addresses.
  • the address translators 54 , 56 , 66 , and 68 include transaction control circuitry 55 , 57 , 67 , and 69 that includes logic to select queues in the FIFO buffers 80 , 82 , 84 , and 86 to place a transaction and manage the flow of transactions.
  • the FIFO buffers insure that the write commands are kept in sequence as they progress through the PCI bus system 11 at each of the FIFO buffers, thereby allowing the host system 4 to multiplex its operations.
  • the PCI busses 44 , 88 and 90 are designed for only very short distances, measured substantially in inches, and small loads, and the distance connections 59 , 61 are designed for longer distances with greater loads.
  • the prior art read command for reading the redundancy calculation remainder is processed by the PCI bus adapter 50 , 52 in accordance with the arbitration of the remote bus manager 46 , and provided to the remote address translator 54 , 56 and its transaction control 55 , 57 , which reads the remainder from the mapped location of the SRAM 74 , 76 . Then, the transaction control forwards the remainder of the mapped location to the PCI us adapter 50 , 52 and to the channel adapter 14 , again under the control of the arbitration of the remote bus manager 46 .
  • PCI bus system only the PCI data source that is the originator of the data is able to identify that the transfer has been completed, and only that PCI data source can provide an indication that the redundancy value can be checked for an error.
  • the present invention provides a system for promptly determining the redundancy check value for write data completely transferred across a PCI interface and signaling the presence of any error.
  • the present invention provides for a subsequently sent redundancy write command from, e.g., the channel adapter sending the data, to the transaction control 55 , 57 to check the redundancy check value for the write data. Further, if the redundancy check value indicates an error, e.g., the value is non-zero, the transaction control 55 , 57 will signal the error to an error handling system.
  • the bit pattern of a PCI bus write command 130 is illustrated in FIG. 3 .
  • the subsequently sent write command has an unique identifier, and is sent subsequent to completion of the transfer of the write data across the PCI bus.
  • One embodiment of an unique identifier is illustrated in FIG. 4, and comprises a bit 132 in the address 133 of the PCI bus write command 130 .
  • the bit 132 is unused for the SRAM address decode range, and is what would otherwise be an address of a larger SRAM.
  • two bits 134 and 132 may be used to provide an encoded unique identifier.
  • the address 133 preferably comprises the window addressing the SRAM module together with the address of the specific storage location assigned to the agent supplying the command, which is the same address as used with respect to the prior art read command for reading the LRC remainder.
  • data path logic of the remote transaction control 55 , 57 responds to the unique identifier 132 of the write command 130 , 133 , detecting the updated calculated check value at the storage location of the SRAM 74 , 76 .
  • Error check logic coupled to the data path logic determines whether the detected updated calculated check value indicates an error, and upon the detected updated calculated check value indicating an error, the remote transaction control signals the error to an error system, or generates an interrupt to the originating channel adapter.
  • redundancy calculation logic comprising redundancy calculator 310 , calculates the check value for the block of data accompanying the write command, and stores the remainder in the location of the SRAM mapped to the PCI data source.
  • the data of the write command is transferred into the assigned one of the FIFO buffers 80 of FIG. 2 and to the local bus 22 , 26 .
  • Subsequently received data blocks of the same write command and address are added to the FIFO buffers, and the check value calculated by the redundancy calculator 310 which updates the calculated check value with any previously calculated check value, e.g., by reading the previously calculated check value from the SRAM location, determining the new remainder, and sending the new remainder for storage in the same location of the SRAM.
  • the check value calculated by the redundancy calculator 310 which updates the calculated check value with any previously calculated check value, e.g., by reading the previously calculated check value from the SRAM location, determining the new remainder, and sending the new remainder for storage in the same location of the SRAM.
  • Other arrangements for calculating the check value and updating each calculated check value with any previously calculated check value may be employed as is known to those of skill in the art.
  • the subsequently sent redundancy write command 130 , 133 having the unique identifier bit 132 , or bits 132 , 134 , is received over the PCI bus interface.
  • the subsequently sent redundancy write command may be sent from any non-originating agent which requests the notification of any erroneous transfer of the data, but that requesting agent must have received an indication from the originating agent that transferred the data, that the transfer is complete.
  • the requesting agent that originated the subsequently sent redundancy write command is also the agent that originated the data and transferred the data across the PCI bus interface, e.g., an adapter 14 .
  • the subsequently sent redundancy write command will address the SRAM location 74 mapped to the normal write command calculated check value, and additionally has the unique identifier.
  • a key detector 305 senses the unique identifier of the subsequently sent redundancy write command, the key detector operates a SRAM arbiter 306 to insure that no data is written regarding any signals on the bus that appear to be data accompanying the redundancy write command during the data phase. Instead, the key detector 305 operates the SRAM to provide the check value remainder addressed by the subsequently sent redundancy write command, from the SRAM 74 to error check logic comprising a compare 323 . In the typical redundancy check logic, an all zero value of the remainder indicates that the checked data is error free. Thus, compare 323 compares the remainder from the SRAM addressed location to an all zero value.
  • error signaling logic 325 may provide a non-error signal, which is sent to the address of the originator.
  • the transaction control 57 of FIG. 2 is preferably identical or similarly arranged to the transaction control 55 discussed above.
  • the present invention promptly determines the redundancy check value for write data completely transferred across a PCI interface and signals the presence of any error.
  • the originating PCI data source sends a write command in step 400 to transfer data to a PCI data destination.
  • the originator provides the data to be transferred by block, either continuously or separately.
  • the originator determines whether all of the data has been sent. If not, the next block is sent, and, in step 403 , the remote bridge 18 and the appropriate transaction control 55 , 57 receive the data block.
  • the redundancy calculator 310 calculates a check value for the block of data, updating the calculated check value with any previously calculated check value, and, in step 407 , stores the check value in the mapped location of SRAM 74 , 76 .
  • the data block is transferred to the assigned FIFO buffers 80 , 82 , in step 408 .
  • steps 403 - 408 are repeated for each block, such that the check value in SRAM 74 , 76 is continually updated by employing, in step 405 , the previous remainder stored in step 407 , and all of the data is transferred to the FIFO buffers 80 , 82 in step 408 .
  • the originator Upon the originator completing the data transfer, as indicated by step 410 , the originator, in step 412 , sends the subsequently sent redundancy write command.
  • step 415 the appropriate transaction control 55 , 57 receives the subsequently sent redundancy write command, and, in step 416 , the key detector 305 decodes the unique identifier of the subsequently sent write command.
  • the key detector 305 responds to the command and, in step 417 , first operates SRAM arbiter 306 to prevent any signals inadvertently on the bus at the data phase of the command from being written to the storage location or used for the redundancy calculator, and, second, in step 420 , accesses the remainder check value from the addressed location in the SRAM 74 , 76 .
  • the remainder is provided to the compare logic 323 which compares the check value to the desired all zeros value in step 422 .
  • step 425 If the comparison indicates that the remainder is all zeros such that there is no error, in step 425 , the error signaling logic 325 , in step 426 , does nothing, or, posts an OK to the originator of the subsequently sent write command if required as discussed above. There is no need to clear the addressed location in the SRAM since it is already all zeros or “null”. Doing nothing in step 426 , allows the echo write to provide the indication that the data was transferred without error.
  • the error signaling logic 325 signals an error in step 428 to the error system on bus 326 .
  • the error handling system will save all of the information, including the non-zero remainder, so that the source of the error may be determined.
  • the present invention provides a method and system for promptly determining the redundancy check value for write data completely transferred across a PCI interface, and for signaling any error in the data transfer.

Abstract

In a PCI bus system, a method and system check for errors in rite data transferred from a PCI data source across a PCI bus to the PCI bus system, the data comprising a plurality of blocks. Redundancy calculation logic receives the write data across the PCI bus, calculates a check value for each block of the data transferred across the PCI bus, and updating any previously calculated check value with the calculated check value at a storage location of a storage memory. Data path logic is coupled to the PCI bus and to the storage memory, and responds to a unique identifier of a redundancy write command sent subsequent to completion of the transfer of the write data across the PCI interface. The data path logic responds to the write command unique identifier, detecting the updated calculated check value at the storage location of the storage memory. Error check logic coupled to the data path logic determines whether the detected updated calculated check value indicates an error, and upon the detected updated calculated check value indicating an error, signals the error.

Description

The incorporated '610 application describes an example of a complex PCI bus system for providing a connection path between a secondary PCI bus, to which are attached a plurality of agents, such as channel adapters, and at least one primary bus to which is attached a peripheral device server. The incorporated '610application additionally defines many of the terms employed herein, and such definitions are also available from publications provided by the PCI Special Interest Group, and will not be repeated here. Complex PCI bus systems, such as that of the incorporated '610 application, employ arbitration between commands from the attached channel adapters on the PCI bus system to manage the usage of the bus system in an efficient manner.
Computer data storage systems may employ PCI bus systems to provide fast data storage from hosts, such as network servers, via channel adapters and the PCI bus system, to attached storage servers having storage devices, cache storage, or non-volatile cache storage. It is advantageous to provide data storage that operates at relatively fast speeds which approach or match the speeds of the host processors, or that release the host processors, such that the host processors are not slowed. The incorporated '610 application additionally defines many of the terms employed herein, and such definitions are also available from publications provided by the PCI Special Interest Group, and will not be repeated here.
A typical requirement of any data transfer system, such as a PCI bus system, is to provide verification of write data transferred by the system. Thus, typically, write data is encoded in accordance with an error checking algorithm, such as a longitudinal redundancy check algorithm (LRC), or a cyclic redundancy check algorithm (CRC), and the resultant check character appended to the write data. The data is then checked at the other side of the PCI bus system by the same algorithm, including the check character, and, if the data is error free, the remainder of the redundancy calculation is typically an all zero output. Also typically, data transfers, including write data transfers, are conducted in a variable number of fixed sized blocks of data, such as blocks of 512 bytes of data, and the check character is appended at the end of the data. A block may alternatively comprise a single multibyte word. The error check may be conducted at the receiving device only, but will not identify the source of the error.
Thus, redundancy calculation logic has been provided as a part of many PCI bus systems in order to better isolate and identify the source of the error. Two problems result. First, the host channel adapter that originated the write data transfer will send a read command to the PCI bus system upon completion of the write data transfer and read the contents of a register which stores the calculated check value. The read must have a return path which is maintained while the read operation passes through the bus system and then the check value is returned along the path, making a read operation slow and inefficient. Second, the host channel is stalled and must remain locked to the bus, and the bus elements are held until the read command results are correctly received.
As the result, the redundancy check read operation is both slow to complete and prevents other activities at the bus.
An alternative approach is to provide hardware that sends an interrupt to the host adapter if there is a problem. The difficulty is that the hardware must know that the write data transfer from the host channel adapter is complete, and requires extensive and costly logic to identify that the transfer is completed and to respond.
SUMMARY OF THE INVENTION
It is an object of the present invention to provide a method and system for promptly determining the redundancy check value for write data completely transferred across a PCI bus.
In a PCI bus system having at least one PCI bus, at least one PCI data source, and at least one PCI data destination, a method and system are provided for checking errors in write data transferred from the PCI data source, across the PCI bus, to the PCI bus system, for the PCI data destination, the data comprising a plurality of blocks. The error checking system comprises a storage memory, and redundancy calculation logic coupled to the PCI bus and to the storage memory. The redundancy calculation logic receives the write data across the PCI bus, calculating a check value for each block of the data transferred across the PCI bus, and updating each calculated check value with any previously calculated check value at a storage location of the storage memory. Data path logic is coupled to the PCI bus and to the storage memory, and responds to a subsequently sent redundancy write command sent, e.g., from the PCI data source. The write command is highly efficient in PCI bus systems, so as to allow the PCI bus system to provide a prompt response. The subsequently sent redundancy write command has an unique identifier and provides an address which relates to the storage location of the check value, and is sent subsequent to completion of the transfer of the write data across the PCI bus.
The data path logic responds to the write command unique identifier, detecting the updated calculated check value at the storage location of the storage memory. Error check logic coupled to the data path logic determines whether the detected updated calculated check value indicates an error, and upon the detected updated calculated check value indicating an error, signaling the error.
In accordance with one embodiment of the present invention, the subsequently sent redundancy write command unique identifier comprises at least one bit of a PCI address of the write command. The bit is outside the range of addresses employed for decoding the address of the target.
For a fuller understanding of the present invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a PCI bus system in accordance with an embodiment of the present invention and attached host systems and devices;
FIG. 2 is a block diagram of the PCI bus system of FIG. 1, illustrating a PCI remote bridge and two PCI local bridges;
FIG. 3 is a bit chart representation of a PCI bus “write”command type employed by the present invention;
FIG. 4 is a bit chart representation of an embodiment of a PCI bus address identifying a special redundancy check write command in accordance with the present invention;
FIG. 5 is a block diagram of an embodiment of a transaction control of FIG. 2 arranged in accordance with the present invention; and
FIG. 6 is a flow chart depicting an embodiment of the method of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
This invention is described in preferred embodiments in the following description with reference to the Figures, in which like numbers represent the same or similar elements. While this invention is described in terms of the best mode for achieving this invention's objectives, it will be appreciated by those skilled in the art that variations may be accomplished in view of these teachings without deviating from the spirit or scope of the invention.
Referring to FIG. 1, a PCI bus system 11 is illustrated in accordance with an embodiment of the present invention which provides communication paths, for example, between one or more host systems 4 and devices such as processors 10, 12, a device 6, and NVS (non-volatile store) units 32, 34. The exemplary PCI bus system 11 is based upon that illustrated in the incorporated '610 application, employing similar components, modified in accordance with the present invention. As discussed in the incorporated '610 application, the device 6 may comprise a direct access storage device subsystem, such as a string of DASDs.
The PCI bus system 11 allows the host systems 4 to communicate with the processor 10, 12, employing adapters 14A, B, C and D, 16A, B, C and D or other communication agents (not shown), including any device that typically communicates over a PCI bus. The channel adapters 14, 16 may comprise channel adapter cards that are each connected via a slot on the PCI bus system to a remote bridge 18, 20 of the PCI bus system 11. Each channel adapter card provides a connection to one or more host systems 4 at a secondary PCI bus 44, 45. Briefly, processor 10 controls a primary PCI bus 88, and processor 12 controls a primary PCI bus 90, each providing addresses for access by the adapters 14, 16 at secondary PCI busses 44, 45.
Two remote bridges 18, 20 may be provided coupled to different sets of channel adapters or other communication agents, and each remote bridge is coupled to local bridges. Thus, remote bridge 18 is coupled to local bridges 22, 26, and remote bridge is coupled to local bridges 24, 28. In the instant example, the local bridges 22, 24 may communicate with processor 10 and NVS unit 32 on primary PCI bus 88, and the local bridges 26, 28 may communicate with processor 12 and NVS unit 34 on primary PCI bus 90, although other arrangements may be envisioned by those of skill in the art. Thus, in the present example of a PCI bus system, the adapters 14A-D coupled to remote bridge 18 may communicate with the processors 10, 12 or NVS unit 32, 34 over the PCI bus system 11.
An important communication in a PCI bus system is the writing of data by a host system 4 at the NVS units 32, 34 and at a device 6, the data stored in the selected unit or device under the control of the processor 10, 12. Host systems typically deal with and process large amounts of data and require prompt access to, or storage of, that data to allow the host systems to continue processing without substantial wait times. Therefore, low latency of the bus system is required for such prompt access or storage. The Peripheral Component Interconnect (PCI) bus system is a high-performance expansion bus architecture which offers such a low latency path employing PCI bridges through which a host processor may directly access PCI devices.
In a multiple host environment, a PCI bus system may include such functions as data buffering and PCI central functions such as arbitration over usage of the bus system. As the result, the PCI bus systems become increasingly complex.
The data to be stored is typically customer data which will be retrieved at a subsequent time. It is of the utmost importance to the customer that the customer data not be lost or compromised. Thus, in addition to fast data storage, there must be some assurance that customer data has been transmitted across the PCI bus system error free. Hence, most channel adapters for the hosts require that a longitudinal redundancy check be made of the data transferred across a PCI bus to provide verification that the data transfer write operations have completed successfully and the data is correct.
In PCI bus systems, the channel adapters 14, 16 perform PCI write commands at the secondary PCI bus to transfer data to their destinations, and the remote bridge to which the data is transferred across the secondary bus conducts the redundancy calculation to insure that the data was transferred correctly. The remainder of the redundancy calculation is checked subsequent to the completion of the transfer of all of the data. In PCI bus systems, a read cannot pass a write. Thus, a write will have passed the remote bridge where the redundancy is calculated before a following read reaches the bridge. Hence, in the prior art, the channel adapter provided a PCI read command to the remote bridge attached to the secondary bus for reading the remainder from the calculation to indicate whether the data was transferred successfully and is correct.
Referring additionally to FIG. 2, further detail of one-half of the exemplary complex PCI bridge system of FIG. 1 is illustrated. As discussed in the incorporated '610 application, complex PCI systems employ arbitration between commands from the attached channel adapters on the secondary PCI bus to manage the usage of the bus system in an efficient manner. In the example of FIG. 2, the arbitration is conducted by a bus manager 46. Typically, the PCI bus manager 46 grants the commands from the channel adapters 14A-D on secondary PCI bus 44 in a round-robin fashion. An element of PCI architecture is that PCI read commands are extremely slow operations to complete, especially in complex PCI bus systems with multiple hosts and with multiple PCI bridges between the channel adapters and the storage devices, and the requesting adapter holds onto the bridge so as to provide a return path. Thus, in the prior art, the channel adapter sending the read command to determine if the transferred data was correctly transferred must pause, and all other users of the PCI bus are blocked and are stalled while the requester waits for the read to complete and indicate whether the data is correct, and only then can the other channel adapters conduct another operation.
The exemplary PCI bus system of FIG. 2 includes the PCI bus manager 46 which manages data and signals presented on the secondary PCI bus 44. The PCI bus manager 46 comprises bus central resource functions, which include circuitry that manages the bus arbitration discussed above, bus parking, and other bus management functions, preferably with standalone circuitry. The bus manager 46 has information describing the address ranges of the agents attached to the remote bridge 18, the PCI bus adapters 50 and 52, and other elements of the remote bridge, and uses this information to determine which agent or element is targeted by a PCI operation. The information on the address ranges was provided at initialization and is preferably written to registers in the bus manager 46, and may be copied to the PCI bus adapters. The remote bridge 18 also comprises remote address translators 54, 56, transaction controls 55, 57, remote distance interfaces 58, 60, and static random access memories (SRAM) 74, 76, or any other suitable memory devices. The PCI bus adapter 50, remote address translator 54, transaction control 55, and remote distance interface 58 provide communication between channel adapters 14 and local bridge 22. The PCI bus adapter 52, remote address translator 56, transaction control 57, and remote distance interface 60 provide communication between channel adapters 14 and local bridge 26. The channel adapters 14A, B, C, D communicate with either PCI bus adapter 50 or 52 via the secondary PCI bus 44. The PCI bus adapters 50, 52, remote address translators 54, 56, transaction control 55, 57, remote distance interfaces 58, 60 and SRAMs 74, 76 may comprise logical elements of PCI bridges as are known in the art or any other suitable type of bridge circuitry. The remote 58, 60 and local 62, 64 distance interfaces include controls and buffers known in the art to control transactions between the remote bridge 18 and the local bridges 22, 26 and provide for long distance communication therebetween over long distance connections 59, 61. The remote bridge 20 of FIG. 1 may be the same or similar to the remote bridge 18, and provides communication with the local bridges 24, 28.
Each local bridge 22, 26 comprises, respectively, a local distance interface 62, 64, a local address translator 66, 68, a transaction control 67, 69, and a PCI bus adapter 70, 72.
The remote 54, 56 and local 66, 68 address translators include circuitry known in the art to map a received address to another address space. Remote address translators 54, 56 perform address translation operations by mapping an address provided by channel adapters 14 to the address space of the local PCI bus adapters 70, 72, respectively. Local address translators 66, 68 map an address from the local PCI bus adapters 70, 72 to the remote PCI bus adapter 50, 52 address space, such that this translated address is transmitted to the remote address translator 54, 56 via the local 62, 64 and remote 58, 60 distance interfaces. In such case, the remote address translator 54, 56 may buffer and transmit this received address to the remote PCI bus adapters 50, 52. Similarly, after remote address translator 54, 56 translates an address received from the remote PCI bus adapter 50, 52 to the address space of the local PCI bus adapter 70, 72, respectively, this translated address is transmitted to the local address translator 66, 68 via the remote 58, 60 and local 62, 64 distance interfaces. In such case, the local address translator 66, 68 may buffer and transmit this received address to the local PCI bus adapter 70, 72.
Typically, the transaction control 55, 57 comprises redundancy calculation logic which conducts the LRC calculation with respect to data transferred across the secondary PCI bus, and stores the remainder of the calculation in a space in the SRAM 74, 76. The location of the space of the SRAM is specifically assigned to the agent attached to the secondary bus at initiation, as is understood by those of skill in the art. As each block of the data is transferred, the check value is calculated and updated with any previously calculated check value in the same space in the SRAM, e.g., a 32 bit space. Typically, the remainder stored as the result of the calculation with respect to the total amount of the data is zero, if the transfer was correct. Hence, upon completion of the data transfer across the secondary PCI bus, the channel adapter, in the prior art, provided a read command to read the remainder in the assigned space of the SRAM. If the remainder was non-zero, the channel adapter indicated that there was an error.
The FIFO buffer sections 80, 82, 84, and 86 queue the read/write transactions in the PCI bus system 11. Each of the FIFO buffer sections comprises multiple FIFO buffers to queue the transaction from the channel adapters 14A, B, C, D and other agents attached to the secondary bus. In the incorporated '610 application, each FIFO buffer is divided into sections, and separate sections are allocated to each adapter 14A-D for write and for read operations. Also, each adapter, processor, and element in the PCI bus system is assigned one or more “windows”, comprising a predetermined range of addresses. The address translators 54, 56, 66, and 68 include transaction control circuitry 55, 57, 67, and 69 that includes logic to select queues in the FIFO buffers 80, 82, 84, and 86 to place a transaction and manage the flow of transactions. The FIFO buffers insure that the write commands are kept in sequence as they progress through the PCI bus system 11 at each of the FIFO buffers, thereby allowing the host system 4 to multiplex its operations.
The PCI busses 44, 88 and 90 are designed for only very short distances, measured substantially in inches, and small loads, and the distance connections 59, 61 are designed for longer distances with greater loads.
The prior art read command for reading the redundancy calculation remainder is processed by the PCI bus adapter 50, 52 in accordance with the arbitration of the remote bus manager 46, and provided to the remote address translator 54, 56 and its transaction control 55, 57, which reads the remainder from the mapped location of the SRAM 74, 76. Then, the transaction control forwards the remainder of the mapped location to the PCI us adapter 50, 52 and to the channel adapter 14, again under the control of the arbitration of the remote bus manager 46.
In a PCI bus system, only the PCI data source that is the originator of the data is able to identify that the transfer has been completed, and only that PCI data source can provide an indication that the redundancy value can be checked for an error.
The present invention provides a system for promptly determining the redundancy check value for write data completely transferred across a PCI interface and signaling the presence of any error.
Specifically, the present invention provides for a subsequently sent redundancy write command from, e.g., the channel adapter sending the data, to the transaction control 55, 57 to check the redundancy check value for the write data. Further, if the redundancy check value indicates an error, e.g., the value is non-zero, the transaction control 55, 57 will signal the error to an error handling system.
The bit pattern of a PCI bus write command 130 is illustrated in FIG. 3. The subsequently sent write command has an unique identifier, and is sent subsequent to completion of the transfer of the write data across the PCI bus. One embodiment of an unique identifier is illustrated in FIG. 4, and comprises a bit 132 in the address 133 of the PCI bus write command 130. The bit 132 is unused for the SRAM address decode range, and is what would otherwise be an address of a larger SRAM. As an alternative, two bits 134 and 132 may be used to provide an encoded unique identifier. The address 133, except for bits 132 and 134, preferably comprises the window addressing the SRAM module together with the address of the specific storage location assigned to the agent supplying the command, which is the same address as used with respect to the prior art read command for reading the LRC remainder.
Referring to FIGS. 1-4, in accordance with the present invention, data path logic of the remote transaction control 55, 57 responds to the unique identifier 132 of the write command 130, 133, detecting the updated calculated check value at the storage location of the SRAM 74, 76. Error check logic coupled to the data path logic determines whether the detected updated calculated check value indicates an error, and upon the detected updated calculated check value indicating an error, the remote transaction control signals the error to an error system, or generates an interrupt to the originating channel adapter.
An example of a transaction control 55 having logic in accordance with the present invention is illustrated in FIG. 5. If a received command is a normal write command, redundancy calculation logic, comprising redundancy calculator 310, calculates the check value for the block of data accompanying the write command, and stores the remainder in the location of the SRAM mapped to the PCI data source. The data of the write command is transferred into the assigned one of the FIFO buffers 80 of FIG. 2 and to the local bus 22, 26. Subsequently received data blocks of the same write command and address are added to the FIFO buffers, and the check value calculated by the redundancy calculator 310 which updates the calculated check value with any previously calculated check value, e.g., by reading the previously calculated check value from the SRAM location, determining the new remainder, and sending the new remainder for storage in the same location of the SRAM. Other arrangements for calculating the check value and updating each calculated check value with any previously calculated check value may be employed as is known to those of skill in the art.
Referring to FIGS. 2-5, in accordance with the present invention, the subsequently sent redundancy write command 130, 133, having the unique identifier bit 132, or bits 132, 134, is received over the PCI bus interface. The subsequently sent redundancy write command may be sent from any non-originating agent which requests the notification of any erroneous transfer of the data, but that requesting agent must have received an indication from the originating agent that transferred the data, that the transfer is complete. Preferably, the requesting agent that originated the subsequently sent redundancy write command is also the agent that originated the data and transferred the data across the PCI bus interface, e.g., an adapter 14.
The subsequently sent redundancy write command will address the SRAM location 74 mapped to the normal write command calculated check value, and additionally has the unique identifier. A key detector 305 senses the unique identifier of the subsequently sent redundancy write command, the key detector operates a SRAM arbiter 306 to insure that no data is written regarding any signals on the bus that appear to be data accompanying the redundancy write command during the data phase. Instead, the key detector 305 operates the SRAM to provide the check value remainder addressed by the subsequently sent redundancy write command, from the SRAM 74 to error check logic comprising a compare 323. In the typical redundancy check logic, an all zero value of the remainder indicates that the checked data is error free. Thus, compare 323 compares the remainder from the SRAM addressed location to an all zero value.
In one alternative, if the remainder is an all zero value, no signal is sent back to the originator of the subsequently sent redundancy write command, and the originator will send a write command as described in copending U.S. patent application No. (TU999073) which passes the remote bridge and provides an echo write back to the originator. The originator will rely on the lack of an error indication before receipt of the returning echo write. Also, the echo write could additionally perform the redundancy write command, with the return echo write providing the value of the remainder back to the originating agent. If the remainder is a non-zero value, error signaling logic 325 signals the error to an error handling system on bus 326. As is known to those of skill in the art, an error handling system will halt operation of the remote bridge and save all the information so that the source of the error may be determined.
In either embodiment, in the event that there is an all zero remainder as indicated by compare 323, error signaling logic 325 may provide a non-error signal, which is sent to the address of the originator.
The transaction control 57 of FIG. 2 is preferably identical or similarly arranged to the transaction control 55 discussed above.
Thus, the present invention promptly determines the redundancy check value for write data completely transferred across a PCI interface and signals the presence of any error.
An embodiment of the method of the present invention is illustrated in FIG. 6. Referring additionally to FIGS. 2-5, the originating PCI data source sends a write command in step 400 to transfer data to a PCI data destination. The originator provides the data to be transferred by block, either continuously or separately. In step 410, the originator determines whether all of the data has been sent. If not, the next block is sent, and, in step 403, the remote bridge 18 and the appropriate transaction control 55, 57 receive the data block. In step 405, the redundancy calculator 310 calculates a check value for the block of data, updating the calculated check value with any previously calculated check value, and, in step 407, stores the check value in the mapped location of SRAM 74, 76. The data block is transferred to the assigned FIFO buffers 80, 82, in step 408.
As the originator sends additional blocks of data, steps 403-408 are repeated for each block, such that the check value in SRAM 74, 76 is continually updated by employing, in step 405, the previous remainder stored in step 407, and all of the data is transferred to the FIFO buffers 80, 82 in step 408.
Upon the originator completing the data transfer, as indicated by step 410, the originator, in step 412, sends the subsequently sent redundancy write command.
In step 415, the appropriate transaction control 55, 57 receives the subsequently sent redundancy write command, and, in step 416, the key detector 305 decodes the unique identifier of the subsequently sent write command. The key detector 305 responds to the command and, in step 417, first operates SRAM arbiter 306 to prevent any signals inadvertently on the bus at the data phase of the command from being written to the storage location or used for the redundancy calculator, and, second, in step 420, accesses the remainder check value from the addressed location in the SRAM 74, 76. The remainder is provided to the compare logic 323 which compares the check value to the desired all zeros value in step 422. If the comparison indicates that the remainder is all zeros such that there is no error, in step 425, the error signaling logic 325, in step 426, does nothing, or, posts an OK to the originator of the subsequently sent write command if required as discussed above. There is no need to clear the addressed location in the SRAM since it is already all zeros or “null”. Doing nothing in step 426, allows the echo write to provide the indication that the data was transferred without error.
If the error check compare logic 323 indicates a non-zero result and an error in step 425, the error signaling logic 325 signals an error in step 428 to the error system on bus 326. The error handling system will save all of the information, including the non-zero remainder, so that the source of the error may be determined.
Those of skill in the art may modify the specific elements of the transaction control 55, 57 and the specific steps of FIG. 6 while adhering to the present invention.
Thus, the present invention provides a method and system for promptly determining the redundancy check value for write data completely transferred across a PCI interface, and for signaling any error in the data transfer.
While the preferred embodiments of the present invention have been illustrated in detail, it should be apparent that modifications and adaptations to those embodiments may occur to one skilled in the art without departing from the scope of the present invention as set forth in the following claims.

Claims (15)

We claim:
1. In a PCI bus system having at least one PCI bus, at least one PCI data source, and at least one PCI data destination, a method for checking errors in write data transferred from said one PCI data source across said PCI bus to said PCI bus system for said at least one PCI data destination, said write data comprising a data stream of a plurality of blocks, comprising the steps of:
across said PCI bus from said at least one PCI data source, calculating a check value for each said block of said data stream transferred across said PCI bus;
updating any previously calculated check value for said data stream with said calculated check value at a storage location, said storage location across said PCI bus from said at least one PCI data source;
responding to an unique identifier of a redundancy write command sent subsequent to completion of said transfer of said write data across said PCI bus, checking said updated calculated check value at said storage location for an error indication; and
upon said checking step indicating an error, signaling said error.
2. The method of claim 1, wherein said write command unique identifier comprises at least one bit of a PCI address of said subsequently sent redundancy write command, said at least one bit unused in the decode range of said PCI address, and wherein said checking step additionally comprises responding to said at least one bit of said PCI address to check said updated calculated check value.
3. The method of claim 2, wherein said checking step additionally comprises signaling said error to an error handling system.
4. The method of claim 2, wherein said PCI bus system has a plurality of said PCI data sources, wherein said updating step additionally updates said calculated check value at said storage location additionally identified by an association with said PCI data source, and wherein said subsequently sent redundancy write command additionally is addressed to said identified storage location.
5. The method of claim 1, wherein said checking step additionally comprises preventing any write at said storage location by said write command.
6. In a PCI bus system having at least one PCI bus, at least one PCI data source, and at least one PCI data destination, a system for checking errors in write data transferred from said one PCI data source across said PCI bus to said PCI bus system for said at least one PCI data destination, said write data comprising a data stream of a plurality of blocks, comprising:
a storage memory;
redundancy calculation logic coupled to said PCI bus and to said storage memory, receiving said write data across said PCI bus from said at least one PCI data source, calculating a check value for each said block of said data stream transferred across said PCI bus, and updating any previously calculated check value for said data stream with said calculated check value at a storage location of said storage memory;
data path logic coupled to said PCI bus and to said storage memory, responding to an unique identifier of a redundancy write command sent subsequent to completion of said transfer of said write data across said PCI bus, detecting said updated calculated check value at said storage location of said storage memory; and
error check logic coupled to said data path logic determining whether said detected updated calculated check value indicates an error, and upon said detected updated calculated check value indicating an error, signaling said error.
7. The error checking system of claim 6, wherein said write command unique identifier comprises at least one bit of a PCI address of said subsequently sent redundancy write command, said at least one bit unused in the decode range of said PCI address, and wherein said data path logic additionally comprises a key detector for sensing said at least one bit of said PCI address and for identifying said subsequently sent redundancy write command.
8. The error checking system of claim 7, wherein said error check logic signals said error to an error handling system.
9. The error checking system of claim 7, wherein said PCI bus system has a plurality of said PCI data sources, wherein said redundancy calculation logic updates said calculated check value at said storage location of said storage memory additionally identified by an association with said PCI data source, and wherein said subsequently sent redundancy write command additionally is addressed to said identified storage location.
10. The error checking system of claim 6, wherein said data path logic additionally prevents any write at said storage location by said write command.
11. A PCI bus system for transferring write data from at least one PCI data source to at least one PCI data destination, and for checking errors in write data transferred from said one PCI data source to said PCI bus system for said at least one PCI data destination, said write data comprising a data stream of a plurality of blocks, comprising:
a PCI bus coupled to said at least one PCI data source;
a storage memory;
redundancy calculation logic coupled to said PCI bus and to said storage memory, receiving said write data across said PCI bus from said at least one PCI data source, calculating a check value for each said block of said data stream transferred across said PCI bus, and updating any previously calculated check value for said data stream with said calculated check value at a storage location of said storage memory;
data path logic coupled to said PCI bus and to said storage memory, responding to an unique identifier of a redundancy write command sent subsequent to completion of said transfer of said write data across said PCI bus, detecting said updated calculated check value at said storage location of said storage memory; and
error check logic coupled to said data path logic determining whether said detected updated calculated check value indicates an error, and upon said detected updated calculated check value indicating an error, signaling said error.
12. The PCI bus system of claim 11, wherein said write command unique identifier comprises at least one bit of a PCI address of said subsequently sent redundancy write command, said at least one bit unused in the decode range of said PCI address, and wherein said data path logic additionally comprises a key detector for sensing said at least one bit of said PCI address and for identifying said subsequently sent redundancy write command.
13. The PCI bus system of claim 12, wherein said error check logic signals said error to an error handling system.
14. The PCI bus system of claim 12, wherein said PCI bus system has a plurality of said PCI data sources, wherein said redundancy calculation logic updates said calculated check value at said storage location of said storage memory additionally identified by an association with said PCI data source, and wherein said subsequently sent redundancy write command additionally is addressed to said identified storage location.
15. The PCI bus system of claim 11, wherein said data path logic additionally prevents any write at said storage location by said write command.
US09/522,440 2000-03-09 2000-03-09 Write data error checking in a PCI Bus system Expired - Fee Related US6530043B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/522,440 US6530043B1 (en) 2000-03-09 2000-03-09 Write data error checking in a PCI Bus system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/522,440 US6530043B1 (en) 2000-03-09 2000-03-09 Write data error checking in a PCI Bus system

Publications (1)

Publication Number Publication Date
US6530043B1 true US6530043B1 (en) 2003-03-04

Family

ID=24080861

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/522,440 Expired - Fee Related US6530043B1 (en) 2000-03-09 2000-03-09 Write data error checking in a PCI Bus system

Country Status (1)

Country Link
US (1) US6530043B1 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598144B1 (en) * 2001-12-12 2003-07-22 Advanced Micro Devices, Inc. Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping
US6691257B1 (en) * 2000-04-13 2004-02-10 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus protocol and method for using the same
US6708283B1 (en) 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US6829731B1 (en) * 2000-08-14 2004-12-07 International Business Machines Corporation Method and system for generating a design-specific test case from a generalized set of bus transactions
US20060075287A1 (en) * 2004-10-06 2006-04-06 Vageline Michael P Detecting data integrity
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US20060200720A1 (en) * 2005-03-01 2006-09-07 David Grimme Generating and verifying read and write cycles in a PCI bus system
US20070073957A1 (en) * 2005-08-26 2007-03-29 Akitomo Fukui Bridge, error notification method therefor and system
US20080148104A1 (en) * 2006-09-01 2008-06-19 Brinkman Michael G Detecting an Agent Generating a Parity Error on a PCI-Compatible Bus
US20160048423A1 (en) * 2014-08-14 2016-02-18 Arm Limited Transmission control checking for interconnect circuitry
US9946606B1 (en) * 2010-11-18 2018-04-17 Datacore Software Corporation Stream architecture for data representation
US10003636B1 (en) 2013-03-15 2018-06-19 Datacore Software Corporation Multi-node data store management
CN110532209A (en) * 2019-08-13 2019-12-03 南京芯驰半导体科技有限公司 A kind of safety bus system based on redundancy isomery
US11029855B1 (en) 2019-10-01 2021-06-08 Datacore Software Corporation Containerized storage stream microservice
WO2022021870A1 (en) * 2020-07-29 2022-02-03 苏州浪潮智能科技有限公司 Fc card transmission error positioning method and related device
CN115664599A (en) * 2022-12-08 2023-01-31 杭州云酷智能科技有限公司 Data transmission method and device, electronic equipment and storage medium

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4346474A (en) 1980-07-03 1982-08-24 International Business Machines Corporation Even-odd parity checking for synchronous data transmission
US4511963A (en) 1982-08-30 1985-04-16 International Business Machines Corp. Emulation of special purpose magnetic tape data recording equipment by a general purpose processor
US4573192A (en) 1984-01-16 1986-02-25 Engineered Systems Inc. End of transaction control system
US5157669A (en) 1988-10-14 1992-10-20 Advanced Micro Devices, Inc. Comparison of an estimated CRC syndrome to a generated CRC syndrome in an ECC/CRC system to detect uncorrectable errors
US5379386A (en) 1991-09-05 1995-01-03 International Business Machines Corp. Micro channel interface controller
US5630054A (en) * 1995-04-18 1997-05-13 Mti Technology Center Method and apparatus for storing and retrieving error check information
US5706298A (en) 1995-11-09 1998-01-06 Emc Corporation Method and apparatus for calculating the longitudinal redundancy check in a mixed stream channel
US5908471A (en) 1997-01-31 1999-06-01 Sun Microsystems, Inc Diagnostic arrangement for digital computer system
US5953352A (en) 1997-06-23 1999-09-14 Micron Electronics, Inc. Method of checking data integrity for a raid 1 system
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
US6272651B1 (en) * 1998-08-17 2001-08-07 Compaq Computer Corp. System and method for improving processor read latency in a system employing error checking and correction

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4346474A (en) 1980-07-03 1982-08-24 International Business Machines Corporation Even-odd parity checking for synchronous data transmission
US4511963A (en) 1982-08-30 1985-04-16 International Business Machines Corp. Emulation of special purpose magnetic tape data recording equipment by a general purpose processor
US4573192A (en) 1984-01-16 1986-02-25 Engineered Systems Inc. End of transaction control system
US5157669A (en) 1988-10-14 1992-10-20 Advanced Micro Devices, Inc. Comparison of an estimated CRC syndrome to a generated CRC syndrome in an ECC/CRC system to detect uncorrectable errors
US5379386A (en) 1991-09-05 1995-01-03 International Business Machines Corp. Micro channel interface controller
US5630054A (en) * 1995-04-18 1997-05-13 Mti Technology Center Method and apparatus for storing and retrieving error check information
US5706298A (en) 1995-11-09 1998-01-06 Emc Corporation Method and apparatus for calculating the longitudinal redundancy check in a mixed stream channel
US5908471A (en) 1997-01-31 1999-06-01 Sun Microsystems, Inc Diagnostic arrangement for digital computer system
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
US5953352A (en) 1997-06-23 1999-09-14 Micron Electronics, Inc. Method of checking data integrity for a raid 1 system
US6272651B1 (en) * 1998-08-17 2001-08-07 Compaq Computer Corp. System and method for improving processor read latency in a system employing error checking and correction

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691257B1 (en) * 2000-04-13 2004-02-10 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus protocol and method for using the same
US6708283B1 (en) 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US6829731B1 (en) * 2000-08-14 2004-12-07 International Business Machines Corporation Method and system for generating a design-specific test case from a generalized set of bus transactions
US6598144B1 (en) * 2001-12-12 2003-07-22 Advanced Micro Devices, Inc. Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping
US7577804B2 (en) 2004-10-06 2009-08-18 International Business Machines Corporation Detecting data integrity
US20060075287A1 (en) * 2004-10-06 2006-04-06 Vageline Michael P Detecting data integrity
US20060200720A1 (en) * 2005-03-01 2006-09-07 David Grimme Generating and verifying read and write cycles in a PCI bus system
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US20070073957A1 (en) * 2005-08-26 2007-03-29 Akitomo Fukui Bridge, error notification method therefor and system
US7552362B2 (en) * 2005-08-26 2009-06-23 Canon Kabushiki Kaisha Bridge, error notification method therefor and system
US20080148104A1 (en) * 2006-09-01 2008-06-19 Brinkman Michael G Detecting an Agent Generating a Parity Error on a PCI-Compatible Bus
US9946606B1 (en) * 2010-11-18 2018-04-17 Datacore Software Corporation Stream architecture for data representation
US10498802B1 (en) 2013-03-15 2019-12-03 Datacore Software Corporation Multi-node data store management
US10003636B1 (en) 2013-03-15 2018-06-19 Datacore Software Corporation Multi-node data store management
CN105373441A (en) * 2014-08-14 2016-03-02 Arm有限公司 Transmission control checking for interconnect circuitry
US9880898B2 (en) * 2014-08-14 2018-01-30 Arm Limited Transmission control checking for interconnect circuitry
US20160048423A1 (en) * 2014-08-14 2016-02-18 Arm Limited Transmission control checking for interconnect circuitry
CN105373441B (en) * 2014-08-14 2020-06-30 Arm 有限公司 Transmission control checking for interconnect circuits
CN110532209A (en) * 2019-08-13 2019-12-03 南京芯驰半导体科技有限公司 A kind of safety bus system based on redundancy isomery
US11029855B1 (en) 2019-10-01 2021-06-08 Datacore Software Corporation Containerized storage stream microservice
WO2022021870A1 (en) * 2020-07-29 2022-02-03 苏州浪潮智能科技有限公司 Fc card transmission error positioning method and related device
CN115664599A (en) * 2022-12-08 2023-01-31 杭州云酷智能科技有限公司 Data transmission method and device, electronic equipment and storage medium
CN115664599B (en) * 2022-12-08 2023-03-28 杭州云酷智能科技有限公司 Data transmission method and device, electronic equipment and storage medium
US11876629B1 (en) 2022-12-08 2024-01-16 Hangzhou Keencool Intelligent Technology Co., Ltd. Data transmission method, device, electronic equipment, and storage medium

Similar Documents

Publication Publication Date Title
US5682512A (en) Use of deferred bus access for address translation in a shared memory clustered computer system
US6530043B1 (en) Write data error checking in a PCI Bus system
US6804673B2 (en) Access assurance for remote memory access over network
CN105900076B (en) Data processing system and method for processing multiple transactions
US7093079B2 (en) Snoop filter bypass
US6718444B1 (en) Read-modify-write for partial writes in a memory controller
US6578102B1 (en) Tracking and control of prefetch data in a PCI bus system
US7139890B2 (en) Methods and arrangements to interface memory
US5694556A (en) Data processing system including buffering mechanism for inbound and outbound reads and posted writes
US8601167B2 (en) Maintaining required ordering of transaction requests in interconnects using barriers and hazard checks
US11163719B2 (en) Hybrid remote direct memory access
US6886171B2 (en) Caching for I/O virtual address translation and validation using device drivers
US7093043B2 (en) Data array having redundancy messaging between array controllers over the host bus
US6286074B1 (en) Method and system for reading prefetched data across a bridge system
US5919254A (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
EP0524684A2 (en) A universal buffered interface for coupling multiple processors, memory units, and I/O interfaces to a common high-speed bus
US20020065967A1 (en) Transmission of signals synchronous to a common clock and transmission of data synchronous to strobes in a multiple agent processing system
US5911053A (en) Method and apparatus for changing data transfer widths in a computer system
US6397356B1 (en) Alternative path control system and method
US8271738B2 (en) Apparatus for operating cache-inhibited memory mapped commands to access registers
US6490647B1 (en) Flushing stale data from a PCI bus system read prefetch buffer
US7269666B1 (en) Memory utilization in a network interface
US20040205259A1 (en) Initiator connection tag for simple table lookup
US6415361B1 (en) Apparatus for controlling cache by using dual-port transaction buffers
EP1367499A1 (en) Compute node to mesh interface for highly scalable parallel processing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BEARDSLEY, BRENT CAMERON;BENHASE, MICHAEL THOMAS;LUCAS, GREGG STEVEN;AND OTHERS;REEL/FRAME:010654/0136

Effective date: 20000306

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20110304