Claims
- 1. A multi-processor system, comprising:a plurality of processors, each capable of executing an I/O instruction to transfer data or a command between the plurality of processors and an I/O device; I/O and trap hardware for performing an interrupt on the plurality of processors upon receipt of a selected I/O instruction from one of the plurality of processors and to transfer data or a command between the I/O device and said one of the plurality of processors; a first device for determining which of the plurality of processors is an executing processor, where the executing processor is executing the selected I/O instruction, said first device to utilize a save state area for each of the plurality of processors; a second device operating, when only one of the plurality of processors is executing an I/O instruction, to set a LastProcessor indicator designating which of the plurality of processors is the executing processor; and a third device for transferring data or a command between the executing processor indicated in the LastProcessor indicator and the I/O device in response to the selected I/O instruction.
- 2. A multi-processor system, as defined in claim 1, wherein the I/O and trap hardware comprises an emulation block for translating the data or command from one of the I/O device and executing processor to a different format compatible with the other of the I/O device and executing processor.
- 3. A multi-processor system, as defined in claim 1, wherein the first device for determining which of the processors is executing the selected I/O instruction comprises first circuitry for designating for each of the plurality of processors, whether an instruction address count difference between an instruction address for an I/O instruction last performed by a particular processor and a current instruction address for the particular processor is less than or equal to a predetermined number, and using this designation in determining which of the plurality of processors is the executing processor, said instruction address to be held in said save state area for each of said plurality of processors.
- 4. A multi-processor system, as defined in claim 3, wherein the first circuitry includes logic to determine when the instruction address count difference for the particular processor is one, and to delete the designation of the particular processor as the executing processor unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 5. A multi-processor system as defined in claim 3, wherein the predetermined number is two.
- 6. A multi-processor system as defined in claim 1, wherein each of the plurality of processors includes a first logic to set a first indicator when it is executing an I/O instruction; andwherein the first device comprises a second logic to determine which of the plurality of processors have their first indicators set.
- 7. A method for controlling I/O in a multi-processor environment, comprising:determining if an I/O instruction requiring an interrupt is being executed by one of a plurality of processors in the multi-processor environment to transfer data or a command between the one of the plurality of processors and an I/O device; performing an interrupt if the I/O instruction is detected; determining which of the plurality of processors in said multi-processor environment is an executing processor by utilizing a save state area of each of the plurality of processors, where the executing processor is executing the I/O instruction; if only one of the plurality of processors is executing the I/O instruction, setting a LastProcessor indicator designating which of the plurality of processors is the executing processor; and transferring data or a command between the executing processor designated in the LastProcessor indicator and the I/O device in response to the I/O instruction.
- 8. A method as defined in claim 7, further comprising translating the data or command to be transferred to a different format compatible with a device that receives the data or command.
- 9. A method as defined in claim 7, wherein determining which of the processors in said multi-processor environment is the executing processor comprises determining which of the processors in said multi-processor environment is the executing processor by designating for each of the plurality of the processors whether an instruction address count difference between an instruction address for an I/O instruction last performed by that processor and the current instruction address for that processor is less than or equal to a predetermined number, and using this information in determining which of the processors are executing an I/O instruction.
- 10. A method as defined in claim 9, further comprising, when the instruction address count difference for a particular processor is equal to one, deleting the designation of the particular processor as the executing processor unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 11. A computer program product, comprising:a computer usable medium having computer readable program code embodied therein for providing I/O functions between an appropriate processor in a multi-processor environment and an I/O device during an I/O interrupt, the computer readable program code in the computer program product comprising first computer readable program code to determine which of a plurality of processors in the multi-processor environment are executing an I/O instruction said first computer readable program code to utilize a save state area for each of the plurality of processors; second computer readable program code to determine if only one of the plurality of processors in the multi-processor environment is executing the I/O instruction, and in that case, setting a LastProcessor indicator designating the one processor as the processor executing the I/O instruction; and third computer readable program code to transfer data or a command between the processor designated by the LastProcessor indicator and the I/O device.
- 12. A computer program product as defined in claim 11, wherein the first computer readable program code includes fourth computer readable program code for determining for each of the plurality of the processors whether an instruction address count difference between an instruction address for an I/O instruction last performed by that processor and the current instruction address for the processor are less than or equal to a predetermined number, and using that information in determining which of the processors are executing the I/O instruction.
- 13. A computer program product as defined in claim 12, wherein the first computer readable program code includes fifth computer readable program code for determining when the instruction address count difference for a particular processor is equal to one, and deleting the designation of the particular processor as the processor executing the I/O instruction unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 14. A computer program product as defined in claim 11, wherein the predetermined number is 2.
- 15. A multi-processor system, comprising:a plurality of processors, each capable of executing an I/O instruction to transfer data or a command between the plurality of processors and an I/O device; an I/O and trap hardware that issues an interrupt on the plurality of processors upon receipt of a selected I/O instruction from one of the plurality of processors and to transfer data or a command between the I/O device and said one of the plurality of processors; and a first device that provides a designation, for each of the plurality of processors, whether an instruction address count difference between an instruction address for an I/O instruction last performed by that processor and a current instruction address for that processor is less than or equal to a predetermined number, and using that information to determine which of the plurality of processors to connect to the I/O device to transfer the data or command between the I/O device and said one of the plurality of processors in response to the selected I/O instruction and making that connection.
- 16. A multi-processor system, as defined in claim 15, further including logic to delete the designation of a particular processor as having an instruction count difference of less than or equal to the predetermined number when the instruction address count difference for the particular processor is equal to one, unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 17. A method for controlling I/O in a multi-processor environment, comprising:determining if an I/O instruction requiring an interrupt is being executed by one of a plurality of processors in the multi-processor environment to transfer data or a command between the one of the plurality of processors and an I/O device; performing an interrupt if the I/O instruction is detected; providing a designation for each of the plurality of processors in the multi-processor environment whether an instruction address count difference between an instruction address for an I/O instruction last performed by that processor and a current instruction address for that processor is less than or equal to a predetermined number; and, using said designation for each of the plurality of processors to determine which of the plurality of processors to connect to the I/O device to transfer the data or command between the I/O device and said one of the plurality of processors in response to the selected I/O instruction and making that connection.
- 18. A method as defined in claim 17, further comprising deleting the designation of a processor as having an instruction count difference of less than or equal to the predetermined number when the instruction address count difference for a particular processor is equal to one, unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 19. A computer program product, comprising:a computer usable medium having computer readable program code embodied therein for providing I/O functions between an appropriate processor in a multi-processor environment and an I/O device during an I/O interrupt, the computer readable program code in the computer program product comprising first computer readable program code to provide a designation for each of a plurality of the processors in the multi-processor environment whether an instruction address count difference between an instruction address for an I/O instruction last performed by that processor and a current instruction address for that processor is less than or equal to a predetermined number; and second computer readable program code to use said designation for each of the plurality of processors in determining which processor to connect to the I/O device to transfer the data or command between the I/O device and the appropriate processor and to make this connection.
- 20. A computer program product as defined in claim 19, wherein the first computer readable program code includes third computer readable program code to determine when the instruction address count difference for a particular processor is equal to one, and to delete the designation of the particular processor as a processor executing an I/O instruction unless the last I/O instruction for the particular processor designates directly or indirectly a port for the I/O device.
- 21. A method for servicing a software system management interrupt (SMI) initiated by an I/O instruction in a multi-processor environment, comprising:detecting the occurrence of the software SMI; determining which processor in said multi-processor environment has save state information relating to the I/O instruction indicating that that processor initiated the software SMI; and transferring information between an SMI handler and said processor determined to have initiated the software SMI.
- 22. A method as defined in claim 21, wherein determining which processor in said multi-processor environment has save state information comprises determining which processor in said multi-processor environment has an EIP′ value in an interrupt save state area equal to an offset location where an instruction which immediately follows an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists.
- 23. A method as defined in claim 22, wherein determining which processor in said multi-processor environment has save state information further comprises determining if the EIP value in a processor I/O save state area equals an offset location at which an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists.
- 24. A method as defined in claim 21, wherein determining which processor in said multi-processor environment has save state information comprises determining if the EIP value in a processor I/O save state area equals an offset location at which an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists.
- 25. A method as defined in claim 24, wherein determining which processor in said multi-processor environment has save state information further comprises determining if ECX, ESI and EDI values in said processor I/O save state equal the ECX, ESI, and EDI values in an interrupt save state area.
- 26. A method for servicing a software system management interrupt (SMI) initiated by an I/O instruction in a multi-processor environment, comprising the steps of:detecting the occurrence of a software SMI; designating a processor in said multi-processor environment as having initiated the software SMI if both of the following tests, in any order, are true: 1) the processor in said multi-processor environment has an EIP′ value in an interrupt save state area equal to an offset location where an instruction which immediately follows an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists, and 2) an EIP value in an I/O save state area for the processor equals an offset location at which an I/O call instruction that initiates software SMI's in said BIOS software SMI call routine exists; and transferring information between said SMI handler and said designated processor.
- 27. A multi-processor system, comprising:at least a first and a second processors, each capable of initiating a software-generated system management interrupt (SMI) by generating an I/O call instruction in a BIOS software SMI call routine; an SMI handler for processing system management interrupts; first logic for detecting the occurrence of a software SMI; second logic to determine, after said first logic has detected the occurrence of a software SMI, which processor in said multi-processor environment has save state information relating to the I/O call instruction which indicates that processor as having initiated the software SMI; and third logic to transfer information between said SMI handler and said processor determined to have initiated the software SMI.
- 28. A multi-processor system as defined in claim 27, wherein said second logic includes third logic for determining if a processor in said multi-processor environment has an EIP′ value in an interrupt save area equal to an offset location where an instruction which immediately follows an I/O call instruction that initiates software SMI's in said BIOS software SMI call routine exists.
- 29. A multi-processor system as defined in claim 28, wherein said second logic includes fourth logic for determining if an EIP value in a processor I/O save state area equals an offset location at which an I/O call instruction that initiates software SMI's in said BIOS software SMI call routine exists.
- 30. A multi-processor system as defined in claim 27, wherein said second logic includes fourth logic for determining if an EIP value in a processor I/O save state area equals an offset location at which an I/O call instruction that initiates software SMI's in said BIOS software SMI call routine exists.
- 31. A computer program product, comprising a computer usable medium having computer readable program code embodied therein to determine which processor in a multi-processor environment initiated a software system management interrupt (SMI) by generating a particular I/O instruction and to provide communication between an SMI handler and that processor, the computer readable program code in the computer program product comprising:first computer readable program code to detect the occurrence of a software SMI; second computer readable program code to designate, after said first computer readable program code means has detected the occurrence of a software SMI, which processor in said multi-processor environment has save state information relating to the particular I/O instruction which indicates that processor as having initiated the software SMI; and third computer readable program code to transfer information between said SMI handler and said processor determined to have initiated the software SMI.
- 32. A computer program product as defined in claim 31, wherein said second computer readable program code means comprises code for determining if a processor in said multi-processor environment has an EIP′ value in an interrupt save state area equal to an offset location where an instruction which immediately follows an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists.
- 33. A computer program product as defined in claim 31, wherein said second computer readable program code means comprises code for determining if an EIP value in a processor I/O save state area equals an offset location at which an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists.
- 34. A computer program product, comprising:a computer usable medium having computer readable program code means embodied therein for determining which processor in a multi-processor environment initiated a software system management interrupt (SMI) and providing communication between an SMI handler and that processor, the computer readable program code means in the computer program product comprising: first computer readable program code means for detecting the occurrence of a software SMI; second computer readable program code means for designating, after said first computer readable program code means has detected the occurrence of a software SMI, a processor in said multi-processor environment as having initiated the software SMI if both of the following tests, in any order, are true: 1) the processor in said multi-processor environment has an EIP′ value in an interrupt save state area equal to an offset location where an instruction which immediately follows an I/O call instruction that initiates software SMI's in a BIOS software SMI call routine exists, and 2) the EIP value in an I/O save state area for the processor equals an offset location at which an I/O call instruction that initiates software SMI's in said BIOS software SMI call routine exists; and transferring information between the SMI handler and said designated processor.
Parent Case Info
This is a Continuation-in-Part application of U.S. application Ser. No. 09/007,539, filed Jan. 15, 1998, abandoned.
US Referenced Citations (6)
Foreign Referenced Citations (2)
Number |
Date |
Country |
0 446 077 |
Sep 1991 |
EP |
0539 313 |
Apr 1993 |
EP |
Non-Patent Literature Citations (1)
Entry |
The TOPAZ Parallel Computing Facility, Ryosuke Itoh et al., Proceedings of the 1990 IEEE Nuclear Science Symposium, US, New York, vol. symp. 1, p. 346-349. |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09/007539 |
Jan 1998 |
US |
Child |
09/164347 |
|
US |