IP Library › Granted Patent US 7,827,390
Granted Patent B2
US 7,827,390 · App. 12/034,503 · Granted Nov 2, 2010

Microprocessor with private microcode RAM

Assignee: VIA Technologies, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,827,390
App. No.
12/034,503
Granted
Nov 2, 2010
Kind
B2
Abstract

A microprocessor includes a private RAM (PRAM), for use by microcode, which is non-user-accessible and within its own distinct address space from the system memory address space. The PRAM is denser and slower than user-accessible registers of the microprocessor macroarchitecture, thereby enabling it to provide significantly more storage for microcode. The microinstruction set includes a microinstruction for loading data from the PRAM into the user-accessible registers, and a microinstruction for storing data from user-accessible registers to the PRAM. The microcode may also use the two microinstructions to load/store between the PRAM and non-user-accessible registers of the microarchitecture. Examples of PRAM uses include: computational temporary storage area; storage of x86 VMX VMCS in response to VMREAD and VMWRITE macroinstructions; instantiation of non-user-accessible storage, such as the x86 SMBASE register; and instantiation of x86 MSRs that tolerate the additional access latency of the PRAM, such as the IA32_SYSENTER_CS MSR.

Claims (64)

1. A microprocessor, comprising:

a user-accessible register set;

a random access memory (RAM), within a non-user-accessible address space of the microprocessor, wherein said RAM is denser than said user-accessible register set and is slower to access than said user-accessible register set; and

microcode, comprising a plurality of microinstructions of a microinstruction set of the microprocessor, said microinstruction set comprising:

a first microinstruction, executable for storing data from said user-accessible register set to said RAM; and

a second microinstruction, executable for loading data from said RAM to said user-accessible register set.

2. The microprocessor as recited in claim 1 , wherein said user-accessible register set comprises an x86 architecture user-accessible register set.

3. The microprocessor as recited in claim 1 , further comprising:

a non-user-accessible register set, wherein said non-user-accessible register set is less dense than said RAM and is faster to access than said RAM;

wherein said first microinstruction is further executable for storing data from said non-user-accessible register set to said RAM, and said second microinstruction is further executable for loading data from said RAM to said non-user-accessible register set.

4. The microprocessor as recited in claim 3 , wherein said microcode is configured to execute one or more of said first microinstruction to store a portion of an x86 architecture virtual-machine extensions (VMX) virtual machine control structure (VMCS) to said RAM in response to a VMX VMWRITE instruction.

5. The microprocessor as recited in claim 3 , wherein said microcode is configured to execute one or more of said second microinstruction to load a portion of an x86 architecture virtual-machine extensions (VMX) virtual machine control structure (VMCS) from said RAM in response to a VMX VMREAD instruction.

6. The microprocessor as recited in claim 3 , wherein said microcode is configured to execute one or more of said first microinstruction to store a system management mode base address (SMBASE) to said RAM in response to an x86 architecture RSM instruction.

7. The microprocessor as recited in claim 3 , wherein said microcode is configured to execute one or more of said second microinstruction to load a system management mode base address (SMBASE) from said RAM in response to an x86 architecture system management interrupt (SMI).

8. The microprocessor as recited in claim 1 , wherein said microcode is configured to execute one or more of said first microinstruction to store a segment selector for a privilege level 0 code segment value to said RAM in response to an x86 architecture WRMSR instruction specifying an x86 architecture IA32_SYSENTER_CS Model Specific Register (MSR) as a destination MSR.

9. The microprocessor as recited in claim 1 , wherein said microcode is configured to execute one or more of said second microinstruction to load a segment selector for a privilege level 0 code segment value from said RAM in response to an x86 architecture RDMSR instruction specifying an x86 architecture IA32_SYSENTER_CS Model Specific Register (MSR) as a source MSR.

10. The microprocessor as recited in claim 1 , wherein said microcode is configured to execute said first and second microinstructions to use said RAM as a temporary storage area for computations performed by said microcode.

11. The microprocessor as recited in claim 1 , wherein said non-user-accessible address space is a non-translated address space.

12. The microprocessor as recited in claim 1 , wherein said non-user-accessible address space is a non-cached address space.

13. The microprocessor as recited in claim 1 , wherein the microprocessor generates no accesses on a bus external to the microprocessor in response to accesses by said microcode instructions to said non-user-accessible address space.

14. The microprocessor as recited in claim 1 , wherein said RAM is integrated onto a same semiconductor substrate as other circuits of the microprocessor.

15. The microprocessor as recited in claim 1 , wherein said RAM requires at least twice as much time to access as said user-accessible register set.

16. The microprocessor as recited in claim 1 , wherein said RAM is at least twice as dense as said user-accessible register set.

17. A method for efficiently storing data within a microprocessor, the method comprising:

executing a first microcode instruction, by storing data from a user-accessible register set of the microprocessor to a random access memory (RAM) of the microprocessor, wherein said RAM is within a non-user-accessible address space of the microprocessor, wherein said RAM is denser than said user-accessible register set and is slower to access than said user-accessible register set; and

executing a second microcode instruction, by loading data from said RAM to said user-accessible register set, wherein said first and second microinstructions are two of a plurality of microinstructions of a microinstruction set of the microprocessor.

18. The method as recited in claim 17 , wherein said user-accessible register set comprises an x86 architecture user-accessible register set.

19. The method as recited in claim 17 , further comprising:

executing said first microinstruction, by storing data from a non-user-accessible register set to said RAM, wherein said non-user-accessible register set is less dense than said RAM and is faster to access than said RAM; and

executing said second microinstruction, by loading data from said RAM to said non-user-accessible register set.

20. The method as recited in claim 19 , further comprising:

decoding an x86 architecture virtual-machine extensions (VMX) VMWRITE instruction; and

executing one or more of said first microinstruction to store a portion of a VMX virtual machine control structure (VMCS) to said RAM, in response to said decoding.

21. The method as recited in claim 19 , further comprising:

decoding an x86 architecture virtual-machine extensions (VMX) VMX VMREAD instruction; and

executing one or more of said second microinstruction to load a portion of a VMX virtual machine control structure (VMCS) from said RAM, in response to said decoding.

22. The method as recited in claim 19 , further comprising:

decoding an x86 architecture RSM instruction; and

executing one or more of said first microinstruction to store a system management mode base address (SMBASE) to said RAM, in response to said decoding.

23. The method as recited in claim 19 , further comprising:

receiving an x86 architecture system management interrupt (SMI); and

executing one or more of said second microinstruction to load a system management mode base address (SMBASE) from said RAM, in response to said receiving.

24. The method as recited in claim 17 , further comprising:

decoding an x86 architecture WRMSR instruction specifying an x86 architecture IA32_SYSENTER_CS Model Specific Register (MSR) as a destination MSR; and

executing one or more of said first microinstruction to store a segment selector for a privilege level 0 code segment value to said RAM, in response to said decoding.

25. The method as recited in claim 17 , further comprising:

decoding an x86 architecture RDMSR instruction specifying an x86 architecture IA32_SYSENTER_CS Model Specific Register (MSR) as a source MSR; and

executing one or more of said second microinstruction to load a segment selector for a privilege level 0 code segment value from said RAM, in response to said decoding.

26. The method as recited in claim 17 , further comprising:

executing said first and second microinstructions to use said RAM as a temporary storage area for microcode computations.

27. A computer program product for use with a computing device, the computer program product comprising:

a computer usable storage medium, having computer readable program code embodied in said medium, for providing a microprocessor, said computer readable program code comprising:

first program code for providing a user-accessible register set;

second program code for providing a random access memory (RAM),

within a non-user-accessible address space of the microprocessor,

wherein said RAM is denser than said user-accessible register set and is slower to access than said user-accessible register set; and

third program code for providing microcode, comprising a plurality of microinstructions of a microinstruction set of the microprocessor,

said microinstruction set comprising:

a first microinstruction, executable for storing data from said user-accessible register set to said RAM; and

a second microinstruction, executable for loading data from said RAM to said user-accessible register set.

28. The computer program product as recited in claim 27 , said computer readable program code further comprising:

fourth program code for providing a non-user-accessible register set, wherein said non-user-accessible register set is less dense than said RAM and is faster to access than said RAM;

wherein said first microinstruction is further executable for storing data from said non-user-accessible register set to said RAM, and said second microinstruction is further executable for loading data from said RAM to said non-user-accessible register set.

29. The computer program product as recited in claim 28 , wherein said microcode is configured to execute one or more of said first microinstruction to store a portion of an x86 architecture virtual-machine extensions (VMX) virtual machine control structure (VMCS) to said RAM in response to a VMX VMWRITE instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2008
From: HENRY, G. GLENN; EDDY, COLIN; HOOKER, RODNEY E.; PARKS, TERRY
To: VIA TECHNOLOGIES, INC.
Reel/Frame 020671/0246 →
Continuity (2)
Provisional Application 6091098200 · Apr 10, 2007
Related Publication 20080256336A1 · Oct 16, 2008