Co nejaky FPGA kde se naprogramuje digitalni obvod a ten pak dela potrebne prace s daty?
Napr. implementovat funkci Ronji Twistera by v mikroradici udelat neslo, protoze jsou extremni pozadavky na ryzhlost reakce na prochazejici data. Behem par set nanosekund se musi rozpoznavat zacatky a konce paketu spravne sestrihavat ruzne digitalni dignaly atd. Zvladne to ale mnohem jednodussi obvod architektury "vrabci hnizdo", slozeny z jednotlivych primitivnich jednotek, ktere jsou zapojeny do "grafu".
Kdyby se programaticky daly ty dratky prepojovat (coz se presne deje ve FPGA), dalo by se to zobecnit na libovolnou ulohu a vznikl by turingovsky ekvivalentni stroj ktery je koncepcne jednoduchy a ma dobry vykon.
Tak můžeš udělat FPGA, co má ochranu paměti a stránkování a pak se na to může napsat kompilátor a pouštět nad tím obyčejné operační systémy a programy :)
No, to bude az druha faze myslim. Ono je totiz tezke uz jenom udelat prostou alokaci toho FPGA, mala zmena v tom software muze zpusobit, ze se to tam nevejde nebo se nevejde s necim jinym. Jasne, muzete to vzdycky cele to FPGA naalokovat a nahrat znova, ale to je jako pred kazdou alokaci pameti pamet defragmentovat. Takze FPGA by melo obrovsky overhead pri prepinani uloh.
Nicmene, vubec nejsem proti te myslence, spis naopak.
FGPA jsou drahé, v porovnaní s tím, co umí třeba mikrořadič (a to výrazně). Pokud člověk zrovna nechce dělat něco ala hardcopy a vyrobit si svých pár miliónů čipů teda. To co píšeš, je běžná praxe a high end DSP maji celé bloky, už od výrobce, kde jsou mikrořadiče (typicky nějaké PPC). Ono z hlediska plochy, výkonu, spotřeby, ... je FPGA plýtvání, proto tak už jsou ty PPC bloky od výrobce. A to pomíjím, že se dělají bloky, ktere obsahují třeba celou MAC jednotku (ETH). Nebo řadiče pro PCIex, DDR, ... A to jen proto, aby se ušetřila ta plocha a zvedl výkon.... Ale ty ceny. A ceny dobrých syntetizátorů, to je taky kapitolka sama pro sebe. Nemám FPGA rád, ikdyž faktem je to, že se jim člověk často nevyhne....
Jinak tady párkrát padlo DSP. Krásné "hybridy" mezi DSP a klasickým CPU dělá třeba analog, Blackfin procesory. Krásné, levné stroje. 400-600MHz core, až 3 instrukce za takt, spotřeba menší cca 1W, na čipu 100K RAM na plné frekvency jádra, integrovaná SDRAM/DDR. A je to za pár dolarů. Dá se to na řadě míst použít místo kombinace DSP+CPU. Navíc na tom pěkně běží ucLinux.
Je fakt, ze mluvim z pozice cloveka, ktery delal na systemech vyrabenych v malych seriich (desitky kusu), kde nejvic stal vyvoj SW, takze nejaka cena FPGAcka nehrala tak vysokou roli (bylo tam FPGA, DSP a SRAM, tady je videt, ze se ani neresila nahrada SRAM za levnejsi DRAM). Ale je jasne, ze kdyz nekdo treba vyrabi HW kodek pro digital TV apod. (to se prodava v milionech kusu), tak si muze dovolit si nechat v tovarne vyrobit masku a pouzit vlastni cip.
Vim, ze se delal i nejaky European Logarithmic Processor nebo nejak podobne znejici CPU, na kterem participovali lidi z Akademie ved a ti si to opravdu nechali napalit do cipu. Ale to je samozrejme vyvoj podporovany granty, na coz Clock s Ronjou asi nedosahne :-(
Ta vyroba cipov nebude az taka draha. Ked som v 1995 dokoncil diplomovku ( jednalo sa o programovatelny digitalny filter), tak fakulta mikroelektroniky kde som studoval ( FEI STU v Bratislave) mala nejaku zmluvu so zdruzenim EuroChip a oni mi ten moj integrovany obvod vyrobili v mnozstve asi 5 kusov. Nejednalo sa o FPGA, vystupom mojho navrhu boli masky v 3um technologii (v tej dobe dost zastaralej) ktore sa posielali do EuroChipu.
Nekdy staci i malickost, napriklad se pokusit implementovat na FPGA treba FP nasobicku, delicku, scitacku se saturaci atd. Samozrejme to jde, ale zabere to strasne velkou cast plochy cipu a pritom to stejne (cele FPU) maji mnoha DSPcka, ktere se daji sehnat za par dolaru.
Jako idealni se pro tyto pripady ukazuje kombinace FPGA+mikroprocesor (treba nejake DSP). FPGAcko na rychle reakce (+se daji napriklad vyuzit jeho nasobicky) a DSPcko na zbytek. Nejsem si ted jistej, co pouzivaji treba ridici obvdody harddisku (to je dost podobny obvod, jako Ronja), ale tipnu si prave na tuto kombinaci, tj. programovatelne pole+rychle DSPcko.
Ale samozrejme je to projekt od projektu ruzne, nekdy se treba zjisti, ze to DSPcko utahne samo a potom je vyvoj levnejsi.
No myslím, že zrovna tohle by byla skoro ideální aplikace pro Mooreův zázrak jménem x25. ;-) Pár set nanosekund? Za tu dobu stihneš pár desítek tisíc operací. :-)
Vyvoji pocitacu SIMD se u nas (Ceskoslovensko) venoval Ustav technickej kybernetiky SAV v Bratislave. Dokonce doslo k vyrobe mensi serie. Pocitac byl osazen procesory Z80 (16 ks, ale mam pocit, ze existoval i se 64 ks), pro jeho rizeni slouzilo externi PC.
Taky by me to zajimalo. Jestli napriklad mel kazdy Z80 u sebe nejakou pamet nebo ne, popr. jak byly jednotlive uzly propojeny. Je pravda, ze 16 nebo 64 ks jeste neni uplne ta kriticka hranice, ale opravdu to mohlo byt zajimave.
Diky! Dival jsem se do orig. dokumentace k Pentiim a tam jsou jenom doby behu celych instrukci, tj. od jejich nacteni do vykonani. Takze to nam asi v tomto pripade moc nepomuze: http://www.singlix.org/trdos/pentium.txt
Diky za odkaz. Tady se asi vysvetluje ta zahadna hodnota 1/3. Je to u instrukci, ktere bud pracuji s registry nebo s pameti (x86 evidentne neni RISC :-). U "registrovych" variant vychazi 1 cyklus + parovani, u "pametove" jsou to tri cykly, aspon tak si tu tabulku vysvetluji. Jestli je to v ceske literature uvedeno bez dalsich poznamek, tak to je IMHO dost zavadejici.
Jo, to je možný, že to někdo opsal. Jediný procesor, který uměl vykonat instrukci za polovinu tiku bylo Pentium 4 před Prescottem. To mělo ALU na dvojnásobné frekcenci, takže vykonalo dvě závislé instrukce za tik.
Pěkně napsané. Sice to přináší nové informace jen sporadicky, ale je to pěkný přehled daného tématu. A taková slova ode mne, to je dost neobvyklá věc :)
Odstavce popisujici SISD SIMD MISD MIMD jsou o nicem, nevim jaky procesor nebo program si mam za tim predstavit.
Nebylo by vubec na skodu uvest nejaky priklad, misto vysvetlovani zkratky na nekolika radcich. Byl by nekdo ze ctenaru schopen a ochoten nejake priklady tak 2-3 ke kazdemu typu uvest? Urcite by zvysilo iformacni hodnotu jinak celkem dobre napsaneho clanku.
Zdravim, sice presne nevim, jake programy by bylo mozne predstavovat, ale zde je muj pokus o nejake tipy z rad mikroprocesoru (je to jen z tech veci, ktere me ted napadaji, prikladu lze najit vice):
SISD - prakticky libovolny osmibitovy mikroprocesor puvodni generace - 8080, Z80, 6502, 6809, architektura x86 az do verze 486, nektere dnesni mikroradice atd. atd.
SIMD - Pentium MMX a vsechny dalsi procesory x86 s instrukcni sadou rozsirenou o MMX, 3D Now! atd. Programy - vsechny, ktere jsou prelozene s MMX instrukcemi :-), typicky video kodeky
Tohle presne jsem nemel na mysli. Ocekaval jsem nejaky popis jako, ze pri SIMD zpracovni se soubor, ktery je nutno zpracovat, treba video, ktere potrebujeme zkomprimovat, rozdeli na dve casti a kazda se bude zpracovavat na jednom CPU. Stejne sady instrukci tak zpracovavaji rozdilna obrazova a audio data. Jedna se tak o data parallelism a middle grained paralelizaci. Rekl bych, ze to co popisujete vy, je fine grained parallelism, tedy paralelizace instrukcni, ktera se odehrava na urovni jednoho CPU. Jedna vec je, ze to umi CPU a druha zda toho umi nejaka znama komercni aplikace vyuzit. Treba, ze Photoshop si rozdeli obrazek na 2 casti, kazdou posle na jiny CPU a stejnymi instrukcemi (aplikuje na ne stejny filtr) je zpracuje a ma hotovo za 1/2 casu. Pro MISD a MIMD me ted nenapada nejaky prakticky priklad. Pomuzete?
Ano, to je dalsi uroven SIMD. Ta (dnes bych rekl klasicka) SIMD neni zalozena na vice procesorech, ale na jednom procesoru zpracovavajicim data paralelne (zase se vratim k MMX). Vetsi mnozstvi CPU by v tomto pripade zpracovavalo stejny program, taky je to mozne (kdysi davno jsme na to psali simulator), ale prakticke moc ne - problemy s pristupem do hlavni pameti - proto take quad core apod. predstavuji jeste rozumnou hranici, dal uz jde spis o zbytecne vyhazovani penez a energie. Ale za SIMD lze povazovat i relativne samostatne pocitace (CPU+pamet+connect.net), napriklad renderovaci farmy.
Architekture MIMD se dnes muzou asi nejvice podobat site beznych PCcek, treba neco, co pouziva Google - vice vstupu (kazdy dotaz jeden vstup), x-tisic PCcek, ktere v pripade vytizeni mohou zpracovavat vice dotazu a v pripade, ze je vetsi klid naopak paralelne jeden dotaz - asi tam bude pouzity dost ucinny "prelevaci" algoritmus. Podobne, akorat v jedne bedne, pracuje Connection Machine.
MISD - mozna data-flow architektury jsou jim nejblizsi.