Pipeline példák (IMSC, 2019).

Slides:



Advertisements
Hasonló előadás
Alaplap.
Advertisements

Algoritmusok.
1 Számítógépek felépítése 9. előadás I/O rendszerek.
A számítógép felépítése
Párhuzamos programozás (a fork/join és a parbegin/parend technika)
A mikroprocesszor 1. rész.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
3. A programozás eszközei, programozás-technikai alapismeretek
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Linux ütemezés  Sokszor változott az évek folyamán  Az alap ütemező egyszerű volt  Prioritásos, futási sorok, RR…  2.4 verzió: O(n) ütemező o (következő.
Dinamikus tömbök.
Nagy Gábor MF01-M2.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
C A C nyelv utasításai.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Készítette: Pető László
Készítette: Rummel Szabolcs Elérhetőség:
Központi feldolgozó egység (CPU)
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Mikroszámítógépek I 8085 processzor.
Mikroszámítógépek I 8085 processzor.
Utasítás végrehajtás lépései
Paradigmaváltások a processzorfejlesztésben Sima Dezső augusztus 25.
PIC processzor és környezete
CISC - RISC processzor jellemzők
2 tárolós egyszerű logikai gép vázlata („feltételes elágazás”)
A memória tárolja a végrehajtandó programokat és a feldolgozásra váró adatokat. A számítógép memóriája adattárokból áll. Minden ilyen adattár memóriaelemekből.
Egy egyszerű gép vázlata
a CPU gyorsítása, pipeline, cache
Halmazok Összefoglalás.
1 Operációs rendszerek Az ütemezés megvalósítása.
C nyelv utasításai.
Hardvereszközök Hardvereszközök I.rész. Hardvereszközök CPU Memóri a Input Háttértárolók Outpu t A számítógép felépítési elve Neumann elvek: 1.Soros utasításvégrehajtás.
Holnap munka-, tűzvédelem számonkérés
Algoritmus szerkezetek
A számítógép felépítése
Processzrokezelés. Miért alakult ki a processzor? Kezdetben céláramkörök, önálló chipek Ötlet: miért nem készítünk egy chipet, ami végrehajtja az összes.
A Neumann-elvek 3. ÓRA.
Processzor, alaplap, memória
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
1 Vektorok, mátrixok.
Mikroprocesszor.
Pipeline példák. Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A.
Készítették: Turai Krisztina és Csaja Eszter Natália 9.a
Írja fel a tizes számrendszerbeli
IT ALAPFOGALMAK HARDVER.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
CISC-RISC processzor jellemzők Előadó: Thész Péter Programtervező informatikus hallgató Budapest,
A processzorok (CPU).
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Hőmérséklet mérése Makan Gergely, Mellár János, Mingesz Róbert V március 23.
Azaz a számítógép „agya” Készítette: Balázs Gergő
A CPU (központi feldolgozó egység vagy processzor)
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
Sz&p prof.
Programozási alapok.
A számítógép felépítése
Programozás C# -ban Elágazások.
Algoritmus készítés.
Fejlett pipeline megoldások IMSC 2019
Pipeline példák (Normál, 2019).
Cache példák 2019 (IMSC).
Számítógépek felépítése 9. előadás I/O rendszerek
Előadás másolata:

Pipeline példák (IMSC, 2019)

Pipe 1. feladat Adott a következő utasítás sorozat i1: R0 MEM [R1+8] i2: R2 R0 * 3 i3: R3 MEM [R1+12] i4: R4 R3 * 5 i5: R0 R2 + R4 A pipeline 5 fokozatú IF: utasítás lehívás, ID: utasítás dekódolás, EX: végrehajtás MEM: memória hozzáférés, WB: regiszter visszaírás IF ID EX MEM WB

Pipe 1. feladat a. kérdés Adat-egymásrahatások. Megadás formája: függő: függés típusa( amitől függ) Típusok: RAW: read after write WAR: write after read WAW: write after write i1: R0MEM [R1+8] i2: R2R0 * 3 i3: R3MEM [R1+12] i4: R4R3 * 5 i5: R0R2 + R4 i1: - i2: RAW(i1) i3: - i4: RAW(i3) i5: RAW(i4), RAW(i2),WAW(i1),WAR(i2)

Pipe 1. feladat b. kérdés Ütemezés 1 2 3 4 5 6 7 8 9 10 11 i1 IF ID EX MEM WB i2 IF ID A* EX MEM WB i3 IF F* ID EX MEM WB i4 IF A* ID EX MEM WB i5 IF F* ID EX MEM WB i2-A*: i2-nek kell i1 eredménye, az csak MEM végén van meg, adatfüggés i3-F*:ID-t i2 foglalja, feldolgozási függés i4-A*:i4-nek kell i3 eredménye, MEM végén van meg, adatfüggés i5-F*:ID-t foglalja i4, feldolgozási függés

Pipe 1. feladat c. kérdés Forwarding 1 2 3 4 5 6 7 8 9 10 11 i1 IF ID EX MEM WB i2 IF ID A* EX MEM WB i3 IF F* ID EX MEM WB i4 IF A* ID EX MEM WB i5 IF F* ID EX MEM WB i2 az i1 eredményét (R0 értéke) a MEM/WB regiszterből veszi i4 az i3 eredményét (R3 értéke) a MEM/WB regiszterből veszi i5 az i4 eredményét (R4 értéke) az EX/MEM regiszterből veszi (nincs memória hivatkozás)

Pipe 1. feladat d. kérdés Végrehajtás pipeline-nal és anélkül Pipeline: 11 egységnyi idő (feltöltéssel/kiürüléssel együtt) Nélküle: Összesen 22 egységnyi idő i1 5 i2 4 i3 i4 i5

Pipe 1. feladat e. kérdés Gyorsítás átrendezéssel Eredeti sorrend: i1: R0MEM [R1+8] i2: R2R0 * 3 i3: R3MEM [R1+12] i4: R4R3 * 5 i5: R0R2 + R4 Átrendezve i1: R0MEM [R1+8] i2: R3MEM [R1+12] i3: R2R0 * 3 i4: R4R3 * 5 i5: R0R2 + R4 Ezzel felszámoltuk az –eredeti jelöléssel- i2: RAW(i1) és az i4: RAW(i3) függőségek miatti várakozásokat Mivel a feldolgozási függéseket az adat függések okozták, azok is megszűnnek, így várakozás nélkül 9 egységnyi idő alatt végrehajtható a program

Pipe 2. feladat Adott a következő utasítás sorozat i1: R5  MEM [R3+24] i2: R6  MEM [R4+16] i3: R7  R6 + R5 i4: R8  R6 – R5 i5: R5  R7 * R8 I6: R4  R4 + 4 A pipeline 6 fokozatú IF: utasítás lehívás(iterációs idő1, késleltetés2, 2 fokozat), ID: utasítás dekódolás, EX: végrehajtás MEM: memória hozzáférés, WB: regiszter visszaírás IF0 IF1 ID EX MEM WB

Pipe 2. feladat a. kérdés Adat-egymásrahatások. Megadás formája: függő: függés típusa(amitől függ) Típusok: RAW: read after write WAR: write after read WAW: write after write i1: - i1: R5  MEM [R3+24] i2: R6  MEM [R4+16] i3: R7  R6 + R5 i4: R8  R6 – R5 i5: R5  R7 * R8 i6: R4  R4 + 4 i2:- i3: RAW(i1), RAW(i2) i4: RAW(i1).RAW(i2) i5: RAW(i3), RAW(i4),WAW(i1), WAR(i3), WAR(i4) i6: WAR(i2)

Pipe 2. feladat b. kérdés Ütemezés 1 2 3 4 5 6 7 8 9 10 11 12

Pipe 2. feladat c. kérdés Forwarding 1 2 3 4 5 6 7 8 9 10 11 12

Pipe 2. feladat d. kérdés Végrehajtás pipeline-nal és anélkül Pipeline: 12 egységnyi idő (feltöltéssel/kiürüléssel együtt) Nélküle: Összesen 32 egységnyi idő i1 6 i2 i3 5 i4 i5 i6

Pipe 2. feladat e. kérdés Gyorsítás átrendezéssel Eredeti sorrend: i1: R5  MEM [R3+24] i2: R6  MEM [R4+16] i3: R7  R6 + R5 i4: R8  R6 – R5 i5: R5  R7 * R8 i6: R4  R4 + 4 Átrendezve i1: R5  MEM [R3+24] i2: R6  MEM [R4+16] i3: R4  R4 + 4 i4: R7  R6 + R5 i5: R8  R6 – R5 i6: R5  R7 * R8 Ezzel felszámoltuk az –eredeti jelöléssel- i3: RAW(i1), RAW(i2) és az i4: RAW(i1),RAW(i2) függés miatti várakozást Mivel a feldolgozási várakozást az adat függés miatti okozta, az is megszűnik, így várakozás nélkül 11 egységnyi idő alatt végrehajtható a program

Pipe 2. feladat e. kérdés Az ütemezés, forwardinggal 1 2 3 4 5 6 7 8 9 10 11 i1 IF0 ID EX MEM WB IF1 i2 IF0 IF1 ID EX MEM WB i3 IF0 IF1 ID EX MEM WB i4 IF0 IF1 ID EX MEM WB i5 IF0 IF1 ID EX MEM WB i6 IF0 IF1 ID EX MEM WB

Pipe 3. feladat Adott a következő utasítás sorozat i1: D0  D1 * D2 i2: D3  D0 + D5 i3: MEM [R0 + 4]  D3 i4: MEM [R0 +12]  D0 D0~D5 regiszterek lebegőpontos számot, R0 egész számot tárol A lebegőpontos összeadás 4 időegységet, a szorzás 7 egységet, a többi művelet 1 időegységet késleltet. Az iterációs idő mindig 1 egység

Pipe 3. feladat A pipeline szerkezete EX IF ID MEM WB A0 A1 A2 A3 M0 M0~M6: lebegőpontos szorzás S0~S3: lebegőpontos összeadás

Pipe 3. feladat a. kérdés Adat egymásra hatások. Megadás formája: függő: függés típusa(amitől függ) Típusok: RAW: read after write WAR: write after read WAW: write after write i1: - i1: D0  D1 * D2 i2: D3  D0 + D5 i3: MEM [R0 + 4]  D3 i4: MEM [R0 +12]  D0 i2: RAW(i1) i3: RAW(i2) i4: RAW(i1)

Pipe 3. feladat b. kérdés Ütemezés 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 i1 IF ID M0 MEM WB M1 M2 M3 M4 M5 M6 A* i2 IF ID A0 A1 A2 A3 MEM WB F* i3 IF ID A* EX MEM WB i4 IF ID F* EX MEM WB Az EX helyett az ID-ben is lehet várakoztatni!

Pipe 3. feladat c. kérdés Gyorsítás átrendezéssel Átrendezve i1: D0  D1 * D2 i2: D3  D0 + D5 i3: MEM [R0 +12]  D0 i4: MEM [R0 + 4]  D3 Eredeti sorrend: i1: D0  D1 * D2 i2: D3  D0 + D5 i3: MEM [R0 + 4]  D3 i4: MEM [R0 +12]  D0 Távolabbra került a D3 miatti adatfüggésben érintett i2 és i3

Pipe 3. feladat d. kérdés Ütemezés átrendezés után 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 i1 IF ID M0 MEM WB M1 M2 M3 M4 M5 M6 A* i2 IF ID A0 A1 A2 A3 MEM WB F* i3 IF ID EX MEM WB A* F* i4 IF ID EX MEM WB i2: szüksége van i1 eredményére (D0 értéke), adat függés miatt várakozik i3: i2 foglalja az ID egységet, feldolgozási függés miatt várakozik i4: szüksége van i2 eredményére ( D3 értéke), adat függés miatt, azután i2 foglalja a MEM egységet, feldolgozási függés miatt

Pipe 4. feladat IF ID AG MEM/EX WB Az Intel első pipeline-al rendelkező processzora, a 80486 is 5 fokozatú futószalaggal rendelkezett, a fázisok azonban eltértek a tanult pipline fázisaitól. Az IF és az ID után egy AG (address generation) fázis következett, ami a memóriakezelő utasítások számára címet számolt, az aritmetikai utasítások esetében pedig nem csinált semmit. Az AG után a MEM/EX jön, ami memória load/store esetén elvégezte a tényleges memóriaműveletet (az AG áltat számolt címre), aritmetikai utasítások esetén pedig magát az aritmetikai műveletet. Az utolsó fázis itt is a WB, az eredmény visszaírása a regiszter tárolóba. IF ID AG MEM/EX WB

Pipe 4. feladat Az Intel első pipeline-al rendelkező processzora, a 80486 is 5 fokozatú futószalaggal rendelkezett, a fázisok azonban eltértek a tanult pipline fázisaitól. Az IF és az ID után egy AG (address generation) fázis következett, ami a memóriakezelő utasítások számára címet számolt, az aritmetikai utasítások esetében pedig nem csinált semmit. Az AG után a MEM/EX jön, ami memória load/store esetén elvégezte a tényleges memóriaműveletet (az AG áltat számolt címre), aritmetikai utasítások esetén pedig magát az aritmetikai műveletet. Az utolsó fázis itt is a WB, az eredmény visszaírása a regiszter tárolóba. (a) Ütemezze az 1. feladat példaprogramját ezen az alternatív pipeline struktúrán! Melyik pipeline tudta gyorsabban végrehajtani? 1 2 3 4 5 6 7 8 9 10 11 i1 IF ID AG E/M WB i2 IF ID AG E/M WB i3 IF ID AG E/M WB i4 IF AG ID E/M WB i5 IF ID AG E/M WB

Pipe 4. feladat Az Intel első pipeline-al rendelkező processzora, a 80486 is 5 fokozatú futószalaggal rendelkezett, a fázisok azonban eltértek a tanult pipline fázisaitól. Az IF és az ID után egy AG (address generation) fázis következett, ami a memóriakezelő utasítások számára címet számolt, az aritmetikai utasítások esetében pedig nem csinált semmit. Az AG után a MEM/EX jön, ami memória load/store esetén elvégezte a tényleges memóriaműveletet (az AG áltat számolt címre), aritmetikai utasítások esetén pedig magát az aritmetikai műveletet. Az utolsó fázis itt is a WB, az eredmény visszaírása a regiszter tárolóba. (b) Mely utasításpárokat tudja hatékonyabban végrehajtani a tanult, és melyeket ez az alternatív pipeline? Melyik a jobb választás? (b) A tanult pipeline jobb a R0 ← R2 + R4, R1 ← MEM[R0] jellegű (címet számolok és betöltöm) utasításpárokban (nincs késleltetés), az Intel pipeline itt egy késleltetés beiktatását igényli. Az Intel jobb a R0 ← MEM [R1+8], R2 ← R0 * 3 párokban (betöltöm és használom). Melyik a jobb? Attól függ, milyen a terhelés, milyen alkalmazásra készül a processzor.

Pipe 5. feladat Egy 2-utas in-order szuperskalár processzor az órán megismert egyszerű, 5-fokozatú pipeline-nal rendelkezik, melynek szélessége 2. A processzor ideális abból a szempontból, hogy bármely két egymást követő utasítás végrehajtását el tudja indítani, és tökéletes elágazásbecslővel rendelkezik. Az utasításpárokra csak annyi a korlátozás, hogy egyszerre kell átesniük az IF és ID fázisokon. A fordító a for (i=0; i!=j; i++) b[i] = a[i]; C program alapján az alábbi alacsony szintű utasítássorozatot állította elő: i1: R1 ← 0 i2: iter: JUMP end IF R1==R2 i3: R6 ← R3 + R1 i4: R7 ← MEM[R6] i5: R8 ← R4 + R1 i6: MEM[R8] ← R7 i7: R1 ← R1 + 1 i8: JUMP iter i9: end: (Figyeljük meg, hogy az MEM[R4+R1]← R7 utasítás nem megengedett, hiszen három forrásoperandusa lenne. Az ortogonalitás miatt ekkor viszont R7 ← MEM[R3+R1] utasítás sem megengedett, ezért a címeket külön kell számolni aritmetikai utasításokkal.)

Pipe 5. feladat Egy 2-utas in-order szuperskalár processzor az órán megismert egyszerű, 5-fokozatú pipeline-nal rendelkezik, melynek szélessége 2. A processzor ideális abból a szempontból, hogy bármely két egymást követő utasítás végrehajtását el tudja indítani, és tökéletes elágazásbecslővel rendelkezik. Az utasításpárokra csak annyi a korlátozás, hogy egyszerre kell átesniük az IF és ID fázisokon. A fordító a for (i=0; i!=j; i++) b[i] = a[i]; C program alapján az alábbi alacsony szintű utasítássorozatot állította elő: i1: R1 ← 0 i2: iter: JUMP end IF R1==R2 i3: R6 ← R3 + R1 i4: R7 ← MEM[R6] i5: R8 ← R4 + R1 i6: MEM[R8] ← R7 i7: R1 ← R1 + 1 i8: JUMP iter i9: end: (a) Ütemezze az utasítássorozatot a 2-utas in-order pipeline-ra, a ciklus két iterációjáig!

Pipe 5. feladat i1: R1 ← 0 - i2: iter: JUMP end IF R1==R2 RAW(i1) i3: R6 ← R3 + R1 RAW(i1) i4: R7 ← MEM[R6] RAW(i3) i5: R8 ← R4 + R1 RAW(i1) i6: MEM[R8] ← R7 RAW(i4),RAW(i5) i7: R1 ← R1 + 1 RAW(i1),WAW(i1) i8: JUMP iter i9: end:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 i1 IF ID EX MEM WB i2 IF ID A* EX MEM WB i3 IF F* ID EX MEM WB i4 IF F* ID A* EX MEM WB i5 IF F* ID EX MEM WB i6 IF F* ID A* EX MEM WB i7 IF F* ID EX MEM WB i8 IF F* ID EX MEM WB i2 IF ID EX MEM WB i3 IF ID EX MEM WB i4 IF ID EX MEM WB i5 IF ID EX MEM WB IF ID EX MEM WB i6 IF ID EX MEM WB i7 Látható, hogy a páros iterációkban függő utasítások kerülnek egy csoportba, emiatt várakozás lesz, a páratlanokban nem.

Pipe 5. feladat Egy 2-utas in-order szuperskalár processzor az órán megismert egyszerű, 5-fokozatú pipeline-nal rendelkezik, melynek szélessége 2. A processzor ideális abból a szempontból, hogy bármely két egymást követő utasítás végrehajtását el tudja indítani, és tökéletes elágazásbecslővel rendelkezik. Az utasításpárokra csak annyi a korlátozás, hogy egyszerre kell átesniük az IF és ID fázisokon. (b) Rendezze át az utasítássorozatot úgy, hogy a program futása a lehető leggyorsabb legyen! Eredeti Átrendezett i1: R1 ← 0 i1: R1 ← 0 i2: iter: JUMP end IF R1==R2 i2: iter: JUMP end IF R1==R2 i3: R6 ← R3 + R1 i3: R6 ← R3 + R1 i4: R7 ← MEM[R6] i4: R8 ←R4 + R1 (i5 volt) i5: R8 ← R4 + R1 i5: R7 ← MEM[R6] (i4 volt) i6: MEM[R8] ← R7 i6: R1 ← R1 + 1 (i7 volt) i7: R1 ← R1 + 1 i7: MEM[R8] ← R7 (i6 volt) i8: JUMP iter i8: JUMP iter i9: end: i9: end: