Tietokoneen rakenne Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan

Samankaltaiset tiedostot
Käskykannat. Tietokoneen rakenne. Ch [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC. Luento 7-1

Luento 7: Käskykannat Tietokoneen rakenne / 2006 / Teemu Kerola 9/25/2006

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Jakso 2 TTK-91 -tietokone ja sen KOKSI -simulaattori

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä?

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: rekisterit

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

1. Keskusyksikön rakenne

RISC-arkkitehtuuri Ch 13 [Sta06] Käskyanalyysia RISC vs. CISC Rekisterien käytöstä

Luento 9: RISC-arkkitehtuuri Luento 9 EAX, EBX, EBX, EDX, ESP, EBP, ESI, EDI CS, SS, DS, ES, FS, GS. (Sta06 Table 12.

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Suoritinesimerkit RISC- arkkitehtuuri

Suoritinesimerkit RISC- arkkitehtuuri

Suoritinesimerkit RISC- arkkitehtuuri

Laitteistonläheinen ohjelmointi

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Käyttöjärjestelmän rakenne

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Jakso 4 Aliohjelmien toteutus

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Jakso 5 Suoritin ja väylä

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Jakso 4 Aliohjelmien toteutus

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Laitteistonläheinen ohjelmointi

Jakso 5 Suoritin ja väylä

Tietokoneen toiminta, K Tavoitteet (4)

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Luento 4 Aliohjelmien toteutus

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 5 Suoritin ja väylä

Muistihierarkia Kiintolevyt I/O:n toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Monipuolinen esimerkki

Kertausluento luennoista 1-3 1

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Tiedon sijainti suoritusaikana (3) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Miten tietoon viitataan? (4)

Luento 5 (verkkoluento 5) Suoritin ja väylä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Tietokonearitmetiikka

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 5 Suoritin ja väylä

Tiedon sijainti suoritusaikana. Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Luento 4 Aliohjelmien toteutus

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 4 Aliohjelmien toteutus

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus

Tietokonearitmetiikka

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Järjestelmän ulkoinen muisti I/O

Intel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen

Luento 5 (verkkoluento 5) Suoritin ja väylä

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Superskalaariprosessointi

Superskalaariprosessointi

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 6 Tiedon esitysmuodot. Tiedon esitys laitteistossa (4) Tiedon esitys (7) Suorittimen ymmärtämä tieto (9) Tietokoneen toiminta, K

Tietokonearitmetiikka

Tietokonearitmetiikka

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne

Luento 5 Suoritin ja väylä

Tulkinta ja emulointi

Superskalaariprosessointi

Transkriptio:

Käskykannat Ch 10-11 [Sta06] Operaatioista Operandeista Osoitustavoista Pentium / PowerPC Luento 7 Käskysykli CPU suorittaa ohjelmaa konekielinen käsky kerrallaan Käskyn suoritus muodostuu vaiheista, joita CPU toistaa jokaiselle käskylle (Sta06 Fig 10.1) Luento 7-1 Luento 7-2 Konekäskyt Käskyt ja Data Käskykanta = u CPU:n tunnistama konekielisten käskyjen kokoelma Operaatiokoodi u Mitä käsky tekee? Pureskeltu TITO kurssilla Viitteet operandeihin (yksi/useita) u Mistä data, jolle operaatio tehdään? Rekistereistä, muistista, I/O laitteelta u Minne tulokset talletetaan? Rekistereihin, muistiin, I/O laitteelle Mikä käsky seuraavaksi u Implisiittisesti? Explisiittisesti? I/O? u Muistiinkuvattu I/O samat tavat kuin muistille Nopeus? käskyt data osoite arvo symbolinen tunnus (Sta06 Fig 10.11) Luento 7-3 Luento 7-4 Millaisia käskyjä tarvitaan? Siirto muistista rekisteriin / rekisteristä muistiin u LOAD, STORE, MOVE, PUSH, POP, I/O-laitteen ohjaus u Kuten yllä (muistiinkuvattu IO) u Omat I/O-ohjauskäskyt (ei muistiinkuvattu I/O) Aritmeettiset ja loogiset operaatiot u ADD, MUL, CLR, SET, COMP, AND, SHR, NOP, Esitystapamuunnokset u TRANS, CONV, 16bTo32b, IntToFloat, Käskyjen suoritusjärjestyksen ohjaus, ehdoton/ehdollinen u JUMP, BRANCH, JEQU, CALL, EXIT, HALT, Palvelupyyntö u SVC, INT, IRET, SYSENTER, SYSEXIT, Etuoikeutetut käskyt u DIS, IEN, flush cache, invalidate TLB, Sta06 Table 10.3 Miltä operaatioissa tapahtuu? (Sta06 Table 10.4) Luento 7-5 Luento 7-6 / 2005 / Auvo Häkkinen 1

Millaista dataa käsitellään? Kokonaislukuja, liukulukuja totuusarvoja Merkkejä, merkkijonoja u IRA (aka ASCII), EBCDIC Vektoreita, taulukoita u N kpl alkioita pötkössä Muistiosoitteita Käskyformaatti Paljonko kullekin käskyn osalle bittejä? u Montako erilaista käskykoodia tarvitaan? u Montako operandia voi osoittaa yhdessä käskyssä? u Onko operandi rekisterissä vai muistissa? u Montako rekisteriä osoitettavissa? Vakio- vs. vaihtelevanmittaiset käskyt? Erikokoisia operandeja u 8 /16/32/ 64b, u Kutakin tyyppiä/kokoa varten omat operaatiokoodit (Sta06 Table 10.5) (Sta06 Table 10.1) Luento 7-7 Luento 7-8 Montako rekisteriä? Vähintään 16-32 kpl u Työdata rekistereissä Rekisterijoukot omiin tarkoituksiinsa? u Esim. Kokonaisluvuille omansa ja liukuluvuille omansa, indeksoinnille omansa ja datalle omansa u Ne voi molemmat numeroida alkaen 0:stä u Käskykoodi määrää kumpaa käytettävä Enemmän rekistereitä kuin käsky voi viitata? u CPU huolehtii sisäisesti niiden allokoinnista Rekisteri-ikkuna u Esim. Aliohjelman parametrit aina rekistereissä Ohjelmoijan mielestä rekistereissä r8-r15, CPU sijoittelee rekisterijoukkoon välille 8-132 (palataan tähän myöhemmin) Luento 7-9 Käskyarkkitehtuureja Akkukone u Vain yksi rekisteri, implisiittinen osoittaminen Pinokone Ks. Sta06 Appendix 10A u Operandit pinossa, implisiittinen osoittaminen u PUSH, POP Yleisrekisterikone u Vain yhdenkoon rekistereitä u Käskyssä 2 tai 3 operandia Load/Store arkkitehtuuri u Vain LOAD/STORE viittaavat muistiin u ALU-operaatioissa tav. 3 rekisteriä Esim. JVM LOAD R3, C LOAD R2,B ADD R1,R2,R3 STORE R1,A Luento 7-10 Tavujärjestys: Big vs. Little Endian Kuinka usean tavun kokoinen luku talletetaan? 0x1200: 0x1200 0x1201 0x1202 0x1203 Sanaosoite (Word) Tavuosoitteet (Byte) Big-Endian: eniten merkitsevällä tavulla pienin osoite Little-Endian: vähiten merkitsevällä tavulla pienin osoite Ks. Sta06 Appendix 10B STORE 0x11223344,0x1200??? 0x11 0x22 0x33 0x44 0x1200 0x1201 0x1202 0x1203 0x44 0x33 0x22 0x11 0x1200 0x1201 0x1202 0x1203 0x00000044 = 0x44 0x00 0x00 0x00 Sama osoite tavuna ja sanana: 0x1200 0x1201 0x1202 0x1203 Luento 7-11 Big vs. Little Endian ALU käyttää vain jompaakumpaa u Little-endian: x86, Pentium, VAX u Big-endian: IBM 370/390, Motorola 680x0 (Mac), useimmat RISC-arkkitehtuurin koneet u Power-PC kelpuuttaa kummankin Bitti ohjausrekisterissä (MSR, machine status register) Järjestys vaihdetaan tarvittaessa ALUa ennen/jälkeen Tavujärjestys huomioitava, kun tietoa siirretään koneesta toiseen u Internet käyttää big-endian muotoa u Pistokekirjastossa rutiinit htoi() ja itoh() (Host to Internet & Internet to Host) Luento 7-12 / 2005 / Auvo Häkkinen 2

Datan kohdentaminen (alignment) 16b data alkamaan parillisista (tavu)osoitteista 32b data 4:llä jaollisista osoitteista 64b data 8:lla jaollisista osoitteista 0010 10010 0010 10100 0010 11000 Kohdennettu data helpompaa käsitellä u esim. 32b data ladattavissa yhdellä muistinoudolla (sanaosoite) 11 22 33 44 Kohdentamaton data ei tuota väliin hukkatavuja u Esim. 32b kohdentamaton data tarvitsee kaksi muistinoutoa (sanaosoite) ja yhdistämisen load r1, 0(r4) load r1, 0(r4) shl r1, =16 load r2, 1(r4) shr r2, =16 or r1, r2 33 44 11 22 Muistin osoitustavat Ch 11 [Sta06] Luento 7-13 Luento 7-14 Missä käskyn operandit? Tiedon osoitusmuodot Muistissa u Ohjelman muuttujat, pino, keko Rekistereissä u Käsittelyn aikana (nopeus) Käskyn osana u Pienet vakiot Miten tuo kerrotaan CPU:lle? u Bitit käskyformaatissa u Useita osoitusmuotoja (Sta06 Fig 11.1) Luento 7-15 Luento 7-16 Tiedon osoitusmuodot Siirtymä (Displacement Address) Effective address = (R1) + A Tehollinen muistiosoite rekisterin sisältö + käskyssä annettu vakio Operand = (R) EA = Effective Address (A) = Muistipaikan A sisältö (R) = Rekisterin R sisältö Pinon päällimmäisen alkion osoitteelle oma rekisteri Pinon päällimmäinen alkio (tai 2) omassa rekisterissä (Sta06 Table 11.1) Luento 7-17 Vakio usein pieni (8 b, 16 b?) Käyttötapoja u PC:n suhteen viittaus u Base rekisterin suhteen u Taulukon indeksointi u Tietueen kenttään viittaus u Pinoon viittaaminen (aktivointitietue) JUMP *+5 CALL SP, Summation(BX) ADDF F2,F2, Table(R5) MUL F4,F6, Salary(R8) STORE F2, -4(FP) Luento 7-18 / 2005 / Auvo Häkkinen 3

Lisää tiedon osoitustapoja Autoincrement (before/after) u Esim. CurrIndex=i++; Autodecrement (before/after) u Esim. CurrIndex=--i; Autoincrement deferred u Esim. Sum = Sum + (*ptrx++); EA = (R), R (R) + S R (R) - S, EA = (R) operandin koko EA = Mem(R), R (R) + S Pentium Autoscale u Esim. Double X; X=Tbl[i][j]; EA = A + (R j ) + (R i ) * S Luento 7-19 Luento 7-20 Pentium: Rekisterit Yleisrekisterit, 32-b u EAX, EBX, ECX, EDX työrekisterit accu, base, count, data u ESI, EDI source & destination index u ESP, EBP stack pointer, base pointer Niiden loppuosia voi käyttää 16-bittisinä u AX, BX, CX, DX, SI, DI, SP, BP Työrekistereiden loppuosia 8-bittisinä u AH, AL, BH, BL, CH, CL, DH, DL Segmenttirekisterit, 16b u CS, SS, DS, ES, FS, GS code, stack, data, stack, extra data Käskynosoitin u EIP Extended Instruction Pointer Statusrekisteri u EFLAGS overflow, sign, zero, parity, carry, Luento 7-21 Pentium: Datatyypit Pentium Single / Double / Extended precision Ei kohdennettu Little Endian (Sta06 Table 10.2) Luento 7-22 Pentium: Operaatiot (tässä vain osa) Pentium: MMX Operaatiot (tässä vain osa) No under/overflow. Use closest representation (Sta06 Table 10.8) Luento 7-23 (Sta06 Table 10.11) Luento 7-24 / 2005 / Auvo Häkkinen 4

Pentium: Osoitustavat Pentium: Osoitteen laskenta Pentium Addressing Operand = (R) 1, 2, 4, 8B Rekisterit: 1, 2, 4, 8B (Sta06 Table 11.2) Luento 7-25 (Sta06 Fig 11.2) Luento 7-26 CISC u Complex Instruction Set Computer Paljon valinnaisia osia u Osio esiintyy käskyn bittijonossa tai ei u Alussa 0-4 prefix tavua u Loppuosan tulkinta riippuu aiempien kenttien sisällöistä Monipuoliset osoitustavat u Käskyn operandeista korkeintaan yksi muistissa u 24 erilaista Addressing Taaksepäin yhteensopivuus u Icuwanhojen 16-bittisten 8086-ohjelmien pitää toimia Vanhat käskyt emuloimalla vai simuloimalla? 1. Operandi (rekisteri) 2. operandi (rekisteri) tai Addressing (Sta06 Fig 11.8) Luento 7-27 Luento 7-28 Sta06 Fig 11.8 Sta06 Fig 11.8 Instruction prefix (optional) u LOCK jakamaton operaatio monicpu-järjestelmässä u REP toista samaa käskyä merkkijonon kaikille merkeille Segment override (optional) u Käytä tässä käskyssä eksplisiittisesti annettua segmenttirekisteriä u Käytä muulloin implisiittistä oletusta Operand size override (optional) u Onko operandi 16 vai 32 bittinen (toinen oletuksena) Address size override (optional) u Onko osoite 16 vai 32 bittinen (toinen oletuksena) Opcode u Kullekin käskylle oma bittikombinaatio u Bitit kertovat myös operandin koosta (8/16/32b) ModR/M (optional) u Onko operandi rekisterissä vai muistissa u Mitä osoitusmuotoa käytetään u Joissakin tapauksissa täsmentää operaatiokoodia SIB = Scale/Index/Base (optional) u Joissakin osoitusmuodoissa tarvitaan lisätarkennuksia u Scale: alkion koko indeksointia käytettäessä u Index: indeksirekisterin numero u Base: kantarekisterin numero Luento 7-29 Luento 7-30 / 2005 / Auvo Häkkinen 5

Displacement (optional) u Tarvitaan eräissä osoitustavoissa u 0, 1, 2 tai 4 tavua Immediate (optional) u Tarvitaan eräissä osoitustavoissa u 0, 1, 2 tai 4 tavua Sta06 Fig 11.8 PowerPC Luento 7-31 Luento 7-32 PowerPC: Käskykanta RISC u Reduced Instruction Set Computer Kiinteä käskynpituus (32b), vähän formaatteja u Käskyissä tavallisesti 3 operandia Minimijoukko erilaisia käskyjä u Helpompi laitteistototeutus, nopeampi suorittaa u Pitemmät ohjelmat? Vain 2 osoitusmuotoa u Load/Store-arkkitehtuuri 32 yleisrekisteriä Kiinteä datan koko (32/64) Ei esim. merkkijono-operaatioita u Kirjastoina Luento 7-33 PowerPC: Osoitustavat (Sta06 Table 11.3) Luento 7-34 PowerPC: Käskyformaatti XO=Opcode extension, R=Record condition in CR1, O=Record overflow in XER S = Part of Shift Amount field, *=64 bitin arkkitehtuureissa PowerPC: Käskyformaatti Yksinkertaiset hyppykäskyt u CR: mitä CR-rekisterin bittejä tutkitaan u L (Link): onko kyseessä aliohjelmaan siirtyminen (Aktivointitietue kuntoon!) u A (Absolute): onko annettu hypyn kohdeosoite, vai onko hyppy suhteellinen PC:n suhteen (Sta06 Fig 11.9) Luento 7-35 (Sta06 Fig 11.9) Luento 7-36 / 2005 / Auvo Häkkinen 6

RISC vs. CISC lisää myöhemmin (Luento 9) Kertauskysymyksiä Korkean tason ohjelmointikielet Korkean tason ohjelmointikielet CISC tulee korkean tason kieliä vaikea suorittaa Korkean tason ohjelmointikielet CISC tulee korkean tason kieliä vaikea suorittaa Millaisista osista konekielinen käsky muodostuu? Miten CPU tietää onko sen käsittelemä kokonaisluku 16 bittinen vai 32 bittinen? Mitä tarkoittaa Big-Endian? Mitä hyötyä on kiinteästä käskyformaatista verrattuna vaihtelevanpituiseen formattiin? HW (Pentium) SW (Crusoe) RISC helppo suorittaa RISC helppo suorittaa HW HW HW Luento 7-37 Luento 7-38 / 2005 / Auvo Häkkinen 7