Dans un ordinateur, les composants sont placés sur un circuit imprimé (la carte mère), un circuit sur lequel on vient connecter les différents composants d'un ordinateur, et qui les relie via divers bus. Si on regarde une carte mère de face, on voit un grand nombre de composants assez divers.
Les composants les plus visibles sont les connecteurs, là où l'on vient brancher les périphériques, la cartes graphique, le processeur, la mémoire, etc. Dans l'ensemble, toute carte mère contient les connecteurs suivants :
Outre les connecteurs, une carte mère contient les différents bus qui connectent les composants entre eux, ainsi que divers circuits électroniques intégrés à la carte mère. Ces derniers n'ont pas de connecteurs, mais sont soudés à la carte mère et sont indispensables à son bon fonctionnement. Un bon exemple est celui du circuit d'alimentation, qui est en charge de la gestion de la tension d'alimentation. Il contient des composants aux noms à coucher dehors pour qui n'est pas électronicien : régulateurs de tension, convertisseurs alternatif vers continu, condensateurs de découplage, et autres joyeusetés.
Dans ce chapitre, nous allons étudier ces composants électroniques, mais aussi comment sont organisés les bus sur une carte mère. Nous allons voir que la façon dont les composants sont connectés entre eux par des bus a beaucoup changé au fil du temps et que l'organisation de la carte mère a évoluée au fil du temps. Les cartes mères se sont d'abord complexifiées, pour faire face à l'intégration de plus en plus de périphériques et de connecteurs. Mais par la suite, les processeurs ayant de plus en plus de transistors, ils ont incorporé des composants autrefois présents sur la carte mère, comme le contrôleur mémoire.
Les bus de communication et le "chipset".
L'organisation des carte mères des ordinateurs personnels a évolué au cours du temps pendant que de nombreux bus apparaissaient. On considère qu'il existe trois générations de cartes mères bien distinctes. La première génération utilise un bus unique pour tous l'ordinateur, les autres utilisent un plus grand nombre de bus.
La première génération : un bus système unique.
Pour les bus de première génération, un seul et unique bus reliait tous les composants de l'ordinateur. Ce bus s'appelait le bus système ou "backplane bus". Ces bus de première génération avaient le fâcheux désavantage de relier des composants allant à des vitesses très différentes : il arrivait fréquemment qu'un composant rapide doive attendre qu'un composant lent libère le bus. Le processeur était le composant le plus touché par ces temps d'attente. Du fait de l'existence d'un bus unique, les entrées-sorties étaient mappées en mémoire.
La seconde génération : l'apparition du "chipset".
Par la suite, le processeur et la mémoire sont devenus de plus en plus rapide avec le temps, au point que les périphériques ne pouvaient plus suivre. Il en a été de même avec la carte graphique, quelques temps plus tard. Les différents composants de la carte mère étaient alors séparés en deux catégories : les "composants lents" et les "composants rapides". Les composants rapides regroupent le processeur, la mémoire RAM et la carte graphique, les autres sont regroupés dans les composants lents. Les besoins entre des deux classes de composants étant différents, utiliser un seul bus pour les faire communiquer n'est pas idéal. Les composants rapides demandent des bus rapides, de forte fréquence, avec un gros débit pour communiquer, alors que les composants lents ont besoin de bus moins rapide, de plus faible fréquence.
Ce problème a été résolu par l'intégration de deux circuits distincts : le "northbridge" et le "southbridge". Le "southbridge" est le "chipset" proprement dit, à savoir qu'il regroupe les différents contrôleurs de périphériques, comme nous l'avions vu dans le chapitre "Le contrôleur de périphériques". Le "northbridge", quant à lui, sert d'interface entre le processeur, la mémoire et la carte graphique. Le processeur est connecté au "northbridge", qui lui-même est connecté à la mémoire, la carte graphique, et au "southbridge". Le "northbridge" gère les échanges entre processeur, mémoire et carte graphique. Il intègre notamment le contrôleur mémoire externe, ainsi que d'autres circuits importants. Le bus qui relie le processeur au "northbridge" est appelé le Front Side Bus, abrévié en FSB. Le bus de transmission qui relie le "northbridge" au "southbridge" est un bus dédié, spécifique au "chipset" considéré, sur lequel on ne peut pas dire de généralités. Le schéma indique ces deux bus, en bleu pour le FSB, en rouge pour le second.
La troisième génération : l'intégration du "northbridge" au processeur.
Sur les cartes-mères récentes, le "northbridge" est intégré au processeur. Ou plus précisément, nous devrions dire que le contrôleur mémoire a été intégré au processeur. Concrètement, cette organisation illustrée ci-dessous fait que le processeur est directement connecté à la RAM et au "southbridge", le reste de la carte mère ne change pas. Cela ne vaut que pour les cartes mères qui datent au moins des années 2000, depuis la sortie de l'Athlon64. Les raisons derrière cette intégration ne sont pas très nombreuses. La raison principale est qu'elle permet diverses optimisations quant aux transferts avec la mémoire RAM. De sombres histoires de "prefetching", d'optimisation des commandes, et j'en passe. La seconde est surtout que cela simplifie la conception des cartes mères, sans pour autant rendre vraiment plus complexe la fabrication du processeur. les industriels y trouvent leur compte.
Par la suite, la carte graphique fût aussi connectée directement sur le processeur. Le "northbridge" disparu alors complétement. Sur les cartes mères intel récentes, le "chipset" est appelé le "Platform Controler Hub", ou PCH. l'organisation des bus sur la carte mère qui résulte de cette connexion du processeur à la carte graphique, est illustrée ci-dessous, avec l'exemple du PCH. 
La gestion des fréquences et des durées.
Les composants d'un ordinateur sont cadencés à des fréquences très différentes. Par exemple, le processeur fonctionne avec une fréquence plus élevée que l'horloge de la mémoire RAM. Les différents signaux d'horloge sont générés par la carte mère. Intuitivement, on se dit qu'il y a un circuit dédié par fréquence. Mais c'est en fait une erreur : en réalité, il n'y a qu'un seul générateur d'horloge. Ce dernier produit une horloge de base, qui est « transformée » en plusieurs horloges, grâce à des montages électroniques spécialisés. Les avantages de cette méthode sont la simplicité et l'économie de circuits. La fréquence de base est souvent très petite comparé à la fréquence du processeur ou de la mémoire, ce qui est contre-intuitif. Mais la fréquence de base est multipliée par les circuits transformateurs pour obtenir la fréquence du processeur, de la RAM, etc. Ainsi, la fréquence du processeur et de la RAM sont des multiples de cette fréquence de base. Naturellement, les circuits de conversion de fréquence sont donc appelés des multiplieurs de fréquence.
Le générateur de fréquence : un oscillateur à Quartz.
Le générateur de fréquence est le circuit qui génère le signal d'horloge envoyé au processeur, la mémoire RAM, et aux différents bus. Sans lui, le processeur et la mémoire ne peuvent pas fonctionner, vu que ce sont des circuits synchrones dans les PC actuels. Il existe de nombreux circuits générateur de fréquence, qui sont appelés des oscillateurs en électronique. Ils sont très nombreux, tellement qu'on pourrait écrire un livre entier sur le sujet. Entre les oscillateurs basés sur un circuit RLC (avec une résistance, un condensateur et une bobine), ceux basés sur une résistance négative, ceux avec des amplificateurs opérationnels, ceux avec des lampes à néon, et j'en passe ! Mais nous n'allons pas parler de tous les oscillateurs, la plupart n'étant pas utilisés dans les ordinateurs modernes.
La quasi-totalité des générateurs de fréquences des ordinateurs modernes sont des dispositifs à quartz, similaires à celui présent dans nos montres électroniques. Les oscillateurs à Quartz sont fabriqués en combinant un amplificateur avec un cristal de Quartz. Ces générateurs de fréquences fournissent une fréquence de base qui varie suivant le modèle considéré, mais qui est souvent de 32 768 Hertz, soit 2^15 cycles d'horloge par seconde. Ils ont une forme facilement reconnaissable, comme montré dans l'image ci-contre. Vous pouvez le repérer assez facilement sur une carte mère si jamais vous en avez l'occasion.
Pour ceux qui voudraient en savoir plus sur le sujet, sachez que le wikilivre d'électronique a un chapitre dédié à ce sujet, , disponible via le lien suivant. Attention cependant : le chapitre n'est compréhensible que si vous avez déjà lu les chapitres précédents du wikilivre sur l'électronique et il est recommandé d'avoir une bonne connaissance des circuits RLC/LC, sans quoi vous ne comprendrez pas grand chose au chapitre.
Les multiplieurs de fréquence.
De nos jours, les ordinateurs font faire cette conversion de fréquence par un composant appelé une PLL ("Phase Locked Loop"), qui sont des composants assez versatiles et souvent programmables, mais il est aussi possible d'utiliser des circuits à base de portes logiques plus simples mais moins pratiques. Comprendre le fonctionnement des PLLs et des générateurs de fréquence demande des bases assez solides en électronique analogique, ce qui fait que nous n'en parlerons pas en détail dans ce cours. 
Les "timers" intégrés à la carte mère.
Le générateur de fréquence est souvent combiné à des "timers", des circuits qui comptent des durées bien précises et sont capables de générer des fréquences. Pour rappel, les "timers" sont des compteurs/décompteurs qui génèrent une interruption ou un signal quand ils atteignent une valeur limite. Ils permettent de compter des durées, exprimées en cycles d’horloge. Les fonctions de Windows ou de certains logiciels se basent là-dessus, comme celles pour baisser la luminosité à une heure précise, passer les couleurs de l'écran en mode nuit, certaines notifications, les tâches planifiées, et j'en passe. Ils permettent aussi d’exécuter une interruption à intervalle régulier, ou après une certaine durée. Par exemple, on peut vouloir générer une interruption à une fréquence de 60 Hz, pour gérer le rafraichissement de l'écran. Une telle interruption s'utilisait autrefois sur les anciens ordinateurs ou sur les anciennes consoles de jeux vidéo et portait le nom de "raster interrupt".
Un ordinateur est rempli de "timers" divers. Dans ce qui va suivre, nous allons voir les principaux "timers", qui sont actuellement intégrés dans les PC anciens et modernes. Ils se trouvent sur la carte mère ou dans le processeur, tout dépend du "timer". Sur les anciens PC, on trouve deux "timers" : l'horloge temps réel et le PIT. L'horloge temps réel génère une fréquence de 1024 Hz, alors que le PIT est un Intel 8253 ou un Intel 8254 programmable par l'utilisateur. Les PC récents n'utilisent qu'un seul "timer" qui remplace les deux précédents : le "High Precision Event Timer". Un ordinateur contient d'autres "timers", comme le "timer" ACPI, le "timer" APIC, ou le "Time Stamp Counter", mais ces derniers sont intégrés dans le processeur et non sur la carte mère.
Le plus important est qu'il y a une horloge temps réel cadencée à fréquence de 1 024 Hz, soit près d'un Kilohertz, ou du moins un circuit capable de l'émuler. Dans ce qui suit, nous la noterons RTC, ce qui est l'acronyme du terme anglais "Real Time Clock". La RTC est utilisée par le système pour compter les secondes, afin que l'ordinateur soit toujours à l'heure. Vous savez déjà que l'ordinateur sait quelle heure il est (vous pouvez regarder le bureau de Windows dans le coin inférieur droit de votre écran pour vous en convaincre) et il peut le faire avec une précision de l'ordre de la seconde.
Pour savoir quel jour, heure, minute et seconde il est, l'ordinateur utilise la RTC, ainsi qu'un circuit pour mémoriser la date. La CMOS RAM mémorise la date exacte à la seconde près. Son nom nous dit qu'elle est fabriquée avec des transistors CMOS, mais aussi qu'il s'agit d'une mémoire RAM. Mais attention, il s'agit d'une mémoire RAM "non-volatile", c'est à dire qu'elle ne perd pas ses données quand on éteint l'ordinateur. Nous expliquerons plus bas comment cette RM fait pour être non-volatile. La "CMOS RAM" est adressable, mais on y accède indirectement, comme si c'était un périphérique, à savoir que la CMOS RAM est mappée en mémoire. On y accède via les adresses 0x0007 0000 et 0x0007 0001 (ces adresses sont écrites en hexadécimal). Elle mémorise, outre la date et l'heure, des informations annexes, comme les paramètres du BIOS (voir plus bas).
La source d'alimentation de la RTC et de la CMOS RAM.
L'horloge temps réel, l’oscillateur à Quartz et la CMOS RAM fonctionnent en permanence, même quand l'ordinateur est éteint. Mais cela implique que ces composants doivent être alimenté par une source d'énergie qui fonctionne lorsque l'ordinateur est débranché. Cette source d'énergie est souvent une petite pile au lithium localisée sur la carte mère, plus rarement une petite batterie. Elle alimente les trois composants en même temps, vu que tous les trois doivent fonctionner ordinateur éteint. Elle est facilement visible sur la carte mère, comme n'importe quelle personne qui a déjà ouvert un PC et regardé la carte mère en détail peut en témoigner.
Sur la plupart des cartes mères, la RTC et la CMOS RAM sont fusionnées en un seul circuit qui s'occupe de la gestion de la date et des durées. Il arrive rarement que la pile au lithium soit intégrée dans ce circuit, mais c'est très rare. La plupart des concepteurs de carte mère préfèrent séparer la pile au lithium de la RTC/CMOS RAM pour une raison simple : on peut changer la pile au lithium en cas de problèmes. Ainsi, si la pile au lithium est vide, on peut la remplacer. Enlever la pile au lithium permet aussi de résoudre certains problèmes, en réinitialisant la CMOS RAM. L'enlever et la remettre réinitialise la "CMOS RAM", ce qui remet à zéro la date, mais aussi les paramètres du BIOS.
Le Firmware : BIOS et UEFI.
La plupart des systèmes contiennent une mémoire ROM qui lui permet de fonctionner. La plupart stockent le programme à exécuter dans cette ROM, et n'utilisent pas de mémoire de masse. On pourrait citer le cas des appareils photographiques numériques, qui stockent le programmes à exécuter dans la ROM. D'autres utilisent cette ROM pour amorcer le système d'exploitation : la ROM contient le programme qui initialise les circuits de l'ordinateur, puis exécute un mini programme qui démarre le système d'exploitation (OS) Cette ROM, et par extension le programme qu'elle contient, est appelée le firmware. Ce firmware est placée sur la carte mère, du moins sur les ordinateurs qui ont une carte mère. Sur les PC modernes, ce firmware s'occupe du démarrage de l'ordinateur et notamment du lancement de l'OS. Il existe quelques standards de firmware, utilisés sur les ordinateurs PC, utilisés pour garantir la compatibilité entre ordinateurs, leur permettre d'accepter divers OS, et ainsi de suite. Il existe deux standard : le BIOS, format ancien pour le firmware qui a eu son heure de gloire, et l'EFI ou UEFI, utilisés sur les ordinateurs récents.
Le BIOS.
Sur les PC avec un processeur x86, il existe un programme, lancé automatiquement lors du démarrage, qui se charge du démarrage avant de rendre la main au système d'exploitation. Ce programme s'appelle le BIOS système, communément appelé BIOS. Autrefois, le système d'exploitation déléguait la gestion des périphériques au BIOS. Ce programme est mémorisé dans de la mémoire EEPROM, ce qui permet de mettre à jour le programme de démarrage : on appelle cela flasher le BIOS. En plus du BIOS système, les cartes graphiques actuelles contiennent toutes un BIOS vidéo, une mémoire ROM ou EEPROM qui contient des programmes capables d'afficher du texte et des graphismes monochromes ou 256 couleurs à l'écran. Lors du démarrage de l'ordinateur, ce sont ces routines qui sont utilisées pour gérer l'affichage avant que le système d'exploitation ne lance les pilotes graphiques. De même, des cartes d'extension peuvent avoir un BIOS. On peut notamment citer le cas des cartes réseaux, certaines permettant de démarrer un ordinateur sur le réseau. Ces BIOS sont ce qu'on appelle des BIOS d'extension. Si le contenu des BIOS d'extension dépend fortement du périphérique en question, ce n'est pas du tout le cas du BIOS système, dont le contenu est relativement bien standardisé.
L'accès au BIOS.
Autrefois, les processeurs x86 avaient des adresses de 20 bits, ce qui fait 1 mébioctet de mémoire adressable. Il faut noter que le processeur démarre systématiquement en mode réel, un mode d'exécution spécifique aux processeurs x86, où le processeur n'a accès qu'à 1 mébioctet de mémoire (les adresses font 20 bits maximum). Par la suite, le système d'exploitation basculera en mode protégé, un mode d'exécution où il peut utiliser des adresses mémoires de 32/64 bits et utiliser la mémoire étendue au-delà du premier mébioctet.
En mode réel, Le premier mébioctet de mémoire est décomposé en deux portions de mémoire : les premiers 640 kibioctets sont ce qu'on appelle la mémoire conventionnelle, alors que les octets restants forment la mémoire haute. Tout le reste de la mémoire, au-delà du premier mébioctet. Les deux premiers kibioctets de la mémoire conventionnelle sont réservés au BIOS, le reste est utilisé par le système d'exploitation (MS-DOS, avant sa version 5.0) et le programme en cours d’exécution. Pour être plus précis, les premiers octets contiennent non pas le BIOS, mais la BIOS Data Area utilisée par le BIOS pour stocker des données diverses, qui commence à l'adresse 0040:0000h, a une taille de 255 octets, et est initialisée lors du démarrage de l'ordinateur. La mémoire haute est réservée pour communiquer avec les périphériques. On y trouve aussi le BIOS de l'ordinateur, mais aussi les BIOS des périphériques (dont celui de la carte vidéo, s'il existe) , qui sont nécessaires pour les initialiser et parfois pour communiquer avec eux. De plus, on y trouve la mémoire de la carte vidéo, et éventuellement la mémoire d'autres périphériques comme la carte son.
Le démarrage de l'ordinateur.
Au démarrage de l'ordinateur, le processeur est initialisé de manière à commencer l'exécution des instructions à partir de l'adresse 0xFFFF:0000h (l'adresse maximale en mémoire réelle moins 16 octets). C'est à cet endroit que se trouve le BIOS. Le BIOS s’exécute et initialise l'ordinateur avant de laisser la main au système d'exploitation. En cas d'erreur à cette étape, le BIOS émet une séquence de bips, la séquence dépendant de l'erreur et de la carte mère. Pour cela, le BIOS est relié à un buzzer placé sur la carte mère. Si vous entendez cette suite de bips, la lecture du manuel de la carte mère vous permettra de savoir quelle est l'erreur qui correspond.
Le démarrage commence avec le POST (Power On Self Test), qui vérifie la stabilité de l'alimentation électrique de l'ordinateur, la stabilité de l'horloge, et l'intégrité des 640 premiers kibioctets de la mémoire. Le BIOS vérifie en premier lieu la stabilité de l'alimentation électrique de l'ordinateur. Il teste les tensions 12 V, 5 V et 3,3 V, et continue son exécution uniquement si celles-ci sont stables et à la bonne valeur. Si les tensions d'alimentation ne marchent pas comme prévu, le BIOS arrête immédiatement le démarrage, pour éviter d'endommager le processeur ou d'autres composants de l'ordinateur. Ensuite, le BIOS vérifie la stabilité de l'horloge et de quelques autres composants : les 640 premiers kibioctets de la mémoire, par exemple.
Ensuite, les périphériques sont détectés, testés et configurés pour garantir leur fonctionnement. Pour cela, le BIOS scanne la mémoire haute à la recherche des périphériques, tout en détectant la présence d'autres BIOS d'extension. Le BIOS est conçu pour lire la mémoire haute, par pas de 2 kibioctets. Par exemple, le BIOS regarde s'il y a un BIOS vidéo aux adresses mémoire 0x000C:0000h et 0x000E:0000h. Pour détecter la présence d'un BIOS d'extension, le BIOS système lit ces adresses et y recherche une signature, une valeur bien précise qui indique qu'une ROM est présente à cet endroit : la valeur en question vaut 0x55AA. Cette valeur est suivie par un octet qui indique la taille de la ROM, lui-même suivi par le code du BIOS d'extension. Si un BIOS d'extension est détecté, le BIOS système lui passe la main, grâce à un branchement vers l'adresse du code du BIOS d'extension. Ce BIOS peut alors faire ce qu'il veut, mais il finit par rendre la main au BIOS (avec un branchement) quand il a terminé son travail.
C'est plus ou moins à ce moment qu'est initialisé le vecteur d'interruption de l'ordinateur. Il se peut que juste avant, le BIOS initialise le vecteur d'interruption au démarrage de l'ordinateur avec les adresses des routines qu'il fournit. Si le vecteur d'interruption est écrit sans erreur dans la mémoire RAM, le BIOS fait émettre un petit bip par l'ordinateur, pour signaler que tout va bien. Par la suite, le système d'exploitation peut remplacer les adresses des interruptions par ses propres routines ou celles des pilotes : on dit qu'il détourne l'interruption. En clair, le vecteur d'interruption ne contiendra plus l'adresse servant à localiser la routine du BIOS, mais celle localisant la routine de l'OS. De fait, les routines du BIOS ne servent à rien avec les systèmes d'exploitation modernes. Si tout fonctionne bien, le BIOS va alors demander l'affichage d'un message à l'écran. Si un problème a lieu durant cette phase de test, le BIOS émet un signal sonore.
À ce stade du démarrage, une interface graphique s'affiche. La majorité des cartes mères permettent d'accéder à une interface pour configurer le BIOS, en appuyant sur F1 ou une autre touche lors du démarrage. Cette interface donne accès à plusieurs options modifiables, qui permettent de configurer le matériel. Ces paramètres sont stockés dans une mémoire flash ou EEPROM séparée du BIOS, généralement fusionnée avec la CMOS, qui est lue par le BIOS à l'allumage de l'ordinateur. Cette mémoire, la mémoire CMOS, est adressable via les adresses 0x0007:0000 et 0x0007:0001.
Par la suite, le BIOS lit le premier secteur du disque dur, qui contient toutes les informations pertinentes pour lancer le système d'exploitation. On rentre alors dans un domaine différent, celui du fonctionnement logiciel des systèmes d'exploitation. Je renvoie ceux qui veulent en savoir plus à mon wikilivre sur les systèmes d'exploitation, et plus précisément au chapitre sur Le démarrage d'un ordinateur.
Les routines d'interruption du BIOS.
Le BIOS fournit des routines d'interruption pour gérer les périphériques et matériels les plus courants. Ce n'est pas pour rien que « BIOS » est l'abréviation de Basic Input Output System, ce qui signifie « programme basique d'entrée-sortie ». Ces routines sont standardisées de façon à assurer la compatibilité des programmes sur tous les BIOS existants. Ces routines peuvent effectuer des traitements parfois très complexes, comme communiquer avec des périphériques. Certaines routines peuvent notamment effectuer plusieurs traitements : par exemple, la routine qui permet de communiquer avec le disque dur peut aussi bien lire un secteur, l'écrire, etc. Pour spécifier le traitement à effectuer, on doit placer une certaine valeur dans le registre AH du processeur : la routine est programmée pour déduire le traitement à effectuer uniquement à partir de la valeur du registre AH. Mais certaines routines ne font pas grand-chose : par exemple, l'interruption 0x12h ne fait que lire une portion de la BIOS Data Area pour y récupérer la taille de la mémoire conventionnelle. De manière générale, beaucoup d'interruptions lisent ou écrivent dans la BIOS Data Area, même si ce n'est pas une obligation. Les routines du BIOS étaient parfois recopiées dans la mémoire RAM afin de rendre leur exécution plus rapide. Certaines options du BIOS, souvent nommées BIOS memory shadowing, permettent justement d'autoriser ou d'interdire cette copie du BIOS dans la RAM. Mais une fois le système d'exploitation démarré, ces fonctions de base ne servent plus. Le vecteur d'interruption est mis à jour après le démarrage pour qu'il pointe non pas vers les interruptions du BIOS, mais vers les interruptions fournies par le système d'exploitation et les pilotes. Cette mise à jour est effectuée par le système d'exploitation, une fois que le BIOS lui a laissé les commandes.
Voici une description assez succincte de ces routines. Vous remarquerez que je n'ai pas vraiment détaillé ce que font ces interruptions, ni comment les utiliser. Il faut dire que de nos jours, ce n'est pas franchement utile. Mais si vous voulez en savoir plus, je vous invite à lire la liste des interruptions du BIOS de Ralf Brown, disponible via ce lien : Liste des interruptions du BIOS, établie par Ralf Brown.
Ce standard, malgré sa simplicité, était cependant extrêmement puissant. Il était possible de créer un OS complet en utilisant juste des appels de routine du BIOS. Toute la gestion des périphériques compatibles avec le BIOS était alors prise en charge par le BIOS. Cette simplicité a notamment été utilisée sur des OS relativement connus. Par exemple, le DOS, ancêtre de Windows, utilisait exclusivement les routines du BIOS !
EFI et UEFI.
L'EFI (Extensible Firmware Interface) est un nouveau standard de firmware, similaire au BIOS, mais plus récent et plus adapté aux ordinateurs modernes. Le BIOS avait en effet quelques limitations, pour part dues à l'organisation du MBR,pour une autre part au standard du BIOS lui-même. Par exemple, la table des partitions utilisée ne permettait pas de gérer des partitions de plus de 2,1 téraoctets. De plus, le BIOS devait gérer les anciens modes d'adressage mémoire des PC x86 : mémoire étendue, haute, conventionnelle, chose qui est quelque peu inutile de nos jours. Cela forçait le BIOS à utiliser des registres 16 bits lors de l’amorçage, ainsi qu'un ancien jeu d'instruction aujourd’hui obsolète. L'EFI a été conçu sans ces limitations, lui permettant d'utiliser tout l'espace d'adressage 64 bits, et sans limitations de taille de partition.
Cependant, la norme de l'EFI et de l'UEFI (une version plus récente) vont plus loin que simplement modifier le BIOS. Ils ajoutent diverses fonctionnalités supplémentaire, qui ne sont pas censées être un ressort d'un firmware de démarrage. Certains UEFI disposent de programmes de diagnostic mémoire, de programmes de restauration système, de programmes permettant d’accéder à internet et bien d'autres. L'EFI peut ainsi être vu comme un logiciel intermédiaire entre le firmware et l'OS.