Cauruļvadi: arhitektūra, priekšrocības un trūkumi

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Palielinot programmas izpildes ātrumu, attiecīgi palielinās procesors. Lai palielinātu izpildes ātrumu, ir izgudrots gan aparatūras ieviešana, gan programmatūras arhitektūra. Tika novērots, ka, vienlaikus izpildot instrukcijas, var samazināt izpildei nepieciešamo laiku. Paralēlisma jēdziens programmēšana tika ierosināts. Saskaņā ar to vienā pulksteņa ciklā var izpildīt vairākas instrukcijas. Šo jēdzienu programmētājs var praktizēt, izmantojot dažādas metodes, piemēram, Cauruļvadi, vairākas izpildes vienības un vairāki kodoli . Starp visām šīm paralēlisma metodēm visbiežāk tiek praktizēta cauruļvadi. Tātad, kā instrukciju var izpildīt cauruļvadu metodē? Kā tas palielina izpildes ātrumu?

Kas ir cauruļvadi?

Lai saprastu konveijera jēdzienu, apskatīsim programmas izpildes saknes līmeni. Instrukcija ir mazākā programmas izpildes pakete. Katrā instrukcijā ir viena vai vairākas darbības. Vienkārši skalāri procesori vienā pulksteņa ciklā izpilda vienu vai vairākas instrukcijas, katrai instrukcijai ir tikai viena darbība. Norādījumi tiek izpildīti kā fāžu secība, lai iegūtu gaidītos rezultātus. Šī secība ir dota tālāk




Instrukciju izpildes secība

Instrukciju izpildes secība

  • IF: ienes instrukciju instrukciju reģistrā.
  • ID: Instrukcijas atšifrēt, atšifrē instrukciju opkodam.
  • AG: adrešu ģenerators, ģenerē adresi.
  • DF: Datu ielāde, ienes operandus datu reģistrā.
  • EX: Izpilde, izpilda norādīto darbību.
  • WB: pierakstiet, uzrakstiet rezultātu uz reģistrā.

Ne visām instrukcijām ir nepieciešamas visas iepriekš minētās darbības, taču lielākajai daļai to ir nepieciešams. Šajās darbībās tiek izmantotas dažādas aparatūras funkcijas. Cauruļvados šīs dažādās fāzes tiek veiktas vienlaicīgi. Veicot cauruļvadus, šīs fāzes tiek uzskatītas par neatkarīgām starp dažādām darbībām, un tās var pārklāties. Tādējādi vienlaikus var veikt vairākas darbības, katrai operācijai atrodoties savā neatkarīgajā fāzē.



Instrukcija Cauruļvadi

Apskatīsim, kā instrukcijas tiek apstrādātas cauruļvados. To var viegli saprast, izmantojot zemāk redzamo diagrammu.

Instrukcija Cauruļvadi

Instrukcija Cauruļvadi

Pieņemsim, ka instrukcijas ir neatkarīgas. Vienkāršā cauruļvadu procesorā noteiktā laikā katrā fāzē ir tikai viena darbība. Sākotnējā fāze ir IF fāze. Tātad pirmajā pulksteņa ciklā tiek veikta viena darbība. Kad pienāk nākamais pulksteņa impulss, pirmā darbība nonāk ID fāzē, atstājot IF fāzi tukšu. Tagad šī tukšā fāze tiek piešķirta nākamajai operācijai. Tātad otrā pulksteņa impulsa laikā pirmā darbība ir ID fāzē un otrā darbība ir IF fāzē.

Trešajam ciklam pirmā darbība būs AG fāzē, otrā darbība būs ID fāzē un trešā darbība būs IF fāzē. Tādā veidā instrukcijas tiek izpildītas vienlaicīgi, un pēc sešiem cikliem procesors vienā pulksteņa ciklā izdos pilnīgi izpildītu instrukciju.


Vai šī instrukcija ir izpildīta secīgi, sākotnēji pirmajai instrukcijai ir jāiziet visas fāzes, pēc tam tiks ielādēta nākamā instrukcija? Tātad katras instrukcijas izpildei procesoram būtu nepieciešami seši pulksteņu cikli. Bet cauruļvadā esošajā procesorā, kad instrukciju izpilde notiek vienlaicīgi, tikai sākotnējai instrukcijai nepieciešami seši cikli, un visas atlikušās instrukcijas tiek izpildītas kā viena katrā ciklā, tādējādi samazinot izpildes laiku un palielinot procesora ātrumu.

Cauruļvadu arhitektūra

Paralēlismu var panākt, izmantojot aparatūras, kompilatora un programmatūras paņēmienus. Izmantot cauruļvadu koncepciju datoru arhitektūra daudzas procesoru vienības ir savstarpēji savienotas un darbojas vienlaicīgi. Cauruļvadu procesora arhitektūrā ir atdalītas apstrādes vienības, kas paredzētas veseliem skaitļiem un peldošā komata instrukcijām. Tā kā secīgā arhitektūrā ir paredzēta viena funkcionāla vienība.

Cauruļvadu procesora bloks

Cauruļvadu procesora bloks

Statiskā cauruļvadā procesoram instrukcija jānodod cauri visiem cauruļvada posmiem neatkarīgi no instrukcijas prasības. Dinamiskā cauruļvada procesorā instrukcija var apiet fāzes atkarībā no tās prasības, bet tai ir jāpārvietojas secīgā secībā. Sarežģītā dinamiskā cauruļvada procesorā instrukcija var apiet fāzes, kā arī izvēlēties fāzes ārpus kārtas.

Cauruļvadi RISC procesoros

Vispopulārākais RISC arhitektūra ARM procesors seko 3 un 5 pakāpju cauruļvadiem. Trīspakāpju cauruļvados posmi ir: Ielādēt, Atšifrēt un Izpildīt. Šim cauruļvadam ir 3 ciklu latentums, jo atsevišķas instrukcijas izpildei nepieciešami 3 pulksteņu cikli.

ARM 3 pakāpju cauruļvadi

ARM 3 pakāpju cauruļvadi

Pareizai cauruļvadu ieviešanai jāatjaunina arī aparatūras arhitektūra. Aparatūra trīspakāpju cauruļvadiem ietver reģistru banku, ALU, mucu pārslēdzēju, adrešu ģeneratoru, inkrementu, instrukciju dekodētāju un datu reģistrus.

ARM 3 posmu cauruļvadu datapath

ARM 3 posmu cauruļvadu datapath

Piecos posmos konveijera stadijas ir: Ielādēt, Atšifrēt, Izpildīt, Buferis / dati un Rakstīt atpakaļ.

Cauruļvadu bīstamība

Tipiskā datorprogrammā bez vienkāršām instrukcijām ir filiāles instrukcijas, darbības pārtraukšana, lasīšanas un rakstīšanas instrukcijas. Cauruļvadi nav piemēroti visu veidu instrukcijām. Kad dažas instrukcijas tiek izpildītas cauruļvadā, tās var apstādināt cauruļvadu vai pilnībā to izskalot. Šāda veida problēmas, kas rodas cauruļvadu laikā, tiek sauktas par cauruļvadu bīstamību.

Lielākajā daļā datorprogrammu vienas instrukcijas rezultāts tiek izmantots kā operands ar otru instrukciju. Kad šādas instrukcijas tiek izpildītas cauruļvadā, notiek sadalīšanās, jo pirmās instrukcijas rezultāts nav pieejams, kad otrā instrukcija sāk vākt operandus. Tātad otrajai instrukcijai jāapturas, līdz tiek izpildīta viena instrukcija un tiek iegūts rezultāts. Šādu bīstamības veidu sauc par lasīšanas un pēcrakstīšanas bīstamību.

Lasiet pēc rakstīšanas cauruļvadu bīstamības

Lasiet pēc rakstīšanas cauruļvadu bīstamības

Filiāles instrukciju izpilde rada arī cauruļvadu bīstamību. Filiāles norādījumi izpildes laikā cauruļvados ietekmē nākamo instrukciju ielādes posmus.

Cauruļvadu filiāles uzvedība

Cauruļvadu filiāles uzvedība

Cauruļvadu priekšrocības

  • Palielinās instrukciju caurlaidspēja.
  • Cauruļvada posmu skaita palielināšanās palielina vienlaikus izpildīto instrukciju skaitu.
  • Ātrāku ALU var projektēt, ja tiek izmantota cauruļvadi.
  • Cauruļvadu procesors darbojas ar augstāku pulksteņa frekvenci nekā RAM.
  • Cauruļvadi palielina CPU kopējo veiktspēju.

Cauruļvadu trūkumi

  • Cauruļvadu procesora projektēšana ir sarežģīta.
  • Instrukciju latentums palielinās cauruļvadu procesoros.
  • Cauruļvada procesora caurlaidi ir grūti paredzēt.
  • Jo garāks ir cauruļvads, jo sliktāka ir filiāles instrukciju bīstamības problēma.

Cauruļvadi ir noderīgi visiem norādījumiem, kas izpilda līdzīgu izpildes darbību secību. Procesorus, kuriem ir sarežģītas instrukcijas, kur katra instrukcija uzvedas atšķirīgi no otra, ir grūti sagatavot. Procesoriem ir saprātīgi agregāti ar 3 vai 5 cauruļvada posmiem, jo, palielinoties cauruļvada dziļumam, palielinās ar to saistītie apdraudējumi. Nosauciet dažus cauruļvadu procesorus ar to cauruļvada posmu?