Сайт о телевидении

Сайт о телевидении

» » CISC и RISC архитектуры. Сравнительный анализ CISC и RISC архитектур

CISC и RISC архитектуры. Сравнительный анализ CISC и RISC архитектур

  • Перевод

Примечание переводчика. В оригинале статьи авторы (один из них - пионер RISC-процессоров Д. Паттерсон) аргументируют необходимость развития открытых ISA (instruction set architecture, наборов команд процессоров) и продуктов на их основе. В качестве аргументов выдвигается стимулирование развития тех областей вычислительной техники и экономических ниш, в которых коммерческие компании не заинтересованы или же недостаточно гибки. Они напоминают об успехах открытых стандартов и свободного программного обеспечения.

На расширенную версию этой статьи (а также на контр-статью от представителей ARM и контр-контр-параграф от авторов!) я наткнулся в августовском выпуске Microprocessor Report (MPR). Доступ к MPR ограничен и распространяется только на подписчиков, однако в открытом доступе есть оригинальный отчёт, размещённый на сайте университета Беркли. Его перевод я и предлагаю далее.

Instruction Sets Should Be Free: The Case For RISC-V by Krste Asanović and David A. Patterson. EECS Department, University of California, Berkeley - Technical Report No. UCB/EECS-2014-146 www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html

Copyright notice and disclaimers

Copyright 2014, by the author(s).
All rights reserved.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission.



Заказные системы на чипе (SoC), в которых процессоры и их кэши занимают лишь малую часть кристалла, становятся вездесущими; сегодня уже сложно найти электронное устройство, в котором не используется процессор в составе SoC. Таким образом, всё больше компаний проектируют чипы, в которые входят процессоры, чем это было раньше. Учитывая, какую революцию произвели открытые стандарты и открытое программное обеспечение - например, сетевой протокол TCP/IP и операционная система Linux - почему один из самых важных интерфейсов остаётся проприетарным?

Аргументы в поддержку свободных, открытых ISA

Безусловно, некоторые наборы команд процессоров (ISA, англ. instruction set architecture) могут быть проприетарными по историческим и коммерческим причинам. Однако, не существует ни одного твёрдого технического основания для объяснения отсутствия свободных, открытых вариантов.
  1. Это не ошибка или упущение. Компании, владеющие успешными ISA, такие как ARM, IBM и Intel, владеют патентами на причуды своих систем команд, что препятствует остальным использовать их без лицензий 1 . Переговоры об использовании длятся по 6-24 месяца и могут стоить от 1 до 10 миллионов долларов, что исключает из процесса академические организации и всех, кому требуются лишь небольшие объёмы производства 2 . Лицензия от ARM даже не позволяет вам спроектировать собственное ядро; вы лишь получаете право на использование их дизайна (лишь около 15 больших компаний имеют право на создание новых ядер ARM). Даже «OpenPOWER» - это оксюморон; вы обязаны платить IBM, чтобы использовать эту ISA. Разумная с т.з. бизнеса, подобная практика лицензирования душит конкуренцию и инновации, запрещая многим проектировать и делиться собственными ISA-совместимыми ядрами.
  2. Это не из-за того, что сами владельцы ISA производят подавляющую долю программного обеспечения для своих систем. Несмотря на размеры программных экосистем, которые выросли вокруг популярных ISA, львиная доля ПО для них пишется внешними людьми.
  3. Эти компании не владеют сакральным знанием, требуемым для создания адекватной ISA. Это большая работа, но многие сегодня могут спроектировать набор инструкций.
  4. Самые популярные ISA - не самые изящные. Как 80x86, так и ARM не считаются эталонами хорошего дизайна.
  5. Для верификации совместимости с ISA не требуется контроль компаний. Открытые организации разработали механизмы для сертификации совместимости аппаратных средств много лет назад. Примеры: стандарт IEEE 754 для чисел с плавающей запятой, Ethernet, PCIe. Если бы это было не так, открытые IT-стандарты не были бы столь популярны.
  6. Наконец, нет гарантий, что проприетарные ISA будут существовать долго. Если компания разоряется и исчезает, она забирает свою ISA с собой. Кончина DEC закончила развитие наборов инструкций Alpha и VAX.

Отметим, что ISA на самом деле - спецификация интерфейса, но не его реализация. Существует три подхода к реализации некоторого интерфейса:

1. Частная закрытая, аналогично Apple iOS.
2. Лицензируемая открытая, наподобие Wind River VxWorks.
3. Свободная и открытая, пользователи которой могут изменять и делиться, как это сделано в Linux.

Проприетарные ISA на практике позволяют работать с первыми двумя подходами, но вам нужна свободная, открытая ISA для поддержки всех трёх подходов.

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

Это может привести к:

1. Инновациям через конкуренцию на свободном рынке многих дизайнеров, включая открытые и закрытые реализации ISA.
2. Общим открытым дизайнам ядер, что будет выражаться в сокращении времени выхода продукции на рынок, уменьшении стоимости от переиспользования, меньшем числе ошибок из-за пристального внимания многих людей 3 , и в прозрачности, которая, например, затруднит внедрение секретных бэкдоров правительственными агенствами.
3. Процессорам, доступным для большего числа устройств, что поможет развивать Интернет Вещей (IoT, англ. Internet of Things), со стоимостью порядка доллара.

Аргументы в поддержку RISC как стиля для свободной, открытой ISA

Для того, чтобы какая-либо ISA была принята сообществом open-source, мы считаем, что она должна иметь успешную историю коммерческого применения. Первый вопрос - какой стиль ISA демонстирует такую историю? За последние 30 лет история не знает ни одной успешной стековой архитектуры (Примечание переводчика: странное заявление, учитывая успех Java bytecode и.NET CLI - стековых архитектур ). Кроме как в сегменте приложений DSP (англ. digital signal processing), VLIW также постигла неудача: Multiflow всплыл брюхом вверх, а Itanium, несмотря на миллиардные инвестиции HP и Intel, не получил признания. Уже десятки лет ни одна новая CISC ISA не обретает успеха. Выжившие же CISC архитектуры транслируют свои сложные инструкции в более простые ISA, что очень оправдано для исполнения ценной унаследованной кодовой базы. Новая же ISA по определению не будет иметь такой базы, так что дополнительные расходы на аппаратуру и энергопотребление, требуемые для трансляции, сложно оправдать: почему бы сразу не использовать более простую ISA? RISC -подобные load-store наборы команд известны как минимум уже 50 лет, с эпохи CDC 6600 Сэймюра Крея. Тогда как 80x86 выиграл войны за ПК, RISC доминирует в планшетах и телефонах пост-ПК эры. В 2013 г. было продано более 10 миллиардов ARM, в сравнении с 0.3 миллиардами x86. Повторяя то, что мы уже говорили в 1980 4 , мы считаем, что RISC - лучший выбор для свободной и открытой ISA.

Более того, новая RISC ISA может быть лучше своих предшественников, если при её разработке учесть их ошибки:

  1. Исключение слишком многого: отсутствие команд load/store для байт и полуслов в первом варианте Alpha ISA и отсутствие load/store для чисел с плавающей запятой в MIPS I.
  2. Включение излишнего: встроенный сдвиг в инструкциях ARM и регистровые окна SPARC.
  3. Влияние микроархитектурных деталей на ISA: отложенные переходы в MIPS и SPARC, барьеры-ловушки для чисел с плавающей запятой на Alpha.

Для удовлетворения потребностей рынка встраиваемых решений, RISC-и даже предоставили решение проблемы размера кода: ARM Thumb и MIPS16 добавили 16-битные форматы для того, чтобы код был даже короче, чем у 80x86. Таким образом, существует общепризнанное соглашение о том, как в целом должна выглядеть хорошая RISC ISA.

Аргументы за использование существующей свободной открытой RISC ISA

Уже существует три свободных и открытых RISC ISA 5:
  • SPARC V8 - к чести Sun Microsystems, она сделала SPARC V8 стандартом IEEE в 1994.
  • OpenRISC - GNU-лицензированный open-source проект, начатый в 2000, с 64-битной ISA законченной в 2011.
  • RISC-V - в 2010, частично из-за ограничений ARM на свой IP и из-за отсутствия 64-битных режимов, а также из-за общей гротескности ARM v7, мы и наши студенты Andrew Waterman и Yunsup Lee разработали RISC-V 6 (произносится как «RISC-5») для нужд наших исследований и преподавательской деятельности и выпустили её под BSD-лицензией.

Так как обычно на то, чтобы отшлифовать все тонкости, уходят годы - вызревание OpenRISC заняло 11 лет, а у RISC-V ушло 4 года, - более правильно будет начать с уже существующей ISA, а не формировать комитет и начинать с нуля. Все RISC похожи, так что любая из них может быть хорошим кандидатом.

Так как ISA могут существовать десятилетиями, необходимо сперва экстраполировать и описать будущий ландшафт информационных технологий, чтобы понять, какие особенности могут оказаться важными, для облегчения процесса приоритезации. Скорее всего, преобладать будут три платформы: IoT - миллиарды дешёвых устройств с IP-адресами и доступом в Интернет; 2) персональные мобильные устройства, такие как современные телефоны и планшеты; 3) дата-центры (Warehouse-Scale Computers, WSCs). Можно иметь разные ISA для каждого типа платформ, однако жизнь будет проще, если она всюду будет одна. Такая картина будущего предлагает четыре ключевых требования на неё.

1. Формат «базовая ISA плюс расширения» 7 . Для повышения эффективности и уменьшения затрат SoC-системы добавляют собственные специфичные для приложения акселераторы. Для этого, а также чтобы поддерживать стабильную кодовую базу, свободная открытая ISA должна иметь: а) небольшое ядро инструкций, которые известны компиляторам и ОС, б) стандартные, но опциональные расширения для частых частных сценариев адаптации SoC к конкретному приложению, в) пространство для полностью новых кодов инструкций для работы акселераторов.

2. Компактная кодировка команд. Меньший объём кода желателен из-за чувствительности цены IoT-приложений к объёму используемой памяти.

3. Четверная точность (QP, quadruple-precision) вычислений над числами с плавающей запятой в дополнение к двойной и одинарной точностям. Некоторые приложения, исполняющиеся в дата-центрах сегодня, обрабатывают настолько большие объёмы данных, что они уже сейчас используют программные библиотеки для QP.

4. 128-битная адресация в дополнение к 32- и 64-битной. Ограничения по памяти IoT-устройств означают, что 32-битная адресация ещё долгое время будет актуальной. 64-битные адреса - де-факто стандарт для всех больших систем. Хотя промышленность WSC не потребует всех 2 128 байт, вполне правдоподобно, что через десятилетие понадобятся числа, превышающие 2 64 (16 эксабайт), для адресации хранилищ SSD. Ограниченный размер пространства адресов - одна из тех ошибок ISA, которые сложно исправить 8 , разумно планировать большие адреса уже сейчас.

Следующая таблица суммирует информацию о трёх свободных открытых ISA по этим четырём критериям, а также по наличию поддержки компиляторами и портированными ОС.

Аргументы в поддержку RISC-V как свободной открытой ISA

Наше сообщество должно объединиться вокруг единой ISA, чтобы проверить, что свободная открытая ISA может работать на практике. Только RISC-V удовлетворяет всем четырём требованиям. Она также от 10 до 20 лет моложе остальных RISC, так что мы имели возможность проанализировать и исправить их ошибки, такие как слоты задержки переходов SPARC и OpenRISC. Поэтому система команд RISC-V простая и понятная (см. таблицы 4 и 5 оригинальной статьи, а также www.riscv.org). В дополнение к тому, что остальные ISA не выполняют многие требования, есть вопросы к тому, что 64-битный SPARC V9 - проприетарный, а OpenRISC потерял импульс.
RISC-V всё ещё имеет большой импульс. Таблица 1 перечисляет различные группы, проектирующие SoC на основе RISC-V. Отчасти из-за использования высокопродуктивной, открытой системы проектирования аппаратуры Chisel 9 , университет Беркли имеет уже 8 типов чипов и новые разработки в процессе. Таблица 2 показывает, что одно 64-битное ядро RISC-V занимает половину площади, потребляет половину от мощности и при этом работает быстрее, чем 32-битный ARM с похожим конвеером или тем же техпроцессом. Хотя сложно полностью устранить нашу предвзятость в этом вопросе, мы полагаем, что RISC-V - лучший и безопасный выбор для свободной открытой RISC ISA. Поэтому мы будем проводить серию семинаров 10 для расширения сообщества RISC-V и, вдохновлённые примерами из таблицы 3, планируем создать некоммерческий фонд для задачи сертификации реализаций, а также для поддержки и развития ISA.

Заключение

Наши доводы даже более ясны для открытой ISA, чем для открытой ОС, так как ISA меняются очень медленно, тогда как алгоритмические инновации и новые приложения требуют непрерывной эволюции ОС. Также, как и TCP/IP, это - стандарт на интерфейс, который легче поддерживать и развивать по сравнению с ОС.

Открытые ISA использовались и раньше, но они никогда не становились популярными из-за недостатка спроса в них. Низкая цена и энергопотребление IoT, желание иметь альтернативу 80x86 для дата-центров и тот факт, что процессорные ядра - лишь малая, но вездесущая часть всех SoC, комбинируются в то предложение, способное удовлетворить возникший спрос. RISC-V нацелен в первую очередь на SoC, с базовым набором никогда не меняющихся команд, учитывая долгую жизнь идей RISC, с медленно эволюционирующим подмножеством опциональных расширений, а также уникальными инструкциями, которые никогда не будут переиспользованы. Хотя первый плацдарм для RISC-V может быть IoT или WSC, наша цель шире: так же, как Linux стал стандартной ОС для большинства вычислительных устройств, мы представляем себе RISC-V как стандартную ISA для всех вычислительных устройств будущего.

сокращенным набором команд ) складывалась в конце 1970-х - начале 1980-х годов, когда потребовались новые идеи для повышения производительности процессоров. Выводы различных групп исследователей были обобщены в виде так называемого правила "80/20": 80 % времени выполнения программ занимает выполнение 20 % команд, входящих в состав системы команд. То есть в определении производительности процессора основную роль играет лишь пятая часть всех команд, остальные же команды встречаются достаточно редко, и время их выполнения существенного влияния на производительность процессора не оказывает. Исходя из этого было принято решение построить процессор , в котором выделенная небольшая группа команд выполнялась бы максимально быстро за счет ее аппаратной реализации, а остальные команды либо вообще удалялись из системы команд, либо реализовывались на микропрограммном уровне.

Сложившаяся в результате этого идеология RISC-архитектуры опиралась на следующие принципы :

  • набор команд сокращен до 70-100 команд (вместо нескольких сотен у CISC -микропроцессоров);
  • большинство команд выполняется за 1 такт, и лишь немногие - за несколько или даже несколько десятков тактов;
  • все команды обработки данных оперируют только содержимым регистров процессора, а для обращения к более медленной оперативной памяти предусмотрены исключительно инструкции вида "загрузить в регистр" и "записать в память";
  • команды имеют простой, четко заданный формат;
  • из набора команд исключены редко используемые инструкции, а также команд, не вписывающихся в принятый формат;
  • состав системы команд должен быть удобным для применения оптимизирующих компиляторов с языков высокого уровня.

Такой подход позволил уменьшить объем аппаратуры процессора за счет сокращения блока управления примерно в 10 раз, существенно увеличить тактовую частоту работы процессора и снизить его тепловыделение.

Несмотря на свое название, основой RISC -архитектуры является то, что вся обработка сосредоточена только во внутренних регистрах микро процессора.

Так как вся обработка проходит в регистрах, отпадает необходимость в большом количестве режимов адресации операндов, а в системе команд можно применять трехадресные команды, наиболее эффективные с точки зрения организации вычислительного процесса и в то же время не имеющие их главного недостатка - большой длины команды. Простой формат команды легко поддается декодированию на соответствующей ступени работы конвейера. Вспомним, что длина команды в CISC -архитектуре IA-32 меняется в пределах от 1 до 15 байт , а наличие, формат и назначение многих полей команды неоднозначны и определяются структурой других полей.

Естественно, что этот подход потребовал использования в микропроцессоре регистровой памяти большого объема (до 128 регистров). А для обеспечения согласованной работы быстрых внутренних конвейеров и относительно медленной оперативной памяти в RISC -микропроцессорах предусматривается кэш - память большой емкости.

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

Простой формат команды и ориентация на регистровую обработку позволили безболезненно внедрить в RISC -процессорах конвейерный принцип обработки информации.

Такая организация обеспечила существенное повышение производительности RISC -микропроцессоров по сравнению с микропроцессорами CISC -архитектуры. Это привело к преобладанию МП данного типа в тех областях, где производительность являлась основополагающим фактором, например, в серверах. В то же время они не нашли своего места на наиболее развитом рынке вычислительной техники - рынке персональных компьютеров. Тому есть несколько причин:

  • дороговизна RISC -процессоров и систем на их основе: изначально эти процессоры были ориентированы на мощные рабочие станции и серверы, поэтому разработчики использовали в них решения, слишком дорогие для персональных компьютеров; даже специальные, "дешевые" варианты RISC -компьютеров стоили гораздо дороже сравнимых с ними ПК на базе процессоров Intel по причине малых объемов производства;
  • отсутствие широких наработок в области программного обеспечения: традиционной операционной системой для персональных компьютеров была DOS, к ней впоследствии присоединились 16разрядные версии WINdows, под которые написано огромное количество популярных и хорошо знакомых пользователям программ. Различные RISC -платформы обычно использовали несовместимые между собой разновидности Unix, для которыхсуществовало значительно меньше программ, главным образом научно-технических (для рабочих станций) либо сетевых приложений (для серверов);
  • RISC -процессоры по своему основополагающему положению обладают несовместимыми с х86 наборами команд, поэтому единственным способом исполнения кода х86 была эмуляция, которая снижала производительность от десятков до сотен процентов, что сводило на нет скоростные преимущества RISC -процессоров;
  • отсутствие интереса к проникновению на этот рынок у самих производителей RISC -систем: многие "серьезные" фирмы вроде DEC или Sun полагали, что нет нужды удешевлять свои RISC -станции, потому что пользователи все равно выберут их системы из-за очевидных технических преимуществ.

Развитие архитектуры RISC -микропроцессоров шло по нескольким направлениям. За счет повышения технологических возможностей производства микропроцессоров смягчились требования к составу и форматам используемых команд. В настоящее время их системы команд расширились с первоначальных 70-100 до 100-120. Увеличилось также и количество используемых форматов команд. Однако основной принцип RISC -архитектуры остается неизменным: обработка данных выполняется только над содержимым внутренних регистров МП без обращения к оперативной памяти.

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

Для обработки данных микропроцессоры получили не один, а несколько конвейеров со своими исполнительными устройствами.

Наиболее известными RISC -микропроцессорами в настоящее время являются МП семейства SPARC фирмы Sun Microsystems, Alpha 21х64 фирмы Digital EquIPment и Rx000 фирмы MIPS Computer Systems . За последние годы активно внедряются в различную аппаратуру RISC -микропроцессоры семейства PowerPC . Среди фирм, выпускающих RISC -микропроцессоры, находятся также Intel, Hewlett Packard.

Совместный проект компаний Apple, Motorola и IBM - микропроцессор PowerPC ( Performance Optimization With Enhanced RISC ) - был ориентирован на создание недорогого, но мощного RISC -процессора и платформы для него. До появления архитектуры Intel NetBurst процессоры PowerPC почти всегда превосходили чипы Intel в скорости вычислений с плавающей точкой на десятки процентов, при этом потребляя намного меньшую мощность . По различным причинам на заключительной стадии этого проекта среди разработчиков осталась лишь компания IBM .

Рассмотрим организацию работы RISC -микропроцессора на примере МП Power4 фирмы

сокращенным набором команд ) родился в результате практических исследований частоты использования команд программистами, проведенных в 70-х годах в США и Англии. Их непосредственный итог - известное "правило 80/20": в 80% кода типичной прикладной программы используется лишь 20% простейших машинных команд из всего доступного набора.

Первый "настоящий" RISC - процессор с 31 командой был создан под руководством Дэвида Паттерсона из Университета Беркли, затем последовал процессор с набором из 39 команд. Они включали в себя 20-50 тыс. транзисторов. Плодами трудов Паттерсона воспользовалась компания Sun Microsystems, разработавшая архитектуру SPARC с 75 командами в конце 70-х годов. В 1981 г. в Станфордском университете стартовал проект MIPS по выпуску RISC -процессора с 39 командами. В итоге была основана корпорация Mips Computer в середине 80-х годов и сконструирован следующий процессор уже с 74 командами.

По данным независимой компании IDC , в 1992 году архитектура SPARC занимала 56% рынка, далее следовали MIPS - 15% и PA-RISC - 12,2%

Примерно в то же время Intel разработала серию 80386, последних "истинных" CISC-процессоров в семействе IA-32 . В последний раз повышение производительности было достигнуто только за счет усложнения архитектуры процессора: из 16-разрядной она превратилась в 32-разрядную, дополнительные аппаратные компоненты поддерживали виртуальную память , и добавился целый ряд новых команд.

Основные особенности RISC -процессоров:

  1. Сокращенный набор команд (от 80 до 150 команд).
  2. Большинство команд выполняется за 1 такт.
  3. Большое количество регистров общего назначения.
  4. Наличие жестких многоступенчатых конвейеров.
  5. Все команды имеют простой формат, и используются немногие способы адресации.
  6. Наличие вместительной раздельной кэш-памяти.
  7. Применение оптимизирующих компиляторов, которые анализируют исходный код и частично меняют порядок следования команд.

RISC-процессоры 3-го поколения

Самыми крупными разработчиками RISC -процессоров считаются Sun Microsystems ( архитектура SPARC - Ultra SPARC ), IBM (многокристальные процессоры Power , однокристальные PowerPC - PowerPC 620), Digital Equipment ( Alpha - Alpha 21164), Mips Technologies (семейство Rxx00 -- R 10000), а также Hewlett-Packard ( архитектура PA-RISC - PA-8000).

Все RISC -процессоры третьего поколения:

  • являются 64-х разрядными и суперскалярными (запускаются не менее 4-х команд за такт);
  • имеют встроенные конвейерные блоки арифметики с плавающей точкой;
  • имеют многоуровневую кэш-память. Большинство RISC-процессоров кэшируют предварительно дешифрованные команды;
  • изготавливаются по КМОП-технологии с 4 слоями металлизации.

Для обработки данных применяется алгоритм динамического прогнозирования ветвлений и метод переназначения регистров, что позволяет реализовать внеочередное выполнение команд.

Повышение производительности RISC -процессоров достигается за счет повышения тактовой частоты и усложнения схемы кристалла. Представителями первого направления являются процессоры Alpha фирмы DEC , наиболее сложными остаются процессоры компании Hewlett-Packard. Рассмотрим процессоры этих фирм более подробно.

Структура процессоров Alpha: 21064, 21264

Структура процессора Alpha 21064 представлена на рис. 10.1 .


Рис. 10.1.

Основные функциональные блоки процессора Alpha 21064:

  • I-cache - кэш команд.
  • IRF - регистровый файл целочисленной арифметики.
  • F-box - устройство арифметики с плавающей точкой.
  • E-box - устройство целочисленной арифметики (7 ступеней конвейера ).
  • I-box - командное устройство (управляет кэш команд, выборкой и дешифрацией команд).
  • A-box - устройство управления загрузкой/сохранением данных. Управляет процессом обмена данными м/у IRF, FRF , кэш данных и внешней памятью.
  • Write Buffer - буфер обратной записи.
  • D-cache - КЭШ данных.
  • BIU - интерфейсный блок, с помощью которого подключаются внешняя кэшпамять, размером 128 Кб-8 Мб.

Сравнительные характеристики Alpha 21164 и 21264

Процессор Alpha 21264 отличается значительной новизной по сравнению с предшественником 21164. Он обладает кэш-памятью первого уровня большего объема, дополнительными функциональными блоками, более эффективными средствами предсказания ветвлений, новыми инструкциями обработки видеоданных и широкой шиной.

Alpha 21264 читает до четырех инструкций за один такт и может одновременно исполнять до шести инструкций. Самое большое его отличие от модели 21164 - это способность выполнять команды (впервые для Alpha) с изменением их очередности (Out-of-Order).

Эффективность выполнения Out-of-Order определяется количеством инструкций, которыми может манипулировать ЦП в целях определения оптимального порядка выполнения команд. Чем больше инструкций ЦП может для этого использовать, тем лучше, тем дальше он может заглядывать вперед. Процессоры Intel класса Р6 ( Pentium Pro , Pentium II, Xeon) могут одновременно обращаться не менее чем с 40 командами. У других процессоров данный показатель значительно больше: PA-8000 фирмы HP оперирует 56 командами, а процессор Alpha справляется с 80 командами.

Как и большинство RISC-процессоров, Alpha содержит набор из 32 целочисленных и 32 регистров с плавающей запятой, все они имеют разрядность 64 бита. Для повышения эффективности внеочередного выполнения команд процессор 21264 дополнительно к обычному набору регистров снабжен еще 48 целочисленными регистрами и 40 регистрами с плавающей запятой.

Каждый регистр может временно хранить значения текущих команд. Если обрабатывается какая-либо инструкция, нет необходимости перегружать результат в целевой регистр - вместо этого ЦП просто переименовывает временный регистр ( Register Renaming ).

Подобное переименование регистров есть и в других процессорах. Однако в 21264 реализована уникальная "хитрость" - он имеет задублированный набор целочисленных регистров, каждый из 80 целочисленных регистров дублируется еще раз. Таким образом, на чипе в целом - 160 целочисленных регистров. Это одна из причин, почему, несмотря на сложность выполнения Out-of-Order, допустима высокая частота процессора 21264.

Блоки целочисленных операций в обеих группах идентичны не полностью. Одна из них содержит блок умножения, а вторая - специальную логику для обработки движущихся изображений (MPEG). Для этого набор команд Alpha был дополнен пятью новыми командами. Самая интересная из них - PERR - служит для оценки движения, т.е. выполнения задачи, возникающей как при сжатии, так и декомпрессии MPEG. Команда PERR выполняет работу девяти обычных инструкций. Таким образом, процессор 21264 может декодировать видеопоследовательности MPEG-2, а также DVD-аудиоданные AC-3 в режиме реального времени без использования дополнительных периферийных устройств.

В 70-е годы XX века ученые выдвинули революционную по тем временам идею создания микропроцессора, "понимающего" только минимально возможное количество команд.

Замысел RISC- процессора (Reduced Instruction Set Computer, компьютер с сокращенным набором команд) родился в результате практических исследований частоты использования команд программистами, проведенных в 70-х годах в США и Англии. Их непосредственный итог - известное "правило 80/20": в 80% кода типичной прикладной программы используется лишь 20% простейших машинных команд из всего доступного набора. электронный устройство микроконтроллер процессор

Первый "настоящий" RISC-процессор с 31 командой был создан под руководством Дэвида Паттерсона из Университета Беркли, затем последовал процессор с набором из 39 команд. Они включали в себя 20-50 тыс. транзисторов. Плодами трудов Паттерсона воспользовалась компания Sun Microsystems, разработавшая архитектуру SPARC с 75 командами в конце 70-х годов. В 1981 г. в Станфордском университете стартовал проект MIPS по выпуску RISC-процессора с 39 командами. В итоге была основана корпорация Mips Computer в середине 80-х годов и сконструирован следующий процессор уже с 74 командами.

По данным независимой компании IDC, в 1992 году архитектура SPARC занимала 56% рынка, далее следовали MIPS - 15% и PA-RISC - 12,2%

Примерно в то же время Intel разработала серию 80386, последних "истинных" CISC-процессоров в семействе IA-32. В последний раз повышение производительности было достигнуто только за счет усложнения архитектуры процессора: из 16-разрядной она превратилась в 32-разрядную, дополнительные аппаратные компоненты поддерживали виртуальную память, и добавился целый ряд новых команд.

Основные особенности RISC-процессоров:

  • - Сокращенный набор команд (от 80 до 150 команд).
  • - Большинство команд выполняется за 1 такт.
  • - Большое количество регистров общего назначения.
  • - Наличие жестких многоступенчатых конвейеров.
  • - Все команды имеют простой формат, и используются немногие способы адресации.
  • - Наличие вместительной раздельной кэш-памяти.
  • - Применение оптимизирующих компиляторов, которые анализируют исходный код и частично меняют порядок следования команд.

RISC-процессоры 3-го поколения

Самыми крупными разработчиками RISC-процессоров считаются Sun Microsystems (архитектура SPARC - Ultra SPARC), IBM (многокристальные процессоры Power, однокристальные PowerPC - PowerPC 620), Digital Equipment (Alpha - Alpha 21164), Mips Technologies (семейство Rxx00 -- R 10000), а также Hewlett-Packard (архитектура PA-RISC - PA-8000).

Все RISC-процессоры третьего поколения:

  • - являются 64-х разрядными и суперскалярными (запускаются не менее 4-х команд за такт);
  • - имеют встроенные конвейерные блоки арифметики с плавающей точкой;
  • - имеют многоуровневую кэш-память. Большинство RISC-процессоров кэшируют предварительно дешифрованные команды;
  • - изготавливаются по КМОП-технологии с 4 слоями металлизации.

Для обработки данных применяется алгоритм динамического прогнозирования ветвлений и метод переназначения регистров, что позволяет реализовать внеочередное выполнение команд.

Повышение производительности RISC-процессоров достигается за счет повышения тактовой частоты и усложнения схемы кристалла. Представителями первого направления являются процессоры Alpha фирмы DEC, наиболее сложными остаются процессоры компании Hewlett-Packard.

Уменьшение набора машинных команд в RISC-архитектуре позволило разместить на кристалле вычислительного ядра большое количество регистров общего назначения. Увеличение количества регистров общего назначения позволило минимизировать обращения к медленной оперативной памяти, оставив для работы с RAM только операции чтения данных из оперативной памяти в регистр и запись данных из регистра в оперативную память, все остальные машинные команды используют в качестве операндов регистры общего назначения.

Основными преимуществами RISC-архитектуры является наличие следующих свойств:

  • - Большое число регистров общего назначения.
  • - Универсальный формат всех микроопераций.
  • - Равное время выполнения всех машинных команд.
  • - Практически все операции пересылки данных осуществляются по маршруту регистр - регистр.

Равное время выполнения всех машинных команд позволяют обрабатывать поток командных инструкций по конвейерному принципу, т.е. выполняется синхронизация аппаратных частей с учетом последовательной передачи управления от одного аппаратного блока к другому.

Аппаратные блоки в RISC-архитектуре:

Блок загрузки инструкций включает в себя следующие составные части: блок выборки инструкций из памяти инструкций, регистр инструкций, куда помещается инструкция после ее выборки и блок декодирования инструкций. Эта ступень называется ступенью выборки инструкций.

Регистры общего назначения совместно с блоками управления регистрами образуют вторую ступень конвейера, отвечающую за чтение операндов инструкций. Операнды могут храниться в самой инструкции или в одном из регистров общего назначения. Эта ступень называется ступенью выборки операндов.

Арифметико-логическое устройство и, если в данной архитектуре реализован, аккумулятор, вместе с логикой управления, которая, исходя из содержимого регистра инструкций, определяет тип выполняемой микрооперации. Источником данных помимо регистра инструкций может быть счетчик команд, при выполнении микроопераций условного или безусловного перехода. Данная ступень называется исполнительной ступенью конвейера.

Набор состоящий из регистров общего назначения, логики записи и иногда из RAM образуют ступень сохранения данных. На этой ступени результат выполнения инструкций записываются в регистры общего назначения или в основную память.

Однако к моменту разработки RISC-архитектуры, промышленным стандартом микропроцессоров де-факто стала архитектура Intel x86, выполненная по принципу CISC-архитектуры. Наличие большого числа программ, написанных под архитектуру Intel x86, сделала невозможным массовый переход ЭВМ на RISC-архитектуру. По этой причине основной сферой использования RISC-архитектуры явились микроконтроллеры, благодаря тому, что они не были привязаны к существующему программному обеспечению. Кроме того некоторые производители ЭВМ во главе с IBM так же начали выпускать ЭВМ, построенные по RISC-архитектуре, однако несовместимость программного обеспечения между Intel x86 и RISC-архитектурой в значительной степени ограничивала распространение последних.

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

Таким образом, ядра большинства современных микропроцессоров, начиная с Intel 486DX, выполнены по RISC-архитектуре с поддержкой внешнего Intel x86 интерфейса. Кроме того, подавляющее большинство микроконтроллеров, а так же некоторые микропроцессоры выпускаются по RISC-архитектуре.

В современном RISC-процессоре используется не менее 32 регистров, часто более 100, в то время, как в классических ЦВМ обычно 8-16 регистров общего назначения. В результате процессор на 20%-30% реже обращается к оперативной памяти, что также повысило скорость обработки данных. Кроме того, наличие большого количества регистров упрощает работу компилятора по распределению регистров под переменные. Упростилась топология процессора, выполняемого в виде одной интегральной схемы, сократились сроки ее разработки, она стала дешевле.

После появления RISC-процессоров традиционные процессоры получили обозначение CISC - то есть с полным набором команд (Complete Instruction Set Computer).

В настоящее время RISC-процессоры получили широкое распространение. Современные RISC-процессоры характеризуются следующим:

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

В RISC-процессорах обработка машинной команды разделена на несколько ступеней, каждую ступень обслуживают отдельные аппаратные средства и организована передача данных от одной ступени к следующей.

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

Выполнение типичной команды можно разделить на следующие этапы:

  • - выборка команды IF - по адресу, заданному счетчиком команд, из памяти извлекается команда;
  • - 2) декодирование команды ID - выяснение ее смысла, выборка операндов из регистров;
  • - 3) выполнение операции EX, при необходимости обращения к памяти - вычисление физического адреса;
  • - 4) обращение к памяти ME;
  • - 5)запоминание результата WB

В процессорах с RISC-архитектурой набор исполняемых команд сокращен до минимума. Для реализации более сложных операций приходится комбинировать команды. При этом все команды имеют формат фиксированной длины (например, 12, 14 или 16 бит), выборка команды из памяти и ее исполнение осуществляется за один цикл (такт) синхронизации. Система команд RISC-процессора предполагает возможность равноправного использования всех регистров процессора. Это обеспечивает дополнительную гибкость при выполнении ряда операций. К МК с RISC-процессором относятся МК AVR фирмы Atmel, МК PIC16 и PIC17 фирмы Microchip и другие.

На первый взгляд, МК с RISC-процессором должны иметь более высокую производительность по сравнению с CISC МК при одной и той же тактовой частоте внутренней магистрали. Однако на практике вопрос о производительности более сложен и неоднозначен.

Рис.2

Гарвардская архитектура почти не использовалась до конца 70-х годов, пока производители МК не поняли, что она дает определенные преимущества разработчикам автономных систем управления.

Дело в том, что, судя по опыту использования МПС для управления различными объектами, для реализации большинства алгоритмов управления такие преимущества фон-неймановской архитектуры как гибкость и универсальность не имеют большого значения. Анализ реальных программ управления показал, что необходимый объем памяти данных МК, используемый для хранения промежуточных результатов, как правило, на порядок меньше требуемого объема памяти программ. В этих условиях использование единого адресного пространства приводило к увеличению формата команд за счет увеличения числа разрядов для адресации оперрандов. Применение отдельной небольшой по объему памяти данных способствовало сокращению длины команд и ускорению поиска информации в памяти данных.

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

Большинство производителей современных 8-разрядных МК используют гарвардскую архитектуру. Однако гарвардская архитектура является недостаточно гибкой для реализации некоторых программных процедур. Поэтому сравнение МК, выполненных по разным архитектурам, следует проводить применительно к конкретному приложению.

Основные модели CISC и RISC-процессоров.

1. Классическими моделями являются модели вычислительных систем IBM/360, IBM/370, IBM/390. Выпуск первых моделей относится к середине 60-х годов.

Mainframe. В плане преемственности в 21в. IBM выпустила модель G5, поддерживающую архитектуру Mainframe’ов; поддерживающих 2 стандарта представления чисел с плавающей точкой: стандарт MFP (IBM/360) - S=16, стандарт IEEE 750 - S=2.

Классикой считаются миникомпьютеры:

2. PDP-11, VAX фирмы DEC (80-90гг.). (Отечественный аналог СМ ЭВМ).

3. Семейство процессоров Intel 80x86, Pentium.

4. Семейство фирмы AMD (Advanced Micro Device): K5, K6, K7 - Athlon/Duron, K8 – Hammer (64-разрядная арх-ра)

o 5x86 – аналог Pentium,

o 6x86 – аналог Pentium MMX

o Winchip C6 – аналог Pentium MMX

7. Motorola M68xxx

1. Alpha DEC/HP модели.

Выпуск моделей в последнее время прекращен, т.к. фирма переключилась на архитектуру IA-64 (1 модель Intel Itanium – VLIW- арх-ра (very long instruction word))

2. SPARC (Scalable Processor ARChitecture) – Sun Microsystems

Являясь разработчиком SPARC, фирма SUN предоставила лицензию на производство процессоров с предлагаемой спецификацией. Эти процессоры выпускаются компаниями TI (Texas Instrument), Фуджицу.

К настоящему времени выпущено 4 основных вида SPARC:

MicroSPARC – 32 разряда

SuperSPARC – 32 р

HyperSPARC – 32 р

UltraSPARC – 64 разряда

3. Power. Семейство. Фирма IBM. Performance Optimized With Enhanced RISC. Основные области применения: высокопроизводительные серверы и суперкомпьютеры (Классов MPP – Massively Parallel Processing)

4. PA-RISC (фирма HP) – Precision Architecture

5. MIPS (Microprocessor without Integer locked Pipeline Stage)

8. Режимы работы ЦП: прикладной и системный - и их особенности. Реализация режимов в процессорах семейства Intel 80x86, Pentium в виде реального режима (RM) и защищенного режима (PM). Основные особенности режимов и способы их переключения.



В целях разграничения доступа к системным ресурсам со стороны системных и прикладных программ в современных процессорах поддерживаются два основных режима функционирования: прикладной и системный .

В системном режиме допускается использование системных ресурсов, в том числе системных регистров и системных (привилегированных) команд.

В прикладном режиме попытка использования системных регистров и привилегированных команд пресекается выходом на обработку соответствующего прерывания.

В простейшем виде режим работы процессора задается с помощью специального бита, находящегося в каком-либо системном регистре. Например, в процессоре системы IBM/370 бит режима находится в слове состояния программы (Program Status Word – PSW). Два альтернативных состояния в этих процессорах называются “задача (task)” и ”супервизор (supervisor)”.

Аналогичный бит режима, называемый PS (Processor Status) имеет место в моделях миникомпьютеров VAX11. Находится в слове состояния процессора.

В процессорах семейства Intel 80х86 разделение пользовательских и системных режимов задается специальным битом PE (Protect Enabled) в управляющем регистре CR0 (0 бит). Управляющие регистры относятся к системным. (CR0-CR4, CR1 - нету).

PE = 0 – реальный режим работы процессора (RM - Real Mode)

PE = 1 – защищенный режим работы процессора (PM - Protected Mode)

Реальный режим: в RM процессор старшей модели выполняет программы, составленные для младших моделей, в том числе для базовой модели Intel 8086, с помощью этого режима поддерживается возможность выполнения большого числа программ, наработок, ранее созданных для младших моделей.

С точки зрения программиста процессоры старших моделей в RM представляют более быстрый базовый процессор с расширением набора команд и регистров до уровня процессоров старших моделей.

Одной из основных особенностей RM является формирование физического адреса на основе простейшей модели сегментированной памяти (как в базовой модели). – СМ. вопр. 8

После включения питания процессоры старших моделей программой инициализации автоматически переводятся в RM. Аналогичная процедура (Переключение в RM) и по сигналу сброса Reset.

Переход из RM в PM может осуществляться командой MOV (системной), загружающей системный регистр CR0 с новыми состояниями с установленным битом PE. Перед этим в RM должна быть произведена загрузка необходимых регистров, используемых в PM.

Основные отличия RM от базовой модели :

1) Возможность использования расширенной системы команд, не допускается лишь использование небольших групп команд, связанных непосредственно с PM.

2) Возможность использования расширенного набора регистров (дополнительный сегмент регистров FS, GS)

3) Возможность использования 32-разрядных операндов.

Основные особенности PM :

1) Использование разнообразных средств защиты программы и данных от несанкционированного доступа. Одним из основных видов является защита по уровням привилегий (по кольцам защиты).

Концепция защиты:

Обеспечение возможности доступа из внутренних колец во внешние, с пресечением попыток доступа из внешних колец во внутренние.


Наивысший уровень привилегий PL = 0 – присваивается программам и данным ядра ОС.

Низший – PL = 3 – уровень принадлежащий программам (присваивается пользовательским сегментам кода и данных).

PL = 1, 2 (для обслуживающих и обрабатывающих программ ОС, в частности, драйверы ВУ PL = 1, компиляторы – PL = 2).

Современные ОС поддерживает только два уровня привилегий: системный и пользовательский, которые имеют место при страничной организации.

2) Поддержка виртуальной организации памяти

3) Использование средств поддержки так называемого мультизадачного режима процессора, с помощью которого создается иллюзия параллельного выполнения программ (задач) за счет быстрого переключения с одной задачи на другую.

9. Конвейер команд как средство реализации низкоуровневого параллелизма (ILP) и его концепции. Классический шестиступенчатый конвейер команд. Идеальные условия обеспечения максимальной производительности.

Конвейризация (pipeline) является одним из важнейших способов реализации низкоуровневого параллелизма (уровень машинных команд, ILP instruction level parallelizm). В принципе конвейеры команд появились в компьютерах в начале шестидесятых годов. Концепции конвейера команд базируются на следующем:

1. Разделение порядка выполнения машинной команды на ряд последовательных этапов.

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

1) выборка команды (IF instruction fetch)

3) формирование адресов операндов OA (operand address)

4) выборка операндов OF (operand fetch)

5) выполнение операции EX (executive)

6) запись результата ST (store)

Принято считать, что конвейер команд с числом ступеней, большим чем у классического, но меньше 10, реализует суперконвейерную обработку, а с числом ступеней больше 10-15, гиперконвейерную обработку. В современных процессорах используются конвейеры команд с числом ступеней порядка 20.

10. Основные причины снижения производительности реальных конвейеров команд: структурные риски, риски по данным, риски по управлению - и способы устранения или уменьшения их влияния.

В идеальном случае, N-ступенчатый конвейер команд дает увеличение производительности процессора в N раз. Идеализация определенной оценки связывается со следующими:

· длительность всех фаз одинакова

· время переключения конвейера с фазы на фазу пренебрежимо мало по сравнению с длительностью фаз

· все фазы конвейера максимально загружены, что может иметь место только на линейных участках программы.