FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

TileLinkの仕様まとめ (TL-UL)

TileLinkの3つのレベル

  • TL-UL (TileLink Uncached-Lightweight)
    • 簡易的なTileLink。Get/Putのアクセスのみをサポート。
  • TL-UH (TileLink Uncached-Heavyweight)
    • Uncachedだが、TL-ULよりは高性能。Multibeat operations/atomic accesses, Hint operationをサポート。
  • TL-C (TileLink Cached)
    • Cacheラインの転送をサポート。Channel-B/C/Eをサポート。
TL-UL TL-UH TL-C
Cache line transfers
Channels B+C+E
Multibeat operations
Atomic accesses
Hint operations
Get/Put accesses

TileLinkの5つのチャネル

TileLinkは以下の5つのチャネルを持っている。

  • Channel-A : Master → Slave。 特定アドレスへのリクエスト送信。
  • Channel-B : Slave → Master。 特定アドレスへのキャッシュブロック送信
  • Channel-C : Master → Slave。 キャッシュブロックからのレスポンス
  • Channel-D : Slave → Master。 特定アドレスからのレスポンス
  • Channel-E : Master → Slave。 キャッシュブロック転送での最終ハンドシェーク。

各チャネルでの信号説明の際に登場するTypeについてここで紹介しておく。

Type Direction Description
X クロック入力・リセット信号 TileLink Agentへの入力信号
C 制御信号 転送制御中には変化しない制御信号群
D データ信号 転送毎に変化する
F Final信号 最終転送の時のみ変化する信号
V Valid信号 C/D/Fに有効な信号が含まれているときのみ駆動する
R Ready信号 V信号が受け入れられた時に駆動する信号

TileLink Uncached Lightweight (TL-UL)

TileLinkの最小構成。以下の2つのオペレーションしか実行することが出来ない。

  • Get操作 : メモリからデータを読み込む。
  • Put操作 : メモリに対してデータを書き込む。書込み操作については、バイト単位での細粒度書き込みが許される。

  • Channel-A での転送できるメッセージ (()内は実際のOpcode)

    • Get(4)
    • PutFullData(0)
    • PutPartialData(1)
  • Channel-D で転送できるメッセージ (()内は実際のOpcode)
    • AccessAckData(1)
    • AccessAck(0)

Get操作 (Read)

  • Master : Getコマンドを発行する
  • Slave : Getコマンドを受け取ると、AccessAckDataを返す。

PutFullData操作 / PullPartialData操作 (Write)

  • Master : PutFullData / PullPartialData を発行する
  • Slave : PutFullData / PullPartialDataコマンドを受け取ると、AccessAckを返す。
f:id:msyksphinz:20180215231604p:plain
図. TL-ULのトランザクションの例。Get/Putのどちらでも、A-Channelでのリクエストに対して、D-ChannelでのAcknowledgeを返す必要がある。

関連記事