US 9,811,340 B2
Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
Nikolay Kosarev, Yoshkar-Ola (RU); Jayesh Iyer, Bangalore (IN); Sergey Shishlov, Moscow (RU); Andrey Kluchnikov, Moscow (RU); Alexander Butuzov, Moscow (RU); Boris A. Babayan, Moscow (RU); Vladimir Penkovski, Folsom, CA (US); and Sergey V. Bulenkov, Moscow (RU)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Nikolay Kosarev, Yoshkar-Ola (RU); Jayesh Iyer, Bangalore (IN); Sergey Shishlov, Moscow (RU); Andrey Kluchnikov, Moscow (RU); Alexander Butuzov, Moscow (RU); Boris A. Babayan, Moscow (RU); Vladimir Penkovski, Folsom, CA (US); and Sergey V. Bulenkov, Moscow (RU)
Filed on Jun. 18, 2012, as Appl. No. 13/525,825.
Prior Publication US 2013/0339711 A1, Dec. 19, 2013
Int. Cl. G06F 9/38 (2006.01); G06F 9/32 (2006.01)
CPC G06F 9/38 (2013.01) [G06F 9/321 (2013.01); G06F 9/3834 (2013.01); G06F 9/3851 (2013.01); G06F 9/3855 (2013.01)] 21 Claims
OG exemplary drawing
 
1. A computer system that is configured to perform the following:
dividing a set of computer instructions arranged in a sequential program order into a plurality of instruction sequences, wherein instructions within each sequence are arranged and executed according to the program order, but executed out-of-order relative to instructions in other sequences;
assigning increment values to individual program-ordered (PO) instructions in each sequence, wherein each increment value is equal to a difference between a program order value of a subsequent PO instruction in the sequence and a program order value of the PO instruction, and wherein the increment value is encoded into the PO instruction; and
at a processor of the system, reconstructing the program order of instructions in each sequence relative to the program order of instructions in the other sequences by:
calculating the program order value of PO instructions based on the program order value and the increment value of a preceding PO instruction in the same sequence, wherein the calculating is repeated for each sequence, and
setting the program order value of non-PO instructions to the calculated program order value of a next PO instruction.