Vamzdynas: architektūra, pranašumai ir trūkumai

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Padidinus programos vykdymo greitį, padidėja procesorius. Yra daugybė būdų - tiek aparatinės įrangos, tiek programinės įrangos architektūros - išrasti būdai, kaip padidinti vykdymo greitį. Pastebėta, kad vykdant nurodymus vienu metu, gali būti sutrumpintas vykdymui reikalingas laikas. Paralelizmo samprata programavimas buvo pasiūlyta. Pagal tai, per vieną laikrodžio ciklą galima įvykdyti daugiau nei vieną komandą. Šią koncepciją programuotojas gali praktikuoti naudodamas įvairias technikas, pvz Vamzdynas, keli vykdymo vienetai ir keli šerdys . Tarp visų šių lygiagretumo metodų dažniausiai naudojamas vamzdynavimas. Taigi, kaip instrukcija gali būti vykdoma vamzdynavimo metodu? Kaip tai padidina vykdymo greitį?

Kas yra vamzdynas?

Norėdami suvokti „pipelining“ sąvoką, pažvelkime į pagrindinį programos vykdymo lygį. Instrukcija yra mažiausias programos vykdymo paketas. Kiekvienoje instrukcijoje yra viena ar daugiau operacijų. Paprasti skaliariniai procesoriai vykdo vieną ar kelias instrukcijas per vieną takto ciklą, kiekvienoje instrukcijoje yra tik viena operacija. Norint gauti laukiamus rezultatus, instrukcijos vykdomos kaip fazių seka. Ši seka pateikiama žemiau




Instrukcijų vykdymo seka

Instrukcijų vykdymo seka

  • IF: pateikia instrukciją į instrukcijų registrą.
  • ID: Instrukcija dekoduoti, iššifruoja nurodymą kodui.
  • AG: Adresų generatorius, sugeneruoja adresą.
  • DF: Duomenų gavimas, parsineša operandus į duomenų registrą.
  • EX: vykdymas, vykdo nurodytą operaciją.
  • WB: Parašykite atgal, užrašykite rezultatą į registrą.

Ne visoms instrukcijoms reikia visų aukščiau nurodytų veiksmų, tačiau daugumai jų reikia. Šiuose veiksmuose naudojamos skirtingos aparatinės įrangos funkcijos. Vamzdynuose šios skirtingos fazės atliekamos vienu metu. Vykdant vamzdyną, šios fazės laikomos nepriklausomomis tarp skirtingų operacijų ir gali sutapti. Taigi, kelias operacijas galima atlikti vienu metu, kai kiekviena operacija yra atskiroje fazėje.



Instrukcija Vamzdynai

Pažiūrėkime, kaip instrukcijos yra apdorojamos vamzdynuose. Tai galima lengvai suprasti pagal toliau pateiktą diagramą.

Instrukcija Vamzdynai

Instrukcija Vamzdynai

Tarkime, kad instrukcijos yra nepriklausomos. Paprastame vamzdynų procesoriuje tam tikru laiku kiekviename etape atliekama tik viena operacija. Pradinė fazė yra IF fazė. Taigi per pirmąjį laikrodžio ciklą gaunama viena operacija. Kai ateina kitas laikrodžio impulsas, pirmoji operacija pereina į ID fazę, o IF fazė paliekama tuščia. Dabar ši tuščia fazė yra paskirta kitai operacijai. Taigi antrojo laikrodžio impulso metu pirmoji operacija yra ID fazėje, o antroji - IF fazėje.

Trečiojo ciklo metu pirmoji operacija bus AG fazėje, antroji - ID fazėje, o trečioji - IF fazėje. Tokiu būdu instrukcijos vykdomos vienu metu ir po šešių ciklų procesorius išduos visiškai įvykdytas instrukcijas per laikrodžio ciklą.


Ar ši instrukcija buvo vykdoma nuosekliai, iš pradžių pirmoji komanda turi pereiti visas fazes, tada bus gaunama kita instrukcija? Taigi, norint įvykdyti kiekvieną komandą, procesoriui reikės šešių laikrodžio ciklų. Tačiau kai procesorius vykdomas vienu metu, instrukcijų vykdymas vyksta vienu metu, tik pradiniam nurodymui reikalingi šeši ciklai, o visos likusios instrukcijos vykdomos po vieną kiekviename cikle, taip sumažinant vykdymo laiką ir padidinant procesoriaus greitį.

Vamzdynų architektūra

Lygiagretumą galima pasiekti naudojant aparatūros, kompiliatoriaus ir programinės įrangos metodus. Panaudoti vamzdynų idėją kompiuterio architektūra daugelis procesoriaus blokų yra sujungti ir veikia vienu metu. Procesoriaus procesoriaus architektūroje yra atskiri apdorojimo vienetai, skirti sveikiesiems skaičiams ir slankiojo kablelio instrukcijoms. Kadangi nuoseklioje architektūroje yra vienas funkcinis vienetas.

Vamzdinis procesoriaus blokas

Vamzdinis procesoriaus blokas

Statiniame vamzdynuose procesorius turėtų perduoti instrukcijas per visus vamzdyno etapus, neatsižvelgdamas į instrukcijos reikalavimą. Dinaminiame vamzdyno procesoriuje instrukcija gali apeiti fazes, priklausomai nuo jos reikalavimo, tačiau turi judėti eilės tvarka. Kompleksiniame dinaminiame dujotiekio procesoriuje instrukcija gali apeiti fazes, taip pat pasirinkti fazes iš eilės.

Vamzdynas RISC procesoriuose

Populiariausias RISC architektūra ARM procesorius vykdo 3 ir 5 pakopų vamzdynus. Trijų pakopų vamzdynuose etapai yra: „Fetch“, „Decode“ ir „Execute“. Šis vamzdynas turi 3 ciklų vėlavimą, nes atskirai instrukcijai atlikti reikia 3 laikrodžio ciklų.

ARM 3 etapų vamzdynai

ARM 3 etapų vamzdynai

Norint tinkamai įgyvendinti vamzdynus, taip pat turėtų būti atnaujinta aparatūros architektūra. Į 3 pakopų vamzdynų techninę įrangą įeina registrų bankas, ALU, barelio perjungiklis, adresų generatorius, inkrementas, instrukcijų dekoderis ir duomenų registrai.

ARM 3 etapų vamzdynų duomenų perdavimo kelias

ARM 3 etapų vamzdynų duomenų perdavimo kelias

Penki etapai yra tokie: „Fetch“, „Decode“, „Execute“, „Buffer / data“ ir „Write back“.

Vamzdynų pavojai

Be paprastų instrukcijų, tipinėje kompiuterio programoje yra filialo instrukcijos, pertraukiamos operacijos, skaitomos ir rašomos instrukcijos. Vamzdynas nėra tinkamas visoms instrukcijoms. Kai kai kurios instrukcijos vykdomos vamzdynuose, jos gali sustabdyti dujotiekį arba visiškai jį išplauti. Tokio tipo problemos, kylančios dujotiekio metu, vadinamos vamzdynų pavojais.

Daugumoje kompiuterinių programų vienos instrukcijos rezultatas naudojamas kaip operandas kitos instrukcijos. Kai tokios instrukcijos vykdomos tiesiant, suskaidymas įvyksta, nes pirmosios instrukcijos rezultatas nėra pasiekiamas, kai du nurodymai pradeda rinkti operandus. Taigi, du nurodymai turi strigti, kol bus įvykdytas vienas nurodymas ir bus gautas rezultatas. Šis pavojaus tipas vadinamas „Read-a-write-pipelining“ pavojumi.

Skaitykite po rašymo vamzdynų pavojumi

Skaitykite po rašymo vamzdynų pavojumi

Filialo nurodymų vykdymas taip pat kelia pavojų vamzdynams. Filialo nurodymai vykdant vamzdynuose daro kitų instrukcijų atnešimo etapus.

Vamzdinių šakų elgesys

Vamzdinių šakų elgesys

Vamzdynų pranašumai

  • Didėja instrukcijų pralaidumas.
  • Padidėjus vamzdynų etapų skaičiui, padidėja vienu metu vykdomų komandų skaičius.
  • Greitesnis ALU gali būti suprojektuotas, kai naudojamas vamzdynas.
  • Vamzdiniai procesoriai veikia didesniu laikrodžio dažniu nei RAM.
  • Vamzdynai padidina bendrą procesoriaus našumą.

Vamzdynų trūkumai

  • Dujotiekio procesoriaus projektavimas yra sudėtingas.
  • Instrukcijos vėlavimas padidėja vamzdynuose esančiuose procesoriuose.
  • Dujotiekio procesoriaus pralaidumą sunku numatyti.
  • Kuo ilgesnis dujotiekis, tuo blogesnė filialo instrukcijų problema.

Vamzdynai naudingi visoms instrukcijoms, kurios atliekamos vykdant panašią veiksmų seką. Procesorius, turinčius sudėtingas instrukcijas, kai kiekviena instrukcija elgiasi kitaip nei kita, sunku pristatyti. Procesoriai turi pagrįstus padargus su 3 ar 5 dujotiekio pakopomis, nes didėjant dujotiekio gyliui, didėja su juo susiję pavojai. Įvardykite kelis vamzdynuose esančius procesorius su jų dujotiekio stadija?