Умножение производительности Докучаев Дмитрий aka Forb Спецвыпуск Xakep, номер #038, стр. 038-008-2 На самом деле, не всегда получается выделить 256 Мб памяти отдельным модулем определенному процу. Часто делают эмуляцию на уровне софта, к примеру, модуль памяти разбивается на две равные части. При этом для процессора одна такая часть - единое целое (остальных ячеек он просто не видит). Получаем реальную экономию на девайсах. Intel + SMP После того, как AMD показал себя с лучшей стороны, в дело вмешался самый серьезный его конкурент - Intel. Лозунги гласили: “Наше преимущество - общая память!” Интел - первый производитель, который решился сделать возможным полноценное обращение любого процессора к любой ячейке памяти. Предположим, что для оформления таблицы с результатами было решено дать право всем членам бригады писать в общий расчетный лист бумаги. Вроде бы, процесс должен пойти быстрее, но это только кажется. Вообрази: в таблице существует колонка погрешности при измерении. Ее рассчитывает каждый человек в бригаде, а среднее значение заносится в протокол. Вот и представь ситуацию, когда в один лист бумаги пытаются писать сразу два, а то и три человека. Access violation получается, товарищи :). Ситуация разрешается следующим образом: второй человек ждет, пока первый заполнит колонку в таблице. Когда это происходит, в нее пишет следующий. И так далее. А что происходит за время ожидания? Если думаешь, что ждущий в такие моменты будет работать над дальнейшими расчетами, ты ошибаешься. Он просто будет ждать, по определению :). В этом и недостатки технологии SMP. Бесспорно, Intel всячески понижает вероятность появления коллизий и простоев. Одно из таких решений - увеличение кэша процессора. Но опять же, усложняется задача программиста. Ему придется разделять данные не только между областями памяти, но и между областями кэша, а это умеет не каждый. MPP MPP-технология подразумевает наличие отдельных процессорных узлов, которые связаны между собой в массив. Отсюда и расшифровка: массивно-параллельные системы. Всего таких узлов может быть около 1000, а то и больше. Главной особенностью MPP является то, что один процессор никак не может проникнуть в память другого, а лишь способен работать со своим локальным модулем. Для нашего примера с бригадой получаем: четыре человека рассажены по отдельным углам, и никто не способен вмешаться в расчеты соседа. Зададимся вопросом: как же передать данные одного человека бригадиру? Для этого существуют определенные методы трансмиссии данных. К примеру, по воздуху :). Чувак сделал самолетик из листа бумаги и запустил его в сторону бригадира. Никаких коллизий, никаких простоев, информация дошла до потребителя. Хотя не факт, что самолетик взлетит, но это уже проблема производителя :). Технологию MPP нельзя соотнести с отдельным производителем, так как ее реализовывали как Intel, так и AMD. Тем не менее, серверы с такой многопроцессорностью стоят бешеных денег, так как транспортировка данных по сети является довольно сложной задачей. Параллельно-векторные системы Еще одной технологией является PVP, которая подразумевает следующее: ряд процессоров (1-6) работают с общей памятью, а все блоки связаны через коммутатор. Получим формулу для технологии: PVP=SMP+MPP. |