Procesorski sistemi v telekomunikacijah Zgodovina računalnikov

(c) Arpad Bűrmen, 2010 Kaj je računalnik?

 Naprava, ki manipulira podatke v skladu z danimi navodili (programom).

 Mehanski računalniki  Elektromehanski računalniki (releji)  Elektronke  Tranzistorji  Integrirana vezja

 Teorija – Alan Turing, John von Neumann

2 Mehanski računalniki Abak Bolj pripomočki za računanje kot pravi računalniki Mezopotamija (-2700 .. -2300); Egipt, Perzija (-600); Grčija, Indija (-500),

Rim (-100) Kitajska - suànpán (-200)

Japonska – soroban (1600) Maji (Mehika) Inki (Peru)

3 Mehanski računalniki Antikiterski mehanizem Zgrajen okrog -150 .. -100 Zobata kolesca Po preciznosti izdelave primerljiv z urami iz 17. stoletja Računal položaj sonca, lune in planetov

4 Mehanski računalniki Pascalina Seštevanje, odštevanje

Blaise Pascal (1623-1662) ... izumil leta 1642

5 Mehanski računalniki Arithmometer

Seštevanje in odštevanje Gottfried Wilhelm Leibniz Množenje in deljenje (1646-1716) Leibnizov cilinder (1673) Charles Xavier Thomas de Colmar (1785-1870) Masovna proizvodnja 1851

Wilgodt Odhner (1845-1903) Izboljšal, proizvodnja 1885 6 Mehanski računalniki Diferenčni stroj

Tabeliranje polinomov Johann Helfrich von Müller (1746-1830) Ročni pogon Ideja 1786

Charles Babbage (1791-1871) Poskus izvedbe (1822) - predrag

Per Georg Scheutz (1785-1873) Izvedba (1855)

7 Mehanski računalniki Analitični stroj Univerzalen programabilen mehanski računalnik Enakovreden Turingovemu stroju, 40 let pred Turingovim rojstvom. Nikoli zgrajen

Charles Babbage (1791-1871) Snoval ga je do smrti 1871.

As soon as an Analytical Engine exists, it will necessarily guide the future course of the science. —Passages from the Life of a Philosopher, Charles Babbage

8 Električno krmiljeno mehansko stikalo Rele

Čas preklopa ... 1ms

9 Elektromehanski računalniki Z3

Z3 (1941) replika (1960) Deutches Museum, München

Konrad Zuse (1910-1995) Prvi delujoč programibilen računalnik Elektromehanski (2000 relejev), Teža in poraba: 1tona, 4kW Sodelavec Helmut Schreyer, Dvojiški zapis - 22 bitov, zapis s plavajočo vejico 1937, Zuseju: Spomin: 64 x 22 bitov -Zamenjajmo releje z elektronkami. Ura – 5.3Hz Program na luknjanih karticah Zuse: Enakovreden Turingovemu stroju (dokazano 1998) - Schnappsidee. 10 Elektromehanski računalniki Harvard-IBM MARK I

MARK I (1944) Howard Hathaway Aiken Elektromehanski (1900-1973) 765000 komponent, 3500 relejev, 4kW elektromotor Teža: 4.5 ton Desetiški zapis – 23 desetiških mest Spomin: 72 x 23 desetiških mest Hitrost: 3 seštevanja na sekundo, 15.3s za eno deljenje Program na luknjanih karticah – ločen program od podatkov (Harvardska arhitektura) Zanka s pomočjo neskončnega traka Ni bil enakovreden Turingovemu stroju – ni poznal pogojnih skokov

11 Električno krmiljeno elektronsko stikalo Elektronke

Čas preklopa ... 1us

12 Elektronski računalniki ENIAC Univerza v Pennsylvaniji John William Mauchly John Adam Presper Eckert Jr. ... in drugi

Naročnik: vojska Namen: izračun tabel za topnišvo

Prva uporaba: izračuni za razvoj vodikove bombe. ENIAC - Electronic Numerical Integrator And Computer (1946) 17468 elektronk, 1500 relejev, 5 milijonov spajkanih spojev Velikost, teža in poraba: 63m2, 30 ton, 150kW, Do 2 dni delovanja med okvarama Zapis: dvojiški zapis desetiških števil (BCD) Spomin: 20 x 10 desetiških mest Ura: 100kHz, 20 pulzov za en cikel (1 branje + 1 seštevanje + 1 shranjevanje) Program in rezultati na luknjanih karticah

13 Elektronski računalniki EDVAC Univerza v Pennsylvaniji John William Mauchly, John Adam Presper Eckert Jr., ...

Svetovalec: John von Neumann First Draft of a Report on the EDVAC (1945)

Program in podatki v istem pomnilniku.

EDVAC - Electronic Discrete Variable Automatic Computer (1949) 6000 elektronk Velikost, teža in poraba: 45.5m2, 7.9 ton, 56kW Zapis: dvojiški zapis Spomin: 1000 x 44 bitov Hitrost: 0.86ms / seštevanje (1.16kHz) 14 John von Neumann Matematik po izobrazbi Deloval na univerzi Princeton (NJ) Prispevki logika in teorija množic, kvantna mehanika, ekonomija in teorija iger, računalništvo

Sodeloval pri razvoju vodikove bombe John von Neumann Generiranje naključnih števil (1903-1957) Metoda Monte-Carlo First Draft of a Report on the EDVAC (1945) – program in podatki v istem pomnilniku von Neumannovo ozko grlo Algoritem za sortiranje – merge sort Koncept celičnega avtomata Univerzalni konstruktor – stroj, ki podvaja samega sebe

15 Alan Mathison Turing Matematik Med 2. svetovno vojno delal na razbijanju nemškh šifer (Enigma) Turingov stroj – teoretičen model sodobnega računalnika Turingov test – test, ki pokaže ali je stroj inteligenten uporaba danes – npr. CAPTCHA test ACE – Automatic Computing Engine (1945) – Načrt za prvi računalnik (še pred von Neumannom), ki hrani program in podatke v istem pomnilniku. Prva izvedba (1950) -1MHz – tedaj najhitrejši računalnik. Alan M. Turing (1912-1954) Turingov stroj (1937) – miselni eksperiment neskončni trak (pomnilnik) procesor (avtomat) bralno-pisalna glava Dokazal, da je tak stroj sposoben izračunati vse kar je izračunljivo.

Stroji enakovredni Turingovemu stroju – vsi današnji računalniki. (če zanemarimo zahtevo po neskončnem pomnilniku)

16 Bipolarni tranzistor (kontaktni)

17 Bipolarni tranzistor (spojni)

Shockley predstavil koncept 1948. Težavna izdelava. Prvi izdelan leta 1951. Bolj zanesljiv od kontaktnega tranzistorja.

18 Računalniki z diskretnimi tranzistorji Do 1960 tranzistorji popolnoma izpodrinejo elektronke v računalnikih. Manchester University (1953) Manchester TC (transistorized computer) 48-biten 92 kontaktnih tranzistorjev, 550 diod

Bell Labs (1954) za U.S.A.F. TRADIC (TRAnsistor DIgital Computer) 700 kontaktnih tranzistorjev, 10000 diod Deloval pri 1MHz, trošil samo 100W

Lažja različica (Flyable TRADIC) uporabljena v letalih C-131 za navigacijo in nadzor bombardiranja.

19 Integrirana vezja – vse iz polprevodnika Problem: kako izdelati veliko tranzistorjev in jih hkrati še povezati med seboj.

Jack Kilby, Texas Instruments (1958) demonstrira prvo integrirano vezje kjer so vse komponente iz polprevodniškega materiala.

Prvo multi-chip vezje – oscilator.

Prvo komercialno int. v. flip-flop, tip 502. TI, 1960, $450/kos.

20 Planarna tehnologija Jean Hoerni, Fairchild (1959) – planarna tehnologija izdelave tranzistorjev in integriranih vezij – vse se izdela na eni strani polprevodniške rezine.

2N1613 - prvi komercialni tranzistor v planarni tehnologiji (Fairchild 1960)

21 Monolitna vezja Robert Noyce, Fairchild (1959) – vložen patent za monolitno integrirano vezje

22 Integrirana vezja v planarni tehnologiji Jay Last, Fairchild (1960) – razvito prvo integrirano vezje v planarni tehnologiji,

Prvo planarno integrirano vezje – flip-flop, tip ―F‖.

23 MOS tranzistor John Atalla, Dawon Kahng, Bell Labs(1959) – prvi MOS tranzistor

Preprosta izdelava Manjša poraba, Uporaben za integrirana vezja Veliko težav na začetku (počasen)

Prvo eksperimentalno MOS integrirano vezje – RCA (1962), 16 tranzistorjev

24 Integrirana vezja - CMOS C. T. Sah, Frank Wanlass, Fairchild (1963) – ideja CMOS logičnih vezij

V mirovanju ne porablja energije, tok teče le ob preklopih.

Večina logičnih vezij (tudi mikroprocesorjev) je danes izvedenih v tehnologiji CMOS.

25 Družine logičnih vezij (1) Diodna logika (Diode Logic, DL) Uporovno-tranzistorska logika (Resistor-Transistor Logic, RTL)

OR vrata NOR vrata

Diodno-tranzistorska logika Emitorsko-sklopljena logika (Diode-Transistor Logic, DTL) (Emitter-Coupled Logic, ECL) - 1956

4-vhodna NAND vrata NOR/NAND vrata

26 Družine logičnih vezij (2) Tranzistorsko-tranzistorska logika CMOS logika - 1963 (TTL) - 1961

NAND vrata

PMOS/NMOS logika NAND vrata

NOR vrata

27 Digital Equipment Corporation PDP-1

1960 540kg, 18-biten Spomin na osnovi feritnih jeder (5us) 4096 x 18 bitov spomina Ura: 200kHz, 100000 operacij/s Luknjan trak za shranjevanje Tipkovnica in tiskalnik

Prva računalniška igra – Spacewar

PDP-1 - procesor

28 Prvi mikroprocesor – Intel 4004

Intel, 1971 Vse komponente procesorja v enem vezju 4-biten, 2300 tranzistorjev Najvišja frekvenca ure: 740kHz Hitrost: 92000 ukazov/s

29 8-bitni mikroprocesorji Intel 8008, 1972 6800,1974 $179 $179 do 0.8MHz 1MHz-2MHz

MOS Technology 6502, 1975 Zilog Z80, 1976 $25 Cena?? << od Intel 8080 1MHz-2MHz 2.5MHz-8MHz

30 Hišni računalniki (8-bitni)

Commodore 64, 1982 Apple IIe, 1977

Atari 800XL, 1979 Sinclair ZX spectrum 48k, 1982

31 32-bitni računalniki za množice

Motorola 68000 (1979) – družina m68k

Atari ST - 1985 1000 - 1985

32 Apple Inc. Macintosh – 1984

33 Operacijski sistemi IBM – Mainframe računalniki – OS/360 – (60. leta 20. stoletja)

CP/M – za 8-bitne računalnike z Intel 8080 oziroma Zilog Z80 – 1973/74

MS DOS – za Intel 8088 (8086 z 8-bitnim vodilom) - 1981

Apple – Mac OS – za Macintosh – 1984 – grafični vmesnik in miška

Microsoft Windows – verzija 1.0 (1985)

Microsoft Windows NT – 3.1 (1993) – ―zaresen‖ 32-biten OS

UNIX – 1969 (AT&T) – prenosljiv (napisan v jeziku C), večopravilen, večuporabniški

Minix – 1987 – podoben UNIX-u, za IBM PC in IBM PC/AT

Linux jedro – operacijski sistem (1991); GNU projekt – programska oprema (1983)

PSION PDA naprave: EPOC16 za 8086 (1989), EPOC32 za ARM (1997) Preimenuje se v SYMBIAN (1998) – OS v mobilnih telefonih. 34 Družina Intel x86 in osebni računalniki

Intel 8086, 1979 20k tranzistorjev, NMOS Intel 80386,1985 16-biten, 5MHz-10MHz , 1982 134k tranzistorjev, AMD CMOS 275k tranzistorjev, CMOS 16-biten, 6MHz-25MHz 32-biten, 12MHz-40MHz Pentium, Pentium MMX (1993) Pentium Pro (1995) Pentium 4 (2000) Pentium 4 Prescott – 64-biten (2004) Core2 (2006) Intel i486, 1989 Core i3, i5, i7 (2008) >1M tranzistorjev, CMOS 32-biten, 16MHz-100MHz Atom – majhna poraba (2008) 35 Družina ARM Majhna poraba, preprost (RISC) – ARM2: 30k tranzistorjev (Motorola 68000: 70k) Se ne napihuje po velikosti – npr. ARM6 ima le 35k tranzistorjev Od 2007 uporablja 97% mobilnih telefonov vsaj 1 procesor ARM Licenčna prodaja ($0.11/procesor) ... veliko proizvajalcev Že ARM2 je bil 32/26 biten (podatki/naslov)

ARM1 (1985) ARM2 (1986) – prvi zaresen izdelek ... ARM7TDMI (1994) – to jedro je v sistemu S-ARM ARM9, ARM11, Cortex (A8, A9, M4 M3 M0, M1) iPhone4 Cortex A8

36 Mikrokontrolerji V enem vezju integrirani mikroprocesor pomnilnik vhodno/izhodne enote Za uporabo v vgrajenih (embedded) aplikacijah. Leta 2006 - 55% vseh prodanih mikroprocesorjev/mikrokontrolerjev je 8-bitnih.

Freescale 68HC11, Coldfire Zilog eZ8, eZ80 Intel 8051 Družina ARM Družina Atmel AVR Družina PIC ...

PIC18F8720

37 Signalni in komunikacijski procesorji Ozko specializirani mikroprocesorji. Podsklopi za pohitritev določenih operacij. Pogosto je faktor tudi nizka poraba energije.

Bell Labs DSP-1 (1979)

38 Programiranje

$A000: 00011011 strojni jezik $A001: 11011101 $A002: 11101111 $A003: 00111111

loop CMP Ri, Rj ; set condition "NE" if (i != j), zbirni jezik ; "GT" if (i > j), (assembler) ; or "LT" if (i < j) SUBGT Ri, Ri, Rj ; if "GT" (greater than), i = i-j; SUBLT Rj, Rj, Ri ; if "LT" (less than), j = j-i; BNE loop ; if "NE" (not equal), then loop

bool do_cycle = false; program v jeziku C do { do_cycle = i != j; if (i > j) i -= j; else j -= i; } while (do_cycle)

39 Moore-ov zakon Objavil ga je Gordon Moore leta 1965 Eksponentna rast števila tranzistorjev v vezju (x2 na 2 leti)

Gordon Earle Moore 1929-

40 Procesorski sistemi v telekomunikacijah Od logičnih vezij do mikroprocesorja in nazaj

(c) Arpad Bűrmen, 2010 Zapis števil, bit in byte ...

 Dvojiški zapis  Šestnajstiški zapis  Enota za količino spomina 1 bit, 8 bitov = 1 byte 1 byte = eno število od -128..127 ali 0..255  b... bit, B...byte  1 kilobyte = 1kB =1000 B  Včasih 1kB = 210 B = 1024 B ... ni OK po SI standardu  Proizvajalci diskov ... 1kB = 1000 B Windows Explorer ... 1kB = 1024 B

2 ... zapis števil, bit in byte

 Predlog (NIST, IEEE): kilobinarni byte 1KiB = 1024 B  Kilobinarni bit 1 kib = 1024 b  Kilobit 1kb = 1000 b ... hitrost prenosa npr. 100Mbit/s = 100 000 000 b/s = 12.5 MB/s  LSB – Least significant bit – skrajni desni bit MSB – Most significant bit – skrajni levi bit  LSW/MSW – Least/Most Significant Word

3 Arhitektura sistema v grobem

Mikroprocesor (uP)

Vodilo (naslov, podatki)

Vhodno-izhodne Pomnilnik naprave

4 Pomnilnik  Sestavljen iz 2m n-bitnih celic  Vsaka celica hrani n-bitno celo število  Vsaka celica ima (m-biten) naslov  Primer: m=10, n=8 1024x8 bitov ... 1024 bytov spomina  Primer: m=12, n=16 4096x16 bitov = 8192 bytov spomina  Fizična organizacija celic – pravokotna shema npr. 4096x16 bitov = 64x64x16bitov  Povezava do pomnilnika: naslovne in podatkovne linije primer 4096x16 bitov 12 naslovnih linij (m), 16 podatkovnih linij (n) 5 Program, podatki in pomnilnik ...  Program = zaporedje ukazov  Vrste ukazov odvisne od vrste CPU  Program in podatki hranjeni v pomnilniku  Ukazi v splošnem različno dolgi (št. bytov)  Programski števec (PC, Program Counter) ... naslov naslednjega ukaza Po branju ukaza se PC poveča.  Izvajanje programa 1. preberi ukaz iz pomnilnika 2. povečaj PC 3. dekodiraj ukaz 4. izvedi ukaz 6 ... program, podatki in pomnilnik

 Registri = poseben pomnilnik znotraj CPU PC je eden od registrov  Ukazi manipulirajo z vsebino registrov in z vsebino pomnilnika preko vodila.  Zagon programa ob vklopu (reset) odvisno od tipa CPU a) PC = fiksen naslov (0 pri ARM) b) PC = nek naslov, ki se prebere iz pomnilnika ($FFFE-$FFFF pri 68HC11)  Vhodno-izhodne (IO, Input-Output) naprave Registri naprav v naslovnem prostoru CPU

7 Primer programa ... 68HC11

 Naslovni prostor ... 216 = 65536 celic ... po 8 bitov Naslovi od $0000 ... $FFFF  FLASH pomnilnik (za program) – 8KiB $E000-$FFFF  RAM pomnilnik (za podatke) – 8KiB $2000-$3FFF  Von Neumannovo ozko grlo FLASH in RAM na istem vodilu = vsaj 2 dostopa za ukaz, ki piše v pomnilnik E000: 86 A3 LDAA #$A3 #A=$A3 E002: 8B 12 ADDA #$12 #A=A+$12 E004: B7 20 00 STAA $2000 #mem($2000)=A E007: 20 FE BRA $E007 #skoci nazaj na sebe

8 Primer programa ... ARM7

 Naslovni prostor 232 = 4 294 967 296 celic po 8 bitov Naslovi od $00000000 ... $FFFFFFFF  Š-ARM  FLASH pomnilnik (za program) – 256KiB $00000000-$0003E7FF  RAM pomnilnik (za podatke) – 16KiB $40000000-$40003FFF

00000040: A3 00 A0 E3 MOV R0, #0xA3 R0=0xa3 00000044: 12 00 90 E2 ADDS R0, R0, #0x12 R0=R0+0x12 00000048: 01 11 A0 E3 MOV R1, #0x40000000 R1=0x40000000 0000004C: 00 00 81 E5 STR R0, [R1, #0x0000] mem(R1+0x0000)=R0 00000050: 50 F0 A0 E3 MOV PC, #0x00000050 skoci nazaj na sebe

9 Logični nivoji

 Dve osnovni vrednosti – 0 in 1  Preslikava napetosti v 0/1 – logični nivoji  Primer: TTL nivoji 0V ... 0.8V = “0” 2.7V ... 5V = “1” 0.8V ... 2.7V ... neveljavno ... napaka v delovanju  V splošnem v sodobnih CMOS vezjih Napajanje Vdd proti referenčni sponki (GND) Idealno: Vdd = “1” 0V = “0”  V praksi – preberi podatkovni list vezja 10 Logična vrata

in out 0 1 1 0

Inverter

CMOS izvedba

a b out 0 0 1 0 1 0 1 0 0 1 1 0

Ne-Ali vrata (NOR)

11 Kombinatorna vezja

 Sestavljena iz večih logičnih vrat  Ni povratne vezave  Nimajo stanja – odziv odvisen le odvrednosti vhodov  Zakasnitev - vrata ne morejo hipoma spremeniti izhoda Odvisna od kapacitivnosti v vezju.

1-bitni seštevalnik Pravilnostna tabela

12 Kritična pot  Po njej se širi sprememba vhodov proti izhodu za primer najpočasnejšega odziva kombinatornega vezja  Spremembe izhodov potujejo po kritični pot, ko se na vhodih zgodi točno določena sprememba, ki pot aktivira.

X

X

0->1

X

0->1

1->0 Tkrit 13 Sekvenčna vezja

 Kombinatorno vezje + povratne vezave  Izhodi odvisni od preteklosti in od vhodov vezja – vezje ima spomin  Vezje na sliki ima dve stabilni stanji a) out1=1 out2=0 b) out1=0 out2=1  Sprememba stanja (ni hipna): vsilimo 1 oz 0 na Vin2

Celica statičnega pomnilnika (1 bit)

14 RS zatič

 Dve stabilni stanji a) Q=1 Qn=0 b) Q=0 Qn=1  Sprememba stanja: R=1, S=0 ... Q postane 0, Qn postane 1 R=0, S=1 ... Q postane 1, Qn postane 0  Vzdrževanje stanja ... R=0, S=0

15 Sinhrona vezja

 Asinhrona vezja – sprememba izhodov/stanja se prične dogajati takoj ob spremembi vhodov  Sinhrona vezja – sprememba se zgodi le ob določenih trenutkih – določa jih signal ure (clock)

Clk

Master/slave RS flip-flop – sprememba stanja/izhodov ob prehodu Clk iz 1 v 0 16 Sekvenčno + kombinatorno vezje Avtomat

 Avtomat je sekvenčno vezje  Avtomat ima dve ali več stanj  Novo stanje = f(Trenutno stanje, Vhodi)  Izhodi = g(Trenutno stanje, Vhodi)

Vhodi Izhodi avtomata Kombinatorno avtomata vezje

Sekvenčno Vhodi vezje Izhodi

17 Sinhroni in asinhroni avtomati

 V splošnem so avtomati asinhroni  Če je sekvenčni del avtomata sinhron ... sinhron avtomat  Asinhroni avtomati: redkejši, bolj zahtevno načrtovanje  Primer: elektronska ključavnica 4 tipke: A, B, C za vnos črk kode in tipka “Zakleni “ za zaklepanje Fiksna kombinacija za odklepanje “CAB”

Clk Asinhron Sinhron avtomat avtomat Vhodi Izhodi Vhodi Izhodi

18 Načrtovanje avtomata – Diagram prehajanja stanj Primer: elektronska ključavnica

19 Izvedba avtomata ... Primer: elektronska ključavnica

20 ... izvedba avtomata

 Če je fCLK dovolj velika ne opazimo, da se avtomat

odziva le na vsake T=1/fCLK  Asinhroni avtomati – predvsem pri načrtovanju flip-flopov  Pomanjkanje načrtovalskih orodij za asinhrone avtomate

21 Maksimalna frekvenca ure

 1/fMAX = Tregister + Tkrit, kombinatorno

CLK

Kombinatorno

vezje

Register Register

Tregister Tkrit, kombinatorno

22 Mikroprocesor je avtomat

 Kaj dela avtomat povemo z vezjem  Kaj bo uP delal, povemo s programom  uP je torej neke vrste univerzalen avtomat  Namenski avtomati so ponavadi hitrejši od rešitev z uP in z njimi lahko dosežemo manjšo porabo energije

23 Asinhroni mikroprocesorji

 Nimajo vhodnega CLK signala Majhna poraba, ko uP nima dela Majhen EMI (ElectoMagnetic Interference)  Caltech CAM (1988) RISC, 5MIPS, 2V, 5.2mA (približno 10mW)  AMULET (Univ. v Manchestru), ARM arhitektura v asinhroni izvedbi AMULET1 (1990-1993) AMULET3 (2000) – enakovreden ARM9TDMI (>100MIPS)  Problem – pomanjkanje načrtovalskih orodij za asinhrona vezja

24 Izvedba avtomata ... z mikroprocesorjem #include "io.h" // Kjucavnica - program za SARM, kot bi ga napisali v 1. letniku Opis ključavnice v int main(void) { char tipka; jeziku C (za uP) int i=0; // Tipke: '0'=A, '1'=B, '2'=C '3'=zakleni. Ce lucke gorijo, so vrata odklenjena. char kombinacija[]="201"; int dolzinaKombinacije=3; _KeyInit(); _LEDInit();

while (1) { tipka = getch(); if (i==dolzinaKombinacije) { // Vrata so odklenjena, vsaka tipka jih zaklene nazaj i=0; } else if (tipka==kombinacija[i]) { // Nov pravilen znak i++; } else { // V vseh ostalih primerih zakleni vrata i=0; } // Krmiljenje kljucavnice (ponazorjeno z luckami) if (i==dolzinaKombinacije) _setleds(0xf); else _clrleds(0xf); } }

25 Načrtovanje avtomata s pomočjo opisnega jezika (HDL) library IEEE; use IEEE.std_logic_1164.all; Opis ključavnice v jeziku VHDL (opis entity kljucavnica is port(a, b, c, zakleni, clk: in std_logic; odkleni : out std_logic); namenskega vezja) end kljucavnica; architecture izvedba of kljucavnica is -- "00" = zaklenjeno, "01" = en prav, "10" = dva prav, "11" = odklenjeno signal stanje: std_logic_vector (1 downto 0); begin process (clk) begin if (clk'event and clk='1') then if (stanje="00" and a='0' and b='0' and c='1' and zakleni='0') then stanje <= "01"; odkleni <= '0'; elsif (stanje="01" and a='1' and b='0' and c='0' and zakleni='0') then stanje <= "10"; odkleni <= '0'; elsif (stanje="10" and a='0' and b='1' and c='0' and zakleni='0') then stanje <= "11"; odkleni <= '1'; elsif (not (a='0' and b='0' and c='0' and zakleni='0')) then stanje <= "00"; odkleni <= '0'; end if; end if; end process; end izvedba; 26 Od opisa do delujočega vezja Simulacija opisa

Opis vezja (VHDL, Verilog)

prevajanje

Preveden opis

simulacija

testni simulirani signali Simulator odzivi vezja

27 Simulacija opisa v jeziku VHDL

28 Od opisa do delujočega vezja Sinteza vezja iz opisa

HDL opis vezja Opis vezja (VHDL, Verilog) (VHDL, Verilog)

sinteza (a) sinteza (b)

Vhodna Maske za datoteka za postopek programirljivo izdelave vezja logično vezje (v siliciju)

29 Programirljiva logična vezja

 Vezje se zapeče s strani proizvajalca sistema, ki uporablja programirljivo vezje PAL, PLA (1978) GAL (1985) – zbrisljivo, CPLD – do 100 000 vrat  Vezje se programira ob vklopu ALTERA MAX 7000 napajanja – konfiguracija se naloži (CPLD z 2500 vrati) vedno znova iz bralnega pomnilnika (npr. EEPROM) FPGA vezja – 1 000 000 vrat v enem vezju (leta 2000) XILINX, ALTERA (80% tržišča) XILINX Spartan-3 – 4 000 000 vrat, 70Eur pri 100 kosih

30 Sinteza logičnih vezij (izvedba v siliciju)

Nabor logičnih vrat, FF, ... Okarakterizira (zakasnitve, poraba) jih proizvajalec integriranih vezij (foundry).

HDL opis Programska oprema Vezje vezja za sintezo vezja

Samo za sinhrona vezja 

31 Primer Sinteza 16-bitnega seštevalnika

 16 vhodov A, 16 vhodov B, vhod CI za prenos  16 izhodov za rezultat, izhod CO za izhodni prenos  0.25um tehnologija

32 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 8ns (125MHz)

 Kritična pot: 7.82ns, 16 nivojev, 17 celic  Poraba energije: 5.26  Celice: 1-bitni seštevalniki, AND, EXOR 33 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 7ns (140MHz)

 Kritična pot: 6.97ns  19 nivojev, 34 celic  Poraba energije: 6.45  Celice: 1-bitni seštevalniki, AND, NAND, EXOR 34 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 5ns (200MHz)

 Kritična pot: 4.99ns  18 nivojev, 124 celic  Poraba energije: 10.44  Celice: negatorji, NAND, NOR, AND, OR, EXOR 35 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 4ns (250MHz)

 Kritična pot: 3.99ns  14 nivojev, 154 celic  Poraba energije: 13.44  Celice: negatorji, NAND, NOR, AND, OR, EXOR 36 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 3ns (330MHz)

 Kritična pot: 3.00ns  12 nivojev, 164 celic, poraba energije: 16.79  Celice: negatorji, NAND, NOR, AND, OR, EXOR 37 Sinteza 16-bitnega seštevalnika Zahtevana hitrost odziva: 2ns (400MHz)

 Kritična pot: 2.19ns, 9 nivojev, 225 celic, poraba 28.19

38 Procesorski sistemi v telekomunikacijah Kodiranje števil, ukazi in izvajanje programa

(c) Arpad Bűrmen, 2010 Nepredznačena cela števila

 Zapis z n biti, moţna števila 0..2n-1  Kodiranje v dvojiškem zapisu  Uteţi mest so potence števila 2  Število = vsota uteţi neničelnih mest v zapisu Bit 7 6 5 4 3 2 1 0 Utež 128 64 32 16 8 4 2 1 Uteži za dvojiški zapis nepredznačenih 8-bitnih števil

10001111 = 18 = 2 x 9 + 0 2 1810=100102= =128+8+4+2+1= 9 = 2 x 4 + 1 =000100102 =14310 4 = 2 x 2 + 0 2 = 2 x 1 + 0 1 = 2 x 0 + 1

2 Predznačena cela števila - zapis z dvojiškim komplementom

 Zapis z n biti, moţna števila -2n-1..2n-1-1  Uteţi mest so potence števila 2  Uteţ najvišjega mesta (MSB) je negativna  Število = vsota uteţi neničelnih mest v zapisu

Bit MSB 7 6 5 4 3 2 1 LSB 0 Utež -128 64 32 16 8 4 2 1 Uteži za dvojiški zapis predznačenih 8-bitnih števil  Negativna števila imajo MSB=1  Operacija zamenjave predznaka = dvojiški komplement

100011102= 010011112= =-128+8+4+2=-11410 =64+8+4+2+1=7910

3 Sprememba predznaka

 ... ali dvojiški komplement  Izvedba: invertiraj vse bite, k dobljenemu številu prištej 1  Primer za 8-bitni zapis (2n=256)

-11510 = 100011012 11510 = 011100112

Invertiraj bite Invertiraj bite

011100102 100011002 Prištej 1 Prištej 1

011100102 +1 100011002 +1 Rezultat Rezultat

011100112 = 11510 100011012 = -11510

4 Pomnilnik, kot ga vidi programer

 Zbirka 2m celic  Vsaka celica ima naslov (m-bitno nepredzn. število)  Mnoţica vseh moţnih naslovov = naslovni prostor  Ena celica lahko hrani eno n-bitno število (običajno n=8)  Tolmačenje tega števila (predznačeno/nepredznačeno) je prepuščeno programerju  Posamezna celica lahko pripada a) bralnemu pomnilniku (ROM) b) bralno/pisalnemu pomnilniku (RAM) c) registru kake naprave

5 Primeri naslovnih prostorov (kot jih vidi programer) 68HC11 LPC2138 (ARM7) 216=65536 8-bitnih celic 232=4 294 967 296 8-bitnih celic

ADSP2100 214=16 384 24-bitnih celic za program 214=16 384 16-bitnih celic za podatke Program in podatki v dveh ločenih pomnilnikih do katerih vodita dve ločeni skupini naslovnih in podatkovnih linij, ukazi lahko programski pomnilnik samo berejo – Harvardska arhitektura

Ukazi lahko v programski pomnilnik tudi pišejo – spremenjena Harvardska arhitektura 6 Zapis daljših števil v pomnilnik

 Zapis k-bitnih števil v n-bitne celice (k>n, k je deljiv z n)  Razbijemo na skupine po n bitov  Uporabimo k/n zaporednih celic za zapis  Kaj pa vrstni red? Zapis 16-bitnega števila v 8-bitne celice Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MSW LSW

Little endian Big endian Naslov Vsebina Uporablja ga Naslov Vsebina Uporablja ga ... ARM7 (lahko) ... ARM7 (lahko) a LSW LPC2138 (ARM7) a MSW Motorola 68k a+1 MSW INTEL (npr i386) a+1 LSW ......

7 Kodiranje ukazov

 Ukazi so običajno prekompleksni za 8 bitov  Običajno ukaz zaseda več zaporednih 8-bitnih celic  Vsi ukazi nekega uP niso nujno enako dolgi Trije ukazi 68HC11 Dva ukaza ARM7 (ARM način) Naslov Vsebina (HEX) Naslov Vsebina (HEX) ...... a 86 LDAA #$A3 a A3 a+1 A3 a+1 00 MOV R0, #0xA3 a+2 8B ADDA #$12 a+2 A0 a+3 12 a+3 E3 a+4 B7 a+4 12 a+5 20 STAA $2000 a+5 00 ADDS R0, R0, #0x12 a+6 00 a+6 90 ... a+7 E2 ... ARM7 - THUMB način delovanja – ukaz je dolg 16 bitov ARM11 – THUMB-2 – 16-bitni in 32-bitni ukazi 8 Izvajanje ukaza

 1. Preberi naslednji ukaz od naslova v PC naprej  2. Povečaj PC za dolţino ukaza PC sedaj kaţe na naslednji ukaz  3. Dekodiraj ukaz (ugotovi, kaj ukaz ţeli od procesorja)  4. Izvedi ukaz.  5. Vrni se na točko 1

 Ob izvajanju nekateri ukazi spreminjajo vrednost PC  Če je sprememba brezpogojna ... skočni ukaz  Če se sprememba PC zgodi le ob izpolnjenem pogoju ... vejitveni ukaz PC = Program Counter (Programski števec)

9 Primer Ukaz ‘LDAA #$A3’ v 68HC11

 Zapiše konstanto $A3 v register A Naslov Vsebina (HEX) ...  Začetno stanje $E000 86 PC=$E000, A=? $E001 A3 $E002 8B  Urin cikel 1: $E003 12 $E004 B7 Preberi $86 z naslova $E000, PC=PC+1 $E005 20 Stanje po končanem ciklu 1 $E006 00 $E007 20 PC=$E001, A=? $E008 FE ...  Urin cikel 2: Preberi $A3 z naslova $E000, PC=PC+1 Clk Zapiši $A3 v register A (dejansko se zaključi šele v 3. ciklu, ko se ţe bere naslednji ukaz)

Stanje po končanem ciklu 2 Začetek Konec PC=$E002, A=$A3 Izvajanja Izvajanja

10 Primer Ukaz ‘ADDA #$12’ v 68HC11

 Prišteje konstanto $12 k vsebini registra A Naslov Vsebina (HEX)  Začetno stanje ... $E000 86 PC=$E002, A=$A3 $E001 A3 $E002 8B  Urin cikel 1: $E003 12 Preberi $8B z naslova $E002, PC=PC+1 $E004 B7 $E005 20 Stanje po končanem ciklu 1 $E006 00 PC=$E003, A=$A3 $E007 20 $E008 FE  Urin cikel 2: ...

Preberi $12 z naslova $E003, PC=PC+1 Clk Prištej $12 k vsebini registra A (dejansko se zaključi šele v 3. ciklu, ko se ţe bere naslednji ukaz) Stanje po končanem ciklu 2 PC=$E003, A=$B5 Začetek Konec Izvajanja Izvajanja

11 Primer Ukaz ‘STAA $2000’ v 68HC11

 Prepiše vsebino registra A v pomnilnik v celico z naslovom $2000  Začetno stanje Naslov Vsebina (HEX) PC=$E004, A=$B5, MEM($2000)=? ...  Urin cikel 1: $E000 86 Preberi $B7 z naslova $E004, PC=PC+1 $E001 A3 Stanje po končanem ciklu 1 $E002 8B PC=$E005, A=$B5, MEM($2000)=? $E003 12 $E004 B7  Urin cikel 2: $E005 20 Preberi $20 z naslova $E005, PC=PC+1 $E006 00 Stanje po končanem ciklu 2 $E007 20 PC=$E006, A=$B5, MEM($2000)=? $E008 FE  Urin cikel 3: ... Preberi $00 z naslova $E006, PC=PC+1 Clk Stanje po končanem ciklu 3 PC=$E007, A=$B5, MEM($2000)=?  Urin cikel 4: Zapiši vsebino registra A v pomnilnik na naslov $2000 Stanje po končanem ciklu 4 PC=$E007, A=$B5, MEM($2000)=$B5 12 Primer Ukaz ‘BRA $FE’ v 68HC11

 Zmanjša PC za 2 (brezpogojni skok) Naslov Vsebina (HEX) ...  Začetno stanje $E000 86 PC=$E007 $E001 A3 $E002 8B  Urin cikel 1: $E003 12 Preberi $20 z naslova $E007, PC=PC+1 $E004 B7 Stanje po končanem ciklu 1 $E005 20 PC=$E008 $E006 00 $E007 20  Urin cikel 2: $E008 FE Preberi $FE z naslova $E008, PC=PC+1 ... Stanje po končanem ciklu 2 Clk PC=$E009  Urin cikel 3: Prištej $FE (predzn. zapis za -2) k vsebini PC Stanje po končanem ciklu 3 PC=$E007

13 Primer Potek še malo drugače

Ukaz 1 Naloži $86 Naloži $A3, (LDAA #) Piši $A3 v A 2 Naloži $8B Naloži $12, (ADDA #) in prištej k A 3 Naloži $B7 Naloži $20 Naloži $00 Zapiši A na (STAA) (MSW $2000) (LSW $2000) naslov $2000

Urin cikel 1 2 3 4 5 6 7 8 PC (začetek, $E000 $E001 $E002 $E003 $E004 $E005 $E006 $E007 konec cikla) $E001 $E002 $E003 $E004 $E005 $E006 $E007 $E007 A (začetek, ? ? $A3 $A3 $B5 $B5 $B5 $B5 konec cikla) ? $A3 $A3 $B5 $B5 $B5 $B5 $B5 MEM($2000) ? ? ? ? ? ? ? $B5 (konec cikla)

čas

14 Cevovod (pipeline) in izvajanje ukazov

 Primer: ARM7, cevovod dolţine 3  Kot tekoči trak v tovarni – vzporedno delo na večih izdelkih.  Hkrati se izvajajo nalaganje ukaza i-2, dekodiranje ukaza i-1 in izvajanje ukaza i

Ukaz 1 naloži 1 dekodiraj 1 izvedi 1 2 naloži 2 dekodiraj 2 izvedi 2 3 naloži 3 dekodiraj 3 izvedi 3 ......

Urin cikel 1 2 3 4 5 ... čas  V povprečju naloţi/dekodira/izvrši 1 ukaz / cikel ure

15 Kaj potrebujemo za 1ukaz/cikel pri prej omenjenem cevovodu?

 1. Mikroprocesor mora ukaz naložiti v 1 ciklu ure.  Kako lahko ARM7 naloži 1 ukaz/cikel, če je ukaz dolg 32 bitov, ena celica pomnilnika pa hrani le 8 bitov? ARM7 v enem ciklu ure prebere 32 bitov iz pomnilnika, programerju pa jih predoči kot 4 celice po 8 bitov. Posledica – pomnilniški modul mora biti širok 32 bitov, Ena celica tega modula = 4 celice naslovnega prostora.

 2. Ukaz se mora izvršiti v enem ciklu ure.  Posledica: ukazi morajo biti preprosti.

Zmagovalna kombinacija: RISC mikroprocesor + cevovod

16 CISC

 Complex Instruction Set Computer  CISC mikroprocesorji veliko različnih ukazov, veliko kombinacij naslavljanja in operandov (ortogonalnost), zapleteni ukazi  Dolgotrajno izvajanje posameznega ukaza  Večji mikroprocesor, večja poraba.  Laţje izdelati učinkovit prevajalnik za višji jezik (npr. C)  Programi v strojnem jeziku so krajši  Primer: PDP-11 (1970), Motorola 68000 (1979) Intel x86 druţina (od 8086 naprej)

17 RISC

 RISC = Reduced Instruction Set Computer  RISC mikroprocesorji – malo ukazov, ukazi so preprosti  Kratko (hitro) izvajanje posameznega ukaza  Preprosta izvedba, majhen po velikosti, majhna poraba  Učinkovit prevajalnik za višji jezik (npr. C) je bolj zapleten  Programi v strojnem jeziku so daljši (pribl. 5x)  Prvi RISC računalnik: CDC 6600 (1964)  SPARC (1987) –  R2000 (1986) – MIPS Computer Systems MIPS R3000A v Sony PlayStation (1994)  ARM jedro je RISC 18 RISC preoblečen v CISC

 Primer: Intel od Pentiuma naprej CISC mikroprocesor Prevajalnik CISC ukazov v zaporedje RISC ukazov

RISC jedro

 Danes meja med RISC in CISC ni več tako ostra 19 Kaj pa če ukaz želi pisati v pomnilnik?

 Hkrati bi bilo potrebno: branje (zaradi nalaganja i-tega ukaza) in pisanje (zaradi izvajanja i-2. ukaza) v pomnilnik.  Ne gre (eno vodilo, samo ena operacija naenkrat).  Posledica: med pisanjem v pomnilnik ne moremo nalagati novega ukaza.  Možna rešitev: (spremenjena) Harvardska arhitektura - ločen pomnilnik za program in za podatke, - hkrati lahko poteka nalaganje ukaza iz programskega pomnilnika in pisanje podatka v podatkovni pomnilnik (ne pa tudi v programski pomnilnik)

Pisanje v pomnilnik (1. ukaz) Ne moremo nalagati 3. ukaza

Ukaz 1 naloži 1 dekodiraj 1 izvedi 1 2 naloži 2 dekodiraj 2 izvedi 2 3 naloži 3 dekodiraj 3 izvedi 3 ......

Urin cikel 1 2 3 4 5 6 ... 20 ARM7 je še malo bolj zapleten!

 Primer: pisanje v pomnilnik (1. ukaz na sliki) zahteva predpripravo - izračun naslova, kamor bomo pisali.  Izvajanje STR zahteva 2 urina cikla (računanje+pisanje).  Med računanjem naslova ne moremo izvajati drugih ukazov, ker so linije za podatke (datapath) zasedene.  Med pisanjem v pomnilnik ne moremo nalagati ukaza. zakasnitev dekodiranja 2. in 3. ukaza (pipeline stall), Zakasnitev nalaganja 4. ukaza ker prvi ukaz zaseda podatkovne linije (1. ukaz piše v pomnilnik)

Ukaz 1 naloži 1 dekodiraj 1 računaj 1 izvedi 1 2 naloži 2 dekodiraj 2 izvedi 2 3 naloži 3 dekodiraj 3 izvedi 3 ... naloži 4 dekodiraj 4 izvedi 4 ...... Urin cikel 1 2 3 4 5 6 ...

21 Skočni in vejitveni ukazi

Skočni ukaz spremeni PC brezpogojno Vejitveni ukaz spremeni PC na en način, in vsakič na enak način če je pripadajoč pogoj izpolnjen, in na drug način, če ta pogoj ni izpolnjen Naslov ukaza Naslov ukaza Ukaz 1 $E000 Ukaz 1 $E000

Ukaz 2 $E002 Ukaz 2 $E002

Ukaz 3 $E004 Ukaz 3 $E004

Skočni $E007 Vejitveni $E007 ukaz ukaz Če pogoj ni izpolnjen Če je pogoj nadaljuj, kot običajno izpolnjen - Ukaz 5 $E009 vejitev

22 Skočni in vejitveni ukazi v cevovodu

 Ob brezpogojnem skoku in ob vejitvi – neobičajna sprememba PC Naslov Ukaz A000 Ukaz 1: skoči na naslov B000 (naslednji se izvede ukaz 4) A004 Ukaz 2: ... A008 Ukaz 3: ...... B000 Ukaz 4: ... Nekoristen mehurček (bubble) B004 Ukaz 5: ... v cevovodu Teh korakov procesor ne izvaja

Ukaz 1 naloži 1 dekodiraj 1 izvedi 1 2 naloži 2 dekodiraj 2 izvedi 2 3 naloži 3 dekodiraj 3 izvedi 3 ... naloži 4 dekodiraj 4 izvedi 4 naloži 5 dekodiraj 5 izvedi 5 ...... Urin cikel 1 2 3 4 5 6 ... Pojav mehurčka Mehurček izgine 23 Možna rešitev – napoved vejitve (branch prediction)

 Ţe ob nalaganju vejitvenega ukaza procesor poskuša napovedati, ali bo pogoj za vejitev v času izvajanja ukaza izpolnjen.  Če je napoved “pogoj bo izpolnjen”, se kot naslednji ukaz naloţi tisti, na katerega bi skočil vejitveni ukaz ob izpolnjenem pogoju.  100% natančna napoved ni zmeraj mogoča.  Kazen za napačno napoved (branch misprediction) – dobimo mehurček v cevovodu.

Tukaj napovemo, de se bo tukaj zgodila vejitev, zato tukaj naložimo ukaz 4

Ukaz 1 naloži 1 dekodiraj 1 izvedi 1 2 naloži 4 dekodiraj 4 izvedi 4 3 naloži 5 dekodiraj 5 izvedi 5 ......

Urin cikel 1 2 3 4 5 ...

24 Kaj pa daljši cevovodi?

 ARM9 – cevovod dolžine 5 1. naloţi ukaz 2. dekodiraj ukaz 3. računaj z operandi ali izračunaj naslov v pomnilniku 4. dostopaj do pomnilnika (beri/piši) 5. zapiši rezultat 3. oz 4. koraka v ustrezen register  Klasika pri RISC mikroprocesorjih

 Nekateri ukazi v 4. koraku ne naredijo ničesar Npr. ARM ukaz ADD R3, R1, R2 Sešteje vsebini registrov R1 in R2 in shrani rezultat v registru R3.  Nekateri ukazi v 5. koraku ne naredijo ničesar Npr. ukazi za pisanje v pomnilnik - STR

25 Daljši cevovodi Neugodna kombinacija ukazov

 Izvajanje ukaza razdeljeno v 3 korake (računanje, dostop do pomnilnika, zapis v register)  Kaj če drugi ukaz v 1. koraku svojega izvajanja zahteva rezultate prvega ukaza, ki so na voljo šele v 3. koraku njegovega izvajanja  Moţna rešitev: ne uporabljati neugodnih kombinacij ukazov  Potreben je dober programer oz. dober prevajalnik.

Zakasnitev izvajanja 2. ukaza zaradi odvisnosti od rezultatov prvega ukaza

Ukaz 1 naloži 1 dekodiraj 1 računaj 1 pomn. 1 zapis 1 2 naloži 2 dekodiraj 2 računaj 2 pomn. 2 zapis 2 ......

Urin cikel 1 2 3 4 5 6 7 ...

26 Možna rešitev odvisnosti med ukazi Podajanje rezultatov naprej (forwarding)

novejši ukazi Nalaganje

Dekodiranje

tok ukazov skozi Računanje cevovod Podajanje Dostop do pomnilnika rezultatov naprej (po potrebi) starejši Zapis v register ukazi

27 In kaj na to pravi Intel?

 80486 je ţe imel cevovod (dolţine 5)  Ukazi i386 in razširitve (npr. MMX) so prekompleksni.  Novejši procesorji (interno) prevajajo vsak CISC ukaz v zaporedje enega ali več internih RISC ukazov.  Jedro je RISC od Pentiuma naprej.  Pentium 4: cevovod dolţine 20  Core i7: cevovod dolţine 14

80486 (1989) Pentium (1993)

28 Superskalarni mikroprocesorji

 Prebere več ukazov v enem urinem ciklu  Preveri odvisnost ukazov od rezultatov prejšnjih ukazov  Če je mogoče, izvede več ukazov vzporedno  Procesor vsebuje več enakih funkcionalnih enot (npr. seštevalnikov)  Običajno v kombinaciji s cevovodnim izvajanjem (ni pa nujno)  Intel superskalaren od Pentiuma naprej (1993)

Ukaz 1 naloži 1 dekodiraj 1 računaj 1 pomn. 1 zapis 1 2 naloži 2 dekodiraj 2 računaj 2 pomn. 2 zapis 2 3 naloži 3 dekodiraj 3 računaj 3 pomn. 3 zapis 3 4 naloži 4 dekodiraj 4 računaj 4 pomn. 4 zapis 4 5 naloži 5 dekodiraj 5 računaj 5 pomn. 5 zapis 5 6 naloži 6 dekodiraj 6 računaj 6 pomn. 6 zapis 6 ......

Urin cikel 1 2 3 4 5 6 7 ...

29 Hkratna večnitnost (Simultaneous Multithreading, SMT)

 1 nit = 1 zaporedje ukazov = 1 program  Izkorišča mnoţico funkcionalnih enot v superskalarnem mikroprocesorju za vzporedno izvajanje večih programov.  Več programskih števcev / procesor (1 števec / nit)  Izvajanje vsake niti ponavadi poteka superskalarno.  Pospeši izvajanje programov, ki so ţe v osnovi načrtovani za vzporedno izvajanje (tečejo kot več vporednih niti).  Intel: Hyper-Threading (HT) XEON (2002) ... Pentium 4 (2002) ...... Core i7 (2008) ... 2 niti/jedro (4 jedra ... 8 niti) Core i3, Core i5, Itanium, Atom 30 Primer: Kako dobro deluje SMT

 Nalaganje do 8 ukazov na cikel (superskalarnost)

Tullsen et. al., 23rd Annual Symposium on Computer Architecture, (c)1996 IEEE

31 Procesorski sistemi v telekomunikacijah Operacije s celimi števili

(c) Arpad Bűrmen, 2010 Številski krog za zapis z dvojiškim komplementom Števila v matematiki so neomejena. Nepredznačena Predznačena

0 1 2 3 4 5 6 7 8 ...... -4 -3 -2 -1 0 1 2 3 4 ...

V računalništvu so števila omejena zaradi končne dolžine zapisa. max 0 1 -1 0 1 max-1 2 -2 2 ...... zapis z n-biti zapis z n-biti maxp=2n-1-1 max=2n minn=-2n-1

x+1 = 1 korak v smeri urinega kazalca ...... x-1 = 1 korak nasproti urinemu kazalcu minn maxp 2 Zapis števil z dvojiškim komplementom

Nepredznačeno Zapis (8 bitov) Predznačeno Zapis (8 bitov) ------0 00000000 0 00000000 1 00000001 1 00000001 2 00000010 2 00000010 ... 127 01111111 127 (maxp) 01111111 128 10000000 -128 (minn) 10000000 129 10000001 -127 10000001 ... 254 11111110 -2 11111110 255 (max) 11111111 -1 11111111

 n-bitni zapis predznačenega negativnega števila -x je enak n-bitnemu zapisu nepredznačenega števila 2n – x

3 Pa še nekaj o dvojiškem komplementu

 Dvojiški komplement dobimo tako, da 1. invertiramo vse bite 2. k rezultatu invertiranja prištejemo 1  Zakaj?  Zaradi številskega kroga je za n-bitni zapis: max+1 = 0 oziroma 0 = max+1 = (2n-1)+1 = 2n  Torej velja (ampak samo v številskem krogu) -x = 0 - x = 2n - x = (2n - 1 - x) + 1  Za n-bitni zapis je (2n - 1 - x) enako kot invertiranje vseh bitov – operacija INV(x)  Torej je: -x = INV(x) + 1  Oziroma: dvojiški komplement x = INV(x) + 1

4 Zakaj je zapis z dvojiškim komplementom dober?  2n korakov v eno smer po številskem krogu nas vrne na isto mesto  2n – x = (2n - 1 - x) + 1 = INV(x) + 1 = dvojiški komplement x  Seštejmo nepredznačeni števili y ≤ 127 in 2n – x, kjer je 0

2510 = 000110012 -11510 = 100011012

Seštej kot dve nepredznačeni števili 00011001 +10001101 ------10100110

101001102=-128+32+4+2=-9010

5 Seštevanje in odštevanje Prevelik/premajhen rezultat...

 Nepredznačena števila

max 0 1 Seštevanje max-1 2 ......

zapis z n-biti max=2n

Odštevanje

Če prekoračimo mejo med max in 0 dobimo napačen rezultat. Pravimo, da se je zgodil prenos (carry).

6 Seštevanje in odštevanje Prevelik/premajhen rezultat...

 Predznačena števila

-1 0 1 -2 2 Seštevanje ...... zapis z n-biti maxp=2n-1-1 minp=2n-1 Odštevanje ...... minn maxp

Če prekoračimo mejo med maxp in maxn dobimo napačen rezultat. Pravimo, da se je zgodil preliv (overflow).

7 Zastavice (flags)

 Biti v registru stanja – rezultat zadnje operacije.  Zastavica Z (Zero) Z=1, če je rezultat enak 0 oz. Z=0, če ni.  Zastavica N (Negative) N=1, če je najvišji bit rezultata enak 1 oz. N=0, če ni.  Zastavica V (oVerflow) V=1, če se je zgodil preliv, oz. V=0, če se ni.  Zastavica C (Carry) C=1, če se je zgodil prenos, oz. C=0, če se ni.

 Pozor! nekateri uP (npr. ARM7) pri odštevanju postavijo C=0, če se zgodi prenos in C=1, če se ne zgodi. 8 Seštevanje in odštevanje Zapis rezultata

 Seštevanje/odštevanje dveh n-bitnih števil  Rezultat lahko zmeraj zapišemo z n+1 biti  Operanda sta nepredznačeni števili - rezultat tolmačimo kot nepredznačeno število Operanda sta predznačeni števili - rezultat tolmačimo kot predznačeno število  C predstavlja n+1. bit rezultata

 Pozor pri odštevanju na nekaterih uP (npr. ARM7)!!! n+1. bit rezultata je enak neg(C).

9 Seštevanje dolgih števil n bitov n bitov MSW A LSW A

MSW B LSW B

+ C +

C MSW rezultata LSW rezultata 1 bit n bitov n bitov

ARM7, 64-bitno seštevanje Odštevanje dolgih števil poteka podobno. /* R2 = MSW A, R1 = LSW A */ uP se razlikujejo v obravnavi prenosa (C). /* R4 = MSW B, R3 = LSW B */ /* Rezultat seštevanja: R6 = MSW, R5 = LSW

ADDS R5, R3, R1 /* R5=R3+R1, določi C (statusni register) */ ADCS R6, R4, R2 /* R6=R4+R2+C, določi C (statusni register) */ 10 Odštevanje Primerjava nepredznačenih števil

 Izračun A-B = primerjava števil A in B  Če rezultat pade iz območja nepredzn. števil ... C=1 če ostane v območju ... C=0  Če je rezultat enak 0 ... zastavica Z=1 Pozor z zastavico C in ARM7!!! ni enak 0 ... zastavica Z=0 Pri odštevanju na ARM7 dobimo C=0 če pademo iz območja in  Zastavica V nima nobene vloge. C=1 če ne pademo! Če velja Po odštevanju (A-B) dobimo A=B Z=1 A≠B Z=0 A≥B C=0 A>B C=0 in Z=0 (C=1 in Z=0 za ARM7) A

11 Odštevanje Primerjava predznačenih števil

 Izračun A-B = primerjava števil A in B  Če je V=1 nam N-bit laže glede predznaka pravilnega rezultata  Pravilna razlika A in B je negativna, če je N exor V = 1  Če je rezultat enak 0 ... zastavica Z=1 ni enak 0 ... zastavica Z=0  Zastavica C nima nobene vloge.

Če velja Po odštevanju (A-B) dobimo A=B Z=1 A≠B Z=0 A≥B (N exor V)=0 A>B (N exor V)=0 in Z=0 A

12 Bitne operacije Aritmetični/logični pomik bitov v levo Bit izpade

Bit 0 1 0 0 1 1 0 1 = 7710 Utež 128 64 32 16 8 4 2 1

Bit 1 0 0 1 1 0 1 0 = 15410 Utež 128 64 32 16 8 4 2 1 Dodana ničla  Biti se pomaknejo za eno mesto v levo. Na desni (LSB) se doda ničla. Levi bit (MSB) izpade.  Biti nepredznačenega števila se pomaknejo k utežem z dvojno vrednostjo.  Nepredznačena vrednost se torej podvoji ... operacija je enaka množenju z 2.  Tudi predznačena vrednost se pomnoži z 2. 13 Bitne operacije Logični pomik v desno Bit izpade

Bit 0 1 0 0 1 1 0 0 = 7610 Utež 128 64 32 16 8 4 2 1 Dodana ničla

Bit 0 0 1 0 0 1 1 0 = 3810 Utež 128 64 32 16 8 4 2 1

 Biti se pomaknejo za eno mesto v desno. Na levi (MSB) se doda ničla. Desni bit (LSB) izpade.  Biti nepredznačenega števila se pomaknejo k utežem s polovično vrednostjo.  Nepredznačena vrednost se prepolovi ... operacija je enaka deljenju z 2.  Nima posebnega pomena za predznačena števila.

14 Bitne operacije Aritmetični pomik v desno Bit izpade

Bit 1 1 0 0 1 0 1 0 = -5410 Utež -128 64 32 16 8 4 2 1 Kopija MSB

Bit 1 1 1 0 0 1 0 1 = -2710 Utež -128 64 32 16 8 4 2 1

 Biti se pomaknejo za eno mesto v desno. Na levi (MSB) se ponovi MSB prvotne vrednosti. Desni bit (LSB) izpade.  Biti predzn. števila se pomaknejo k utežem s polovično vrednostjo.

 Po pomiku sta leva dva bita enaka 11 (-128+64=-6410) ali 00 (010)  Za predznačena števila je operacija enakovredna deljenju z 2.  Operacija nima posebnega pomena za nepredznačena števila.

15 Množenje celih števil

 Dve n-bitni nepredznačeni števili ... 2n-biten rezultat  Dve n-bitni predznačeni števili ... 2n-biten rezultat  Nepredznačeno in predznačeno množenje nista enaki operaciji!  Dvojiško množenje = pomikanje v levo + seštevanje

Desetiško nepredznačeno Dvojiško nepredznačeno 235 x 153 110001 x 110110 ------23500 = 235 x 100 11000100000 = 110001 x 100000 +11750 = 235 x 50 +01100010000 = 110001 x 010000 +00705 = 235 x 3 +00000000000 = 110001 x 000000 ------+00011000100 = 110001 x 000100 035955 153 +00001100010 = 110001 x 000010 +00000000000 = 110001 x 000000 ------101001010110 110110 16 Deljenje celih števil

 n-bitno nepredznačeno deljenje ... n-biten rezultat  n-bitno predznačeno deljenje ... n+1 – biten rezultat  Dvojiško deljenje = pomikanje v desno + odštevanje Desetiško nepredznačeno Dvojiško nepredznačeno 18763 : 121 110111 : 101 121 ≤ 18763 101 ≤ 110111 1210 ≤ 18763 1010 ≤ 110111 12100 ≤ 18763 tu začnemo 10100 ≤ 110111 121000 > 18763 101000 ≤ 110111 tu začnemo 1010000 > 110111 18763 = 12100 x 1 + 6663 6663 = 1210 x 5 + 613 110111 = 101000 x 1 + 1111 613 = 121 x 5 + 8 1111 = 10100 x 0 + 1111 1111 = 1010 x 1 + 101 18763 = 121 x 155 + 8 101 = 101 x 1 + 0

110111 = 101 x 1011 + 0 17 Množenje in deljenje v praksi

 Običajno izvedeno v obliki vgrajenega programa v uP  Čeprav ima uP ukaz za množenje/deljenje, traja izvajanje ukaza več urinih ciklov.  Primer: ARM7, 68HC11

 V signalnih procesorjih je množenje ponavadi izvedeno s temu namenjenim vezjem – množilnikom.  Rezultat dobimo v enem urinem ciklu.

18 Bitne operacije

 Delajo s soležnimi biti operandov. x y x AND y x OR y x EXOR y xxxxxxxx 0 0 0 0 0 op yyyyyyyy 0 1 0 1 1 ------1 0 0 1 1 zzzzzzzz 0 1 1 1 0

 Drugemu operandu (y) včasih pravimo tudi maska  Invertiranje vseh bitov = eniški komplement  Sprememba predznaka (predznačena števila) = eniški komplement, nato prištej 1  Rotacije – krožni pomik bitov preko bita C Za izvedbo daljših aritm./log. pomikov v levo/desno. Rotacija b7 b6 b5 b4 b3 b2 b1 b0 C bitov v desno

19 ... v siliciju

Bell labs DSP-1 Intel 80386 ALU = Arithmetic Logic Unit – Aritmetično-Logična Enota 20 Procesorski sistemi v telekomunikacijah Registri, sklad in zgradba mikroprocesorja

(c) Arpad Bűrmen, 2010 Register

 Pomnilnik, ki je vgrajen v mikroprocesor.  Hrani podatek, ki je potreben za izvajanje neke naloge, ali pa je nastal kot rezultat opravljene naloge.  Zelo hitri – delujejo na frekvenco ure mikroprocesorja.  Nekateri so dostopni programerju (npr. akumulatorji) drugi dostopni samo posredno (npr. programski števec) tretji pa sploh ne (npr. register, ki hrani ukaz prebran iz pomnilnika).  Izvedba: skupina flip-flopov (1-bitnih pomnilniških celic) vhodi

In In In In out out out out Clk Clk Clk Clk izhodi ura 2 Akumulatorji in sorodni registri

 Akumulatorji - hranijo vhodne podatke za računske operacije. - v njih se shrani rezultat računske operacije. Primer: 68HC11 – dva 8-bitna akumulatorja (A in B) Primer: ARM7 – 16 splošnih 32-bitnih registrov (R0-R15)

 Indeksni registri Ponavadi namenjeni izračunu naslova v pomnilniku. Z njimi so možne le določene operacije (običajno +, -) Primer: 16-bitna registra X in Y v 68HC11 Primer: 14-bitni registri I0-I7 v procesorju ADSP2181

3 Register stanja

 Biti v tem registru podajajo stanje mikroprocesorja  Primer: register stanja v 68HC11 7 0 S X H I N Z V C 8 bitov v registru stanja

N=1 rezultat zadnje operacije je negativen (MSB=1) Z=1 rezultat zadnje operacije je nič V=1 zadnja operacija je povzročila preliv C=1 zadnja operacija je povzročila prenos

 Primer: register stanja (CPSR) v ARM7TDMI jedru 31 30 29 28 ... 7 6 ... 0 N Z C V ... I F T M4 M3 M2 M1 M0 32-bitov

 Register stanja ni nujno neposredno dostopen programerju.

4 Programski števec

 Program counter (PC)  Hrani pomnilniški naslov, s katerega se bo prebrala naslednja beseda ukaza.  Mikroprocesorji s podporo za sočasno večnitnost (SMT) imajo več programskih števcev.  Pri cevovodnih mikroprocesorjih je vrednost PC ob izvajanju ukaza večja od naslova naslednjega ukaza.

ARM7 – en ukaz = 32 bitov = 4 celice = 4 zaporedni naslovi Ukaz 1 naloži 1 dekodiraj 1 izvedi 1 2 naloži 2 dekodiraj 2 izvedi 2 3 naloži 3 dekodiraj 3 izvedi 3 ......

Urin cikel 1 2 3 4 5 ... PC x x+4 x+8 x+12 x+16 ... 5 Sklad (Stack)

 Podatkovna struktura za podatke fiksne širine Npr. LPC2138 – 32 bitov, 68HC11 – 8 bitov  Lahko se hrani v pomnilniku (npr. 68HC11, LPC2138) ali pa kar v samem mikroprocesorju (PICxxx)  Operacija postavljanja na sklad: PUSH  Operacija jemanja s sklada: POP  Jemljemo v obratnem vrstnem redu, kot dajemo na sklad. Sklad je LIFO struktura (Last In, First Out)  Velikost sklada (globina, depth) je omejena.  Položaj (naslov) zadnjega postavljenega elementa v skladu kaže kazalec sklada (Stack Pointer, SP)

6 Uporaba sklada

 Deluje kot garderoba – ko gremo notri, oddamo obleko (podatke), ko gremo ven, jo vzamemo v obratnem vrstnem redu, kot smo jo oddali.

 Za začasno shranjevanje vsebine registrov med izvajanjem podprograma  Za podajanje parametrov podprogramom (t.j. funkcijam v jeziku C)  Za hranjenje naslova, s katerega je bil poklican podprogram (da se lahko vrnemo nazaj, na mesto klica).

7 Registri 68HC11

 Dva 8-bitna akumulatorja A in B (skupaj 16-biten akumulator D)  Dva 16-bitna indeksna registra IX in IY  16-bitni programski števec (PC) in kazalec sklada (SP)  8-bitni statusni register

8 Registri ARM7 ...

 Registri so 32-bitni. Vsi (R0-R15) se lahko uporabljajo kot akumulatorji.  Uporabniški način (User) in privilegirani načini delovanja.  V uporabniškem (User) in privilegiranem sistemskem (System) načinu R0-R15 ... 32-bitni registri R15 = PC (programski števec) R14 = LR (Link Register, shrani vrednost PC pred skokom v podprogram) R13 = SP CPSR (Current Program Status Register) = statusni register (32-biten)  Poleg sistemskega načina (System) so privilegirani načini še FIQ, Supervisor (po resetu, oz SWI prekinitvi), Abort, IRQ, Undefined Vsak od teh načinov ima - svoj R13 in R14 (svoj LR in SP) - svoj SPSR (Saved Program Status Register) (shrani vrednost CPSR pred skokom v privilegiran način)  Način FIQ ima poleg tega še svoje verzije registrov R8-R12

9 ... registri ARM7

10 Aritmetično-logična enota (Arithmetic Logic Unit - ALU)

 Vezje za opravljanje operacij - aritmetičnih (+, -, včasih tudi * in /) - logičnih (AND, OR, EXOR, NOT) - pomikov in rotacij bitov  Običajno izvajajo operacije na celih številih, ki morajo biti kodirana v obliki zapisa z dvojiškim komplementom.

2-bitni ALU, operacije AND, OR, EXOR, +

8-bitni ALU, Texas Instruments SN74AS888

11 von Neumannova arhitektura

 Čedalje več pomnilnika in čedalje hitrejši procesorji Hitrost povezave do pomnilnika ne raste enako hitro. von Neumannovo ozko grlo

Pomnilnik

Podatki Ukazi

Podatki

Naslov Krmilni signaliKrmilni Krmiljenje ALU in Krmilna REGISTRI enota Urin signal Stanje 12 von Neumannova arhitektura Primer: Zilog Z80

krmiljenje

naslov

podatki

13 Harvardska arhitektura

 Dva ločena naslovna prostora (program in podatki)  Program se samo bere

Podatkovni Programski pomnilnik pomnilnik

Naslov D,

Krmilni signali D

Podatki P Podatki

PodatkiD

Naslov P Naslov Krmilni signali P signaliKrmilni Krmiljenje ALU in Krmilna REGISTRI enota Urin signal Stanje

14 Harvardska arhitektura Primer: PIC18F2X2

15 (ne čisto) Harvardska arhitektura Primer: ADSP2181

16 Predpomnilnik (Cache)

V povprečju pospeši Hiter Hitra povezava dostop do delovnega Predpomnilnik (Cache) pomnilnika. ponavadi SRAM Počasna povezava

Naslov, Naslov, krmiljenje krmiljenje

Krmilnik Delovni predpomnilnika Pomnilnik CPU (Cache (počasnejši od Controller) CPU) Podatki Podatki

17 Podatki v predpomnilniku

 Podatek v predpomnilniku (cache line) je običajno dolg (8-512 bytov)  Vsak podatek je označen z oznako (tag) – oznaka je del naslova (najvišji biti) izvirnega podatka v delovnem pomnilniku  Ko uP dostopa do pomnilnika, krmilnik predpomnilnika preveri, če je zahtevani podatek na voljo v predpomnilniku  Če je podatek na voljo v predpomnilniku (cache hit) procesor dobi podatek iz predpomnilnika (hitro - s hitrostjo jedra procesorja)  Če ga ni (cache miss), krmilnik prebere podatek iz delovnega pomnilnika (hitrost delovnega pomnilnika + morebitne zakasnitev prenosa, npr. pri SDRAM)  Ob branju podatka iz delovnega pomnilnika ga krmilnik zapiše tudi v predpomnilnik. Pri tem nek starejši podatek izpade iz predpomnilnika. Pravila za nadomeščanje starih podatkov - replacement policy.  Ko procesor želi pisati, krmilnik posodobi ustrezen podatek v predpomnilniku, in uvrsti podatek v čakalno vrsto za zapis v delovni pomnilnik.  Vsake toliko časa krmilnik prepiše podatke iz predpomnilnika v delovni pomnilnik. Pravila za zapis v delovni pomnilnik – write policy.

18 Učinkovitost predpomnilnika

Načini povezovanja vnosov v predpomnilniku z naslovi v delovnem pomnilniku

Cache performance of SPEC CPU2000, http://www.cs.wisc.edu/multifacet/misc/spec2000cache-data/ (2010-05-02)

19 Spremenjena Harvardska arhitektura

Programski Vodilo P predpomnilnik

Naslov

Naslov Podatki Delovni CPU Krmilnik Naslov pomnilnik Podatki

Podatki

Vodilo D Podatkovni predpomnilnik

20 Spremenjena Harvardska arhitektura

 En sam naslovni prostor, dva predpomnilnika  Od predpomnilnika proti CPU imamo Harvardsko arhitekturo  Programer vidi samo en naslovni prostor  Omogoča pisanje v “programski pomnilnik” Potrebno za delovanje just-in-time (JIT) prevajalnikov npr. Java Virtual Machine (JVM), Microsoft .NET  Omogoča rabo vsebine “programskega pomnilnika” v računskih operacijah (npr. konstante imamo lahko shranjene v programskem pomnilniku)  Če spreminjamo program v pomnilniku – pisanje gre preko podatkovnega predpomnilnika, programski predpomnilnik pa ne ve, da se je program spremenil (vsebina je zastarela) Cache Coherence Problem 21 Predpomnilnik v sodobnih mikroprocesorjih

 Ponavadi je predpomnilnik s krmilnikom že vgrajen v procesor  Več nivojev predpomnilnika  Primer: Intel Core i7-975, 3.33GHZ 4 jedra (procesorji) v enem i7-975 L1: 32kiB+32KiB ... prvi nivo (na vsako jedro, 32KiB podatki, 32KiB program) L2: 256KiB ... drugi nivo (na vsako jedro) L3: 8MiB ... predpomnilnik tretjega nivoja (skupen vsem jedrom)  Kako je s tem pri LPC2138 (š-ARM) FLASH pomnilnik je počasnejši od jedra Primitiven predpomnilnik – MAM (Memory Acceleration Module) 3x128 bitov (4 ukazi naprej), 3x128 bitov (4 ukazi nazaj) 4x32 bitov (4x32 bitov podatkov)

22 Procesorski sistemi v telekomunikacijah Komunikacija v procesorskih sistemih

(c) Arpad Bűrmen, 2010 Sinhrona komunikacija

 Podatkovne linije + sinhronizacijski signal Sihnronizacijski signal določa trenutke, ko oddajnik odda, sprejemnik pa prebere posamezne bite s podatkovne linij.  Sinhronizacijski signal je mogoče tudi rekonstruirati iz podatkovnega signala, če poznamo približno frekvenco s katero oddajnik oddaja bite (clock recovery)

sinhronizacijski signal

podatkovne linije

Oddajnik postavi podatek Sprejemnik odčita podatek na podatkovne linije s podatkovnih linij 2 Asinhrona komunikacija

 Ni sinhronizacijskega signala  Sprejemnik določi trenutek odčitavanja podatka iz samega podatkovnega signala

Trenutek odčitavanja bita +5V

čas -5V 0 0 1 1 0 1

3 Izhodi - 1, 0 in stanje visoke impedance

 Tristanjski izhod (tristate output)  Možne vrednosti: 0, 1 in “Visoka impedanca” (“High Z”)  Stanje visoke impedance – izhod je izoliran od napajanja in mase

Vdd (npr. 3V)

Položaj 1

Položaj “High Z” izhod Položaj 0

GND (0V)

4 Vhodno-izhodna vrata mikroprocesorja

 GPIO vrata (npr. LPC2138) konfiguracijski register Vdd (npr 3V) (vhod/izhod)

izhodni register vrata so izhodna

V/I vrata GND (0V) vhodni register vrata so vhodna

5 Izhod z odprtim ponorom (open-drain output)

 Ko na tak izhod zapišemo 0, dobimo na njem napetost 0V  Ko zapišemo 1, dobimo stanje “visoke impedance”

Ko zapišemo “1” izhod Ko zapišemo “0”

GND (0V)

 Z LPC2138 lahko take izhode simuliramo na sledeč način: 1. Na izhod zapišemo 0 2a. Če želimo stanje “0”, vrata nastavimo kot izhodna. 2b. Za stanje “visoke impedance”, vrata nastavimo kot vhodna.

6 Vodilo (Bus)

 Sinhrona komunikacija, hkrati le v eno smer - izmenično dvosmerna (half-duplex)  Naslovne linije - npr. A15...A0 za 16-biten naslovni prostor  Podatkovne linije - npr. D7...D0 za 8-bitno širino naslovnega prostora  Krmilne linije - npr. MREQn (zahtevan dostop do pomnilnika, negirano), RDn (beri, negirano), WRn (piši, negirano)  Sinhronizacija poteka preko sistemske ure (CLK)  Vse linije razen podatkovnih linij krmili mikroprocesor. Podatkovne linije mikroprocesor ponavadi bere, ob pisanju v zunanje enote (npr. RAM) pa jih krmili. N Naslov ...a CPU RAM ... Podatki

Krmiljenje GND (masa)

7 Vodilo Branje iz pomnilnika (Primer: Z80)

 Pri branju podatka/ukaza iz naslovnega prostora

CLKn

Izhodi uP A15:A0 Veljaven naslov

Izhod uP MREQn

Izhod uP RDn

Izhod uP WRn

Izhodi RAM D7:D0 Neveljavno Veljavni podatek iz RAMa vhodi uP!!!

uP da naslov na vodilo na linije A15:A0 uP RAMu: “Naslov je veljaven.” RAM sprosti linije D7:D0 uP RAMU: “Krmili linije D7:D0” uP prebere podatek D7:D0 RAM prične krmiliti D7:D0 RAM postavi vsebino naslovljene celice (A15:A0) na linije D7:D0

8 Vodilo Pisanje v pomnilnik (Primer: Z80)

 Pri pisanju podatka v pomnilnik

CLKn

Izhodi uP A15:A0 Veljaven naslov

Izhod uP MREQn

Izhod uP RDn

Izhod uP WRn

Izhodi uP D7:D0 Podatek, ki ga zapisujemo v RAM

uP da naslov na vodilo na linije A15:A0 uP RAMu: “Naslov je veljaven.” uP RAMu: “Konec pisanja.” uP na linije D7:D0 postavi podatek uP sprosti linije D7:D0 uP Ramu: “Zapiši podatek na naslov A15:A0.”

9 Hitrost prenosa po vodilu

 Načeloma en podatek na periodo ure (Pri Z80 smo imeli 1 podatek na 3 periode)  Kaj pa če so zunanja vezja prepočasna? Po postavitvi signala za branje/pisanje mikroprocesor nekaj ciklov čaka. Tem ciklom pravimo čakalna stanja (Wait State). Pri nekaterih mikroprocesorjih lahko število Wait State-ov nastavljamo.  Kaj pa če uP ne podpira toliko čakalnih stanj, kot jih potrebujemo? Zunanjo napravo priklopimo na vhodno-izhodna vrata, komunikacijski protokol pa izvedemo programsko (bit banging). Primer: priklop LCD prikazovalnika na š-ARM.

10 Vodilo jedra ARM7

 32 naslovnih in 32 podatkovnih linij  Bolj zapletena komunikacija kot v prejšnjem primeru  Štiri vrste cikla (navaden, sekvenčni, interni, koprocesorski)  Omogoča branje 8- 16- in 32- bitnega podatka  Potrebujemo vmesniško vezje za priklop pomnilnika  Most (bridge) - krmilnik, ki pretvarja in prenaša signale iz enega vodila na drugo vodilo  LPC2138 nima od zunaj dostopnega vodila  LPC2292 (ARM7) ima že vgrajen pomnilniški krmilnik (most). Možen priklop SRAM, ROM, FLASH in BURST ROM vezij Možna širina vezij: 8, 16 ali 32 bitov

11 Prenos podatkov po vodilu CPU ima nadzor nad vodilom

 Prenos iz naprave A v napravo B na vodilu (A in B nista CPU)  CPU ima nadzor nad vodilom in opravlja kopiranje podatkov  Problem: vsaj 1 cikel za branje A in vsaj 1 cikel za pisanje B CPU je zaseden s kopiranjem in ne more početi kaj drugega.

A CPU B

1. cikel ure 2. cikel ure Vodilo

12 Neposreden dostop do pomnilnika (Direct Memory Access, DMA)

 CPU najprej da navodila DMA krmilniku, kako naj izvede prenos (koliko podatkov, od kod, kam)  Kopiranje opravlja DMA krmilnik, ki prevzame nadzor nad vodilom  CPU nima dostopa do vodila, lahko pa neovirano izvaja program iz predpomnilnika  CPU mora počakati le, če potrebuje dostop do vodila npr. če podatka/ukaza ni v predpomnilniku (majhna verjetnost)  Nekatera vodila (npr. PCI) ne potrebujejo DMA krmilnika, njegovo vlogo lahko prevzame katerakoli naprava na vodilu (bus mastering)

CPU DMA A B Cache krmilnik CPU nima dostopa do vodila Vodilo

13 Pulzno-širinski modulator (Pulse Width Modulator, PWM)

 Informacija je skrita v trajanju logične “1”.

Vhodni sinusni signal (zelen)

Izhod PWM modulatorja

 Regulacija moči, krmiljenje motorjev, audio ojačevalniki razreda D, ...  LPC2138 ima 6 PWM izhodov, ki jim lahko nastavimo frekvenco in delež logične “1” v periodi

14 Protokol RS-232 ...

 Asinhrona komunikacija, hkrati poteka v obe smeri - dvosmerna (duplex)  Vezje UART (Universal Asynchronous Receiver/Transmitter) – RS-232 signal  Najmanj 3 linije: RX, TX, masa (GND)  Oddajnik in sprejemnik morata poznati hitrost prenosa (biti/sekundo)  Prenos (podatki) se začne z bitom, ki sledi startnemu bitu

nivo mirovanja 0 1 0 0 1 0 1 0

startni bit (0) podatki paritetni bit “stop” bit (1)  Pariteta – za zaznavanje napake pri prenosu brez (no parity) - ni paritetnega bita, soda (even) – podatki + paritetni bit = sodo število “1” (=1-bitni CRC) liha (odd) – podatki + paritetni bit = liho število “1”  En ali več “stop” bitov

15 ... protokol RS-232

 Standardne hitrosti: 300b/s do 115200b/s  Napetostni nivoji: “0” = +3V..+12V, “1”=-3V..-12V Vezje za oblikovanje signala ... pretvorba 0..Vdd v +5V..-5V  Strojna kontrola pretoka informacij (Hardware Flow Control): Najmanj 5 linij – RX, TX, RTS, CTS, GND Signal RTS (generira oddajnik) – Request To Send Signal CTS (generira sprejemnik) – Clear To Send  Programska kontrola pretoka z znakoma XON/XOFF (ASCII 17 in 19) – XOFF ustavi oddajnik, XON ga sproži  LPC2138 ima 2 UART vmesnika UART0 ... samo oddaja/sprejem (TX/RX) UART1 ... oddaja/sprejem in ostali signali (RTS, CTS, DSR, DTR, DCD, RI) UART1 je pripeljan na RS-232 konektor š-ARMa. UART0 omogoča programiranje FLASH pomnilnika s hitrostmi do 230400b/s.  Kljub starosti (EIA RS-232-C - 1969) je še vedno priljubljen.

16 Vodilo I2C (Philips) ... (Inter-Integrated Circuit)

 Sinhrona komunikacija, izmenično dvosmerna (half-duplex)  3 linije: ura (SCL), podatki (SDA), GND  Izhodi naprav za liniji SCL in SDA so tipa “odprt ponor”  SCL in SDA linija sta v neaktivnem stanju na “1” (“pull up“ upor)  Vsaka naprava ima 7-biten naslov (novejše inačice 16-biten) Vdd  Hitrost: do 100kb/s oz. do 3.4Mb/s

SCL SDA GND

I2C naprava I2C naprava

17 ... vodilo I2C

 Vsaka naprava je bodisi glavna (master) ali podrejena (slave)  Glavna naprava generira SCL signal in naslavlja podrejene naprave s katerimi želi komunicitrati  Več glavnih naprav na vodilu – poseben postopek (arbitraža) določi katera naprava bo uporabljala vodilo (generirala SCL)  Uporaba: serijski pomnilniki (npr. EEPROM), VESA DDC kanal monitorjev, krmiljenje OLED/LCD prikazovalnikov, odčitavanje senzorjev (npr. temperatura, hitrost ventilatorja), ...  LPC2138 ima vgrajena dva I2C vmesnika

18 Vodilo SPI (Motorola) (Serial Peripheral Interface Bus)

 Sinhrona komunikacija, hkrati poteka v obe smeri - dvosmerna (duplex)  5 linij: ura (SCLK), MOSI (Master Output, Slave Input), MISO (Master Input, Slave Output), SS (Slave Select), GND  Ena glavna naprava (master) in ena ali več podrejenih (slave) na vodilu  MISO izhod neaktivnih podrejenih naprave je v stanju visoke impedance (odklopljen od vodila).  Hitrost komunikacije določa signal SCLK (1-70MHz) ... do 70Mb/s  Uporaba: priklop senzorjev, audio kodekov, digitalnih potenciometrov, LCD prikazovalnikov, SD in MMC pomnilniških kartic, ...  JTAG vmesnik (za razhroščevanje) je 3-žična inačica SPI  SPI je zaščiteno ime (Motorola), Drugi proizvajalci imajo svoje izvedenke (npr. Texas Instruments 4-wire SSI)  LPC2138 ima en SPI in en SSP vmesnik SSP pozna protokole SPI, 4-wire SSI in Microwire (National Semiconductor)

19 Vezava SPI ... 1 glavna, 3 neodvisne podrejene naprave

 Po en SS signal za vsako podrejeno napravo.  Aktiven SS izbere podrejeno napravo, ki bo komunicirala z glavno napravo (oddajala na linijo MISO in sprejemala preko linije MOSI)

20 ... vezava SPI Veriga podrejenih naprav (daisy chain)

 Izhod MISO podrejene naprave vezan na vhod MOSI naslednje  Podatki ki prihajajo na MOSI vhod naprave gredo ven na MISO izhodu zakasnjeni za določeno število urinih ciklov

A

B

C

Primer: 8 urinih ciklov zakasnitve od MOSI vhoda proti MISO izhodu podrejene naprave SCLK

8 bitov za napravo C 8 bitov za napravo B 8 bitov za napravo A

21 Vodilo 1-Wire (Dallas Semiconductor) ...

 Asinhrona komunikacija, izmenično dvosmerna (half-duplex)  2 liniji: signal (D) in masa (GND)  Signalna linija lahko služi tudi kot napajanje naprave. Kondenzator v napravi (800pF) nabira naboj za napajanje.  Skupek naprav povezanih z vodilom 1-wire = MicroLan  Ena glavna naprava (master), vse ostale so podrejene (slave)  Vsaka naprava ima 64-bitno ID kodo (od tega 8 bitov za tip in 8 bitov za kontrolno kodo CRC)  Uporaba: priklop pametnih senzorjev, pomnilnika, A/D in D/A pretvornikov, digitalnih potenciometrov, ...  Izvedba protokola je možna s standardnim UART vezjem (vezjem za RS-232 komunikacijo )

22 ... vodilo 1-Wire (komunikacija)

 D izhod naprav tipa “odprt ponor”, pull-up upor na liniji D (kot pri I2C)  Neaktivna linija D je v stanju visoke napetosti zaradi pull-up upora.  “1” = 60us dolg pulz nizke napetosti, “0” = 1-15us dolg pulz nizke napetosti  Oddajanje sproži glavna naprava s 60us pulzom nizke napetosti  Hitrost prenosa: do 16.3kb/s Vdd

D GND

1-Wire 1-Wire 1-Wire naprava naprava naprava (master) (slave) (slave)

23 Vodilo CAN (Robert Bosch GmbH) (Controller Area Network)

 Asinhrona komunikacija, izmenično dvosmerna (half-duplex)  Za povezovanje naprav v vozilih (ponavadio so to senzorji in aktuatorji)  Naenkrat lahko pošilja sporočila le ena naprava  Komunikacija poteka preko sukanega para žic (twisted pair)  Naprave priklopljene vzporedno na odcepe vodila  Na razdaljah do 40m hitrosti do 1Mb/s

UTP – Unshielded Twisted Pair STP – Shielded Twisted Pair (neoklopljeni sukani pari žic) (oklopljeni sukani pari žic) 24 Vodilo USB (Universal Serial Bus)

 Serijska komunikacija, izmenično dvosmerna  Hitrost: USB 1.0 do 1.5-2Mb/s, USB 2.0 – do 480Mb/s, USB 3.0 – do 4.8Gb/s  Komunikacija poteka preko sukanega para žic (liniji D+ in D-).  Liniji GND in Vcc (+5V) lahko služita za napajata podrejenih naprav.  Signal je diferencialen (ena žica parice +U, druga –U proti masi)  USB 3.0 – dva dodatna sukana para za dvosmerno komunikacijo  Smer komunikacije določa naprava, ki je gostitelj (host).  Vse ostale naprave so podrejene, oddajajo samo, ko so nagovorjene. Pri USB 3.0 lahko komunikacijo sproži tudi podrejena naprava.  USB OTG (On-The-Go) – podrejena naprava lahko prevzame vlogo gostitelja – npr. fotoaparat lahko tiska neposredno na tiskalnik

25 USB - priključki

USB 2.0 1 .. +5V 2 .. D- 3 .. D+ 4 .. GND

USB 3.0 (SuperSpeed) USB A vtičnica

26 IEEE 1394

 Serijska komunikacija, izmenično dvosmerna  Hitrost: 100 do 400Mb/s (FireWire 400), do 3.2Gb/s (IEEE1394b)  Uporaba: priklapljanje digitalnih video naprav  Druga imena: i.LINK (Sony), FireWire (Apple)

IEEE1394 (400Mb/s)

27 Ethernet (IEEE 802.3)

 Izmenično dvosmerna/dvosmerna komunikacija  Uporaba: mrežne povezave  Hitrosti: 10Mb/s, 100Mb/s, 1Gb/s, 10Gb/s  Prenosni medij: sukani pari žic ali optična vlakna  Vsaka naprava ima 48-biten naslov (Media Access Control, MAC) 24 bitov za kodo proizvajalca, preostalih 24 bitov dodeli proizvajalec

28 Procesorski sistemi v telekomunikacijah Gradniki in povezovanje gradnikov

(c) Arpad Bűrmen, 2010 Statični RAM pomnilnik (SRAM)

 RAM – Random Access Memory – pomnilnik v katerem lahko do podatkov dostopamo v poljubnem vrstem redu  Podatek se hrani v vezju, ki ima dve stabilni stanji (0 in 1) Najmanj 6 tranzistorjev na bit.

 Hrani podatke dokler ima napajanje priklop  Kratek dostopni čas (10ns)  Uporaba: kot predpomnilnik (cache),

medpomnilnik (buffer) branje pisanje trdega diska in DVD pogonov, modemi, LCD prikazovalniki, grafične kartice, sistemi za digitalno obdelavo signalov (DSP), ... SRAM celica (1 bit) 2 Asinhroni vmesnik do RAMa

 Priklučki: m naslovnih linij (Ax), n podatkovnih linij (Dx), linija “priklop vezja” (Chip Enable, CE), beri (R), piši (W) Branje 2k x 8bit SRAMa (m=11, n=8), linija Wn je ves čas na 1 (ni aktivna, ker ne pišemo) A10:A0 Veljaven naslov

CEn

Rn

D7:D0 Neveljavno Veljavni podatek iz RAMa (izhod RAMa, vhod CPU))

Pisanje 2k x 8bit SRAMa (m=11, n=8), linija Rn je ves čas na 1 (ni aktivna, ker ne beremo) A10:A0 Veljaven naslov

CEn

Wn

D7:D0 Podatek za zapis v RAM (izhod CPU) 3 Sinhroni vmesnik do RAMa

 Prenos podatkov sinhroniziran z urinim signalom  Po postavitvi naslova in preteku prehodnega časa (latence) se začne prenos, ponavadi vsebina več zaporednih celic, po ena na urin cikel (burst prenos)  DDR (Double Data Rate): en podatek se prenese ob prednji, en pa ob zadnji fronti ure (2 podatka na cikel ure)

Branje/pisanje, 2Mx36bit DDR SRAM, 4 cikli latence, 8 podatkov/burst, fCLK,max=300MHz Prenos: fCLK x 2 podatka/cikel x 36 bitov/podatek / 8 bitov/byte = 2.7GB/s

4 Dinamični RAM (DRAM)

 Podatek se hrani v kondenzatorju Najmanj 1 kondenzator in 1 tranzistor na bit.  Biti so razporejeni v pravokotno shemo (vrstice, stolpci), npr. 8Mx8bit vezje = 64Mbit = 8192 vrstic x 8192 stolpcev  Parazitni tokovi - Kondenzator spreminja naboj (napetost). Potrebno osveževanje podatkov (refresh) vsake toliko časa.

DRAM celica (1 bit) Pravokotna shema celic (4 x 4) za 4x4bit DRAM

5 Osveževanje DRAM, branje in pisanje

 Tipično osvežimo podatek na 50ms  Sodobna DRAM vezja: vgrajen podsklop za osveževanje. Sprožimo ga z aktivacijo ustreznega vhoda (vsake toliko časa).  Osveževanje poteka za vse bite v eni vrstici naenkrat.  8192 vrstic ... osveževanje sprožimo na 50ms/8192=6us  Osveževanje traja okrog 50-100ns.  Med osveževanjem branje in pisanje ni mogoče.  Sodobni DRAMi: SDRAM (sinhroni vmesnik), burst prenos, DDR (prenos ob prednji in zadnji fronti ure)  Naslavljanje lahko poteka v dveh delih – multipleksiran naslov (naslov se pošlje SDRAMu v 2 ciklih; ½ naslova na urin cikel)

6 Primer: DDR3-1066 SDRAM Samsung K4B4G0846A-HYH9

 512M x 8bitov (29-biten naslov, 8-bitni podatki) = 4Gb = 512MB  Organizacija: 8 bank po 65536 vrstic x 1024 stolpcev x 8 bitov

 fCLK≤533MHz (DDR3-1066), latenca = 7 ciklov  Burst prenos po 8 besed zaporedoma (8x8bitov)

 Hitrost prenosa: fCLK x 2 besedi/cikel x 1byte/besedo = 1066MB/s

DDR3 – branje podatkov, latenca=5, dolžina burst prenosa=8

7 Pretežno bralni pomnilniki Read-Only Memory (ROM)

 Običajno vsebine med delovanjem sistema ne spreminjamo  ROM vezja – programirana ob izdelavi (z masko), nezbrisljiva  PROM vezja – 1x programirljiva (električno), nezbrisljiva  EPROM – kot PROM, le da so zbrisljiva z UV svetlobo  EEPROM – kot EPROM, le da so električno zbrisljiva  Podatki se ohranijo tudi ob odklopu napajanja  Brisanje mnogo počasnejše od branja  Življenjska doba: približno 1000 ciklov brisanje/programiranje

EPROM vezje Naprava za brisanje EPROM vezij 8 Pretežno bralni pomnilniki FLASH pomnilnik

 Kot EEPROM, le da je brisanje hitrejše. Življenjska doba 105-106 brisanj.  Izvedba: MOS tranzistorji s plavajočimi (izoliranimi) vrati v katerih so lahko ujeti elektroni, ki spremenijo pragovno napetost tranzistorja.  Programiranje = odlaganje elektronov na nekatera plavajoča vrata  Brisanje = odstranjevanje elektronov z vseh plavajočih vrat  NOR FLASH: brišemo ga po blokih, programiramo pa po en bit ali besedo naenkrat. Kadarkoli možen dostop do podatka na poljubnem naslovu. Za hranjenje programa, podobna vloga kot EEPROM.  NAND FLASH: dostop do podatkov podoben kot pri diskih. Beremo/pišemo v enem kosu po eno stran naenkrat (običajno 512bytov). Uporaba: kot nadomestek za trdi disk. Najdemo ga tudi v SD/SDHC karticah.  Vmesnih za SD/SDHC kartice je pogosto že vgrajen v mikroprocesorje npr. : i.MX27 (jedro ARM9) ima tak vmesnik

9 Pretežno bralni pomnilniki Vmesniki

 Vzporedni vmesnik Npr.: ATMEL AT28HC256 - EEPROM 32k x 8bit, vzporedni vmesnik, dostopni čas (branje) 70ns 15 naslovnih linij, 8 podatkovnih linij, CE (chip enable), OE (output enable – read) in WE (write enable) Programiranje: 3-10ms/stran (1stran = 64 bytov)

 Serijski vmesnik (npr. I2C, SPI ali Microwire) Npr.: ST M24M01-HR – serijski I2C EEPROM 1Mbit, vmesnik tvorijo linije SCL, SDA in E (enable) Hitrost ure (SCL): do 1MHz

10 A/D in D/A pretvorniki

 Za pretvorbo analognih v digitalne signale (A/D) in obratno (D/A)  Za zanesljivo pretvorbo je potreba stabilna referenčna napetost  Vhodni in izhodni del sistemov za digitalno obdelavo signala  Vmesnik: vodilo mikroprocesorja, pogosteje pa I2C, SPI ali kako podobno vodilo  Včasih so vgrajeni že v mikroprocesor (npr. LPC2138) n  n-bitni A/D pretvornik: ločljivost = VR/2 Npr.: 10 bitov pri referenčni nap. 2V: ločljivost= 2.0mV Problem: šum!

 A/D: število vzorcev na sekundo = frekvenca vzorčenja (fs) Signal mora biti frekvenčno omejen z fs/2 (če nočemo pojava lažnih frekvenc - aliasing)

 Izhod D/A mora skozi filter, ki odstrani frekvence nad fs/2

11 Več naprav na eno vodilo ...

 Naprava s 16 8-bitnimi registri (4 naslovne sponke, 8 podatkovnih sponk)  Priklop na mikroprocesor s 16 naslovnimi linijami in 8 podatkovnimi linijami  Želimo, da se 16 registrov te naprave pojavi na naslovih $FFE0-$FFEF  Ko je naprava naslovljena, so linije A15-A5 na 1, linija A4 pa na 0 (naslov $FFEx)

A15-A4 CE Naslovni R dekoder R W W CPU Naprava A3-A0 A3-A0

D7-D0 D7-D0

 Dekoder aktivira “chip enable” (CE) vhod, če so linije A15-A5 na 1, linija A4 pa na 0.  Signala R (read) in W (write) dekoder spusti skozi le če je aktiviran CE. Če ni, sta R in W na 0 (neaktivna). 12 ... več naprav na eno vodilo

 Dve napravi, ena (A) na $FF00-$FF0F, druga (B) na $FFE0-$FFEF  Dekoder A aktivira CE, če so linije A15-A8 na1 in A7-A4 na 0  Dekoder B aktivira CE, če so linije A15-A5 na1 in A4 na 0

A15-A4 CE Dekoder R A W R A W A3-A0

A3-A0 D7-D0

CPU D7-D0

D7-D0 A3-A0 A3-A0 B D7A3-A0D0Dekoder R B W CE

13 Enota za upravljanje s pomnilnikom (MMU)

 Opravlja preslikavo fizičnih naslovov (ki so določeni z dekoderji med vodilom in napravami) v logične naslove  Pravila preslikave (Page Table Entry, PTE) so v tabeli (Page Table), ki je lahko v pomnilniku, lahko pa je tudi kje drugje (npr. pri MC68451 v samem MMUju).  Ker je dostop do pomnilnika počasen, ima MMU ponavadi še neke vrste predpomnilnik za PTEje – Transaction Lookaside Buffer (TLB).  Preslikavo lahko določamo programsko s spreminjanjem PTEjev.

Naslovno vodilo, Naprave CPU krmilni signali (R, W) MMU na vodilu

TLB

14 MMU Preslikava fizičnih v logične naslove

 CPU sedaj dela samo še z logičnimi naslovi  Preslikavamo lahko bloke takih velikosti, kot jih določa/dovoljuje MMU. ARM926:1 blok = 1KiB, 4KiB, 64KiB ali 1MiB. Tabela PTEjev se hrani v pomnilniku.

$0000 $0000 Fizični naslovni Blok A Logični prostor (določen s (naprava 1) naslovni Blok A (naprava 1) fizičnim priklopom prostor naprav na vodilo) Blok B (naprava 2)

MMU Blok B (naprava 2)

$FFFF $FFFF

15 MMU Zaščita pomnilnika

 Posameznim blokom v logičnem naslovnem prostoru lahko z ustreznimi PTEji določimo pravice dostopa (branje, pisanje)  MMU zazna kršitve pravil dostopa (page fault) in jih sporoči mikroprocesorju. Pri ARM9 naprimer sporočanje poteka preko prekinitve ABORT.  To pride prav v večopravilnih sistemih, kjer teče več programov hkrati. MMU preprečuje, da bi program dostopal do vsebine pomnilnika drugih programov.  Sesuvanje programov (npr. pod sistemom Windows ali Linux) je večinoma posledica poskusa kršitve pravil dostopa (page fault). Ob kršitvi je CPU obveščen in operacijski sistem prekine program, ki je poskusil kršiti pravila dostopa (saj je program očitno slabo napisan).  MMU je pogosto že vgrajen v mikroprocesor.  LPC2138 nima vgrajenega MMUja.  Intel: od 80286 naprej je MMU vgrajen.

MC68451 – MMU za mikroprocesor Motorola 68010

16 Generiranje urinega signala

 Ponavadi s izvedemo oscilator s pomočjo kvarčnega kristala in vezja, ki je ponavadi že vgrajeno v mikroprocesor.

Vsak kristal ima svojo lastno frekvenco CLK nihanja (resonance). Frekvenca nihanja

je rahlo odvisna od C1 in C2. Da kristal niha točno s frekvenco navedeno v A B CPU podatkovnem listu, mora biti

C1 C2 / (C1+C2) +Cx= CLoad CLoad je običajno podan v podatkovnem listu kristala, Cx je stresana kapacitivnost povezav (2-5pF). Izračunana C1 in C2 je Kristal treba zmanjšati za kapacitivnosti C1 C2 priključkov A in B (podatkovni list procesorja).

 Najpogosteje uporabljeno je zgornje vezje (Pierce-ov oscilator).  Če je signal ure generiran z zunanjim vezjem, ga pripeljemo na vhod A.  Frekvence kristalov so običajno od nekaj MHz do nekaj 10MHz.

17 Fazno sklenjena zanka Phase Locked Loop (PLL)

 Za generiranje racionalnih večkranikov frekvenca nihanja kristala (M/N)

 Frekvenca fVCO je sorazmerna vhodni napetosti Vin

Kristalni fOSC Delilnik f1=fOSC/N oscilator frekv. (N)

Fazni Napetost = K x (f1-f2) CLK primerjalnik

Nap. krm. Delilnik oscilator frekv. (M) Vin fVCO f2=fVCO/M

 fVCO = fOSC x M/N  M in N sta celi števili ... delilnik frekvence je navaden digitalni števec  PLL je ponavadi že vgrajen v mikroprocesorje

18 Napajanje, tokovne špice in preprečevanje motenj

 V velikih digitalnih vezjih hkrati preklopi veliko tranzistorjev.  Posledica: ob frontah ure imamo konice toka na napajalnih sponkah vezja.  Konice toka + upornosti napajalnih linij in vira = padec napetosti  Padci napetosti se prenesejo na napajanje drugih vezij in jih lahko motijo. Veliki tokovi povzročajo elektromagnetno sevanje (EMI – ElectroMagnetic Interference).  Rešitev: blokirni kondezatorji (100nF) med napajalnimi sponkami in maso Postavitev: čim bližje napajalnim sponkam (padci napetosti na linijah!) linija proti + sponki vira

manjša tokovna konica in s kondenzator, ki se prazni tem manjši padec napetosti med trajanjem tokovne na napajalnih linijah konice in s tem dodatno napaja vezje

linija proti - sponki vira 19 Procesorski sistemi v telekomunikacijah Prekinitve

(c) Arpad Bűrmen, 2010 Problem: obdelava dogodka Rešitev A: izpraševanje (polling)

 Recimo, da moramo ob nekem dogodku, izvršiti opravilo A ukaz 1  O dogodku smo obveščeni z nekim DA zunanjim signalom signal? naredi A  Odzivnost (kako hitro se odzovemo na dogodek) je odvisna od pogostosti ukaz 2 izpraševanja (preverjanja signala).

DA ukaz 1 signal? naredi A

ukaz 2 ukaz 3

čas ukaz 3 DA čas signal? naredi A Program z Prvotni program izpraševanjem

2 Problem: obdelava dogodka Rešitev B: prekinitve (interrupts, exceptions)  Prekinitveni mehanizem v mikroprocesorju ob zaznanem dogodku sproži poseben (prekinitveni) podprogram, ki izvede opravilo A.

V tem ukaz 1 trenutku skok v prekinitveni se zgodi podprogram dogodek ukaz 2 latenca oz. zakasnitev ukaz A1

glavni program ukaz A2

prekinitveni ukaz A3 podprogram (opravilo A) ukaz 3 vrnitev iz prekinitvenega čas podprograma

3 Proženje prekinitev

 Z zunanjim signalom (strojne prekinitve) a) Proženje na nivo signala (npr. na logično „1‟)

CLK

signal čas trenutki proženja prekinitve b) Proženje na fronto signala (npr. na prednjo fronto – ob „0‟ v „1‟)

CLK

signal čas trenutki proženja prekinitve  Programsko – s posebnim ukazom (programske prekinitve) npr. ukaz SWI jedra ARM7 sproži SWI prekinitev

4 Prekinitve in program

 Ob skoku v prekinitveni podprogram si mikroprocesor zapomni stanje programskega števca (PC). Ponavadi ga zapiše na sklad. ARM7 ga zapiše v register R14 (LR – link register).  Programer mora sam poskrbeti za začasno shranjevanje stanja registrov, ki jih bo uporabil v prekinitvenem podprogramu. Ponavadi jih zapiše na sklad. Včasih se to zgodi samodejno (npr. pri 68HC11) ARM7 ima za nekatere prekinitve poseben nabor registrov (npr. lasten nabor R8-R14 za prekinitev FIQ, ki se aktivira ob vstopu v prekinitveni podprogram prekinitve FIQ).  Vrnitev iz prekinitvenega podprograma izvedemo s posebnim ukazom mikroprocesorja, ki vzpostavi prvotno stanje PC.  Pred vrnitvijo moramo vzpostaviti prvotno stanje registrov. Pri prekinitvi FIQ jedra ARM7 se to za registre R8-R14 zgodi samodejno. V ostalih primerih ponavadi poberemo prej zapisane vrednosti s sklada.

5 Maskiranje prekinitev NMI prekinitve, prekinitev RESET

 Maskiranje = izklop mehanizma za proženje prekinitvenega programa. Ponavadi poteka s postavljanjem bitov v registru stanja. Pri ARM7 maskiramo prekinitev FIQ s postavitvijo 6. bita (F) v registru CPSR na 1.  Vseh prekinitev se ne da maskirati (Non-Maskable Interrupt, NMI). npr. ne moremo maskirati prekinitve RESET.  Ponavadi se prekinitve samodejno maskirajo ob vstopu v prekinitveni podprogram. To je smiselno, saj začetnega dela podprograma (shranjevanja registrov na sklad) ne sme prekiniti nova zahteva po prekinitvi.  Prekinitev RESET sprožimo ob zagonu mikroprocesorja. Ponavadi je nivojsko prožena. Pri LPC2138 nizek nivo na vhodu RESETn sproži prekinitev RESET. Vdd

RESETn LPC2138 Tipka “reset”

6 Prekinitve jedra ARM7...

 RESET Proži jo vhod RESETn jedra ARM7. Nizek nivo („0‟) sproži prekinitev RESET.  Data Abort Proži jo vhod ABORT jedra ARM7. Če gre ta vhod na visok nivo („1‟) med nalaganjem podatka iz pomnilnika, se sproži ta prekinitev.  FIQ Proži jo vhod FIQn jedra ARM7. Če gre ta vhod na nizek nivo („0‟), se sproži prekinitev FIQ.  IRQ Proži jo vhod IRQn jedra ARM7. Če gre ta vhod na nizek nivo („0‟), se sproži prekinitev IRQ.  Prefetch Abort Podobna kot Data Abort, le da se sproži, če gre signal ABORT na visok nivo med nalaganjem ukaza iz pomnilnika. Preko Data/Prefetch Abort prekinitve lahko enota za upravljanje s pomnilnikom (MMU) jedro obvešča o poskusih dostopa do zaščitenih delov pomnilnika. 7 ... prekinitve jedra ARM7

 Undefined Instruction Sproži se, če jedro ob izvajanju ukaza naleti na 32-bitno kodo, ki ne ustreza nobenemu znanemu ukazu.  SWI Sproži jo programer s pomočjo ukaza SWI. Ponavadi se uporablja za klice operacijskega sistema. Ukaz ima en 24-bitni operand, ki ga uporabljamo za navajanje kode storitve operacijskega sistema.

 Maksimalna latenca najhitrejše prekinitve (FIQ) v jedru ARM7 27ciklov ure (če nimamo čakalnih stanj – zero wait state) 27 ciklov @ 40 MHz = 0.675us  Tabela prekinitvenih vektorjev naslovi 0x00-0x20 hranijo 8 skočnih ukazov, po enega za skok na vsakega od prekinitvenih podprogramov: RESET, Undefined Instruction, SWI, Prefetch Abort, Data Abort, xxx, IRQ in FIQ. Naslovi 0x14-0x18 nimajo posebnega pomena za jedro ARM7. V LPC2138 so uporabljeni za kontrolno vsoto tabele vektorjev.

8 Gnezdene prekinitve...

 Včasih dovolimo, da se prekinitveni podprogram A prekine z novo zahtevo po prekinitvi, ki se pojavi med izvajanjem podprograma A. skok v prekinitveni dogodek A ukaz 1 podprogram A skok v prekinitveni latenca A podprogram B dogodek B ukaz A1 latenca B ukaz B1 glavni prekinitveni podprogram A program prekinitveni ukaz B2 podprogram B

ukaz A2 vrnitev iz prekinitvenega ukaz 3 vrnitev iz prekinitvenega podprograma B čas podprograma A

9 ... gnezdene prekinitve Prioriteta (prednost) prekinitve

 Pri gnezdenih prekinitvah je treba biti še posebej pozoren na shranjevanje stanja registrov pred začetkom izvajanja prekinitvenega podprograma.  Prekinitveni podprogram lahko prekine nova zahteva po isti prekinitvi (podprogram A = podprogram B).  Gnezdenje je ponavadi treba ročno omogočiti. npr. pri ARM7 v prekinitvenem podprogramu za servisiranje prekinitve FIQ postavimo bit F registra CPSR na 0 (ponovno omogočimo prekinitev FIQ).  Izvajanje nekega prekinitvenega podprograma lahko prekinejo le tiste zahteve po prekinitvi, ki imajo višjo prioriteto (prednost). Prioritete prekinitev pri ARM7: RESET (najvišja), Data Abort, FIQ, IRQ, Prefetch Abort, Undefined Instruction, SWI (najnižja)

10 Premalo vhodov za prekinitve? Prekinitveni krmilnik...

 Jedro ARM7 ima dva vhoda za proženje prekinitev- FIQ in IRQ.  Kaj če je to premalo (več kot 2 napravi v sistemu prožita prekinitve)?  Krmilnik si ob zahtevi po prekinitvi na vhodih IRQ1..IRQ8 zapomni vhod, na katerem se je pojavila zahteva ter sproži prekinitev na vhodu IRQ mikroprocesorja.  Ob servisiranju zahteve prekinitveni podprogram iz registrov krmilnika prebere, kateri vhod krmilnika je sprožil prekinitev (katera naprava jo je sprožila).

An..Ar+1 CE IRQ1 naslovni IRQ2 R dekoder R IRQ3 W W IRQ4 prekinitveni CPU Ar..A0 Ar..A0 krmilnik IRQ5 IRQ6 D0..Dm D0..Dm IRQ7 IRQ8 IRQ IRQout

11 ... prekinitveni krmilnik

 Intel 8259 – prekinitveni krmilnik za mikroprocesorje 8085 in 8086 (IBM PC/XT) - 8 prekinitev – IRQ0...IRQ7  V IBM PC/AT dve vezji 8259 – dodatno še IRQ8...IRQ15

 Danes: Intel APIC (Advanced Programmable Interrupt Controllers)  LPC2138 (jedro ARM7) – vgrajen prekinitveni krmilnik VIC (Vectored Interrupt Controller) 32 vhodov (virov zahtev po prekinitvi), 2 izhoda (IRQ, FIQ) kateri vhod proži kateri izhod nastavimo programsko 32 virov zahtev po prekinitvi lahko razvrstimo po prioriteti

12 Druge rabe prekinitev Izvedba nedefiniranih ukazov CPU

 Primer – ARM7  Če CPU naleti na neznan ukaz se sproži prekinitev “Undefined Instruction”  Servisni podprogram te prekinitve lahko prebere ukaz, ki je povzročil prekinitev in temu ustrezno ukrepa  Za emulacijo matematičnega koprocesorja Če je koprocesor prisoten, bo izvršil ukaz in prekinitev se ne bo sprožila Če koprocesorja ni, se sproži prekinitev. Prekinitveni podprogram programsko izvrši (emulira) ukaz koprocesorja.  Za emulacijo ukazov novejših ARM procesorjev.

13 Druge rabe prekinitev Sistemski klici OS

 Sistemski klic izvede storitev operacijskega sistema, kadar to zahteva program (izvede sistemski klic).  Sistemski klici so pogosto izvedeni s pomočjo programskih prekinitev (na ARM7 je to SWI).  Sistemski klic (ARM7) izvedemo s pomočjo ukaza SWI xxx Pri tem je xxx številka sistemskega klica.  SWI prekinitveni podprogram prebere številko sistemskega klica in izvede pripadajoč sistemski podprogram.

14 Druge rabe prekinitev Sporočanje nedovoljenih dostopov

 Enota za upravljanje s pomnilnikom (MMU) lahko sporoči poskus dostopa do zaščitenega dela pomnilnika preko linije ABORT jedru ARM7  Če se to zgodi med nalaganjem ukaza, se sproži “Prefetch Abort” prekinitev.  Če se to zgodi med nalaganjem podatka, se sproži “Data Abort” prekinitev.  Prekinitveni podprogram (operacijski sistem) lahko nato ustrezno ukrepa: a) Ustavi program, ki je povzročil nedovoljen dostop b) Če je prekinitev posledica pomanjkanja pomnilnika sproži mehanizme za preslikavo pomnilnika in izmenjavo pomnilnika (swapping), da ustvari iluzijo večje količine pomnilnika, kot je dejansko prisotna v sistemu. 15 Procesorski sistemi v telekomunikacijah Programiranje, prevajanje in izvajanje programov

(c) Arpad Bűrmen, 2010 Strojni in zbirni jezik

Naslov Vsebina (HEX)  Strojni jezik: številske kode ukazov ... a A3 in njihovih operandov a+1 00 MOV R0, #0xA3  Zbirni jezik (assembly language): a+2 A0 besedni zapis za strojni jezik a+3 E3 a+4 12  Preslikava enega v drugega je a+5 00 ADDS R0, R0, #0x12 preprosta. a+6 90  Program za preslikavo zbirni jezik v a+7 E2 ... strojni jezik: zbirnik (assembler)  Program za preslikavo strojnega v strojni jezik zbirni jezik zbirni jezik: disassembler  Disassembler se pogosto uporablja za tki. reverzni inženiring - študiranje tujih programov, katerih izvorne kode (zbirne kode) nimamo na razpolago.  Strojni jezik ARM7 pozna dva nabora ukazov: ARM in THUMB. Ukazi ARM načina so dolgi 32 bitov, ukazi THUMB načina pa 16 bitov. THUMB ukazi so okrnjeni ARM ukazi. THUMB programi so krajši. Preklop v THUMB način delovanja: bit T (5. bit) registra CPSR postavimo na 1.

2 Višji programski jeziki

 Enostavnejše izražanje koceptov, kot je naprimer zanka. MOV R0, #0 unsigned int *i; LDR R1, =__bss_start__ i=(unsigned int *)__bss_start__; LDR R2, =__bss_end__ while (i<(unsigned int*)__bss_end__) Loop: CMP R1, R2 { STRLO R0, [R1], #4 *i=0; BLO Loop i++; }  Bolj zapleteni podatkovni tipi kot v strojnem jeziku. Npr. strojni jezik ARM7 pozna le en tip ... 32-bitna cela števila. Delo z realnimi števili ni enostavno, če programiramo v strojnem jeziku.  Enostavnejše pisanje matematičnih formul. Poskusite napisati tole (izračun e - osnove naravnega logaritma) v strojnem jeziku ARM7  int i, n=20; double clen=1.0, e=1.0; for(i=1;i<=n;i++) { e=e+clen; clen=clen/(i+1); } 3 Strojno razumevanje višjih jezikov 1. Besedna analiza (Lexical Analysis)

 Razpoznavanje elementov, kot so rezervirane besede, operatorji, konstante, identifikatorji, imena spremenljivk, posebni znaki) ...

a = 1 ; posebni znaki

i = 0 ; operator while ( a < 10 ) { konstanta i = i + 1 ; a = a * i ; rezervirana beseda } identifikator  Razpoznavanje je enostavno, saj se programski jeziki strogo držijo predpisanih pravil, teh pa je malo in so preprosta.  Rezultat je zaporedje osnovnih simbolov (angl. token). ...; i = 0 ; while ( a < 10 ) { ... 4 Strojno razumevanje višjih jezikov 2. Slovnična analiza (Parsing)

 Razpoznavanje slovničnih vzorcev v zaporedju osnovnih simbolov  Slovnični vzorci so določeni s slovničnimi pravili ... a = 1 ; i = 0 ; ...

Pravilo 1, 2 izraz izraz izraz izraz

Pravilo 3 izraz izraz

Pravilo 4 stavek stavek

 Pravilo 1: konstanta je izraz identifikator je izraz Pravilo 2: izraz operator izraz je izraz Pravilo 3: izraz podpičje je stavek Pravilo 4: stavek stavek stavek ... je zaporedje stavkov  Razpoznavanje vzorcev v zaporedju simbolov je enostavna naloga, ker so pravila ponavadi enostavna in jih ni veliko. 5 Rezultat slovnične analize: Drevo izpeljav (Syntax Tree)

 Razpoznane slovnične vzorce se da predstaviti v obliki drevesa.

L a < D 10

pogoj while L i stavek = D L i + zaporedje 1 D 1 stavkov 2

L a = pogoj (izraz) D L a * while ( a < 10 ) { D i i = i + 1 ; stavek zaporedje zanka WHILE a = a * i ; stavek stavkov }

6 Kaj početi z drevesom izpeljav?

Drevo izpeljav za Drevo izpeljav za nek program nek program napisan v jeziku X napisan v jeziku X

Navidezni stroj, ki zna izvajati Program, ki drevo izpeljav program podan v obliki drevesa prepiše v nek drug jezik Y izpeljav

Tolmač (Interpreter) Prevajalnik (Compiler) za jezik X iz jezika X v jezik Y

Program v jeziku Y Rezultati izvajanja (ponavadi je Y programa strojni jezik)

7 Tolmač (Interpreter)

 Je program za izvajanje programov v nekem jeziku A.  Pred izvajanjem se program iz jezika A prevede v drevo izpeljav.  Včasih temu sledi še prevajanje v bolj kompaktno obliko – byte-kodo (Bytecode), ki se nato izvaja v posebnem tolmaču – navideznem stroju (Virtual Machine)  Nekateri tolmači izvajajo program brez, da bi prej zgradili drevo izpeljav oz. byte-kodo (npr. nekatere preproste ukazne lupine).  Byte-koda se lahko shrani v posebno datoteko. Ob naslednjem zagonu programa jo navidezni stroj prebere iz datoteke. Primer: Python – programi so v datotekah .py, byte-koda pa v datotekah .pyc  Program v tolmaču teče počasneje, kot bi tekel, če bi ga pred zagonom prevedli v strojni jezik.  Primeri jezikov, ki se izvajajo s pomočjo tolmača: Python, BASIC, PHP, Ruby, JavaScript, ukazne lupine (BASH, ...), ... 8 Predčasni prevajalnik JIT (Just-In-Time) Compiler

 Tik pred izvajanjem posameznih delov programa se byte-koda pred izvajanjem prevede v strojni jezik.  Hitrejše izvajanje, kot bi ga dobili z navideznim strojem.  Mogoče so optimizacije programa na osnovi podatkov zbranih med delovanjem programa.  Primer: Java, JavaScript, .NET okolje, MATLAB, ...  Ideja se pojavi že leta 1960 z jezikom LISP (McCarthy), jezik LC leta 1970 (Mitchell 1970). Jezik Smalltalk – različica Self (podjetje SUN) dosegala ½ hitrosti statično prevedenih programov (npr. s prevajalnikom za C). Izkušnje s Self-om so bile uporabljene pri razvoju Jave. 9 Statično prevajanje v strojni jezik

 Program (izvorna koda) se v celoti prevede v strojni jezik še pred izvajanjem.  Primer: program napisan v jeziku C in v strojnem jeziku

Izvorna koda programa datoteka .c datoteka .c datoteka .s (jezik C in zbirni jezik)

Prevajalnik Prevajalnik Zbirnik (Compiler) (Compiler) (Assembler)

Objektne datoteke datoteka .o datoteka .o datoteka .o (strojni jezik)

Knjižnice (strojni jezik) Informacije o ciljnem Knjižnica 1 sistemu, kot npr. Povezovalnik razporeditev pomnilnika (Linker) Knjižnica 2 (RAM/ROM) po naslovih

Program v strojnem jeziku

10 Optimizacija kode

 Prevajalnik lahko pri prevajanju obdela program tako, da je končni rezultat krajši (optimizacija velikosti) ali pa, da se izvaja hitreje (optimizacija hitrosti).  Primer – optimizacija hitrosti:

Neoptimiziran program Optimiziran program (ta se dejansko prevede v strojni jezik) double a, b, c, d; /* tukaj beri a */ double a, b, c, d; b=sin(cos(a)+pi/4); /* tukaj beri a */ c=cos(a); c=cos(a); d=cos(a)+pi/4; d=c+pi/4; b=sin(d);

 Po optimizaciji se lahko spremeni vrstni red izvajanja stavkov, način hranjenja spremenljivk (registri/pomnilnik), izginejo lahko nekatere spremenljivke in stavki, ...

11 Statične in dinamične knjižnice

 Statične knjižnice – statično povezani programi dinamične knjižnice – dinamično povezani programi  Statično povezani programi vsebujejo svojo kopijo knjižnic.  Dinamično povezani programi knjižnice naložijo ob zagonu.  Prihranek prostora na disku: programi so krajši, vsebina knjižnice se pojavi le enkrat (v datoteki s knjižnico).  Prihranek pomnilnika: če teče več programov hkrati, ki uporabljajo isto knjižnico, imamo v pomjilniku le eno kopijo knjižnice.  Nadgradnje funkcionalnosti programov z zamenjavo knjižnice – pri statično povezanih programih je potrebno ponovno prevajanje, pri dinamično povezanih pa le menjava datoteke s knjižnico.  Dinamične knjižnice omogočajo izvedbo vtičnikov (plug-in). Nalaganje po potrebi.  Windows: .lib (statične) in .dll (dinamične) knjižnice Linux: .a (statične) in .so (dinamične) knjižnice 12 Navzkrižni prevajalnik (Cross compiler)

 Prevajalnik pogosto izvajamo na računalniku, ki bo pozneje tudi izvajal program dobljen s postopkom prevajanja.  Za prevajanje programov, ki se bodo izvajali na manjših mikroprocesorskih sistemih, prevajanje običajno poteka na osebnem računalniku. Tako prevajanje opravlja navzkrižni prevajalnik.  Primer: WinIdea za š-ARM teče na osebnem računalniku (i386). Za prevajanje uporablja prevajalnik gcc, ki teče na procesorjih družine i386. gcc prevaja C v strojni jezik jedra ARM7. Dobljenega programa ne moremo zagnati na osebnem računalniku, ampak le na ARM7 procesorju.

13 Projekt GNU

 Začetek 1983, Richard Stallman, MIT  Cilj – brezplačen operacijski sistem in programska oprema  Do 1992 razvito veliko programske opreme, ki tvori osnovo sistemov UNIX, med drugim tudi prevajalnik za jezik C/C++ (gcc).  Mejnik: 1992 – jedro sistema Linux objavljeno pod licenco GPL  Licenca GPL: določa pogoje uporabe in distribucije programov. Zelo svobodna glede uporabe, stroga glede izvorne kode: izvorna koda in vse njene spremembe morajo biti javne.  Vsakdo, ki se ne strinja s smerjo razvoja GPL programa, lahko odcepi svojo inačico in jo razvija naprej po svoje. Licenca ostane GPL.  Licenca LGPL - za knjižnice. Dovoljuje povezovanje LGPL knjižnic v programe, katerih licenca ni GPL/LGPL. Ne zahteva javnost sprememb izvorne kode, zahteva pa, da je prevedena oblika (strojni jezik) sprememb javna.

14 Kateri jeziki so aktualni danes ...

Vir: http://langpop.com/ (23.10.2010) 15 Jeziki...

 C ... od leta (Bell Labs, Dennis Ritchie,1972), skoraj zmeraj se prevaja  C++ ... objektno orientirana (OO) razširitev C-ja (Bell Labs, Bjarne Stroustrup, 1983), pogost v velikih projektih, skoraj zmerja se prevaja  Objective C ... še ena OO razširitev C-ja (Stepstone, Brad Cox, Tom Love, 1986), popularizira ga firma Next (Steve Jobs), danes Apple  Java ... OO, podoben C++ (Sun, James Gosling, 1995), izvaja se s pomočjo tolmača in JIT prevajalnika (Java Virtual Machine, JVM)  JavaScript ... OO, podoben C-ju in Javi (Netscape, Brendan Eich, 1995), tolmačen. Uporaba – dinamične spletne strani, za izvajanje programov v spletnih brskalnikih (na strani odjemalca).  PHP ... OO, podoben C-ju (Rasmus Lerdorf, 1995), tolmačen. Uporaba – dinamične spletne strani, za izvajanje programov na strani spletnega strežnika (npr. v Apache).  Python ... OO, (Guido van Rossum, 1991), tolmačen, modularen, veliko knjižnic.  Perl ... OO, (Larry Wall, 1987), tolmačen, modularen, veliko knjižnic.  C# (C sharp) ... OO, podoben C-ju in Javi (Microsoft, 2001), tolmač z JIT prevajalnikom, izvaja se v okolju CLR (Common Language Runtime), podobno JVM 16 ... jeziki

 SQL .. jezik za poizvedbe v bazah podatkov (IBM, Chamberlin, Boyce, 1974)  Ruby ... OO (Yukihiro Matsumoto, 1995), popularen postal z uporabo v okolju Ruby on Rails za hiter razvoj spletnih aplikacij  Shell ... skupno ime za skriptne jezike različnih ukaznih lupin  Visual Basic ... inačica BASIC-a (Microsoft, 1998) za hiter razvoj okenskih programov  ActionScript ... izvedenka standarda ECMAscript (tako kot JavaScript), Macromedia, Gary Grossman, 1998), jezik za programiranje komponent Flash (spletne strani)  Pascal ... v prvi vrsti učni jezik (Niklaus Wirth, 1970), zelo strog  Delphi ... okolje za hiter razvoj okenskih aplikacij objektnem Pascalu (Borland, 1995)  LISP ... eden prvih jezikov, zelo zmogljiv, težko berljiv (John McCarthy, 1958), današnje inačice: Scheme, Common Lisp, ... grajen v AutoCAD (program za tehnično risanje)  Fortran ... eden prvih jezikov (John Backus, IBM, 1957), še danes v uporabi za matematične programe  ADA ... OO, za programiranje vgrajenih (embedded) sistemov in sistemov s sprotnim odzivom (real-time), razvit v Honeywell-Bull (1983) za vojsko ZDA 17 Procesorski sistemi v telekomunikacijah Nalaganje, izvajanje in razhroščevanje programa

(c) Arpad Bűrmen, 2010 Zapis programa s programatorjem

 Program v (E)EPROM/FLASH pomnilniku v ločenem čipu  Čip odstranimo iz sistema in vanj s pomočjo programatorja zapišemo program  Običajno je treba program pretvoriti iz oblike, kot jo dobimo od povezovalnika v obliko, ki jo pozna programator  Formati: Intel HEX, Motorola S (S19), ... od leta 1970 naprej  Včasih je FLASH pomnilnik v istem čipu kot CPU... CPU vstavimo v programator in vanj zapišemo program

2 Programiranje med delovanjem (In System Programming, ISP)

 Nekateri mikroprocesorji z vgrajenim FLASH pomnilnikom omogočajo, da v njih prenesemo program brez da bi jih odstranili iz vezja (In System Programming, ISP)  Najbolj pogosta načina nalaganja programa sta serijska povezava in vmesnik JTAG

 Primer: v LPC2138 lahko po reset-u (če je P0.14 na nizkem nivoju) naložimo program preko vmesnika UART0 (P0.0, P0.1 = TxD0, RxD90) v FLASH pomnilnik s hitrostmi do 230400b/s (23kB/s)

3 Vmesnik JTAG

 JTAG (Joint Test Action Group, IEEE 1149.1)  Podoben vodilu SPI, 4 signali: TMS (test mode select) – enakovreden SS (slave select) signalu SPI TCK (test clock) – enakovreden SCLK signalu SPI TDI (test data input) – enakovreden MOSI signalu SPI TDO (test data output) – enakovreden MISO signalu SPI  Verižna vezava naprav, ki jih krmilimo preko JTAG povezave Pogosto imamo le eno napravo v verigi – mikroprocesor  Omogoča krmiljenje in odčitavanje stanja naprav v verigi.  Tipične hitrosti od 10Mb/s do 100Mb/s  Primer: JTAG v LPC2138 P1.27-P1.30 ... TDO, TDI, TCK, TMS  Standard ne določa ukazov, ki se prenašajo preko povezave JTAG. Vsak proizvajalec ima svoje ukaze.

4 Razhroščevanje

 Postopek iskanja napak v programu.  Preprost pristop: tki. printf razhroščevanje Dodamo kratke dodatke v program, ki redno izpisujejo vrednosti spremenljiv in stanje programa. Izpisana sporočila beremo preko serijske povezave ali pa na prikazovalniku (pogosto je ta del mikroprocesorskega sistema).  V skrajnih primerih namesto tekstovnih sporočil uporabljamo lučke ali pa kar signale, ki jih opazujemo na osciloskopu.  Pristop je preveč preprost, da bi z njim lahko odkrili večje napake.  Posebni programi in strojna oprema za razhroščevanje – razhroščevalnik (debugger) - omogočajo, da - ustavimo program na določenih mestih (prekinitvene točke, breakpoints), - gremo skozi program po korakih (korakanje, stepping), - pregledujemo vrednosti spremenljivk, registrov in pomnilnika (watch)

5 Razhroščevalnik (Debugger) Primer: GDB

Konzolni način dela v GDB Grafični uporabniški vmesnik (GUI) za GDB

6 Strojna podpora za razhroščevanje Emulatorji

 Emulator (In Circuit Emulator, ICE) je vezje, ki nadomesti mikroprocesor.  Vstavimo ga v mikroprocesorski sistem namesto mikroprocesorja.  Hkrati ICE priklopimo še na osebni računalnik, kjer s pomočjo ustrezne programske opreme (pripadajočega

razhroščevalnika) iščemo napake v Povežemo programu.  Na sliki je emulator Z80 – Z80 ICE.  Relativno visoka cena.

K osebnemu računalniku (RS-232)

V ciljni sistem namesto Z80

7 Mikroprocesorji z vgrajenim emulatorjem

 Večina današnjih mikroprocesorjev  Komunikacija z emulatorjem poteka ponavadi preko vmesnika JTAG  Za povezavo z osebnim računalnikom skrbi vmesnik (npr. med JTAG in USB).  Programska oprema za razhroščevanje mora znati komunicirati z JTAG vmesnikom in preko njega z emulatorjem v mikroprocesorju.  Pri okolju WinIDEA (š-ARM) je vmesnik USB/JTAG vgrajen v ploščico š-ARM.

na paralelna vrata PC-ja

JTAG USB B

Vmesnik JTAG-paralelna vrata Vmesnik JTAG-USB za procesorje ARM (Olimex) za procesorje ARM (Olimex)

8 Priprava na razhroščevanje

 Program je potrebno prevesti v posebno obliko za razhroščevanje, ki vsebuje pomožne informacije (debug information) o spremenljivkah in stavkih (npr. kje se hranijo).  Pomožne informacije so lahko del objektnih datotek in končnega programa (npr. pri gcc) ali pa se hranijo v ločenih datotekah (npr. Microsoftov prevajalnik za C).  Program je treba zagnati s pomočjo razhroščevalnika, ki takoj po zagonu prevzame nadzor nad mikroprocesorjem.  Razhroščevalnik ponavadi teče na osebnem računalniku, ki je preko vodila USB in vmesnika USB/JTAG povezan s ciljnim mikroprocesorjem, ki izvaja program.

9 Zgradba sistema za razhroščevanje na osnovi GNU orodij gcc/gdb

JTAG USB CPU v JTAG/USB GDB ciljnem vmesnik strežnik sistemu

TCP/IP osebni računalnik  Razhroščevanje vodita dva programa GDB strežnik in GDB razhroščevalnik  GDB strežnik je preprost program, GDB ki pretvarja ukaze razhroščevalnika v (razhroščevalnik) pripadajoče ukaze emulatorja ter komunicira z emulatorjem preko JTAG/USB vmesnika  TCP/IP komunikacija med GDB strežnikom in GDB razhroščevalnikom.  Uporabnik (programer) upravlja razhroščevanje preko GDB razhroščevalnika.  TCP/IP omogoča, da GDB strežnik in GDB razhroščevalnik tečeta na dveh ločenih računalnikih, ki sta povezana preko interneta.

10 Ciljni sistemi z operacijskim sistemom Primer: Linux/gcc/gdb

GDB strežnik

Ethernet Ciljni sistem GDB osebni z Linux-om (razhroščevalnik) računalnik Program, ki ga TCP/IP razhroščujemo

 Program mora biti naložen na ciljni sistem, zaženemo GDB strežnik.  Ob zagonu mu podamo program, ki ga bomo razhroščevali.  Na osebnem računalniku zaženemo GDB razhroščevalnik.  GDB razhroščevalnik se poveže z GDB strežnikom preko omrežne povezave.  Povezava med GDB strežnikom in GDB razhroščevalnikom - protokol TCP/IP.  Razhroščevanje programa poteka s podporo operacijskega sistema. JTAG vmesnik ni potreben.

11 Integrirano razvojno okolje Integrated Development environment (IDE)

 Na enem mestu zbrana orodja za pisanje, prevajanje in razhroščevanje.  Upravljanje s projekti (programi, ki so sestavljeni iz večih datotek).  Preprosto razhroščevanje.  WinIDEA je IDE za sistem š-ARM.

Okolje ECLIPSE Okolje Microsoft Visual Studio

12 Razhroščevanje na nivoju signalov Logični analizator

 Logični analizator  Podoben osciloskopu, snema digitalne signale od trenutka sprožitve naprej  Omogoča iskanje napak v signalih (glitch, motnje, odboji, ..)  Ločljivost cca. 20ps (50GHz), nekaj 10 do več kot 100 kanalov  Posnetki dolgi več 100MB  Razumejo protokole, kot je naprimer PCI Express, ...

13 Sled programa (Trace)

 Dnevnik dogajanja v programu  Program opazujemo v sledilnih točkah (tracepoint) sledilna točka i p i=2; ------p=1; 1 2 1 // sledila točka 1 2 2 2 while (i<=6) { 3 3 2 p=p*i; 2 3 6 // sledila točka 2 3 4 6 i=i+1; 2 4 24 // sledila točka 3 3 5 24 } 2 5 120 // sledila točka 4 3 6 120 2 6 720 4 7 720

14 Procesorski sistemi v telekomunikacijah Mikrokrmilniki in procesorji v vgrajenih sistemih

(c) Arpad Bűrmen, 2010 Kaj je mikrokrmilnik?

 Strogo gledano je mikroprocesor le krmilna enota, aritmetično logična enota in registri.  Mikrokrmilniki (microcontroller, uC) dodajo k temu še pomnilnik (RAM/FLASH) in marsikatero periferno napravo: A/D in D/A pretvornike, splošnonamenska (GPIO) vrata, PWM modulatorje, USB in Ethernet vmesnike, ...  Cel mikroprocesorski sistem združen v enem vezju (čipu). Nižja cena končnega sistema (manj komponent).  Ponavadi vodilo ni prepeljano na izhodne sponke vezja.  Pojavili so se 70-tih letih 20. stoletja.  Ponavadi se programirajo v zbirnem jeziku.  Danes čedalje več uC ima tudi svoj prevajalnik za jezik C...... danes čedalje več programiranja v jeziku C  Novejši uC imajo že vgrajen emulator in JTAG (ali kak podoben) vmesnik.

2 Kje se uporablja?

 Povsod.  Pogosto v vgrajenih sistemi (embedded systems) – sistemi, ki opravljajo relativno majhno število specializiranih funkcij  55% vseh prodanih mikroprocesorjev je 8-bitnih mikrokrmilnikov.  1 avtomobil ima v povprečju 30 mikrokrmilniov.

3 ZILOG

 Z80 (1976) – 8-biten kompatibilen z Intel 8080, niti ni pravi mikrormilnik (samo mikroprocesor), raba v vgrajenih sistemih, povzročil revolucijo s hišnimi računalniki

4 Freescale (prej Motorola Semiconductor)

 68HC11 ... 8-biten, naslednik Motorole 6800 (1974)

 68HCS08 ... 8-biten, naslednik 6800 in družine 68HC05

 ColdFire ... 32-biten, naslednik Motorole 68000 (1979) do 300MHz – 68000 “le” do 75MHz, novejše verzije 100% združljive z 68000

5 Intel 8051 (MCS-51)

 8-biten, pojavil se je 1980, popularen še v 90. letih  Danes veliko kompatibilnih procesorjev proizvajalcev Atmel, Infineon, Maxim, ...  Harvardska arhitektura

Intel P8051 Infineon SAB-C515-LN

6 ATMEL

 AVR (1996) Harvardska arhitektura 8-bitni RISC Norveška, razvila 2 študenta NTH  AVR32 (2006) 32-biten nizka poraba, hiter, kompaktna koda  AT91SAM 32-biten, na osnovi jeder ARM7, ARM9 in CORTEX jeder

7 Renesas (NEC + Hitachi + Mitsubishi)

 H8 (iz zgodnjih 90. let, Hitachi) 8 in 16-bitni, po vzoru DEC PDP-11, med drugim v LEGO Mindstorms

 SuperH (iz 90. let, Hitachi) 32-biten, RISC, v nekaterih SEGA konzolah

8 Microchip

 PIC – Programmable Intelligent Computer, od 1985  PIC12, PIC16 osnovne inačice, 8-bitni programiranje v zbirniku (omejen nabor ukazov)

 PIC18 obsežnejši nabor ukazov, C postane glavni prog. jezik

 dsPIC / PIC24 (2001) 16-bitni, obdelava signalov

 PIC32 (2007) 32-bitni, jedro MIPS32 M4K

9 ARM

 Razvija procesorska jedra in prodaja licence drugim proizvajalcem (NXP, Freescale, Atmel, ...)  V mikrokrmilnikih ponavadi najdemo jedra ARM7 in CORTEX M3  š-ARM uporablja NXP-jev LPC2138 (ARM7TDMI-S jedro)

10 PowerPC

 Procesorsko jedro (podobno kot ARM), od leta 1992  32- in 64-bitni RISC  Apple-IBM-Motorola  Od 2006 preimenovan v Power ISA  Mikroprocesor v Apple Macintosh-u  Danes pogost v vgrajenih (embedded) sistemih, npr. v letalu F-35

PowerPC procesor v F-35 IBM PowerPC 604e 200MHz Nintendo Wii konzoli

11 Procesorski sistemi v telekomunikacijah Signalni procesorji in digitalna obdelava signalov

(c) Arpad Bűrmen, 2010 Digitalna obdelava signalov

 Analogna obdelava signala – npr. filtriranje

 Digitalna obdelava signala

DSP V A/D (digitalni D/A V in pretvorba signalni pretvorba out procesor)

zvezen (analogen) signal

časovno in vrednostno diskreten (digitalen) signal

2 A/D pretvorba

 Signal se vzorči s periodo Ts (frekvenca vzorčenja fs=1/Ts)  Vzorčene analogne vrednosti se pretvorijo v digitalno obliko. Vsaka digitalna vrednost je zapisana z n-biti.  Pretvorba v digitalno obliko poteka s pomočjo primerjave vzorčene

vrednosti z referenčno napetostjo (VR). n  1 LSB v digitalnem zapisu ustreza analogni napetosti VR/2 . Pri VR=1V in n=10 bitnem A/D pretvorniku je 1LSB enak 0.98mV.  Vhodni analogni signal sme vsebovati le frekvenčne komponente med 0 in

fs/2, ker se pri A/D pretvorbi frekvence f≥fs/2 preslikajo v pas med 0Hz in fs/2 (aliasing).  Pred A/D pretvornikom imamo ponavadi analogen filter (anti-aliasing filter),

ki ima zgornjo frekvenčno mejo manjšo od fs/2.  Končni rezultat A/D pretvorbe je digitalen signal - zaporednje n-bitnih

vrednosti, ki ustrezajo vzorcem analognega signala ob t=Ts, t=2Ts, t=3Ts, ...

3 D/A pretvorba

 D/A prevornik sprejema digital signal od procesorja in generira analogno napetost, ki je sorazmerna digitalnim vzorcem.  Tudi D/A pretvorba poteka s pomočjo referenčne napetosti.

 Izhodna analogna napetost se spreminja ob trenutkih t=Ts, t=2Ts, t=3Ts, ...  Rezultat je stopničast izhodni signal, ki ga zgladimo s pomočjo rekonstrukcijskega

filtra (nizkopasovni filter z zgornjo mejno frekvenco manjšo od fs/2). A/D pretvorba Izhod D/A pretvornika V 111 V R 110 R 101 100 011 010 001 0V 000 0V 010 101 111 101 011 010 001 001 Izhod rekonstrukcijskega filtra

VR

0V 4 Digitalni filtri FIR filtri

 Vhodni digitalni signal obdelajo tako, da se na željen način preoblikuje njegova frekvenčna vsebina.  FIR (Finite Impulse Response) filter yk-1 x k-1 x vhod xi k izhod yi yk Ts Ts

čas čas najnovejši vzorec N a5 a4 a3 a2 a1 a0 yk  ai xki i0 ∑

 Odziv na impulz je končno dolg (popolnoma zamre po končnem času).

 Karakteristiko filtra določajo koeficienti ai, i=0, 2, ..., N

5 IIR filtri

 Infinite Impulse Response (IIR)  Sorodni analognim filtrom  Odziv na impulz popolnoma zamre šele po neskončnem času. yk-1 x k-1 x vhod xi k izhod yi yk Ts Ts

čas čas

a5 a4 a3 a2 a1 a0 b5 b4 b3 b2 b1

N M yk  ai xki  bi yki i0 i1 6 Pomen in izvedba digitalnih filtrov

 Operacije s signali, kot sta FFT in DCT (JPEG, MPEG) = FIR filtri.  IIR filtri zahtevajo relativno malo operacij na sekundo (N in M sta majhna).  Moramo poznati zgodovino vhodnega in izhodnega signala.  Da dobimo en izhodni vzorec FIR filtra potrebujemo N+1 množenj in N seštevanj (za IIR filter pa N+M+1 množenj in N+M seštevanj).

 Koeficienti ai in bi so konstante.  Za izvedbo filtra je dovolj, da procesor zna seštevati in množiti.  Te operacije moramo opraviti tekom ene periode vzorčenja. FIR, N=50, fs=44100Hz ...... 2 249 100 množenj/s in 2 205 000 seštevanj/s 1 operacija = 1 cikel ure ... potrebujemo procesor z min. 4.45MIPS  Predvsem množenje je problem... v praksi za zadostno hitrost računanja procesor potrebuje vezje za množenje (množilnik).

7 Dvojiška števila s fiksno vejico

 Fiksno število dvojiških mest, fiksen položaj vejice.  Nepredznačena števila, skupaj n mest, od tega r mest za vejico Primer: n=8 mest, od tega 2 celi mesti (pred vejico) in r=6 mest za vejico

21=2 20=1 2-1=1/2 2-2=1/4 2-3=1/8 2-4=1/16 2-5=1/32 2-6=1/64

vejica 11.011011 = 2+1+1/4+1/8+1/32+1/64 = 3.421875

 Nepredznačena števila s fiksno vejico Uteži: 2n-r-1 ... 2-r Območje: 0 ... 2-r(2n – 1) Natančnost: 2-r Primer: n=8, r=6 ... območje 0 ... 3.984375 = 0 ... 4-1/64, natančnost 1/64  Predznačena števila s fiksno vejico ... najbolj leva utež (MSB) je negativna Uteži: -2n-r-1, 2n-r-2, ... 2-r Območje: -2-r 2n-1 ... 2-r (2n-1 – 1) Natančnost: 2-r Primer: n=8, r=6 ... območje -2 ... 1.984375 = -2 ... 2-1/64, natančnost 1/64

8 Dvojiška števila s plavajočo vejico

 Zapis zelo majhnih in zelo velikih števil z enako relativno natančnostjo  Število zapišemo kot produkt predznaka, mantise in eksponentnega člena  Primeri: -1110.10111100 = -1 x 1.110101111 x 23 0.00000010111100 = +1 x 1.01111000000 x 2-7 1101111011.01 = +1 x 1.10111101101 x 29

predznak mantisa eksponentni člen

 Predznak je lahko le +1 ali -1 in ga zapišemo z enim bitom.  Mantisa je zapisana v zapisu s fiksno vejico.  Eksponentni člen je oblike 2k, kjer je k pozitivno ali negativno število.  Množenje je enostavno. Posebej množimo predznak in obe mantisi, eksponente obeh eksponentnih členov pa seštejemo.  Seštevanje zahteva najprej poravnavo obeh mantis tako, da oba eksponentna člena postaneta enaka, nakar sledi seštevanje/odštevanje mantis (predznak!). 9 IEEE 754 števila s plavajočo vejico...

 Standarden format zapisa. Uporablja se za tipa float in double v jeziku C.  Pozna 16, 32, 64 in 128 bitne binarne in decimalne zapise. Tipa float in double sta v 32 in 64 bitnem dvojiškem zapisu IEEE 754.  32-bitni dvojiški format (float) – biti od MSB proti LSB: 1 bit za predznak (0=+, 1=-) 8 bitov za eksponent (e), tolmačimo jih kot nepredznačeno število 23 bitov za ulomljeni del (f) mantise  +0 in -0 ... e=000..0, f=000.0 (float) -0.0 = 1 00000000 00000000000000000000000  +/- neskončno (Inf) ... e=111..1, f=000.0 1/0=+Inf (float) +inf = 0 11111111 00000000000000000000000  NaN (not a number) ... e=111..1, f≠000..0 0/0=NaN, 0*Inf=NaN, Inf-Inf=NaN (float)NaN = 0 11111111 10000000000000000000000

10 ... IEEE 754

 Normalizirana števila ... e≠000..0 Sem spada večina števil. mantisa = 1.f (nepredznačena) k = e-127 Primer: 1 01111111 10000000000000000000000

predznak = -1 k=01111111(2)-127=127-127=0 mantisa=1.10000000000000000000000(2)=1.5 vrednost = -1 x 1.2 x 20 = -1.5  Denormalizirana števila ... e=000..0, f≠000..0 Števila, ki so bližje 0, kot absolutno najmanjši normalizirani števili. Dobimo jih kot rezultat odštevanja dveh zelo majhnih, a skoraj enakih števil. mantisa = 0.f (nepredznačena) k=-126 Primer: 0 00000000 11000000000000000000000 predznak = +1 k=-126

mantisa = 0.11000000000000000000000(2)=0.75 vrednost = +1 x 0.75 x 2-126 = 8.8162076 x 10-39

11 Natančnost IEEE 754 zapisa

 float (32-biten binarni) zapis denormalizirana števila: ±2−149... ±(1−2−23) × 2−126 normalizirana števila: ±2−126...±(2−2−23) × 2127 relativna natančnost normaliziranih števil 2-24 oziroma 5.96x10-8 7 desetiških mest

 double (64-biten binarni) zapis denormalizirana števila: ±2−1074... ±(1−2−52) × 2−1022 normalizirana števila: ±2−1022... ±(2−2−52) × 21023 relativna natančnost normaliziranih števil 2-53 oziroma 1.11x10-16 15 desetiških mest 12 Signalni procesor (SP)

 V bistvu čisto navaden mikroprocesor  Specializiran za digitalno obdelavo signalov  Pogosta (modificirana) Harvardska arhitektura  Včasih več vodil do vsakega pomnilnika  Več dostopov do pomnilnika v enem urinem ciklu  Vgrajen množilnik  Specializirani ukazi - MAC (Multiply-ACcumulate) operacije: A=A+B*C - naslavljanje krožnih vmesnikov - učinkovito izvajanje kratkih zank - naslavljanje z obrnjenimi biti (bit-reversed addressing) - ...  Brez MMU - MMU vnaša nepredvidljive zakasnitve pri dostopu do pomnilnika - z MMU so v večopravilnih sistemih preklopi med procesi počasnejši 13 Krožni vmesnik (Circular Buffer)

 Primer: krožni vmesnik dolžine LR=6  Trenutni položaj v vmesniku določa indeksni register.  Ko indeksni register (IR) povečamo za 1, se pomakne za en naslov naprej. Če je IR=a+3, je po povečanju IR enak a+4. Če je IR=a+5, je po povečanju IR enak a ... krožni vmesnik.  Za hranjenje preteklih vzorcev vhodnega in izhodnega signala. a a+1  Za hranjenje koeficientov FIR in IIR filtrov. a+2 a+3 a+4 a+5

14 Primeri operacij

 Naslavljanje krožnih vmesnikov Primer: Analog Devices ADSP21xx Naloži konstanto iz programskega pomnilnika z naslova I0 v register MX0. Krožno (z dolžino L0) povečaj I0 za M1. MX0=DM(I0,M1)  Kratke zanke Primer: ADSP21xx 10 iteracij. 1 cikel ure = 1 iteracijo zanke. Preverjanje pogoja = 0 ciklov ure. Ena vrstica je en ukaz (ukazi ADSP2181 so 24-bitni). CNTR=10 DO sop UNTIL CE; sop: MR=MR+MX0*MY0(SS), MX0=DM(I0,M1), MY0=PM(I4,M5);  MAC operacije – osnova digitalnih filtrov. Izvajata jih množilnik in seštevalnik. Ponavadi ena MAC operacija na urin cikel. Primer: ADSP21xx Množi 16-bitni predznačeni vsebini MX0 in MY0 ter ju prištej k MR. MR=MR+MX0*MY0(SS)

15 MAC operacije

 Manjši signalni procesorji – množilnik za števila s fiksno vejico Primer: ADSP21xx – 16-bitna števila s fiksno vejico formata 1.15 (n=16, r=15)  Večji signalni procesorji – množilnik za števila s plavajočo vejico Primer: ADSP-TS201S – poleg 32-bitnega množilnika s fiksno vejico - 32-bitni množilnik s plavajočo vejico (IEEE754, 23-bitni ulomljeni del) in - 40-bitni množilnik (kot 32-bitni IEEE754, le da je ulomljeni del 31-biten)  MAC operacija s fiksno vejico lahko privedejo akumulator do prenosa/preliva. Zato je akumulator daljši od vsote dolžin vhodnih podatkov množilnika. Primer: ADSP21xx - 16-biten množilnik, 40-biten akumulator  Če pride do preliva, nasičimo akumulator. (nastavimo ga na najvišjo/najnižjo možno vrednost). Če tega ne naredimo, dobimo velike skoke v signalu (šum). Nasičenje da porezan (nelinearno popačen) signal.  Množenje dveh kompleksnih števil = 4 množenja in 2 seštevanji.

16 Druge operacije v signalnih procesorjih

 Manipulacije bitov Za branje/spreminjanje poljubnega dela besede pri kodiranju/dekodiranju avdio/video tokov.  Naslavljanje z obrnjenimi biti – pri hitri Fourier-jevi transformaciji (Fast Fourier Transformation, FFT)

Če je naslov 01001010(2)=74, vzamemo podatek z naslova 01010010(2)=82  Izračun posebnih funkcij, kot naprimer funkcija maxa,b ln1 e ab  Uporaba – dekodiranje tki. turbo kod  Pomožne funkcije za dekodiranje na osnovi mrežnih (trellis) diagramov  Izračun kompleksne korelacije (uporaba v CDMA sistemih)  ...

17 Posebnosti ukazov signalnih procesorjev

 Primer ukaza – vse v enem urinem ciklu ADSP21xx – en 24-biten ukaz V enem ciklu ure zmnoži vsebini MX0 in MY0 in prišteje rezultat k MR, naloži novo vrednost v MX0 z naslova I0 v podatkovnem pomnilniku, krožno poveča I0 za M1, naloži novo vrednost v MY0 z naslova I4 v programskem pomnilniku, krožno poveča I4 za M5. MR=MR+MX0*MY0(SS), MX0=DM(I0,M1), MY0=PM(I4,M5);  VLIW ukazi (Very Long Instruction Word) izvedejo več operacij vzporedno v enem urinem ciklu ADSP-TS0xx (TigerSHARC) – en 32-biten ukaz = do 4 podukazov Podukazi se izvršijo vzporedno v enem ciklu ure.  VLIW je del družine MIMD (Multiple Instruction Multiple Data)  Družina SIMD (Single Instruction Multiple Data) Primer: MMX ukazi v procesorjih Intel Vzporedno opravijo eno operacijo na 8 podatkih.  Meja med signalnimi procesorji in mikroprocesorji postaja zabrisana Analog Devices BlackFin družina – mikrokrmilnik + DSP

18 Procesorski sistemi v telekomunikacijah Mrežni/komunikacijski procesorji

(c) Arpad Bűrmen, 2010 Paketni prenos podatkov

 Podatki se prenašaja po več 100 ali 1000 bytov naenkrat  Taki enoti pravimo paket  Paket je sestavljen iz glave (header) in koristne vsebine (payload)  Primer: Ethernet paket

Fizični nivo (na žicah)

Sinhronizacija Začetek Ponor Izvor 802.1Q Tip/dolžina Podatki CRC32 Presledek (preamble) okvirja (Destination) (Source) glava med okvirji (SOF) 7 bytov 1 byte 6 bytov 6 bytov 4 byti 2 byta 46-1500 4 byti 12 bytov 10101010 10101011 (MAC) (MAC) bytov

Glava Kontrolna vsota (del glave)

To vidi programer 2 Paket v paketu v paketu v ...

 Vsebina paketa protokola A je lahko spet nek paket B.  Paket protokola A lahko nosi največ MTU (Maximum Transmission Unit) bytov  Če je paket B večji kot MTU, se razdeli in potuje v večih paketih protokola A (fragmentacija).  Primer: paketi protokola TCP potujejo v paketih protokola IP, ki potujejo v Ethernet paketih

Ethernet paket (MTU=1500)

Košček IP paketa (MTU=65515) Košček TCP paketa

3 Internet

 Hrbtenica interneta so optične povezave  Hitrosti povezav 2007 do 40Gb/s  Februar 2010 Japonska-ZDA 300Gb/s

Slika 30% interneta (15.1.2005). Vir: Wikipedia, opte.org. Vsaka točka predstavlja en IP naslov.

4 Mrežni/komunikacijski procesorji

 Obdelava take količine informacij je prehuda naloga za klasične mikroprocesorje.  Mrežni/komunikacijski procesorji imajo podsklope za obdelavo velikih pretokov podatkov.

Hitrost (Mb/s) Čas na voljo za obdelavo 64-bytnega paketa (ns) 1.5 340 000 45 11 000 Intel IXP425 155 3 000 622 820 2 500 200 9 500 51

5 Naloge

 Iskanje vzorcev v paketih podatkov, npr. za filtriranje vsebin  Iskanje po tabelah - usmerjanje prometa na osnovi naslova  Manipulacija bitov v paketih  Razvrščanje paketov v čakalne vrste (queueing)  Enkripcija/dekripcija vsebine paketov  Kompresija/dekompresija podatkov

Ponavadi imajo mrežni procesorji več RISC jeder

6 Uporaba

 Mrežna stikala in usmerjevalniki  Sistemi za zagotavljanje kakovosti storitve za izbrane protokole (QoS, Quality of Service)  Sistemi za kontrolo dostopa do omrežja  Pomoč mikroprocesorju pri izvedbi protokolov, npr. TCP/IP  V RAID krmilnikih (Redundant Array of Independent Disks)

7 Postopki v mrežnih procesorjih Zgoščevalna funkcija (Hash function)

 Priredi kratko število poljubno dolgemu nizu bitov Primer: 8-bitna vsota bytov v nizu – kontrolna vsota  Dva različna niza... (običajno) dve različni vrednosti funkcije  Uporaba: hitra primerjava nizov, asociativne (hash) tabele, kontrola pravilnosti podatkov (npr. CRC), ...  Primer: kontrolne vsote, ciklične redundančne kode (CRC32, ...), ...  Kriptografska zgoščevalna funkcija Podobni nizi dajo močno različne vrednosti zgoščevalne funkcije  Primer: MD4, MD5, SHA-512, ...  Uporaba: za avtentikacijo podatkov, hranjenje gesel uporabnikov, generiranje naključnih števil, ...

8 Postopki v mrežnih procesorjih Primer: avtentikacija z SHA-512

 Geslo uporabnika je “bicikel”  Računalnik hrani SHA-256 vrednost gesla “bicikel”: 74f87ed882981104a48436b2d4f4b096d17f14e331d9bd0b39b1b73ca4c8588b

 Če kdo vdre v računalnik, bo dobile le SHA-256 vrednost gesla, ne pa tudi samega gesla.

 Recimo, da se uporabnik poskuša prijaviti z geslom “tricikel”. Računalniku pošlje geslo “tricikel”. Računalnik izračuna SHA-256 za “tricikel”: ac15178a769f799ad38d732fb67e136f14b8dc7c4b6fbecad34dea2d5d6041b1  Računalnik primerja obe SHA-256 vrednosti in ugotovi, da je geslo napačno. Uporabnik ne dobi dostopa.  Če uporabnik pošlje geslo “bicikel”, računalnik izračuna SHA-256 in dobi 74f87ed882981104a48436b2d4f4b096d17f14e331d9bd0b39b1b73ca4c8588b kar pa je enako shranjeni SHA-256 vrednosti – dostop je odobren

9 Postopki v mrežnih procesorjih Simetrična kriptografija

 Za enkripcijo in dekripcijo se uporablja enak ključ  Problem: varna izmenjava ključev (brez prisluha tretje osebe)  Postopki: DES (56 bitni ključ), 3DES (168, 112 ali 56 biten ključ) RC4 (40-2048 bitni ključ) – v SSL protokolih, WEP protokol (WLAN) AES (128, 192 ali 256 bitni ključ) – naslednik DES, uporaba v WPA2 (WLAN) Varno pošiljanje ključa Alice Bob npr. predaja ob srečanju

Kriptirano Kriptirano Sporočilo Sporočilo Alice Sporočilo Sporočilo Bob Enkripcija Dekripcija

10 Postopki v mrežnih procesorjih Asimetrična kriptografija...

 Kriptografija z javnim ključem  Javni ključ za enkripcijo, zasebni ključ za dekripcijo  Naslovnik generira par javni-zasebni ključ  Naslovnik pošlje javni ključ pošiljatelju sporočila, zasebni ključ ostane na varnem pri naslovniku  Pošiljatelj kriptira sporočilo z javnim ključem in ga pošlje naslovniku  Naslovnik dekriptira sporočilo z zasebnim ključem  Ni izmenjave (zasebnega) ključa za dekripcijo  Postopki s pomočjo katerih bi iz javnega ključa rekonstruirali zasebni ključ so dolgotrajni in v praksi neuporabni, če je ključ dovolj dolg.  Postopki: RSA, Diffie-Helman, McEliece, ...

11 Postopki v mrežnih procesorjih ... asimetrična kriptografija

Pošiljanje javnega ključa javni ključ Alice Bob Varno pošiljanje ni potrebno zasebni ključ

Eva rekonstrukcija zasebnega ključa (prisluškuje) postopek traja 10000 let neizvedljivo v praksi

Kriptirano Kriptirano Sporočilo Sporočilo Alice Sporočilo Sporočilo Bob Enkripcija Dekripcija

12 Asimetrična kriptografija Primer: postopek Diffie-Hellman

 V osnovi je to postopek za varno izmenjavo ključa.  Tretja oseba, ki prisluškuje izmenjavi, bi teoretično lahko rekostruirala ključ, ampak v praksi bi to predolgo trajalo.  a mod b = ostanek pri deljenju a z b npr.: 27 mod 7 = 6

Alice si izmisli praštevilo p=23 in celo število g=5 ter ju pošlje Bobu.

Alice si izmisli skrivno število a=6. Bob si izmisli skrivno število b=15. Alice Bob pozna: Alice pošlje A = ga mod p = 8 pozna: p, g, a, p, g, b, Bob pošlje B = gb mod p = 19 gab mod p gab mod p Alice izračuna Ba mod p = 2 = gab mod p = C

Bob izračuna Ab mod p = 2 = gab mod p = C

 Alice in Bob uporabita C=gab mod p kot ključ za postopke simetrične kriptografije.  Eva, ki je prisluškovala, pozna p, g, A in B, ne pa tudi C-ja. Lahko pa ga izračuna!!!  Izračun C traja predolgo, če so p, a in b dovolj dolgi (cca. 300, 100 in 100 mest). 13 Postopki v mrežnih procesorjih Digitalni podpis

 Digitalni podpis je kriptografska zgoščevalna funkcija, katere vrednost je odvisna od ključa in od vsebine sporočila  Kot ključ uporabi podpisnik svoj zasebni ključ  Podpis je odvisen od vsebine sporočila in od zasebnega ključa.  Kdorkoli, ki ima javni ključ pošiljatelja lahko preveri avtentičnost sporočila s pomočjo javnega ključa pošiljatelja.  Preverjanje opravi funkcija, ki iz sporočila, podpisa in javnega ključa izračuna ali se podpis ujema s sporočilom in ključem.  Če je sporočilo neavtentično (spremenjeno) se podpis se ne ujema s sporočilom in javnim ključem.  Tretja oseba ne more ponarediti digitalnega podpisa za spremenjeno sporočilo, ker nima pošiljateljevega zasebnega ključa – tega ima izključno le pošiljatelj.

14 Postopki v mrežnih procesorjih Kompresija/dekompresija podatkov

 Kompresija – pretvorna niza A dolžine n v niz B dolžine m≤n  Dekompresija – pretvorba niza B nazaj v niz A  Brezizgubna kompresija – iz niza B lahko rekonstruiramo niz A Primer: algoritem LZ (Lempel-Ziv) - WinZIP, gzip, ...

Iskanje ponavljajočih se vzorcev v nizu in učinkovit zapis teh vzorcev Primer: namesto ababababab v nizu A pišemo [ab]5 v nizu B

 Izgubna kompresija – iz niza B lahko niz A rekonstruiramo le delno, tako da so razlike do prvotnega niza A dovolj majhne Primer: stiskanje zvoka, slike in videa

Odstranjevanje informacij, ki jih porabnik dekompresiranega niza ne opazi Npr. odstranjevanje maskiranih tonov (ki jih uporabnik ne more slišati), povečevanje šuma v frekvenčnih pasovih, ki vsebujejo glasen zvok

15 Postopki v mrežnih procesorjih Regularni izrazi in razpoznavanje vzorcev

 Za opisovanje vzorcev  Iskanje vzorca v toku podatkov opravlja avtomat.  Avtomat je določen z regularnim izrazom.  Veliko formatov za regularne izraze

 Primer: regularni izrazi v jeziku Perl Clinton|Bush|Reagan ... najdi zaporedja znakov „Clinton‟, „Bush‟ ali „Reagan‟ a.c ... „a‟, ki mu sledi en poljuben znak, nakar sledi znak „c‟ a\.c ... „a‟, ki mu sledi pika, nakar sledi znak „c‟ ab*c ... „a‟, ki mu sledi 0 ali več „b‟-jev, nakar sledi znak „c‟ [abc] ... črke mali „a‟, mali „b‟ in mali „c‟ [A-Z] ... vse velike angleške črke [Aa]bc ... niz „Abc‟ ali niz „abc‟ ab{2,4}c ... „a‟, ki mu sledijo od 2 do 4 „b‟-ji, nakar sledi znak „c‟ [abc]+ ... niz dolg vsaj en znak, ki vsebuje le znake „a‟, „b‟ in „c‟ [^abc]+ ... niz dolg vsaj en znak, ki ne vsebuje znakov „a‟, „b‟ in „c‟

16 Primer: mrežni procesor Intel IXP425

 Do 533 MHZ, 32-bitno RISC jedro Intel XScale (Intel+Marvell izvedba arhitekture ARMv5 – i.MX27 je ARM926, ki je ARMv5)  Vgrajeni algoritmi SHA-1, MD5, DES, 3DES, AES  Dvoje hitrih serijskih (HSS) vrat  Dva 10/100Mbit Ethernet vmesnika  UTOPIA L2 vmesnik za povezavo z ADSL, G.SHDSL in VDSL vmesniki  PCI v2.2 vmesnik (33/66 MHz)  USB 1.1 krmilnik  SDRAM krmilnik  Dva UART vmesnika (do 921kbit/s)  16 splošnonamenskih priključkov  16-bitno razširitveno vodilo  Poraba: 1-1.5W

17 Primer: mrežni procesor Freescale MPC8572E (PowerQUICC III)

 Dve e500 (32-bitni PowerPC) jedri, 1.5GHz, 32kB/1MB L1/L2 cache,  Dva DDR2/DDR3 krmilnika  Štirje 10/100/1000Mbit Ethernet vmesniki  Vezje za razpoznavanje vzorcev  Vezje za iskanje po tabelah  Hiter serijski vmesnik  Vmesnik PCI Express  Dva DMA krmilnika  Dva I2C vmesnika  Algoritmi DES, 3DES, MD5, SHA-1/2, AES, RSA, ...  Poraba: 25W

18 Procesorski sistemi v telekomunikacijah Operacijski sistem, večopravilnost

(c) Arpad Bűrmen, 2010 Operacijski sistem (OS)

 Operacijski sistem - zbirka programov in podatkov, ki upravljajo s strojno opremo in nudijo storitve ostalim programom.  API (Application programming Interface) - vmesnik preko katerega programi dostopajo do storitev (bodisi storitev OS, ali kakih drugih).  Prošnja za izvedbo storitve OS – sistemski klic.  Primer: Ţelimo zapisati podatke na trdi disk. Program ne piše neposredno v registre krmilnika trdega diska. Namesto tega pripravi podatke in izvede sistemski klic za zapis podatkov na disk. Vso komunikacijo s krmilnikom trdega diska opravi OS. Prednost: ob zamenjavi krmilnika z drugačnim je potrebno le spremeniti del OS, ki upravlja z diskom (gonilnik), ne pa tudi vseh programov.

2 Večopravilnost (Multitasking) Nit (Thread)

 Moţnost sočasnega izvajanja večih programov na enem mikroprocesorju.  Sočasnost je le navidezna – naenkrat se izvaja le en program.  Program v večopravilnem sistemu ... nit.  Večopravilnost omogoča operacijski sistem.  SMT mikroprocesorji imajo strojno podporo za vzporedno izvajanje omejenega števila programov na enem jedru.

Enoopravilni sistem

nit čas Večopravilni sistem

nit 1

nit 2

nit 3 čas 3 Večnitni (Multithreaded) procesi

 Niti, ki si delijo skupen pomnilnik pripadajo enemu procesu.  Niti nekega procesa lahko dostopajo le do svojega kosa pomnilnika. Pomnilnik drugih procesov jim je nedostopen (MMU).

Procesu 1 pripada kos pomnilnika (A), ki je skupen trem nitim. nit 1 proces 1 nit 2 nit 3

Procesu 2 pripada kos pomnilnika B. proces 2

Procesu 3 pripada kos pomnilnika C. proces 3

čas 4 Izvedba večopravilnosti

 Hkrati lahko en mikroprocesor izvaja le eno nit. Izjema so SMT mikroprocesorji.  Iluzijo večopravilnosti OS ustvari s hitrim preklapljanjem med nitmi, ki naj bi tekle vzporedno.  Časovna os se razdeli na časovne rezine. V eni rezini se izvaja ena nit.

izvaja se izvaja se izvaja se izvaja se izvaja se izvaja se izvaja se nit 1 nit 2 nit 3 nit 1 nit 2 nit 3 nit 1

nit 1

nit 2

nit 3 čas časovna časovna časovna časovna časovna časovna časovna rezina 1 rezina 2 rezina 3 rezina 4 rezina 5 rezina 6 rezina 7 5 Kontekst niti in kontekstni preskok

 Kontekstni preskok (Context Switch) - preklop iz ene niti v drugo.  Kontekst niti – stanje mikroprocesorja, ki pripada eni niti. vsebina registrov in sklada, nastavitve MMU (preslikava)  Ob kontekstnem preskoku je potrebno shraniti kontekst niti, ki jo zapuščamo in naloţiti (shranjen) kontekst niti v katero vstopamo.  Kontekstni preskok lahko vzame veliko časa, saj obstaja precejšnja verjetnost, da mora po preskoku krmilnik predpomnilnika napolniti le-tega z novo vsebino, kar pa lahko traja nekaj časa. V tem času nit teče počasneje (imamo veliko “cache miss” dogodkov).

nit 1

nit 2

nit 3 čas kontekstni nit teče počasneje preskok (predpomnilnik se polni)

6 Kooperativna večopravilnost

 Kontekstni preskok se lahko zgodi ob trenutkih, ko program to dovoli s posebnim sistemskim kilcem.  Dovolj velika pogostost kontekstnih preskokov (in s tem iluzija večopravilnosti) je odvisna od tega, ali posamezni programi dovolj pogosto dovolijo kontekstni preskok.  En sam slabo napisan program povzroči, da se po njegovem zagonu izgubi iluzija večopravilnosti.  Primer: Windows 3.1 (pred 1995), MAC OS (pred 2001).  Še vedno popularna v vgrajenih sistemih s sprotnim odzivom (real-time ebedded systems), kjer je pomembna predvidljivost obnašanja.

7 Predkupna večopravilnost Preemptive Multitasking

 OS skrbi, da so kontekstni preskoki dovolj pogosti.  Kontekstni preskok se lahko zgodi kadarkoli – program je lahko prekinjen kadarkoli.  Kontekstni preskok se zgodi tudi takrat, ko kak sistemski klic pozroči, da mora program čakati.  Primer: Ko program ţeli brati podatke s sistemskim klicem read(), podatki pa še niso prispeli, se zgodi kontekstni preskok v drugi program. Ko podatki prispejo (sproţi se prekinitev) se zgodi kontekstni preskok nazaj prvotni program, ki čaka na podatke.  Iluzija večopravilnosti je zagotovljena brez, da bi zanjo moral skrbeti programer, ki piše programe za tak sistem.  Pojavi se ţe v prvih verzijah sistemov UNIX (1969). Windows od različic NT 3.1 (1993) in 95 (1995) naprej. Linux od samega začetka.

8 Izvedba predkupnosti Programiranje v predkupnem sistemu

 Za kontekstne preskoke skrbi OS.  Proţenje kontekstnih preskokov se ponavadi izvede s pomočjo prekinitve časovnika (timer interrupt).  Prekinitev časovnika je ponavadi proţena periodično.  Prekinitveni podprogram izvede kontekstni preskok.

nit 1

nit 2

nit 3 čas prekinitve časovnika  Programerju ni treba skrbeti za kontekstne preskoke.  Problem: komunikacija med nitmi.  Problem: tvegana stanja.  Problem: smrtni objem in stradanje. 9 Nedeljive (atomske) operacije in komunikacija med nitmi

 Nedeljive operacije so tako kratke, da se med njimi ne more zgoditi kontekstni preskok. Običajno so to operacije, ki ustrezajo enemu ukazu strojnega jezika mikroprocesorja.  Kaj se zgodi, če imamo kontekstni preskok med operacijo?  Primer: pisanje niza AABB v skupen pomnilnik z pomočjo deljive operacije

piši AA piši BB piši AA piši BB nit 1 nit 1

nit 2 nit 2

čas čas Pomnilnik: CCDD AADD AABB CCDD AADD AADD

Nit 2 vidi novo vrednost (AABB) Nit 2 vidi neveljavno vrednost AADD, (prva polovica je nova, druga polovica je stara)

 Če je pisanje niza AABB nedeljiva operacija, teţav ni. 10 Tvegano stanje (race condition)

 Če je rezultat delovanja sistema odvisen od trenutka kontekstnega preskoka, pravimo da imamo tvegano stanje.  Primer: vzporedno tečeta dve niti (A in B), ki ţelita obe povečati vrednost globalne spremenljivke c za 1. Nita A: Nit B: 1. prepiši c v R1 1. prepiši c v R2 2. povečaj R1 za 1 2. povečaj R2 za 1 3. zapiši R1 v c 3. zapiši R2 v c

c=0 c=0 Scenarij 1 Scenarij 2 1. prepiši c v R1 1. prepiši c v R1 2. povečaj R1 za 1 2. povečaj R1 za 1 3. zapiši R1 v c 1. prepiši c v R2 1. prepiši c v R2 c=1 2. povečaj R2 za 1 c=1 2. povečaj R2 za 1 3. zapiši R2 v c 3. zapiši R2 v c 3. zapiši R1 v c c=2 čas čas c=1

11 Preprečevanje tveganih stanj Mutex in semafor

 Mutex je objekt, ki ga lahko nit zaklene in odklene.  Recimo, da je nit A zaklenila mutex.  Če ţe zaklenjeni mutex poskuša zakleniti še kaka druga nit B, jo OS ustavi še preden ji uspe mutex zakleniti.  Sledi kontekstni preskok iz niti B.  Ko nit A odklene mutex, OS nadaljuje izvajanje niti B, ki sedaj lahko zaklene mutex.  Mutex-e uporabljamo, da preprečimo vzporedno izvajanje delov programa, ki se ne smejo izvajati vzporedno.  ... kritični odsek (critical section)  Semafor je Mutex, ki ga lahko n-krat zaklenemo preden se zgodi, da OS ob zaklepanju ustavi nit.

12 Primer uporabe mutex-a

leva nit ima c=0 zaklenjen mutex c=0 Scenarij 1 Scenarij 2 1. zakleni mutex 1. zakleni mutex 2. prepiši c v R1 2. prepiši c v R1 3. povečaj R1 za 1 3. povečaj R1 za 1 4. zapiši R1 v c 5. odkleni mutex 1. zakleni mutex 1. zakleni mutex 4. zapiši R1 v c 2. prepiši c v R2 5. odkleni mutex 3. povečaj R2 za 1 4. zapiši R2 v c 2. prepiši c v R2 5. odkleni mutex 3. povečaj R2 za 1 4. zapiši R2 v c c=2 5. odkleni mutex desna nit ima čas zaklenjen mutex čas c=2

 Ker je kritični odsek varovan s pomočjo mutex-a, do tveganega stanja ne more priti. 13 Smrtni objem (deadlock)

 Pogosto lahko neko enoto sistema (npr. trdi disk, serijska vrata, ...) uporablja le ena nit naenkrat.  Hkratno uporabo lahko preprečimo z uporabo mutex-a. Imamo en mutex za vsako tako enoto.  Če nit potrebuje enoto, zaklene njen mutex, ko konča, pa ga odklene.  Recimo, da ima nit A rezervirano enoto E (zaklenjen mutex E), nit B pa rezervirano enoto F (zaklenjen mutex F).  Nit A poskuša rezervirati enoto F... OS jo ustavi (nit B ima v rabi F).  Nit B poskuša rezervirati enoto E... OS jo ustavi (nit A ima v rabi E).  Nit A ne more sprostiti enote E, ker je nit A ustavljena.  Nit B ne more sprostiti enote F, ker je nit B ustavljena.  Niti A in B ostajata ustavljeni in se ne moreta nadaljevati... nastopi smrtni objem.

14 Prednost (prioriteta) niti

 Pri dostopu do neke skupne enote sistema imajo lahko različne niti različno prednost (prioriteto).  Več niti lahko hkrati čaka na pravico dostopa do skupne enote (na trenutek, ko bo mutex postal odklenjen).  Ko se enota sprosti (mutex enote se odklene), OS dodeli enoto (dovoli zakleniti mutex) tisti niti, ki ima najvišjo prednost.  Če imajo niti enako prednost, je prepuščeno OS-u, kateri niti bo kot naslednji dodelil enoto.

15 Stradanje (starvation)

 Recimo, da imamo tri niti (A, B in C).  Najvišjo prednost ima nit A, najniţjo pa nit C.  Nit A ima v uporabi enoto E.  Če nit B ţeli uporabiti enoto, jo OS ustavi za čas dokler nit A enote ne sprosti.  Ko je enota prosta, jo dobi nit B v uporabo.  Če sedaj nit C potrebuje enoto, jo OS ustavi.  Če se medtem tudi nit A “spomni”, da potrebuje enoto, jo OS ustavi.  Ko nit B sprosti enoto, jo dobi v uporabo nit A, ker ima višjo prednost od niti C, čeprav se je “spomnila” tega pozneje kot nit C.  Nit A in B si lahko tako izmenjujeta enoto v nedogled, nit C pa sploh ne dobi priloţnosti za uporabo enote... stradanje.

16 Prioritetna inverzija (priority inversion)

 Tri niti: A (najvišja prioriteta), B in C (najniţja prioriteta).  Nit C ima v rabi neko skupno enoto E.  Nit A ţeli uporabiti enoto E.  OS ustavi nit A, ker je E zasedena.  Ker ima nit B višjo prioriteto, kot nit C, bo mikroprocesor medtem večino časa izvajal nit B, ne pa niti C.  Nit C bo potrebovala veliko časa, da opravi svoje delo.  Nit A bo morala dolgo čakati, da se enota E sprosti. Medtem se izvaja nit B, čeprav ima niţjo prioriteto kot nit A.

 Primer: teţave sonde “Mars Pathfinder” ob pristajanju (1997).

17 Procesorski sistemi v telekomunikacijah Sistemi s sprotnim odzivom

(c) Arpad Bűrmen, 2010 Sistemi s sprotnim odzivom Real-time systems

 Sistem mora vzporedno opravljati več nalog  Vsaka naloga mora biti opravljena znotraj predpisanih časovnih okvirjev.  Primer: sistem ABS v avtomobilu – 3 opravila

odčitaj stopalko zavore (vsakih 20ms) popravi nastavitve zavor (vsakih 50ms) odčitaj hitrost vrtenja koles (vsakih 100ms)

2 Skrajni rok Deadline (D)

 Najdaljši čas, ki sme preteči od trenutka, ko se pojavi zahteva po začetku opravila do trenutka, ko je opravilo končano.  Trdi skrajni rok (hard deadline) če se ga sistem ne drži so posledice katastrofalne (medicinski sistemi, krmiljenje letal, ...)  Mehki skrajni rok (soft deadline) vrednost odziva sistema upada sorazmerno s časom prekoračitve skrajnega roka (npr. dekodiranje videa – večja ko je zamuda, dlje časa je video ustavljen in slika miruje)

3 Najneugodnejši čas izvajanja Worst Case Execution Time (WCET)

 Neko opravilo ne traja nujno zmeraj enako dolgo.  WCET je najdaljši čas, ki je potreben za dokončanje opravila, če bi mikroprocesor izvajal samo to opravilo. verjetnost

trajanje opravila najboljši povprečje WCET primer  Hitrejši mikroprocesor – krajši WCET. 4 Periodična in sporadična opravila

 Periodična opravila  Opravila, ki jih je treba izvesti z določeno periodo.  Podana je perioda opravila (T)  Primer: odčitavanje vrtljajev motorja v sistemu za upravljanje z motorjem

 Sporadična (aperiodična) opravila  Opravila, po katerih se lahko pojavi potreba kadarkoli

 Podana je najmajša pričakovana perioda (Tmin), ki ima podobno vlogo, kot perioda pri periodičnih opravilih.  Primer: samodejni izklop motorja, če avto stoji dlje kot 2 sekundi, samodejni vklop motorja ob pritisku na stopalko za plin

5 Razvrščanje opravil (Scheduling)

 Je dodeljevanje procesorskega časa posameznim opravilom.

Opravilo Perioda (T) [ms] WCET [ms] 25ms ... A A 80 25 10ms ... B B 40 10 5ms ... C C 20 5 procesor je brez dela (4ms) Skrajni rok (D) je enak periodi (T). kontekstni preskok (1ms)

A1 A1 A1 A1 B1 B2

C1 C2 C3 C4 C5

čas 0 20ms 40ms 60ms 80ms

 Opravilo z višjo prioriteto lahko prekine izvajanje opravila z nižjo prioriteto.  Opravili B in C imata višjo prioriteto kot opravilo A.

6 Razvrstljivost opravil (Schedulability)

 Problem: ali se da izpolniti podane zahteve po WCET in periodi?  Ugotavljanje razvrstljivosti je v splošnem težek problem. Primer: spodnjih zahtev se ne da izpolniti

Opravilo Perioda (T) [ms] WCET [ms] A 80 50 B 40 10 C 20 5

V 80ms bi se opravila A, B in C morala izvršiti 1, 2 in 4 krat, kar bi pomenilo, da skupaj potrebujejo (brez kontekstnih preskokov) 50ms + 10ms x 2 + 5ms x 4 = 90ms časa. Če imata opravili B in C višji prioriteti od opravila A, slednje zamudi skrajni rok za končanje svoje druge ponovitve (A2). 7 Načini dodeljevanja prioritet (priority assignment)

 Statično dodeljevanje prioritet  Najvišja prioriteta opravilu z najmanjšo periodo (T) Rate-Monotonic Priority Order (RMPO)  Najvišja prioriteta opravilu z najmanjšim D/T – Deadline-Monotonic Priority Ordering (DMPO)

 Dinamično dodeljevanje prioritet  Najvišja prioriteta opravilu za katero je trenutek, ko mora biti končano, najbližje - Earliest Deadline First (EDF)  Najvišja prioriteta opravilu, za katero je razlika med preostalim časom do trenutka, ko mora biti končano (določen z D) in preostalim časom, ki je potreben, da opravilo zaključimo (določen z WCET) najmanjša - Least-slack time

8 Strojna oprema in programiranje

 Težave z izračunom WCET (nepredvidljivost)  Predpomnilnik – nepredvidljiv dostopni čas do podatkov (velike variacije WCET, ko v predpomnilniku ni podatka)  Enota za upravljanje s pomnilnikom – nepredvidljiv dostopni čas do podatkov zaradi nalaganja preslikave iz pomnilnika  Cevovodno izvajanje - težko predvidljiv čas izvajanja ukazov (soodvisnost ukazov, mehurčki, zakasnitve izvajanja)

 Programiranje pogosto v jeziku ADA, ki s svojo strogostjo in vgrajeno podporo za programiranje sistemov s sprotnim odzivom zmanjša možnost napak.

 Operacijski sistemi QNX, VxWorks, RTLinux, Windows CE, FreeRTOS, ...

9