Waarom is zoveel processor kracht nodig? Decode/Encode?
Tja, zo zou je het kunnen noemen. UMTS werkt op een relatief (voor telecom begrippen) hoge sampling rate. Op deze sample stroom worden met CDMA meerdere kanalen per gebruiker gemultiplexed. Elke gebruiker moet zijn eigen kanalen uit de ontvangen data stroom halen, dat heet despreading/descrambling. De meest gebruikelijk manier om dit te doen is mbv een zogenaamde RAKE receiver. Een RAKE receiver gebruik zogenaamde rake-fingers om alle multi-path componenten van een signaal als het ware bij elkaar te harken. In de praktijk komt het erop neer dat een gebruiker de sample stroom worstcase meer dan 50 keer moet despreaden/descramblen om al zijn data eruit te halen. Dat alleen is al een enorme berg werk. HSDPA doet eigenlijk niet veel meer dan met orthogonale codes nog eens 15 extra kanalen op de sample stroom multiplexen. De hoeveelheid werk die je RAKE receiver te doen heeft verdubbeld hier grofweg mee. Daarnaast moet je in de outer-receiver nog de zogenaamde channel decoding doen. Dat was vroeger niet zoveel werk, maar met HSDPA classes tot 15 Mbit, die met Turbo codes zijn gecode is dat ineens ook een niet triviale hoeveelheid werk geworden.
Je moet de processor prestatie van een DSP niet vergelijken met een processor voor algemene toepassingen.
Ze maken gebruik van compleet verschillende architecturen.
Wat betreft het uitvoeren van vermenigvuldigingen en optellingen is een DSP op 1GHZ veruit superieur aan een pentium op 4GHz.
Niet overdrijven. Zo'n pentium blijft de meeste conventionele DSP makkelijk voor hoor.
Een DSP verschilt op een paar belangrijke punten van een GPP:
1. geheugen architectuur. Een DSP is vaak dual harvard, wat betekent dat instructies en data in apart geheugens zitten. Hierdoor kan elke cycle een instructie en data opgehaalt worden. Minder complexe of geen caching, omdat een DSP vaak gebruik wordt voor streaming-data applicaties waar die cache minder zinvol is. Véél registers, die zichtbaar zijn voor de programmeur. Dit biedt veel mogelijkheden tot b.v. software pipelining om te zorgen dat elke functional unit van de DSP elke cycle benut wordt in de innerloop van een kritisch stuk programma code.
2. Instructieset: Een DSP ondersteunt vaak wat speciale instructies die heel vaak voorkomen in digitale signaal processing zoals conditional-add-subtract, arithmetiek met saturatie, bepaalde handige adresserings modes, conditional execution (op een echte bool, itt een flag) en nog wel wat dingen die ik vergeet.
3. Control-code, hier is een DSP dus slecht in. Een branch kost vaak vele cycles en op branchpredictie hoef je al helemaal niet te rekenen.
4. Area: typische embedded DSPs hebben een oppervlakte van zeg 0.25 tot 4 mm2. GPP's gaan makkelijk over de 100 mm2
5. Power: Een DSP werkt met een powerbudget van b.v. 1 mW/Mhz, terwijl een P4 ~25 mW/Mhz verbruikt.
Kortom een DSP is niet krachtiger dan een moderne GPP, ook niet in digitale signaal processing. Een DSP doet het werk waar hij goed in is alleen veeeeeel goedkoper een energiezuiniger.