Cyprian napisał/a:Jeśli chodzi o DMA może być użyte do czegokolwiek co wymaga strumieniowania danych (w paczkach o wielkości wielokrotności 16 bajtów). Kwestią do zweryfikowania jaką prędkość może uzyskać -2MB/s czy 4MB/s. Z tego co pamiętam to cykl DRQ ma 250ns czyli teoretycznie 4MB/s.
No właśnie chodzi mi o "cokolwiek" co by chciało przesyłać dane bezpośrednio do pamięci, bez udziału procesora.
W profilbuch-u piszą tylko tyle:
"Projektanci ATARI ST postawili obok procesora energicznego pomocnika, który nie ma zbyt dużej „inteligencji”, ale potrafi działać naprawdę szybko.
Jest to jednostka DMA, która została również specjalnie opracowana przez ATARI dla serii ST. Używając DMA = Direct Memory Access (w języku niemieckim, na przykład: bezpośredni dostęp do pamięci głównej) możliwe jest przesyłanie dużych ilości danych do iz urządzeń peryferyjnych, takich jak dyskietki i stacje dysków twardych, bez objazdów przez procesor i jego rejestry. Blok DMA może uzyskać dostęp do pamięci RAM na równi z procesorem. Kto pierwszy przyjdzie, może uzyskać dostęp do danych!
Transfer danych z turbosprężarką
ST wykorzystuje moduł DMA do obsługi kontrolera dyskietek (FDC) i tak zwanego ACSI (ATARl Computer System Interface).Przepływ danych do i z kontrolera dyskietek może odbywać się z prędkością do 500 kbit / drugi przepływ”, chociaż wbudowany FDC może obsłużyć tylko prędkość transferu 250 kbit/s. ACSI to 8-bitowa magistrala do podłączania szybkich urządzeń peryferyjnych, takich jak B. dysk twardy lub drukarka laserowa. Szybkość przesyłania danych wynosi co najmniej 8 Mbit / s (z dyskiem twardym ok. 12 Mbit / s jest nadal możliwe, jeśli urządzenie peryferyjne jest z nim dostarczane!).
Sam procesor spociłby się i nie miałby czasu na inne „hobby”. Korzystając z jednostki DMA, konieczne jest teraz tylko odpowiednie „informowanie” go, gdzie dane, które mają być transportowane, są przechowywane lub pobierane w pamięci RAM (adres początkowy) i ile danych (bloki po 512 bajtów każdy) jest przesyłanych do lub z urządzenie peryferyjne powinno być.
Aby jednostka DMA mogła w ogóle pracować efektywnie, jest przeznaczona do przesyłania bloków danych o wielkości 512 bajtów (w przypadku ST sensowne jest przesyłanie rozmiaru sektora danych na dysku) lub jego wielokrotności.
Dalsze przetwarzanie transferu danych zależy teraz od jednostki DMA, dzięki czemu procesor może być zajęty innymi zadaniami (niestety TOS nie korzysta z tej opcji!).
Wystarczy połowa
Jak pokazuje schemat blokowy, 16-bitowa magistrala danych pamięci głównej jest zredukowana do 8-bitowej magistrali danych przez jednostkę DMA. Jednostka DMA automatycznie konwertuje 16-bitowe słowo danych na dwa kolejne 8-bitowe słowa danych. 16-bitowa magistrala po stronie urządzeń peryferyjnych również nie jest konieczna. ponieważ kontroler dyskietek (FDC) ma tylko 8-bitową magistralę danych.
Połączenie ACSI ma również szerokość tylko 8 bitów, ponieważ jest oparte na popularnej magistrali SCSI (SCSI = Small Computers System Interface).
Jednostka DMA ma pięć wewnętrznych rejestrów, które mogą być używane do sterowania transferem danych do/z kontrolera dyskietek i szyny ACSI. 32-bajtowy bufor oparty na zasadzie FIFO (First In, First Out = dane wprowadzone jako pierwsze są również pobierane jako pierwsze) w jednostce DMA przejmuje buforowanie między pamięcią główną a kontrolerem dyskietek / magistralą ACSI.
Ponadto 16-bitowe słowo danych jest konwertowane na dwa 8-bitowe słowa danych i odwrotnie.
Należy zauważyć, że transfer między jednostką DMA a pamięcią główną ma miejsce tylko wtedy, gdy bufor FIFO jest zapełniony w ponad połowie. Jednostka DMA następnie próbuje przejąć kontrolę nad magistralą i przesłać 16 bajtów. Transmisja odbywa się zawsze w seriach po 16 bajtów! W przypadku transferów danych w rozmiarze sektora (512 bajtów) nie trzeba przywiązywać do tego zbytniej uwagi.
Jeśli jednak chcesz odczytać mniej niż jeden sektor (512 bajtów) z dysku, np. Na przykład tylko pola adresowe (które mają tylko 6 bajtów) powinny być odczytywane co najmniej trzy z tych pól, aby uzyskać liczbę bajtów większą niż 16. W przeciwnym razie odczytane dane utkną w buforze FIFO, a po pozornie poprawnie wykonanej operacji DMA będziesz zaskoczony, że żadne dane nie dotarły do pamięci głównej.
Jak pokazano na rysunku 1.13, można z grubsza wyobrazić sobie wewnętrzne działanie jednostki DMA w ST.
Dostęp jest sygnalizowany do układu kontrolera dyskietek za pośrednictwem linii FDCS (wybór kontrolera dyskietek). Linie CA 1 / CA2 służą jako linie adresowe do wyboru rejestru w układzie FDC lub do sygnalizacji bajtu rozkazu na szynie ACSI.
Jak widać, stan linii R/W na wejściu jednostki DMA decyduje o tym, czy uzyskiwany jest dostęp do rejestru trybu DMA czy rejestru statusu DMA. Rejestr statusu DMA może być tylko odczytywany, a rejestr trybu DMA może być tylko zapisywany. Oba rejestry można znaleźć w przestrzeni pamięci ST pod tym samym adresem!
Bit 4 w rejestrze trybu DMA może być używany do kontrolowania, czy należy uzyskać dostęp do rejestru dostępu kontrolera, czy rejestru licznika sektorów. Te dwa rejestry mogą być zapisywane i odczytywane, a także zajmują tylko jeden adres."