本文源自 CKB 所著文章,由 wublockchain 轉載。 (前情提要:拆解 Vitalik 想用「RISC-V 取代 EVM」重構以太坊執行層的戰略野心 ) (背景補充:EVM該退場了!Vitalik提案改用RISC-V,ZK證明效能可提升百倍以上 ) 區塊鏈的出現使得智慧合約得到了更好的實現和發展,而區塊鏈和智慧合約之間,還存在著一個重要的角色:虛擬機器(Virtual Machine) 。 虛擬機器的概念在上個世紀六十年代就被提出來,而到九十年代才開始流行。當時的網路跨越了眾多不同的作業系統、瀏覽器,如果開發者想要製作一個應用,就需要去適配所有不同的作業系統。大家知道現在 App 開發就分為安卓和蘋果系統,而當時局面更加複雜。恰好 Java 程式語言開始流行,Java 構建的虛擬機器能夠讓程式只需要寫一次,依託 Java 虛擬機器就能夠在多個平臺上執行,所以當時提出的口號就是: 一處編譯、到處執行 。 我們知道比特幣是沒有虛擬機器的,因為比特幣就是把一段數位(也就是「比特幣」)從地址 A 轉移到地址 B,而以太坊則提出,區塊鏈上執行的為什麼不能是一套程式碼,能夠實現更多複雜多樣的東西?這就是我們所說的智慧合約平臺,所有節點執行一樣的合約程式碼得到完全一樣的結果。 在區塊鏈上,虛擬機器就是智慧合約的執行環境,是一個可以完全對外隔離的完整電腦體系。區塊鏈通過虛擬機器來呼叫和執行智慧合約,並要求所有節點都達成一致。而節點用的是不同的系統,有些機器是 64 位的,有些是 32 位的,傳統的 Java 虛擬機器容忍計算結果有少量的差異,但是在區塊鏈上所有結果必須一樣,因此,一個新的、適用於區塊鏈的虛擬機器是必不可少的。 理想中的區塊鏈虛擬機器 每個區塊鏈專案的虛擬機器設計,都會有自身的藝術追求,在追求眾多的特性同時做不同層次上的取捨。在做了大量的研究之後,我們認為理想中的區塊鏈虛擬機器應該是這樣的: 執行時有足夠的確定性,在呼叫同樣的智慧合約輸入時,應該返回相同的輸出結果,輸出結果不依賴於時間、執行環境等外部的條件; 執行時有足夠的安全性,虛擬機器的執行不會對平臺本身帶來負面影響;對更新足夠的靈活,讓區塊鏈不用通過硬分叉,就可以實現加密演算法的升級或新增(回想一下以太坊硬分叉升級的痛苦); 資訊足夠的透明,可以讓虛擬機器上執行的智慧合約充分發揮虛擬機器的潛力;費用機制足夠的合理,能夠確保虛擬機器執行時資源消耗的計算方式更加合理準確; 可以支援不同的語言編譯,讓開發者能夠自由地開發,將最新的科技運用其中。 在設計 Nervos CKB 虛擬機器之前,我們發現很多區塊鏈專案都不是用真實的 CPU 指令集來構造自己的虛擬機器的,他們更多的是選擇了 WASM 來構造自己的虛擬機器。 而我們更傾向於採用真實的 CPU 指令集來構造自己的虛擬機器,因為在任何精巧複雜的虛擬機器的最底層,都需要將操作轉變為原始的彙編指令來執行對 CPU 的操作。另外,採用真實 CPU 指令集就不會在設計層面引入一些語義約束,束縛虛擬機器的靈活性。 做一個不恰當的比喻,操作 CPU 需要有一套語言體系,使用真實的 CPU 指令集就如同能直接用這套語言體系和 CPU「說話」,那就非常方便。否則,就好像先說中文,再轉換為英文,不論多完美的翻譯水平,都會有一定的偏差和束縛。 通過真實的 CPU 指令集,虛擬機器可以根據需要增加任意型別的資料結構或演算法,可以最大限度的讓開發者寫出任何滿足要求的合約。於是我們決定大膽的嘗試使用真實的 CPU 指令集來構造自己的虛擬機器 CKB-VM。 在 CPU 指令集的選擇中,我們選擇了精簡的開源指令集 RISC-V。RISC-V 可以滿足從低功耗小型微處理器,到高效能資料中心(DC)處理器的實現要求,並且有著透明性、精簡性、模組化、支援的廣泛性和成熟性的特點。這些特性都和 CKB-VM 的設計需求完美契合。那麼 RISC-V 又是什麼呢? RISC-V RISC-V 是一個清晰、簡約、開源的 CPU 指令集架構,誕生於美國加州大學伯克利分校。 2010 年,由於其他商業閉源指令集的侷限性,該校的一個研究團隊在啟動一個新專案時,從零開始設計了一套全新的開源指令集。這套全新的指令集有著大量的暫存器和透明的指令執行速度,能夠幫助編譯器和組合語言程式員將實際的重要問題轉換為適當、高效的程式碼,並且只包含了不到 50 條指令 。這套指令集就是 RISC-V。 架構師們在設計 RISC-V 時,就是希望 RISC-V 在所有的計算裝置上都能夠有效工作。自 2010 年被髮明以來,RISC-V 簡潔的設計贏得了業界和學界的廣泛支援,並且獲得了社群的喜愛。 RISC-V 基金會 RISC-V 指令集的發展主要由 RISC-V 基金會以及社群推動。RISC-V 基金會創立於 2015 年,是一家非營利組織,也是首個開放、協作的軟硬體創新者社群。 RISC-V 基金會目前已經有超過 235 家成員,包括Google、高通、蘋果、IBM、特斯拉、華為等企業。成員可以參與制定並使用 RISC-V 指令集規範,並且參與相關軟、硬體生態系統的發展。 由於精簡、開源的設計,RISC-V 在一些學術機構中大受歡迎,如加州大學伯克利分校、麻省理工學院、普林斯頓大學、中科院計算所等。除此之外,一些政府機構,如印度政府、上海市經濟資訊委等,也大力支援基於 RISC-V 的專案開發。 現有的指令集 RISC-V 是一個非常年輕的指令集,那麼在此之前,主要的指令集都有哪些呢? 在 PC 時代,x86 是不可動搖的霸主,x86 是 CISC (Complex Instruction Set Computer,複雜指令集),和 RISC (Reduced Instruction Set Computer,精簡指令集) 不同,CISC 指令集會隨著發展不斷增多。這樣會使得成本不斷上升,效能和功耗也會受到影響。而且,CISC 指令集長度、執行時...
230267 帖子
198014 帖子
146071 帖子
79021 帖子
65826 帖子
63066 帖子
60058 帖子
57715 帖子
51943 帖子
50380 帖子
技術》什麼是 Vitalik 推崇的 RISC-V?CKB-VM 為什麼選擇 RISC-V?
本文源自 CKB 所著文章,由 wublockchain 轉載。 (前情提要:拆解 Vitalik 想用「RISC-V 取代 EVM」重構以太坊執行層的戰略野心 ) (背景補充:EVM該退場了!Vitalik提案改用RISC-V,ZK證明效能可提升百倍以上 ) 區塊鏈的出現使得智慧合約得到了更好的實現和發展,而區塊鏈和智慧合約之間,還存在著一個重要的角色:虛擬機器(Virtual Machine) 。 虛擬機器的概念在上個世紀六十年代就被提出來,而到九十年代才開始流行。當時的網路跨越了眾多不同的作業系統、瀏覽器,如果開發者想要製作一個應用,就需要去適配所有不同的作業系統。大家知道現在 App 開發就分為安卓和蘋果系統,而當時局面更加複雜。恰好 Java 程式語言開始流行,Java 構建的虛擬機器能夠讓程式只需要寫一次,依託 Java 虛擬機器就能夠在多個平臺上執行,所以當時提出的口號就是: 一處編譯、到處執行 。 我們知道比特幣是沒有虛擬機器的,因為比特幣就是把一段數位(也就是「比特幣」)從地址 A 轉移到地址 B,而以太坊則提出,區塊鏈上執行的為什麼不能是一套程式碼,能夠實現更多複雜多樣的東西?這就是我們所說的智慧合約平臺,所有節點執行一樣的合約程式碼得到完全一樣的結果。 在區塊鏈上,虛擬機器就是智慧合約的執行環境,是一個可以完全對外隔離的完整電腦體系。區塊鏈通過虛擬機器來呼叫和執行智慧合約,並要求所有節點都達成一致。而節點用的是不同的系統,有些機器是 64 位的,有些是 32 位的,傳統的 Java 虛擬機器容忍計算結果有少量的差異,但是在區塊鏈上所有結果必須一樣,因此,一個新的、適用於區塊鏈的虛擬機器是必不可少的。 理想中的區塊鏈虛擬機器 每個區塊鏈專案的虛擬機器設計,都會有自身的藝術追求,在追求眾多的特性同時做不同層次上的取捨。在做了大量的研究之後,我們認為理想中的區塊鏈虛擬機器應該是這樣的: 執行時有足夠的確定性,在呼叫同樣的智慧合約輸入時,應該返回相同的輸出結果,輸出結果不依賴於時間、執行環境等外部的條件; 執行時有足夠的安全性,虛擬機器的執行不會對平臺本身帶來負面影響;對更新足夠的靈活,讓區塊鏈不用通過硬分叉,就可以實現加密演算法的升級或新增(回想一下以太坊硬分叉升級的痛苦); 資訊足夠的透明,可以讓虛擬機器上執行的智慧合約充分發揮虛擬機器的潛力;費用機制足夠的合理,能夠確保虛擬機器執行時資源消耗的計算方式更加合理準確; 可以支援不同的語言編譯,讓開發者能夠自由地開發,將最新的科技運用其中。 在設計 Nervos CKB 虛擬機器之前,我們發現很多區塊鏈專案都不是用真實的 CPU 指令集來構造自己的虛擬機器的,他們更多的是選擇了 WASM 來構造自己的虛擬機器。 而我們更傾向於採用真實的 CPU 指令集來構造自己的虛擬機器,因為在任何精巧複雜的虛擬機器的最底層,都需要將操作轉變為原始的彙編指令來執行對 CPU 的操作。另外,採用真實 CPU 指令集就不會在設計層面引入一些語義約束,束縛虛擬機器的靈活性。 做一個不恰當的比喻,操作 CPU 需要有一套語言體系,使用真實的 CPU 指令集就如同能直接用這套語言體系和 CPU「說話」,那就非常方便。否則,就好像先說中文,再轉換為英文,不論多完美的翻譯水平,都會有一定的偏差和束縛。 通過真實的 CPU 指令集,虛擬機器可以根據需要增加任意型別的資料結構或演算法,可以最大限度的讓開發者寫出任何滿足要求的合約。於是我們決定大膽的嘗試使用真實的 CPU 指令集來構造自己的虛擬機器 CKB-VM。 在 CPU 指令集的選擇中,我們選擇了精簡的開源指令集 RISC-V。RISC-V 可以滿足從低功耗小型微處理器,到高效能資料中心(DC)處理器的實現要求,並且有著透明性、精簡性、模組化、支援的廣泛性和成熟性的特點。這些特性都和 CKB-VM 的設計需求完美契合。那麼 RISC-V 又是什麼呢? RISC-V RISC-V 是一個清晰、簡約、開源的 CPU 指令集架構,誕生於美國加州大學伯克利分校。 2010 年,由於其他商業閉源指令集的侷限性,該校的一個研究團隊在啟動一個新專案時,從零開始設計了一套全新的開源指令集。這套全新的指令集有著大量的暫存器和透明的指令執行速度,能夠幫助編譯器和組合語言程式員將實際的重要問題轉換為適當、高效的程式碼,並且只包含了不到 50 條指令 。這套指令集就是 RISC-V。 架構師們在設計 RISC-V 時,就是希望 RISC-V 在所有的計算裝置上都能夠有效工作。自 2010 年被髮明以來,RISC-V 簡潔的設計贏得了業界和學界的廣泛支援,並且獲得了社群的喜愛。 RISC-V 基金會 RISC-V 指令集的發展主要由 RISC-V 基金會以及社群推動。RISC-V 基金會創立於 2015 年,是一家非營利組織,也是首個開放、協作的軟硬體創新者社群。 RISC-V 基金會目前已經有超過 235 家成員,包括Google、高通、蘋果、IBM、特斯拉、華為等企業。成員可以參與制定並使用 RISC-V 指令集規範,並且參與相關軟、硬體生態系統的發展。 由於精簡、開源的設計,RISC-V 在一些學術機構中大受歡迎,如加州大學伯克利分校、麻省理工學院、普林斯頓大學、中科院計算所等。除此之外,一些政府機構,如印度政府、上海市經濟資訊委等,也大力支援基於 RISC-V 的專案開發。 現有的指令集 RISC-V 是一個非常年輕的指令集,那麼在此之前,主要的指令集都有哪些呢? 在 PC 時代,x86 是不可動搖的霸主,x86 是 CISC (Complex Instruction Set Computer,複雜指令集),和 RISC (Reduced Instruction Set Computer,精簡指令集) 不同,CISC 指令集會隨著發展不斷增多。這樣會使得成本不斷上升,效能和功耗也會受到影響。而且,CISC 指令集長度、執行時...