Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005.
DATORKUNSKAP PC:ns uppbyggnad
En avancerad miniräknare
En kort presentation om persondatorn och datorns olika delar.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Översikt av operativsystem (kap 1 & 2)
Algoritmer och data strukturer -Länkade listor
Persondatorer Datorns internminne (Kapitel 6)
William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
©annax1 PC-teknik Minnen. 2 MINNEN Segmenterat minne 16 bits segmentregister + 32 bits offset = 64k*4Gbyte = 512Tb obs! Ofta används inte alla 16 bitarna.
PC-Teknik © CAAK1 PC-teknik Anna-Karin Carstensen Plan 3 el/data tel:
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Programmeringsteknik K och Media
Att programmera i språket Java
Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Programmering B PHP Lektion 2
Checklista Identitetshanteringssystem för SWAMID 2.0
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
PROCESSPROGRAMMERING
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Välkommen till Del 1.
Vektorer (klassen Vector) Sortering
1 Pass 2 Allmän IT Hårdvara Hårdvara Hårdvara = Maskinvara Hårdvara är ett samlingsnamn för olika fysiska tillbehör till en dator. T. ex. Systemenhet.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
OPERATIVSYSTEM WINDOWS
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Modulär programutveckling
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
LUNET: MLS och speglade paket vers 1.0
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Repetition.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
Föreläsning 1 Introduktion till kursen. Algoritmer
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
William Sandqvist KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför.
Så fungerar en dator Mental bild av en dator
KPP053, HT2015 MATLAB, Föreläsning 4
Bygga dator: CPU och minne
Datorkomponenter Mukhlis Yunis.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor

Inledning Vad är en emulator? Mikrodator Commodore 64 Emulator, CCS64 Implementerad för PC, UNIX Konkurrens sedan 1987 Högst kompatibilitet

Mikrodator Processor (CPU) Minne Adress och data-buss MMU (Memory management unit) DMA (Dynamic memory access) I/O-portar samt räknare Grafikprocessor Ljudprocessor Externa enheter

Commodore 64 Förenklad modell över intern kommunikation

Commodore 64 Förenklad modell över processorn (MOS6510)

Andra metoder Kompilerande Byggda på en förenklad/felaktig modell Maskinberoende Assembler Ej objektorienterad/modulariserad uppbyggnad Ineffektiva lösningar Lägre kompatibilitet

Min modell Korrekt modell Tyngdpunkt på korrekt exekverande av program Virtuell värld Maskinoberoende kärna med generella gränssnitt Objektorienterad/modulariserad design Händelser (Events) Uppbyggd kring processorn Emulering i flera steg

Processor Register => C++ Variabler Följer ursprunglig mikrokod Synkroniserad med klockcykler while(!undantag) { switch(...) { case 0x00:... break;... case 0xff:... break; } if(!avbrott) {... }...

Minne och MMU Minne => Fält (Array) av heltal Tabell över adresserbart minne Indelad i RAM, ROM, I/O case 0xa9:/* LDA Immediate a = LÄSFRÅNMINNE(pc++); zn = a; break; LÄSFRÅNMINNE: reg = MinnesTabell[adress]; if(reg == 0) return Ram[adress]; elseif(reg == 1) return Rom[adress]; else return LäsIO(reg,adress);

Händelser Uppdatering av andra enheter Sorterad lista med trädstruktur Kontroll vid varje tidsenhet (minnesåtkomst) maskincykel++; if(maskincykel == händelsecykel) { maskincykel = KollaHändelse(maskincykel); händelsecykel = NästaHändelse(händelsecykel); } KOLLAHÄNDELSE: switch(grundtyp) { case 1:/* Exempelvis att någon enhet gör DMA åtkomst */ break; case 2:/* Grafikprocessor */... case 3:... }

Grafik och ljud Uppdelat i arbete som berör exekveringen eller inte Förändringar sparas i buffert Genererar data i ett separat arbetssteg

Implementation Exekvering i steg motsvarande en viss tid (skärmsvep) Konverterar generell data till/från emulatorkärnan till/från plattformspecifik implementation while(1) { HandleInput(); ExecuteCPU(); GenerateSound(); while(!NextTimeStep()) { GenerateGFX()... }... }

Sammanfattning Kunskap i minsta detalj Virtuell maskin Händelsestyrd Mycket hög kompatibilitet Enkel att implementera på olika plattformar Ej extern synkronisering Ej lämplig för datorer med flera exekverande processorer