I'm in the middle of a discussion regarding the equivalence of software and hardware computing systems, and I would like some comment. Any arguments and/or documentation (supporting or dissenting) would be appreciated.
My position is that the implementation of a computational processing system can be separated from the act of logical computation, i.e. the agent performing logical processing (i.e., computation) can be distinctly separated from the process. My line of reasoning is more observational at the moment. For example,
- A PID controller may be implementing in pure (analog or digital) hardware or software.
- It is now routine to compile a C program into VHDL, then write the resulting "hardware" configuration into an FPGA.
- Computational systems have been constructed from fluidics and other mechanical systems.
- Computations systems have been constructed from molecular biology (i.e., DNA computing.)
From these observations, one might conclude that hardware computational systems, from simple collections of basic gates to FPGAs, are functionally equivalent to software programs.
The question is not entirely academic: the US FDA places dramatically different validation and verification (V&V) requirements on a medical device depending upon its use of hardware or software for logical operations. Software systems are subject to a number of standards and regulations, and the resulting testing procedure and documentation burden is heavy. On the other hand, simple hardware-only implementations, such as a PID controller, are subject to much less federal regulation.
As a result, a bias is introduced into the design process. A system designer is inherently pushed toward a hardware solution - simply due to the regulatory burden. The assertion that "computational hardware and software do the fundamental same things" is rendered heretical. It implies that hardware solutions are challenged with the issues of software development, and that hardware solutions should be subject to the same V&V processes applied to software. (Note that the US FDA is slowly coming around to this viewpoint - some of their more recent guidelines sound like early software guidelines.)
Can someone suggest a theoretical strategy for establishing this equivalence or a logical argument for divorcing the process of computation from the agent of computation?