Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
First Claim
Patent Images
1. A system for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
- a host interface configured to issue write commands for writing data from the host to the daughtercard over the host/daughtercard bus, with the write command including an address field specifying a location on the daughtercard where data is to be written, a first field for holding an opcode, and data field holding data to be written to the daughtercard where the host interface inserts a first opcode in the first field if data included in the write command is to be written to a selected register, inserts a second opcode in the first field if data included in the write command is to be used as a mask to set selected bits in a register word held in the selected register, and inserts a third opcode in the first field if the data included in the write command is to be used as a mask to clear selected bits in a register word held in the selected register; and
a daughtercard interface for receiving the write commands and decoding the first field in the command to either write the data included in the write command to the selected register if the first opcode is held in the first field, to utilize the data included in the write command as a mask to set selected bits in a word held in the selected register if the second opcode is included in the first field, or to utilize the data included in the write command as a mask to clear selected bits in the word included in the selected register if the third opcode is included in the first field.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for updating registers by performing an atomic read-modify-write operations initiated by a host over a host/daughtercard bus. A field in the write command determines whether data included in the write command is written to a targeted register or used as a mask to set or clear selected bits in a word held in the targeted register.
-
Citations
12 Claims
-
1. A system for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
-
a host interface configured to issue write commands for writing data from the host to the daughtercard over the host/daughtercard bus, with the write command including an address field specifying a location on the daughtercard where data is to be written, a first field for holding an opcode, and data field holding data to be written to the daughtercard where the host interface inserts a first opcode in the first field if data included in the write command is to be written to a selected register, inserts a second opcode in the first field if data included in the write command is to be used as a mask to set selected bits in a register word held in the selected register, and inserts a third opcode in the first field if the data included in the write command is to be used as a mask to clear selected bits in a register word held in the selected register; and a daughtercard interface for receiving the write commands and decoding the first field in the command to either write the data included in the write command to the selected register if the first opcode is held in the first field, to utilize the data included in the write command as a mask to set selected bits in a word held in the selected register if the second opcode is included in the first field, or to utilize the data included in the write command as a mask to clear selected bits in the word included in the selected register if the third opcode is included in the first field.
-
-
2. A method for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said method comprising the steps of:
-
at the host; issuing a write command including a first field, an address field indicating a specified register, and a data field; inserting a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; inserting a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; inserting a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register; and transmitting the write command to the daughtercard; at the daughtercard; receiving the write command; decoding the opcode value and writing the data field of the write command to the specified register if the first opcode value is included in the first field of the write command; decoding the opcode value and utilizing the data field of the write command as a mask to set specific bits of a data value held in the specified register if the second opcode value is included in the first field of the write command; and decoding the opcode value and utilizing the data field of the write command as a mask to clear specific bits of a data value held in the specified register if the third opcode value is included in the first field of the write command.
-
-
3. A computer program product for use on a system that updates register values on a daughtercard connected to a host by a host/daughtercard bus, the computer program product comprising:
-
at the host; a host interface including a processor for executing computer readable program code; a computer usable medium having computer readable program code physically embodied therein, said computer program product further comprising; computer readable program code for causing the processor to issue a write command including a first field, an address field indicating a specified register, and a data field; computer readable program code for causing the processor to insert a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; computer readable program code for causing the processor to insert a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; computer readable program code for causing the processor to insert a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register; and computer readable program code for causing the processor to transmit the write command to the daughtercard; at the daughtercard; a daughtercard interface for receiving the write command and including a processor for executing computer readable program code and a register set including the specified register; computer readable program code for causing the processor to decode the opcode value and write the data field of the write command to the specified register if the first opcode value is included in the first field of the write command; computer readable program code for causing the processor to decode the opcode value and utilize the data field of the write command as a mask to set specific bits of a data value held in the specified register if the second opcode value is included in the first field of the write command; and computer readable program code for causing the processor to decode the opcode value and utilize the the data field of the write command as a mask to clear specific bits of a data value held in the specified register if the third opcode value is included in the first field of the write command.
-
-
4. A system for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
-
at the host; means for issuing a write command including a first field and a data field; means for inserting a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; means for inserting a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; means for inserting a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register; and transmitting the write command to the daughtercard; at the daughtercard; means for receiving the write command; means for decoding the opcode value and writing the data field of the write command to the specified register if the first opcode value is included in the first field of the write command; means for decoding the opcode value and utilizing the data field of the write command as a mask to set specific bits of a data value held in the specified register if the second opcode value is included in the first field of the write command; and means for decoding the opcode value and utilizing the data field of the write command as a mask to clear specific bits of a data value held in the specified register if the third opcode value is included in the first field of the write command.
-
-
5. A system for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
a host interface configured to issue write commands for writing data from the host to the daughtercard over the host/daughtercard bus, with the write command including an address field specifying a location on the daughtercard where data is to be written, a first field for holding an opcode that is decoded on the daughtercard, and a data field to be written to the daughtercard, where the host interface inserts a first opcode value in the first field the if data field included in the write command is to be written to a selected register, inserts a second opcode value in the first field if data field included in the write command is to be used as a mask to set selected bits in a register word held in the selected register, and inserts a third opcode value in the first field if the data field included in the write command is to be used as a mask to clear selected bits in a register word held in the selected register.
-
6. A system, implemented on the host, for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
-
means for issuing a write command including an address field, a first field holding an opcode value to be decoded at the daughtercard, and a data field; means for inserting a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; means for inserting a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; means for inserting a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register; and means for transmitting the write command to the daughtercard.
-
-
7. A method, performed on the host, for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said method comprising the steps of:
-
issuing a write command including an address field, a first field holding an opcode value to be decoded at the daughtercard, and a data field; inserting a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; inserting a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; inserting a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register.
-
-
8. A computer program product for use on the host of a system that updates register values on a daughtercard connected to a host by a host/daughtercard bus, the computer program product comprising:
-
a host interface including a processor for executing computer readable program code; a computer usable medium having computer readable program code physically embodied therein, said computer program product further comprising; computer readable program code for causing the processor to issue a write command including an address field, a first field holding an opcode that is decoded on the daughtercard, and a data field; computer readable program code for causing the processor to insert a first opcode value in the first field if the data field is to be written to a specified register on the daughter card; computer readable program code for causing the processor to insert a second opcode value in the first field if the data field is to be utilized as a mask to set specific bits in a data value held at the specified register; computer readable program code for causing the processor to insert a third opcode value in the first field if the data field is to be utilized as a mask to clear specific bits in a data value held at the specified register; and computer readable program code for causing the processor to transmit the write command to the daughtercard.
-
-
9. A system, implemented on a daughtercard, for updating register values on a daughtercard connected to a host by a host/daughtercard bus, said system comprising:
a daughtercard interface for receiving write commands including an address field, a first field holding an opcode value, and a data field and decoding the first field in the command to either write the data field included in the write command to the selected register if the a first opcode value is held in the first field, to utilize the data field included in the write command as a mask to set selected bits in a word held in the selected register if a second opcode value is included in the first field, or to utilize the data field included in the write command as a mask to clear selected bits in the word included in the selected register if a third opcode value is included in the first field.
-
10. A system, implemented on a daughtercard, for updating register values on a daughtercard connected to a host by a host/daughtercard bus, where the daughtercard receives a write command including an address field, a first field holding an opcode, and a data field, said system comprising:
-
means for decoding the opcode value held in the first field of a received write command; means for writing the data field of the write command to the specified register if a first opcode value is included in the first field of the write command; means for utilizing the data field of the write command as a mask to set specific bits of a data value held in the specified register if a second opcode value is included in the first field of the write command; and means for utilizing the data field of the write command as a mask to clear specific bits of a data value held in the specified register if a third opcode value is included in the first field of the write command.
-
-
11. A computer program product for use on the daughtercard of a system that updates register values on a daughtercard connected to a host by a host/daughtercard bus, the computer program product comprising:
-
a daughtercard interface including a processor for executing computer readable program code and a register set including the specified register, where the daughter card interface receives a host write command including an address field, a first field holding an opcode value decoded by the daughtercard interface, and a data field to be written to a register specified by the address field; a computer usable medium having computer readable program code physically embodied therein, said computer program product further comprising; computer readable program code for causing the processor to write the data field of the write command to the specified register if a first opcode value is included in the first field of the write command; computer readable program code for causing the processor to utilize the data field of the write command as a mask to set specific bits of a data value held in the specified register if a second opcode value is included in the first field of the write command; and computer readable program code for causing the processor to utilize the data field of the write command as a mask to clear specific bits of a data value held in the specified register if a third value is included in the first field of the write command.
-
-
12. A method, implemented on a daughtercard, for updating register values on a daughtercard connected to a host by a host/daughtercard bus, where the daughtercard receives a write command including an address field, a first field holding a opcode value, and a data field, said method comprising the steps of:
-
decoding the opcode value in the first field of a received write command; writing the data field of the write command to the specified register if a first opcode value is included in the first field of the write command; utilizing the data field of the write command as a mask to set specific bits of a data value held in the specified register if a second opcode value is included in the first field of the write command; and utilizing the data field of the write command as a mask to clear specific bits of a data value held in the specified register if a third opcode value is included in the first field of the write command.
-
Specification