Примечание переводчика. В оригинале статьи авторы (один из них - пионер 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.
Отметим, что 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 может быть лучше своих предшественников, если при её разработке учесть их ошибки:
Для удовлетворения потребностей рынка встраиваемых решений, RISC-и даже предоставили решение проблемы размера кода: ARM Thumb и MIPS16 добавили 16-битные форматы для того, чтобы код был даже короче, чем у 80x86. Таким образом, существует общепризнанное соглашение о том, как в целом должна выглядеть хорошая RISC ISA.
Так как обычно на то, чтобы отшлифовать все тонкости, уходят годы - вызревание 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 по этим четырём критериям, а также по наличию поддержки компиляторами и портированными ОС.
Открытые ISA использовались и раньше, но они никогда не становились популярными из-за недостатка спроса в них. Низкая цена и энергопотребление IoT, желание иметь альтернативу 80x86 для дата-центров и тот факт, что процессорные ядра - лишь малая, но вездесущая часть всех SoC, комбинируются в то предложение, способное удовлетворить возникший спрос. RISC-V нацелен в первую очередь на SoC, с базовым набором никогда не меняющихся команд, учитывая долгую жизнь идей RISC, с медленно эволюционирующим подмножеством опциональных расширений, а также уникальными инструкциями, которые никогда не будут переиспользованы. Хотя первый плацдарм для RISC-V может быть IoT или WSC, наша цель шире: так же, как Linux стал стандартной ОС для большинства вычислительных устройств, мы представляем себе RISC-V как стандартную ISA для всех вычислительных устройств будущего.
сокращенным набором команд ) складывалась в конце 1970-х - начале 1980-х годов, когда потребовались новые идеи для повышения производительности процессоров. Выводы различных групп исследователей были обобщены в виде так называемого правила "80/20": 80 % времени выполнения программ занимает выполнение 20 % команд, входящих в состав системы команд. То есть в определении производительности процессора основную роль играет лишь пятая часть всех команд, остальные же команды встречаются достаточно редко, и время их выполнения существенного влияния на производительность процессора не оказывает. Исходя из этого было принято решение построить процессор , в котором выделенная небольшая группа команд выполнялась бы максимально быстро за счет ее аппаратной реализации, а остальные команды либо вообще удалялись из системы команд, либо реализовывались на микропрограммном уровне.Сложившаяся в результате этого идеология RISC-архитектуры опиралась на следующие принципы :
Такой подход позволил уменьшить объем аппаратуры процессора за счет сокращения блока управления примерно в 10 раз, существенно увеличить тактовую частоту работы процессора и снизить его тепловыделение.
Несмотря на свое название, основой RISC -архитектуры является то, что вся обработка сосредоточена только во внутренних регистрах микро процессора.
Так как вся обработка проходит в регистрах, отпадает необходимость в большом количестве режимов адресации операндов, а в системе команд можно применять трехадресные команды, наиболее эффективные с точки зрения организации вычислительного процесса и в то же время не имеющие их главного недостатка - большой длины команды. Простой формат команды легко поддается декодированию на соответствующей ступени работы конвейера. Вспомним, что длина команды в CISC -архитектуре IA-32 меняется в пределах от 1 до 15 байт , а наличие, формат и назначение многих полей команды неоднозначны и определяются структурой других полей.
Естественно, что этот подход потребовал использования в микропроцессоре регистровой памяти большого объема (до 128 регистров). А для обеспечения согласованной работы быстрых внутренних конвейеров и относительно медленной оперативной памяти в RISC -микропроцессорах предусматривается кэш - память большой емкости.
Наличие большого количества регистров создает хорошую основу для работы оптимизирующих компиляторов, которые позволяют эффективно использовать все конвейеры микропроцессора.
Простой формат команды и ориентация на регистровую обработку позволили безболезненно внедрить в RISC -процессорах конвейерный принцип обработки информации.
Такая организация обеспечила существенное повышение производительности RISC -микропроцессоров по сравнению с микропроцессорами CISC -архитектуры. Это привело к преобладанию МП данного типа в тех областях, где производительность являлась основополагающим фактором, например, в серверах. В то же время они не нашли своего места на наиболее развитом рынке вычислительной техники - рынке персональных компьютеров. Тому есть несколько причин:
Развитие архитектуры 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 -процессоров:
Самыми крупными разработчиками 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 -процессоры третьего поколения:
Для обработки данных применяется алгоритм динамического прогнозирования ветвлений и метод переназначения регистров, что позволяет реализовать внеочередное выполнение команд.
Повышение производительности RISC -процессоров достигается за счет повышения тактовой частоты и усложнения схемы кристалла. Представителями первого направления являются процессоры Alpha фирмы DEC , наиболее сложными остаются процессоры компании Hewlett-Packard. Рассмотрим процессоры этих фирм более подробно.
Структура процессора Alpha 21064 представлена на рис. 10.1 .
Рис.
10.1.
Основные функциональные блоки процессора Alpha 21064:
Процессор 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-процессоров:
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-процессоры третьего поколения:
Для обработки данных применяется алгоритм динамического прогнозирования ветвлений и метод переназначения регистров, что позволяет реализовать внеочередное выполнение команд.
Повышение производительности 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-процессорах обработка машинной команды разделена на несколько ступеней, каждую ступень обслуживают отдельные аппаратные средства и организована передача данных от одной ступени к следующей.
Производительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются несколько команд.
Выполнение типичной команды можно разделить на следующие этапы:
В процессорах с 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 раз. Идеализация определенной оценки связывается со следующими:
· длительность всех фаз одинакова
· время переключения конвейера с фазы на фазу пренебрежимо мало по сравнению с длительностью фаз
· все фазы конвейера максимально загружены, что может иметь место только на линейных участках программы.