++ för ett utförlig inlägg. Men att patcha CPUn mikrokod är något man har lånat ifrån minidator världen.. Du kan knappast patcha en Z80 med ny mikrokod. Så att patch mikrokod är väl ändå ett ganska nytt fenomen.
Citat:
Nej, microkod har förekommit i många år för större processorer. Och dagens processorer i mobiltelefoner, laptop och stationära datorer är överlägset mer avancerade än en gammal VAX. Däremot varierar det hur stor del av processorn som använder microkod. I gamla processorer styrdes i princip allt med microkod - finns processorer som kunde växla mellan olika microkod för att on-the-fly kunna växla mellan emulering av två olika processorer utan prestandaförlut för emulering.
Alla PC-processorer har en ganska lång lista med errata. Vissa låter man vara som de är. Vissa hanterar man genom specialskriven kod i drivrutiner respektive i kompilatorns runtime-library för att inte trigga felet. Men i vissa fall så släpper man microkodspatchar så processorn i grunden växlar till alternativ metod att lösa en viss uppgift. I enklaste fallet får processorn lära sig att skapa en exception när den hamnar i visst tillstånd - sedan får vanlig mjukvara hantera denna exception och göra workaround. I vissa fall får processorn internt köra en microkods-styrd state-maskin för att städa sig runt buggen.
Normalt så får du din microkod via BIOS - detta är en anledning till att moderkortstillverkarna släpper nya BIOS-uppdateringar efter att Intel släppt nya steppningar eller helt nya modeller av en processor. Men OS kan också ladda på microkod - Linux-kärnan t ex har support för att ladda ner microkod. Och nu inte bara för Intel-processorer utan även för t ex PPC. Är processorn kraftfull så har den normalt även support för laddning av microkod-fixar.
Just ROM är någonting världen inte tycker mycket om - försvann enorma mängder miljarder på buggar i maskprogrammerade processorer en gång i tiden. Nuförtiden försöker man lagra så mycket som möjligt i flash-minne eller liknande och sedan potentiellt ladda över i RAM för driftning.
Exempel på hantering i en Linux-distribution:
https://wiki.archlinux.org/index.php/microcode
Men microkod-blobarna är fortfarande inte största problemet med en hel bunt moderkort. Som jag nämnde tidigare så har nyare Intel-chipset en extraprocessor inbyggt i chipset-kretsen. Så skit i vad din i7:a gör - finns ytterligare en processor som kan adressera din hårddisk och ditt nätverkskort. Och du tillåts inte välja vilken programvara denna extra-processor skall köra. Vill den processorn köra nätverkskommunikation spelar det ingen roll vilken brandvägg din Linux eller BSD kör - och har du moderkort med inbyggt nätverkskort behöver du ju inte bli så förvånad om denna extraprocessor vet rätt väl hur det integrerade nätverkskortet fungerar.
Och massor med servermoderkort har ett extra nätverkskort inbyggt specifikt för fjärrstyrning av datorhårdvaran. Även i detta fall via en extraprocessor som kan helt ta över allt i datorn - t ex uppdatera BIOS, ändra BIOS-inställningar, formattera hårddisk etc. Allt utan behov av att du har något installerat operativsystem.
När allt går väl så kan man boota datorn och göra fullständig ominstallation av hela datorn över natten. När allt går mindre väl så kan någon annan väcka din dator och patcha in godtyckligt godis på filsystemet på din hårddisk - eller kanske i firmware i disken.
All datautrustning du använder - oberoende av leverantör eller operativsystem - är fortfarande potentiellt farlig. Bara en fråga om var din komfort-gräns går för hur mycket du vill lita på alla inblandade parter. Samt hur känslig information du har och vad konsekensen skulle bli om informationen kommer på vift eller blir modifierad.
Alla PC-processorer har en ganska lång lista med errata. Vissa låter man vara som de är. Vissa hanterar man genom specialskriven kod i drivrutiner respektive i kompilatorns runtime-library för att inte trigga felet. Men i vissa fall så släpper man microkodspatchar så processorn i grunden växlar till alternativ metod att lösa en viss uppgift. I enklaste fallet får processorn lära sig att skapa en exception när den hamnar i visst tillstånd - sedan får vanlig mjukvara hantera denna exception och göra workaround. I vissa fall får processorn internt köra en microkods-styrd state-maskin för att städa sig runt buggen.
Normalt så får du din microkod via BIOS - detta är en anledning till att moderkortstillverkarna släpper nya BIOS-uppdateringar efter att Intel släppt nya steppningar eller helt nya modeller av en processor. Men OS kan också ladda på microkod - Linux-kärnan t ex har support för att ladda ner microkod. Och nu inte bara för Intel-processorer utan även för t ex PPC. Är processorn kraftfull så har den normalt även support för laddning av microkod-fixar.
Just ROM är någonting världen inte tycker mycket om - försvann enorma mängder miljarder på buggar i maskprogrammerade processorer en gång i tiden. Nuförtiden försöker man lagra så mycket som möjligt i flash-minne eller liknande och sedan potentiellt ladda över i RAM för driftning.
Exempel på hantering i en Linux-distribution:
https://wiki.archlinux.org/index.php/microcode
Men microkod-blobarna är fortfarande inte största problemet med en hel bunt moderkort. Som jag nämnde tidigare så har nyare Intel-chipset en extraprocessor inbyggt i chipset-kretsen. Så skit i vad din i7:a gör - finns ytterligare en processor som kan adressera din hårddisk och ditt nätverkskort. Och du tillåts inte välja vilken programvara denna extra-processor skall köra. Vill den processorn köra nätverkskommunikation spelar det ingen roll vilken brandvägg din Linux eller BSD kör - och har du moderkort med inbyggt nätverkskort behöver du ju inte bli så förvånad om denna extraprocessor vet rätt väl hur det integrerade nätverkskortet fungerar.
Och massor med servermoderkort har ett extra nätverkskort inbyggt specifikt för fjärrstyrning av datorhårdvaran. Även i detta fall via en extraprocessor som kan helt ta över allt i datorn - t ex uppdatera BIOS, ändra BIOS-inställningar, formattera hårddisk etc. Allt utan behov av att du har något installerat operativsystem.
När allt går väl så kan man boota datorn och göra fullständig ominstallation av hela datorn över natten. När allt går mindre väl så kan någon annan väcka din dator och patcha in godtyckligt godis på filsystemet på din hårddisk - eller kanske i firmware i disken.
All datautrustning du använder - oberoende av leverantör eller operativsystem - är fortfarande potentiellt farlig. Bara en fråga om var din komfort-gräns går för hur mycket du vill lita på alla inblandade parter. Samt hur känslig information du har och vad konsekensen skulle bli om informationen kommer på vift eller blir modifierad.