How flexible can hardware get? [closed]

  softwareengineering

This subject is long time in the making for me and it particularly took off when I was researching bootloaders for computers and consumer electronics, which, I will note, differ drastically. I’ve learned how ancient and inflexible x86 hardware is and just how much the structure of software is constrained by it. Examples of what I am talking about:

  • Bootloaders cannot have an arbitrary size.
  • Specialized functions like memory-mapped hardware.
  • An Intel processor’s ties to a particular type of firmware.

So I’ve wondered about systems that might be designed like this:

  • Writing text to the screen handled pixel-by-pixel by an operating system instead of an intermediary microcontroller.
  • Sectorless hard drives wherein a computer simply begins executing at the first address and the bootloader can be any size.
  • Functionality of microcontrollers moved into the software.

I understand that this would take away a lot of simplicity, but do systems like this exist? I am guessing this would be more prevalent in embedded systems. To better understand this question, imagine a device where there are no controllers or independent systems and everything is controlled by the CPU.

5

Addressing your items specifically:

  • Writing text to the screen handled pixel-by-pixel by an operating system instead of an intermediary microcontroller. Early personal computers did this, more or less. Most of the early machines that I can think of had some sort of video chip to generate the video signal that actually drove the display, writing pixels into the display buffer (often a region of main memory) was usually left up to the CPU. Updating the display consumed a fair portion of the CPU’s time (and also tied up the memory bus). Offloading all that work to a graphics processor was a step forward in making machines faster.

  • Sectorless hard drives wherein a computer simply begins executing at the first address. Where is the “first address” on a hard drive? Without some sort of formatting information, there’s no way to find any location on a disk. That said, there’s quite a lot of variety in disk formats. One interesting one was Spiradisc, in which there was essentially just one spiral track. Many optical disc formats (e.g. CD-ROM) are also laid out with spiral tracks. More to the point, though, microprocessors generally are set up to “simply begin executing at the first address” in memory, which is how bootloaders themselves get executed.

  • Functionality of microcontrollers moved into the software. What functionality are you talking about? You might be interested in Reduced Instruction Set Computing, a chip architecture which calls for simplified instructions that can be executed quickly. For example, RISC processors often won’t have instructions for multiplication or division; instead, those operations are built up from simpler instructions like shift and add. This is a clear example of functionality being moved into software.

2

Beyond the now traditional x86 architecture, there are many other forms of computing hardware – all the way to analog processors and back.

I don’t think I can address all of your points (or provide broader ones) but you bring up microcontrollers and embedded systems. The flexibility in embedded is not one of software, but one of modularity. If you have a clearly defined communications protocol; a collection of modular, single-purpose controllers and sensors; and a configuration tool to link inputs and outputs from each module, then you have a highly flexible hardware setup.

The problem is, flexibility brings the expense of complexity – so most modular embedded systems are typically limited and require some central controller to achieve anything beyond simple input/output. In fact, at least in building control systems, things that were once hardware driven in modules (like the control feedback loop relating valve controls to temperature input) have been moved into embedded software in a central controller – creating less flexible hardware, but more flexible systems.

2

Hardware can get as flexible as you may dream, e.g., by implementing CPUs with RAM-based FPGAs. Imagine: one process on Intel, another one on ARM…

But do you really need this flexibility? Sometimes, even in software, the simplicity of hardwired or hardcoded configurations is a huge advantage.

Theme wordpress giá rẻ Theme wordpress giá rẻ Thiết kế website

LEAVE A COMMENT