Распараллеливание программ

Распараллеливание

Со временем стало понятно, что увеличивать производительность процессоров можно не только увеличивая их частоту. И кроме этого повышать частоту до бесконечности тоже нельзя из-за задержек в исполнении программного кода. Это вылилось в современную концепцию современных процессоров, где задачи распределяются по параллельным блокам. Для дальнейшего понимания следует понимать, что: поток — это поток кода или программная последовательность.

Существующие уровни параллельных блоков:

  • Конвейерность
  • Многопоточность
  • Сопроцессор
  • Многоядерный процессор
  • Поддержка нескольких процессоров
  • Облачные вычисления

Конвейерность

Конвейер — это последовательность обработка блоков, которые исполняют команду. Чем больше фаз или этапов имеет конвейер, тем больше инструкций можно обрабатывать параллельно.

Многопоточность

Многопоточность — это способность процессора обрабатывать несколько потоков и попеременно переключать их во время выполнения. Если один поток ожидает доступ к памяти, он может продолжить работу в другом потоке. Некоторые задачи не могут быть распараллелены на достаточно хорошем уровне. Для таких задач существуют процедуры сопоставления, в которых существенное место занимают «тайминги» выполнения потока или задачи.

В этом плане в системе тоже есть узкие места, например: доступ к интерфейсу и запоминающему устройству. Многопоточность требует от программиста несколько иного мышления, чем при обычном программировании.

SMT

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

Hyper-Threading (Intel)

Hyper-Threading — это разработка Intel и предшественник многоядерного процессора. Hyper-Threading представляет операционной системе второе ядро ​​процессора, чтобы тем самым лучше использовать функциональные блоки и сократить время ожидания памяти. Если первый поток процессора должен ждать данных из памяти, процессор может использовать второй поток для работы с программным кодом.

Сопроцессор

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

Многоядерный процессор

С начала 1990-х годов в суперкомпьютерах есть несколько процессоров с собственной памятью. Эти системы называются многопроцессорными системами. В персональных компьютерах несколько процессоров не распространены. Тут ниша зхвачена многоядерными процессорами.

Облачные вычисления

Сеть компьютерных систем для параллельного вычисления и обработки данных, это и называется облачными вычислениями.

Читайте также: