Den Digitala Logiska Nivån och Datarepresentation • Inledning • • • • Den digitala logiska nivån Datarepresentation Sammanfattning Övrigt Inledning • Mobiltelefon AV • STÄLL FRÅGOR! • Vem är föreläsaren? • Varför hålls denna föreläsning? Vem är föreläsaren? • Johan Kummeneje • Doktorand • Forskar sociala agenter och rationellt beslutsfattande. Varför hålls denna föreläsning? • Mina mål med den här föreläsningen är att: – Ni skall känna till de grundläggande begreppen (instruktion, etc) – Ni skall veta vad en (digital logisk) grind är, och förstå kopplingen till boolesk algebra – Ni skall ha ett hum om alternativa approacher – Ni skall känna till hur man representerar olika former av information Den Digitala Logiska Nivån och Datarepresentation • Inledning • Datarepresentation • Den digitala logiska nivån • Sammanfattning • Övrigt Datarepresentation • • • • • • • • • Inledning Primitiva datatyper Maskininstruktioner MIME Ljudformat Bildformat Filmformat Komprimeringsformat Sammanfattning Inledning • Hittills binärt, vilket inte räcker till för att representera text, bilder etc • Därför använder vi mer komplexa datatyper och lagringsformat • Data är ofta redundant, därför kan man ofta komprimera • Använder det binära talsystemet vid representation av siffror och tecken. Primitiva Datatyper • • • • Heltal Flyttal Boolean Tecken – ASCII (American Standare Code for Information Interchange) – EBCDIC (Extended Binary Coded Decimal Interchange Code) – UNICODE Primitiva Datatyper - Heltal 1 • Heltal kan represeneras av olika storlek direkt av hårdvaran, t ex på PC-datorer 32bitars tal (232) • Finns i t ex Java byte (8 bitar), short (16 bitar), int (32 bitar) och long (64 bitar) Primitiva Datatyper - Heltal 2 • Heltal kan representeras unsigned eller signed • EX: (2 bitar för att göra det enkelt) Binärsekvens 00 01 10 11 -1 Signed 0 +1 -2 3 Unsigned 0 1 2 Primitiva Datatyper - Heltal 3 • För att representera negativa tal använder man vanligen Tvåkomplementmetoden, EX: Binärt 00000000 00000001 00000010 …… 01111110 01111111 10000000 Decimalt 0 1 2 126 127 -128 Binärt 10000001 10000010 ….. 11111101 11111110 11111111 Decimalt -127 -126 -3 -2 -1 Primitiva Datatyper - Flyttal • Flyttal brukar delas upp i tre delar: – Tecken (+/-) – Exponent – Mantissa • EX: • Talet -1.5 kan representeras som : • 1|001|0101 Tecken Exponent Mantissa Primitiva Datatyper - Boolean • Booleanska värden antar som bekant bara två tillstånd SANT eller FALSKT • Därför kan de direkt representeras i en bit i minnet • Smarta implementationer lägger samman flera booleanska värden i samma byte/ord Primitiva Datatyper - Tecken • Tecken brukar i allmänhet representeras av heltal (7, 8 eller 16 bitar) • Representationen av tecken är standardiserad på flera sätt: – ASCII (American Standard Code for Information Interchange), Den absolut vanligaste, enligt standard enbart 7 bitar, men ofta 8 bitar för att representera specialtecken. – EBCDIC (Extended Binary Coded Decimal Interchange Code) 8bitar, inte så vanlig – UNICODE (försöker representera alla världens alfabet) 16 bitar Maskininstruktioner • Kod i form av maskininstruktioner representeras i minnet (Von Neumann). • Varje instruktion kan variera i storlek, och i antalet argument den tar. • EX: NOP (no operation) är 10010000 på en 8086/8088-processor, och tar inga argument • EX2: ADD (addition) har flera argument 000000dw mod reg /m MIME • MIME - Multipurpose Internet Mail Extensions • ”MIME extends the format of Internet mail to allow non-US-ASCII textual messages, non-textual messages, multipart message bodies, and non-US-ASCII information in message headers.” Ljudformat • Kan ha förstörande eller icke-förstörande komprimering • T ex MP3, MIDI, WAV, AU • Innebär ett antal diskreta stickprov, med viss upplösning - SAMPLING • Innebär en digital approximering av ljudets analoga form Bildformat • Kan ha förstörande eller icke-förstörande komprimering • T ex GIF, JPEG, TIF, BMP • Brukar vanligen bestå av : Header Data (kan vara komprimerad) Filmformat • Kan ha förstörande eller icke-förstörande komprimering • T ex MPEG, AVI, QuickTime • Beskriver oftast bara skillnaderna mellan två på varandra följande bilder. MPEG Exempel Komprimeringsformat • Huffman-kodning • LZW-kodning (Lempel, Ziv, Welch) • Run Length Encoding (RLE) Komprimering - Huffman • Huffman kodning bygger på att inte alla tecken eller sekvenser förekommer lika ofta, därför behöver man inte representera alla tecken med t ex 8 bitar, utan de vanligaste kan representeras med färre bitar, och de mest ovanliga kan behöva fler. • Vinsterna kan bli stora. Huffman Exempel • Okomprimerat : MISSING IN MISSISIPPI = 20 bytes (exkl. mellanslag) • Frekvens tabell och tilldelning : – – – – – – M = 2 =>001 I = 7 => 01 S = 6 => 10 N = 2 => 110 G = 1 => 1110 P = 2 => 0001 • Komprimerat : 001 01 10 10 01 110 1110 01 110 001 01 10 10 01 10 10 01 0001 0001 01 = 6,25 bytes (exkl mellanslag) Komprimering - LZW • Lempel-Ziv-Welch-algoritmen bygger på att samma sekvenser återkommer ofta i t ex rastrerade bilder eller i text (ordet the i engelskan t ex). • Bygger upp ett lexicon med de vanligast förekommande sekvenserna. LZW Exempel • Okomprimerat : MISSING IN MISSISIPPI = 20 bytes (exkl. mellanslag) • 0-255 vanlig ascii • 256 : ISS • 257 : IN • N.B. Nu 12 eller 16 bitars representation (vi väljer 12 bitar=4096 komb). • Komprimerat : M 256 257 G 257 M 256 256 I P P I = 12 poster a 12 bit => 18 bytes (exkl mellanslag) Komprimering - RLE • Run Length encoding bygger på att i många datafiler (t ex bilder) är många närliggande pixlar av samma färg. • Ex: Mönstret 000000000011110000000000 är en bild i svartvitt, det skulle istället kunna skrivas som 10x 0, 4x1, 10x0, vilket i datarepresentation blir 0A,00,04,01,0A,00, vilket är kortare än den ovanstående sekvensen. Komprimerings Exempel Jämförelse • Huffman : – + några tecken förekommer ofta, – - Lika många av varje tecken • LZW – + återkommande kombinationer, t ex språk – - om det är få upprepningar • RLE – + långa följder av samma tecken – - Förändring av nästkommande tecken ofta Sammanfattning • Det finns ett antal sätt att representera information på, t ex format för bilder eller heltal. • Mycket av data/information är redundant och kan således komprimeras med olika metoder beroende på typen av data Den Digitala Logiska Nivån och Datarepresentation • Inledning • Datarepresentation • Den digitala logiska nivån • Sammanfattning • Övrigt Den digitala logiska nivån • Inledning • Grundläggande begrepp • Kopplingen mellan grindar och boolesk algebra • Grundläggande digitala logiska grindar • Alternativa utgångspunkter • Sammanfattning Inledning Tillämpningsprogram Högnivåspråk, (t ex Pascal) Assemblyspråk OperativSystem Maskin Instruktioner Mikro Instruktioner Digital Logik Elektroniska komponenter Grundläggande begrepp • Processor • Datarepresentation • Input/Output Grundläggande begrepp Processorn 1 • Grind - implementeringen av grundläggande logiska operationer • Instruktion - t. ex. hämta informationen på minnesadress 1000 • Exekvering - utförandet av instruktioner • Adress - minnesadress, dvs en position i minnet • Klocka - styr hur ofta CPU:n skall behandla nya instruktioner (”hur snabb datorn är”) Grundläggande begrepp Processorn 2 • CPU - Central Processing Unit, den s k hjärnan, består av en ALU och en CU • MPU - Micro Processor Unit, samma sak som en CPU • ALU - Arithmetic Logic Unit, beräkningsenheten i hjärnan • CU - Controll Unit, ser till att instruktionerna utförs i rätt ordning Grundläggande begrepp Processorn 3 • Register - ett register lagrar ett ord (se nedan) som processorn kan arbeta på. Några typer av register är: – status/flagg – adress • PC - Program Counter , eller programräknaren, håller reda på var i programmet exekveringen är. • Ackumulator- är en speciell typ av register, som vanligen är anslutna till ALU:ns utmatning. Grundläggande begrepp Processorn 4 • Stack - på stacken läggs alla temporära variabler, och används ofta till att hantera avbrott och subrutiner (lägga upp PC:n på). • Stackpekare - pekar ut toppen på stacken. • IRQ - Interrupt ReQuest, eller avbrott i exekveringen, innebär att genom att låta vissa händelser trigga, kan vi ta hand om dessa händelser på en gång, och sedan återgå till det vi höll på med. Grundläggande begrepp Representation • Bit - minsta representerbara enheten, en s.k. IT-atom, kan anta värdena 0 och 1 • Nibble - en grupp om 4 bit(ar) • Byte - en grupp om 8 bit(ar) • Ord (word) - en grupp om 8-64 bit(ar), datorberoende Grundläggande begrepp Input/Output (I/O) 1 • ROM - Read Only Memory, dvs det går bara att läsa från det • RAM - Random Access Memory, går att läsa och skriva till hur som helst • PIO - Parallell Input/Output, är en krets (eller flera kretsar) som hanterar kommunikationen med flera perifera enheter, t ex hårddisk, tangentbord, skärm Grundläggande begrepp Input/Output (I/O) 2 • Bussar - De kanaler som datorn kan använda för att komma åt minne och andra perifera enheter, som t ex hårddisk eller tangentbord. Några typer av bussar är: – Data – Adress – Kontroll Grundläggande digitala logiska grindar och boolesk algebra • De primitiva grindarna är : – AND (och) – NOT (icke) – OR (eller) 2 in, 1 ut 1 in, 1 ut 2 in, 1 ut & 1 >1 2 in, 1 ut 2 in, 1 ut 2 in, 1 ut & >1 =1 • Sammansatta grindar är : – NAND (icke-och) – NOR (icke-eller) – XOR (exklusive-eller) Grundläggande digitala logiska grindar och boolesk algebra • Varje boolesk logisk operator (AND, OR, NOT) motsvaras av en grind. • Grindar går att kombinera ihop, till mer avancerade operationer, t ex – adderingsoperationer – jämförelseoperationer – etc. Grind Exempel 1 - XOR • använder sig av AND och NOT och OR • (a AND NOT b) OR (NOT a AND b) & 1 b >1 a & 1 c Grind Exempel 2 - Nibblejämförare • Testar om två nibbles (4 bit) är identiska • Skall ske genom att använda grindarna: – AND, NOT, OR, NAND, NOR och XOR • Man behöver inte använda samtliga • Tid för denna övning är 3 minuter Grind Exempel 2 - Lösning a0 b0 a1 b1 =1 1 =1 1 & & a2 b2 =1 1 a3 b3 =1 1 & Nibble a 0000 0000 0000 … 1001 1001 … 1111 Nibble b 0000 0001 0010 … 1001 1010 … 1111 Resultat 1 0 0 … 1 0 … 1 Grind Exempel 3 - Grindar som kommer ihåg • Med hjälp av grindar kan man komma ihåg sekvenser av spänningsnivåer, eller snarare komma ihåg en bit. & Load 1 >1 & In Out Alternativa utgångspunkter • Kvant-datorer • Trinära datorer • Det finns ytterligare alternativ som inte tas upp på denna föreläsning pga att de i grunden bygger på de ovanståendes logik: – DNA-datorer – Nano-datorer – Photonic -datorer Kvant-datorer • Arbetar med qubit (quantum bit), som befinner sig i en linjär superposition mellan 0 och 1. • Tack vare superpositionen, görs fenomenet quantum parallellism möjligt, som tillåter expontentiellt många beräkningar simultant. • Bygger på kvantmekanik. Trinära datorer • Arbetar med tre lägen : 0, 1, 2 eller om man vill Falskt, Kanske och Sant • Arbetar med s k trit, som kombineras ihop till tryte (9 trit) och tribble (3 trit) • Logiken väldigt rörig: se http://www.california.com/~mmagee/computer.html Sammanfattning • Grindar motsvarar logiska operationer • Man kan sätta samman grindar och få sammansatta operationer som t ex en Nibble-jämförare eller en minneskrets • Det finns alternativa utgångspunkter, t ex kvantdatorer och trinära datorer. Den Digitala Logiska Nivån och Datarepresentation • Inledning • Datarepresentation • Den digitala logiska nivån • Sammanfattning • Övrigt Sammanfattning • Grindar motsvarar logiska operationer • Man kan sätta samman grindar och få sammansatta operationer som t ex en Nibble-jämförare eller en minneskrets • Det finns alternativa utgångspunkter, t ex kvantdatorer och trinära datorer. • Det finns ett antal sätt att representera information på, t ex format för bilder eller heltal. • Mycket av data/information är reduntant och kan således komprimeras Den Digitala Logiska Nivån och Datarepresentation • • • • Inledning Datarepresentation Den digitala logiska nivån Sammanfattning • Övrigt Övrigt Relevant Material • Frågor? Skicka dem gärna till [email protected]. • Länkar finns på http://www.dsv.su.se/~johank/courses/dsv1d