Zmiana banku - Bank switching

Hipotetyczna mapa pamięci z przełączaniem banków dla procesora, który może adresować tylko 64 KB. Ten schemat pokazuje 200 KB pamięci, z czego tylko 64 KB może być dostępne w dowolnym momencie przez procesor. System operacyjny musi zarządzać operacją przełączania banków, aby zapewnić, że wykonywanie programu może być kontynuowane, gdy część pamięci nie jest dostępna dla procesora.

Przełączanie banków to technika stosowana w projektowaniu komputerów w celu zwiększenia ilości użytecznej pamięci ponad ilość bezpośrednio adresowaną przez instrukcje procesora . Może być używany do konfiguracji systemu w różny sposób w różnych momentach; na przykład pamięć ROM wymagana do uruchomienia systemu z dyskietki może zostać wyłączona, gdy nie jest już potrzebna. W systemach gier wideo przełączanie banków umożliwiło tworzenie większych gier do grania na istniejących konsolach.

Przełączanie banków zostało zapoczątkowane w systemach minikomputerowych . Wiele nowoczesnych mikrokontrolerów i mikroprocesorów wykorzystuje przełączanie banków do zarządzania pamięcią o dostępie swobodnym , pamięcią nieulotną, urządzeniami wejścia-wyjścia i rejestrami zarządzania systemem w małych systemach wbudowanych . Technika była powszechna w 8-bitowych systemach mikrokomputerowych . Przełączanie banków może być również użyte do obejścia ograniczeń szerokości szyny adresowej, gdzie pewne ograniczenia sprzętowe uniemożliwiają proste dodawanie większej liczby linii adresowych, oraz do obejścia ograniczeń w ISA , gdzie generowane adresy są węższe niż szerokość szyny adresowej. Niektóre mikroprocesory zorientowane na sterowanie używają techniki przełączania banków w celu uzyskania dostępu do wewnętrznych we/wy i rejestrów kontrolnych, co ogranicza liczbę bitów adresu rejestru, które muszą być użyte w każdej instrukcji.

W przeciwieństwie do zarządzania pamięcią przez stronicowanie , dane nie są wymieniane z urządzeniem pamięci masowej, takim jak pamięć dyskowa . Dane pozostają w spoczynku w obszarze pamięci, który nie jest obecnie dostępny dla procesora (chociaż może być dostępny dla wyświetlacza wideo, kontrolera DMA lub innych podsystemów komputera) bez użycia specjalnych instrukcji prefiksu.

Technika

Przełączanie banków można traktować jako sposób na rozszerzenie przestrzeni adresowej instrukcji procesora o pewien rejestr. Przykłady:

  • System podążający za procesorem z 12-bitowym adresem ma 15-bitową szynę adresową, ale nie ma możliwości bezpośredniego określenia trzech starszych bitów na szynie adresowej. Do dostarczenia tych bitów można wykorzystać wewnętrzne rejestry bankowe.
  • Kolejny system do procesora z 15-bitowym adresem ma 18-bitową szynę adresową, ale starsze instrukcje mają tylko 15 bitów adresu; wewnętrzne rejestry bankowe mogą być użyte do dostarczenia tych bitów. Niektóre nowe instrukcje mogą wyraźnie określać bank.
  • Procesor z 16-bitową zewnętrzną szyną adresową może adresować tylko 2 16  = 65536 lokalizacji pamięci. Jeśli do systemu dodano zewnętrzny zatrzask , można by go użyć do kontrolowania, do którego z dwóch zestawów urządzeń pamięci, każdy z 65536 adresami, można uzyskać dostęp. Procesor może zmienić aktualnie używany zestaw, ustawiając lub usuwając bit zatrzasku.
    Zatrzask może być ustawiony lub wyczyszczony przez procesor na kilka sposobów; określony adres pamięci może być dekodowany i wykorzystywany do sterowania zatrzaskiem lub, w procesorach z oddzielnie dekodowanymi adresami I/O , adres wyjściowy może być dekodowany. Kilka bitów sterujących przełączaniem banków może być zebranych w rejestrze, w przybliżeniu podwajając dostępne przestrzenie pamięci z każdym dodatkowym bitem w rejestrze.
    Ponieważ zewnętrzny zatrzask (lub rejestr) wyboru banku nie jest bezpośrednio połączony z licznikiem programu procesora, nie zmienia on automatycznie stanu po przepełnieniu licznika programu; nie może to być wykryte przez zewnętrzny zatrzask, ponieważ licznik programu jest wewnętrznym rejestrem procesora. Dodatkowa pamięć nie jest bezproblemowo dostępna dla programów. Rejestry wewnętrzne procesora pozostają w swojej oryginalnej długości, więc procesor nie może bezpośrednio rozciągnąć całej pamięci przełączanej między bankami, na przykład zwiększając rejestr wewnętrzny. Zamiast tego procesor musi jawnie wykonać operację przełączania banków, aby uzyskać dostęp do dużych obiektów pamięci. Istnieją inne ograniczenia. Ogólnie system przełączania banków będzie miał jeden blok pamięci programu, który jest wspólny dla wszystkich banków; bez względu na to, który bank jest aktualnie aktywny, dla części przestrzeni adresowej zostanie wykorzystany tylko jeden zestaw lokalizacji pamięci . Obszar ten byłby używany do przechowywania kodu zarządzającego przejściami między bankami, a także do przetwarzania przerwań .

Często jedna baza danych obejmuje kilka banków i pojawia się potrzeba przenoszenia rekordów między bankami (jak przy sortowaniu). Jeśli w danym momencie dostępny jest tylko jeden bank, konieczne byłoby dwukrotne przeniesienie każdego bajtu: najpierw do wspólnego obszaru pamięci, dokonanie zmiany banku do banku docelowego, a następnie przeniesienie bajtu do banku docelowego. Jeśli architektura komputera ma silnik DMA lub drugi procesor, a ograniczenia dostępu do banku różnią się, należy zastosować dowolny podsystem, który może przesyłać dane bezpośrednio między bankami.

W przeciwieństwie do schematu pamięci wirtualnej , przełączanie banków musi być jawnie zarządzane przez uruchomiony program lub system operacyjny; sprzęt procesora nie może automatycznie wykryć, że wymagane są dane, które nie są aktualnie zmapowane do aktywnego banku. Program użytkowy musi śledzić, w którym banku pamięci znajduje się wymagana część danych, a następnie wywoływać procedurę przełączania banków, aby ten bank był aktywny. Jednak przełączanie banków może uzyskać dostęp do danych znacznie szybciej niż na przykład pobieranie danych z pamięci dyskowej.

Użycie mikrokomputera

Przełącznik wyboru banku na płycie pamięci Cromemco został użyty do mapowania pamięci na jeden lub więcej z 8 odrębnych banków 64 KB.

Procesory z 16-bitowym adresowaniem ( 8080 , Z80 , 6502 , 6809 itd.) powszechnie używane we wczesnych konsolach do gier wideo i komputerach domowych mogą bezpośrednio adresować tylko 64  KB . Systemy z większą ilością pamięci musiały podzielić przestrzeń adresową na kilka bloków, które można było dynamicznie mapować na części większej przestrzeni adresowej. Aby osiągnąć większą przestrzeń adresową, wykorzystano przełączanie banków, organizując pamięć w oddzielne banki o wielkości do 64 KB każdy. Bloki o różnych rozmiarach były włączane i wyłączane za pomocą rejestrów wyboru banku lub podobnych mechanizmów. Cromemco było pierwszym producentem mikrokomputerów, który zastosował przełączanie banków, obsługując w swoich systemach 8 banków po 64 KB.

Podczas korzystania z przełączania banków wymagana była pewna ostrożność, aby nie zakłócić obsługi wywołań podprogramów , przerwań , stosu maszyny i tak dalej. Chociaż zawartość pamięci chwilowo odłączonej od procesora była niedostępna dla procesora, mogła być używana przez inny sprzęt, taki jak wyświetlacz wideo, DMA , urządzenia I/O itp. CP/M-80 3.0 wydany w 1983 roku i Z80 oparte TRS-80s model 4 i model II obsługiwane banku przełączania, aby umożliwić korzystanie z więcej niż 64 KB pamięci, że procesor 8080 lub Z80 mógł zająć.

Przełączanie banków umożliwiło dodanie dodatkowej pamięci i funkcji do projektu komputera bez kosztów i niezgodności przełączania na procesor z szerszą magistralą adresową . Na przykład C64 używał przełączania banków, aby umożliwić pełne 64 KB pamięci RAM i nadal zapewniać również ROM i mapowane w pamięci I/O . Atari 130XE może umożliwić jej dwa procesory (6502 i Antic ) W celu uzyskania oddzielnych banków pamięci RAM, dzięki czemu programiści do dużych playfields i innych obiektów graficznych, bez zużywania pamięci widoczny dla CPU.

Mikrokontrolery

Mikrokontrolery (mikroprocesory ze znaczącym sprzętem wejścia/wyjścia zintegrowanym w chipie) mogą wykorzystywać przełączanie banków, na przykład w celu uzyskania dostępu do wielu rejestrów konfiguracji lub wbudowanej pamięci odczytu/zapisu. Przykładem jest mikrokontroler PIC . Pozwala to na zaoszczędzenie miejsca na krótkich słowach instrukcji podczas rutynowego wykonywania programu, kosztem dodatkowych instrukcji wymaganych do uzyskania dostępu do stosunkowo rzadko używanych rejestrów, takich jak te używane do konfiguracji systemu podczas uruchamiania.

Komputer IBM

Rozszerzona pamięć w IBM PC

W 1985 r. firmy Lotus i Intel wprowadziły specyfikację rozszerzonej pamięci (EMS) 3.0 do użytku w komputerach zgodnych z IBM PC z systemem MS-DOS . Microsoft dołączył do wersji 3.2 w 1986 i 4.0 w 1987, a specyfikacja stała się znana jako Lotus-Intel-Microsoft EMS lub LIM EMS. Jest to forma techniki przełączania banków, która pozwala na więcej niż 640 KB pamięci RAM zdefiniowanej przez oryginalną architekturę IBM PC, pozwalając jej pojawiać się fragmentami w 64 KB „oknie” znajdującym się w górnym obszarze pamięci . 64 KB jest podzielone na cztery 16 KB "strony", z których każda może być przełączana niezależnie. Niektóre gry komputerowe wykorzystywały to i chociaż EMS jest przestarzały, funkcja ta jest obecnie emulowana przez późniejsze systemy operacyjne Microsoft Windows , aby zapewnić wsteczną kompatybilność z tymi programami.

Im później eXtended Specyfikacja pamięci (XMS), również teraz przestarzały, to standard w zasadzie symulacji przełączanie bankowej pamięci powyżej 1 MB (zwanego „ rozszerzona pamięć ”), który nie jest bezpośrednio adresowalna w Realu trybie z x86 procesorów który działa w systemie MS-DOS. XMS pozwala na kopiowanie rozszerzonej pamięci w dowolne miejsce w pamięci konwencjonalnej, więc granice „banków” nie są stałe, ale pod każdym innym względem działa jak przełączanie banków w EMS , z perspektywy programu, który go używa. Późniejsze wersje MS-DOS (od około wersji 5.0) zawierały sterownik EMM386, który symuluje pamięć EMS za pomocą XMS, umożliwiając programom korzystanie z pamięci rozszerzonej, nawet jeśli zostały napisane dla EMS. Microsoft Windows emuluje również XMS dla tych programów, które tego wymagają.

Konsole do gier wideo

Przełączanie banków było również stosowane w niektórych konsolach do gier wideo . Na przykład Atari 2600 mogło adresować tylko 4 KB pamięci ROM, więc później 2600 kartridży z grami zawierało własny sprzęt do przełączania banków, aby umożliwić korzystanie z większej ilości pamięci ROM, a tym samym umożliwić bardziej wyrafinowane gry (poprzez więcej kodu programu, a także ważne, większe ilości danych gry, takie jak grafika i różne etapy gry). Entertainment System Nintendo zawierało zmodyfikowany 6502 ale jego wkłady niekiedy zawierały megabit lub więcej pamięci ROM, skierowane przez Bank przełączanie nazywany Controller Wielu pamięci . Wkładki Game Boya wykorzystywały układ o nazwie MBC (Memory Bank Controller), który oferował nie tylko przełączanie banków ROM, ale także przełączanie banków kart SRAM , a nawet dostęp do takich peryferiów jak łącza podczerwieni czy silniki rumble. Przełączanie banków było nadal używane w późniejszych systemach gier. Kilka wkładek Sega Mega Drive , takich jak Super Street Fighter II, miało ponad 4 MB i wymagało użycia tej techniki (maksymalny rozmiar adresu 4 MB). Urządzenie podręczne GP2X firmy Gamepark Holdings wykorzystuje przełączanie banków w celu kontrolowania adresu startowego (lub przesunięcia pamięci) dla drugiego procesora.

Przetwarzanie wideo

W niektórych typach komputerowych wyświetlaczy wideo powiązana technika podwójnego buforowania może być wykorzystana do poprawy wydajności wideo. W tym przypadku, gdy procesor aktualizuje zawartość jednego zestawu fizycznych lokalizacji pamięci, sprzęt do generowania wideo uzyskuje dostęp i wyświetla zawartość drugiego zestawu. Gdy procesor zakończy aktualizację, może zasygnalizować sprzętowi wyświetlania wideo, aby zamienił aktywne banki, tak aby przejście widoczne na ekranie było wolne od artefaktów lub zniekształceń. W tym przypadku procesor może mieć dostęp do całej pamięci na raz, ale sprzęt do wyświetlania wideo jest przełączany między częściami pamięci wideo. Jeśli dwa (lub więcej) banki pamięci wideo zawierają nieco różne obrazy, szybkie przechodzenie między nimi (przerzucanie stron) może stworzyć animację lub inne efekty wizualne, których procesor byłby zbyt wolny, aby wykonać je bezpośrednio.

Techniki alternatywne i następcy

Przełączanie banków zostało później wyparte przez segmentację w wielu systemach 16-bitowych , co z kolei ustąpiło miejsca jednostkom zarządzania pamięcią stronicowania . Jednak w systemach wbudowanych przełączanie banków jest nadal często stosowane ze względu na swoją prostotę, niski koszt i często lepsze dostosowanie do tych kontekstów niż do przetwarzania ogólnego przeznaczenia.

Zobacz też

Bibliografia

Zewnętrzne linki