http://lych.yo2.cn/articles/fpga%e8%ae%a1%e7%ae%97%e6%9c%ba%ef%bc%88%e5%8f%af%e9%87%8d%e6%9e%84%e8%ae%a1%e7%ae%97%ef%bc%89%e6%9d%82%e6%80%9d.html
註:本文原來發帖在21ic上,結果21ic的反應一如既往地讓我失望。現連同回複,全部轉帖在此,望與懂行者交流。
==============無奈的分割線===============
mercell 發表於 2007-12-3 14:14 樓主:
FPGA電腦,應該是什麼樣子?
作為典型的非馮·諾伊曼計算架構之一,用FPGA構成的計算系統無疑是很有吸引力的。現有的此類解決方案,其實都沒有離開馮·諾伊曼機的架構,比如用 FPGA作為傳統CPU的可重構副處理器,或者在FPGA內做出軟核CPU(馮·諾伊曼虛擬機器)。何時FPGA計算平台能擺脫這種局限,真正用自身的特質來構成未來的先進計算平台,是值得期待的。
基於FPGA的計算平台應該具備如下特徵:
1.動態局部重配置。這個局部可以是一個FPGA晶片內的部分邏輯,也可以是一個FPGA晶片陣列中的部分晶片。系統根據需求,時刻分配新的邏輯資源,構成新的邏輯組件,來完成新的計算任務,並釋放已經完成的任務所佔用的邏輯資源。這種切換的最佳時間粒紋還有待確定,和傳統CPU的多任務切換將會有所區別。未來我們將會用new/delete來分配整塊邏輯電路,new的過程就是從RAM的指定地址(程式碼片段?)載入配置資料到FPGA配置儲存空間的指定地址,並將該塊配置儲存空間標記為已經使用,delete則清除這種標記。隨著抽象的提高,引入垃圾收集似將成為一種必然。
2.新結構的主存和輔存。主存一如既往由大量DRAM充當,但其結構細節和使用方式與傳統將會有所改變。典型之一是資料口的寬度,由於FPGA不再具備傳統CPU的次序讀寫特徵,而是以大塊地讀寫配置資料為主,粒度在KB~MB層級,而計算過程中的小規模、頻度高的資料存放區任務,則大量由FPGA內部的 SRAM單元擔當。這種使用方式使DRAM傾向於具備更寬的資料連接埠,和更粗粒度的編址方式。比如主存可能按頁(4KB)編址,給出頁面號之後,即以高度最佳化的DMA方式一次完成整頁資料的讀寫。而主存的快取也會做出類似改變。系統的輔存和傳統一樣,以硬碟和快閃記憶體為主,只是可執行檔中儲存的不再是指令序列,而是配置資料集合。當我們雙擊可執行檔的表徵圖,系統會載入程式碼片段和資料區段到主存,並根據進程調度,在合適的時刻將進程映像載入到FPGA中。時間片到之後,映像會被寫回主存,等待下次被調度。鑒於進程調度牽涉到的資料轉送量遠大於傳統系統,一種有效新的進程切換機制將會被引入。
3.最少的周邊I/O裝置。各種I/O控制器的數量將會大幅減少,因為一切都可以在FPGA內部做出來,並具備遠遠更高的靈活性。需要外圍電路的唯一理由,將會是對類比訊號的牽涉。各種數字訊號介面可以簡單地通過電平轉換直接連到FPGA的I/O引腳,甚至鍵盤的防震處理都不需要專門的晶片。FPGA 內部與這些引腳直接連接的邏輯部分被稱為硬體驅動,相關配置資料即是驅動軟體。普通應用編寫者不需要對介面細節感興趣,只需要與這些驅動軟體互動。
4.完善、分層次的新結構的軟體系統。由邏輯訊號構成的API將會形成標準的文檔,應用軟體編寫者可以以簡單的方式直接調用這些API而不用考慮硬體時序等低層次資訊。程式設計的主導思想可以是狀態機器,也可以是更高層的抽象。高度並行是不變的主題,傳統的順序執行的編程模型將成為一種高度抽象,或稱為“面向順序的編程(SOP)”。 以上是目前的思考結果,與傳統系統的相容性暫不考慮。望與大家討論,結識同道。