Многоядерные микропроцессоры

Понятие «мультиядро» означает просто «более одного ядра», но когда количество ядер становится больше количества пальцев на руках, мы используем другой термин — многоядерные микропроцессоры (Manycore chips), которые являются мультиядрами, содержащими десятки, сотни или даже тысячи ядер.
Хотя порога, при переходе которого мультиядерные процессоры становятся многоядерными, не существует, простым отличительным признаком возможного обладания многоядерным процессором может послужить то, что вас больше уже не беспокоит потеря одного или двух ядер.

Дополнительные карты таких ускорителей, как разработанные компанией Intel Xeon Phi, имеют свыше 60 x86-ядер. Другие производители уже преодолели барьер в сто ядер различного типа. Возможно, они уже на пути к достижению планки в 1000 ядер общего назначения. Трудно даже представить, что можно сделать с тысячей ядер, еще труднее понять, как составлять для них программы.

Еще одна проблема, связанная с реально большим количеством ядер, заключается в том, что оборудование, необходимое для сохранения согласованности их кэшей, становится очень сложным и весьма дорогостоящим. Многие инженеры беспокоятся о том, что согласованность кэшей не сможет масштабироваться на многие сотни ядер. Некоторые даже становятся сторонниками того, что все мы вообще должны отказаться от этой затеи. Они опасаются, что стоимость протоколирования согласованности в оборудовании будет столь высока, что все эти великолепные новые ядра не помогут существенно поднять производительность, потому что процессор будет слишком занят поддержанием кэшей в согласованном состоянии. Хуже того, в связи с этим нужно будет потратить слишком много памяти на быстродействующий каталог. Эта проблема известна под именем барьера согласованности (coherency wall).

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

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

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

Наличие тысяч процессоров больше не в диковинку. Сегодня наиболее распространенными многоядерными микропроцессорами являются графические процессоры (GPU), которые можно найти практически в любой компьютерной системе, не являющейся встроенной и имеющей монитор. Графический процессор имеет выделенную память и буквально тысячи крошечных ядер. По сравнению с процессорами общего назначения транзисторный бюджет графических процессоров тратится в основном на схемы, производящие вычисления, и в меньшей степени на кэши и логику управления. Они хороши для множества небольших параллельных вычислений, подобных построению многоугольников в графических приложениях. Для обычных задач они мало подходят. Их также трудно программировать. Хотя графические процессоры могут пригодиться для операционных систем (например, при шифровании или обработке сетевого трафика), вряд ли на них будет работать основная часть самой операционной системы.

Графическими процессорами (GPU) все чаще обрабатываются и другие вычислительные задачи, особенно требующие больших вычислительных мощностей, что нередко встречается в научных вычислениях. Термин, используемый для обработки задач общего назначения (general purpose, GP) на графических процессорах (GPU), как можно было догадаться, обозначается аббревиатурой GPGPU. К сожалению, эффективное программирование графических процессоров является весьма сложной задачей и требует применения специальных языков программирования, таких как OpenGL или CUDA, право собственности на которые принадлежит компании NVIDIA.

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

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Многоядерные микропроцессоры:

  1. Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей, 2007
  2. В. И. Юров. Assembler. Учебник для вузов. 2-е изд, 2003
  3. Уран и Плутон,
  4. Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ, 2015
  5. 11.3. Основные направления правового регулирования информационных отношений в Интернет
  6. Зонирование городской территории
  7. 2.6. Педагогические средства в воспитании учащихся
  8. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  9. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  10. ПЕРЕДМОВА
  11. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  12. Розділ І. Загальні положення цивільного права
  13. Тема 1. Поняття цивільного права. Предмет та метод, система цивільного права. Функції та принципи цивільного права