Сильно-связанные вычислительные системыили многопроцессорные вычислительные системы (МПВС) основаны на объединении процессоров на общем поле оперативной памяти. Это поле называется разделяемой памятью (Shared Memory). Управление обеспечивается одной общей операционной системой. При этом достигаются более быстрый обмен информацией между процессорами, чем между ЭВМ в многомашинных вычислительных системах (комплексах), и более высокая суммарная производительность системы. Иногда их называют «истинными» мультипроцессорами.
В таких системах, как правило, число параллельных процессов невелико и управляет ими централизованная операционная система. Процессы обмениваются информацией через общую оперативную память. При этом возникают задержки из-за межпроцессорных конфликтов. При создании больших мультипроцессорных ЭВМ (мэйнфреймов, суперЭВМ) предпринимаются огромные усилия по увеличению пропускной способности оперативной памяти. В результате аппаратные затраты возрастают чуть ли не в квадратичной зависимости, а производительность системы упорно «не желает» увеличиваться пропорционально числу процессоров. Так, сложнейшие средства снижения межпроцессорных конфликтов в оперативной памяти суперкомпьютеров серии CRAY X-MP/Y-MP позволяют получить коэффициент ускорения не более 3,5 для четырехпроцессорной конфигурации системы.[1]
По топологии межмодульных функциональных и управляющих связей и организации работы выделяются два типа многопроцессорных систем МКМД
- с общей шиной;
- с использованием многовходовой памяти (многошинные-многовходовые вычислительные системы).
Первым было изобретение процессоров, способных выполнять операции не над содержимым одного или нескольких регистров, а над более крупными фрагментами данных. Их появление связывают с проектом Solomon (1962 год).
История развития многопроцессорных вычислительных систем берёт начало с появления в 70-е годы первого суперкомпьютера семейства CRAY-1.
Аналогичный принцип работы с данными был реализован в самой производительной машине своего времени ILLIAC IV (1972). Если процессор, используя одну команду, может выполнять действия над векторами, то его называют векторным процессором. Впоследствии Сеймур Крей использовал векторные принципы при разработке своих суперкомпьютеров, начиная с Сгау-1.
После введения нового класса векторных процессоров обычные процессоры стали «скалярными»; именно поэтому на следующем шаге появились решения с названием «суперскалярные процессоры». Идея суперскалярности заключается в том, что процессор просматривает приближающиеся к исполнению команды и выбирает из них те последовательности, которые могут быть выполнены параллельно. Родоначальником этой идеи был тот же Крей; он реализовал ее в 1965 году в компьютере CDC 6600, затем в процессорах Intel i960 (1988 год) и AMD 29050 (1990) это идея была воспроизведена.
Усовершенствованием фон-неймановской архитектуры является распараллеливание потоков. Данная технология существует в нескольких версиях; среди них — одновременная многопоточность (SMT) и многопоточность на уровне кристалла (СМТ). Эти два подхода в основном различаются представлением о том, что есть «поток». Хронологически первым процессором, поддерживающим многопоточность, был процессор DEC Alpha EV4 21064. Драматическая судьба этого процессорного семейства была и остается предметом серьезных обсуждений.
Процессор поддерживает деление на два потока команд, выбираемых из одной задачи в режиме SMT, что обеспечивает суммарное повышение производительности примерно на 30%.
Первыми представителями архитектуры СМР (ядра на кристалле) стали процессоры, предназначенные для использования в серверах, это был простой тандем, в таких приборах на одной подложке размещаются два, по сути, независимых ядра. Помимо экономии места подобное решение дает ощутимую экономию энергии, поскольку часть системотехнических компонентов является общей для обоих ядер.
О параллелизме как о светлом будущем компьютерных систем ученые упорно говорили на протяжении всех последних 30-35 лет. Однако до тех пор, пока преодоление связанных с этим сложностей, например с необходимостью разделения приложений на потоки, компенсировалось непрерывно возрастающей производительностью процессоров, никто из производителей по понятным причинам инвестировать в эту перспективу не хотел. Поэтому до появления многоядерных процессоров параллельные вычисления оставались атрибутом суперкомпьютеров.[2]
Идея перехода на многоядерные процессоры появилась недавно, примерно начиная с 2005 года, но она не нова. Еще в далекие 60-е годы преимущества нескольких процессорных ядер перед одним обосновал Сеймур Крей, затем он реализовал свой замысел в суперкомпьютере CDC 6600. Но в силу консервативности взглядов проектировщиков дальнейшего развития этот подход к проектированию центрального процессорного устройства не получил.
Возрождение многоядерности произошло благодаря инженерам корпорации Digital Equipment. Во второй половине 90-х задумались о многоядерности в микропроцессорах; это произошло при переходе процессора от Alpha 21164 (EV5) к Alpha 21264 (EV6). Тогда исследователям удалось установить две важные закономерности, распространяющиеся на процессоры. Во-первых, оказалось, что для линейного роста производительности монолитных (одноядерных) процессоров требуется обеспечить квадратичный рост числа транзисторов. Во-вторых, как следствие, также нелинейно возрастет сложность проектирования. Элементарное рассуждение подсказывает, что суммирование производительности нескольких ядер даст ту же совокупную производительность, что и одно ядро при меньшем числе транзисторов. Вопрос в том, как объединить мощности отдельных ядер, в этом состоит коренная проблема многоядерности. Реакцией на обнаруженные проблемы стал проект Piranha, предполагавший создание 8-ядерного процессора, где каждое ядро должно было иметь отдельную кэш-память для команд и данных, для совместной работы процессоры объединялись коммутатором. Однако после перехода в ведение Compaq проект Piranha был похоронен, процессор так и не был реализован.[3]
Параллельно с проектом Piranha группа исследователей из Стэндфордского университета во главе с Кунле Олокотуном работала над «многоголовым процессором» Hydra. В качестве ядра использовался процессор MIPFS 4600. Работа дала хорошие результаты. Впоследствии Sun Mirosystems купила эту компанию и, заменив ядро MIPFS 4600 на UltraSPARC II и увеличив число ядер вдвое, выпустила экспериментальный процессор Niagara, получивший в серии наименование UltraSPARC Т1.
Успеху Niagara способствовало то, что в Sun велась собственная разработка двухъядерного процессора MAJC 5200, где каждое ядро способно обрабатывать четыре потока команд. Процессор UltraSPARC Т1 является конвергенцией Hydra и MAJC 5200.[4]
У IBM разработки многоядерных процессоров заметно связаны с производством игр. Так, процессор Xenon предназначен для игровой консоли. Другой проект. Cell, включает двухпотоковое ядро SMT Power и восемь ядер, которые называют синергетическими процессорными элементами (Synergistic Processing Element, SPE), работающими по принципу SIMD. Основное ядро Power выполняет команды из системы команд PowerPC, поддерживая специализированную систему команд SPE. С очевидным опозданием свои предложения сделали корпорации AMD и Intel: борьба на многоядерном поле стала и для производителей процессоров архитектуры х86 одним из самых актуальных вопросов сегодняшнего дня.