|
Advice Beginners BIOS Guide CPUs Links Mainboards Memory Network Storage Video/Sound Cards Contact Forum SiteMap Sponsors WebNews Home |
. | . |
Prices: Mainboards ABIT ASUS Chaintech Shuttle Soyo Tyan CPU Intel P4 2.4C-800 P4 2.6C-800 P4 2.8C-800 P4 3.0-800 P4 3.2-800 AMD AthlonXP XP 1700+ XP 2000+ XP 2400+ XP 2500+ XP 2700+ XP 3000+ XP 3200+ Athlon64 Athlon64 3200+ Athlon64 FX-51 Opteron Opteron 240 Opteron 242 Opteron 244 Opteron 246 Memory Corsair Crucial Kingston Mushkin OCZ |
|
|
|
LOSTCIRCUITS
|
|
| AMD's Phenom Processor - Beyond Erratum 298 | |
|
(Author: Michael Schuette, January 1, 2008) |
Add Virtualization
The situation gets yet more complex with the introduction of virtualization. In short, virtualization stands for running a plurality of virtual machines simultaneously on the same hardware platform. Why even bother with virtual machines, though, if it is possible to run several instances of applications simultaneously within the same Operating System? The answer is quite simple, in the high-end server environment, there is a need to run different applications under different operating systems at the same time for reduced total cost of ownership (i.e. having dedicated machines for each OS), the prime example is the Oracle + HP configuration, meaning Oracle software running on HP blade servers. An example is illustrated below.
Illustration modified from Anand Vridhagiri, AMD
One example for virtualization: the primary or host operating system of the Real Machine acts as the Hypervisor of the different Guest OS within each of which multiple applications can execute quasi-concurrently. Virtualization can be enabled either in software emulation or else be executed directly in hardware. Software based virtualization can employ different modes of operation like para-virtualization, utilizing modified guest operating systems to match the existing soft and hardware infrastructure. Typically, the guest OS will have to be recompiled to run in Ring 1 whereas the Host OS will enjoy maximum protection of Ring 0. The hypervisor handles the interactions between the Host and the Guest OS whereas the Host OS handles all devices.
In the case of full virtualization, the Host OS is also the Hypervisor and the Guest OS can run unmodified in Ring 1. The Hypervisor intercepts the instructions from the Guest OS and virtualizes the physical devices to work with the various Guest OS.
Illustration modified from Anand Vridhagiri, AMD
Hardware-enabled virtualization does not really need to differentiate between the Host OS and the guest OS with respect to levels of protection, the platform is the hypervisor and creates a Guest Mode for the Guest OS to allow it to run unmodified in Ring 0 together with the Hypervisor which controls device access. The address space number (ASN) mentioned above is used as tag for the TLB to ensure task-specific memory access.
Illustration modified from Anand Vridhagiri, AMD
Using tagged TLBs also allows the nesting of Guest OS page tables within the Host OS page tables instead of treating them as separate entities, thereby reducing the number of memory accesses needed for switching between host and guests.
Illustration modified from Anand Vridhagiri, AMD
What does all of this have to do with Erratum 298 or the bug it describes? The answer is very simple: Only in situations where hardware virtualization is used and there is heavy load on the CPU can there be a race condition where the wrong TLB data may be written to the L3 cache before being updated in the L2 cache. Since the TLBs are used to find the task-specific data within the virtual memory address space, this could lead to updating data in system memory with data that do not pertain to the task at hand but to another cached operation. This is generally referred to as data corruption. Does any of this affect the standard Desktop user? Sure, when hell freezes over. Especially in any situation where Microsoft Vista is used, the entire thing is a completely moot point since the OS will crash a gazillion times before the “Erratum 298” bug is encountered.
![]() (AMD Phenom 9600 2.3GHz (HD9600WCGDBO)) |
next page: => A Knee Jerk and a Bandaid =>
All advice and educational articles on LostCircuits are free, but if you feel you can, please make a small donation to us!