# TDMA Based Protocol
繼上次的 CAN,接著介紹其他可能未來與之競爭的協議。
:::info
在 TDMA-based 的 protocol 中,不再是靠 CAN bus 傳輸,而是有一個 Switch 來負責決定當前要傳輸哪個 Signal;所有依靠同個 Switch 的 Signal 都算是同一種 Message。
:::
# TTEthernet
從名字來看,他是 Ethernet 的加料版,多了 TT。
TT 的意思是 Time-Triggered,也就是可以確定 message 何時被送出,不會有 worst case 無限大的情況。
## 特色
- QoS
- 具有優先順序
- preemptive
- Time synchronization
## Traffic types
TTEthernet 傳輸時有分成以下的種類:
- Time-Triggered (TT) traffic (highest priority)
- Sent over the network at predefined (scheduled) time
- 在特定的時間只讓某個 node 來傳;會需要 Global time 的概念,也就是利用 Time synchronization
- TTEthernet 主要的特色,通常會採用的模式
- Rate-Constrained (RC) traffic
- Sent over the network with predefined bandwidth
- 雖然不確定何時送出,但是可以知道保留多少 bandwidth 給予使用
- Best-Effort (BE) traffic (lowest priority)
- Conventional Ethernet
- 就是原本的 Ethernet;基本上沒有給予任何保證;最不常會採用的模式
## 最大的問題
雖然 TTEthernet 提供了像是時間同步跟 TT 這些特色,但是由於其成本太高,導致他相比 CAN 不那麼常被採用。
# Time-Sensitive Networking (TSN)
他也是 Ethernet 的一種延伸。
原本名字叫做 Audio Video Bridging (AVB),因為他原本是從影音傳輸來的,但是維護者不想讓他只侷限於影音,所以就把他換個名字。
## 特色
跟 TTEthernet 類似:
- QoS
- 具有優先順序,所以高優先度的 message 可以有時間上的保障
- preemptive
- Time synchronization
- 所以可以達到 Global Time,提供 TT 這個特色
- Frame replication and elimination
- 有提供「備份」這個功能,以因應某些 reliability 的需求
- 多傳一份走不同路徑,接收方也要有辦法分辨哪個是備份,或者說有沒有遺失
- 並且還會有 Bridge(Switch) 的結構
- 可以由 Sender 或 Bridge 負責發出備份
- 可以由 Receiver 或 Bridge 負責處理備份
- Time aware shaper
- 為了實現 TT 的一個手段
- 這個結構由「Gate Control List」跟「Time aware Gate」組成
- 每個「Time aware Gate」會對應一個 Queue,可以為每個 queue 制定對應的 priority
- Gate Control List 有兩個要素,一個是週期,一個是每個 tick 的內容
- 每個 tick 的內容就是決定當前時間哪個 gate 有開啟
- 週期就是會以此為循環
當然 TSN 也不只用於車聯網,也可以用於工控系統等。
:::warning
由於其具有 TT 以及 Reliability 的特色,所以是目前認為最有可能跟 CAN 競爭的對手
:::
# Other protocol with TDMA concept
例如 FlexRay。
總之以上的協議因為都具有 TT 這個特色,又叫 TDMA,都是透過時間來區分誰可以使用該區間的資源。
後面的時間分析不去細分是哪種協議,而是去分析「TDMA based」這種協議。
## Abstraction
上面提到:
:::info
後面的時間分析不去細分是哪種協議,而是去分析「TDMA based」這種協議。
:::
這裡就是使用了「抽象化 Abstraction」這個技巧。
根據 wiki 的定義,「抽象化 Abstraction」的意思是「去掉細節,保留核心概念」的這個「過程」,或者是這個過程的結果。
因為我們不是真的去業界做東西,我們希望普遍地分析,所以才會改成去分析那些 protocol 的共同有的核心概念,TDMA based 的 protocol。
>在分析 CAN 的時候也有用到,我們不去仔細討論 protocol 的細節
>因為我們只是想知道 non preemptive 且具有 priority 的情境下反應時間會是如何
:::warning
在做或是思考 Generalization 的問題或事情時候,適時的使用抽象化這個技巧,可以幫助我們觸及問題的核心 :)
:::
---
# TDMA-based Problem Formulation
首先腦中想像一個時間軸被切成好多等分,這些等分中,有些可以用來傳輸的叫做「time slot」,這些「time slot」可以來分配給很多不同的 message。
這些「time slot」的分佈以及「message arrival」的分佈又叫做「pattern」。
>「time slot」的分佈又叫做 network schedule pattern
現在的問題是:
:::info
如果給定了 network schedule 跟 message arrival patteren,那麼 message 的最差反應時間是多少
:::
## 假設
跟 CAN 一樣我們也有給予一些假設
- 每個「time slot」都一樣長
- 每個「time slot」只有恰好一個「instance/frame」
- 「instance/frame」只有當「time slot」「完整」的時候才會傳輸
- 也就是開始跟結束都在「time slot」裡面
:::warning
這個跟 CAN 相比會比較輕鬆,因為 TDMA based 只需要知道自己的 pattern 就可以進行分析,不需要知道其他人長怎樣。
:::
## Message Type
有兩種:
- Synchronous:知道每個 Frame 在何時會到達
- 例如 TTEthernet 的 Time-triggered traffic
- 跟 TSN TSNtraffic
- Asynchronous:不知道每個 Frame 在何時會到達,但是知道「pattern」長怎樣
- 例如 TTEthernet 的 Rate-Constrained traffic
- 跟 TSN 的 AVB traffic
## Pattern
用來描述 frame/message arrival 跟 time slot schedule 的方法。
>message 在這裡似乎被更常叫做 frame
- Frame arrival pattern:(m,p,a~1~,a~2~,...,a~m~)
- Schedule pattern:(n,q,s~1~,s~2~,...,s~n~)
>速記:m for message,a for arrival,s for schedule
m 跟 n 其實都是指「次數」,p 跟 q 都是指「週期」,只不過為了方便區分所以用不同的記號。
後面的 a~m~ 跟 s~n~ 都是指到達的時間。
例如:
- 有個 frame arrival pattern 為 (2,4,0,3),代表有兩個 frame,週期是 4,分別在時間為 0 跟 3 的時候抵達
- 有個 schedule pattern 為(2,4,1,2),代表有兩個 time slot,週期是 4,分別在時間 1 跟 2 的時候開始一個 time slot。
## Not Schedulable
如果$\frac{m}{p}>\frac{n}{q}$,則這樣的情況下是 Not Schedulable,因為 $\frac{m}{p}$ 代表單位時間內有多少 frame,$\frac{n}{q}$ 則是單位時間內有多少 time slot。
如果是大於,就代表 frame 無法傳完,會持續累積下去。
:::warning
這個方法也可以用於評估 CAN 是否為 Schedulable
:::
---
# 時間分析 Synchronous
理論如下:
:::info
只需要考慮 2 rounds 就可以決定最差反應時間
:::
1 個 round 是指 p 跟 q 的最小公倍數。
以上面的例子舉例:
- frame arrival pattern 為 (2,4,0,3)
- schedule pattern 為(2,4,1,2)
由於 p 跟 q 都是 4,所以 1 個 round 就是 4 tick。所以我們只要考慮 8 個 tick 內發生的事情就可以找到最差反應時間。
以下請服用講義 12 頁的圖。
講義實虛線箭頭上的數字代表第幾個 message,上面灰色大括弧的數字是第幾個 round,黃色區域是 time slot。
可以看到在第一個 round 的第一個 time slot,會被第一個 message 使用,但是第二個 time slot 結束時第二個 message 才到來,也就延後到了第二個 round 才被用到。
總之以此規律往下畫就可以發現後續的每個 message 的反應時間都是 3 個 tick,同時也是最差反應時間。
## 為什麼只要 2 個 round
有個關鍵觀察:
:::info
第 1 個 round 跟 第 2 個 round 沒有被分配到 time slot 的數量是一樣的
:::
例如上面每個 round 都是固定 1 個 message 沒有 time slot 可以用。
原因也很簡單,1 個 round 裡面就固定那麼多 time slot 可以用,同時也是固定那麼多 message 發出來,兩者都是固定的數量。
第 1 round 的時候沒有被分配到的那些人是怎麼來的呢?只有兩種可能:
- 到最後一個 time slot 時沒排到,被擠出來的
- 這時再判斷是不是 Not Schedulable
- 如果是 Schedulable 叫做 Case 1
- 出現位置在最後一個 time slot 之後,導致沒有排到
- 這種叫做 Case 2
### Case 1
我們把最後一個 time slot 之前的 slots 叫做「空閒區域」,令在最後一個 time slot 開始的時刻有 y 個人在排隊,接著來仔細思考以下情形:
- 如果 1~st~ round 擠出的 x 人,加上 2~nd~ round 除去那 y 個人,**無法**在空閒區域得到自己的 time slot
- 那就代表一定會有多出一些人堆在那 y 個人前面
- 那就代表人會越堆越多,跟我們一開始的 Scheduable 矛盾
所以可以知道空閒區域一定可以處理掉 x 人加上下一 round 除去 y 個人。
同時也就知道不管是哪一 round 都會有 x 人被擠出來。
### Case 2
這種情形比較好想。一樣把最後一個 time slot 之前的 slots 叫做「空閒區域」,接著仔細思考以下情境:
- 如果 1~st~ round 因為遲到而沒排到的人,在 2~nd~ round 跟那些人一起排隊時,卻導致 2~nd~ round 有 x 人遲到之外,還多了一些人也沒排到
- 那就代表之後的人會越堆越多,也就跟我們一開始的 Scheduable 矛盾
所以可以知道空閒區域一定可以處理掉 x 人加上下一 round 除去 x 個人。
同時也就知道不管是哪一 round 都會有 x 人被擠出來。
---
# 時間分析 Asynchronous
由於兩者都不知道確切到來的時間點,只知道 pattern,所以在討論的時候通常都是固定 time slot 的位置,然後以 frame 的 arrival 做「平移」。
:::warning
一樣請參考講義的圖
:::
在第 14 頁的範例圖中,可以知道平移這件事對於一個實數軸來說有無限種可能,不可能每種都給他試試,不然你會逝世。
不過好在偉大的前人給了我們一個好用的理論:
:::info
$P_i$ 是某個 frame,$S_j$ 是某個 time slot。
如果 $P_i$ 的最差反應時間,發生在 $P_i$ 被分配到 $S_j$ 的時候,則滿足下面兩項:
- $P_i$ 或 $P_i$ 之前的某個 frame 一定要「恰好錯過 / just miss」其分配到的 time slot
- 所謂「恰好錯過 / just miss」的意思是一眼看去他跟 $S_k$ 開始時間是對齊的,但是實際上他錯過了,他分配到的是 $S_{k+1}$
- 在 just miss 的那個 slot 結束開始,到 $S_j$ 開始之前的這段時間內,必定不會有「沒有使用」的 time slot
:::
## 證明
證明很簡單,就是使用「若 P 則 Q,非 Q 則 非 P」;也就是下面兩項只要有一項不成立,那麼 $P_i$ 被分配到 $S_j$ 的時候,就不會是他的最差反應時間發生的時候。
- 第一項很簡單,如果 $P_i$ 之前的每個 frame 都沒有人有 just miss,我們可以隨便選一個 frame,假設他對到 $S_{k}$,然後以他為中心整個往前移動到 $S_{k-1}$,但是 just miss $S_{k-1}$
- 這樣一來我們保持原本的 frame 跟 slot 的分配關係,但是讓時間變得更長了
- 就會跟原本最差反應時間的假設矛盾
- 第二項要分段討論
- 如果發生 just miss 的就是 $P_i$
- 根據上面的敘述,意思就是假設 $S_{j-1}$ 跟 $S_{j}$ 之間有沒有用到的 slot
- 但是這根本不可能發生,$S_{j-1}$ 跟 $S_{j}$ 之間不會有 time slot
- 如果發生 just miss 的是 $P_i$ 的前面某個 $P_k$
- 跟第一項類似,因為可以隨便在 $P_k$ 之後的某個 frame 之中(包含$P_i$)
- 隨便挑一個 frame 為中心往前平移
- 直到跟對應的前一個 slot just miss,就可以保持分配關係一樣,但是反應時間更長
# Asynchronous 最差反應時間公式
有了上面的理論後,根據第一項,可以得到一個關鍵觀察:
:::warning
$P_i$ 或 $P_i$ 之前的某個 frame 一定要「恰好錯過 / just miss」其分配到的 time slot
:::
可以知道我們想找的最差反應時間敘述如下:
:::info
第 i 個 frame just miss 第 j 個 time slot 的時候,其後面第 k-1 個 frame 的最差反應時間。
:::
所以我們只要搜索這些範圍就行了。
公式如下:
$$
1+\max_{1\le k \le m}\left(\max_{1\le j \le n}(s_{j+k}-s_{j})-\min_{1\le i \le m}\left(a_{i+k-1}-a_{i}\right) \right)
$$
上面的公式的意思是,$P_{i}$ just miss $S_{j}$,並計算 $P_{i+k-1}$ 的反應時間。
- 最左邊的 1 是傳輸時間,前面有提到此處都假設一樣,設為 1 tick
- 最外層的 $\max_{1\le k \le m}$,意思是從這 k 個算好的最差反應時間中,在挑出更差的
- 內層就是在算 $P_{i+k-1}$的反應時間
- $\max_{1\le j \le n}(s_{j+k}-s_{j})-\min_{1\le i \le m}\left(a_{i+k-1}-a_{i}\right)$ 的部分
- 假設 $k=1$,此時我們要找 $P_i$ 的最差反應時間,其實就是看哪兩個 time slot 間距最長,不需要在意 frame 的 arrival 時間
- 假設 $k=2$,此時我們要找 $P_{i+1}$ 的最差反應時間
- 此時可以發現後面就多了 $\min_{1\le i \le m}\left(a_{i+1}-a_{i}\right)$ 這個部分,兩者的 $i+1$ 是剛好有對應到的,意思就是看哪兩個 frame 間距最短,**也就是 $P_{i+1}$ 越早開始等待。這部分是 $P_{i+1}$ 尚未開始等待的時間。**
- 而前面則是 $\max_{1\le j \le n}(s_{j+2}-s_{j})$,因為 $P_{i}$ just miss $S_{j}$,所以 $P_{i}$ 實際上是分配在 $S_{j+1}$,也導致$P_{i+1}$ 實際上是分配在 $S_{j+2}$,在算的是相距為 2 的哪兩個 slot 間距最長
- 最終要把 slot 相距的時間,減掉 $P_{i+1}$ 沒有開始等待的時間,就會得到 $P_{i+1}$ 等待的最長時間
- k = ... 以此類推
:::warning
上面簡單來說就是用最密的 arrival pattern 撞上最疏鬆的 frame arrival pattern
:::
## Duplication
由於上面公式中的 i 跟 j 都是從 1 到 m 跟 n,再加上 k 的話最多會超過,所以:
- 首先我們會把原本的 pattern 轉型,讓 p 跟 q 的等於他們的最小公倍數,同時將 m, n 以及 a 和 s 的部分都做擴充
- 為了方便計算超過的部分,會把原本 a 跟 s 的部分後面多複製一份出來,值要照 pattern 接著寫,但是 m,n,p,q 保持不變
這樣一來就可以輕鬆的查找 $s_{j+k}$ 跟 $a_{i+k-1}$ 是多少了。
例如:
- frame pattern 原本是 (m=4,p16,a=3,7,11,15)
- 擴充後就會變成 (m=4,p16,a=3,7,11,15,,19,23,27,31)
- 此時 $a_1=3,a_5=19$
- schedule pattern 原本是 (n=4,q=16,s=0,1,2,3)
- 擴充後變成 (n=4,q=16,s=0,1,2,3,16,17,18,19)
---
# 最佳的 shceduling
- 對於 Synchrnous 來說
- 因為你知道 message 什麼時候來,所以只要讓 time slot 都可以在 message 來的那剎那剛好到
- as early as possible
- 對於 Asynchrnous 來說
- 每個 message 來的越平均越好,因為無法確定準確的時間點
- as evenly as possible
:::danger
不確定 as early as possible 的意思
:::
## Gaps to a practical protocol
- 上面是假設每個 slot 有相同長度
- 並且每個 slot 使提供給 1 個 message 使用
- 不同的 protocol 描述 pattern 的方法都不一樣
- 目前的情境只考慮 1 個 switch,如果是 Multiple Switches 又會不一樣
---
# Real Time Calculus (待補)
:::danger
怎麼直接飆車了老師 :_)
:::