優秀的 Verilog/FPGA開源專案介紹(三)- 大廠的專案
谷歌開源晶片專案OpenTitan
OpenTitan 是 Google 開發的專案,旨在鼓勵廠家為資料中心和消費級裝置開發所謂的信任根(root-of-trust)技術。
如果一個系統被稱為擁有信任根,這意味著它有專門的晶片或模組負責阻擊駭客攻擊。比如說,在谷歌的最新Pixel 4手機中,Titan M微控制器扮演這個角色。這是一個微型處理器(如圖所示),每當使用者開啟手機,它就會驗證韌體的完整性。
與此同時,在資料中心中,信任根常常是所謂的硬體安全模組,這種專用裝置可以“妥善保管”伺服器用於加密敏感資料的加密金鑰。硬體安全模組與網路的其餘部分隔離開來,常常放在防篡改的地方。實際上,所有超大規模雲提供商以及思科和HPE等知名資料中心基礎設施供應商都有各自的信任根技術,不過據谷歌及合作伙伴聲稱,問題恰恰出在這裡。
谷歌雲OpenTitan負責人Dominic Rizzo說,矽片信任根是“一個高度專有化的領域。因此,我們所做的就是開放一切,那樣你就可以在硬體的最低層確保安全,而不用盲目信任專有設計……我們認為,透明性是安全的立足之本。”
OpenTitan信任根技術可以用於眾多硬體,包括主機板、網絡卡、路由器、物聯網裝置、移動及消費級裝置、機器學習系統及其他裝置。
谷歌稱,OpenTitan基於三個關鍵原則:任何人都能夠檢查矽片信任根,併為之貢獻程式碼;透過提供一種不受供應商鎖定影響的邏輯上安全的開放設計,提高靈活性;以及高質量,不僅設計本身確保了質量,還透過參考韌體和文件確保了質量。
谷歌希望藉助OpenTitan,可以為業界提供用於開發信任根產品的通用技術基礎模組。這家搜尋巨頭目前正在為使用流行的RISC-V架構的這個專案開發專用晶片設計。其他許多元件或部件也正在開發中,包括韌體、經過最佳化以處理加密任務的協處理器以及用於建立加密金鑰的物理隨機數生成器。
❝
文件連結:https://docs。opentitan。org/
❞
❝
https://github。com/lowRISC/opentitan
❞
阿里(平頭哥)的 AloT 晶片平臺無劍100
平頭哥無劍100
文件目錄如下:
❝
https://github。com/T-head-Semi/wujian100_open
❞
亞馬遜aws-fpga
AWS EC2 FPGA 開發套件是一套開發和執行時工具,用於在Amazon EC2 F1 例項上開發、模擬、除錯、編譯和執行硬體加速應用程式。它分佈在此 github 儲存庫和AWS 提供的FPGA Developer AMI - Centos / AL2 之間,無需任何開發工具成本。
⚠️ 注意:開發工具包僅支援 Linux 作業系統。
開發流程
建立 FPGA 設計(also called CL - Custom logic)後,開發人員可以建立 Amazon FPGA 映像 (AFI) 並將其輕鬆部署到 F1 例項。AFI 是可重用、可共享的,並且可以以可擴充套件和安全的方式進行部署。
開發環境
❝
https://github。com/aws/aws-fpga
❞
NVIDIA Deep Learning Accelerator
❝
https://github。com/nvdla/hw
❞
❝
https://github。com/openDLA
❞
深度學習開源專案。NVIDIA深度學習加速器(NVDLA)是一種自由開放的體系結構,它促進了設計深度學習推理加速器的標準方法。憑藉其模組化架構,NVDLA具有可擴充套件性,高度可配置性,並旨在簡化整合和可移植性。
架構如下:
目錄結構
該專案包含與 NVDLA 硬體版本相關的 RTL、C 模型和測試平臺程式碼。在此儲存庫中,您將找到:
目前我瞭解的就是上面這些專案,總體來說,在完整性、實用性及先進性(各個先進領域)等各方面都處於比較領先的地位,但是有些專案可能過於複雜,不太適合新手直接入門,需要在一定領域內有深入瞭解後才能理解。但是這些大廠的開源專案,程式碼部分可以學習借鑑,尤其一些程式碼規範。
百度Paddle Lite
Paddle Lite是一個高效能、輕量級、靈活性強且易於擴充套件的深度學習推理框架,定位於支援包括移動端、嵌入式以及伺服器端在內的多硬體平臺。
當前Paddle Lite不僅在百度內部業務中得到全面應用,也成功支援了眾多外部使用者和企業的生產任務。
Paddle Lite支援基於arm的FPGA zu3/zu5/zu9的模型預測,提供armv8的交叉編譯
PaddleLite透過呼叫底層驅動實現對FPGA硬體的排程,目前只支援百度Edgeboard開發板
米爾科技
米爾科技
黑金
https://paddlelite-data。bj。bcebos。com/doc_images/FPGA_demo/soft_arch。png
Lite實現FPGA簡介
Lite支援FPGA作為後端硬體進行模型推理,其主要特性如下:
PaddleLite FPGA版本支援原生 fluid 模型,無須使用opt工具進行格式轉化。
Lite中FPGA的kernel(feed、fetch除外)均以FP16、NHWC的格式作為輸入輸出格式,所有的weights和bias仍為FP32、NCHW的格式,feed的輸入和fetch的輸出均為FP32、NCHW格式的資料,在提升計算速度的同時能做到使用者對資料格式無感知
對於FPGA暫不支援的kernel,均會切回arm端執行,實現arm+FPGA混合佈署執行
目前FPGA成本功耗都較低,Lite基於FPGA的模型效能遠遠好於arm端,可作為邊緣裝置首選硬體
已驗證Paddle模型
分類網路:
MobileNet 系列
MobileNetV1
MobileNetV2
ResNet 系列
ResNet18ResNet34 ResNet50ResNet101ResNet152Res2Net50
SE-ResNet
ResNext 系列
ResNext50ResNext101
SE-ResNext
Inception 系列
InceptionV3
InceptionV4
檢測網路:
SSD系列主幹
Mobilenet-SSD
VGG-SSD
ResNet-SSD
YOLO-V3 系列主幹
Darknet50
MobileNet-V1
ResNet
tiny_yolo
❝
https://github。com/PaddlePaddle/Paddle-Lite
❞
附加《
優秀的 Verilog/FPGA開源專案介紹(二)-RISC-V
》中RISC-V-tinyriscv
完整的專案說明:
❝
https://liangkangnan。gitee。io/2020/04/29/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%86%99RISC-V%E5%A4%84%E7%90%86%E5%99%A8/
❞
實現的是一個單核32位的小型RISC-V處理器核(tinyriscv),採用verilog語言編寫。設計目標是對標ARM Cortex-M3系列處理器。tinyriscv有以下特點:
支援RV32IM指令集,透過RISC-V指令相容性測試;
採用三級流水線,即取指,譯碼,執行;
可以執行C語言程式;
支援JTAG,可以透過openocd讀寫記憶體(線上更新程式);
支援中斷;
支援匯流排;
支援FreeRTOS;
支援透過串列埠更新程式;
容易移植到任何FPGA平臺(如果資源足夠的話);
整體架構
❝
https://gitee。com/liangkangnan/tinyriscv
❞
詳細的中文設計說明,非常適合入門!
本文為OpenFPGA作者原創,未經本人授權禁止轉載!
NOW
現
在
行
動
!
學習Xilinx FPGA最好的資料其實就是官方手冊,下表總結了部分手冊的主要介紹內容,關注我,持續更新中……
優秀的 Verilog/FPGA開源專案介紹(一)-PCIe通訊
優秀的 Verilog/FPGA開源專案介紹(二)-RISC-V