At what point, and how, does computer hardware touch/move/influence the software?



At what point, and how, does computer hardware touch/move/influence the software?

In: Technology

Software is usually just a list of instructions for the CPU to do, and the CPU just runs those instructions. Sometimes there is instructions for the graphics chip/card, or sometimes those instructions tell the operating system to write to disk. But it’s still just a list of instructions the cpu knows how to execute.

Excellent video on how these instructions look if you are interested:

Almost immediately, for most hardware.

Take an optical mouse, for example. It’s shining a light down at your desk and measuring the reflection. As you move it ever-so-slightly, the pattern in the reflection changes, and there’s an onboard chip (with software on it!) that converts the changing electrical signals into digital information. That information is sent to the computer, where it’s handled by all sorts of other software, depending on if you’re just moving a mouse or playing Call of Duty or something.

Depends on how you think of software. Really the distinction between software and hardware is only useful for us humans to simplify the concept of how a computer works. Like the laws of physics, it breaks down once you put a microscope to the low-level mechanics of it all.

If you define software as, the data and applications stored on a medium like a ROM chip, a disk drive or a DVD disc, then this happens constantly. Initially when the computer boots it (more specifically, the CPU) is designed to load instructions from the BIOS. During the boot process the other hardware is initialised, which in turn will load up its own software usually from some kind of ROM. The network processor loads its initial instructions from ROM then awaits further instructions from the CPU, as do the sound processor, graphics processor, etc. These instructions could all accurately be called software, though we tend to use special names for them like “firmware”. Even the CPU itself has its own special firmware that is called microcode.

Eventually the BIOS tells the CPU to load further instructions from the boot drive (which could be a hard disk, an optical drive, a USB drive, a network address…). From there the operating system is loaded which triggers all kinds of software interactions – applications and services to be loaded, log files to be written to etc.

Once you have a loaded operating system, typically you are waiting on the user to provide further input. Ultimately they end up telling the CPU to store some software on a drive or in memory and/or execute it.

So to answer your question, the “when” is, basically from the start of the boot process and then constantly thereafter; and the “how” is, it’s either something the components were hard-wired to do, or it’s something they were told to do based on instructions that were previously stored somewhere.

For the hardware that provides input to your computer:

First, the hardware translates its activity (such as key on keyboard being pressed; or light being sensed in a sensor in a camera, etc) into electronic signals. Then, the hardware translates those electric signals into numbers, and makes those numbers available for the software to read at a specific memory location.

For hardware that accepts output from your computer, the information flows in reverse using the same path:

The hardware makes available a numbers of memory locations that the software can write to. Software can use these memory location to give hardware data, and instructions on what to do about that data. The hardware then translates those instruction and data into its activities.

Discovering what hardwares are available, and then negotiation these specific memory locations for talking to each of the available hardware, is a large part of what your computer when it boots up.

During computer operation, the hardware and software can talk either periodically, or on an as-needed basis. The specific method is also negotiated at boot up time.

If set to the periodic method (say, 25 times per second, thus once every 40 millisecond) then the hardware and software must finish writing to their memory locations before the time is up, and then read from their memory locations when the time is up.

If set to as-needed method, then the hardware must connect to a special set of signals to the computer’s CPU called “interrupts”, so that the hardware can let the software know that it “needs to talk”.