RISC-V

Ý nghĩa

ISA mới có thể sử dụng thường rất đắt tiền. Các nhà thiết kế máy tính thường không đủ khả năng làm việc miễn phí. Ngoài ra, phát triển CPU đòi hỏi chuyên môn thiết kế trong một số chuyên ngành: logic kỹ thuật số điện tử, trình biên dịch và hệ điều hành. Rất hiếm khi tìm thấy một nhóm như vậy bên ngoài một tổ chức kỹ thuật chuyên nghiệp. Các nhóm thường được trả từ tiền tính cho thiết kế của họ. Do đó, các nhà cung cấp thương mại cho các thiết kế máy tính, như ARM Holdings và MIPS Technologies tính phí bản quyền cho việc sử dụng các thiết kế, bằng sáng chế và bản quyền của họ.
Họ cũng thường yêu cầu các thỏa thuận không tiết lộ trước khi phát hành các tài liệu mô tả các ưu điểm và hướng dẫn chi tiết về thiết kế của họ. Trong nhiều trường hợp, họ không bao giờ mô tả lý do cho sự lựa chọn thiết kế của họ.
Chi phí và bí mật này làm cho việc phát triển phần cứng và phần mềm mới trở nên khó khăn hơn nhiều. Nó cũng ngăn chặn kiểm toán an ninh. Một kết quả khác là các bộ hướng dẫn máy tính đa năng hiện đại, chất lượng cao đã không được giải thích hoặc có sẵn ngoại trừ trong các môi trường học thuật.
RISC-V đã được bắt đầu để giải quyết những vấn đề này. Mục tiêu là tạo ra một ISA thực tế có nguồn mở, có thể sử dụng về mặt học thuật và trong bất kỳ thiết kế phần cứng hoặc phần mềm nào mà không có tiền bản quyền. Ngoài ra, các lý do cho mọi phần của dự án được giải thích, ít nhất là rộng rãi. Các tác giả RISC-V là học giả nhưng có kinh nghiệm đáng kể trong thiết kế máy tính. RISC-V ISA là sự phát triển trực tiếp từ một loạt các dự án thiết kế máy tính hàn lâm. Nó được bắt nguồn một phần để hỗ trợ các dự án như vậy.
Để giải quyết chi phí thiết kế, dự án bắt đầu như nghiên cứu học thuật được tài trợ bởi DARPA. Để xây dựng một cộng đồng người dùng lớn, liên tục và do đó tích lũy các thiết kế và phần mềm, các nhà thiết kế RISC-V đã lên kế hoạch hỗ trợ nhiều ứng dụng thực tế: Thực hiện trong thế giới thực nhỏ, nhanh và năng lượng thấp, mà không cần kiến trúc quá mức cho một kiến trúc vi mô cụ thể. Nhu cầu về số lượng lớn người đóng góp là một phần lý do tại sao RISC-V được thiết kế để phù hợp với nhiều mục đích sử dụng.
Do đó, nhiều người đóng góp RISC-V coi dự án là một nỗ lực cộng đồng thống nhất.

Người tiền nhiệm

Thuật ngữ RISC có từ khoảng năm 1980. Trước đó, có một số quan điểm cho rằng các máy tính đơn giản hơn có thể có hiệu quả, nhưng các nguyên tắc thiết kế không được mô tả rộng rãi. Máy tính đơn giản, hiệu quả luôn được quan tâm trong học tập.
Các học giả đã tạo ra bộ lệnh RISC DLX cho phiên bản đầu tiên của Computer Architecture: A Quantitative Approach vào năm 1990. David Patterson là một tác giả, và sau đó đã hỗ trợ RISC-V. DLX được dành cho mục đích giáo dục; các học giả và người có sở thích đã thực hiện nó bằng cách sử dụng FPGA, nhưng nó không thành công về mặt thương mại thương mại.
Các CPU ARM, phiên bản 2 trở về trước, có bộ hướng dẫn miền công cộng và nó vẫn được GNU Compiler Collection (GCC) hỗ trợ, một trình biên dịch phần mềm miễn phí phổ biến. Ba lõi nguồn mở tồn tại cho ISA này, nhưng chúng chưa được sản xuất.
OpenRISC là một ISA nguồn mở dựa trên DLX, với các thiết kế RISC liên quan. Nó được hỗ trợ đầy đủ với các triển khai GCC và Linux. Tuy nhiên, nó có ít triển khai thương mại.

Dùng trong đào tạo

Krste Asanović tại Đại học California, Berkeley, đã tìm thấy nhiều ứng dụng cho một hệ thống máy tính nguồn mở. Năm 2010, ông quyết định phát triển và xuất bản một dự án trong một "dự án ngắn ba tháng trong mùa hè". Kế hoạch là để giúp cả người dùng giáo dục và công nghiệp. David Patterson tại Berkeley cũng hỗ trợ nỗ lực. Ban đầu, ông xác định các thuộc tính của Berkeley RISC, và RISC-V là một trong những dự án nghiên cứu RISC hợp tác dài của ông. Ở giai đoạn này, sinh viên được cung cấp phần mềm ban đầu, mô phỏng và thiết kế CPU.
Các tác giả RISC-V và tổ chức của họ ban đầu đã cung cấp các tài liệu ISA và một số thiết kế CPU theo giấy phép BSD, cho phép các tác phẩm phái sinh như các thiết kế chip RISC-V có thể mở và miễn phí, hoặc đóng và độc quyền.
Tài trợ ban đầu là từ DARPA.

Foundation

Người dùng thương mại yêu cầu một hệ thống ổn định trước khi họ có thể sử dụng nó trong một sản phẩm có thể tồn tại nhiều năm. Để giải quyết vấn đề này, RISC-V Foundation được thành lập để sở hữu, duy trì và xuất bản tài sản trí tuệ liên quan đến định nghĩa của RISC-V. Các tác giả và chủ sở hữu ban đầu đã từ bỏ quyền của họ đối với nền tảng.
Tính đến  năm 2019 Tổ chức này đã xuất bản các ấn phẩm tự do định nghĩa RISC-V và cho phép sử dụng không giới hạn của ISA cho cả thiết kế phần mềm và phần cứng. Tuy nhiên, chỉ những thành viên trả tiền của RISC-V Foundationmới có thể bỏ phiếu để phê duyệt các thay đổi hoặc sử dụng logo tương thích đã đăng ký nhãn hiệu.

Yêu cầu thúc đẩy

Các nhà thiết kế nói rằng tập lệnh là giao diện chính trong máy tính vì nó nằm giữa phần cứng và phần mềm. Nếu một tập lệnh tốt đã được mở, có sẵn để sử dụng cho tất cả, nó sẽ giảm đáng kể chi phí phần mềm bằng cách cho phép tái sử dụng nhiều hơn nữa. Nó cũng sẽ làm tăng sự cạnh tranh giữa các nhà cung cấp phần cứng, những người có thể sử dụng nhiều tài nguyên hơn cho thiết kế và ít hơn cho hỗ trợ phần mềm.
Các nhà thiết kế khẳng định rằng các nguyên tắc mới đang trở nên hiếm hoi trong thiết kế tập lệnh, vì các thiết kế thành công nhất trong bốn mươi năm qua đã trở nên ngày càng giống nhau. Trong số những bản thất bại, hầu hết bị như vậy bởi vì các công ty tài trợ của họ thất bại về thương mại hóa, không phải vì các bộ hướng dẫn kém về mặt kỹ thuật. Vì vậy, một bộ hướng dẫn mở được thiết kế tốt được thiết kế bằng các nguyên tắc được thiết lập tốt sẽ thu hút sự hỗ trợ lâu dài của nhiều nhà cung cấp.
Hầu hết các ISA mở trước đó đã sử dụng Giấy phép Công cộng GNU(GPL), khuyến khích người dùng mở các triển khai của họ để sao chép và sử dụng bởi những người khác.
Không giống như các thiết kế học thuật khác chỉ được tối ưu hóa để đơn giản hóa giải trình bày, các nhà thiết kế tuyên bố rằng tập lệnh RISC-V dành cho máy tính thực tế. Nó được cho là có các tính năng để tăng tốc độ máy tính, nhưng giảm chi phí và sử dụng năng lượng. Chúng bao gồm kiến trúc lưu trữ load, các mẫu bit để đơn giản hóa bộ ghép kênh trong CPU, điểm nổi dựa trên tiêu chuẩn đơn giản hóa, một thiết kế trung lập về mặt kiến trúc và đặt các bit quan trọng nhất tại một vị trí cố định để tăng tốc độ mở rộng dấu hiệu. Gia hạn dấu hiệu được cho là thường nằm trên đường thời gian quan trọng.
Tập lệnh được thiết kế cho nhiều mục đích sử dụng. Nó hỗ trợ ba chiều rộng từ, 32, 64 và 128 bit, và một loạt các tập hợp con. Các định nghĩa của mỗi tập hợp con khác nhau một chút cho ba chiều rộng từ. Các tập hợp con hỗ trợ các hệ thống nhúng nhỏ, máy tính cá nhân, siêu máy tính với bộ xử lý vector và máy tính song song gắn trên giá kho.
Tập lệnh có chiều rộng thay đổi và có thể mở rộng để có thể thêm nhiều bit mã hóa. Không gian cho phiên bản kéo dài 128 bit của ISA được dành riêng vì 60 năm kinh nghiệm trong ngành đã chỉ ra rằng lỗi không thể phục hồi nhất trong thiết kế tập lệnh là thiếu không gian địa chỉ bộ nhớ. Tính đến  năm 2016, ISA 128 bit vẫn chưa được xác định một cách cố ý, vì có quá ít kinh nghiệm thực tế với các hệ thống bộ nhớ lớn như vậy. Có các đề xuất để thực hiện các hướng dẫn có độ rộng thay đổi lên tới 864 bit.
RISC-V cũng hỗ trợ sử dụng học thuật của các nhà thiết kế. Sự đơn giản của tập hợp số nguyên cho phép các bài tập cơ bản của học sinh. Tập hợp con số nguyên là một phần mềm cho phép ISA đơn giản để điều khiển các máy nghiên cứu. ISA có độ dài thay đổi cho phép mở rộng cho cả bài tập và nghiên cứu của sinh viên. Tập lệnh đặc quyền riêng biệt cho phép nghiên cứu hỗ trợ hệ điều hành mà không cần thiết kế lại trình biên dịch. Tài sản trí tuệ mở của RISC-V cho phép các thiết kế của nó được xuất bản, tái sử dụng và sửa đổi.

Phần mềm

Một vấn đề bình thường đối với một tập lệnh mới là thiếu thiết kế CPU và phần mềm. Cả hai vấn đề đều giới hạn khả năng sử dụng của nó và giảm việc áp dụng.
Trang web RISC-V có thông số kỹ thuật cho các hướng dẫn người dùng và thông số sơ bộ cho bộ hướng dẫn đặc quyền cho mục đích chung, để hỗ trợ các hệ điều hành.
Có một số thiết kế CPU RISC-V có nguồn mở, bao gồm Berkeley Out of Order Machine(BOOM) 64 bit, 64 bit Rocket, năm thiết kế CPU Sodor 32 bit từ Berkeley, picorv32 của Clifford Wolf, Scr1 từ Syntacore, PULPino (Riscy và Zero-Riscy) từ ETH Zürich/Đại học Bologna, và những bản khác. CPU Sodor ba giai đoạn xuất hiện apt cho một CPU nhúng nhỏ. Rocket có thể phù hợp với máy tính trung gian nhỏ gọn, công suất thấp như thiết bị cá nhân. BOOM sử dụng phần lớn cơ sở hạ tầng được tạo cho Rocket và có thể sử dụng được cho các máy tính cá nhân, siêu máy tính và quy mô kho. Cả picorv và Scr1 đều là các triển khai RV32IMC của đơn vị vi điều khiển 32 bit (MCU) trong Verilog. Các lõi trong PULPino triển khai một ISA RV32IMC đơn giản cho các bộ điều khiển vi mô (Zero-Riscy) hoặc một RV32IMFC mạnh hơn với các phần mở rộng DSP tùy chỉnh để xử lý tín hiệu nhúng.
Phần mềm thiết kế bao gồm một trình biên dịch thiết kế, Chisel, có thể giảm các thiết kế thành Verilog để sử dụng trong các thiết bị. Trang web này bao gồm dữ liệu xác minh để thử nghiệm triển khai cốt lõi.
Các công cụ phần mềm RISC-V có sẵn bao gồm chuỗi công cụ GNU Compiler Collection (GCC) (với GDB, trình gỡ lỗi), chuỗi công cụ LLVM, trình giả lập OVPsim (và thư viện Mô hình bộ xử lý nhanh RISC-V), trình giả lập Spike và trình giả lập trong QEMU.
Hỗ trợ hệ điều hành tồn tại cho nhân Linux, FreeBSD và NetBSD, nhưng các hướng dẫn chế độ giám sát không được chuẩn hóa Tính đến  ngày 14 tháng 3 năm 2019, vì vậy hỗ trợ này là tạm thời. Port cho FreeBSD sơ bộ cho kiến trúc RISC-V đã được cập nhật vào tháng 2 năm 2016 và được port trong FreeBSD 11.0. Các port của Debian và Fedora đang ổn định. Một port của Das U-Boot cũng có sẵn. UEFI Spec v2.7 đã xác định ràng buộc RISC-V và một port TianoCore đã được thực hiện bởi các kỹ sư HPE và dự kiến sẽ được đưa lên upstreamed. Có một port sơ bộ của hạt nhân seL4. Một trình giả lập tồn tại để chạy hệ thống RISC-V Linux trên trình duyệt web bằng JavaScript. Hex Five đã phát hành Stack IoT bảo mật đầu tiên cho RISC-V với sự hỗ trợ FreeRTOS.

Thiết kế

Đối với các hệ thống RISC-V đơn giản, giảm chi phí, có một đề xuất sử dụng các bit của thanh ghi dấu phẩy động để thực hiện lệnh đơn song song, số học từ nhiều dữ liệu (SIMD). Điều này được sử dụng rộng rãi để tăng tốc đa phương tiện và xử lý tín hiệu số khác. Tính đến  năm 2016, ISA này không được xác định, nhưng có thể giống với các hướng dẫn đa phương tiện của PA-RISC: Tăng tốc đa phương tiện. Bên cạnh toán học 64 bit gốc, CPU PA-RISC MAX2 có thể thực hiện số học trên bốn mật khẩu 16 bit cùng một lúc, với một số phương thức tràn. Nó cũng có thể di chuyển các từ khóa con đến các vị trí khác nhau. MAX2 của PA-RISC đã được đơn giản hóa một cách có chủ ý. Nó thiếu hỗ trợ cho các từ khóa 8 bit hoặc 32 bit. Kích thước từ phụ 16 bit được chọn để hỗ trợ hầu hết các tác vụ xử lý tín hiệu số. Những hướng dẫn này không tốn kém để thiết kế và xây dựng. Tuy nhiên, họ đã tăng hiệu suất của CPU đối với các tác vụ xử lý tín hiệu số từ 48 lần trở lên, cho phép các codec video thời gian thực thực tế vào năm 1995.

Bộ vector

Bộ hướng dẫn xử lý véc tơ được đề xuất có thể làm cho bộ SIMD đóng gói bị lỗi thời. Các nhà thiết kế hy vọng có đủ sự linh hoạt để CPU có thể thực hiện các hướng dẫn vectơ trong các thanh ghi của bộ xử lý tiêu chuẩn. Điều này sẽ cho phép thực hiện tối thiểu với hiệu suất tương tự như một ISA đa phương tiện, như trên. Tuy nhiên, một bộ đồng xử lý vector thực sự có thể thực thi cùng một mã với hiệu suất cao hơn.
Tính đến  ngày 29 tháng 6 năm 2015, đề xuất xử lý vector là một thiết kế linh hoạt, bảo thủ của bộ xử lý vector có độ chính xác hỗn hợp cho mục đích chung, phù hợp để thực hiện các hạt nhân tính toán. Mã sẽ chuyển dễ dàng đến các CPU có độ dài vectơ khác nhau, lý tưởng mà không cần biên dịch lại.
Ngược lại, các phần mở rộng SIMD vector ngắn ít thuận tiện hơn. Chúng được sử dụng trong x86, ARM và PA-RISC. Trong đó, thay đổi độ rộng từ buộc thay đổi tập lệnh để mở rộng các thanh ghi vectơ (trong trường hợp x86, từ các thanh ghi MMX 64 bit sang Phần mở rộng SIMD truyền phát 128 bit (SSE), sang Nâng cao 256 bit Phần mở rộng vectơ (AVX) và AVX-512). Kết quả là một tập lệnh đang phát triển và cần chuyển mã làm việc sang các hướng dẫn mới.
Trong ISA vectơ RISC-V, thay vì sửa độ dài vectơ trong kiến trúc, một lệnh (setvl) có sẵn trong đó có kích thước được yêu cầu và đặt độ dài vectơ ở mức tối thiểu của giới hạn phần cứng và kích thước được yêu cầu. Vì vậy, đề xuất RISC-V giống như thiết kế vector dài của Cray. Nghĩa là, mỗi vectơ trong tối đa 32 vectơ có cùng độ dài.
Ứng dụng chỉ định tổng chiều rộng vectơ mà nó yêu cầu và bộ xử lý xác định độ dài vectơ mà nó có thể cung cấp với các tài nguyên trên chip có sẵn. Điều này có hình thức của một hướng dẫn (vsetcfg) với bốn toán hạng ngay lập tức, chỉ định số lượng thanh ghi vector của mỗi chiều rộng có sẵn cần thiết. Tổng số phải không quá giới hạn địa chỉ là 32, nhưng có thể ít hơn nếu ứng dụng không yêu cầu tất cả. Độ dài vectơ bị giới hạn bởi bộ lưu trữ trên chip có sẵn chia cho số byte lưu trữ cần thiết cho mỗi mục nhập. (Các giới hạn phần cứng được thêm vào cũng có thể tồn tại, do đó có thể cho phép triển khai theo kiểu SIMD.)
Ngoài các vòng lặp vector, ứng dụng có thể yêu cầu các thanh ghi zero-vector, lưu hệ điều hành công việc bảo quản chúng trên các công tắc ngữ cảnh.
Độ dài vectơ không chỉ thay đổi về mặt kiến trúc mà còn được thiết kế để thay đổi theo thời gian chạy. Để đạt được tính linh hoạt này, tập lệnh có khả năng sử dụng các đường dẫn dữ liệu có chiều rộng thay đổi và các hoạt động kiểu biến bằng cách sử dụng quá tải đa hình. Kế hoạch là những thứ này có thể làm giảm kích thước và độ phức tạp của ISA và trình biên dịch.
Các bộ xử lý vector thử nghiệm gần đây với đường dẫn dữ liệu có chiều rộng thay đổi cũng cho thấy sự gia tăng lợi nhuận trong các hoạt động mỗi: giây (tốc độ), diện tích (chi phí thấp hơn) và watt (tuổi thọ pin dài hơn).
Không giống như một đơn vị xử lý đồ họa hiện đại thông thường, không có kế hoạch cung cấp phần cứng đặc biệt để hỗ trợ sự tiên đoán chi nhánh. Thay vào đó, mục đích dựa trên trình biên dịch chi phí thấp hơn sẽ được sử dụng.

Hệ thống gỡ lỗi bên ngoài

Có một đặc điểm kỹ thuật sơ bộ cho trình gỡ lỗi được hỗ trợ phần cứng của RISC-V. Trình gỡ lỗi sẽ sử dụng một hệ thống vận chuyển như Test Action Group (JTAG) hoặc USB để truy cập các thanh ghi gỡ lỗi. Giao diện gỡ lỗi phần cứng tiêu chuẩn có thể hỗ trợ giao diện trừu tượng được chuẩn hóa hoặc cấp lệnh.
Tính đến  tháng 1 năm 2017, hình thức chính xác của giao diện trừu tượng vẫn chưa được xác định, nhưng các đề xuất bao gồm một hệ thống được ánh xạ bộ nhớ với các địa chỉ được tiêu chuẩn hóa cho các thanh ghi của thiết bị gỡ lỗi hoặc một thanh ghi lệnh và một thanh ghi dữ liệu có thể truy cập vào hệ thống truyền thông. Các thông tín viên cho rằng các hệ thống tương tự được sử dụng bởi giao diện chế độ gỡ lỗi nền của Freescale (BDM) cho một số CPU, ARM, OpenRISC và LEON của Aeroflex.
Trong instruction feeding, CPU sẽ xử lý một ngoại lệ gỡ lỗi để thực thi các lệnh riêng lẻ được ghi vào thanh ghi. Điều này có thể được bổ sung với một thanh ghi truyền dữ liệu và một mô-đun để truy cập trực tiếp vào bộ nhớ. Hướng dẫn cho phép trình gỡ lỗi truy cập vào máy tính chính xác như phần mềm. Nó cũng giảm thiểu các thay đổi trong CPU và thích nghi với nhiều loại CPU. Điều này được cho là đặc biệt thích hợp với RISC-V vì nó được thiết kế rõ ràng cho nhiều loại máy tính. Thanh ghi truyền dữ liệu cho phép trình gỡ lỗi ghi vòng lặp di chuyển dữ liệu vào RAM và sau đó thực hiện vòng lặp để di chuyển dữ liệu vào hoặc ra khỏi máy tính với tốc độ gần tốc độ tối đa của kênh dữ liệu của hệ thống gỡ lỗi. Các thông tín viên nói rằng các hệ thống tương tự được sử dụng bởi MIPS Technologies MIPS, Intel Quark, Xtensa của Tensilica và cho giao diện chế độ gỡ lỗi nền của CPU Freescale Power ISA (BDM).