MMUlib 43.14

Posiadaczom szybkich tzw. pełnych procesorów Motorola 68040 oraz 68060 bardzo polecam wykorzystać wbudowaną w procesor jednostkę MMU, Pakiet który to umożliwia to MMULib http://aminet.net/package/util/libs/MMULib Thomasa Richtera.

http://aminet.net/package/util/sys/Mu680x0Libs

Zawiera dwie najważniejsze biblioteki:
68060.library ( lub 68040.library w zależności od procesora)
mmu.library

Biblioteka ta w pełni zastępuje i pełni tę samą funkcję co oryginalna biblioteka Phase5.

Pierwsza wyprodukowana seria procesora 68060 rev1 z maską xF43G posiada mały błąd sprzętowy w obsłudze trybu cache Store/Load Bypass, który może powodować problem w specyficznych sytuacjach. Rozwiązaniem jest wyłączenie tego trybu (nie trzeba się martwić ponieważ, nie wpłynie to na wydajność w większości programów). Biblioteka 68060.library Thomasa jest sprytnie napisana, wykrywa którą rewizję procesora posiadamy, wykonuje krótki szybki test i odpowiednio albo włącza albo wyłącza ten tryb cache.
(Ostatnie wydanie 43.14 wprowadza jednoznaczny test wyłączający cache load/store bypass w przypadku wadliwego CPU. Poprzednie wersje analizowały tylko rewizję procesora co było zbyt konserwatywnym podejściem i zdarzało się, że sprawne procesory miały wyłączony bufor load/store bypass)

Original 68060s (produced from mask set xF43G) have an obscure bug
which means they may ‚bypass’ data already in a register when a long word value is written to memory then immediately re-read to a data register and operated upon. This only affects very stupid code – competent coders will not re-read a value they aleady have in a CPU register – and requires a characteristic sequence of four long word instructions that generate, store and use values in rapid succession. It’s quite hard to generate this case, but some programs may give different results on a 68060 than on other processors as a result. This problem was fixed in 68060 mask set xF84W and the scaled-down LC and EC060 mask set xF10H, but a lot of Amiga boards have the earlier version…

Biblioteka 68060.library v.46.15 (Ralph Schmidt) dla kart turbo Blizzard oraz jej ulepszona zoptymalizowana wersja 46.20 przez Cosmos (cosmos.amiga@gmail.com) zawsze włącza wszystkie tryby cache, nie uwzględnia błędu serii rev1, pozostaje wtedy użyć polecenia cpu060 z odpowiednią opcją wyłączającą ten cache: CPU060 NSTB

fot.1

 

Jak widać na powyższym screenshocie tryb Bypass disabled (wyłączony), natomiast
w przypadku nowszej produkcji rev5 tryb cache Bypass jest włączony.

fot.2

 

W pakiecie znajdziemy między innymi program MuFastZero.
Program pozwala przenieść przerwania wektorowe (vector base) z pamięci Chip do Fast. Takie przemieszczenie można osiągnąć również za pomocą innych programów, ale forma przeniesienia za pomocą MMU jest bardziej elegancka i co najważniejsze stabilniejsza. Program ten z odpowiednimi opcjami przenosi również do Fastu najważniejsze biblioteki systemowe (exec.library oraz expansion.library), to jednak wymaga użycia dodatkowego programu MuMove4K, który alokuje odpowiedni obszar pamięci.
Dla użytkowników programu BlizKick istnieje odpowiedni moduł pod tą samą nazwą MuMove4K, zastępujący ten oryginalny dzięki czemu mamy jeden reset Amigi na starcie 🙂

Warto to zrobić ponieważ przyspieszenie systemu jest zauważalne.

parametry programu MuFastZero:

– ON – uaktywnia program
– OFF – zwalnia obszar pamięci, w którym stworzony był obraz przerwań wektorowych oraz biblioteki systemowe
– FASTEXEC – MuFastZero próbuje przenieść biblioteki exec oraz expansion do pamięci Fast.
– FORCENATIVE – program po starcie informuje, czy ten parametr jest wymagany i zwykle nie jest. Parametr przydatny jest na przykład, gdy z jakiegoś powodu chcemy używać biblioteki 68060.library produkcji Phase5 zamiast tej z pakietu MMULib i chcemy żeby program MuFastZero wogóle zadziałał.
– MOVEVBR=FASTVBR – przenosi „exception vector base” do pamięci Fast.
– CLEARVBR – odwołuje powyższą
– MOVESSP – przenosi supervisor stack do pamięci Fast, co pomaga jeszcze bardziej zwiększyć wydajność. Uwaga, stary supervisor stack nie jest zwalniany, więc nie używaj tego przełącznika więcej niż raz bo będziesz niepotrzebnie tracić pamięć.

Opcja MOVEVBR przenosi exception vector base z adresu zerowego w inne miejsce pamięci typu Fast. Jednakże, ponieważ MuFastZero tak czy inaczej przenosi całą stronę zerową pamięci (w tym właśnie VBR) do FAST, nie robi to żadnej różnicy z wyjątkiem wprowadzenia problemów z kompatybilnością. Z tego powodu ta opcja zwykle nie jest potrzebna, chyba, że nie chcesz przenosić strony zerowej, a wciąż potrzebujesz szybszego wykrywania przerwań (wtedy wyłączasz przenoszenie strony zerowej  i włączasz przenoszenie samej VBR: MUFASTZERO OFF MOVEVBR). Najlepiej zostawić tę opcję w spokoju, szybkość nie wzrośnie dodatkowo względem normalnego użytkowania MuFastZero jeśli ją włączysz.

Optymalne parametry MuFastZero to:

MuFastZero FASTEXEC ON lub  MuFastZero MOVESSP FASTEXEC ON

 

W pakiecie znajdziemy program MuFastChip, którego nie musimy włączać jeśli używamy biblioteki 68060.library ver.43.x z zestawu MuLibs, ponieważ to automatycznie zostaje wraz z nią aktywowane.
Możemy się przekonać o tym uruchamiając MuFastChip z ikonki pod Workbenchem, otrzymamy komunikat: „The chip memory caching mode is already optimal. MuFastChip not required”, co znaczy że tryb pamięci chip jest ustawiony optymalnie i program nie jest wymagany.

Komentowanie jest wyłączone