Вот, что пишут:
This significant reduction in the size and complexity of the basic processor building
block of the future means that many more cores can be economically implemented on a
single die; furthermore, this number can double with each generation of silicon. For
example, the “manycore” progression might well be 128, 256, 512, ... cores instead of the
current “multicore” plan of 2, 4, 8, ... cores over the same semiconductor process
generations.
There is strong empirical evidence that we can achieve 1000 cores on a die when 30nm
technology is available. (As Intel has taped out a 45-nm technology chip, 30 nm is not so
distant in the future.) Cisco today embeds in its routers a network processor with 188
cores implemented in 130 nm technology. This chip is 18mm by 18mm.
http://www.eecs.berkeley.edu/Pubs/TechRp
Однако, возникает вопрос как и чем это хозяйство загрузить?
Что-то можно решить за счет отображения каждого процесса в системе на свое ядро, но а) нагрузка будет неравномерной и б) не найдется столько процессов, чтобы на все ядра хватило.
Потоки отпадают из-за необходимости наличия общей памяти, что при таком количестве процессоров является узким местом из-за блокировок, да и вряд ли вообще возможно. То есть доступ к памяти должен быть структурированным. Варианты: процессоры разбиты на группы, каждая со своим банком памяти, а связи между группами организованы через последовательные каналы, может быть через системную шину. Другой вариант - географическая организация, когда физически расположенные в узлах двумерной решетки процессоры имеют общую с соседями память. Но это не так уж важно.
Важно то, что с потоками в такой среде не напрограммирушь. Кроме того, поточная модель, ориентированная на долгоживущие процессы не предназначена для массового параллелизма.
То есть, нужна радикальная смена парадигмы. Нужны средства и системы обеспечивающие как автоматическое распараллеливание вычислительных алгоритмов (там где это возможно), так и логическую организацию программ в виде параллельно исполняемых взаимодействующих активных агентов. Причем если сделать так, чтобы стоимость создания агентов была минимальна, то можно перейти к программной модели, в которой основным структурным компонентом является не функция, и не класс, а короткоживущий процесс.
Это вполне возможно, есть даже два относительно хорошо изученных подхода к таким моделям: агенты с каналами (как в Го или Clojure) и обмен сообщениями в эрланговском стиле.


