
Vào ngày 2 tháng 3, tại Hội nghị sinh thái Xuântie RISC-V đầu tiên do Ali Pingtou tổ chức, David Patterson, cha đẻ của RISC-V và là người đoạt Giải thưởng Turing, tự tin nói.
Từ khi ra mắt tới 10 tỷ bộ xử lý, kiến trúc x86 của Intel mất hàng thập kỷ, ARM mất 17 năm và RISC-V chỉ mất khoảng 10 năm, điều chưa từng có trong lịch sử phát triển kiến trúc chip.
Một số dữ liệu dự đoán đến năm 2025, số lượng bộ xử lý sử dụng kiến trúc RISC-V sẽ vượt quá 80 tỷ, trong lĩnh vực IoT, người ta dự đoán rằng RISC-V sẽ chiếm 28% thị trường vào năm 2025.
Vậy RISC-V là gì? (Nội dung dưới đây chủ yếu lấy từ loạt bài “Sự ra đời của CKB-VM”)
Giới thiệu về RISC-V
RISC-V là kiến trúc tập lệnh CPU nguồn mở, đơn giản, rõ ràng, được ra đời tại Đại học California, Berkeley.
Năm 2010, do hạn chế của các bộ hướng dẫn nguồn đóng thương mại khác, một nhóm nghiên cứu tại trường đã thiết kế một bộ hướng dẫn nguồn mở mới ngay từ đầu khi bắt đầu một dự án mới. Tập lệnh mới này có số lượng thanh ghi lớn và tốc độ thực thi lệnh minh bạch, có thể giúp trình biên dịch và lập trình viên hợp ngữ chuyển đổi các vấn đề thực tế và quan trọng thành mã phù hợp, hiệu quả và chứa ít hơn 50 lệnh.
Tập lệnh này là RISC-V, vì vậy RISC-V là tập lệnh rất trẻ.
Vì vậy, các tập lệnh chính trước đây là gì?
Trong kỷ nguyên PC, x86 là chúa tể không thể lay chuyển. X86 là một CISC (Máy tính tập lệnh phức tạp), khác với RISC (Máy tính tập lệnh giảm thiểu). Điều này sẽ khiến chi phí tiếp tục tăng cao, hiệu suất và mức tiêu thụ điện năng cũng sẽ bị ảnh hưởng. Hơn nữa, độ dài tập lệnh CISC và thời gian thực hiện không cố định, gây khó khăn cho việc tìm ra đường dẫn thiết kế phổ quát hiệu quả để hoàn thành việc thực hiện các lệnh.
Sau sự phổ biến của điện thoại thông minh, ARM đã trở thành con cưng của thiết bị đầu cuối di động. ARM là một tập lệnh rút gọn (RISC) với mức tiêu thụ điện năng thấp và chi phí thấp. Tuy nhiên, để duy trì khả năng tương thích ngược, ARM cần giữ lại nhiều định nghĩa lỗi thời, dẫn đến tình trạng dư thừa tập lệnh nghiêm trọng, khiến tài liệu kiến trúc ARM ngày càng trở nên phức tạp. cao hơn và cao hơn.
Trong tình trạng độc quyền x86 và ARM hiện nay, RISC-V đã mang lại sức sống mới cho thị trường.
Mục tiêu của RISC-V là cung cấp kiến trúc tập lệnh CPU chung để hỗ trợ phát triển kiến trúc hệ thống thế hệ tiếp theo mà không phải chịu gánh nặng về các vấn đề kiến trúc kế thừa trong nhiều thập kỷ tới.
RISC-V có thể đáp ứng các yêu cầu triển khai từ bộ vi xử lý nhỏ công suất thấp đến bộ xử lý trung tâm dữ liệu (DC) hiệu suất cao. So với các tập lệnh CPU khác, tập lệnh RISC-V có những ưu điểm sau:
Tính minh bạch (nguồn mở)
ARM và x86 đều là các dự án nguồn đóng và các điều khoản cấp phép cực kỳ khắc nghiệt: Intel không cho phép bất kỳ công ty nào ngoại trừ AMD và VIA sử dụng bộ lệnh x86 để có được giấy phép cho bộ lệnh ARM có thể phải đầu tư hàng chục triệu đô la; Phí cấp phép sẽ được tính và việc ủy quyền sẽ cần được thương lượng lại sau khi ủy quyền hết hạn.
RISC-V là một dự án nguồn mở thực sự, được gọi là Linux trong lĩnh vực phần cứng. Trên thực tế, mục đích ban đầu của Giáo sư David Patterson, Giáo sư Krste Asanovic, Andrew Waterman và Yunsup Lee, những người đã phát minh ra RISC-V là "Bộ hướng dẫn muốn được tự do", và bất kỳ công ty, trường đại học, tổ chức nghiên cứu và cá nhân nào trên thế giới đều có thể phát triển Bộ xử lý tương thích RISC với bộ hướng dẫn -V có thể được tích hợp vào hệ sinh thái phần mềm và phần cứng được xây dựng trên RISC-V.
RISC-V sử dụng thỏa thuận nguồn mở Giấy phép BSD (một trong những thỏa thuận cấp phép được sử dụng rộng rãi nhất trong phần mềm miễn phí). Thỏa thuận nguồn mở BSD cho phép người dùng sửa đổi và phân phối lại mã nguồn mở, đồng thời cho phép phát triển và bán phần mềm thương mại dựa trên. trên mã nguồn mở và Có thể tạo phần mềm/phần cứng mới mà không bị hạn chế.
sự đơn giản
Sau hàng chục năm phát triển, tài liệu kiến trúc của x86 và ARM đã lên đến hàng nghìn trang, gần như một kỹ sư phải mất gần một tháng để đọc, trong khi đọc tài liệu RISC-V chỉ mất 1 đến 2 ngày.
Điều này là do RISC-V chỉ chọn các tập lệnh được sử dụng phổ biến nhất và sau đó tối ưu hóa chúng một cách cụ thể. Đối với các lệnh không phổ biến, chúng có thể được hoàn thành bằng cách kết hợp một số lệnh cơ bản, điều này có thể cải thiện hiệu quả đáng kể. Do đó, trên cơ sở cung cấp các chức năng giống nhau, tập lệnh RISC-V dễ thực hiện hơn và có thể tránh được lỗi so với tập lệnh x86 với hàng nghìn lệnh.
Ví dụ: nếu chúng tôi đang sử dụng x86 thì chúng tôi phải mua cả một siêu thị để thưởng thức những mặt hàng mình cần; nhưng RISC-V là siêu thị nơi bạn có thể mua từng mặt hàng và khách hàng chỉ cần chọn những mặt hàng họ cần. chỉ cần trả tiền cho nó.
Mô-đun
RISC-V sử dụng lõi đơn giản hóa và sử dụng cơ chế mô-đun để cung cấp nhiều cài đặt tập lệnh mở rộng hơn.
phạm vi hỗ trợ
Các trình biên dịch như GCC và LLVM hỗ trợ tập lệnh RISC-V và phần phụ trợ của Go cho RISC-V cũng đang được phát triển.
trưởng thành
Bộ lệnh cốt lõi RISC-V cuối cùng đã được xác nhận và sửa chữa, đồng thời tất cả các triển khai RISC-V trong tương lai cần phải tương thích ngược. Ngoài ra, tập lệnh RISC-V đã được triển khai trong phần cứng và đã được xác minh trong các tình huống ứng dụng thực tế, đồng thời không có rủi ro tiềm ẩn nào tồn tại trong các tập lệnh khác có ít sự hỗ trợ hơn.
Khi CKB-VM gặp RISC-V
CKB là lớp cơ bản của Mạng Nervos và mục tiêu của nó là cung cấp đủ bảo mật và phân cấp cho các ứng dụng lớp trên. Trong quá trình nghiên cứu và lựa chọn CKB-VM, chúng tôi đã nhiều lần suy nghĩ: CKB-VM nên có những tính năng gì?
Rõ ràng, để một máy ảo có thể được sử dụng trên blockchain, có hai đặc điểm chính phải được đáp ứng trong mọi trường hợp:
1. Tính tất định: Đối với các chương trình và đầu vào cố định, máy ảo phải luôn trả về kết quả đầu ra cố định và kết quả sẽ không thay đổi do thời gian, môi trường hoạt động và các điều kiện bên ngoài khác;
2. Bảo mật: Việc thực thi một máy ảo sẽ không ảnh hưởng đến hoạt động của chính nền tảng.
Nhưng những điều kiện này chỉ là bắt buộc và chúng tôi hy vọng sẽ thiết kế được một máy ảo có thể phục vụ tốt hơn các mục tiêu của CKB. Sau khi xem xét cẩn thận, chúng tôi tin rằng một máy ảo như vậy phải đáp ứng các đặc điểm sau:
Uyển chuyển
Mục tiêu của chúng tôi là thiết kế một máy ảo đủ linh hoạt để hoạt động trong thời gian dài để CKB có thể theo kịp sự phát triển của mật mã. Lịch sử mật mã là cuộc chiến không hồi kết giữa “cầm gươm” và “phá tường”: trong lịch sử phát triển của mật mã hàng ngàn năm, mã hóa và giải mã là một cuộc cạnh tranh trí tuệ không ngừng nghỉ. sẽ giống nhau trong tương lai. Một số thuật toán mã hóa phù hợp cho ngày hôm nay, chẳng hạn như secp256k1, có thể lỗi thời trong tương lai; các thuật toán và công nghệ mới có giá trị hơn (chẳng hạn như Schnorr hoặc chữ ký hậu lượng tử, v.v.) sẽ tiếp tục xuất hiện trong tương lai. Các chương trình chạy trên máy ảo của blockchain sẽ có thể sử dụng các thuật toán mới một cách tự do và thuận tiện hơn, đồng thời, những thuật toán lỗi thời đó sẽ bị loại bỏ một cách đương nhiên.
Để dễ hiểu hơn, chúng tôi sử dụng Bitcoin làm ví dụ. Hiện tại, Bitcoin sử dụng SIGHASH cho chữ ký giao dịch và sử dụng thuật toán băm SHA-256 trong giao thức đồng thuận. Vì vậy, liệu chúng ta có thể đảm bảo rằng phương pháp SIGHASH được Bitcoin sử dụng này vẫn sẽ là lựa chọn tốt nhất trong một vài năm nữa không? Hoặc, với sức mạnh tính toán ngày càng tăng, liệu SHA-256 có còn phù hợp làm thuật toán băm ổn định không? Đối với tất cả các giao thức blockchain mà chúng tôi hiện đang nghiên cứu, nếu thuật toán mã hóa cần được nâng cấp thì chắc chắn sẽ cần phải có một hard fork. Khi thiết kế CKB, chúng tôi muốn khám phá cách giảm khả năng xảy ra hard fork thông qua thiết kế VM.
Chúng tôi đang nghĩ, liệu máy ảo có cho phép nâng cấp thuật toán mã hóa không? Hoặc có thể thêm logic xác thực giao dịch mới vào VM không? Ví dụ: trong khi vẫn sử dụng secp256k1, nếu có động cơ kinh tế hoặc nhu cầu cập nhật thuật toán, chúng tôi có thể triển khai thuật toán xác minh chữ ký hiệu quả hơn mà không cần giả mạo không? Hoặc, nếu ai đó tìm ra cách triển khai thuật toán tốt hơn trên CKB hoặc cần giới thiệu thuật toán mã hóa mới, chúng tôi có thể đảm bảo rằng họ có thể triển khai thuật toán đó một cách tự do không?
Chúng tôi hy vọng rằng CKB-VM có thể cung cấp cho mọi người nhiều không gian triển khai hơn, tối đa hóa tính linh hoạt và cho phép người dùng sử dụng các thuật toán mã hóa mới mà không cần chờ hard fork.
minh bạch hoạt động
Sau khi nghiên cứu thế hệ máy ảo blockchain hiện tại, chúng tôi nhận thấy một vấn đề, vẫn lấy Bitcoin làm ví dụ: Lớp VM của Bitcoin chỉ cung cấp một ngăn xếp và ngăn xếp không thể biết những gì có thể được lưu trữ trên ngăn xếp trong khi thực thi Kích thước dữ liệu hoặc độ sâu ngăn xếp. , là vấn đề tương tự đối với tất cả các máy ảo khác được triển khai ở chế độ ngăn xếp, mặc dù lớp đồng thuận có thể cung cấp định nghĩa về độ sâu ngăn xếp hoặc cung cấp độ sâu ngăn xếp một cách gián tiếp (dựa trên độ dài lệnh hoặc giới hạn gas). Điều này sẽ buộc các nhà phát triển chương trình trên VM phải đoán trạng thái của chương trình khi nó đang chạy. Loại VM này ngăn chương trình tận dụng tối đa tiềm năng của VM.
Dựa trên vấn đề này, chúng tôi tin rằng cần ưu tiên xác định giới hạn của tất cả tài nguyên trong quá trình vận hành VM, bao gồm giới hạn gas và kích thước không gian ngăn xếp, đồng thời cho phép các chương trình chạy trên VM truy vấn mức sử dụng tài nguyên. Các thuật toán VM to Different được sử dụng dựa trên tính sẵn có của tài nguyên. Với thiết kế này, các chương trình có thể khai thác hết tiềm năng của VM. Và trong các tình huống sau, chúng ta có thể thấy VM linh hoạt hơn:
1. Bạn có thể chọn các chiến lược khác nhau cho hợp đồng thông minh lưu trữ dữ liệu dựa trên không gian lưu trữ (Dung lượng di động) có sẵn cho người dùng trên CKB. Khi Dung lượng Ô đủ, chương trình có thể lưu trữ trực tiếp dữ liệu để giảm số chu kỳ CPU được sử dụng (các bước mà CPU thực hiện để thực thi một lệnh máy khi Dung lượng Ô bị giới hạn, chương trình có thể nén dữ liệu để thích ứng); đến Công suất nhỏ hơn và sử dụng nhiều chu kỳ CPU hơn.
2. Các cơ chế xử lý khác nhau có thể được chọn cho hợp đồng thông minh dựa trên tổng lượng dữ liệu (Dữ liệu di động) được người dùng lưu trữ và kích thước của bộ nhớ còn lại. Khi có một lượng nhỏ Dữ liệu di động hoặc một lượng lớn bộ nhớ còn lại, tất cả Dữ liệu di động có thể được đọc vào bộ nhớ để xử lý. Khi có một lượng lớn Cell Data hoặc ít bộ nhớ còn lại, mỗi thao tác chỉ có thể đọc một phần bộ nhớ, tương tự như thao tác hoán đổi bộ nhớ.
3. Đối với một số hợp đồng phổ biến, chẳng hạn như thuật toán băm, có thể chọn các phương pháp xử lý khác nhau dựa trên số chu kỳ CPU do người dùng cung cấp. Ví dụ: tính bảo mật của SHA3-256 đủ để đáp ứng nhu cầu của hầu hết các tình huống, tuy nhiên, hợp đồng có thể sử dụng thuật toán SHA3-512 để đáp ứng các yêu cầu bảo mật cao hơn bằng cách sử dụng nhiều chu kỳ CPU hơn.
Chi phí thời gian chạy
Cơ chế Gas trong Máy ảo Ethereum (EVM) là một thiết kế rất thông minh. Nó giải quyết vấn đề tắt máy trong các kịch bản ứng dụng blockchain một cách tinh tế (vì Ethereum đã hoàn tất Turing nên các câu lệnh vòng lặp được cho phép, nhưng các câu lệnh vòng lặp vô hạn có thể dễ dàng gây ra sự cố tắt máy. Cơ chế gas giới hạn số lượng tính toán tối đa của một khối, do đó tránh được vấn đề này) và cho phép chương trình thực hiện các phép tính trên một máy ảo hoàn toàn phi tập trung. Tuy nhiên, chúng tôi nhận thấy rằng rất khó để thiết kế một phương pháp tính toán Gas hợp lý cho các Opcode (toán tử) khác nhau trong EVM phải điều chỉnh cơ chế tính toán Gas hầu như mỗi lần cập nhật (mức độ trừu tượng của EVM tương đối cao hơn). Lệnh EVM có thể tương ứng với một số lệnh phần cứng cơ bản Khi thực thi chương trình, lượng dữ liệu được xử lý và độ phức tạp tính toán chỉ có thể được định giá thông qua ước tính, do đó EVM cần liên tục điều chỉnh cơ chế tính toán Gas).
Vì vậy, chúng tôi băn khoăn: Liệu thiết kế của VM có thể đảm bảo phương pháp tính toán mức tiêu thụ tài nguyên khi chương trình đang chạy hợp lý và chính xác hơn không?
Chúng tôi hy vọng tìm được một thiết kế VM cung cấp tất cả các khả năng trên nhưng nhận thấy rằng không có giải pháp sẵn có nào có thể đạt được tầm nhìn của chúng tôi đối với CKB. Vì vậy, chúng tôi quyết định thiết kế lại một VM có thể đáp ứng tất cả các đặc điểm trên để hiện thực hóa tốt hơn tầm nhìn của CKB.
Mặc dù các tập lệnh khác có thể chia sẻ một số tính năng này, nhưng theo đánh giá của chúng tôi, tập lệnh RISC-V là tập lệnh duy nhất có tất cả các tính năng đó.
Do đó, cuối cùng chúng tôi đã chọn triển khai CKB-VM bằng bộ hướng dẫn RISC-V.
Đề nghị đọc:
1. Sau khi chờ đợi, quan sát, thử nước và bước vào cạm bẫy, RISC-V đã đứng trên bàn đạp để bước vào thời kỳ hoàng kim.
2. RISC-V đã thực sự trở thành hiện thực và tốc độ hơi ngoài sức tưởng tượng.
3. Khi CKB-VM gặp RISC-V——Sự ra đời của CKB-VM
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. Sự ra đời của CKB-VM, máy ảo blockchain dựa trên RISC-V (1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. Cảm hứng, thiết kế và ưu điểm - sự ra đời của CKB-VM (2)
https://talk.nervos.org/t/ckb-vm/1730
6. Cách chơi vui vẻ trên CKB-VM - Sự ra đời của CKB-VM (3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. Câu hỏi hóc búa của Zaki Manian: Máy ảo Blockchain, cái nào phù hợp hơn, WASM hay RISC-V?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
