AUTO1010 Copyright © 2018 Jarmo T. Alander /updated    

Big Brother Pomodore clock 2

Keskusyksikk? eli suoritin

  CPU
CPU

Central Processing Unit (CPU) on se tietokoneen osa, jota voi kutsua tietokoneen aivoiksi, se suorittaa ohjelmaa ja ohjaa oheislaitteita.

Nyky??n prosessorit (keskusyksik?t) ovat hyvin monimutkaisia varsin pieniss?kin j?rjestelmiss?, koska integrointiaste on korkea ja kaikki hy?dyllinen pyrit??n toteuttamaan yhdelle piipalalle.

T?m?n vuoksi on j?rkev??n nousta tyvest? puuhun eli tarkastellaan keskusyksik?n rakennetta ja toimintaa yksinkertaistetun oppikirjaesimerkin avulla.

Sen j?lkeen on toivottavasti helpompi perehty? todellisiin keskusyksik?ihin, koska niist? l?ytyy samanlaisia tai samankaltaisia osia ja rakenteita.

Wikipedia: Suoritin

L?hteet

  Hill&Peterson
Hill&Peterson

Hill&Peterson, Digital Systems, Hardware Organization and Design, Wiley.

T?m? jakso on koottu useista l?hteist? ml. luennoijan aikojen saatossa oppima.

Oheisen kuvan kirjaa on pitk??n k?ytetty t?m?n jakson pohjana.

Wikipedia: Suoritin

Wikipedia: CPU

CPU:n osat

  CPU
CPU

  8086
8086

CPU:n t?rkeimm?t osat:

Tiedonsiirto

  busses
busses

CPU:n rekisterien keskin?inen ja muiden osien v?linen tiedonsiirto tapahtuu v?ylien avulla.

V?yliin liittyy

Kaikki v?yl??n liitetyt voivat kuunnella eli vastaanottaa tietoa:

v?yl?ll? voidaan siis siirt?? tietoa kerralla useampaan rekisteriin, jos siihen on tarvetta.

Kuva: modernin PC:n tiedonsiirtov?yli?. Lis?tietoja esim. Kari Koivuportaan diplomity?st?.

Rekisterit

  M6800
M6800

Akku / accumulator
CPU:n p??rekisteri? kutsutaan akuksi (engl. accumulator)

Sen historia juontaa aivan ensimm?isiin tietokoneisiin (ENIAC), joissa tieto varastoitiin (accumulate) rekisteriin, jotta sit? ei tarvinnut siirt?? jatkuvasti edestakaisin keskusmuistiin/-sta:

Yleens? laskennan tulos tulee v?litt?m?sti (tai l?hes) jatkolaskennan k?ytt??n.

Nykyisin CPU:ssa on tavallisesti useita saman arvoisia p??rekistereit? (rekisteripankki) tahi osa kaikkein nopeinta muistia on joukko rekistereit?.

Wikipedia: accumulator

Kuva: Pienen Motorola 6800 (8 bitti?) mikroprosessorin ALU:n rekisterit. Huomaa, ett? osoite on 16-bittinen, siksi muistiin osoittavat rekisterit ovat 16-bittisi?, kun akku jakaantuu kahdeksi 8- bittiseksi rekisteriksi (A ja B).

Muita rekistereit?
Muita useimmista CPU:sta l?ytyvi? rekistereit? ovat:

Pinorekisteri / Stack register

  Stack
Stack

Pino sana kuvaa hyvin pinotietorakenteen toimintaa:

t?m? on ns. LIFO eli Last In First Out -periaate eli tuoreimmat tiedot viipyv?t keskim??rin vain lyhyen aikaa pinossa.

Pinorekisteri / Stack register...

  Stack
Stack

Pinoa k?ytet??n niin

taltioinnissa laskennan aikana.

Pinorekisteri / Stack register...

  Stack
Stack

Pino on yksinkertainen tapa

optimoida muistin k?ytt?? ja

pit?? v?litulokset hyv?ss? j?rjestyksess?

yhden ainoan apumuuttujan, pinorekisterin, avulla.

Wikipedia: Stack

Wikipedia: Reverse Polish notation (stack)

Aikoinaan HP:n taskulaskimet olivat kuuluisia pinomekanismistaan, jolloin lausekkeita voidaan laskea ilman sulkuja. K?ytt? tosin vaatii totuttelua, joten nykyisin laskimissa k?ytet??n p??s??nt?isesti tavanomaista "sulutusta" kaavojen laskennan ohjaukseen. HP:n laskimilla pinomoodi on edelleen mahdollista valita, jos sit? on tottunut k?ytt?m??n.

K?skyjen suoritus

  PC
PC

  Z80
Z80

Tarkastellaan lyhyesti tietokoneen rakennetta sen toiminnan n?k?kulmasta.

Edell? olemme tutustuneet tietokoneen keskusyksik?n rakenteeseen, nyt perehdymme lyhyesti keskusyksik?n toimintaan konek?skyjen suorituksen n?k?kulmasta.

Alempi kuva: Zilog Z80 mikroprosessorin (8 bitti?) CPU:n rakenne. Z80 oli aikoinaan hyvin suorittu mikrotietokoneiden mikroprosessori. Nyky??kin niit? viel? on myynniss? on k?yt?ss?. FPGA:lla sen voi helposti toteuttaa, useitakin yhdell? FPGA:lla. www.hitechglobal.com

Konek?skyt

  add instruction
add instruction

Keskusyksikk? on suunniteltu toteuttamaan

joukkoa yksinkertaisia toimintoja, konek?skyj?,

joiden suorituksen tulos on se mit? tietokone "osaa".

Assembler

  add instruction
add instruction

Konek?skyist? muodostuvaa

symbolisessa muodossa esitetty? ohjelmaa kutsutaan my?s

assembler-ohjelmaksi.

Se on helppo k??nt?? automaattisesti (ohjelmalla) biteiksi tietokoneen muistiin.

Wikipedia: Machine code

Konek?skytyyppej?

Konek?skyt voidaan jakaa ryhmiin:

Konek?skytyyppej?...

Konek?skyt voidaan jakaa my?s osoitustavan mukaan

Konek?skyn suoritus

Tietokoneen ohjelma sijaitsee keskusmuistissa,

jonne se on tuotu suorittamista varten.

Nyky??n keskusmuistit ovat niin suuria,

ett? niihin mahtuu lukuisia ohjelmia, joita

k?ytt?j?rjestelm?n ohjauksessa suoritetaan n?enn?isen rinnakkaisesti.

Toki moniydinprosessori my?s suorittaa ohjelmia yht?aikaisestikin.

Konek?skyn suoritus...

Konek?skyn suorituksen vaiheet:

P??s??nt?isesti keskusyksikk? hakee suoritettavia k?skyj? per?kk?isist? muistipaikoista.

Automaatti

  CPU
CPU

  pipeline
pipeline

CPU on automaatti, jossa automaatin teht?v?n? on ohjata k?skyjen suorittamista, joka tapahtuu vaiheittain.

Vaiheet / esim

  CPU
CPU

  pipeline
pipeline

Vaiheiden tarkka m??r? riippuu CPU:n toteutuksesta (arkkitehtuurista)-

Hyppyk?skyt

 

Hyppyk?skyill? saadaan muutoksia yksinkertaiseen

per?kk?iseen suoritusj?rjestykseen.

Tosiasiallisesti ohjelmissa on paljon

silmukoita ja muita hyppyj?, mutta

on kuitenkin varsin todenn?k?ist? ett?

seuraavaksi suoritettava k?sky on seuraavassa muistipaikassa.

Liukuhihna / Pipeline

  TSK3000A Pipeline
TSK3000A Pipeline

Per?kk?isyytt? hy?dynnet??n suoritusta optimoitaessa (liukuhihna / pipeline), sill? voidaan ennakoida, ett? seuraavassa muistipaikassa olevaa k?sky? tarvitaan pian: se voidaan hakea jo hieman ennakkoon odottamaan suoritusta, jotta aikaa s??styisi.

K?skyjen suoritus muistuttaa toimintaa likuhihnalla: k?skyt siirtyv?t vaiheesta toiseen eli useampaa k?sky? suoritetaan rinnakkain ja per?kk?in (kuva).

Kuvassa k?sky jakaantuu 5 osaan, eli maksimissaan suoritetaan 5 k?sky? rinnakkain.

Image: wiki.altium.com

Liukuhihna / hyppyk?sky
Jos tuleekin hyppyk?sky eli seuraava k?sky haetaan jostakin muualta, tulee tarpeelliseksi korjailla ennakointia: peruutetaan kesken olevat k?skyt ja suoritetaan nykyinen loppuun.

K?yt?nn?ss? k??nt?j? voi helpottaa sijoittamalla k?skyj? sopivasti, jos se muuten on mahdollista.

Mm. hyppyk?skyjen takia todellisten keskusyksik?iden k?skyjen suoritus on melko monimutkaista erilaisten erikoistilanteiden ja mahdollisten ennakointien peruutusten takia, joissa joudutaan j?rjestelem??n liukuhihnaa (keskytt?m??n ja uudelleen aloittamaan yms).

Wikipedia: Instruction pipeline

Liukuhihna / FPGA

  pipes
pipes

Liukuhihna on yksi FPGA:n tehon t?rkeimpi? "salaisuuksia":

Jos teht?v? voidaan purkaa keskeytyksett?m?ksi (tai l?hes) liukuhihnaksi on sen suoritus tehokasta.

T?llaisia teht?vi? ovat mm. monet signaalien k?sittelyn teht?v?t, joissa samat operaatiot suoritetaan yh? uudelleen uusille sy?tt?tiedoille.

Liukuhihnan tehokkuus perustuu siihen, ett? laskentaosat on jaettu tasaisesti eli FPGA:n osat ovat koko ajan (tai l?hes) aktiiveja.

Osoitusmoodit

  addressing
addressing

Toinen konek?skyn suoritusta mutkistava asia on monet tavat osoittaa tietoa:

N?ill? on k?ytt?? erilaisten tietorakenteiden k?sittelyss? ja mm. muistin hallinnassa.

Konek?sky ohjelmana

  Fetch-execute cycle
Fetch-execute cycle

Kirjassa on konek?skyn suorittaminen esitetty kulkukaaviona kuten mik? tahansa algoritmi tai ohjelma.

Itse asiassa konek?skyn suorittaminen on analoginen ohjelman suorittamisen kanssa.

"Konek?skynohjelman" rakennuspalikoita ovat rekisterit ja niiden v?liset tiedonsiirrot ja erilaiset laskurien (esim. ohjelmalaskuri) p?ivitykset.

Ohjelman suoritus voidaan kuvata my?s tilakaaviona eli k?skyn suoritus tapahtuu automaatin avulla.

Automaatin tilasiirtym?t tapahtuvat kellon ja erilaisten ohjaussignaalien ohjauksessa.

Mikrokoodi

Jotkut suorittimet kuvataankin n.s mikrokoodina, joka tarkoittaa k?skynsuoritukseen tarvittavien operaatioiden kuvaamista tietokoneohjelman tavoin.

Voidaanpa suoritin toteuttaakin mikrokoodia suorittavana digitaalipiirin?.

VHDL on tietysti mit? mainioin ty?v?line tietokoneen suunnittelussa ja seh?n on ohjelma.

Hierarkinen kone

  hierarchy
hierarchy

Eik? t?ss? viel? kaikki: mikrokoodi ja konek?skytason lis?ksi voidaan tietoj?rjestelm?ss? n?hd? muitakin vastaavia hierarkiatasoja, jolloin tietokone muodostaa hierarkisen koneen, jonka ylimmill? tasoilla on sovellusohjelmia ja alimmilla tasoilla yksinkertaisia bittioperaatioita.

Java-kone?
Esimerkiksi Javan luokka ja sen metodit voidaan n?hd? abstraktina tietokoneena, joka on toteutettu yksinkertaisempien koneiden avulla, lopulta meille jo tutuksi tulleiden bittioperaatioiden avulla, jotka on edelleen toteutettu ver?jien ja kiikkujen avulla.

Javassa alin ohjelmataso on Java -tulkki, joka tulkitsee Javaa varten kehitetty? ns. v?likielt?, jonka suorittaminen muodostaa ns. virtuaalikoneen.

Wikipedia: Java

Wikipedia: Virtuaalikone

Ohjelmointikielet

  dataflow
dataflow

Ohjelmointikielten tarkoituksena on helpottaa ohjelmoijan ty?t?, koska ongelmien ratkaisu konekielitasolla on varsin vaativaa, kun pit?? huolehtia monista kirjanpidollisista teht?vist?, joista tietokoneohjelma (k??nt?j? ja k?ytt?j?rjestelm?) selvi?v?t hyvin (virheett?m?sti).

Kirjanpitoa?
Kirjanpidollisilla ongelmilla tarkoitetaan t?ss? mm. sit? miss? tietoa milloinkin s?ilytet??n (rekisterit, muisti, tilarekisteri) ja miten toiminnot on tehokkainta j?rjest?? (suoritusj?rjestys, mahdollinen rinnakkaisuus).

Ohjelmointikielill? ohjelmoija voi tavallaan mallittaa oman tietokoneensa joka tuntee juuri ongelman ratkaisussa tarvittavat operaatiot (funktiot, metodit, aliohjelmat, yms).

Rinnakkaisuus /SIMD

  SIMD
SIMD

Kun halutaan yh? lis?? tehoa, ja koska yksitt?isen piirin kustannukset ja integrointiaste yh? kasvaa (Mooren laki), on houkuttelevaa k?ytt?? rinnakkaislaskentaa eli useampaa CPU:ta ratkaisemaan annettua teht?v??.

Esim: kuvien k?sittely

  SIMD
SIMD

Erityisesti kuvien k?sittelyn (tietokonegrafiikka mukaan lukien) sovelluksissa on tarvetta hyvin suurien tietom??rien nopeaan k?sittelyyn.

Kuvank?sittelyss? voidaan sama ohjelma kohdistaa yleens? useampaan tietovirtaan (esim. kuvariviin) rinnakkain.

T?ll?in puhutaan ns. SIMD (Single Instruction Multiple Data) j?rjestelm?st?, jossa sama ohjelma ladataan monen prosessointiyksik?n (kuvassa: PU) k?ytt??n.

T?llainen arkkitehtuuri on omiaan vektorimuotoisen tiedon k?sittelyyn ja siksip? n?it? ratkaisuja kutsutaan usein my?s vektoriprosessoreiksi.

Wikipedia: Vector processor

Wikipedia: SIMD

MIMD

  MIMD
MIMD

Yleisin ratkaisu on MIMD (Multiple Instruction Multiple Data), jolloin tietovirtoja k?sitell??n useilla ohjelmilla.

Huomaa, ett? ohjelmia ja tietovirtoja ei tarvitse olla yht? monta (oheinen kuva).

Wikipedia: MIMD

GPU

  GPU
GPU

Nykyaikaisissa (peli)koneissa on tehokas grafiikan laskentaan tarkoitettu prosessori (n?yt?nohjain), joka tyypillisesti on toteutettu tehokkuussyist? rinnakkaislaskentaperiaatteella.

Grafiikkaprosessorit ovat tietyiss? laskentateht?viss? niin tehokkaita, ett? niit? on alettu k?ytt?m??n muuhunkin kuin n?yt?nohjaukseen.

Yksi tunnetuimpia n?yt?nohjainten valmistajia on Matrox.

Wikipedia: GPU

Wikipedia: N?yt?nohjain

FPGA

  FPGAcentral
FPGAcentral

Meille tutuin rinnakkaislaskennan toteutustapa on k?ytt?? FPGA:ta, jolloin on k?ytett?viss? loputon kirjo rinnakkaistamisen keinoja:

Mm. monissa ns. ?lykameroissa on laskenta toteutettu FPGA-tekniikalla.

Wikipedia: PC

Enn?tyksi? / GWR

From: Wikipedia: AMD

"Guinness World Record Achievement

On August 31, 2011, in Austin, Texas, AMD achieved a Guinness World Record for the "Highest frequency of a computer processor": 8.429 GHz.[173] The company ran an 8-core FX-8150 processor with only one active module (two cores), and cooled with liquid helium.[174] The previous record was 8.308 GHz, with an Intel Celeron 352 (one core).

On November 1, 2011, geek.com reported that Andre Yang, an overclocker from Taiwan, used an FX-8150 to set another record: 8.461 GHz.[175]"

MikroTentti / MicroExam

Kooste t?m?n jakson mikrotenttiteht?vist? (ei drillej?):

All MicroExam problems of this file (excl. drills):

(empty)

Palaa valitsemaan seuraava kalvosarja.

Indexes

Index of Image Captions

Table of Contents

  CPU
CPU

  Hill&Peterson
Hill&Peterson

  CPU
CPU

  8086
8086

  busses
busses

  M6800
M6800

  Stack
Stack

  Stack
Stack

  Stack
Stack

  PC
PC

  Z80
Z80

  add instruction
add instruction

  add instruction
add instruction

  CPU
CPU

  pipeline
pipeline

  CPU
CPU

  pipeline
pipeline

  h=
h="300" align="Right"

  TSK3000A Pipeline
TSK3000A Pipeline

  pipes
pipes

  addressing
addressing

  Fetch-execute cycle
Fetch-execute cycle

  hierarchy
hierarchy

  dataflow
dataflow

  SIMD
SIMD

  SIMD
SIMD

  MIMD
MIMD

  GPU
GPU

  FPGAcentral
FPGAcentral



LOPPU / SLUT / The END

tikkUkko.js
Color: Line:Opaq:Filter