Hur organiseras samarbete mellan hårdvara och mjukvara i en dator?
Vi kan föreställa oss att maskinen (datorn eller liknande) byggs upp i hierarkiska nivåer, där varje nivå (skikt) har en specifik funktion och existerar som en distinkt hypotetisk maskin (virtuell maskin). På varje nivå exekverar den virtuella maskinen sin egen uppsättning av instruktioner och förväntar sig att de virtuella maskiner i övre och undre nivå gör det samma.
Datorns hierarkiska nivåer illustreras med bilden nedan:
Level 6 User
Användarnivån som består av applikationer och är den nivå som vi är mest bekanta med. På den här nivån kör vi program som ordbehandlare, grafikhanterare, spel, mm. Har ni tänkt att de andra nivåerna är nästan osynliga för oss datoranvändare?
Level 5 High-Level Language
Programmeringsspråksnivån som består av språk som C, C ++, FORTRAN, Pascal. Lips, Java och andra högprogrammeringsspråk till. Dessa språk måste översättas (med antingen en kompilator eller en tolk) till ett språk som maskinen kan förstå. Kompilerade språk översätts till ett programmeringsspråk som är nära till hårdvara, ett assemblerspråk och därefter till maskinkod. Detta innebär att det översätts till nästa lägre nivå. Även som programmerare ser man lite av hur maskinkoder implementeras i lägre nivåer.
Level 4 Assembly Language
Maskinspråknivån som omfattar någon typ av assemblerspråk. Som tidigare nämnts översätts kompilerade språk på högre nivå först till assembler, som sedan översätts direkt till maskinspråk. Detta är en en-till-en-översättning, vilket innebär att en assemblerspråkinstruktion översätts till exakt en maskinspråkinstruktion.
Level 3 System Software
Operativsystemsnivån som behandlar instruktioner för operativsystem. Denna nivå är ansvarig för multiprogrammering, skyddar minne, synkroniseringsprocesser och olika andra viktiga funktioner. Ofta passerar instruktioner översatta från assemblerspråk till maskinspråk genom denna nivå utan att bli modifierade.
Level 2 Instruction Set Architecture – ISA
Maskinnivån, ISA (Instruktionsuppsättningsarkitektur), eller maskinnivå, består av maskinspråket som känns igen av datorsystemets specifik arkitektur. Program skrivna på maskinspråk kan köras direkt på de elektroniska kretsarna utan att instruktioner behöva kompileras.
Level 1 Control
Kontrollnivån, är där en kontrollenhet ser till att instruktionerna avkodas och körs ordentligt och att data flyttas vart och när det ska vara. Styrenheten tolkar maskininstruktionerna som skickas till den, en i taget, från ovanstående nivå, vilket får de nödvändiga åtgärderna att äga rum.
Styrenheter kan utformas på ett av två sätt:
I fastkopplade styrenheter kommer styrsignaler från block med digitala logikkomponenter. Dessa signaler leder all data- och instruktionstrafik till lämpliga delar av systemet. Kabelbundna styrenheter är vanligtvis mycket snabba eftersom de faktiskt är fysiska komponenter. Men när de väl är implementerade är de mycket svåra att ändra av samma anledning.
Det andra alternativet för kontroll är att implementera instruktioner med hjälp av ett mikroprogram. Ett mikroprogram är ett program skrivet på ett lågnivåspråk som implementeras direkt av hårdvaran. Maskininstruktioner som produceras på nivå 2 matas in i detta mikroprogram, som sedan tolkar instruktionerna genom att aktivera hårdvara som är lämplig för att utföra original instruktionen. En instruktion på maskinnivå översätts ofta till flera mikrokodinstruktioner. Detta är inte den en-till-en-korrelation som finns mellan monteringsspråk och maskinspråk. Mikroprogram är populära eftersom de kan modifieras relativt enkelt. Nackdelen med mikroprogrammering är naturligtvis att det extra översättningsskiktet vanligtvis resulterar i långsammare instruktionskörning.
Level 0 Digital Logic
Den digitala logiska nivån, är där vi hittar de fysiska komponenterna i datorsystemet: grindarna och ledningarna. Dessa är de grundläggande byggstenarna, implementeringarna av den matematiska logiken, som är gemensamma för alla datorsystem.