INF1400 Kap4rest Kombinatorisk Logikk

Like dokumenter
Forelesning 5. Diverse komponenter/større system

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

INF2270. Boolsk Algebra og kombinatorisk logikk

IN1020. Logiske porter om forenkling til ALU

INF1400. Digital teknologi. Joakim Myrvoll 2014

Repetisjon digital-teknikk. teknikk,, INF2270

Datamaskinens oppbygning

INF2270. Datamaskin Arkitektur

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

INF2270. Datamaskin Arkitektur

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

UNIVERSITETET I OSLO

Repetisjon. Sentrale temaer i kurset som er relevante for eksamen (Eksamen kan inneholde stoff som ikke er nevnt her)

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

INF2270. Sekvensiell Logikk

Dagens temaer. Sekvensiell logikk: Kretser med minne. D-flipflop: Forbedring av RS-latch

En mengde andre typer som DVD, CD, FPGA, Flash, (E)PROM etc. (Kommer. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til:

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Forelesning 9. Registre, tellere og minne

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

SIE 4005, 2/10 (2. Forelesn.)

Løsningsforslag INF1400 H04

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT4160 AUGUST, 2008, 09:00 13:00

INF1400. Sekvensiell logikk del 1

IN1020. Datamaskinarkitektur

Dagems temaer INF ! Fra kapittel 4 i Computer Organisation and Architecture. ! Kort om hurtigminne (RAM)

INF1400. Kombinatorisk Logikk

Forelesning 7. Tilstandsmaskin

SIE 4005, 9/10 (4. Forelesn.)

INF1400. Tilstandsmaskin

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and. ! Kort repetisjon fra forrige gang

INF1400. Tilstandsmaskin

Maskinvaredelen av INF 103: oversikt og innhold (1)

Intel Core i7. Omid Mirmotahari 4

! Sentrale begreper er adresserbarhet og adresserom. ! Adresserbarhet: Antall bit som prosessoren kan tak samtidig i én operasjon

Forelesning 6. Sekvensiell logikk

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

UNIVERSITETET I OSLO

INF1400. Sekvensiell logikk del 1

Kapittel 4: Microarchitecture level

Kapittel 6. Høynivå møter lavnivå Fra C til assembly Fra assembly til maskinkode Linking og lasting

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

INF1400. Kombinatorisk Logikk

UNIVERSITETET I OSLO

Hvorfor lære om maskinvare*?

Kapittel 5 Tilstandsmaskin

Forelesning Instruksjonstyper Kap 5.5

PENSUM INF1400 H11. Joakim Myrvoll Johansen. Digital Design, M. Morris Mano, 4th edition

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Løsningsforslag til 1. del av Del - EKSAMEN

Datamaskinens virkemåte

Oppsummering av digitalteknikkdelen

Oppsummering digital-teknikk, teknikk, INF2270

Generell informasjon

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

UNIVERSITETET I OSLO

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens temaer. Dagens temaer er hentet fra P&P kapittel 3. Motivet for å bruke binær representasjon. Boolsk algebra: Definisjoner og regler

IN1020. Sekvensiell Logikk

INF1400. Karnaughdiagram

Fys 3270/4270 høsten Laboppgave 2: Grunnleggende VHDL programmering. Styring av testkortets IO enheter.

IN 147 Program og maskinvare

Bussar. Tilgong til buss (Three state buffer) Synkron / Asynkron Serielle bussar Parallelle bussar Arbitrering: Kven kontrollerar bussen

Forelesning 4. Binær adder m.m.

Institiutt for informatikk og e-læring, NTNU CPUens deler og virkemåte Geir Ove Rosvold 4. januar 2016 Opphavsrett: Forfatter og Stiftelsen TISIP

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

Dagens temaer. Intern hukommelse (1) Maskinvaredelen av INF 103: oversikt og innhold (2) Maskinvaredelen av INF 103: oversikt og innhold (1)

Introduksjon til DARK assembly

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

TDT DESEMBER, 2008, 09:00 13:00

Datamaskiner og operativsystemer =>Datamaskinorganisering og arkitektur

Institiutt for informatikk og e-læring, NTNU Kontrollenheten Geir Ove Rosvold 4. januar 2016 Opphavsrett: Forfatter og Stiftelsen TISIP

MAX MIN RESET. 7 Data Inn Data Ut. Load

INF3340/4431. Tilstandsmaskiner

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Notater: INF2270. Veronika Heimsbakk 10. juni 2014

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

INF3340/4340. Synkrone design Tilstandsmaskiner

INF3340. Tilstandsmaskiner

VLSI (Very-Large-Scale-Integrated- Circuits) it Mer enn porter på samme. LSI (Large-Scale-Integrated-Circuits)

SIE 4005, 8/10 (3. Forelesn.)

En oppsummering (og litt som står igjen)

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

! Dekoder: En av 2 n output linjer er høy, avhengig av verdien på n inputlinjer. ! Positive tall: Som før

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

befinner seg. Deretter leses instruksjonen fra i registerfilen ved ny stigende klokkepuls.

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Stack. En enkel, lineær datastruktur

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

EKSAMEN I FAG TFE4101 KRETS- OG DIGITALTEKNIKK, LF DIGITALTEKNIKKDELEN AV EKSAMEN (VERSJON 1)

Eksamen INF2270 våren 2018

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

UNIVERSITETET I OSLO

Transkript:

INF4 Kap4rest Kombinatorisk Logikk

Hovedpunkter Komparator Dekoder/enkoder MUX/DEMUX Kombinert adder/subtraktor ALU FIFO Stack En minimal RISC - CPU

Komparator Komparator sammenligner to tall A og B 3 utganger: A=B, A>B og A<B Eksempel: 4-bits komparator Utgang A=B Slår til hvis A =B og A =B og A 2 =B 2 og A 3 =B 3 Kan skrives: (A B ) (A B ) (A 2 B 2 ) (A 3 B 3 )

Komparator - eksempel Utgang A>B slår til hvis: (A 3 >B 3 ) eller (A 2 >B 2 og A 3 =B 3 ) eller (A >B og A 2 =B 2 og A 3 =B 3 ) eller (A >B og A =B og A 2 =B 2 og A 3 =B 3 ) Kan skrives: (A 3 B 3 ) + (A 2 B 2 ) (A 3 B 3 ) + (A B ) (A 2 B 2 ) (A 3 B 3 ) + (A B )(A B ) (A 2 B 2 ) (A 3 B 3 )

Komparator - eksempel Utgang A<B slår til hvis: (A 3 <B 3 ) eller (A 2 <B 2 og A 3 =B 3 ) eller (A <B og A 2 =B 2 og A 3 =B 3 ) eller (A <B og A =B og A 2 =B 2 og A 3 =B 3 ) Kan skrives: (A 3 B 3 ) + (A 2 B 2 ) (A 3 B 3 ) + (A B ) (A 2 B 2 ) (A 3 B 3 ) + (A B )(A B ) (A 2 B 2 ) (A 3 B 3 )

Komparator - eksempel

Dekoder Dekoder tar inn et binært ord, gir ut alle mintermer Eksempel: 3bit inn / 8bit ut

Dekoder - sannhetstabell Eksempel: 3bit inn Utganger Innganger y z D D D 2 D 3 D 4 D 5 D 6 D 7

Dekoder varianter Enable input: Enable aktiv - normal operasjon. Enable inaktiv - alle utganger disablet NAND logikk: Inverterte utganger Eksempel Aktiv lav enable inngang

Dekoder - parallellkobling Eksempel: Lager en 46 dekoder fra 2stk 38 dekodere med enable innganger

Dekoder generering av logiske funksjoner Dekoder - elektrisk sannhetstabell. Kan generere generelle logiske funksjoner direkte fra mintermene på utgangen S n Eksempel: Fulladder A n B n C n C n+

Enkoder Enkoder motsatt av dekoder Eksempel: 83 enkoder Innganger Utganger D D D 2 D 3 D 4 D 5 D 6 D 7 y z = D 4 + D 5 + D 6 + D 7 y = D 2 + D 3 + D 6 + D 7 z = D + D 3 + D 5 + D 7 Antar at det ikke eksisterer andre inngangskombinasjoner

Enkoder Eksempel D D 2 D 4 D 6 z = D 4 + D 5 + D 6 + D 7 y = D 2 + D 3 + D 6 + D 7 z = D + D 3 + D 5 + D 7 Y X D D 3 D 5 D 7

Prioritets-enkoder Problem i enkodere: Hva hvis man får flere ere inn samtidig? Løsning: Prioritets-enkoder Hvis flere ere inn - ser kun på inngang med høyst indeks (prioritet) Eksempel: 83 prioritets-enkoder D D D 2 Innganger D 3 D 4 D 5 D 6 D 7 Utganger y z

Prioritets-enkoder Eksempel: utgang 42 prioritets-enkoder med valid V signaliserer at minst en inngang er

Multiplekser Multiplekser (MUX) velger hvilke innganger som slippes ut Hver inngang kan bestå av ett eller flere bit A B C UT N Select

MUX Eksempel: 2- MUX Implementasjon Symbol

MUX Eksempel: 4- MUX

MUX Eksempel: 2- MUX

Demultiplekser Demultiplekser motsatt av multiplekser INN A B C N Select

ALU ALU Arithmetic Logic Unit Generell regneenhet Eksempel: SN74LS8 4bit utbyggbar ALU 3 forskjellige operasjoner

ALU - SN74LS8

FIFO FIFO First in first out (mellomlagringsenhet, buffer) Eksempel: 4bit bred / 24bit dyp FIFO Shift register 24bit Data inn 4-bit Shift register 24bit Shift register 24bit Shift register 24bit Data ut 4-bit CLK

Stack Stack Mellomlagringsenhet for data, data kommer inn (push) og ut (pop) i samme ende Eksempel: 3bit bred / 4bit dyp stack Data in/ut 3-bit S S S oe (push/pop) A3 A2 A A Bidireksjonalt shift register 4bit A3 A2 A A Bidireksjonalt shift register 4bit A3 A2 A A Bidireksjonalt shift register 4bit CLK

CPU CPU Central Processing Unit Hjernen i en vanlig seriell datamaskin Von Neuman prinsippet all data som skal behandles må innom CPU en En CPU styres av programkode. Denne koden består av et sett med lavnivå (maskinkode) instruksjoner Maskinkode-instruksjoner er det laveste nivået man kan programmere på Programmering direkte i maskinkode kan i teorien gi optimale programmer (hastighet/plass), men blir fort ekstremt tungvint og uoversiktlig for større program

RISC - CPU RISC Reduced Instruction Set Computer (få maskinkodeinstruksjoner) RISC-prinsippet regnes i dag (av mange) som meget effektivt Dess færre maskinkodeinstruksjoner man har til rådighet dess flere mellomoperasjoner må man utføre Dess færre maskinkodeinstruksjoner man har dess raskere kan de utføres (til en viss grad) RISC prosessorer tar i utgangspunktet mindre plass enn CISC (Compleks Instruction Set Computer) prosessorer

En minimal RISC - CPU Vi vil nå presentere en ekstrem RISC prosessor med kun 6 instruksjoner. (Pentium4 CISC har >2) Den følgende RISC prosessoren er kraftig forenklet, men er fullt funksjonell, og med mer minne kan den utføre alle oppgaver man kan forvente av en vanlig CPU Den følgende RISC prosessoren kunne ha vært forenklet ytterligere men dette er ikke gjort av pedagogiske grunner

Komplett CPU: 4-bit databuss / 3bit adressebuss

Virkemåte Alle flip-flopper, registre og programteller klokkes av ett felles klokkesignal Innholdet i programtelleren angir adressen til neste instruksjon i programminnet. Programtelleren øker instruksjonsadressen med for hver klokkeperiode (hvis den ikke skal gjøre et hopp) Når en ny instruksjon (kontrollord) lastes ut av programminnet vil de 6 første bittene i kontrollordet (OP-koden) direkte styre hva som skjer i systemet: Siste del av kontrollordet (3bit) brukes til å angi adresse i dataminnet for hvor data skal inn/ut evt. adresse i programminnet for hopp

Kontrollord (OP kode) Bit nr. 8 (load) styrer en MUX som velger om data inn til dataminne skal komme utenifra (IO) eller fra Y register Bit nr. 7 (branchnz) (hopp hvis resultat ikke er ) avgjør om programteller skal telle opp eller laste inn ny adresse (parallell load) hvis siste beregning i ALU ikke gir Bit nr. 6 (write) styrer om dataminnet skal lese ut data eller skrive inn ny data. (data som blir lest inn vil samtidig være tilgjengelig ut i dette systemet)

Kontrollord (ALU) ALU-en utfører 3 operasjoner samtidig ) Addisjon av nåværende data med forrige data (fra X registret) 2) Bitvis NAND av nåværende data med forrige data 3) Høyre shift av nåværende data Bit nr. 5 (shift) velger det høyre-shiftede resultatet ut fra ALU-en Bit nr. 4 (NAND) velger det bitvis NANDede resultatet ut fra ALU-en Bit nr. 3 (ADD) velger addisjons resultatet ut fra ALU-en

Kontrollord (adressedel) Bit nr. 2 (A2) bit nr.2 i adresse for hopp Bit nr. (A) bit nr. i adresse for hopp / data Bit nr. (A) bit nr. i adresse for hopp / data

En minimal RISC - CPU Kommentarer: Ordbredden på databussen er her satt til 4bit. Man kan uten videre utvide denne til 32-64bit hvis behov Antall ord i data/programminnet (her valgt til 4/6) kan utvides til hva man måtte ønske Lengden på OP-koden kan reduseres hvis man bruker binær koding ALU-en kan utvides med flere direkte regneoperasjoner for å spare mellomregninger Man kan legge inn muligheten av å direkte legge inn faste verdier (immediate) i dataminnet for å spare mellomregninger

Komplett CPU: Funksjonell Diglog-implementasjon

Maskinkode-instruksjoner (kontrollordet i programminnet) Bit nr. 8 7 6 5 4 3 2 Hent data fra angitt minneadresse og utfør ADD med forrige data Hent data fra angitt minneadresse og utfør BIT-NAND med forrige data Hent data fra angitt minneadresse og shift data ett bit til høyre Skriv data til angitt minneadresse Load data fra IO til angitt minneadresse Hopp til angitt programadresse hvis forrige data ikke ble Load BranchNZ W ShiftR NAND ADD A2 A A X A A X A A X A A X X X X A A X X X X A A X X X A2 A A

RISC program-eksempler Eksempel : Ta inn to tall fra IO, adder tallene og gi svaret til IO. Løsning:. Les inn første tall fra IO, og legg det i dataminne nr. Maskinkode:. Les inn neste tall fra IO, og legg det i dataminne nr. Maskinkode: 2. Hent ut siste tall fra dataminne (legges i X reg) Maskinkode: 3. Les ut første tall fra dataminne, og utfør ADD med forrige tall (som er innholdet i dataminne ) Maskinkode: 4. Skriv resultat til (for eksempel) dataminne nr. Maskinkode: (Databussen er direkte synlig for IO)

RISC program-eksempler Eksempel 2: Implementasjon av for-løkke Java kode Hva vi setter CPU til å gjøre int k; // velger dataadresse int n; // velger dataadresse k = IO.inInt(); // Henter k fra IO for (n=; n<k; n++) ; // Her kan man legge hva som helst // k = k-, hopper tilbake hvis k // Neste instruksjon *Vår RISC kan ikke subtrahere direkte. Legger derfor først inn (2er komplement for -) i dataminne. Kan så addere - til k underveis i løkken

RISC program-eksempler Eksempel 2: Implementasjon av for-løkke. Les inn - () fra IO (for enkelhetens skyld) og legg det i dataminne nr.. Maskinkode:. Les inn k fra IO, og legg det i dataminne nr.. Maskinkode: 2. Hent fram - fra dataminne. Maskinkode: 3. Hent fram k fra dataminne og ADD med forrige data (-). Maskinkode: 4. Lagre resultat til k. Maskinkode: 5. Hopp til program linje nr. 2 hvis resultatet ikke var. Maskinkode:

Hovedpunkter Komparator Dekoder/enkoder MUX/DEMUX Demultiplekser Kombinert adder/subtraktor ALU FIFO Stack En minimal RISC - CPU