Új hozzászólás Aktív témák

  • kvp777

    tag

    válasz fLeSs #45 üzenetére

    Eszerint vannak benne elágazás előrejelzők

    Csak statikus, forditaskori elorejelzes van, amit predicate bitekkel kezel. Egy elagazast tobb szalon futtat, majd ami jonak bizonyul, annak az eredmenyet irja vissza. Ezzel ket baj van. Az elso, hogy a forditonak kell kiszamolnia elore, ami adatfuggo ciklusoknal (ahol egy felteteltol fugg mikor lep ki) vagy rendes if/else faknal nem hatasos. A masik, hogy mig mar a PII-esben is tobb bites predikcios szamlalok voltak (2v3 bit), addig az itanium erre egy konstans bitet szan. Ez nem sokkal jobb mintha alapbol huzalozva lenne az egyik esetre. A pic mikrovezerlok nem ugras eseten 1, ugras eseten 2 orajel alatt hajtjak vegre a branch utasitasokat, az itaniumban annyival van tobb, hogy itt valaszthato mi legyen a gyorsabbik eset. Egy intel-es x86-s megtanulja a ciklusokat, es ha tobbszor fut le egy ciklus, akkor mar a masodik lepestol optimalizaltan fut. Ha kesobb visszater a kod ugyanoda, es meg cache-ben volt a terulet, akkor meg emlekszik is az elozo futas eredmenyere es a szerint cselekszik. Ez max. 1-2 orajelnyi veszteseget jelent akarhany lepesre, mig az itanium eseten ez akar 2 orajel is lehet minden egyes lepesnel. (ha a fordito rosszul becsulte meg a futas kozben kapando adatokat) A branch regiszterek miatti kesobb kidobott parhuzamos vegrehajtas raadasul felhasznalja a szeles vegrehajtoegysegeket is, ami miatt akar a hatodara is lassulhat a feldolgozas. Egy x86-os csak azt szokta vegrehajtani amire szuksege van. (csak az egymastol nem fuggo utasitasok sorrendjet varialja, hogy gyorsabban vegezzen)

    Mindezek fenyeben az itaniumot csak vektoros feladatokra erdemes hasznalni, meghozza ott ahol sok adat van es fix a ciklusok hossza.

Új hozzászólás Aktív témák