Отечественные микропроцессоры. Были! Есть. Будут?
Про «Эльбрус» знают все, про «Байкал» — многие. А слышали ли вы когда-нибудь о CPU КВАРК, КОМДИВ и «Мультиклет» или, скажем, о MALT либо Leonhard? Нет? Тогда этот обзорный материал по отечественным микропроцессорам и архитектурам подготовлен именно для вас!
- Страница 1 — Введение
- § Введение
- § Как мы дошли до жизни такой?
- § Наше или не наше?
- § Тоньше работать надо?
- § SPARC
- § МЦСТ R-xxxx
- § MIPS
- § Серия Л1876
- § «КОМДИВ-32» и «КОМДИВ-64»
- § «Байкал-Т1»
- § ARM
- § «Байкал-М/С»
- § RISC-V
- § Syntacore
- § CloudBEAR
- § «Эльбрус e2k»
- § «КВАРК»
- § «Мультиклет»
- § MALT
- § Leonhard
- § DSP
- § NeuroMatrix
- § «Мультикор»
- § Заключение
⇡#Введение
Роль Intel в истории микропроцессорной индустрии
Речь идет о модели Intel 4004. Мощным он не был и умел выполнять только действия сложения и вычитания. Одновременно он мог обрабатывать всего четыре бита информации (то есть был 4-битным). Но для своего времени его появление стало значительным событием. Ведь весь процессор поместился в одном чипе. До появления Intel 4004, компьютеры базировались на целом наборе чипов или дискретных компонентов (транзисторов). Микропроцессор 4004 лег в основу одного из первых портативных калькуляторов.
Первым микропроцессором для домашних компьютеров стал представленный в 1974 году Intel 8080. Вся вычислительная мощность 8-битного компьютера помещалась в одном чипе. Но по-настоящему большое значение имел анонс процессора Intel 8088. Он появился в 1979 году и с 1981 года стал использоваться в первых массовых персональных компьютерах IBM PC.
Далее процессоры начали развиваться и обрастать мощью. Каждый, кто хоть немного знаком с историей микропроцессорной индустрии, помнит, что на смену 8088 пришли 80286. Затем настал черед 80386, за которым следовали 80486. Потом были несколько поколений «Пентиумов»: Pentium, Pentium II, III и Pentium 4. Все это «интеловские» процессоры, основанные на базовой конструкции 8088. Они обладали обратной совместимостью. Это значит, что Pentium 4 мог обработать любой фрагмент кода для 8088, но делал это со скоростью, возросшей примерно в пять тысяч раз. С тех пор прошло не так много лет, но успели смениться еще несколько поколений микропроцессоров.
С 2004 года Intel начала предлагать многоядерные процессоры. Число используемых в них транзисторов возросло на миллионы. Но даже сейчас процессор подчиняется тем общим правилам, которые были созданы для ранних чипов. В таблице отражена история микропроцессоров Intel до 2004 года (включительно). Мы сделаем некоторые пояснения к тому, что означают отраженные в ней показатели:
- Name (Название). Модель процессора
- Date (Дата). Год, в который процессор был впервые представлен. Многие процессоры представляли многократно, каждый раз, когда повышалась их тактовая частота. Таким образом, очередная модификация чипа могла быть повторно анонсирована даже через несколько лет после появления на рынке первой его версии
- Transistors (Количество транзисторов). Количество транзисторов в чипе. Вы можете видеть, что этот показатель неуклонно увеличивался
- Microns (Ширина в микронах). Один микрон равен одной миллионной доле метра. Величина этого показателя определяется толщиной самого тонкого провода в чипе. Для сравнения, толщина человеческого волоса составляет 100 микрон
- Clock speed (Тактовая частота). Максимальная скорость работы процессора
- Data Width. «Битность» арифметико-логического устройства процессора (АЛУ, ALU). 8-битное АЛУ может слагать, вычитать, умножать и выполнять иные действия над двумя 8-битными числами. 32-битное АЛУ может работать с 32-битными числами. Чтобы сложить два 32-битных числа, восьмибитному АЛУ необходимо выполнить четыре инструкции. 32-битное АЛУ справится с этой задачей за одну инструкцию. Во многих (но не во всех) случаях ширина внешней шины данных совпадает с «битностью» АЛУ. Процессор 8088 обладал 16-битным АЛУ, но 8-битной шиной. Для поздних «Пентиумов» была характерна ситуация, когда шина была уже 64-битной, а АЛУ по-прежнему оставалось 32-битным
- MIPS (Миллионов инструкций в секунду). Позволяет приблизительно оценить производительность процессора. Современные микропроцессоры выполняют настолько много разных задач, что этот показатель потерял свое первоначальное значение и может использоваться, в основном, для сравнения вычислительной мощности нескольких процессоров (как в данной таблице)
Существует непосредственная связь между тактовой частотой, а также количеством транзисторов и числом операций, выполняемых процессором за одну секунду. Например, тактовая частота процессора 8088 достигала 5 МГЦ, а производительность: всего 0,33 миллиона операций в секунду. То есть на выполнение одной инструкции требовалось порядка 15 тактов процессора. В 2004 году процессоры уже могли выполнять по две инструкции за один такт. Это улучшение было обеспечено увеличением количества процессоров в чипе.
Чип также называют интегральной микросхемой (или просто микросхемой). Чаще всего это маленькая и тонкая кремниевая пластинка, в которую «впечатаны» транзисторы. Чип, сторона которого достигает двух с половиной сантиметров, может содержать десятки миллионов транзисторов. Простейшие процессоры могут быть квадратиками со стороной всего в несколько миллиметров. И этого размера достаточно для нескольких тысяч транзисторов.
Ремарка о национальной принадлежности продукта
В контексте выпуска чипов на Тайване, в «ЭЛВИСе» отдельно подчеркивают, что основные ядра в составе процессора, определяющие его уникальность и конкурентоспособность, являются собственной разработкой .
«По классификации, принятой Минпромторгом, процессор ELISE считается российской микросхемой второго уровня — изготавливается на зарубежной фабрике по современным технологическим нормам, но конструкторская документация и права на производство принадлежат российской компании», — рассуждают собеседники CNews.
Архитектура Фон-Неймана
В соответствии с организацией процессов выборки и исполнения команды в современных МПС применяют одну из двух архитектур: фон-неймановскую (принстонскую) или гарвардскую.
Основная особенность архитектуры Фон-Неймана заключается в использовании общей памяти для хранения программ и данных.
Рисунок 2. Структура МПС архитектуры Фон-Неймана
Основным преимуществом данной архитектуры является упрощение устройства МПС, поскольку реализовано обращение только к одной общей памяти. Помимо этого использование единой области памяти позволило оперативно перераспределить ресурсы между областями программ и данных, что существенно повысило гибкость МПС со стороны программного обеспечения. Размещение стека в общей памяти облегчило доступ к его содержимому. Поэтому данный тип архитектуры стал основным для универсальных компьютеров, в том числе и персональных.
Микропроцессор
С микропроцессором (далее МП) дела обстоят немного иначе. Он содержит в себе арифметико-логическое устройство, блок синхронизации и управления, запоминающие устройство, регистры и шину. То есть МП содержит в себе только то, что непосредственно понадобится для выполнения арифметический и логических операций. Все остальные комплектующие (ОЗУ, ПЗУ, устройства ввода/вывода, интерфейсы) нужно подключать извне.
Структурная схема микропроцессорного устройства
Первые микропроцессоры появились тоже в начале 70-х. Самым популярным на тот момент считался 4004. Это микропроцессор, разработанный компанией Intel и представленный 15 ноября 1971 года. Он имел внушающие на тот период характеристики:
- 2300 транзисторов;
- тактовая частота — 740 кГц;
- разрядность регистров и шины — 4 бита;
- техпроцесс — 10 мкм;
- площадь кристалла: — 12 мм².
К слову, 4004 был выполнен в обычном DIP-16 корпусе. Этот МП является самой популярной микросхемой для коллекционирования. Некоторые экземпляры продаются по 400 $ за штуку. Менее раритетные стоят около 250 $.
Уже через пару лет 8-битные МП позволили создавать первые бытовые микрокомпьютеры.
Естественно, тут преимуществом является то, что к МП можно на выбор подключать разную периферию с разными характеристиками (что не во всех случаях можно на МК). Второе основное отличие микропроцессора от микроконтроллера в том, что МП имеют больше вычислительной мощности. Их не имеет смысла ставить в микроволновки и «умные» лампочки. Микропроцессоры применяют там, где вычислительная мощность МК уже не справляется — игровые приставки, сложные вычислительные устройства и приборы, гаджеты.
Получается, чтобы обеспечить работоспособность микропроцессора, нужно подключить ему хотя бы минимальный набор периферии. Минусы:
- Размер — если в случае МК всё уже находится в одном корпусе, то минимальный набор элементов для работы МП занимает больше места.
- Цена — обычно, вся «сборка» комплектующих для МП выходит гораздо дороже «голых» микроконтроллеров.
- Производительность — микропроцессоры обладают большей производительностью, чем микроконтроллеры.
- Выбор — в случае МП у вас есть возможность подобрать комплектующие. Это позволит поставить более подходящую под ваши цели периферию.
Микропроцессорные инструкции
Даже невероятно простой микропроцессор, описанный мною только что, будет иметь довольно большой набор инструкций, которые он может выполнять. Коллекция инструкций реализована в виде битовых шаблонов, каждый из которых имеет различное значение, когда загражается в сектор команд. Люди не особенно хорошо запоминают битовые шаблоны, так как это набор коротких слов. К слову, этот набор коротких слов называется языком ассемблера процессора. Ассемблер может переводить слова в битовый шаблон очень легко, а затем старания ассемблера будут помещены в память для микропроцессора с целью выполнения.
Вот набор инструкций языка ассемблера:
- LOADA mem — загрузить в регистр с адресом памяти
- LOADB mem — загрузить в регистр B от адреса памяти
- CONB mem — загрузить постоянное значение в регистр B
- SAVEB mem — сохранить регистр B в адрес памяти
- SAVEC mem — сохранить регистр C в адрес памяти
- ADD — добавить A и B и сохранить результат в C
- SUB — вычесть A и B и сохранить результат в C
- MUL — умножить A и B и сохранить результат в C
- DIV — разделить A и B и сохранить результат в C
- COM — сравнить A и B и сохранить результат в тесте
- JUMP addr — перейти по адресу
- JEQ addr — перейти, если равно, для решения
- JNEQ addr — перейти, если не равно, для решения
- JG addr — перейти, если больше, для решения
- JGE addr — перейти, если больше или равно, для решения
- JL addr — перейти, если меньше, для решения
- JLE addr — перейти, если меньше или равно, для решения
- STOP — остановить выполнение
Язык ассемблера
Компилятор C переводит этот C-код на языке ассемблера. Если предположить, что оперативная память начинается с адреса 128 в этом процессоре, и постоянное запоминающее устройство (в котором содержится программа на языке ассемблера) начинается с адреса 0, то для нашего простого микропроцессора ассемблер может выглядеть следующим образом:
// Assume a is at address 128// Assume F is at address 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 the jump to 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // loop back to if17 STOP
Постоянное запоминающее устройство (ПЗУ)
Таким образом, теперь вопрос: «Как все эти инструкции интегрируются с постоянным запоминающим устройством?». Я поясню, конечно: каждая из этих команд на языке ассемблера должна быть представлена в виде двоичного числа. Для простоты предположим, что каждая команда на языке ассемблера присваивает себе уникальный номер. Например, это будет выглядеть так:
Данные цифры будут известны как коды операций. В постоянном запоминающем устройстве наша маленькая программа будет выглядеть следующим образом:
// Assume a is at address 128// Assume F is at address 129Addr opcode/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP
Вы видите, что 7 линий C-кода стали 18 линиями ассемблера, и это всё стало 32 байтами в постоянном запоминающем устройстве.
Декодирование
Инструкция декодирования должна превратить каждый из кодов операций в набор сигналов, которые будут управлять различными компонентами внутри микропроцессора. Давайте возьмём инструкции ADD в качестве примера и посмотрим, что она должна будет сделать. Итак:
- 1. В первом такте необходимо загрузить саму инструкцию, поэтому декодеру нужно: активировать тремя состояниями буфер для счётчика команд, активировать линию чтения (RD), активировать данные в трёх штатах буфера в регистре команд
- 2. Во втором такте инструкция ADD декодируется. Тут нужно сделать совсем немного: установить операцию арифметико-логического устройства (АЛУ) в регистр C
- 3. Во время третьего такта программный счётчик увеличивается (в теории это может перекрываться во втором такте)
Каждая инструкция может быть разбита в виде набора секвенированных операций — таких, какие мы только что просмотрели. Они манипулируют компонентами микропроцессора в правильном порядке. Некоторые указания, как, например, инструкция ADD, может занять два-три такта. Другие могут занять пять или шесть тактов.
Недостатки
Несмотря на ряд преимуществ RISC-V по сравнению с аналогами, у этой архитектуры имеется ряд недочетов.
Деятельность любой экосистемы по стандартизации имеет два аспекта. Один аспект — открытость, совместимость и легкость вхождения в индустрию для небольших компаний. Другой — ограничение гибкости: предложить свое расширение системы команд позволяется лишь крупным спонсорам, и даже для них этот процесс непростой. Например, проект Libre-RISCV разработки открытого GPU стал использовать архитектуру Power по причине невозможности получить от сообщества необходимую документацию. Разработчики Libre-RISCV предлагали векторное расширение (Simple-V), которое, по-видимому, было неинтересно сообществу RISC-V из-за наличия собственного векторного аналога.
Когда речь идет о высокой производительности, то практически из всех материалов по RISC-V следует вывод о необходимости сильного смещения в сторону суперскалярных ядер с внеочередным выполнением команд. С одной стороны, это ожидаемо, поскольку такой способ повышения производительности соответствует идеологии RISC, однако, с другой стороны, такой подход выглядит как лоббирование определенной технологии с целью продвижения собственных разработок. Кроме того, сообщество RISC-V умалчивает о графических процессорах. По сравнению, например, с Power, экосистема RISC-V выглядит хотя и более целостной, но менее зрелой, поскольку реальных реализаций на кристалле у RISC-V еще меньше.
По большому счету RISC-V пока нельзя считать универсальным средством для решения проблем стандартизации всей микроэлектроники, поскольку в текущей реализации эта архитектура не может быть основой, например, для VLIW-процессоров, в связи с тем что VLIW в принципе не предполагает наличия какого-либо абстрактного интерфейса: наоборот, система команд делается с учетом конкретной реализации процессора. Здесь следует упомянуть наиболее известные отечественные процессоры «Эльбрус» и NMC4, которые как раз используют VLIW. С технической точки зрения это хорошие решения, особенно когда необходимо добиться высокой производительности. Например, современные микропроцессоры «Эльбрус» лидируют по числу команд за такт (до 50), опережая на многих задачах новинки от Intel и AMD. Но эти решения дороги, по большей части закрыты, и даже внутри страны их можно использовать лишь ограниченно. Например, отечественные создатели ПО для гражданской авиации [5] не хотят работать с закрытой и специфической экосистемой «Эльбруса». Кроме того, для авиации необходимы процедуры сертификации, где недопустимы закрытые решения. Как следствие, в стране эксплуатируются экспортные системы, поставляемые с сертифицированной зарубежной электроникой.
Современные электронные системы настолько усложнились, что следование открытым стандартам стало критически важным для жизнеспособности и экономической целесообразности любого проекта разработки микропроцессора. Даже при острой необходимости использования какой-либо специфической аппаратной функциональности почти нет веских причин для того, чтобы не рассматривать открытые стандарты в качестве базовых. Те, кто не будут двигаться в этом направлении, постепенно вымрут из-за тяжести и дороговизны разработки и поддержки собственных решений с уникальной экосистемой, как бы хорошо это ни было для них в краткосрочной перспективе. В этой связи RISC-V выглядит весьма привлекательно: грамотно спроектированный стандарт, который позволяет решать проблемы совместимости (в том числе обратной в долгосрочной перспективе), безопасности, сертификации, энергопотребления, эффективной реализации многопоточности и удешевления разработки.
Стандарт RISC-V необратимо изменил мир микроэлектроники, и хотя эти изменения заметили еще не все, их последствия будут видны уже в ближайшее время. Вместе с тем не стоит принудительно переводить на RISC-V текущие проекты или уже работающие решения, однако благодаря этому стандарту многие вопросы микропроцессорной индустрии можно будет решать на другом уровне.
Что ждать в будущем?
Летающие автомобили, киборги, путешествие со скоростью света и перемещение во времени — это всё фантастика. Но вот 3 нм или 1,4 нм чипы, вполне возможно, нет.
На сегодня известно, что Intel к 2029 году планируют освоить 1,4 нм техпроцесс, а TSMC уже начали исследование 2 нм. Для этого компании должны разработать новое оборудование для производства, обучить персонал и сделать многое другое.
Другой вопрос, что транзистор 1,4 нм по размерам сопоставим примерно с 10 атомами и это может плохо отразиться на производительности. Случайные электроны могут менять биты по несколько раз в секунду и тогда о стабильных вычислениях может не идти и речи. Может быть закон Мура уже не актуален и его эпоха просто подходит к концу, а мы ещё этого не понимаем?