- Архитектура процессора Эльбрус
- Процессоры «Эльбрус»
- Советский период
- МЦСТ — эпоха современной России
- Архитектура «Эльбрус»
- Суперскалярные и VLIW процессоры
- О «широкой команде»
- Особенности архитектуры
- Сравнение VLIW и OOOSS. Преимущества и недостатки
- В чем проблема сразу перейти на техпроцесс, как у Apple, AMD или Intel?
- Предисловие
- Историческая справка
- Основные особенности
- Мультипоточность
- Аппаратная мультипоточность
- Программная мультипоточность
- Симметричная мультипроцессорность
- Алгоритмы обработки данных
- Prefetching и аппаратная асинхронная подгрузка данных (APB)
- Single Instruction Multiple Data
- Текстовый процессинг
- Источники
Архитектура процессора Эльбрус
В России всего несколько компаний, занимающихся разработкой процессоров. Одна из этих компаний — МЦСТ с процессорами «Эльбрус». В целом, МЦСТ делает акцент на том, что их процессоры — российские, и государство всячески помогает ей. Во-первых, государство является основным потребителем «Эльбруса», поскольку обычному потребителю такой процессор на данный момент не нужен. А во-вторых, государство выдает субсидии на проекты МЦСТ и принимает инициативы, упрощающие деятельность этой компании В этой статье пойдет речь о семействе процессоров «Эльбрус» и о том, что они могут предложить вместо процессоров из-за «бугра».
Процессоры «Эльбрус»
Советский период
В конце 60-х годов 20-го века в СССР была принята государственная директива, которая обозначала дальнейший вектор развития компьютеростроения СССР как копирование наработок западных коллег, в частности компьютера IBM S/360
. В целом, многие советские инженеры, в том числе и отец советской кибернетики Сергей Лебедев
, отзывались скептически о таком решении. По мнению Лебедева, путь копирования по определению является дорогой отстающих. Но других вариантов никто не видел или не хотел видеть.
Сергей Алексеевич Лебедев
Если большинство советских разработок не избежало влияния данной директивы, то компьютеру «Эльбрус-1» повезло. Его можно назвать оригинальной разработкой советских ученых. В 1969 году перед инженерами была поставлена задача создать ЭВМ с производительностью 100 миллионов операций в секунду. Поскольку подобный проект диктовался военными целями, а именно гонкой вооружения, на первый план выходили вопросы отказоустойчивости и непрерывной работы системы. Как итог, «Эльбрус-1» приобрел многопроцессорность и средства распараллеливания задач. Работа над «Эльбрус-1» шла в течение 6 лет, с 1973 по 1979, а в 1980 году проект был сдан государственной комиссии. Итоговый вариант обладал производительностью в 15 миллионов операций в секунду, ОЗУ в 64 МБ и поддерживал одновременную работу до 10 процессоров.
Идущее семимильными шагами развитие компьютеростроения привело к появлению в 1985 году ЭВМ «Эльбрус-2». Этот суперкомпьютер был на порядок мощнее — 125 миллионов операций в секунду. Всего было выпущено до 200 этих машин, некоторые из которых используются и по сей день, например в системах противоракетной обороны.
Помимо суперкомпьютеров, также была разработана ЭВМ общего назначения — «Эльбрус 1-КБ». К Бшка создавалась для замены устаревшего « БЭСМ-6
«. В ней была реализована программная совместимость с «БЭСМ-6». Производительность новой ЭВМ составляла 2.5-3 миллиона операций в секунду.
После выпуска «Эльбрус-2» началась работа над последней ЭВМ семейства — «Эльбрус-3». Под руководством Бориса Бабаяна к 1991 году работа над новой ЭВМ была закончена. Машина обладала производительностью до 1 миллиарда операций в секунду вкупе с 16 процессорами, но вышла чересчур громоздкой. Из-за своих недостатков, а также исторического и экономического контекста того периода, «Эльбрус-3» в серийное производство не попал, но заложенные в него идеи повлияли на современное поколение «Эльбрусов».
МЦСТ — эпоха современной России
После распада СССР на основе коллектива, работавшего над «Эльбрус-3», было основано ТОО «Московский центр SPARK технологий» или просто МЦСТ. Поработав некоторое время с американской компанией Sun Microsystems, ныне поглощенной Oracle, и набравшись опыта и знаний, МЦСТ решает создать процессор, основанный на идеях «Эльбрус-3». 25 февраля 1999 года Борис Бабаян (тот самый, работавший над «Эльбрус-3») на конференции Microprocessor Forum объявил о том, что его компания (МЦСТ) разработала микропроцессор «Эльбрус-2000», который по всем параметрам опережает хваленый Itanium.
Здесь стоит сделать отступление и подробнее описать Itanium. В 1989 году небезызвестная компания Intel объединила свои силы с небезызвестной компанией HP для создания процессора нового поколения — Itanium. По задумке, Itanium должен был реализовывать все самые крутые наработки того времени и стать «королём» среди процессоров. Ожидалось, что этот процессор будет доминировать на многих рынках. Ожидаемая тактовая частота составляла 800 МГц на архитектуре IA-64
. Забегая вперед, стоит сказать, что процессор встретили достаточно прохладно на фоне успехов архитектуры x86.
Так или иначе, подобные заявления шокировали публику — каким образом малоизвестная компания разработала процессор круче, чем у Intel? Обещанный процессор обладал частотой в 1,2 ГГЦ, а производительность равнялась 8,9 миллиардам операций в секунду. Даже по физическим параметрам заявленный «Эльбрус» превосходил Itanium — площадь кристалла составляла 126мм2против 300мм2и тепловыделение 35 вт против 60 вт. И вишенкой на торте стала озвученная Бабаяном необходимая сумма для выпуска пробной партии — 60 миллионов долларов. Вкупе с тем, что никаких наработок показано не было, потенциальные инвесторы не решились вкладываться в «бумажный» флагман МЦСТ.
В 2001 году на свет выходит Itanium, который, как упоминалось выше, встречают не шибко радостно. Казалось, вот он момент, когда можно показать западным корпорациям кузькину мать. В 2002 году в интервью
журналу ExtremeTech Бабаян ещё сильнее завысил планку ожидания, заявив, что процессор будет иметь тактовую частоту в 3 ГГЦ, но и сумма, необходимая для начала производства, увеличилась до рекордных 100 миллионов долларов.
Но озвученные параметры не были достигнуты. В июле 2008 года процессор «Эльбрус 2000» или «Эльбрус-3М» показали публике. Он обладал частотой в 300 МГц и в сравнительных тестах обгонял 500 МГц Pentium 3, вышедший в 1999 году. Следующие процессоры семейства «Эльбрус» развивают и совершенствуют процессор «Эльбрус 2000». Ниже представлена информация обо всех процессорах семейства «Эльбрус»:
На данный момент основной потребитель процессоров «Эльбрус» — государство. Оно как субсидирует проекты МЦСТ, так и является основным заказчиком. М ЦСТ позиционирует семейство «Эльбрус» как мощное серверное железо, что соотносится с муниципальными потребностями на обработку большого количества информации. Со слов представителей МЦСТ они поставляют процессоры только для юридических лиц, поэтому оборот у компании относительно небольшой, что негативно влияет на стоимость одного процессора. Так, по некоторым данным
, стоимость «Эльбрус-4C» достигала 400 тысяч рублей.
Источник — mcst.ru
Архитектура «Эльбрус»
Прежде всего стоит сказать, что архитектура «Эльбрус» — оригинальная российская разработка. И хоть флагманы семейства с техпроцессом 28 нм в данный момент изготавливаются на тайваньских заводах, это все же лучше, чем ничего. По заявлениям разработчиков из МЦСТ, основное преимущество Эльбрусов заключается в энергоэффективности и программно-управляемом параллелизме операций. Наверняка, те, кто интересовались темой, слышали об оптимизирующем компиляторе и «широких командах». Чтобы понять, в чем суть, разберемся с существующими путями ускорения исполнения команд в микропроцессорах.
Суперскалярные и VLIW процессоры
Простейший скалярный процессор умеет выполнять одну машинную команду за такт. Команды выстроены в цепочку, порядок которой задан в машинном коде. При этом следующая команда не начинает выполняться, пока не закончится старая. Такой подход оправдан, когда следующая команда использует результаты предыдущей. Но это совершенно необязательно: команды могут быть независимыми. Поэтому разработчики микропроцессоров стали думать о том, как ускорить исполнение команд. В результате было выработано два основных подхода.
В первом используется разбиение команды на несколько последовательных стадий: прочитать команду из памяти, декодировать её, прочитать параметры этой команды, отправить на исполнительное устройство, результат команды записать в регистр назначения. При разбитии команды на несколько разных стадий можно запускать следующую команду до того, как закончилась предыдущая. Такой подход называется конвейеризация
, по аналогии с промышленным производством.
Второй путь подразумевает обнаружение в последовательности команд тех, что не пересекаются по аргументам и результатам (по используемым и определяемым ресурсам). Такую группу можно запускать на исполнение одновременно, отсюда и название подхода — параллельная группировка команд
.
Если немного подумать и сопоставить описанные подходы, то можно обнаружить, что они не противоречат друг другу. Архитектуры микропроцессоров, объединяющие эти принципы, называются in-order superscalar
. В 60-е годы был реализован следующий шаг — изменение последовательности команд относительно друг друга прямо в процессе исполнения. Такой подход называется out-of-order superscalar
(OOOSS). Большинство современных представителей архитектур типа RISC
и CISC
(x86, PowerPC, SPARC, MIPS, ARM) являются OOOSS. Ниже показана эволюция подходов к параллельному исполнению множества инструкций.
Переход от скалярных процессоров к суперскалярным с возможностью перестановки инструкций
В 80-е годы начала развиваться альтернативная архитектура процессоров. Их главной отличительной особенностью стало переупорядочивание команд не во время исполнения, а во время компиляции программы. Так же ключевой характеристикой являлось использование так называемых широких команд, которые позволяли выразить параллельность множества операций в ассемблере (это и есть программно-управляемый параллелизм операций, о котором говорилось в начале раздела). Такая архитектура называется VLIW
(very long instruction word) — «очень длинная машинная команда». Именно к такому типу и относится «Эльбрус».
О «широкой команде»
В традиционных RISC и CISC ответственность за анализ зависимостей, планирование, распределение регистров лежит на аппаратной части. В Эльбрусах же эту работу выполняет компилятор. Соответственно процессору на вход поступают «широкие команды», в каждой из которых закодированы операции для всех исполнительных устройств процессора, которые должны быть запущены на данном такте. Это существенно упрощает аппаратуру, так как процессору не нужно анализировать зависимости между операндами или переставлять операции между широкими командами: все это сделает компилятор, планируя операции на основе ресурсов широкой команды. Посмотрим на структуру широкой команды.
Под широкой командой понимается набор элементарных операций Эльбрус, которые могут быть запущены на исполнение в одном такте. С точки зрения исполнительных устройств в широкой команде доступны:
- 6 арифметико-логических устройств (АЛУ), исполняющих следующие операции:
- 1 устройство для операции передачи управления (CT);
- 3 устройства для операций над предикатами (PL);
- 6 квалифицирующих предикатов (QP);
- 4 устройства для команд асинхронного чтения данных по регулярным адресам в цикле (APB);
- 4 литерала размером 32 бита для хранения константных значений (LIT);
Широкая команда «Эльбрус»
Средняя степень наполнения широкой команды полезными операциями в значительной степени отражает производительность процессора. Можно сказать, что задачей повышения производительности кода на архитектурах VLIW является статическое (во время компиляции) обнаружение параллелизма на уровне операций, планирование операций с учетом найденного параллелизма, обеспечение хорошего наполнения широкой команды полезными операциями и проведение различных оптимизаций.
Особенности архитектуры
Регистровый файл
. Для параллельного выполнения операций требуется значительное число оперативных регистров. Так называемый регистровый файл содержит 256 регистров для целочисленных и вещественных данных, 32 из них предназначены для глобальных данных, остальные 224 — для стека процедур
Также в системе присутствует 32 двухразрядных регистров-предикатов, составляющих предикатный файл
. Над предикатными регистрами выполняет операции предикатное устройство, причем длительность операции составляет половину такта. Поэтому в одном такте можно планировать логические операции, где вторая группа использует результаты первой.
Для ускорения программы можно выполнять операции раньше, чем становится известно направление условного перехода, или считывать данные из памяти раньше предшествующей записи. Но такие способы не всегда корректны, так как возможно недетерминированное поведение при исполнении. Например, в случае выполнения раньше условного перехода, операция, которая не должна выполняться, может вызвать прерывание. А при выполнении чтения раньше предшествующей записи из памяти может быть считано неправильное значение. Для таких ситуаций в архитектуру введены режимы спекулятивности по управлению и спекулятивности по данным
.
Предварительная передача управления
. Предварительная подкачка кода в направлении ветвления, а также его первичная обработка на дополнительном конвейере (на фоне выполнения основной ветви) скрывают задержку по доступу к коду программы при передачах управления. Тем самым возможна передача управления без остановки конвейера выполнения, когда уже известно условие ветвления.
Пользуясь механизмом предикатного и спекулятивного исполнения операций
, можно планировать в одной широкой команде операции, относящиеся к различным ветвям управления, избавляться от дорогостоящих операций перехода и переносить арифметико-логические операции через операции перехода.
Также возможна программная конвейеризация циклов
, позволяющая наиболее эффективно исполнять циклы с независимыми или слабо зависимыми итерациями. В программно-конвейеризированном цикле последовательные итерации выполняются с наложением — одна или несколько следующих итераций начинают выполняться раньше, чем заканчивается текущая. Шаг, с которым накладываются итерации, определяет общий темп их выполнения, и этот темп может быть существенно выше, чем при строго последовательном исполнении итераций. Такой способ организации выполнения цикла позволяет хорошо использовать ресурсы широкой команды и получать преимущество в производительности.
Асинхронный доступ
к массивам позволяет независимо от исполнения команд основного потока буферизовать данные из памяти. Запросы к данным должны формироваться в цикле, а адреса линейно зависеть от номера итерации. Асинхронный доступ реализован в виде независимого дополнительного цикла, в котором кодируются только операции подкачки данных из памяти в FIFO-буфера. Из буфера данные забираются операциями основного цикла. Длина буфера и асинхронность независимого цикла позволяют устранить блокировки по считыванию данных в основном потоке исполнения.
Сравнение VLIW и OOOSS. Преимущества и недостатки
Кратко опишем главные отличия VLIW и OOOSS
- Явно выраженный в коде параллелизм исполнения элементарных операций.
- Точное последовательно исполнение широких команд.
- Особая роль оптимизирующей компиляции.
- Дополнительные архитектурные решения для повышения параллелизма операций.
- Перестановка и параллельное исполнение операций обеспечивается аппаратно в пределах окна исполняемых в данный момент операций.
- Для переупорядочивания используются скрытые буфера, скрытый регистровый файл, неявная спекулятивность.
- Достаточно большое окно для поиска параллелизма в перестановки инструкций обеспечивается аппаратным предсказателем переходов.
Исполнение кода в OOOSS и VLIW. Красная команда зависит от желтой и требует ей завершения, при этом коричневая и зеленая операция не зависят от желтой, поэтому их можно выполнять раньше.
Преимущества и недостатки VLIW
Преимущества и недостатки OOOSS:
В чем проблема сразу перейти на техпроцесс, как у Apple, AMD или Intel?
Процессоры «Эльбрус» производятся на тех же фабриках в Тайване, что и Apple или AMD. Почему нельзя сразу реализовать такой же техпроцесс, как и у этих компаний? Основная проблема заключается в том, что соответствующей технологии у МЦСТ на данный момент нет. Причина первая: никакая передовая компания не продаст технологию изготовления процессоров на 5 нм или 7 нм. Также производители четко следят за тем, чтобы их технологию было невозможно украсть. Причина вторая: бюджет. Разработка процессора происходит под конкретную фабрику на её лицензированном софте. Причем чем меньше техпроцесс, тем больше стоимость лицензии. А с бюджетом у МЦСТ не то, чтобы проблемы, но в золоте тоже не купаются. И это только один из экономических аспектов разработки процессора. И третья причина: для того, чтобы создать хороший процессор, основанный на технологии 5 нм или 7 нм, необходимо пройти все этапы развития: 65 нм, 40 нм, 28 нм и так далее. Конечно, можно было бы сразу сделать процессор на технологии 7 нм, однако полученный продукт не будет отличаться хорошей производительностью и вряд ли сможет стать конкурентоспособным.
Cloud VPS
с быстрыми NVMе-дисками и посуточной оплатой у хостинга Маклауд.
Эльбрус 2000
— это микропроцессорная архитектура, разработка которой началась в России в 1998 году. Процессоры на основе архитектуры Эльбрус 2000 сейчас используются в высокопроизводительных безотказных серверах и компьютерах, например, в решениях для банков, государственных учреждений и научных центров.
Предисловие
В этой статье (или заметке?) я попробую обьяснить простым
и понятным
языком в чем «соль» этой архитектуры. Сразу оговорюсь, базовое понимание
математики, информатики и принципов работы компьютера или телефона с которого читается статья — обязательна.
Статья разбита на части, пишу в свободное от работы и личных забот время. Эта творчество, скажем, пробник в первую очередь — себя. Если будет положительный фидбэк — то проба пера успешная:3
Историческая справка
Московский центральный научно‑исследовательский институт информатики и автоматизации (МЦСТ, первоначально Московский центр SPARC-технологий) был создан в 1992 году в результате реорганизации Московского научно‑производственного объединения «Электроника». Основной целью создания института было развитие отечественной вычислительной техники и программного обеспечения.
В свое время СССР добился достаточно серьезных достижений в создании компьютерной техники. Примером этому может служить серия советских суперкомпьютеров «Эльбрус», которые были созданы в Институте точной механики и вычислительной техники (ИТМиВТ) в 1970-1990-х годах прошлого века, это же название носит серия микропроцессоров и систем, созданных на их основе и выпускаемых сегодня ЗАО МЦСТ (Московский центр SPARC-технологий).
При этом история «Эльбруса» достаточно обширна. Работы над первым компьютером с таким названием велись с 1973 по 1978 год в ИТМиВТ им. Лебедева, руководил этими работами Б. С. Бурцев, разработка велась при участии Бориса Бабаяна, который являлся одним из замов главного конструктора. В то время основным заказчиком данной продукции, конечно же, выступали военные.
Первый компьютер «Эльбрус» обладал модульной архитектурой и мог включать в себя от 1 до 10 процессоров на базе схем средней интеграции. Быстродействие данной машины достигало 15 миллионов операций в секунду. Объем оперативной памяти, которая была общей для всех 10 процессоров, составлял до 2 в 20 степени машинных слов или, если применять принятые сейчас обозначения, 64 Мб. Однако самым интересным в «Эльбрусе-1» была именно его архитектура. Созданный в СССР суперкомпьютер стал первой в мире коммерческой ЭВМ, которая применяла суперскалярную архитектуру. Ее массовое применение за рубежом началось только в 90-х годах прошлого века с появлением на рынке доступных процессоров Intel Pentium.
Позднее выяснилось, что подобные разработки существовали еще до «Эльбруса», ими занималась компания IBM, но работы по данным проектам не были завершены и так и не привели к созданию конечного коммерческого продукта. По словам В. С. Бурцева, являвшегося главным конструктором «Эльбруса», советские инженеры старались применять самый передовой опыт как отечественных, так и зарубежных разработчиков. На архитектуру компьютеров «Эльбрус» повлияли не только компьютеры компании Burroughs, но и разработки такой известной фирмы, как Hewlett—Packard, а также опыт разработчиков БЭСМ-6.
После завершения работ над ЭВМ «Эльбрус-2» в ИТМиВТ взялись за разработку ЭВМ на базе принципиально новой процессорной архитектуры. Проект, который был назван достаточно просто – «Эльбрус-3», также значительно опередил аналогичные разработки на Западе. В «Эльбрусе-3» впервые был реализован подход, который Борис Бабаян называет «постсуперскалярным». Именно такой архитектурой в будущем обладали процессоры Intel Itanium, а также чипы компании Transmeta. Стоит отметить, что в СССР работы над данной технологией были начаты в 1986 году, а Intel, Transmeta и НР присупили к реализации работ в этом направлении лишь в середине 1990-х годов.
К сожалению, «Эльбрус-3» так никогда и не был запущен в серийное производство. Его единственный работающий экземпляр был построен в 1994 году, но в это время он был никому не нужен. Логическим продолжением работ над данным компьютером стало появление процессора «Эльбрус-2000», известного также как Е2К. У российской компании имелись большие планы по серийному производству данного процессора, который должен был пойти в серию одновременно или даже еще раньше, чем Itanium. Но из-за отсутствия необходимого объема инвестиций, все данные планы не были реализованы и так и остались на бумаге.
Архитектура Эльбрус 2000 была создана в России в начале 2000-х годов. Проект разработки новой архитектуры был запущен в 1999 году в рамках программы «Эльбрус» Министерства промышленности, науки и технологий Российской Федерации.
Основной целью программы было создание отечественного высокопроизводительного процессора, который мог бы конкурировать с зарубежными аналогами. В рамках программы были разработаны несколько поколений процессоров, начиная с Эльбрус-1 и заканчивая Эльбрус-4.
Однако основным достижением программы стала архитектура Эльбрус 2000, которая была представлена в 2002 году, в основе которой лежит подход VLIW. Эта архитектура была разработана с учетом современных требований к производительности и энергопотреблению, а также с учетом возможности выполнения параллельных вычислений.
Архитектура Эльбрус 2000 была успешно протестирована на различных задачах, включая математические расчеты, обработку изображений и видео, а также на задачах, связанных с обработкой больших объемов данных.
Сегодня архитектура Эльбрус 2000 продолжает развиваться и улучшаться. На ее основе создаются новые процессоры, которые успешно используются в различных областях, включая научные и промышленные вычисления, обработку данных и телекоммуникации. А МЦСТ является одним из ведущих отечественных разработчиков компьютеров и программного обеспечения. Институт занимается разработкой вычислительных систем для различных областей применения, включая научные исследования, проектирование, финансы, государственное управление и т. д. Компьютеры МЦСТ используются во многих отечественных организациях и предприятиях, а также экспортируются за рубеж.
Основные особенности
Начнем с основных особенностей архитектуры Эльбрус 2000:
Многопоточность — каждое ядро процессора может обрабатывать несколько потоков одновременно, что позволяет значительно увеличить производительность системы.
Симметричная мультипроцессорность — архитектура поддерживает одновременную работу нескольких процессоров, что также способствует арифметическому увеличению производительности.
Использование эффективных алгоритмов обработки данных, таких как алгоритмы сжатия данных и алгоритмы сортировки, параллельных вычислений, что позволяет ускорить выполнение задач. Например, определение ацикличных участков с дальнейшим разделением на суб‑процессинг, или же использование эффективных алгоритмов предварительного чтения данных из памяти, что снижает задержку при исполнии кода.
Наличие защиты от ошибок и сбоев, что обеспечивает высокую надежность работы системы. А так же особый режим выполнения и матрицы доступа к памяти, который аппаратно исключает вмешательство в соседние страницы памяти ПО. ( Вспомним со слезами о Meltdown и Spectra на x86-архитектуре и потере в среднем 15% производительности)
Архитектура Эльбрус 2000 поддерживает ВСЕ операционные системы Linux и Windows, так как спокойно кушает 64-битные инструкции, а так же спокойно может переваривать ассемблер (двоичные инструкции процессора) Intel или AMD64 платформ. Lintel — более производительное решение, даже чем от Купертиновских конкурентов (Apple со своей Rosetta любого поколения.)
Архитектура Эльбрус 2000 имеет ряд преимуществ перед другими архитектурами, такими как высокая производительность и надежность, но также имеет и недостатки, такие как ограниченная поддержка со стороны производителей программного обеспечения и высокая стоимость производства, а также (на момент написания) отсутствие локализации производства на территории РФ.
Давайте начнем разбираться с описанными преимуществами и почему они таковыми являются.
Мультипоточность
Мультипоточность в процессорах Эльбрус — это возможность одновременного выполнения нескольких потоков инструкций на одном процессоре. Каждый поток может выполняться независимо от других потоков, что позволяет увеличить производительность и эффективность работы процессора.
Процессоры Эльбрус поддерживают два типа мультипоточности: аппаратную
и программную
.
Аппаратная мультипоточность
Аппаратная мультипоточность в процессорах Эльбрус реализуется с помощью технологии Hyper‑Threading. Она позволяет процессору выполнять два потока инструкций на каждом ядре, используя различные ресурсы процессора, такие как регистры и функциональные блоки.
Но тут я остановлюсь подробнее, так как с каждым годом всё больше и больше транзисторов задействуется в процессорах, но производителям постоянно приходится идти на ухищрения для роста производительности, т.к. больше параллелизма им со старым подходом не выжать. Поэтому в 2002-м году свет увидели процессоры Intel Pentium 4, которые первыми на потребительском рынке получили поддержку виртуальной многоядерности или многопоточности, которую назвали Intel Hyper‑Threading
. Суть этой технологии в том, что ядро физически у вас одно, но система его видит как 2 разных ядра, и ваши программы работают с одним ядром так, словно их 2.
И, если ранее программы не могли задействовать все вычислительные возможности каждого из ядер процессора, то теперь они на каждом ядре старались задействовать больше ALU (до 2 раз больше).
2 виртуальных ядра делят между собой один и тот же набор арифметико‑логических устройств (АЛУ), один и тот же кэш, но разные регистры, тогда как в случае с двумя обычными ядрами у вас разделены для каждого из ядер и АЛУ, и кэш, и все регистры. За счёт того, что на АЛУ приходится больше параллельных команд (8 вместо 4 в случае с современным суперскалярным
подходом CISC процессоров), у вас удаётся загрузить одно ядро процессора в большей мере, и таким образом вы добиваетесь роста производительности в расчёте на каждое из ядер. Но по итогу, да, логические ядро, как правило, медленнее, чем физическое.
Программная мультипоточность
Программная мультипоточность в процессорах Эльбрус реализуется с помощью технологии OpenMP. Она позволяет разделять задачи на несколько потоков, которые выполняются параллельно на разных ядрах процессора. Это позволяет ускорить выполнение задач, которые могут быть разделены на независимые подзадачи.
Мультипоточность в процессорах Эльбрус позволяет увеличить производительность и эффективность работы процессора. Она позволяет выполнять несколько задач одновременно, что уменьшает время выполнения задач и увеличивает общую производительность системы.
Кроме того, мультипоточность позволяет использовать ресурсы процессора более эффективно, что уменьшает нагрузку на систему и повышает ее стабильность и надежность.
В целом, мультипоточность является важной технологией для повышения производительности и эффективности работы процессоров Эльбрус. Она позволяет использовать ресурсы процессора более эффективно и выполнять несколько задач одновременно, что делает систему более быстрой и стабильной.
Симметричная мультипроцессорность
Симметричная мультипроцессорность (SMP) — это архитектура компьютерной системы, в которой два или более процессоров работают параллельно и независимо друг от друга, обмениваясь данными через общую память. В этой архитектуре каждый процессор имеет доступ к общей памяти и периферийным устройствам, что позволяет им выполнять задачи более эффективно, чем в случае использования одного процессора.
Симметричная мультипроцессорность позволяет распределять задачи между процессорами таким образом, чтобы каждый из них мог выполнять свою работу независимо друг от друга. Это позволяет увеличить производительность системы и сократить время выполнения задач, а также обеспечивает масштабируемость.
Архитектура Эльбрус 2000 представляет собой симметричную мультипроцессорную систему, которая имеет ряд преимуществ перед другими архитектурами.
Высокая производительность.
Симметричная мультипроцессорность Эльбрус 2000 позволяет использовать несколько процессоров одновременно, что повышает производительность системы. Каждый процессор может выполнять свои задачи независимо друг от друга, что увеличивает скорость обработки данных и снижает время ожидания.Гибкость системы
Архитектура Эльбрус 2000 позволяет легко добавлять или удалять процессоры в системе в зависимости от потребностей пользователя. Это позволяет гибко настраивать систему под конкретные задачи и обеспечивает масштабируемость.Надежность.
Симметричная мультипроцессорность Эльбрус 2000 обеспечивает высокую надежность системы. Если один из процессоров выходит из строя, остальные процессоры могут продолжать работу без проблем. Это позволяет избежать сбоев в работе системы и обеспечивает бесперебойную работу.Энергоэффективность.
Архитектура Эльбрус 2000 потребляет меньше энергии, чем другие архитектуры. Это достигается за счет использования более эффективных алгоритмов обработки данных и оптимизации работы процессоров.Высокая безопасность.
Симметричная мультипроцессорность Эльбрус 2000 обеспечивает высокую безопасность системы. Каждый процессор имеет свой собственный набор инструкций и операционную систему, что делает невозможным взлом системы через один процессор.
Таким образом, симметричная мультипроцессорность архитектуры Эльбрус 2000 обеспечивает высокую производительность, гибкость, надежность, энергоэффективность и безопасность системы.
Алгоритмы обработки данных
Prefetching и аппаратная асинхронная подгрузка данных (APB)
Архитектура Эльбрус 2000 имеет ряд особенностей, которые позволяют эффективно обрабатывать данные. Одной из главных особенностей является наличие нескольких ядер процессора, которые могут работать параллельно. Это позволяет распараллеливать задачи и ускорять обработку данных, но что бы убрать ожидание данных для дальнейшей обработки — реализовано использование эффективных алгоритмов предварительного чтения данных из памяти, что в свою очередь снижает задержку при исполнии кода.
Предварительное чтение данных из памяти (Prefetching) является одним из методов оптимизации производительности в архитектуре Эльбрус 2000. Он позволяет загрузить данные из памяти в кэш процессора заранее, до того, как они будут фактически использоваться в вычислениях. Это может существенно ускорить выполнение программы, так как время доступа к кэшу намного меньше, чем к памяти.
В Эльбрус 2000 предусмотрено несколько способов предварительного чтения данных.
Один из них
— это использование инструкций PREFETCH. Эти инструкции позволяют загрузить данные из памяти в кэш процессора заранее, до того, как они будут фактически использоваться. Инструкции PREFETCH могут быть использованы как для чтения, так и для записи данных.
Еще один способ
предварительного чтения данных — это использование аппаратной поддержки предварительного чтения в кэше процессора, отдельный параллельно работающий модуль для подкачки данных, APB (Asynchronous Prefetch Buffer). В Эльбрус 2000 кэш оборудован специальным механизмом, который автоматически загружает данные из памяти в кэш заранее, если он обнаруживает, что эти данные скоро будут использоваться. Это происходит благодаря анализу обращений к данным и прогнозированию будущих обращений.
Предварительное чтение данных из памяти особенно полезно в случае работы с большими объемами данных или при обработке данных в циклах. Оно позволяет уменьшить время доступа к памяти и ускорить выполнение программы. Однако, необходимо учитывать, что неправильное использование предварительного чтения может привести к ухудшению производительности, так как может привести к загрузке ненужных данных в кэш. Поэтому, необходимо выбирать правильные параметры для инструкций PREFETCH и настраивать аппаратную поддержку предварительного чтения в соответствии с характеристиками программы и алгоритма.
То есть Эльбрус чётко знает, с какими данными ему предстоит работать. Это ещё до того, как он с этими данными начал работу. Работает ли он с данными или же с указателем на данные, заранее известно из тэга, которым помечаются данные в регистрах. И эта информация также позволяет добиться более высокой защищённости. Есть ещё интересный момент с работой памяти. При работе с любым процессором у вас при выполнении цикла может процессор стопориться на большое количество тактов из‑за ожидания подгрузки данных для обработки.
Single Instruction Multiple Data
Архитектура Эльбрус 2000 использует специальные инструкции SIMD
(Single Instruction Multiple Data), которые позволяют выполнять одну операцию над несколькими данными одновременно. Это особенно полезно в задачах, связанных с обработкой графики, звука и видео. SIMD‑инструкции в Эльбрус 2000 реализуются через специальные регистры, называемые векторными регистрами. Каждый векторный регистр может содержать несколько элементов данных одного типа, например, 16 целых чисел или 8 чисел с плавающей точкой. Для выполнения операций над векторными регистрами в Эльбрус 2000 используются специальные команды, которые могут выполнять операции над всеми элементами векторного регистра одновременно. Например, команда ассемблера «ADDV» складывает все элементы двух векторных регистров и сохраняет результат в третий векторный регистр. (Я прям чувствую как начали закипать мозги:D)
SIMD‑инструкции в Эльбрус 2000 могут быть использованы в различных областях, например:
Обработка звука: SIMD‑инструкции могут быть использованы для обработки аудиосигналов, например, для уменьшения шума или изменения тональности.
Математические вычисления: SIMD‑инструкции позволяют быстро выполнять математические операции над большим количеством данных, например, для расчета физических моделей или статистических анализов.
Использование SIMD‑инструкций позволяет значительно ускорить выполнение задач, связанных с обработкой больших объемов данных. В Эльбрус 2000 SIMD‑инструкции реализованы эффективно и позволяют достичь высокой производительности при работе с векторными данными.
Также в архитектуре Эльбрус 2000 используется кэш‑память, которая позволяет ускорить доступ к данным. Кэш‑память хранит наиболее часто используемые данные, что позволяет уменьшить время доступа к ним. Смешно? Тогда вспомните, что огромное число процессоров до сих пор не умеют в L3-cache.
В целом, архитектура Эльбрус 2000 имеет ряд особенностей, которые позволяют эффективно обрабатывать данные. Применение различных алгоритмов и использование SIMD инструкций и кэш‑памяти позволяет ускорить обработку данных и повысить производительность системы.
Текстовый процессинг
Архитектура Эльбрус 2000 предоставляет несколько алгоритмов для обработки текстовых данных, которые могут быть использованы в различных приложениях.
Один из таких алгоритмов — это алгоритм сжатия данных LZO (Lempel‑Ziv‑Oberhumer). Он используется для сжатия текстовых данных и может быть применен для уменьшения размера файлов или передачи данных по сети. Алгоритм LZO работает на основе словарного кодирования, когда повторяющиеся последовательности символов заменяются одним кодом. В Эльбрус 2000 реализована оптимизированная версия алгоритма LZO, которая позволяет достигать высокой скорости сжатия и декомпрессии.
Еще один алгоритм для обработки текстовых данных — это алгоритм поиска подстроки в строке. Он может использоваться для поиска слов или фраз в тексте, а также для обработки запросов в поисковых системах. В Эльбрус 2000 реализована оптимизированная версия алгоритма Бойера‑Мура, который работает на основе сравнения символов справа налево.
Также в Эльбрус 2000 реализованы алгоритмы сортировки данных, которые могут быть использованы для обработки текстовых данных. Например, алгоритм быстрой сортировки (QuickSort) может быть использован для сортировки больших массивов строк. В Эльбрус 2000 реализована оптимизированная версия алгоритма QuickSort, которая работает на основе разделения массива на подмассивы и их параллельной сортировки.
В целом, архитектура Эльбрус 2000 предоставляет широкий набор алгоритмов для обработки текстовых данных, которые могут быть использованы в различных приложениях. Они отличаются высокой производительностью и оптимизацией под архитектуру процессора Эльбрус 2000.