
2 марта на первой экологической конференции Xuantie RISC-V, проводимой Али Пинту, с уверенностью заявил Дэвид Паттерсон, отец RISC-V и лауреат премии Тьюринга.
С момента появления 10 миллиардов процессоров архитектуре Intel x86 потребовались десятилетия, ARM — 17 лет, а RISC-V — всего около 10 лет, что является беспрецедентным показателем в истории развития архитектуры чипов.
По некоторым данным, к 2025 году число процессоров, использующих архитектуру RISC-V, превысит 80 млрд. В сфере IoT прогнозируется, что к 2025 году 28% рынка будет занято RISC-V.
Итак, что такое RISC-V? (Далее в основном взято из цикла статей «Рождение ЦКБ-ВМ»)
Введение в RISC-V
RISC-V — это понятная, простая архитектура набора команд ЦП с открытым исходным кодом, разработанная в Калифорнийском университете в Беркли.
В 2010 году из-за ограничений других коммерческих наборов инструкций с закрытым исходным кодом исследовательская группа школы разработала новый набор инструкций с открытым исходным кодом с нуля при запуске нового проекта. Этот новый набор команд имеет большое количество регистров и прозрачную скорость выполнения инструкций, что может помочь компиляторам и программистам на языке ассемблера преобразовывать практические и важные проблемы в подходящий, эффективный код, и содержит менее 50 инструкций.
Этот набор команд — RISC-V, поэтому RISC-V — очень молодой набор команд.
Итак, каковы же основные наборы команд до этого?
В эпоху ПК x86 является непоколебимым повелителем. x86 — это CISC (компьютер со сложным набором инструкций), который отличается от RISC (компьютер с сокращенным набором инструкций). Число наборов инструкций CISC продолжает увеличиваться по мере развития. Это приведет к дальнейшему росту затрат, а также повлияет на производительность и энергопотребление. Более того, длина набора инструкций CISC и время выполнения не фиксированы, что затрудняет поиск эффективного универсального пути проектирования для завершения выполнения инструкций.
После популярности смартфонов ARM стал любимцем мобильных терминалов. ARM — это сокращенный набор команд (RISC) с низким энергопотреблением и низкой стоимостью. Однако для обеспечения обратной совместимости ARM необходимо сохранить множество устаревших определений, что приводит к серьезной избыточности набора команд, что усложняет документацию по архитектуре ARM. Все выше и выше.
В условиях нынешней монополии x86 и ARM RISC-V придал рынку новую жизнь.
Цель RISC-V — предоставить общую архитектуру набора команд ЦП для поддержки разработки системных архитектур следующего поколения без бремени устаревших архитектурных проблем на десятилетия вперед.
RISC-V может удовлетворить требования реализации от небольших микропроцессоров с низким энергопотреблением до высокопроизводительных процессоров центров обработки данных (DC). По сравнению с другими наборами инструкций ЦП набор инструкций RISC-V имеет следующие преимущества:
Прозрачность (с открытым исходным кодом)
ARM и x86 являются проектами с закрытым исходным кодом, и условия лицензирования чрезвычайно суровы: Intel не позволяет ни одной компании, кроме AMD и VIA, использовать набор инструкций x86; получение лицензии на набор инструкций ARM может потребовать десятков миллионов долларов; Лицензионные сборы будут взиматься, а разрешение необходимо будет пересмотреть после истечения срока его действия.
RISC-V — это настоящий проект с открытым исходным кодом, известный в области аппаратного обеспечения как Linux. Фактически, первоначальное намерение профессора Дэвида Паттерсона, профессора Крсте Асановича, Эндрю Уотермана и Юнсапа Ли, изобретших RISC-V, заключалось в том, чтобы «наборы инструкций хотят быть свободными», и любая компания, университет, исследовательское учреждение и человек во всем мире могут это сделать. Разработка RISC-совместимых процессоров с набором инструкций -V может быть интегрирована в экосистему программного и аппаратного обеспечения, построенную на RISC-V.
RISC-V использует лицензионное соглашение об открытом исходном коде BSD (одно из наиболее широко используемых лицензионных соглашений в свободном программном обеспечении). Соглашение об открытом исходном коде BSD позволяет пользователям изменять и распространять открытый исходный код, а также позволяет разрабатывать и продавать коммерческое программное обеспечение на его основе. с открытым исходным кодом и может создавать новое программное/аппаратное обеспечение без ограничений.
простота
После десятилетий разработки документы по архитектуре x86 и ARM достигли тысяч страниц, на чтение которых у инженера уходит почти месяц, а чтение документов RISC-V занимает всего 1-2 дня.
Это связано с тем, что RISC-V выбирает только наиболее часто используемые наборы команд, а затем специально оптимизирует их. Что касается необычных инструкций, их можно выполнить путем объединения нескольких базовых инструкций, что может значительно повысить эффективность. Таким образом, исходя из обеспечения тех же функций, набор инструкций RISC-V легче реализовать и позволяет избежать ошибок, чем набор инструкций x86 с тысячами инструкций.
Например, если мы используем x86, нам нужно купить целый супермаркет, чтобы пользоваться нужными нам товарами, но RISC-V — это супермаркет, в котором вы можете покупать товары по отдельности, и клиентам нужно выбирать только те товары, которые им нужны. просто заплатите за это.
Модульный
RISC-V использует упрощенное ядро и модульный механизм для обеспечения более расширенных настроек набора команд.
широта поддержки
Компиляторы, такие как GCC и LLVM, поддерживают набор инструкций RISC-V, а серверная часть Go для RISC-V также находится в стадии разработки.
зрелость
Базовый набор инструкций RISC-V был окончательно подтвержден и исправлен, и все будущие реализации RISC-V должны быть обратно совместимы. Кроме того, набор инструкций RISC-V был реализован аппаратно и проверен в реальных сценариях применения, и нет никаких потенциальных рисков, которые существуют в других наборах инструкций с меньшей поддержкой.
Когда CKB-VM встречается с RISC-V
CKB — это базовый уровень Nervos Network, и его цель — обеспечить достаточную безопасность и децентрализацию для приложений верхнего уровня. В процессе исследования и выбора CKB-VM мы неоднократно задумывались: какими функциями должна обладать CKB-VM?
Очевидно, что для использования виртуальной машины в блокчейне в любом случае необходимо соблюдать две ключевые характеристики:
1. Детерминизм: для фиксированных программ и входных данных виртуальная машина всегда должна возвращать фиксированные выходные результаты, и результаты не будут меняться со временем, операционной средой и другими внешними условиями;
2. Безопасность. Запуск виртуальной машины не повлияет на работу самой платформы.
Но эти условия являются лишь обязательными, и мы надеемся разработать виртуальную машину, которая сможет лучше служить целям CKB. После тщательного рассмотрения мы считаем, что такая виртуальная машина должна соответствовать следующим характеристикам:
гибкость
Наша цель — разработать виртуальную машину, которая будет достаточно гибкой, чтобы работать в течение длительного времени, чтобы CKB могла идти в ногу с развитием криптографии. История криптографии — это вечная битва между «держать меч» и «ломать стену»: в истории развития криптографии на протяжении тысячелетий шифрование и дешифрование — это бесконечное интеллектуальное соревнование. Так было и в прошлом, и в прошлом. будет то же самое в будущем. Некоторые алгоритмы шифрования, подходящие для сегодняшнего дня, например secp256k1, могут устареть в будущем; более ценные новые алгоритмы и технологии (такие как Шнорр или постквантовые подписи и т. д.) будут продолжать появляться в будущем; Программы, работающие на виртуальной машине блокчейна, должны иметь возможность более свободно и удобно использовать новые алгоритмы, и в то же время эти устаревшие алгоритмы должны быть естественным образом устранены.
Чтобы облегчить понимание, мы используем Биткойн в качестве примера. В настоящее время Биткойн использует SIGHASH для подписей транзакций и использует алгоритм хеширования SHA-256 в протоколе консенсуса. Так можем ли мы гарантировать, что подход SIGHASH, используемый Биткойном, по-прежнему будет лучшим выбором через несколько лет? Или, с увеличением вычислительной мощности, SHA-256 по-прежнему пригоден в качестве стабильного алгоритма хеширования? Для всех протоколов блокчейна, которые мы сейчас изучаем, если алгоритм шифрования необходимо обновить, неизбежно потребуется хард-форк. При разработке CKB мы хотели выяснить, как уменьшить вероятность хард-форков за счет конструкции виртуальной машины.
Думаем, а может ли виртуальная машина позволить обновить алгоритм шифрования? Или можно ли добавить в виртуальную машину новую логику проверки транзакций? Например, продолжая использовать secp256k1, если есть экономические стимулы или необходимость обновить алгоритм, можем ли мы реализовать более эффективный алгоритм проверки подписи без форка? Или, если кто-то найдет способ реализовать лучший алгоритм в CKB или ему понадобится внедрить новый алгоритм шифрования, можем ли мы гарантировать, что он/она сможет реализовать его свободно?
Мы надеемся, что CKB-VM сможет предоставить каждому больше места для реализации, максимизировать гибкость и позволить пользователям использовать новые алгоритмы шифрования, не дожидаясь хард-форков.
операционная прозрачность
Изучив текущее поколение виртуальных машин блокчейна, мы заметили проблему, по-прежнему принимая в качестве примера Биткойн: уровень виртуальной машины Биткойна предоставляет только стек, и стек не может знать, что может храниться в стеке во время выполнения. Размер данных или глубина стека. , является той же проблемой для всех других виртуальных машин, реализованных в режиме стека, хотя уровень консенсуса может предоставлять определение глубины стека или предоставлять глубину стека косвенно (на основе длины инструкции или ограничений газа). Это заставит разработчиков программ на виртуальной машине угадывать состояние программы во время ее работы. Этот тип виртуальной машины не позволяет программе полностью использовать весь потенциал виртуальной машины.
Основываясь на этой проблеме, мы считаем, что приоритетом должно быть определение ограничений всех ресурсов во время работы виртуальной машины, включая ограничения газа и размер стекового пространства, и разрешить программам, работающим на виртуальной машине, запрашивать использование ресурсов. Это позволит программам, работающим на ней. В зависимости от доступности ресурсов используются разные алгоритмы виртуальной машины. Благодаря такому дизайну программы могут использовать весь потенциал виртуальной машины. И в следующих сценариях мы можем увидеть большую гибкость виртуальной машины:
1. Вы можете выбирать различные стратегии для смарт-контрактов, которые хранят данные в зависимости от места хранения (емкости ячеек), доступного пользователям в CKB. Когда емкость ячейки достаточна, программа может напрямую сохранять данные, чтобы уменьшить количество используемых циклов ЦП (шаги, которые ЦП выполняет для выполнения машинной инструкции, когда емкость ячейки ограничена, программа может сжимать данные для адаптации); на меньшую емкость и использовать больше циклов ЦП.
2. Для смарт-контракта могут быть выбраны различные механизмы обработки на основе общего объема данных (данных ячейки), хранящихся пользователем, и размера оставшейся памяти. Когда имеется небольшой объем данных ячейки или большой объем оставшейся памяти, все данные ячейки могут быть считаны в память для обработки. Когда имеется большой объем данных ячейки или мало оставшейся памяти, каждая операция может читать только часть памяти, аналогично операции подкачки памяти.
3. Для некоторых распространенных контрактов, таких как алгоритмы хеширования, могут быть выбраны различные методы обработки в зависимости от количества циклов ЦП, предоставленных пользователем. Например, безопасности SHA3-256 достаточно для удовлетворения потребностей большинства сценариев, однако в контракте может использоваться алгоритм SHA3-512 для удовлетворения более высоких требований безопасности за счет использования большего количества циклов ЦП.
Накладные расходы во время выполнения
Механизм Gas в виртуальной машине Ethereum (EVM) представляет собой гениальную конструкцию. Он элегантно решает проблему завершения работы в сценариях приложений блокчейна (поскольку Ethereum является полным по Тьюрингу, операторы цикла разрешены, но операторы бесконечных циклов могут легко вызвать проблемы с завершением работы. Газовый механизм ограничивает максимальный объем вычислений блока, тем самым избегая этой проблемы) и позволяя программе выполнять вычисления на полностью децентрализованной виртуальной машине. Однако мы обнаружили, что очень сложно разработать разумный метод расчета газа для разных кодов операций (операторов) в EVM. EVM приходится корректировать механизм расчета газа почти каждый раз, когда он обновляется (уровень абстракции EVM относительно выше, один). Инструкция EVM может соответствовать нескольким базовым аппаратным инструкциям. При выполнении программы объем обрабатываемых данных и сложность вычислений можно оценить только путем оценки, поэтому EVM необходимо постоянно корректировать механизм расчета газа).
Поэтому мы задались вопросом: можно ли использовать конструкцию виртуальной машины для того, чтобы метод расчета потребления ресурсов при работе программы был более разумным и точным?
Мы надеялись найти конструкцию виртуальной машины, которая обеспечивала бы все вышеперечисленные возможности, но обнаружили, что не существует готового решения, которое могло бы реализовать наше видение CKB. Поэтому мы решили перепроектировать виртуальную машину, которая могла бы соответствовать всем вышеперечисленным характеристикам, чтобы лучше реализовать концепцию CKB.
Хотя некоторые из этих функций могут быть присущи и другим наборам команд, по нашей оценке, набор команд RISC-V — единственный, который обладает всеми из них.
Поэтому в конечном итоге мы решили реализовать CKB-VM с использованием набора команд RISC-V.
Рекомендуемое чтение:
1. Выждав и наблюдая, пробуя почву и попадая в ловушки, RISC-V оказался на трамплине, чтобы вступить в золотой век.
2. RISC-V действительно стал реальностью, а скорость немного превосходит воображение.
3. Когда CKB-VM встречается с RISC-V — рождение CKB-VM.
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. Рождение CKB-VM, виртуальной машины блокчейна на базе RISC-V (1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. Вдохновение, дизайн и преимущества – рождение ЦКБ-ВМ (2)
https://talk.nervos.org/t/ckb-vm/1730
6. Как весело играть на CKB-VM - Рождение CKB-VM (3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. Главный вопрос Заки Маниана: виртуальная машина Blockchain, какая из них больше подходит, WASM или RISC-V?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
