30
Kompiuterinių architektūros koncepsija Procesoriai 2 paskaita

Kompiuterini ų architekt ūros koncepsija Procesoriaidma.vgtu.lt/hps/Skaidres/hps2.pdf · Konfliktai ver čia stabdyti konvejer į. Jei procesorius gali ir konflikto metu išrinkti

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Kompiuterinių architektūros koncepsijaProcesoriai

2 paskaita

Kompiuterio struktūra

von Neumann mašinos struktūra

� Duomenys ir instrukcijos saugomos vienoje bendroje atmintyje, į kurią galima įrašinėti ir iš kurios galima skaityti.

� Šios atminties turinys yra adresuojamas pagal tam tikrą išsidėstymą, visiškai neatsižvelgiant į saugomų duomenų tipą.

� Programų vykdymas vyksta nuosekliąja tvarka pereinant nuo vienos instrukcijos prie kitos (kol ši tvarka bus sąmoningai modifikuota).

Procesoriaus architektūros koncepsija

Kompiuterių architektūros koncepsija

Kompiuterio funkcionavimas

� Programos vykdymas – pagrindinė kompiuterio funkcija.

� Vykdoma programa – tai visuma atmintyje saugomų instrukcijų.

� Centrinis procesorinis įrenginys vykdo programoje nurodytas � Centrinis procesorinis įrenginys vykdo programoje nurodytas instrukcijas.

� Programos vykdymo procesą sudaro pasikartojantis instrukcijų išrankos bei instrukcijų vykdymo procesas.

� Suprantama, patį instrukcijos vykdymo procesą gali sudaryti keli smulkesni žingsniai – operacijos (mikro-opereacijos).

Programos vykdymo elementai

op adresas

Pagrindinė kompiuterio funkcija – programų vykdymas. Kompiuteris, vykdydamas programą, turi įvykyti instrukcijų ciklų seką, vykdant kiekviename cikle po vieną mašininę instrukciją.

Akivaizdu, kad vykdomų instrukcijų seka gali neatkartoti programoje parašytą instrukcijų seką, nes joje gali būti šakojimosi instrukcijos.

Instrukcija

Instrukcija - tai operacija, kurią vyko kompiuteris. Instrukcija priklauso nuo kompiuterio procesoriaus architektūros. Instrukcija gali būti skaidoma į smulkesnes operacijas.

Mikro-operacijosKiekvienas instrukcijos ciklas sudarytas iš smulkesnių etapų tokių, kaip instrukcijos išranka, netiesioginio adresavimo ciklas, vykdymas ir pertrauktis.

Kiekvieną mažą instrukcijos ciklą galima suskaidyti į žingsnių, kuriuose visada naudojami CPĮ registrai, seką. visada naudojami CPĮ registrai, seką. Šie žingsniai vadinami mikrooperacijomis.

Mikro-operacijos – tai pačios elementariausios CPĮ vykdomos operacijos. Kiekviena instrukcijos ciklo fazė gali būti dekomponuota į mikrooperacijų seką

.

Instrukcijų rinkinio architektūra

Instrukcijų rinkinys – tai visų instrukcijų sąrašas kurį gali įvykdyti procesorius.

Instrukcijos:Aritmetinės: add, subtractLoginės: and, or, notDuomenų: move, input, output, load, storeDuomenų: move, input, output, load, storeValdymo: goto, if ... goto, call, return

Instrukcijų rinkinio architektūra (ISA – Instruction Set Architecture) apsprendžia procesoriaus architektūra.

• Register-memory ISA (x86), kai atmintis pasiekiama kaip dalis instrukcijosdalis

• Load-store ISA (MIPS, POWER, PA-RISC), kai atmintis pasiekiama tiknaudojant load ir store instrukcijas.

Dviejų operacijų ( išrankos ir vykdymo) instrukcijos ciklas

Kompiuterio funkcionavimas

Instrukcijos ciklinė diagrama

Magistralės struktūra

� Duomenų linijomis vyksta keitimasis duomenimis tarp kompiuterio modulių.

� Adresų linijos nurodo duomenų magistralėje esančios informacijos šaltinį ir imtuvą (paskirties įrenginį {destination}).

� Valdymo linijos kontroliuoja kreiptis {access} į duomenų ir adresų linijas ir šių linijų naudojimą

Procesoriaus sandara

Registrų sandara

Registrų rinkinys funkcionuoja kaip atminties hierarchijos lygmuo, esantis aukščiau už pagrindinę ir spartinančiąją atmintis.

CPĮ registrai skirti dviem funkcijoms vykdyti:CPĮ registrai skirti dviem funkcijoms vykdyti:• Vartotojo pasiekiami registrai. Šie registrai leidžia programuotojui, taikant asemblerio programavimo kalbą arba tiesiog per mašininius kodus, sumažinti kreipčių į pagrindinę atmintį skaičių ir optimizuoti šių registrų vartojimą.• Valdymo ir būklės registrai. Jie naudojami CPĮ valdymo įrenginio darbui kontroliuoti, o taip pat valdyti operacinių sistemų programų taikomųjų programų vykdymą.

Vartotojo pasiekiami registrai

� • Bendrosios paskirties;• Duomenų;• Adresų • Sąlygų kodų.

� Bendrosios paskirties registrai programuotojo gali būti pritaikyti � Bendrosios paskirties registrai programuotojo gali būti pritaikyti įvairioms funkcijoms.

� Duomenų registrai gali būti taikomi tik duomenims saugoti ir niekada netaikomi apskaičiuojant operandų adresus.

� Adresų registrai patys gali būti realizuojami iš bendrosios paskirties registrų, o gali būti skirti specialiems adresavimo metodams.

� Sąlygų kodus sudaro tam tikri bitai, kuriais gali operuoti CPĮ techninė įranga, priklausomai nuo vykdomos operacijos rezultato.

Valdymo būklės registrai

� Programos skaitiklis (PS). Saugo sekančios išrenkamos instrukcijos adresą.

� Instrukcijos registras (IR). Saugo naujausiąją išrinktą instrukciją.instrukciją.

� Atminties adreso registras (AAR). Saugo atminties ląstelės, iš kurios ką tik buvo perskaityta informacija arba į kurią vyks duomenų rašymas, adresą.

� Atminties buferio registras (ABR). Saugomas duomenų žodis, kuris bus įrašytas į atmintį arba iš atminties ką tik nuskaitytas.

Duomenų srautas

Instrukcija ciklo išrankos metu skaitoma iš atminties. PS registre saugomas sekančios išrenkamos instrukcijos adresas. Šis adresas siunčiamas į AAR ir patalpinamas adresų magistralėje. Valdymo įrenginys organizuoja skaitymą iš atminties. Nuskaitytas rezultatas patalpinamas duomenų magistralėje, kopijuojamas į ABR ir toliau siunčiamas į IR. Tuo tarpu PS turinys didinamas vienetu ir taip gaunamas sekančios instrukcijos adresas.

Instrukcijų konvejeris

Instrukcijų konvejerizavimas panašus į surinkimo linijos taikymą produkcijos gamyboje. Surinkimo linijos privalumas yra tame, kad surinkimo procesas surinkimo linijoje išskaidomas į etapus ir tame, kad tam tikros gaminio surinkimo procedūros gali būti vykdomos vienu metu. Toks procesas dar vadinamas konvejeriu arba vamzdynu {pipeline}, kadangi konvejeryje nauja operacija pradedama viename gale nesulaukus kol kita operacija kitame gale bus užbaigta.

Instrukcijų konvejeris

Instrukcijos išranka (II). Į buferį nuskaitoma sekanti instrukcija po vykdomos.Instrukcijos dekodavimas (ID). Nustatomi operacijos kodas ir operando specifikatorius.Operando apskaičiavimas (OA). Apskaičiuojamas operando efektyvusis (realusis arba fizinis) adresas. Tai gali būti perkėlimo, registrų netiesioginis adresavimo ir kitų formų adresų apskaičiavimai.Operandų išranka (OI). Operandas arba operandai nuskaitomas iš atminties.Instrukcijos vykdymas (IV). Vykdoma instrukcijoje nurodyta operacija ir išsaugomas jos rezultatas.Operando rašymas (OR). Operacijos rezultatas įrašomas į atmintį.

Konvejerio našumas problemos

Konvejerio našumą įtakojančius faktorius priimta skirstyti į tris klases: 1) resursų konfliktus (structural hazards);2) duomenų priklausomumą (data hazards);3) valdymo nuoseklumo priklausomumą (control hazards). 3) valdymo nuoseklumo priklausomumą (control hazards).

Resursų konfliktai kyla tuomet, kai į tą patį vienintelį resursą kreipiasi ne mažiau kaip dvi komandos. Tokiu atveju viena komanda gali tuo resursu naudotis, o likusios komandos turi laukti, kol resursas bus atlaisvintas ir bus patenkinta kitos komandos paraiška. Jei to tipo resursas turi k egzempliorių (pavyzdžiui, superskaliariniame procesoriuje yra keli to paties tipo funkciniai įtaisai), aišku, kad vienu metu gali būti patenkinta k kreipinių.

Duomenų priklausomumas atsiranda dėl to, kad konvejerizuotame procesoriuje pasikeičia gretimų komandų atskirų žingsnių vykdymo nuoseklumas. Tai liečia operandų išrinkimą ir rezultato įrašymą. Pavyzdžiui, vykdoma tokia komandų pora:

Konvejerio našumas problemos

Komandos Add rezultatas bus įrašytas į registrą R1 fazėje W , o komanda Sub atėminį turi išrinkti iš registro R1 fazėje F , kuri vykdoma dviems cikaisu anksčiau.

Šis pavyzdys atitinka vadinamąjį tikrąjį duomenų priklausomumą

Valdymo problemos konvejeryje

� II, OI ir OR etapuose vykdomi kreipiniai į atmintį. Diagramoje numatyta, kad visos šios kreiptys gali vykti vienu metu

Instrukcijos etapų trukmės skirtumai� Instrukcijos etapų trukmės skirtumai

� Sąlygiškojo šakojimosi instrukcija

� Tam tikrą neapibrėžtumą taip pat įneša pertrauktys

Konvejerio problemų sprendimas

Duomenų priklausomumo problemos sprendžiamos naudojant:

• Apylankas t.y. kai lygiagrečiai su rezultato įrašymu į registrąperduoda šį rezultatą tiesiai į ALU (arithmetic logic unit) įėjimą.Šis metodas išsprendžia duomenų priklausomumo problemą tiktuomet, kai vienos komandos rezultato įrašymo fazė sutampa sukitos komandos vykdymo faze, t.y. turime vieno ciklo skirtumą.

• Konvejerio blokavimą priemonės, kurių uždavinys – pastebėtikonfliktinę situaciją ir sulaikyti konvejerio darbą, kol konfliktas busišspręstas.

• Optimizuojant kompiliatorius, pagal konvejerį

Dinaminės konfliktų sprendimo priemonės konvejeriuose

Konfliktai verčia stabdyti konvejerį. Jei procesorius gali ir konflikto metu išrinkti ir dekoduoti naują komandą, gali būti išrinkta komanda, kuri nuo konflikto visiškai nepriklauso. Ji galėtų būti vykdoma, jei laisvas jai reikalingas funkcinis įtaisas. Tokia "žiūrėjimo pirmyn" savybe (lookahed capability) pasižymintis procesorius komandas gali savybe (lookahed capability) pasižymintis procesorius komandas gali vykdyti ne ta tvarka, kaip jos išdėstytos programoje.

Superskaliariniuose kompiuteriuose gali būti naudojamos trys strategijos:1. Komandos inicijuojamos tiksliai ta tvarka, kaip jos išdėstytos programoje; ta tvarka jos ir įrašo savo rezultatus (stabdomas konvejeris).2. Komandos inicijuojamos tiksliai ta tvarka, kaip jos išdėstytos programoje; savo rezultatus jos įrašo nebūtinai ta pačia tvarka (komandos savo rezultatus jos įrašo bet kokia ).3. Komandos inicijuojamos nebūtinai ta tvarka, kaip jos išdėstytos programoje; savo rezultatus jos įrašo bet kokia, tačiau semantiškai teisinga, tvarka (tarp dekodavimo ir vykdymo pakopų

reikalingas buferis ).

Dinaminės konfliktų sprendimo priemonės konvejeriuose

Naudojami tokie dinaminiai resursų konfliktų ir duomenų priklausomumo nustatymo metodai• markiravimas (scoreboard)• rezervavimo lentelės (reservation stations)

Markiravimo paskirtis - kiek galima anksčiau inicijuoti komandos Markiravimo paskirtis - kiek galima anksčiau inicijuoti komandos vykdymą, kad gauti maksimalų našumą. Markiruojant atpažįstami galimi konfliktai ir inicijuojamas lygiagretus komandų vykdymas dekodavimo, vykdymo ir rezultato įrašymo fazėse. Tam tikslui kiekvienu laiko momentu reikalinga tokia informacija:1) komandos būsena jos vykdymo procese (komandos vykdymo ciklo fazė);2) atskirų funkcinių įtaisų būsenos;3) registrai, į kuriuos funkciniai įtaisai įrašys rezultatus.

Šie duomenys saugomi specialiose lentelėse ir atnaujinami kiekviename cikle.

Dinaminės konfliktų sprendimo priemonės konvejeriuose

Lyginant su markiravimo metodu, rezervavimo lenteliųpanaudojimas pranašesnis tuo, kad markiravimo atveju rezultatas pirmiausia įrašomas į registrą, o po to jo laukianti komanda jį gali iš registro paimti; tuo tarpu naudojant rezervavimo lentelių metodą, operando laukianti komanda jį gali paimti tiesiai iš lentelių metodą, operando laukianti komanda jį gali paimti tiesiai iš rezultatų magistralės. Tai sumažina registrų failo interfeiso apkrovimą, konfliktų dėl kreipinių į registrų failą ir duomenų linijų skaičių.

Tačiau rezervavimo lentelės reikalauja papildomų aparatūros sąnaudų (asociatyviniam palyginimui ir valdymui). Dažnai procesoriuose viena rezultatų magistralė tampa siaura vieta; didesnis rezultatų magistralių skaičius verčia didinti ir asociatyviniam palyginimui bei valdymui reikalingas papildomos aparatūros sąnaudas.

Šakojimosi problemos sprendimas

Sąlygiškojo šakojimosi problemai pašalinti taikomi tokie metodai:• Daugialypiai srautai;• Šakojimosi krypties išankstinė išranka;• Šakojimosi krypties išankstinė išranka;• Ciklinis (kilpinis) {loop} buferis;• Šakojimosi nuspėjimas;• Uždelstas šakojimasis

Šakojimosi problemos sprendimas

� Daugialypiai srautai Paprastame konvejeryje, esant šakojimosi instrukcijai, dažnai atsiranda prastova, kadangi į instrukcijos registrą turi būti įrašyta sekanti viena iš dviejų galimų instrukcijų. O ji gali būti išrinkta neteisingai. Šiuo atveju galima toks sprendimas, pakartoti konvejerio pradinį etapą ir leisti jam abiejų instrukcijų išranką, tokiu būdu sudaroma galimybė toliau dirbti dviem srautais.būdu sudaroma galimybė toliau dirbti dviem srautais.

� Šakojimosi krypties išankstinė išrankaNaudojant šį metodą, aptikus sąlygiškąjį šakojimąsi, išrenkama įprasta šakojimosi instrukcija ir dar papildomai vadinamoji šakojimosi kryptis, t. y. instrukcija, į kurią gali persijungti programa, esant teigiamai šakojimosi sąlygai. Vykdant šakojimosi instrukciją, šakojimosi kryptis visą laiką saugoma. Jeigu išanalizavus sąlygą, šakojimasis privalo įvykti, tai šiuo atveju jo kryptis jau būna iš anksto išrinkta.

Šakojimosi problemos sprendimas

� Cikliškas buferis Cikliškas buferis {loop buffer} yra nedidelė labai sparti konvejerio išrankos etape veikianti atmintis. Šioje atmintyje saugoma n paskutinių išrinktų instrukcijų. Jeigu šakojimasis turi įvykti, tai techninė įranga visų pirma patikrina ar cikliškame buferyje nėra įsiminta šakojimosi krypties. Buferyje ją aptikus, sekanti instrukcija išrenkama iš cikliško Buferyje ją aptikus, sekanti instrukcija išrenkama iš cikliško buferio.

� Šakojimosi nuspėjimasŠakojimuisi nuspėti taikomi labai įvairūs metodai, dažniausiai statistiniai arba programos vykdymo priešistoriją įvertinantys.

� Uždelstas šakojimasisKonvejeriavimo efektyvumą galima padidinti automatiškai sutvarkant programoje instrukcijas taip, kad visos šakojimosi instrukcijos atsirastų vėliau negu tai buvo iš anksto numatyta