Лекция "RISC и CISC архитектуры"

  • Лекции
  • docx
  • 15.03.2017
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Для устранения недостатка в Pentium реализованы раздельные кэш для команд и данных, позволяющие после переходов перезагружать лишь команды - такое решение называется Гарвардской архитектурой, а также предсказание переходов, снижающее частоту перезагрузок. Последнее достигается предварительной загрузкой в кэш команд с обоих разветвлений. Введение второго целочисленного тракта, состоящего из АЛУ, адресного блока, шин данных/команд, и работающего на общий блок регистров, повысило производительность поддержкой параллельной обработки целочисленных данных. Развитием данной тенденции стало обогащение Pentium MMX мультимедийным трактом, образованным АЛУ, шинами данных/команд и регистровым файлом. При этом в случае выборки двух целочисленных команд, зависящих по данным, каждая из них выполняется последовательно, что снижает эффективность работы процессора.
Иконка файла материала тема 1 вопрос 22.docx
тема 1 вопрос 22 RISC и  CISC архитектуры Здесь рассматриваются базовые свойства архитектур CISC и RISC, а также особенности интеграции  элементов RISC­архитектуры в процессорах x86. Особое внимание уделяется описанию преимуществ и  недостатков этой интеграции. Показано естественность взаимообогащения CISC и RISC­процессоров  эффективными аппаратно­программными решениями, а также практичность развития процессоров в  этом направлении. Организация первых моделей процессоров ­ i8086/8088 ­ была направлена, в частности, на сокращение  объёма программ, критичного для систем того времени, отличавшихся малой оперативной памятью.  Расширение спектра операций, реализуемых системой команд, позволило уменьшить размер программ,  а также трудоёмкость их написания и отладки. Однако увеличение числа команд повысило  трудоёмкость разработки их топологических и микропрограммных реализаций. Последнее проявилось в удлинении сроков разработки CISC­процессоров, а также в проявлении  различных ошибок в их работе. Кроме того, нерегулярность потока команд ограничила развитие  топологии временным параллелизмом обработки инструкций на конвейере "выборка команды­  дешифрация команды­ выборка данных­ вычисление­ запись результата". Эти недостатки обусловили необходимость разработки альтернативной архитектуры, нацеленной,  прежде всего, на снижение нерегулярности потока команд уменьшением их общего количества. Это  было реализовано в RISC­процессорах, название которых означает "чипы с сокращённой системой  команд" (Reduced Instruction Set Computer). Одновременно "классические" процессоры получили  обозначение CISC (Complex Instruction Set Computer) ­ компьютер со сложным набором инструкций. Сокращение нерегулярности потока команд позволило обогатить топологию RISC­процессоров  пространственным параллелизмом, специализированными аппаратными АЛУ (ALU ­ блок логики и  арифметики = Arithmetic (and) Logic Unit), независимыми кэш данных и команд, раздельными шинами  ввода­вывода. Последние, в частности, увеличили длину конвейеров команд. Всё это повысило и  производительность ­ увеличением числа операций, выполняемых за один такт, и быстродействие ­  сокращением пути транзактов ­ RISC­процессоров. При этом срок разработки данных чипов  свидетельствует о том, что её трудоёмкость меньше, чем в случае CISC­процессоров. На мировых рынках CISC­процессоры представлены, в основном, клонами процессоров Intel серии x86,  производимыми AMD, Cyrix, а RISC ­ чипами Alpha, PowerPC, SPARC. Уступая во многом последним,  процессоры x86 сохранили лидерство на рынке персональных систем лишь благодаря совместимости с  программным обеспечением младших моделей, общая стоимость которого ­ в начале 90­х годов ­  составила несколько миллиардов долларов США. В свою очередь, достоинства RISC­процессоров  укрепили их позиции на более молодом рынке высокопроизводительных машин. Несмотря на формальное разделение "сфер влияния", между представителями этих архитектур в  начале 90­х годов началась острая конкуренция за превентивное улучшение характеристик. В первую  очередь, производительности и её отношения к трудоёмкости разработки процессоров. Следуя  принципу "бить врага его оружием", создатели и CISC, и RISC­процессоров нередко боролись с  конкурентами, заимствуя их удачные решения. Первыми на то решились разработчики Intel, реализовавшие в i486 пространственный параллелизм  вычислений с фиксированной и плавающей запятой. Поддержка каждого АЛУ своей шиной  данных/команд и регистровым блоком повысила производительность i486 одновременным выполнением указанных команд. Кроме того, интеграция кэш и очереди команд позволила поднять частоту ядра  процессора в 2­3 раза в сравнении с системной шиной. Однако совместное размещение данных и команд ограничило эффективность кэш необходимостью его полной перезагрузки после выполнения команд  переходов. Для устранения недостатка в Pentium реализованы раздельные кэш для команд и данных, позволяющие  после переходов перезагружать лишь команды ­ такое решение называется Гарвардской архитектурой, а также предсказание переходов, снижающее частоту перезагрузок. Последнее достигается  предварительной загрузкой в кэш команд с обоих разветвлений. Введение второго целочисленного  тракта, состоящего из АЛУ, адресного блока, шин данных/команд, и работающего на общий блок  регистров, повысило производительность поддержкой параллельной обработки целочисленных данных.Развитием данной тенденции стало обогащение Pentium MMX мультимедийным трактом, образованным АЛУ, шинами данных/команд и регистровым файлом. При этом в случае выборки двух целочисленных команд, зависящих по данным, каждая из них  выполняется последовательно, что снижает эффективность работы процессора. Частично поправило  ситуацию создание оптимизирующих рекомпиляторов, например, Pen_Opt фирмы Intel, разделяющих по возможности такие команды. Реализация описанного управления обработкой команд CISC­формата вызвала дополнительный рост  трудоёмкости разработки Pentium в сравнении с i8086/i486, что привело не только к увеличению её  реального срока на 27% в сравнении с ожидаемым, но и к проявлению ошибок в первых моделях  данного процессора. Учтя это, компания Intel реализовала в Pentium Pro RISC­подобную организацию вычислений.  Интерпретация команд х86 внутренними ­ RISC86 ­ инструкциями VLIW­формата помимо снижения  нерегулярности их потока, обеспечила синхронную загрузку четырёх операционных ­ по два с  плавающей и фиксированной запятой ­ АЛУ этого чипа. Термин VLIW расшифровывается как "очень  длинное командное слово" (Very Long Instruction Word). Инструкции этого формата содержат команды  для всех параллельных АЛУ. Обогащение управления обработкой предвыборкой данных и команд, предполагаемых к обработке в  ближайшие 20 тактов, повысило регулярность загрузки вычислительных трактов. В свою очередь,  осуществление предвыборки из интегрированного на кристалле кэш второго уровня, обслуживаемого  раздельными шинами "интерфейс­кэш" и "кэш­АЛУ" и работающего на частоте АЛУ, повысило  быстродействие подготовки команд в сравнении с внешними кэш. Дополнительное повышение  производительности Pentium Pro обеспечило увеличение длины команд до 11 ступеней введением  ступеней трансляции и предвыборки. Кроме того, интеграция кэш второго уровня позволила умножать  частоту ядра в 5­6 раз. В архитектуре Р6 RISC­решения впервые в семействе х86 перестали быть лишь дополнением исконных  CISC­средств повышения производительности ­ роста разрядности, отложенной записи шины и других.  Поэтому частица PRO в названии первого процессора этой серии обозначает "Полноценная RISC­ архитектура" (Precision RISC Organization). Топологические новинки Pentium II ­ интеграция тракта MMX, мультипроцессорный интерфейс Xeon,  вынесение кэш второго уровня на кристалл в корпусе чипа, как и полное устранение кэш второго  уровня в Celeron, не имеют в данном случае качественной роли и направлены на оптимизацию  отношения характеристик этих процессоров, к их цене. При этом сокращение нерегулярности потока RISC86­инструкицй ограничило рост требований к  развитию управления вычислениями в сравнении с Pentium. Одновременно снижение трудоёмкости  разработки аппаратно­программных реализаций алгоритмов работы Pentium Pro, достигнутое развитием САПР, ослабило влияние развития обработки данных, оцениваемого ростом объёма информации,  заложенной в реализациях этой обработки, на общую трудоёмкость разработки процессоров,  оцениваемую её длительностью. Последнее создало возможность оптимизации соотношения характеристик чипов и их трудоёмкости не  снижением последней ограничением внедрения прогрессивных решений в CISC­архитектуру или  ограничением функциональных возможностей RISC­процессоров, а ростом характеристик,  достигаемым сочетанием преимуществ упомянутых архитектур. Сказанное иллюстрирует и организация современных RISC­процессоров. Их отличает, в данном случае,  развитие систем команд с целью сохранения иерархической совместимости и снижения трудоёмкости  разработки программ. Это сближает технологии обработки команд процессорами упомянутых  архитектур. Например, SuperSparc взяли от последних моделей х86 предсказание переходов и  предварительную интерпретацию кода. Таким образом, развиваясь, каждая из рассмотренных архитектур, "отказавшись" от своих черт ­ CISC  от скалярности вычислений, RISC от "простоты" системы команд, приобрела лучшие черты конкурента, что повысило характеристики её представителей. Это подтверждает и процессор Merced, разрабатываемый недавними противниками ­ Intel и Hewlett  Packard. Имеющиеся сведения позволяют предположить, что его архитектура продолжит тенденции  Pentium Pro по оптимизации обработки внутренних VLIW­подобных команд реализацией эффективных  архитектурных решений при одновременной оптимизации преобразования "внешних" инструкций.Особо отмечаются намерения создания двух вариантов этого чипа, различающихся лишь множеством  этих инструкций. Первый будет совместим с CISC­семейством x86, второй ­ с RISC­процессорами  Alpha. Будучи "един в двух лицах", Merced ознаменует прекращение соперничества CISC и RISC, в ходе  которого представители данных архитектура улучшили свои характеристики реализацией лучших  аппаратно­программных решений конкурентов. Это позволяет предположить, что дальнейшее развитие  массовых процессоров пройдёт по пути развития топологических и микропрограммных решений  вычислительного ядра RISC­организации при одновременном повышении возможностей CISC­подобной "внешней" системы команд. Архитектура процессоров. CISC и RISC Чтобы разработать процессор, нужны гигантские инвестиции и годы работы. Почему всё получается так сложно? Ответ на этот вопрос кроется в истории. Автор: Сергей Озеров | Раздел: Платформа | Дата: 25 октября 2005 года В семидесятых годах прошлого столетия проектирование и изготовление центральных процессоров  было занятием, принципиально доступным каждому. Если какому­нибудь сотруднику, скажем,  Стэндфордского университета приходила в голову интересная идея, он мог легко набрать команду,  основать фирму, найти инвесторов и уже через год­два выбросить на рынок свои CPU. Через тридцать с небольшим лет процессоры усложнились до такой степени, что разработка хоть  сколько­нибудь быстрого по современным меркам кристалла требует огромной армии инженеров,  гигантских инвестиций и целого моря времени. И дело здесь отнюдь не в тонких кремниевых  технологиях и стоящих миллиарды долларов полупроводниковых фабриках ­ просто уже в  восьмидесятых годах разработка принципиально нового CPU требовала двух­трех, а в девяностых ­  пяти­шести лет напряженной работы. Те же китайцы, даже располагая подробной информацией о  тридцатилетней истории проектирования процессоров, владея новейшими фабриками по производству  кремниевых кристаллов и не стремясь изобретать что­то новое, потратили на разработку собственного  простейшего MIPS32­подобного процессора Godson (примерно эквивалентного по производительности  i486) несколько лет. Это не считая еще одного года, когда новый кристалл отлаживали. А на разработку MIPS64­подобной архитектуры с приемлемой производительностью (~Pentium III 500–600 МГц) у  китайской Академии наук ушло еще четыре года, ­ четыре года, потраченных только на то, чтобы  повторить успех более чем двенадцатилетней давности. Но почему все получается так сложно? Чтобы  ответить на этот вопрос нам придется вернуться на 30­40 лет в прошлое. Шаг первый. CISC Так уж исторически сложилось, что поначалу совершенствование процессоров было направлено на то,  чтобы сконструировать по возможности более функциональный компьютер, который позволил бы  выполнять как можно больше разных инструкций. Во­первых, так было удобнее для программистов  (компиляторы языков высокого уровня еще только начинали развиваться, и все по­настоящему важные  программы писались на ассемблере), а во­вторых, использование сложных инструкций зачастую  позволяло сильно сократить размеры написанной на ассемблере программы. А где меньше инструкций – меньше и затраченное на исполнение программы время. Надо признать, что достигнутые на этом пути успехи действительно впечатляли ­ в последних версиях  ЭВМ выразительность ассемблерного листинга зачастую не уступала выразительности программы,  написанной на языке высокого уровня. Одной­единственной машинной инструкцией можно было  сказать практически все, что угодно. К примеру, такие машины, как DEC VAX, аппаратно  поддерживали инструкции "добавить элемент в очередь", "удалить элемент из очереди" и даже  "провести интерполяцию полиномом" (!); а знаменитое семейство процессоров Motorola 68k почти для  всех инструкций поддерживало до двенадцати (!) режимов адресации памяти, вплоть до взятия в  качестве аргумента инструкции "данных, записанных по адресу, записанному вон в том регистре, со  смещением, записанным вот в этом регистре". Отсюда и общее название соответствующих архитектур:  CISC ­ Complex Instruction Set Computers ("компьютеры с набором инструкций на все случаи жизни"). На практике это привело к тому, что подобные инструкции оказалось сложно не только выполнять, но и просто декодировать (выделять из машинного кода новую инструкцию и отправлять ее на  исполнительные устройства). Чтобы машинный код CISC­компьютеров из­за сложных инструкций не  разрастался до огромного размера, машинные инструкции в большинстве этих архитектур имели  неоднородную структуру (разное расположение и размеры кода операции и ее операндов) и сильноотличающуюся длину (в x86, например, длина инструкций варьируется от 1 до 15 байт). Еще одной  проблемой стало то, что при сохранении приемлемой сложности процессора многие инструкции  оказалось принципиально невозможно выполнить "чисто аппаратно", и поздние CISC­процессоры были  вынуждены обзавестись специальными блоками, которые "на лету" заменяли некоторые сложные  команды на последовательности более простых. В результате все CISC­процессоры оказались весьма  трудоемкими в проектировании и изготовлении. Но что самое печальное, к моменту расцвета CISC­ архитектур стало ясно, что все эти конструкции изобретались в общем­то зря ­ исследования  программного обеспечения того времени, проведенные IBM, наглядно показали, что даже  программисты, пишущие на ассемблере, все эти "сверхвозможности" почти никогда не использовали, а  компиляторы языков высокого уровня ­ и не пытались использовать. К началу восьмидесятых годов классические CISC полностью исчерпали себя. Расширять набор  инструкций в рамках этого подхода дальше не имело смысла, наоборот ­ технологи столкнулись с тем,  что из­за высокой сложности CISC­процессоров оказалось трудно наращивать их тактовую частоту, а  из­за "тормознутости" оперативной памяти тех времен зашитые в память процессора расшифровки  сложных инструкций зачастую работают медленнее, чем точно такие же цепочки команд,  встречающиеся в основной программе. Короче говоря, стало очевидным, что CISC­процессоры нужно  упрощать ­ и на свет появился RISC, Reduced Instruction Set Computer. Шаг 2. RISC Точно так же, как когда­то CISC­процессоры проектировались под нужды asm­программистов, RISC  проектировался в расчете на типовой код, генерируемый компиляторами. Для начала разработчики  свели к минимуму набор инструкций и к абсолютному минимуму ­ количество режимов адресации  памяти; упаковав все, что осталось, в простой и удобный для декодирования регулярный машинный  код. В частности, в классическом варианте RISC из инструкций, обращающихся к оперативной памяти,  оставлены только две (Load ­ загрузить данные в регистр и Store ­ сохранить данные из регистра; так  называемая Load/Store­архитектура), и нет ни одной инструкции вроде вычисления синуса, косинуса  или квадратного корня (их можно реализовать "вручную"), не говоря уже о более  сложных[Канонический пример ­ инструкция INDEX, выполнявшаяся на VAX медленнее, чем вручную  написанный цикл, выполняющий ровно тот же объем работы]. Да что там синус с косинусом ­ в  некоторых RISC­процессорах пытались отказаться даже от трудно реализуемого аппаратного  умножения и деления! Правда, до таких крайностей ни один коммерческий RISC, к счастью, не дошел,  но как минимум две попытки (ранние варианты MIPS и SPARC) предприняты были. Второе важное усовершенствование RISC­процессоров, целиком вытекающее из Load/Store­ архитектуры, ­ увеличение числа GPR (регистров общего назначения). Варианты, у которых меньше  шестнадцати GPR, ­ большая редкость, причем почти все эти регистры полностью равноправны, что  позволяет компилятору свободно распоряжаться ими, сохраняя большую часть промежуточных данных именно там, а не в стеке или оперативной памяти. В некоторых архитектурах, типа SPARC,  "регистровость" возведена в абсолют, в некоторых ­ оставлена на разумном уровне; однако почти любой RISC­процессор обладает куда большим набором регистров, чем даже самый продвинутый CISC. Для  сравнения: в классическом x86 IA­32 всего восемь регистров общего назначения, причем каждому из  них приписано то или иное "специальное назначение" (скажем, в ESP хранится указатель на стек)  затрудняющее или делающее невозможным его использование. Среди прочих усовершенствований, внесенных в RISC, ­ такие нетривиальные идеи, как условные  инструкции ARM или режимы работы команд. Например, некий модификатор в архитектуре PowerPC и некоторых других показывает, должна ли инструкция выставлять по результатам своего выполнения  определенные флаги, которые потом может использовать инструкция условного перехода, или не  должна. Это позволяет разнести в пространстве инструкцию, выполняющую вычисление условия, и  инструкцию собственно условного перехода ­ что в конвейерных архитектурах зачастую позволяет  процессору не "гадать", будет совершен переход или нет, а сразу достоверно это знать. В классическом  CISC они почти не встречаются, поскольку на момент разработки соответствующих наборов  инструкций ценность этих решений была сомнительной (они выйдут на сцену только в  конвейеризированных процессорах).Двумя   основными   архитектурами   набора   команд,   используемыми   компьютерной   промышленностью   на       ­   большое   количество   машинных   команд,   некоторые   из   которых   нагружены   семантически   аналогично RISC И CISC АРХИТЕКТУРЫ                Архитектура   набора   команд   служит   границей   между   аппаратурой   и   программным   обеспечением   и представляет ту часть системы, которая видна программисту. Система команд ­ список всех командных слов языка Ассемблер для данного типа процессора. Следует отметить, что это наиболее частое употребление этого термина.      В широком смысле архитектура охватывает понятие организации системы, включающее такие высокоуровневые аспекты разработки компьютера, как систему памяти, структуру системной шины, организацию ввода/вывода и т.п.    современном этапе развития вычислительной техники, являются архитектуры CISC и RISC.         RISC   (Reduced  (Restricted)   Instruction  Set   Computer)   ­   уменьшенный   набор   команд,   которыми   пользуется микропроцессор компьютера, содержащий только наиболее простые команды.     Эти процессоры обычно имеют набор однородных регистров универсального назначения, причем их число может быть большим. Система команд отличается относительной простотой, коды инструкций имеют четкую структуру, как   правило,   с   фиксированной   длиной.   В   результате   аппаратная   реализация   такой   архитектуры   позволяет   с небольшими затратами декодировать и выполнять эти инструкции за минимальное число тактов синхронизации. Определенные преимущества дает и унификация регистров.     CISC (Complete Instruction Set Computer) ­ полный набор команд микропроцессора.     Состав и назначение их регистров существенно неоднородны, широкий набор команд усложняет декодирование инструкций, на что расходуются аппаратные ресурсы. Возрастает число тактов, необходимое для выполнения инструкций. К процессорам с полным набором инструкций относится семейство х86.          Лидером   в   разработке   CISC­процессоров   считается   компания   Intel   со   своей   серией   x86   и   Pentium.   Эта архитектура   является   практическим   стандартом   для   рынка   микрокомпьютеров.   Для   CISC­процессоров характерно:     ­ сравнительно небольшое число регистров общего назначения;    операторам высокоуровневых языков программирования и выполняются за много тактов;      ­ большое количество методов адресации;      ­ большое количество форматов команд различной разрядности;      ­ преобладание двухадресного формата команд;         ­ наличие команд обработки типа регистр­память.         Основой архитектуры современных рабочих станций и серверов является RISC архитектура. Понятие RISC сформировалось на базе трех исследовательских проектов: процессора   801   компании   IBM,   процессора   RISC   университета   Беркли   и   процессора   MIPS   Стенфордского университета. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон. Эти три процессора имели много общего. Все они придерживались архитектуры, отделяющей  команды   обработки   от  команд   работы  с  памятью,   и   делали   упор  на   эффективную   конвейерную обработку.   Система   команд   разрабатывалась   таким   образом,   чтобы   выполнение   любой   команды   занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы   упростить   логику   декодирования   команд,   использовались   команды   фиксированной   длины   и фиксированного формата.     Среди других особенностей RISC архитектур следует отметить наличие достаточно большого регистрового файла (в типовых RISC­процессорах реализуются 32 или большее число регистров по сравнению   с   8­16   регистрами   в   CISC   архитектурах),   что   позволяет   большему   объему   данных   храниться   в регистрах на процессорном кристалле более длительное время и упрощает работу компилятора по распределению регистров под переменные. Для обработки данных процессора с RISC архитектурой, как правило, используются трехадресные   команды,   что   помимо   упрощения   дешифрации   дает   возможность   сохранять   большее   число переменных в регистрах без их последующей перезагрузки.     Ко времени завершения университетских проектов (1983­1984 гг.) обозначился также прорыв в технологии изготовления сверхбольших интегральных схем. Простота архитектуры и ее эффективность, подтвержденная этими проектами, вызвали большой интерес в компьютерной индустрии и с 1986 года началась активная промышленная реализация архитектуры RISC. К настоящему времени эта  архитектура   прочно   занимает   лидирующие   позиции   на   мировом   компьютерном   рынке   рабочих   станций   и серверов.       Развитие архитектуры RISC в значительной степени определялось прогрессом в области создания оптимизирующих компиляторов. Именно современная техника компиляции позволяет эффективно использовать преимущества большего регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности,   обычно   применяемой   в   процессорах   RISC:   реализацию   задержанных   переходов   и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.  Следует отметить, что в последних разработках компании Intel, а также ее последователей­конкурентов (AMD, Cyrix и др.) широко используются идеи, реализованные в RISC­микропроцессорах, так что многие различиямежду   CISC   и  RISC  стираются.   Однако   сложность   архитектуры   и  системы   команд   x86  остается   и  является главным фактором, ограничивающим производительность процессоров на ее основе.