EDA 45 - Digital och Datorteknik Dagens föreläsning:, Arbetsboken kapitel 5-8 Ur innehållet: Läs- och skrivbart minne Dataväg med manuell styrenhet Centralenhetens t arbetssätt: FETCH/EXECUTE Vi ansluter flaggregister och väljarfunktion Cin 2
Väljarfunktion för Cin G=g g 0 f3 f2 f f0 U = f(d,e,f,cin) Operation Resultat 0 0 0 0 Bitvis nollställning 0 0 0 0 D 0 0 0 E 0 0 Bitvis invertering D k 0 0 0 Bitvis invertering E k 0 0 Bitvis OR D OR E 0 0 Bitvis AND D AND E 0 Bitvis XOR D XOR E 0 0 0 D + 0 + Cin D + Cin 0 0 D + FF 6 + Cin D + Cin 0 0 D + E + Cin 0 D+D+Cin 2D+Cin 0 0 D +E k +Cin D E +Cin 0 Bitvis nollställning 0 0 Bitvis nollställning 0 Bitvis ettställning FF 6 G=2 (,0)=g 3 Flaggregister (Condition Codes register) Vid g 2 =0 och LD CC = överförs ALU ns flaggor till CC. CC kan också laddas från bussen (g 2 =). Med OE CC förs innehållet i CC till bussen 4
Vi ansluter minne till en centralenhet t 5 Pi Principi Läs-/ Skriv- minne 6
Dataväg utökad med minne LD A A LD B B LD T T (Adress) Data xxxxxxxx 600 0 xxxxxxxx f0 f f2 f3 Cin ALU C V Z N LD MA MA LD R R MW MR Minne Adress Data OE A OE B OE R RTN: FE FF xxxxxxxx xxxxxxxx Att skriva till minne: data M(MA) Att läsa från minne: M(MA) data 7 Random Access Memory (RAM) Alla minnets delar har samma åtkomsttid. centralenhet primär- minnessystem adressering styrsignaler dataöverföring 8
RAM - Minnestyper Volatile ( Flyktigt ) innehållet försvinner vid spänningsbortfall, vid spänningstillslag är innehållet oftast slumpmässigt bestämt. Kallas ofta RAM. RWM (Read Write Memory) NON Volatile ( Icke flyktigt ) behåller sitt innehåll även efter spänningsbortfall ROM (Read Only Memory) programmeras vid tillverkningen, innehållet kan därefter inte ändras PROM (Programmable ROM) minnestypen kan programmeras (kräver speciell utrustning) en gång EPROM (Erasable PROM) minnestypen kan programmeras och raderas med speciell utrustning FLASH minnestypen kan programmeras/raderas utan speciell typ av utrustning 9 Snabb tillbakablick bli k Skriv/läs-minnen, kallas ibland dataminne Williamstub Kärnminnen Halvledarminnen, SRAM/DRAM Läs-minnen, kallas ibland Programminne Halvledarminne, ROM Halvledarminne, EPROM Halvledarminne, FLASH 0
Williamstuben, 946-950950 Första elektrostatiska minnet Bilden visar 32 st. 40-bitars ord och en 20-bitars sidadress (Ferranti Mark I) Elektronstrålens efterlysning (minnestid) c:a 0,2 sek. Metallplatta framför skapar kondensator för varje minnesbit. Lagrad nolla Lagrad etta Kärnminne c:a 950-975975 Skrivström, läsström riktning anger lagrad nolla eller etta 2
Halvledarminnen l 966 Statiskt RAM (SRAM) 6 transistorer/-bit 28-bit RAM (IBM System/360 Model 45 primärminne) jämförd med kärnminne. WL =, väljer denna cell. (M 5 och M 6 leder). Minneselementet har två stabila tillstånd: BL= och BL = 0 BL=0 och BL = 0 (Jämför med SR-latch) 256-bit TTL RAM (Fairchild) 3 Dynamiskt RAM (DRAM) 970 Intel i03 024-bit Dynamiskt RAM Endast en transistor krävs för att lagra en bit. Kräver refresh eftersom kondensatorn laddas ur efter hand. (Jämför med Wiliamstuben) 4
ROM (965) 0 ord 0 ord ord 2 ord 3 ord 4 0 ord 5 ord 6 ord 7 A 2 A A 0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit bit 0 Intel 330, 024-bit ROM Dioder (ettor) placeras i diodmatrisens skärningar vid tillverkningsprocessen, maskprogrammerade 5 EPROM (97) Dov Frohman uppfann EPROM (Intel) Intel 702, EPROM. UV-ljus användes för att radera minnet. Intel EPROMprogrammerare (97) 6
FLASH 988 MINNE STYRKRETS NAND-FLASH BLOCK -minnes åtkomst NOR-FLASH 7 Läs-cykel Exempel: Kopiera minnesinnehåll på adress (FF) 6 till register A LD A A M(FF) LD B B LD T T f0 f f2 f3 Cin ALU C V Z N LD MAR MAR FF LD R FF R MW MR Minne Adress Data OE A OE B OE R Cykel Operation (RTN) Aktiva styrsignaler Beskrivning i (FF) 6 R f 3,f 2,f,f 0, LD R F(5), dvs f 3 =,f 2 =f =f 0 =. dvs. FF placeras i R 2 R MAR OE R, FF kopplas till bussen. Vid klockpuls laddas MAR LD MAR 3 M(MAR) AA MR Lässignal till minnet LD A Vid klockpuls laddas minnesinnehåll i A 8
Arkiv -> Datavägen ->Dataväg med RWM Exempel: Addera minnesinnehållen på adress 04 6 och 05 6 och spara resultatet på adress 06 6. 9 Lösning: Vi börjar med att placera 24 6 på adress 04 6 och 3 6 på adress 05 6. (För att kunna kontrollera styrsignalsekvensen) OE LD Mem ALU Funk Source RTN S A B R A B T R R W 3 2 0 Cin 2 24 04 24 M(04) 2 3 05 3 M(05) 20
Nu till utförandet: Läs första operanden från minnet till register T. Läs därefter andra operanden och utför ALU-operationen, spara resultatet i register R Skriv tillbaks resultatet till minnet från register R OE LD Mem ALU Funk Source RTN S A B R A B T R R W 3 2 0 Cin 2 3 04 M(04) T 4 00 05 M(05)+T R 5 06 R M(06) 2 Program och minne John Louis Von Neumann (903-957) Det lagrade programmets princip, dvs program och data i samma minne. Maskinprogram i minnet Tillhörande assemblerprogram Instruktion Adress Data 22
Maskininstruktioner i kti EXEMPEL: (Adress) 6 00 0 02 03 04 05 Innehåll 00000000 0000 0000 00000 000 0000 instruktion instruktion 2 instruktion 3 FE FF xxxxxxxx 00000000 data Kan ha olika INSTRUKTIONSFORMAT 23 Instruktionsformat t Exempelvis: ADDB Adr OP-kod Adr LDAB #data OP-kod data TFR B,A OP-kod Adress Maskinprogram 000000 2 Assemblerprogram 00000 2 00000 2 00 2 0000000 2 000 2 000000 2 00000 2 00000 2 Instruktion operand- mnemonic information Byte-wide 8 bitar data på varje adress 24
Exempel: Instruktionen Clear Följande instruktionsbeskrivning specificerar Clear. Instruktionen nollställer operanden och finns i olika varianter: CLRA nollställ register A CLRB nollställ register B CLR <ADR> nollställ minnesinnehåll Instruktion Adressering Operation Flaggor Clear Variant metod OP # ~ N Z V C CLRA Inherent 47 4 0 A 0-0 CLRB Inherent 48 4 0 B 0-0 CLR <ADR> Absolute 49 2 5 0 M(ADR) 0-0 Antag att vi placerar instruktionssekvensen i minnet med start på adress 0, minnet skulle då få följande utseende: CLRA 0 0000 OP-kod, (47) 6 CLRB 02 000000 OP-kod, (48) 6 CLR (55) 6 03 00000 OP-kod kod, (49) 6 04 0000 operandinformation,(55) 6 25 Dataväg för program i minne N Z V C b3 b2 b b b0 26
Centralenhetens t instruktionsbearbetning b t i I sin enklaste form kan bearbetningen av en instruktion delas in i två faser FETCH EXECUTE Hämta maskininstruktion från minne Utför maskininstruktion 27 Instruktionshämtning t i FETCH Cykel Operation Aktiva Beskrivning (RTN) styrsignaler PC MA PC+ PC OE PC,LD MA INC PC Innehållet i PC adresserar minnet Uppdateras för att peka på nästa minnesposition 2 M(MA) I MR,LD I Läsning från minnet till instruktionsregistret. Vid instruktionshämtning placeras operationskoden som PC pekar på i instruktionsregistret. LDA A LDB B f3 f2 f f0 0 0 C 2 C 3 gg0 LDR LDT ALU R T g2 0 LDPC INC PC MW MR LDMA MA Adress Minne Data PC räknas upp och pekar därefter på antingen en operand eller en ny instruktion. OEA LDI OEB I OER styrsignaler LDCCR OECCR CCR OEPC N Z V C operationskod flaggor Reset Styrenhet 28
Aki Arkiv -> Datavägen ->Dataväg med manuell styrenhet t Nya register i datavägen: S Stackpekare, speciellt register med flera viktiga funktioner. X Generellt register för adressinformation 29 FETCH - Hämtningsfas EXEMPEL: PC = (0C) 6 State RTN Styrsignaler Kommentar 0 PC MA, OE PC =, Adressen till LD MA =, instruktionens PC+ PC operationskod kopieras IncPC=. från PC till minnesadressregistret MA. Adressen som finns i PC ökas med ett. MI MR=, Läs operationskoden LD I =. från minnet. Placera den i instruktionsregistret I. Nästa state skall vara det första i EXECUTE- sekvensen. FETCH Det förutsätts alltså att det finns en operationskod på denna adress.. 30
EXECUTE - Utförandefas Utförandefasen är unik för varje instruktion. Exempel: INCA Detaljerad beskrivning av instruktionen Instruktionsformat OP-kod INCA RTN: A + A Increment register A Flaggor: N: Ettställs om resultatets teckenbit (bit 7) får värdet. Z: Ettställs om samtliga åtta bitar i resultatet blir noll. V: Ettställs om 2-komplementoverflow uppstår. C: Ettställs om summan ej ryms i åtta bitar, dvs blir lika med 256. I detta fall ettställs även Z. State RTN Styrsignaler Kommentar 0 A+ R, OE A =, ALU-funktionen (000) utför A+0+Cin. Flaggor CC f 3 =, g 0 = väljer Cin =. g 0 =, LD R =, LD CC = Resultatet överförs till R. ALU ns flaggor (NZCV) överförs till flaggregister CC. CC R A OE R =, LD A = NF= Resultatet från operationen (i R) återförs till register A. Nästa klockcykel skall vara den första i ny FETCH-sekvens. NF EXECUTE NF 3 Exempel: LDAA #data Instruktionsformat OP-kod data Detaljerad beskrivning av instruktionen LDAA #data Load A Immediate RTN: Data A Flaggor: Påverkas ej. Beskrivning: Laddar dataord från instruktionen till register A. Statet RTN Styrsignaler Kommentar 0 PC MA, PC+ PC OE PC =, LD MA =, IncPC=. M A MR=, LD A =, NF= Instruktionens datadel finns i minnesordet efter OP-koden. När EXECUTE-sekvensen inleds pekar PC på instruktionens datadel. PC kopieras därför över till minnesadressregistret MA så att datadelen d kan läsas från minnet under nästa klockcykel. k k l Innehållet i PC ökas med ett, så att PC pekar på nästa adress i minnet där OP-koden för nästa instruktion skall finnas. Läs instruktionens datadel "Data" från minnet och placera den i A-registret. t Nästa klockcykel skall vara den första i ny FETCH-sekvens. 32
Exempel: LDAA Adr Instruktionsformat OP-kod Adr Detaljerad beskrivning av instruktionen LDAA Adr Load A from memory RTN: Data A Flaggor: Påverkas ej. Beskrivning: Laddar dataord från minnet till register A. State RTN Styrsignaler Kommentar 0 PC MA, OE PC =, Adressen till Adr, dvs PC, vid execute-fasens början, PC+ PC LD MA =, adresserar minnet för att kunna läsa Adr. IncPC=. M MA MR=, Adr läses och placeras direkt i MA för att vi i nästa fas ska LD MA =, kunna adressera minnet. 2 M A MR=, Data från Adr läses... LD A =, NF=... och placeras i register A. Nästa klockcykel skall vara den första i ny FETCH-sekvens. 33 Centralenhetens t arbetsätt RESET FETCH EXECUTE NF NF NF NF NF NF RESET FETCH EXECUTE 34
RESET - Återställningsfaställ S RTN- Styrsignaler Kommentar beskr Talet FF 6 i R-registret kopplas ut på bussen. Bussinnehållet laddas i minnesadressregistret vid nästa klockpuls. Minnesinnehållet på adressen FF 6 läses. Det dataord som läses placeras i PC vid nästa klockpuls. Nästa klockcykel skall vara den första i FETCHsekvensen. (Starttillstånd) RESET 0 FF 6 R ALU-fkn = F 6, LD R =. R MA OE R =, LD MA =. ALU-funktionen väljs så att talet FF 6 finns på ALU:ns utgång. Laddingången på R- registret ettställs så att utvärdet från ALU n (FF 6 ) laddas i R-registret vid nästa klockpuls. 2 M PC MR=, Minnesinnehållet på LD PC =. I exemplet placeras adressen 0C i PC. En instruktion förutsätts finnas på denna adress. 35