The Intel/IBM Problem

Written by White Shade

1.1: Introduction

Before I start, let me make a few things clear and explain who I am. My name is Daniel Garlans (aka White Shade). I've been programming C/C++ for almost three years now, and I've been using computers since I was about 7. I've built two computers from scratch (I bought the motherboard, cdrom, cards, etc and assembled it myself) and I've fiddled around with nearly everything to do with computers at all levels (except power supply and some ram settings). Anyway, I've always been an IBM person and always will be an IBM person, and I'm familiar enough with Mac that I have no intention of switching. This article is about what I feel the major problems with the Intel/IBM system that we use now. One last note before I go on with the 'real' stuff: I am NOT suggesting that we should trash everything, nor am I suggesting that we should move to MAC! All I'm trying to do in this article is give my feelings on the current computer situation. Also, much of my arguments are DOS/Windows based as I am not yet familiar enough with UNIX or other operating systems to really make intelligent statements.

1.2: The Beginning

Everyone who is reasonably familiar with an IBM PC should recognize most if not all of these terms: ISA, PCI, AGP, VLB, PNP, IRQ, DMA, USB, BIOS, Motherboard, Bus, CPU, and RAM. These are core technologies, standards, and hardware pieces that make up an IBM PC. Everything else is optional; a PC will work to some extent without a video card, a monitor, a sound card, etc. In the following sections I will describe the Problem and how each of these items relate to it.

1.3: The Problem

There is a basic problem with the IBM PC, and it underlies everything above it. This problem wasn't obvious at the beginning, and it only becomes more and more visible as new technologies are added. The problem is, plain and simple, that there is too much 'stuff' piled into the IBM PC specifications.

2.1: The Core of the PC

At the core there is the basic data bus, the IRQ and DMA handlers, and the BIOS. When the computer wants to start, the BIOS checks everything, initializes everything that is required, and sets up the CPU. When a peripheral card wants to be accessed, it has to run through (in the beginning) the ISA bus and have specific IRQ, DMA, and Base Port addresses set on it with jumpers. In the beginning this was not a problem; there was little problem with conflicts, if something didn't work, check the jumpers. At this early point in the life of the PC, there was essentially no evidence of the Problem because there was too little for the computer to worry about. Then, however, came PCI.

2.2: PCI

PCI is essentially ISA, only much better. PCI is faster, more efficient, and more feature-loaded than ISA ever was. This was the first glimmer of the Problem, however: the busses and controller chips on the motherboard had to be able to handle both ISA and PCI. At this point in the life of the IBM PC, however, there is still no real cause for concern because the added complexity was minimal.

2.3: The trouble with RAM

In the beginning of the IBM PC, 64k was a huge amount of RAM, and it was also the most that the CPU itself could even handle. As RAM became cheaper, however, people started moving to 640k as the 'base' memory. In DOS terms, this is the conventional memory. This, for a while, was perfectly acceptable. When more RAM started becoming available, a few little additions were made and handling it was fine, HMA and XMS. The real problems developed when large quantities of RAM were readily available, and new styles of chips were created (72pin over 32pin, etc). All of the sudden there was no set standard for RAM: Different types of RAM were available, boards had to support more than one kind, software had to support several different types of RAM configuration or be strictly rigid. This problem remained until 32bit CPUs were created, and is now somewhat less of a concern. It is still a contributor to the Problem though, because boards still have to support at least two different types of RAM chip.

2.4: The Plug and Play Problem.

Up until now, everything I have described is of very little real consequence; it's really not too terrible. However, there is one new technology which is almost the definition of the Problem: Plug and Play.

Everyone knows that Plug and Play is a new method of handling peripherals - the computer figures out all the resources required for you, thus eliminating the problems with conflicts altogether. In theory, that is. The truth is rather different: Plug and Play suffers from the fact that it is a simplified interface draped across almost twenty years of technology. Basically, because it has only been in existence for about five years and actually used in the mainstream for less than three, it has not had the chance to really become a good thing. The problem with Plug and Play is that it only truly works if you have 100% brand new Plug and Play hardware. If you have anything that is non PnP or even slightly older PnP (say 95-97), getting everything to work is seriously difficult. So, essentially, PnP adds to the Problem because it unsuccessfully tries to merge everything that has been part of the IBM system since the beginning into something that no one ever considered possible when the previous technologies were created.

2.5: Everything Else

And then there's the rest of the stuff: USB is an attempt to throw out the old method of Serial and Parallel ports, which is currently impossible because without Serial and Parallel ports, much of the current hardware and software will have to be trashed. Other technologies like AGP and SCSI just add to the complexity required of the core components.

3.1: To summarize...

The Problem, in its simplest form, is that there are so many concepts, standards, formats, technologies and interfaces piled together causing the IBM PC to slowly collapse under the strain.

3.2: The consequences...

The Consequences of the Problem are several: The system is bound to collapse one day, and removing older things will not work.

If technologies keep getting added to the IBM PC, eventually there will be so much stuff piled onto the core of the computer that making anything work will be difficult at best. No matter what interface is used to address and access a piece of hardware, unless the core of the PC is changed, IRQs, DMAs and Base Ports will still be there. If USB takes over and LPT/COM ports die away, large portions of what exist now will become junk.

This also merges with one of the other consequence of the Problem: You can't get rid of anything. The IBM PC of today is like a building, you can't just take away lower stories and expect the upper stories to remain unchanged. Plug and Play cannot function without ISA, PCI, AGP and the like, because that is what Plug and Play is built around. ISA, PCI, and AGP cannot survive without IRQs and DMAs because without these fundamental items, there is no such thing as ISA or PCI. On a higher level, if old RAM methods are removed, older, proven software will become useless. If LPT and COM die, almost every external piece of hardware will become junk. In short, you can't change anything, you can only keep piling things on top.

3.3: An Example...

There is one very prominent example of the Problem which nearly everyone in the industrialized world knows about: the Y2k bug. Y2k was caused by the fact that the core timing chips of computers don't know what to do with the year 2000, core programs used by companies and militaries do not have any idea of how to handle the year suddenly becoming 00, and so on. Programs have trouble with Y2k because their low level date code cannot deal with this unexpected date. In theory this is not a problem: all you have to do is replace the code or change the chips. However, in reality this is a tremendous problem, because the faulty timing chips affect the basic faulty date code, and so on up the chain, creating more and more problems throughout all the code and hardware, thereby making the problem increase in proportions rapidly. Therefore, it is not possible to just 'replace' a few things, because there is so much depending on everything below it.

4.1: In Conclusion and Disclaimer

Before I finish this little rant of mine, I would like to clear a few things up. First, I do like the IBM System: I've had enough experience with it to be able to handle anything it throws at me and it is simple enough to be able to use it. Also, I find the IBM PC System far far far superior than the Macintosh system mainly because of its flexibility. Finally, I am not saying that we should ditch everything we have now, that would be premature. Eventually we will have to start from scratch, and hopefully by then we will have learned enough to be able to design a much more base-level intuitive method of handling everything!

And now for a disclaimer thing: This document is my opinion and it does not necessarily represent the opinion of anyone who helped me write this or gave me ideas, and it especially might not represent the opinions of the Hugi diskmag or anyone related to it.

4.2: Thanks and Greets...

I would mainly like to thank Horizon and Hydron for inspiring this article by starting that nifty discussion we had that day...

I would also like to thank anyone who helped me with this doc: sin-d / pdg, maLi, and dvb! Thanks!

And finally, I would like to thank Adok and the Hugi Diskmag team! Keep up the good work guys!

4.3: Contact Info

Please don't flame or mailbomb me if you disagree with my opinions, cos they're just that, my opinions. Constructive criticism only!

- White Shade