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