Protsessori ja mälu osa andmetöötluses Protsessor (CPU-Central Processing Unit) CPU Andmed & programm Andmed Mälu Sisend väljund Käsud Mälu (Memory System) Käsud Instructions Andmed Data CPU ALU Juht automaat Control Unit Registrid Registers Operatsioon automaat (Datapath) Sisend/väljund (Input/output) 9/22/2018 T. Evartson
9/22/2018 T. Evartson
Kõrgtaseme keel-assembler-masinkood High-level language If n<100 then a:= b else v[i]:=k[j-1] end; Assembler keel Assembly language ADD a,b,c MOV d, M XOR c,d Masinkood Binary machine language 00110111001110 11000110010100 11110100000101 11110000011100 9/22/2018 T. Evartson
Mälu Mälu Andmevahetus mäluga Aadress Andmed & programm Andmed Lug./kirj. Mälu Mälu aadressi ja andmete registrid Aadress Mälu aadressi register (MAR) Käsk 1 Käsk 2 Mälu Käsk 3 Andmed Andmed Mälu puhver register (MBR) 9/22/2018 T. Evartson
Käsuloendur Program Countrer, Instruction Pointer Mälu Järjestikuste käskude lugemine käsuloenduri (PC) aadressi järgi Aadress Käsuloendur (PC) Käsk 1 Käsk 2 Inc. (+1) Käsk 3 Andmed 9/22/2018 T. Evartson
Käsu register ja käsu dekodeerimine Käsuregister (IR) Käsukood Aadress/Operand Dekooder ADD OR MUL 9/22/2018 T. Evartson
Käsu täitmise juhtimine Mälu aadressi register (MAR) Käsuloendur (PC) Mälu Inc. (+1) IR Käsukood Aadress Mälu puhver register (MBR) Käsu dekooder Andmed Aadressid Juht- automaat (CU) Juhtsignaalid 9/22/2018 T. Evartson
Mälujaotus ilma siirdekäskude ja vahetute operandide, ning otsese adresseerimiseta Käsuloendur Käsk2 Käsk 3 Käsk4 Käsk 5 9/22/2018 T. Evartson
Protsesor ilma vahetute operandide ja siirde käskudeta Käsuloendur (PC) Mälu aadressi register (MAR) Mälu Inc. (+1) Käsuregister(IR) Käsukood Aadress Mälu puhver register (MBR) Käsu dekooder Andmeregistrid (registermälu) ALU Juht- automaat (CU) Juhtsignaalid Andmed Aadressid Lippude register Juhtimine 9/22/2018 T. Evartson
Käsu täitmise tsükkel ( von Neumanni tsükkel) Fetch – Decode – Execute Cycle Käsukoodi laadimine (Fetch) Käsuloenduri modifitseerimine PC: =PC +1 Käsu täitmine Käsukoodi dekodeerimine 9/22/2018 T. Evartson
Käsukoodi dekodeerimine PC M Käsukoodi laadimine (Instruction fetch) PC + 1 M IR Käsukoodi dekodeerimine . . . . . . Käsu täitmine (instruction execute) 9/22/2018 T. Evartson
Mälu jaotus siirdekäskudega programmiga Käsuloendur Käsk2 Siirdekäsk (Branch) Järgmise käsu aadress Käsk3 Andmed Käsk1a Käsk2a 9/22/2018 T. Evartson
Siirdekäsud protsessoris Käsuloendur (PC) Mälu aadressi register (MAR) Mälu Järgmise käsu aadress Inc. (+1) Käsuregister(IR) Käsukood Aadress Mälu puhver register (MBR) Käsu dekooder Andmeregistrid (registérmälu) ALU Juht- automaat (CU) Juht- signaalid Lippude register Siirde (Branch) tingimus 9/22/2018 T. Evartson
Käsukoodi dekodeerimine PC M Käsukoodi laadimine (Instruction fetch) PC + 1 M IR Käsukoodi dekodeerimine Siirdekäsk . . . 1 Tingimus . Käsu täitmine (instruction execute) PC M PC + 1 Uus PC 9/22/2018 T. Evartson
Mälu jaotus operandi otsese adresserimisega käsu koral Käsk1 Käsuloendur Käsk2 Operandi aadress Käsk3 Andmed Operand Käsk n 9/22/2018 T. Evartson
Käsukoodiga antakse koos operandi aadress Käsuloendur (PC) Mälu aadressi register (MAR) Mälu Inc. (+1) Operandi aadress Käsuregister(IR) Operandi aadress Käsukood Mälu puhver register (MBR) Käsu dekooder Andmeregistrid (registérmälu) ALU Juht- automaat (CU) Juht- signaalid Lippude register Siirde (Branch) tingimus 9/22/2018 T. Evartson
Käsukoodi dekodeerimine PC M Käsukoodi laadimine (Instruction fetch) PC + 1 M IR Käsukoodi dekodeerimine Otsese adresseerimisega käsk . . . PC M . . . . Käsu täitmine (instruction execute) M IR PC + 1 . . . 9/22/2018 T. Evartson
Mälu jaotus vahetu operandiga käskude korral Käsuloendur Käsk2 Operand Käsk3 Käsk4 Käsk n 9/22/2018 T. Evartson
Vahetu operandiga käsud Käsuloendur (PC) Mälu aadressi register (MAR) Mälu Inc. (+1) Käsuregister(IR) Operand (Aadress) Käsukood Mälu puhver register (MBR) Käsu dekooder Andmeregistrid (registérmälu) Operand ALU Juht- automaat (CU) Juht- signaalid Lippude register Siirde (Branch) tingimus 9/22/2018 T. Evartson
Käsukoodi dekodeerimine PC M Käsukoodi laadimine (Instruction fetch) PC + 1 M IR Käsukoodi dekodeerimine Vahetu operandiga käsk . . . PC M . . . . Käsu täitmine (instruction execute) M IR PC + 1 . . . 9/22/2018 T. Evartson
Lippude register (Flags) Operatsioonautomaat Operatsioonautomaat - vahetu andmete teisendaja (Data path) Andmed mälust ja I/O seadmetest Register 1 Registermälu Register 2 Register 3 Register n Ope- rand 1 Resultaat Ope- rand 2 ALU Lippude register (Flags) 9/22/2018 T. Evartson
Protsessori üldstruktuur Käsuloendur (PC) Mälu aadressi register (MAR) Mälu Järgmise käsu aadress Inc. (+1) Operandi aadress Käsuregister(IR) Operand (Aadress) Käsukood Mälu puhver register (MBR) Käsu dekooder Andmeregistrid (registérmälu) Operand ALU Juht- automaat (CU) Juht- signaalid Lippude register Siirde (Branch) tingimus 9/22/2018 T. Evartson
9/22/2018 T. Evartson
9/22/2018 T. Evartson
Jäiga loogikaga juhtautomaat Hard Wired Juhtautomaat (CU) Milline käsk täidetakse Juhtsignaalid protsessori eri osadele Tagaiside protsessori eri osadest 9/22/2018 T. Evartson
Kombinarsioonskeemid (Combinational Circuits) Boole`i funktsioon x 1 y = f (x1,x2,… xn) x 2 y Teades sisendite loogilisi väärtusi antud ajahetkel saame vastava Boole`i funktsiooni kaudu arvutada väljundi väärtuse. Puudub sõltuvus eelmistest sisendite väärtustest. x n Järjestikskeemid (Sequential Circuits) Boole`i funktsioon + olek Selleks, et määrata väljundi väärtust antud ajahetkel on vaja teada sisendite väärtusi antud ajahetkel ja olekut mis sõltub eelmistest sisendite väärtustest. Taktsisendi t kaudu määratakse millal toimub üleminek ühest olekust teise. x 1 x 2 y x n x 1 y Väljund funktsioon x n t Ülemineku funktsioon Uus olek am as Mälu Vana olek t 9/22/2018 T. Evartson
Mealy automaadi struktuur Yj=fv(as,Xi) Yj Xi am=fü(as,Xi) Ergutus mis viib olekusse am Praeguse oleku kood as Mälu t 9/22/2018 T. Evartson
9/22/2018 T. Evartson Algus a1 1 Start y1 a2 x 1 y1, y3 y2 a3 y2 a1 Start y1 a2 x 1 y1, y3 y2 a3 y2 a1 Lõpp start/- start/y1 a1 x/y2 -/y2 a1 a1 x/y1, y3 9/22/2018 T. Evartson
Moore automaadi struktuur Yj=fv(as,Xi) Yj Xi am=fü(as,Xi) Ergutus mis viib olekusse am Praeguse oleku kood as Mälu t 9/22/2018 T. Evartson
9/22/2018 T. Evartson Algus a1 y1 a2 x 1 a4 y1 y2 a3 Lõpp a1 - a1 - x a4 y1 y2 a3 Lõpp a1 - a1 - x a2 y1 a4 y1 a3 y2 x x x 9/22/2018 T. Evartson
(mikroprogrammi mälu) Tingimused {X} Käsuregister Aadressi generaator t Aadressi register Püsimälu (mikroprogrammi mälu) Tingimuse valik Järgmise sõna aadress Juhtsignaalid {Y} 9/22/2018 T. Evartson
9/22/2018 T. Evartson
9/22/2018 T. Evartson
9/22/2018 T. Evartson Algus a1 y1 a2 x 1 a3 y2 y3 a4 Lõpp a1 00 - a1 - a3 y2 y3 a4 Lõpp a1 00 - a1 - x a2 y1 - 01 a4 y3 11 a3 y2 x 10 9/22/2018 T. Evartson
9/22/2018 T. Evartson R t a1 R Püsimälu TT c Tingimused {X} D Aadress Väljundid {Y} a0 R TT c D Aadress y3 1 y2 y1 s 1 s & x 9/22/2018 T. Evartson
Mikroprogrammeeritav juhtautomaat Käsukood Aadress/Operand Käsuregister (IR) INC.(+1) Mikrokäsuloendur CLK Mikroprogrammi mälu (tavaliselt püsimälu) Aadress Andmed Järgmise käsu aadress Laadi- mine/ inc Tingimuse valik Protsessori juhtimine Protsessorisse teistesse komponentidesse MUX Tingimused protsessorist 9/22/2018 T. Evartson
A:=E B:=E C:=E A D:=E B C D TMP1:=A TMP2:=A TMP1:=B TMP2:=B TMP1:=C TMP2:=C TMP1:=D TMP2:=D Laadida TMP1 Laadida TMP2 TMP1 TMP2 ALU V P {AND, OR, SHL1, SHR1, +, INC, DEC, ...} Lipud Y E Laadida E 9/22/2018 T. Evartson
C:=0 D:=0 1 B(0)=0 C:=C+A C:=R1(C) B:=R1(B) D:=D+1 D=4 1 9/22/2018 T. Evartson
Käsukoodi dekodeerimine PC M Käsukoodi laadimine (Instruction fetch) PC + 1 M IR Käsukoodi dekodeerimine . . . ADD A,B,C MUL A,B,C TMP1:=A Laadida TMP1 ALU : const =0 Laadida E TMP2:=B Laadida TMP2 C:=E ALU : liitmine Laadida E ALU : const =0 Laadida E C := E D := E . 9/22/2018 T. Evartson
RISC ja CISC protsessorite erinevus CISC - Complex Instruction Set Computer ISA (Instruction Set Architecture Level) Mikroprogramm Microprogram control Hardware RISC - Reduced Instruction Set Computer ISA (Instruction Set Architecture Level) Hardware 9/22/2018 T. Evartson
9/22/2018 T. Evartson
RISC protsessori projekteerimise põhimõtted 9/22/2018 T. Evartson
9/22/2018 T. Evartson
Konveier I Pipeline IF Instruction Fetch (Käsu laadimine)+Instruction Decode OF Operand Fetch (Operandi laadimine) OE Operand Execute ( Operatsioni täitmine ALU-s) OS Operand Store ( Resutaadi salvestamine) Programmi täitmine ilma konveierita 1. käsk 2. käsk IF OF OE OS IF OF OE OS IF Konveieriga programmi täitmine (Pipeline) Takt 1 Takt 2 Takt 3 Takt 4 Takt 5 Takt 6 Takt 7 Takt 8 Käsk IF OF OE OS 1 IF OF OE OS 2 IF OF OE OS 3 IF OF OE OS 4 IF OF OE OS 5 9/22/2018 T. Evartson
Käsk 1 Käsk 2 Käsk 3 IFU IR IFU IR IFU IR Reg. Reg. Reg. A B A B A B ALU ALU ALU C C C IFU IR IFU IR IFU IR Reg. Reg. Reg. A B A B A B ALU ALU ALU C C C IFU IR IFU IR IFU IR Reg. Reg. Reg. A B A B A B ALU ALU ALU C C C IFU IR IFU IR IFU IR Reg. Reg. Reg. A B A B A B ALU ALU ALU C C C 9/22/2018 T. Evartson
Siirdekäsu mõju konveieri tööle IF OF OE OS i-1 IF OF OE OS i BRA to n IF OF OE OS i+1 IF OF OE OS i+2 BUBBLE n IF OF OE OS ń+1 IF OF OE OS 9/22/2018 T. Evartson
Viivitusega siire programmis ( Delayed Branch) IF OF OE OS i-1 IF OF OE OS Uue aadressi arvutamine toimub käsu täitmise ajal i BRA to n IF OF OE OS Käsk täidetakse väljaspool järekorda i+1 IF OF OE OS i+2 n IF OF OE OS ń+1 IF OF OE OS 9/22/2018 T. Evartson
Andmete sõltuvus ja konveier IF ADD A,B,C OF Get A,B OE A + B OS C:=A+B IF SUB C,B,D OF Get C,B OE C - B OS D:=C-B BUBBLE Andmete edastus otse IF ADD A,B,C OF Get A,B OE A + B OS C:=A+B C IF SUB C,B,D OF Get C,B OE C - B OS D:=C-B 9/22/2018 T. Evartson
Laadimise käsu mõju konveierile Takt 1 Takt 2 Takt 3 Takt 4 Takt 5 Takt 6 Takt 7 Takt 8 Käsk 1 IF OF OE OS 2 IF OF OE OS 3 Tühjad taktid IF OF OE OS 4 IF OF OE OS 9/22/2018 T. Evartson
Hargnemiste ennustamine I ( Branch Prediction) ÕIGE Siiret eeldati ja tuli Predict taken branch taken Siire toimub Branch taken Ei ole siirdekäsk not Branch Inst p c VALE Siiret ei eeldatud siire tuli Predict not taken branch taken 1-p b 1-p c p t c p b ÕIGE Siiret ei eeldatud ja ei tulnud Predict not taken branch not taken d p c 1-p t Siirdekäsk Branch Inst. VALE Siiret eeldati aga siiret ei tulnud Predict taken branch not taken 1-p c b C ave = a(pt pc)+b(1-pt)(1-pc)+ +c pt(1-pc)+d(1-pt)pc 9/22/2018 T. Evartson
Hargnemiste ennustamine II Strateegiad : Fikseeritud hargnemiste ennustamine Fixed Branch Prediction Staatiline hargnemiste ennustamine Static Branch Prediction Dünaamiline hargnemiste ennustamine Dynamic Branch Prediction Hargnemist ei tulnud 00 Ennustus: hargnemist ei tule Hargnemine 01 Ennustus: hargnemist ei tule Hargnemist ei tulnud Hargnemist ei tulnud Hargnemine 10 Ennustus: hargnemine 11 Ennustus: hargnemine Hargnemine Hargnemist ei tulnud Hargnemine Hargnemine Ennustus b1 b2 9/22/2018 T. Evartson
a) Säilitatakse kaks ennustuse bitti igale hargnemise käsule a) Säilitatakse kaks ennustuse bitti igale hargnemise käsule. Töötab kui aadress kuhu juhtimine läheb on käsukoodi juures. b) Kui hargnemise koha aadress selgub alles käsu täitmise ajal eeldatakse, et hargnemine toimub sina kuhu eelmisel korral. Ilma selle aadressita ei saaks käivitada konveierit sellest harust. 9/22/2018 T. Evartson
Ennustuse bitid Ennustuse bitid Siirdekäsu aadress Siirdekäsu aadress Siirde aadress Kehtivuse bit Kehtivuse bit b1 b2 b1 b2 . . . 9/22/2018 T. Evartson
SISD - Single Instruction Single Data-stream Käsu taseme paralleelsus Instruction-Level Parallelism Konveier Pipeline S1 Käsu laadimine S2 Käsu deko- deerimine S3 Operandide laadimine S4 Käsu täitmine S5 Resultadi salvesta- mine S1 1 2 3 4 5 S2 1 2 3 4 5 S3 1 2 3 4 S4 1 2 3 S5 1 2 Aeg 9/22/2018 T. Evartson
Protsessori töö kiirendamine Super konveieriga protsessor. (Superpipelined Processor) Takt 1 Takt 2 Takt 3 Takt 4 Takt 5 Takt 6 Käsk 1 IF OF OE OS 2 IF OF OE OS 3 IF OF OE OS Takt 1 Takt 2 Takt 3 Takt 4 Takt 5 Takt 6 Käsk 1 IF 1 IF 2 OF 1 OF 2 OE 1 OE 2 OS 1 OS 2 2 IF 1 IF 2 OF 1 OF 2 OE 1 OE 2 OS 1 OS 2 3 IF 1 IF 2 OF 1 OF 2 OE 1 OE 2 OS 1 OS 2 4 IF 1 IF 2 OF 1 OF 2 OE 1 OE 2 OS 1 OS 2 IF 1 IF 2 OF 1 OF 2 OE 1 OE 2 OS 1 OS 2 5 Väga pika käsuga arhitektuur. (Very Long Instruction Word Architecture -VLIW ) 9/22/2018 T. Evartson
Protsessori töö kiirendamine Superskalaarne arhitektuur Superscalar Architestures. Käsu laadimine Käsu deko- deerimine Operandide laadimine Käsu täitmine Resultadi salvesta- mine Käsu deko- deerimine Operandide laadimine Käsu täitmine Resultadi salvesta- mine Operatsioon täisarvuga Operatsioon täisarvuga Käsu laadimine Käsu deko- deerimine Operandide laadimine Resultadi salvesta- mine Operatsioon ujukoma arvuga Operatsioon ujukoma arvuga Spekulatiivne täitmine. (Speculative Execution) Data Speculation(Read-After-Write, Write-After-Read, Write-After-Write) Control Speculation 9/22/2018 T. Evartson
Protsessori töö kiirendamine SIMD - Single Instruction Multiple Data-stream Architecture x4 x3 x2 x1 y4 y3 y2 y1 op op op op I x4 op y4 x3 op y3 x2 op y2 x1 op y1 9/22/2018 T. Evartson
Paralleelarvutid Parallel Computer Architectures Pp Pp Ps Ps Pp Pp Lõpp Pp Pp T . f 1-f n CPU-d aktiivsed Järjestik osa Paralleliseeritav osa Üks CPU aktiivne f 1-f Kiirus fT (1-f)T/n CPU-de arv 9/22/2018 T. Evartson
Klassifikatsioon (Flynn´s taxonomy) Arvutid SISD SIMD MIMD MISD Vektor protsessor Vector Processor Konveier protsessorid Pipeline Processors Konveier Pipeline Maatriks protsessor Array Processor Mitme ALU-ga Superscalar Architecture Multi- protsessor Multiprocessors Multiarvuti Multicomputers UMA Uniform Memory Acess COMA Cashe Only Memory Acess NUMA NonUniform Memory Acess MPP Massively Parallel Processors NOW Network of Worksations Bus Switched CC-NUMA NC-NUMA Võrk Grid Hüperkuup Hypercube Shared memory Message passing 9/22/2018 T. Evartson
SIMD - Single Instruction Multiple Data-stream Protsessori tasandi parlleelsus Processor-Level Parallelism Maatriksprotsessor Array Processor Juhtautomaat Control Unit Mälu Mälu Mälu Mälu Protsessor Protsessor Protsessor Protsessor Mälu Mälu Mälu Mälu Protsessor Protsessor Protsessor Protsessor Mälu Mälu Mälu Mälu Protsessor Protsessor Protsessor Protsessor Mälu Mälu Mälu Mälu Protsessor Protsessor Protsessor Protsessor Vektorprotsessor Vector Processor Sisendvektorid ALU Vektor ALU ALU ALU 9/22/2018 T. Evartson
MISD – Multi Instruction Single Data Mälu CU 1 CU 2 CU n ... Data Instructions Data Protsessor 1 Protsessor 1 Protsessor 1 ... 9/22/2018 T. Evartson
MIMD- Multiple Instruction Multiple Data-stream Multiprotsessor- Multiarvuti Multiprotsessor Multiprocessor CPU CPU Mälu CPU CPU CPU CPU CPU CPU Multiarvuti Multicomputer Mälu Mälu CPU CPU Message- passing interconnection network Mälu CPU CPU Mälu Mälu CPU CPU Mälu CPU CPU Mälu Mälu 9/22/2018 T. Evartson
9/22/2018 T. Evartson
Probleemid: 1. Mälu. 2. Paraleliseeritavus. 3. Energia tarve. 9/22/2018 T. Evartson
9/22/2018 T. Evartson
Message-Passing Multicomputers MPPs - Massively Parallel Processors CPU CPU Mälu CPU CPU Mälu . . . . . . Disk I/O Disk I/O Communucation Processor Communucation Processor High-prformance interconnection network NOW - Network of Workstations COW - Cluster of Workstations Computer Computer Computer Packet Packet 9/22/2018 T. Evartson