http://www.alcatel.com

Konfigūruojamoji kompiuterinė įranga

   Kompiuterinės įrangos kūrėjai nuolat susiduria su problema, kaip suderinti kompiuterių spartą ir universalumą. Galima sukurti universalius lustus, kurie atlieka daug operacijų palyginti nedideliu greičiu, galima sukurti specialios paskirties lustus, kurie atlieka labai ribotą kiekį operacijų, tačiau jas atlieka greitai. Personaliniuose kompiuteriuose esantys mikroprocesoriai yra universalios paskirties lustai: dvejetainiu formatu užkoduotos programavimo instrukcijos įgalina mikroprocesorių atlikti visas logines ir matematines operacijas, kurias sugalvoja programuotojas. Pavyzdžiui, Intel Pentium mikroprocesorius niekada nebuvo kuriamas specialiai Microsoft Word redaktoriui arba žaidimui DOOM, bet jis gali vykdyti abu šiuos paketus. Tuo tarpu ASIC (Application-Specific Integrated Circuit - specialios paskirties integrinė grandinė) yra pritaikyta specifiniams uždaviniams spręsti. Kiekvieną ASIC grandinę rūpestingai pritaikęs konkrečios operacijos atlikimui, kompiuterinės įrangos kūrėjas gali sukurti mažesnį, pigesnį ir spartesnį lustą, kuris, be to, suvartoja mažiau elektros energijos nei mikroprocesorius. ASIC lusto pavyzdys gali būti personalinio kompiuterio grafinės kortos procesorius, kuris apdoroja grafinius vaizdus nuo 10 iki 100 kartų didesne sparta, nei tai padarytų bendros paskirties procesorius.

1 pav. Formų palyginimo procedūra, naudojant FPGA grandinę.

   Specializuotos įrangos kūrėjų didžiausias rūpestis yra nuolat kintantys vartotojų poreikiai. Sukonstravus ASIC, pastaroji gali puikiai atlikti numatytas funkcijas. Truputį pakitus vartotojo sprendžiamai problemai, ASIC reikia modifikuoti. Perdirbus ją, dažnai sutrinka jos modulių tarpusavio sąveika, o grandinės projektavimas iš naujo yra pernelyg daug kainuojantis procesas.

   Pastaraisiais metais buvo sukurta naujo tipo, pasižyminti didele veikimo sparta, aukštu integracijos laipsniu bei lengvai modifikuojama integrinė grandinė - FPGA (Field-Programmable Gate Array - programuojamųjų sklendžių matrica). Ši matrica susideda iš blokų, kurie atlieka loginių sklendžių funkcijas. Tokios sklendės turi daug įėjimų ir vieną išėjimą. Jos atlieka bazines logines operacijas (IR, ARBA, NE ir kitas). Paprastai kompiuterinėje įrangoje esančių sklendžių atliekamos funkcijos nesikeičia. FPGA luste tiek loginiai blokai, tiek jungtys tarp jų gali būti keičiami siunčiant į lustą elektrinius signalus. FPGA grandinės savo sandara primena ASIC, tačiau pastarųjų loginiai blokai negali būti perprogramuojami.

   Pirmųjų FPGA konfigūraciją galima buvo pakeisti per keletą sekundžių. Tai buvo labai patogu grandines kuriantiems inžinieriams, kurie galėjo negaišdami daug laiko išmėginti vieną ar kitą grandinės variantą. Tai buvo naudinga ir kompanijoms, pardavinėjančioms prietaisus, kuriuos reikėdavo dažnai ir nežymiai tobulinti. Šiuo metu FPGA elementų atliekamos funkcijos gali būti pakeičiamos greičiau nei per vieną milisekundę, o ateityje ši trukmė turėtų mažėti. Pagaliau prietaisai turėtų sugebėti adaptuoti savo įrangą sinchroniškai įėjimo duomenų pokyčiams.

   Yra daug FPGA struktūros variantų, tačiau visos šios grandinės susideda iš programuojamų loginių blokų ir juos jungiančio programuojamo tinklo. Vienos rūšies FPGA susideda iš nelabai didelio skaičiaus stambių loginių blokų; kitai rūšiai būdingas labai didelis kiekis paprastų blokų. Stambusis blokas gali, pavyzdžiui, sudėti arba palyginti du skaičius. Paprastasis blokas gali tik palyginti du dvejetainius skaitmenis. Kompiuterinės įrangos kūrėjas gali pasirinkti, kurio tipo blokais naudotis, atsižvelgdamas į norimą pasiekti tikslą ir laiką, per kurį šis tikslas turi būti pasiektas.

   Yra keletas FPGA panaudojimo variantų. Paprasčiausiu atveju prietaisas ilgesnį laiką atlieka tam tikrą funkciją, o po to jo struktūra yra pritaikoma kitos funkcijos atlikimui. Konfigūracijos trukmė gali būti kelios sekundės. Trumpesnės konfigūravimo trukmės leidžia FPGA greitai keisti atliekamų darbų pobūdį: susidaro įspūdis, kad FPGA gali atlikti kelias funkcijas vienu metu. Tokiu būdu vienas FPGA loginis blokas gali pakeisti kelis ASIC blokus. Pavyzdžiui, vaizdo signalo perdavimo sistema turi keturis iš ASIC sudarytus lustus. Pirmasis lustas priima ateinančią informaciją, kiti du atlieka dvi skirtingas duomenų transformacijas, o ketvirtasis lustas išsiunčia apdorotus duomenis. Šiuos keturis lustus gali pakeisti vienas FPGA lustas. Pastarojo konfigūracija vieno duomenų perdavimo ciklo metu keičiama keturis kartus.

   Pagaliau daugiausiai žadanti kompiuterinės įrangos rūšis yra ta, kuri pati save keičia vykdomo proceso metu, atsižvelgdama į tai, kokia jos konfigūracija yra labiausiai tinkama įėjimo duomenų apdorojimui. Pavyzdžiui, vaizdo atpažinimo ir judėjimo sekimo sistemos lustas pasirenka savo konfigūraciją pagal tai, kas tuo metu yra stebima: žmogus, automobilis ar lėktuvas. Todėl naudojant FPGA, kartais galima pagaminti universalesnius ir spartesnius prietaisus nei tie, kurių pagrindą sudaro bendro naudojimo mikroprocesoriai arba specializuoti ASIC lustai.

   Vienas iš perspektyviausių konfigūruojamosios kompiuterinės įrangos taikymų yra objektų atpažinimas, apimantis tokias problemas, kaip braižo atpažinimas, portretų identifikavimas, duomenų atstatymas, automatinis taikinio atpažinimas. Objektų atpažinime bazinė operacija yra formų palyginimas: įėjimo bitų rinkinys (šiuo rinkiniu užkoduojamas grafinis paveikslas, simbolių eilutė arba kitokie duomenys) yra palyginamas su galimais rinkinių šablonais. Sistema deklaruoja atpažinimą, jei dauguma tiriamo rinkinio ir rinkinio-šablono bitų sutampa. Pavyzdžiui, taikinio atpažinimo atveju kiekvienas vaizdas paprastai susideda iš tūkstančių pikselių, be to, taikinys gali būti įvairiose gauto vaizdo vietose. Visi pikseliai gautame vaizde turi būti palyginami su gausybės šablonų visais pikseliais. Karinių taikymų metu, kai reikalingas labai greitas taikinio atpažinimas, sistema turėtų atlikti trilijonus operacijų per sekundę - tai nelabai įvykdomas uždavinys tradicinei kompiuterinei įrangai.

   Naudojant FPGA, formų palyginimo procedūra supaprastėja, todėl objekto atpažinimo procesas tampa gerokai spartesnis. 1 pav. demonstruojamas formų palyginimo principas naudojant konfigūruojamąją įrangą. Viršuje matome objekto - kandidato tapti taikiniu - vaizdą. Apačioje matome vieną iš kompiuterinės įrangos atmintyje saugomų vaizdų - šablonų. Abu vaizdus kompiuteris įsimena kaip dvejetainių skaičių matricas. Loginis blokas, kuris palygina atskirų pikselių dvejetaines išraiškas, pritaiko savo struktūrą prie šablono. Tokiu būdu lyginami tik tie bitai, kurie atitinka šablono taikinio pikselius, ir ignoruojamas fonas. Galutinis rezultatas (9) reiškia, kad sutampa devyni šablono vaizdo ir kandidato vaizdo pikseliai. Kuo didesnis skaičius, tuo geresnis formų atitikimas.

   Kitas konfigūruojamosios įrangos taikymo pavyzdys gali būti informacijos įslaptinimas. Pavyzdžiui, pokalbis kompiuterių tinklu yra užšifruojamas naudojant dvejetainių kodų rinkinį. FPGA lustas gali pritaikyti savo konfigūraciją konkrečiam kodų rinkiniui ir efektyviai vykdyti šifravimo darbą. Pakeitus ASIC į FPGA, DES (Data Encryption Standard) standarto šifravimo įrangos loginių sklendžių skaičius sumažėjo nuo 25 000 iki 13 000.

   Konfigūruojamosios įrangos kūrimas ir taikymas kol kas žengia pirmuosius žingsnius. Kintančiųjų grandinių principą dar 1960-ųjų pabaigoje pasiūlė Geraldas Estrinas iš Kalifornijos universiteto, tačiau pirmieji pritaikymai buvo pademonstruoti tik prieš keletą metų. Šiuo metu FPGA turi iki 100 000 loginių elementų ir toli gražu neparodo visų savo galimybių. Ateityje elementų skaičius tokioje grandinėje turėtų padvigubėti kas 18 mėnesių. Sudėtingesni lustai turės platesnį pritaikymą signalų apdorojimo ir ryšių technikoje. Šiuo metu mokslininkai ir inžinieriai stengiasi panaikinti priežastis, trukdančias platesniam kintančiųjų grandinių pritaikymui. Pavyzdžiui, FPGA yra efektyvios vykdant paprastas operacijas - formų palyginimą arba sveikų skaičių aritmetiką, - tačiau yra nepritaikytos slenkančio kablelio skaičiavimams. Be to, FPGA lustai turi pernelyg mažai atminties tarpinių rezultatų saugojimui, todėl daugelyje taikymų šalia konfigūruojamojo lusto turi būti išorinės atminties įrenginiai. Papildomos informacijos siuntinėjimas sulėtina įrangos darbą. Šiuo metu yra kuriamos FPGA, turinčios atminties, aritmetinio skaičiavimo modulius ir kitokius specialios paskirties blokus. Andre DeHonas ir Thomas F. Knightas iš Masačūsetso technologijos instituto pasiūlė FPGA, kurios atmintyje saugomos ankstesnės grandinės konfigūracijos. Lustas gali kas 10-100 ns keisti savo konfigūraciją atsimindamas senesnes konfigūracijas ir tokiu būdu išsaugoti iš dalies apdorotus duomenis.

   Bradas L. Hutchingsas iš Brigham Young universiteto sukūrė hibridinės architektūros kompiuterį, kurį sudaro 2 FPGA lustai (procesorius ir kontroleris), atmintis, kurioje saugomos procesoriaus konfigūracijos, ir personalinis kompiuteris. Jei esama FPGA procesoriaus konfigūracija netinka vykdomai programai, FPGA kontroleris iš atminties pakrauna kitą konfigūraciją. Jei reikiamos konfigūracijos atmintyje nėra, pagalbos kreipiamasi į bendro naudojimo kompiuterį, kuris sukuria reikiamą konfigūraciją.

   Kitas skirtingų tipų įrangos derinimo pavyzdys gali būti Johno Wawrzyneko ir jo kolegų iš Kalifornijos universiteto sukurta sistema. Programavimo kalba rašytos programos tekstą specialus kompiliatorius pakeičia mašininiais kodais ir pagal juos sukuria optimalią FPGA lusto konfigūraciją. Toks lustas gali vykdyti programas greičiau nei bendros paskirties mikroprocesorius.

   FPGA įranga niekada nepakeis mikroprocesorių bendros paskirties kompiuteriuose, tačiau ten, kur reikalingos labai aukšto našumo duomenų apdorojimo sistemos, konfigūruojama įranga turėtų suvaidinti didelį vaidmenį. FPGA įranga labiausiai reikalinga ten, kur būtinas prisitaikymas prie apdorojamos informacijos pokyčių. Ateityje riba tarp mikroprocesorių ir FPGA lustų taps mažiau ryški. Pavyzdžiui, FPGA turės tokią mikroprocesorių savybę, kaip padidinta vietinė atmintis, padidės mikroprocesorių struktūros keitimo galimybės. Kompiuterių valdymo įrangos konfigūracija bus keičiama taip pat lengvai, kaip dabar į atmintį užkraunamos programos. Valdymo programos keitimas ir loginės schemos keitimas - abu šie būdai ateityje bus plačiai naudojami.


El. p.: info@elektronika.lt