Jednostka centralna: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
(Nie pokazano 5 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
== Charakterystyka ogólna ==
Podstawowe cechy jednostki centralnej:


* długość słowa: 16 bitów numerowanych od 0 do 15 (od najbardziej, do najmniej znaczącej pozycji)
* długość słowa: 16 bitów numerowanych od 0 do 15 (od najbardziej, do najmniej znaczącej pozycji) (zobacz: [[Postać przetwarzanych informacji]])
* osiem 16-bitowych rejestrów uniwersalnych
* osiem 16-bitowych [[Rejestry i wskaźniki|rejestrów uniwersalnych]]
* 32-bitowy rejestr zgłoszeń [[Przerwania|przerwań]] pogrupowanych w 11 poziomów obsługi z możliwością maskowania przerwań na 10 poziomach
* 32-bitowy rejestr zgłoszeń [[Przerwania|przerwań]] pogrupowanych w 11 poziomów obsługi z możliwością maskowania przerwań na 10 poziomach
* zegar czasu rzeczywistego (opcjonalnie)
* zegar czasu rzeczywistego (opcjonalnie)
* automatyczne ładowanie programu (bootstrap)
* [[Wczytywanie binarne|automatyczne ładowanie programu]] (bootstrap)
* układ alarmu zasilania i automatyczny restart programu
* układ alarmu zasilania i automatyczny restart programu
* możliwość pracy dwuprocesorowej
* możliwość pracy dwuprocesorowej
* 122 rozkazy
* [[Lista rozkazów|121 rozkazów]] (zobacz również: [[Skorowidz kodów rozkazów]])
* arytmetyka binarna uzupełnieniowa do swóch
* arytmetyka binarna uzupełnieniowa do dwóch
* trzy rodzaje modyfikacji rozkazu: B-modyfikacja, D-modyfikacja i PRE-modyfikacja
* [[Arytmometr Wielokrotnej Precyzji]]
* trzy rodzaje modyfikacji rozkazu: B-modyfikacja, D-modyfikacja i PRE-modyfikacja (zobacz: [[Wykonanie rozkazu]])
* czas cyklu pamięci FJP 1100 nsek ±10%
* czas cyklu pamięci FJP 1100 nsek ±10%
* programowy podział pamięci na bloki użytkowe
* [[Pamięć operacyjna|programowy podział pamięci]] na bloki użytkowe
 
==Postać danych==
 
Reprezendacja danych zależy od ich rodzaju:
 
* '''Informacja logiczna''' - zajmuje jedno słowo i jest ciągiem 16 niezależnych bitów.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
|    ||  ||  ||  ||  ||  ||  ||  ||  ||  ||    ||    ||    ||    ||    ||   
|}
 
* '''Znaki alfanumeryczne''' - umieszczane są po dwa w jednym 16-bitowym słowie. Format ich zapisu zależy od oprogramowania. Standardowo używany jest kod ISO-7.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| colspan="8" | Znak 1 || colspan="8" | Znak 2
|}
 
* '''Liczba stałoprzecinkowa krótka''' - zajmuje jedno słowo i traktowana jest jako liczba całkowita. Zapisana jest w notacji uzupełnieniowej do dwóch.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| Zn || colspan="15" | Uzupełnienie
|}
 
* '''Liczba stałoprzecinkowa długa''' - zajmuje dwa słowa i traktowana jest jako liczba całkowita. Zapisana jest w notacji uzupełnieniowej do dwóch.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15 || width=15 | 16 || width=15 | 17 || width=15 | 18 || width=15 | 19 || width=15 | 20 || width=15 | 21 || width=15 | 22 || width=15 | 23 || width=15 | 24 || width=15 | 25 || width=15 | 26 || width=15 | 27 || width=15 | 28 || width=15 | 29 || width=15 | 30 || width=15 | 31
|-
| Zn || colspan="31" | Uzupełnienie
|}
 
* '''Liczba zmiennoprzecinkowa''' - zajmuje trzy słowa. Jako standard przyjmuje się postać znormalilzowaną. Mantysa zajmuje pierwszych 40 bitów i traktowana jest jako liczba zaprzecinkowa w notacji uzupełnieniowej. Cecha zajmuje ostatnich 8 bitów i traktowana jest jako liczba całkowita w notacji uzupełnieniowej do dwóch.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15 || width=15 | 16 || width=15 | 17 || width=15 | 18 || width=15 | 19 || width=15 | 20 || width=15 | 21 || width=15 | 22 || width=15 | 23 || width=15 | 24 || width=15 | 25 || width=15 | 26 || width=15 | 27 || width=15 | 28 || width=15 | 29 || width=15 | 30 || width=15 | 31 || width=15 | 32 || width=15 | 33 || width=15 | 34 || width=15 | 35 || width=15 | 36 || width=15 | 37 || width=15 | 38 || width=15 | 39 || width=15 | 40 || width=15 | 41 || width=15 | 42 || width=15 | 43 || width=15 | 44 || width=15 | 45 || width=15 | 46 || width=15 | 47
|-
| Zn || colspan="39" | Uzupełnienie mantysy || Zn || colspan=8 | Cecha
|}
 
 
==Postać rozkazów==
 
W zależności od postaci, rozkazy dzielą się na cztery grupy. Postać rozkazów z każdej grup jest różna:
 
* '''Rozkazy w podstawowej postaci''' - zajmują jedno słowo maszynowe. Poszczególne pola zawierają:
** kod operacji (pozycja 0÷5) - podstawowy kod operacji
** bit D (pozycja 6) - bit adresowania pośredniego lub przedłużenie kodu operacji
** pole A (pozycja 7÷9) - numer rejestru uniwersalnego lub przedłużenie kodu operacji
** pole B (pozycja 10÷12) - numer rejestru uniwersalnego służącego do B-modyfikacji argumentu lub przedłużenie kodu operacji
** pole C (pozycja 13÷15) - numer rejestru uniwersalnego lub przedłużenie kodu operacji
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| colspan="6" | Kod operacji || D || colspan="3" | A || colspan="3" | B || colspan="3" | C
|}
 
*''' Rozkazy z argumentem bezpośrednim normalnym''' - zajmują dwa słowa maszynowe. Argument zajmuje następne słowo za słowem podstawowym rozkazu. Znaczenie pól jest takie samo jak w przypadku rozkazu w postaci podstawowej, z tym, że pole C=0
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15 || width=15 | 16 || width=15 | 17 || width=15 | 18 || width=15 | 19 || width=15 | 20 || width=15 | 21 || width=15 | 22 || width=15 | 23 || width=15 | 24 || width=15 | 25 || width=15 | 26 || width=15 | 27 || width=15 | 28 || width=15 | 29 || width=15 | 30 || width=15 | 31
|-
| colspan="6" | Kod operacji || D || colspan="3" | A || colspan="3" | B || colspan="3" | 000 || colspan="16" | argument bezpośredni
|}
 
* '''Rozkazy z argumentem bezpośrednim krótkim''' - krótki argument 7-bitowy znajduje się na pozycjach D, B i C (bit D wskazuje znak argumentu). Pozostałe pola mają znaczenie jak w przypadku rozkazu w postaci podstawowej
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| colspan="6" | Kod operacji || Zn || colspan="3" | A || colspan="6" | Wartość arg.
|}
 
* '''Rozkazy z argumentem bezpośrednim bajtowym''' - Pola 0÷7 zawierają kod operacji wraz z jego przedłużeniem. Pola 8÷15 zawierają 8-bitowy argument bezpośredni.
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| colspan="8" | Kod operacji || colspan="8" | Arg. bezpośredni
|}
 
==Postać adresów==
 
* '''Adres bajtu''' - 16-bitowa liczba całkowita z przedziału 0÷65535. Najmłodszy bit wskazuje: 0 - lewy bajt, 1 - prawy bajt
 
{| class="wikitable" style="text-align: center;"
| width=15 | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| colspan="15" | Adres słowa || b
|}
 
* '''Adres słowa''' - 15-bitowa liczba całkowita z przedziału 0÷32767
 
{| class="wikitable" style="text-align: center;"
| width="15" | 0 || width=15 | 1 || width=15 | 2 || width=15 | 3 || width=15 | 4 || width=15 | 5 || width=15 | 6 || width=15 | 7 || width=15 | 8 || width=15 | 9 || width=15 | 10 || width=15 | 11 || width=15 | 12 || width=15 | 13 || width=15 | 14 || width=15 | 15
|-
| 0 || colspan="15" | Adres słowa
|}

Aktualna wersja na dzień 18:24, 3 sie 2014

Podstawowe cechy jednostki centralnej: