Welke functie vervult een coprocessor in een computer? Functies en werkingsprincipes van een wiskundige coprocessor. Coprocessor-softwaremodel

Een coprocessor is een gespecialiseerde processor die de mogelijkheden van de centrale processor van een computersysteem uitbreidt, maar is ontworpen als een afzonderlijke functionele module. Fysiek kan de coprocessor een afzonderlijke chip zijn of in de centrale processor worden ingebouwd.

Er worden de volgende typen coprocessors onderscheiden:

Wiskundige coprocessors voor algemeen gebruik, die doorgaans drijvende-kommaberekeningen versnellen,

I/O-coprocessors (bijvoorbeeld Intel 8089), die de centrale processor ontlasten van het controleren van I/O-bewerkingen of de standaard adresruimte van de processor uitbreiden,

Coprocessors voor het uitvoeren van zeer gespecialiseerde berekeningen.

Een coprocessor is geen volwaardige processor, omdat hij niet veel bewerkingen uitvoert die kenmerkend zijn voor een processor (hij kan bijvoorbeeld niet met een programma werken en geheugenadressen berekenen), omdat hij een randapparaat van de centrale processor is.

Een van de schema's voor interactie tussen de centrale processor en coprocessor, die met name wordt gebruikt in x86-coprocessors, is als volgt geïmplementeerd:

De coprocessor is verbonden met de bussen van de centrale processor en heeft ook verschillende speciale signalen om processors met elkaar te synchroniseren.

Sommige CPU-opdrachtcodes zijn gereserveerd voor de coprocessor. De centrale verwerkingseenheid decodeert en voert instructies opeenvolgend uit. Wanneer een instructie wordt uitgegeven die door de coprocessor moet worden uitgevoerd, verzendt de CPU de opcode naar de coprocessor. In dit geval, als extra toegang tot het geheugen nodig is (voor het lezen of schrijven van resultaten), “legt” de coprocessor de databus vast.

Na ontvangst van de opdracht en de benodigde gegevens begint de coprocessor deze uit te voeren. Terwijl de coprocessor het commando uitvoert, gaat de centrale processor door met het uitvoeren van het programma, parallel aan de berekeningen van de coprocessor. Als de volgende instructie ook een coprocessorinstructie is, stopt de processor en wacht tot de coprocessor de voorgaande instructie heeft voltooid.

Er is een speciale wachtinstructie (FWAIT) die de processor met geweld stopt totdat de berekeningen zijn voltooid (als de resultaten ervan nodig zijn om het programma voort te zetten). Momenteel wordt het commando alleen gebruikt om uitzonderingen af ​​te handelen bij het werken met drijvende komma; het werk van de processor en coprocessor wordt transparant gesynchroniseerd met de programmeur.

Te beginnen met de Intel486DX-processor, werd de drijvende-komma-eenheid geïntegreerd in de centrale processor en de FPU genoemd. In de Intel486SX-lijn was de FPU-module uitgeschakeld (in eerste instantie bevatte deze lijn processors met een defecte FPU). Voor Intel486SX-processors werd een Intel487SX “coprocessor” uitgebracht, maar in feite was het een Intel486DX-processor en na installatie werd de Intel486SX-processor uitgeschakeld.


Ondanks de integratie is de FPU in i486-processors een ongewijzigde coprocessor, geïmplementeerd op dezelfde chip; bovendien is het i486 FPU-circuit volledig identiek aan de vorige generatie 387DX-coprocessor tot aan de kloksnelheid (de helft van de frequentie van de centrale processor). Echte integratie van de FPU met de centrale processor begon pas in Pentium-processors van het MMX-model.

In de overeenkomstige periode raakten coprocessors voor het door Weitek geproduceerde x86-platform wijdverbreid - het bracht respectievelijk 1167, 2167 uit in de vorm van een chipset en 3167, 4167 chips voor processors 8086, 80286, 80386, 80486. Vergeleken met coprocessors van Intel leverden ze 2-3 keer betere prestaties, maar hadden ze een incompatibele software-interface geïmplementeerd via geheugenmapping-technologie. Het kwam erop neer dat de hoofdprocessor informatie moest schrijven naar bepaalde geheugengebieden die door de coprocessor werden bestuurd. Het specifieke adres waar de opname werd gemaakt, werd geïnterpreteerd als een of ander commando. Ondanks de incompatibiliteit werden de coprocessors van Weitek breed ondersteund door zowel softwareontwikkelaars als moederbordfabrikanten, die het gebruik van een dergelijke chip inbegrepen.

Een aantal andere bedrijven hebben verschillende incompatibele wiskundige coprocessors uitgebracht, die ermee zijn verbonden via I/O-poorten of BIOS-interrupts, maar ze zijn niet zo wijdverspreid geworden.

Er worden de volgende typen coprocessors onderscheiden:

  • wiskundige coprocessors voor algemeen gebruik, die doorgaans drijvende-kommaberekeningen versnellen,
  • I/O-coprocessors (bijvoorbeeld Intel 8089), die de centrale processor ontlasten van het controleren van I/O-bewerkingen of de standaard adresruimte van de processor uitbreiden,
  • coprocessors voor het uitvoeren van zeer gespecialiseerde berekeningen.

Coprocessors kunnen deel uitmaken van een logicaset die is ontwikkeld door een specifiek bedrijf (bijvoorbeeld Intel heeft coprocessors en 8089 uitgebracht voor processors 8086 en 8088, Motorola - de Motorola 68881-coprocessor) of geproduceerd door een externe fabrikant (bijvoorbeeld Weitek (Engels). ) voor Motorola m68k en 1067 voor Intel 80286).

Coprocessor bij het programmeren

De coprocessor breidt de instructieset van de centrale processor uit, dus om deze te kunnen gebruiken moet het programma (gecompileerd zonder interpretatie en het aanroepen van externe bibliotheken) deze instructies bevatten. Met de instellingen van moderne compilers voor talen op hoog niveau voor x86-processors kun je vaak kiezen of je een wiskundige coprocessor wilt gebruiken of niet, wat vooral belangrijk is bij het maken van code die wordt uitgevoerd in een hardware-interrupt-handler.

Er zijn ook randprocessors die zijn ontworpen om randapparatuur te besturen en de centrale processor te ontlasten, namelijk:

Schrijf een recensie over het artikel "Coprocessor"

Opmerkingen

Zie ook

Koppelingen

  • 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 - Computercoprocessors, vroege 32-bit computercoprocessors
  • Hansen, Paul Mark, november 1988

Een fragment dat de coprocessor karakteriseert

Prinses Marya schreef dat ze wanhopig was over het misverstand dat tussen hen was ontstaan. Wat de gevoelens van haar vader ook waren, schreef prinses Marya, ze vroeg Natasha te geloven dat ze niet anders kon dan van haar houden als degene die was uitgekozen door haar broer, voor wiens geluk ze bereid was alles op te offeren.
‘Maar’, schreef ze, ‘denk niet dat mijn vader je slecht gezind was. Hij is een zieke en oude man die geëxcuseerd moet worden; maar hij is vriendelijk, genereus en zal houden van degene die zijn zoon gelukkig zal maken.” Prinses Marya vroeg Natasha verder een tijdstip af te spreken waarop ze haar weer kon zien.
Na het lezen van de brief ging Natasha aan het bureau zitten om een ​​antwoord te schrijven: 'Chere prinses', [Beste prinses], ze schreef snel, mechanisch en stopte. 'Wat zou ze nu kunnen schrijven na alles wat er gisteren is gebeurd? Ja, ja, dit is allemaal gebeurd, en nu is alles anders,' dacht ze, terwijl ze over de brief zat waar ze aan was begonnen. ‘Moet ik hem weigeren? Is het echt nodig? Dit is verschrikkelijk!”... En om deze vreselijke gedachten niet te denken, ging ze naar Sonya en begon samen de patronen uit te zoeken.
Na het eten ging Natasha naar haar kamer en nam opnieuw de brief van prinses Marya aan. - “Is het echt allemaal voorbij? dacht ze. Is dit allemaal echt zo snel gebeurd en alles wat daarvoor was vernietigd? Ze herinnerde zich met al haar vroegere kracht haar liefde voor prins Andrei en voelde tegelijkertijd dat ze van Kuragin hield. Ze stelde zich levendig voor als de vrouw van prins Andrei, stelde zich het beeld van geluk met hem voor dat zo vaak in haar verbeelding werd herhaald, en stelde zich tegelijkertijd, rood van opwinding, alle details voor van haar ontmoeting van gisteren met Anatole.
“Waarom zou het niet samen kunnen zijn? soms, in volledige verduistering, dacht ze. Dan alleen zou ik helemaal gelukkig zijn, maar nu moet ik kiezen en zonder een van beide kan ik niet gelukkig zijn. Eén ding, dacht ze, het was even onmogelijk om te zeggen wat de bedoeling was met prins Andrei, of om het te verbergen. En hiermee wordt niets bedorven. Maar is het echt mogelijk om voor altijd afstand te doen van dit geluk van de liefde van prins Andrei, waar ik zo lang mee heb geleefd?
‘Jongedame,’ zei het meisje fluisterend met een mysterieuze blik toen ze de kamer binnenkwam. – Eén persoon zei dat ik het moest vertellen. Het meisje overhandigde de brief. 'Alleen in godsnaam', zei het meisje nog steeds toen Natasha, zonder na te denken, het zegel met een mechanische beweging verbrak en de liefdesbrief van Anatole las, waarvan ze, zonder een woord te begrijpen, maar één ding begreep: dat deze brief afkomstig was van hem, van die man van wie ze houdt. 'Ja, ze houdt van, hoe zou anders kunnen gebeuren wat er is gebeurd? Zou er een liefdesbrief van hem in haar hand kunnen zitten?
Met trillende handen hield Natasha deze gepassioneerde liefdesbrief vast, gecomponeerd voor Anatoly door Dolokhov, en toen ze hem las, vond ze daarin echo's van alles wat het haar leek dat ze zelf voelde.

Een belangrijk onderdeel van de Intel-microprocessorarchitectuur is de aanwezigheid van een apparaat voor het verwerken van numerieke gegevens in floating point-formaat, genaamd wiskundige coprocessor De architectuur van op microprocessors gebaseerde computers was aanvankelijk uitsluitend gebaseerd op de rekenkunde met gehele getallen. Met de groei van de macht begonnen apparaten voor het verwerken van drijvende-kommagetallen te verschijnen. In de architectuur van de Intel 8086-microprocessorfamilie verscheen een apparaat voor het verwerken van drijvende-kommagetallen als onderdeel van een computer gebaseerd op de i8086/88-microprocessor en werd een wiskundige coprocessor of eenvoudigweg een coprocessor genoemd. De keuze voor deze naam was te danken aan het feit dat

  • ten eerste was dit apparaat bedoeld om de rekenmogelijkheden van de hoofdprocessor uit te breiden;
  • ten tweede werd het geïmplementeerd als een afzonderlijke chip, dat wil zeggen dat de aanwezigheid ervan optioneel was. De coprocessorchip voor de i8086/88-microprocessor heette i8087.

Met de komst van nieuwe modellen Intel-microprocessors verbeterden ook de coprocessors, hoewel hun softwaremodel vrijwel ongewijzigd bleef. Als afzonderlijke (en dienovereenkomstig optioneel in een bepaalde computerconfiguratie) apparaten, werden coprocessors behouden tot aan het i386-microprocessormodel en werden ze respectievelijk i287 en i387 genoemd. Vanaf het i486-model is de coprocessor geïmplementeerd in hetzelfde pakket als de hoofdmicroprocessor en is dus een integraal onderdeel van de computer.

Belangrijkste kenmerken van de wiskundige coprocessor:

  • Volledige ondersteuning voor IEEE-754 en 854 rekenkundige standaarden met drijvende komma. Deze standaarden beschrijven zowel de dataformaten waarmee de coprocessor moet werken als de reeks functies die hij implementeert;
  • ondersteuning voor numerieke algoritmen voor het berekenen van de waarden van trigonometrische functies, logaritmen, enz.;
  • verwerking van decimale getallen met een nauwkeurigheid van 18 bits, waardoor de coprocessor rekenkundige bewerkingen kan uitvoeren zonder hele decimale getallen met waarden tot 10 18 af te ronden;
  • verwerking van reële getallen uit het bereik ±3,37x10 -4932 ...1,18x10 +4932.

De vorm van weergave van getallen met drijvende komma wordt beschreven.

De algemene vorm van het weergeven van reële getallen suggereert de mogelijkheid om de volgende typen in het bitraster te plaatsen.

Soort cijfers Teken Rang Geheel Mantisse
+∞ 0 11…11 1 00…00
positief
genormaliseerd
0 00…01 — 11…10 1 00…00 — 11…11
positief niet-gestandaardiseerd 0 00…00 0 00…00 — 11…11
0 0, 1 00…00 0 00…00
negatief ongestandaardiseerd 1 00…00 0 00…00 — 11…11
negatief genormaliseerd 1 00…01 — 11…10 1 00…00 — 11…11
-∞ 1 11…11 1 00…00
talloze
(NaN - Geen getal)
* 11…11 1 **…** ≠0

Getallen met eenvoudige en dubbele precisie (respectievelijk float (DD) en double (DQ)) kunnen alleen in gestandaardiseerde vorm worden weergegeven. In dit geval is de bit van het gehele deel van het getal verborgen en impliceert dit een logische 1. De overige 23 (52) bits slaan de binaire mantisse van het getal op.

Dubbele uitgebreide precisiegetallen (long double (DT)) kunnen worden weergegeven in genormaliseerde of niet-gestandaardiseerde vorm, omdat het gehele bit van het getal niet verborgen is en de waarden 0 of 1 kan aannemen.

Het belangrijkste gegevenstype waarmee de wiskundige coprocessor werkt, zijn gegevens van 10 bytes (DT).

Coprocessor-softwaremodel

Het softwaremodel van de coprocessor bestaat uit een reeks registers, die elk hun eigen functionele doel hebben.

In het coprocessorsoftwaremodel kunnen drie groepen registers worden onderscheiden:

  • Acht registers r0…r7, die de basis vormen van het coprocessorsoftwaremodel - coprocessor-stapel . De grootte van elk register is 80 bits. Deze organisatie is typerend voor apparaten die gespecialiseerd zijn in het verwerken van computeralgoritmen.
  • Drie dienstregisters:
    — coprocessorstatusregister swr (Statuswoordregister) - geeft informatie weer over de huidige status van de coprocessor;
    — controleregister van de coprocessor cwr (Control Word Register) - bestuurt de bedrijfsmodi van de coprocessor;
    — tag register twr (Tags Word Register) - gebruikt om de status van elk van de stapelregisters te controleren.
  • Twee pointerregisters - dpr (Data Point Register) en ipr (Instruction Point Register) commando's. Ze zijn ontworpen om informatie op te slaan over het adres van de instructie die de uitzondering veroorzaakte, en het adres van de operand ervan. Deze pointers worden gebruikt bij het afhandelen van uitzonderingen (maar niet voor alle opdrachten).

Alle gespecificeerde registers zijn programmatisch toegankelijk. De toegang tot sommige ervan is echter vrij eenvoudig; voor dit doel zijn er speciale commando's in het coprocessor-besturingssysteem. Andere registers zijn moeilijker toegankelijk omdat hier geen speciale commando's voor zijn en er dus extra stappen moeten worden uitgevoerd.

swr-statusregister– weerspiegelt de huidige status van de coprocessor nadat het laatste commando werd uitgevoerd. Het swr-register bevat velden waarmee u kunt bepalen: welk register de huidige top van de coprocessorstapel is, welke uitzonderingen zich hebben voorgedaan nadat het laatste commando was uitgevoerd, wat de kenmerken zijn van de laatste commando-uitvoering (een soort analoog van het vlaggenregister van de hoofdprocessor).

Structureel bestaat het SWR-register uit:

  • 6 uitzonderingsvlaggen PE, OE, UE, ZE, DE, IE.
    Uitzonderingen zijn een soort interrupt, met behulp waarvan de processor het programma informeert over enkele kenmerken van de daadwerkelijke uitvoering ervan. De coprocessor heeft ook de mogelijkheid om dergelijke interrupts op te wekken wanneer bepaalde situaties (niet noodzakelijkerwijs foutief) optreden. Alle mogelijke uitzonderingen zijn teruggebracht tot 6 typen, die elk overeenkomen met 1 bit in het swr-register. De programmeur hoeft geen handler te schrijven om te reageren op de situatie die tot een uitzondering heeft geleid. De coprocessor kan op veel daarvan zelfstandig reageren. Dit wordt standaardafhandeling van uitzonderingen genoemd. Om ervoor te zorgen dat een specifiek type uitzondering standaard wordt afgehandeld, moet de uitzondering ongemaskeerd blijven. Deze actie wordt uitgevoerd door het overeenkomstige bit in het coprocessorbesturingsregister cwr op 1 te zetten. Soorten uitzonderingen vastgelegd met behulp van het SWR-register:
    • IE (Ongeldige bewerkingsfout) - ongeldige bewerkingscode;
    • DE (gedenormaliseerde operand Error) - niet-genormaliseerde operand;
    • ZE (delen door nulfout) - fout bij delen door nul;
    • OE (Overflow Error) - overloopfout. Treedt op wanneer de volgorde van een getal het maximaal toegestane bereik overschrijdt;
    • UE (Underflow Error) - anti-overflow-fout. Treedt op als het resultaat te klein is (bijna nul);
    • PE (Precisiefout) - precisiefout. Stel in wanneer de coprocessor het resultaat moet afronden omdat het niet nauwkeurig kan worden weergegeven. De coprocessor zal dus nooit nauwkeurig 10 door 3 kunnen delen.

    Wanneer een van deze zes uitzonderingstypen optreedt, wordt de overeenkomstige bit in het swr-register op één gezet, ongeacht of de uitzondering al dan niet in het cwr-register is gemaskeerd.

  • SF-coprocessorstapelfoutbit (Stack Fault). De bit wordt op 1 gezet als een van de drie uitzonderingssituaties zich voordoet: PE, UE of IE. In het bijzonder informeert de installatie ervan over een poging om naar een volledige stapel te schrijven, of, omgekeerd, een poging om van een lege stapel te lezen. Nadat de waarde van dit bit is geanalyseerd, moet deze samen met de PE-, UE- en IE-bits (indien ingesteld) weer op 0 worden gezet;
  • bit van de totale fout van de coprocessor ES (Error Summary). De bit wordt ingesteld op 1 als een van de zes hierboven genoemde uitzonderingen zich voordoet;
  • vier bits c0…c3 (Conditiecode) - conditiecode. Het doel van deze bits is vergelijkbaar met de vlaggen in het EFLAGS-register van de hoofdprocessor - om het resultaat weer te geven van de uitvoering van het laatste commando van de coprocessor.
  • drie-bits TOP-veld. Het veld bevat een registerwijzer naar de huidige top van de stapel.
  • coprocessor bezet bit B.

Controleregister coprocessorwerking cwr– bepaalt de kenmerken van het verwerken van numerieke gegevens. Met behulp van de velden in het cwr-register kunt u de nauwkeurigheid van numerieke berekeningen, afronding van besturingselementen en uitzonderingen maskeren.

Het bestaat uit:

  • zes uitzonderingsmaskers PM, UM, OM, ZM, DM, IM;
  • PC-precisiecontrolevelden (Precision Control);
  • RC (Rounding Control) afrondingscontrolevelden.

Uitzonderingsmaskers zijn ontworpen om uitzonderingen te maskeren, waarvan het optreden wordt geregistreerd met behulp van zes bits van het swr-register. Indien enige uitzonderingsmaskerbits in het cwr-register op 1 zijn ingesteld, zullen de overeenkomstige uitzonderingen door de coprocessor zelf worden afgehandeld. Als het corresponderende uitzonderingsmaskerbit van het cwr-register een 0 bevat voor een uitzondering, dan zal de int 16 (10h) interrupt worden gegenereerd wanneer een uitzondering van dat type optreedt. Het besturingssysteem moet een handler voor deze interrupt bevatten (of de programmeur moet schrijven). Hij moet de oorzaak van de onderbreking achterhalen en deze vervolgens, indien nodig, corrigeren en ook andere maatregelen nemen.

De 2-bits precisiecontroleveld-PC wordt gebruikt om de lengte van de mantisse te selecteren. Mogelijke waarden in dit veld betekenen:

  • PC =00 - mantisselengte 24 bits;
  • PC =10 - mantisselengte 53 bits;
  • PC =11 - mantisselengte 64 bits.

De standaardveldwaarde is PC =11.

Met het RC-afrondingsbesturingsveld kunt u het proces van het afronden van getallen tijdens de werking van de coprocessor besturen. De behoefte aan een afrondingsoperatie kan zich voordoen in een situatie waarin, na het uitvoeren van het volgende coprocessorcommando, een niet-representeerbaar resultaat wordt verkregen, bijvoorbeeld een periodieke breuk. Door één van de waarden in het RC-veld in te stellen, kun je afronden in de gewenste richting.
RC-veldwaarden met bijbehorend afrondingsalgoritme:

  • 00 - de waarde wordt afgerond op het dichtstbijzijnde getal dat kan worden weergegeven in het bitraster van het coprocessorregister;
  • 01 - de waarde wordt naar beneden afgerond;
  • 10 - de waarde wordt naar boven afgerond;
  • 11 - het fractionele deel van het getal wordt weggegooid. Wordt gebruikt om een ​​waarde te reduceren tot een vorm die kan worden gebruikt bij rekenkundige bewerkingen met gehele getallen.

Bit 12 in het cwr-register is fysiek afwezig en wordt gelezen als 0.

twr-tag registreren– is een verzameling velden van twee bits. Elk veld komt overeen met een specifiek fysiek stapelregister en karakteriseert de huidige status ervan. Coprocessorinstructies gebruiken dit register bijvoorbeeld om te bepalen of waarden naar deze registers kunnen worden geschreven. Een verandering in de toestand van een willekeurig stapelregister wordt weerspiegeld in de inhoud van het 2-bitsveld van het tagregister dat met dit register correspondeert. In de tagregistervelden zijn de volgende waarden mogelijk:

  • 00 - het stapelregister van de coprocessor is bezet met een geldige waarde die niet nul is;
  • 01 - het stapelregister van de coprocessor bevat een nulwaarde;
  • 10 - het stapelregister van de coprocessor bevat een van de speciale numerieke waarden, met uitzondering van nul;
  • 11 - het register is leeg en er kan naar geschreven worden. Deze waarde in een tagregisterveld van twee bits betekent niet dat alle bits van het corresponderende stapelregister nul moeten zijn.
Hoe de coprocessor werkt

De registerstapel van de coprocessor is georganiseerd volgens het ringprincipe. Van de acht registers waaruit de stapel bestaat, is er niemand die bovenaan de stapel staat. Alle stapelregisters zijn absoluut identiek en hebben vanuit functioneel oogpunt gelijke rechten. De bovenkant van de coprocessor-ringstapel zweeft. Het huidige hoekpunt wordt hardwarematig bestuurd met behulp van het 3-bits bovenste veld van het SWR-register.


Het bovenste veld registreert het nummer van het stapelregister r0…r7, dat momenteel de huidige bovenkant van de stapel is.
Coprocessoropdrachten werken niet met fysieke nummers van stapelregisters r0…r7, maar met hun logische nummers st(0)…st(7). Door gebruik te maken van logische getallen wordt de relatieve adressering van de coprocessorstapelregisters geïmplementeerd. Als het huidige hoekpunt vóór het schrijven naar de stapel bijvoorbeeld het fysieke stapelregister r3 is, wordt het huidige hoekpunt na het schrijven naar de stapel het fysieke stapelregister r2. Dat wil zeggen, terwijl de stapel wordt geschreven, beweegt de aanwijzer bovenaan de stapel naar de lage getallen van de fysieke registers (daalt met één). Als het huidige hoekpunt r0 is, zal het huidige hoekpunt, na het schrijven van de volgende waarde naar de coprocessorstapel, het fysieke register r7 worden. Wat de logische nummers van de stapelregisters st(0)…st(7) betreft, deze bewegen mee met de verandering in de huidige top van de stapel. De logische bovenkant van de stapel heet altijd st(0) .
Omdat de ontwikkelaar bij het schrijven van een programma relatieve in plaats van absolute stapelregisternummers manipuleert, kan hij moeite hebben met het interpreteren van de inhoud van het twr-tagregister met de overeenkomstige fysieke stapelregisters. Als verbindende schakel is het noodzakelijk om informatie uit het bovenste veld van het SWR-register te gebruiken. Op deze manier wordt het ringprincipe geïmplementeerd.
Deze stapelorganisatie heeft een grote flexibiliteit, vooral bij het doorgeven van parameters aan een procedure. Om de flexibiliteit van de ontwikkeling en het gebruik van procedures te vergroten, is het niet aan te raden deze te koppelen aan hardwarebronnen (fysieke registernummers van de coprocessor) in termen van verzonden parameters. Het is veel handiger om de volgorde van de verzonden parameters te specificeren in de vorm van logische registernummers. Een dergelijke overdrachtsmethode zou ondubbelzinnig zijn en zou niet vereisen dat de ontwikkelaar onnodige details kent over de hardware-implementaties van de coprocessor. De logische nummering van coprocessorregisters, ondersteund op het niveau van de instructieset, implementeert dit idee idealiter. In dit geval maakt het niet uit in welk fysiek register van de coprocessorstapel de gegevens zijn geplaatst voordat de subroutine wordt aangeroepen; alleen de volgorde van de parameters op de stapel bepaalt. Om deze reden is het belangrijk dat de subroutine alleen de volgorde kent waarin de doorgegeven parameters op de stapel worden geplaatst.

Het werkingsprincipe van de coprocessor samen met de centrale processor
De processor en coprocessor hebben hun eigen afzonderlijke instructiesystemen en verwerkte dataformaten. Hoewel een coprocessor architectonisch gezien een afzonderlijk computerapparaat is, kan deze niet los van de hoofdprocessor bestaan. De processor en coprocessor, die twee onafhankelijke computerapparaten zijn, kunnen parallel werken. Maar deze parallellisatie is alleen van toepassing op de uitvoering van opdrachten. Beide processors zijn aangesloten op een gemeenschappelijke systeembus en hebben toegang tot dezelfde informatie. De hoofdprocessor initieert altijd het proces van het ophalen van de volgende instructie. Na het samplen bereikt het commando beide processors tegelijkertijd. Elk coprocessorcommando heeft een operatiecode, waarvan de eerste vijf bits de waarde 11011 hebben. Wanneer de operatiecode met deze bits begint, gebruikt de hoofdprocessor de verdere inhoud van de operatiecode om te bepalen of dit commando toegang tot geheugen vereist. Als dit het geval is, genereert de hoofdprocessor het fysieke adres van de operand en toegang tot het geheugen, waarna de inhoud van de geheugencel wordt blootgesteld aan de databus. Als er geen geheugentoegang vereist is, voltooit de hoofdprocessor het werken aan de gegeven instructie (zonder te proberen deze uit te voeren) en begint hij met het decoderen van de volgende instructie uit de huidige invoerinstructiestroom. Het geselecteerde commando komt gelijktijdig met de hoofdprocessor de coprocessor binnen. De coprocessor, die uit de eerste vijf bits heeft bepaald dat het volgende commando tot zijn instructiesysteem behoort, begint met de uitvoering ervan. Als voor een instructie operanden uit het geheugen nodig zijn, gebruikt de coprocessor de databus om de inhoud van de geheugencel te lezen, die op dat moment door de hoofdprocessor wordt geleverd.

In bepaalde gevallen is het noodzakelijk om de werking van beide apparaten te coördineren. Als in de invoerstroom bijvoorbeeld een commando van de coprocessor onmiddellijk wordt gevolgd door een commando van de hoofdprocessor dat gebruikmaakt van de resultaten van het vorige commando, dan zal de coprocessor geen tijd hebben om zijn commando eerder uit te voeren dan de hoofdprocessor, nadat hij het commando heeft overgeslagen. het coprocessorcommando voert zijn eigen commando uit. In dit geval wordt de logica van het programma verbroken. Een andere situatie is ook mogelijk. Als de invoeropdrachtenstroom een ​​reeks van verschillende coprocessoropdrachten bevat, zal de processor deze zeer snel doorgeven, maar moet hij wel een externe interface naar de coprocessor bieden. Deze en andere, complexere situaties leiden tot de noodzaak om het werk van twee processors met elkaar te synchroniseren. In vroege microprocessormodellen werd dit gedaan door een speciaal wait- of fwait-commando in te voegen voor of na elk coprocessorcommando. Het werk van dit commando was om het werk van de hoofdprocessor op te schorten totdat de coprocessor klaar was met werken aan het laatste commando. In microprocessormodellen (vanaf i486) wordt een dergelijke synchronisatie automatisch uitgevoerd. Maar voor sommige commando's uit de groep coprocessorbesturingscommando's is het mogelijk om te kiezen tussen commando's met synchronisatie (wachten) en zonder.

Coprocessor is een speciaal geïntegreerd circuit dat samenwerkt met

hoofdverwerker. Normaal gesproken is de coprocessor geconfigureerd om te werken

een specifieke functie - een wiskundige bewerking of een afbeelding

presentaties. En de coprocessor kan deze bewerking vele malen implementeren

sneller dan de hoofdprocessor. Een computer dus met een coprocessor

werkt veel sneller.

Een coprocessor is een gewone microprocessor, maar niet zo veelzijdig. Gebruikelijk

De coprocessor is ontwikkeld als speciaal apparaat voor specifieke implementatie

een bepaalde functie. Omdat het repertoire van de coprocessor beperkt is, kan dat ook

implementeer de functies die eraan zijn toegewezen als geen ander.

Net als elke andere microprocessor werkt een coprocessor volgens dezelfde principes. Hij

voert eenvoudigweg programma's uit die een reeks microprocessors bevatten

opdrachten De CPU bestuurt niet het grootste deel van de circuits van de computer.

In de normale modus voert de microprocessor alle computerfuncties uit. En alleen wanneer

Wanneer er een taak wordt aangetroffen die de coprocessor beter aankan, worden er gegevens naartoe overgedragen

en besturingsopdrachten, en de centrale processor wacht op de resultaten.

Coprocessors, meestal gebruikt in pc's, zijn wiskundig

coprocessors. In de wiskunde zijn ze gespecialiseerd in het vermenigvuldigen en delen van getallen.

Wiskundige coprocessors worden ook wel floating point processors genoemd.

omdat zij vooral op dit gebied duidelijk laten zien wat zij kunnen

wiskunde. Drijvende-kommagetallen worden vaak gebruikt in wetenschappelijke berekeningen en

worden in de regel weergegeven door de mantisse en de ordinaat.

Het voordeel dat wordt behaald door het installeren van een wiskundige coprocessor hangt af van:

welke taken worden opgelost op de computer. Volgens Intel is het de coprocessor

kan de uitvoeringstijd van wiskundige bewerkingen verkorten, zoals

vermenigvuldigen, delen, machtsverheffen met 80% of meer.

De snelheid van het uitvoeren van eenvoudige bewerkingen zoals optellen en aftrekken is bijna

neemt niet af.

Vanuit praktisch oogpunt de prestaties van het systeem wat betreft voorbereiding

teksten en databaseonderhoud - functies waarvoor geen complexe wiskunde vereist is

berekeningen kunnen niet worden verbeterd door een wiskundige coprocessor.

De coprocessor en de hoofdmicroprocessor kunnen op verschillende kloksnelheden werken

(van eigen klokgeneratoren).

Wanneer de verhouding tussen microprocessor- en coprocessorfrequenties wordt uitgedrukt als een geheel getal,

ze werken synchroon en kunnen informatie optimaal naar elkaar overbrengen

manier. Niet-gesynchroniseerd werken vereist dat het een of het ander is

wachtte op de voltooiing van de cyclus van zijn partner, wat de verschijning met zich meebrengt

een korte maar realistische wachttijd.

De Intel-coprocessorfamilie bestaat uit: 8087, 80287, 80387, 80387SX.

Elk van hen is speciaal ontworpen om met de overeenkomstige te werken

microprocessor van de belangrijkste Intel-familie. Elk van deze vier heeft zijn eigen

karakteristieke kenmerken. Beperkingen op de gelijktijdige verwerking van informatie in

8, 16, 32 bits blijven ver achter. Intel-coprocessors starten 80 tegelijk

beetje. Elke coprocessor bevat acht registers van 80 bits waarin en

voert zijn berekeningen uit. Ze werken met 32-, 64- of 80-bits getallen

drijvende komma; 32- of 64-bit gehele getallen. Typisch coprocessors

werken als aanhangsels van de centrale.

Beide processors hangen aan de adresinformatielijnen van de computer en presteren

elk hun eigen teams zoals ze in het programma verschijnen. Coprocessors kunnen dat wel

zijn functies parallel uitvoeren met het werk van de centrale processor, dat wil zeggen:

beide hersenen denken in dit geval tegelijkertijd, omdat ze allemaal lezen

uw commando's direct vanaf de bus, en de centrale processor hoeft niet onderbroken te worden,

om een ​​commando aan de coprocessor te geven.

Deze coprocessor is speciaal ontworpen voor gebruik met de Intel 8086,

8088, 80186, 80188. Daarom identiek aan deze microprocessors

mogelijkheden voor het adresseren en waarnemen van informatie. Bovendien is deze coprocessor zelf

aanpasbaar aan databusgrootte - acht of zestien tibit (8086 of

8088 familie). Het past in een standaard 40-pins connector en

vergroot de lijst met computeropdrachten met 68 eenheden.

Er zijn drie modificaties van deze coprocessor, die in frequentie verschillen: 5, 8,

Op dezelfde manier is 80286 een uitbreiding van 8086, 80287 is een ontwikkeling van 8087.

Het belangrijkste voordeel van 80287 is de mogelijkheid om zowel in het echt als in het echt te functioneren

en in de beschermde modus van de 80286-microprocessor. Het heeft het vermogen om aangesproken te worden

allemaal 16M geheugen.

80287 is bijna volledig compatibel met 8087 en kan bijna alles gebruiken

de software van laatstgenoemde. Het belangrijkste functionele verschil tussen deze

coprocessors in de manier waarop zij met foutieve situaties omgaan. Als er een fout wordt gedetecteerd, worden deze

chips kunnen zich anders gedragen. De software kan dat echter wel

compenseren deze verschillen.

De 80287 is gehuisvest in een 40-pins DIP-pakket. Maar in tegenstelling tot mijn jongere

broer, 80287 kan werken met een persoonlijke microprocessor

klok frequentie.

microprocessor, het heeft een ingebouwd verdeelcircuit dat de interne stroom reduceert

frequentie drie keer.

Met behulp van zijn eigen oscillator kan de 80287 zijn prestaties aanzienlijk verbeteren

prestatie.

Net als 8087 heeft 80287 vier wijzigingen, die verschillen in

80287 is compatibel met de 80386-microprocessor. Ze werken echter op verschillende manieren

frequenties en vereist daarom een ​​speciale interface om toegang te krijgen tot de bus

data 80386. Omdat de 80287 een 16-bits chip is, zijn bovendien alle verbindingen met

80386 moet worden geïmplementeerd in woorden van 16 bits, waardoor het aantal mogelijk wordt verminderd

prestatie.

80387 en 80387SX

Net zoals Intel, rekening houdend met de lessen uit het verleden, de 80386 produceerde, werd de 80387

verdere ontwikkeling van de 80287-coprocessor. Terwijl het team compatibel blijft met

80287, 80387 verhoogden de snelheid van gegevensmanipulatie. Maar opnieuw waren er verschillen

verschillen in foutafhandeling. Maar de mogelijkheden van 80387 waren groter: het werd geïmplementeerd

alle transcendentale en logaritmische functies.

80387SX - In alle opzichten vergelijkbaar met de 80387, maar ontworpen om op te draaien

16-bits 80386SX-bus in plaats van 32-bits databus.

80387 en 80387SX kunnen alle 80287-programma's uitvoeren. Het omgekeerde is niet waar

equivalent. Het grootste probleem met de 387's zijn de enigszins verschillende resultaten

berekeningen van de transcendentale functie uit 80287.

De 80387 draait op dezelfde frequentie als de CPU. Beschikbaar

overeenkomstige wijzigingen van deze coprocessor tot 25 MHz.

Chipset- een set chips die is ontworpen om samen te werken om een ​​reeks gespecificeerde functies uit te voeren.

In computers fungeert de chipset die op het moederbord is geplaatst dus als een verbindingscomponent die zorgt voor de gezamenlijke werking van de geheugensubsystemen, de centrale verwerkingseenheid (CPU), input-output en andere.

Coprocessor- een gespecialiseerde processor die de mogelijkheden van de centrale processor van een computersysteem uitbreidt, maar is ontworpen als een afzonderlijke functionele module. Fysiek kan de coprocessor een afzonderlijke chip zijn of in de centrale processor worden ingebouwd

Er worden de volgende typen coprocessors onderscheiden:

wiskundige coprocessors voor algemeen gebruik, die meestal drijvende-kommaberekeningen versnellen,

I/O-coprocessors (bijvoorbeeld Intel 8089), die de centrale processor ontlasten van het controleren van I/O-bewerkingen of de standaard adresruimte van de processor uitbreiden,

· coprocessors voor het uitvoeren van zeer gespecialiseerde berekeningen.

Specificaties:

Parameter Busfrequentie (MHz) SDRAM-ondersteuning Max. hoeveelheid RAM Piekgeheugenoverdracht MB/s

21. COMPUTERGEHEUGEN, HOE HET COMPUTERGEHEUGEN IS GESTRUCTUREERD - Dit

onderdeel van een computer, fysiek apparaat of opslagmedium dat gedurende een bepaalde periode bij computers wordt gebruikt. Geheugen is, net als de centrale verwerkingseenheid, een onveranderlijk onderdeel van de computer.

Geheugen in computerapparatuur heeft een hiërarchische structuur en omvat gewoonlijk het gebruik van verschillende opslagapparaten met verschillende kenmerken.

22 . Het interne geheugen omvat RAM, cachegeheugen En bijzondere herinnering

RAM (RAM,RAM, Random Access Memory - willekeurig toegankelijk geheugen) is een snel opslagapparaat met een niet erg grote capaciteit, rechtstreeks verbonden met de processor en ontworpen voor het schrijven, lezen en opslaan van uitvoerbare programma's en gegevens die door deze programma's worden verwerkt.

Cache , of ultra-RAM - een zeer snel geheugen met een klein volume dat wordt gebruikt bij het uitwisselen van gegevens tussen de microprocessor en RAM om het verschil in de snelheid van informatieverwerking door de processor en het wat langzamere RAM te compenseren.

Naar apparaten bijzondere herinnering erbij betrekken permanente herinnering(ROM) herprogrammeerbaar alleen-lezen geheugen (Flash-geheugen), CMOS RAM-geheugen, batterij aangedreven, videogeheugen en enkele andere soorten geheugen.



De rol van BIOS is tweeledig: enerzijds is het een integraal onderdeel van de hardware ( Hardware), en aan de andere kant - een belangrijke module van elk besturingssysteem ( Software).