Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

Wednesday, 12 January 2011

Why would NVidia seek x86 licenses now?

I read this article today and it mentioned something very interesting. About how NVidia wanted to bargain the x86 license from intel in this last bout of lawyerfest they had. It turned out so great for NV raking in a tidy $1.5 bn over a few years.

So the result was quite favorable for NV, but they wanted more aut of the deal? If I understand correctly, they got chipsets back, but chipsets won't help them any more. It's only a minor part now that CPUs got all the goodies. Eventually more and more peripherals will migrate from chipset to CPU and even NV must surely realize that.

But what on earth would make them go for x86? Sure, it's a huge market right now, but also a cutthroat one at that! AMD has been struggling for decades against the behemoth that is Intel with more or less success. In fact I only know of one instance that they had a short lead (the original Opteron / Athlon 64). VIA retired to a niche years ago when they found they had no chance competing against those two. Any other attempt (remember Transmeta?) went under as well.

Even getting x86 licenses would cost them billions in R&D to get somewhere around Intel's previous generation CPUs or even the generation before. So why even bother?

Instead I think NV should focus on ARM. They have been doing it and doing it relatively well. Sure, they have high power consumption, but that doesn't go for every market segment. Their Tegra 2 won't find a place in a smartphone, but beefed up it sure could find a place in netbooks and even PCs of tomorrow.

ARM AFAIK doesn't restrict core optimizations. Since NV knows a lot about caches and similar stuff thay could take what they already have and beef it up into a chip to behold! An ARM chip with a decent graphics core and performing better than, say, Zacate, would surely attract plenty of attention, especialy once Windows 8 comes out. If it consumed less than 4W, all the better.

So, NVidia: why even bother with something that may never be competitive? Instead use the knowledge you already have and differentiate yourselves!

Friday, 24 December 2010

Microsoft should port Windows to ARM

Been reading my daily dose of technology news and stumbled upon an article on ArsTechnica about Bloomberg reporting about Microsoft porting Windows to ARM. Pun with multiple references as intended :D BTW: ARM logo sucks. They really should hire a designer.
Anyway, since I've been meaning to write a piece on that for a while now, after reading those articles, I feel like I must. So here it goes:
I think both those articles are wrong in guessing as to why such a port would be nice. They cite a port for tablets, smartphones and such devices. But this is all wrong. Why would Microsoft do this only weeks after finally releasing their new platform (WP7) for such devices? Even thinking of this is beyond ridiculous. Though some WP7 design decisions, like Silverlight being the API of choice, are wrong and damaging, the platform itself is fresh and new and good.
What a Windows port to ARM would do for the OS giant - or better said: for us - isn't introducing yet another contender for the tablet OS of choice. No, instead such a port would provide an alternative for the average Joe.
See, the average Joe buys a PC to surf the web, watch YouTube and sometimes prints a web page or Word document. AMD is right with is current mobile novelties where they went for these exact users with their fusion processor introductions.
What ARM chips provide is the same functionality within lower power envelope and with lower system costs. Remove the display from a smartphone, add a mini DP socket and a couple of USB ports and you have the perfect web surfing device for less than 100€ / $. If this device runs your latest Windows that you know and love, why wouldn't you buy?

Update: I forgot to mention that seeing an actual Windows port to the architecture would most probably stimulate chip designers to start designing desktop oriented ARM chips. More power hungry but also reaching for x86 performance.

So, yes, Microsoft should port Windows to ARM. Not to introduce a new system for tablets, but to support the world's most usable and loved OS on the most useful and fastest progressing processor technology of today.

Tuesday, 6 July 2010

Are monitors going anywhere at all?

It wasn't so long ago that computer monitors were far superior to ordinary household TVs. My old trusted Sony CPD-G500, for example could manage 2048x1536@75Hz while at the same time providing excellent color fidelity. For practical reasons I never really used it at it's maximum resolution. I rather used 1600x1200 which was a bit easier on the eyes due to lower DPI. The TV I had at the time managed a pathetic PAL resolution of 720x576@25Hz (50i). It had nice colors, but nowhere near the monitor.
To put it another way, it took me a few years to even have a graphics card that could output the monitor's maximum resolution while TVs only recently moved to 1080p resolution, but broadcasts still snail behind with PAL resolutions.
A few years back (6 I think) I moved to a LCD monitor. I needed the desk space and I also figured display geometry would never again be an issue. So I bought a Samsung 215TW which managed a decent 1680x1050 resolution while still having a decent enough response time to be quite useful for gaming. In the beginning I missed those 150 pixels of vertical resolution, but their lacking wasn't exactly killing me. Since FPS isn't exactly my favourite genre I have no idea about any processing lag, but I can not detect any, so the monitor works just fine for me.
I can't really say that my current monitor is becoming unsatisfactory, but I must admit I would like to have more resolution and I would also like to have 3D. Windows 7 is getting better at handling higher DPI, though it's still nowhere near where it should be in this regard. My water cooled Radeon 5870 can certainly take a bit more resolution though AMD 3D support is still getting nowhere. Additionally I'm also limited by space to max 24 - 27" diagonal. Actually 27" is stretching it a bit - it would barely fit into my corner of zen and peace.
So I went looking for a decent monitor that would give me at least 2560x1600@120Hz, possibly with 3D shutter glasses included.

What a dissappointment!

The only monitors supporting this resolution are 30" in size with a semi-exception of Dell U2711 which has a 2560x1440 resolution (16:9). None of them has 120Hz and none further with 3D shutter glasses included.
I dug a bit more and discovered that the vast majority of monitors on sale today are 1080p.
On top of that, very few are 120Hz, I couldn't even find one that would come with shutter glasses.

What a dissappointment!

So while TVs are pushing 3D today, not to mention 600Hz samples on sale, monitors on the other hand found no progress whatsoever.
When I was buying my 215TW, I decided for it instead of a 1920x1200 model because of price. Today 1920x1200 monitors are just as rare and (almost) just as expensive as then. Not to mention a hint of 120Hz support. Higer resolutions are more or less reserved for 30". None of these supports 120Hz, naturally.
I would expect that by today, I'd easily find a WQUXGA (3840x2400) monitors, maybe not with 120Hz support, but they should be there as a much superior version of today's TVs. After all, not everybody uses their computer just for writing documents and calculating spreadsheets (not that these two wouldn't benefit).
Instead I find that the monitor market has actually DEGRADED to a not-really-impressive 1080p resolution; not even 3D is common place :(

So in my opinion I'm currently stuck with my 215TW or I could marginally go for U2711. At least it ups the DPI to a bit over 100...

But if I could pick, I'd take the following:
24"
3840x2400
120Hz
RGB LED backlit
Color reproduction and lag naturally should be at least average

Now, that would be a monitor worth it's name today

Hell, quit the dreaming: I'd settle for a 2560x1600 120Hz 24" as long as the rest of parameters were satisfactory :(
Please, monitor maker, sir: make a monitor worth it's name so that I can spend some cash...

Tuesday, 3 November 2009

Windows 7 pricing and market share

I've just recently read an analysis about Win7's market share after one week since it going public. Anyway, the number was something around 2% and the article author was flaming MS for performing miserably with it's newest OS. He even took it so far as to say that XP and Vista users are migrating to Apple's products instead of Windows 7.

I don't see 2% as a failure, even if there was quite a substantial pre-order campaign. Judging from pre-order pricing of the product which changed quite a few times between august and release date, the campaign was a huge success. 2% still means millions of copies in this market.

What I do see a problem with is pricing of the product now that it is released:
105€ for Home premium (with a new computer)
200€ for Ultimate (also with a new computer)

These are prices for Slovenia (amazon.de is a bit cheaper), but I also got full prices from amazon.de which are 120€ for home premium and 300€ for Ultimate.

Now, I'm sorry, MS, but this is way too excessive. 300€ for an OS?!?!? Operating system! I mean, it's not like I can do much productivity on the OS alone, can I? Sure, the calculator is great, finally improved after what, 29 years of existence? OK, so the scientific mode was added with Win 3.0 "only" 19 years ago. Wordpad is also super cool, if I may be a bit sarcastic (I own Office 2007 BTW).

Not much else productivity-like in there, is there? It's funny, but those games seem to be the most value-add in the OS and even for them there are many freeware alternatives.

In the end we're still talking only about an OS.

Now, I ordered 2 copies of home premium for my home needs. Fortunately for me, MS decided to offer a pre-order promotion of about 50€ per home premium.

I will state this for the record: 50€ is an acceptable price for an OS, 300€ is not! I might pay 80€ for premium versions, but I definitely discarded that because premiums were 110€ in pre-order. So in my view MS just lost 30€ per copy just because they priced ultimate too high.

Need I say more?

Wednesday, 26 August 2009

The sorry state of hardware video playback acceleration

I've been playing around with options for a HTPC for a while now. See my initial HTPC article for introduction about this. BTW: It's almost finished with another post following in a couple of months (I need to do some programming first).

Anyway, while buying hardware, I was looking for a discrete graphics card that would provide HW accelerated video playback since my old Athlon X2 3800 isn't quite up to the job when full HD H264 content is to be played.

Anyway, after looking around for a while, I decided to go for an ATI 4350 (30€), since Nvidia's entry level offerings were a tad too expensive for me (>50€). It was rather a matter of principle than price. Since both manufacturers advertize HW accelerated playback for years now, I was confident any offering would do the trick. Also initial searching for "HW accelerated H264" turned up some promising pages quickly "discouraging" me from digging deeper.

I could not be more wrong...

As it turns out, HW accelerated video playback isn't nearly capable of providing an average user with what they want. Be it ATI or Nvidia, both have their issues and problems, not to mention the very concepts HW based acceleration is currently implemented around. I should mention that Nvidia is currently in a bit of a lead due to their successful CUDA advertizing and support (CoreAVC released a CUDA accelerated codec). ATI on the other hand is betting on it's OpenCL horses, but currently don't even offer a driver.

I compiled a short list of problems I detected while trying to enable any kind of HW acceleration. Note that I have tried just about any codec that was mentioned on various net forums first. These problems are just the best case I found after trying them all and failing with each and every one of them.
1. DXVA
The famed microsoft framework for HW based video playback seems to be a one way street. There's no return information. Either the HW can or cannot play a codec. If it can, it will be accelerated, otherwise it will not. Some other codec will have to take charge.
What's worse is that the card won't just decode the video stream - the whole system works only if the decoded content is displayed immediately on the screen.

2. HW accelerated functions
Actually a very similar problem to the one listed above. This one was the most dissappointing to me because ATI avivo is supposed to provide some nice and quite powerful deinterlacing algorithms. Since this functionality works in only "all or nothing" mode, you can get deinterlacing only if the avivo can also decode the stream itself. Otherwise you're so out of luck. Same goes for any other filter avivo or purevideo may or may not provide.

3. Supported video codecs
This one is just great! After playing around for a while, you can only find out that number of supported codecs by any of the two chipmakers is frighteningly low. To make matters worse: if chipmaker says it's chip supports H264, that doesn't mean it will support everything encoded in H264. It turns out, lots of important codec features are not supported and the stream also has to be encoded just the right way for even the supported features to work. It turns out that my own camera clips, carefully transcoded into H264 (x264) of course can't be played back. I sure as hell am not transcoding them again. Anyway, even when I managed to find a video that the card was willing to play back, it was a DVD - which my Athlon can already deal with quite well. I don't need HW acceleration for low res MPEG2. I need it for H264, dammit - high resolution.

4. Additional filters
With DXVA you can just forget that. DXVA is a one way street. This means no additional filters. Yep, that also means subtitles. A disgrace.


Quite frankly I can't help but be disappointed. I had a nice old 6600GT laying around and I bought the ATI card to help decode the more demanding content (my full HD camera) which my poor old Athlon struggles with at 80-90% CPU usage. It turns out I just wasted my money.
Even my friends pathetic 300MHz ARM in his MediaTank plays back just about any content he throws at it easily, thanks to properly implemented HW accelerated codecs. I can't believe that after at least five years of bragging, ATI and Nvidia can't provide decent acceleration for this.

It seems both of them will be saved by OpenCL in the end, but even with that coming up I don't believe we'll see a good solution until FFMPEG project gurus implement it. At that time I'm betting my HD4350 will turn out to be a pretty weak card offering very little acceleration. Well, no matter - i just need 20 - 30% off my poor old CPU and I'm hoping the little bugger will at least be able to do that much.

Until then I'll just have to swallow an occasional dropped frame and no postprocessing for my full HD.

Thursday, 11 June 2009

The woes of building a home HTPC / file server

Recently I decided that I want to build me a nice HTPC. You know - the PC you stick under your TV and it's supposed to manage all the media playback, recording and other management thereof.
I just happen to have a nice Athlon 64 X2 3800+ sitting around, doing absolutely nothing, so I thought that sticking it into a nice HTPC case, adding 3 super big disks in RAID-5 and connecting it to my Logitech Z-5500 speakers + a nice full HD LCD TV might fix all my file and media needs.

These were my requirements:
  1. File server - i have lots of projects I'm working on and some of them require substantial storage
  2. Media storage - i also make about 20GB of photos and movies with my digital camera per year
  3. Kids games - not a requirement, but it would be nice if my kids could play some games on the gadget
  4. IP TV - i have a provider that streams live TV through IP. Though their offering is quite user friendly, I still want to have all the functionality merged in one box.
  5. Simple interface - I want the media functionality to be as easily accessible as possible
  6. Instant on - I want my HTPC to be available from shutdown or stand by in a few seconds time
  7. Performance - I want all my movies to play back flawlessly with no dropped frames
To be honest, I didn't expect to bump into so many problems with the first requirement already: the desire to make my data a bit safer by using RAID-5 turned out to be a major problem. Hardware controllers are pretty expensive and also a bit of a problem when they die: if you can't get a replacement, your array died with the controller. So I decided to go software. I found that there's a hack for windows XP, but none (yet) for Vista or Windows 7. I just can't understand why MS offers this support only for server OS versions. Where have you seen a decent server that used software RAID?!? One point for Linux since RAID-5 is quite well supported there. I just don't like hacks...

Requirement two also turned out to be a bit of a problem: most HTPC softwares simply don't offer what I need in this respect. I don't want my movies to be separated from my photos. They were shot in order and I want to watch them in order as well, not in some other menu with a gazillion clicks to find what I'm looking for. It's idiotic, really, since all media software can display images as well as play movies, but few can simply take what I feed them and display that in the photo gallery without regard for the type of the file. We're in the 21st century guys!!! Even photos aren't what they used to be any more.

I haven't played much with the third requirement - at this point I can only say that Windows 7 Media center has a special menu for games installed in the Games folder. How it works I haven't even checked out yet.

IP TV also poses a significant problem. Lots of PVR / HTPC software recognizes and works with tuners, but simulating a tuner with IP TV is so much tougher. Many won't even think of going there, others just make it hard. Direct separate support for IP TV is of course out of the question.

Simple interface isn't a problem. Most of HTPS sotwares offer easy enough interface. It just starts getting a bit more complicated when you're trying to solve specific problems through plugins.

Instant on again proved to be quite a handful. The computer in question takes about a minute to boot into OS and a minute is not the time I'm willing to wait for it to boot. So sleep / resume is the only option forward. Well, as it turns out, only Windows 7 makes my little Athlon go to sleep and resume, all other OSs simply fail at any step of the process. Some won't go to sleep, some won't properly resume after...

And finally, there's performance issues. It seems my Athlon isn't capable of playing full HD content on one core, it simply needs both and even then it might skip a frame here and there. Some HW acceleration would definitely be appreciated from my good old GeForce 6600GT graphics card. As it turns out, the card is too old to support H264 acceleration. And I do recode all my movie clips into H264. I'm not exactly fond of MPEG 2 they are originally coded in. It's way too big for my taste and my quantities. Recoding to H264 and AAC saves me lots of space. 5/6 to be exact.
Anyway, it turns out that mplayer in Linux is compiled single threaded and so it most of other media software. I managed to compile mplayer with multi threading support, but mplayer isn't exacty the front-end I desire in my HTPC. I failed with other programs...
FfdShow for Windows on the other hand seems to handle my files just fine...

Well, currently I'm quite stuck with my little project. Some of my requirements aren't met in Windows, some in Linux and I'm not exactly sure how I can get my self out of this mess and still have my HTPC.
It seems the problems on windows are easier to solve. Since there's no SW RAID, I can always just buy a HW card and be done with it. Or write a nice little driver that would do things my way. I already know backup is going to be an issue. I'm planning on having an array four times as big as all the disks I currently have...
As for the other problems - Sometimes I understand why everyone wants to build their own HTPC / PVR software...

Tuesday, 8 July 2008

Raytracing revisited

I wrote about raytracing in my first article on this blog. At the time I believed Intel went for raytracing in their new discrete graphics part.
I was rethinking the issue and now I believe I was wrong. There's just no sense in creating a device that is so incompatible with existing devices that making it compatible would take such a huge effort.
Instead I am now pretty sure that their part will be just like ATI's or NVidia's. Hopefully faster, to create some new competition, but otherwise just about the same.

What I was forgetting at the time (writing the Intel raytracing article) was that all current generation graphics cards are also very powerful floating point processors. NVidia just recently enabled physics acceleration in their drivers and it wasn't long before somebody ported that to ATI cards. Custom floating point calculations have become a reality on today's graphics cards.

So where does this leave us with raytracing possibilities?

With all the FP power modern graphics cards offer it won't be long before somebody makes another raytraced Quake3, like these guys did. Only this time the calculations will be performed on a graphics card instead of 20 AMD XP 1800 processors. With an XP 1800 managing about 2 GFLOPS, a graphics card with potentially 1 TFLOPS should easily render the same scene at least as fast as that cluster of 20 XPs. Especially since raytracing lends itself nicely to batch processing.

So now we just need three things:
1. Some really general purpose APIs for utilizing the graphics card's processing power from all three major graphics card providers
2. A good raytracing API, something like Direct3D, capable of working with those card APIs (OpenRT reprogram?)
3. An enthusiast to rewrite the Quake 3 engine again

Slowly, but surely there will be more and more serious projects coming out untill finally there will be a commercial game.
By then, the cards themselves will also feature some genuine raytracing acceleration...

Monday, 4 February 2008

The dreaded 0x8004011D Outlook error status (solution)

I just recently got this error message from my Outlook 2007 (version doesn't matter). The error came out of the blue, I used Outlook without any problems on friday, but when I came to work on monday, it wouldn't connect any more. Great! What a fine way to start a work week.
Anyway, I searched all around the net for solution to this problem and the problems that followed this one with none of the search hits revealing much information about solutions, so I decided to write up my experience and possible steps to solve the issues.

Read on to learn how to fix "Error 0x8004011D server not available" problem:

Ok, so this seems to be some sort of glitch in Outlook <--> Exchange server connection where a particular client will loose all chances of connecting successfully to the server while all other clients continue to work normally. Well, the ratio of working / non-working clients can vary a lot even to the point where no client can connect, but then you can be sure the problem is on the server :). Note that multiple versions of Exchange server and Outlook client are affected so the suggested steps might help you even if you're not using the same versions as I do. While browsing through the search hits, I even found cases with Office XP having this problem.

The possible solutions that I found on the internet are:
1) Run Office setup with "Repair" option
This option is supposed to fix broken registry entries thus solving your problems.
2) Install the latest service pack for Office
Well, I cant really justify this one, but a new service pack was just available so I thought I might give it a try. Without success of course.
3) Restart the exchange services / server
Even the best software sometimes looses it and restarting can help...
Of course, only your company sysop can perform this one.

4) Run the following utilities on the exchange server (for all data files):
eseutil /p for repair
eseutil /d defrag
isinteg -s servername -test alltests

Same as above, you'll have to ask nicely :D
This one is meant to fix possible defects in the database restoring it to usable state.

5) Create a new Outlook profile (this one finally worked for me)
If your profile registry settings are so borked that neither of the first two options helps, you'll have to create a new profile thus creating a completely new set of settings which should help. I hope you didn't reply to too many mails while waiting for the problem to go away. I managed to gather some 50 of them, so I'll also add some information about how to transfer your uncommitted work to the new profile.



OK, these are just about all the possible solutions I was able to find on solving this fine "feature". But when I went for option 5, it still took me a couple of hours to get it right so I thing it's only fair to tell you what you need to be mindful of:

1) At first you were probably just hoping for the problem to go away so you just kept using the account in offline mode generating dosens of e-mails, new calendar entries, tasks, etc...
First, you need to back this up somewhere. I just used my archive folders for that, manually moving the items affected into some (separately created) folders. I used the built-in export functions for calendar and task items. Jou can create a new .pst file or use an existing one, as you like. Just make sure you back up whatever you did since you lost connection.

2) Now you have to make a new profile. I first attempted to create an additional profile to try the functionality, but had plenty of problems with that. Here's why:
It seems that the "Mail" control panel applet in certain scenarios likes to create a new offline folder file. Such scenario could be for example you selecting a custom offline folder file location in the advanced settings of the profile creation dialog. However, this might cause some additional trouble: When attempting to connect to Exchange server for the first time, you will be greeted with a message saying "unable to open your default e-mail folders. You must connect to your Microsoft Exchange Server computer with the current profile before you can synchronize your folders with your offline folder". When this happens, you're so out of luck. The only option for you is to delete all the Mail profiles and then create a brand new one. Using the same settings of course. Oh well....

3) After creating the new profile and successfully logging into the server for the first time, wait a bit for the files to synchronize with the server.

4) Restore the data you previously backed up from your defective profile

Instead of writing up a proper closing, I'll just say this: Hope this little guide helps and if it does, please feel free to click one of the fine shopping tips to the right -->  :-)

Monday, 31 December 2007

Why do we need BIOS anyway?

Recently I've been playing with my OS installations quite a bit. Setup Linux on this disk, XP on that one, another copy of XP there and maybe Vista there.
Well, Vista eventually had to go, but I kept the Linux and XP installations. What remains is the memories of all the problems I had installing all these operating systems. And guess what - all the problems stem from the fact that none of these systems really read the BIOS settings telling them what I wanted to do.
OK, I really have to be fair to Ubuntu: at least it attempted to install exactly where I told it to. Unfortunately, things didn't go quite as smooth as expected. I had to manually place GRUB to the appropriate disk. Otherwise at least it didn't mess with the other three disks I have.
The story was completely different for XP and Vista. I set the appropriate drive as boot in BIOS, but the crap installer put boot loader on any particular drive it found fit for that at a particular time. Notifying me about the chosen disk is of course out of the question.
Then I try to disable (in BIOS) all disks but the one I want to install XP to. One would hope that at least this would work. Wrong!!! XP's IDE drivers simply ignore any such settings in the BIOS and continue showing all the disks that are attached. The only solution for this problem is to physically disconnect the disks.

Modern OS's don't even use the drivers provided in hardware BIOS except in some ultra-special fall-back modes. Those of us old enough will still remember all those int xx functions with which one could access the hardware in an easy, but rather slow way. Pretty much every hardware still comes with BIOS providing those interrupt functions although nowadays these functions are rather poor in number and functionality. The reason for this I think is simple: everybody simply expects a driver for your chosen OS will fix this providing for full functionality.

So, what's the use of BIOS then anyway?

With current solutions, all one needs from BIOS is that tiny little bit of functionality to allow boot from CD, HDD or some such device. Everything can be sorted out later with appropriate drivers for the OS being booted.
Of course, things aren't quite as simple. The most obvious example of hardware that isn't managed by OS directly is RAM. Overclockers out there will know what I'm talking about. Currently there are no drivers for any OS that would manage how RAM works. Same goes for system buses (PCI, PCI-Ex, AGP, HTT and the like) and a lot of this goes for the processor as well. There are many aspects of today's computer that still get managed by the BIOS directly. But that doesn't make it BIOS (Basic Input/Output System) now, does it?

But still, why have any of this in BIOS when we could just as well have a few appropriate extra drivers for the OS and be done with it? It's not like those 512KB of ROM motherboards have could ever show, not with today's multi GB operating systems. Some fail safe functionality needed for boot could just as well be placed in 64KB of ROM, everything else is just unnecessary duplication of code.
What I hate most about this code duplication is how some settings are respected while others are not. For example - to make power management work, it has to be set just right in BIOS as well as in the OS. Integrated NICs and their drivers obey the on/off switch, pretty much the same goes for other peripherals, but other settings for those same peripherals are simply moot since the driver makes sure that the peripheral in question works. Disks on the other hand are supported in BIOS just for the purpose of booting, nothing else. A few milliseconds after the boot the driver is loaded and everything set in BIOS is forgotten...

What's the most ridiculous of all is that we have all the necessary drivers in BIOS, but your OS of choice won't be able to use the device until you provide it with appropriate drivers. Which is why I'm writing this post.

You see, I'm not really against drivers in the BIOS. On the contrary: I believe BIOS should provide the drivers for all hardware in the computer. Without exception!

These drivers should:
1) Provide a fast, overhead free interface directly to hardware
2) Manage all IRQ, DMA and similar stuff through universal interfaces
3) Provide just the functionality of the hardware, nothing more, nothing less. Application specific bug fixes like the graphics drivers are full of must remain an OS (or better yet - application) specific feature.
4) Integrate with the BIOS on code segment basis, eliminating excessive function calls and such
5) Long-term standardization of hardware communications protocols
6) Provide an easy method for upgrading the driver at a later time
7) Many other things, but I'm too lazy to think of them right now

What I'm proposing here is a bit of paradigm shift: currently OS manages the hardware of interest entirely - by using drivers. I believe this is not optimal for the following reasons:
1) Drivers have to be written separately for each OS and possibly for each major version of the OS creating lots of excessive work (and bugs) for driver developers
2) Plethora of operating systems out there makes it practically impossible to write drivers for each of them increasing consumer problems with hardware purchases
3) Creates usage problems because each hardware manufacturer does it's drivers it's own way. Drivers and supporting applications look different from manufacturer to manufacturer steepening the learning curve for the users

I've always found it super annoying to have to find the correct drivers for my on-board Ethernet NIC or sound card or anything else for that matter. If you ever installed an OS on your own, especially an OS that is a couple of years old, you have noticed that half your hardware is not recognized at installation leaving you with plenty of work installing the latest drivers. That is, if you can figure out what all those "Unknown device" entries in the hardware manager are. One of the most annoying drivers to install are the NIC drivers: if you forgot do download them before installing the OS, you have no way of accessing the internet, which means you have to install them from the CD that came with your computer (if you still have it) or find a friend that can download the drivers for you from the internet. Great, if you're like me (installing OS at night), you won't be as stupid to go wake your friend up at 3am, will you?

So, my proposition is to make BIOS really a BIOS again, but this time a bit more modern. DOS had no problem just linking all the BIOS interrupt functions into it's own int 0x21. That was fast enough since the hardware was so slow at the time. Modern operating systems just made it easier to write the drivers for than the BIOS, but it all started with Windows 3.x anyway. DOS didn't have a need for graphics accelerator, you see. That's one of the reasons why we have this ridiculous situation today. At least, it's ridiculous in my opinion.
What we need to do today is simply design a good method that would allow for fast and reliable access to all provided hardware functions while at the same time allowing for easy integration into an OS supporting the new model.

With this, we provide the following benefits:
1) Provide a standard hardware interface for all operating systems
2) Driver developers only have to worry about 8,16,32 and 64 bitness of their drivers and even that could be taken care of by including a small p-code to machine code compiler built into the motherboard BIOS. This could even eliminate platform differences (same driver working with a MIPS, ARM, X86 or any other processor).
3) Virtualization becomes a snap. BIOS would become the platform for virtual server.
4) No more trouble finding the drivers for your OS of choice
5) Maybe, just maybe, basic functionality of common hardware could in time be covered by a single, generic driver built into the motherboard BIOS

I hear EFI (Extensible Firmware Interface) already handles a lot of what's proposed here. But if I understand it's specification correctly, it is again a compromise, offering just basic functionality. Not to mention it isn't being used despite it's obvious advantages over the now 30 year old PC BIOS...
I wonder who was too powerful this time...

Saturday, 22 December 2007

Why Vista disappointed me so much

I'm sorry. The sheer amount of recent flood of hate posts about MS Windows Vista certainly doesn't warrant yet another post adding to the negative hype. But I just couldn't help myself, I'm so much disappointed that I feel compelled to write a little bit about this OS.
So, without further ado, let's start with the good first:
Finally!!!! I don't have to select Slovenia / Slovenian five times during installation any more. One selection fixes them all properly and if I later desire to add a bit more support for additional character sets, I have the option to do so. I really like this and MS certainly delivered on this little tidbit.
It looks good. I always was a sucker for eye candy and the look of Vista certainly is enjoyable. I think the look is clean and really done professionally. On XP you can choose any theme, load any 3rd party software, but it will never have that cleanliness and smoothness. Well, at least I can't find anything that would duplicate the effect. I've also tried out Compiz for Linux and while it is technologically way more sophisticated than anything Vista delivers, it's the good measure of aesthetics and just the right measure of effects that makes Vista superior in my eyes. I know you can set all this just about the same in Compiz, but I must say that sometimes too many options can also be a pain. Even if I know exactly what I want, I sometimes spend hours looking for the setting that would do that for me. On the other hand, Compiz simply doesn't provide a preset that would appeal to me. Anyway, Vista looks good.
I like what they've done to some of the Control panel applets. Some of them look cleaner and make managing their respective assets easier than was possible before. However, also see the Control panel section in "the bad" part.
The open file dialog has a minor addition that makes my life a bit easier: the favorites list. It's sooo cool, but at the same time so unmanageable. It's so hard to set it so that it would always show my favorite folders at the top and others, a bit less favorite lower down... This certainly is a feature that I immediately liked, but also delivered tons of frustration for me.

Ahem, that's about it. Aside for some minor other things, this is just about everything I like about Vista more than with XP. Did I forget anything? Maybe, but I really don't think so. A shame really since MS invested so much into the making of this OS. After all this work everybody just bashes the product... Well, it seems a lot of the work maybe went into the wrong code.

So, what's the disappointment?
There's so many things Vista didn't deliver for me I don't even know where to start, really.
Let's start with bloat. The thing takes > 8GB of my disk space and 1.1 GB of RAM just to run the most basic services I require. Sorry - OS thinks I require. WTF?!? This is an OS, not a complete human brain replica. I hope. At least the functionality doesn't suggest a particularly high level of intelligence in it. I believe XP is a bloat, but compared to Vista, it's an angel. I'm sorry, but I really believe an OS should never take more than a few MB. I'm talking less than 100 here. Yes, OK, Vista does have some fancy animations and some pretty pictures, but that most certainly doesn't take 8 GB. With XP I had a feeling my 1GB of RAM was more than sufficient for anything, but just installing Vista made me go buy another GB of RAM in hope that after the upgrade the OS would show at least some superiority over XP. Boy, was I wrong :(
Display. Wait a second, I just praised it's looks a few paragraphs back. Yes, I did, but at the same time, Vista's display capabilities are one of the greatest disappointments for me. I really expected that the new and shiny WPF would finally dispense of the pixel and just draw vector graphics, properly antialiased and all, mind you. This would finally allow for high resolution displays to gain entrance to the market. And no, I'm not talking 2560 x 1600 resolution here. I'm talking 200 DPI, 300 DPI and the like. Size and final resolution don't matter. Try working with XP on a 300 DPI display (if there was such a display) and you'll see what I'm talking about. Fonts so small you can't read it, icons not much better and just you try to resize that window - you'll never make those 3px of headroom you have. Vista doesn't bring anything new to the table in this respect. Just using "large fonts" creates a myriad of problems on both systems. So, yes, this is a huge disappointment for me.
I also had high hopes for I/O. You know - when some service really uses the disk a lot and you can't even start explorer properly? Waiting and waiting and a bit more waiting is what remains with Vista. And to top this all off, there are a myriad of services in Vista that only increase the load to the disks or any other streaming device for that matter. In fact there are so many that disks practically have to work constantly. OK, so I'm exaggerating a bit, but it's a pretty good description of what's going on in your system. Anyway, Vista unfortunately doesn't make I/O faster, only slower. I'm talking real-life usage here, don't care about theoretical peaks. Oh, did I mention that setting the "compressed" flag for a large file still yields that unresponsive dialog box which tells you absolutely nothing until the file is actually compressed? Yep, it does.
While just at the amount of services, I have to say that Vista surely delivers on the numbers. A service for this, a service for that all doing something on my computer and I'd really like to know what that something is. Then I decide a particular service is of no use to me and I cant even turn it off! And that stupid time service is still a service. Oh, just naming an example here, showing the pattern. You can pick your own "favorite" service name instead of mine. Anyway - why on earth would I want something that is executed once a week to update my computer's time to run as a service? I for one really don't know. I have a 50KB utility I picked up somewhere on the net sometime around '96-97 and I set it to run at every midnight. No fuss, it just sets my computer's clock to what the time server says is the correct time. Unlike the super-duper always running service that has to run all the time only to remind me that computer clock cannot be set because it differs too much from the time server's. Yes, I had to manually alter the computer's clock to test some program's functionality. What's it to you, stupid service? Just set my clock so that I won't have to. I changed date, hours AND minutes, repeatedly, by various amounts, you know, I really can't tell how much. Do I really have to find another clock, set the time back manually for you to grace me with a properly synchronized computer time? Idiotic.
Ooooooooohhhhh. Just remembered the famed "super fetch". 'Tis a service, you know. Taking some 100MB RAM, give or take. This beauty really is the masterpiece: when the OS starts, this little service will begin reading my disks for everything I touched in the last week. Well, I'm sorry, mrs. Service, that's some 30GB of data. Just what do you think you'll achieve reading 30GB of data into your non-existent buffer and system disk cache which can't under no circumstances be more than 2GB (which just happens to be the amount of RAM my comp has)? I couldn't believe my own eyes when I saw this pretty little service using up my disk resources reading files it shouldn't be reading...
Oh, did you know that the Calculator still doesn't provide the square root function? But this is not the point: All the applications that were already in Win 3.0 are still exactly the same! Not a single function added. Why are these apps even installed if the first thing I have to do after installing the OS is go get some decent utilities that cover this functionality for me? Well, dear MS: don't waste MY disk with useless crap. I buy your OS to help me do things and these API programming samples without the accompanying source code don't help.
Let's say that I primarily even bother with Windows for one reason only: games. Unfortunately, pretty much all the games for PC are for MS Windows. At least this functionality still works in Vista, right? After all, Vista is Windows too, and the newest and shiniest too. Wrong!!! Pretty much all the games I can run on Vista, I can also run on Linux. The other's just don't work. The ones that do work typically have lower frame rates than when ran in Linux. What??? Wait a second. I just bought an OS that gives me a hard time playing my games? But the OS is Microsoft's?!? It's supposed to be compatible? You wanna say they kept all those stupid ANSI char API functions, but didn't keep Direct X compatibility? And what happened to all those performance improvement promises about the new Direct X API? I just don't see them. Maybe I didn't look hard enough. Or did I?

OK, enough bashing. This post is too long as it is and I left out all the concept changing expectations of mine except the display one. Let's just say I needed some venting and this amount of text just about does it. Maybe I'll continue next time. Or not.

Just what might be the reason to keep this OS on my hard drives then?
I don't see any.
I'm waiting for Windows 8. I hear MS finally got the message and are doing it properly this time. Maybe...

Thursday, 20 December 2007

What's up with Intel and graphics anyway?

During this last year I've read quite a lot about Intel getting into the graphics business. Well, maybe I didn't say that 100% correct: Of course, I'm talking about discrete graphics business. Intel is already quite a big player in integrated graphics market and as far as I know, it's still #1 player there although NVidia and ATI (now AMD) are catching up quite fast.
To get back to the topic at hand, all the writing about it (Intel) getting into the business never managed to produce any concrete info on what exactly they intend to do anyway. Seems to me Intel really managed to hush-hush their employees this time or that all the rumors were simply untrue.
Just in the same time frame there were also lots of news about Intel demonstrating their newest processors by showing off how fast they can render 3D scenes ray-traced. We've seen four and eight core systems displayed that could render ray-traced images pretty much in real time. And I'm not talking about 640x480 resolutions here. See where I'm getting at?
I believe Intel finally went to try to do something ATI, NVidia or any other GPU maker should do quite some time ago: they went for the holy grail of the graphics - real time ray-tracing.
Of course this may prove a bit more difficult as it may seem. One may even achieve enough muscle to render ray-traced images in real time at decent resolutions, but just where does accomplishing such a feat take us? Currently there are only a few software programs available that perform ray-tracing and they would most certainly appreciate an accelerator they could use to perform their work faster. But: would that make the entire enterprise profitable? Selling a few accelerators to studios and geeks that need / play with such programs? I think not. If you go for such a goal, you go for it all the way, counting on millions of gamers out there who would appreciate the realism ray-tracing delivers.
But what about backwards compatibility? And all the new games coming out? Will the new accelerator be able to support them well? Well, this is where the problems kick in. 2D is not a problem - one only needs to slap in some extra 100K transistors and you have a decent enough 2D engine. I think Intel has this territory covered well already. What isn't so easy are the 3D games. If you look at this from ray-tracing perspective, current 3D games's look is all based on deception. A game can look really good and realistic and shadows in it are nothing short of amazing, but this is all based on special algorithms that require data prepared in a very specific way for them to work. And then there's another problem with the quantity of data required for various algorithms: current algorithms require no information about material an object is composed of whereas ray-tracing does. Or did you think those super-duper transparency and reflections always boasted in ray-tracing software come out of thin air?
While both methods require polygons to describe objects and textures to describe the colors of surfaces, this is just about everything they have in common. The main difference between the "new" and the "old" way is in the way a particular pixel is drawn on the screen. Current GPUs draw triangles and in the end just make sure that the pixel from the "topmost", that is, the triangle closest to the user is displayed. Ray-tracing on the other hand starts from the pixel and then determines all the triangles that affect it's final color. This is also reason for ray-tracing not needing the currently-so-famous anti aliasing. Anisotropic filtering is needed, but it's meaning is completely different as in the "old" method. Pixel shaders: well, let's not even go there. To cut this a bit shorter: taking any current 3D game and trying to play it on a ray-tracing card would result in pretty miserable image quality since the driver would have to guess the missing parameters as well as guess which code / objects are unnecessary (shadows for example). Not to even mention that shadows in particular require different source objects for ray-tracing than for the "old" method.

So, what really happened with the discrete graphics at Intel?
If my reasoning is correct and they really went for ray-tracing, I'm guessing they're currently struggling with making their products backwards compatible. It would be some time before developers started developing their software designed for ray-tracing instead of the current methods even if the appropriate cards would already be available. So compatibility is an important task to do with such a product. Trying to make it so that it would at the same time show some benefits of the new algorithms must be a really tough job and I really hope the team can do it. I'm looking forward to a third strong player, even if it means this player will be Intel :)
I can't wait to play my favorites (Deus Ex, Morrowind) on such a card and I'm looking forward to a new generation of games even more.