Citat:
Sundance: Ja bih radije volio da danas mogu kupiti CPU od 10 jezgara na 1GHz, nego sa 2 jezgre na po 3GHz.
Be careful what you wish for.
Mislim, ta racunica je OK, cak i sa nekim "normalnim" koeficijentima iskoriscenja koje SMP daje, a na sistemima gdje su aplikacije "dobro" napisane (u smislu da forkuju gdje god se moze) ces bolje proci nego sa dva procesorska jezgra.
Problem je sto SMP ima svoje limite. A limit je sto je covjek (vjest programer) ukljucen u pricu, nivo do koga mi (kao nesavrseni stvorovi) mozemo da izvrsimo paralelizaciju, a u odnosu na efektne troskove (vrijeme) da se takvo programiranje izvrsi postavlja prakticne barijere pred narastanjem broja procesorskih jezgara a na tradicionalnoj radnoj stanici.
Neko je ovdje pomenuo sisteme sa 128 i 256 procesora. Da, to su efektni serverski sistemi, ali efektno koriscenje takvog sistema je posljedica dijeljenja resursa i cinjenice da postoji ekipa koja takav sistem moze da zatrpa poslovima (nevazno da li se o pojedinacnim taskovima ili threads prica). Na radnoj stanici, natjerati sistem sa 16 procesorskih jezgara na 200 MHz da se bolje ponasa od sistema sa 2 procesorskih jezgara na 1 GHz nije tako lako, za neku uopstenu dinamiku sistema.
Pravo, mnogo bolje rijesenje, je da se paralelizacija izvrsavanja odradi u kompajleru, da kompajler generise threads. Upravo sam dobio rezultate benchmark-a gcc 4.0 autovectorizer za Altivec (vjerovatno su ekvivalentni rezultati za intelov SSE 3 u slicnim domenima). Poboljsanja su znatna, ali skromna u poredjenju sa teoretskim maksimumom.
Nemamo, jos uvijek, softversku infrastrukturu da iskrocimo u takav razvoj hardvera. Teorija za "loop unrolling" i ostale fazone za paralelizaciju je odavno ispisana, prakticna rijesenja tek treba da se pojave. SMP je rijesenje samo za prvu iteraciju i treba nam proboj i na toj strani.