Systemy Transputerowe
Transkrypt
Systemy Transputerowe
Systemy Transputerowe Wstęp Literatura Marian Wysocki i Bogdan Kwolek – „Obliczenia równoległe i transputery w automatyce”. Politechnika Rzeszowska im. Ignacego Łukasiewicza Rzeszów 1994. ● Logical Systems C for the Transputer: Version 89.1 User Manual. ● http://cs.smith.edu/~thiebaut/transputer/descript.html ● Historia 1980 the University of the West of England in Bristol ● 1983-84 pierwsze modele transputerów ● 1985 r firma INMOS rozpoczęła produkcję mikroprocesorów zwanych transputerami ● TRANSmiter + comPUTER = TRANSPUTER ● ● Podstawowe typy ● ● ● IMS T212 – 16-bitowy mikrokomputer mający 2 KB pamięci wewnętrznej i 4 linki, oddzielną magistralę danych i adresową. IMS M212 z procesorem jak T212 i 2 linkami. Zamiast pozostałych 2 linków wbudowano sterownik dysku. IMS T222 – odpowiednik T212 z 4 KB pamięci wewnętrznej. Podstawowe typy ● IMS T414 – 32-bitowy mikrokomputer z 2 KB pamięci wewnętrznej, mikroprogramowalnym 32-bitowym procesorem typu RISC, mikrokodem do obliczeń zmiennoprzecinkowych, wspólną, 32-bitową magistralą danych i adresową, konfigurowalnym interfejsem pamięci zewnętrznej umożliwiającym dołączenie do 4GB DRAM, SRAM lub ROM i 4 linkami. Podstawowe typy ● IMS T800 – 32-bitowy mikrokomputer z 64bitowym koprocesorem i sprzętowym wsparciem grafiki. Ma 4KB pamięci wewnętrznej oraz podobnie jak T414 wspólną magistralę danych i adresową, konfigurowalny interfejs pamięci zewnętrznej i 4 linki. Moc obliczeniowa przy 30MHz wynosi 15MIPS i 3.3 MFLOPS. Podstawowe typy ● ● T805 nowsza wersja T800 osiąga przy 30MHz, moc obliczeniową 30MIPS i 4.3MFLOPS. T9000 „najnowsze” dziecko INMOS’u przy 50MHz 200MIPS i 25MFLOPS. T414 CPU RAM Linki Interfejs pamięci T800 FPU CPU RAM Linki Interfejs pamięci budowa Transputer posiada: ● statyczną pamięć wewnętrzną ● procesor (CPU) ● układy komunikacji umożliwiające pracę linków w trybie DMA Elementy te połączone są 32-bitową magistralą wewnętrzną ● Do tej magistrali podłączony również interfejs pamięci zewnętrznej ● T800 ma dodatkowo 64-bitowy koprocesor arytmetyczny FPU (Floating Point Unit) Jednostka zmiennoprzecinkowa VCC GND CapPlus CapMinus 32-bitowy procesor 32 Reset Analyse Układy sterowania ErrorIn Error LinkSpecial 32 BootFromRom Obsługa linku ClockIn Link0Special Link123Special ProcSpeedSelect0-2 32 Interfejs linku 32 Interfejs linku 32 Interfejs linku 32 Interfejs linku zegary 32 DisableRam Pamięć wewnętrzna 4KB 32 ProcClockOut LinkIn0 LinkOut0 LinkIn1 LinkOut1 LinkIn2 LinkOut2 LinkIn3 LinkOut3 NotMemS0-4 NotMemWrB0-3 notMemRd 32 notMemRf Interfejs pamięci zewnętrznej Obsługa zdarzeń EventReq EventAck MemWait MemConfig memReq MemGranted 32 MemnotWrD0 MemnotRtD1 MemAD2-31 Układ sterowania Zawierają elementy odpowiedzialne za inicjowanie i podtrzymywanie funkcji transputera, obsługę błędów i analizę stanu. W systemie transputerowym nie jest stosowany globalny sygnał taktujący. W zamian na wejście ClockIn jest podawany sygnał o częstotliwości odniesienia 5MHz Inicjacja W celu ustaleniu stanu początkowego podajemy na Reset stan wysoki, na Analyse niski (stop procesora). Start zaczyna się wraz z opadającym zboczem Reset. Po 144 taktach ClockIn następuje konfigurowanie pamięci i uruchomienie systemu. Reset zwłoka Konfiguracja Wewnętrzna zewnętrzna zwłoka odświeżanie Uruchomie nie systemu Sterowanie Transputer może być zatrzymany tak by aktualne stany procesów zostały zachowane w celu późniejszej analizy. Podajemy wysoki poziom na Reset i Analyse. W razie arytmetycznego nadmiaru, dzielenia przez zero, przekroczenia granic pól ustawiana jest flaga błędu. Można ją też ustawić wywołując instrukcję SETERR. Błędy można wykryć wewnętrznie przez oprogramowanie lub zewnętrznie przez sygnał Error Niektóre transputery mają wejście ErrorIn. Wówczas wyjście Error jest sumą logiczną sygnału na wejściu i flagi błędu. Sygnał ProcSpeedSelect0-2 ustala szybkość procesora. 17.5, 20, 25, 30, 35 MHz Zegar W transputerze sprzętowo realizowane są dwa poziomy priorytetów, wyższy i niższy. Stosownie do tego występują dwa rejestry czasowe Timer0 dla procesów o priorytecie wyższym oraz Timer1 dla niższych. Przy częstotliwości pracy 20MHz wspomniany kwant czasowy wynosi 1 s dla rejestru Timer0 i 64 s dla Timer1. Wobec 32bitowej długości rejestrów odpowiada to cyklowi równemu około 4295s (pierwszy) i około 76 godzin (drugi). Linki ● ● ● ● ● ● Połączenie dwóch transputerów linkami wiąże się z przeprowadzeniem dwóch przewodów pomiędzy interfejsami linków Wyjście jednego łączy się z wejściem drugiego Interfejsy linków pracują niezależnie od siebie i niezależnie od procesora, tworząc kanał, który umożliwia dwukierunkową synchronizowaną, komunikację Dane przesyłane są w formie pakietów Nadawca wysyła bit startu(1) po nim jeszcze jeden bit (1), potem 8 bitów danych i bit stopu (0) Odbiorca odpowiada dwoma bitami (1) i (0) 11 8b danych 0 1 0 Pamięć Reset-Instr. Konfiguracja pamięci Pamięć zewnętrzna Wewnętrzna pamięć RAM Rejestry pomocniczne #7FFFFFFE #7FFFFF6C #80001000 #80000070 (mem start) #80000024 Event #80000020 Link3Input #8000001C Link2Input #80000018 Link1Input #80000014 Link0Input #80000010 Link3Output #8000000C Link2Output #80000008 Link1Output #80000004 Link0Output #80000000 Jest zorganizowana liniowo począwszy od ujemnej liczby #80000000 do #7FFFFFFF adres #00000000 występuje po środku. Start Systemu ● ● ● ● ● Może być dokonany przez link lub z pamięci ROM Jeżeli na BootFromRom jest podany stan wysoki to, transputer wykonuje instrukcję znajdującą się pod adresem #7FFFFFFE w pamięci zewnętrznej.Powinna to być instrukcja skoku do programu w pamięci ROM Jeżeli na BootFromRom jest podany stan niski, transputer oczekuje sygnału startu systemu z jednego z linków Jeżeli przesłany bajt > 1 to oznacza ile będzie bajtów przesłanych z tego samego linku. Zostają one zapisane w pamięci od adresu MemStart (#80000070). Po nadejściu ostatniego bajtu dane są zinterpretowane jako program natychmiast wykonywany Start systemu ● ● ● Gdy bajt kontrolny = 0, wówczas oczekuje się na 8 dalszych bajtów interpretowanych jako operacja zapisu (poke). Cztery pierwsze bajty określają wtedy adres, pod którym zostają zapisane pozostałe Gdy bajt kontrolny = 1, to cztery następne określają adres, z której komórki ma nastąpić odczyt (peek), czterech bajtów przez ten sam link Peek i Poke mogą być wykonywane dowolną ilość razy dopóki bajt kontrolny nie przyjmie wartości > 1. Organizacja Obliczeń Procesor dysponuje następującymi rejestrami: ● Rejestrem przestrzeni roboczej W, ● Rejestrem rozkazów I, ● Rejestrem operandów O, ● Stosem składającym się z rejestrów A, B, C, (trzyelementowy wierzchołek to A, gdy odkładamy coś na stos to A trafia do B, B do C) ● Czterema rejestrami: Fptr0, Fptr21, Bptr0, Bptr1, ● Dwoma rejestrami czasowymi: Timer0 i Timer1, ● Dwiema, jednobitowymi flagami: Error i HaltOnError ● Kilkoma słowami pamięci wewnętrznej do zadań specjalnych. Przestrzeń robocza ● ● ● ● ● ● ● Wraz z utworzeniem procesu rezerwowana jest pamięć robocza tego procesu. Ciąg pamięci roboczej jest zorganizowany jako stos, który rośnie w kierunku malejących adresów Rejestr przestrzeni roboczej W wskazuje najgłębiej położone słowo przestrzeni roboczej aktualnie wykonywanego procesu Adresy w rejestrze W są traktowane jako deskryptory procesów. Dwa młodsze bity charakteryzują wtedy priorytet procesu: 00 – wyższy , 01 – niższy Komórki robocze mogą być identyfikowane za pomocą nieujemnego adresu względem W Dostęp nielokalny odbywa się względem rejestru A Q i R tworzą kolejkę aktualnie gotowych do wykonania procesów o priorytecie niższym Przestrzeń robocza ● ● ● ● Wskaźnik przestrzeni roboczej pierwszego procesu w kolejce jest dostępny w rejestrze FPtr1 dla kolejki procesów o priorytecie niższym W rejestrze FPtr0 jest wskaźnik do pierwszego procesu o priorytecie wyższym Informacja dotycząca ostatniego procesu jest umieszczona w rejestrze Bptr1 (Bptr0). procesy wykorzystują do celów specjalnych także komórki o niższych adresach –1, -2, -3 Zarządzanie procesami ● ● ● Transputery mają mikroprogramowalny układ szeregowania procesów umożliwiający wieloprzetwarzanie. Dowolna ilość procesów może być wykonywana w układzie z podziałem czasu Do opisu zdefiniowanych procesów i ich stanów, dla każdego priorytetu są wykorzystywane dwie kolejki ● W jednej procesy gotowe do wykonania ● W drugiej procesy zablokowane w skutek oczekiwania na określony moment Zarządzanie procesami Procesy Aktywne Aktualnie wykonywany Oczekujący w kolejce Nie aktywne wstrzymane w związku z oczekiwaniem na wysłanie lub odbiór danych do/z innego procesu wstrzymane w związku z oczekiwaniem na moment wskazany w instrukcji opóźnienia Rozkazy rejestrów ● ● ● ● ● ● ● Rozkazy w transputerze są przedstawiane w sposób zwarty, za pomocą jednego bajtu. Do ich adresowania służy wskaźnik w rejestrze rozkazów I. Przyjmuje on tu rolę licznika rozkazów i zawsze wskazuje bajt w pamięci z następną do wykonania instrukcją. Procesor ma dwa bufory dla 8 rozkazów, z których 4 są każdorazowo pobierane z pamięci podczas jednego odczytu. 4 młodsze bity ośmiobitowych rozkazów transputera służą do przedstawienia operandów. Przy wykonywaniu instrukcji zostają one automatycznie przypisane do czterech młodszych bitów rejestru operandów. Rozbudowa operandów do 32-bitowej długości następuje w rejestrze O za pomocą specjalnych instrukcji prefix. Rozkazy Zbiór rozkazów transputera został opracowany pod kątem uproszczonego tłumaczenia occamu i efektywnej realizacji w technice VLSI. Format instrukcji ● do przedstawienia jednej instrukcji w transputerze służy jeden bajt funkcja 7 ● ● ● ● ● dane 0 Zwarta reprezentacja umożliwia efektywne dekodowanie i jest niezależna od długości słowa transputera Dzięki temu usprawniony jest też mechanizm czytania z pamięci operacyjnej Na podstawie jednego odczytu pobierane są 4 rozkazy do specjalnego bufora Na 4 bitach można oprzeć 16 instrukcji 13 z nich wykorzystywanych jest często Istnieją też 2 instrukcje prefix oraz pośrednie związane z procesami równoległymi Rozkazy prefix ● ● ● ● ● Przy wykonywaniu dowolnego rozkazu jego bity danych są ładowane do czterech najmłodszych pozycji rejestru operandów Po zakończeniu instrukcji cały rejestr operandów zostaje wyzerowany, na przyjęcie kolejnych danych. Dzieje się to dla wszystkich instrukcji za wyjątkiem prefix i negativ prefix Po przesłaniu swoich danych do rejestru O, następuje przesunięcie tych danych w rejestrze o 4 pozycje w lewo, robiąc miejsce na dane z następnej instrukcji negativ prefix robi to samo tylko wcześniej wypełnia rejestr jedynkami Rozkazy prefix Przykład: Gdy chcemy mieć wartość 1536 (#653) można wykonać to w ten sposób. Prefix #6 prefix #5 ładuj #3 Jak byśmy chcieli wartość –105 (#FFFFFF97) to wystarczy negativ prefix #9 ładuj #7 Funkcje pośrednie ● ● ● Funkcja operate też jest kodowana za pomocą 4 bitów jej operand w rejestrze O jest interpretowany jako kod operacji na wartościach zapamiętanych na stosie Do rozszerzenia operandów instrukcji , może być wykorzystywana funkcja prefix Np. Wykonanie funkcji AND o kodzie #46 może być zrealizowane przez polecenie prefix (#2) z operandem #4 i operate (#F) z operandem #6.Czyli #24#F6 spowoduje wykonanie instrukcji AND. (na bitach rejestru A i B a wynik umieszczony w A). Komunikacja między procesami ● ● ● ● ● Komunikacja ta odbywa się przez kanały, zewnętrzne lub wewnętrzne Jest to zależne czy procesy wykonywane są na tym samym transputerze czy na wielu Kompilator przypisuje identyfikowane z kanałem słowo w pamięci Kanał jest inicjalizowany wartością MinInt, oznacza to że żaden z procesów nie jest gotowy do komunikacji. Po skończonej komunikacji ta sama wartość musi być ustawiona ponownie Komunikacja przez kanały wewnętrzne ● ● W celu przygotowania wyjścia przez kanał wewnętrzny, do rejestru ● A trafia długość komunikatu w bajtach, ● do B adres kanału, ● C otrzymuje adres początku wiadomości Jeżeli kanał zawiera MinInt, to proces odbierający nie jest gotowy rejestry A B N C długość komunikatu adres kanału adres wiadomości proces P MinInt kanał Komunikacja przez kanały wewnętrzne ● ● Proces nadawczy pozostawia więc w kanale adres swej pamięci roboczej i uwalnia procesor dla następnego aktywnego procesu w komórce –1 pamięci roboczej zostaje zapisany wskaźnik instrukcji, a w komórkach –2 i –3 informacje o przesyłanych danych przestrzeń robocza adres następnej instrukcji długość komunikatu adres wiadomości proces P -1 -2 3 P kanał Komunikacja przez kanały wewnętrzne ● Drugi proces ma dostęp do danych, wykorzystując zawartość komórki o adresie w rejestrze B adres następnej instrukcji długość komunikatu adres wiadomości przestrzeń robocza procesu P A -1 -2 P kanał B N C długość komunikatu adres kanału adres wiadomości proces Q 3 Komunikacja przez kanały wewnętrzne ● Po skończeniu komunikacji i ustawieniu procesu pierwszego w kolejce procesów aktywnych, w komórce –2 przestrzeni roboczej procesu nadawczego została zapisana informacja wykorzystywana przy grupowaniu procesów aktywnych i wykonywaniu procesów gotowych adres następnej instrukcji lista przestrzeń robocza procesu P MinInt -1 -2 kanał Komunikacja przez kanały wewnętrzne ● ● Po skończeniu komunikacji i ustawieniu procesu pierwszego w kolejce procesów aktywnych, w komórce –2 przestrzeni roboczej procesu nadawczego została zapisana informacja wykorzystywana przy grupowaniu procesów aktywnych i wykonywaniu procesów gotowych Gdyby proces odbierający Q był gotowy do komunikacji w momencie zgłoszenia przez P chęci nadawania, wówczas w słowie kanału znajdowałby się adres przestrzenie roboczej Q i transmisja była by możliwa na podstawie danych w rejestrach A, B , C procesu P.Liczbę i położenie danych określałby bowiem rejestry A i C a adres w B. Komunikacja przez kanały wewnętrzne Kanały stanowią połączenia typu punkt-punkt ● Gdyby dwa procesy chciały odczytywać dane przez ten sam kanał, wówczas proces który zgłosił by się później, interpretowałby drugi z procesów jako nadawczy, co spowodowałoby niepoprawne skopiowanie danych. ● Komunikacja przez kanały zewnętrzne ● A B N C Przy komunikacji przez link, liczba przesyłanych bajtów, adres źródła (przeznaczenia) oraz adres przestrzeni roboczej powinny być przesłane do interfejsu linku i umieszczone tam w przeznaczonych do tego rejestrach. rejestry rejestry długość komunikatu długość komunikatu adres kanału interfejs linku interfejs linku adres kanału adres wiadomości adres wiadomości proces P proces Q transputer 1 transputer 2 kanał zewnętrzny A B N C Komunikacja przez kanały zewnętrzne przestrzeń robocza adres nast. instrukcji przestrzeń robocza -1 interfejs linku interfejs linku P Q adres adres długość długość -1 proces P adres nast. instrukcji proces Q transputer 1 transputer 2 kanał zewnętrzny Komunikacja przez kanały zewnętrzne ● ● ● ● Proces zostaje na czas transmisji deaktywowany Nadzór nad przebiegiem transmisji przejmuje interfejs linku Mechanizm synchronizacji pozwala rozpoznać moment kiedy interfejsy po obu stronach będą gotowe do transmisji. Przesyłanie danych odbywa się na zasadzie DMA Komunikacja przez kanały zewnętrzne ● Po zakończeniu transmisji oba procesy są reaktywowane na podstawie zapisanych w rejestrach interfejsów linku adresów. przestrzeń robocza adres nast. instrukcji lista przestrzeń robocza interfejs linku interfejs linku -1 -1 -2 -2 adres nast. instrukcji lista proces Q proces P transputer 1 transputer 2 kanał zewnętrzny Wejście zdarzeń ● ● ● ● ● Transputer jest wyposażony dodatkowo w interfejs pomiędzy zdarzeniami zewnętrznymi a procesem wewnętrznym. Odbywa się przez wejście EventReq i Wyjście EventAck Gdy zdarzenie zewnętrzne ustawi poziom wysoki na EventReq to kanał zdarzeń jest gotowy do skomunikowania się z procesem Gdy proces też jest gotowy to procesor ustawia na poziom wysoki również EventAck, a proces jeżeli oczekiwał na zdarzenie to zostaje reaktywowny EventAck wraca do stanu niskiego gdy EventReq wróci. Jednak EventReq nie może wrócić zanim EventAck nie będzie w stanie wysokim