Pull to refresh
132.35
Rating

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

Intel corporate blog


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


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

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

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

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


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

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

Векторных инструкций в этой версии еще нет, они появятся позже, в 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 (возможно, не во всех магазинах) интеловский астронавт, похожий на своего коллегу, работавшего в рекламе Pentium в конце прошлого века. Причем, именно коллегу — это явно не тот же персонаж, отличия видны не только в современном логотипе Intel на его скафандре, но и во всей фигуре.

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

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



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

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

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

А теперь давайте посмотрим еще на одну старую схему — устройство процессора Intel 80486:

Правда, похоже на 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.
Воистину, новое — это хорошо забытое старое. Или, как в данном случае, даже не забытое, а просто хорошее старое.
Tags: quarkembeddedcpupentiumgalileoedisoni486
Hubs: Intel corporate blog
Total votes 54: ↑49 and ↓5 +44
Comments 39
Comments Comments 39

Information

Founded
Location
США
Website
www.intel.ru
Employees
5,001–10,000 employees
Registered
Representative
Victoria Zhislina

Habr blog