hur hämtning, avkodning och exekvering av arbete –

För att förenkla och göra begreppen som beskrivs i den här artikeln tydligare, bestämde vi oss för att beskriva en extremt enkel processor för aktuell tid, så i den här artikeln kommer du att se en förklaring av vad instruktionsslingor är på ett generaliserat sätt som kan tillämpas. från de första 8-bitarsprocessorerna till de mest sofistikerade som finns tillgängliga idag

Visualisering av inlärningscykeln

Processorer skiljer sig inte från en viss synvinkel från en förbränningsmotor, som alltid utför en kontinuerlig process av bränsleexplosion i olika skeden, vare sig det är 2-takts eller 4-takt. Anledningen till detta är att i den enklaste versionen fungerar processorerna i tre olika steg, nämligen:

  • Ta emot eller fånga: I vilken instruktionen hämtas från RAM och kopieras till processorn.
  • Avkodning eller avkodning: I vilken den tidigare fångade instruktionen avkodas och skickas till exekveringsenheterna.
  • Avslutad: Om instruktionen tillåts och resultatet skrivs till processorns interna register eller till RAM-minnesadressen

Dessa tre steg utförs på varje processor. Det finns ett fjärde steg, som är återskrivning, där exekveringsenheterna skriver resultatet, men detta tas vanligtvis med i beräkningen under exekveringssteget av instruktionsslingan.

Det första steget i inlärningscykeln: provtagning

Det första steget i instruktionscykeln är ansvarigt för att fånga instruktioner i RAM-minne som tilldelats processorn genom en serie moduler och register, som är följande:

  1. Programräknare eller Programräknare: Vilket pekar på nästa minnesrad där nästa processorinstruktion finns. Dess värde ökas med 1 varje gång en fullständig instruktionscykel avslutas eller när en hoppinstruktion ändrar värdet på programräknaren.
  2. Minnesadressregister: MAR kopierar innehållet på PC:n och skickar det till RAM via adressstiften på CPU:n, som är anslutna till adressstiften på själva RAM-minnet.
  3. Minnesdataregister eller minnesdataregister : Om CPU:n behöver läsa minnet, kopierar MDR innehållet i denna minnesadress till det interna CPU-registret, som är ett temporärt överföringsregister, innan dess innehåll kopieras till kommandoregistret. MDR, till skillnad från MAR, ansluter till RAM-datastift, inte adressstift, och i fallet med en skrivinstruktion skrivs även innehållet i det du vill skriva till RAM till MDR.
  4. Instruktionsregister: Den sista delen av hämtningssteget är att skriva instruktionen till instruktionsregistret, från vilket processorstyrenheten kopierar dess innehåll för det andra steget av instruktionscykeln.

Dessa 4 delsteg förekommer i alla processorer, oavsett deras användbarhet, arkitektur och binära kompatibilitet, eller vad vi kallar ISA.

kontrollenhet

Styrenheten är den mest komplexa delen av processorn, och dess uppgifter är följande:

  • De ansvarar för att samordna rörelser och i vilken ordning data rör sig inom och utanför processorn, samt de olika underblock som ansvarar för detta.
  • Generellt sett anses Fetch- eller Fetch Phase-enheterna vara en del av den hårdvara vi kallar Control Unit, och denna hårdvara kallas även Front-End-processorn.
  • Den tolkar instruktioner och skickar dem till de olika verkställande enheter som den är ansluten till.
  • Den sänds till de olika ALU:erna och exekveringsenheterna hos processorn, som agerar
  • Den ansvarar för att fånga och avkoda instruktioner, samt för att skriva resultaten till register, cachar eller till motsvarande RAM-adress.

Styrenheten avkodar instruktionerna, och den gör det eftersom varje instruktion egentligen är en slags mening, där verbet kommer först, och sedan det direkta objektet eller objektet som åtgärden utförs på. Ämnet utesluts i slutändan i detta interna språk på datorer, eftersom det är underförstått att det är datorn själv som gör det, så varje antal bitar är en mening där de första 1:orna och 0:orna motsvarar en åtgärd, och ettan Nästa är datan eller platsen för datan som behöver hanteras …

Andra steget: avkodning

Det finns olika typer av instruktioner, och alla gör inte samma sak, så beroende på typen av instruktion måste vi veta vilka exekveringsenheter som kommer att skickas till, och det mest klassiska sättet att göra detta är att använda det vi ring en avkodare. , som tar varje instruktion, delar upp den internt enligt op-koden eller instruktionen och data- eller minnesadressen där den finns.

Till exempel, i diagrammet ovan, har vi ett processordiagram med endast 8 instruktioner som endast kan kodas med 3 bitar. Var och en av instruktionerna, efter avkodning, skickas till olika exekveringsenheter, som kommer att lösa dem.

Denna kommandoloop är den mest komplexa av alla och bestämmer typen av arkitektur. Beroende på om vi har en reducerad eller komplex uppsättning instruktioner kommer detta att påverka kontrollblockets karaktär, beroende på formatet på instruktionen eller hur mycket som behandlas samtidigt i avkodningssteget, och därför kommer kontrollblocket att har en annan karaktär. Annan.

Det enklaste sättet att visualisera vad som händer är att föreställa sig instruktionerna som tåg som rör sig längs ett komplext järnvägsnät, och en kontrollenhet som leder dem till slutstationen, som är den verkställande enhet som kommer att ansvara för att utföra instruktionen.

Steg tre: Utför

Det sista steget är utförandet av instruktioner, i detta skede är instruktioner tillåtna, men inte alla typer av instruktioner är tillåtna på samma sätt, eftersom sättet att använda utrustningen kommer att bero på funktionen hos var och en av dem. dem, i allmänhet har vi fyra typer av instruktioner:

  • Instruktioner för att flytta bitar: I vilken ordningen för bitarna som innehåller data kontrolleras.
  • Aritmetiska instruktioner: Där matematiska och logiska operationer utförs löses de i så kallade ALU eller aritmetiska logiska enheter.
  • Hoppinstruktioner: I vilket nästa värde på programräknaren ändras, vilket gör att koden kan användas rekursivt.
  • Minnesinstruktion: De används av processorn för att läsa och skriva information från systemminnet.

En annan punkt är instruktionsformat, eftersom en instruktion kan appliceras på data, en skalär eller flera data samtidigt, som vi känner som SIMD. Sammanfattningsvis, och beroende på dataformatet, finns det olika typer av ALU:er för att utföra aritmetiska instruktioner, till exempel har vi idag heltal och flyttalsblock som differentierade block.

Efter att instruktionen är klar skrivs resultatet till en specifik minnesadress och nästa exekveras. Vissa instruktioner styr inte minnesvärden, utan specifika register. Således modifieras programräknarens register av hoppinstruktionerna, om vi vill läsa eller skriva data så styrs registren MAR och MDR.

Relaterade artiklar

Back to top button