W odpowiedzi na komentarz
#55
Trudniejsze jest opanowanie "Floating Buffer" w ArticiiS, która to cecha jest podobno zaletą tego układu, w praktyce okazała się zmorą autorów sterowników. "Floating Buffer" miał w założeniu zwiększyć przepustowość mostka i częściowo zrównoważyć w ten sposób brak architektury "crossbar" jaką mamy m.in. w Marvellu. W praktyce jednak skutkiem ubocznym tego rozwiązania są koszmarne problemy z zapewnieniem spójności cache procesora z pamięcią systemu. I z tym walczą autorzy sterownika do dysków w A1, a nie z VT686B. Sprawa jest oczywiście dyskusyjna, problemy częściowo mogą wynikać ze złego podejścia programistów, wszystkie normalne chipsety sprzętowo zajmują się utrzymaniem spójności cache, być może obsługa programowa może być efektywniejsza, ale na razie programiści klną na czym świat stoi
Widzę, Krashan, że bardzo chcesz wyalienować się z tłumu pegazowiec-krzykaczy
Ta najnowsza hype rionowa teza, iż problemy z Articią wynikają z ficzerów Articii a nie błędów jest po prostu śmieszna. IMHO to tylko kolejna ściema. Wcześniej twierdzili, że błędy są tylko w mostku południowym, potem, że w północnym, ale już zostały poprawione w najnowszej rewizji układu, a teraz, że nadal problem jest z północnym, ale to nie wina bugów, ale ficzer, i to Linux jest do dupy, bo pisany na x86. Przecież ta argumentacja jest absurdalna!
Rzeczywiście spójność pamięci można zapewnić programowo. Doskonałym przykładem jest PowerUP. Na te karty wsadzono dwa procesory o zupełnie różnej architekturze - m68k i ppc. Nie było jakiegokolwiek sprzętowego mechanizmu zapewnienia spójności między pamięcią i pamięcią podręczną tych procesorów. Żaden snooping nie wchodził w grę - bo procesory były ze sobą niekompatybilne. Jednak Ralphowi Schmidtowi jakoś udało się stworzyć system komunikacji między tymi procesorami umożliwiający jednoczesną pracę obu procesorów. Komunikaty były wymieniane przez pamięć RAM, a spójność pamięci zapewniały cache flushe i ewentualnie odpowiednie mapowanie pamięci. Co z tego, że procesory mogły sobie niezależnie pracować, gdy większe straty były na cache flushach. A programiści musieli się nieźle gimnastykować, żeby ich programy mogły szybko działać na takiej architekturze. Ale PowerUP to było rozwiązanie tymczasowe i złe na dłuższą metę. [Od razu uprzedzając głupie komentarze - Nie, Schmidt nie był fanem tego rozwiązania. Napisał ppc.library, bo taka była jego praca.] Prawidłowym rozwiązaniem było napisanie Morphosa - system, który w całości działa na jednym procesorze i nie wymaga czyszczenia pamięci podręcznych procesorów przy każdym wywołaniu funkcji systemowej.
Ta cała historia z PowerUPem trochę przypomina to, o czym programiści dyskutowali na liście Debian PowerPC.
Ole-Egil Hvitmyren tam
napisał (odnośnie problemów z DMA w A1):
"certain other OSes doesn't have a problem marking DMA buffers as non-cacheable.
It's stated pretty explicitly in the northbridge documentation that this is how it needs to work, saying the hardware is buggy because it follows its own documentation seems a TAD silly to me."
Można domyślać się, że specjaliści z Hype rionu tak właśnie rozwiązują problem - mapując przy użyciu MMU bufory DMA jako nie-cache'owalne.
BTW, drugi wariant "rozwiązania" problemu znajdziemy na stronie Kena Moffata - to właśnie on
rozpoczął całą dyskusję o problemach z DMA w A1. Patch na patche (!) dla A1 zawiera... Zgadnijcie co! Ano oczywiście dodatkowe cache flushe

Niestety sam Ken zaznacza, iż ten solużyn nie jest doskonały, bo nadal są przekłamania przy transferach DMA, trzeba jeszcze ograniczyć wielkości transferów DMA i dokupić kartę natsemi, bo przy włączonym trybie DMA sterownik Ethernet przekłamuje dane.
Wypowiedź Ole-Egila (czyli pomysł z mapowaniem)
wyśmiał sam Ben Herrenschmidt:
"Ok, so Linux do support non-coherent DMA quite well, it's atcually widely used by various sorts of embedded PPC CPUs like 4xx, 8xx, ... _HOWEVER_, doing that in a northbridge for anything but an embedded CPU, especially a CPU of the 6xx/7xxx family is just insane. It's basically incompetent northbridge design. [...] that means the HW is a Piece Of Shit ! [...] I've been one of the maintainers of the PPC kernel for long enough to have a chance to play with a wide range of northbridges. Cache coherency is a basic feature of anything claiming to be used as a desktop machine."
Dla mnie benh jest większym autorytetem w dziedzinie systemów operacyjnych na PowerPC od innego Bena H.

Fanom OS4 mogę tylko życzyć, żeby twórcy ich wyśnionego systemu dali sobie spokój wspieraniem fantastycznych ficzerów Articii i przenieśli swoje dzieło na Pegasosa, albo jeszcze lepiej na Maca G5.
Podsumowywując. Przekłamania przy transferach DMA nie są zasługą jakichś wspaniałych cech Articii, ale efektem błędów w implementacji. Normalnie sterowniki w ogóle nie odwołują się do mostków północnych. I to nie programiści sterowników powinni dostosowywać sterowniki do widzimisię twórców mostków północnych - bo prowadziłoby to do absurdalnej sytuacji, gdy dla każdego mostka północnego potrzebny byłby inny zestaw sterowników. Chipset, który nie zapewnia spójności pamięci, jest po prostu do dupy i naklejenie czarnobiałej naklejki z napisem "AmigaOne from Eyetech" tego nie zmienia.