Back to Sitemap Index
What the hell is BIOS anyway, and where does it go after it leaves the EPROM burner?
<b>BIOS</b> is a general-purpose acronym that stands for <b>B</b>asic <b>I</b>nput/<b>O</b>utput <b>S</b>ystem. It's been around since forever, but really came into the tech world's consciousness after IBM introduced the PC and its broad presence made BIOS a frequent topic of conversation among technoids and software developers.
In broad strokes, it's a collection of very small, definite-purpose computer programs (or subroutines) that are stored in specific memory locations in a type of memory that's non-volatile, or permanent. That is, power is not required to keep the programs in memory, and they can't be easily changed. They're in specific, predefined locations because the computer knows nothing at power up. The start of these programs has to be hard-coded, or they couldn't be found. Software of this type is also often called "firmware". These programs/subroutines are needed to make a computer essentially take it's first breaths, discover the world around it, and facilitate its ongoing interactions with its various appendages in a nominal and predictable way.
Understanding what the BIOS does and why we need it requires some basic understanding of how computers are designed, what the parts each do and how they're put together. This is often called the <i>computer's</i> "architecture", not to be confused with the <i>processor's</i> architecture, which is a different discussion altogether. Since some parts or families of parts only work with certain other parts or families of parts, we have a sub-category that's often called a "platform" that's centered around a particular CPU design. For instance, Apple for many years used Motorola 680<b>x</b>0 CPUs, while the PC industry used Intel 80<b>x</b>86 parts, the "x" being different revision levels of the chip, such as 680<b>2</b>0, 680<b>3</b>0, 680<b>4</b>0, and 80<b>2</b>86, 80<b>3</b>86, 80<b>4</b>86, etc. But, I digress.
When a computer is first powered up, many things are either in an "invalid" or unknown state. The memory is full of garbage, the<b> PIO</b> (<b>P</b>eripheral <b>I</b>nput/<b>O</b>utput) chip(s), sometimes referred to as a "chipset" in modern machines where the PIO integrates many discrete functions and sometimes is spread across two chips known as a "North Bridge" and "South Bridge", is clueless as to configuration, the processor has no instructions to execute, communications ports and other peripherals aren't initialized to a known state, etc.
Clearly, we need a way to get all these widgets lined up on their marks and ready to go with a destination in mind before we let them play race and chase, or all they're going to do is buzz around in circles getting hot without accomplishing anything. BIOS is the way we do that.
Once the power-up resets are released and "chip enable" signals are asserted, the processor is allowed to be clocked. It looks at the first address in the register that keeps track of what its next move is (program pointer). That's going to be the entry point for BIOS. The processor starts loading instructions from there, and executing them. This is usually the <b>POST</b> (<b>P</b>ower-<b>O</b>n <b>S</b>elf-<b>T</b>est) routine, the first routine the machine needs to find out what's out in the world, its boundaries, and whether or not it works.
Assuming the machine passes the POST, it now knows how much memory it has and its starting address, where at least one kind of removable storage is, where the keyboard and monitor ports are, etc. But, it's still not done. The machine is still fairly stupid and useless. So, another thing BIOS does is go looking for an <b>OS</b> (<b>O</b>perating <b>S</b>ystem). At one time, this was hard-coded to be the address of the floppy drive in a PC, but it has since gradually grown to include other devices such as HDD's, optical drives, USB ports, etc. The starting locations for the routines to handle these additional devices are all hard-coded too, because until the OS is loaded, the system is still not smart enough to go looking in arbitrary places for things.
Once the OS is loaded, the world is your oyster. There's all sorts of fun stuff you can do. But, you still need BIOS. BIOS contains all the routines that give the OS basic input/output services. When you talk through your serial port, you're talking through BIOS. When you talk to your disk drives, you're talking through BIOS. Your keyboard won't work without it. On and on. It contains all the low-level <b>ISR</b>s (<b>I</b>nterrupt <b>S</b>ervice <b>R</b>outines) that make your hardware available to the software you load.
Confused? You won't be, after this episode of Soap! <grin>
Back to Sitemap Index