Documente Academic
Documente Profesional
Documente Cultură
Tranzistor – procesor
Transputer – sistem multiprocesor
Aşa cum reiese din fig. 6.1, un transputer este compus dintr-un procesor,
memorie şi un sistem de comunicaţie interconectate printr-o magistrală internă
de date 32 de biţi. Magistrala este accesibilă şi din exterior, prin intermediul unui
bloc de interfaţare cu memoria externă. Aceasta extinde capacitatea limitată a
memoriei interne (4KB) până la 4 GB (magistrală de adrese de 32 de linii).
Reset
Analyse
Error Procesor
BootFromROM Servicii de (CPU)
ClockIn sistem
VCC
GND
Interfaţă de
legătură Link0In
RAM (LINK) Link0Out
Interfaţă de
Link3In
legătură
(LINK) Link3Out
În mod sismilar, FPU conţine o stivă hardware cu regiştrii AF, BF şi CF. Adresele
variabilelor în virgula mobilă sunt formate pe stiva CPU, apoi valorile variabilelor
în virgula mobilă sunt transferate între locatia de memorie adresată şi stiva FPU
sub controlul CPU.
Stiva CPU este folosită pentru manipularea adreselor variabilelor în virgulă
mobilă, ceea ce face ca lungimea cuvântului CPU să fie independentă de
lungimea cuvântului FPU.
Workspace Pointer – indică zona în care sunt stocate variabilele locale ale
procesului aflat în execuţie;
A Variabile locale
B
C Program
WPtr
IPtr
Operand
Observaţie:
Fiecare instrucţiune este formată dintr-un singur octet, împărţit în două câmpuri
de 4 biţi:
- cei mai semnificativi 4 biţi reprezintă codul funcţiei (opcodul);
- cei mai puţin semnificativi 4 biţi – data asociată instrucţiunii.
D7 ………… D4 D3 ………… D0
Funcţia Data
Treisprezece dintre acestea sunt denumite funcţii directe şi sunt utilizate pentru
a codifica cele mai importante instrucţiuni realizate de orice procesor:
Două din cele trei coduri de funcţii care au mai rămas permit operandului unei
instrucţiuni să aibă o lungime extinsă:
Toate instrucţiunile sunt executate prin încărcarea celor 4 biţi ai câmpului de date
în cei mai puţin semnificativi 4 biţi ai registrului Operand, care este apoi utilizat
ca operand al instrucţiunii. Toate funcţiile, cu excepţia celor de tip prefix, se
termină cu ştergerea registrului Operand, pregătindu-l astfel pentru următoarea
instrucţiune.
D7 ………… D4 D3 ………… D0
Funcţia Data
Operand register
Instrucţiunea pfix încarcă cei 4 biţi de date ai săi în registrul Operand, apoi
deplasează continutul acestuia spre stânga cu 4 poziţii.
Funcţii indirecte
Codul de funcţie rămas este opr (operate). El face ca operandul său să fie
interpretat ca o operaţie asupra valorilor din stivă. Aceasta permite ca alte 16
operaţii (funcţii indirecte) să fie codificate într-o instrucţiune de 1 octet.
În acelaşi timp, instrucţiunile de tip prefix pot fi utilizate pentru a extinde
operandul unei instrucţiuni opr la fel ca şi pentru celelalte instrucţiuni. Rezultă
astfel un număr foarte mare de operaţii care se pot codifica folosind această
reprezentare.
Codificarea funcţiilor indirecte a fost aleasă astfel încât cele mai frecvente
operaţii sunt reprezentate fără utilizarea de instrucţiuni de tip prefix. Acestea sunt
operaţii aritmetice, logice şi de comparare, cum ar fi:
add
exclusive or
greather than
Cele mai puţin frecevente operaţii care apar au reprezentări care necesită o
singură operaţie de tip prefix. În această categorie intră operaţiile de
încărcare/descărcare a stivei FPU, de operare asupra valorilor din această stivă,
precum şi alte operaţii cum ar fi cele de prelucrare grafică, de recunoaştere de
forme şi de implementare a codurilor corectoare de erori.
Activ:
- în curs de execuţie;
- în aşteptarea accesului la timpul de execuţie al procesorului.
Inactiv:
- în aşteptarea unui mesaj de la o intrare;
- în aşteptarea terminării transmisiei unui mesaj;
- în aşteptarea expirării unui interval de timp.
Front P
Back
Q
A
R
B
C S
WPtr
IPtr
Operand
Un proces este executat până când nu mai poate continua deoarece aşteaptă un
mesaj de la un alt proces, aşteaptă terminarea transmisiei sau expirarea unui
interval de timp. De fiecare dată când un proces devine inapt pentru a continua
execuţia, pointerul de instrucţiuni este salvat în spatiul de lucru şi este extras din
listă următorul proces. Timpul de comutare între cele două procese este foarte
mic deoarece informaţia de stare care trebuie salvată este foarte redusă.
start process
end process
Când este executată o structură paralelă, sunt folosite instrucţiuni start process
pentru a crea procesele concurente necesare. O instrucţiune start process
crează un nou proces prin adăugarea unui nou spaţiu de lucru la sfârşitul listei,
permiţând noului proces concurent să fie executat împreună cu cele aflate deja
în listă.
Procesele comunică între ele prin intermediul canalelor. Comunicaţia este punct-
la-punct, sincronizată şi nebuferizată. De aceea, un canal nu are nici coadă de
procese, nici coadă de mesaje şi nici buffer de mesaje.
input message
output message
Comunicaţia are loc atunci când ambele procese, transmiţător şi receptor, sunt
pregătite. Procesul care devine primul gata trebuie să aştepte până când şi cel
de-al doilea este pregătit pentru transfer.
În orice moment un canal intern conţine fie identificatorul unui proces, fie
valoarea specială „empty”. Canalul este iniţializat cu „empty” înainte de a fi
utilizat.
Când un mesaj este trecut prin canal, identificatorul primului proces care este
pregătit este memorat în canal şi procesorul începe să execute următorul proces
din lista de aşteptare.
Când al doilea proces devine gata, mesajul este copiat, procesul în aşteptare
este reintrodus în lista de aşteptare, iar canalul este resetat la starea iniţială. Nu
contează care dintre procese (transmiţător sau receptor) a devenit primul gata.
Canalul CH şi procesul
P CH Q
P rămân în această
Workspace stare până când un al
A: Count
doilea proces, Q,
Next Instr. P B: Channel execută o instrucţiune
Pointer C: Pointer de intrare pe acelaşi
canal, CH.
P CH
Workspace
Mesajul este copiat, procesul în
Next Instr. Empty aşteptare P este reintrodus în lista
de procese active, iar canalul CH
List este adus în starea iniţială.
Comunicaţia pe canale externe
A: Count
B: Channel
C: Pointer
Next Instr. P
Pointer
Count
P Q
L
Workspace Registre
A: Count
Next Instr. P B: Channel
Pointer C: Pointer
Count
Mesajul este acum copiat prin intermediul legăturii L, după care spaţiile de lucru
ale proceselor P şi Q se reîntorc in listele corespunzătoare de procese active.
P Q
L
Workspace Workspace
6.6. Timerul
6.7. Alternative
Procesul va fi apoi relansat atunci când oricare dintre acestea devine gata.
64 bit FPU
Reset
Analyse
Error 32 bit
BootFromROM System CPU
ClockIn Services
VCC
GND
ProcSpeedSelect0÷2
Link LinkSpecial
Services Link0Special
Timers
Link123Special
Reset – După ce Vcc devine validă, această linie trebuie menţinută activă cel
puţin 10 ms. Frontul descrescător al semnalului Reset iniţializează transputerul,
declanşează secvenţa de configurare a memoriei şi lansează rutina de
bootstrap. Pe durata activării liniei Reset, ieşirile link-urilor seriale sunt forţate în
“0”, iar intrările link-urilor şi EventReq trebuie menţinute în “0”. Accesul la
memorie nu poate avea loc pe durata resetării, dar poate să apară ulterior, chiar
şi înainte de bootstrap.
Reset
Boot-area transputerului
Primele instrucţiuni pe care le execută transputerul pot fi extrase dintr-o
memeorie ROM sau programul de bootstrap poate fi încărcat printr-o legătură
serială.
Dacă primul octet recepţionat (octetul de control) este >1, atunci se consideră că
acesta reprezintă numărul octeţilor secvenţei de bootstrap care vor urma să vină.
Pe măsură ce aceştia sunt recepţionaţi, sunt depuşi în memoria internă,
începând cu adresa MemStart, ca un proces de prioritate low. Spaţiul de
memorie de imediat după secvenţa de cod încărcată va fi considerat implicit
drept spaţiu de lucru pentru acest prim proces. Un octet care soseşte pe un alt
link după recepţionarea octetului de control pe linkul de boot sau pe linkul de
boot după ultimul octet al secvenţei de bootstrap va fi reţinut şi nu se va
transmite nici o confirmare până când nu va fi solicitat de un proces.
Analyse
Dacă este activată linia Analyse atunci când transputerul execută programul de
aplicaţie, el se va opri automat la următoarea intervenţie a planificatorului de
procese. Din momentul activării liniei Analyse, transputerul se va opri după 3
cuante de timp ale planificatoruluide taskuri plus timpul necesar pentru orice
proces de prioritate ridicată pentru a se termina.
Error, ErrorIn
Error flag este un indicator de condiţie intern al transputerului, care poate indica,
spre exemplu, o depăşire la o operaţie aritmetică, o încercare de împărţire prin 0,
depăşirea limitelor la accesul datelor dintr-un tabel, sau poate fi setat prin
program.
Odată setat, el poate fi şters numai prin execuţia instrucţiunii testerr. Acest flag
nu este şters prin resetarea transputerului, , astfel încât orice transputer la care a
apărut o eroare poate fi analizat „post-mortem”.
O altă metodă de tratare a erorilor este cea în care procesul la care a apărut o
eroare sau transputerul respectiv să oprească întreaga reţea. Aceasta se poate
face prin înlănţuirea pinilor ErrorIn şi Error între transputere şi aplicarea liniei
Error a transputerului final la intrarea EventReq a unui transputer master,
programat adecvat. Acesta din urmă va folosi funcţia de tip Analyse pentru a
depana eroarea.
Transputer
Master Latch
Event
T805 are 4KB de memorie SRAM integrată pe cip, utilizată pentru transferuri
rapide de date. Fiecare ciclu se acces la memorie durează numai un ciclu
procesor (o periadă a semnalului la linia ProcClockOut).
În plus, T805 poate accesa o memorie externa de până la 4 GB. Memoria internă
şi cea esterna fac parte din acelaşi spaţiu liniar de adresare. Memoria internă
pate fi dezactivată prin activarea liniei DisableIntRam.
Memoria interna începe la adresa cea mai mică (în reprezentare ca întreg cu
semn, deci la cea mai „negativă” adresă): 8000 0000h şi se întinde până la
adresa 8000 0FFFh. Memoria la care are acces utilizatorul începe la adresa
8000 0070h (numită anterior şi MemStart).
Memoria externă începe la adresa 8000 1000h şi se întinde, prin 0000 0000h,
până la 7FFF FFFFh. Datele de configurare a memoriei şi codul de bootstrap din
ROM trebuie să se afle în vârful spaţiului de adrese „pozitiv”, începând de la
7FFF FFF6h şi, respectiv, 7FFF FFFEh. Spaţiul de adrese situat imediat
dedesubt este utilizat de obicei pentru memoria ROM.
Rezervat
#8000 0048
EregIntSaveLoc #8000 0044
STATUSIntSaveLoc
CregIntSaveLoc
BregIntSaveLoc
AregIntSaveLoc
IPtrIntSaveLoc
WdescIntSaveLoc #8000 002C
TPtrLoc1 #8000 0028
TPtrLoc0 #8000 0024
Event #8000 0020
Link3Input
MemAD24÷31
MemConfig Column
MemAD16÷23
MUX
Address
Row/Column
Latch
MemAD8÷15
MemNotWrD0
MemNotRfD1
MemAD2÷7
MemNotWrD0
MemNotRfD1
MemAD2÷31
MemAD11÷9
MemAD2÷10
MemAD5