Pipeline példák (Normál, 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: R0MEM [R1+8] i2: R2R0 * 3 i3: R3MEM [R1+12] i4: R4R3 * 5 i5: R0R2 + 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: R0MEM [R1+8] i2: R2R0 * 3 i3: R3MEM [R1+12] i4: R4R3 * 5 i5: R0R2 + R4 Átrendezve i1: R0MEM [R1+8] i2: R3MEM [R1+12] i3: R2R0 * 3 i4: R4R3 * 5 i5: R0R2 + 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 Adott a következő utasítás sorozat i1: D2 D0 * D1 i2: MEM [R0 + 0] D2 i3: D2 D0 + D1 i4: MEM [R0 +8] D2 D0~D2 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 4. 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: D2 D0 * D1 i2: MEM [R0 + 0] D2 i3: D2 D0 + D1 i4: MEM [R0 +8] D2 i2: RAW(i1) i3: WAW(i1),WAR(i2) i4: RAW(i3)
Pipe 4. feladat b. kérdés Ütemezés: i3 WB állapota nem előzheti meg i1 WB állapotát, mert ez hibás értéket adna D2-ben. Ezért 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 EX i2 IF ID A* F* MEM WB A0 i3 IF ID A1 A2 MEM WB A3 A*/F* F* EX i4 IF ID MEM WB A STORE műveleteket EX helyett az ID-ben is lehet várakoztatni!