• r4dix
    #71
    "Attól még, hogy egy órajel alatt több utasítást dolgoz fel, attól még az nem párhuzamosan történik."

    Hát akkor mégis hogyan, merőlegesen? Hatalmas tévedésben vagy, mert ez a szupersklalár végrehajtás lényege, hogy a processzor 1 ciklus alatt több utasítást bocsát ki egyszerre több végrehajtó egység felé.


    "A neumann-elvű procik egyszerre egy utasítást dolgoznak fel."

    Kívűlről valóban így tűnik, erre a célra vannak a szekvenciális konzisztencia megőrzésére szolgáló módszerek, mint pl. a ROB. De ettől még egyszerre több utasítást hajtanak végre.


    Ja és figyelem. Az előbb említett assembly-s példa ILP szintű (szuperskalár) párhuzamosítás, erről az alkalmazásnak nem kell tudnia, mert processzorszinten történik! Az utasítások ütemezését, a megfelelő végrehajtóegységekhez való kiküldését a processzor végzi (legalábbis az x86 családban, VLIW-eknél más a helyzet, de ebbe ne menjünk bele). Csak az a probléma, hogy az ILP szintű gyorsítási lehetőségek kimerültek. Egyszerűen nem lehet már elérni, hogy az általános célú alkalmazásokban átlagosan 3-5 utasítás/ciklus-t túllépjék. A következő szint az, amikor alkalmazási szintre viszik el a párhuzamosítást, tehát a programozó írja meg a úgy a programot, hogy azt szét lehessen osztani több magra. Ez persze a thread-ek lévén már elég régóta a rendelkezésünkre áll. Tehát lassacskán rá kell jönniük a fejlesztőknek, hogy ha gyors programot akarnak írni, akkor (amennyiben lehetséges) úgy kell megírniuk, hogy a különböző részek külön szálban fussanak.