Broadcasting messages between execution slices for issued instructions indicating when execution results are ready
First Claim
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.
1 Assignment
0 Petitions
Accused Products
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.
14 Citations
17 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
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. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
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. - View Dependent Claims (14, 15, 16, 17)
-
Specification