Claims
- 1. In a computer system partitioned into a sending domain and a receiving domain, the sending domain and the receiving domain each having a processor node, an I/O node, and a memory node communicatively coupled through an interconnect, a method for message passing between domains, comprising:
writing a cache-line size request to a memory-mapped input/output (MMIO) window in an address space of the sending domain, the request including an address; comparing a portion of the address with a base register, wherein the base register indicates where the MMIO window starts in the address space of the sending domain; responsive to the portion of the address matching the base register:
decoding the receiving domain; and transmitting the cache-line size request from the sending domain to the receiving domain.
- 2. The method of claim 1, further comprising combining internally a plurality of processor write requests in the cache-line sized write request using a write combining mechanism.
- 3. In a computer system comprising a sending domain and a receiving domain, the sending domain and the receiving domain each includes a plurality of CPU nodes, each CPU node communicatively coupled to at least one processor cache memory, a method for providing an in-memory notification when a cache-line sized message arrives in the receiving domain, the method comprising repeatedly performed steps of:
receiving the cache-line sized message; acquiring exclusive ownership of a next cache line entry in a message receive buffer residing in the receiving domain; modifying a cyclic count field in the received cache-line sized message; writing the received cache-line size message to the exclusively owned cache line entry in the message receive buffer; polling the cyclic count field of the received cache line to detect a continuation of the cyclic sequence; issuing a miss in the at least one processor cache memory; installing the received cache-line sized message in the at least one processor cache memory; and polling the cyclic count field of the installed cache-line sized message in the at least one processor cache memory to notify when the last message is written in the message receive buffer.
- 4. The method of claim 3, wherein the last message written in the message receive buffer is detected when a cyclic sequence of the cyclic count field in sequentially addressed cache lines is broken.
- 5. The method of claim 3, wherein the step of inserting a cyclic counter further comprises overwriting the cyclic counter field with a new value when a new cache line sized message is written in the message receive buffer.
- 6. The method of claim 3, wherein the cyclic counter is a modulo N counter, wherein N is prime with respect to a number of cache lines in the message receive buffer.
- 7. The method of claim 3, further comprising:
checking the cache-line sized message for error using error correction code (ECC); writing the cache-line sized message to a holding FIFO unit; and regenerating the ECC code.
- 8. A computer system for sending a plurality of messages between a sending domain and a receiving domain connected by an interconnect, wherein each domain comprises:
a plurality of CPUs, each CPU for issuing a plurality of cache-line sized writes; a sending engine residing in the sending domain, for launching the plurality of cache-line sized writes to the receiving domain; and a receiving engine residing in the receiving domain for writing the cache-line size writes to a message receive buffer residing in a coherent space of the receiving domain.
- 9. The system of claim 8, wherein each CPU causes a plurality of cache-line sized writes using a write combining attribute.
- 10. The system of claim 8, wherein the sending engine decodes a destination domain prior to launching the cache-line size message to the receiving domain.
- 11. The system of claim 8, wherein the receiving engine invalidates an existing copy of the message receive buffer cache line in a processor cache before writing the message to the message receive buffer.
- 12. The system of claim 8, wherein each CPU issues the cache-line sized write to a memory mapped input/output (MMIO) window, and wherein an address used to access the MMIO window comprises:
a domain field for indicating the receiving domain decoded by the sending engine when the cache-line sized message is written to the MMIO.
- 13. The system of claim 8, wherein each CPU issues the cache-line sized write to a MMIO window, and wherein an address used to access the MMIO window comprises:
a size field indicating a number of cache lines that can be written into the MMIO window.
- 14. The system of claim 8, wherein the message receive buffer stores 2W cache lines, and wherein the number of stored cache lines is prime with respect to the modulus of a cyclic counter.
RELATED APPLICATION
[0001] This application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application No. 60/301,953, filed Jun. 28, 2001, and entitled “SYSTEM AND METHOD FOR LOW OVERHEAD MESSAGE PASSING BETWEEN DOMAINS IN A PARTITIONED SERVRER” by Patrick N. Conway, Jeremy J. Farrell, Kazunori Masuyama, Takeshi Shimizu, and Sudheer Miryala, which is incorporated by reference herein in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60301953 |
Jun 2001 |
US |