Skip to main content

4.3 CMOS-geheugen

Een foutje in het CMOS

Het CMOS (Complementary Metal-Oxide Semiconductor) heeft slechts een kleine omvang (64 bytes) en bevat de veranderlijke gegevens van het BIOS. Om er zeker van te zijn dat de gegevens die het bevat correct zijn, heeft het CMOS een methode in huis om zichzelf te controleren op fouten. Telkens wanneer er een waarde in het CMOS wordt gewijzigd, wordt de least significant byte van de som van alle waarden in het CMOS mee bewaard als controlegetal. Een beetje uitleg...

Een byte bestaat uit 8 bits en bevat 256 waarden (zie 2.3.1). Stel dat het hele CMOS uit tien bytes zou bestaan en dat elke instelling een byte beslaat, dan zou het CMOS er zo uit kunnen zien:

  • Instelling 1: 10011011 (decimaal: 155)
  • Instelling 2: 00010011 (decimaal: 19)
  • Instelling 3: 01100010 (decimaal: 98)
  • Instelling 4: 11111011 (decimaal: 251)
  • Instelling 5: 00110011 (decimaal: 51)
  • Instelling 6: 01100110 (decimaal: 102)
  • Instelling 7: 10011110 (decimaal: 158)
  • Instelling 8: 01010001 (decimaal: 81)
  • Instelling 9: 01101110 (decimaal: 110)
  • Instelling 10: 11011000 (decimaal: 216)
     

De som van de numerieke waarden van alle instellingen in dit CMOS is 1668. Binair schrijven we dat als 11010000100. De 8 laatste bits in deze bitreeks vormen wat we noemen de least significant byte, en die is dus het controlegetal: 10000100 (decimaal: 132). Uiteraard bevat het CMOS veel meer gegevens dan 10 bytes. De bitreeks zal dus een flink stuk langer zijn, maar het principe blijft uiteraard hetzelfde. Wanneer een instelling gewijzigd wordt, levert dat dus ook een nieuwe som op, en dus een andere bitreeks. Bijgevolg is ook de least significant byte anders en die wordt dus mee bewaard.

De volgende keer wanneer de instellingen uit het CMOS worden geladen - doorgaans is dat bij het opstarten van de computer - wordt de least significant byte opnieuw berekend en vergeleken met het bewaarde controlegetal. Is die dezelfde, dan kunnen we ervan uitgaan dat de gegevens in het CMOS nog correct zijn. Wijkt die waarde af, dan is er een probleem met de instellingen. Het BIOS is zo geprogrammeerd dat dan de originele fabrieksinstellingen weer worden teruggezet.

Deze foutcontrole in het CMOS wordt de CMOS Blocksum Check genoemd en is een vorm van cyclische pariteitscontrole. Daarmee maak je later nog kennis (zie: 7.1.2 in het Sleutelboek Computerhardware).

Test je kennis