Jednostka centralna: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
Linia 13: Linia 13:
* czas cyklu pamięci FJP 1100 nsek ±10%
* czas cyklu pamięci FJP 1100 nsek ±10%
* programowy podział pamięci na bloki użytkowe
* 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
|}

Wersja z 12:45, 9 wrz 2012

Charakterystyka ogólna

  • długość słowa: 16 bitów numerowanych od 0 do 15 (od najbardziej, do najmniej znaczącej pozycji)
  • osiem 16-bitowych rejestrów uniwersalnych
  • 32-bitowy rejestr zgłoszeń przerwań pogrupowanych w 11 poziomów obsługi z możliwością maskowania przerwań na 10 poziomach
  • zegar czasu rzeczywistego (opcjonalnie)
  • automatyczne ładowanie programu (bootstrap)
  • układ alarmu zasilania i automatyczny restart programu
  • możliwość pracy dwuprocesorowej
  • 122 rozkazy
  • arytmetyka binarna uzupełnieniowa do swóch
  • trzy rodzaje modyfikacji rozkazu: B-modyfikacja, D-modyfikacja i PRE-modyfikacja
  • czas cyklu pamięci FJP 1100 nsek ±10%
  • programowy podział pamięci na bloki użytkowe