デジタル回路のデータフローを効率化する
Tydiの仕様についてのガイド、デザインにおけるデータ転送の改善のために。
― 1 分で読む
Tydiはデジタル回路のデータフローをデザインするための仕様だよ。設計者が異なるサイズのデータがストリームを通じてどう送られるかをシンプルで分かりやすい型を使って説明できるんだ。このデータ型はビッグデータやSQLプロジェクトなど、いろんな分野で役に立つ。Tydiは、ビットやバイトに焦点を当てていた昔の方法に比べて、システムの異なる部分がどう話すかを定義するのを簡単にすることを目指してる。
この記事では、ユーザーがTydiの型を定義するための中間形式を紹介するよ。この形式を使うと、Tydi Streamsを接続として使うコンポーネントを作ったりリンクしたりできる、これをStreamletsって呼ぶんだ。また、設計プロセス中のドキュメントなどの重要な情報を保持するのにも役立つ。型やStreamletsは異なるプロジェクトで再利用できるし、Tydiのストリームは大きなシステムの部分どうしがどんなふうにやり取りするかの合意を設定するのにも役立つよ。
より良いインターフェースの構築
設計者がデジタル回路内でストリーミングデータを転送する必要があるときは、自分の接続を作るか、IntelのAvalon-STやArmのAXI4-Streamみたいな既存の標準を使うことができる。標準の接続を使うと、他の設計者が異なる部分を接続しやすくなるから、デザインの再利用が進んで、IP(知的財産)を管理するツールがプロセスを自動化するのにも役立つ。
ただし、既存の標準はデータがどう表現されるべきかを説明していないから、設計者はまだこれらのデータ表現を作り、文書化し、共有する必要がある。また、IPを統合するためのツールの多くは商用のもので、特定のツール外のソフトウェアでこれらのコンポーネントを使うのが難しくなるんだ。
これらの課題に対処するために、Tydiは異なるデータ構造のための完全な型システムを使って送信されるデータを明確に定義できるようにするよ。この記事では、Tydiを中間形式と組み合わせて、システムコンポーネントのシンプルな接続を作る方法を説明するね。
中間表現(IR)
中間表現の主な目標は、Tydiの型を宣言し、接続を定義し、Tydiのルールに従って部分同士を接続するための簡単な方法を提供することだよ。IRはハードウェア設計のための完全な言語ではなく、デザインプロセスを自動化するためのツールと一緒に働くべきなんだ。直接的な動作は扱わず、意図されたアクションを検証したりアウトラインを描くのを簡単にするのが目的なんだ。
関連ツールとアプローチ
最近のプロジェクトは、ストリーミングデータを処理するためのより良い言語やフレームワークの開発に焦点を当てているよ。この分野は大きな研究が進んでいて、過去20年の間に進化してきた。一方で、ハードウェア設計に使われるツールを強化する努力も続いていて、新しい記述言語や高水準合成方法がプロセスを簡単にしているんだ。
改善された言語やフレームワークがデザイン作業を早くする一方で、確立されたインターフェース標準は異なるコンポーネントが一緒に動作できることを確保するのに役立つ。さらに、設計ツールは再利用可能なコンポーネントのライブラリを提供して、複雑なシステムを作るのを楽にしてくれる。
完全なツールセットを促進するために、コンポーネントの動作を説明するためのフロントエンド言語、Tydi-langという別の取り組みも行われているよ。
Tydiの主要な型
Tydiはデータ構造のために5つの主要な型を定義してる:
- Stream:データのストリーム用。
- Null:単純にnullな単一の値を表す。
- Bits:指定されたビット数を持つデータ信号を表す。
- Group:同時にすべてを設定できる複数のフィールドのコレクション。
- Union:いくつかのフィールドの選択肢で、同時に1つだけがアクティブになれる。
IRは設計者がこれらの型をいろんな組み合わせで作って使えるようにして、データ転送の情報の整理の仕方を定義する柔軟性を提供するんだ。
ストリームとその特性の理解
Stream型は重要で、データを送る物理的な経路を表すだけでなく、データの構造がどうなっているかを説明する情報も含んでるんだ。例えば、Streamsはデータが連続しているかどうかや、連続の終わりを示す信号が必要かどうかを示すことができる。スループット(どれだけのデータが一度に転送されるか)、方向、複雑さ(データが転送中にどう整理されなきゃならないかを決める)などのさまざまな特性が、設計者がデータ要素がどう流れるかを指定するのを手助けするよ。
インターフェースの重要性
Tydiの型は、ただデータが転送される内容だけじゃなく、どう送られるべきかも伝えるんだ。これを明確にすることで、詳細なStreamの説明が異なるコンポーネント間の契約みたいに働いて、データ転送中に何を期待するべきかを関与する全員が理解できるようになるんだ。
IRはこのアイデアを発展させて、ポートのセットで構成されたコンポーネントのインターフェースを使って、IncomingとOutgoingのStreamsを管理するんだ。各インターフェースやそのポートも、役割をさらに明確にするためのドキュメントを含めることができるよ。
コンポーネントの設計と接続
IRはまた、インターフェースと潜在的な実装から構成されるStreamletsというコンポーネントを宣言することを可能にする。これらのStreamletsは、設計者が異なる部分をより良く接続できるように助けて、再利用性と互換性を高めるんだ。
構造的実装
IRの重要な機能の1つは、構造的実装を作る能力で、設計者が複数のStreamletsをリンクできるようにすることだよ。これによって、システムの異なる部分をより簡単に統合でき、その接続が明確に定義できるから、エラーのリスクが減るんだ。
動作の検証
IRは詳細な動作を表現しないけど、テストを通じて動作を仕様化することを許可するんだ。ツールを使って、入力と出力が設計で期待されるものと一致するかを確認できるようにすることで、すべてが正しく機能することを保証できる。このアプローチにより、設計者はさまざまな言語やハードウェアをターゲットにする時に必要な特定のプログラミングについて心配する必要がなくなるよ。
プロトタイプツールチェーン
IRが効果的に使えるように、プロトタイプのツールチェーンが開発されたよ。このツールチェーンは、IRの定義を管理するクエリシステム、これらの定義を解釈するための文法とパーサー、IRをVHDLのようなハードウェア記述言語に変換するバックエンドなど、さまざまなコンポーネントから構成されているんだ。
クエリシステム
クエリシステムは、IRに関する情報を柔軟に保存・取得するのを助けてくれる。このシステムは、ユーザーが必要なものを必要なときに取得できるようにして、従来のコンパイルプロセスを経る必要をなくすんだ。このアクセスの仕方によって、設計者はより効率的に作業できて、無駄な計算を避けられるようになるよ。
テストと検証
IRのもう一つの重要な側面は、テストをサポートする能力だよ。トランザクションレベルの検証のための文法を提案していて、コンポーネントの動作が特定のプログラミングの詳細に焦点を当てずにチェックできるようになってる。これにより、異なる側面を並行してテストできるから、設計プロセス中の効率が向上するんだ。
結論
Tydiの中間表現は、デジタル回路内のコンポーネント間でデータがどう移動するかを定義する新しい方法を提供するよ。明確でデータ駆動型の型に焦点を当てることで、設計者がより再利用可能で管理しやすいインターフェースを作れるようにするんだ。この構造を通じて、設計者は自分の意図をより簡単に伝え、テストをサポートし、コンポーネントがうまく連携することを保証できるようになるよ。
このアプローチを使って、複雑なデザインを簡素化し、システムのさまざまな部分がどう一緒に機能するかを改善して、将来の効率的な開発プロセスの道を切り開くことが目指されてるんだ。
タイトル: An Intermediate Representation for Composable Typed Streaming Dataflow Designs
概要: 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.
著者: Matthijs A. Reukers, Yongding Tian, Zaid Al-Ars, Peter Hofstee, Matthijs Brobbel, Johan Peltenburg, Jeroen van Straten
最終更新: 2023-09-27 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2308.13436
ソースPDF: https://arxiv.org/pdf/2308.13436
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://iccad.com/scientific-paper/
- https://github.com/matthijsr/til-vhdl/issues/94
- https://www.chisel-lang.org/
- https://github.com/matthijsr/til-vhdl/issues/47
- https://github.com/matthijsr/til-vhdl/issues/40
- https://anonymous.4open.science/r/til-vhdl-B6CD
- https://anonymous.4open.science/r/til-vhdl-B6CD/demo-cmd/til_samples/paper_example.til
- https://www.acm.org/publications/proceedings-template
- https://github.com/matthijsr/til-vhdl
- https://doi.org/
- https://creativecommons.org/licenses/by-nc-nd/4.0/