Vulnerabilità di sicurezza nella gerarchia di memoria cache dei sistemi multicore

Docente

Davide Zoni (web, mail)

Area di ricerca

Architetture dei sistemi di elaborazione

Keyword (max 3 separate da virgola)

architetture dei calcolatori, C++, programmazione

Tecnologie da utilizzare

C++, gem5 cycle accurate simulator

Descrizione (max 500 caratteri)

La maggior parte dei processori commerciali moderni implementa una gerarchia di memoria cache supportata da un protocollo di coerenza al fine di ottimizzare la gestione dei dati tra i vari core e la memoria centrale. Sebbene i protocolli di coerenza e la gerarchia di memoria cache offrano benefici innegabili dal punto di vista prestazionale, vengono sempre più spesso utilizzati per veicolare attacchi informatici di tipo side-channel al fine di ottenere informazioni privilegiate in modo fraudolento.

Gem5 (www.gem5.org) è un simulatore architetturale full-system e cycle-accurate che permette quindi la simulazione di architetture multicore in cui è in esecuzione un sistema operativo Linux. Gem5 viene attualmente impiegato in ambito accademico ed industriale per le fasi di analisi ed esplorazione preliminari di nuove architetture di calcolo sia di classe embedded che ad alte prestazioni. Gem5 supporta i principali schemi di coerenza sia directory- che snooping-based.

A partire dalla versione corrente di gem5 (www.gem5.org) il progetto prevede le seguenti attività:

  1. Studio della tematica con focus su una vulnerabilità (documenti forniti del docente) [10 ore]
  2. Comprensione dell’utilizzo di gem5 per la simulazione di architetture multi-core [25 ore]
  3. Implementazione dell’infrastruttura per il monitoraggio della vulnerabilità side-channel [25 ore]
  4. Implementazione della contromisura nel cache controller [35 ore]
  5. Valutazione dei risultati con e senza la contromisura [10 ore]
  6. Stesura del report finale [20 ore]

Prerequisiti: conoscenza di C++, concetti di architetture dei calcolatori e sistemi operativi (ACSO)

Ottimizzazione delle prestazioni della simulazione RTL per circuiti digitali complessi

Docente

Davide Zoni (web, mail)

Area di ricerca

Architetture dei sistemi di elaborazione

Keyword (max 3 separate da virgola)

simulazione hardware, progettazione digitale, Verilog

Tecnologie da utilizzare

C++, Verilog, simulatore Icarus Verilog

Descrizione (max 500 caratteri)

La simulazione RTL (Register Transfer Level) è una fase cruciale nello sviluppo di
sistemi digitali complessi che permette di verificare il funzionamento del sistema
descritto e di identificare eventuali problemi di progettazione prima della realizzazione
fisica del circuito, consentendo quindi di correggere gli eventuali problemi rilevati prima
che il circuito venga realizzato risparmiando così tempo e costi.
La simulazione RTL prende come input una descrizione hardware a livello RTL,
specificata in un linguaggio HDL (Hardware Description Language) come Verilog o VHDL,
del comportamento desiderato dal circuito oggetto della simulazione.
La velocità e l’accuratezza di una piattaforma di verifica hardware e simulazione
sono aspetti fondamentali nel determinare il successo del progetto di un sistema digitale.

Icarus Verilog è un simulatore hardware scritto in C++ e basato su Verilog
che costituisce un’alternativa open source ai simulatori proprietari commerciali
offrendo molte delle stesse funzionalità, tra cui la capacità di eseguire la simulazione RTL,
l’analisi delle prestazioni e la verifica formale.

A partire dalla versione corrente di Icarus Verilog (LINK)
il progetto prevede le seguenti attività:

  1. Studio della tematica (documenti iniziali forniti a cura del docente) [30 ore]
  2. Comprensione dell’utilizzo di Icarus Verilog per la simulazione RTL di circuiti digitali [20 ore]
  3. Ottimizzazione delle prestazioni del simulatore RTL Icarus Verilog, implementando ad esempio un’architettura multi-threaded [40 ore]
  4. Valutazione dell’incremento prestazionale ottenuto dalle ottimizzazioni al punto 3. prendendo come benchmark un insieme eterogeneo di circuiti digitali [10 ore]
  5. Stesura del report finale [25 ore]

Prerequisiti: conoscenza di C++, non sono richieste conoscenze pregresse di progettazione hardware