Rodomi pranešimai su žymėmis 9. Tiesioginiai mainai. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis 9. Tiesioginiai mainai. Rodyti visus pranešimus

2013 m. sausio 10 d., ketvirtadienis

11.3. Konvejeriai superskaliariniuose procesoriuose



Šiuolaikiniai CPU turi ne vieną konvejerį, todėl vienu metu gali apdoroti keletą komandų. Pavyzdžiui, “Pentium 4” ir “Athlon XP” per vieną sinchronizatoriaus taktą gali iššifruoti apie 2,5 komandos. Procesoriuje “Pentium 4” yra keli labai ilgi konvejeriai, leidžiantys procesoriui vienu metu ir skirtingomis stadijomis apdoroti 126 komandas. Todėl CPU gali padaryti daugiau darbo, kai lygiagrečiai veikia keli konvejeriai:

Galima būtų manyti, kad “Intel” ir “AMD” inžinieriai viename CPU gali sukurti daugiau lygiagrečių konvejerių ir darbas tikriausiai turėtų padvigubėti? Deja, tai nėra taip paprasta. Atminties sistema dar nėra pajėgi vienu metu daugybės konvejerių prikimšti duomenų. Net ir šiuolaikiniuose konvejeriuose išeikvojama gausybė taktų. Tiesiog procesoriaus branduolys duomenų efektyviai nesunaudoja, nes jie tiekiami nepakankamai sparčiai.
Kita problema su keliais konvejeriais iškyla tada, kai procesorius gali lygiagrečiai iššifruoti keletą komandų – kiekvieną atskiriame konvejeryje. Kartais neįmanoma išvengti neteisingai išrinktų komandų (netinkama eilės tvarka). Tai vadinama klaidingu numatymu, kuris išeikvoja daugybę laikmačio taktų, nes turi būti išrinkta kita komanda, turinti pereiti per konvejerį.
“Intel” mėgino išspręsti šią problemą su šakos numatymo elementu, kuris nuolatos bando atspėti teisingą komandų eilės tvarką.

10.2. Segmentavimas



Esant segmentavimui programos yra sudalomos į nepriklausomus segmentus, kurie yra laikomi nesurištose adresinėse srityse.


Operacinė sistema

Kitos programos

Programa A, Segmentas 0

Kitos programos

Programa A, Segmentas 1

Kitos programos

Programa A, Segmentas 2

Kitos programos


Segmentavimas reikalauja papildomo žingsnio, kai yra atliekama adreso transliacija. Kai programa yra įkeliama į atmintį, operacinė sistema sukuria segmentų lentelę, kurioje yra nurodomas (absoliutus) kiekvieno programos segmento pradžios adresas. (10.6 pav.). (Kiekvienai aktyviai programai yra atskira segmentų lentelė). Vėliau, kai operacinė sistema pradeda vykdyti šią programą, jos segmentų lentelės adresas yra įkeliamas į specialų registrą.
Programos vykdymo metu  adresai turi būti transliuojami iš santykinių į absoliučius, kadangi programuotojai naudoja santykinius adresus, o kompiliatoriai juos transliuoja į bazę plius poslinkis. Vykdant komandą (instrukciją), komandos operandų adresai yra gaunami prie bazinio registro turinio sumuojant poslinkį. Tradiciškai tokiu būdu gautas adresas vadinamas absoliučiu adresu. Esant segmentacijai, adresas susideda iš dviejų dalių: segmento numerio bei poslinkio (10.6 pav.). Konvertuojant tokį adresą į absoliutų, atliekami šie veiksmai:
1.      Tikrinamas specialus registras ieškant programos segmentų lentelės.
2.      Iš adreso paimama jo dalis – segmento nr.
3.      Naudojamas segmento nr. paieškai segmentų lentelėje
4.      Randamas segmento pradžios adresas, jis yra pridedamas prie poslinkio ir taip gaunamas absoliutus adresas.
Šis procesas vadinamas dinamine adreso transliacija.

9.4. Temos apibendrinimas



1.      Tiesioginiai mainai- tai programiškai valdomi duomenų mainai tarp pagrindinės atmintinės ir išorinių įrengimų aplenkiant procesorių.
2.      Tiesioginiams mainams  būtina turėti specializuotą valdiklį,  kuris perimtų iš procesoriaus ne itin sudėtingas mainų valdymo funkcijas. 
3.      Nors DMA sustabdo procesorių (cycle stealing) duomenų siuntimo momentu, tai nėra pertraukimas, nes programos kontekstas nesaugojamas ir procesorius nieko neapdoroja. 
4.      Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas.
5.      Tiesioginių mainų valdiklyje realizuotas daugelio kanalų aptarnavimo vienu metu  galimybės.
6.  Kai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės.
7.      Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi.
8.      Tiesioginių mainų valdiklis bet kuriuo metu gali būti  vienoje iš 3-jų būsenų: nedarbo būsena, programavimo būsena, mainų būsena.
9.      Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje.
10.  Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys.
11.  Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3)  - perduodamų duomenų masyvų baitų kiekis.
12.  Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam.
13.  Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo.
14.  Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų  perdavimas tarp pagrindinės atminties iš diskų ar juostų.

9.2. Duomenų kanalai

Duomenų kanalai – tai naujos kartos įvesties – išvesties procesoriai. Per juos tiesiogiai vyksta duomenų perdavimas tarp pagrindinės atminties iš diskų ar juostų. Esant tinkamai programinei įrangai, tuos perdavimus kontroliuoja tik techninė įranga. Tiesioginių mainų su atmintimi kanalo (8237A) sandarai

Registrai:
  • CR – Command Register CAR – Current Address Register
  • SR – Status Register BAR – Basic Address Register
  • RR – Request Register CWR – Current Word Count Register
  • MASK – Mask Register WCR – Basic Word Count Register

Darbo režimai:
  •  laukimo ciklai (Idle Cycle)
  •  pavienio perdavimo režimas (Single Tansfer Mode)
  •  blokų perdavimo režimas (Block Tansfer Mode)
  •  perdavimo pagal pareikalavimą režimas (Demand Tansfer Mode)

9.1. Tiesioginių mainų valdiklis


Tiesioginiams mainams valdyti mikroprocesorinėje sistemoje naudojamas DMA valdiklis arba kanalas, kuris perima iš procesoriaus kreipties į atmintinę adreso didinimo, bei ciklų skaitiklio parodymo mažinimo kiekviename cikle funkcijas. Be to, kas itin svarbu, jame realizuotas daugelio kanalų aptarnavimo vienu metu  galimybėsKai keitimasis duomenimis tarp operatyvinės atmintinės ir išorinio įrenginio realizuojama tiesioginių mainų principu, mikroprocesorius išduoda signalą HLDA. Jis perveda duomenų ir adreso linijas į trečią būseną, tuo būdu atsiribodamas nuo sisteminės magistralės. Vedančiuoju moduliu tampa tiesioginių mainų valdiklis, kuris ir organizuoja duomenų perdavimą viena ar kita kryptimi.
Belieka išsiaiškinti, kaip dirba tiesioginių mainų valdikliai. 
Valdiklis turi 4 nepriklausomus kanalus, gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų.

Tiesioginių mainų valdiklis bet kuriuo metu gali būti  vienoje iš 3-jų būsenų:
Ø    nedarbo būsena,
Ø    programavimo būsena,
Ø    mainų būsena.
Valdiklis yra nedarbo būsenoje, kai į CS siunčiamas aukšto poliarumo signalas. Tuomet jo duomenų išvadai yra "z" būsenoje. Jei valdikliui esant šioje būsenoje perduodamas pakankamos trukmės signalas RESET, tai pasibaigus CS signalo aukštam lygiui, valdiklis pervedamas į programavimo režimą.
Kai valdiklis yra programavimo būsenoje, komandomis OUT į jo valdančiojo žodžio registrą, adreso registrą bei ciklų skaitiklius įvedami pradiniai duomenys. Valdantysis žodis, apsprendžiantis darbo režimą ir duomenų mainų kryptį (rašymas/ skaitymas), o į adreso registrus (AR0-AR3) įvedami duomenų masyvų pradžios adresai operatyviojoje atmintinėje, į ciklų skaitiklius (CSR0-CSR3)  - perduodamų duomenų masyvų baitų kiekis.
Jeigu programuojant į valdančio žodžio skiltį, D4-D7 įrašyti nuliai, tai valdiklis dirbs pagrindiniu mainų režimu. TM reikalavimo signalai aptarnaujami prioriteto tvarka. Aukščiausias prioritetas suteikiamas nuliniam kanalui, o žemiausias- trečiajam.
Aptarsime I8257 valdiklio funkcionavimą valdiklis turi 4 nepriklausomus kanalus,  gali organizuoti tiesioginius mainus tarp pagrindinės atmintinės ir 4-ių periferinių įtaisų.


Valdiklio išvadai:
CS\ -kristalų išrinkimas,
Ø  I/OR, I/OW  -               įvesties/išvesties valdymas,
Ø  HLDA  -                        iš mikroprocesoriaus   pertraukties patvirtinimas,
Ø  DRQ0-DRQ3  -              tiesioginių mainų reikalavimo signalai, priimami iš                 atskirų kanalų,
Ø  D0-D7 -                      duomenų magistralės 2-krypčiai išvadai turintys "z" būseną,
Ø  HRQ -                       magistralės valdymo signalas siunčiamas mikroprocesoriui,
Ø  DACK0-DACK3 -    tiesioginių mainų patvirtinimo signalai.
Valdiklis gali aptarnauti 4 kanalus, tačiau konkrečiu laiko momentu vyksta pasikeitimas informacija tik tarp valdiklio ir vieno kanalo.
Gavus tiesioginių mainų pareikalavimo signalą iš kurio tai kanalo, jo adreso ir ciklų skaičiaus duomenys perkeliami į kanalo skaitiklius. Perdavus (priėmimus) vieną duomenų porciją kanalu į išorinį įrenginį, sumažinamas ciklų skaitiklio ir padidinamas adreso registro parodymas ir šių skaitiklių kodai grąžinami į atitinkamo kanalo registrus.
Po to aptarnaujami kiti kanalai.  Prie aptariamo kanalo  aptarnavimo grįžtama tik tuomet, kai gaunamas signalas iš įrenginio apie jo pakartotinį pasiruošimą duomenų mainams. Tuomet  bus atstatomos to kanalo adreso skaitiklio ir ciklų skaitiklio reikšmės ir bus įvykdytas kitos duomenų porcijos perdavimas (priėmimas).

Etiketės