Breker attacca la verifica della coerenza del sistema

Nodo di origine: 1598466

Il bello delle soluzioni architetturali per aumentare il throughput è che offrono grandi miglioramenti. Per questo motivo, più CPU su un chip con gerarchie di cache (parzialmente) condivise sono ora comuni nei processori server. Ma quel grande vantaggio viene fornito con una significativa complessità aggiuntiva nella verifica del comportamento corretto. In un modello di memoria condivisa, il valore memorizzato in un indirizzo di memoria logica appare non solo nella memoria principale (DRAM), ma anche potenzialmente in più cache su chip e anche possibilmente nei buffer nella struttura di coerenza. Il che solleva un problema di coerenza: per un dato indirizzo di memoria logica, questi dovrebbero contenere tutti lo stesso valore in tutte le circostanze, ma vero? Breker affronta questo problema di verifica della coerenza attraverso la loro tecnologia di sintesi dei test, esaminando la piena coerenza del sistema in sistemi eterogenei.

Breker attacca la verifica della coerenza del sistema

Le sfide della coerenza

La visualizzazione della memoria logica può diventare incoerente quando due o più processori stanno lavorando con la propria copia locale di un valore in un indirizzo condiviso e uno aggiorna il suo valore locale, sconosciuto all'altro. Ne consegue il caos quando le CPU lavorano ciascuna con la propria visione della realtà. Il tessuto coerente stesso ha una struttura che supporta i dati in transito, come i buffer di riscrittura. Anche la verifica della coerenza deve occuparsi di questi. E poi, naturalmente, le periferiche possono scrivere direttamente nella memoria principale tramite DMA, sconosciuto alle cache interne.

Chiaramente è necessario un meccanismo per mantenere sincronizzati i valori condivisi quando richiesto. Ma deve essere leggero. La sincronizzazione comporta una penalità di latenza che può ridurre significativamente il vantaggio in termini di prestazioni della memorizzazione nella cache, a meno che non venga utilizzata solo quando assolutamente necessario. Il problema della latenza è ulteriormente aggravato se si considerano le schede del processore multi-socket con memoria condivisa interconnesse tramite CXL. Aggiungere più complessità alle soluzioni.

Tecniche intelligenti vengono utilizzate per spiare i contenuti e le modifiche della cache, per determinare quando è necessario un aggiornamento della sincronizzazione. Questi includono sistemi di snooping e di coerenza basati su directory, che contrassegnano gli indirizzi della cache (più esattamente le righe della cache) come puliti (coerenti) o non validi, con una varietà di perfezionamenti. Questi metodi devono percorrere una linea sottile tra la riduzione al minimo dell'impatto sulle prestazioni nette e la garanzia di non possibili fughe. Sfugge all'essere possibili casi in cui una condizione non coerente può sopravvivere.

La coerenza del sistema Breker TrekApp

Per verificare che il progetto non superi quella linea sottile, gli ingegneri di verifica devono costruire in modo indipendente test che ritengono copriranno tutti i casi possibili. Coerenza di cache, fabric e IO in tutte le variazioni di controllo (alimentazione, interrupt, clock e così via) attraverso le quali il progetto potrebbe scorrere. È qui che entra in gioco l'app Breker Trek System Coherency.

Adnan Hamid, fondatore di Breker, ha iniziato molti anni fa nella verifica della coerenza presso AMD. Le idee che ha sviluppato lì attorno alla verifica della coerenza della cache e ai metodi di verifica del sistema in generale sono state integrate in Breker. La soluzione di coerenza si è ampliata nel tempo per includere anche la coerenza di tessuto e IO e l'interazione con la commutazione di alimentazione, ecc. Dopo aver dimostrato questa capacità con alcuni clienti principali, Breker ha annunciato il prodotto al recente DAC 2021 di San Francisco.

Adnan offre una panoramica: per sapere come ottenere una verifica della coerenza significativa, devi prima sapere come misurare la copertura. Come per qualsiasi obiettivo di copertura a livello di sistema, le metriche di copertura RTL non sono utili. Più utile è la copertura prima della macchina a stati del gestore di coerenza per cache, con varianti nei valori della cache e nel passo degli indirizzi, quindi una copertura simile per le interazioni tra cache incrociata, quindi la copertura attraverso un insieme sintetico di test di tortura basati su software, incrociati con alimentazione e altre transizioni, in esecuzione su un emulatore. System Coherency TrekApp supporta tutto questo.

E le fughe?

Parla con chiunque lavori con progetti coerenti e tutti ti diranno che trovano problemi di coerenza post-silicone. Avvicinarsi a quella linea sottile senza attraversarla è davvero piuttosto difficile. Dopotutto, nella verifica pre-silicio, stai cercando di modellare un vasto spazio di stato con, in confronto, un piccolo insieme di test, anche se esegui decine di migliaia di test. Dato che test esaustivi non sono nemmeno lontanamente possibili, il trucco è trovare la migliore serie pratica di test da eseguire. Poiché questo sarà inevitabilmente incompleto, System Coherency TrekApp si estende anche al post-silicio, aiutando a diagnosticare i guasti del silicio. Forse una transizione di potere nel mezzo della sincronizzazione. O un interrupt sfortunatamente sincronizzato con un aggiornamento dei tag. Dal punto di vista di Adnan, questo apprendimento post-silicio aiuterà a perfezionare il piano di copertura della verifica pre-silicio. Per ridurre se non eliminare le fughe post-silicio.

Cose interessanti, per inciso supportate sia per i sistemi basati su Arm che per quelli basati su RISC-V, recentemente approvati in un comunicato stampa con Nuclei System Technology. Puoi saperne di più QUI.

Leggi anche:

WEBINAR: Adnan sulle sfide nella verifica della sicurezza

Breker punta un cappello sui grafici formali nella verifica della sicurezza PSS

Verifica, RISC-V ed estensibilità

Condividi questo post tramite: Fonte: https://semiwiki.com/eda/306824-breker-attacks-system-coherency-verification/

Timestamp:

Di più da Semiwiki