Современная электроника №3/2026
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 18 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 3 / 2026 В типовой СБИС CISC-процессора при- мерно половина площади кристалла занята памятью микропрограмм для инструкций, а в микросхеме процес- сора RISC-I узел управления занимает только 6% площади микросхемы [2]. Как же следует строить набор инструкций RISC-процессоров, чтобы оставались только самые простые и быстрые инструкции? Здесь можно отметить следующие базовые идеи. Известно, что наиболее медлен- ные операции – это обмен данны- ми с памятью, поскольку он требу- ет согласования работы процессора с внешним для него ОЗУ. Отсюда во всех RISC-процессорах основная часть команд работает только с небольшой собственной внутренней памятью – регистрами (часто используется тер- мин регистровый файл ). Желательно, чтобы регистры были в достаточном количестве. Для общения с ОЗУ тщательно раз- рабатывается несколько специализи- рованных инструкций. В литерату- ре их принято называть терминами LOAD и STORE – загрузить в регистр и сохранить из него. Попутно заметим, что рассматриваемые операции име- ют довольно ограниченные возмож- ности в адресации данных по сравне- нию с CISC-машинами, опять же ради повышения производительности. Ещё одно важное свойство, помо- гающее ускорить выполнение опе- раций в RISC, заключается в том, что все инструкции имеют стандар- тизированную кодировку: размер инструкций и их структура ( фор- мат ), за редким исключением, оди- наковы, что упрощает и ускоряет рас- шифровку. Предположим, нам удалось разра- ботать для RISC-процессора компакт- ный набор инструкций. А как быть с теми командами, которые были «сокращены» при конструировании? Очень просто: их надо составлять из нескольких имеющихся. В частности, стержневая тема данной статьи как раз и состоит в изучении оптималь- ных комбинаций инструкций для одного из наиболее распространён- ных программных фрагментов. Наконец, обсуждая вопрос о постро- ении системы команд, нельзя не отметить, что в RISC-V заложена ори- гинальная стратегия: имеется неболь- шой обязательный набор инструкций, который можно расширять дополни- тельными стандартными модулями или даже разрабатывать свои. Напри- мер, в базовом наборе нет операций умножения и деления, но при необ- ходимости можно добавить к нему расширение М , где они все сгруппи- рованы. Аналогичным образом, если потребуется, в ISA включаются стан- дартные модули обработки веществен- ных чисел F (обычная точность) и D (двойная). Использование констант в инструкциях В программах часто использу- ются некоторые неизменяющие- ся значения (константы). Поэтому в инструкциях процессора полез- но предусмотреть механизм для задания константы непосредствен- но в коде самой инструкции. Такой метод, когда обрабатываемое зна- чение находится внутри команды и не требует дополнительного обра- щения к памяти, принято называть непосредственной адресацией дан- ных. Саму константу обычно назы- вают непосредственным операндом (англ. – Immediate ). Достоинства оче- видны: после считывания команды константа немедленно доступна для использования. Недостаток в непо- средственном методе адресации тоже имеется: величина константы ограни- чена, поскольку она является одной из составных частей полной инструк- ции процессора. Как правило, в совре- менных компьютерах длина поля под константу значительно меньше дли- ны всего слова. Хотя известны способы сделать раз- мер константы произвольным, они не подходят для RISC-процессоров. Так, в 64-битных процессорах семейства Intel константа может иметь размер 1, 2, 4 или 8 байт [14]. Разумеется, дли- на команды при этом будет зависеть от размера константы, что противо- речит принципу единства размера инструкций и их структуры, принято- му в RISC-технологии. Другой способ справиться с ограничением и полу- чить «полноразмерную» константу применялся в некогда распростра- нённом семействе машин PDP. Там константа не входила в явном виде внутрь кода инструкции: собствен- но инструкция помещалась в пер- вое слово, а константа – в следующее [15]. Такой способ для технологии RISC тоже не подходит, поскольку он нару- шает однозначность чтения инструк- ций из памяти. Для решения описанной пробле- мы в RISC любая константа обыч- но делится на две части: старшую и младшую, причём они не обязатель- но одинаковы по размеру. Каждая часть заносится в регистр с помощью отдельной инструкции. В итоге вме- сто одной команды в программе полу- чаем две, но это как раз допускается RISC-идеологией. Важно учитывать, что константы бывают как положительные, так и отрицательные. Поэтому в вычис- лительных устройствах широко при- меняется так называемое правило расширения знака : в случае отри- цательных значений дополняемые слева разряды заполняются не нуля- ми, а единицами. Часто говорят, что знаковый (по сложившейся традиции старший) бит «укороченной» констан- ты расширяется до полного размера, иначе говоря, знак копируется во все добавленные разряды (см. второй эпи- граф). Расширение знака у непосред- ственного операнда часто ослож- няет работу с последним. Поэто- му, например, в RISC-компьютере MIPS логические операции AND, OR и XOR специально объявлены без- знаковыми [16] и на константы в них правило расширения знака не распространяется . Работает это сле- дующим образом. Пример 1 Пусть требуется сформировать в регистре $s0 32-битное шестнадцате- ричное значение 0x1234AA77. В MIPS полное значение делится на две поло- винки по 16 бит. В результате, исполь- зуя исключительный характер логи- ческой операции OR, можно получить требуемую константу двумя инструк- циями: LUI $s0, 0x1234; ORI $s0, 0xAA77. Первая из них загружает в регистр $s0 старшие 16 бит, а вторая – млад- шие. Отметим, что команда LUI млад- шие биты в $s0 сбрасывает в ноль, так что в них в результате операции ORI всегда получится значение непосред- ственного операнда. Хотя младшая половина констан- ты в данном случае содержит в своём самом старшем бите 1, расширение знака операнда не происходит бла- годаря принятому для инструкции ORI исключению из общего правила. Забегая вперед, скажем, что в RISC-V «отключить» действие расширения
RkJQdWJsaXNoZXIy MTQ4NjUy