Чем отличаются двухядерные и четырёхядерные компьютеры от одноядерных?
Итак, тактовую частоту процессоров стало наращивать все труднее и труднее,(растет число транзисторов, проводников и выделяемое тепло) и, стало быть, надо искать что-то на смену “гонки за мегагерцами”. А добавляя ядра, производительность в ряде современных приложений уже можно заметно поднять, не повышая частоты. SMP-системы (Symmetrical Multi Processor systems). В подобной системе все процессоры имеют совершенно равноправный доступ к общей оперативной памяти. Работать с такими системами программистам - сущее удовольствие (если, конечно, создание многопоточного кода можно назвать “удовольствием”), поскольку не возникает никаких специфичных “особенностей”, связанных с архитектурой компьютера. Но, к сожалению, создавать подобные системы крайне трудно: 2-4 процессора - практический предел для стоящих разумные деньги SMP-систем. Конечно, за пару сотен тысяч долларов можно купить системы и с большим числом процессоров… но при цене в несколько миллионов (!) долларов за SMP с 32-мя CPU становится экономически более целесообразно использовать менее дорогостоящие архитектуры.
NUMA-системы (Non-Uniform Memory Access systems). Здесь доступ к память становится “неоднородной”: один её кусок “быстрее”, другой - “медленнее”, а отклика от во-о-он того “дальнего” участка вообще можно ждать “пару лет”. В системе при этом образуются своеобразные “островки” со своей, быстрой “локальной” оперативной памятью, соединенные относительно медленными линиями связи. Обращения к “своей” памяти происходят быстро, к “чужой” - медленнее, причем чем “дальше” чужая память расположена, тем медленнее получается доступ к ней. Создавать NUMA-системы куда проще, чем SMP, а вот программы писать сложнее - без учета неоднородности памяти эффективную программу для NUMA уже не напишешь.
Наконец, последний тип многопроцессорных систем - кластеры. Просто берем некоторое количество “почти самостоятельных” компьютеров (узлы кластера или “ноды”) и объединяем их быстродействующими линиями связи. “Общей памяти” здесь может и не быть вообще. Эта система очень неудобна для программистов, и, существенно ограничена сфера применения. Но зато кластер - это очень дешево.