關於乒乓操作的一些問題?

  最近在看關於乒乓操作的相關內容,對於乒乓操作產生了一些疑惑。

  下圖是我在其他地方看到的關於乒乓操作的大體框架圖。以下圖為例:

  問題1:

    如果進來的數據很快(假設1毫秒),而出去的數據很慢(假設10秒),兩者速度相差非常大。那麼正常情況下,數據先進入緩存1,填滿緩存1後,發送端開始發送緩存1里的數據,同時,數據開始填入緩存2。由於上面說的存數據比發數據快很多,那麼當緩存2存滿時緩存1還沒有發送完。如果後面進來的數據不覆蓋緩存1,那麼就會造成源數據的丟失;如果進來的數據覆蓋緩存1,那麼由於速度很快,很有可能把還未來得及發送的數據覆蓋掉,造成數據的錯誤。因此這就造成了我的疑惑。乒乓操作是為了讓數據不間斷,那麼這個不間斷的對象是緩存器里的數據呢還是數據選擇器A左端的進入數據?還是說乒乓操作不適用於以上的應用場景?

  問題2:

    其實問題2是問題1的逆向情況。如果進入的數據很慢,而出去的數據很快。那就會造成數據填入緩存區的速度跟不上發送的速度,那麼就會出現發送被打斷的情況。這又和乒乓操作的初衷相悖。請問這兩種情況有什麼解決辦法嗎?或者說還是我自己理解的不夠深入,思想上造成了誤區?望解答!


從根本上你就錯了啊

數據的生產必須小於等於數據消耗

除非你的系統允許數據丟失

再說乒乓

假設 a 輸出數據 b 消耗數據

假設 a 輸出數據 b 消耗數據

兩個緩存 1 和 2

乒乓操作的本質是

通過時分復用實現 2 個獨立數據流

保證 a b 不同時操作一個緩存

即 a 寫緩存 1 b 讀緩存 2 等等

通過多一個緩存 2

讓 a 不用等 b 讀完 1 就可以開始寫 2 etc.

提高 a b 的佔用率

那個圖畫出了一種實現

這種實現是假設

數據流速率恆定

a b 處理時間恆定

這樣的話這個同步系統就

static schedulable

實在不知道怎麼翻譯

反正不用反饋就可以保證時序正確

引申一下

假設有 n 個緩存

那麼就可以支持 n 個獨立數據流了


這是第N次看到這個圖了,真不知道這圖是哪裡來的,非常的誤導人。一開始我也被這圖誤導過,想了半天沒想出來什麼意思。這圖畫的過於簡單,容易讓人產生誤解。而且只用存儲器來舉例,非常的不合適。

1.首先,乒乓操作要解決的根本問題不是讀寫不匹配的問題,而是要用低速器件滿足高速數據流的處理問題。如果是解決讀寫速度不匹配,那是另外一套東西,說起來就麻煩了。我們這為了簡單就討論乒乓操作想解決的核心問題。

2.如果我們把這個圖換一個說法,這樣說。從A地到B地,一共100公里。但是中間有一條河,必須坐渡船過去。上船和下船都是需要時間的,為了節約渡河時間,應該怎麼辦?很自然,就是多開幾條船。

3.具體到這個設計,前面有朋友已經提到了,是為了overlap讀和寫的時間。這個也就是則圖的害人之處,這個圖看上去好像是同時又可以讀又可以寫,讓人感覺不出來讀寫是衝突的。如果我們想到讀寫是衝突的,那麼就很好解釋了。當輸入寫緩存A的時候,輸出讀緩存B;當輸入寫緩存B的時候,輸出讀緩存A。這樣就好比渡口的兩條船,船A在此岸接客,船B在彼岸下客;當船B在此岸接客,船A就在彼岸下客。這樣就渡船的速度快了起來。如果只有一艘渡船,就要先在此岸接客,然後開到彼岸下客。很顯然速度慢了。

4.在這個例子裡面,我們很顯然認為船在河上不耗時間,這在很多時候是不成立的。所以如果如果河上還要耗時間,有時候需要開的船會更多。

5.真實的例子裡面出現這種只是用兩個緩存的情況一般是大容量的數據需要倒騰到片外的低速大容量存儲器中。而真正的片上操作在緩存之後應該有對應的處理單元。無論是上面哪種情況,這個圖都不夠好,無法說明真實的情況。


謝邀!從你的提問知道你對這問題思考很多。由於假期中無法在電腦上作答,也就不貼圖了。

乒乓存儲有兩個作用:

第一,是緩衝區,而且是有限緩衝區(bounded buffer)。當收發雙方速度不匹配,特別是發送方快而且是持續比接收方快的時候有限緩衝區總會被溢出或者覆蓋造成數據丟失。因此你的分析是對的。

第二,讀寫分開,不會造成數據不一致(讀的時候正在寫)。而這點是乒乓存儲的核心。照你問題中的分析,無論速度如何不匹配都不會在乒乓存儲上出現讀寫在同一個緩衝區的情況。

最後的結論:乒乓存儲是用來實現讀寫分開的,作為有限緩衝區他只能部分解決速度不匹配問題。

以上回答希望能夠幫到你。


主要是overlap讀和寫的時間,生產者在寫下一個數據包的同時,消費者再讀上一個寫入的數據包。


推薦閱讀:

如何評價瑞芯微電子(Rockchip )?
成為一個資深Analog/RF IC Designer 是一種怎樣的體驗?
中國有可能在未來幾年內進入3D NAND市場嗎?
為什麼同樣靠電容存儲,dram sram就是易失性的,nor nand就是非易失性的存儲器?
不知道微電子還有沒有再次春天的機會,至少中國?

TAG:現場可編輯邏輯門陣列FPGA | 微電子 | 通信工程 |