Новый золотой век компьютерной архитектуры

VISC и производительность

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

Что отличает VISC от остальных, так это не что иное, как распределение ресурсов процессора для выполнения различных инструкций за несколько тактов, от 1 до 4 ядер. Таким образом, если есть две инструкции, конкурирующие за другие ресурсы в ядре, то их можно очень быстро переназначить другой части процессора, где эти же ресурсы доступны.

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

Существуют ли эти процессоры сегодня?

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

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

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

Пока мы знаем, что эта концепция возможна в ЦП, поскольку Soft Machines разработала и построила процессор с этой парадигмой, поэтому, хотя это было на экспериментальном уровне, мы знаем, что такое проектирование возможно. Другое отличие состоит в том, что сложно привести весь набор инструкций и регистров x86 к этой парадигме, которая по своей природе чрезвычайно сложна.

VISC — это набор инструкций?

Первое, что может прийти в голову при чтении этих сокращений и из-за их сходства, — это слова RISC и CISC, которые относятся к природе набора регистров и инструкций процессора, который не является предметом данной статьи, поскольку Под концепцией VISC мы имеем в виду не новый способ категоризации инструкций, а нечто совершенно иное.

Чтобы понять, как работает парадигма VISC, мы должны принять во внимание две разные концепции, касающиеся ЦП представление. Первая из них заключается в том, что современные процессоры ПК имеют внутренний набор инструкций даже меньше, чем RISC, поскольку они передают каждую из инструкций в более мелких микрокомандах внутри во время процесса

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

Таким образом, война между RISC и CISC была выиграна первым, но с той ловушкой, что x86, наиболее широко используемая архитектура CISC, превратила в ловушку внутреннее поведение как RISC. По сей день, кроме ARM, остальные ISA RISC отсутствуют или находятся на грани исчезновения. Более того, даже ARM приняла концепцию разделения инструкций на более простые, так что обе парадигмы, помимо определения общего ISA семейства, уже исчезли.

Закон Амдала

Чтобы понять программу, мы должны понимать, что программа состоит из двух частей:

  • Тот, который может выполняться только последовательно и, следовательно, может быть решен только одним ядром, выполняя одно ядро ​​исполнения.
  • Та часть кода, которая может выполняться параллельно, что означает, что она может быть решена несколькими ядрами одновременно, и чем больше их в процессоре, тем быстрее эта часть будет решена.

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

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

Основные отличия архитектур CISC и RISC.

RISC — Reduced Instruction Set Computer. Набор команд в процессорах построенных на данной архитектуре, как видно из названия, упрощенный. Что позволяет поднять частоту, снизить стоимость производства и оптимально распараллеливать задачи. Вот собственно основное отличие.В CISC архитектуре соответственно длина команды не ограничена, одна инструкция содержит (может содержать) несколько арифметических действий. Как следствие — требуются суперскалярные вычисления и использование в процессоре конвейера. По сути процессор построенный по CISC архитектуре выполняет те же команды что и процессор на RISC архитектуре, но внутри себя содержит командный интерпретатор, «переделывающий» сложные команды в несколько простых.присутствуют все операнды команды3)

А) Небольшое число сложных способов адресации
Б) Расширенное число разнообразных способов адресации
В) Большое число сложных способов адресации
Г) Большое число простых способов адресации
Д) Небольшое число простых способов адресации
А) Увеличенное число простых форматов команд
Б) Большое число сложных форматов команд
В) Небольшое число простых форматов команд
Г) Небольшое число сложных форматов команд
А) Увеличенное число регистров общего назначения
Б) Увеличенное число специализированных регистров
В) Уменьшенное число специализированных регистров
Г) Уменьшенное число регистров общего назначения
А) Большое число сложных способов адресации
Б) Большое число простых способов адресации
В) Небольшое число простых способов адресации
Г) Расширенное число способов адресации
Д) Небольшое число сложных способов адресации

RISC-V против ARM

В отличие от x86, RISC-V и ARM основаны на RISC-архитектуре. Следует отметить, что начиная с версии ARMv8-A существует еще AArch64, 64-битное расширение ARM-архитектуры. Хотя архитектура ARM сохраняет лидирующее положение на рынке RISC-процессоров, RISC-V составляет ей серьезную конкуренцию. В таблице ниже приведены основные различия обеих архитектур.

ARM RISC-V
Бизнес-модель Архитектура ARM основана на модели патентованной интеллектуальной собственности. Это значит, что за использование процессора ARM в устройстве нужно платить лицензионный сбор. Архитектура RISC-V свободная и открытая, любой может использовать ее для исследований и разработки без внесения лицензионных платежей или нарушения прав на использование патента.
Экосистема Так как ARM появилась в 1980-х гг., она отличается обширным сообществом, большим количеством библиотек и широким диапазоном поддерживаемого ПО. RISC-V — относительно новая технология со стремительно растущим сообществом и техподдержкой.
Энергопотребление Те же тесты показали, что в определенных случаях RISC-V потребляет в три раза меньше энергии, чем ARM.
Кастомизация В ARM недавно появились стандартизированные инструкции для кастомных сопроцессоров: набор инструкций определен, но его имплементацию можно менять. Это похоже на то, как работают интерфейсы в Java. RISC-V включает в себя набор базовых инструкций и позволяет инженерам использовать стандартизированные или кастомные расширения, необходимые для их задач.

Сравнение RISC-V и ARM

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

RISC-V и Java

Порт будет поддерживать 64-битную конфигурацию RISC-V общего назначения (RV64GV). Данная конфигурация включает в себя полезные наборы инструкций для реализации работы типов Java: векторные операции, целочисленные арифметические операции и операции с плавающей точкой и т.д. Также порт включает несколько подсистем HotSpot:

  • интерпретатор шаблонов;
  • JIT-компилятор C1 (серверный);
  • JIT-компилятор C2 (клиентский);
  • все текущие стандартные сборщики мусора, включая ZGC и Shenandoah.

Кроме того, будет добавлена экспериментальная поддержка следующих расширений: RVV, RVC, Zba и Zbb. Их нужно явно указать в JVM посредством

Java-порт будет преимуществом для обеих экосистем, так как диапазон аппаратного обеспечения на RISC-V быстро расширяется, что ведет к повышенному спросу на совместимое ПО. Вдобавок все вендоры OpenJDK будут принимать участие в портировании будущих изменений Java на эту модель ISA.

Мы в BellSoft также верим в светлое будущее Risc-V и планируем создать версию нашего Java-рантайма Axiom JDK, оптимизированную для этой архитектуры.

Подробности

Название многопоточность неоднозначно, потому что на одном ядре ЦП может выполняться не только несколько потоков одновременно, но и несколько задач (с разными таблицами страниц , разными сегментами состояния задач , разными кольцами защиты , разными и т. Д.). Хотя они работают на одном ядре, они полностью отделены друг от друга. Многопоточность по своей концепции аналогична вытесняющей многозадачности, но реализована на уровне выполнения потоков в современных суперскалярных процессорах.

Одновременная многопоточность (SMT) — одна из двух основных реализаций многопоточности, другой формой является временная многопоточность (также известная как суперпоточность). При временной многопоточности только один поток инструкций может выполняться на любом заданном этапе конвейера одновременно. При одновременной многопоточности инструкции из более чем одного потока могут выполняться на любом заданном этапе конвейера одновременно. Это делается без значительных изменений в базовой архитектуре процессора: основные необходимые дополнения — это возможность извлекать инструкции из нескольких потоков в цикле и более крупный регистровый файл для хранения данных из нескольких потоков. Количество параллельных потоков определяется разработчиками микросхем. Обычно два параллельных потока на ядро ​​ЦП, но некоторые процессоры поддерживают до восьми параллельных потоков на ядро.

Поскольку это неизбежно увеличивает конфликт из-за общих ресурсов, измерение или согласование его эффективности может быть затруднено. Однако измерение энергоэффективности SMT с параллельными собственными и управляемыми рабочими нагрузками на исторических реализациях Intel SMT ( гиперпоточность ) от 130 до 32 нм показало, что в реализациях 45 и 32 нм SMT чрезвычайно энергоэффективен даже с процессорами Atom в порядке. В современных системах SMT эффективно использует параллелизм с очень небольшой дополнительной динамической мощностью. То есть, даже когда прирост производительности минимален, экономия энергопотребления может быть значительной.

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

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

Архитектура RISC и CISC

Справедливости ради стоит отметить, что эти две архитектуры определяют разновидности двух основных видов процессоров, при этом существуют еще менее распространенные архитектуры, например:

  • архитектура MISC — эта архитектура свойственна нетребовательным процессорам устройств с минимальным набором команд, например: роутеры, миникомпьютеры, IoT и др.;

  • архитектура VLIW — данная архитектура рассчитана для «очень длинных машинных команд», что по факту дает процессору возможность выполнять инструкции с несколькими параллельными операциями;

  • виртуальная архитектура — это своеобразный вид архитектуры, который эмулируется на реальных компьютерах; под такой архитектурой работает Java-виртуальная машина (JVM) и .NET CIL;

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

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

VISC и виртуальные ядра

После того, как мы объяснили все вышесказанное, мы можем объяснить, что означает аббревиатура VISC, определение которой является прямым ответом на следующий вопрос: разве они не работают при создании микрокоманд на этапе декодирования? параллельно с несколькими ядрами вместо того, чтобы делать это одновременно?

Что ж, ответ на вопрос об архитектуре VISC, который впервые был задан компанией Soft Machines в 2015 году как концепция повышения производительности процессора. Этот небольшой стартап был куплен Intel в 2016 году, и с тех пор они работают над разработкой архитектуры VISC. Как это работает? Что ж, это можно определить очень легко: один поток выполнения отправляется на глобальный интерфейс процессора, который преобразуется в несколько, которые выполняют одну и ту же функцию, работают параллельно и работают в виртуальных ядрах. Процесс преобразования выполняется на программном уровне через уровень трансляции, но мы должны помнить, что это может быть что-то столь же простое, как микроконтроллер, выполняющий передачу инструкций.

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

VLIW

VLIW-архитектура (Very Long Instruction Word) относится к микропроцессорам, применяющим очень длинные команды за счёт наличия нескольких вычислительных устройств. В отдельных полях команды присутствуют коды, которые обеспечивают реализацию различных операций. Одна команда в VLIW может исполнить одновременно несколько операций в разных узлах микропроцессора. Формированием таких длинных команд занимается соответствующий компилятор во время трансляции программ, которые написаны на высокоуровневом языке.

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

  • Intel Itanium;
  • AMD/ATI Radeon (с R600 до Northern Islands);
  • серия «Эльбрус».

VLIW схожа с архитектурой CISC, имея собственный аналог спекулятивной реализации команд. Однако спекуляция выполняется не при работе программы, а при компиляции, что делает VLIW-процессоры устойчивыми к уязвимостям Spectre и Meltdown. Компиляторы в этой архитектуре привязаны к определённым процессорам. Так, в следующем поколении наибольшая длина одной команды может из 256 бит превратиться в 512 бит, и тогда придётся выбирать между обратной совместимостью со старым типом процессора и возрастанием производительности посредством компиляции под новый процессор. И в этом случае Open Sourсe даёт возможность получить программу под определённый процессор при помощи перекомпиляции.

Развитием указанных архитектур стали различные гибридные архитектуры. К примеру, современные x86_64 процессоры CISC-совместимы, однако имеют RISC-ядро. В этих CISC-процессорах CISC-инструкции переводятся в набор RISC-команд. Вероятно, в дальнейшем разнообразие гибридных архитектур только возрастёт.

Виды архитектур

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

CISC

CISC (англ. Complex Instruction Set Computer — «компьютер с полным набором команд») — тип процессорной архитектуры, в первую очередь, с нефиксированной длиной команд, а также с кодированием арифметических действий в одной команде и небольшим числом регистров, многие из которых выполняют строго определенную функцию.

Самый яркий пример CISC архитектуры — это x86 (он же IA-32) и x86_64 (он же AMD64).

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

RISC

RISC (англ. Reduced Instruction Set Computer — «компьютер с сокращённым набором команд») — архитектура процессора, в котором быстродействие увеличивается за счёт упрощения инструкций: их декодирование становится более простым, а время выполнения — меньшим. Первые RISC-процессоры не имели даже инструкций умножения и деления и не поддерживали работу с числами с плавающей запятой.

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

Примеры RISC-архитектур: PowerPC, серия архитектур ARM (ARM7, ARM9, ARM11, Cortex).

В общем случае RISC быстрее CISC. Даже если системе RISC приходится выполнять 4 или 5 команд вместо одной, которую выполняет CISC, RISC все равно выигрывает в скорости, так как RISC-команды выполняются в 10 раз быстрее.

Отсюда возникает закономерный вопрос: почему многие всё ещё используют CISC, когда есть RISC? Всё дело в совместимости. x86_64 всё ещё лидер в desktop-сегменте только по историческим причинам. Так как старые программы работают только на x86, то и новые desktop-системы должны быть x86(_64), чтобы все старые программы и игры могли работать на новой машине.

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

MISC

MISC (англ. Minimal Instruction Set Computer — «компьютер с минимальным набором команд»).

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

Для увеличения производительности во всех вышеперечисленных архитектурах может использоваться “спекулятивное исполнение команд”. Это выполнение команды до того, как станет известно, понадобится эта команда или нет.

VLIW

VLIW (англ. Very Long Instruction Word — «очень длинная машинная команда») — архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько операций, которые должны выполняться параллельно.

По сути является архитектурой CISC со своим аналогом спекулятивного исполнения команд, только сама спекуляция выполняется во время компиляции, а не во время работы программы, из-за чего уязвимости Meltdown и Spectre невозможны для этих процессоров. Компиляторы для процессоров этой архитектуры сильно привязаны к конкретным процессорам. Например, в следующем поколении максимальная длина «очень длинной команды» может из условных 256 бит стать 512 бит, и тут приходится выбирать между увеличением производительности путём компиляции под новый процессор и обратной совместимостью со старым процессором. Опять же, Open Sourсe позволяет простой перекомпиляцией получить программу под конкретный процессор.

Примеры архитектуры: Intel Itanium, Эльбрус-3.

CISC

CISC-архитектура (Complex Instruction Set Computer) относится к процессорам с полным набором команд. Она имеет нефиксированную длину команд, отличается кодированием арифметических действий в единой команде и малым количеством регистров, большинство из которых выполняет только выделенную функцию.

CISC реализована во множестве типов микропроцессоров, таких как Pentium, которые выполняют большое количество разноформатных команд (порядка 200-300), применяя более десяти различных способов адресации. Командная система может включать несколько сотен команд различного уровня сложности или формата (от 1 до 15 байт).

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

  • x86 (IA-32, сокращенное от «Intel Architecture, 32-bit») — ;
  • x86_64 (AMD64);
  • Motorola MC680x0;
  • мейнфреймы zSeries.

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

Заключение

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

Конвейер в RISC практически постоянно заполнен инструкциями, а микрооперации в CISC не могут организовать постоянное заполнение конвейера, поэтому возникало очень много «пустот». Из-за этого разработчики CISC пошли на дополнительный трюк, так называемый гипертрединг. Гипертрединг позволил CISC-процессору выполнять сразу несколько потоков инструкций. В этом случае если один поток не способен «наполнить» конвейер, то для этого берутся инструкции из других потоков.

Разработчики RISC заметили, что гипертрединг — это хорошо. А в их архитектуре редко, но иногда проскакивает «пустота» в конвейере, поэтому они внедрили гипертрединг и в своих процессорах.

Такое «копирование функционала» сделало свое дело: архитектура RISC и архитектура CISC стали очень похожи. Но при этом многие специалисты пророчат светлое будущее именно архитектуре RISC.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
RozBlog
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: