在 IOTA 中,一個錢包完整發出交易 (transaction) 請求會被劃分為四個命令:
getTransactionsToApprove
attachToTangle
broadcastTransactions
storeTransaction
也就是先向 Host 取得兩個 tips (trunk, branch) 交易,接著錢包會將 trunk, branch,以及要發出的 transaction trytes 以 attachToTangle
送到 Host,讓 Host 簽發交易 (也就是 PoW),這步驟是發起交易最耗時的部分。接著請求 Host 將這筆交易廣播給其他鄰居,最後將這筆交易存下來。
針對物聯網和大規模部署的需求,我們實作了 IOTA Swarm nodes 並允許在中低階 Arm 環境佈署,而在 2018-06-13 會議記錄 提及評估透過 FPGA 加速 IOTA PoW (attachToTangle 命令) 並期望在 Arrow SoCKit Evaluation Board 建立兼具 FPGA 加速和 Arm TrustZone 安全隔離的系統雛形。
現有 IOTA PoW 的 FPGA 加速器實作:
用 FPGA 加速的 IOTA PoW 時間分佈 (橫軸單位: ms)
預期 iota-swarm-node 整合方案
Q1: 是否有TrustZone?
AjMaChInE p.102, SoCKIT to Me!Don’t Just Elevate, Integrate., 說明Arrow SoCKit Board可以做TrustZone應用
Q2: 選擇 shufps/dcurl或 LampaLab/iota_fpga?
items\projects | shufps/dcurl | LampaLab/iota_fpga |
---|---|---|
board | (old)Altera DE1 (new)(customize)Altera DE1 | Intel DE10-Nano Board |
FPGA | (old) Cyclone 2 (new) Cyclone 10 LP | Cyclone V |
HDL | VHDL-Core | Verilog/System Verilog |
HDL source | IOTA VHDL PoW (Pearl Diver) | iota_fpga/curl_accel_soc/hardware/ |
AjMaChInE
- 建議兩個都可以試試看,但Altera DE1 Cyclone 2不用試,因為硬體架構上沒有HPS 與 Arrow SoCKit board有落差
- 預計先試shufps/dcurl再試LampaLab/iota_fpga
PS:
Q3: FPGA合成資源初步判定
Items\Projects | shufps/dcurl | LampaLab/iota_fpga | Arrow SoCKit |
---|---|---|---|
LEs | 23,877 | ? | 110K |
ALMs | ? | 12 377 ALMs, 23 945 flip-flops (30% of 5CSEBA6U23I7 FPGA) | 41509 |
AjMaChInE 兩者初步判定皆可以在Arrow SoCKit上使用其資源合成。
PS:
ALM: Adaptive Logic Module
LE: Logic Element
Q4: Weakness: FPGA與CPU有共有區塊,此區塊會保存seed,可以透過mmap存取
AjMaChInE
- The SoCKit board的 Specifications並沒有寫到TZC400 (TrustZone® Address Space Controller)
- 替代解法: 設定normal world的page table讓此區塊不能讀不能寫不可執行且還需對OPTEE修改並撰寫OPTEE TA,這部分想要另外談。
PS: shufps/dcurl的第二步驟如果無法突破將會放棄,執行LampaLab/iota_fpga的移植; 如果成功,將不執行LampaLab/iota_fpga的移植。
Weakness解決方案執行順序: