Blitteri ja kertolaskut

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2005 » Blitteri ja kertolaskut « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Perjantaina, 8. huhtikuuta, 2005 - klo 20.23:   
Joskus käsitin että classic amigan blitterillä voi laskea kertolaskuja
ja jos on totta ? niin miten ?

 

Jani Kuituniemi
Lauantaina, 9. huhtikuuta, 2005 - klo 11.12:   
Ei voi. Blitterillä ei voi kuin siirtää muistialueita ja niin halutessaan tehdä siirron aikana loogisia operaattoreita 'lennossa' siirrettävälle datalle.

 

JPQ
Lauantaina, 9. huhtikuuta, 2005 - klo 14.53:   
Jani Kuituniemi: joku mennyt noin joskus minusta väittämään ja tiedän
kyllä että lähinnä tuota ja viivan piirtoa kait myös ja alueen
täyttöä.

 

Jani Kuituniemi
Lauantaina, 9. huhtikuuta, 2005 - klo 21.07:   
JPQ: kyllä, viivan piirto ja alueen täyttö ei ole mitään muuta teknisessä mielessä kuin muistialueelle (tässä tapauksessa näytettävän ruudun allokoitu muistialue) halutun datan kopiointia toisesta paikasta joko suoraan tai sopivan loogisen operaattorin läpi tai suoraan sopivalla "patternilla" piirtämistä.

 

JPQ
Sunnuntaina, 10. huhtikuuta, 2005 - klo 0.26:   
Jani Kuituniemi: aivan ja hämää tuo väite edelleen.

 

allu
Lauantaina, 30. huhtikuuta, 2005 - klo 11.43:   
JPQ ja Jani Kuituniemi: Itseasiassa minäkin olen kuullut saman huhun jo silloin kun Amigani oli vielä uusi. Ja tekis mieli saada selvyys asiaan(eli demokoodarit paikalle).

Blokkimoodissahan blitterillä voi toteuttaa monimutkaisiakin kytkentöjä kuten adderin ja varmasti myös kertolaskuyksikön(jopa game-of-lifen olen nähnyt). Onko se sitten nopeampi kuin mul-käsky, niin tuskin.

Itse arvelenkin että kertolaskun voisi tehdä viivanpiirtomoodissa. Asetetaan sopivat lähtöarvot(tekijät) blitterin rekistereihin, annetaan blitterin jauhaa hetki ja luetaan muuttuneet arvot pois. Pienillä tekijöillä, tämä voisi hyvinkin olla nopeampi kuin 68k:n mul-käskyt.

 

JPQ
Lauantaina, 30. huhtikuuta, 2005 - klo 12.04:   
allu: lisäksi blitteri toimii yhtä aikaa prosessorin kanssa.

 

Jupp3
Lauantaina, 30. huhtikuuta, 2005 - klo 12.11:   
Jos muistia kopioidaan vaikka 8 bittiä jompaan kumpaan suuntaan, niin sehän vastaa 256:lla kertomista / jakamista.

Onkos tuosta sitten mitään käytännön hyötyä, mutta ainakin saman operaation voi tehdä kerralla isommalle määrälle dataa.

(toisaalta, pystyiköhän 68k:lla lukemaan datan suoraan "yhtä tavua myöhemmin"? Kaikki prosessorit eivät tähän pysty, en muista pystyykö 68k)

 

Jani Kuituniemi
Lauantaina, 30. huhtikuuta, 2005 - klo 13.25:   
No tuossa mielessähän voisi myös tehdä kerto- ja jako-laskuja loogisilla operaattoreilla (binääri-matematiikka on aika jännää), mutta en usko siitä olevan kovin suurta käytännön hyötyä ellei sitten haluta jotain jänniä demo-efektejä aikaiseksi 0% CPU-kuormituksella.. :)

 

JPQ
Lauantaina, 30. huhtikuuta, 2005 - klo 15.00:   
Jani Kuituniemi: no raudan äärimilleen veto on se mikä tässä minua
kiinnostaa eli otetaan raudasta kaikki irti.

 

Jani Kuituniemi
Lauantaina, 30. huhtikuuta, 2005 - klo 16.40:   
JPQ: Näinhän sen olla pitääkin vrt. PC maailma jossa ei optimointia viitsitä edes tehdä vaan oletetaan käyttäjän ostavan riittävän tehokas kone jos mielii ohjelmaa käyttää :)

 

itix
Maanantaina, 2. toukokuuta, 2005 - klo 13.56:   
Tuossa on vain se ongelma että se data pitäisi sijoittaa CPU:lla chip-muistiin, pistää blitteri käyntiin ja lukea muuttunut data takaisin. Ei vaikuta kovin tehokkaalta. Ehkä jos data luetaan korpulta DMA:ta pitkin suoraan chip-muistiin niin sitten...

 

allu
Maanantaina, 2. toukokuuta, 2005 - klo 15.10:   
itix: Kysehän oli 68000 prossusta, jonka kertolasku pahimmillaan vie kymmeniä kellojaksoja(tais olla jopa yli sata). Jos itse kertolasku saadaan suht nopeaksi, ei siinä pari move:a tunnu kun kokonaisaika jää alle mul-käskyn.

Mutta joo, alan kallistua siihen vaihtoehtoon, että kyseessä on ollut taulukollinen fixed-point lukuja, jotka on blitterillä kertoheitolla muutettu kokonaisluvuiks(ja toisinperin). Jos taulukot on ollut isoja, kuten vektoriefekteissä tuppaa, niin säästö on varmasti ollut hyvin merkittävä. Tämä kyllä pätee vain erikoisiin fixed-point formaatteihin kuten 24:8 ja 16:8. Normaalit 16:16 ja 8:8 saadaan CPU:n omillakin käskyillä konvertoitua täysin ilmaiseksi(lukemalla puolet lyhyemmällä leveydellä). Mutta ehkä blitteristä on hyötyä koska samalla voidaan siirtää dataa paikasta A paikkaan B ja extrana konvertoida luvut toiseen formaattiin.

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: