Hvad er coprocessoren ansvarlig for? Matematisk coprocessor

En vigtig del af Intels mikroprocessorarkitektur er tilstedeværelsen af ​​en enhed til behandling af numeriske data i flydende kommaformat, kaldet matematisk coprocessor. Arkitekturen af ​​mikroprocessor-baserede computere var oprindeligt udelukkende baseret på heltals aritmetik. Med væksten i kraften begyndte enheder til behandling af flydende kommanumre at dukke op. I arkitekturen af ​​Intel 8086-mikroprocessorfamilien dukkede en enhed til behandling af flydende kommanumre op som en del af en computer baseret på i8086/88-mikroprocessoren og blev kaldt en matematisk coprocessor eller blot en coprocessor. Valget af dette navn skyldtes det faktum, at

  • for det første var denne enhed beregnet til at udvide hovedprocessorens computerfunktioner;
  • for det andet blev den implementeret som en separat chip, det vil sige, at dens tilstedeværelse var valgfri. Coprocessor-chippen til i8086/88-mikroprocessoren hed i8087.

Med fremkomsten af ​​nye modeller af Intel-mikroprocessorer blev coprocessorerne også forbedret, selvom deres softwaremodel forblev stort set uændret. Som separate (og følgelig valgfrie i en bestemt computerkonfiguration) enheder blev coprocessorer bibeholdt op til i386-mikroprocessormodellen og blev navngivet henholdsvis i287 og i387. Fra og med i486-modellen er coprocessoren implementeret i samme pakke som hovedmikroprocessoren og er således en integreret del af computeren.

Hovedtræk ved den matematiske coprocessor:

  • Fuld understøttelse af IEEE-754 og 854 aritmetiske standarder for flydende komma. Disse standarder beskriver både de dataformater, som coprocessoren skal arbejde med, og det sæt af funktioner, den implementerer;
  • understøttelse af numeriske algoritmer til beregning af værdierne af trigonometriske funktioner, logaritmer osv.;
  • behandling af decimaltal med 18-bit præcision, som gør det muligt for coprocessoren at udføre aritmetiske operationer uden at afrunde hele decimaltal med værdier op til 10 18;
  • behandling af reelle tal fra området ±3,37x10 -4932 ...1,18x10 +4932.

Formen for repræsentation af flydende kommatal er beskrevet.

Den generelle form for repræsentation af reelle tal antyder muligheden for at placere følgende typer i bitgitteret.

Type af tal Skilt Grad Hel Mantissa
+∞ 0 11…11 1 00…00
positiv
normaliseret
0 00…01 — 11…10 1 00…00 — 11…11
positiv ikke-standardiseret 0 00…00 0 00…00 — 11…11
0 0, 1 00…00 0 00…00
negativ ustandardiseret 1 00…00 0 00…00 — 11…11
negativ normaliseret 1 00…01 — 11…10 1 00…00 — 11…11
-∞ 1 11…11 1 00…00
utallige
(NaN - ikke et tal)
* 11…11 1 **…** ≠0

Simple og dobbelt præcisionstal (henholdsvis flydende (DD) og dobbelt (DQ)) kan kun repræsenteres i standardiseret form. I dette tilfælde er biten af ​​tallets heltal skjult og indebærer et logisk 1. De resterende 23 (52) bit gemmer tallets binære mantisse.

Dobbelt udvidede præcisionstal (lang dobbelt (DT)) kan repræsenteres i enten normaliseret eller ustandardiseret form, da heltalsbitten af ​​tallet ikke er skjult og kan have værdierne 0 eller 1.

Den vigtigste datatype, som matematisk coprocessor arbejder på, er 10-byte data (DT).

Coprocessor software model

Coprocessorens softwaremodel er et sæt registre, som hver har sit eget funktionelle formål.

I coprocessorsoftwaremodellen kan der skelnes mellem tre grupper af registre:

  • Otte registre r0…r7, som danner grundlaget for coprocessorsoftwaremodellen - coprocessor stak . Størrelsen af ​​hvert register er 80 bit. Denne organisation er typisk for enheder, der er specialiseret i behandling af beregningsalgoritmer.
  • Tre serviceregistre:
    — coprocessor status register swr (Status Word Register) - afspejler information om coprocessorens aktuelle tilstand;
    — kontrolregister for coprocessor cwr (Control Word Register) - styrer coprocessorens driftstilstande;
    — tag register twr (Tags Word Register) - bruges til at overvåge tilstanden af ​​hvert af stakregistrene.
  • To pointer registre - dpr (Data Point Register) og ipr (Instruction Point Register) kommandoer. De er designet til at gemme oplysninger om adressen på den instruktion, der forårsagede undtagelsen, og adressen på dens operand. Disse pointere bruges ved håndtering af undtagelser (men ikke for alle kommandoer).

Alle specificerede registre er programmatisk tilgængelige. Adgang til nogle af dem er dog ret let; til dette formål er der specielle kommandoer i coprocessor-kommandosystemet. Andre registre er sværere at få adgang til, fordi der ikke er specielle kommandoer til dette, så yderligere trin skal udføres.

swr status register– afspejler den aktuelle tilstand for coprocessoren efter den sidste kommando blev udført. swr-registret indeholder felter, der giver dig mulighed for at bestemme: hvilket register er den aktuelle top af coprocessor-stakken, hvilke undtagelser der opstod efter den sidste kommando blev udført, hvad er funktionerne ved den sidste kommandoudførelse (en slags analog af flagregisteret af hovedprocessoren).

Strukturelt består swr-registret af:

  • 6 undtagelsesflag PE, OE, UE, ZE, DE, IE.
    Undtagelser er en type afbrydelse, ved hjælp af hvilken processoren informerer programmet om nogle funktioner i dets faktiske udførelse. Coprocessoren har også evnen til at hæve sådanne interrupts, når visse situationer (ikke nødvendigvis fejlagtige) opstår. Alle mulige undtagelser er reduceret til 6 typer, som hver svarer til 1 bit i swr registeret. Programmøren behøver ikke at skrive en handler for at reagere på den situation, der førte til en undtagelse. Coprocessoren kan uafhængigt reagere på mange af dem. Dette kaldes standard undtagelseshåndtering. For at få en bestemt type undtagelse til at blive håndteret som standard, skal undtagelsen efterlades demaskeret. Denne handling udføres ved at sætte den tilsvarende bit i coprocessorkontrolregisteret cwr til 1. Typer af undtagelser fanget ved hjælp af swr-registret:
    • IE (Invalide operation Error) - ugyldig operationskode;
    • DE (Denormalized operand Error) - unormaliseret operand;
    • ZE (divider med nul fejl) - fejl ved division med nul;
    • OE (Overflow Error) - overløbsfejl. Opstår, når rækkefølgen af ​​et tal overstiger det maksimalt tilladte område;
    • UE (Underflow Error) - anti-overflow fejl. Opstår, når resultatet er for lille (tæt på nul);
    • PE (Precision Error) - præcisionsfejl. Indstil hvornår coprocessoren skal runde resultatet, fordi det ikke kan repræsenteres nøjagtigt. Således vil coprocessoren aldrig være i stand til nøjagtigt at dividere 10 med 3.

    Når nogen af ​​disse seks undtagelsestyper forekommer, sættes den tilsvarende bit i swr-registret til én, uanset om undtagelsen var maskeret i cwr-registret eller ej.

  • SF coprocessor stak fejlbit (stakfejl). Bitten sættes til 1, hvis en af ​​tre undtagelsessituationer opstår - PE, UE eller IE. Især dens installation informerer om et forsøg på at skrive til en fuld stak, eller omvendt et forsøg på at læse fra en tom stak. Efter at værdien af ​​denne bit er blevet analyseret, skal den nulstilles til 0 igen sammen med PE, UE og IE bits (hvis de blev sat);
  • bit af den samlede fejl af coprocessor ES (Error Summary). Bitten sættes til 1, hvis nogen af ​​de seks undtagelser, der er anført ovenfor, forekommer;
  • fire bit c0…c3 (Condition Code) - betingelseskode. Formålet med disse bits svarer til flagene i EFLAGS-registeret for hovedprocessoren - at afspejle resultatet af udførelsen af ​​den sidste kommando fra coprocessoren.
  • tre-bit TOP-felt. Feltet indeholder en registermarkør til den aktuelle top af stakken.
  • coprocessor optaget bit B.

Coprocessor kontrolregister cwr– bestemmer funktionerne ved behandling af numeriske data. Ved at bruge felterne i cwr-registret kan du justere nøjagtigheden af ​​numeriske beregninger, kontrolafrunding og maskere undtagelser.

Den består af:

  • seks undtagelsesmasker PM, UM, OM, ZM, DM, IM;
  • PC præcisionskontrolfelter (Precision Control);
  • RC (Rounding Control) afrundingskontrolfelter.

Undtagelsesmasker er designet til at maskere undtagelser, hvis forekomst registreres ved hjælp af seks bit af swr-registret. Hvis nogen undtagelsesmaskebit i cwr-registret er sat til 1, så vil de tilsvarende undtagelser blive håndteret af coprocessoren selv. Hvis den tilsvarende undtagelsesmaskebit i cwr-registret indeholder et 0 for en hvilken som helst undtagelse, vil int 16 (10h) afbrydelsen blive hævet, når en undtagelse af den type forekommer. Operativsystemet skal indeholde (eller programmøren skal skrive) en handler for denne afbrydelse. Han skal finde ud af årsagen til afbrydelsen og derefter om nødvendigt rette den og også tage andre handlinger.

2-bit præcisionskontrolfeltet PC bruges til at vælge længden af ​​mantissen. Mulige værdier i dette felt betyder:

  • PC =00 - mantisse længde 24 bit;
  • PC = 10 - mantisse længde 53 bit;
  • PC =11 - mantisse længde 64 bit.

Standardfeltværdien er PC =11.

RC-afrundingskontrolfeltet giver dig mulighed for at styre processen med afrunding af tal under coprocessordrift. Behovet for en afrundingsoperation kan opstå i en situation, hvor der efter udførelse af den næste coprocessorkommando opnås et resultat, der ikke kan repræsenteres, for eksempel en periodisk brøk. Ved at indstille en af ​​værdierne i RC-feltet kan du runde i den ønskede retning.
RC-feltværdier med tilsvarende afrundingsalgoritme:

  • 00 - værdien er afrundet til det nærmeste tal, der kan repræsenteres i bitgitteret i coprocessorregisteret;
  • 01 - værdien er afrundet nedad;
  • 10 - værdien er rundet op;
  • 11 - brøkdelen af ​​tallet kasseres. Bruges til at reducere en værdi til en form, der kan bruges i heltals aritmetiske operationer.

Bit 12 i cwr-registret er fysisk fraværende og læses som 0.

twir tag register– er en samling af to-bit felter. Hvert felt svarer til et specifikt fysisk stakregister og karakteriserer dets aktuelle tilstand. Coprocessor-instruktioner bruger dette register, for eksempel til at bestemme, om værdier kan skrives til disse registre. En ændring i tilstanden af ​​ethvert stakregister afspejles i indholdet af 2-bit feltet i mærkeregistret svarende til dette register. Følgende værdier er mulige i tagregisterfelterne:

  • 00 - coprocessorstakregisteret er optaget med en gyldig værdi, der ikke er nul;
  • 01 - coprocessorstakregisteret indeholder en nulværdi;
  • 10 - coprocessorstakregisteret indeholder en af ​​de specielle numeriske værdier, med undtagelse af nul;
  • 11 - registret er tomt og kan skrives til. Denne værdi i et to-bit tagregisterfelt betyder ikke, at alle bits i det tilsvarende stakregister skal være nul.
Hvordan coprocessoren fungerer

Koprocessorens registerstabel er organiseret efter ringprincippet. Blandt de otte registre, der udgør stakken, er der ingen, der er toppen af ​​stakken. Alle stakregistre er helt identiske og har lige rettigheder set ud fra et funktionelt synspunkt. Toppen i coprocessor-ringstakken flyder. Det aktuelle toppunkt styres i hardware ved hjælp af 3-bit topfeltet i swr registeret.


Det øverste felt registrerer nummeret på stakregisteret r0…r7, som i øjeblikket er den aktuelle top af stakken.
Coprocessorinstruktioner fungerer ikke med fysiske antal stakregistre r0…r7, men med deres logiske tal st(0)…st(7). Ved at bruge logiske tal implementeres relativ adressering af coprocessorstakregistrene. For eksempel, hvis det aktuelle toppunkt før skrivning til stakken er det fysiske stakregister r3, så bliver det aktuelle toppunkt efter skrivning til stakken det fysiske stakregister r2. Det vil sige, når stakken skrives, bevæger markøren i toppen af ​​stakken sig mod de lavere tal i de fysiske registre (falder med én). Hvis det aktuelle toppunkt er r0, vil dets aktuelle toppunkt blive det fysiske register r7 efter at have skrevet den næste værdi til coprocessorstakken. Hvad angår de logiske tal for stakregistrene st(0)...st(7), så flytter de sig sammen med ændringen i den aktuelle top af stakken. Den logiske top af stakken hedder altid st(0) .
Da udvikleren manipulerer relative snarere end absolutte stakregisternumre, når han skriver et program, kan han have svært ved at fortolke indholdet af twr-tagregisteret med de tilsvarende fysiske stakregistre. Som forbindelsesled er det nødvendigt at bruge oplysninger fra det øverste felt i swr-registret. Sådan implementeres ringprincippet.
Denne stakorganisation har stor fleksibilitet, især når parametre overføres til en procedure. For at øge fleksibiliteten i udvikling og brug af procedurer, er det ikke tilrådeligt at binde dem til hardwareressourcer (fysiske registernumre på coprocessoren) med hensyn til transmitterede parametre. Det er meget mere bekvemt at specificere rækkefølgen af ​​de transmitterede parametre i form af logiske registernumre. En sådan overførselsmetode ville være utvetydig og ville ikke kræve, at udvikleren kender unødvendige detaljer om hardwareimplementeringerne af coprocessoren. Den logiske nummerering af coprocessorregistre, understøttet på instruktionssætniveau, implementerer ideelt set denne idé. I dette tilfælde er det ligegyldigt, i hvilket fysisk register af coprocessor-stakken dataene blev placeret, før subrutinen blev kaldt; kun rækkefølgen af ​​parametrene på stakken bestemmer. Af denne grund er det vigtigt for subrutinen kun at kende den rækkefølge, i hvilken de passerede parametre er placeret på stakken.

Funktionsprincippet for coprocessoren sammen med den centrale processor
Behandleren og coprocessoren har deres egne separate instruktionssystemer og behandlede dataformater. Selvom en coprocessor arkitektonisk er en separat computerenhed, kan den ikke eksistere adskilt fra hovedprocessoren. Processoren og coprocessoren, som er to uafhængige computerenheder, kan arbejde parallelt. Men denne parallelisering gælder kun for kommandoudførelse. Begge processorer er forbundet til en fælles systembus og har adgang til den samme information. Hovedprocessoren starter altid processen med at hente den næste instruktion. Efter prøvetagning når kommandoen begge processorer samtidigt. Enhver coprocessorkommando har en operationskode, hvoraf de første fem bit har værdien 11011. Når operationskoden begynder med disse bits, bestemmer hovedprocessoren, baseret på det yderligere indhold af operationskoden, om denne kommando kræver adgang til hukommelsen . Hvis dette er tilfældet, så genererer hovedprocessoren den fysiske adresse på operanden og tilgår hukommelsen, hvorefter indholdet af hukommelsescellen eksponeres for databussen. Hvis der ikke kræves hukommelsesadgang, afslutter hovedprocessoren arbejdet på den givne instruktion (uden at forsøge at udføre den) og begynder at afkode den næste instruktion fra den aktuelle input-instruktionsstrøm. Den valgte kommando går ind i coprocessoren samtidigt med hovedprocessoren. Coprocessoren, efter at have bestemt ud fra de første fem bit, at den næste kommando tilhører dets instruktionssystem, begynder sin udførelse. Hvis en instruktion kræver operander fra hukommelsen, får coprocessoren adgang til databussen for at læse indholdet af hukommelsescellen, som på det tidspunkt leveres af hovedprocessoren.

I visse tilfælde er det nødvendigt at koordinere driften af ​​begge enheder. For eksempel, hvis en kommando fra coprocessoren i inputstrømmen umiddelbart efterfølges af en kommando fra hovedprocessoren, der bruger resultaterne af den forrige kommando, så vil coprocessoren ikke have tid til at udføre sin kommando før hovedprocessoren, efter at have sprunget over coprocessor-kommandoen udfører sin egen. I dette tilfælde vil programmets logik blive brudt. En anden situation er også mulig. Hvis input-kommandostrømmen indeholder en sekvens af flere coprocessor-kommandoer, vil processoren sende dem igennem meget hurtigt, men den skal give en ekstern grænseflade til coprocessoren. Disse og andre, mere komplekse situationer fører til behovet for at synkronisere to processorers arbejde med hinanden. I tidlige mikroprocessormodeller blev dette gjort ved at indsætte en speciel vente- eller fwait-kommando før eller efter hver coprocessor-kommando. Arbejdet med denne kommando var at suspendere hovedprocessorens arbejde, indtil coprocessoren var færdig med at arbejde på den sidste kommando. I mikroprocessormodeller (startende fra i486) udføres en sådan synkronisering automatisk. Men for nogle kommandoer fra gruppen af ​​coprocessor-kontrolkommandoer er det muligt at vælge mellem kommandoer med synkronisering (venter) og uden.

Almindelige brugere tænker normalt aldrig over, hvad en coprocessor er, og langt de fleste ved ikke engang om dens eksistens. Alt ændrer sig, når operativsystemet, med misundelsesværdig vedholdenhed, begynder at virke og viser meddelelser om, at den tilsvarende driver ikke blev fundet. Hvad skal man gøre i sådan en situation? Der er ret mange løsninger, der kan findes, men uden en fuld forståelse af, hvad denne enhed er, vil ingen af ​​dem fuldt ud løse det problem, der er opstået.

Hvad er en coprocessor: generel forståelse

Du kan være interesseret i:

Lad os først og fremmest se på, hvad det er, og hvad det er til. Baseret på navnet på denne enhed er det let at konkludere, at dette er en slags ekstra processor, der er installeret i computersystemet sammen med den vigtigste (centrale). Ligesom CPU'en er coprocessoren monteret på bundkortet. Det er dog nødvendigt at skelne mellem de vigtigste muligheder for installationen. Hvad angår coprocessor-enheden, kan den præsenteres både i form af et separat mikrokredsløb (chip), for hvilket der er tildelt en speciel monteringsplacering (bus) på bundkortet, og i form af en komponent indbygget direkte i den centrale processor .

For at udføre flydende aritmetiske operationer er der en speciel aritmetisk processor kaldet en coprocessor. I modsætning til CPU'en styrer den ikke systemet, men venter på, at CPU-kommandoen udfører aritmetiske beregninger og genererer resultater. Ifølge Intel, sammenlignet med en CPU, kan den aritmetiske coprocessor reducere udførelsestiden for aritmetiske operationer såsom multiplikation og eksponentiering med 80 % eller mere. Den hastighed, hvormed addition og subtraktion udføres, forbliver generelt uændret.

Coprocessor er bare et almindeligt navn for denne chip. Det kaldes fuldt ud en matematisk coprocessor eller Numeric Processing Unit (NPU) eller Floating Point Processing Unit (FPU).

Tilstedeværelsen af ​​en coprocessor på bundkortet er ikke obligatorisk, så i stedet kan der være en tom slot til yderligere installation af en coprocessor. Undtagelsen er alle CPU'er 486DX og højere - her er coprocessoren integreret direkte i CPU'en.

Det primære anvendelsesområde for coprocessorer er videnskabelige og tekniske applikationer forbundet med at udføre et stort antal aritmetiske operationer. Dette er dog ikke en begrænsning af brugen. Typisk fremskynder NPU ethvert program - også et tekstbehandlingsprogram, da arbejdet med tekstblokke og moduler kræver komplekse beregninger. Coprocessoren fremskynder også behandlingen af ​​grafiske billeder og udførelsen af ​​CAD-programmer betydeligt.

vædder

Hukommelseselementer danner grundlaget for den interne funktion af ethvert computersystem, da data med deres hjælp lagres og kan læses igen under videre behandling.

For at CPU'en kan udføre programmer, skal de indlæses i RAM (et område med hukommelse, der er tilgængeligt for brugerprogrammer). CPU'en har direkte adgang til data placeret i random access memory (Random Access Memory, RAM), mens processoren arbejder med anden "perifer" eller ekstern hukommelse (floppy og harddiske) gennem en buffer, som er en type RAM, der er ikke tilgængelig for brugeren. Først efter at softwaren er blevet indlæst i RAM fra et eksternt lagermedie, er yderligere drift af systemet som helhed mulig. RAM er det hurtigste lagermedie i en computer. Det grundlæggende vigtigt er, at information både kan skrives til den og læses.

RAM har sine fordele og ulemper:

Takket være korte hukommelsesadgangstider øges databehandlingshastigheden betydeligt. Hvis information kun blev læst fra eksterne medier, ville brugeren bruge meget tid på at vente på færdiggørelsen af ​​en bestemt operation

Ulempen ved RAM er, at det er midlertidig hukommelse. Når strømmen er slukket, er RAM'en fuldstændig "ryddet", og alle data, der ikke er skrevet til eksterne medier, vil gå tabt for altid

RAM hører til kategorien dynamisk hukommelse, dvs. dens indhold skal "opfriskes" med visse intervaller under drift.

Lagerelementet i dynamisk hukommelse er en kondensator, som kan være i en opladet eller afladet tilstand. Hvis kondensatoren er opladet, så skrives et logisk 1 til cellen. Hvis kondensatoren er afladet, så skrives et logisk 0 til cellen. I en ideel kondensator kan ladningen opretholdes i det uendelige. I en rigtig kondensator er der en lækstrøm, så informationen, der er registreret i den dynamiske hukommelse, vil gå tabt over tid, da kondensatorerne for lagringselementerne vil være fuldstændig afladet efter et par millisekunder. For at undgå tab af information er der en hukommelsesregenereringsproces (Refresh).

RAM er et kort (med undtagelse af ældre pc-modeller, hvor chips blev installeret direkte i bundkortet), ca. 8 cm langt, hvorpå DRAM (Dynamic RAM) chips er placeret. Et sådant kort kaldes et modul og er installeret i de tilsvarende slots på bundkortet. For nylig er DIMM-moduler blevet mest udbredt. Der var også SIP- og SIMM-moduler. Moduler indsættes i slots, der er specielt designet til dem på bundkortet, kaldet banker.

En vigtig egenskab (udover volumen) ved RAM er adgangstiden, som karakteriserer det tidsinterval, hvori information skrives til eller læses fra hukommelsen. Adgangstiden for eksterne medier såsom floppy eller harddiske er udtrykt i millisekunder, mens den for hukommelseselementer måles i nanosekunder.

Logisk hukommelsestildeling

Den logiske fordeling af RAM bestemmes ikke kun af det anvendte operativsystem, men også af funktionerne i hardwareimplementeringen af ​​IBM-kompatible pc'er.

Der er tre vigtigste logiske områder af RAM:

Konventionel hukommelse Det vigtigste hukommelsesområde (første 640 KB). Det rummer de fleste af alle applikationsprogrammer og data.

UMA (Upper Memory Area) Dette indeholder information, der bruges til at forbinde applikationsprogrammer med forskellige udvidelseskort. (384 KB placeret mellem 640 KB og 1 MB)

XMS (Extended Memory Specification) Al hukommelse over 1 MB. Anvendes af Windows-applikationer

En coprocessor er et specialiseret integreret kredsløb, der fungerer sammen med CPU'en, men er mindre alsidigt. I modsætning til CPU'en har coprocessoren ikke en programtæller. Coprocessoren er designet til at udføre et specifikt sæt funktioner, for eksempel: udføre operationer med reelle tal - matematisk coprocessor, forberede grafiske billeder og tredimensionelle scener - grafisk coprocessor, digital signalbehandling - signal coprocessor osv.

Brugen af ​​coprocessorer med forskellig funktionalitet giver dig mulighed for at løse en bred vifte af problemer:

· behandling af økonomiske oplysninger;

· modellering;

· grafiske transformationer;

· industriel ledelse;

· numeriske kontrolsystemer;

· robotter;

· navigation;

· dataindsamling mv.

Cache hukommelse

Cachehukommelse er en højhastighedslagringsenhed placeret på samme chip som CPU'en eller eksternt til CPU'en. Cachen fungerer som en højhastighedsbuffer mellem CPU'en og den relativt langsomme hovedhukommelse. Ideen med cachehukommelse er baseret på at forudsige den mest sandsynlige CPU-adgang til RAM.

Hvis CPU'en har fået adgang til et hvilket som helst RAM-objekt, vil den med stor sandsynlighed snart få adgang til dette objekt igen. Et eksempel på denne situation ville være kode eller data i sløjfer.

Det er vigtigt at bemærke, at tre skrivemetoder bruges til at koordinere indholdet af cachehukommelsen og RAM:

· Skriv igennem - RAM opdateres samtidigt med cachehukommelsen.

· Bufret gennemskrivning - information forsinkes i cachebufferen, før den skrives til RAM og skrives til RAM under cyklusser, hvor CPU'en ikke har adgang til den.

· Skriv tilbage - ændringsbitten i tagfeltet bruges, og linjen omskrives kun til RAM, hvis ændringsbitten er 1.

Der er to typer datablokke i cachehukommelsesstrukturen:

· datadisplayhukommelse (selve dataene, duplikeret fra RAM);

· taghukommelse (tegn, der angiver placeringen af ​​cachelagrede data i RAM).

Hukommelsespladsen til visning af data i cachen er opdelt i linjer - blokke med fast længde (for eksempel 32, 64 eller 128 bytes). Hver cachelinje kan indeholde en sammenhængende justeret blok af bytes fra RAM. Hvilken RAM-blok, der er afbildet til en given cache-linje, bestemmes af linjemærket og kortlægningsalgoritmen. Baseret på algoritmerne til at kortlægge RAM til cache, er der tre typer cachehukommelse:

· fuldt associativ cache;

· direkte kortlægningscache;

· flere associative cache.

For fuldt associerende En cache er kendetegnet ved, at cache-controlleren kan placere enhver blok af RAM i enhver cache-linje.

I dette tilfælde er den fysiske adresse opdelt i to dele: forskydningen i blokken (cachelinjen) og bloknummeret. Når en blok er cachelagret, gemmes bloknummeret i det tilsvarende linjemærke. Når CPU'en får adgang til cachen for en nødvendig blok, vil en cache-miss kun blive opdaget efter sammenligning af tags på alle linjer med bloknummeret.

En af de grundlæggende fordele ved denne visningsmetode er god udnyttelse af RAM, fordi Der er ingen begrænsninger på, hvilken blok der skal tilknyttes hvilken cachelinje. Ulemperne omfatter den komplekse hardwareimplementering af denne metode, som kræver et stort antal kredsløbskomponenter (hovedsageligt komparatorer), hvilket fører til en stigning i adgangstid til en sådan cache og en stigning i dens omkostninger.

Direct Mapping Cache(eller single-entry cache-associative). I dette tilfælde bestemmer hukommelsesadressen (bloknummeret) entydigt den cachelinje, hvori den givne blok vil blive placeret. Den fysiske adresse er opdelt i tre dele: forskydningen i blokken (cachelinjen), cachelinjenummeret og så videre. Denne eller hin blok vil altid blive placeret i en strengt defineret cache-linje, hvis det er ekstremt vigtigt, og erstatte en anden blok gemt der. Når CPU'en får adgang til cachen for en nødvendig blok, behøver den kun at tjekke koden på en linje for at afgøre, om det var et cache-hit eller en cache-miss.

De åbenlyse fordele ved denne algoritme er dens enkelhed og lave implementeringsomkostninger. Ulemperne omfatter den lave effektivitet af en sådan cache på grund af de sandsynligvis hyppige genindlæsninger af rækker. For eksempel, når man tilgår hver 64. hukommelsescelle i systemet, vil cache-controlleren være tvunget til konstant at overbelaste den samme cache-linje, uden overhovedet at bruge resten.

Flere associative cache(eller delvist associativ cache). Dette er et kompromis mellem de to første algoritmer.

Med denne metode til at organisere cachehukommelse kombineres linjer i grupper, som kan omfatte 2/4/8/: linjer. I overensstemmelse med antallet af linjer i sådanne grupper skelnes der mellem 2-input, 4-input osv. associativ cache. Når du får adgang til hukommelsen, er den fysiske adresse opdelt i tre dele: forskydningen i blokken (cachelinjen), gruppenummeret (sæt) og så videre. En hukommelsesblok, hvis adresse svarer til en bestemt gruppe, skal placeres i en hvilken som helst række i denne gruppe, og den tilsvarende værdi placeres i rækkemærket. Det er indlysende, at inden for den udvalgte gruppe overholdes associativitetsprincippet. På den anden side kan en bestemt blok kun falde ind i en strengt defineret gruppe, hvilket afspejler princippet om at organisere en direkte kortlægningscache. For at processoren kan identificere en cache-miss, behøver den kun at kontrollere tags for én gruppe (2/4/8/: linjer).

Der skelnes mellem følgende typer coprocessorer:

  • matematiske coprocessorer til generelle formål, typisk accelererende beregninger med flydende komma,
  • I/O-coprocessorer (f.eks. Intel 8089), som fritager den centrale processor fra at kontrollere I/O-operationer eller udvider processorens standardadresserum,
  • coprocessorer til at udføre alle højt specialiserede beregninger.

Coprocessorer kan være en del af et logiksæt udviklet af en specifik virksomhed (f.eks. Intel frigivne coprocessorer og 8089 for processorer 8086 og 8088, Motorola - Motorola 68881 coprocessor) eller produceret af en tredjepartsproducent (for eksempel Weitek (engelsk) ) til Motorola m68k og 1067 til Intel 80286).

Coprocessor i programmering

Coprocessoren udvider instruktionssættet for den centrale processor, så for at bruge det, skal programmet (kompileret uden fortolkning og kalder eksterne biblioteker) indeholde disse instruktioner. Indstillingerne af moderne compilere til højniveausprog til x86-processorer giver dig ofte mulighed for at vælge, om du vil bruge en matematisk coprocessor eller ej, hvilket er særligt vigtigt, når du opretter kode, der vil blive udført inde i en hardware-afbrydelsesbehandler.

Der er også perifere processorer designet til at styre perifere enheder og aflaste den centrale processor, nemlig:

Skriv en anmeldelse om artiklen "Coprocessor"

Noter

se også

Links

  • whatis.techtarget.com/definition/coprocessor
  • www.webopedia.com/TERM/C/coprocessor.html
  • www.pcmag.com/encyclopedia/term/46625/math-coprocessor
  • www.trevormarshall.com/old_papers/Approaching-Desktop-Supercomputer.pdf 1990 - Computing coprocessors, tidlige 32 bit computing coprocessorer
  • Hansen, Paul Mark, november 1988

Et uddrag, der karakteriserer Coprocessoren

Prinsesse Marya skrev, at hun var fortvivlet over den misforståelse, der var opstået mellem dem. Uanset hendes fars følelser, skrev prinsesse Marya, bad hun Natasha om at tro, at hun ikke kunne lade være med at elske hende som den, der blev valgt af sin bror, for hvis lykke hun var klar til at ofre alt.
"Men," skrev hun, "tror ikke, at min far var dårligt indstillet over for dig. Han er en syg og gammel mand, der skal undskyldes; men han er venlig, generøs og vil elske den, der vil gøre hans søn glad.” Prinsesse Marya bad desuden om, at Natasha fastsatte et tidspunkt, hvor hun kunne se hende igen.
Efter at have læst brevet satte Natasha sig ved skrivebordet for at skrive et svar: "Skøn prinsesse," [Kære prinsesse], skrev hun hurtigt, mekanisk og stoppede. "Hvad kunne hun så skrive efter alt det, der skete i går? Ja, ja, alt dette skete, og nu er alt anderledes,” tænkte hun og satte sig over det brev, hun havde påbegyndt. "Skal jeg nægte ham? Er det virkelig nødvendigt? Det her er forfærdeligt!”... Og for ikke at tænke disse frygtelige tanker, gik hun til Sonya og begyndte sammen med hende at ordne mønstrene.
Efter middagen gik Natasha til sit værelse og tog igen prinsesse Maryas brev. - "Er det virkelig overstået? hun troede. Skete alt dette virkelig så hurtigt og ødelagde alt, hvad der var før”! Hun mindedes med al sin tidligere styrke sin kærlighed til prins Andrei og følte samtidig, at hun elskede Kuragin. Hun forestillede sig levende sig selv som prins Andrei's hustru, forestillede sig billedet af lykken med ham gentaget så mange gange i hendes fantasi, og på samme tid, skyllet af spænding, forestillede hun sig alle detaljerne i hendes gårsdagens møde med Anatole.
"Hvorfor kunne det ikke være sammen? nogle gange, i fuldstændig formørkelse, tænkte hun. Så ville jeg kun være helt glad, men nu skal jeg vælge og uden nogen af ​​begge kan jeg ikke være lykkelig. En ting, tænkte hun, er lige så umuligt at sige, hvad der var ment til prins Andrei, eller at skjule det. Og intet er spoleret med dette. Men er det virkelig muligt at skilles for evigt med denne lykke af prins Andreis kærlighed, som jeg levede med så længe?"
"Unge dame," sagde pigen hvisken med et mystisk blik, og trådte ind i rummet. - En person bad mig fortælle det. Pigen afleverede brevet. "Kun for Guds skyld," sagde pigen stadig, da Natasha uden at tænke sig om brød forseglingen med en mekanisk bevægelse og læste Anatoles kærlighedsbrev, som hun uden at forstå et ord kun forstod én ting af - at dette brev var fra ham, fra den mand, som hun elsker. “Ja, hun elsker, ellers hvordan kunne det der skete ske? Kan der være et kærlighedsbrev fra ham i hendes hånd?”
Med rystende hænder holdt Natasha dette lidenskabelige kærlighedsbrev, skrevet til Anatoly af Dolokhov, og da hun læste det, fandt hun i det ekkoer af alt, hvad det forekom hende, som hun selv følte.