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 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 IFIDEXMEMWB
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 i1IFIDEXMEMWB i2IFIDA*EXMEMWBi3IFF*IDEXMEMWBi4IFA*IDEXMEMWB i5IFF*IDEXMEMWB 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 i1IFIDEXMEMWB i2IFIDA*EXMEMWBi3IFF*IDEXMEMWBi4IFA*IDEXMEMWB i5IFF*IDEXMEMWB 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ő i15 i24 i35 i44 i54
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 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 IFIDEXMEMWB
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: 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 i1: - 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 18 i1 IFIDEXMEMWB A*i3IFIDEXMEMWB i2IFIDEXMEMWBi5IFIDEXMEMWBi4IFIDEXMEMWBF* i6IFIDEXMEMWB
Pipe 2. feladat c. kérdés Forwarding 18 i1 IFIDEXMEMWB A*i3IFIDEXMEMWB i2IFIDEXMEMWBi5IFIDEXMEMWBi4IFIDEXMEMWBF* i6IFIDEXMEMWB
Pipe 2. 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 26 egységnyi idő i15 i25 i34 i44 i54 i64
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 10 egységnyi idő alatt végrehajtható a program
Pipe 2. feladat e. kérdés Az ütemezés, forwardinggal 18 i1 IFIDEXMEMWB i3IFID EXMEM WB i2IFIDEXMEMWB i5 IFIDEXMEMWB i4IFIDEXMEMWB i6IFIDEXMEMWB
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 IF ID EX MEMWB S0S1S2S3 M0M1M2M3M4M5M6 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: D0 D1 * D2 i2: D3 D0 + D5 i3: MEM [R0 + 4] D3 i4: MEM [R0 +12] D0 i1: - i2: RAW(i1) i3: RAW(i2) i4: RAW(i1)
Pipe 3. feladat b. kérdés Ütemezés i1IFIDM0 MEM WBM1M2M3M4M5M6A*i2IFIDA* S0S1S2S3 MEM WBF*i3IFIDF* A* F*EX MEM WBF* i4 IFID F* EX MEM WBF* Az EX helyett az ID-ben is lehet várakoztatni!
Pipe 3. feladat c. kérdés Gyorsítás átrendezéssel Eredeti sorrend: i1: D0 D1 * D2 i2: D3 D0 + D5 i3: MEM [R0 + 4] D3 i4: MEM [R0 +12] D0 Átrendezve i1: D0 D1 * D2 i2: D3 D0 + D5 i3: MEM [R0 +12] D0 i4: MEM [R0 + 4] D3 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 i1IFIDM0 MEM WBM1M2M3M4M5M6A*i2IFIDA* S0S1S2S3 MEM WBF*i3IFIDF* EX MEM WBF* A*F*i4 IFID 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: D2 D0 * D1 i2: MEM [R0 + 0] D2 i3: D2 D0 + D1 i4: MEM [R0 +8] D2 i1: - 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 i1IFIDM0 MEM WBM1M2M3M4M5M6 EX i2IFIDA* F* MEM WB A STORE műveleteket EX helyett az ID-ben is lehet várakoztatni! S0i3IFIDS1S2 MEM WBS3 A*/F* F*F*F*F*EX i4 IFID MEM WBF*F*F*F*F*F*F*F*
Pipeline feladatok 2
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 MEM [R0+0] i2: D1 D0 * D1 i3: D4 D2 / D1 i4: D2 MEM [R1+0] i5: D3 D0 + D2 i6: D4 D4 – D3 i7: MEM [R1] D4 a) Azonosítsuk a WAW és WAR adat függőségeket! i2: WAW(i1), RAW(i1) i4: WAR(i3) i6: WAW(i3), RAW(i3),RAW(i5) i3: RAW(i2) i5: RAW(i4) i6: RAW(i6)
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 MEM [R0+0] i2: D1 D0 * D1 i3: D4 D2 / D1 i4: D2 MEM [R1+0] i5: D3 D0 + D2 i6: D4 D4 – D3 i7: MEM [R1] D4 a)Azonosítsuk a WAW és WAR adat függőségeket! Rajzoljuk meg a prcecenciagráfot! Ha több függés van, mindet tüntessük fel! i2: WAW(i1),RAW(i1) i4: WAR(i3) i6: WAW(i3), RAW(i3),RAW(i5) i3: RAW(i2) i5: RAW(i4) WAW i1 i4 i3 i6 i2 i5 WAW RAW WAR RAW i7 RAW i7: RAW(i6) RAW
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 MEM [R0+0] i2: D1 D0 * D1 i3: D4 D2 / D1 i4: D2 MEM [R1+0] i5: D3 D0 + D2 i6: D4 D4 – D3 i7: MEM [R1] D4 b) Szüntesse meg a WAW és WAR adat-egymásrahatásokat regiszter átnevezés segítségével! A regiszter átnevezést végezze el minden utasításra szisztematikusan! A lebegőpontos fizikai regisztereket jelölje T0, T1, T2,..., az egész típusú fizikai regisztereket U0, U1, U2,.... A regiszterleképző tábla tartalma kezdetben: i2: WAW(i1), RAW(i1) i4: WAR(i3) i6: WAW(i3), RAW(i3),RAW(i5) i3: RAW(i2) i5: RAW(i4) LogikaiFizikai R0U7 R1U3 D0T6 D1T2 D2T8 D3T1 D4T11 i7: RAW(i6)
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 MEM [R0+0] i2: D1 D0 * D1 i3: D4 D2 / D1 i4: D2 MEM [R1+0] i5: D3 D0 + D2 i6: D4 D4 – D3 i7: MEM [R1] D4 i2: WAW(i1) i4: WAR(i3) i6: WAW(i3), RAW(i3),RAW(i5) i3: RAW(i1) i5: RAW(i4) LogikaiFizikai R0U7 R1U3 D0T6 D1T2 D2T8 D3T1 D4T11 T12 U7 T13 T6 T14 T8 T13 T15 U3 T16T6 T15 T17 T14 T16 U3 T17 Log.Kezd.i1i2i3i4i5i6i7 R0U7 R1U3 D0T6 D1T2T12T13 D2T8T15 D3T1T16 D4T11T14T17 i7: RAW(i6) D1T12 D1T13 D4T14 D2T15 D3T16 D4T17
Pipe Feladat Átnevezés után: i1: T12 MEM [U7+0] i2: T13 T6 * T12 i3: T14 T8 / T13 i4: T15 MEM [U3+0] i5: T16 T6 + T15 i6: T17 T14 – T16 i7: MEM [U3] T17 i2: RAW(i1) i4: - i6: RAW(i3),RAW(i5) i3: RAW(i2) i5: RAW(i4) i1 i4 i3 i6 i2 i5 RAW i7 RAW i7: RAW(i6) RAW
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 D2 – D3 i2: D4 D1 + D2 i3: D5 D4 + D1 i4: D0 D2 / D5 i5: D1 MEM [R0 + 0] i6: D4 D1 + D2 i7: D5 D4 + D1 Azonosítsuk a WAW és WAR adat függőségeket! i5: WAW(i1),WAR(i3),WAR(i2) i6: WAW(i2), WAR(i3),RAW(i5) i7:WAW(i3),WAR(i4),RAW(i6),RAW(i5) i2: RAW(i1) i3: RAW(i1),RAW(i2) i4: RAW(i3)
Pipe Feladat Legyen adott az alábbi utasítás sorozat: i1: D1 D2 – D3 i2: D4 D1 + D2 i3: D5 D4 + D1 i4: D0 D2 / D5 i5: D1 MEM [R0 + 0] i6: D4 D1 + D2 i7: D5 D4 + D1 Rajzoljuk fel az utasítások precedenciagráfját! i5: WAW(i1),WAR(i2),WAR(i3) i6: WAW(i2), WAR(i3),RAW(i5) i7: WAW(i3),WAR(i4),RAW(i6), RAW(i5) WAW i1 i4 i3 i6 i2 i5 WAW RAW WAR RAW i7 RAW WAR i2: RAW(i1) i3: RAW(i1),RAW(i2) i4: RAW(i3) WAW WAR RAW WAR
Pipe Feladat Legyen adott az alábbi utasítás sorozat: D1 D2 – D3 D4 D1 + D2 D5 D4 + D1 D0 D2 / D5 D1 MEM [R0 + 0] D4 D1 + D2 D5 D4 + D1 Regiszter átnevezéssel szüntessük meg a WAW és WAR függőségeket! Használjuk a T0,T1…Tn jelölést, és minden utasítás esetén nevezzünk át! T11 T12 T13 T14 T15 T16 T13 T17 T15 T11 LogikaiFizikai R0U4 D0T6 D1T2 D2T8 D3T1 D4T9 D5T10 T1T1T8T8 T8T8 T8T8 U4 T8T8 D1T11 D4T12 D5T13 D0T14 D1T15 D4T16 D5T17 Log.Kezd.i1i2i3i4i5i6i7 R0U4 D0T6T14 D1T2T11T15 D2T8 D3T1 D4T9T12T16 D5T10T13T17
Pipe Feladat Átnevezés után: D1 D2 – D3 D4 D1 + D2 D5 D4 + D1 D0 D2 / D5 D1 MEM [R0 + 0] D4 D1 + D2 D5 D4 + D1 T11 T12 T13 T14 T15 T16 T13 T17 T15 T11 T1T1T8T8 T8T8 T8T8 U4 T8T8 i2: RAW(i1) i3: RAW(i1),RAW(i2) i4: RAW(i3) i5: - i6: RAW(i5) i7: RAW(i6),RAW(i5) i1 i4 i3 i6 i2 i5 RAW i7 RAW A precedencia gráf két részre esett szét, azaz az i1~i4 és i5~i7 közötti utasítások párhuzamosan végrehajthatók