Broadcasting messages between execution slices for issued instructions indicating when execution results are ready
Abstract
Methods and apparatus for transmitting data between execution slices of a multi-slice processor including receiving, by an execution slice, a broadcast message comprising an instruction tag (ITAG) for a producer instruction, a latency, and a source identifier; determining that an issue queue in the execution slice comprises an ITAG for a consumer instruction, wherein the consumer instruction depends on result data from the producer instruction; calculating a cycle countdown using the latency and the source identifier; determining that the cycle countdown has expired; and in response to determining that the cycle countdown has expired, reading the result data from the producer instruction.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A method for transmitting data between execution slices of a multi-slice processor, the method comprising:
receiving, by an execution slice, a broadcast message originating from a source execution slice, the broadcast message comprising an instruction tag (ITAG) for a producer instruction, a latency, and a source identifier;
determining that an issue queue in the execution slice comprises an ITAG for a consumer instruction, wherein the consumer instruction depends on result data from the producer instruction;
calculating a cycle countdown using the latency and the source identifier, including:
obtaining a cycle distance between the execution slice and a location identified by the source identifier, the location corresponding to an address of the source execution slice, wherein obtaining the cycle distance comprises dividing a physical distance between the execution slice and the source execution slice by a distance that the result data is able to traverse each cycle, wherein the cycle distance is a non-zero number of cycles required for the result data to travel from the location identified by the source identifier to the execution slice; and
combining the cycle distance and the latency to obtain the cycle countdown;
determining that the cycle countdown has expired; and
in response to determining that the cycle countdown has expired, reading the result data from the producer instruction.
2. The method of claim 1 , wherein the cycle countdown is stored in an execution result vector by setting a flag corresponding to a value of the cycle countdown.
3. The method of claim 2 , wherein the execution result vector is decremented each cycle by altering a location of the flag corresponding to the value of the cycle countdown.
4. The method of claim 1 , wherein determining that the cycle countdown has expired comprises determining that a flag has been set in a ready vector corresponding to the producer instruction.
5. The method of claim 1 , wherein the result data is transmitted from the source execution slice using a result bus, and wherein reading the result data from the producer instruction comprises reading the result data from the result bus.
6. The method of claim 1 further comprising:
using the result data as input for the consumer instruction.
7. A multi-slice computer processor for transmitting data between execution slices of a multi-slice processor, the multi-slice computer processor configured for:
receiving, by an execution slice, a broadcast message originating from a source execution slice, the broadcast message comprising an instruction tag (ITAG) for a producer instruction, a latency, and a source identifier;
determining that an issue queue in the execution slice comprises an ITAG for a consumer instruction, wherein the consumer instruction depends on result data from the producer instruction;
calculating a cycle countdown using the latency and the source identifier, including:
obtaining a cycle distance between the execution slice and a location identified by the source identifier, the location corresponding to an address of the source execution slice, wherein obtaining the cycle distance comprises dividing a physical distance between the execution slice and the source execution slice by a distance that the result data is able to traverse each cycle, wherein the cycle distance is a non-zero number of cycles required for the result data to travel from the location identified by the source identifier to the execution slice; and
combining the cycle distance and the latency to obtain the cycle countdown;
determining that the cycle countdown has expired; and
in response to determining that the cycle countdown has expired, reading the result data from the producer instruction.
8. The multi-slice computer processor of claim 7 , wherein the cycle countdown is stored in an execution result vector by setting a flag corresponding to a value of the cycle countdown.
9. The multi-slice computer processor of claim 8 , wherein the execution result vector is decremented each cycle by altering a location of the flag corresponding to the value of the cycle countdown.
10. The multi-slice computer processor of claim 7 , wherein determining that the cycle countdown has expired comprises determining that a flag has been set in a ready vector corresponding to the producer instruction.
11. The multi-slice computer processor of claim 7 , wherein the result data is transmitted from the source execution slice using a result bus, and wherein reading the result data from the producer instruction comprises reading the result data from the result bus.
12. The multi-slice computer processor of claim 7 , wherein the multi-slice computer processor is further configured for:
using the result data as input for the consumer instruction.
13. A computing system, the computing system including a multi-slice computer processor for transmitting data between execution slices of a multi-slice processor, the multi-slice computer processor configured for:
receiving, by an execution slice, a broadcast message originating from a source execution slice, the broadcast message comprising an instruction tag (ITAG) for a producer instruction, a latency, and a source identifier;
determining that an issue queue in the execution slice comprises an ITAG for a consumer instruction, wherein the consumer instruction depends on result data from the producer instruction;
calculating a cycle countdown using the latency and the source identifier, including:
obtaining a cycle distance between the execution slice and a location identified by the source identifier, the location corresponding to an address of the source execution slice, wherein obtaining the cycle distance comprises dividing a physical distance between the execution slice and the source execution slice by a distance that the result data is able to traverse each cycle, wherein the cycle distance is a non-zero number of cycles required for the result data to travel from the location identified by the source identifier to the execution slice; and
combining the cycle distance and the latency to obtain the cycle countdown;
determining that the cycle countdown has expired; and
in response to determining that the cycle countdown has expired, reading the result data from the producer instruction.
14. The computing system of claim 13 , wherein the cycle countdown is stored in an execution result vector by setting a flag corresponding to a value of the cycle countdown.
15. The computing system of claim 14 , wherein the execution result vector is decremented each cycle by altering a location of the flag corresponding to the value of the cycle countdown.
16. The computing system of claim 13 , wherein determining that the cycle countdown has expired comprises determining that a flag has been set in a ready vector corresponding to the producer instruction.
17. The computing system of claim 13 , wherein the result data is transmitted from the source execution slice using a result bus, and wherein reading the result data from the producer instruction comprises reading the result data from the result bus.Join the waitlist — get patent alerts
Track US10445100B2 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.