В первой из них имеется центральная память, которую совместно используют несколько процессоров, и именно такую модель имеют в виду, когда говорят об SMP. Так как в такой системе время, требуемое каждому процессору для доступа к центральной памяти, одинаково, то их обычно называют системами с однородным доступом к памяти или системами UMA.
Во втором случае память распределена между несколькими узлами, каждый из которых содержит небольшое число процессоров, подключенных к памяти узла по схеме SMP. В узле есть процессоры и память, но нет дисков и других устройств ввода-вывода. Адресное пространство всех узлов общее, то есть любой процессор может адресовать память любого узла. Чтобы проще представить это себе, вообразите фрагменты общей памяти расположенные в узлах системы и связанные между собой вы
сокоскоростным глобальным соединением. У каждого узла общая шина памяти, соединенная с его фрагментом общей памяти, но доступ к этому фрагменту возможен и для процессоров всех остальных узлов с помощью глобального соединения. Отличие состоит только во времени доступа. Локальный доступ выполняется быстрее глобального, и поэтому подобный кластер узлов SMP называется машиной с неоднородным доступом к памяти, или машиной NUMA.
Мы уже достаточно подробно рассмотрели модель централизованной общей памяти в AS/400. Описанная в главе 2 подсистема памяти UMA с перекрестными переключателями и ее разновидности могут с легкостью поддерживать 16-канальные конфигурации SMP с высокопроизводительными процессорами, планируемыми для серии AS/400е. После версии 4, возможно, появятся 20- или даже 24-канальные конфигурации SMP.
Для очень больших конфигураций будут использованы кластеры узлов SMP. В главе 11 мы рассмотрели последовательность кластерной поддержки для AS/400: и системы без разделения, каждая из которых использует собственные дисковые устройства; и кластеры с переключением дисков между системами; и, наконец, системы с разделением дисков между компьютерами кластера. Получив с помощью независимых ASP возможность разделения всех дисков кластерного пула, мы можем подумать о разделении памяти между узлами, и, таким образом, о создании нашей первой машины NUMA.
Интерес к применению NUMA в AS/400 возник несколько лет назад. Дик Бут (Dick Booth), рочестерский инженер, занимался в начале 90-х годов многопроцессорными системами в IBM Research. В процессе работы у него возникла идея новой архитектуры. Первоначально Дик назвал ее «крепко связанным мультипроцессором», так как она занимает промежуточное положение между слабо связанными (МРР) и сильно связанными (SMP) мультипроцессорами. Теперь подобная структура называется просто NUMA.
Дик верил, что NUMA будет работать в AS/400. Вернувшись в Рочестер, он заразил своей идеей коллег. В 1991 году был основан объединенный проект с IBM Research и началась работа над прототипом. Как это часто бывает, новая идея натолкнулась на определенный скептицизм. Группа выстояла, завершила прототип и продемонстрировала его, чем завербовала в свои ряды новых сторонников. Сегодня эти люди успешно работают над NUMA для будущих AS/400.

Для AS/400 возможны как минимум две реализации NUMA. Первая — неоднородный доступ к памяти с когерентным кэшем CC-NUMA (cache-coherent non-uniform memory access), вторая — архитектура памяти только с кэшем COMA (cache-only memory architecture). Конкретные детали реализации и оценки производительности этих архитектур широко отражены в компьютерной прессе. С начала 90-х годов разновидности этих архитектур исследуются в нескольких университетах и лабораториях. Некоторые компьютерные компании, такие как SGI (Silicon Graphics, Inc.), Sequent и Convex уже поставляют на рынок серверы CC-NUMA с большими возможностями масштабирования.
Итак, давайте кратко, не слишком вдаваясь в технические подробности, поговорим о том, какие детали этих архитектур Вы можете ожидать в будущих конфигурациях AS/400.
Обе схемы используют протокол когерентности кэшей на основе справочников, что необходимо для поддержки «вроде бы» общей памяти, хотя основная память и распределена между узлами. Проще говоря, в каждом узле имеется справочник, показывающий расположение всех страниц в глобальной адресуемой основной памяти (как локальной, так и удаленной).
Это отличается от шинной когерентности со слежением (snoopy bus-based coherence), используемой для кэшей второго уровня в узле SMP, описанной в главе 2. Одни и те же данные из страницы общей памяти могут одновременно находиться в нескольких кэшах процессоров узла SMP. При изменении данных в кэше одним процессором должны быть обновлены и копии в кэшах других процессоров. Под когерентностью кэшей понимают актуальность всех копий. При использовании протокола слежения справочник кэша каждого процессора содержит информацию только о тех страницах, которые находятся в его собственном кэше. При всяком изменении процессором данных в кэше об этом сообщается по шине слежения всем остальным процессорным кэшам, с целью обновить те же данные. Таким образом, каждый кэш следит за изменениями во всех других кэшах и обеспечивается когерентность кэшей. Поддержание в кэшах процессоров множественных копий гарантирует одинаковое время доступа ко всем данным (поэтому данная архитектура и называется UMA).
Читать дальше