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を返す。