Citace Původně odeslal THX Zobrazit příspěvek
Ziadne higher level API, ale skor lower level. O to ci tam tie data mat budes alebo nie sa velmi starat nemusis, pretoze kompiler vidi nie na 100 instrukcii dopredu ako CPU, ale ak chce tak aj na 10000 instrukcii dopredu a tak vidi ze kedy budes potrebovat tie data a moze ich teda prefetchovat. 256k je dost mala pamat, jej zaplnenie trva pomerne malo taktov. Ak teda pozera prekladac minimalne tento pocet taktov dopredu, tak potom si moze byt isty, ze sa mu nikdy nestane ze bude cakat za plnenim lokalnej ram (samozrejme - ak dokaze preusporiadat (coho je podmienkou ze tam budu take) instrukcie tak aby mal co robit CPU kym sa mu nacitaju data). Samozrejme to sa nie vzdy da a tak verim ze programator moze tiez urcit co a kedy v tej pamati bude mat - a to je napr. dalsia vyhoda oproti cache. Teda - pri kompilacii kompilerom sa ta pamat pouzije prinajhorsom rovnako ako cache, ale je tu dost dobra moznost omnoho lepsieho vyuzitia.

btw. cim vyssie higher level funkcie v c pouzijes, tym menej vies napr. co kde kedy a kolko tie funkcie v ram citaju; higher level = napr. regexp matching a zlozitejsie
to je vsechno nadherny, az na to, ze by se ten kod nesmel vubec vetvit a vstupni data pro jedno SPU by nemohla zaviset na vystupnich datech jinych PPE/SPU ... pak vsechny tyhle vyhody jdou do haje ....

kompiler taky neni vsemocnej. imo by nejlepsi reseni byla kombinace obou pristupu - reordering/cache ala x86 a zaroven SRAM/compiler based optimizace ala cell ... jenze to je az moc narocny na vyvoj ...