„byly to právě DSP nabízející obrovský vzorkovací výkon” – DSP žádný vzorkovací výkon nenabízejí, od toho je A/D převodník se vzorkovacím obvodem. Existují sice mixed-signal DSP, ale ty rozhodně nenabízejí obrovský vzorkovací výkon ve srovnání s klasickým odděleným řešením.
Rozdělení na klasické CPU a DSP má dnes již spíš historický význam, resp. za DSP se označují procesory vycházející ideově z těch původních DSP, tj. procesorů uzpůsobených pro aritmetiku a adresaci v maticových operacích a paralelní zpracování, obvykle navržených na bázi RISC. Dnes již toto nabízejí i běžné CPU, rozdíl bývá v tom, že u DSP se spousta věcí dělá ručně, jako určení, které operace se provedou paralelně, které instrukce přijdou do pipeline u skoků atp. Toto dnes dělá automaticky elektronika CPU, ale za cenu mnohem komplikovanějšího návrhu oproti DSP.
Týjo, fakt? Nekecáš?
Některý DSP zpracovávají data paralelně, třeba složky RGB. Jiný jedou ve floatu. Další mají RAM buffery na jiné sběrnici, takže letí dva operandy paralelně...
A pokud DSP=CPU, proč je podle tebe u Da Vinciho 1,2GHz Cortex-A8 doplněný druhým, DSPčkovým, jádrem na 1GHz?
No, existuji peky "hybridy". Ja mam treba rad Blackfiny od Analogu, https://en.wikipedia.org/wiki/Blackfin. Ma to hodne veci typicky spise pro DSPcka a pri tech frekvencich to ma slusnej vykon i na cisty DSP veci (barrel shift jakozto soucast instrukce, 40bit ALU, ...). Designove je to pekne "cisty" - hezky se s tim dela... Maj i suprove udelani externi sbernice s DMAcka... Je videt, ze kdyz to delali, tak nekdo myslel :) Je ale fakt, ze high-end DSP nema v klasickym CPU konkurenci, kdyz vynechame APU (za ceny vyrazne vetsi slozitosti...)
R.
Ach jo. Takže ještě jednou:
1. „Vzorkovací výkon” je u DSP nesmysl, protože DSP nic nevzorkuje; DSP už pracuje s číslicovými daty jako každý jiný CPU.
2. DSP se od CPU historicky lišilo v tom, že bylo lépe vybavené pro rychlou maticovou aritmetiku, to jest o funcionalitu ALU (s možností saturačního režimu) se dělí více nezávislých jednotek (akumulační jednotaktová násobička – MAC, posunovačka – Barrel Shifter), jež mohou pracovat nezávisle, tj. v rámci jednoho taktu všechny naráz, dále obsahuje propracovanější adresační logiku (DAGy – Data Address Generator, obvykle dva – pro každý operand jeden), s čímž souvisí i převažující harvardská architektura (tj. nezávislá instrukční a datová sběrnice, takže odpadá potřeba střídání instrukčních a datových cyklů – obojí probíhá současně), řadič (Sequencer) uzpůsobený pro rychlé skoky a dopředné („pipeline-friendly”) cykly; charakteristické u DSP je to, že všechny tyto jednotky mívá programátor přístupné „ručně”, tj. ALU má své registry a své opkódové bity v instrukčním slově, MAC má své registry a opkódové bity v instrukčním slově, shifter i DAGy mají každý své registry, řadič má své zásobníky (návratový a smyčkový) a programátor volbou instrukcí sám určuje, v kterých jednotkách a v jakém pořadí se co provede (ALU sčítá dva operandy, zatímco MAC násobí koeficienty nějaká data, zatímco DAG1 postinkrementuje ukazatel těch dat, zatímco DAG2 vybírá dokola koeficienty pomocí modulo inkrementace – to všechno dohromady je vlastně jediná instrukce; pak tam přihodím podmíněný skok a _za_ něj další instrukci, která se provede ještě _před_ skokem, aby nebylo nutné cpát do pipeliny zbytečné NOPy).
Když se nad tím zamyslíme, tak zjistíme, že hromadu těchto věcí v dnešní době dělá už i „normální” CPU – nezávislé výkonné a adresační jednotky kvůli paralelisaci, dynamícké přeuspořádávání instrukcí kvůli optimalisaci pipeliny, podpora počítání s vektory a maticemi (např. SSE)…
Rozdíl je prakticky už jen v tom, že moderní CPU se snaží to vše dělat transparentně, za programátora, což jejich architekturu samozřejmě velmi, velmi komplikuje oproti DSP.
Když už jsi zmínil ARM, tak ten např. disponuje nezávislým shifterem, využitelným příslušnými modifikátory u jednotlivých instrukcí (u M-kové řady Cortexů chybí), ale jinak ničím jiným nedisponuje a případné doplnění dalších jednotek by znamenalo obrovský nárůst komplexity, aby se to dalo napasovat na stávající ISA. Mnohem jednodušší je doplnit ho DSPčkem, které si na nic nehraje – jiný procesor, jiné registry, jiné instrukce. Ale fakticky jde prostě jen o dva procesory na jednom čipu
Chtěl jsem jen říci, že zkrátka dnes už je ten rozdíl méně zřetelný, podobně jako třeba u CISC vs. RISC – tváří se jako CISC, vnitřně je to RISC. Stejně tak u CPU a DSP – tváří se jako CPU, ale uvnitř často pracuje jako DSP. A naopak – DSP může obsahovat funkcionality běžné pro CPU, jako MMU, FPU apod. Je to prostě spíš otázka ISA a rozhodnutí výrobce, zda něco označí za DSP, uC nebo CPU.
Mozna tim byl spis myslen proces quantizace, ktery ma pomerne zasadni vliv na vysledny signal ? https://en.wikipedia.org/wiki/Quantization_%28signal_processing%29
Nejde ani jen tak o samotnou frekvency, ale o to, co se stane mezi, jak obvody u ADC reaguji na zmeny, jesli to je ciste samle & hold atp...
R.