Отечественные микропроцессоры. Были! Есть. Будут?
Про «Эльбрус» знают все, про «Байкал» — многие. А слышали ли вы когда-нибудь о CPU КВАРК, КОМДИВ и «Мультиклет» или, скажем, о MALT либо Leonhard? Нет? Тогда этот обзорный материал по отечественным микропроцессорам и архитектурам подготовлен именно для вас!
- Страница 1 — Введение
- Страница 2 — Лицензированные архитектуры
- § SPARC
- § МЦСТ R-xxxx
- § MIPS
- § Серия Л1876
- § «КОМДИВ-32» и «КОМДИВ-64»
- § «Байкал-Т1»
- § ARM
- § «Байкал-М/С»
- § RISC-V
- § Syntacore
- § CloudBEAR
⇡#SPARC
Эти RISC-процессоры собственной разработки компания Sun представила в конце 80-х годов прошлого века. Через пять лет после их анонса в России была создана организация «Московский центр SPARC-технологий» (МЦСТ, MCST, ныне АО «МЦСТ»), которая и занималась разработкой отечественных процессоров на этой архитектуре. Несмотря на то, что архитектура была лицензирована множеством компаний по всему миру, основными разработчиками CPU оставались всё же Sun и, в меньшей степени, Fujitsu. Последние поколения процессоров SPARC интересны тем, что они работают на высоких частотах (до 4-5 ГГц), поддерживают исполнение до 8 потоков на ядро, а также отличаются большим числом ядер (до 32). Фактически такие мощные решения сейчас разрабатывают только две компании — Oracle (SPARC M8) и Fujitsu (SPARC64 XII).
Правда, тут есть некоторые нюансы. Например, обе компании ориентируются на корпоративный и государственный сектора. Компания Oracle позиционирует SPARC-решения как отличное средство для работы с Java и собственной базой данных, а Fujitsu использует SPARC в суперкомпьютерах для внутренних нужд Японии, в том числе военных. Так что ситуация чем-то напоминает историю с Itanium — вероятно, новые CPU делаются только для исполнения контрактных обязательств по поддержке не слишком многочисленных, зато богатых и требовательных заказчиков. Не забывайте, что многие действительно крупные и критические программные комплексы могут работать не просто годами, а десятилетиями. Как нельзя кстати и тот факт, что все новые вариации SPARC-процессоров обязаны соответствовать эталонной спецификации SPARC V9 Level 1, выпущенной в 1993 году (это, впрочем, не значит, что разработчикам запрещено добавлять новые функции).
С этим связан и другой нюанс. Основной ОС, наилучшим образом поддерживающей SPARC, долгие годы была Solaris, хотя существовали и другие проекты. При этом три года назад Oracle объявила о расширенной поддержке Linux, что можно трактовать и как отказ от Solaris. Ещё один хитрый момент — незадолго до того, как ее поглотила компания Oracle, Sun выложила в открытый доступ и IP-блоки последних на тот момент SPARC-процессоров, и коды Solaris. На практике действительно полезным OpenSPARC для себя сделали китайцы: в суперкомпьютере Tianhe-2 были CPU Galaxy FT-1500. Всё это сказано к тому, что на данный момент SPARC нельзя назвать популярной архитектурой и с точки зрения «железа», и в плане поддержки ПО. Рассчитывать на поддержку сообщества не стоит, хотя в нашем случае — «военка» и госзаказ — она скорее не нужна.
Содержание
Процессор был значительным развитием в x86 архитектура и расширила длинную линейку процессоров, которая простиралась до Intel 8008. Предшественником 80386 был Intel 80286, а 16 бит процессор с сегмент-на основе системы управления памятью и защиты. 80386 добавил трехступенчатый конвейер команд, расширил архитектуру с 16 бит к 32 бита, и добавил встроенный блок управления памятью. Этот пейджинг модуль перевода значительно упростил реализацию операционных систем, использующих виртуальная память. Он также предлагал поддержку зарегистрировать отладку.
80386 имеет три рабочих режима: реальный режим, защищенный режим и виртуальный режим. В защищенный режим, который дебютировал в 286, был расширен, чтобы позволить 386 адресовать до 4 ГБ памяти. Все новые виртуальный режим 8086 (или же VM86) позволил запустить один или несколько реальный режим программы в защищенной среде, хотя некоторые программы были несовместимы.
Возможность настройки 386-го так, как будто у него есть плоская модель памяти в защищенном режиме, несмотря на то, что он использует модель сегментированной памяти во всех режимах, было, возможно, самым важным изменением функции для семейства процессоров x86 до тех пор, пока AMD вышел x86-64 в 2003 г.
В 386 добавлено несколько новых инструкций: BSF, BSR, BT, BTS, BTR, BTC, CDQ, CWDE, LFS, LGS, LSS, MOVSX, MOVZX, SETcc, SHLD, SHRD.
Добавлены два новых сегментных регистра (FS и GS) для программ общего назначения, единое слово состояния машины из 286 выросло до восьми. регистры управления CR0 – CR7. Регистры отладки DR0 – DR7 были добавлены для аппаратных точек останова. Для доступа к ним используются новые формы инструкций MOV.
Главный архитектор при разработке 80386 был Джон Х. Кроуфорд. [13] Он отвечал за расширение архитектуры 80286 и набора инструкций до 32-разрядных, а затем возглавил микропрограмма разработка для микросхемы 80386.
В 80486 и P5 Pentium Линия процессоров была потомком дизайна 80386.
Типы данных 80386
Следующие типы данных напрямую поддерживаются и, следовательно, реализуются одним или несколькими 80386 машинные инструкции; эти типы данных кратко описаны здесь. [14] :
- Кусочек (логический ценить), битовое поле (группа до 32 бит) и битовая строка (длиной до 4 Гбит).
- 8-битное целое число (байт), либо со знаком (диапазон -128..127), либо без знака (диапазон 0..255).
- 16-битное целое число, либо со знаком (диапазон -32,768..32,767), либо без знака (диапазон 0..65,535).
- 32-битное целое число, либо со знаком (диапазон −2 31 ..2 31 −1) или без знака (диапазон 0..2 32 −1).
- 64-битное целое число, либо со знаком (диапазон −2 63 ..2 63 −1) или без знака (диапазон 0..2 64 −1).
- Компенсировать, 16- или 32-битное смещение, относящееся к ячейке памяти (с использованием любого режима адресации).
- Указатель, 16-битный селектор вместе с 16- или 32-битным смещением.
- Характер (8-битный символьный код).
- Нить, последовательность 8-, 16- или 32-битных слов (длиной до 4 Гбит). [15]
- BCD, десятичные цифры (0..9) представлены распакованными байтами.
- Упакованный BCD, две цифры BCD в одном байте (диапазон 0..99).
Процессоры
Все 32-разрядные и более поздние процессоры Intel, начиная с 386-го, а также совместимые с ними могут выполнять программы в нескольких режимах. Режимы процессора предназначены для выполнения программ в различных средах; в разных режимах возможности чипа неодинаковы, потому что команды выполняются по разному. В зависимости от режима процессора изменяется схема управления памятью системы и задачами. Процессоры могут работать в трех режимах.
- Реальный режим (16-разрядное программное обеспечение).
- Режим IA-32:
• защищенный режим (32-разрядное программное обеспечение);
• виртуальный реальный режим (16-разрядное программное обеспечение в 32-разрядной среде). - Расширенный 64-разрядный режим IA-32e (также называемый AMD64, x86-64 и EM64T):
• 64-разрядный режим (64-разрядное программное обеспечение);
• режим совместимости (32-разрядное программное обеспечение).
Реальный режим
Реальный режим иногда называют режимом 8086, поскольку он основан на инструкциях процессоров 8086 и 8088. В первом IBM PC использовался процессор 8088, который мог выполнять 16-разрядные команды, применяя 16-разрядные внутренние регистры, и адресовать только 1 Мбайт памяти, используя для адреса 20 разрядов. Все программное обеспечение PC первоначально было предназначено для этого процессора; оно было разработано на основе 16-разрядной системы команд и модели памяти объемом 1 Мбайт. Например, операционные системы DOS и Windows от 1.x до 3.x, а также все приложения для этих ОС написаны в расчете на 16-разрядные команды. Эти 16-разрядные операционные системы и приложения были разработаны для выполнения на первоначальном процессоре 8088.
Более поздние процессоры, например 286, также могли выполнять те же самые 16-разрядные команды, что и первоначальный 8088, но намного быстрее. Другими словами, процессор 286 был полностью совместим с первоначальным 8088 и мог выполнять все 16-разрядные программы точно так же, как 8088, только значительно быстрее. 16-разрядный режим, в котором выполнялись команды процессоров 8088 и 286, был назван реальным режимом. Все программы, выполняемые в реальном режиме, должны использовать только 16-разрядные команды, 20-разрядные адреса и поддерживаться архитектурой памяти, рассчитанной на емкость до 1 Мбайт. Для программного обеспечения этого типа обычно используется однозадачный режим, т.е. одновременно может выполняться только одна программа. Нет никакой встроенной защиты для предотвращения перезаписи ячеек памяти одной программы или даже операционной системы другой программой; это означает, что при выполнении нескольких программ вполне могут быть испорчены данные или код одной из них, что может привести всю систему к краху (или останову).
Режим IA»32 (32″разрядный)
Первым 32-разрядным процессором, предназначенным для PC, был 386-й. Этот чип мог выполнять абсолютно новую 32-разрядную систему команд. Чтобы полностью использовать преимущество 32-разрядной системы команд, были необходимы 32-разрядная операционная система и 32-разрядные приложения. Этот новый режим назывался защищенным, так как выполняемые в нем программы защищены от перезаписи своих областей памяти другими программами. Такая защита делает систему более надежной, поскольку ни одна программа с ошибками уже не сможет так легко повредить другие программы или операционную систему. Кроме того, программу, “потерпевшую крах”, можно довольно просто завершить без ущерба для всей системы.
Зная, что для разработки новых операционных систем и приложений, использующих преимущества 32-разрядного защищенного режима, потребуется некоторое время, Intel предусмотрела в процессоре 386 обратно совместимый реальный режим. Благодаря этому процессор 386 мог выполнять немодифицированные 16-разрядные приложения, причем намного быстрее, чем на любом процессоре предыдущего поколения. Для большинства пользователей этого было достаточно; им не требовалось все 32-разрядное программное обеспечение — достаточно было того, что имевшиеся у них 16-разрядные программы работали быстрее. К сожалению, из-за этого процессор никогда не работал в 32-разрядном защищенном режиме и все возможности защищенного режима не использовались.
Когда высокопроизводительный процессор, подобный Pentium 4, работает в DOS (т.е. в реальном режиме), он напоминает “Turbo 8088”. Слово “Turbo” означает, что процессор имеет преимущество в быстродействии при выполнении 16-разрядных программ, хотя он может выполнять только 16-разрядные команды и обращаться к памяти в пределах все того же 1 Мбайт, предусмотренного картой памяти процессора 8088. Поэтому, даже если у вас система с Pentium 4 или Athlon XP и оперативной памятью емкостью 256 Мбайт, при работе в Windows 3.x или DOS в действительности используется только первый мегабайт памяти. В связи с этим потребовались новые операционные системы и приложения, которые могли бы использовать все преимущества современных процессоров в 32-разрядном защищенном режиме. Однако некоторые пользователи поначалу сопротивлялись переходу к 32-разрядной среде. Сообщество пользователей оказалось весьма устойчивым в своих привязанностях и не желало изменять привычек. Признаюсь честно: я был одним из них.
Из-за сопротивления пользователей 32-разрядные операционные системы, такие как Unix и ее разновидности (например, Linux), OS/2 и даже Windows NT/2000/XP, распространялись на рынке ПК довольно вяло. Из перечисленных систем Windows XP стала по настоящему широко распространенным программным продуктом во многом благодаря огромной популярности Windows 95/98/Me (смешанные 16/32-разрядные системы). Последней полностью 16-разрядной операционной системой была Windows серии 3.x, так как на самом деле она работала в качестве надстройки DOS.
Такие 64-разрядные процессоры, как Itanium, AMD Opteron и EM64T-совместимый процессор Xeon, привнесли возможность работы 64-разрядных программ в серверных системах, в то время как процессоры Athlon 64, EM64T-совместимый Pentium 4, а также Pentium D и Core 2 создавались непосредственно для настольных систем. Оба процессора совместимы со всем существующим 32-разрядным программным обеспечением. Но для того, чтобы воспользоваться возможностями процессора в полном объеме, потребуются полноценные 64-разрядные операционные системы и приложения. Microsoft уже выпустила 64-разрядные версии Windows XP и Vista, в то время как различными компаниями создаются 64-разрядные приложения для серверов и рабочих станций.
Примечание
Виртуальный реальный режим IA-32
Для обратной совместимости 32-разрядная система Windows использует третий режим в процессоре — виртуальный реальный режим. По существу, это режим выполнения 16-разрядной среды (реальный режим), реализованный внутри 32-разрядного защищенного режима (т.е. виртуально, а не реально). Выполняя команды в окне командной строки DOS системы Windows, вы создаете виртуальный сеанс реального режима. Поскольку защищенный режим является подлинно многозадачным, фактически можно выполнять несколько сеансов реального режима, причем в каждом сеансе собственное программное обеспечение работает на виртуальном компьютере. И все эти приложения могут выполняться одновременно, даже во время работы других 32-разрядных программ.
Учтите, что любая программа, выполняемая в виртуальном окне реального режима, может обращаться только к памяти объемом до 1 Мбайт, причем для каждой такой программы это будет первый и единственный мегабайт памяти в системе. Другими словами, если вы выполняете приложение DOS в виртуальном реальном окне, ему будет доступна память только объемом до 640 Кбайт. Так происходит потому, что в 16-разрядной среде имеется только 1 Мбайт общей оперативной памяти, при этом верхние 384 Кбайт зарезервированы для системы. Виртуальное реальное окно полностью имитирует среду процессора 8088, и, если не учитывать быстродействие, программное обеспечение будет выполняться точно так, как оно выполнялось первым PC в реальном режиме. Каждая виртуальная машина получает собственный 1 Мбайт адресного пространства и собственный экземпляр реальных аппаратных подпрограмм управления аппаратурой (базовую систему ввода-вывода), причем при этом эмулируются все регистры и возможности реального режима.
Виртуальный реальный режим используется при выполнении 16-разрядных программ в окне DOS. При запуске приложения DOS операционная система Windows создает виртуальную машину DOS, на которой это приложение может выполняться.
Важно отметить, что все Intel-совместимые процессоры (в частности, AMD и Cyrix) при включении питания начинают работать в реальном режиме. При загрузке 32-разрядная операционная система автоматически переключает процессор в 32-разрядный режим и управляет им в этом режиме.
Также важно заметить, что некоторые приложения DOS и Windows 3.x в 32-разрядной среде ведут себя неадекватно, т.е. делают то, что не поддерживается даже в виртуальном реальном режиме.
Диагностическое программное обеспечение — прекрасный тому пример: оно не будет корректно работать в окне реального режима (виртуального реального) под управлением Windows. Чтобы на Pentium 4 запустить такое программное обеспечение в первоначальном упрощенном режиме, необходимо прервать процесс начальной загрузки системы и просто загрузить DOS. Это можно выполнить в Windows 9x (исключая Windows Me), нажимая клавишу , когда на экране появляется подсказка Starting Windows. Затем, когда появится загрузочное меню, в нем нужно выбрать команду загрузки простой 16-разрядной операционной системы реального режима DOS. Для запуска программ диагностики, которые невозможно запустить обычным образом в защищенном режиме, рекомендуется выбирать режим с поддержкой командной строки. Учитывая, что промежуток времени, в который Windows ожидает нажатия , очень короткий (порядка 2 с), лучше нажимать несколько раз подряд. Операционная система Windows Me создавалась, как вы знаете, на основе Windows 98. Пытаясь отучить пользователей от 16-разрядного режима работы, Microsoft удалила опцию загрузочного меню (Startup). Операционные системы Windows NT/2000/XP также лишены возможности прервать загрузку подобным образом. Для запуска компьютера в режиме DOS придется создать загрузочный диск, который и будет затем использоваться для загрузки системы в реальном режиме. Как правило, этот режим требуется для некоторых процедур технического обслуживания, в частности для выполнения аппаратной диагностики и непосредственного редактирования секторов диска.
Хотя реальный режим используется DOS и “стандартными” приложениями DOS, есть специальные программы, которые “расширяют” DOS и открывают доступ к дополнительной памяти XMS (сверх 1 Мбайт). Они иногда называются расширителями DOS и обычно включаются как часть программного обеспечения DOS или Windows 3.x, в котором используются. Протокол, описывающий, как выполнять DOS в защищенном режиме, называется DPMI (DOS Protected Mode Interface — интерфейс защищенного режима DOS).
Этот протокол использовался в Windows 3.x для обращения к дополнительной памяти XMS при работе приложений для Windows 3.x. Он позволял 16-разрядным приложениям использовать память, превышающую 1 Мбайт. Расширители DOS особенно часто применяются в играх DOS; именно благодаря им игровая программа может использовать объем памяти, намного превышающий стандартный (1 Мбайт), который могут адресовать большинство программ, работающих в реальном режиме. Эти расширители DOS переключают процессор в реальный режим и обратно, а в случае запуска под управлением Windows применяют интерфейс DPMI, встроенный в Windows, и тем самым позволяют другим программам совместно использовать часть дополнительной памяти XMS системы.
Есть еще одно исключение: первые 64 Кбайт дополнительной памяти в реальном режиме доступны программам. Это результат ошибки в первом компьютере IBM AT, связанной с 21-й линией адреса памяти (A20, поскольку A0 — первая строка адреса). Управляя сигналом на линии A20, программное обеспечение реального режима может получать доступ к первым 64 Кбайт дополнительной памяти — это первые 64 Кбайт памяти, следующие за первым мегабайтом. Эта область памяти называется областью верхних адресов памяти (high memory area — HMA).
64″разрядный расширенный режим IA»32e (AMD64, x86″64, EM64T)
Этот режим процессора является расширением архитектуры IA-32, разработанным компанией AMD и в дальнейшем поддержанным Intel. Процессоры, поддерживающие 64-разрядные расширения, могут работать в реальном режиме (8086), режиме IA-32 или IA-32e. При использовании режима IA-32 процессор может работать в защищенном или виртуальном реальном режиме. Режим IA-32e позволяет работать в 64-разрядном режиме или в режиме совместимости, что подразумевает возможность одновременного выполнения 64- и 32-разрядных приложений. Режим IA-32e включает в себя два подрежима.
- 64-разрядный режим. Позволяет 64-разрядной операционной системе выполнять 64-разрядные приложения.
- Режим совместимости. Позволяет 64-разрядной операционной системе выполнять 32-разрядные приложения.
Первый подрежим активизируется после загрузки 64-разрядной операционной системы и используется 64-разрядными приложениями. В 64-разрядном подрежиме доступно несколько новых функций:
- 64-разрядная линейная адресация памяти;
- Поддержка физической памяти объемом более 4 Гбайт (определенные ограничения накладываются процессором);
- 8 новых регистров общего назначения GPR (General-Purpose Register);
- 8 новых регистров для поточных расширений SIMD (MMX, SSE, SSE2 и SSE3);
- 64-разрядные регистры GPR и указатели инструкций.
Режим совместимости IE-32e позволяет запускать 32- и 16-разрядные приложения под управлением 64-разрядной операционной системы. К сожалению, старые 16-разрядные программы, работающие в виртуальном реальном режиме (например, приложения DOS), не поддерживаются, а значит, их выполнение невозможно. Данное ограничение наверняка будет представлять наибольшую проблему для пользователей. Подобно 64-разрядному режиму, режим совместимости активизируется операционной системой для отдельных приложений, благодаря чему становится возможным одновременное выполнение 64- и 32-разрядных приложений.
Для того чтобы все эти приложения работали, необходима 64-разрядная операционная система и, что гораздо важнее, 64-разрядные драйверы для всех устройств, предназначенные именно для этой операционной системы. В настоящее время существуют три 64-разрядные версии Windows:
- Windows XP 64-bit Edition for Itanium;
- Windows XP Professional x64 Edition;
- Windows Vista 64-bit (несколько вариантов).
Первая из них, предназначенная для процессоров с архитектурой IA-64, таких как Itanium и Itanium 2, была представлена еще в 2001 году. Последние две предназначены для процессоров архитектуры IA-32e, поддерживающих 64-разрядные расширения, в частности Athlon 64, Opteron, некоторые модели Sempron, Core 2, Pentium D, Pentium Extreme Edition, а также некоторые модели Xeon и Pentium 4. Обратите внимание, что Microsoft использует термин x64применительно к процессорам, поддерживающим расширения AMD64 или EM64T, так как расширения стандартной архитектуры IA-32, разработанные AMD и Intel, практически идентичны и поддерживаются одной версией Windows.
Примечание
Ограничения физической памяти для 32- и 64-разрядной версии редакций систем Windows XP и Vista представлены в таблице ниже .
Основное различие между 32- и 64-разрядной версиями Windows — поддерживаемый объем памяти, поскольку 32-разрядные версии не поддерживают более 4 Гбайт физической памяти, а также больше 2 Гбайт выделенной памяти на процесс. В то же время 64-разрядные версии Windows поддерживают до 128 Гбайт физической памяти (при выделении до 4 Гбайт на каждый 32-разрядный процесс, или до 8 Гбайт на каждый 64-разрядный процесс). Поддержка больших объемов памяти означает, что приложения могут загружать больше информации в память, а значит, процессор может быстрее обращаться к данным.
Следует отметить, что 64-разрядные версии Windows позволяют запустить без каких либо проблем 32-разрядные Windows-приложения, но не поддерживают приложения DOS и другие программы, работающие в виртуальном реальном режиме. Достаточно серьезная проблема связана и с драйверами: 32-разрядные процессы не могут загружать 64-разрядные динамически подключаемые библиотеки DLL, а 64-разрядные процессы, в свою очередь, не могут загружать 32-разрядные библиотеки DLL. Следовательно, для всех устройств, подключенных к системе, необходимы как 32-, так и 64-разрядные драйверы. Поиск 64-разрядных драйверов для старых устройств крайне сложен. Найти драйверы для устройств, выпуск которых давно прекращен, чаще всего просто невозможно. Даже для новых устройств может пройти пару лет, прежде чем их производители начнут поставлять 64-разрядные версии драйверов. Хочется верить, что в обозримом будущем все производители оборудования начнут выпускать драйверы для 64-разрядных систем. Прежде чем устанавливать 64-разрядную версию Windows, убедитесь в наличии 64-разрядных версий драйверов для всех имеющихся в компьютерной системе внутренних и внешних устройств. Не забывайте, что драйверы для Itanium-совместимых версий операционных систем не подходят для операционных систем с x64-совместимыми процессорами.
Рассматривая возможность перехода от 32- к 64-разрядной технологии, следует принимать во внимание поддерживаемый объем памяти, доступность драйверов и совместимость программного обеспечения. Как уже отмечалось, переход от 16-разрядных вычислений к 32-разрядным продолжался 16 лет. Конечно, переход от 32-разрядных вычислений к 64-разрядным не будет столько длиться, но 2–3 года на это все же уйдет.