Найти в Дзене
Электромозг

Так нужен ли России процессор собственной архитектуры?

Оглавление

Что такое архитектура и микроархитектура?

Если знаете, то листайте дальше :-)

Под архитектурой в заголовке этой статьи я понимаю архитектуру набора команд процессора, микроархитектуру его ядер, эти команды выполняющих и, естественно, микроархитектуру всего процессора. Обращаю ваше внимание, что важно не путать архитектуру набора команд, микроархитектуру ядер (или архитектуру ядер, как кому нравится, тут это не критично, поскольку смысл понятен из контекста) и микроархитектуру процессора. Хотя архитектура набора команд обычно тянет за собой и принципы построения микроархитектуры ядра, так что в большой степени это всё взаимосвязано.

Архитектура набора команд — это, собственно, набор команд, логическая конфигурация регистров и памяти, с которыми они работают, и всё, что так или иначе связано с этим набором команд, логический уровень. Примерами архитектур наборов команд могут служить такие архитектуры, как ARM, MIPS и SPARC. Все эти архитектуры относятся к более широкому классу (типу) RISC-архитектур. Замечу, что наряду с RISC есть и другие широкие классы (типы) архитектур наборов команд, такие, как CISC, MISC и VLIW, но об этом чуть позже.

Микроархитектура ядра или архитектура ядра — это то, как именно устроено ядро, чтобы выполнять набор команд. Конкретное ядро той или иной микроархитектуры может иметь своё название, например, Cortex A710. Микроархитектуры одного типа могут также группировать под общим названием по какому-нибудь общему признаку.

Микроархитектура процессора — это то, как именно соединены ядра, память, интерфейсы и все остальные блоки внутри одного чипа, то есть то, как реализовано взаимодействие всех этих блоков. Микроархитектура процессора может принадлежать более широкому классу (типу) микроархитектур, сгруппированных по какому-нибудь общему признаку.

Для закрепления материала приведу ещё несколько примеров. Итак, есть распространённые типы (классы, концепции) архитектур наборов команд — RISC, CISC и VLIW. Также к общему типу можно отнести и относительно малораспространённую MISC, хотя это некий гибрид суперскалярной архитектуры (типа RISC) и концепции VLIW широкого командного слова.

В эти общие типы (классы, концепции) входят уже конкретные архитектуры наборов команд, самые известные из которых — ARM, MIPS и SPARC, относящиеся к RISC-концепции; x86 (и x86-64), относящиеся к CISC-концепции; Эльбрус и EPIC, относящиеся к VLIW-концепции.

Процессоры каких архитектур уже есть в России?

Будущие российские процессоры Байкал-L и Байкал-S2 (компании Байкал Электроникс) будут иметь лицензионную RISC-архитектуру набора команд «ARM v9» и лицензионные ядра, физически реализующее этот набор команд — Cortex A710 и Neoverse N2 соответственно.

Существующий у той же компании процессор Байкал-M имеет лицензионную RISC-архитектуру набора команд «ARM v8-A» и лицензионные ядра, физически реализующие этот набор команд — Cortex A57.

Ещё у этой компании есть процессор Байкал-T, который имеет тоже лицензионную RISC-архитектуру набора команд MIPS, точнее — «MIPS32» и лицензионные ядра, реализующие этот набор команд — P5600.

Российские процессоры Эльбрус-2С3 и Эльбрус-16С (компании МЦСТ) имеют собственную VLIW-архитектуру набора команд «Эльбрус v6» и собственные ядра, физически реализующие этот набор команд.

У этой компании есть ещё процессор МЦСТ-R2000, который имеет лицензионную RISC-архитектуру набора команд SPARC версии 9 и ядра собственной разработки, реализующие этот набор команд.

Также в России компания Yadro собирается разработать ещё один процессор, взяв за основу бесплатную RISC-архитектуру набора команд RISC-V. Будет ли она брать готовые ядра, или же их сделает заранее купленная ими российская компания Syntacore, специализирующаяся на этом — пока неизвестно. Возможен вариант взятия готового ядра и его доработка, что скорее всего и произойдёт.

Также в России разрабатывается ещё несколько процессоров с ядрами различных архитектур (лицензионных и собственных), но это специализированные процессоры (нейросетевые, для контроллеров и т.п.), и не о них сегодня речь.

Так вот, все вышеперечисленные процессоры имеют свои недостатки. Все лицензионные архитектуры зависят от того, кто эти лицензии выдаёт. Собственная архитектура — это только Эльбрус. Но это VLIW-архитектура, а она довольно специфична. Да, архитектура «Эльбрус» продолжает развиваться и совершенствоваться, но на данном этапе своего развития она не очень подходит для универсального процессора, поскольку не может эффективно выполнять код, исходник которого не написан с учётом некоторых особенностей. Поэтому прямое портирование программ путём перекомпиляции исходников не всегда даёт достаточную производительность.

Я думаю, что в будущем Эльбрус полностью уйдёт в суперкомпьютеры и, может быть, вычислительную технику Министерства обороны, а в гражданские ноутбуки и рабочие станции пойдут более приспособленные для этого процессоры.

Как же надо поступить?

В настоящее время Россия находится практически в самом начале работ по портированию программ с CISC=архитектуры x86 на другие архитектуры (ARM, Эльбрус и в будущем RISC-V), да и весь мир сейчас подходит к завершению эры архитектуры x86, и тоже стоит перед задачей портирования кода на альтернативные архитектуры.

В такой исторически переломный момент нет большой разницы, на какую архитектуру портировать софт. По сравнению с x86 его ещё относительно мало на любой из альтернативных архитектур. Поэтому я думаю, что именно сейчас имеет смысл разработать свою собственную отечественную архитектуру набора команд, которая потенциально могла бы стать более производительной для современного универсального процессора и современных задач.

Многие скажут — можно взять RISC-V и развивать его. Но мне думается, что имея такую хорошую математическую школу и превосходных математиков, мы могли бы создать для себя и для мира что-то более эффективное и подходящее для современных универсальных процессоров. Причём даже не в рамках CISC-RISC-VLIW, а придумать что-то концептуально новое, потенциально более производительное. Это продвинуло бы нас на два шага вперёд, а не на шаг, как в случае просто более удачной реализации имеющейся архитектуры в микроархитектуре ядер и процессора, где у нас, объективно говоря, не так много шансов ввиду малого количества специалистов, опыта и времени.

Также в качестве второго этапа можно попробовать провести НИОКРы по вычислителям, основанным на троичной системе счисления, почему нет? Причём заделы-то есть — ЭВМ «Сетунь-70» Брусенцова:

-2

В общем, чтобы не плестись в хвосте и не быть постоянно догоняющим, надо поступательно реализовывать какую-то новую перспективную идею. Сейчас самое время. Позже — придётся портировать слишком много софта.

Вот какую перспективную концепцию системы команд можно придумать, чтобы её можно было бы реализовать в железе максимально эффективно и получить опережающий результат? Сокращённый набор команд был (RISC), широкое машинное слово было (VLIW), сложные команды переменной длины были (CISC), гибрид суперскалярного и VLIW-подхода был (MISC), что ещё?

Свои мысли пишите в комментариях, ставьте лайки и подписывайтесь на канал. Пока! :-)