OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 19:02

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 59 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: Re: Je k něčemu DMA?
PříspěvekNapsal: 11.11.2020, 12:00 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
hynek píše:
Martin1 píše:
A neviem si predstaviť situáciu, v ktorej by to bolo prínosné.

Bezne se to pouziva - a rekl bych, ze "vsude"

Ano, ale ja som písal o situácii, kedy by bežalo CPU a zároveň DMA, nie na preskáčku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Je k něčemu DMA?
PříspěvekNapsal: 11.11.2020, 13:15 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Martin1 píše:
hynek píše:
Martin1 píše:
A neviem si predstaviť situáciu, v ktorej by to bolo prínosné.

Bezne se to pouziva - a rekl bych, ze "vsude"

Ano, ale ja som písal o situácii, kedy by bežalo CPU a zároveň DMA, nie na preskáčku.

Hynek ale myslel podla mna iné počítače ako je ZX Spectrum, tu jeho druhú vetu si nešťastne usekol. Zatial to mám tak, že například na počítači Amiga není DMA prenos zdržovaný procesorom. Len vydaš procesorom pokyn na začatie a ukončenie DMA prenosu.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Je k něčemu DMA?
PříspěvekNapsal: 11.11.2020, 15:16 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Lisiak4 píše:
Hynek ale myslel podla mna iné počítače ako je ZX Spectrum, tu jeho druhú vetu si nešťastne usekol. Zatial to mám tak, že například na počítači Amiga není DMA prenos zdržovaný procesorom. Len vydaš procesorom pokyn na začatie a ukončenie DMA prenosu.
Ani na ZX Spektre nie je DMA prenos zdrzovany procesorom. Procesor vyda pokyn a DMA prenos sa spusti a bezi plnou rychlostou. Jedine, na co DMA prenos musi cakat, je dokoncenie aktualne rozbehnuteho zbernicoveho cyklu procesorom, co nie je viac ako 4 hodinove takty.


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 15:35 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Lisiak4 píše:
Busy: ok, možno som sa zle vyjadril. DMA není procesorom zdrzovane, ale počas práce DMA je procesor vyblokovany. Čo pokial viem není pripad u počítača Amiga. Je to takto už ok? :)
A co v pripade ak procesor casto potrebuje liest do pameti (do oblasti ktoru zrovna nema v cache) ?
Resp. ked DMA aj CPU chcu zrovna v tom istom case pristupit do tej istej pameti, ako sa toto na Amige riesi ?


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 15:56 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
Detaily opravdu nevím. Možná je taky na Amize procesor vyblokovaný. Jen vím z klasické literatury, že by na Amize DMA nemělo být závislý na procesoru. Nebo minimálně procesoru odlehčit práci, kterou by bez DMA přenosu musel vykonávat. Měl jsem již případ v ASM na Amize, že mi můj vlastní program přepisoval v registru hodnotu z jiné části mého programu. V té části registru pracuji s frekvencí. Zatím to mám řešený tak, že v téhle části jsem začal pracovat se stejným podprogramem pro výběr frekvence ze stupnice a ten podprogram v rámci frekvence pracuje s jiným registrem. Ve výsledku tedy 3 hudební kanály volají 1 podprogram a 4.kanal druhý podprogram. Když tak pardon za OT.

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 16:27 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1198
Has thanked: 360 times
Been thanked: 304 times
IMHO tady resite moznost, ze by DMA bezelo zaroven s CPU. To ale neni z principu technicky mozne, tedy pokud nebude nejaka MMU jednotka. A to na zadnem oldcompu neni. Nebo o nejakem vite? Takze vzdy se musi ti dva 'domluvit', kdo bude master (pry se to slovo nema pouzivat) a kdo bude cekat, az domluvi. Proste tady je kooperace nutna.
Stejna situace by nastala, kdyby chtel nekdo do compu osadit dve CPU. Kdyz to potrebuje na Spectru videoradic, tak pozdrzi hodiny. To je ale jen pro jeden byte(?). Podobne to udela GDG od Sharpa (tam je to ale o necem jinem). Ale nepredaji si rizeni zbernice, tudiz se nechovaji jako DMA a CPU.
Pokud by to na necem bylo jinak (viz zminovana Amiga), tak by bylo velice zajimave zjistit, jak to fyzicky delaji a poucit se z toho pro najekou vlastni konstrukci.

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 16:52 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
Mikes21 píše:
IMHO tady resite moznost, ze by DMA bezelo zaroven s CPU. To ale neni z principu technicky mozne, tedy pokud nebude nejaka MMU jednotka.

V pôvodnom príspevku som naznačil, že by to bolo technicky možné, pokiaľ by CPU aj DMA bežalo nad rôznymi pamäťami (keď nateraz vynecháme dual port pamäte).
Len DMA nesmie zastaviť procesor, teda DMA BUSRQ nesmie byť pripojený na BUSRQ CPU.
Čiste teoretický príklad:
Na ZXS budem mať pripojených 8kB RAM na vonkajšiu zbernicu cez oddeľovače do rozsahu 2000-4000h. A za tým DMA.
DMA zašle BUSRQ, ktorý by bol ale pripojený na NMI. Obsluha prerušenia vypne oddeľovače (čím bude vonkajšia RAM nezávislá) a potvrdí /RDY (nejakým výstupným portom). DMA natlačí dáta do tejto pamäte - k inej by aj tak nemal prístup kvôli oddeľovačom. Procesor zatiaľ robí čo chce nad zvyškom pamäte, napr. niečo animuje na obrazovke, pričom periodicky zisťuje stav BUSRQ (vstupným portom), keď BUSRQ pominie, pripojí oddeľovače a CPU má opäť dosah na túto RAM 2000-4000h. Samozrejme interná ROM by bola v tomto rozsahu vyblokovaná.
Fungovalo by to?


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 17:40 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
Busy píše:
A co v pripade ak procesor casto potrebuje liest do pameti (do oblasti ktoru zrovna nema v cache) ?
Resp. ked DMA aj CPU chcu zrovna v tom istom case pristupit do tej istej pameti, ako sa toto na Amige riesi ?

Toto je vyriešené nejak tak, že CPU má prístup do pamete len každý druhý cyklus a medzitým majú k pameti prístup DMA kanály, teda nikdy nie súčasne. Výnimkou je asi Blitter, pre ktorý sa dá nastaviť priorita voči procesoru. Toto platí len pre Chipku, do Fastky má prístup len CPU a to plnou rýchlosťou.


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 19:04 
Offline
Kecálek

Registrován: 07.05.2014, 12:10
Příspěvky: 197
Bydliště: Jbc
Has thanked: 0 time
Been thanked: 39 times
Martin1 píše:
Na ZXS budem mať pripojených 8kB RAM na vonkajšiu zbernicu cez oddeľovače do rozsahu 2000-4000h. A za tým DMA.
DMA zašle BUSRQ, ktorý by bol ale pripojený na NMI. Obsluha prerušenia vypne oddeľovače (čím bude vonkajšia RAM nezávislá) a potvrdí /RDY (nejakým výstupným portom). DMA natlačí dáta do tejto pamäte - k inej by aj tak nemal prístup kvôli oddeľovačom. Procesor zatiaľ robí čo chce nad zvyškom pamäte, napr. niečo animuje na obrazovke, pričom periodicky zisťuje stav BUSRQ (vstupným portom), keď BUSRQ pominie, pripojí oddeľovače a CPU má opäť dosah na túto RAM 2000-4000h. Samozrejme interná ROM by bola v tomto rozsahu vyblokovaná.
Fungovalo by to?

Nekdy by to fungovalo, jindy by to fungovat nemuselo...
Pokud bude CPU pracovat zrovna s tou pameti na externi sbernici a DMA bude mit potrebu odpojit ji a neco tam zapsat, tak se o tom procesor nejspis nedozvi a muze precist spatna data. Proto tam je vzdy potrebna okamzita synchronizace, coz jsou pro DMA a Z80 signaly BUSRQ a BUSACK. Cteni portu nemusi poskytnout dostatecnou ochranu. Jako nahradni mechanismus by se mohl pouzit signal WAIT, kterym by se CPU pozdrzel, dokud nebude externi pamet opet pripravena. Ale musi se zajistit, ze to nezustane ve WAIT donekonecna, pokud by nekde doslo k chybe...

Jak tu uz zaznelo, obecne lze pouzit CPU i DMA soucasne, ale pouze na systemu, kde je vic samostatnych sbernic. A pak se musi docela slozite resit synchronizace pristupu z jedne sbernice na druhou...


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 20:18 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Antony/DTA píše:
Busy píše:
A co v pripade ak procesor casto potrebuje liest do pameti (do oblasti ktoru zrovna nema v cache) ?
Resp. ked DMA aj CPU chcu zrovna v tom istom case pristupit do tej istej pameti, ako sa toto na Amige riesi ?
Toto je vyriešené nejak tak, že CPU má prístup do pamete len každý druhý cyklus a medzitým majú k pameti prístup DMA kanály, teda nikdy nie súčasne
Tak ma napadlo, ak sa prave nerobi ziadny DMA prenos, znamena to, ze kazdy druhy cyklus CPU naprazdno stoji ? Alebo to plati iba ked sa prave robi nejaky DMA prenos ?
Antony/DTA píše:
Toto platí len pre Chipku, do Fastky má prístup len CPU a to plnou rýchlosťou.
To znamena, ze DMA do fast pameti vobec nema pristup ?


Nahoru
 Profil  
 
PříspěvekNapsal: 11.11.2020, 20:55 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
Busy píše:
Antony/DTA píše:
Busy píše:
A co v pripade ak procesor casto potrebuje liest do pameti (do oblasti ktoru zrovna nema v cache) ?
Resp. ked DMA aj CPU chcu zrovna v tom istom case pristupit do tej istej pameti, ako sa toto na Amige riesi ?
Toto je vyriešené nejak tak, že CPU má prístup do pamete len každý druhý cyklus a medzitým majú k pameti prístup DMA kanály, teda nikdy nie súčasne
Tak ma napadlo, ak sa prave nerobi ziadny DMA prenos, znamena to, ze kazdy druhy cyklus CPU naprazdno stoji ? Alebo to plati iba ked sa prave robi nejaky DMA prenos ?
Aj keď sa nerobí žiaden DMA prenos, CPU má prístup do pamete len vo svojich cykloch, ak nepotrebuje prístup do pamete tak ale nieje brzdený.
Zhruba tak nejak to je aj keď úplne presne to neviem, ak to niekto vie môže ma doplniť, alebo opraviť.

Busy píše:
Antony/DTA píše:
Toto platí len pre Chipku, do Fastky má prístup len CPU a to plnou rýchlosťou.
To znamena, ze DMA do fast pameti vobec nema pristup ?
Áno podľa toho sa aj pameť nazýva ChipRam -prístup majú CPU aj Chipset, alebo FastRam -prístup má len CPU.


Nahoru
 Profil  
 
PříspěvekNapsal: 12.11.2020, 08:45 
Offline
Profík

Registrován: 06.02.2019, 11:47
Příspěvky: 898
Has thanked: 51 times
Been thanked: 230 times
hynek píše:
Nekdy by to fungovalo, jindy by to fungovat nemuselo...
Pokud bude CPU pracovat zrovna s tou pameti na externi sbernici a DMA bude mit potrebu odpojit ji a neco tam zapsat, tak se o tom procesor nejspis nedozvi a muze precist spatna data.

V popísanom prípade sa o tom určite dozvie, lebo bude vyvolané prerušenie, a potom je už na SW, ako sa s tým vysporiada.
M1


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Je k něčemu DMA?
PříspěvekNapsal: 12.11.2020, 12:39 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Martin1 píše:
Ano, ale ja som písal o situácii, kedy by bežalo CPU a zároveň DMA, nie na preskáčku.
V dokumentacii k Z80-DMA sa pise:

Another method used for some DMACs is called a Transparent or Cycle-stealing transfer. This technique is similar to the instruction in Figure 16c,except that control of the bus causes the DMA data transfers to be inter-leaved with CPU cycles

Ak to spravne chapem, malo by to byt o tom, ze DMA prenos sa robi v case, ked CPU zrovna nepotrebuje zbernicu. DMA prenos bude pomalsi, ale na druhej strane CPU si bezi svojou plnou rychlostou. Ale tento rezim prace DMA som nikdy hlbsie neskumal a ani s nim neexperimentoval.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Je k něčemu DMA?
PříspěvekNapsal: 12.11.2020, 14:39 
Offline
Kecálek

Registrován: 07.05.2014, 12:10
Příspěvky: 197
Bydliště: Jbc
Has thanked: 0 time
Been thanked: 39 times
Busy píše:
Another method used for some DMACs is called a Transparent or Cycle-stealing transfer. This technique is similar to the instruction in Figure 16c,except that control of the bus causes the DMA data transfers to be inter-leaved with CPU cycles

Ak to spravne chapem, malo by to byt o tom, ze DMA prenos sa robi v case, ked CPU zrovna nepotrebuje zbernicu. DMA prenos bude pomalsi, ale na druhej strane CPU si bezi svojou plnou rychlostou. Ale tento rezim prace DMA som nikdy hlbsie neskumal a ani s nim neexperimentoval.

Taky tam zminuji, ze to vyzaduje dalsi obvody kolem, ale uz neuvadeji, jake... Podle vseho to vypada, ze tento rezim Z80-DMA neumi.


Nahoru
 Profil  
 
PříspěvekNapsal: 12.11.2020, 17:54 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 20:32
Příspěvky: 457
Bydliště: Kladno
Has thanked: 46 times
Been thanked: 118 times
Antony/DTA píše:
Busy píše:
A co v pripade ak procesor casto potrebuje liest do pameti (do oblasti ktoru zrovna nema v cache) ?
Resp. ked DMA aj CPU chcu zrovna v tom istom case pristupit do tej istej pameti, ako sa toto na Amige riesi ?

Toto je vyriešené nejak tak, že CPU má prístup do pamete len každý druhý cyklus a medzitým majú k pameti prístup DMA kanály, teda nikdy nie súčasne. Výnimkou je asi Blitter, pre ktorý sa dá nastaviť priorita voči procesoru. Toto platí len pre Chipku, do Fastky má prístup len CPU a to plnou rýchlosťou.

A aby toho nebylo u Amigy málo, celý systém funguje na principu volných DMA slotů. Když jsou některé DMA sloty volné (třeba jsou využity jen 2 bitplány z 8, málo HW spritů, nebo volné zvukové kanály), volné sloty si půjčí Blitter a přenos se zrychlí. Takže se výborně počítá jak dlouho mu bude takový přenos trvat :D Bych chtěl vidět jak by tam někdo dělal Multicolor alá ZX Spectrum :D

_________________
>>eLeMeNt, MB03+, Amiga 1200, ZX Spectrum 128 +2A, ZX Spectrum+, Didaktik Gama, LnxSpectrum, LnxTracker, LnxAmigaImageConvertor, https://www.ilnx.cz <<


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 59 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz