|
|
(Nie pokazano 6 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]]) |
| * 8 16-bitowych rejestrów uniwersalnych | | * osiem 16-bitowych [[Rejestry i wskaźniki|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 | | * 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 | | * arytmetyka binarna uzupełnieniowa do dwóch |
| * trzy rodzaje modyfikacji rozkazu
| | * [[Arytmometr Wielokrotnej Precyzji]] |
| | | * trzy rodzaje modyfikacji rozkazu: B-modyfikacja, D-modyfikacja i PRE-modyfikacja (zobacz: [[Wykonanie rozkazu]]) |
| ==Postać danych==
| | * czas cyklu pamięci FJP 1100 nsek ±10% |
| | | * [[Pamięć operacyjna|programowy podział pamięci]] na bloki użytkowe |
| 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
| |
| |}
| |