TKT-3201 Tietokonearkkitehtuuri 2 Luku 1: Tietokoneen abstraktiot ja tekniikka
#2 Tietokone Henkilökohtainen tietokone (Personal Computer, Desktop, Laptop) Suunniteltu tuottamaan hyvä suorituskyky yhdelle käyttäjälle huokeaan hintaan yleensä käyttäen kolmannen osapuolen ohjelmistoja Palvelin (Server) Ajetaan laajempia ohjelmistoja useamman samanaikaisen käyttäjän kesken. Käyttö verkon kautta. Painotus luetettavuudessa ja turvallisuudessa Supertietokone (Supercomputer) Tehokas ja kallis palvein kostuen sadoista tai tuhansista prosessoreista, useista teratavuista muistia, petatavuista tallennuskapasiteettia. Käyttö tieteelliseen laskentaan ja tekniikan sovelluksiin Sulautettu tietokone (Embedded Computer) Laitteen sisässä oleva tietokone, joka tyypillisesti suorittaa etukäteen määrättyä sovellusta
#3 Tietokone
#4 Prosessorimarkkinoista
Sulautetut prosessorit Suurin tietokonetejärjestelmien luokka Laajimmat sovellusalueet Usein minimaaliset suorituskykyvaatimukset Tiukat kustannusrajoitteet Tiukat tehonkulutusrajoitteet Usein sovellukset eivät kestä vikaantumista tai virheitä #5
Ohjelman sisältö sovellusohjelmisto järjestelmäohjelmisto #6 Järjestelmäohjelmisto (System Software) laitteisto Käyttöjärjestelmä (Operating System) hallinnoiva ohjelmisto, joka liittää käyttäjän ohjelman laitteistoon (esim. Linux, Windows, MacOS) Huolehtii perusrutiineista tiedon syöttöön ja tulostamiseen Allokoi muistia ja tallennusresursseja Suojaa useamman sovelluksen suorituksen Kääntäjä muuttaa korkeamman tason kielellä kirjoitetun ohjelman (esim. C, Java) laitteistolla suoritettaviksi konekäskyiksi
Ohjelma Menemällä syvemmälle paljastuu yksityiskohtaisempaa tietoa Abstrahointi kätkee yksityiskohtia One-to-many One-to-one #7
Korkeantason ohjelmointikielet Sallivat ohjelmoijan ohjelmoida luonnollisemmalla kielellä kyseiselle käyttötarkoitukselle Fortran tieteelliseen ohjelmointiin, Cobol kaupallisiin sovelluksiin, Java web-ohjelmointiin, jne Parantaa ohjelmoijan tuottavuutta, koska helpompi ymmärtää Koodi on helpompaa ylläpitää, tarkistaa ja debugata Ohjelma on riippumaton kohdeprosesorista kääntäjät ja assemblerit muuntavat koodin eri koneille Nykyään tehdään hyvin vähän assembly-tason ohjelmointia Kaikkein kriittisimmät osat silti assembly-koodia Assemblyn osaaminen auttaa ymmärtämään prosessorin toimintaa tarkemmin ja helpottaa tiettyjen vikojen selvittämistä #8
Tietokoneen pellin alla: Esim. 3. Esim. 2. 1. Esim. 4. 5. Esim. #9
Prosessorin perusosat Datapolku ja ohjaus = prosessori (CPU, Central Processing Unit) Koostuvat jopa sadoista miljoonista transistoreista Mahdotonta ymmärtää niiden toiminta tarkastelemalla yksittäisiä transistoreita tai edes logiikkaportteja Tarvitaan abstrahointia #10
AMD Barcelona 4 prosessoriydintä #11
Tallennetun ohjelman konsepti Käskyt ovat bittejä Ohjelmat tallennetaan muistiin luettavaksi tai kirjoitettavaksi kuten data toiminnot laske seuraava Prosessori käsky osoite Muisti Muisti datalle, ohjelmille, kääntäjille, editoreille jne. käskynhaku & suoritus (Fetch & Execute) toistuu loputtomasti Käskyt noudetaan ja laitetaan tiettyyn rekisteriin Bitit rekisterissä ohjaavat tulevia toimintoja #12
Käskykanta (prosessoriarkkitehtuuri) instruction-set architecture (ISA) Erittäin tärkeä abstraktiotaso rajapinta laitteiston ja alimman tason ohjelmiston välillä kuvaa käytettävissä olevat käskyt, rekisterit, muistiviittaukset, I/O, jne. ohjelmoijan näkymä prosessorista hyöty: eri toteutuksia samasta arkkitehtuurista haitta: estää joskus käyttämästä uusia innovaatioita käskykanta-arkkitehtuureja: x86, IA-64, AMD64, IA- 32, PowerPC, MIPS, SPARC, ARM, etc. Totta vai tarua: Binääriyhteensopivuus on tärkeää? Erittäin tärkeää PC-ympäristössä, vähemmän tärkeää sulautetuissa järjestelmissä #13
Alkutaival ENIAC rakennettiin toisen maailmansodan aikana ja se on yksi ensimmäisistä yleiskäyttöistä elektronista tietokoneista Tehtiin tykistön ballistiikkalaskelmia varten Käsitteli 10-kantaisia lukuja Lähes 30m pitkä Noin 18 000 radioputkea Pystyi suorittamaan sekunnissa 5 000 yhteenlaskua, 357 kertolaskua, tai 38 jakolaskua #14
Tallennusmediat ENIAC ohjelmoitiin nappuloita vääntelemällä Myöhemmin käytettiin kaukokirjoitinta (l. telexiä), mikä oli hieman elegantimpaa engl. teletype (tty) Ohjelmat ja data talletettiin mekaanisesti Reikäkortit ja reikänauha Magneettinen tallennus Nauha ja levy Optinen tallennus CD-ROM / DVD #15
Ensimmäiset kaupalliset tietokoneet Howard Aikenin ennusti vuonna 1947, että USA:ssa on tarvetta 6 tietokoneelle UNIVAC oli ensimmäinen massatuoteena valmistettu (1950-luvulla) ja sitä myytiin joitakin satoja kappleita IBM hallitsi markkinoita 1960-luvulla Esim. System/360 Varhaiset supertietokoneet ilmaantuivat 1960-luvulla Control Data Corporation CDC 6600 (1964) Cray Research Cray-1 (1976) Minitietokoneet ilmaantuivat 1960- ja1970- luvuilla Digital Equipment Corporation PDP, 1960- Digital Equipment Corporation VAX (11/780) 1978- Vas. Kuva. Ferriittrenkaisiin perustuva RAM-muisti (engl. magnetic core memory ja sieltä juontuu ilmaus core dumped ) Entäpä debug? #16
Mikroprosessorit Ensimmäinen yhdellä piirillä toteutettu mikroprosessori oli Intel 4004, 1971 2300 transistoria Kellotaajuus 108 khz Sitä seurasivat 8008 ja 8080 Ensimmäinen hlö-kohtainen tietokone MITS Altair 1975 Myytiin rakennussarjana Ja niitä 8086, 8088, 80186, 80286 IBM PC 1981 (suorittimena 8088) Ja niitä seurasivat Altair Intel 4004 IBM PC #17
Teknologiatrendit: Mooren laki Puolijohdepiirin transistorien lukumäärä tuplaantuu joka 18. kuukausi Laki viittaa transistorien määrään, myöhemmin muutettu viittaamaan suorituskykyyn Mitä Moore itseasiassa ennusti v. 1965? Integroitujen piirien kehitys on seurannut Mooren lakia Kuva alkup. julkaisusta: yksittäisen transistorin kustannus ftp://download.intel.com/research/silicon/moorespaper.pdf Kuva alla: esim. Intelin suorittimien transistorimäärä #18
Teknologiatrendit DRAM-kapasiteetti nelinkertaistunut 3 vuoden välein DRAM capacity Year Technology Relative performance/cost 1951 Vacuum tube 1 1965 Transistor 35 1975 Integrated circuit (IC) 900 1995 Very large scale IC (VLSI) 2,400,000 2005 Ultra large scale IC 6,200,000,000 #19
#20 Ray Kurtzweil, Kurzwail Tech., Inc.
IC-teknologia Tällä hetkellä prosessoreita tuotetaan 45nm transistoriteknologialla: Neulan päähän saa sijoitettua 30 miljoonaa transistoria Ihmisen hiuksen leveydelle voi sijoittaa 2000 transistoria Jos auton hinta olisi laskenut samalla nopeudella kuin transistorin hinta vuodesta 1968, niin auto maksaisi nyt noin 0.01 International Technology Roadmap for Semiconductors Vuosi 2004 2006 2008 2010 2012 Viivanleveys 90nm 65nm 45nm 32nm 22nm Integrointiaste, Biljoonaa transistoria 2 4 6 16 32 #21
Suorituskyky Millä lentokoneella on paras suorituskyky? #22
Vasteaika ja läpäisy Vasteaika (Response time) Kuinka kauan tehtävän suoritus kestää Läpäisy (Throughput) Aikayksikössä tehty kokonaistyö Esim. tehtävät/transaktiot/ per tunti Miten vastaika ja läpäisy muuttuvat, jos prosessori korvataan nopeammalla prosesorilla? lisätään prosessoreiden määrää? #23
Suhteellinen suorituskyky Performance = 1/Execution Time X on n kertaa nopeampi kuin Y Performance Performance X Y = Execution time Y Execution time X = n Esimerkki: ohjelman suoritukseen menee 10s koneella A, 15s koneella B Execution Time B / Execution Time A = 15s / 10s = 1.5 A on 1.5 kertaa nopeampi kuin B #24
Suoritusajan mittaaminen Kulunut aika (Elapsed time) Kokonaisvasteaika sisältäen kaikki toiminnan viiveet Prosessointi, I/O, käyttöjärjeslmäkuorma, joutoaika Määrittää järjestelmän suorituskyvyn CPU-aika (CPU time) Annetun työn prosessointiin kuluva aika vähennetään I/O-aika, muiden töiden kuluttama aika koostuu käyttäjän CPU-ajasta ja järjestelmän kuluttumasta CPU-ajasta CPU-suorituskyky ja järjestelmän suorituskyky vaikuttavat erilaisiin ohjelmiin erilailla #25
CPU-kello Digitaalisen laitteen toimintaa ohjataan vakiotaajuisella kellosignaalilla Clock (cycles) Data transfer and computation Update state Clock period Kellojakso (clock period) esim. 250ps = 0.25ns = 250 10 12 s #26 Kellotaajuus: Clock frequency (rate): jaksoa sekunnissa esim. 4.0GHz = 4000MHz = 4.0 10 9 Hz
CPU-aika CPU Time = CPU Clock Cycles Clock Cycle Time = CPU Clock Cycles Clock Rate Suorituskyky paranee Kellojaksojen määrän pienentyessä Kellotaajuuden kasvaessa Laitteiston suunnittelussa joudutaan tekemään kompromissejä kellojaksojen lukumäärän ja kellotaajuuden välillä #27
CPU-aika kone A: 2GHz kello, 10s CPU-aika Suunnitellaan kone B Tavoite: 6s CPU-aika Voidaan kellottaa nopeammin, mutta vaatii1.2 kellojaksoja Kuinka nopean koneen B on oltava? Clock Rate B = Clock Cycles CPU Time B B = 1.2 Clock Cycles 6s A Clock Cycles A = CPU Time A Clock Rate A = 10s 2GHz = 20 10 9 Clock Rate B = 1.2 20 10 6s 9 = 24 10 6s 9 = 4GHz #28
Käskyjen lukumäärä ja CPI Clock Cycles = Instruction Count Cycles per Instruction CPU Time = Instruction Count CPI Clock Cycle Time = Instruction Count Clock Rate CPI Ohjelman käskyjen lukumäärä Määräytyy ohjelmasta, kääntäjästä ja arkkitehturista (ISA) Keskimääräinen jaksojen määrä per käsky (cycles per instruction) Määräytyy CPU:n laitteiston perusteella Eri käskyillä voi olla erilainen CPI #29
CPI Esimerkki Kone A: kellojakso = 250ps, CPI = 2.0 Kone B: kellojakso = 500ps, CPI = 1.2 Kummassakin sama arkkitehtuuri (ISA) Kumpi on nopeampi? Kuinka paljon? CPU Time A CPU Time B CPU Time B CPU Time A = Instruction Count CPI A = I 2.0 250ps = I 500ps = Instruction Count CPI B = I 1.2 500ps = I 600ps I 600ps = I 500ps = 1.2 Cycle Time A Cycle Time B #30
CPI Jos eri käskyillä erilainen CPI Clock Cycles = n i= 1 (CPIi Instruction Counti) keskimääräinen painotettu CPI CPI = Clock Cycles Instruction Count = n i= 1 CPI i Instruction Counti Instruction Count Suhteellinen frekvenssi #31
CPI Esimerkki Vaihtoehtoisia käännettyjä koodisekvenssejä käyttäen käskyluokkia A, B, C luokka A B C Luokan CPI 1 2 3 Käskyjen määrä (IC): sekvenssi 1 2 1 2 Käskyjen määrä (IC): sekvenssi 2 4 1 1 Sekvenssi 1: IC = 5 kellojaksot = 2 1 + 1 2 + 2 3 = 10 Avg. CPI = 10/5 = 2.0 Sekvenssi 2: IC = 6 kellojaksot = 4 1 + 1 2 + 1 3 = 9 Avg. CPI = 9/6 = 1.5 #32
Suorituskyky: Yhteenveto Instructions Clock cycles CPU Time = Program Instruction Seconds Clock cycle Suorituskyky riippuu Algoritmista, vaikutus: IC, mahdollisesti CPI Ohjelmointikieli, vaikuttaa: IC, CPI Kääntäjä, vaikuttaa: IC, CPI Käskykanta, vaikuttaa: IC, CPI, T c (kellojakso) #33
CMOS-teknologia Tehoa kulutetaan ainoastaan signaaliransitiossa Transistorikytkimen muuttaessa tilaa on lyhyt aika, jolloin molemmat transistorit ovat johtavassa tilassa ja virta kulkee kytkimien läpi +V DD v O +V DD Q 1 OFF v I Q 2 Q 1 PMOS load v O NMOS driver Q 1 and Q 2 conducting V TH Q 2 OFF v I +V DD #34
Tehonkulutustrendi CMOS-IC-teknologiassa: Power = Capacitive load Voltage 2 Frequency 30 5V 1V 1000 #35
Tehonkulutustrendit IC-teknologian viivanleveyden pienentyessä, transistorien vuotovirrat kasvaneet merkittävästi I=vuotovirta Lämpötehoa tuotetaan yhä suuremmat määrät entistä pienemmällä alueella Tehotiheys on kasvanut niin korkeaksi, ettei lämpöä pystytä siirtämään piilastusta kustannustehokkaasti Lämpöseinä kellotaajuutta ei voida enää kasvattaa #36
Tehonkulutuksen pienentäminen Oletetaan, että uudessa CPU:ssa Kapasitanssikuorma on 85% vanhasta 15% pienempi käyttöjännite ja 15% pienempi kellotaajuus 2 Cold 0.85 (Vold 0.85) Fold 0.85 = = 0.85 2 P C V F Pnew 4 = old old old old 0.52 #37
Prosessorin suorituskyvyn kehitys rajoitteena tehonkulutus, käskytason rinnakkaisuus, muistin latenssi #38
IC-piirien valmistus Saanto (Yield): toimivien piisirujen osuus kaikista piikiekon siruista #39
AMD Opteron X2 Wafer X2: 300mm wafer, 117 chips, 90nm technology X4: 45nm technology #40
IC-piirin kustannus Cost per die = Cost per wafer Dies per wafer Yield Dies per wafer Wafer area Die area Yield = (1+ (Defects per 1 area Die area/2)) 2 Pinta-alalla ja vikatiheydellä epälineaarinen suhde Kiekon kustannus ja pinta-ala ovat kiinteitä Vikatiheys määräytyy valmistusprosessista Piilastun ala määräytyy arkkitehtuurista ja toteutuksesta #41
Tehonkulutus & joutokäynti AMD X4 tehonkulutus 100%-kuormaalla 295W 50%-kuormalla 246W (83%) 10%-kuormalla 180W (61%) Google data center Palvelin toimii keskimäärin 10% 50% kuormalla 100% kuorma harvemmin kuin 1% ajasta Prosessorin tehonkulutuksen pitäisi olla riippuvainen kuormasta #42
MIPS suorituskyvyn mittarina MIPS: Millions of Instructions Per Second Ei ota huomioon eroja koneiden käskykannassa käskyjen välisiä eroja #43 MIPS = = Instruction count Execution time 10 Instruction count Instruction count CPI 10 Clock rate 6 6 = Clock rate 6 CPI 10 CPI voi olla erilainen samassa CPU:ssa ajettaessa eri ohjelmia