Анатомия архитектуры RISC-V (1)
Введение в базовые знания процессора:
- Обратите внимание на различие "процессор"и"ядро процессора",а также"CPU"и"Core"Концепция чего-либо.
- «Ядро процессора» и «ядро» относятся к основной части внутри процессора, которая является настоящим ядром процессора.
- «Процессор» и «ЦП» часто представляют собой полноценную SoC,Содержит ядро процессора и другие устройства или память.
- На самом деле, в большинстве статей часто не соблюдаются строго различия между ними, а часто их смешивают.
- Душа процессора—Архитектура набора инструкций (ISA). Набор инструкций, как следует из названия, представляет собой набор инструкций, а инструкция относится к наименьшей единице операции, выполняемой процессором (например, сложение, вычитание, умножение и деление или чтение/запись данных памяти).
- Что касается интересующих MCU и MPU, то можно найти соответствующую информацию.
Введение в архитектуру набора инструкций (ISA):
Архитектура набора инструкций, которую иногда просто называют «архитектурой» или «архитектурой процессора». Благодаря архитектуре набора команд можно использовать различные аппаратные реализации процессора для разработки процессоров с различной производительностью. Конкретная схема аппаратной реализации процессора называется микроархитектурой.Хотя различные реализации микроархитектуры могут вызывать различия в производительности и стоимости, программное обеспечение может полностью работать на любом процессоре, использующем одну и ту же архитектуру набора команд без каких-либо изменений.. Следовательно, архитектуру набора инструкций можно рассматривать как уровень абстракции, как показано на следующем рисунке.Этот уровень абстракции представляет собой мост и интерфейс между базовым аппаратным обеспечением процессора и работающим на нем программным обеспечением, а также является важным уровнем абстракции в современных компьютерных процессорах.
Чтобы программисты могли писать низкоуровневое программное обеспечение,Архитектура набора инструкций — это не просто набор инструкций, она также определяет информацию об оборудовании, которую необходимо знать любому программисту, включая поддерживаемые типы данных, память (Memory), состояния регистров, режимы адресации и модели памяти.
综上可见,指令集架构才是区分不同 CPU 的主要标准,这也是 Intel 和 AMD 公司多年来分别推出了几十款不同的 CPU 芯片产品的原因。虽然来自于两个不同的公司,但是它们仍被统称为 x86 架构 CPU。
Архитектура набора команд в основном делится наКомпьютер со сложным набором команд (CISC) и компьютер с сокращенным набором команд (RISC), основные различия между ними заключаются в следующем:
CISC содержит не только часто используемые инструкции для процессоров, но и множество специальных инструкций, которые обычно не используются. Количество инструкций относительно велико, поэтому его называют сложным набором инструкций.
RISC содержит только инструкции, обычно используемые процессором, а для менее часто используемых операций тот же эффект достигается выполнением нескольких часто используемых инструкций. Поскольку количество инструкций относительно невелико, его называют сокращенным набором инструкций.
На заре ЦП,Когда-то CISC был мейнстримом, потому что он может делать больше с меньшим количеством инструкций.. Однако с развитием набора инструкций к набору инструкций CISC добавляется все больше и больше специальных инструкций, и начинают проявляться многие недостатки CISC. Например:
Директива 80% используется в процессе расчета типичной программы, только 20% всех типов инструкций, то есть команды, определенные набором инструкций CISC, часто используются только 20%, а 80% используются очень мало.
Эти специальные инструкции, которые редко используются, особенно усложняют конструкцию ЦП, что значительно увеличивает временные затраты и накладные расходы на аппаратную часть.
По вышеуказанным причинам с момента рождения RISC практически все современные архитектуры наборов команд решили использовать архитектуру RISC.
Введение в 32-битную и 64-битную архитектуру:
Помимо различия между CISC и RISC,Количество бит архитектуры набора команд процессоратоже важное понятие. С точки зрения непрофессионала,Биты - это ширина архитектуры процессора регистров общего назначения, которая определяет размер диапазона адресов, прочность вычислительной мощности данных. Например, процессор с 32-битной архитектурой, его регистр общего назначения имеет разрядность 32 бита и может адресовать диапазон 232Байт, то есть адресное пространство 4 ГБ, операнд, которым может оперировать инструкция операции, составляет 32 бита.
处理器指令集架构的宽度和指令的编码长度无任何关系。并不是说 64 位架构的指令长度为 64 位(这是一个常见的误区)。从理论上来讲,指令本身的编码长度越短越好,因为可以节省代码的存储空间。因此即便在 64 位的架构中,也大量存在 16 位编码的指令,且基本上很少出现过 64 位长的指令编码。
Подводя итог, без учета реальной стоимости и технологии реализации, теоретически говоря:
Ширина регистра общего назначения, то есть чем больше бит архитектуры набора команд, тем лучше, потому что это может обеспечить больший диапазон адресации и более высокую вычислительную мощность.
Чем короче длина кода инструкции, тем лучше, потому что это может сэкономить место для хранения кода.
Общие архитектурные биты: 8-битные, 16-битные, 32-битные и 64-битные. Ранние микроконтроллеры были в основном 8-битными и 16-битными, например хорошо известный микроконтроллер 8051, который представлял собой широко используемую 8-битную архитектуру.
Простое фоновое введение в архитектуру RISC-V:
Архитектура RISC-V была в основном изобретена в 2010 году такими разработчиками, как профессор Крсте Асанович, Эндрю Уотерман и Юнсуп Ли из Калифорнийского университета в Беркли (сокращенно Беркли), и получила решительную поддержку Дэвида Паттерсона, декана в области компьютерная архитектура. Разработчики Беркли изобретают новую архитектуру набора инструкций, а не используют полноценную архитектуру x86 или ARM, потому чтоПотому что эти архитектуры с годами стали чрезвычайно сложными и громоздкими, и существуют дорогие патенты и проблемы с лицензированием архитектуры.. Причем модификация RTL-кода для процессоров ARM не поддерживается, а исходный код для процессоров x86 получить просто невозможно. Другие архитектуры с открытым исходным кодом (такие как SPARC, OpenRISC) имеют более или менее проблемы (вы можете ознакомиться с информацией, если вам интересно). Я чувствую, что компьютерная архитектура и архитектура набора команд были очень зрелыми в течение десятилетий, но исследовательские институты, такие как Беркли, «не имеют риса» (не могут выбрать подходящую архитектуру набора инструкций для своего использования). Профессора и исследователи из Беркли решили изобрести новую, простую, открытую и свободную архитектуру набора инструкций, и так родилась архитектура RISC-V.
Первоначально он был разработан для поддержки исследований и обучения компьютерной архитектуре, но теперь мы надеемся, что он также станет стандартом.бесплатно и открытоАрхитектура реализации отрасли.
RISC-V (выражена какrisk-five) — это новая архитектура набора команд (ISA), буква «V» содержит два значения: одно — это архитектура набора инструкций пятого поколения, разработанная Беркли из RISC I, а другое — то, что она представляет вариации и векторы.
RISC-V необычен не только тем, что это относительно недавняя архитектура набора команд (она родилась в последнее десятилетие, запущена в 2011 году, в то время как большинство других наборов инструкций родились в 1970-х и 1980-х годах), но и тем, что она Одиноткрытый источникАрхитектура набора инструкций.
После нескольких лет разработки Беркли разработал полную цепочку программных инструментов и несколько экземпляров процессора с открытым исходным кодом для архитектуры RISC-V, которая привлекает все больше и больше внимания. В 2016 годуФонд RISC-V (Фонд)Официально создан и начал работать. Фонд RISC-V — это некоммерческая организация, ответственная за поддержку стандартного руководства по набору инструкций RISC-V и документации по архитектуре, а также за продвижение архитектуры RISC-V. Фонд RISC-V отвечает за техническое обслуживаниеСтандартная документация по архитектуре RISC-V, компиляторы и другие наборы программных инструментов, необходимые для ЦП., любая организация и физическое лицо могут в любое время бесплатно скачать его на сайте RISC-V Foundation (регистрация не требуется). Цели архитектуры RISC-V заключаются в следующем:
статьПолностью открытый набор инструкций,МожетБесплатное использование любого академического учреждения или коммерческой организации.
статьДействительно подходит для аппаратной реализации и стабиленСтандартный набор инструкций.
Цель Фонда RISC-V (открытого, некоммерческого) состоит в том, чтобы поддерживать стабильность RISC-V, медленно и осторожно развивать его только по техническим причинам иПопытка сделать его таким же популярным для оборудования, как Linux для операционных систем..
Углубленная архитектура RISC-V
Введение в модульный набор инструкций RISC-V
Набор инструкций RISC-V организован по модульному принципу, и каждый модуль представлен английской буквой.
Самая основная и единственная обязательная часть набора инструкций RISC-V — этоЗависит от I Подмножество основных целочисленных инструкций, представленных буквами. Используя это подмножество целочисленных инструкций, можно реализовать полный программный компилятор. Другие подмножества инструкций являются необязательными модулями, репрезентативные модули включают M/A/F/D/C/P, а именно:节选自RISC-V架构与嵌入式开发快速入门 胡振波
节选自The RISC-V Instruction Set Manual Volume I: Unprivileged ISA(RISC-V非特权架构文档)的目录
Кроме того"IMAFD, также известная как «универсальная» комбинация, на английском языкеписьмо GВыражать. Таким образом, RV32G означает RV32IMAFD, и аналогично RV64G означает RV64IMAFD. Для увеличения плотности кода архитектура RISC-V также предоставляет дополнительный «сжатый» подмножество инструкций на английском языке.письмо C Выражать. Длина кодировки сжатой инструкции равна 16 биты, в то время как обычные несжатые инструкции имеют длину 32 бита.
RISC-V необычно, в дополнение к недавно рождению и открытым исходным кодом, в этом, в отличие от почти все предыдущие ISAS, этоМодульностьиз. В его основе лежит базовая ISA под названием RV32I, на которой работает полный программный стек.RV32I исправлен и никогда не изменится. Это обеспечивает стабильную цель для разработчиков компиляторов, разработчиков операционных систем и программистов на ассемблере. Модульность исходит изДополнительные стандартные расширения, в зависимости от потребностей приложения аппаратное обеспечение может включать или не включать эти расширения. Эта модульность делает RISC-VКарманный размер и низкое энергопотреблениехарактеристики, которые могут быть критическими для встраиваемых приложений. После того, как компилятор RISC-V узнает, какие расширения содержит текущее оборудование, он может сгенерировать лучший код для текущих аппаратных условий.Соглашение состоит в том, чтобы добавить букву, представляющую расширение, к имени набора инструкций в качестве индикатора.. Например, RV32IMFD добавляет к базовому набору команд (RV32I) расширения для умножения (RV32M), операций с плавающей запятой одинарной точности (RV32F) и операций с плавающей запятой двойной точности (RV32D).Они по-прежнему являются необязательными и не будут необходимой частью всех будущих реализаций, как это было в инкрементальных ISA. 计算机体系结构的传统方法是增量ISA,新处理器不仅必须实现新的ISA扩展,还必须实现过去的所有扩展。感兴趣的查找相关资料。
Даже формат инструкции может проиллюстрировать некоторые аспекты более компактной конструкции ISA RISC-V для повышения производительности на ватт. Сначала только инструкцияшесть форматов, а все инструкции имеют длину 32 бита, что упрощает декодирование инструкций. для операций регистр-регистрТип RИнструкции для коротких операций немедленной загрузки и выборкиТип IИнструкции по выборке операций магазинаТип Sинструкция для операций условного переходаТип Бинструкция для длительного немедленногоU формаинструкции и для безусловных переходовТип Jинструкция. Как показано ниже:Чтобы еще больше уменьшить занимаемую площадь, архитектура RISC-V также обеспечивает «Встроенный"Архитектура,использовать английскийписьмо E выражать. Эта архитектура в основном используется в глубоко встроенных сценариях, которые преследуют чрезвычайно малую площадь и энергопотребление.Архитектура должна поддерживать только 16 целочисленные регистры общего назначения, в то время как невстроенные общие архитектуры должны поддерживать 32 целочисленных регистра общего назначения.
• Встроенная архитектура поддерживает только 32 битовая архитектура, в 64 или 128 Встроенная архитектура не поддерживается в битовой архитектуре. то есть толькоRV32E, без РВ64Е.
• Подмножество сжатых инструкций (обозначаемых буквами) рекомендуется для встроенных архитектур. C значит), т.е. RV32EC,Чтобы увеличить плотность кода во встроенных системах.
• Подмножества команд с плавающей запятой не поддерживаются встроенной архитектурой. Если вам нужно выбрать поддержку инструкций с плавающей запятой(F или D),вы должны использовать невстроенную архитектуру(RV32I вместо РВ32Е).
• Встроенная архитектура поддерживает только машинный режим (Machine Mode) и пользовательский режим (User Mode), другие привилегированные режимы не поддерживаются.
• Встроенные архитектуры поддерживают только прямое управление физическими адресами, а не виртуальными адресами.
В дополнение к вышеуказанным модулям существует несколько модулей, таких как L, B, P, V и T и т. д. В настоящее время большинство этих расширений все еще дорабатываются и определяются, а не доработаны, поэтому подробно обсуждаться не будут.
Список общих наборов инструкций RV32G и RV64G
上述图片均节选自The RISC-V Instruction Set Manual Volume I: Unprivileged ISA (RISC-V非特权架构文档)-Chapter 24