Datorteknik Y - Föreläsning 13 Andreas Ehliar 2014-04-08
Olika typer av minnen ROM (Read-only Memory) RWM (Read-Write Memory) Kallas väldigt ofta för RAM (För Random Access Memory
Ej skrivbara minnen ROM Minnesinnehållet bestäms av masken vid tillverkning av chippet Billigt vid mycket stora upplagor PROM (Programmable ROM) Kan programmeras en gång. Kallas ibland OTP (One Time Programmable) Billigare vid mindre upplagor EPROM (Erasable PROM) Kan raderas med UV-ljus och skrivas om ett visst antal gånger efter det EEPROM (Electrically erasable PROM) Kan raderas elektriskt och skrivas om efter det En radering tar mycket lång tid (jämfört med en skrivning) (Kan i teorin användas som ett RWM)
Flash-minnen vs EEPROM I ett EEPROM kan varje individuell cell raderas och skrivas om I ett flash-minne kan block av data raderas samtidigt (exempel på blockstorlek är exempelvis 128 + 4 kilobyte) I båda fallen är det enbart möjligt att radera data ett begränsat antal gånger. I SSD-diskar, minneskort, o.d. som baseras på flash-minnen används wear leveling för att undvika att frekvent skrivna block går sönder
RWM/RAM-minne Två huvudtyper: SRAM (Statiskt RAM) och DRAM (Dynamiskt RAM)
Kommandon i ett DDR3-SDRAM DESELECT (Avaktiverar chipselect) NOP No Operation ZQ CALIBRATION (Long respektive short) ACTIVATE: Läs ut en viss rad till temporärregistret READ: Starta en utläsning ifrån ett angivet ställe i temporärregistret WRITE: Starta en skrivning på angivet ställe i temporärregistret PRECHARGE: Skriv tillbaka temporärregistret till minnet REFRESH: Läs ut och skriv om en rad i minnet. (Minnet själv håller ordning på vilken rad som är härnäst på tur.)
Exempel: Läsning ifrån DDR3-SDRAM Figure 68: Consecutive READ Bursts (BL8) Typisk frekvens för CK: 300-800 MHz CK# T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 CK Command1 READ NOP NOP NOP READ NOP NOP NOP NOP NOP NOP NOP NOP NOP t CCD Address2 Bank, Col n Bank, Col b t RPRE t RPST DQS, DQS# DQ3 RL = 5 n n + 1 n + 2 n +3 n + 4 n + 5 n + 6 n + 7 b b + 1 b + 2 b + 3 b + 4 b + 5 b + 6 b + 7 RL = 5 Transitioning Data Don t Care Ifrån Micron datablad för DDR3 SDRAM MT41J256M4 32 Meg x 4 x 8 banks
Bussar I lab 4 har ni använt en centralt baserad buss som är helt styrd av mikrokoden i processorn. Detta fungerar bra inuti processorn där det är möjligt för en central styrenhet att på klockcykelnivå veta exakt hur lång tid olika operationer tar. För andra typer av bussar (I/O samt minnestrafik) är det nödvändigt att ha ett mer decentraliserat system.
DMA - Direct Memory Access Detta gör det också möjligt för andra enheter att få tillgång till bussen som så kallade Bus Masters Exempel: Ett ljudkort kan läsa ljuddata direkt ifrån minnet istället för att processorn behöver offra värdefulla klockcykler för att göra denna överföring Andra exempel: Nätverkskort, grafikkort, osv
Exempel på en mycket enkel buss STB: (Strobe) Används för att aktivera bussen ADR: Adressen vi vill läsa eller skriva ifrån WE: (Write enable) Satt om vi vill skriva, annars vill vi läsa DATA O: Data Output: Hit kommer data vi vill skriva DATA I: Data Input: Hit kommer data när vi har läst ACK: (Acknowledge) Sätts när mottagarenheten bekräftar att skrivningen eller läsningen tagits emot. ERR: Sätts om något gått snett (exempelvis att vi försöker läsa ifrån en adress där det ej finns något minne eller I/O-register) (DATA * och ADR består av multipla ledningar)
Nackdelar hos den enkla bussen Det tar normalt sett en del klockcykler från det att strobe aktiveras tills dess att en acknowledge kommer tillbaka. Ingen möjlighet att göra en burst -läsning, dvs starta läsning av mer än ett ord samtidigt. Ingen möjlighet att starta en till läsning/skrivning innan den förra avslutats. Andra nackdelar Om DATA O och DATA I inte är 8 bitar breda: Ingen möjlighet att skriva individuella bytes
AXI-bussen Moderna ARM-processorer använder (bland annat) en buss som kallas för AXI - Advanced extensible Interface I lab 5 ska vi titta på version 3 av denna buss.
Finesser hos AXI3 Stöd för att specificera att fler än ett ord ska skrivas/läsas i samma transaktion (burst-läsningar/burst-skrivningar) Stöd för att läsa in cachelineas med critical word first. Stöd för att skriva individuella bytes trots att data-bussarna är bredare än en byte med hjälp av Write Strobes Stöd för att, om mastern och slave stöder det, ha möjlighet att returnera transaktioner i en annan ordning än den de skickades i.
AXI3 - Typiska signaler *ADDR: Adress *DATA: Data Handskakningssignaler *VALID: Sändare har information *READY: Mottagare redo att ta emot Inget händer förräns båda dessa signaler är 1. *LAST: Markerar sista ordet i transaktionen
AXI3 - Typiska signaler *LEN och *SIZE: Transaktionens längd *BURST: Typ av burst 00: En viss adress används hela transaktionen 01: Adressen ökar hela tiden 10: Cirkulär (Används för att fylla på en cacheline, med stöd för critical word first) *ID: Transaktioner med samma ID måste hanteras i den ordning de anländer
AXI3 - Fem kanaler Läsadress Läsdata/läsbekräftelse Skrivadress Skrivdata Skrivbekräftelse Bussen är gjord för att arbeta med pipelining. Det går exempelvis att starta flera läsningar på rad utan att vänta på svar.
AXI3 signals - Read Address Channel ARADDR[31:0]: Adress vi vill läsa ifrån ARVALID: Master vill börja en lästransaktion ARREADY: Slave är redo att ta emot en lästransaktion ARLEN/ARSIZE: Specificerar antalet ord vi vill läsa ARBURST: Typ av burst-läsning (Cirkulär, linjär, fix) ARID: Master skickar identifikationsnummer (Plus några till)
AXI3 signals - Read Data Channel RXDATA[31:0]: Läsdata RVALID: Slave har giltig läsdata RREADY: Master är redo att ta emot denna RRESP: Status (lyckades transaktionen eller gick något snett?) RID: Slave returnerar identifikationsnummer RLAST: Markerar sista ordet i transaktionen
AXI3: Exempel på läsning
AXI3 signals - Write Address Channel AWADDR[31:0]: Adress AWVALID: Master vill börja en skrivtransaktion AWREADY: Slave är redo att ta emot en skrivtransaktion AWLEN och AWSIZE: Transaktionens längd AWBURST: Typ av burst-skrivning (Cirkulär, linjär, fix) AWID: Master skickar identifikationsnummer
AXI3 signals - Write Data Channel WVALID: Master har data tillgängligt: WREADY: Slave har möjlighet att ta emot data WDATA: Data som ska skrivas WSTRB: Byte strobes (ett för de bytes i WDATA som ska skrivas till minnet) WLAST: Markerar sista ordet i transaktionen WID: Master skickar identifikationsnumret
AXI3 signals - Write Response Channel BVALID: Slave har ett svar på en skrivning BREADY: Master redo att ta emot svar på en skrivning BID: Slave returnerar identifikationsnumret BRESP: Lyckades skrivningen?
AXI3: Exempel på skrivning
Demo av cacheeffekter Matris vektor Matrisen ligger antingen sparad normalt eller transponerad i primärminnet Matrisstorlekar: 2000 2000, 2048 2048, 2092 2092