Ned’s BigFaT Blog!

August 11, 2005

Holy Vista Batman!

Filed under: Uncategorized — makfu @ 5:39 am

Once again, it’s been a while since I posted, but a lot has been going on work-wise, so it’s been hard to find time to blog.

First off, I have made Windows Vista Beta 1 my primary day to day OS. I am currently running it on two of my systems (with a dual boot to XP, as from time to time, one must run a supported OS). The two machines are my HP NC8230 (1.8Ghz P-m with 1.5 GB of RAM w/64 MB ATI X600) and my Alienware box (3.0Ghz HT P4 w 2 GB RAM w/256 MB Nvidia GF6800).

I will start with the bad points of Vista Beta 1: it’s a royal pain in the ass to get installed and working correctly. The beta shipped with few usable drivers, and while LDDM (longhorn display driver model) drivers are available for both video chipsets in question, the sound support was a different story altogether. In the case of my HP, I was able to install the XP soundmax drivers after some fiddling. With the Alienware (which has an Audigy 2) it was a total nightmare getting some semblance of working sound. I eventually had to resort to some free drivers XP drivers from the KX project (http://kxproject.lugosoft.com/index.php?skip=1). These drivers only provide 2 channel support, but I can live with that as I only have a 2.1 setup. Furthermore, you can forget about DirectX sound, as the entire DirectX subsystem is, functionally, in totally disarray in Beta 1. Nevertheless, I now have, after anything but a plug and play experience, two relatively working Vista boxes.

So what’s to like about Vista? A lot! Forget what the naysayers and wannabes say, Vista is a big deal. I will start with the most obvious point of interest, which is the new windowing subsystem (and underlying graphics and driver model). Thanks to the compositing display engine that is core to the window manager, Vista sports a pretty impressive interface (provided you have LDDM enabled drivers). By now, you have probably seen the screenshots of Aero Glass, so I wont bore you with a repeat of what it looks like. What is really interesting though is that, when using the new windowing subsystem, the actual engine runs in a usermode process named uxss.exe (which stands for User Experience Subsystem). Among other interesting aspects of this process is a usermode LDDM display driver component and the fact that the entire subsystem can fail and restart or even, when requested to by the OS (for certain application specific instances) shutdown – thus reverting the system (on the fly) to the legacy display model.

Needless to say, this behavior is very interesting. For one thing, moving a large part of the windowing engine back to usermode is a 180 degree turnaround from current NT 4 and NT 5.x display model. Even more interesting is that a whole new device driver model, called the Usermode Driver Framework has been introduced with the Longhorn generation of the NT codebase. Without getting overly detailed, the UDF allows for a substantial portion of a device driver to run as one or more threads in a usermode process.

Now, for those of you who are old NT-heads, what you must be thinking is “gee, that sounds very Microkernelish”. Indeed, I believe it is nothing short of a breathtaking change of direction BACK to the original microkernel design direction NT started out in. Having drivers, window subsystems, etc., running in usermode “servers” as they would be called in microkernel terminology, is straight out of the microkernel design cookbook. Now, obviously, NT even in Vista’s case is hardly a pure microkernel design, but it certainly is a fascinating and significant development in the ongoing story of the NT OS lineage.

But I digress, back to question at hand, is Vista any good? From a day to day standpoint, despite being beta 1, I have found Vista surprising good. I am genuinely surprised out how much of the system works, even at this stage. The beta is quite stable (once, and if, you get it running) and some of the new usibility features are just great. The new start menus nested all programs is a great improvement to the cascaded all programs of earlier versions. I also LOVE the new search functionality and the virtual folders. Stacked views in explorer are also a great new UI feature. And, last, but not least, IE 7 is excellent. The only really big downside is that, as mentioned before, DirectX support is very broken in this release, which means booting back to XP for gaming goodness.

I am also impressed with the performance of Vista beta1. I suspect the fact that the windowing subsystem is now GPU based has a lot to do with the performance, as when I briefly ran my Alienware box with legacy XP drivers, performance was not exactly stellar. An interesting side note is that the new display model seems to be much better at handling multiprocessing environments. Specifically, I saw much better display performance and resource utilization on my hyperthreaded Alienware system (I will post more on this later).

Meanwhile, back at the ranch…

In other news, the console junkies of this world are all atwitter about the pending arrival of XBOX 360 and PS3. I, however, am not sure that I am so excited about these new consoles. Frankly, I am willing to bet they aren’t going to do nearly as well, right off the line, as some people may think.

Why? Because I don’t think they are going to deliver the experience that people are expecting in the next-gen consoles. In fact, I am going to go out on a limb here, but I think the hardware designs for these boxes are just insane. In both cases, these machines appear to have been designed by hardware engineers with little realistic thought as to how developers will need to utilize these machines.

Let me put it this way, at the end of the day, as many people have pointed out, writing multithreaded code is hard. It’s hard because synchronization of threads manipulating shared data is hard. This is especially true in a dynamic dataset such as that of a real-time 3d game engine. Synchronizing access to data in a manner that effectively uses caches and doesn’t force excessive memory and processor bus utilization is very difficult. It’s one thing for Photoshop to divvy up a bit map to multiple threads in an image filter, it’s something entirely different to attempt to split up a game engines execution into separate threads. It will be a long time before mutlicore game code is as efficient as today’s code.

Now, when talking about the Cell processor, things get even more dicey, as the cores aren’t even symmetrical (one SMT PPC core and a whole bunch of more specialized vector units)

Of course, this is all really a moot point, because the real reason the next-gen consoles wont be blowing any minds is because even if the CPU’s were utilized in an efficient fashion, it’s the GPU that matter. It was the Nvidia GPU that made the Xbox standout against the PS2. Frankly, while the Nvidia and ATI GPU’s in the PS3 and XBOX 360 are impressive, they simply aren’t enormous leap that I think people will be expecting. Most of what these GPU’s can do can be seen in the latest crop of PC GPU’s. Furthermore, the screenshots of the XBOX and PS3 games I have seen look pretty, for sure, but not enough to make me run out and buy one tomorrow (and that is if they were even available tomorrow).

I might be wrong about all this, we’ll have to wait and see.

Mine is bigger dept.

Which brings me to my final train of thought: Multicore Madness! Yes, you too will soon have more SMP processing power than you will know what to do with. LITERALLY! I am a big SMP fan. I love SMP. I own several SMT and SMP boxes. I have machines at clients with 16 CPU’s. I work day to day with machines that can execute 8 simultaneous threads. I think multiprocessing is better than sliced bread.

However, it would seem that the chip manufacturers are using SMP in what I think is a slightly devious fashion. You see, they ran out of juice in the single unit of execution thing. They did the Ghz thing, the super-pipelining thing, the out-of-order thing, and the SIMD thing, but they just plain ran out of steam. What they didn’t run out of was real-estate. As a result, they are plopping cache and cores onto dies faster than you can say “decoupled CISC microarchitecture”. The problem is that everyday users will not see the kind of future performance benefits from these multicore chips that they will be expecting. At least not for a long time. As I stated above, coding multithreaded applications is really hard to do well, so most apps will remain only moderately threaded for quite some time. Only for heavy multitaskers will multicore CPU’s show a big improvement, and your average user just doesn’t use their machine that way. As for games and prosumer home-media applications? I just don’t see big multicore performance improvements anytime soon.

This, in my opinion, spells some difficult times ahead for the computer industry as tomorrows latest and greatest just won’t seem all that great to the average dude, whose three year upgrade cycle keeps this industry humming.

Interesting times, for sure.

Blog at WordPress.com.