Schemat Tomasulo
Algorytm na podstawie idei `stacji rezerwacji'
Stacja rezerwacji pobiera i buforuje operand/argument tak szybko jak tylko jest dostępny, eliminując potrzebę dostania operanda z rejestru
Zastosowanie stacji rezerwacji prowadzi do 2 ważnych cech:
Pierwsza: wykrycie zagrożenia i wykonanie kontroli są rozprowadzane- informacje przechowywane w stacji rezerwacji w każdej funkcjonalnej jednostce określają kiedy instrukcja może rozpocząć wykonywanie w tej jednostce.
-druga: wyniki są przekazywane bezpośrednio do funkcjonalnych jednostek ze stacji rezerwacji gdzie mogą być buforowane (bypassing- obejście, ominięcie).
3.
3 kroki wykonanai instrukcji:
Wydaj/wypuść - weź instrukcję z głównej kolejki instrukcji (FIFO), jeżeli jest tam pasująca stacja rezerwacji, która jest pusta, wydaj instrukcję do stacji z wartością operand, jeżeli obecnie są w rejestrze (ten krok przemianowuje/nazywa ponownie rejestry, eliminując WAW i WAW).
Wykonaj - jeżeli jedna lub więcej operand nie jest jeszcze dostępna, monitoruj dane (common data bus) podczas czekania na ich wyliczenia. Kiedy operand staje się dostępny, jest umiejscowiony do korespondującej stacji rezerwacji. Kiedy wszystkie operandy są dostępne, operacja może być wykonana (ryzyko RAW uniknięte)
Zapisz wynik- kiedy wynik jest dostępny, zapisz go na CDB (common data bus), a stamtąd do rejestrów i jakiejkolwiek stacji rezerwacji, która czeka na wynik.
Przechowalnie także zapisują dane do pamięci. Kiedy adresy i wartości danych sa dostępne, wysyłają do jednostki pamięci 1. I przechowanie jest kompletne.
4.
Dane przechowywane w stacji rezerwacji
- Op - operacja do działania na operandach źródła S1 i S2
- Qj, Qk - wartość 0 oznacza, że operand źródłowy jest już dostępny w Vj lub Vk, lub nie jest potrzebny,
-Vj, Vk - wartość operandu żródłowego, tylko jedna dla pola V lub pól Q jest ważna dla każdego operanda, dla ładunków, pole Vk jest używane aby trzymać pole offset (przesunięcia)
-A - używane, aby trzymać informację do kalkulacji adresu pamięci (ładowanie I przechowywanie), początkowo pośrednie pole jest przechowywane, po kalkulacji adresu, efektywnego adresu,
-Busy (zajęty)- oznacza, że ta stacja rezerwacji i jej towarzysząca jednostka funkcjonalna są zajęte,
- Liczba stacji rezerwacji, która zawiera operacje, której wynik powinien być przechowywany w rejestrze jest zachowany w rejestrze pola Qi,
8.
Zalety schematu Tomasulo
Dystrybucja/ rozkład logiki wykrywania zagrożenia- jeżeli liczne instrukcje czekają na jeden wynik, I każda instrukcja ma już swojego operanda, wtedy instrukcja może być zwolniona jednocześnie przez emisję na CDB (common data bus).
Eliminacja opóźnień dla zagrożeń WAW i WAR przez zmianę nazwy/przemianowanie rejestrów używających stacji rezerwacji i proces przechowyania operandów do stacji rezerwacji tak szybko, jak tylko sa dostępne.