Propagation of updates to per-core-instantiated architecturally-visible storage resource
First Claim
1. A microprocessor, comprising:
- a plurality of processing cores, wherein each of the plurality of processing cores instantiates a respective architecturally-visible storage resource;
wherein a first core of the plurality of processing cores is configured to;
encounter an architectural instruction that instructs the first core to update the respective architecturally-visible storage resource of the first core with a value specified by the architectural instruction; and
in response to encountering the architectural instruction;
provide the value to each of the other of the plurality of processing cores; and
update the respective architecturally-visible storage resource of the first core with the value; and
wherein each core of the plurality of processing cores other than the first core is configured to update the respective architecturally-visible storage resource of the core with the value provided by the first core without encountering the architectural instruction;
wherein the architecturally-visible storage resource comprises an x86 architecture memory type range register (MTRR);
wherein the MTRR comprises an x86 architecture variable range MTRR comprising a base register and a mask register, wherein the mask register includes a valid bit;
wherein the first core, in response to encountering the architectural instruction, is further configured to;
if the architectural instruction specifies the mask register;
provide a current value of the base register of the first core to each of the other of the plurality of processing cores and set a flag readable by each of the other of the plurality of processing cores;
if the architectural instruction specifies the base register and the valid bit of the mask register of the first core is currently set;
provide a current value of the mask register of the first core to each of the other of the plurality of processing cores and set the flag; and
otherwise;
clear the flag; and
wherein to update the value, each of the plurality of processing cores updates both the base register and the mask register if the flag is set, and otherwise update only the base register or mask register as specified by the architectural instruction.
1 Assignment
0 Petitions
Accused Products
Abstract
A microprocessor a plurality of processing cores, wherein each of the plurality of processing cores instantiates a respective architecturally-visible storage resource. A first core of the plurality of processing cores is configured to encounter an architectural instruction that instructs the first core to update the respective architecturally-visible storage resource of the first core with a value specified by the architectural instruction. The first core is further configured to, in response to encountering the architectural instruction, provide the value to each of the other of the plurality of processing cores and update the respective architecturally-visible storage resource of the first core with the value. Each core of the plurality of processing cores other than the first core is configured to update the respective architecturally-visible storage resource of the core with the value provided by the first core without encountering the architectural instruction.
-
Citations
20 Claims
-
1. A microprocessor, comprising:
-
a plurality of processing cores, wherein each of the plurality of processing cores instantiates a respective architecturally-visible storage resource; wherein a first core of the plurality of processing cores is configured to; encounter an architectural instruction that instructs the first core to update the respective architecturally-visible storage resource of the first core with a value specified by the architectural instruction; and in response to encountering the architectural instruction; provide the value to each of the other of the plurality of processing cores; and update the respective architecturally-visible storage resource of the first core with the value; and wherein each core of the plurality of processing cores other than the first core is configured to update the respective architecturally-visible storage resource of the core with the value provided by the first core without encountering the architectural instruction; wherein the architecturally-visible storage resource comprises an x86 architecture memory type range register (MTRR); wherein the MTRR comprises an x86 architecture variable range MTRR comprising a base register and a mask register, wherein the mask register includes a valid bit; wherein the first core, in response to encountering the architectural instruction, is further configured to; if the architectural instruction specifies the mask register; provide a current value of the base register of the first core to each of the other of the plurality of processing cores and set a flag readable by each of the other of the plurality of processing cores; if the architectural instruction specifies the base register and the valid bit of the mask register of the first core is currently set; provide a current value of the mask register of the first core to each of the other of the plurality of processing cores and set the flag; and otherwise; clear the flag; and wherein to update the value, each of the plurality of processing cores updates both the base register and the mask register if the flag is set, and otherwise update only the base register or mask register as specified by the architectural instruction. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method to be performed in a microprocessor having a plurality of processing cores, wherein each core of the plurality of processing cores instantiates a respective architecturally-visible storage resource, the method comprising:
-
encountering, by a first core of the plurality of processing cores, an architectural instruction that instructs the first core to update the respective architecturally-visible storage resource of the first core with a value specified by the architectural instruction; providing, by the first core, the value to each of the other of the plurality of processing cores, in response to said encountering the architectural instruction; updating, by the first core, the respective architecturally-visible storage resource of the first core with the value, in response to said encountering the architectural instruction; and updating, by each core of the other of the plurality of processing cores than the first core, the respective architecturally-visible storage resource of the core with the value provided by the first core without encountering the architectural instruction; wherein the architecturally-visible storage resource comprises an x86 architecture memory type range register (MTRR); wherein the MTRR comprises an x86 architecture variable range MTRR comprising a base register and a mask register, wherein the mask register includes a valid bit; wherein, in response to encountering the architectural instruction, by the first core; if the architectural instruction specifies the mask register; providing a current value of the base register of the first core to each of the other of the plurality of processing cores and setting a flag readable by each of the other of the plurality of processing cores; if the architectural instruction specifies the base register and the valid bit of the mask register of the first core is currently set; providing a current value of the mask register of the first core to each of the other of the plurality of processing cores and setting the flag; and otherwise; clearing the flag; and wherein said updating the value comprises, by each of the plurality of processing cores, updating both the base register and the mask register if the flag is set, and otherwise updating only the base register or mask register as specified by the architectural instruction. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A computer program product encoded in at least one non-transitory computer usable medium executed by a computing device, the computer program product comprising:
-
computer usable program code embodied in said non-transitory computer usable medium, for specifying a microprocessor for specifying a plurality of processing cores, wherein each of the plurality of processing cores instantiates a respective architecturally-visible storage resource; wherein a first core of the plurality of processing cores is configured to; encounter an architectural instruction that instructs the first core to update the respective architecturally-visible storage resource of the first core with a value specified by the architectural instruction; and in response to encountering the architectural instruction; provide the value to each of the other of the plurality of processing cores; and update the respective architecturally-visible storage resource of the first core with the value; and wherein each core of the plurality of processing cores other than the first core is configured to update the respective architecturally-visible storage resource of the core with the value provided by the first core without encountering the architectural instruction; wherein the architecturally-visible storage resource comprises an x86 architecture memory type range register (MTRR); wherein the MTRR comprises an x86 architecture variable range MTRR comprising a base register and a mask register, wherein the mask register includes a valid bit; wherein the first core, in response to encountering the architectural instruction, is further configured to; if the architectural instruction specifies the mask register; provide a current value of the base register of the first core to each of the other of the plurality of processing cores and set a flag readable by each of the other of the plurality of processing cores; if the architectural instruction specifies the base register and the valid bit of the mask register of the first core is currently set; provide a current value of the mask register of the first core to each of the other of the plurality of processing cores and set the flag; and otherwise; clear the flag; and wherein to update the value, each of the plurality of processing cores updates both the base register and the mask register if the flag is set, and otherwise update only the base register or mask register as specified by the architectural instruction.
-
Specification