SARRERA-IRTEERA AZPISISTEMA...C P U INT p Periferikoaren kodea INTA INT 1 INT 2 INT n INTA n INTA 2...

49
Sarrera-Irteera azpisistema (KAI) 1 SARRERA-IRTEERA AZPISISTEMA Konputagailuen Arkitektura I 4. gaia

Transcript of SARRERA-IRTEERA AZPISISTEMA...C P U INT p Periferikoaren kodea INTA INT 1 INT 2 INT n INTA n INTA 2...

  • Sarrera-Irteera azpisistema (KAI) 1

    SARRERA-IRTEERA

    AZPISISTEMA

    Konputagailuen Arkitektura I

    4. gaia

  • Sarrera-Irteera azpisistema (KAI) 2

    S/I interfasearen deskribapena

    • Helburua

    - Nola komunikatzen den CPU kanpoaldearekiko

    - Nola kontrolatu komunikazio hori

    • Periferikoak

    - Datuak aurkezteko (pantaila, inprimagailua,...)

    - Datuak eskuratzeko (teklatua, sentsoreak,...)

    - Datuak gordetzeko (diskoak, zintak,...)

    - Bestelakoak (motoreak, balbulak,...)

    • Konexioa (bus bakarra, bi bus)

  • Sarrera-Irteera azpisistema (KAI) 3

    S/I interfasearen eskema

    CPU MEM Kp

    Periferikoa

    datuak

    @

    kontrola

  • Sarrera-Irteera azpisistema (KAI) 4

    Kontroladorea

    • Justifikazioaperiferiko mota asko, busetara konexio fisiko desberdinekineta elektronikoki era desberdinetan kontrolatuak

    • Kontroladorea

    Busak eta periferikoaren arteko tartekari elektronikoa da. ML-ren mailatik erregistro batzuk bezala ikusten da. Kontroladoreak lana kentzen dio CPU-ri, honek ez baituzuzenki kontrolatu behar periferikoa

    CPU eta periferikoaren arteko komunikazioakontroladorearen erregistroen bitartez egiten da.

  • Sarrera-Irteera azpisistema (KAI) 5

    S/I-ko kontroladoreen sailkapena

    • Ez-multiplexatua

    – Periferiko bat kontrolatzen du soilik: periferikoazkarrak

    • Multiplexatua

    – Periferiko batzuk kontrolatzen ditu

    – Karakterez multiplexatua: periferiko motelak

    – Blokez multiplexatua: erdi-mailako abiadura duten

    periferikoak

  • Sarrera-Irteera azpisistema (KAI) 6

    S/I-ko kontroladoreen sailkapena

    CPU

    busak

    MEM Kp

    P

    Ez-Multiplexatua

    CPU

    busak

    MEM K

    P2

    Multiplexatua

    P3P1

  • Sarrera-Irteera azpisistema (KAI) 7

    S/I-ko kontroladorearen

    funtzioak

    • CPU-rekin elkarrizketa

    – S/I-ko eragiketak betetzeko eskaerak jasotzen ditu

    – Periferikoen egoerari buruz informatzen du

    • Periferikoaren kontrola

    – CPU-k eskatutakoa bete dezan

    • Periferikoa eta CPU-ren arteko transferentzia

    errazten du

  • Sarrera-Irteera azpisistema (KAI) 8

    S/I-ko kontroladorearen ikuspegi

    funtzionala

    CPU

    datuak

    @

    kontrola

    M. L.-tik ikustezina

    Periferikoarekin

    interfasea

    kontroladorea

    Kontrola

    dore

    arek

    in

    inte

    rfas

    ea

    Kan

    poal

    dea

    rekin

    inte

    rfas

    ea

    periferikoa

    KONTROLA

    DATUAK

    EGOERA

    MEMORIA

  • Sarrera-Irteera azpisistema (KAI) 9

    S/I-ko kontroladorearen erregistroak

    • Egoera-erregistroa

    – Egoerari buruzko informazioa: tekla bat sakatu den,

    diskoan idazketa bukatu den etab.

    – CPU-k irakurtzen du informazio hau

    • Kontrol-erregistroa– Kontrol-informazioa: zein eragiketa bete behar den

    (r/w), periferikoaren lana egiteko era etab.

    – CPU-k idazten du informazio hau

    • Datu-erregistroa– Periferikoa eta CPU-ren artean trukatzen den

    informazioa

  • Sarrera-Irteera azpisistema (KAI) 10

    S/I-ko interfasearen eskema

    �Nola atzitzen dira kontroladorearen erregistroak?

    • S/I memorian mapeatuta

    • S/I memorian ez mapeatuta

    CPU MEM Kp

    Periferikoa

    datuak

    @

    kontrola

  • Sarrera-Irteera azpisistema (KAI) 11

    Memoria-mapa

    S/I memorian mapeatuta

    S/I

    R A M

    R O M

    S/I-ko

    erregistroak

    0000h

    3FFFh4000h

    BFFFhC000h

    FFFFh

    32 K

    16 K

    64 K

    Memoria-mapa

  • Sarrera-Irteera azpisistema (KAI) 12

    S/I memorian mapeatuta: adibidea

    16

    7

    RD/WR

    DATUAK

    @

    EgoeraKontrolaDatuak

    OEOE OERD/WRRAM

    6

    CS

    CS = A6

    RD/WR@

    RD/WR

    OE = A6 A1 A0OE = A6 A1 A0 OE = A6 A1 A0

    RD/WR

    16 16 1616

    6 6 66 5..0 1 0 0 01 1

    RAM � 0000000 Datu-erreg. � 1000001Kontrol-erreg. � 1000011Egoera-erreg. � 1000010

    0xxxxxx 1000001 1000011 1000010

  • Sarrera-Irteera azpisistema (KAI) 13

    S/I memorian mapeatuta

    • Abantailak

    – Erregistroen atzipena: gainontzeko memoriarako

    erabiltzen diren agindu eta helbideratze-modu berdinak

    – CPU-k ez du desberdindu behar memoriako eta S/I-ko

    erregistroen atzipenen artean

    • Desabantailak

    – Memoriako helbideratze-espazioa txikiagoa da

    – Zaila da kontrolatzen S/I-ko erregistroak ez atzitzea

    erabiltzailearen programetatik

    � Modu berezia (SE) S/I-ko atzipenetarako

  • Sarrera-Irteera azpisistema (KAI) 14

    Memoria-mapa ↔ S/I-ko mapa

    R A M

    R O M

    IO/M=0

    MEMORIA-MAPA S/I-ko MAPA

    Erregistroak

    S/I

    0000h

    7FFFh8000h

    FFFFh

    00h

    FFh

    RAM � IO/M * A15 S/I Erreg. � IO/M

    ROM � IO/M * A15

  • Sarrera-Irteera azpisistema (KAI) 15

    S/I bereiztuta edo memorian ez mapeatuta:

    adibidea

    16

    7

    RD/WR

    DATUAK

    @

    EgoeraKontrolaDatuak

    OEOE OERD/WRRAM

    7

    CS RD/WR@

    OE = IO/M A1 A0OE = IO/M A1 A0 OE = IO/M A1 A0

    [0000001] [0000011] [0000010]

    16 16 1616

    IO/M

    CS = IO/M

    [xxxxxxx]

    1 0 0 01 1

    RAM � 0000000 Datu-err. � 0000001Kontrol-err. � 0000011

    in/out aginduak Egoera-err. � 0000010

    RD/WR RD/WR

  • Sarrera-Irteera azpisistema (KAI) 16

    S/I memorian ez mapeatuta

    • Abantailak

    – Ez da memoria-espaziorik galtzen

    – S/I-ko erregistroen atzipena kontrolatzea errazagoa da

    � in eta out modu berezian soilik (SE)

    • Desabantailak

    – Agindu berriak: in eta out

    – Kontrol-seinale berria busean

    [Ariketa_Mapak.pdf]

  • Sarrera-Irteera azpisistema (KAI) 17

    S/I-ko eragiketen sinkronizazioa

    • Nola sinkronizatzen da CPU S/I-ko gailuekin? Nola

    detektatzen du gailua prest dagoela eragiketa bat

    hasteko?

    • 2 aukera

    – Inkesta bidezko sinkronizazioa: CPU-k uneoro aztertzen

    du kontroladorearen egoera-erregistroa

    – Etenen bidezko sinkronizazioa: kontroladoreak adierazten

    dio CPU-ri prest dagoela eten baten bitartez

  • Sarrera-Irteera azpisistema (KAI) 18

    Inkesta bidezko S/I

    • Egoera bitarteko inkesta � uneoro aztertzen da

    kontroladorearen egoera-erregistroa

    • 2 aukera

    – Inkesta jarraia (etengabekoa):

    while (egoera_erregistroa_irakurri= =EZ_PREST) NOP;

    S/I_eragiketak_bete;

    – Inkesta periodikoa (aldizkakoa):

    while (egoera_erregistroa_irakurri= =EZ_PREST)

    { beste eragiketak; }

    S/I_eragiketak_bete;

  • Sarrera-Irteera azpisistema (KAI) 19

    Etenen bidezko S/I

    • Etena: prozesadorearen aditasuna behar duen ez-ohiko

    gertaera

    • Gertaera asinkronoak dira: kontroladoreak CPU eteten

    du transferentzia hasteko prest dagoenean

    • Abantaila:

    – CPU-k ez du denborarik galtzen inkesta egiten eta beste lanak

    egin ditzake

    • Desabantaila:

    – CPU konplikatuagoa da (algoritmoa konplexuagoa)

  • Sarrera-Irteera azpisistema (KAI) 20

    Etenen bidezko S/I: faseak

    • Eten-eskaeraren detekzioa

    • Etendako programaren egoera gorde

    • Etenari dagokion zerbitzu-errutina identifikatu

    (gailuaren araberakoa)

    • Zerbitzu-errutina exekutatu

    � Errutina asinkronoa: ez du programa nagusiak deitzen

    • Etendako programaren egoera berreskuratu

    (exekuzioa)

  • Sarrera-Irteera azpisistema (KAI) 21

    Aplikazioa

    Zerbitzu-

    errutina

    MEMORIA

    CPU

    PC

    Kp

    Per.

    INT

    Busak (@, DATU, KONTROL)

    Aplikazioa

    .

    .

    .

    .

    .

    .

    .

    .

    .

    INT

    Zerbitzu-errutina

    Etenetik itzuli

    Etenen bidezko S/I

  • Sarrera-Irteera azpisistema (KAI) 22

    Etenaren detekzioa

    • CPU-k lerro bat edo gehiago ditu gailuek eten-eskaera

    bidali ahal izateko

    � INT: kontrol-unitatearen sarrera

    • CPU-k eten-eskaera seinalearen balioa aztertzen du

    – Aginduaren exekuzio-faseren batean

    • Etenaren adierazlea (Interrupt Flag, IF):

    – IF = 0 � etenak galeraziak/maskaratuak (CLI agindua 80x86)

    – IF = 1 � etenak baimenduak (STI agindua 80x86)

    • Maskaratu ezin diren etenak (Non Maskable Interrupt, NMI)

  • Sarrera-Irteera azpisistema (KAI) 23

    Etenen detekzioa

    INT

    CPU

    1K

    2K

    nK

    IFPSW

    KU.INT *

    Int1

    Int2

    Int n

    • Eten-adierazlea (IF):

    – CPU-k eten bat tratatzerakoan: IF = 0

    – Tratamendua bukatzerakoan: IF = 1

    � maila bakarreko etenak

  • Sarrera-Irteera azpisistema (KAI) 24

    Etenen detekzioa eta maskaratzea

    INT

    CPU

    1K

    2K

    nK

    IF

    PSW

    U.C.

    INT *

    INT

    INT

    1

    2

    n

    MáscaraMaskara

    KU

  • Sarrera-Irteera azpisistema (KAI) 25

    Programaren egoera gorde

    • CPU-k programaren exekuzioa eteten du etena

    tratatzerakoan eta etenaren tratamendua bete eta gero

    berreskuratzen du

    • Etendako programari buruzko informazioa gorde behar da:

    – Itzul-helbidea � exekutatu behar den hurrengo aginduaren PC-a

    – Egoera-hitza, PSW � adierazleak etab.

    • Zerbitzu-errutinak erabiltzen dituen erregistroen edukia

    gordetzen du

    • Non gordeko da informazio hau? ���� PILA

  • Sarrera-Irteera azpisistema (KAI) 26

    Etenaren identifikazioa

    • arazoak

    – Nola jakin zeinek eten duen?

    – Gailu batek baino gehiagok eteten badu INT seinale bera

    erabiliz, zein tratatu?

    • aukerak

    – Software bidezko identifikazioa (adibidez, MC68000)

    – Hardware bidezko identifikazioa

  • Sarrera-Irteera azpisistema (KAI) 27

    Software bidezko identifikazioa• INT seinalea detektatzerakoan, IF=1 bada, CPU-k

    zerbitzu-errutina orokorra exekutatzen du. Honek

    inkesta bitartez detektatuko du zein gailuk eten duen

    for (i=0;i

  • Sarrera-Irteera azpisistema (KAI) 28

    Hardware bidezko identifikazioa

    • Gailua bera da identifikatzen dena

    • Kontroladoreak CPU-ri bidaltzen dio (hiru aukera):

    – zerbitzu-errutinaren hasierako helbidea, edo

    – agindu baten kodea (jauzi-agindua) CPU-k exekuta dezan.

    Horren bitartez zerbitzu-errutinaren exekuzioa abiaraziko da, edo

    – identifikadore bat, zeinen bitartez CPU-k taula bat atzituko duen,

    bertatik lortuz exekutatuko den zerbitzu-errutinaren helbidea

    (eten-bektorea, i80x86)

    • CPU-k eten-eskaera onartzen duela adierazteko INTA

    seinalea aktibatuko dio periferikoaren kontroladoreari

  • Sarrera-Irteera azpisistema (KAI) 29

    INT

    Kontroladore

    1

    INT1

    Kontroladore

    2

    INT2

    Kontroladore

    n

    INTn

    Busa (@, Dat, Kontrol)

    CPU

    INTA

    Hardware bidezko identifikazioa

  • Sarrera-Irteera azpisistema (KAI) 30

    Aldibereko etenak

    • Periferiko batek baino gehiagok eteten badu INT lerro

    berdinetik, nori kasu egin?

    • Aukerak

    1. Lehentasunezko kodegailua:

    + kodegailuak sortuko ditu, bai INT seinalea, baita lehentasun

    altuena duen periferikoaren kodea ere

    + deskodegailu batek aurreko kodearen bitartez INTA

    seinalea bidaliko dio dagokion kontroladoreari

  • Sarrera-Irteera azpisistema (KAI) 31

    Aldibereko etenen identifikazioa:

    Lehentasunezko kodegailua

    Busa (@, Dat, Kontrol)

    Lehentasu-nezko

    kodegailua

    Kontroladore

    1

    Kontroladore

    2

    Kontroladore

    n

    deskodegailua

    C P U

    INT

    p

    Periferikoarenkodea

    INTA

    INT1

    INT2

    INTn

    INTA n

    INTA2

    INTA1

  • Sarrera-Irteera azpisistema (KAI) 32

    Aldibereko etenak

    • aukerak

    2. Daisy-chain edo margarita-katea:

    + CPU-k INTA seinalea aktibatzen du

    + kontroladoreak INTA seinalea detektatzerakoan

    + berak ez badu eten-eskaera bidali, INTA seinalea

    aktibatzen du hurrengo kontroladorearentzat (horrela

    jarraitzen da eskaera egin duen kontroladorera iritsi

    arte)

    + etena bidali badu, ez dio pasako INTA seinalea

    hurrengo kontroladoreari eta CPU-ri bidaliko dio etena

    tratatzeko beharrezkoa den informazioa

    + CPU-tik gertuen dauden kontroladoreek lehentasun altuena

    dute

  • Sarrera-Irteera azpisistema (KAI) 33

    Kontroladore

    n

    Kontroladore

    2

    Kontroladore

    1

    Bus (@, Dat, kontrol)

    CPU

    INTA

    INT

    INTAinINTAin INTAoutINTAout

    Aldibereko etenen identifikazioa:

    Daisy-Chain edo margarita-katea

  • Sarrera-Irteera azpisistema (KAI) 34

    Maila anitzeko etenak

    • CPU eten bati dagokion zerbitzu-errutina exekutatzen ari

    denean beste eten-eskaera bat irits daiteke

    + exekutatzen ari den zerbitzu-errutina uzten da eten berriari

    kasu egiteko

    + IF ez da automatikoki desaktibatzen eten bat tratatzerakoan

    • Lehentasuna:

    + n lehentasuna duen periferiko baten etena tratatuko da, etenak

    baimenduta baldin badaude eta une horretan ez bada ari

    tratatzen beste eten bat lehentasun altuagokoa

  • Sarrera-Irteera azpisistema (KAI) 35

    Maila anitzeko etenak

    Aplikazioa

    .

    .

    .

    .

    .

    .

    .

    .

    .

    INTx

    X zerbitzu-errutina

    x etenetik itzuli

    INTy

    y zerbitzu-errutina

    y etenetik itzuli

  • Sarrera-Irteera azpisistema (KAI) 36

    Maila anitzeko etenak:

    Lehentasunezko kodegailua

    Leh

    en

    t asu

    -n

    ezko

    kod

    eg

    ai lu

    a

    Kontroladore

    1

    Kontroladore

    2

    Kontroladore

    n

    desk

    C P U

    INT*

    pPeriferikoaren

    kodea

    INTA

    BUSA (@, Datu, Kontrol)

    Lehentasunmaila

    IF

    BKonp.A A>B

    PSW

  • Sarrera-Irteera azpisistema (KAI) 37

    Maila anitzeko etenak:

    Daisy-Chain edo margarita-katea

    Kontroladore

    n

    Kontroladore

    2

    Kontroladore

    1

    Busa (@, Datu, Kontrol)

    CPU

    INTA

    INT

    INTAin

    INTAout

    S

    INTA in

    + Ki-k S seinalea desaktibatzen du (S=0) Ki baino lehentasun txikiagoa

    duten periferikoen maila anitzeko etenak gerta ez daitezen

    + Ki-k S aktibatzen du (S=1) bere etenaren tratamendua bukatzen

    denean

    SS INTINT

  • Sarrera-Irteera azpisistema (KAI) 38

    Eten-kontroladorea

    • CPU eta S/I-ko periferikoen kontroladoreen arteko

    tartekaria da

    • Azaldutako guztia kudeatzen duen zirkuitua:

    + CPU eta periferikoaren kontroladorearen arteko

    komunikazioa kudeatzen du

    + lehentasunen arabera zein periferiko zerbitzatu behar den

    erabakitzen du

    + maila anitzeko etenak kudeatzen ditu, ...

    • Adibidez, i80x86-ko eten-kontroladorea: i8259

    [Laborategiko atala]

  • Sarrera-Irteera azpisistema (KAI) 39

    DMA bidezko S/I: Direct Memory Access / Memoriako zuzeneko atzipena

    • Arrazoia:

    + gailu batetatik (adibidez, disketea) datu-kopuru handien

    transferentzia memoriako helbide kontsekutiboetara

    + DMA gabe, CPU etengabe etengo litzateke (adibidez,

    diskotik transferitu behar den karaktere bakoitzeko)

    • Konponbidea: DMA kontroladorea

    + CPU-k maiz egin beharko lukeen lan sinple eta errepikakor

    bat ez egiteko erabiltzen den zirkuitu berezia

    + Prozesadorearen erregistro orokorrak erabili gabe zuzenean

    memoria atzitu dezakeen zirkuitua

  • Sarrera-Irteera azpisistema (KAI) 40

    DMA bidezko

    sarrera/irteera

    CPU M

    Kp

    Perif.

    A

    @

    DAT

    KONT

    CPU M

    AKp

    Perif.

    KDMA

    @

    DATKONT

    DMA gabe

    DMA erabiliz

  • Sarrera-Irteera azpisistema (KAI) 41

    DMA bidezko

    sarrera/irteeraMemoria

    CPU KDMA

    K1 K2

    P1 P2

    K3

    P3

    Portu anitzeko memoria

    CPU M

    K1 K2 K3

    P1 P2 P3

    KDMA

    Portu bakarreko memoria

    CPU eta KDMA

    arteko sinkonizazioa

    busaren erabileran

  • Sarrera-Irteera azpisistema (KAI) 42

    DMA kontroladorea

    • Helbide-erregistroa: transferitu behar den informazioaren irakurketa/idazketa helbidea

    • Datu-kopurua duen erregistroa: transferitzeko geratzen den datu-kopurua gordetzen duen kontagailua

    • Kontrol-erregistroa: kontrol-informazioa (irakurketa/idazketa, sinkronizazio modua bukatzean, etab.)

    • Egoera-erregistroa: beste edozein kontroladoretan egoera-erregistro batek duen funtzioa

  • Sarrera-Irteera azpisistema (KAI) 43

    DMAR Direct Memory Access Request Memoriako zuzeneko atzipenareneskaera

    DMAG Direct Memory AccessGrant Memoriako zuzeneko atzipenaonartua

    HELBIDEA

    DATU-KOP

    KONTROLA

    EGOERA

    BR DMAR

    DMAG

    BG

    IRQ

    KDMA

    BR Bus Request BUS-a erabiltzeko eskaera

    BG Bus Grant BUS eskaera onartzen da

    IRQ Interruption ReQuest Eten-eskaera

    DMA

    kontroladorea

    Busaren

    sinkronizazioa

    Periferikoaren

    sinkronizazioa

    Eten

    kontroladorera

    doan seinalea

  • Sarrera-Irteera azpisistema (KAI) 44

    DMA bidezko sarrera/irteera:

    funtzionamendua

    • Aplikazioa (CPU): periferikoa eta bere DMA kontroladorea programatzen ditu (@, datu-kopurua,

    irakurketa/idazketa)

    • Periferikoa: datu bat bidaltzeko edo jasotzeko prest dagoen bakoitzean KDMA-ri adierazten dio

    • KDMA: datuaren transferentzia egin eta CPU-rekin busaren erabilera sinkronizatzen du

    • Datuen transferentzia bukatzean, KDMA CPU-rekin

    sinkronizatzen da: inkesta edo etena

    ���� S/I eragiketa bukatzean bakarrik eteten da CPU

  • Sarrera-Irteera azpisistema (KAI) 45

    DMA bidezko sarrera/irteera

    M CPU KDMA

    BR

    BG

    IRQ

    INTAINTR

    K_ETEN.

    DMAR

    Perif.

    KPER

    DMAG

    DAT@

    KONT

    ��

    � �

  • Sarrera-Irteera azpisistema (KAI) 46

    Transferentzia hasi (CPU)

    – KDMA programatu

    • Helbidea

    • Datu-kopurua

    • Eragiketaren norantza: Periferikoa � Memoria Memoria � Periferikoa

    • Eten edo ez, bukatzean

    • Beste seinale batzuk (inkrementatu/dekrementatu)

    – Kper programatu (periferikoaren kontroladorea)

    DMA bidezko sarrera/irteera

  • Sarrera-Irteera azpisistema (KAI) 47

    Transferentzia (KDMA)

    – Kper �DMAR (DMA eskaera) �

    – KDMA �BR (Busak erabiltzeko eskaera) �

    – CPU �BG (Busen erabilera onartua) �

    – KDMA-k datu edo datuen transferentzia egiten du:

    • Helbidea helbide-busean

    • (R/W) seinalea aktibatu

    • DMAG � aktibatu � Kper-ek � datu-busa atzitu

    – Kper-ek DMAR desaktibatu

    – DMA-k BR desaktibatu

    DMA bidezko sarrera/irteera

  • Sarrera-Irteera azpisistema (KAI) 48

    Ziklo-lapurketa bidezko transferentzia

    + KDMA-k noizbehinka CPU-ri ziklo bat lapurtzen dio

    memoria atzitzeko

    + CPU-ren eraginkortasuna jaisten da periferikoaren

    abiadura handia bada

    Blokekako transferentzia

    + KDMA-k BG seinalea jasotzen duenean, ez du busaren

    kontrola uzten bloke osoaren transferentzia osatzen duen

    arte

    + gailu azkarrekin erabiltzeko egokia

    DMA bidezko sarrera/irteera

  • Sarrera-Irteera azpisistema (KAI) 49

    Transferentzia bukatu

    – KDMA �CPU sinkronizatu S/I eragiketaren bukaera

    adierazteko

    – Inkesta jarraiaren bidez: CPU-k KDMA-ren egoera-

    erregistroa aztertzen du� ez da interesgarria!!!!

    – Etenen bidez: KDMA-k CPU eteten du

    KDMA-ren egoera-erregistroa irakurriBaldin (ez da ondo atera)

    KDMA berriro programatuKper berriro programatu

    Bestela ............................

    DMA bidezko sarrera/irteera