amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Speicherzugriff im PPC Teil eines Mixed Binary [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

23.05.2003, 11:16 Uhr

MarkusPohlmann
Posts: 164
Nutzer
Hallo zusammen,

ich habe ein Programm welches jede Menge Speicher umherkopiert
und so einen Bildpuffer im RGB Format aufbaut und das ganze
dann auf einem 16 Bit- Cybergfx Screen ausgibt.

Kann ich, was die Speicherkopiererei angeht, Geschwindigkeitsvorteile
gegenüber 68k erreichen, wenn ich diesen Teil auf PPC umsetze?

Falls ja, worauf muss ich dann achten?
-In welchem Programmteil am besten allokieren (68k,PPC oder Global)
-Welche Parameter muss ich mitgeben, damit der Speicherzugriff
möglichst schnell ist (bei meinen ersten Versuchen waren die
Speicherzugriffe im PPC-Teil immer langsamer als im 68k Teil)?
-Welche Grösse sollten die zu kopierenden Speicherblöcke
idealerweise haben?

Es wäre schön, wenn mir hier jemand helfen könnte, der sowas
vielleicht selber schonmal erfolgreich versucht hat zu optimieren.

Mit freundlichem Gruss
Markus Pohlmann

[ - Antworten - Zitieren - Direktlink - ]

23.05.2003, 14:54 Uhr

thomas
Posts: 7675
Nutzer

Wie genau du das machst, weiß ich nicht, ich habe keine Ahnung von Mixed Binaries.

Aber ich gebe zu denken, daß sich das ganze nur lohnt, wenn der Kopiervorgang sehr lange dauert. Denn sonst dauert der Context-Switch länger als das Kopieren. Hinzu kommt, daß durch den Context-Switch normalerweise der Prozessor-Cache geleert wird, was beide Seiten (68K und PPC) ausbremst.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]

26.05.2003, 00:44 Uhr

MagicSN
Posts: 238
Nutzer
Zitat:
Original von MarkusPohlmann:
Hallo zusammen,

ich habe ein Programm welches jede Menge Speicher umherkopiert
und so einen Bildpuffer im RGB Format aufbaut und das ganze
dann auf einem 16 Bit- Cybergfx Screen ausgibt.

Kann ich, was die Speicherkopiererei angeht, Geschwindigkeitsvorteile
gegenüber 68k erreichen, wenn ich diesen Teil auf PPC umsetze?


Ich denke, das kommt sehr auf das Projekt an. Da muesste ich genaueres wissen...

Falls moeglich wuerde ich am besten schauen, dass nahezu alles auf PPC laeuft, und nur gelegentlich ein Aufruf rueber auf den 68k kommt. Falls Du natuerlich Programmteile hast, die ganz viele 68k-OS-Funktionen aufrufen, ist das wiederum u.U. gerade NICHT ideal. Wie gesagt, kommt ganz darauf an.

U.U. hilft Dir das Tool "contextswitch" (Urspruenglich von H&P, spaeter von Sven Ottemann weiterentwickelt, auf seiner Homepage downloadbar), mit dem kannst Du Contextswitch-Zeiten Deines Programms messen und welche Aufrufe diese verursachen.

Steffen



[ - Antworten - Zitieren - Direktlink - ]

30.05.2003, 08:50 Uhr

MarkusPohlmann
Posts: 164
Nutzer
Hallo,

vielen Dank schonmal für die Tips.

Ich denke mal dass zur Zeit unbewusste Contextswitchs mein
Problem sind, deswegen werde ich das mit dem Programm mal versuchen.
Allerdings kann ich es nirgends zum Download finden.
Die einzige Webpage die mir Google ausspuckt ist entweder offline
oder verweigert mir den Zugriff. Wo könnte ich es denn sonst
herbekommen, bzw. kann mir das jemand mailen?

Vom Programmstil her würde ich ganz gerne das Programm so ziemlich
alles auf PPC Seite machen lassen und dann einen Contextswitch
zum 68k machen, dort die Funktionen wie Mausclicks (Menüsteuerung),
Joypadabfrage machen (habe keine Ahnung ob ich das irgendwie
auf PPC-Seite durchführen könnte) und dann wieder mit einem
Contextswitch zurück auf den PPC die Grafik zurechtkopieren
und ausgeben.

Dazu habe ich mir die "Rohdaten" der Grafiken gespeichert und
eine Maske, welche Bytes ich davon darstellen möchte und welche nicht.
Die Maske arbeite ich dann ab und kopiere für jeden Grafikblock
den ich darstelle die RGB-Bytes in den Grafikpuffer, bzw. schiebe
den Pointer wohin ich kopiere um soviele Bytes weiter wie ich keine
Pixel darstellen möchte.

Ich habe mir erhofft, dass dieses "Pixelkopieren" auf PPC schneller
läuft. Zur Zeit verwende ich dann allerdings zum darstellen noch
einen 68k Aufruf (habe den Source gerade nicht vor mir, irgendwas
wie WirteRGBArray oder sowas um den ganzen Bildpuffer auf den 16Bit-
Screen zu bekommen), aber das sollte mit chunkyppc.library doch
auch auf PPC-Seite möglich sein, oder?

Mit freundlichem Gruss
Markus

[ - Antworten - Zitieren - Direktlink - ]

31.05.2003, 18:02 Uhr

Holger
Posts: 8090
Nutzer
Zitat:
Original von MarkusPohlmann:
Hallo,

vielen Dank schonmal für die Tips.

Ich denke mal dass zur Zeit unbewusste Contextswitchs mein
Problem sind, [...]

Vom Programmstil her würde ich ganz gerne das Programm so ziemlich
alles auf PPC Seite machen lassen und dann einen Contextswitch
zum 68k machen, dort die Funktionen wie Mausclicks (Menüsteuerung),
Joypadabfrage machen (habe keine Ahnung ob ich das irgendwie
auf PPC-Seite durchführen könnte) und dann wieder mit einem
Contextswitch zurück auf den PPC die Grafik zurechtkopieren
und ausgeben.

Besser ist es, von vornherein zwei separate Prozesse zu erzeugen, einen auf 68k und einen auf dem PPC und diese durch Signale/Messages kommunizieren zu lassen. Das gleiche passiert bei den "Kontextswitches" auch, allerdings transparent für den Programmierer.
Der Vorteil der manuellen Vorgehensweise ist die höhere Kontrolle, z.B. kann man die Kommunikation asynchron laufen lassen und den ppc-task nur dann unterbrechen, wenn der 68k-task tatsächlich ein event empfangen hat. Außerdem ist viel schwieriger, aus Versehen eine Message zu verschicken, als einen ungewollten Kontextswitch einzubauen.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

02.06.2003, 08:06 Uhr

MarkusPohlmann
Posts: 164
Nutzer
Zitat:
Original von Holger:

Besser ist es, von vornherein zwei separate Prozesse zu erzeugen, einen auf 68k und einen auf dem PPC und diese durch Signale/Messages kommunizieren zu lassen. Das gleiche passiert bei den "Kontextswitches" auch, allerdings transparent für den Programmierer.
Der Vorteil der manuellen Vorgehensweise ist die höhere Kontrolle, z.B. kann man die Kommunikation asynchron laufen lassen und den ppc-task nur dann unterbrechen, wenn der 68k-task tatsächlich ein event empfangen hat. Außerdem ist viel schwieriger, aus Versehen eine Message zu verschicken, als einen ungewollten Kontextswitch einzubauen.



Eine interessante Idee, könnte ich mir auch durchaus für diese
Grafikengine vorstellen. Allerdings würde ich
zuvor docherstmal gerne mein Programm nach
Contextswitches durchforsten um den PPC-Teil auch wirklich 100%
auf PPC laufen zu lassen, bevor ich mich an sowas heranwage.
Für's erste wäre ich froh wenn ich mit den zwei Contextswitches
zwischen Steuerung und Bildaufbau klar käme.

Kann mir jemand sagen wo ich dieses oben erwähnte "contextswitch"
Programm finden kann oder kann mir das jemand mailen?
Oder gibt es andere Möglichkeiten Contextswitches zu "entdecken"?

Mit freundlichem Gruss
Markus Pohlmann

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Speicherzugriff im PPC Teil eines Mixed Binary [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2022 by amiga-news.de - alle Rechte vorbehalten.
.