Autor |
Nachricht |
KennuX
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 19:09 Uhr
|
|
Retrohling
Anmeldungsdatum: 06. Aug 2009
Beiträge: 26
Status: Offline
|
|
Moin leute, wie ihr sicher schon bemerkt habe arbeite ich seit einiger Zeit an einem GBA Emulator. Ich brauche nun hilfe.
Es geht um die CPU, eine ARM7TDMI CPU mit 16,77 Mhz.
Hier sind meine Fragen:
-Wie oft wird der Assemblierte Code durchgeführt (1x oder immer wieder, da ich keine Jump Anweisungen sehe)
-Wie Programmiere ich einen Code, der die CPU genau 16,77 Mhz laufen lässt? Bzw, was ist die Mhz angabe genau?
Das war's auch schon für's erste ^^
Ich hoffe auf eure Antworten und schonma danke im Vorraus |
|
|
|
|
|
krysmopompas
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 19:41 Uhr
|
|
Retrogott
Anmeldungsdatum: 19. Jun 2008
Beiträge: 2.094
Status: Offline
|
|
|
|
|
mateyo
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 19:42 Uhr
|
|
Retromeister
Anmeldungsdatum: 16. Jul 2008
Beiträge: 1.736
Wohnort: Frankfurt am Main
Status: Offline
|
|
falls dir hilft...
16,77 Mhz = 1 / (6*10^-8 s) sprich: 16,77 Mhz = 1 / 6ns (nano sekunde)
Und die Mhz Zahl gibt die Anzahl der Taktimpulse pro Sekunde an. Sprich das ganze ist eine Frequenz.
Jetzt würd ich mir wünschen das ich in Rechnersysteme besser aufgepasst hätte... aber ich meine das sich damit die Anzahl der auszuführenden Operationen pro Sekunde beschreiben lassen.
Wie programmierst du das, du musst dem Emulator eine sogenannte CLOCK angeben... Mehr dazu findest du hier
http://de.wikipedia.org/wiki/Taktsignal
edit: krysmo hat recht eine operation kann auch mehr als einen takt benötigen... ich depp >_< |
|
|
|
|
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 19:58 Uhr
|
|
Ex-Member
Anmeldungsdatum: 28. Feb 2005
Beiträge: 3.561
Wohnort: überall und nirgends
|
|
Nicht zu vergessen die Speicher- und Buszugriffzyklen usw. Für gute Emulation unabdingbar. |
|
|
|
|
|
KennuX
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:04 Uhr
|
|
Retrohling
Anmeldungsdatum: 06. Aug 2009
Beiträge: 26
Status: Offline
|
|
Grade beim überfliegen einer anderen CPU Source kam mir der Befehl BX [rm] entgegen welcher das Register 15 verändert (Register 15 zeigt auf die Stelle des aktuell zu interpretierenden Code).
Also läuft der Assembler Code nur 1x durch und springt eben mit dem BX Befehl?
Und das mit den Takts verstehe ich nicht wirklich, hat also jede Instruktion eine bestimmte Ausführungszeit (Takt) ? |
|
|
|
|
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:20 Uhr
|
|
Ex-Member
Anmeldungsdatum: 28. Feb 2005
Beiträge: 3.561
Wohnort: überall und nirgends
|
|
Ja, z.B. bei früheren CPUs konntest davon mit Sicherheit ausgehen das Multiplikationen wesentlich langsamer waren wie Bitshifts, weshalb gewiefte Programierer diese u.U. damit ersetzt haben.
Von Cache-Hit/Misses und Branch Predictions wollen wir auch erstmal nit anfangen |
|
|
|
|
|
KennuX
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:24 Uhr
|
|
Retrohling
Anmeldungsdatum: 06. Aug 2009
Beiträge: 26
Status: Offline
|
|
hmm, hat jemand evtl noch ne Liste wieviele Takts welche Instruktion hat?
Wenn ich die takts ja nicht einbauen würde, würde die CPU ja viel zu schnell laufen ^^ |
|
|
|
|
|
mateyo
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:25 Uhr
|
|
Retromeister
Anmeldungsdatum: 16. Jul 2008
Beiträge: 1.736
Wohnort: Frankfurt am Main
Status: Offline
|
|
erklärung zu dem bild auf wikipedia vielleicht hilft dir das auch... die y-achse zeigt die spannung an. beispielsweise 5 volt.
und die x-achse die zeit t.
wenn jetzt datengesendet werden also 1 und 0 werden in diesen intervallen die du mit der clock abfrägst sozusagen. (also die zeit in deinem fall 1/6ns) geschaut wann zieht er hoch auf 5 v (also 1) oder wann auf 0v (also 0).
das ist das sogenannte rechtecksignal. |
|
|
|
|
|
|
Titel: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:26 Uhr
|
|
Ex-Member
Anmeldungsdatum: 28. Feb 2005
Beiträge: 3.561
Wohnort: überall und nirgends
|
|
Hast Du das Datenblatt vom ARM? Unbedingt notwendig, da steht z.B. genau sowas drin. |
|
|
|
|
|
krysmopompas
|
|
Titel: Re: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:31 Uhr
|
|
Retrogott
Anmeldungsdatum: 19. Jun 2008
Beiträge: 2.094
Status: Offline
|
|
[quote:e6f34e68ff="KennuX"]hmm, hat jemand evtl noch ne Liste wieviele Takts welche Instruktion hat?
Oben ist die ARM Doku verlinkt. Aber schau genau, was deine CPU ist. |
|
|
|
|
|
KennuX
|
|
Titel: Re: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 20:57 Uhr
|
|
Retrohling
Anmeldungsdatum: 06. Aug 2009
Beiträge: 26
Status: Offline
|
|
okay, das mit den Takts wäre nun auch vom Tisch. Nun noch ein weiteres, was ist bei der Ram Emulation ein "Cylcle"?
Hat der Ram auch eine Cpu die in einem bestimmten Zyklus durchläuft oder was? |
|
|
|
|
|
mateyo
|
|
Titel: Re: CPU Emulation - Brauche Hilfe
Verfasst am: 16.08.2009, 21:19 Uhr
|
|
Retromeister
Anmeldungsdatum: 16. Jul 2008
Beiträge: 1.736
Wohnort: Frankfurt am Main
Status: Offline
|
|
|
|
|
krysmopompas
|
|
Titel:
Verfasst am: 16.08.2009, 21:40 Uhr
|
|
Retrogott
Anmeldungsdatum: 19. Jun 2008
Beiträge: 2.094
Status: Offline
|
|
|
|
|
|
Titel: Re: CPU Emulation - Brauche Hilfe
Verfasst am: 17.08.2009, 10:05 Uhr
|
|
Ex-Member
Anmeldungsdatum: 28. Feb 2005
Beiträge: 3.561
Wohnort: überall und nirgends
|
|
[quote:e50e092f28="KennuX"]okay, das mit den Takts wäre nun auch vom Tisch. Nun noch ein weiteres, was ist bei der Ram Emulation ein "Cylcle"?
Hat der Ram auch eine Cpu die in einem bestimmten Zyklus durchläuft oder was?
Nein. Die Speicherzugriffszeiten sind doch auch von Belang.
- welche Spec ansich hat der Speicher des Systems
- wie arbeitet der Speichercontroller des jew. Systems, beim NDS wären da z.B die Zugrifftimings auf BIOS, WRAM VRAM, OAM usw. unterschiedlich
(anderes Beispiel z.B. beim SNES FastROM/SlowROM)
- ob u. wenn ja wie lange blocken Speicherzugriffe den Systembus oder die CPU, unterstützen ja nicht alle Systeme DMA.
Buszugriffszeiten können auch davon abhängen welche Adressen angesprochen werden. Hier und in allen anderen Fällen hilft nur sich so viel Hardwaredoku und Specs zu beschaffen wie nur irgendwie geht auch der Speicherkomponenten und dann das Systemabbild erstmal abstrakt zu designen. |
|
|
|
|
|
KennuX
|
|
Titel: Re: CPU Emulation - Brauche Hilfe
Verfasst am: 17.08.2009, 12:57 Uhr
|
|
Retrohling
Anmeldungsdatum: 06. Aug 2009
Beiträge: 26
Status: Offline
|
|
Also, gestern habe ich meine Ram Emulation komplett neu geschrieben und habe jetzt für jeden Ram-Zugriff eine bestimmte Zahl an waitCycles. waitCycles habe ich auch als Private Variable in dieser Klasse definiert, und diese wird bei jedem Zugriff mit den waitCycles die der Zugriff braucht beschrieben. Nun noch eine weitere Frage:
Ich habe die CPU Emulation nun fertig in meinem Projekt drinne, aber aus irgendeinem Grund beschreibt die CPU den Grafik ram nicht :/ |
|
|
|
|
|
|