Not to quibble, but CPUs also have embedded software. I'm not sure what the minimun instruction set is for a full featured computer, but it's probably less than half a dozen instructions. Intel computers have a very complex instruction set embedded in microcode. Computer instructions are software no matter where or how they are stored. The term software refers to its purpose, not the method in which it is stored. The term software was spun off the term hardware. Software are instructions that control hardware (no matter how they are stored). This is basic Computer Science 101 stuff.
I never got to take Computer Science 101. It wasn't available when and where I went to college. I had graduated before I ever saw a computer. I have done programming for many years, including a touch of assembly language.
I am curious at what level in a CPU we distinguish between computer and instruction. Or do we?
Let's just get over this everybody. We've let LVD waylay the argument into being about definitions of words. Are we computer people or are we lexicographers?
Start over with some basic, undisputable facts (carefully worded for LVD):
- IBM created its PC using off the shelf parts
- IBM wrote a BIOS to tie those parts together into a system called an IBM PC
- Due to an unwilingness to license the BIOS to others to produce IBM-compatible PCs, IBM was the sole legal source of IBM-compatible PC systems, in other words IBM owned the business of producing IBM-compatible PCs
- Compaq reverse-engineered the BIOS in a clean-room setting
- Due to this fact, Compaq was able to sell IBM-compatible PC systems (including any firmware within), IBM no longer being the sole provider
Said more loosely, Compaq broke IBM's lock on IBM-compatible PC hardware (when hardware is used to describe the complete system).
Now as to the definition of hardware and software, don't try to get into semantics since it just wastes everybody's time.