SO e CPU são conceitos diferentes. Sim, existe uma CPU, que é a peça principal de hardware no coração da máquina. Ele busca as instruções do firmware na memória do firmware e as executa. (Atualmente, é comum até sistemas pequenos terem várias CPUs para execução paralela, a propósito; portanto, é um pouco desatualizado falar exclusivamente sobre a CPU.)
Firmware é um software armazenado em memória não volátil (ou talvez até somente leitura). Como está nessa memória, o firmware está disponível quando a máquina está ligada. A máquina pode quase imediatamente começar a executar o firmware quando ligada, ou algum pequeno programa de inicialização (o próprio firmware) pode extrair o firmware maior de algum armazenamento eletrônico, como o flash, colocá-lo na RAM e executá-lo. O uso moderno do armazenamento flash nos dias de hoje é o motivo pelo qual às vezes você pode ouvir a frase "piscando o novo firmware", referindo-se a um procedimento de atualização. O firmware não precisa ser facilmente atualizável assim. Ele pode vir em um chip de circuito integrado, para que a atualização de um dispositivo para um novo firmware possa envolver a remoção de um circuito integrado ("chip EPROM") de um soquete e a conexão de um novo. BIOS do PC ' s costumavam ser atualizados dessa maneira e inúmeros outros dispositivos. É realmente de onde a palavra vem. Algumas pessoas não se sentiam à vontade em chamar um programa de "software", se precisassem trocar um chip ou uma placa de circuito para substituí-lo, o que parece mais uma atualização de hardware. Portanto, o "firmware" foi cunhado: algo "mais difícil" de mudar do que o software.
O firmware pode ser um sistema operacional "completo". Por exemplo, o Tomato é um firmware baseado em Linux para roteadores sem fio:
http://www.polarcloud.com/tomato
Podemos entrar no Tomato via ssh e obter um prompt do Linux. Portanto, é um sistema operacional avançado e é firmware. Mas se o roteador tivesse um disco rígido e se o mesmo sistema operacional tivesse que ser carregado a partir desse disco na inicialização, ele não poderia mais ser legitimamente chamado de firmware. O firmware deve estar no armazenamento eletrônico acessível ao processador imediatamente na inicialização, como memória flash ou chips EPROM.
Atualmente, muitos dispositivos de consumo possuem firmware atualizável. Se você possui uma câmera digital, por exemplo, deve encontrar o site e verificar se uma versão mais recente do firmware não está disponível, o que corrige alguns problemas que podem estar presentes no firmware instalado de fábrica. Hoje em dia é fácil atualizar o firmware, mesmo para usuários finais relativamente não técnicos. O tomate mencionado acima é um exemplo de firmware de código aberto de terceiros que substitui o firmware de fábrica.
A palavra "sistema operacional" se refere simplesmente a um programa de controle que possui um certo grau de sofisticação e integridade no gerenciamento dos recursos da máquina e na prestação de serviços de nível razoavelmente alto aos programas: recursos como sistemas de arquivos, protocolos de rede, gerenciamento de memória e processos, acesso de alto nível aos dispositivos e talvez algum modelo de usuário, além de segurança. Nem todos eles precisam estar presentes em um sistema operacional. Normalmente, a memória, gerenciamento de processos e E / S são a chave. Se o programa de controle permitir que outros programas sejam executados, dando a esses programas uma identidade através da qual eles estão associados aos seus próprios recursos, e se lhes fornecer serviços para gerenciar o processador, a memória e executar E / S, podemos chamar esse controle programar um sistema operacional.
Como você está curioso, pode realmente apreciar alguns livros didáticos sobre arquiteturas de computadores, como os de William Stallings ou Hennesy e Patterson.