Rurociągi: architektura, zalety i wady

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Zwiększenie szybkości wykonywania programu w konsekwencji zwiększa szybkość procesor. Wynaleziono wiele sposobów, zarówno implementację sprzętową, jak i architekturę oprogramowania, aby zwiększyć szybkość wykonywania. Zaobserwowano, że przez jednoczesne wykonywanie instrukcji można skrócić czas potrzebny na wykonanie. Pojęcie równoległości w programowanie zostało zaproponowane. Zgodnie z tym, w jednym cyklu zegara można wykonać więcej niż jedną instrukcję. Ta koncepcja może być praktykowana przez programistę za pomocą różnych technik, takich jak Rurowanie, wiele jednostek wykonawczych i wiele rdzeni . Spośród wszystkich tych metod paralelizmu najczęściej praktykowane jest potokowanie. Jak więc można wykonać instrukcję w metodzie potokowej? Jak to zwiększa szybkość wykonania?

Co to jest rurociąg?

Aby zrozumieć koncepcję potokowania, przyjrzyjmy się podstawowemu poziomowi wykonywania programu. Instrukcja to najmniejszy pakiet wykonawczy programu. Każda instrukcja zawiera jedną lub więcej operacji. Proste procesory skalarne wykonują jedną lub więcej instrukcji na cykl zegara, przy czym każda instrukcja zawiera tylko jedną operację. Instrukcje są wykonywane jako sekwencja faz, aby uzyskać oczekiwane rezultaty. Sekwencja ta jest podana poniżej




Sekwencja wykonywania instrukcji

Sekwencja wykonywania instrukcji

  • IF: Pobiera instrukcję do rejestru instrukcji.
  • ID: dekodowanie instrukcji, dekoduje instrukcję dla kodu operacji.
  • AG: Generator adresów, generuje adres.
  • DF: Pobieranie danych, pobiera argumenty do rejestru danych.
  • EX: Execution, wykonuje określoną operację.
  • WB: Odpisuj, zapisuje wynik do rejestr.

Nie wszystkie instrukcje wymagają wykonania wszystkich powyższych czynności, ale większość z nich wymaga. Te kroki wykorzystują różne funkcje sprzętowe. W rurociągu te różne fazy są wykonywane jednocześnie. W przypadku rurociągów te fazy są uważane za niezależne między różnymi operacjami i mogą się pokrywać. W ten sposób można wykonywać wiele operacji jednocześnie, a każda operacja znajduje się we własnej niezależnej fazie.



Instrukcja Rurociągi

Przyjrzyjmy się, w jaki sposób instrukcje są przetwarzane podczas potokowania. Można to łatwo zrozumieć na poniższym diagramie.

Instrukcja Rurociągi

Instrukcja Rurociągi

Załóż, że instrukcje są niezależne. W prostym procesorze potokowym w danym czasie jest tylko jedna operacja w każdej fazie. Faza początkowa to faza IF. Tak więc w pierwszym cyklu zegara pobierana jest jedna operacja. Kiedy nadejdzie następny impuls zegarowy, pierwsza operacja przechodzi do fazy ID, pozostawiając pustą fazę IF. Teraz ta pusta faza jest przydzielana do następnej operacji. Tak więc podczas drugiego impulsu zegarowego pierwsza operacja jest w fazie ID, a druga operacja w fazie IF.

W trzecim cyklu pierwsza operacja będzie w fazie AG, druga operacja będzie w fazie ID, a trzecia operacja będzie w fazie IF. W ten sposób instrukcje są wykonywane jednocześnie i po sześciu cyklach procesor wyprowadza całkowicie wykonaną instrukcję na cykl zegara.


Czy ta instrukcja została wykonana sekwencyjnie, początkowo pierwsza instrukcja musi przejść przez wszystkie fazy, a następnie zostanie pobrana następna? Zatem do wykonania każdej instrukcji procesor wymagałby sześciu cykli zegara. Ale w procesorze potokowym, ponieważ wykonywanie instrukcji odbywa się jednocześnie, tylko instrukcja początkowa wymaga sześciu cykli, a wszystkie pozostałe instrukcje są wykonywane jako jedna na każdy cykl, co skraca czas wykonywania i zwiększa szybkość procesora.

Architektura rurociągów

Równoległość można osiągnąć za pomocą technik sprzętowych, kompilatorów i oprogramowania. Aby wykorzystać koncepcję rurociągów w architektura komputerowa wiele jednostek procesorów jest połączonych ze sobą i działa jednocześnie. W architekturze procesora potokowego dostępne są oddzielne jednostki przetwarzania dla liczb całkowitych i instrukcji zmiennoprzecinkowych. Podczas gdy w architekturze sekwencyjnej zapewniona jest pojedyncza jednostka funkcjonalna.

Jednostka procesora potokowego

Jednostka procesora potokowego

W statycznym pipeliningu procesor powinien przekazać instrukcję przez wszystkie fazy potoku, niezależnie od wymagań instrukcji. W dynamicznym procesorze potokowym instrukcja może ominąć fazy w zależności od swoich wymagań, ale musi poruszać się w kolejności sekwencyjnej. W złożonym dynamicznym procesorze potokowym instrukcja może pomijać fazy, a także wybierać fazy poza kolejnością.

Rurociągi w procesorach RISC

Najbardziej popularne Architektura RISC Procesor ARM obsługuje 3-stopniowe i 5-stopniowe przetwarzanie potokowe. W trzystopniowym potoku etapy to: pobieranie, dekodowanie i wykonywanie. To potokowanie ma 3 cykle opóźnienia, ponieważ pojedyncza instrukcja zajmuje 3 cykle zegarowe.

Rurociąg 3-stopniowy ARM

Rurociąg 3-stopniowy ARM

Dla poprawnej implementacji pipeliningu należy również zaktualizować architekturę sprzętową. Sprzęt do trójstopniowego przetwarzania potokowego obejmuje bank rejestrów, jednostkę ALU, przesuwnik lufy, generator adresu, urządzenie zwiększające, dekoder instrukcji i rejestry danych.

Ścieżka danych ARM 3 Stage Pipelining

Ścieżka danych ARM 3 Stage Pipelining

W 5 etapach potokowanie etapów to: pobieranie, dekodowanie, wykonywanie, buforowanie / dane i zapisywanie.

Zagrożenia związane z rurociągami

W typowym programie komputerowym oprócz prostych instrukcji znajdują się instrukcje rozgałęzienia, operacje przerwań, instrukcje odczytu i zapisu. Rurociągi nie nadają się do wszystkich rodzajów instrukcji. Kiedy niektóre instrukcje są wykonywane w procesie potokowym, mogą zablokować rurociąg lub całkowicie go opróżnić. Ten rodzaj problemów występujących podczas rurociągów nazywa się zagrożeniami związanymi z rurociągami.

W większości programów komputerowych wynik jednej instrukcji jest używany jako operand przez drugą instrukcję. Gdy takie instrukcje są wykonywane w trybie potokowym, następuje rozbicie, ponieważ pierwsza instrukcja nie jest dostępna, gdy druga instrukcja zaczyna zbierać argumenty. Tak więc, instrukcja druga musi utknąć do momentu wykonania instrukcji pierwszej i wygenerowania wyniku. Ten rodzaj zagrożenia nazywany jest zagrożeniem typu „odczyt - po zapisie”.

Odczytaj po zapisaniu Zagrożenie rurociągiem

Odczytaj po zapisaniu Zagrożenie rurociągiem

Wykonywanie instrukcji rozgałęzienia również stwarza zagrożenie związane z rurociągami. Instrukcje rozgałęzienia podczas wykonywania w rurociągach wpływa na etapy pobierania kolejnych instrukcji.

Zachowanie gałęzi potokowych

Zachowanie gałęzi potokowych

Zalety rurociągów

  • Przepustowość instrukcji wzrasta.
  • Zwiększenie liczby etapów potoku zwiększa liczbę instrukcji wykonywanych jednocześnie.
  • Szybsze ALU można zaprojektować w przypadku stosowania rurociągów.
  • Potokowe procesory pracują z wyższymi częstotliwościami zegara niż pamięć RAM.
  • Pipelining zwiększa ogólną wydajność procesora.

Wady rurociągów

  • Projektowanie procesora potokowego jest skomplikowane.
  • W procesorach potokowych wzrasta opóźnienie instrukcji.
  • Przepustowość procesora potokowego jest trudna do przewidzenia.
  • Im dłuższy rurociąg, tym większy problem zagrożenia dla instrukcji rozgałęzienia.

Pipelining przynosi korzyści wszystkim instrukcjom wykonanym w podobnej kolejności. Procesory, które mają złożone instrukcje, w których każda instrukcja zachowuje się inaczej niż pozostałe, są trudne do potokowania. Procesory mają rozsądne narzędzia z 3 lub 5 etapami rurociągu, ponieważ wraz ze wzrostem głębokości rurociągu zwiększa się ryzyko związane z nim. Wymień niektóre z procesorów potokowych z ich etapem potokowym?