Параллельная и многоядерная архитектура
Параллельная и многоядерная архитектура относится к аппаратному обеспечению, которое выполняет множество операций одновременно — несколько ядер на одном чипе, векторные и SIMD-блоки, а также массово-параллельные графические процессоры — вместе со структурами памяти и коммуникации, которые позволяют параллельной работе выполняться корректно и эффективно.
Definition
Параллельная и многоядерная архитектура — это проектирование компьютерного аппаратного обеспечения, которое выполняет несколько вычислений одновременно посредством реплицированных ядер, широких параллельных блоков обработки данных или специализированных ускорителей, а также механизмов межсоединений и памяти, которые их координируют.
Scope
Эта область охватывает аппаратные организации для параллелизма: многопроцессорные системы на кристалле и многоядерные конструкции, системы с общей памятью и требуемые ими когерентность и согласованность, SIMD- и векторные процессоры для параллелизма на уровне данных, а также архитектуры графических процессоров. Она рассматривает, как создается параллельное аппаратное обеспечение и как масштабируется его производительность. Она исключает программную сторону параллельного и распределенного программирования и распределенные системы кластерного масштаба, которые рассматриваются в разделе «Распределенные и параллельные вычисления», а также одноядерный исполнительный механизм, рассматриваемый в разделе «Микроархитектура процессора».
Sub-topics
Core questions
- Как параллельное аппаратное обеспечение масштабирует производительность и что ограничивает это масштабирование?
- Как несколько ядер интегрируются на чипе и подключаются к общей памяти?
- Какие гарантии согласованности и когерентности памяти должно обеспечивать аппаратное обеспечение с общей памятью?
- Как SIMD, векторные и графические процессоры используют параллелизм на уровне данных?
- Как параллельные архитектуры сопоставляются с рабочими нагрузками для максимизации полезной пропускной способности на ватт?
Key concepts
- многопроцессорная система на кристалле
- параллелизм на уровне потоков
- параллелизм на уровне данных
- SIMD и векторная обработка
- GPU и многоядерные системы
- общая память и когерентность
- согласованность памяти
- сеть межсоединений
- закон Амдала и масштабируемость
- аппаратная синхронизация
Key theories
- Закон Амдала
- Ускорение от распараллеливания вычислений ограничено той частью, которая должна выполняться последовательно: даже при неограниченном количестве процессоров последовательная часть ограничивает общее ускорение, что определяет, как проектируются и оцениваются параллельные архитектуры.
- Таксономия параллелизма по Флинну
- Параллельное аппаратное обеспечение организовано по тому, как объединяются потоки инструкций и данных — например, одноинструкционный многопоточный (SIMD) для параллелизма данных и многоинструкционный многопоточный (MIMD) для многоядерных и многопроцессорных систем — классификация, которая определяет архитектурные решения.
Mechanisms
Многоядерные процессоры размещают несколько ядер на одном кристалле, совместно использующих один или несколько уровней кэша и интерфейс памяти, соединенных внутрикристальным межсоединением. Протоколы когерентности поддерживают согласованность их кэшей, а модель согласованности памяти определяет порядок операций с памятью, наблюдаемый между ядрами. Аппаратное обеспечение, параллельное по данным — векторные блоки, SIMD-линии и графические процессоры с множеством легковесных ядер — применяет одну операцию ко многим элементам данных, в то время как примитивы синхронизации координируют параллельные потоки.
Clinical relevance
После того как масштабирование тактовой частоты одноядерных процессоров застопорилось, параллельная и многоядерная архитектура стала основным путем к повышению производительности, поэтому практически все современные процессоры являются многоядерными. Графические процессоры и SIMD-блоки теперь обеспечивают графику, научные вычисления и матричные операции, лежащие в основе глубокого обучения, делая параллельное аппаратное обеспечение центральным элементом высокопроизводительных рабочих нагрузок и задач искусственного интеллекта.
History
Параллельные машины появились в виде векторных суперкомпьютеров, таких как Cray-1 в 1970-х годах, и исследовательских многопроцессорных систем 1980-х и 1990-х годов. Окончание масштабирования частоты примерно в середине 2000-х годов подтолкнуло индустрию к многоядерным чипам как к стандарту. Графические процессоры эволюционировали от графических конвейеров с фиксированными функциями до программируемых многоядерных ускорителей, а архитектуры, параллельные по данным, стали основополагающими для современного машинного обучения.
Debates
- Многоцелевые многоядерные процессоры против специализированных ускорителей
- В условиях снижения отдачи от однородных многоядерных систем ведутся споры о том, насколько следует отдавать предпочтение специализированным ускорителям (GPU, тензорным блокам) по сравнению с ядрами общего назначения, обменивая программируемость и гибкость на эффективность для конкретных рабочих нагрузок.
Key figures
- Gene Amdahl
- Michael J. Flynn
- John L. Hennessy
- David A. Patterson
- David E. Culler
Related topics
Seminal works
- hennessy2019
- amdahl1967
- patterson2020
Frequently asked questions
- Почему процессоры перешли на многоядерную архитектуру?
- Увеличение тактовой частоты одного ядра достигло пределов по мощности и тепловыделению в середине 2000-х годов. Добавление большего количества ядер увеличило общую пропускную способность в рамках того же бюджета мощности, поэтому многоядерность стала доминирующим способом поддержания роста производительности — хотя это перекладывает бремя ускорения на параллельное программное обеспечение.
- Чем графический процессор (GPU) отличается от многоядерного центрального процессора (CPU)?
- ЦП имеет несколько мощных ядер, оптимизированных для выполнения общих задач с низкой задержкой. ГП имеет множество более простых ядер, оптимизированных для высокопроизводительной параллельной обработки данных, выполняя одну и ту же операцию над множеством элементов данных, что подходит для графики и плотных численных вычислений, но не для всех рабочих нагрузок.