200 likes | 299 Vues
SHMARB - Ciclo di Read PD32. T1. T2. T3. Utilizzo del segnale di WAIT*: Memorie o periferiche lente Memoria condivisa Controllore DMA. MAB. A. MRD. DATO. MDB. T1. T2. TW1. TW2. TW3. T3. MAB. A. MRD. DATO. MDB. WAIT*. SHMARB - Ciclo di Write PD32. T1. T2. T3. MAB.
E N D
SHMARB - Ciclo di Read PD32 T1 T2 T3 • Utilizzo del segnale di WAIT*: • Memorie o periferiche lente • Memoria condivisa • Controllore DMA MAB A MRD DATO MDB T1 T2 TW1 TW2 TW3 T3 MAB A MRD DATO MDB WAIT*
SHMARB - Ciclo di Write PD32 T1 T2 T3 MAB A MWR DATO MDB T1 T2 TW1 TW2 TW3 T3 MAB A MWR DATO MDB WAIT*
SHMEM RAM0 4M*8 ADD(21:0) SHMEMWE WE SHMEMOE OE 16 Mbytes (4M*32) accessibile a byte , word, longword SHMEMCE0 SHMEMD(7:0) CE D(7:0) RAM1 4M*8 A(21:0) SHMEMWE SHMEMOE SHMEMD(31:0) WE SHMEMCE0 OE SHMEMCE1 SHMEMD(15:8) SHMEMCE1 CE D(7:0) SHMEMCE2 SHMEMCE3 SHMEMA(21:0) RAM2 4M*8 SHMEMA(21:0) ADD(21:0) WE SHMEMCE2 OE SHMEMD(23:16) CE D(7:0) RAM3 4M*8 ADD(21:0) WE OE SHMEMCE3 SHMEMD(31:24) CE D(7:0)
SHMEM Memory Mapping Spazio di indirizzamento PD32 (byte) Affinche’ il PD32 acceda in lettura la RAM interna SHMARB deve “tradurre” gli indirizzi del MAB PD32 in indirizzi validi per la SHMEM Locazio ne 0x00000000 Spazio memoria programma PD32 MAB(31:2) => SHMEMA(21:0) 0x3C000000 0x000000 0x3C000001 0x000001 ................................................ ................................................ 0x3C3FFFFF 0x3FFFFF MAB(31:24) si usa per la decodifica MAB(23:2) si usa per la generazione SHMEMA inoltre per garantire tutti i tipi di accesso Mb0 => SHMEMCE0 Mb1 => SHMEMCE1 Mb2 => SHMEMCE2 Mb3 => SHMEMCE3 Locazio ne 0xF0000000 SHMEM shared RAM (16 Mbytes) Locazio ne 0xF0FFFFFF Locazio ne 0xFFFFFFFF
SHMARB - Encoder FLAG0 MARKER0(3:0) FLAG1 MARKER1(3:0) FLAG2 MARKER2(3:0) FLAG3 MARKER3(3:0) PDEN(1:0) PDEN = i abilita l’accesso del PD32i alla SHMEM
Architettura progetto SHMARB Memoria PD32-0 SHMARB Encoder PD32-0 MDB-0 MAB-0 MARKER counter MCB-0 Internal Clk SHMEM (4M*32) SHMEMA SHMEMD Memoria PD32-3 SHMEMC PD32-3 MDB-3 MAB-3 MCB-3
Blocchi funzionali unita’ SHMARB • SHMEM INTERFACE • - gestione segnali SHMEM • SHMEMA • SHMEMD • SHMEMCEi,SHMEMWE,SHEMEMRD • PD32 DECODING • - decodifica “memory mapping” MAB(31:24),MWR,MRD • - generazione flag richiesta accesso inizio (MEMREQ-i) • SCO • - gestione timing flag (FLAG-i) • - generazione marker temporali • - gestione linee di WAIT*-i • - gestione abilitazione accesso SHMEM
Protocollo SHMARB PD32 SHMARB (al reset la SHMEM e’ libera) 1) Inizio ciclo di accesso di uno piu’ PD32 2) Memoria libera 3) Generazione flag richiesta di accesso (MEMREQ-i) e MARKER temporale (MARKER-i(3:0)) 4) Lettura Encoder ed abilitazione di un PD32 all’accesso con eventuale gestione del WAIT per gli altri. Durante l’accesso di un PD32 devo garantire il punto 3 per gli altri PD32 e conseguente generazione WAIT states 5) Alla fine del ciclo di accesso: - Se non ho richieste attive (MEMREQi) torno al punto 2 - Se ho richieste attive torno al punto 4 Inizio ciclo di accesso di uno piu’ PD32
Protocollo SHMARB RESET NON ci sono richieste di accesso SHMARB (al reset la SHMEM e’ libera) MEM FREE 2) Memoria libera 3) Generazione flag richiesta di accesso (MEMREQi) e MARKER temporale (MARKi(3:0)) 4) Lettura Encoder ed abilitazione di un PD32 all’accesso con eventuale gestione del WAIT per gli altri. Durante l’accesso di un PD32 devo garantire il punto 3 per gli altri PD32 e conseguente generazione WAIT states 5) Alla fine del ciclo di accesso: - Se non ho richieste attive (MEMREQi) torno al punto 2 - Se ho richieste attive torno al punto 4 Richiesta di accesso Ciclo R/W finito e NON ci sono richieste di accesso READ ENC Ciclo R/W finitoe ci sono richieste di accesso MEM BUSY Ciclo R/W in corso
SHMARB Schema a blocchi funzionale - prima approssimazione - MRD-0,MWR-0,Mb-0(3:0) SHMEM Interface SHMEMOE MDB-0(31:0) SHMEMWE MAB-0(23:2) SHMEMCE3 SHMEMCE2 MRD-1,MWR-1,Mb-1(3:0) SHMEMCE1 MDB-1(31:0) SHMEMCE0 MAB-1(23:2) MRD-2,MWR-2,Mb-2(3:0) SHMEMA(31:0) MDB-2(31:0) SHMEMD(31:0) MAB-2(23:2) MRD-3,MWR-3,Mb-3(3:0) MDB-3(31:0) MAB-3(23:2) WAIT*-i ENABLE-i MRD-0,MWR-0 PD32 Decoding MAB-0(31:24) SCO MRD-1,MWR-1 MEMREQ-i MAB-1(31:24) Internal CLK MRD-2,MWR-2 MAB-2(31:24) MARKER Encoder MRD-3,MWR-3 Mem Map Dec. MAB-3(31:24)
SHMARB - SHMEM INTERFACE Segnali di controllo ENABLE-0 ENABLE-0 ENABLE-0 MWR-0 MRD-0 Mb-0(3:0) *4 ENABLE-1 ENABLE-1 ENABLE-1 MWR-1 MRD-1 Mb-1(3:0) *4 ENABLE-2 ENABLE-2 ENABLE-2 SHMEMWE SHMEMOE SHMEMCE(3:0) MWR-2 MRD-2 Mb-2(3:0) *4 ENABLE-3 ENABLE-3 ENABLE-3 MWR-3 MRD-3 Mb-3(3:0) *4
SHMARB - SHMEM INTERFACE Address e Data Bus ENABLE-0 MAB-0(23:2) *22 ENABLE-1 MAB-1(23:2) *22 ENABLE-2 SHMEMA(21:0) MAB-2(23:2) *22 Questa logica va ripetuta 4 volte ENABLE-3 MAB-3(23:2) *22 ENABLE-i AND MWR-i *32 SHMEMD(31:0) ENABLE-i MDB-i (31:0) AND MRD-i *32
SHMARB - PD32 DECODING Generazione MEMREQ-i MAB-i (24) NOR MAB-i (25) Decodifica MAB(31:24) = 0xF0 MAB-i (26) MAB-i (27) MAB-i (28) AND AND MAB-i (29) MEMREQ-i MAB-i (30) MAB-i (31) MWR-i OR MRD-i Questa logica e’ ripetuta 4 volte per i che va (0..3)
SHMARB - SCO (MEMREQ-i timing) Fine ciclo di accesso Internal CLK MEMREQ-i (MRD or MWR) FLAG-i MARKER-i PDEN(1:0) i- abilitato CLKEN ENABLE-i WAIT*-i ENWAIT* MEM FREE READ ENC MEM BUSY
SHMARB - SCO • - gestione timing flag (FLAGi) • - generazione marker temporali MEMREQ-3 FLAG-3 D3 Q3 MEMREQ-2 FLAG-2 D2 Q2 MEMREQ-1 FLAG-1 D1 Q1 MEMREQ-0 FLAG-0 D0 Q0 CLK MARKER REGISTERS CLK CL RESET D(3:0) MARKER-0(3:0) Q(3:0) MARKER COUNTER FLAG-0 CLK Q(3:0) D(3:0) MARKER-1(3:0) Q(3:0) FLAG-1 CLK CLK CLK D(3:0) MARKER-2(3:0) Q(3:0) FLAG-2 CLK MARKER-3(3:0) D(3:0) Q(3:0) FLAG-3 CLK
SHMARB - SCO - gestione abilitazione accesso SHMEM (ENABLE-i) FLAG-0 FLAG0 MARKER-0(3:0) MARKER0(3:0) FLAG-1 FLAG1 MARKER-1(3:0) MARKER1(3:0) Q3 D3 Q3 FLAG-2 Q2 FLAG2 D2 Q2 PDEN(1:0) MARKER-2(3:0) MARKER2(3:0) Q1 D1 Q1 FLAG-3 FLAG3 Q0 D0 Q0 MARKER-3(3:0) MARKER3(3:0) CLKEN CLK CL RESET Q3 AND ENABLE-3 MEMFREE* Q2 ENABLE-2 AND MEMFREE* e’ generato dalla macchina a stati quando non ci sono trasferimenti in corso e lo uso per tenere i bus di SHMEM ad un valore inattivo MEMFREE* Q1 ENABLE-1 AND MEMFREE* Q0 ENABLE-0 AND MEMFREE*
SHMARB - SCO - gestione WAIT states FLAG-3 ENWAIT* WAIT*-3 OR ENABLE-3 FLAG-2 ENWAIT* WAIT*-2 OR ENABLE-2 FLAG-1 ENWAIT* WAIT*-1 OR ENABLE-1 FLAG-0 ENWAIT* WAIT*-0 OR ENABLE-0 La SCO asserisce bassa la linea di WAIT-i solo se il PD32-i ha richiesto l’accesso alla SHMEM e se la macchina a stati ne ne abilita uno diverso da i
SHMARB - SCO RESET FLAG-0 OR ACCREQ = 0 FLAG-1 ACCREQ MEM FREE FLAG-2 FLAG-3 ACCREQ = 1 MEMBUSY = 0 and ACCREQ = 1 FLAG-0 AND OR ENABLE-0 READ ENC FLAG-1 AND ENABLE-1 MEMBUSY MEMBUSY = 0 and ACCREQ = 0 FLAG-2 AND ENABLE-2 MEM BUSY FLAG-3 AND ENABLE-3 MEMBUSY = 1
SHMARB - SCO Generazione segnali di controllo (CLKEN, ENWAIT, MEMFREE) CLKEN ENWAIT* MEMFREE* SMREG(1) SMREG(0) MEM_FREE 0 1 0 0 0 READ_ENC 1 1 1 0 1 MEM_BUSY 0 0 1 1 0 CLKEN <= SMREG(0).Q MEMFREE* <= SMREG(1).Q or SMREG(0).q ENWAIT* <= SMREG(1).Q* SMREG(0).D <= not(SMREG(1).Q) and not(SMREG(0).Q) and ACCREQ or SMREG(1).Q and not(MEMBUSY) and ACCREQ SMREG(1).D <= SMREG(0).Q or SMREG(1).Q and MEMBUSY
SHMARB - SCO Logica macchina a stati SM1Q* AND OR SM0Q CLKEN D SMREG(0) Q SM0Q* ACCREQ SM0Q* CLK Q* CLK AND CL MEMBUSY* RESET SM1Q OR SM0Q MEMFREE* OR SM1Q D SMREG(1) Q MEMBUSY AND SM1Q* ENWAIT* CLK Q* CLK SM1Q CL RESET