• Techo

[IC設計] 詳解 Ping-pong Buffer 機制原理,使用雙緩衝來改善電路 Throughput

更新日期:2019年12月28日

(版權所有,請勿抄襲)

在 IC design 的電路中

有的時候為了改善系統 throughput (資料吞吐量)

我們必須增加更多的電路面積來提升 pipeline 運行效率

如下圖是一個典型的例子



電路的 input interface 固定每個cycle可以輸入128 bit 資料

最終會花 130 cycle

這個電路是需要處理 130*128 = 16640 bit 的電路

輸入的資料將會存入 data_width 128 x depth 130 sram中

由於電路的功能設計成

sram 內部的原始輸入資料需要在輸出時一起使用

所以不能使用 two port sram 一邊讀取一邊寫入下一輪 16640 bit的資料 必須保留到後半段的B全部處理完再一起輸出

16640 bit 除以 32 總共需要 520 cycle才能處理完畢

我們來計算一下處理四筆 16640 bit 須要花多久的時間

130 + 520 +130 +520 +130 +520 +130 +520 = 2600

由於資料都卡在 sram 處於等待B stage處理完的狀態

總共需要花2600 cycle才能做完


這也代表了電路 throughput bottleneck 在 B stage 電路

而我們需要盡可能保持B電路的忙碌才能提高效能

為了改善 throughput 所以我們將架構改成下面這張圖

直接增加一個相同 size 的 sram在input interface 後面

形成了 ping-pong 架構

電路的行為變成以下步驟

1. 透過上面的 sram 來花 130 cycles 接收16640 bit 資料

2. 讀取上面花 520 cycles 將資料送往 B stage 處理,同時透過下面的 sram 來接收下一筆資料 (花130 cycle)

3. 接著讀取下面的 sram 花 520 cycles 將資料送往 B stage 處理,此時透過上面的 sram 來接收下一筆資料 (花130 cycle)

4. 接著讀取上面花 520 cycles 將資料送往 B stage 處理,同時透過下面的 sram 來接收下一筆資料 (花130 cycle)

5. 接著讀取下面的 sram 花 520 cycles 將資料送往 B stage 處理

6. 到此時第四筆16640bit已經處理完畢,總共過了 130 + 520*4 = 2210 cycle


整個 performance 提升了 15%

可能你會發現

B stage 處理 520 cycle 時 ping-pong只要花130 cycle

還是有很多時間 sram 是 IDLE 的

但由於 throughput是卡在B stage

再增加新的 sram 無濟於事

所以如果要再改善的話要想其他方法

但我必須提醒

並不是在任何狀況下都能隨意使用 ping-pong buffer

前提是整個系統想要提升performance

而 bottleneck 剛好落在這個區塊的時候才有需要

如果只是一昧的提升這一部分電路的 performance 卻沒有顧慮到 bottleneck 是在其他地方

儘管你的電路再快

供應給你的 input data 也來不及處理完

或是你的 output module 根本來不及收完你的資料

那就沒有意義純粹浪費電路面積罷了






0 次瀏覽
Logo2020.JPG
  • Instagram - White Circle
  • Google+ - White Circle
  • Facebook - White Circle

Contact Us

Techo私人程式家教

官方LINE ID : @tutortecho

zh-Hant.png

© Copyright 2018 by Sherry Wu and Techo Chao.

Proudly created with Wix.com,

but page loading is too slow,so I don't recommend it.