Pamięć operacyjna

Z MERA 400 wiki
Skocz do: nawigacja, szukaj

Organizacja fizyczna pamięci

Pamięć operacyjna MERY-400 dzieli się na dwa podstawowe obszary: systemowy i użytkowy. Fizycznie obszary zbudowane są z modułów konstrukcyjnych o pojemności 32k słów, w których wyróżnia się segmenty o pojemności 4k słów.

Obszar systemowy przeznaczony jest dla systemu operacyjnego i tylko on ma dostęp do zapisanych w nim informacji. Ma on numer 0 i rozmiar 4k lub 8k słów. W przypadku dwuprocesorowej konfiguracji maszyny, każdy z procesorów dysponuje własnym blokiem pamięci systemowej w ramach tego samego obszaru 32k słów. Istnieje również możliwość rozszerzenia obszaru pamięci systemowej do 32k. Takie rozszerzenie jest wtedy dostępne dla obu procesorów (jak pamięć użytkowa). Bloki systemowe dostępne są dla procesorów zawsze.

Obszar użytkowy przeznaczony jest dla programów użytkowych. Moduły pamięci obszaru użytkowego mają numery fizyczne od 1 do 15 i pojemności od 4 do 32k słów (z przyrostem co 4k). System operacyjny może korzystać z dowolnego z bloków w pamięci użytkowej, jednak dostępne są one dopiero po programowym zorganizowaniu pamięci.

Programowy podział pamięci

Obszar użytkowy musi przed użyciem zostać zorganizowany przez system operacyjny na drodze programowej. Operacja ta przypisuje logicznym numerom bloków (NB) fizyczne fragmenty pamięci.

W modułach pamięci o pojemności 32k słów każdy organizowane są na drodze programowej bloki pamięci o pojemności od 4k do 32k słów z przyrostem co 4k. Każdemu modułowi jest nadawany podczas jego instalacji numer (za pomocą zworki na pakiecie pamięci), według którego następuje wybranie modułu przy programowym organizowaniu pamięci. W ramach każdego modułu zrealizowanych jest osiem segmentów po 4k, którym przydziela się numer bloku (NB) i adres w bloku (AB), zapamiętywane w rejestrze adresu logicznego (RAL) segmentu pamięci. 8-bitowy adres logiczny wskazuje więc jednoznacznie segment w ramach całej pamięci operacyjnej.

Programy użytkowe adresują później pamięć używając 4-bitowego numeru bloku (NB) i 16-bitowego adresu w ramach bloku (ADRES). Z punktu widzenia organizacji pamięci, 4-bitowy numer bloku wraz z pierwszymi 4 bitami adresu określają 4k segment, do którego skierowane jest żądanie, a pozostałe 12 bitów adresu określają pozycję w segmencie.

Pamiec podzial.png

Programowy podział pamięci dokonywany jest rozkazem OU. Zawartość argumentów rozkazu OU dla programowego podziału pamięci jest następująca:

Na podstawie pierwszego argumentu (w rejestrze określonym polem A rozkazu) przydziela się numer bloku (NB) i adres w bloku (AB), i zapisuje w rejestrze adresu logicznego, który wybierany jest drugim argumentem. Numer bloku i adres w bloku określany jest jako adres logiczny. Ponieważ segment ma zawsze obszar 4k słów, przy dokonywaniu podziału programowego wpisuje się tylko cztery najstarsze pozycje adresu w bloku.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
AB - NB

Na podstawie drugiego argumentu (argument normalny N) jest określane:

  • skierowanie rozkazu OU do pamięci operacyjnej (bit 15=1),
  • wybór modułu pamięci (MP) według jego numeru,
  • wybór rejestru adresu logicznego (RAL).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- RAL MP 1

Programowy podział pamięci pozwala efektywnie wykorzystać pamięć operacyjną minikomputera, dzięki możliwości przydzielenia programom bloków o rozmiarach odpowiadających ich potrzebom.

Przykład podziału pamięci

W 32k module pamięci o numerze 1 chcemy zorganizować 4 bloki o rozmiarach: 12k, 4k, 8k i 8k, i kolejnych numerach: 1, 2, 3 i 4. Zawartości argumentów rozkazów OU, które należy wykonać są następujące:

  • Utworzenie bloku 1
    • NB=1, AB=0, MP=1, AL=0
    • NB=1, AB=1, MP=1, AL=1
    • NB=1, AB=2, MP=1, AL=2
  • Utworzenie bloku 2
    • NB=2, AB=0, MP=1, AL=3
  • Utworzenie bloku 3
    • NB=3, AB=0, MP=1, AL=4
    • NB=3, AB=1, MP=1, AL=5
  • Utworzenie bloku 4
    • NB=4, AB=0, MP=1, AL=6
    • NB=4, AB=1, MP=1, AL=7