There are many ways to implement an algorithm using a digital system. We can implement an algorithm directly in software, firmware, hardware or a mix of these techniques. For example, a program can be written for a microcomputer that uses external hardware (e.g. a calculator chip) to do floating point arithmetic. Another example is a machine language program that is optimized by rewriting heavily used portions of the program in firmware. Thus we see that a user (a term we shall use throughout to mean the implementor of the algorithm) potentially has a wide range of implementation methods from which to choose.
/lp/association-for-computing-machinery/a-case-study-of-the-migration-of-an-algorithm-across-software-firmware-9z4lzwu0UW