Kommandosystem på basiscomputeren. Systemet med computerkommandoer og metoder til at få adgang til data

En vigtig komponent i computerarkitekturen er kommandosystemet. På trods af det store antal varianter af computere, på det laveste ("maskine") niveau, har de meget til fælles. Kommandosystemet på enhver computer indeholder nødvendigvis følgende grupper afr.

1. Dataoverførselskommandoer (census), kopiering af information fra et sted til et andet.

2. Aritmetiske operationer, som computerteknologien faktisk skylder sit navn til. Selvfølgelig er andelen af ​​beregningsmæssige handlinger i en moderne computer mærkbart faldet, men de spiller stadig en vigtig rolle i programmer. Bemærk, at de grundlæggende aritmetiske operationer normalt inkluderer addition og subtraktion (sidstnævnte i sidste ende, oftest på en eller anden måde reducerer også til addition). Hvad angår multiplikation og division, udføres de i mange computere i henhold til specielle programmer.

3. Logiske operationer, der gør det muligt for computeren at analysere den information, der behandles. De enkleste eksempler er sammenligning, samt de velkendte logiske operationer AND, OR, NOT (inversion). Derudover føjes ofte analyse af individuelle kodestykker, deres nulstilling og installation til dem.

4. Skifter af den binære kode til venstre og højre. For at bevise vigtigheden af ​​denne gruppe af kommandoer er det nok at huske multiplikationsreglen i en kolonne: hvert efterfølgende produkt er skrevet i et sådant skema med et skift af et ciffer til venstre. I nogle specielle tilfælde kan multiplikation og division generelt erstattes af et skift (husk, at ved at tilføje eller fjerne nul til højre, det vil sige faktisk at flytte et decimaltal, kan du øge eller mindske det med 10 gange).

5. Kommandoer til input og output af information til udveksling med eksterne enheder. I nogle computere er eksterne enheder specielle servicehukommelsesadresser, så input og output udføres ved hjælp af folketællingskommandoer.

6. Kontrolkommandoer, der implementerer ikke-lineære algoritmer. Først og fremmest bør dette omfatte betingede og ubetingede hop samt instruktioner til at få adgang til en underrutine (hop med en retur). Nogle computere har specielle instruktioner til at organisere cyklusser, men dette er ikke nødvendigt: en cyklus kan reduceres til en eller anden kombination af betingede og ubetingede spring. Ofte inkluderer den samme gruppe af kommandoer nogle få operationer til at styre processoren - såsom "stop" eller NOP ("ingen operation"). Nogle gange bliver de udpeget i en særlig gruppe.

Efterhånden som kompleksiteten af ​​processorenheden vokser, øges antallet af instruktioner, der analyserer tilstanden af ​​kontrolbittene og reagerer på dem. Her kan vi for eksempel navngive bits i processordriftstilstanden og bits til styring af afbrydelsesmekanismer fra eksterne enheder.


For nylig spilles en stadig vigtigere rolle i instruktionssættet af instruktioner til konvertering fra et dataformat til et andet (for eksempel fra 8-bit til 16-bit osv.), Som væsentligt forenkler behandlingen af ​​data af forskellige typer, men kan i princippet erstattes af en sekvens af flere enklere kommandoer.

I betragtning af instruktionssystemet kan man ikke undlade at nævne to moderne indbyrdes konkurrerende retninger i dets konstruktion: en computer med et komplet sæt instruktioner CISC (Complex Instruction Set Computer) og med et begrænset sæt - RISC (Reduced Instruction Set Computer). Opdelingen opstod på grund af, at computeren det meste af tiden skal udføre en lille del af sit instruktionssæt, mens resten bruges sporadisk (i en af ​​de populære artikler blev dette spøgende formuleret som følgende visuelle analogi: "20 % af befolkningen drikker 80 % af øl"). Hvis du således begrænser sættet af operationer væsentligt til de enkleste og korteste, men omhyggeligt optimerer dem, får du en ret effektiv og hurtig RISC-maskine. Sandt nok bliver du nødt til at betale for hastighed ved behovet for softwareimplementering af "kasserede" kommandoer, men ofte er denne pris berettiget: for eksempel for videnskabelige beregninger eller computergrafik er hastighed meget vigtigere end programmeringsproblemer. Mere detaljeret vil spørgsmål relateret til instruktionssystemet for moderne mikroprocessorer blive diskuteret senere i dette kapitel.

Sammenfattende understreger vi endnu en gang, at det grundlæggende sæt instruktioner har ændret sig ret lidt i løbet af computerens hurtige udvikling. Samtidig har metoderne til at specificere adressen på placeringen af ​​information i hukommelsen undergået betydelige ændringer og fortjener særlig overvejelse.

Computerkommandoen består normalt af to dele - operationel og adresse. Den operationelle del (ellers kaldes den også operationskoden - COP) angiver hvilken handling der skal udføres med informationen. Adressedelen beskriver, hvor de anvendte oplysninger opbevares. Et par få kommandoer til at styre driften af ​​maskinen har muligvis ikke en adressedel, for eksempel i en stopkommando; betjeningsdelen er altid tilgængelig.

Operationskoden kan forestilles som et betinget nummer i kommandosystemets generelle liste. Grundlæggende er denne liste bygget i overensstemmelse med visse interne mønstre, selvom de ikke altid er indlysende.

Adressedelen har en meget større variation og bør overvejes mere detaljeret.

Først og fremmest bemærker vi, at instruktioner kan være en-, to- og treadresser, afhængigt af antallet af operander, der deltager i dem.

De første computere havde det mest enkle og intuitive kommandosystem med tre adresser. For eksempel: tag tal fra hukommelsesadresserne A1 og A2, læg dem sammen og indsæt summen i adresse A3. Hvis operationen krævede et mindre antal adresser, så blev de ekstra simpelthen ikke brugt. Lad os sige, at i folketællingsoperationen var kun celler fra kilden og modtageren af ​​information A1 og A3 angivet, og indholdet af A2 havde ingen betydning.

Kommandoen med tre adresser var let at tyde og praktisk at bruge, men med væksten i RAM blev dens længde uoverkommelig. Faktisk er instruktionslængden summen af ​​længden af ​​tre adresser og operationskoden. Det følger for eksempel, at for en beskeden RAM på 1024 celler, kræves der kun 3 * 10 = 30 bit for at skrive adressedelen af ​​en instruktion, hvilket ikke er særlig praktisk til teknisk implementering. Derfor dukkede to-adressemaskiner op, hvor længden af ​​instruktionen blev reduceret ved at eliminere adressen på resultatposten. I sådanne computere forblev resultatet af operationen i et særligt register (adder) og var egnet til brug i efterfølgende beregninger. I nogle maskiner blev resultatet skrevet i stedet for en af ​​operanderne.

Yderligere forenkling af kommandoen førte til oprettelsen af ​​unicast-maskiner. Overvej kommandosystemet på en sådan computer på et specifikt simpelt eksempel. Lad det være nødvendigt at tilføje tallene gemt i celler med RAM-adresser A1 og A2, og placer summen i en celle med adresse A3. For at løse dette problem skal en unicast-maskine udføre tre kommandoer:

Udtræk indholdet af celle A1 ind i adderen;

Tilføj adderen med nummeret fra A2;

Skriv resultatet fra addereren til A3.

Det kan se ud til, at en unicast-maskine ville have brug for tre gange så mange kommandoer for at løse et problem som en tre-adresse-maskine. Det er faktisk ikke altid tilfældet. Prøv at planlægge dit eget program til at beregne udtrykket A5 = (A1 + A2) * 33 / A4, og du vil opdage, at du har brug for tre tre-adresse-kommandoer og i alt fem en-adresse. Således er unicast-maskinen endnu mere effektiv på nogle måder, da den ikke unødigt skriver mellemresultater til hukommelsen.

For fuldstændighedens skyld skal det siges om muligheden for at implementere en ikke-adresse (null-adresse) maskine ved hjælp af en særlig måde at organisere hukommelsen på - stakken. At forstå principperne for en sådan maskine ville kræve nogle ret detaljerede forklaringer. Nu bruges adresseløse computere praktisk talt ikke. Derfor nøjes vi med at nævne, at et kommandosystem indrettet på denne måde ligger til grund for nogle programmerbare mikroberegnere (f.eks. typerne BZ-21 og BZ-34 og lignende).

Indtil nu, i beskrivelsen af ​​strukturen af ​​en maskininstruktion, har vi brugt det intuitive koncept for informationsadresse. Lad os nu overveje spørgsmålet om at adressere RAM-elementer mere detaljeret og strengt. Hukommelsen var enklest organiseret i computere fra de første to generationer. Den bestod af separate celler, hvor indholdet af hver blev læst eller skrevet som en helhed. Hver hukommelsescelle havde sit eget nummer, som blev kaldt adressen. Det er klart, at adresserne på tilstødende RAM-celler er konsekutive heltal, dvs. afvige med én. I de pågældende computere blev der kun brugt data af én type (reelle tal), og deres længde var lig med længden af ​​maskininstruktionen og faldt sammen med kapaciteten af ​​hukommelsen og alle andre enheder på maskinen. For eksempel påpeger vi, at cellen i en typisk computer af anden generation bestod af 36 bit.

Meget ofte blev programmet designet til at behandle et vist antal af indholdet af på hinanden følgende celler ved hjælp af de samme formler (på højt niveau sprog blev sådanne strukturer senere kaldt arrays). Computerne fra de første to generationer sørgede for særlige mekanismer til cyklisk behandling af informationsarrays. Til dette formål kunne maskininstruktioner ud over almindelige adresser bruge modificerede, hvor en speciel styrebit var sat til én. Da kommandoen blev udført, blev værdien fra specielle indeksceller tilføjet til de ændrede adresser markeret på denne måde. Ved at ændre indholdet af indekscellerne var det muligt at få adgang til forskellige elementer i arrayet. Lad os især understrege, at dannelsen af ​​den resulterende adresse blev udført i CU i det øjeblik, kommandoen blev udført, så den oprindelige kommando forblev uændret i RAM.

Den beskrevne adressemodifikationsmekanisme forenklede i høj grad skrivningen af ​​cykliske programmer, såsom at finde summen af ​​på hinanden følgende RAM-celler, kopiere individuelle hukommelsessektioner osv.

I computere i tredje generation har ideologien om at bygge hukommelse ændret sig væsentligt: ​​den mindste del af information til udveksling med RAM blev sat lig med 8 binære cifre, dvs. en byte. Det blev muligt at behandle flere typer data: teksttegn (1 byte), heltal (2 bytes), reelle tal med almindelig eller dobbelt præcision (henholdsvis 4 eller 8 bytes). I denne henseende blev en ny konventionel enhed for informationsmåling introduceret - et maskinord. Det var lig med 4 bytes og svarede til længden af ​​et standard reelt tal. Alle mængder af information begyndte at blive målt i enheder, der er multipla af et ord: dobbeltord, halvt ord osv. Naturligvis begyndte adressen (RAM-cellenummer) i maskiner med en byte-organisation at henvise til en enkelt byte; hukommelsesbytes har tal, der stiger med én. Et ord består af flere på hinanden følgende bytes. Som adresse på et ord er det praktisk at tage adressen på en af ​​de bytes, der danner det (normalt bruges den mindst signifikante byte, som har det mindste tal). Således ændres ordenes adresser ikke længere gennem en; deres stigning afhænger af længden af ​​maskinordet i bytes og er lig med fire.

Størrelsen på maskinordet blev tilsyneladende valgt ud fra formaterne af den behandlede information og ikke i forbindelse med kapaciteten af ​​nogen enheder. For at bekræfte dette præsenterer vi et par fakta om typiske tredjegenerationscomputere fra EC-familien. Den aritmetiske logiske enhed i EC-1022-modellen havde 16 binære cifre, EC-1033 havde 32 cifre, og EC-1050 havde 64 cifre. Samtidig blev der valgt 4 bytes til én adgang til RAM i "EC-1022" og "EC-1033", i "EC-1050" - 8 bytes (og i "EC-1045" - 16 bytes). Variationen af ​​tal indikerer således, at 32 bit (4 bytes) ikke var en teknisk allokeret mængde information.

I tredje generations maskiner dukkede flere andre funktioner op: forskellige instruktionslængder afhængigt af dataadresseringsmetoden, tilstedeværelsen af ​​speciel ultrahurtig registerhukommelse, beregningen af ​​den effektive RAM-adresse som summen af ​​flere registre osv. Alt dette blev videreudviklet i computere i den fjerde generation, for hvilke mikroprocessorens kapacitet er blevet en af ​​de vigtigste egenskaber. Overvejelse af funktionerne i hukommelsesstrukturen i fjerde generations computere vil blive udskudt til næste afsnit.

test spørgsmål

1. Hvad er computerarkitektur? Formuler en definition og dechifrer den.

2. Tegn en analogi mellem computerarkitektur og det almindelige arkitekturbegreb. Hvad er fælles, og hvad er forskellen?

3. Hvad er fælles, og hvad er forskellen mellem begreberne "intern computerenhed"

og "computerarkitektur"?

4. Hvad er en familie af computere? Giv eksempler.

5. Forklar, hvad princippet om softwarekompatibilitet er. Hvad er bottom-up-kompatibilitet (forklar med eksemplet med en af ​​de familier, du kender)?

6. Er følgende fakta relateret til begrebet "arkitektur":

a) Bruger computeren dynamiske (eller statiske) RAM-chips?

b) har computeren udvidet hukommelse?

c) har (har ikke) computeren en fælles bus, hvorigennem information overføres mellem dens enheder?

d) i INTEL 80386-processoren er der tilføjet et par nye til kommandosystemet sammenlignet med INTEL 80286?

e) er hukommelseskapaciteten for den nye computermodel blevet fordoblet?

7. Angiv hovedprincipperne for von Neumann arkitektur og forklar deres indhold.

8. Hvad er årsagen til den udbredte brug af det binære system i computere?

9. Er det muligt. ser på indholdet af en enkelt hukommelsescelle, bestemme hvilken information der er gemt i den: tal, kommando, symboler?

10. Hvad er hovedkomponenterne i en computer?

11. Hvad er en programtæller, og hvilken rolle spiller den?

12. Hvad er en motorvej (bus)?

13. Hvad er fordelene ved computerens rygradsstruktur?

14. Hvad er en ekstern enhedscontroller, og hvilken rolle spiller den i?

15. Hvilken rolle spiller videohukommelse i en computer?

a) teksttilstand (24 linjer med hver 80 tegn);

b) grafisk sort-hvid-tilstand med en skærmstørrelse på 640x200 pixels;

c) 16-farvetilstand med samme skærmstørrelse.

17. Hvad er DMA-tilstand?

18 Hvad er navnet på den elementære komponent i en maskinkommando? Hvad kan bestemme hastigheden af ​​kommandoudførelsen?

19. Beskriv de vigtigste trin i udførelsen af ​​en maskinkommando. Særlig opmærksomhed

være opmærksom på programtællerens rolle.

20. Hvad er kommandopipelining, og hvad er dets fordele?

21. Hvad er de vigtigste operationer inkluderet i kommandosystemet på enhver computer?

Beskriv kort hver af disse grupper.

22. Forklar hvorfor det er muligt at bygge en computer med en reduceret (ufuldstændig)

kommandosæt og hvad det giver.

23. Hvilke dele består computerteamet af? Beskriv kort deres formål.

24. Hvad er forskellen mellem en-, to- og tre-adresse kommandoer?

25. Hvad er en RAM-adresse?

26. Hvordan kan du bruge den samme kommando til at arbejde med flere

på hinanden følgende celler?

27. Angiv forskellene i hukommelsesenheden på tredjegenerationscomputere sammenlignet med de to foregående.

En vigtig komponent i computerarkitekturen er kommandosystemet, derfor vil vi overveje dette spørgsmål yderligere.

Under hold forstå helheden af ​​information præsenteret i form af binære koder, der er nødvendige for, at processoren kan udføre det næste trin.

I kommandokoden er visse cifre (felter) tildelt til placering af information:

Om typen af ​​operation,

Adresser på RAM-celler, hvori de behandlede data er lagret,

Adresser på hukommelsesceller, hvor resultatet af operationen vil blive skrevet.

En forudbestemt feltstruktur, der gør det muligt for computeren at genkende komponentdelene af kommandokoden, kaldes Kommandoformat .

Eksempler på kommandoformater er vist i figur 5.

Figur 5

Hovedelementet i kommandokoden er operationskoden (COP), som bestemmer, hvilke handlinger der skal udføres på denne kommando. Under den tildeles N højordenscifre af formatet.

De resterende cifre indeholder A1 og A2 - adresserne på operanderne, A3 - adressen på resultatet.

Fordelingen af ​​felter i kommandoformatet kan ændre sig, når adresseringsmetoden ændres.

Længden af ​​kommandoen afhænger af antallet af adressefelter. I henhold til antallet af adresser er kommandoer opdelt i uadresserede; en-, to-, tre-adresse.

Husk på, at kommandokoden indeholder information om de data, som en operation skal udføres på. Disse data kaldes operander. Normalt er operanderne indeholdt i computerens hoved- eller registerhukommelse. Den måde, operander slås op i hukommelsen, bestemmer også formatet på instruktionen.

Der er 2 forskellige principper for at søge operander i hukommelsen: associativ og adresse:

- Associativ søgning (søg efter indholdet af hukommelsescellen) involverer visning af indholdet af alle hukommelsesceller for at identificere koden, der indeholder den associative funktion specificeret af kommandoen.

- Adressesøgning forudsætter, at operanden er placeret på den adresse, der er angivet i instruktionens adressefelt.

Skelne mellem operandens udførelsesadresse og instruktionens adressekode.

Operand-udførelsesadresse kaldet den binære kode for nummeret på den hukommelsescelle, som operanden vil blive skrevet eller læst med.

Kommando adressekode kaldes den binære kode i kommandoens adressefelt, med hvilken det er nødvendigt at danne operandens effektive adresse. I en computer passer adressekoden og udførelsesadressen ikke sammen, så adresseringsmetoden kan defineres som en metode til at generere udførelsesadressen ud fra instruktionens adressekode.

Disse begreber vil blive brugt yderligere i beskrivelsen af ​​metoder til adressering af operander.

Operandadresseringsmetoder, afhængigt af typen af ​​søgning efter operander i hukommelsen, er klassificeret:

1) ved tilstedeværelsen af ​​adresseoplysninger i kommandoen til:

-eksplicit adressering. Med denne metode har instruktionskoden et operandadressefelt;



- implicit adressering. Med denne metode er der ikke noget adressefelt i instruktionen, og adressen på operanden er underforstået af opkoden. For eksempel kan adressen på destinationsmodtageren udelukkes fra kommandoen, det er underforstået, at resultatet er skrevet i stedet for den anden operand.

2) i henhold til hyppigheden af ​​adgang til RAM:

- direkte adressering. Ved direkte adressering er operanden placeret direkte i instruktionens adressefelt (Figur 6).

Figur 6

- direkte adressering. Med direkte adressering tilgås operanden af ​​adressekoden i instruktionsfeltet. I dette tilfælde falder udførelsesadressen sammen med adressen på instruktionskoden. Dette kan illustreres af følgende figur (Figur 7).

Figur 7

- indirekte adressering. Ved indirekte adressering angiver instruktionskoden adressen på hukommelsesstedet, hvor ikke selve operanden er placeret, men dens adresse, kaldet en pointer. Dette kan illustreres af følgende figur (Figur 8).

Figur 7

3) ifølge metoden til at danne adresserne på hukommelsesceller:

- Absolut henvendelse det antages, at den binære kode for hukommelsescellens adresse kan udtrækkes fuldstændigt enten fra instruktionens adressefelt eller fra en anden celle i tilfælde af indirekte adressering.

- Relativ adressering antag, at operandens binære kode er dannet af flere komponenter:

B - basiskode;

I - indekskode;

C - offset kode.

Disse komponenter bruges i forskellige kombinationer.

Typer af relativ adressering:



Figur 9

Registerhukommelsen bruges til at danne operandens adresse.

Adressen på i-operanden i arrayet er defineret som summen af ​​den initiale adresse på operand-arrayet, givet af offset S, og indekset i, skrevet i et af registerhukommelsesregistrene, kaldet indeksregisteret.

Adressen på indeksregisteret er angivet i kommandoen af ​​adressefeltet på indekset Ai.

I hver i-te cyklus ændres indholdet af indeksregisteret med en konstant værdi, normalt 1.

For programmer med arrays, der kræver den samme type operationer på array-elementer, er det praktisk at bruge denne type adressering

2) Autoindeks adressering. Med auto-indeksering øges den indirekte adresse i RP-registret automatisk (auto-increment-adressering) eller dekrementeres (auto-decrement-adressering) med en konstant mængde før eller efter operationen udføres.

3) Stakadressering. Stack memory er meget udbredt i moderne computere. Selvom adressen på stakadressen ikke er i instruktionen, er den dannet af kontrolskemaet (figur 9):

Figur 9

Kun ét register er tilgængeligt til at læse en post - toppen af ​​stakken.

Denne adresseringsmetode bruges især af programafbrydelsessystemet ved opkald af subrutiner.

Stakhukommelse implementeres på basis af konventionel hukommelse ved hjælp af en stackpointer og autoindeksadressering. Logisk er stakhukommelsesplaceringerne arrangeret således, at den sidst skrevne adresse læses først, og den første adresse, der skrives, læses sidst. En sådan logisk organisation er dannet af en speciel tæller. Denne tæller kaldes stackpointeren SP er et mikroprocessorregister. En hukommelsesplacering, der i øjeblikket kan skrives til, såsom returadressen fra en underrutine, kaldes toppen af ​​stakken . Antallet af hukommelsesceller beregnet til at organisere en stak kaldes stak dybde . Den sidste hukommelsesplacering, der kan skrives til, kaldes stak bund . Skrivning til stakken udføres ved hjælp af auto-dekrement-adressering, og læsning udføres ved hjælp af auto-increment-adressering (figur 10).

Figur 10

Eksempel. Kald en subrutine skrevet i C.

På C-sproget kaldes subrutiner for funktioner. En funktion kan have argumenter og lokale variabler, dvs. variable, der kun eksisterer under udførelsen af ​​funktionen. Antag, at funktionen afhænger af to input-argumenter x og y af en heltalstype og bruger tre lokale variable a, b og c, også af heltalstypen. Funktionen returnerer en heltalsværdi.

Underrutine:

Hovedprogram:

Eksempelvis kaldes funktionen f et bestemt sted i programmet med argumenterne x = 2, y = 3. Det kaldende program skubber de faktiske værdier af argumenterne x og y af funktion f ind på stakken med det første argument for funktionen øverst i stakken, og det andet argument under det. Når en funktionsopkaldsinstruktion udføres, placeres returadressen også oven på stakken. I begyndelsen af ​​funktionen f ser stakken sådan ud:

Før udførelse skal funktionen f fange hukommelsesområdet på stakken for dets lokale variable a, b, c.

Sættet af realiserbare maskinhandlinger danner dens kommandosystem .

På trods af det store antal varianter af computere, på det laveste ("maskine") niveau, har de meget til fælles.

Kommandosystemet på enhver computer indeholder nødvendigvis følgende grupper afr:

1. Dataoverførselskommandoer (census), kopiering af information fra et sted til et andet.

Udveksling mellem processorregistre,

Processor og RAM,

processor og periferiudstyr.

2. Aritmetiske operationer. De grundlæggende aritmetiske operationer omfatter normalt addition og subtraktion (sidstnævnte reduceres oftest til addition). Hvad angår multiplikation og division, udføres de i mange computere i henhold til specielle algoritmer.

3. Logiske operationer, der gør det muligt for computeren at analysere den information, der behandles. For eksempel sammenligningsoperationer eller velkendte logiske operationer AND, OR, NOT. Derudover føjes ofte analyse af individuelle kodestykker, deres nulstilling og installation til dem.

4. Skifter af den binære kode til venstre og højre. For at bevise vigtigheden af ​​denne gruppe af kommandoer er det nok at huske multiplikationsreglen i en kolonne: hvert efterfølgende produkt er skrevet i et sådant skema med et skift af et ciffer til venstre. I nogle specielle tilfælde kan multiplikation og division generelt erstattes af et skift (husk, at ved at tilføje eller fjerne nul til højre, det vil sige faktisk at flytte et decimaltal, kan du øge eller mindske det med 10 gange).

5. Kommandoer til input og output af information til udveksling med eksterne enheder. I nogle computere er eksterne enheder specielle servicehukommelsesadresser, så input og output udføres ved hjælp af folketællingskommandoer.

6. Kontrolkommandoer, der implementerer ikke-lineære algoritmer. Dette omfatter primært betingede og ubetingede hop samt instruktioner til at få adgang til en underrutine (hop med retur). Nogle computere har specielle instruktioner til at organisere cyklusser, men dette er ikke nødvendigt: en cyklus kan reduceres til en eller anden kombination af betingede og ubetingede spring. Ofte inkluderer den samme gruppe af kommandoer nogle få operationer til at styre processoren - såsom "stop" eller NOP ("ingen operation"). Nogle gange bliver de udpeget i en særlig gruppe.

I betragtning af instruktionssystemet er det umuligt ikke at nævne to moderne indbyrdes konkurrerende retninger i dets konstruktion: en computer med et komplet sæt instruktioner CISC (Complex Instruction Set Computer) og med et begrænset sæt - RISC (Reduced Instruction Set Computer). Adskillelsen opstod på grund af, at computeren det meste af tiden skal udføre en lille del af sit instruktionssæt, mens resten bruges af og til. Således, hvis vi væsentligt begrænser sættet af operationer til den enkleste og korteste, får vi en ret effektiv og hurtig RISC-maskine. Sandt nok skal du betale for hastighed ved behovet for softwareimplementering af "kasserede" kommandoer, men ofte er denne pris berettiget: For eksempel for videnskabelige beregninger eller computergrafik er hastighed meget vigtigere end programmeringsproblemer.

Computerens hovedcyklus

Dette afsnit diskuterer kort rækkefølgen af ​​handlinger, når du udfører en kommando på en computer. Det kan argumenteres for, at driftscyklussen generelt er den samme for alle von Neumann-maskiner.

Systemet med computerkommandoer og metoder til at få adgang til data

En vigtig komponent i computerarkitekturen er kommandosystemet. På trods af det store antal varianter af computere, på det laveste ("maskine") niveau, har de meget til fælles. Kommandosystemet på enhver computer indeholder nødvendigvis følgende grupper afr.

  • 1. Dataoverførselskommandoer (census), kopiering af information fra et sted til et andet.
  • 2. Aritmetiske operationer, som computerteknologien faktisk skylder sit navn til. Selvfølgelig er andelen af ​​beregningsmæssige handlinger i en moderne computer mærkbart faldet, men de spiller stadig en vigtig rolle i programmer. Bemærk, at de grundlæggende aritmetiske operationer normalt inkluderer addition og subtraktion (sidstnævnte i sidste ende, oftest på en eller anden måde reducerer også til addition). Hvad angår multiplikation og division, udføres de i mange computere i henhold til specielle programmer.
  • 3. Logiske operationer, der gør det muligt for computeren at analysere den information, der behandles. De enkleste eksempler er sammenligning, samt de velkendte logiske operationer AND, OR, NOT (inversion). Derudover føjes ofte analyse af individuelle kodestykker, deres nulstilling og installation til dem.
  • 4. Skifter af den binære kode til venstre og højre. For at bevise vigtigheden af ​​denne gruppe af kommandoer er det nok at huske multiplikationsreglen i en kolonne: hvert efterfølgende produkt er skrevet i et sådant skema med et skift af et ciffer til venstre. I nogle specielle tilfælde kan multiplikation og division generelt erstattes af et skift (husk, at ved at tilføje eller fjerne nul til højre, det vil sige faktisk at flytte et decimaltal, kan du øge eller mindske det med 10 gange).
  • 5. Kommandoer til input og output af information til udveksling med eksterne enheder. I nogle computere er eksterne enheder specielle servicehukommelsesadresser, så input og output udføres ved hjælp af folketællingskommandoer.
  • 6. Kontrolkommandoer, der implementerer ikke-lineære algoritmer. Først og fremmest bør dette omfatte betingede og ubetingede hop samt instruktioner til at få adgang til en underrutine (hop med en retur). Nogle computere har specielle instruktioner til at organisere cyklusser, men dette er ikke nødvendigt: en cyklus kan reduceres til en eller anden kombination af betingede og ubetingede spring. Ofte inkluderer den samme gruppe af kommandoer nogle få operationer til at styre processoren - såsom "stop" eller NOP ("ingen operation"). Nogle gange bliver de udpeget i en særlig gruppe.

Efterhånden som kompleksiteten af ​​processorenheden stiger, stiger antallet af instruktioner, der virker på dem. Her kan vi for eksempel navngive bits i processordriftstilstanden og bits til styring af afbrydelsesmekanismer fra eksterne enheder.

For nylig spilles en stadig vigtigere rolle i instruktionssættet af instruktioner til konvertering fra et dataformat til et andet (for eksempel fra 8-bit til 16-bit osv.), Som væsentligt forenkler behandlingen af ​​data af forskellige typer, men kan i princippet erstattes af en sekvens af flere enklere kommandoer.

I betragtning af instruktionssystemet kan man ikke undlade at nævne to moderne indbyrdes konkurrerende retninger i dets konstruktion: en computer med et komplet sæt instruktioner CISC (Complex Instruction Set Computer) og med et begrænset sæt - RISC (Reduced Instruction Set Computer). Opdelingen opstod på grund af, at computeren det meste af tiden skal udføre en lille del af sit instruktionssæt, mens resten bruges sporadisk (i en af ​​de populære artikler er dette spøgende formuleret som følgende visuelle analogi: “20 % af befolkningen drikker 80 % af øl” ). Hvis du således begrænser sættet af operationer væsentligt til de enkleste og korteste, men omhyggeligt optimerer dem, får du en ret effektiv og hurtig RISC-maskine. Sandt nok skal du betale for hastighed ved behovet for softwareimplementering af "kasserede" kommandoer, men ofte er denne pris berettiget: For eksempel for videnskabelige beregninger eller computergrafik er hastighed meget vigtigere end programmeringsproblemer. Mere detaljeret vil spørgsmål relateret til instruktionssystemet for moderne mikroprocessorer blive diskuteret senere i dette kapitel.

Sammenfattende understreger vi endnu en gang, at det grundlæggende sæt instruktioner har ændret sig ret lidt i løbet af computerens hurtige udvikling. Samtidig har metoderne til at specificere adressen på placeringen af ​​information i hukommelsen undergået betydelige ændringer og fortjener særlig overvejelse.

Computerens hovedcyklus

Som allerede nævnt i afsnit 2, er en vigtig del af von Neumann-arkitekturen instruktionsadressetælleren. Dette specielle interne processorregister peger altid på hukommelsesstedet, hvor den næste programinstruktion er gemt. Når strømmen tændes, eller når der trykkes på nulstillingsknappen (indledende indstilling), indtastes startadressen for programmet til initialisering af alle enheder og opstart, der er placeret i ROM'en, i tælleren af ​​hardware. Computerens videre funktion bestemmes af programmet. Hele en computers aktivitet er således den kontinuerlige afvikling af visse programmer, og disse programmer kan til gengæld indlæse nye programmer mv.

Hvert program består af individuelle maskininstruktioner. Hver maskininstruktion er til gengæld opdelt i et antal elementære forenede komponenter, som almindeligvis kaldes cyklusser. Afhængigt af kompleksiteten af ​​kommandoen kan den implementeres i et andet antal cyklusser. For eksempel tager overførsel af information fra et internt processorregister til et andet flere cyklusser, mens multiplikation af to heltal kræver en størrelsesorden mere. En betydelig instruktionsforlængelse opstår, hvis de data, der behandles, endnu ikke er inde i processoren og skal læses fra RAM.

Når du udfører hver kommando, udfører computeren visse standardhandlinger:

  • 1) i henhold til indholdet af instruktionsadressetælleren læses den næste instruktion af programmet (dets kode er normalt lagret i et særligt register CU, som kaldes instruktionsregisteret);
  • 2) programtælleren ændres automatisk, så den indeholder adressen på den næste kommando (i det enkleste tilfælde er det til dette formål nok at tilføje en konstant til den aktuelle værdi af tælleren, som bestemmes af længden af kommandoen);
  • 3) operationen, der er læst ind i kommandoregisteret, dekrypteres, de nødvendige data udtrækkes, og de nødvendige handlinger udføres på dem.

Derefter, i alle tilfælde, bortset fra stopkommandoen eller forekomsten af ​​en afbrydelse (se nedenfor i afsnit 3.5), gentages alle de beskrevne handlinger cyklisk.

Efter at stop-kommandoen er hentet, stopper computeren med at behandle programmet. At forlade denne tilstand kræver enten en anmodning fra eksterne enheder eller en genstart af maskinen.

Den overvejede grundlæggende computerdriftsalgoritme gør det muligt trin for trin at udføre et lineært program gemt i RAM. Hvis det er nødvendigt at ændre rækkefølgen af ​​beregninger for at implementere en gaffel eller en løkke, er det nok at indtaste den nødvendige adresse i programtælleren (sådan opstår et betinget eller ubetinget spring).

Computere baseret på INTEL 80286-mikroprocessoren og senere modeller bruger pipelining (nogle gange omtalt som "prefetch") for at fremskynde hovedinstruktionsudførelsescyklussen. Ideen er, at flere interne processorer arbejder parallelt: en læser instruktionen, en anden dekrypterer operationen, en tredje beregner adresserne på operanderne, der skal bruges, og så videre. Som et resultat, i slutningen af ​​kommandoen, viser det sig ofte, at den næste allerede er valgt fra RAM, dekrypteret og forberedt til udførelse. Bemærk, at hvis den naturlige rækkefølge for udførelse af instruktioner i programmet overtrædes (for eksempel med et ubetinget hop), er forhåndshentning forgæves, og pipelinen ryddes. Kommandoen efter overgangen udføres længere, da den først skal udfyldes, for at rørledningen kan "fungere med fuld kapacitet". Med andre ord, i en transportørmaskine kan udførelsestiden for et program afhænge ikke kun af dets konstituerende instruktioner, men også af deres relative position.

Måder at angive adressen på placeringen af ​​oplysninger

Computerkommandoen består normalt af to dele - operationel og adresse. Den operationelle del (ellers kaldes den også operationskoden - COP) angiver hvilken handling der skal udføres med informationen. Adressedelen beskriver, hvor de anvendte oplysninger opbevares. Et par få kommandoer til at styre driften af ​​maskinen har muligvis ikke en adressedel, for eksempel i en stopkommando; betjeningsdelen er altid tilgængelig.

Operationskoden kan forestilles som et betinget nummer i kommandosystemets generelle liste. Grundlæggende er denne liste bygget i overensstemmelse med visse interne mønstre, selvom de ikke altid er indlysende.

Adressedelen har en meget større variation og bør overvejes mere detaljeret.

Først og fremmest bemærker vi, at instruktioner kan være en-, to- og treadresser, afhængigt af antallet af operander, der deltager i dem.

De første computere havde det mest enkle og intuitive kommandosystem med tre adresser. For eksempel: tag tal fra hukommelsesadresserne A1 og A2, læg dem sammen og indsæt summen i adresse A3. Hvis operationen krævede et mindre antal adresser, så blev de ekstra simpelthen ikke brugt. Lad os sige, at i folketællingsoperationen var kun celler fra kilden og modtageren af ​​information A1 og A3 angivet, og indholdet af A2 havde ingen betydning.

Kommandoen med tre adresser var let at tyde og praktisk at bruge, men med væksten i RAM blev dens længde uoverkommelig. Faktisk er instruktionslængden summen af ​​længden af ​​tre adresser og operationskoden. Det følger for eksempel, at for en beskeden RAM på 1024 celler, kræves der kun 3 * 10 = 30 bit for at skrive adressedelen af ​​en instruktion, hvilket ikke er særlig praktisk til teknisk implementering. Derfor dukkede to-adressemaskiner op, hvor længden af ​​instruktionen blev reduceret ved at eliminere adressen på resultatposten. I sådanne computere forblev resultatet af operationen i et særligt register (adder) og var egnet til brug i efterfølgende beregninger. I nogle maskiner blev resultatet skrevet i stedet for en af ​​operanderne.

Yderligere forenkling af kommandoen førte til oprettelsen af ​​unicast-maskiner. Overvej kommandosystemet på en sådan computer på et specifikt simpelt eksempel. Lad det være nødvendigt at tilføje tallene gemt i celler med RAM-adresser A1 og A2, og placer summen i en celle med adresse A3. For at løse dette problem skal en unicast-maskine udføre tre kommandoer:

  • * udtræk indholdet af celle A1 ind i adderen;
  • * tilføje adderen med nummeret fra A2;
  • * skriv resultatet fra addereren til A3.

Det kan se ud til, at en unicast-maskine ville have brug for tre gange så mange kommandoer for at løse et problem som en tre-adresse-maskine. Det er faktisk ikke altid tilfældet. Prøv at planlægge dit eget program til at beregne udtrykket A5 = (A1 + A2) * 33 / A4, og du vil opdage, at du har brug for tre tre-adresse-kommandoer og i alt fem en-adresse. Således er unicast-maskinen endnu mere effektiv på nogle måder, da den ikke unødigt skriver mellemresultater til hukommelsen.

For fuldstændighedens skyld skal det siges om muligheden for at implementere en ikke-adresse (null-adresse) maskine ved hjælp af en særlig måde at organisere hukommelsen på - stakken. At forstå principperne for en sådan maskine ville kræve nogle ret detaljerede forklaringer. Nu bruges adresseløse computere praktisk talt ikke. Derfor nøjes vi med at nævne, at et kommandosystem indrettet på denne måde var grundlaget for nogle programmerbare mikroberegnere (for eksempel typerne BZ-21 og BZ-34 og lignende).

Indtil nu, i beskrivelsen af ​​strukturen af ​​en maskininstruktion, har vi brugt det intuitive koncept for informationsadresse. Lad os nu overveje spørgsmålet om at adressere RAM-elementer mere detaljeret og strengt. Hukommelsen var enklest organiseret i computere fra de første to generationer. Den bestod af separate celler, hvor indholdet af hver blev læst eller skrevet som en helhed. Hver hukommelsescelle havde sit eget nummer, som blev kaldt adressen. Det er klart, at adresserne på tilstødende RAM-celler er konsekutive heltal, dvs. afvige med én. I de pågældende computere blev der kun brugt data af én type (reelle tal), og deres længde var lig med længden af ​​maskininstruktionen og faldt sammen med kapaciteten af ​​hukommelsen og alle andre enheder på maskinen. For eksempel påpeger vi, at cellen i en typisk computer af anden generation bestod af 36 bit.

Meget ofte blev programmet designet til at behandle et vist antal af indholdet af på hinanden følgende celler ved hjælp af de samme formler (på højt niveau sprog blev sådanne strukturer senere kaldt arrays). Computerne fra de første to generationer sørgede for særlige mekanismer til cyklisk behandling af informationsarrays. Til dette formål kunne maskininstruktioner ud over almindelige adresser bruge modificerede, hvor en speciel styrebit var sat til én. Da kommandoen blev udført, blev værdien fra specielle indeksceller tilføjet til de ændrede adresser markeret på denne måde. Ved at ændre indholdet af indekscellerne var det muligt at få adgang til forskellige elementer i arrayet. Lad os især understrege, at dannelsen af ​​den resulterende adresse blev udført i CU i det øjeblik, kommandoen blev udført, så den oprindelige kommando forblev uændret i RAM.

Den beskrevne adressemodifikationsmekanisme forenklede i høj grad skrivningen af ​​cykliske programmer, såsom at finde summen af ​​på hinanden følgende RAM-celler, kopiere individuelle hukommelsessektioner osv.

I computere i tredje generation har ideologien om at bygge hukommelse ændret sig væsentligt: ​​den mindste del af information til udveksling med RAM blev sat lig med 8 binære cifre, dvs. en byte. Det blev muligt at behandle flere typer data: teksttegn (1 byte), heltal (2 bytes), reelle tal med almindelig eller dobbelt præcision (henholdsvis 4 eller 8 bytes). I denne henseende blev en ny konventionel enhed for informationsmåling introduceret - et maskinord. Det var lig med 4 bytes og svarede til længden af ​​et standard reelt tal. Alle mængder af information begyndte at blive målt i enheder, der er multipla af et ord: dobbeltord, halvt ord osv. Naturligvis begyndte adressen (RAM-cellenummer) i maskiner med en byte-organisation at henvise til en enkelt byte; hukommelsesbytes har tal, der stiger med én. Et ord består af flere på hinanden følgende bytes. Som adresse på et ord er det praktisk at tage adressen på en af ​​de bytes, der danner det (normalt bruges den mindst signifikante byte, som har det mindste tal). Således ændres ordenes adresser ikke længere gennem en; deres stigning afhænger af længden af ​​maskinordet i bytes og er lig med fire.

Størrelsen på maskinordet blev tilsyneladende valgt ud fra formaterne af den behandlede information og ikke i forbindelse med kapaciteten af ​​nogen enheder. For at bekræfte dette præsenterer vi et par fakta om typiske tredjegenerationscomputere fra EC-familien. Den aritmetisk-logiske enhed af modellen "EC-1022" havde 16 binære cifre, "EC-1033" - 32 cifre og "EC-1050" - 64 cifre. Samtidig blev 4 bytes valgt for én adgang til RAM i "EC-1022" og "EC-1033", i "EC-1050" - 8 bytes (og i "EC-1045" - 16 bytes). Variationen af ​​tal indikerer således, at 32 bit (4 bytes) ikke var en teknisk allokeret mængde information.

Et par flere funktioner dukkede op i tredjegenerationsmaskiner: forskellige instruktionslængder afhængigt af dataadresseringsmetoden, tilstedeværelsen af ​​en speciel superhurtig registerhukommelse, beregningen af ​​den effektive RAM-adresse som summen af ​​flere registre osv. Alt dette blev videreudviklet i computere i den fjerde generation, for hvilke mikroprocessorens kapacitet er blevet en af ​​de vigtigste egenskaber. Betragtning af de strukturelle funktioner i fjerde generations computerhukommelse vil blive udskudt til næste afsnit.

Arbejdet med ENIAC var i fuld gang, da Herman Goldstein mødtes med ungarsk-amerikaneren John von Neumann, som var konsulent for det amerikanske hemmelige atombombeprogram og undersøgte, hvordan man kunne øge computerkraften for at løse de nødvendige differentialligninger. Som et resultat af dette møde begynder Neumann, kendt for sine præstationer fra udvikling af spilteori til at bidrage til skabelsen af ​​atomvåben, at samarbejde med ENIAC-arbejdsgruppen. Sammen udvikler de et projekt for en ny computer, som for det første udelukkende fungerer på elektroniske kredsløb, og for det andet indtastes programmet ikke på papirbånd, men ved hjælp af et hulkort, som derefter kodes i form af passende tegn til behandling og opbevaret i centraliseret lager. Selv opfinderne selv indså ikke umiddelbart værdien af ​​dette princip, som ikke kun tillader ændringer i programmet - disse ændringer kan foretages af selve computerenheden.

Mens du arbejdede på EDVAC i 1945, var der en stor konflikt mellem dets udviklere. Faktum er, at EDVAC blev grundlaget for det tredje store teoretiske arbejde om computerteknologi (den første, beskrivelsen af ​​den "analytiske motor", tilhørte Charles Babbage, den anden - til Alan Turing). Men hverken Mauchly eller Eckert var i stand til at generalisere deres viden og abstrahere fra radiorør og elektroniske kredsløb. Måske forsømte de dette af hensyn til hemmeligholdelse, måske nedladende fysikerne sig ikke til en streng matematisk fremstilling. Von Neumann skrev også den "Foreløbige rapport om EDVAC-maskinen", hvori han detaljerede den logiske organisation og generelle principper for funktionen af ​​universelle computerenheder. Rapporten blev sendt til mange videnskabsmænd fra forskellige lande og blev bredt kendt (derfor undlod ENIAC-designerne efterfølgende at patentere deres projekt).

Von Neumann blev bredt betragtet som en fremragende matematiker, og det videnskabelige samfund tilskrev ham alle ideerne bag denne maskine. Udtrykket "von Neumann-maskine" (dvs. computer) kom i brug. Neumann fandt en måde at forbinde arbejdsprogrammet på ikke med ledninger eller andre forbindelser, men ved at integrere det i maskinens hukommelse i en kodet form. Det var Neumann, der kom med den ordning, som alle digitale computere stadig følger. Generelt er ordningen vist i figuren. Solide pile er kontrollinks (kontrolsignaler går gennem dem), og stiplede pile er informationslinks (data, information går gennem dem). Input/output-enheder omfatter tastatur, mus, skærm, diskdrev, cd-rom, printer, scanner, mikrofon, højttalere, plotter osv.

Computeren skal have:

  • · aritmetisk logisk enhed, der udfører aritmetiske og logiske operationer. I dag kaldes denne enhed den centrale behandlingsenhed. Central behandlingsenhed (central behandlingsenhed) - en computermikroprocessor, som er et mikrokredsløb, der styrer alle processer, der forekommer i en computer;
  • en kontrolenhed, der organiserer processen med at udføre programmer. I moderne computere er den aritmetiske logikenhed og styreenheden kombineret til en central behandlingsenhed;
  • lagringsenhed (hukommelse) til lagring af programmer og data;
  • · eksterne enheder til input-output af information.

Computerhukommelse er et antal nummererede celler, som hver kan indeholde enten behandlede data eller programinstruktioner. Alle hukommelsesceller skal være lige tilgængelige for andre computerenheder.

Funktionsprincip:

  • · Ved hjælp af en ekstern enhed indtastes et program i computerens hukommelse.
  • · Styreenheden læser indholdet af hukommelsescellen, hvor den første instruktion (kommando) i programmet er placeret, og organiserer dens udførelse. Kommandoen kan indstille:
    • o udføre logiske eller aritmetiske operationer;
    • o læse data fra hukommelsen for at udføre aritmetiske eller logiske operationer;
    • o registrering af resultater i hukommelsen;
    • o input af data fra en ekstern enhed til hukommelsen;
    • o dataoutput fra hukommelsen til en ekstern enhed.
  • · Styreenheden begynder at udføre kommandoen fra hukommelsespladsen umiddelbart efter den netop udførte kommando. Denne rækkefølge kan dog ændres med kontroloverførsel (spring) instruktioner. Disse kommandoer indikerer til kontrolenheden, at den skal fortsætte med at udføre programmet, begyndende med instruktionen indeholdt i en anden hukommelsesplacering.
  • · Resultaterne af programafviklingen vises på computerens eksterne enhed.
  • · Computeren går i standbytilstand for et signal fra en ekstern enhed.

Et af principperne i "Von Neumann Architecture" er, at en computer ikke behøver at ændre ledningsforbindelser, hvis alle instruktioner er gemt i dens hukommelse. Og så snart denne idé blev omsat i praksis inden for rammerne af "von Neumann-arkitekturen", blev den moderne computer født.

Som enhver teknologi har computere udviklet sig i retning af at øge funktionalitet, gennemførlighed og skønhed. Generelt er der en erklæring, der hævder at være en lov: en perfekt enhed kan ikke være grim i udseende og omvendt, en smuk teknik kan ikke være dårlig. Computeren bliver ikke kun nyttig, men også en dekorationsenhed. Udseendet af en moderne computer korrelerer selvfølgelig med von Neumann-skemaet, men det adskiller sig samtidig fra det.

Takket være IBM blev von Neumanns ideer realiseret i form af princippet om den åbne arkitektur af computersystemenheder, som er udbredt i vores tid. Ifølge dette princip er en computer ikke en enkelt integreret enhed, men består af uafhængigt fremstillede dele, og metoderne til at parre enheder med en computer er ikke en hemmelighed for producenten, men er tilgængelige for alle. Således kan systemblokke samles i henhold til princippet om en børnedesigner, det vil sige, at du kan ændre dele for andre, mere kraftfulde og moderne, opgradere din computer (opgradere, opgradere - "hæve niveauet"). De nye dele er fuldt ud udskiftelige med de gamle. "Åbne arkitektoniske" personlige computere er også lavet af systembussen, dette er en slags virtuel fælles vej eller vene eller kanal, hvori alle udgange fra alle noder og dele af systemetheden går. Jeg må sige, at store computere (ikke personlige) ikke har egenskaben af ​​åbenhed, de kan ikke bare erstatte noget med en anden, mere avanceret, for eksempel i de mest moderne computere, selv forbinder ledninger mellem elementerne i et computersystem : mus, tastatur ("tastatur" - "tastatur") og systemenheden. De kan kommunikere med hinanden ved hjælp af infrarød stråling; til dette har systemenheden et særligt vindue til modtagelse af infrarøde signaler (svarende til en fjernbetjening til tv).

I øjeblikket er en konventionel personlig computer et kompleks bestående af:

  • det elektroniske hovedkort (system, bundkort), hvorpå de blokke er placeret, der behandler oplysningerne om beregningen;
  • · kredsløb, der styrer andre computerenheder, indsat i standardstik på systemkortet - slots;
  • Informationslagringsdiske
  • en strømforsyningsenhed, hvorfra strøm leveres til alle elektroniske kredsløb;
  • etui (systemenhed), hvor alle computerens interne enheder er installeret på en fælles ramme;
  • tastaturer;
  • overvåge;
  • andre eksterne enheder.

Arkitekturen af ​​von Neumann-typen (opkaldt efter matematikeren John von Neumann) er mest udbredt i digitale computere og ligger til grund for næsten alle mikroprocessorarkitekturer. von Neumann-arkitekturen definerer typen af ​​interaktion mellem kontrol og hukommelse. Styredelen fungerer på basis af en række instruktioner kaldet et program, som er lagret i hukommelsen. Hver instruktion består af to dele: en operatør og en operand. Operatøren specificerer, hvilken operation processoren skal udføre (aritmetisk, logisk eller kontroloperation), og operanden er den data eller hukommelsesadresse, som operationen skal udføres på.

neumann arkitekturprogram binært

John von Neumann

Jobbet for en von Neumann-computer er at udføre en sekvens af instruktioner, der svarer til de operationer, der skal udføres af systemet. Da kontrolenheden og hukommelsen aktivt interagerer med hinanden, leveres der speciel hardware, der kan fremskynde processen med at sende data og kommandoer. Disse værktøjer omfatter: instruktionsregister, instruktionstæller, akkumulator, aritmetisk logisk enhed (ALU).

Instruktionsregistret, instruktionstælleren og akkumulatoren er hovedelementerne i en af ​​blokkene på en computer - "hukommelse". Disse er registre eller hukommelsesceller, hvis kapacitet i binære cifre er lig med længden af ​​et maskinord. Instruktionsregisteret gemmer den instruktion, som computeren skal udføre efter den aktuelle, og adressen på den næste instruktion gemmes i programtælleren. Drevet gemmer data til behandling eller modtager data efter behandling.

Den aritmetisk-logiske enhed udfører de specificerede aritmetiske eller logiske operationer på de data, der er angivet i kommandoen.

Disse hardware er forbundet med hinanden via en eller flere busser. En bus er en elektrisk forbindelse mellem flere punkter, der kan være kilder eller modtagere af signaler (det kan sammenlignes med et køretøj, der samler op og afsætter passagerer). Ordlængden på en mikro-mikrocomputer er normalt 4, 8, 16 bit osv.

Bussen forbinder registre og ALU'er til hukommelse og I/O-enheder. I en enkelt busarkitektur deler hver enhed, der er tilsluttet bussen, bussen med andre enheder og er derfor tildelt en vis tid til at sende information over bussen til eller modtage information fra en anden enhed. Denne bustidsmultipleksing udføres af et hardwarebusstyrekredsløb og synkroniseres af computerens styreenhed.

Kontrolenheden udfører hovedfunktionerne for kontrol og synkronisering af alle andre enheder på computeren. Computersystemer er typisk serielle digitale kredsløb, der er synkroniseret af et standard clock-signal, der transmitteres gennem hele systemet.

Hvert element i en computer er designet på en sådan måde, at det udfører en sekvens af nogle handlinger efter et givet antal clock-impulser. Kommandoregisteret transmitterer den næste kommando til kommandodekoderen, som fortolker det indkommende sæt af bits og udsteder de passende ordrer til både maskincykluskontrolenheden og ALU'en. Maskincykluskontrolenheden afkoder disse ordrer og afgiver de tilsvarende signaler til hukommelsen og til kontroludgangene. Driften af ​​andre komponenter i systemet kan således synkroniseres med driften af ​​ALU'en. Hukommelsen (dette kan være random access memory eller et internt maskinregister) skal også have instruktioner om, hvilke data der skal behandles.

PC arkitektur. Grundlæggende principper for computerdrift.

En computer er en elektronisk enhed, der er i stand til automatisk at udføre en række handlinger specificeret af programmet til modtagelse, lagring, konvertering og udstedelse af information.

Arkitekturen af ​​et computersystem forstås som de mest generelle principper for dets konstruktion, principper for drift, sammenkoblinger og interaktion mellem de vigtigste funktionelle enheder, hukommelsesorganisation og et system af kommandoer. Problemerne med hukommelsesorganisation og kommandosystemer tages ikke i betragtning i datalogikurset.

De klassiske principper for konstruktion af computerarkitektur blev foreslået i arbejdet af John von Neumann, G. Goldsteig og A. Burks i 1964 og er kendt som "von Neumann principper"

Disse principper er:

  • - Binær kodning af al brugt information: alle data i en computer (tal, tekst, lyd, billeder) er repræsenteret som en sekvens af nuller og ettaller.
  • - Tilfældig adgang til RAM-celler: computeren skal have en speciel enhed - RAM - hvor kørende programmer og behandlede data gemmes; hukommelsen er opdelt i celler, hver celle har en adresse (nummer), på denne adresse kan du til enhver tid læse information fra cellen eller skrive information der
  • - Princip for lagret program: Paragram skal lagres i computerens hukommelse i binær form; samt data. Dette princip virker nu helt indlysende, men det blev ikke brugt i de første computere. For at indstille rækkefølgen af ​​operationer var det nødvendigt at forbinde elementerne i computerens logiske kredsløb i en bestemt rækkefølge ved at installere jumper ledninger. Brugen af ​​princippet om et lagret program har øget effektiviteten ved at bruge computere betydeligt
  • - Princippet om sekventiel udførelse af operationer: Programmet består af en sekvens af kommandoer. Hver instruktion er lagret i en (eller flere) hukommelsesplaceringer i binær form. Computeren begynder at udføre programmet, dvs. vælger en værdi, der er gemt på en specifik hukommelsesplacering og udfører instruktionen, der svarer til denne værdi. Så udfører computeren kommandoen, der er gemt i den næste hukommelsescelle, og sådan fortsætter den, indtil en af ​​cellerne støder på en stopkommando eller en overgang til en anden hukommelsescelle.

Som en del af enhver computer kan følgende funktionelle blokke skelnes:

  • - Den aritmetiske logiske enhed (ALU) udfører alle datakonverteringsoperationer. Faktisk er enhver transformation dekomponeret i elementære operationer, til implementeringen af ​​hvilke aritmetiske (addition, subtraktion, multiplikation, division) og logiske (AND, OR, NOT) operationer er tilstrækkelige.
  • - Kontrolenhed (CU) - styrer alle computerenheder. ALU'en og CU'en udgør tilsammen CPU'ens centrale behandlingsenhed.
  • - RAM - gemmer programmet og data. Hukommelse består af individuelle celler; normalt kan én hukommelsescelle gemme én byte. Hver celle har et nummer (adresse), hvormed du kan "adressere" den for at skrive og læse data.
  • - Input-enheder - modtag information fra brugeren (eller fra nogle eksterne enheder - sensorer, antenner osv.) og konverter den til en form, der er praktisk til behandling på en computer.
  • - Output-enheder - konverter information, der er lagret og behandlet på en computer, til former, der er praktiske for menneskelig perception.

De første computere blev bygget i overensstemmelse med von Neumann-strukturen, som kan repræsenteres som følger: (tykke linjer angiver informationslinks, tynde linjer indikerer styresignaler)

Som det kan ses af diagrammet, er styreindretningen forbundet med hver af enhederne via en separat kanal, gennem hvilken styresignaler transmitteres. Hver af de eksterne enheder er forbundet med en separat informationsudvekslingskanal med ALU'en. Fra ALU'en kan data allerede skrives til hukommelsen; og også data kan læses fra hukommelsen til ALU.

En sådan struktur, når en separat kanal bruges til at kommunikere med hver enhed, gjorde det vanskeligt at ændre computerkonfigurationen, især at forbinde nye eksterne enheder.

Moderne pc'er er bygget på en trunk-modulær basis. Det betyder, at alle enheder er forbundet til en enkelt backbone (et sæt kabler). Desuden er alle enheder forbundet ved hjælp af standardstik, og parametrene for elektriske signaler, der bruges af enheder til kontrol og dataudveksling, er også standardiserede. De der. alle enheder "kommunikerer efter de samme regler". Dette giver brugeren mulighed for at ændre fuldstændigheden af ​​pc'en ved at udskifte, fjerne eller tilføje blokmoduler.

Strukturen af ​​pc'en kan repræsenteres som følger:

Her er CPU den centrale behandlingsenhed; omfatter en styreenhed og en aritmetisk logisk enhed. CPU'en styrer driften af ​​alle computerenheder og udfører alle databehandlingsoperationer.

RAM - Random Access Memory (Random Access Memory); gemmer programmet og de data, der i øjeblikket behandles. Når strømmen er slukket, går indholdet af RAM tabt.

ROM - Read Only Memory; gemmer programmer, der udføres, når computeren startes (tændt), samt nogle andre vigtige programmer. Oplysningerne i ROM'en bevares, når strømmen slukkes. De første ROM'er var såmænd "permanente", dvs. oplysninger kunne kun skrives til dem én gang. Moderne ROM'er er omprogrammerbare, så de oplysninger, der er gemt i dem, kan opdateres.

VU - eksterne enheder, blandt hvilke er:

  • o inputenheder (såsom et tastatur);
  • o outputenheder (f.eks. printer)
  • o kommunikationsenheder (f.eks. modem)
  • o Læse/skrive og lagerenheder (f.eks. diskettedrev og flashdrev)

Fra pc-arkitekturens synspunkt er harddisken (harddisken) også en ekstern enhed. Men det spiller en så vigtig rolle, at det fremhæves separat i diagrammet. Harddisken gemmer programmer (primært styresystemet) og data.

Hver ekstern enhed styres af en controller - en speciel kontrolenhed. Controlleren er et "mellemled" mellem en hurtigtkørende CPU og en langsomtkørende VU. For eksempel efter at have modtaget en kommando fra processoren om at udskrive tekst, oversætter controlleren den til en sekvens af elementære kommandoer, som printeren skal udføre: indføring af papir, opvarm toneren, elektrificere tromlen, spraymaling, tryk på papiret osv. Processoren kan udføre andre opgaver i løbet af denne tid. Brugen af ​​controllere forbedrer således computerens ydeevne.

Derudover er der brug for specielle programmer - drivere - til at styre eksterne enheder.

Moderne pc'er er bygget efter princippet om "åben arkitektur". Det betyder, at standarder for stik, signalparametre og regler for udveksling af moduler med hinanden er åbne, og enhver virksomhed kan producere udstyr i overensstemmelse med disse standarder. Dette giver en bred vifte af eksterne enheder og individuelle pc-moduler, men de er alle kompatible med hinanden.

En definition af begrebet processor blev givet i indledningen.

Processor - en funktionel enhed af en computer designet til logisk og aritmetisk behandling af informationsstrømme baseret på princippet om programkontrol.

Processoren udfører funktionen med at udføre programmer (placeret i RAM) ved at sample, kontrollere og sekventielt udføre de handlinger, der er foreskrevet af kommandoerne. På en anden måde: processoren udfører de handlinger, der er foreskrevet af kommandoerne på den kodede information i overensstemmelse med programmerne.

I moderne computere er processoren (computerkernen) ikke en formel kombination af ALU og CCU, men resultatet af udviklingen af ​​computerstrukturen, designet til at give høj hastighed og brede funktionelle og logiske muligheder til behandling af information. Især fremkomsten af ​​nye computere førte til behovet for en computer og en processor.

1) afbryde systemer;

2) nye hukommelsesniveauer;

3) hukommelsesbeskyttelsesmidler;

4) brug af særlige typer af indeksering, adressering information;

5) cachehukommelse af kommandoer, forgreninger, forudsigelser af udvekslinger osv.;

6) særlige procedurer til styring af computerprocessen

Alle disse undersystemer og enheder er helt eller delvist inkluderet i processoren. Det vigtigste nye strukturelle fænomen i processoren er SRAM.

Derfor har processoren i dag en mere udviklet struktur, som i en vis forstand gentager von Neumann-maskinens struktur.

Men vi vil ikke berøre nye retninger i organiseringen af ​​processorer. De vil blive dækket fuldt ud i mikroprocessorkurset.

3.1. Computer kommandosystem.

Computerens kommandosystem bestemmes af kommandoernes struktur og formater samt listen (listen) over kommandoer og adresseringsmetoder.

Holdet kaldes information kodet på en eller anden måde, der bestemmer genereringen i computeren af ​​sekvenser af signaler beregnet til at udføre en specifik operation (handling) af maskinen på givne numeriske og ikke-numeriske koder.

Da kommandoen i sidste ende på en eller anden måde indtastes i computeren og opfattes af den, så den endelige form for kommandoen er en digital kode.

Henholdsvis, programmets endelige form computerdrift (et program kan defineres som en specielt formaliseret) er et program i kodede instruktioner.

3.1.1. Kommandostruktur og formater.

I overensstemmelse med den introducerede definition af kommandoen har strukturen af ​​sidstnævnte drifts- og adressedele(hvad og med hvilke data der skal gøres), samt kontor del, som bestemmer det særlige ved udførelsen af ​​denne kommando (modifikation) afhængigt af værdierne af visse tegn.

Adressen/adresserne, der er indeholdt i adressedelen af ​​kommandoen, angiver i det mest almindelige tilfælde nummeret på RAM-cellen, hvori nummeret, der deltager i operationen (dets kode) er registreret (gemt) - summan, multiplikatoren , udbyttet osv., den ikke-numeriske informationskode (adresse, tegnstreng, enhedsstatus osv.) Generelt og for nemheds skyld siger de normalt: operander er gemt i hukommelsen.

Men hvis vi taler om en kommando som en recept, skal dens mest komplette form ikke kun angive adresserne på alle de numre, der er involveret i operationen, men også adressen på den celle, hvor resultatet skal placeres, såvel som adressen på kilden til den næste kommando. Denne opregning fører til behovet for at have i teamet fire adresser.

Og faktisk eksisterer sådanne fire-adresse kommandoer. Med sådan et "format" "startede holdene". Men der kan være færre eller flere adresser i teamet!

Kildeadressen til den næste instruktion mangler muligvis, fordi programmet (instruktionssekvensen) er det mest naturligt og det er tilrådeligt at placere i en række tilstødende hukommelsesceller. Og hvis kommandoerne skrives sekventielt (fra tallet 1 til tallet n), så er det meget enkelt at ændre adressen på kildecellen til den næste kommando i hardware (med en tæller!) Bemærk, at en sådan prøveudtagningsrækkefølge kaldes naturlig, hvorimod når du angiver adressen på en kommando i en kommando prøveudtagningsrækkefølge kaldes tvunget. Bemærk også, at brugen af ​​den naturlige rækkefølge af instruktionsvalg fører til behovet for at indføre specielle kommandoer, der ændrer rækkefølgen af ​​beregninger(ved at ændre indholdet af kommandocelletælleren). Dette er nødvendigt for at sikre algoritmisk beregnelighed. Med tvunget i rækkefølgen af ​​prøveudtagning er specielle kommandoer ikke nødvendige, fordi hver kommando "vender" prøverækkefølgen.

En vigtig komponent i computerarkitekturen er kommandosystemet. På trods af det store antal varianter af computere, på det laveste ("maskine") niveau, har de meget til fælles. Kommandosystemet på enhver computer indeholder nødvendigvis følgende grupper afr.

1. Dataoverførselskommandoer (folketælling) at kopiere information fra et sted til et andet.

2. Aritmetiske operationer, som faktisk skylder sin fødsel til computere. Selvfølgelig er andelen af ​​beregningsmæssige handlinger i en moderne computer mærkbart faldet, men de spiller stadig en vigtig rolle i programmer. Bemærk, at de vigtigste aritmetiske operationer normalt inkluderer addition og subtraktion (sidstnævnte inde i processoren reducerer oftest også til addition på den ene eller anden måde). Hvad angår multiplikation og division, udføres de i mange computere i henhold til specielle programmer.

3. booleske operationer, så computeren kan analysere den modtagne information. Efter at have udført en sådan kommando, ved hjælp af et betinget spring, er computeren i stand til at vælge det videre forløb for programudførelse. De enkleste eksempler på kommandoer i gruppen under overvejelse er sammenligning såvel som de velkendte logiske operationer OG, ELLER, IKKE (inversion), beskrevet tidligere i afsnit 1.4. Derudover føjes ofte analyse af individuelle kodestykker, deres nulstilling og installation til dem.

4. skifter binær kode til venstre og højre. For at bevise vigtigheden af ​​denne gruppe af kommandoer er det nok at huske multiplikationsreglen i en kolonne: hvert efterfølgende produkt er skrevet i et sådant skema med et skift af et ciffer til venstre. I nogle specielle tilfælde kan multiplikation og division generelt erstattes af et skift (husk, at ved at tilføje eller fjerne nul til højre, det vil sige rent faktisk at flytte et tal, kan du øge eller mindske det med 10 gange).

5. Input og output kommandoer oplysninger, der skal udveksles med eksterne enheder. I nogle computere er eksterne enheder specielle servicehukommelsesadresser, så input og output udføres ved hjælp af folketællingskommandoer.

6. Kontrolkommandoer, som implementerer ikke-lineære algoritmer. Først og fremmest bør dette omfatte betingede og ubetingede hop samt instruktioner til at få adgang til en underrutine (hop med en retur). Nogle computere har specielle instruktioner til at organisere loops, men dette er ikke nødvendigt: nogen løkken kan reduceres til en kombination af betingede og ubetingede spring.

Ofte inkluderer den samme gruppe af kommandoer operationer til at styre processoren såsom stop eller NOP - ingen operation. Nogle gange bliver de udpeget i en særlig gruppe. Efterhånden som kompleksiteten af ​​processorenheden stiger, stiger antallet af sådanne instruktioner.

Enhver computerkommando består normalt af to dele - operationsstue Og adresse. Operationel del (ellers kaldes det også operationskode - KOP) angiver, hvilken handling der skal tages i forhold til oplysningerne. Adressedelen beskriver, hvor den anvendte information er gemt, og hvor resultatet skal placeres. Nogle af de få kommandoer til at styre driften af ​​maskinen har muligvis ikke en adressedel, for eksempel i en stopkommando; driftsdelen er altid til stede.

Operationskoden kan forestilles som et betinget nummer i kommandosystemets generelle liste. Grundlæggende er denne liste bygget i overensstemmelse med visse interne mønstre, selvom de ikke altid er indlysende.

Adressedelen har en meget større variation og bør overvejes mere detaljeret.

Først og fremmest bemærker vi, at kommandoer kan være en-, to- og tre-adresse afhængigt af antallet af mulige operander.

De første computere havde det mest enkle og intuitive kommandosystem med tre adresser. For eksempel: tag tal fra hukommelsesadresserne A1 og A2, læg dem sammen og placer summen i adresse A3. Hvis operationen krævede et mindre antal adresser, så blev de ekstra simpelthen ikke brugt. Lad os sige, at i folketællingsoperationen var kun celler fra kilden og modtageren af ​​information A1 og A3 angivet, og indholdet af A2 havde ingen betydning.

Kommandoen med tre adresser var let at tyde og praktisk at bruge, men med væksten i RAM blev dens længde uoverkommelig. Længden af ​​en sådan instruktion er faktisk summen af ​​længden af ​​tre adresser og operationskoden. Det følger for eksempel, at for en beskeden RAM på 1024 celler, kræves der kun 3 * 10 = 30 bit for at skrive adressedelen, hvilket ikke er særlig bekvemt til teknisk implementering. Derfor dukkede to-adressemaskiner op, hvor længden af ​​instruktionen blev reduceret ved at eliminere adressen på resultatposten. I sådanne computere forblev resultatet af operationen i et særligt register ( hugorm) og var egnet til brug i efterfølgende beregninger. I nogle maskiner blev resultatet skrevet i stedet for en af ​​operanderne.

Yderligere forenkling af kommandoen førte til oprettelsen af ​​unicast-maskiner. Overvej kommandosystemet på en sådan computer på et specifikt simpelt eksempel. Lad det være nødvendigt at tilføje tallene, der er gemt i RAM-adresserne A1 og A2, og indsæt summen i A3. For at løse dette problem skal en unicast-maskine udføre tre kommandoer:

  1. ekstraher indholdet af celle A1 ind i adderen;
  2. tilføje adderen med nummeret fra A2;
  3. skriv resultatet fra addereren til A3.

Det kan se ud til, at en unicast-maskine ville have brug for tre gange så mange kommandoer for at løse et problem som en tre-adresse-maskine. Det er faktisk ikke altid tilfældet. Prøv at planlægge dit eget program til at beregne udtrykket Y=(X1+X2)*X3/X4, og du vil blive overrasket over at opdage, at du har brug for 3 kommandoer med tre adresser og kun 5 unicast. En unicast-maskine er således noget mere effektiv, da det producerer ikke en unødvendig skrivning til hukommelsen af ​​mellemresultater.

For fuldstændighedens skyld skal det siges om muligheden for at implementere en ikke-adresse (nul-adresse) maskine ved hjælp af en særlig måde at organisere hukommelse på - stak. At forstå principperne for en sådan maskine ville kræve nogle ret detaljerede forklaringer; samtidig bruges adresseløse computere praktisk talt ikke nu. Derfor nøjes vi med at nævne, at et kommandosystem indrettet på denne måde ligger til grund for nogle programmerbare mikroberegnere af typen "B3-21" og "B3-34" og lignende.

© E.A. Eremin, 1997
Fra bogen:
Eremin E.A. Sådan fungerer en moderne computer. - Perm: forlaget PRIPIT, 1997. 176 s.

Hvis du finder en fejl, skal du vælge et stykke tekst og trykke på Ctrl+Enter.