Will We Be Stuck With 32 Bit Apps For The Next Decade?

Posted by on May 15, 2009 | 4 Comments

I was over at InformationWeek reading an article about Windows 7 to boost Hyper-Threading support. A senior VP for Windows development stated the following:

“The work that we’ve done in Windows 7 in the scheduler and the core of the system to take full advantage of those capabilities, ultimately we think we can deliver a great and better experience for you,” said Veghte, speaking earlier this week at Microsoft’s TechEd conference in Los Angeles.

Windows 7′s improved hyper-threading support could be good news for users of processor-intensive applications, such as 3-D games and graphics programs.

Sounds good on paper. But there is just one small problem. The article goes on to state that:

The catch is that the applications themselves must be written in such a way as to take advantage of hyper-threading. To date, only a small percentage of apps include that capability.

Which made me think. Isn’t this the same problem with 64 bit? 64 bit has been around since 2003 for personal computers. Yet we have seen little enthusiasim for consumer applications to take advantage of 64 bit.

So what do you think? Is it time for full hyper-threading support and full 64 bit support?

Comments welcome.

Source.

  • Stefan

    HyperThreading, when you get down to it, is basically multithreading done for a single CPU. Its pretend dual core so that you can try and use every ounce of performance a core has got.

    But, like 64-bit, its only really applicable in certain situations, and thats the important part. Games, 3D apps and media creation tools all get big gains from multithreading for dual and quad cores. So working that multithreaded code in a way that it can also be leveraged for HyperThreading will get you an extra ounce of performance (though not as much as an extra core). Applying this to, say, Word or Firefox doesnt make as much sense, because they arent pushing the CPU as hard so dont need the extra clocks.

    64-bit, though also with limited real world advantages, is really just being held back by Microsoft themselves. Apple have led the way with 64-bit support being progressively built into OSX since 10.3 and the G5′s introduction, but in contrast to MS, they did it almost seamlessly. 32-bit apps will run in a 64-bit environment alongside native apps, just as PPC code will run along side intel code. That MS are still splitting the user base by having so many versions of Windows and then each of those versions in 32-bit and 64-bit is just plain stupid. They could mix 32-bit in with 64-bit and save everyone a heck of a lot of hassle whilst maintaining legacy code etc. etc. , but they simply havent.

    Apple did this right, and to be honest I dont actually know which apps in OSX are 32-bit or 64-bit unless I look it up, which is surely the way it should be.

  • http://wp3.lockergnome.com/nexus/theoracle/ the oracle

    The main problem with multithreading is that it is difficult to do on a mass basis. It is asking applications to do what the operating system, up until Windows 95, could not do well, which is play nicely with each other. Multithreading is essentially a way for parts of the application to share processor time, cooperatively, so that more can get done with less wasted CPU cycles. A fantastic idea, but difficult for humans to code. We are just beginning to get compilers that are somewhat good at prioritizing threads, but still the best way for applications to work is by brute forcing the execution of threads, not by any building in of , in a sense, an AI component, to figure out, on the fly, how things should progress. Not only is this something that is difficult conceptually, it would result in huge file sizes.

    64 bit applications are really not needed for most people, as they don’t deal with information sizes that would challenge the current sizes of addressable memory, or actual file size. Because designers have learned how to not impose artificial barriers upon the processor, it is not a problem for a 64 bit processor to juggle 32 bit applications in the same way that gave 32 bit Windows a problem juggling 16 bit applications. The flat memory map, instead of segmentation makes this so.

    Hyperthreading is a method of multithreading peculiat to Intel processors, which is not always useful in achieving more work. In certain cases it can work against the machine to have hyperthreading enabled. Many times it has been shown that it was much more an Intel marketing ‘feature’ (read trick) than something useful. It also excludes all other processor designs, and requires special compilers for the program to be able to take advantage of the hyperthreading features.

  • http://wp3.lockergnome.com/nexus/theoracle/ the oracle

    When I said that most people don’t bump up against memory limitations, I meant to state that this is on a per application and per file basis. In the case of the operating system, it is quite advantageous to have a 64 bit processor and more than 4 GB of total addressable space, to the total number of applications running as a whole. But the 64 bit processor, with much more memory allocatable, can do very nicely running many 32 bit applications simultaneously.

  • Ryan Farmer

    Actually in 2003, Linux was the only operating system native to X86-64, it wasn’t until 2005 iirc that XP Professional x64 shipped, and only limited availability.

    On Windows this lack of 64-bit apps is a problem, on Mac not so much, and on Linux and the BSDs, not a problem at all. (as the distribution compiles tens of thousands of application packages themselves on Linux, and all software bundled with the Mac is actually something you’ll want to use)

    Microsoft obviously has no control over what people do when they make software for Windows, and Microsoft obviously has a conflict of interest with things like Windows Media Player, and so it will probably never play industry standard formats other than MP3.

    Most 3rd party software reckons that 98% of Windows users got stiffed with 32-bit Windows, and the 2% left can run it in the backwards compatibility subsystem (WOW64) and be happy.

    As for hyperthreading, that helped the Pentium 4 largely because it was such an insipid little clock cycle waster, I’d imagine it would either do little, nothing, or hurt performance if tried on a decent processor.

    My vote is:

    Windows will remain a patchwork of inconsistent crap and 3rd party bolt-on functionality that does god knows what. Just off the top of my head :)