《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 入門:FPGA編程三大范例

入門:FPGA編程三大范例

2022-10-25
來源:Hack電子
關(guān)鍵詞: 編程語言 Verilog FPGA

  雖然 FPGA 可使用 Verilog 或 VHDL 等低層次硬件描述語言 (HDL) 來編程,但現(xiàn)在已有多種高層次綜合 (HLS) 工具可以采用以 C/C++ 之類的更高層次的語言編寫的算法描述,并將其轉(zhuǎn)換為 Verilog 或 VHDL 等低層次的硬件描述語言。隨后,下游工具即可對轉(zhuǎn)換后的語言進(jìn)行處理,以便對 FPGA 器件進(jìn)行編程。此類流程的主要優(yōu)勢在于,您可使用諸如 C/C++ 等編程語言來編寫高效代碼,而后將代碼轉(zhuǎn)換為硬件,但這類編程語言的優(yōu)勢仍能得以完整保留。此外,寫好代碼乃是軟件設(shè)計師的專長,比學(xué)習(xí)新的硬件描述語言更簡單。

  以 C/C++ 編寫的程序本質(zhì)上是專為馮諾依曼樣式的架構(gòu)編寫的,此類架構(gòu)中用戶程序內(nèi)的每條指令都是按順序執(zhí)行的。為了實現(xiàn)高性能,HLS 工具必須推斷順序代碼中的并行性,并利用它來實現(xiàn)更高的性能。要解決這個問題可并不簡單。此外,優(yōu)秀的軟件程序員按明確定義的規(guī)則和實踐來編寫程序,例如,RTTI、遞歸和動態(tài)存儲器分配。其中諸多技巧在硬件中都無法找到直接等效的對象,故而給 HLS 工具帶來了諸多挑戰(zhàn)。這也意味著任意現(xiàn)成軟件都無法高效轉(zhuǎn)換為硬件。最低限度,需檢驗此類軟件中是否存在不可綜合的構(gòu)造,并需要重構(gòu)代碼,使其可綜合。

  現(xiàn)如今,即使軟件程序可自動轉(zhuǎn)換(或綜合)為硬件,但要實現(xiàn)可接受的結(jié)果質(zhì)量 (QoR),仍需要額外工作(例如,重寫軟件)以幫助 HLS 工具實現(xiàn)期望的性能目標(biāo)。為此,您需要了解正確編寫軟件的最佳實踐,以確保在 FPGA 器件上正常執(zhí)行軟件。在接下來的幾個章節(jié)內(nèi),將著重探討如何首先識別部分宏觀級別架構(gòu)最優(yōu)化以明確程序結(jié)構(gòu),然后聚焦更細(xì)化的微觀級別架構(gòu)最優(yōu)化來實現(xiàn)性能目標(biāo)。

  生產(chǎn)者使用者范例

  請考慮軟件設(shè)計師編寫多線程程序的方式,通常有一個主線程用于執(zhí)行某些初始化步驟,隨后分叉為多個子線程用于執(zhí)行某些并行計算,當(dāng)所有并行計算都完成后,主線程會整理結(jié)果并寫入輸出。程序員必須理清哪些部分可以分叉以供并行計算,哪些部分需要按順序執(zhí)行。這種分叉/連接類型的并行化操作不僅適用于 CPU,也適用于 FPGA,但 FPGA 上的吞吐量的關(guān)鍵模式之一是生產(chǎn)者使用者范例。您需要將生產(chǎn)者使用者范例應(yīng)用于順序程序,并將其轉(zhuǎn)換為可并行執(zhí)行的抽取功能以便提升性能。

  您可借助一條簡單的問題語句的幫助來更好地理解這個分解進(jìn)程。假定您有一份數(shù)據(jù)手冊,可供我們將其中的項導(dǎo)入列表。隨后,您將對列表中的每個項進(jìn)行處理。處理完每個項需耗時約 2 秒。處理完后,您將把結(jié)果寫入另一份數(shù)據(jù)手冊,此操作將耗時約每項各 1 秒。因此,如果輸入 Excel 工作表中有總計 100 個項,那么將耗時總計 300 秒來生成輸出。這樣做的目的是對此問題進(jìn)行分解,以便您識別能夠并行執(zhí)行的任務(wù),從而提升系統(tǒng)吞吐量。

109.JPG

  圖 1. 程序工作流程

  第一步是了解程序工作流程,識別獨立的任務(wù)或函數(shù)。整個工作流程分 4 個步驟,類似上圖所示的程序工作流程(無重疊)。在此示例中,“寫入輸出”(步驟 3)任務(wù)獨立于“處理數(shù)據(jù)”(步驟 2)處理任務(wù)。雖然步驟 3 取決于步驟 2 的輸出,但當(dāng)步驟 2 中的任意項完成處理后,您即可立即將其寫入輸出文件。您無需等待所有數(shù)據(jù)都完成處理后再開始將數(shù)據(jù)寫入輸出文件。此類型的交織/重疊任務(wù)執(zhí)行方式是非常常見的原則。如上圖所示(例如:含重疊的程序工作流程)。如圖所示,含重疊的工作流程比不含重疊時更快完成。現(xiàn)在,您可將步驟 2 視作為生產(chǎn)者,將步驟 3 視作為使用者。生產(chǎn)者使用者模式對于 CPU 性能的影響有限。您可交織執(zhí)行每個線程的步驟,但這需要謹(jǐn)慎分析,以便充分利用底層多線程和 L1 高速緩存架構(gòu),因此較為耗時。但在 FPGA 上,由于可采用定制架構(gòu),生產(chǎn)者和使用者線程可以同時執(zhí)行,開銷極低甚至沒有,因此能夠顯著提升吞吐量。

  首先考量的最簡單案例是單一生產(chǎn)者和單一使用者通過大小有限的緩沖器來進(jìn)行通信。如果緩沖器已滿,那么生產(chǎn)者可以選擇阻塞/停滯或者丟棄數(shù)據(jù)。當(dāng)使用者從緩沖器中移除某個項后,它會通知生產(chǎn)者,生產(chǎn)者隨后開始再次填充緩沖器。如果使用者發(fā)現(xiàn)緩沖器已空,則可以同樣方式停滯。當(dāng)生產(chǎn)者將數(shù)據(jù)置入緩沖器后,它會喚醒休眠中的使用者。該解決方案可通過進(jìn)程間通信(通常使用監(jiān)控器或信號量)來實現(xiàn)。不充分的解決方案可能導(dǎo)致死鎖,即兩個進(jìn)程都停滯并等待喚醒。但在單一生產(chǎn)者和使用者的情況下,通信模式與先入先出 (FIFO) 或乒乓緩沖器 (PIPO) 實現(xiàn)之間存在強(qiáng)映射關(guān)系。這種類型的通道無需依賴信號量、互斥體或監(jiān)控器來進(jìn)行數(shù)據(jù)傳輸,即可提供高效的數(shù)據(jù)通信。使用此類鎖定原語對于性能可能開銷較大,并且難以使用和調(diào)試。PIPO 和 FIFO 是常用的選擇,因為可以避免端到端的原子同步需求。

  在此類宏觀級別架構(gòu)最優(yōu)化中,可通過緩沖器封裝通信,使程序員可免于擔(dān)心存儲器模型和其它非確定性行為(如爭用條件等)。在此類設(shè)計中可達(dá)成的網(wǎng)絡(luò)類型為純粹的“數(shù)據(jù)流網(wǎng)絡(luò)”,可在輸入側(cè)接受串流數(shù)據(jù),對此數(shù)據(jù)串流執(zhí)行一些基本處理,然后將其作為數(shù)據(jù)串流發(fā)出。并行程序的復(fù)雜性完全被抽離。請注意,“導(dǎo)入數(shù)據(jù)”(步驟 1)和“導(dǎo)出數(shù)據(jù)”(步驟 4)同樣在最大程度提升可用的并行性方面扮演著相應(yīng)的角色。為了使計算能夠與 I/O 成功重疊,重要的是第一步對輸入的讀取結(jié)果進(jìn)行封裝,最后一步則是寫入輸出。這樣即可實現(xiàn) I/O 與計算的最大程度重疊。在計算步驟中間讀取或?qū)懭胼斎?輸出端口將會限制設(shè)計的可用并發(fā)性。這同樣是在對設(shè)計工作流程進(jìn)行設(shè)計時需要牢記的。

  最后,此類“數(shù)據(jù)流網(wǎng)絡(luò)”的性能依賴于設(shè)計師能夠持續(xù)向網(wǎng)絡(luò)饋送數(shù)據(jù),使數(shù)據(jù)能夠在系統(tǒng)中保持串流。數(shù)據(jù)流中出現(xiàn)中斷可能導(dǎo)致性能下降。視頻串流應(yīng)用就是一個很好的例子,比如在線游戲中,實時高清 (HD) 視頻持續(xù)流經(jīng)系統(tǒng),幀處理率受到持續(xù)監(jiān)控,以確保滿足期望的結(jié)果質(zhì)量。游戲玩家可以在屏幕上立即觀察到幀處理率下降。假想一下,這能為一大群游戲玩家提供持續(xù)性幀率支持,同時功耗相比傳統(tǒng) CPU 或 GPU 架構(gòu)顯著降低 - 這就是硬件加速的魅力。使數(shù)據(jù)在生產(chǎn)者與使用者之間持續(xù)保持流動至關(guān)重要。下一步,您將深入了解本節(jié)中介紹的這種串流范例。

  串流數(shù)據(jù)范例

  串流是一種重要的抽象:它表示無限制的連續(xù)更新數(shù)據(jù)集,其中“無限制”表示“大小未知或者大小無限”。串流可以是一連串?dāng)?shù)據(jù)(標(biāo)量或緩沖器)在源(生產(chǎn)者)進(jìn)程與目標(biāo)(使用者)進(jìn)程之間單向流動。串流范例會強(qiáng)制您根據(jù)數(shù)據(jù)訪問模式(或序列)來思考。在軟件中,隨機(jī)存儲器對數(shù)據(jù)的訪問幾乎是免費的(忽略高速緩存成本),但在硬件中,執(zhí)行順序訪問實際上是很有利的,此類訪問可轉(zhuǎn)換為串流。將算法分解為生產(chǎn)者使用者關(guān)系并通過網(wǎng)絡(luò)串流數(shù)據(jù)來進(jìn)行通信具有如下所述幾大優(yōu)勢。它允許程序員以順序方式定義算法,并通過其它方式來提取并行度(例如,通過編譯器)。諸如任務(wù)間同步等復(fù)雜性會被抽離。它允許生產(chǎn)者和使用者任務(wù)同時處理數(shù)據(jù),這是提升吞吐量的關(guān)鍵。另一個優(yōu)勢是代碼更清潔且更簡單。

  如前文所述,對于生產(chǎn)者和使用者范例,數(shù)據(jù)傳輸模式與 FIFO 或 PIPO 緩沖器實現(xiàn)之間存在強(qiáng)映射關(guān)系。FIFO 緩沖器只是預(yù)定義大小/深度的隊列,其中插入隊列的首個元素也會成為可從隊列跳出的首個元素。使用 FIFO 緩沖器的主要優(yōu)勢在于,只要生產(chǎn)者將數(shù)據(jù)插入緩沖器,使用者進(jìn)程就可以立即在 FIFO 緩沖器內(nèi)部開始訪問數(shù)據(jù)。使用 FIFO 緩沖器的唯一問題在于,由于生產(chǎn)者與使用者之間的生產(chǎn)/使用速率不同,可能導(dǎo)致 FIFO 緩沖器大小錯誤,從而導(dǎo)致死鎖。在具有多個生產(chǎn)者和使用者的設(shè)計中,這種情況較為常見。乒乓緩沖器屬于用于加速進(jìn)程的雙緩沖器,可將 I/O 操作與數(shù)據(jù)處理操作重疊。其中一個緩沖器用于保存數(shù)據(jù)塊,以便使用者進(jìn)程能夠看到完整(舊)版本的數(shù)據(jù),而另一個緩沖器中,生產(chǎn)者進(jìn)程則正在創(chuàng)建新(部分)版本的數(shù)據(jù)。當(dāng)新的數(shù)據(jù)塊完成并有效時,使用者和生產(chǎn)者進(jìn)程將交換對兩個緩沖器的訪問。由此導(dǎo)致,使用乒乓緩沖器會增加器件的整體吞吐量,并幫助防止出現(xiàn)最終瓶頸。PIPO 的主要優(yōu)勢在于,工具能夠?qū)⑸a(chǎn)速率與使用速率自動匹配,并創(chuàng)建高性能且無死鎖的通信通道。此處值得注意的是,無論使用的是 FIFO 還是 PIPO,關(guān)鍵特性是相同的:生產(chǎn)者將數(shù)據(jù)塊發(fā)送或者串流至使用者。數(shù)據(jù)塊可以是單個值,也可以是一組 N 個值。塊越大,所需存儲器資源越多。

  以下是簡單的求和應(yīng)用,用于展示經(jīng)典的串流網(wǎng)絡(luò)/數(shù)據(jù)流網(wǎng)絡(luò)。在此例中,該應(yīng)用的目標(biāo)是成對添加隨機(jī)數(shù)值串流,然后打印這些數(shù)值。前兩個任務(wù)(任務(wù) 1 和 2)提供了隨機(jī)數(shù)值串流以供添加。這些數(shù)值通過 FIFO 通道發(fā)送到求和任務(wù)(任務(wù) 3),任務(wù) 3 會從 FIFO 通道讀取值。隨后,求和任務(wù)將輸出發(fā)送到打印任務(wù)(任務(wù) 4),以發(fā)布結(jié)果。FIFO 通道可在這些獨立的執(zhí)行線程之間提供異步緩沖。

108.JPG

  圖 2. 串流網(wǎng)絡(luò)/數(shù)據(jù)流網(wǎng)絡(luò)

  連接每項“任務(wù)”的串流通常是作為 FIFO 隊列來實現(xiàn)的。FIFO 能夠抽離程序員的并行行為,使其專注于推理任務(wù)活動(調(diào)度)的“快照”時間。FIFO 能夠使并行化更易于實現(xiàn)。這主要得益于它減少了程序員實現(xiàn)并行化框架或容錯解決方案時,必須應(yīng)付的可變空間。獨立內(nèi)核之間的 FIFO 展現(xiàn)出經(jīng)典的排隊行為。對于純串流系統(tǒng),可使用排隊或網(wǎng)絡(luò)流模型來對此行為進(jìn)行建模。這種數(shù)據(jù)流類型網(wǎng)絡(luò)和串流最優(yōu)化的另一個主要優(yōu)勢在于它可按不同粒度級別來應(yīng)用。程序員可以在每項任務(wù)內(nèi)部設(shè)計此類網(wǎng)絡(luò),也可以為任務(wù)或內(nèi)核系統(tǒng)設(shè)計此類網(wǎng)絡(luò)。實際上,您可以通過串流網(wǎng)絡(luò)來以分層方式例化并連接多個串流網(wǎng)絡(luò)或任務(wù)。支持更細(xì)粒度的并行化的另一項最優(yōu)化措施是流水打拍。

  流水線范例

  流水線是您日常生活中常用的概念。造車廠生產(chǎn)線就是一個典型的例子,其中每一項具體任務(wù)通常都是由一個獨立且唯一的工作站來完成的,如安裝引擎、安裝車門和安裝車輪。各工作站各自對一輛不同的車并行執(zhí)行自己的任務(wù)。當(dāng)某一輛車執(zhí)行完某一項任務(wù)后,它就會移至下一個工作站。完成各項任務(wù)的時間差可通過“緩沖”(將一輛或多輛車暫存在各工作站之間的空間內(nèi))和/或“停滯”(暫時中止上游工作站的操作)來加以調(diào)整,直至下一個工作站變?yōu)榭捎脼橹埂?/p>

  假設(shè)組裝一輛車需要執(zhí)行 3 項任務(wù) A、B 和 C,這 3 項任務(wù)分別需要 20、10 和 30 分鐘。那么,如果全部 3 項任務(wù)均由單個工作站來執(zhí)行,工廠每 60 分鐘才能輸出一輛車。通過使用 3 個工作站組成的流水線,該工廠 60 分鐘即可輸出第一輛車,隨后每 30 分鐘再輸出一輛新車。正如此示例所示,流水線并不會降低時延,即單個項穿越整個系統(tǒng)的總時間。但它會增加系統(tǒng)吞吐量,即,第一個項完成后處理新的項的速率。

  由于流水線的吞吐量不可能優(yōu)于其最慢的元素,因此程序員應(yīng)嘗試在各階段間拆分工作和資源,以使各階段耗用相同時間來完成自己的任務(wù)。在上述車輛組裝線示例中,如果 3 項任務(wù) A、B 和 C 各自耗時 20 分鐘,而不是分別耗時 20、10 和 30 分鐘,那么時延將仍為 60 分鐘,但每隔 20 分鐘(而不是 30 分鐘)即可完成一輛新車。下圖顯示了承擔(dān)制造 3 輛車任務(wù)的假想生產(chǎn)線示例。假定任務(wù) A、B 和 C 各耗時 20 分鐘,那么順序生產(chǎn)線將需要 180 分鐘才能生產(chǎn) 3 輛車。而流水線式生產(chǎn)線只需 100 分鐘即可生產(chǎn) 3 輛車。

  生產(chǎn)第一輛車所耗費的時間為 60 分鐘,稱為流水線的迭代時延。生產(chǎn)完第一輛車后,后兩輛車各自只需 20 分鐘,這稱為流水線的啟動時間間隔 (II)。生產(chǎn)三輛車所耗費的總時間為 100 分鐘,稱為流水線的總時延,即,總時延 = 迭代時延 + II * (項數(shù) - 1)。因此,改善 II 即可改善總時延,但不影響迭代時延。從程序員視角來看,流水線范例可適用于設(shè)計中的函數(shù)和循環(huán)。確定初始建立時間成本后,要實現(xiàn)理想吞吐量目標(biāo),II 應(yīng)為 1,即初始建立時間延遲過后,在流水線的每個周期都將有輸出可用。在以上示例中,初始建立時間延遲 60 分鐘過后,每隔 20 分鐘就有一輛車可用。

107.JPG

  圖 3. 流水打拍

  流水打拍是經(jīng)典的微觀級別架構(gòu)最優(yōu)化,可應(yīng)用于多個抽象層。在前文中,我們通過生產(chǎn)者使用者范例解釋了任務(wù)級別流水打拍。這一概念同樣適用于指令級別。這實際上是使生產(chǎn)者使用者流水線(和串流)保持填滿并繁忙的關(guān)鍵。僅當(dāng)每個任務(wù)都高速率生產(chǎn)/使用數(shù)據(jù),故而需要指令級流水打拍 (ILP) 時,生產(chǎn)者使用者流水線才能保持高效。

  由于流水打拍長期使用相同資源來執(zhí)行相同功能,因此需要有關(guān)每項任務(wù)時延的完整信息,故而被視作為靜態(tài)最優(yōu)化。有鑒于此,低級指令流水打拍方法無法應(yīng)用于數(shù)據(jù)流類型的網(wǎng)絡(luò),因為在此類網(wǎng)絡(luò)中任務(wù)的時延是輸入數(shù)據(jù)的函數(shù),故而可能未知。下一章節(jié)中將詳解如何利用介紹的這三種基本范例來對不同類型的任務(wù)并行度進(jìn)行建模。

  組合三種范例

  用戶程序中,大部分最優(yōu)化的主要焦點是函數(shù)和循環(huán)。現(xiàn)如今的最優(yōu)化工具通常在函數(shù)/過程級別工作。每個函數(shù)都能轉(zhuǎn)換為特定硬件組件。每個此類硬件組件都與類定義相似,該組件的許多對象(或?qū)嵗┚稍谧罱K硬件設(shè)計中創(chuàng)建和例化。每個硬件組件都將由許多更小的預(yù)定義組件組成,這些預(yù)定義組件通常用于實現(xiàn)基本函數(shù)(例如,加法、減法和乘法)。雖然不支持遞歸,但是函數(shù)可以調(diào)用其它函數(shù)。較小且調(diào)用次數(shù)較少的函數(shù)通常還可以內(nèi)聯(lián)到其調(diào)用方函數(shù)中,正如軟件函數(shù)內(nèi)聯(lián)方式一樣。在此情況下,實現(xiàn)函數(shù)所需的資源將匯總到調(diào)用方函數(shù)的組件中,這樣能更好地共享公用資源。將設(shè)計構(gòu)造為一組通信函數(shù)有助于在執(zhí)行這些函數(shù)時提升推斷并行度。

  循環(huán)是程序中最重要的構(gòu)造之一。由于循環(huán)主體多次迭代,因此可輕松利用該屬性來提升并行度。可通過多種方式來對循環(huán)和循環(huán)嵌套進(jìn)行變換(例如,流水打拍和展開),從而提升并行執(zhí)行的效率。這些變換使存儲器系統(tǒng)最優(yōu)化以及映射到多核和 SIMD 執(zhí)行資源成為可能。科學(xué)與工程應(yīng)用中的許多程序都表現(xiàn)為對大型數(shù)據(jù)結(jié)構(gòu)進(jìn)行各種運(yùn)算。這些運(yùn)算包括對陣列或矩陣進(jìn)行簡單的逐元素運(yùn)算,或者也可能是具有循環(huán)進(jìn)位依賴關(guān)系的更復(fù)雜的循環(huán)嵌套運(yùn)算,如跨循環(huán)迭代的數(shù)據(jù)依賴關(guān)系。此類數(shù)據(jù)依賴關(guān)系會影響循環(huán)內(nèi)可達(dá)成的并行度。在諸多此類情況下,必須對代碼進(jìn)行重構(gòu),才能在現(xiàn)代化的并行平臺上有效執(zhí)行并行循環(huán)迭代。

  下圖顯示了 4 個連續(xù)任務(wù)(即,C/C++ 函數(shù))A、B、C 和 D 的不同重疊執(zhí)行的簡單示例,其中,A 在 2 個不同陣列內(nèi)分別為 B 和 C 生成數(shù)據(jù),D 則使用來自 B 和 C 所生成的 2 個不同陣列的數(shù)據(jù)。假定這種“菱形”通信模式將運(yùn)行 2 次,且 2 次運(yùn)行彼此獨立。

  void diamond(data_t vecIn[N], data_t vecOut[N]) { data_t c1[N], c2[N], c3[N], c4[N]; #pragma HLS dataflow A(vecIn, c1, c2); B(c1, c3); C(c2, c4); D(c3, c4, vecOut); }

  以上代碼示例所示 C/C++ 源代碼片段顯示了這些函數(shù)的調(diào)用方式。請注意,任務(wù) B 和 C 相互之間不存在數(shù)據(jù)依賴關(guān)系。下圖對應(yīng)完全順序執(zhí)行方式,其中黑色圓圈表示用于實現(xiàn)串行的某種同步形式。

106.JPG

  圖 4. 順序執(zhí)行 - 運(yùn)行 2 輪

  在菱形示例中,B 與 C 完全彼此獨立。兩者既不相互通信也不訪問任何共享存儲器資源,因此如果無需共享計算資源,那么兩者可并行執(zhí)行。由此可得結(jié)果如下圖所示,一輪運(yùn)行內(nèi)形成了某種形式的分叉式連接并行運(yùn)行。當(dāng) A 任務(wù)結(jié)束后,B 和 C 并行執(zhí)行,而 D 則等待 B 和 C,但下一輪仍按順序連續(xù)執(zhí)行。

105.JPG

  圖 5. 一輪運(yùn)行中的任務(wù)并行

  此類執(zhí)行方式可總結(jié)為 (A; (B || C); D); (A; (B || C); D),其中“;”表示串行連續(xù),“||”則表示完全并行。這種形式的嵌套分叉連接并行運(yùn)行對應(yīng)于一種從屬任務(wù)子類,稱為串并行任務(wù)圖。一般來說,任何從屬任務(wù)的有向無環(huán)圖 (DAG) 均可通過獨立的分叉并連接類型同步來實現(xiàn)。此外同樣值得注意的是,這正是在具有多個線程并使用共享存儲器的 CPU 上運(yùn)行多線程程序的方式。

  在 FPGA 上,您可以探索其它可用的并行形式。先前的執(zhí)行模式利用的是在單次調(diào)用內(nèi)執(zhí)行任務(wù)級別并行操作。那么重疊連續(xù)運(yùn)行又會如何呢?如果每次運(yùn)行之間真正彼此獨立,但每個函數(shù)(即,A、B、C 或 D)復(fù)用前一輪的相同計算硬件,那么我們?nèi)钥赡芟胍獙?A 的第二次調(diào)用與 B 和 C 的第一次調(diào)用并行執(zhí)行。這是一種跨調(diào)用的任務(wù)級流水線形式,由此可得結(jié)果如下圖所示。現(xiàn)在,由于吞吐量受到所有任務(wù)間的最大時延的限制,而非所有任務(wù)時延總和的限制,因而吞吐量明顯改善。雖然每輪運(yùn)行的時延不變,但多輪運(yùn)行的總時延得以縮短。

104.JPG

  圖 6. 利用流水打拍實現(xiàn)任務(wù)并行

  但現(xiàn)在,當(dāng) B 首次運(yùn)行從存儲器中執(zhí)行讀取時,A 則已得到其首輪運(yùn)行的結(jié)果,A 的第二輪操作可能已在相同存儲器內(nèi)執(zhí)行寫入。為避免在使用數(shù)據(jù)之前寫入數(shù)據(jù),您可以依靠某種形式的存儲器擴(kuò)展(即所謂的雙重緩沖或 PIPO)來達(dá)成此交織操作。這種交織操作以任務(wù)間的黑色圓圈來表示。

  有一種有效的方法可用于提升吞吐量和復(fù)用計算資源,即對運(yùn)算符、循環(huán)和/或函數(shù)進(jìn)行流水打拍。如果每個任務(wù)現(xiàn)在都能與自身重疊,您即可在一輪運(yùn)行內(nèi)實現(xiàn)任務(wù)并行操作,同時跨多輪運(yùn)行實現(xiàn)任務(wù)流水打拍,這兩者都屬于宏觀級別并行度的例證。多任務(wù)內(nèi)流水打拍則是微觀級別并行度的例證。現(xiàn)在,由于每一輪運(yùn)行依賴于任務(wù)間的最小吞吐量而不是任務(wù)的最大吞吐量,因此每一輪的總體吞吐量得以進(jìn)一步提升。最后,根據(jù)通信數(shù)據(jù)的同步方式,僅當(dāng)生成全部數(shù)據(jù) (PIPO) 或者以逐元素方式 (FIFO) 生成全部數(shù)據(jù)后,才有可能在一輪運(yùn)行內(nèi)出現(xiàn)某種程度的額外重疊。例如,在下圖中,B 和 C 都比 A 更早啟動并以流水打拍方式執(zhí)行,而 D 則假定仍必須等待 B 和 C 完成。這是最后一種類型的單輪運(yùn)行內(nèi)重疊,當(dāng) A 通過 FIFO 串流訪問(表現(xiàn)為不含圓圈的直線)來與 B 和 C 通信時,才能實現(xiàn)這種方式的重疊。同樣,D 也能與 B 和 C 重疊,前提是采用的通道為 FIFO 而不是 PIPO。但不同于前幾種執(zhí)行模式,使用 FIFO 可能導(dǎo)致死鎖,因此需要正確設(shè)置這些串流 FIFO 的大小。

103.JPG

  圖 7. 單輪運(yùn)行內(nèi)的任務(wù)并行和流水打拍、多輪運(yùn)行的流水打拍以及單一任務(wù)內(nèi)的流水打拍

  總之,本節(jié)中所演示的三種范例為您展示了如何在避免多線程和/或并行編程語言的復(fù)雜操作的同時下,仍能在設(shè)計中實現(xiàn)并行操作。生產(chǎn)者使用者范例搭配串流通道即可輕松組合小型系統(tǒng)與大型系統(tǒng)在內(nèi)的各種系統(tǒng)。如上文所述,串流接口支持輕松耦合并行任務(wù),亦或是分層數(shù)據(jù)流網(wǎng)絡(luò)也不在話下。這其中部分原因是由于編程語言 (C/C++) 能夠靈活支持此類規(guī)范,并且還有各種工具可用于在當(dāng)今 FPGA 器件上可用的異構(gòu)計算平臺上實現(xiàn)這些規(guī)范。

  結(jié)論 - 性能良方

  本文檔中所演示的設(shè)計概念具有一個主要的核心原則,即并行計算模型傾向于通過狀態(tài)封裝和模塊化單元或任務(wù)內(nèi)的順序執(zhí)行來為并行編程提供更簡單的編程模型。隨后,任務(wù)將與串流相連(以執(zhí)行同步和通信)。每個串流均可包含不同類型的通道,例如,F(xiàn)IFO 或 PIPO。您不妨思考下為什么這種范例未能推而廣之。現(xiàn)如今的變化在于,每個人手中所使用的并行硬件數(shù)量發(fā)生了巨大變化。即使手機(jī)都是多核的,并擁有異構(gòu)加速器(GPU 等)。利用大部分現(xiàn)有編程工具對這些器件進(jìn)行編程都無疑是一場夢魘。將 OpenCL 、C、Java 和/或 C++ 的位相結(jié)合來打造一致的系統(tǒng)極為耗時。而基于串流的處理方式則可為此提供一種解決方案。狀態(tài)/邏輯區(qū)隔化使工具(例如編譯器和調(diào)度器)能夠更加輕松地理清何時何地需要運(yùn)行應(yīng)用的哪些部分。基于串流的處理方式日漸流行的另一個原因是,它打破了傳統(tǒng)多線程“分叉/連接”模型基于并行執(zhí)行的觀點。通過啟用任務(wù)級流水打拍和指令級流水打拍,運(yùn)行時間可執(zhí)行的并發(fā)操作數(shù)量遠(yuǎn)遠(yuǎn)超過了分叉/連接模型現(xiàn)今所能執(zhí)行的操作數(shù)量。這種附加的并行性對于充分利用現(xiàn)今 FPGA 器件上可用的硬件而言至關(guān)重要。與啟用流水線并行性如出一轍的是,串流同樣支持設(shè)計師構(gòu)建并行應(yīng)用,而無需擔(dān)心鎖定、爭用條件等可能導(dǎo)致并行編程無從著手的問題。

  最后,建議您依據(jù)以下高層次操作檢查表為標(biāo)準(zhǔn),在可重配置 FPGA 平臺上實現(xiàn)所期望的性能。

  專為 CPU 編寫的軟件與專為 FPGA 編寫的軟件有著本質(zhì)上的不同。要想編寫可在 CPU 平臺與 FPGA 平臺之間進(jìn)行移植的代碼,性能犧牲是不可避免的。因此,F(xiàn)PGA 軟件與 CPU 軟件的編寫方式差異巨大,與其抗拒這個事實,不如坦然接受。

  從工程伊始,就應(yīng)該建立起能夠?qū)υ创a更改進(jìn)行功能性驗證的流程。基于參考模型或者使用黃金矢量來測試軟件是極為常用的實踐。

  首先專注于設(shè)計的宏架構(gòu)。并考慮使用生產(chǎn)者使用者范例來對解決方案進(jìn)行建模。

  明確設(shè)計的宏架構(gòu)后,即可繪制出期望的活動時間線,其中以橫軸表示時間,并顯示您期望在多次迭代(或調(diào)用)過程中執(zhí)行每一項功能相對于其它功能的時間。這樣您將能夠?qū)υO(shè)計中期望的并行性了然于胸,后續(xù)即可用于與最終達(dá)成的結(jié)果進(jìn)行比較。HLS GUI 通常可用于直觀顯示所達(dá)成的并行度。

  僅當(dāng)您已掌握宏架構(gòu)并確立活動時間線之后,再開始進(jìn)行程序編碼或重構(gòu)。

  一般,HLS 編譯器僅根據(jù)函數(shù)調(diào)用來推斷任務(wù)級別并行度。因此,需要在硬件中并發(fā)運(yùn)行的順序代碼塊(例如循環(huán))應(yīng)置于專用函數(shù)內(nèi)。

  將原始算法分解/分區(qū)為較小的組件,這些組件可通過串流來彼此進(jìn)行通信。這樣您就能在一定程度上掌握數(shù)據(jù)在設(shè)計中流動的方式。

  較小的模塊化組件的優(yōu)勢在于,可以按需進(jìn)行賦值,從而提升并行性。

  請避免通信通道的位寬過寬。將此類寬通道分解為較窄些的通道,這樣有助于在 FPGA 器件上實現(xiàn)。

  大型函數(shù)(手寫或通過內(nèi)聯(lián)較小的函數(shù)生成)可能包含重要路徑,工具可能難以處理此類路徑。具有更簡單的控制路徑的小型函數(shù)有助于 FPGA 器件上的實現(xiàn)。

  目標(biāo)是在每個函數(shù)內(nèi)包含單個循環(huán)嵌套(可采用 HLS 工具可推斷的固定循環(huán)邊界,或者手動向 HLS 工具提供循環(huán)次數(shù)信息)。這樣可以顯著促進(jìn)吞吐量的測量和最優(yōu)化。此方法雖然可能不適用于所有設(shè)計,但對于大部分案例都很有效。

  吞吐量 - 縱觀全局,掌握設(shè)計每個階段期間所需的處理速率,這一點至關(guān)重要。這將影響您為 FPGA 編寫應(yīng)用的方式。

  思考設(shè)計中的關(guān)鍵路徑(即,關(guān)鍵任務(wù)級別路徑,如,ABD 或 ACD),調(diào)查此關(guān)鍵路徑中哪個部分可能成為瓶頸。通過設(shè)計仿真,觀察哪幾個任務(wù)采用流水打拍,以及任一路徑的不同分支是否在吞吐量方面存在不一致。隨后,可使用 HLS GUI 工具和/或仿真波形查看器來直觀顯示此類吞吐量問題。

  基于串流的通信允許使用者在生產(chǎn)者開始生產(chǎn)時立即開始處理,由此即可支持重疊執(zhí)行(從而提升并行性和吞吐量)。

  為了使生產(chǎn)者和使用者任務(wù)保持持續(xù)不間斷運(yùn)行,請使用流水打拍和調(diào)整串流的相應(yīng)大小等方法來對每項任務(wù)的執(zhí)行進(jìn)行最優(yōu)化,使其能盡快運(yùn)行。

  請思考串流通道的同步粒度(和開銷)。您可使用 PIPO 通道來重疊任務(wù)執(zhí)行,而無需擔(dān)心死鎖,顯式手動串流 FIFO 通道支持您(比 PIPO)更快開始重疊執(zhí)行,但請謹(jǐn)慎處理 FIFO 大小調(diào)整,以避免死鎖。

  了解有關(guān)可綜合的 C/C++ 編碼樣式的更多信息。

  使用 HLS 編譯器生成的報告作為指導(dǎo)來完成最優(yōu)化進(jìn)程。

  請將上述檢查表放在附近,以便隨時參考。它總結(jié)了構(gòu)建能滿足您的性能目標(biāo)的設(shè)計所需的整個設(shè)計活動。

  設(shè)計的另一個需要考量的重要方面在于您的加速函數(shù)或內(nèi)核。內(nèi)核連接外部的接口是最終系統(tǒng)設(shè)計的重要要素。您的內(nèi)核可能需要插入更大的設(shè)計或者與更大的內(nèi)核系統(tǒng)中的其它內(nèi)核進(jìn)行通信,或者與系統(tǒng)外部的存儲器或器件進(jìn)行通信。設(shè)計高效內(nèi)核 提供了另一份檢查表,以供您在設(shè)計加速內(nèi)核的外部接口時考量其中所列出的各項內(nèi)容。



更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 新版本天堂资源在线中文8的特点 | 久久夜色网 | 99香蕉视频 | 亚洲欧美日韩另类在线 | 国产a∨精品一区二区三区不卡 | 红猫大本营在线观看的 | 乱色精品无码一区二区国产盗 | 巨粗进入警花哭喊求饶在线观看 | 中文字幕奈奈美抱公侵犯 | 欧美成人视 | 国内精品人妻无码久久久影院蜜桃 | 色一情一乱一伦一区二区三区日本 | 毛片网站在线免费观看 | 中文字幕中文在线 | 亚洲无限观看 | 亚洲视频一区二区三区 | 在线观看中文字幕 | 亚洲一级特黄 | 涩涩的视频在线观看 | 丰满女人与性猛交视频 | 国产精品宾馆在线精品酒店 | 亚洲色偷精品一区二区三区 | 日本亚洲最大的色成网站www | 国产精品人妻一区夜夜爱 | 97自拍视频 | 亚洲爆乳无码一区二区三区 | 久久精品国产99久久6 | 精品欧美一区免费观看α√ | 亚洲精品456在线播放牛牛影院 | 国产精品久久久久久久久久ktv | 国产成人精品一区二三区 | 国产吃瓜黑料一区二区 | 中文字幕久久999及 中文字幕久久av | 噼里啪啦免费观看高清动漫 | 特级丰满少妇一级aaa爱毛片 | 伊人在线 | 5858s亚洲色大成网站www | 中文字幕人妻互换av久久 | www成人精品免费网站青椒 | 免费视频在线观看网站 | 天天操天天操天天操天天操天天操 | 成人性做爰aaa片免费看 | 中国一级片在线观看 | 久久免费看少妇高潮v片特黄 | 奇米视频888战线精品播放 | 国产精品爽爽久久久久久蜜臀 | 色拍拍欧美视频在线看 | 九九热精品免费视频 | 91亚洲精品久久久久图片蜜桃 | 欧美一区二区视频三区 | 久久久久国产精品一区 | 在线观看特色大片免费视频 | 精品在线观看一区 | 日韩av不卡在线观看 | 欧美a免费 | 国产精品久久久久久久久久 | 少妇高潮一区二区三区 | 亚欧综合在线 | 天堂а√在线最新版中文在线 | 一区二区视频免费在线观看 | 亚洲看片lutube在线观看 | 97免费人妻无码视频 | 国产天堂在线观看 | 天天有av| 国产一区二区精品久久 | 国产一级淫片a直接免费看 国产一级淫片免费放大片 国产一级影院 | 欧美日韩精品中文字幕 | 依人综合 | 国产区一区二 | 国产亚洲综合av | 亚洲午夜一区二区 | 红猫大本营在线观看的 | 精品厕所偷拍各类美女tp嘘嘘 | 伊人久久大香线蕉av最新 | 中文无码一区二区不卡αv 精品少妇人妻av免费久久洗澡 | 国产成人无码免费视频在线 | 中文字幕无限2021 | 992在线观看 | 中文字幕高清视频 | 九九视频在线观看视频6 | 欧美黑人性暴力猛交喷水黑人巨大 | 国产免费视频在线 | 日本动漫做毛片一区二区 | 国产欧美日韩三级 | 欧美性猛交99久久久久99按摩 | 97婷婷狠狠成为人免费视频 | 小舞同人18吸乳羞羞在线观看 | 清纯唯美经典一区二区 | 国产又粗又猛又黄又爽性视频 | 欧美黄色免费观看 | 国产精品第7页 | а√天堂8资源在线官网 | 四虎国产精品永久地址99 | 日韩av免费在线观看 | 四色米奇777狠狠狠me | 亚洲已满18点击进入在线看片 | 日韩欧美日韩 | 亚洲激情第一页 | www在线播放 | 欧美精品一区二区三区四区五区 | 91九色网| 一区二区三区四区不卡 | 99久久婷婷国产综精品喷水 | 日韩亚洲第一页 | 国产精品第四页 | 亚洲人在线播放 | 国产精品丝袜久久久久久不卡 | 欧美精品一区二区蜜臀亚洲 | 亚洲成人一区在线观看 | 国产精选免费进入 | 日韩中文网 | 亚洲一区二区精品视频 | 九九黄色片 | 国产精品夜夜春夜夜爽久久老牛 | 欧美日韩 一区二区三区 | 日韩欧美精品中文字幕 | 中文字幕精品av一区二区五区 | 国产欧美一区二区视频 | 日本理论片免费观看在线视频 | 香蕉一级视频 | 911国产在线 | 中文字幕在线有码 | 日韩高清亚洲日韩精品一区 | 伊人网欧美 | jizz日韩| 无遮挡h肉动漫在线观看 | 99精品一区二区三区无码吞精 | 国产极品美女高潮无套 | 激情内射日本一区二区三区 | 美女黄网站人色视频免费国产 | 久久综合国产精品 | 国内偷自拍性夫妇 | 亚洲欧美日韩国产手机在线 | 中文字幕av一区中文字幕天堂 | 91噜噜噜 | 影视先锋av资源噜噜 | 色噜噜av男人的天堂 | 国产精久久一区二区三区 | 亚洲宗人网 | 舐め犯し波多野结衣在线观看 | 欲香欲色天天天综合和网 | 处破女处破av | 操操操免费视频 | 五月天丁香亚洲 | 国精产品一区一区三区免费视频 | 欧美成人播放 | 成人免费观看男女羞羞视频 | 欧美一区内射最近更新 | 乱子轮熟睡1区 | 美女国产毛片a区内射 | 96人xxxxxxxxx69| 超碰c| 69亚洲精品久久久蜜桃小说 | 黄色片aaaa | 久久久久成人网站 | 91重口入口处 | а√天堂8资源中文在线 | 污污的视频在线免费观看 | 草av| vvv国产在线观看一区二区 | 中文字幕人妻熟女人妻a片 国产精品人妻系列21p | 无码人妻精品一区二区在线视频 | 亚洲人av在线影院 | 日本添下边视频全过程 | 日韩精品视频在线观看一区二区三区 | 丰满少妇又爽又紧又丰满在线观看 | 五月综合色婷婷 | 国产一级视频免费观看 | 国产在线观看码高清视频 | 四川少妇xxxx内谢欧美 | 麻豆av一区二区三区久久 | 婷婷在线免费视频 | 久久久受 | 黄色永久免费网站 | 日韩美女网站 | 天天夜碰日日摸日日澡性色av | 亚洲日韩成人av无码网站 | 青娱乐激情 | 91国视频 | 欧美精品v国产精品 | 免费看黄a级毛片 | 99热精品在线观看 | 美国成人免费视频 | 国产偷窥盗摄一区二区 | 国产九九九九九 | 色情久久久av熟女人妻网站 | 国产一区二区免费在线 | 亚洲欧美国产精品久久久久久久 | wwww.8888久久爱站网 | 72成人网 | 丁香六月婷婷开心婷婷网 | av片免费在线播放 | 精品国产亚洲第一区二区三区 | 日本特黄一级片 | 狠狠成人| 4438亚洲最大 | 又色又爽又黄18禁美女裸身无遮挡 | 精品国产乱码久久久久久88av | 日韩国产欧美精品 | 7m视频国产精品 | 黄a在线观看 | 日韩视频在线观看 | 韩国毛片基地 | 99精品国产99久久久久久51 | 中文无码伦av中文字幕 | 亚洲精品日本久久一区二区三区 | 丁香六月综合激情 | 成人av免费观看 | 一本加勒比hezyo综合 | 国产精品18久久久久久麻辣 | 无码纯肉视频在线观看 | 97在线免费视频观看 | 国产成人三级在线观看 | 人人爽久久涩噜噜噜红粉 | 成人深夜福利 | 久久久久国产精品一区三寸 | av在线资源 | 美女a视频| 国产欧美精品区一区二区三区 | 国产乱淫av片免费观看 | 色图av | 国产1234区2023| 4438五月天 | 丰满人妻妇伦又伦精品国产 | 日韩人妻无码免费视频一区二区三区 | 青青草原综合久久大伊人精品 | 国产三级精品三级男人的天堂 | 亚洲人网 | 亚洲色18禁成人网站www | 在线亚洲精品 | 高h禁伦1v1公妇借种 | 97在线免费 | 国产福利酱国产一区二区 | 国产精品21p | 99视频在线精品免费观看2 | 九九视频在线 | 99pao在线视频国产 | 波多野结衣乱码中文字幕 | 亚洲国产精品成人久久久 | 国产精品资源 | 日本视频精品 | 久久综合久 | 国产欧美一区二区在线 | 99久久人人爽亚洲精品美女 | 亚洲国产av精品一区二区蜜芽 | 久久精品欧美一区二区三区麻豆 | 国产精品一级视频 | 二男一女一级一片视频免费 | 日韩第四页 | 少妇淫片aaaaa毛片叫床爽 | 97久久人国产精品婷婷 | 色婷婷综合成人 | 日本少妇五级床片 | 中文字日产幕码三区的做法大全 | 日日撸视频 | 男人添女人囗交做爰视频 | 欧美精品久久久久久久免费 | 三级网址在线 | 国产寡妇亲子伦一区二区三区四区 | 俺去俺来也www色官网cms | 亚洲精品午夜久久久久久久灵蛇爱 | 国产真实一区二区三区 | av中文字幕网 | 激情免费网站 | 国产丝袜在线观看视频 | 日本熟妇人妻xxxxx-欢迎您 | 无码精品人妻一区二区三区影院 | 天天舔天天射天天干 | 亚洲va国产va天堂va久久 | 国产真实乱全部视频 | 婷婷久久综合九色综合88 | 国产一区二区中文字幕 | 天堂网2021最新天堂手机版 | 91综合精品| 色老汉视频 | 久久久精品人妻无码专区不卡 | 91亚洲成人 | 欧美v日本 | 99久久婷婷国产精品综合 | 成人精品一区二区三区 | 日本最新偷拍小便视频 | 极品人妻少妇一区二区三区 | 成人免费播放 | 国产一级片网址 | 午夜视频网 | 久久婷婷五月综合色99啪 | 亚洲一一在线 | 中文字幕精品在线 | 亚洲网站免费 | xxxxx国产| 香蕉视频色版 | 成片在线观看 | 极品粉嫩嫩模大尺度无码视频 | 亚洲日韩国产av无码无码精品 | 全黄性性激高免费视频 | 欧美一区二区黄色 | 久久精品国产69国产精品亚洲 | 欧美a级大片 | 国产日产精品一区二区三区四区的观看方式 | www国产亚洲精品久久麻豆 | 久青草视频 | 最新版天堂资源中文在线 | 亚洲 欧洲 无码 在线观看 | 人人妻人人爽人人澡av | 久久手机免费视频 | 国产熟妇乱子伦视频在线观看 | 日本国产一区二区三区在线观看 | 天天做天天爱夜夜爽少妇 | 中文在线观看av | 伊人久久久 | 亚洲国产一区在线 | 久久国产精品精品国产 | 一性一交一口添一摸视频 | 真实乱视频国产免费观看 | 国产精品视频在线观看 | 国产玉足榨精视频在线观看 | 日韩精品 中文字幕 视频在线 | 火车卧铺高h肉辣文虐 | 日韩毛片一区二区三区 | 久久天天躁夜夜躁狠狠 | 天天色播| 免费播放毛片精品视频 | 68日本xxxxxⅹxxx59 | 日韩一区二区三免费高清 | 性――交――性――乱视频 | 日本少妇热妇bbbbbb | 五月婷婷六月丁香 | 亚洲国产精品一区二区尤物区 | 亚洲第一黄色网址 | 婷婷中文在线 | 神马午夜888| 中文字幕狠狠干 | 中国性xxx| 国产免费av片在线 | 国产va免费精品观看精品 | 亚洲人色婷婷成人网站在线观看 | 亚洲成人生活片 | 狠狠综合久久av一区二区小说 | 3d啪啪动漫精品少妇 | 中文字幕女同 | 欧美性久久 | av网址导航 | 日韩1级片 | 亚洲男人第一无码av网站 | 亚洲精品性视频 | 四虎影视18库在线影院 | 精品国产乱码久久久久久天狼 | 韩国精品久久久 | 国产在线一卡二卡 | 国产精品天美传媒入口 | 亚洲精品在线不卡 | 欧洲熟妇色xxxx欧美老妇多毛网站 | 99久久精品国产片果冻的功能特点 | 国产va免费精品高清在线观看 | 免费观看理伦片在线播放 | 久久人人爽人人爽人人片亚洲 | 视频一区免费观看 | 成人男女啪啪免费观软件 | www.久久久.com| 亚洲成av人影院在线观看 | 狠狠色狠狠色综合 | 91精品区 | 亚洲国产成人精品无码区99 | 久久久久久久久久久久中文字幕 | 日韩黄色片免费看 | 免费人成网站在线观看欧美高清 | 天天摸天天摸 | 特级毛片在线观看 | 亚洲丁香婷婷久久一区二区 | 久久久久久国产精品无码下载 | 欧美疯狂做受xxxx高潮 | 欧美国产成人精品一区二区三区 | 精品久久国产字幕高潮 | 天堂无码人妻精品av一区 | 国产性猛交粗暴力xxxx | 欧美人成在线视频 | 国模大尺度自拍 | 欧美不卡在线视频 | 99久久99久久精品国产片果冻 | 亚洲欧美日韩国产手机在线 | 九九热这里只有精品6 | 成人羞羞视频国产 | 中文字幕资源网 | 屁屁国产第一页草草影院 | 欧美午夜精品 | 91插插插插插插插插 | 国产福利视频一区 | 中文在线一区二区三区 | 沈阳熟女露脸对白视频 | 日本阿v视频 | 国产成人无码网站 | 免费在线观看污片 | 青青草精品 | 黄色片免费在线观看 | 天干夜夜爽爽日日日日 | 两人做人爱费视频午夜 | 日韩国产第一页 | 极品国产在线 | 国产做a| 一本色道久久综合狠狠躁篇怎么玩 | 奇米影视四色7777 | 欧美精品久久久久久久监狱 | 国产成人亚洲精品 | 亚洲一区二区在线看 | 91丨porny丨国产麻豆 | 亚洲色图13p | 久久久亚洲精品一区二区三区 | 能看av的网站| 久久久.com| 亚洲色偷偷av男人的天堂 | 欧美××××黑人××性爽 | 91热在线 | 亚洲女优一区 | 成人综合站 | 直接观看黄网站免费视频 | 99在线观看视频 | xxxx日本高清 | 中文字幕在线免费看 | 精品伊人久久久久7777人 | 亚洲中文字幕av无码区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲日韩av无码一区二区三区 | 国产一级淫片a级aaa | 免费一级特黄3大片视频 | 国产激情无码一区二区三区 | 不用播放器av | 丰满少妇熟乱xxxxx视频 | 不卡免费视频 | 高h公妇烈火 | 成人免费播放视频 | 色婷婷18 | 小泽玛利亚一区二区在线观看 | aa视频免费观看 | 又粗又大内射免费视频小说 | 精品国产一区二区三区久久久狼 | 亚洲国产精品一区二区三区 | 本色视频aaaaaa一级网站 | 日韩精品a片一区二区三区妖精 | 国产免费一区二区三区香蕉精 | 国产精品区一区二区三在线播放 | 日本无遮挡吸乳视频 | 亚洲老女人视频 | 草1024榴社区成人 | 日本人妻巨大乳挤奶水 | 男女天堂av| q2002日韩午夜伦高清 | 最新中文字幕免费 | 久久久久99精品成人片试看 | 日韩av片在线 | 成人av资源在线 | 秋霞福利影院 | 国产一区二区三区成人欧美日韩在线观看 | 日本丰满熟妇videossex8k 日韩亚洲欧美中文在线 | 国产婷婷色一区二区三区在线 | 亚洲性猛交xxxx| 国产精品久久久久久久久久久久久久久 | 日韩无套无码精品 | 91精品久久久久久久久久入口 | 成人区人妻精品一熟女 | 精品乱码久久久久久中文字幕 | 特黄a级片| 欧美亚洲国产精品久久 | www亚洲最大aⅴ成人天堂 | 欧美日韩理论 | 日韩久久久久久 | 激情插插插 | 粉嫩精品国产色综合久久不8 | 玩弄少妇人妻 | 国产精品免费大片 | 国产精品久久久久乳精品爆 | 粉嫩av一区二区三区天美传媒 | 日本边添边摸边做边爱的网站 | 久久精品亚洲酒店 | 日本无遮羞肉体啪啪大全 | 国产做爰全过程免费视频 | 亚洲免费综合色在线视频 | 免费人妻无码不卡中文字幕18禁 | 国产福利99| 亚洲国产精品久久久久久久 | 色婷婷久久综合中文久久一本 | 国产精品噜噜噜66网站 | 久久久亚洲国产精品 | 涩涩免费网站 | 亚欧激情乱码久久久久久久久 | 国产精品午夜视频 | 欧美精品一区二区三区久久久竹菊 | 日本中文在线观看 | 欧美日韩国产成人在线观看 | 国产97在线 | 免费 | 亚洲精品国产综合久久久久紧 | 色婷婷国产精品综合在线观看 | 国模大尺度自拍 | 女性高爱潮视频 | 嫩草视频在线播放 | 欧洲av在线免费观看 | 免费观看成人www动漫视频 | 内射夜晚在线观看 | 99av国产精品欲麻豆 | 国内精品伊人久久久久av影院 | 天堂网在线中文 | 亚洲国产专区 | 胸大美女又黄的网站 | 区一区二区三区中文字幕 | 自拍偷拍专区 | 超碰99在线 | 精品一区二区不卡无码av | 国产午夜视频在线观看 | 91看片淫黄大片91桃色 | 撸撸在线视频 | 欧美成人精品一区二区男人小说 | 亚洲男人的天堂在线播放 | 任我爽精品视频在线观看 | 国产精品无码av不卡顿 | 五月在线视频 | 少妇精品久久久久久久久久 | 深夜福利网站 | 久久男人av资源网站无码 | 欧美另类在线播放 | 中文字幕女同 | 韩欧美精品| 日本欧美韩国国产精品 | 少妇一级淫片免费观看 | 亚洲国产天堂久久综合 | 国产成年免费视频 | 播放黄色一级片 | 性欧美8khd高清极品 | 日本亚洲精品成人欧美一区 | 国产爆乳无码av在线播放 | 黑丝国产在线 | wwwav麻豆| 日本a v在线播放 | 日韩av无码社区一区二区三区 | 中出人妻中文字幕无码 | 亚洲自拍偷拍网 | 午夜免费一区 | 婷婷伊人五月色噜噜精品一区 | 亚洲国产精品国自产拍久久 | 精品伊人久久久久7777人 | 激情毛片视频 | 欧美黑人孕妇孕交 | 久久天天综合 | 超级碰碰97 | 国产精品日韩欧美一区二区 | 亚洲成a人片在线www | 亚洲第一成年网 | 91在线精品播放 | 爱射综合 | 国产精品.xx视频.xxtv | 亚洲成在人线在线播放 | 在线免费小视频 | 欧美极品第一页 | 久久久精品一区aaa片 | 波多野吉衣一区 | 特黄网站| 男女啪啪做爰高潮免费看 | 国产播放隔着超薄丝袜进入 | 在线黄色观看 | 欧美性网址 | 黄色免费在线播放 | 一区二区在线播放视频 | 91精产国品一二三产区区 | 99热精品在线观看 | 日本免费三区 | 国产一级黄色大片 | 最新无码a∨在线观看 | 人与动物黄色片 | 日韩午夜无码精品试看 | 精品国产乱码久久久久久影片 | 在线观看日韩欧美 | 日韩a√| 第一av在线| 国产内射合集颜射 | 日本大香伊一区二区三区 | xxxx18hd亚洲hd捆绑| 全黄h全肉边做边吃奶视频 熟妇人妻av无码一区二区三区 | 天堂а√中文最新版地址在线 | 香蕉免费在线视频 | 伊人久久大香线蕉无码 | 欧美在线一二三 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 国产成熟人妻换╳╳╳╳ | 关秀媚三级 | 巨胸挤奶视频www网站 | 中文字幕35页 | 欧美黑人一区二区三区 | 黄大色黄大片女爽一次 | 天天操天天干天天干 | 97国产精| 特大黑人娇小亚洲女喉交 | 久久综合久久久久 | 制服丝袜在线一区 | 少妇天天爽视频在线看网站 | 成人国产精品 | 女人两腿打开让男人添野外视频 | 久久久久久亚洲精品中文字幕 | 国产精品爱久久久久久久电影蜜臀 | 久久午夜无码免费 | 欧美精品自拍视频 | 九九九九精品视频在线观看 | 久久婷婷国产色一区二区三区 | 熟妇人妻av中文字幕老熟妇 | 国产裸体无遮挡 | 免费观看黄色一级视频 | 在线亚洲午夜片av大片 | 国产夜色精品一区二区av | 国产猛男猛女超爽免费视频 | 女同啪啪免费网站www | 国产网站视频 | 久久婷婷色一区二区三区asmr | 欧美性生交xxxxx久久久缅北 | 中国二级毛片 | 国模冰莲极品自慰人体 | 德国艳星videos极品hd | 国产熟妇搡bbbb搡bbbb | 天天爽夜夜爽人人爽曰 |