Les ordinateurs modernes comportent des couches de logiciels et de matériel. Au niveau le plus bas se trouve le matériel qui traite un sous-ensemble du jeu d'instructions de l'unité centrale, plus toutes les instructions qui ne sont que des microprogrammes. Notez que dans certaines implémentations, le micrologiciel peut avoir un jeu d'instructions entièrement distinct de celui du CPU.
Vient ensuite le micrologiciel, il intercepte les opérations que le CPU ne peut pas exécuter et les simule ou fournit une interruption "code op invalide" au système d'exploitation. À ce niveau, le jeu d'instructions publié du CPU est complet.
Le système d'exploitation est la couche suivante. Dans la plupart des implémentations, il gère les interruptions du CPU/firmware et fournit des services aux programmes d'application comme l'allocation de mémoire et les entrées/sorties. Le système d'exploitation fonctionne en "mode privilégié" où il a accès à la mémoire et aux instructions qui ne sont pas disponibles pour le programme d'application.
La couche de programme d'application fonctionne en "mode application" où elle ne peut pas exécuter les instructions privilégiées et ne peut pas accéder directement aux périphériques. Elle utilise les services du système d'exploitation pour demander des choses au système d'exploitation comme les E/S, l'allocation de mémoire, l'accès au système de fichiers, etc.
Certaines implémentations peuvent avoir plusieurs couches de micrologiciels et même de systèmes d'exploitation. Certaines utilisent un ordinateur externe pour contrôler les CPU du système principal.
Certaines implémentations peuvent avoir plusieurs couches de firmware et même des systèmes d'exploitation.