Keresés

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

  • P.H.

    senior tag

    válasz LordX #44 üzenetére

    Mi az Itanium?

    - sok-sok execution unit egybepakolva, ~in-order front-tal

    - adott (fordító)programra bízottan az egymást követő, egymástól független utasítások egy egységbe csoportosítottak, ezek garantáltan futtathatók egyszerre a sok-sok execution unit-on; ezek a csoportok változó hosszúságúak: ~VLIW ugyan, de leginkább Variable Length Instruction Word-ként jellemezhető.

    - "SIMT" végrehajtás kezdeményezhető az arra alkalmas ciklusokra gépikód-szinten, dedikált utasításokkal (csak ezeket a ciklusokat akkor meg kellett jelölni speciálisan forrásnyelvi szinten; érdekes...):

    "Modulo scheduling of a loop is analogous to hardware pipelining of a functional unit since the next iteration of the loop starts before the previous iteration has finished. The iteration is split into stages similar to the stages of an execution pipeline. Modulo scheduling allows the compiler to execute loop iterations in parallel rather than sequentially. The concurrent execution of multiple iterations traditionally requires unrolling of the loop and software renaming of registers. The Itanium architecture allows the renaming of registers which provide every iteration with its own set of registers, avoiding the need for unrolling. This kind of register renaming is called register rotation. The result is that software pipelining can be applied to a much wider variety of loops – both small as well as large with significantly reduced overhead."
    "Register rotation, predication, and the software pipelined loop branches allow the generation of compact, yet highly parallel code. Speculation can further increase loop performance by removing dependency barriers that limit the throughput of software pipelined loops. Register rotation removes the requirement that kernel loops be unrolled to allow software renaming of the registers. However in some cases performance can be increased by unrolling the source loop prior to software pipelining, or by generating explicit prolog and/or epilog blocks."

    "During the prolog phase, a new loop iteration is started every II cycles (every cycle for the above example) to fill the pipeline. During the first cycle of the prolog, stage 1 of the first iteration executes. During the second cycle, stage 1 of the second iteration and stage 2 of the first iteration execute, etc. By the start of the kernel phase, the pipeline is full. Stage 1 of the fourth iteration, stage 2 of the third iteration, stage 3 of the second iteration, and stage 4 of the first iteration execute. During the kernel phase, a new loop iteration is started, and another is completed every II cycles. During the epilog phase, no new iterations are started, but the iterations already in progress are completed, draining the pipeline. In the above example, iterations 3-5 are completed during the
    epilog phase.
    "

    - mindez Event-Based MultiThreading-gel ellátva (ha egy szál futását pl. RAM-hozzáférés, szinkronizációs változóra várakozás, ... egyéb nagy késleltetésű esemény akadályozza, vált másikra)

    Lássuk a különbségeket!

    Amúgy a "Harmadik amit nem ertek, hogy oke, hogy 350 mhz-en valahogy tudjak adattal etetni, de ez kb. sehogy sem fog skalazodni az orajellel." teljesen igaz, az Itanium is meg volt/van fejelve a saját korában extrém méretűnek számító last-level cache-ekkel, igaz, ott a szoftveres spekulatív betöltés és végrehajtás is közrejátszott.

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

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