520 likes | 674 Views
SOCS. Hoofdstuk 2 Computerapparatuur. Hoofdstuk 2. Logica Elektronica Transistorgeheugens Geheugenmedia Organisatie Bussen Voorgeheugens Pipelining Snelheid. Video Bestuurder. Harde Schijf Bestuurder. CD-ROM Bestuurder. Bussen. Transport van gegevens tussen lokaties
E N D
SOCS Hoofdstuk 2Computerapparatuur
Hoofdstuk 2 • Logica • Elektronica • Transistorgeheugens • Geheugenmedia • Organisatie • Bussen • Voorgeheugens • Pipelining • Snelheid
VideoBestuurder Harde SchijfBestuurder CD-ROMBestuurder Bussen • Transport van gegevens tussen lokaties • Serieel vs parallel (8, 16, 32, 64, …) • Implementatie • Punt-tot-punt verbinding (duur!) • Gemeenschappelijke verbinding (bus) RAM ... CPU
Bussen • Verschillende lijnen • Adressen • Gegevens • Controlesignalen (Opdrachten) • Voorbeelden • (E)ISA (Extended Industry Standard Architecture) • PCI (Peripheral Component Interconnect) • ...
PCIbridge SCSI bus SCSISchijf PCI bus ISAbridge ISA bus Bussen RAM CPU SCSIBestuurder VideoBestuurder Geluidkaart DrukkerBestuurder Modem ...
Registers Interne bussen Rekeneenheid
Bussen • Bus breedte • # Adreslijnen • 20 lijnen: max. 1M (PC/XT) • 24 lijnen: max. 16 M (ISA) • 32 lijnen: max. 4G (EISA/PCI) • 64 lijnen: max. 16 E (PCI) • # Datalijnen • 8, 16, 32, 64 lijnen • Ev. 32 bits ophalen over 8-bit bus = 4 x lezen • Multiplexed bus: adres/datalijnen gemeensch.
RAM CPU + Lees xyz = Buscyclus Data Bussen • Participanten • Meester = apparaat dat comm. initieert • CPU, DMA-apparaat, ... • Slaaf = andere partij • Geheugen, ...
Bussen • Werking: • Synchroon • Op kadans van een klok • Bus cyclus = geheel # klokcycli • ISA (8.33 Mhz), PCI (33 MHz/66MHz) • Asynchroon • Bus toegang slechts zo lang als nodig • Bus Protocol: • Hoe bus werkt • Hoe “meester” worden, Welke signalen + Timing ...
MIN MAX Adresbus ADRES ADRES Databus DATA DATA MREQ READ Controlebus WAIT Synchrone Bus Klok (CPU) (Geheugen)
NOK OK OK NOK Bus Arbitratie • Hoe “meester” worden • Gecentraliseerd • Schakeling in CPU, aparte arbiter chip, … aanvraag Arbiter App. 1 App. 2 App. 3 App. 4 • Gedecentraliseerd
Lees cyclus Meester: Lees xyz Slaaf: Data Schrijf cyclus Meester: Schrijf data xyz Slaaf: OK Block transport Meester: Lees xyz ... Slaaf: Data, data, ... Lees/Wijzig/Schrijf cyclus Meester: Lees xyz Slaaf: Data Meester: Schrijf Data* xyz Slaaf: OK Interrupt cyclus ... Bus Cycli
Hoofdstuk 2 • Logica • Elektronica • Transistorgeheugens • Geheugenmedia • Organisatie • Bussen • Voorgeheugens • Pipelining • Snelheid
Voorgeheugens • RAM relatief traag t.o.v. CPU • Extra snel voorgeheugen (cache memory) RAM CPU cache SRAM Kopie van gedeelte van RAM DRAM
RAM Lees a in VG? JA! CPU a RAM Lees b in VG? NEE! CPU b Voorgeheugens
Voorgeheugens • Lokaliteitsprincipe • Lokaliteit in tijd • x nodig op tijd t x nodig op tijdstip t+dt vb. lussen, tussenresultaten • Lokaliteit in ruimte • x nodig op tijdstip t x+dx nodig op tijdstip t+dt vb. programma’s, rijen, velden van records, … • Daarom: regellengte (8 bytes, 16 bytes, …) • Voorgeheugen • 90% .. 98% succes!
Voorgeheugens • Ontwerpkeuzen: • Grootte (16 kB, 32 kB, … 512 KB, …) • Regellengte (8B, 16B, 32B, …) • Hoeveel tegelijk ophalen uit RAM • Hoe georganiseerd • Gemeenschappelijk VG versus Gescheiden VG voor data en instructies • Aantal voorgeheugens (1, 2 of meer)
Voorgeheugens • Organisatie • Direct afgebeeld voorgeheugen • Elk RAM “regel” heeft vaste plaats in het VG • Tag duidt aan over welke geheugen-regel het gaat (de meest beduidende bits van het adres) • Associatieve voorgeheugens • Een RAM regel kan om het even waar in het VG • Tag duidt aan over welke geheugen-regel het gaat • Associatief: alle tags tegelijk vergelijken!
tag =? VG RAM Voorgeheugens • Direct afgebeeld voorgeheugen • Adres bepaalt regel, regel bepaalt plaats in VG adres
000110000 000100000 001000000 000010000 000000000 000100100 000110100 000010100 000000100 001000100 tag 000101000 001001000 000111000 000001000 000011000 000001100 000011100 000101100 001001100 000111100 =? VG RAM Voorgeheugens • Direct afgebeeld voorgeheugen • Adres bepaalt regel, regel bepaalt plaats in VG 00001 00011 00010 00000 000010110
000100000 001000000 000110000 000000000 000010000 001000100 000110100 000010100 000100100 000000100 tag 001001000 000101000 000111000 000001000 000011000 000011100 001001100 000101100 000001100 000111100 00001 00001 00010 VG 00000 RAM Voorgeheugens • Direct afgebeeld voorgeheugen • Adres bepaalt regel, regel bepaalt plaats in VG 000010111
tag VG =? RAM Voorgeheugens • Associatieve Voorgeheugens adres
000110000 001000000 000000000 000100000 000010000 000100100 001000100 000000100 000010100 000110100 000011000 000101000 000001000 001001000 000111000 000111100 001001100 000011100 000001100 000101100 =? Voorgeheugens • Associatieve Voorgeheugens tag 0000001 0000111 0000010 0001011 VG 000010110 RAM
001000000 000000000 000010000 000100000 000110000 000100100 000110100 000010100 001000100 000000100 000101000 000111000 000001000 000011000 001001000 001001100 000101100 000111100 000011100 000001100 0000001 0000111 0000010 0001011 =? Voorgeheugens • Associatieve Voorgeheugens tag VG 000010110 RAM
001000000 000000000 000010000 000100000 000110000 000100100 000110100 000010100 001000100 000000100 000101000 000111000 000001000 000011000 001001000 001001100 000101100 000111100 000011100 000001100 0000001 0000111 0000010 0001011 =? Voorgeheugens • Associatieve Voorgeheugens tag VG 000010110 RAM
001000000 000000000 000010000 000100000 000110000 000100100 000110100 000010100 001000100 000000100 000101000 000111000 000001000 000011000 001001000 001001100 000101100 000111100 000011100 000001100 0000001 0000111 0000010 0001011 =? Voorgeheugens • Associatieve Voorgeheugens tag VG 000010110 RAM
001000000 000000000 000010000 000100000 000110000 000100100 000110100 000010100 001000100 000000100 000101000 000111000 000001000 000011000 001001000 001001100 000101100 000111100 000011100 000001100 0000001 0000111 0000010 0001011 =? Voorgeheugens • Associatieve Voorgeheugens tag VG 000010110 RAM
000110000 001000000 000000000 000100000 000010000 000100100 001000100 000000100 000010100 000110100 000011000 000101000 000001000 001001000 000111000 000111100 001001100 000011100 000001100 000101100 =? Voorgeheugens • Associatieve Voorgeheugens tag 0000001 0000111 0000010 0001011 VG 000010110 RAM
000010000 000110000 001000000 000000000 000100000 000010100 000000100 000110100 000100100 001000100 000011000 000101000 000001000 001001000 000111000 000001100 001001100 000011100 000111100 000101100 Voorgeheugens • Associatieve Voorgeheugens tag 0000001 0000111 0000010 0001011 VG =? 000010110 RAM
000010000 000110000 001000000 000000000 000100000 000010100 000000100 000110100 000100100 001000100 000011000 000101000 000001000 001001000 000111000 000001100 001001100 000011100 000111100 000101100 Voorgeheugens • Associatieve Voorgeheugens tag 0000001 0000111 0000010 0001011 VG Niet aanwezig! 000010110 RAM
000010000 000110000 001000000 000000000 000100000 000010100 000000100 000110100 000100100 001000100 000011000 000101000 000001000 001001000 000111000 000001100 001001100 000011100 000111100 000101100 0000101 Voorgeheugens • Associatieve Voorgeheugens tag 0000001 0000111 0000010 0001011 VG 000010110 RAM
tag VG =? Voorgeheugens • Set-Associatief voorgeheugen • Adres bepaalt regel, regel bepaalt set in VG adres RAM
001000000 000110000 000100000 000000000 000010000 001000100 000010100 000000100 000110100 000100100 000011000 001001000 000101000 000111000 000001000 tag 000101100 001001100 000001100 000111100 000011100 0 1 VG =? 000010 Voorgeheugens • Set-Associatief voorgeheugen • Adres bepaalt regel, regel bepaalt set in VG 000001 000100 000000 000101 000010110 RAM
Voorgeheugens • Schrijven in VG • Wegschrijven doorheen het VG • Onmiddellijk hoofdgeheugen aanpassen • Uitgesteld wegschrijven • Alleen in VG aanpassen, pas later in hoofdgeheugen • Schrijven als niet in VG • Alleen in hoofdgeheugen • Eerst in VG brengen
Voorgeheugens • Vervangingsstrategie • Langst niet gebruikt LRU (Least Recently Used) • Langst in VG FIFO • Willekeurig Random • Geldig/Ongeldig-bit • IsGewijzigd-bit (uitgesteld schrijven) gewijzigd? eerst kopiëren naar geheugen
Performantie ??? Toegangstijden: TRAM, TVG Trefkans: t Gemiddeld:TG = t * TVG+ (1-t)* TRAM Voorbeeld:TRAM= 100 nsTVG = 10 nst = 95%Tgem = 0.95 * 10 + 0.05* 100 = 9.5 + 5 = 14.5 ns Kostprijs ??? Capaciteiten: CRAM, CVG Prijs: KRAM, KVG Totaal:K = CRAM* KRAM+ CVG * KVG Voorbeeld:CRAM = 1 GBKRAM = 0,2 EUR/MBCVG = 256 kBKVG = 50 EUR/MBK = 1024 * 0,2 + 50/4 EUR = 204,8 + 12,5 = 217,3 EUR Voorgeheugens 7 x sneller, slechts 6 % duurder
Gescheiden data- en instructie-VG (8kB elk) Voorgeheugens • Meerdere niveaus RAM CacheL3 CPU CacheL2 DataL1 InstrL1 256 kB 1 MB 1 GB
Hoofdstuk 2 • Logica • Elektronica • Transistorgeheugens • Geheugenmedia • Organisatie • Bussen • Voorgeheugens • Pipelining • Snelheid
Pipelining • Bevelencyclus • Haal bevel op Verhoog BT • Analyseer bevel • Bereken (adres) operand • (Haal operand op) • Voer uit Volgende bevel?
tijd Zonder Pipelining Ophalen Analyse Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand ophalen Uitvoeren
tijd Pipelining Ophalen Ophalen Analyse Adresberekening Analyse Ophalen Adresberekening Ophalen Operand ophalen Analyse Uitvoeren Operand ophalen Adresberekening Analyse Ophalen Ophalen Uitvoeren Adresberekening Operand ophalen Analyse Ophalen Analyse Uitvoeren Operand ophalen Adresberekening Adresberekening Analyse Ophalen Uitvoeren Operand ophalen Adresberekening Ophalen Operand ophalen Analyse Uitvoeren Uitvoeren Operand ophalen Adresberekening Analyse Ophalen Ophalen Uitvoeren Adresberekening Operand ophalen Analyse Ophalen Analyse Uitvoeren Operand ophalen Adresberekening Adresberekening Analyse Ophalen Uitvoeren Operand ophalen Adresberekening Ophalen Operand ophalen Analyse Uitvoeren Uitvoeren Operand ophalen Adresberekening Analyse Ophalen Ophalen Uitvoeren Adresberekening Operand ophalen Analyse Ophalen Analyse Uitvoeren Operand ophalen Adresberekening Adresberekening Analyse Ophalen Uitvoeren Operand ophalen Adresberekening Ophalen Operand ophalen Analyse Uitvoeren Uitvoeren Operand ophalen Adresberekening Analyse Ophalen
tijd Pipelining Ophalen Analyse Ophalen Ophalen Analyse Adresberekening Analyse Operand Ophalen Ophalen Adresberekening Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Ophalen Analyse Operand Ophalen Adresberekening Uitvoeren Analyse Ophalen Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Analyse Operand Ophalen Ophalen Adresberekening Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Ophalen Analyse Operand Ophalen Adresberekening Uitvoeren Analyse Ophalen Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Analyse Operand Ophalen Ophalen Adresberekening Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Ophalen Analyse Operand Ophalen Adresberekening Uitvoeren Analyse Ophalen Adresberekening Operand ophalen Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren Analyse Operand Ophalen Ophalen Adresberekening Uitvoeren Ophalen Analyse Adresberekening Operand Ophalen Uitvoeren
HIA.w R1,10 OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU RAM
Analyseer Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU HIA.w R1,10 RAM OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU
Bereken adres Analyseer Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU HIA.w R1,10 OPT R1,100 RAM BIG R1,2(R3+) HIA R0,R1 DRU
Bereken adres Analyseer Haal operand op Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU HIA.w R1,10 OPT R1,100 BIG R1,2(R3+) RAM HIA R0,R1 DRU
Bereken adres Analyseer Voer uit Haal operand op Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU HIA.w R1,10 OPT R1,100 BIG R1,2(R3+) HIA R0,R1 RAM DRU
Bereken adres Analyseer Voer uit Haal operand op Pipelining • Soort lopende band in processor HIA.w R1,10OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU OPT R1,100 BIG R1,2(R3+) HIA R0,R1 DRU RAM Enzovoort
Pipelining • Complex! • Indexatie • Compilator: • Herordenen van instructies • Inlassen van NOP HIA.w R1,10OPT R3,100 BIG R1,2(R3+) HIA R0,R1 DRU R3 R3+ • Sprongbevelen • Voorspellen, meerdere pijplijnen
Hoofdstuk 2 • Elektronica • Centraal Geheugen (RAM) • Geheugenmedia • Organisatie • Snelheid • MIPS • MFLOPS • Experimenteel testen