Temat: Rozważania o pamięci ST, cache, MC68000, MMU
Witam.
1. Czy ktoś orientuje się jak działa 16KB cache w Atari Mega STE? Bo tak na schemacie to mi to wygląda na taki, co za jednym razem buforuje dane tylko w ilości 1 słowo / 2 bajty, czyli głównie przydaje się dopiero przy drugim pobraniu danych np. w pętli. Mam rację? Z tego co widzę, to cache w przykładowych aplikacjach x86 buforuje 16 bajtów i to chyba ma większy sens - ciekawe jaki zysk dałoby zrobienia cache z blokami po np. 16 bajtów. Tak dla teorii, bo chyba zrobienie tego byłoby niezłym wyzwaniem.
2. Czytam sobie o MC68000 i Atari - właśnie przeczytałem dwie ciekawe rzeczy. Po pierwsze procesor ma bufor prefetch na dwa słowa, do którego czyta sobie instrukcje z wyprzedzeniem (więc chyba trzeba uważać i np. nie próbować zmieniać mu następnej instrukcji w kolejce, ani dawać na końcu 4MB RAM instrukcji RTS, bo doczytanie do bufora spowoduje wywołanie błędnego adresu, a co za tym idzie błąd - tak przeczytałem). Po drugie MMU dzieli dostęp do pamięci pomiędzy CPU/DMA/BLITTER, a układ graficzny/sound DMA w proporcjach 2 cykle/2 cykle - jeśli procesor zechce pobrać dane w cyklach nie dla siebie, to czeka. Te dwie informacje powodują, że policzenie ile cykli zajmie procedura graniczy chyba z cudem, bo o ile przyjmuje się zasadę zaokrąglania cykli instrukcji do 4 w górę, o tyle ten bufor powoduje, że czasem procesor nie czeka wcale na dostęp do pamięci. Nieźle zakręcone.
3. Dowiedziałem się, że nie jest tak jak całe życie myślałem, tj. że Atari ST ma jedną pamięć i koniec. Okazuje się, że można zrobić tzw. fast ram czyli jak rozumiem pamięć dostępną dla procesora (tylko?), ale już nie dla Shiftera - czyli już nie dzielimy cykli na dwa. Rozumiem, że taką pamięć się robi z pominięciem MMU. Ale jak to widzi TOS, który chyba o czymś takim nie wie i pomyśli, że to "zwykła" pamięć? W ogóle skąd Atari wie ile ma pamięci - gdzieś chyba czytałem, że sprawdza to na początku program z ROMu wpisując dane pod kolejne adresy - i tu pytanie - do ilu szuka tej pamięci i czy zależy to od wersji TOSu (np. czy znajdzie 8, 14MB, a może nawet inne dziwne kombinacje)? Gdzie indziej czytałem, że pamięć wideo ląduje na końcu - czyli w przypadku FAST RAMu byłby problem? No i jak to jest z pamięcią - czy jak jest 1MB to odczyt dalszej pamięci powoduje zapętlenie i odczyt spod dostępnej pamięci, czy raczej błąd.
Wciągnęło mnie to, mam nadzieję, że jak już się utwierdzę w swoich przekonaniach to zwrócę :) część tej wiedzy do jakiejś atariki czy czegoś. Ciekawe teksty:
http://pasti.fxatari.com/68kdocs/68kPrefetch.html
http://pasti.fxatari.com/68kdocs/AtariS … nting.html