- PVSM.RU - https://www.pvsm.ru -

Расщепляем Quark. Микроархитектура нового процессора Intel

Расщепляем Quark. Микроархитектура нового процессора Intel

Кварк — это фундаментальная, то есть бесструктурная элементарная частица, введенная в теорию в 1964 году, которую до настоящего времени не удалось описать как составную. Intel Quark — это процессор для Интернета Вещей, выпускаемый Intel с осени 2013, но до сих пор не имеющий публичного описания своей внутренней структуры и воспринимающийся вне Intel как «черный ящик». — Как вы яхту назовете, так она и поплывет? Но я в это не верю. Скорее уж, как вы яхту назовете, так она вас назовет (если в ней стоит бортовой компьютер). В общем, в этом посте я исправлю ситуацию и расскажу, как устроен Quark.

История современная — Quark.

Итак, в сентябре 2013 Intel анонсирует новый процессор Intel Quark, предназначенный для Интернета Вещей, а также для разнообразной носимой техники и бытовых устройств. Quark — это действительно микропроцессор (от греческого «микро» = маленький), с размером примерно в 1/5 часть Атома (то есть, Intel Atom, конечно), и в 10 раз меньшим энергопотреблением. На тот момент это — единственные известные технические детали про Quark — их немного, как это обычно и бывает при анонсах такого уровня. А вот интерес к этому процессору совсем немаленький. Вот, к примеру, независимый пост с анонсом [1] и соответствующей реакцией читателей на habrahabr.ru.

Через месяц после объявления в продаже появляется первый представитель семейства Quark — Quark SoC X1000, являющийся основой первого Arduino-совместимого микрокомпьютера на платформе Intel — Galileo [2]. Тогда же информации про Quark становится больше. Quark X1000 SoC — это одноядерный 32 битный процессор с частотой до 400 MHz, выполненный по 32 нм технологии и имеющий архитектуру, совместимую с набором инструкций Pentium (Pentium Instruction Set Architecture). Полные характеристики [3] Quark X1000 SoC на Intel ARK добавляют к этому описанию несколько технических деталей: 16 Kb кэш, отсутствие Hyperthreading, максимальная скорость обмена данными с памятью 1.6 GB/s, ...., но главный вопрос внутреннего устройства Quark CPU остается открытым.

Расщепляем Quark. Микроархитектура нового процессора Intel И, наконец, в январе 2014 Intel представляет компьютер под кодовым названием Edison — устройство размером с SD-карту, работающее под управлением Linux OS, со встроенным WiFi и Bluetooth. Нетрудно догадаться, что Edison также базируется на процессоре семейства Quark, но НЕ на Quark SoC X1000, а на другом, двухядерном, выпуск которого по технологии 22 нм начнется летом 2014. Журналисты, побывавшие на презентации Edison, упоминают прозвучавшие там слова «компьютер класса Pentium», но что же именно имеется в виду? — классы, сами понимаете, бывают разные.

История древних времен — Pentium

Pentium появился в 1993 году и был назван так потому, что представлял собой пятое поколение IA32. Это была первая суперскалярная, то есть, реализующая внутренний параллелизм на уровне инструкций, микроархитектура.
Как видно на схеме ниже, Pentim включает 2 конвеера (Pipeline) для обработки целочисленных данных — «U» и «V» и, соответственно, два ALU (арифметико-логическое исполнительное устройство для целых чисел), отдельные кэши для данных (Data Cache) и инструкций (Code Cache) и блок предсказания ветвлений (Branch Target Buffer):
Расщепляем Quark. Микроархитектура нового процессора Intel
Векторных инструкций в этой версии еще нет, они появятся позже, в Pentim MMX.

Но, по сравнению с 486, в Pentium было добавлено несколько новых инструкций, самые известные из которых — CPUID (CPU IDentification), позволяющая получить информацию о фичах данного CPU, и RDTSC (ReaD Time Stamp Counter), возвращающая количество тиков с момента включения процессора и использующаяся для измерения производительности. Согласитесь, что инструкции настолько полезные, что кажется, что они существовали всегда. Кстати, CPUID после дебюта в Pentium была добавлена в специальную модель i486 (SL-Enhanced 486), вышедшую сразу после Pentium. Правда, интересный поворот?

Quark. Что внутри?

Теперь вернемся в настоящее — к Intel Quark. Его связь с Pentium подчеркивает входящий в комплект поставки Galileo (возможно, не во всех магазинах) интеловский астронавт, похожий на своего коллегу, работавшего в рекламе Penium в конце прошлого века. Причем, именно коллегу — это явно не тот же персонаж, отличия видны не только в современном логотипе Intel на его скафандре, но и во всей фигуре.
Расщепляем Quark. Микроархитектура нового процессора Intel
Также и Quark. Это — ни в коем случае не разогнаный и уменьшеный Pentium, произведенный по новейшей технологии.
А что же это? Для полного ответа на этот вопрос надо изучить два публично доступных документа, которые находятся простым поиском по ключевым словам "intel quark reference manual":
Intel® Quark SoC X1000 Core Developer’s Manual [4], 311 страниц сведений по теме
Intel® Quark SoC X1000 Core Hardware Reference Manual [5], 143 страницы полезной информации.

Но нас из всего этого богатства интересует главное — устройство ядра Quark. Вот оно, на схеме из второго мануала:

Расщепляем Quark. Микроархитектура нового процессора Intel

Как видите, это заметно отличается от вышеприведенной диаграммы устройства Pentium, и не только потому, что рисунок не цветной.
Главные отличия:

  • единственное ALU, соответственно, отсутствие двух конвейеров «U» и «V», то есть НЕ суперскалярность Quark.
  • полное отсутствие механизма предсказания ветвлений
  • общий кэш первого уровня для данных и кода.

В помощь кэшу блок интерфейса шины (bus interface unit) имеет временный буфер, способный хранить до 4 32-битных записей, позволяя многим внутренним операциям продолжаться, не дожидаясь окончания записи на процессорной шине…

При этом, заметим, что конвеерная обработка данных в Quark присутствует. Pipeline состоит из пяти стадий — выборка, две стадии декодирования, исполнение и запись данных в регистры. Каждая стадия занимает один цикл процессора. Но еще раз повторю — это не суперскаляр, хотя в комментариях к отличному посту [6] про Quark моего коллеги vtsymbal [7] можно найти жаркий спор на эту тему.

А теперь давайте посмотрим еще на одну старую схему — устройство процессора Intel 80486:
Расщепляем Quark. Микроархитектура нового процессора Intel
Правда, похоже на Quark? Как говорится, найдите 10 отличий. Или, хотя бы, два.

Хотя, на самом деле, их минимум, на порядок больше, и искать их надо не на этой схеме. Quark — не i486! Как уже было сказано выше, Quark совместим с Pentium ISA, то есть, поддерживает все новые инструкции Pentium, и, более того, ряд новых инструкций, появившихся в процессорах менее пяти лет назад и связанных с обеспечением безопасности системы — архиважной штуки в современных условиях и поддержки современных ОС. Это Supervisor Mode Execution Protection (SMEP), а также PAE (Physical Address Extension), дающий 32 битным процессорам возможность использовать более 4 GB физической памяти и являющийся условием работы NX (No-Execute) функциональности, также поддерживаемой Quark.
Кроме этого, Quark поддерживает отладку JTAG и является синтезируемым (synthesizable) CPU, то есть, позволяет сторонним производителям добавлять к ядру Quark свои блоки.

Так почему же за основу Quark не взята более сложная и продвинутая микроархитектура Pentium? Самое разумное предположение — из соображений уменьшения энергопотребления и достаточной для предполагаемых применений производительности архитектуры более простого CPU.

Но даже при достаточной теоретической скорости работы, как показывает опыт, на практике нередко требуется оптимизация. Кстати, она может потребоваться и лично вам — Intel планирует в ближайшее время запустить конкурс разработчиков приложений под системы на базе Quark с призовым фондом более миллиона долларов! И понимание внутреннего устройства Quark может помочь в повышении производительности приложений — при компиляции под Quark стОит использовать набор опций вроде такого -march=pentium -mtune=i486, то есть, набор инструкций Pentium, а их выполнение — для i486.
Воистину, новое — это хорошо забытое старое. Или, как в данном случае, даже не забытое, а просто хорошее старое.

Автор: vikky13

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/zhelezo/55464

Ссылки в тексте:

[1] независимый пост с анонсом : http://habrahabr.ru/post/193382/

[2] Galileo: http://habrahabr.ru/company/intel/blog/202894/

[3] Полные характеристики : http://ark.intel.com/products/79084/Intel-Quark-SoC-X1000-16K-Cache-400-MHz

[4] Intel® Quark SoC X1000 Core Developer’s Manual: https://communities.intel.com/servlet/JiveServlet/previewBody/21826-102-2-25118/Intel%20Quark%20Core_DevMan_001.pdf

[5] Intel® Quark SoC X1000 Core Hardware Reference Manual: https://communities.intel.com/servlet/JiveServlet/previewBody/21825-102-2-25117/Intel%20Quark%20Core%20HWRefMan_001.pdf

[6] посту: http://habrahabr.ru/company/intel/blog/209940/

[7] vtsymbal: http://habrahabr.ru/users/vtsymbal/

[8] Источник: http://habrahabr.ru/post/213047/