Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: XP on newer CPUs, Instruction Set / CPU feature support list?  (Read 6911 times)

0 Members and 1 Guest are viewing this topic.

DaveLembke

    Topic Starter


    Sage
  • Thanked: 662
  • Certifications: List
  • Computer: Specs
  • Experience: Expert
  • OS: Windows 10
Was wondering if anyone knew of a list that shows what instruction sets / CPU features Windows XP 32-bit supports or doesnt support?

Back many years ago when I was still running Windows 2000 Pro about 11 years ago, I ran into an issue with Pentium 4 HT ( Hyperthreading CPU's ) running Win 2000 in which for some reason it only showed 1 core and no HT virtual core. The system otherwise ran completely fine, but seemed slower, but just wasnt able to take full advantage of the Pentium 4 3.0Ghz HT CPU's features similar to comments that people posted here with issues with 2000 Pro and HT Pentium 4's http://www.theinquirer.net/inquirer/news/1002644/windows-2000-and-the-hyperthreading-nightmare.

Looking at google, I havent found a list yet, but I would have expected to find maybe a matrix that shows Windows OS's and + and - for instruction sets that are supported and not supported by OS etc.  :-\

I was thinking about testing out Windows XP Pro SP3 on my new Sempron 3850 Kabini 1.3Ghz quadcore  http://www.newegg.com/Product/Product.aspx?Item=N82E16819113366  to see how it runs, but this CPU being very new running an old OS, I am thinking that Windows XP might only use some but not all instruction sets maybe.  :-\






BC_Programmer


    Mastermind
  • Typing is no substitute for thinking.
  • Thanked: 1140
    • Yes
    • Yes
    • BC-Programming.com
  • Certifications: List
  • Computer: Specs
  • Experience: Beginner
  • OS: Windows 11
Re: XP on newer CPUs, Instruction Set / CPU feature support list?
« Reply #1 on: May 30, 2015, 10:06:57 PM »
Instruction Sets are not necessary CPU features. For example, Hyperthreading is not part of any instruction set, but is rather a CPU feature which allows a single core with two execution units to be perceived to the system as if it was two cores.

All Versions of Windows 2000 would interpret a CPU with Hyperthreading as two logical cores. The issues surrounding Windows 2000 and hyper-threading are because Windows 2000 didn't know that it was actually a Virtual core, and as a result treated it just like a logical CPU core. This caused performance degradation, in general, because the two "Cores" were really just separate execution units which shared a lot of cache and prefetch information.

The problem you saw (where only one CPU was visible) was because the HAL was still the single-processor HAL. You can change that as documented here. I believe Windows XP might have similar requirements.

This hyperthreading issue was fixed with Service pack 5 of Windows 2000 and both the Home and Pro Versions of Windows XP understand virtual cores and will schedule processes and threads differently based on whether they are virtual or logical CPUs and what logical Cores a virtual core is tied to in order to improve performance. Generally, Operating Systems only add "support" for CPU Features when it actually affects how the OS or the Kernel should function. For example, Hyper-threading is "supported" in the sense that the Kernel now needs to consider differences between Hyper-threaded "virtual" cores and actual CPU cores when it comes to scheduling thread affinity or face a significant performance penalty.

Support for Instruction Sets such as SSE/SSE2/MMC etc. tends to fall on individual programs. MMX instructions, for example, aren't very useful for a OS Kernel to support, since they are designed for Multimedia features. Any program running on a MMX-capable CPU can use MMX instructions as long as the CPU is operating in a 32-bit mode or a 32-bit compatible mode. Certain instruction sets require different Operating modes.

By that token, an Operating System's "Support" for instruction sets is really just determined by what CPU mode it operates in. In the case of Windows XP (excepting the special x64 version) that means 32-bit protected mode. This means that software running on the OS can use any 32-bit instruction set supported by the CPU, but even if the software supported it, it would not be able to execute any 64-bit instructions.

For example, in the case of the Sempron, it is a 64-bit CPU. Since you would be running XP, Every single 64-bit instruction set is "off-limits" because it requires 64-bit Long mode. According to the specsheet it supports MMX, MMX Extensions (Multimedia Extensions Extensions... heh...) SSE,SSE2,SSE3,SSE4/4.1/4.2/4.3,AES,AVX,BMI1,F16C,AMD64,EVP,AMD-V and likely a few others. many of those likely require 64-bit Long Mode in order to function, and some may have functionality that is only present in 64-bit modes. Any of that functionality will be locked out to you and any software you run if you are running a 32-bit OS.
I was trying to dereference Null Pointers before it was cool.

DaveLembke

    Topic Starter


    Sage
  • Thanked: 662
  • Certifications: List
  • Computer: Specs
  • Experience: Expert
  • OS: Windows 10
Re: XP on newer CPUs, Instruction Set / CPU feature support list?
« Reply #2 on: May 31, 2015, 10:54:59 AM »
Thanks for all the info BC

As well as Regarding this, I just realized with info you shared as to why I ran into problem I did..
Quote
The problem you saw (where only one CPU was visible) was because the HAL was still the single-processor HAL. You can change that as documented here. I believe Windows XP might have similar requirements.

This problem showed up after a normal socket 478 Pentium 4 2.4Ghz to socket 478 Pentium 4 3Ghz HT upgrade, when Windows 2000 Pro SP4 was already built to the original CPU, that I experienced this problem and I forgot all about the HAL and how the initial build would have seen 1 core and how after the CPU upgrade to a HT CPU, the HAL is not adjusted and was still configured from the initial build as a single core and so no virtual core of the HT would be detected. Back in the day I used this problem as an excuse to get my boss to allow me to buy a new copy of XP Pro to upgrade to which fixed the problem of that missing virtual core.  ;D When finding others with the issue of HT support not working so hot, I thought it was 2000 Pro that had the issue and after all this time I thought that until you shared that info about the HAL and it makes total sense.  :-[ Its kind of embarrassing that I didnt think of that then, but when I read up on others having issue with 2000 and HT CPU's, I assumed it was a OS support issue with the newer HT CPU's.


As far as
Quote
This hyperthreading issue was fixed with Service pack 5 of Windows 2000 and both the Home and Pro Versions of Windows XP understand virtual cores and will schedule processes and threads differently based on whether they are virtual or logical CPUs and what logical Cores a virtual core is tied to in order to improve performance.

I never heard of SP5 for NT5 ( 2000 ). But just did a google search https://www.google.com/?gws_rd=ssl#q=windows+2000+sp5   and found an unofficial SP5 sort of like how there is an unofficial SP4 for Windows XP out there.

Mainly out of curiosity I will be testing out XP on the Kabini CPU platform. But prior to doing this I figured I would check on some info. Looking ahead, I might have to make a slipstream to have the SATA drive support since the Gigabyte AM1 motherboard only has 2 x SATA ports and I have run into issues before with XP booting from the SATA drive, but upon install not finding the HDD because the SATA controller driver is not there such as in some laptops that came with XP and have SATA and you then have to make a slipstream to nest the SATA controller driver into the install media to detect a SATA HDD to install to.