Principy počítačů a operačních systémů



Podobné dokumenty
Architektura počítačů Implementace procesoru

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Struktura a architektura počítačů (BI-SAP) 12

Architektura počítačů

SWI120 ZS 2010/ hookey.com/digital/

Architektury CISC a RISC, uplatnění v personálních počítačích

Základní typy procesorů, principy zřetězeného zpracování, plnění fronty instrukcí.

Principy překladačů. Architektury procesorů. Jakub Yaghob

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Proudové zpracování instrukcí I. Celočíselná pipeline RISC

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Sekvenční logické obvody

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Procesor. Procesor FPU ALU. Řadič mikrokód

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Architektura počítačů Zvyšování výkonnosti

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Architektura počítačů

Technické prostředky počítačové techniky

Principy počítačů a operačních systémů

Sběrnicová struktura PC Interní počítačové paměti PC

PROCESOR. Typy procesorů

Architektura počítače

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Struktura a architektura počítačů (BI-SAP) 7

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Architektura počítačů

Struktura a architektura počítačů

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz


Architektura počítačů Logické obvody

Architektura počítačů


Princip funkce počítače

Architektura počítačů Zvyšování výkonnosti

Čítače e a časovače. v MCU. Čítače a časovače MCU. Obsah

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Architektura počítačů Logické obvody

Vítězslav Bártl. březen 2013

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

Petr Havíček HAV319. Rodina procesorů Intel Nehalem (historie a vývoj)

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Úvod do architektur personálních počítačů

a operačních systémů

Číselné soustavy Ing. M. Kotlíková, Ing. A. Netrvalová Strana 1 (celkem 7) Číselné soustavy

Cílem kapitoly je seznámit studenta s pamětmi. Jejich minulostí, současností a hlavnímu parametry.

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

Provádění instrukcí. procesorem. Základní model

DUM 10 téma: Stavová tabulka výklad

Sekvenční logické obvody

Operační systém teoreticky

Procesor z pohledu programátora

Část 1 ZÁKLADNÍ RYSY VÝPOČETNÍ PROSTŘEDKŮ DOSTUPNÝCH NA IT4INNOVATIONS

Architektury počítačů

Principy počítačů I - Procesory

Charakteristika dalších verzí procesorů v PC

Sada 2 - MS Office, Excel

Principy počítačů a operačních systémů

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Architektura AMD K10. Kozelský Martin, koz230. Datum:

Pohled do nitra mikroprocesoru Josef Horálek

Od logických obvodů k procesorům. INP 2008 FIT VUT v Brně

Převodník DL232. Návod pro instalaci. Docházkový systém ACS-line. popis DL232.doc - strana 1 (celkem 5) Copyright 2013 ESTELAR

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

KIV/ZI Základy informatiky. MS Excel maticové funkce a souhrny

1. Programování, typy programovacích jazyků, historie.

Principy činnosti sběrnic

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

2010/2011 ZS. z HW pohledu 640 kb ought to be enough for anybody. Bill Gates, 1981

{ } Kombinace II. Předpoklady: =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce.

Signály Mgr. Josef Horálek

Nerovnice s absolutní hodnotou

Virtuální přístroje. Použití grafického programování v LabVIEW. Ing. Pavel Mlejnek

Kvadratické rovnice pro učební obory

Popis a funkce klávesnice Gama originální anglický manuál je nedílnou součástí tohoto českého překladu

Pingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Architektury VLIW M. Skrbek a I. Šimeček

E-ZAK. metody hodnocení nabídek. verze dokumentu: QCM, s.r.o.

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Aktualizace mapových podkladů v zařízení Garmin

Přednáška 2 A4B38NVS - Návrh vestavěných systémů 2014, kat. měření, ČVUT - FEL, Praha J. Fischer A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL 1


Úvod do architektur procesorů

Paměti a jejich organizace

Řetězené zpracování. INP 2008 FIT VUT v Brně

Tvorba trendové funkce a extrapolace pro roční časové řady

Příklady a návody. Databázová vrstva

PŘÍLOHA č. 2B PŘÍRUČKA IS KP14+ PRO OPTP - ŽÁDOST O ZMĚNU

Každý jednotlivý záznam datového souboru (tzn. řádek) musí být ukončen koncovým znakem záznamu CR + LF.

Cílem kapitoly je seznámit studenta s pamětmi. Jejich minulostí, současností, budoucností a hlavními parametry.

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Algoritmizace a programování

Transkript:

Principy počítačů a operačních systémů Architektura a implementace zjednodušeného procesoru MIPS Zimní semestr 2011/2012

Architektura procesoru MIPS (1) Registry 32 obecných 32-bitových registrů (general-purpose) s0-s7, t0-t9, zero, a0-a3, v0-v1, gp, fp, sp, ra, at (r0-r31) registr PC s adresou následující instrukce speciální registry pro řízení Paměť adresa instrukce, který vyvolala výjimku, apod. přístup pouze na zarovnané adresy (dělitelné 4) granularita délky slova (32 bitů), tj. 4B nepřímá adresace s posunutím register indirect with displacement R2 = Mem [R1 + immediate], Mem [R1 + immediate] = R2 2/73 - Procesor

Architektura procesoru MIPS (2) Operace operace registr/registr, registr/immediate aritmetické a logické operace, přesun dat mezi registry přesuny dat registr/paměť load/store architektura podmíněné skoky při rovnosti/nerovnosti obsahu dvou registrů nepodmíněné skoky včetně nepřímých skoků a skoků do podprogramu speciální instrukce práce se speciálními registry 3/73 - Procesor

Architektura procesoru MIPS (3) Zpracování instrukcí čtení instrukce z paměti na adrese v PC dekódování instrukce a čtení operandů z registrů vykonání operace odpovídající instrukčnímu kódu operace s obsahem registrů, výpočet adresy a čtení z (zápis do) paměti, porovnání operandů pro podmíněný skok uložení výsledku do registru výsledek operace s registry, data přečtená z paměti posun PC na následující instrukci následující instrukce následuje bezprostředně za právě čtenou instrukcí, pokud není řečeno jinak (podmíněný/nepodmíněný skok, výjimka) 4/73 - Procesor

Jednocyklová datová cesta Uspořádání logických celků implementující operace procesoru

Čtení instrukce (fetch) Registr PC obsahuje adresu instrukce v paměti pro programátora není přímo přístupný Paměť instrukcí oddělená pamět = Harvardská architektura (prozatím) Sčítačka inkrementuje obsah PC o 4 implicitní posun na následující instrukci (von Neumannovská koncepce) PC 4 Add Read address Instruction Instruction Memory 6/73 - Procesor

7/73 - Procesor Podpora čtení instrukce 4 PC Addr Insn IM

8/73 - Procesor Registrové operace (add, sub,...) Op (6) Rs (5) Rt (5) Rd (5) shamt (6) Funct (6) funct Rs Rt Rd 5 5 5 Read register 1 Read register 2 Write register Register 1 value Register file 32 Write Register 2 data value 32 32 ALU Result ALUOp RegWrite

9/73 - Procesor Podpora registrových operací 4 ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] Rs Rt Rd WD A RF B ALU Res RegWrite

10/73 - Procesor Operace s přímými operandy (addi, andi,...) Op (6) Rs (5) Rt (5) Immediate (16) Immediate 16 Sign ext. 32 ALUOp Rs 5 Read register 1 Register 1 value 32 ALU Rt 5 32 Write register Write data Register file Result RegWrite

Znaménkové rozšíření (sign( extension) Logický prvek vstup: n-bitové číslo X předpokládá se reprezentace ve dvojkové doplňku X n Sign Extend m Y výstup: m-bitové číslo Y znaménkové rozšíření čísla X Příklad pro n=16, m=32 Sign Extend Y 31 Y 16 X 15 Y 15 X 0 Y 0 11/73 - Procesor

Podpora přímých operandů 4 I[15:0] Sign Ext ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] M U X Rs Rt Rt Rd WD A RF B M U X ALU Res RegDst RegWrite ALUSrc 12/73 - Procesor

Přepínač vstupů (multiplexer,( mux) Logický prvek selektor: n-bitové číslo S { 0,..., 2 n-1 } N=2 n m-bitových vstupů X 0, X 1,..., X N-1 X 0 X 1 X N-1 0 1 N-1 Y S m-bitový výstup Y=X S S Příklad pro N=4, m=1 pro výběr vstupu se používá dekodér do kódu 1 z N X 0 X 1 Mux Y S S X 2 X 3 13/73 - Procesor

Binární dekodér do 1 z N (binary( to 1-hot) Logický prvek n vstupů: n-bitové dvojkové číslo B { 0,..., 2 n-1 } N=2 n výstupů: reprezentace B v kódu 1 z N B-tý bit 1, ostatní 0 Příklad pro N=4 Vstupy Výstupy B 0 B 1 H 0 B 1 z N B 1 B 0 H 3 H 2 H 1 H 0 H 1 0 0 0 0 0 1 0 1 0 0 1 0 H 2 1 0 0 1 0 0 1 1 1 0 0 0 H 3 1 ze 4 14/73 - Procesor

15/73 - Procesor Čtení z paměti (load) Op (6) Rs (5) Rt (5) Offset (16) Offset Rs 5 16 Read register 1 Sign ext. 32 Register 1 value 32 ALU ALUOp Rt 5 32 Write register Write data Register file Result Address Read Data Data Memory RegWrite

16/73 - Procesor Zápis do paměti (store) Op (6) Rs (5) Rt (5) Offset (16) Offset 5 Rs 5 Rt 16 Read register 1 Read register 2 Sign ext. 32 Register 1 value Register file 32 ALU Result ALUOp Address Register 2 value Write Data MemWrite Data Memory

Podpora přístupu do paměti 4 I[15:0] Sign Ext ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] M U X Rs Rt Rt Rd WD A RF B M U X ALU Res Addr RD DM WD M U X RegDst RegWrite ALUSrc MemToReg MemWrite 17/73 - Procesor

18/73 - Procesor Podmíněný skok s relativní adresou (branch) Op (6) Rs (5) Rt (5) Offset (16) 4 M U X Branch PC Add Offset 16 Sign ext. 32 Shift left 2 Add ALUOp Rs Rt 5 5 Read register 1 Read register 2 Register 1 value Register file Register 2 value 32 ALU Zero

19/73 - Procesor Logický posun vlevo o k bitů (shift logical left) Logický prvek vstup: n-bitové číslo X výstup: n-bitové číslo Y = X << k X n Shift Left Logical 2 n Y Příklad pro n=16, k=2 X 15 X 14 Shift Left Logical 2 Y 15 X 13 Y 3 Y 2 X 1 0 Y 1 X 0 0 Y 0

20/73 - Procesor Podpora podmíněného skoku s relativní adresou 4 M U X Branch I[15:0] Sign Ext Shift Lft 2 ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] M U X Rs Rt Rt Rd WD A RF B M U X ALU Zero Res Addr RD DM WD M U X RegDst RegWrite ALUSrc MemToReg MemWrite

21/73 - Procesor Nepodmíněný skok s absolutní adresou (jump) Op (6) Address (26) 32 28 PC 4 Add PC+4 [31:28] 4 Address 26 Shift left 2

22/73 - Procesor Podpora nepodmíněného skoku s absolutní adresou 4 M U X Jump Shift Lft 2 PC+4[31:28] M U X Branch I[15:0] Sign Ext Shift Lft 2 I[25:0] ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] M U X Rs Rt Rt Rd WD A RF B M U X ALU Zero Res Addr RD DM WD M U X RegDst RegWrite ALUSrc MemToReg MemWrite

Řízení jednocyklové datové cesty Řízení průchodu dat datovou cestou v závislosti na typu operace

24/73 - Procesor V čem spočívá řízení datové cesty? 4 M U X Jump Shift Lft 2 PC+4[31:28] M U X Branch I[15:0] Sign Ext Shift Lft 2 I[25:0] ALUOp PC Addr Insn IM I[25:21] I[20:16] I[15:11] M U X Rs Rt Rt Rd WD A RF B M U X ALU Zero Res Addr RD DM WD M U X RegDst RegWrite ALUSrc MemToReg MemWrite

25/73 - Procesor Příklad: řízení datové cesty pro instrukci add 0 1 4 1 Jump=0 Shift Lft 2 PC+4[31:28] 0 Branch=0 I[15:0] Sign Ext Shift Lft 2 I[25:0] ALUOp= add PC Addr Insn IM I[25:21] I[20:16] I[15:11] 0 1 Rs Rt Rd WD A RF B 0 1 ALU Zero Res Addr RD DM WD 0 1 RegDst=1 RegWrite=1 ALUSrc=1 MemToReg=0 MemWrite=0

26/73 - Procesor Příklad: řízení datové cesty pro instrukci sw 0 1 4 1 Jump=0 Shift Lft 2 PC+4[31:28] 0 Branch=0 I[15:0] Sign Ext Shift Lft 2 I[25:0] ALUOp= add PC Addr Insn IM I[25:21] I[20:16] I[15:11] 0 1 Rs Rt Rt Rd WD A RF B 0 1 ALU Zero Res Addr RD DM WD 0 1 RegDst=X RegWrite=0 ALUSrc=0 MemToReg=X MemWrite=1

27/73 - Procesor Příklad: řízení datové cesty pro instrukci beq 0 1 4 1 Jump=0 Shift Lft 2 PC+4[31:28] 0 Branch=1 I[15:0] Sign Ext Shift Lft 2 I[25:0] ALUOp= sub PC Addr Insn IM I[25:21] I[20:16] I[15:11] 0 1 Rs Rt Rt Rd WD A RF B 0 1 ALU Zero Res Addr RD DM WD 0 1 RegDst=X RegWrite=0 ALUSrc=1 MemToReg=X MemWrite=0

Radič datové cesty (data( path controller) Generuje řídící signály zdroj hodnoty PC zápis do registrů čtení/zápis dat operace ALU Hodnoty pro různé instrukce ohodnocení většiny signálů závisí na operačním kódu v instrukci některé mohou být přímo součástí instrukčního kódu Instruction část signálů ALUOp odpovídá bitům v poli funct zjednodušuje implementaci řadiče Control Jump Branch RegDst RegWrite MemWrite MemToReg ALUOp ALUSrc 28/73 - Procesor

Implementace řadiče pomocí ROM Řídící paměť ROM (Read Only Memory) jako RAM, ale jen pro čtení slova v paměti reprezentují hodnoty řídících signálů hodnota operačního kódu adresuje řádky paměti Opcode 29/73 - Procesor J u m p B r a n c h R e g D s t R e g W r i t e add 0 0 1 1 0 0 0 1 addi 0 0 0 1 0 0 0 0 lw 0 0 0 1 0 1 0 0 sw 0 0 X 0 1 X 0 0 beq 0 1 X 0 0 X 1 1 j 1 X X 0 0 X X X M e m W r i t e M e m T o R e g A L U O p A L U S r c

Implementace řadiče pomocí kombinačního obvodu Reálný procesor: 100+ instrukcí a 300+ ř. signálů kapacita řídící ROM 30000+ bitů (~4 KiB) problém je udělat ROM rychlejší než datovou cestu Alternativa k ROM: kombinační obvod mnoho signálů má málo jedniček nebo nul kompaktní reprezentace log. funkcí pro řídící signály Opcode add addi lw beq sw j Jump MemWrite Branch ALUOp MemToReg RegDst RegWrite ALUSrc 30/73 - Procesor

Průběh hodinového cyklu Datová cesta s nepřetržitým čtením Čas nevadí, protože zápisy (PC, RF, DM) jsou nezávislé v rámci cyklu žádné čtení nenásleduje po zápisu čtení instrukce (fetch) nepotřebuje řízení po přečtení instrukce radič dekóduje operační kód na řídící signály pro zbývající část datové cesty při změně obsahu PC (adresa instrukce) se začne zpracovávat další instrukce Čtení z instrukční paměti Čtení registrů (Čtení z řídící ROM) Čtení z datové paměti Zápis do datové paměti Zápis do registrů Zápis do PC 31/73 - Procesor

Výkon jednocyklového počítače Každá instrukce trvá 1 takt (CPI=1) jednocyklový radič = kombinační obvod nebo řídící ROM obecně nižší frekvence hodinového signálu Délka cyklu odpovídá délce nejdelší instrukce v tomto případě lw, ale typicky násobení, dělení či floating-point operace v rozporu s optimize for the common case Datová cesta obsahuje duplicitní prvky instrukční a datová paměť, 2 sčítačky navíc Jde to i lépe? 32/73 - Procesor

Vícecyklová datová cesta

Základní myšlenka Proměnná doba zpracování instrukce jednoduché instrukce by neměly trvat stejně dlouho jako složité nelze měnit periodu hodinového signálu instrukce rozdělena do menších kroků perioda hodinového signálu odpovídá délce kroku v každém taktu proveden 1 krok, počet taktů nutných pro zpracování se pro různé instrukce liší instrukční cyklus vs. strojový cyklus aproximace proměnné délky cyklu Jak dobře to funguje? 34/73 - Procesor

Jednocyklová vs. vícecyklová datová cesta Předpokládejme... většina instrukcí trvá 10ns, ale násobení trvá 40ns a v programech je (v průměru) 10% instrukcí násobení Jednocyklová datová cesta perioda hodin 40ns, CPI=1 při 40ns na instrukci je výkon 25 MIPS Vícecyklová datová cesta perioda hodin 10ns, CPI (90% 1) + (10% 4) 1.3 při (v průměru) 13ns na instrukci je výkon 77 MIPS vícecyklová datová cesta je 3 (o 200%) rychlejší 35/73 - Procesor

Rozdělení instrukcí do kroků Instrukční cyklus načtení instrukce dekódování instrukce a přečtení registrů vykonání instrukce, výpočet adresy, dokončení větvení přístup do paměti a zapsání výsledku dokončení čtení z paměti 36/73 - Procesor

Princip implementace vícecyklové datové cesty PC Address Instruction register Read reg. 1 Read reg. 2 Data 1 A Instruction or Data Memory Write data Memory data register Write register Write data Data 2 Registers B ALU ALUOut rozdělit na části nutné pro vykonání jednotlivých kroků části nutno izolovat pomocí registrů pro mezivýsledky řadič musí provést instrukci datovou cestou instrukce mohou některé kroky přeskočit a skončit dříve 37/73 - Procesor

Krok 1: čtení instrukce Současně probíhá IR <= Memory [PC] přečtení instrukce do instrukčního registru PC <= PC + 4 posun PC na adresu další instrukce změna hodnoty PC nevadí, protože přečtená instrukce je již v instrukčním registru 38/73 - Procesor

Krok 2: dekódování instrukce a čtení registrů Současně probíhá A <= Reg [IR.rs] přečtení obsahu zdrojového registru 1 B <= Reg [IR.rt] přečtení obsahu zdrojového registru 2 ALUOut <= PC + (sign-extend (IR.addr) << 2) výpočet adresy podmíněného skoku pokud instrukce není skok, výsledek se nepoužije Další kroky se liší podle typu instrukce... 39/73 - Procesor

Krok 3: provedení operace/výpočet adresy v paměti Podmíněný skok (konec) if (A == B) then PC <= ALUOut adresu skoku máme v ALUOut z předchozího kroku Nepodmíněný skok (konec) PC <= PC [31:28] + IR [25:0] << 2 Aritmeticko-logická operace ALUOut <= A funct B Přístup do paměti ALUOut <= A + sign-extend (IR [15:0]) výpočet adresy pro přístup do paměti 40/73 - Procesor

Krok 4: přístup do paměti/zápis výsledku Aritmeticko-logická operace (konec) Reg [IR.rd] <= ALUOut výsledek operace zapsán do cílového registru Zápis do paměti (konec) Memory [ALUOut] <= B obsah registru zapsán do paměti Čtení z paměti MDR <= Memory [ALUOut] obsah paměti přečten do pomocného registru 41/73 - Procesor

Krok 5: zápis dat z paměti do registru Čtení z paměti (konec) Reg [IR.rt] <= MDR zápis přečtené hodnoty do registru 42/73 - Procesor

Řízení vícecyklové datové cesty

44/73 - Procesor Implementace vícecyklové datové cesty PC IorD MemWrite IRWrite RegDst RegWrite ALUSrcA 0 X 1 Address Instruction Register Data Write data Memory MemRead [25:21] [20:16] [15:0] Memory data register [15:11] 0 1 1 0 Read reg. 1 Read reg. 2 Write register Write data MemToReg Data 1 Registers Data 2 A B 4 0 1 0 1 2 ALU Zero Result ALU control ALUOp ALUOut 3 [15:0] [5:0] 16 Sign 32 ext. Shift Left 2 ALUSrcB

Řízení vícecyklové datové cesty je sekvenční Zpracování instrukce trvá více taktů řadič musí vědět, který krok zpracování instrukce má provést sekvenční obvod konečný automat nachází se v jednom z množiny možných stavů, stav uchován v paměťovém prvku (registru) kombinační logika určí následující stav, který se do stavového registru zapíše s náběžnou hranou hod. signálu START Instruction fetch/decode and register fetch Memory access instructions R-type instructions Branch instruction Jump instruction 45/73 - Procesor

46/73 - Procesor Instruction fetch/decode and register fetch Instruction Fetch START MemRead ALUSrcA=0 IorD=0 IRWrite ALUSrcB=01 ALUOp=00 PCWrite PCSource=00 Instruction decode/ Register fetch 0 1 ALUSrcA=0 ALUSrcB=11 ALUOp=00 Op='LW' or Op='SW' Op=R-type Op='BEQ' Op='J' Memoryreference FSM R-type FSM Branch FSM Jump FSM

47/73 - Procesor Memory reference FSM Memory address computation From 1 2 ALUSrcA=1 ALUSrcB=10 ALUOp=00 Op='LW' Memory access Op='SW' Memory access 3 MemRead 5 IorD=1 MemWrite IorD=1 Memory read completion step 4 RegWrite MemToReg=1 RegDst=0 To state 0

48/73 - Procesor R-type FSM Execution From 1 6 ALUSrcA=1 ALUSrcB=00 ALUOp=10 R-type completion 7 RegDst=1 MemToReg=0 RegWrite=1 To state 0

49/73 - Procesor Branch FSM Branch completion From 1 8 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond PCSource=01 To state 0

50/73 - Procesor Jump FSM Jump completion From 1 9 PCWrite PCSource=10 To state 0

51/73 - Procesor Konečný automat pro řadič vícecyklové datové cesty START MemRead ALUSrcA=0 IorD=0 IRWrite ALUSrcB=01 ALUOp=00 PCWrite PCSource=00 Instruction Fetch Instruction decode/ Register fetch 0 1 ALUSrcA=0 ALUSrcB=11 ALUOp=00 Op='LW' or Op='SW' Op=R-type Op='BEQ' Op='J' Memory address computation Execution Branch completion Jump completion 2 ALUSrcA=1 ALUSrcB=10 ALUOp=00 6 ALUSrcA=1 ALUSrcB=00 ALUOp=10 8 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond PCSource=01 9 PCWrite PCSource=10 Op='LW' Memory access Op='SW' Memory access R-type completion 3 5 MemRead IorD=1 MemWrite IorD=1 7 RegDst=1 MemToReg=0 RegWrite=1 Memory read completion step 4 RegWrite MemToReg=1 RegDst=0

Výjimky a přerušení Neočekávaná změna toku provádění instrukcí jiná příčina než jump/branch Vnitřní (exception, trap) aritmetické přetečení nedefinovaná instrukce vyvolání služby operačního systému selhání hardware Vnější (interrupt) periferní zařízení selhání hardware 52/73 - Procesor

Podpora výjimek a přerušení Hardware zastavení vykonávání instrukce důležité je zachovat korektní stav procesoru zajistit možnost identifikace příčiny příznakové bity ve speciálním registru případně další upřesňující informace uschovat adresu instrukce, při které výjimka nastala umožňuje pokračovat v běhu (přerušeného) programu skok na adresu obslužné rutiny stejná adresa pro všechny typy výjimek (MIPS) různé adresy pro různé výjimky (Intel) 53/73 - Procesor

54/73 - Procesor Podpora pro výjimku při aritmetickém přetečení Execution From 1 6 ALUSrcA=1 ALUSrcB=00 ALUOp=10 R-type completion Arithmetic overflow 7 RegDst=1 MemToReg=0 RegWrite=1 Not overflow Overflow 11 IntCause=1 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp=01 EPCWrite PCWrite PCSource=11 To state 0

55/73 - Procesor Podpora pro výjimku při neplatné instrukci Undefined Instruction From 1 10 IntCause=0 CauseWrite ALUSrcA=0 ALUSrcB=01 ALUOp=01 EPCWrite PCWRite PCSource=11 To state 0

Obsluha výjimek a přerušení Realizuje software uschování stavu původního výpočtu zjištění příčiny výjimky/přerušení obsluha příslušného typu výjimky může dojít k ukončení vypočtu obnovení stavu původního výpočtu návrat do původního programu pokračovat následující instrukcí restartovat instrukci, která výjimku vyvolala 56/73 - Procesor

Výkon vícecyklové datové cesty Instrukční mix 30% load (5ns), 10% store (5ns) 50% add (4ns), 10% mul (20ns) Jednocyklová datová cesta (takt 20ns, CPI=1) 20ns na instrukci výkon 25 MIPS Jednoduchá vícecyklová datová cesta (takt 5ns) CPI (90% 1) + (10% 4) = 1.3 6.5ns na instrukci výkon 153 MIPS Jemně členěná vícecyklová datová cesta (takt 1ns) CPI (30% 5) + (10% 5) + (50% 4) + (10% 20) = 6 6ns na instrukci výkon 166 MIPS 57/73 - Procesor

Realizace vícecyklového řadiče

Více-cyklový řadič = konečný automat Konečný automat množina platných stavů, vnitřní stav, počáteční stav přechody mezi stavy v závislosti na stavu a vstupech Realizace konečného automatu stav + podmínky = paměť + logika = sekvenční obvod realizace závisí na reprezentaci vnitřního stavu obvodové řešení stavový registr, kombinační logika posuvný řetězec klopných obvodů paměť + jednoduchý sekvenční obvod (místo dekodéru) mikroprogramování, nanoprogramování 59/73 - Procesor

Obvodový řadič Obvodová realizace konečného automatu přechody stavovým diagramem standardní metody sekvenční logiky 60/73 - Procesor

61/73 - Procesor Mikroprogramový řadič Maurice V. Wilkes, 1951

62/73 - Procesor Princip vykonávání mikrokódu

63/73 - Procesor Mikroprogramování na jednoduchém CPU Zdroj: Mark Smotherman - A Brief History of Microprogramming

Architektura (akumulátorová) Registry ACC (akumulátor) Instrukční sada instrukce 8 bitů (2 bity operační kód, 6 bitů adresa) opcode=00: load (ACC from memory) ACC <= memory [address] opcode=01: add (to ACC from memory) ACC <= ACC + memory [address] opcode=10: store (ACC to memory) memory [address] <= ACC opcode=11: branch (to address if ACC zero) if (ACC == 0) PC <= address 64/73 - Procesor

65/73 - Procesor Řídící signály pcincr : PC <= PC + 1 PC_in : PC <= CPU internal bus PC_out : CPU internal bus <= PC IR_in IR_out : IR <= CPU internal bus : CPU internal bus <= address portion of IR MAR_in : MAR <= CPU internal bus MDR_in : MDR <= CPU internal bus MDR_out : CPU internal bus <= MDR read : MDR <= memory[ MAR ] write : memory[ MAR ] <= MDR ACC_in : ACC <= CPU internal bus ACC_out : CPU internal bus <= ACC TEMP_out : CPU internal bus <= TEMP aluadd : addition is selected as the ALU operation

66/73 - Procesor Mikroprogram pro instrukci load

67/73 - Procesor Mikroprogram pro instrukci load fetch T0: PC_out, MAR_in T1: read, pcincr T2: MDR_out, IR_in decode T3: decode opcode in IR execute T4: IR_out(addr part), MAR_in T5: read T6: MDR_out, ACC_in, reset to T0

Realizace řídící logiky: logické funkce ACC_in = (load & T6) + (add & T7) ACC_out = (store & T5) + (add & T6) aluadd = add & T6 TEMP_out = add & T7 IR_in = T2 IR_out = (load & T4) + (add & T4) + (store & T4) + (brz & acceq0 & T4) MAR_in = T0 + (load & T4) + (add & T4) + (store & T4) MDR_in = store & T5 MDR_out = T2 + (load & T6) PC_in = brz & acceq0 & T4 PC_out = T0 pcincr = T1 read = T1 + (load & T5) + (add & T5) write = store & T6 68/73 - Procesor

69/73 - Procesor Realizace řídící logiky: mikrořadič s řídící pamětí

Horizontální formát mikroinstrukcí Přímá reprezentace řídících signálů mikroinstrukce obsahuje přímo hodnoty řídících signálů není třeba dekódovat rychlost libovolná kombinace pružnost velké nároky na prostor 70/73 - Procesor

Vertikální formát mikroinstrukcí Kódovaná reprezentace řídících signálů některé kombinace se vylučují navzájem možno zakódovat menší objem nutno dekódovat zpomalení, zesložitění pevný návrh méně pružné 71/73 - Procesor

Nanoprogramování Základní myšlenka jen některé kombinace řídících signálů dávájí smysl smysluplné kombinace očíslujeme a uložíme do paměti Dvojúrovňová řídící paměť první úroveň použije vertikální formát (tj. čísla smysluplných kombinací) pro indexaci druhé úrovně vybraný řádek ve druhé úrovni je již v horizontálním formátu (tj. bity odpovídají řídícím signálům) Důsledky silná redukce velikosti zpomalení 72/73 - Procesor

73/73 - Procesor Srovnání mikro- a nanoprogramování