Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Linguaggi di programmazione

Snellire il flusso di dati nei circuiti digitali

Una guida sulle specifiche di Tydi per un trasferimento dati migliore nel design.

― 7 leggere min


Trasferimenti di DatiTrasferimenti di DatiEfficaci con Tydiprogettazione di circuiti digitali.Semplificare il flusso dei dati nella
Indice

Tydi è una specifica che aiuta le persone a progettare come i dati fluiscono nei circuiti digitali. Permette ai progettisti di descrivere come diversi tipi di dati, che possono cambiare in dimensione, vengono inviati su stream usando tipi semplici e chiari. Questi tipi di dati sono utili in molte aree come big data e progetti SQL. Tydi mira a rendere più facile per i progettisti definire come diverse parti di un sistema comunicano tra loro, rispetto ai metodi più vecchi che si concentravano su bit e byte.

In questo articolo, presenteremo un formato intermedio che aiuta gli utenti a definire i tipi di Tydi. Questo formato consente di creare e collegare componenti che utilizzano Tydi STREAMS come connessioni, chiamate Streamlets. Aiuta anche a mantenere informazioni importanti come la documentazione durante il processo di design. I tipi e gli Streamlets possono essere riutilizzati in diversi progetti, e gli stream di Tydi possono aiutare a stabilire accordi su come le parti di un sistema più grande interagiranno.

Costruire Interfacce Migliori

Quando i progettisti devono trasferire dati in streaming all'interno di circuiti digitali, possono creare le proprie connessioni o utilizzare standard esistenti come l’Avalon-ST di Intel o l’AXI4-Stream di Arm. Usare una connessione standard rende più semplice per altri progettisti attaccare diverse parti, dato che queste connessioni usano gli stessi segnali e regole. Questo porta a un migliore riutilizzo dei design e aiuta gli strumenti che gestiscono la IP (Proprietà Intellettuale) a automatizzare il processo.

Tuttavia, gli standard esistenti non spiegano come i dati debbano essere rappresentati. Per questo motivo, i progettisti devono comunque creare, documentare e condividere queste rappresentazioni dei dati. Inoltre, molti degli strumenti per integrare le IP sono proprietari, rendendo più difficile lavorare con questi componenti in software al di fuori di quegli strumenti specifici.

Per affrontare queste sfide, Tydi consente ai progettisti di definire chiaramente i dati inviati con un sistema di tipi completo per diverse strutture di dati. Questo articolo spiegherà come Tydi può essere abbinato al formato intermedio per creare connessioni semplici per i componenti del sistema.

Rappresentazione Intermedia (IR)

L'obiettivo principale della rappresentazione intermedia è fornire un modo semplice per dichiarare i tipi di Tydi, definire connessioni e collegare parti secondo le regole di Tydi. L'IR non è pensato per essere un linguaggio completo per il design hardware; piuttosto, dovrebbe lavorare insieme agli strumenti che aiutano ad automatizzare i processi di design. Non si occupa direttamente del comportamento ma rende più facile verificare e delineare le azioni previste.

Strumenti e Approcci Correlati

Molti progetti recenti si concentrano sullo sviluppo di linguaggi e framework migliori per elaborare dati in streaming. Quest'area ha visto ricerche significative ed è evoluta negli ultimi due decenni. Nel frattempo, continuano gli sforzi per migliorare gli strumenti utilizzati per progettare hardware, inclusi nuovi linguaggi di descrizione e metodi di sintesi di alto livello che semplificano il processo.

Sebbene linguaggi e framework migliorati possano accelerare il lavoro di design, gli standard di interfaccia consolidati aiutano a garantire che diversi componenti possano lavorare insieme. Inoltre, gli strumenti di design forniscono librerie di componenti riutilizzabili, rendendo più facile creare sistemi complessi.

Per promuovere un insieme completo di strumenti, c'è uno sforzo separato per un linguaggio front-end chiamato Tydi-lang, che aiuterà a descrivere il comportamento dei componenti.

Tipi Chiave in Tydi

Tydi definisce cinque tipi principali per le strutture dati:

  1. Stream: Usato per flussi di dati.
  2. Null: Rappresenta un valore singolo che è semplicemente nullo.
  3. Bits: Rappresenta un segnale dati contenente un numero specificato di bit.
  4. Group: Una raccolta di diversi campi, dove tutti possono essere impostati contemporaneamente.
  5. Union: Una scelta tra diversi campi, dove solo uno può essere attivo in qualsiasi momento.

L'IR consente ai progettisti di creare e utilizzare questi tipi in varie combinazioni, dando loro la flessibilità di definire come le informazioni sono organizzate nei trasferimenti di dati.

Comprendere gli Stream e le loro Proprietà

Il tipo Stream è cruciale in quanto non solo rappresenta il percorso fisico per inviare dati, ma contiene anche informazioni che descrivono come i dati sono strutturati. Ad esempio, gli Stream possono indicare se i dati arrivano in serie e se richiedono un segnale per contrassegnare la fine della serie. Varie proprietà degli Stream, incluso il throughput (quanta parte di dati viene trasferita in un momento), la direzione e la complessità (che determina come i dati devono essere organizzati durante i trasferimenti), aiutano i progettisti a specificare come fluiranno gli elementi di dati.

Importanza delle Interfacce

I tipi di Tydi non riguardano solo quali dati vengono trasferiti; trasmettono anche come dovrebbero essere inviati. Rendendo questo chiaro, una descrizione dettagliata dello Stream può agire come un contratto tra diversi componenti, aiutando tutti coinvolti a capire cosa aspettarsi durante i trasferimenti di dati.

L'IR si basa su questa idea utilizzando Interfacce, che sono insiemi di porte su un componente che gestiscono gli Stream in entrata e in uscita. Ciascuna Interfaccia o le sue porte possono anche includere documentazione per chiarire ulteriormente i loro ruoli.

Progettare e Collegare Componenti

L'IR consente anche ai progettisti di dichiarare componenti noti come Streamlets, che consistono in un'Interfaccia e, potenzialmente, un'Implementazione. Questi Streamlets aiutano i progettisti a collegare meglio le diverse parti, aumentando il riutilizzo e la compatibilità.

Implementazione Strutturale

Una caratteristica chiave dell'IR è la sua capacità di creare implementazioni strutturali, che consentono ai progettisti di collegare più Streamlets insieme. Questo significa che diverse parti di un sistema possono essere integrate più facilmente, e le loro connessioni possono essere definite chiaramente, riducendo il rischio di errori.

Verifica del Comportamento

Sebbene l'IR non esprima comportamenti dettagliati, consente di specificare il comportamento tramite test. Possono essere creati strumenti per verificare che gli input e gli output corrispondano a ciò che ci si aspetta nel design, garantendo che tutto funzioni correttamente. Questo approccio significa che i progettisti non devono preoccuparsi della programmazione specifica richiesta quando si rivolgono a vari linguaggi o hardware.

Toolchain di Prototipo

Per mostrare come l'IR può essere utilizzato efficacemente, è stata sviluppata una toolchain di prototipo. Questa toolchain è composta da vari componenti, inclusi un sistema di query per gestire le definizioni dell'IR, una grammatica e un parser per interpretare quelle definizioni e un backend che converte l'IR in un linguaggio di descrizione hardware come VHDL.

Sistema di Query

Il sistema di query aiuta a memorizzare e recuperare informazioni sull'IR in modo flessibile. Questo sistema consente agli utenti di ottenere ciò di cui hanno bisogno su richiesta piuttosto che passare attraverso un processo di compilazione tradizionale. Consentendo questo tipo di accesso, i progettisti possono lavorare in modo più efficiente ed evitare calcoli non necessari.

Testing e Validazione

Un altro aspetto significativo dell'IR è la sua capacità di supportare il testing. Propone una grammatica per la verifica a livello di transazione, dove il comportamento dei componenti può essere controllato senza concentrarsi sui dettagli di programmazione specifici. Questo significa che diversi aspetti possono essere testati in parallelo, migliorando l'efficienza durante il processo di design.

Conclusione

La rappresentazione intermedia per Tydi offre un nuovo modo per definire come i dati vengono spostati tra i componenti nei circuiti digitali. Concentrandosi su tipi chiari e basati sui dati, consente ai progettisti di creare interfacce più riutilizzabili e gestibili. Attraverso questa struttura, i progettisti possono comunicare più facilmente le loro intenzioni, supportare il testing e garantire che i componenti funzionino bene insieme.

Utilizzando questo approccio, l'obiettivo è semplificare design complessi e migliorare come le diverse parti di un sistema si uniscono, aprendo la strada a processi di sviluppo più efficienti in futuro.

Fonte originale

Titolo: An Intermediate Representation for Composable Typed Streaming Dataflow Designs

Estratto: Tydi is an open specification for streaming dataflow designs in digital circuits, allowing designers to express how composite and variable-length data structures are transferred over streams using clear, data-centric types. These data types are extensively used in a many application domains, such as big data and SQL applications. This way, Tydi provides a higher-level method for defining interfaces between components as opposed to existing bit and byte-based interface specifications. In this paper, we introduce an open-source intermediate representation (IR) which allows for the declaration of Tydi's types. The IR enables creating and connecting components with Tydi Streams as interfaces, called Streamlets. It also lets backends for synthesis and simulation retain high-level information, such as documentation. Types and Streamlets can be easily reused between multiple projects, and Tydi's streams and type hierarchy can be used to define interface contracts, which aid collaboration when designing a larger system. The IR codifies the rules and properties established in the Tydi specification and serves to complement computation-oriented hardware design tools with a data-centric view on interfaces. To support different backends and targets, the IR is focused on expressing interfaces, and complements behavior described by hardware description languages and other IRs. Additionally, a testing syntax for the verification of inputs and outputs against abstract streams of data, and for substituting interdependent components, is presented which allows for the specification of behavior. To demonstrate this IR, we have created a grammar, parser, and query system, and paired these with a backend targeting VHDL.

Autori: Matthijs A. Reukers, Yongding Tian, Zaid Al-Ars, Peter Hofstee, Matthijs Brobbel, Johan Peltenburg, Jeroen van Straten

Ultimo aggiornamento: 2023-09-27 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2308.13436

Fonte PDF: https://arxiv.org/pdf/2308.13436

Licenza: https://creativecommons.org/licenses/by/4.0/

Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.

Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.

Altro dagli autori

Articoli simili