Question

I'm not sure if each hardware type (display screen, USB, printer, etc) has to follow a unified standard in order to communicate with the CPU. For example, the bits transmitted back and forth between a display screen interface and the CPU are interpreted by the CPU as a specific command, and this interpretation is also correct (for the same bits) even if another display screen is used (from another manufacturer).

If this is not true, how BIOS is supposed to communicate with hundreds of different hardware devices with varying methods of interpreting bits going back and forth from the device interface to the CPU?

I find the standardization notion to be much more practical.

Was it helpful?

Solution

The BIOS itself actually only needs to understand a limited set of hardware required to boot the CPU. It does not need to understand "hundreds" of devices. For example, the BIOS has no idea what a USB printer is.

In general, the BIOS only understands the following devices:

  • The CPU/Chipset "core" hardware - e.g. the DDR3 memory controller
  • Basic PCI/PCI Express initialization - nothing device-specific
  • The video controller - just enough code for basic initialization, typically provided by an Option ROM
  • The SATA controller - as long as it is IDE/ACHI compatible.
  • The USB controller - possibly just USB 2.0
  • Standard USB storage devices
  • Standard USB keyboard/mouse devices
  • Ethernet controller - typically provided by an Option ROM

Any other device is ignored by the BIOS, unless the vendor included an Option ROM on the board. (You typically see this on SAS/SCSI controllers or Ethernet cards.)

Note most of the devices listed above conform to a standard specification, so they are software compatible regardless of who made it. For example, a USB 2.0 controller should comply with the EHCI spec, it would be compatible across all BIOSes. SATA controllers should follow the AHCI spec.

Once the Operating System loads, it takes over from the BIOS and loads its own drivers to interface with the hardware.

OTHER TIPS

There is specific way(i.e. protocol) for each hardware to communicate with CPU. Maybe we can regard it as "device specification". To communicate with hundreds of different hardware devices BIOS should implement corresponding protocols within it. Thus we can say BIOS is actually a "collection" of specifications.

Whenever new spec is announced, BIOS should be modified to support it, or BIOS does not identify the corresponding device,not to speak of configuring it !

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top