VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:47/92
RoΦnφk:1992
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Coprocessor

Navrhnout nov² mikroprocesor tak, aby optimßln∞ vyhovoval vÜem mo₧n²m aplikacφm, nenφ asi dost dob°e mo₧nΘ. Jak nap°φklad °eÜit otßzku numerick²ch v²poΦt∙? U₧ivatelΘ, kte°φ sv∙j poΦφtaΦ pou₧φvajφ p°edevÜφm pro psanφ text∙ a r∙znou osobnφ Φi kancelß°skou agendu, prakticky v∙bec nepot°ebujφ nßsobit Φi d∞lit v pohyblivΘ °ßdovΘ Φßrce, poΦφtat hodnoty goniometrick²ch funkcφ, odmoc≥ovat apod. A pokud n∞kdy ano, je pro n∞ pln∞ postaΦujφcφ, kdy₧ se takovΘto v²poΦty zajiÜ¥ujφ programov²mi prost°edky. V jinΘ situaci jsou ale u₧ivatelΘ, jejich₧ aplikace p°φmo stavφ na intenzφvnφch numerick²ch v²poΦtech - jako to d∞lajφ nap°φklad nejr∙zn∞jÜφ oblasti poΦφtaΦem podporovanΘho navrhovßnφ, nßroΦn∞jÜφ grafickΘ aplikace, v²poΦty neuronov²ch sφtφ, °eÜenφ diferencißlnφch rovnic apod. Pro tyto aplikace je prakticky jedinou mo₧nostφ pou₧φvat specißlnφ hardware, kter² dokß₧e provßd∞t pot°ebnΘ numerickΘ v²poΦty dostateΦn∞ rychle. Otßzkou ovÜem je, jak mß b²t tento specializovan² hardware koncipovßn.

Jednou z mo₧nostφ je realizovat jej ve form∞ samostatnΘho procesoru, specializovanΘho prßv∞ na numerickΘ v²poΦty. Tato varianta je samoz°ejm∞ mo₧nß, mß vÜak jednu nev²hodu, a tou je pom∞rn∞ velkß re₧ie. Ka₧d² samostatn² procesor musφ b²t n∞Φφm °φzen - bu∩to vlastnφm programem, nebo alespo≥ °φdicφmi p°φkazy, zapisovan²mi do p°φsluÜn²ch vnit°nφch registr∙ tohoto procesoru. Sestavovßnφ t∞chto program∙ Φi vysφlßnφ °φdicφch p°φkaz∙, stejn∞ jako p°edßvßnφ vstupnφch dat a zp∞tnΘ odebφrßnφ v²sledk∙, je vÜak stßle na "hlavnφm" procesoru, kter² s tφm mß takΘ urΦitou re₧ii. Aby se mu v∙bec "vyplatilo" specializovan² procesor pou₧φvat, musφ b²t tato re₧ie menÜφ, ne₧ kdyby si numerickΘ v²poΦty zajiÜ¥oval sßm vlastnφmi prost°edky (tj. pomocφ vhodn²ch programov²ch rutin).

Alternativou je mo₧nost zabudovat specißlnφ hardware pro numerickΘ v²poΦty p°φmo do "hlavnφho" procesoru, resp. mikroprocesoru. Tφm se sice umo₧nφ jeho maximßln∞ efektivnφ vyu₧itφ, ale na druhΘ stran∞ se zase nep°φzniv∞ projevφ jinΘ efekty. Nap°φklad efekt ekonomick² - cena v²slednΘho mikroprocesoru bude vyÜÜφ, a bude ji muset platit i ten, kdo prost°edky pro numerickΘ v²poΦty v∙ec nepot°ebuje. Snad jeÜt∞ v²znamn∞jÜφ je ale hledisko technologickΘ: p°idat dalÜφ obvody p°φmo na Φip mikroprocesoru znamenß zv²Üit jeho celkovou plochu. S tφm jsou ale spojeny technickΘ problΘmy, p°edevÜφm pak menÜφ v²t∞₧nost (tj. podφl poΦtu pln∞ funkΦnφch Φip∙, z celkovΘho poΦtu vyroben²ch), kterß se zv∞tÜovßnφm plochy Φipu rychle klesß. Pro v²robce je pak v²hodn∞jÜφ vyrobit dva menÜφ obvody, ne₧ jeden o dvojnßsobnΘ ploÜe. A prßv∞ to je asi jedna z hlavnφch myÜlenek, kterΘ stßly u zrodu tzv. koprocesor∙ (coprocessors), a kterΘ se dostaly do pov∞domφ ÜirÜφ odbornΘ ve°ejnosti p°edevÜφm v souvislosti s mikroprocesory firmy Intel a s osobnφmi poΦφtaΦi standardu IBM PC.

Koprocesor tak vlastn∞ nenφ nic jinΘho, ne₧ specializovan² hardware, kter² se v²robci nevyplatilo (z technologick²ch, ekonomick²ch Φi dalÜφch d∙vod∙) zaintegrovat p°φmo do vlastnφho mikroprocesoru, a tak jej vyrßbφ jako samostatn² obvod. Koprocesor je ovÜem samostatn² jen z hlediska fyzickΘho provedenφ (m∙₧ete ho nap°φklad vzφt do ruky), ale nikoli ji₧ z hlediska mo₧nosti samostatnΘho fungovßnφ. NejlΘpe je si p°edstavit koprocesor jako jak²si "nßstavec", kter² si m∙₧ete p°ikoupit ke svΘmu procesoru a tφm zv∞tÜit jeho funkΦnφ mo₧nosti. P°ikoupφte-li si takto k mikroprocesoru svΘho poΦφtaΦe PC numerick² koprocesor, z pohledu programßtora v asembleru se vßm tato skuteΦnost projevφ tak, ₧e vßÜ procesor bude nßhle vybaven dalÜφmi registry, a bude "um∞t" novΘ strojovΘ instrukce, kterΘ dosud nebyl schopen vykonßvat. Z pohledu programßtor∙ ve vyÜÜφch programovacφch jazycφch se vßm existence koprocesoru projevφ vlastn∞ jen nep°φmo - zrychlenφm b∞hu vßmi vytvß°en²ch aplikacφ - nebo¥ o vyu₧itφ nov²ch registr∙ a strojov²ch instrukcφ se za vßs postarß p°φsluÜn² p°ekladaΦ. Podobn∞ v p°φpad∞, ₧e pouze provozujete ji₧ hotovΘ (legßln∞ zakoupenΘ?) aplikace. TakΘ zde se vßm existence koprocesoru projevφ zrychlenφm b∞hu vaÜφ aplikace, n∞kdy a₧ n∞kolikanßsobn∞ - velmi vÜak zßle₧φ na konkrΘtnφ povaze aplikace, charakteru °eÜenΘ ·lohy, rozsahu vstupnφch dat a dalÜφch faktorech. N∞kterΘ nßroΦn∞jÜφ aplikace dokonce odmφtajφ bez numerickΘho koprocesoru v∙bec pracovat.

Vra¥me se vÜak jeÜt∞ ke vzßjemnΘmu vztahu procesor-koprocesor a k mechanismu jejich souΦinnosti. Kdyby to nebylo tak zavßd∞jφcφ, bylo by asi nejv²sti₧n∞jÜφ p°irovnat koprocesor k obvodu, kter² parazituje na svΘm (mikro)procesoru. Alespo≥ u mikroprocesor∙ firmy Intel je jejich vzßjemnß koexistence °eÜena tak, ₧e procesor naΦφtß jednotlivΘ instrukce z pam∞ti, vypoΦφtßvß adresy jejich operand∙ a starß se takΘ o naΦφtßnφ t∞chto operand∙ z/do pam∞ti. Koprocesor mu p°itom pouze "koukß p°es rameno", a do hry vstupuje pouze tehdy, kdy₧ procesor takto naΦte z pam∞ti n∞kterou strojovou instrukci, kterß je ve skuteΦnosti urΦena urΦena koprocesoru. Ten vÜak jeÜt∞ nechß procesor, aby vypoΦφtal adresy vÜech p°φpadn²ch operand∙ tΘto instrukce, a postaral se takΘ o jejich naΦtenφ z pam∞ti. Samotnß data si pak ji₧ od pam∞ti p°evezme koprocesor, a zaΦne je po₧adovan²m zp∙sobem zpracovßvat, zatφmco procesor pokraΦuje naΦφtßnφm dalÜφ instrukce. Koprocesor tak vlastn∞ svΘmu procesoru "odnφmß" provßd∞nφ n∞kter²ch strojov²ch instrukcφ, kterΘ si od n∞j nechßvß navφc p°edp°ipravit. Sßm ale nenφ schopen si tyto Φinnosti (naΦφtßnφ instrukcφ, v²poΦet adres operand∙) zajistit, tak₧e bez svΘho procesoru nenφ schopen fungovat.

Koprocesory dnes existujφ k vφce r∙zn²m procesor∙m, nejen k mikroprocesor∙m 80x86 firmy Intel. NejΦast∞ji jde o numerickΘ koprocesory, ale obecn∞ m∙₧e jφt i o koprocesory, specializovanΘ i na jinΘ druhy specifick²ch Φinostφ. Prßv∞ na p°φkladu numerick²ch koprocesor∙ firmy Intel vÜak lze nßzorn∞ ukßzat, jak se m∞nφ mo₧nosti modernφch polovodiΦov²ch technologiφ. Pro mikroprocesory 8086/88, 80286 a 80386 bylo nutnΘ realizovat numerick² koprocesor tak, jak jsme si dosud popisovali - tedy jako samostatn² obvod. Neustßl²m zdokonalovßnφm v²robnφch technologiφ ale doÜlo k takovΘmu zv²Üenφ v²t∞₧nosti, ₧e se pro v²robce ji₧ stalo ·nosnΘ vyrßb∞t vlastnφ procesor i s numerick²m koprocesorem na jedinΘm Φipu. Tak vznikl mikroprocesor i80486, kter² ji₧ mß v sob∞ numerick² koprocesor zabudovßn.

Mikroprocesor Intel 80486 vÜak existuje i v dalÜφ verzi, 80486SX. Ta se vyznaΦuje tφm, ₧e takΘ obsahuje numerick² koprocesor, ale tento je logicky odpojen, a nenφ jej tudφ₧ mo₧nΘ vyu₧φvat. O d∙vodech je mo₧nΘ spekulovat - m∙₧e jφt nap°φklad o snahu udr₧et vysokou cenu "plnohodnotn²ch" mikroprocesor∙ 486, oznaΦovan²ch n∞kdy takΘ jako 80486DX. Jin²m mo₧n²m vysv∞tlenφm pro existenci cenov∞ v²hodn∞jÜφ verze SX je stßle jeÜt∞ nedostateΦnß v²t∞₧nost v²robnφch technologiφ: mikroprocesory 80486SX mohou b²t ty, u kter²ch zabudovan² koprocesor vykazuje n∞jakou vadu, a tak byl dodateΦn∞ odpojen.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm