Параллельное программирование: Учебное пособие, страница 49

Быстродействия только процессора еще недостаточно для достижения высокой скорости вычислений в компьютере. Ведь подавляющее большинство команд процессора обращается за операндами непосредственно к запоминающему устройству, куда помещает и результаты выполненных операций. Для эффективной работы компьютера необходимо, чтобы операции с данными в оперативной памяти выполнялись со скоростью, сравнимой со скоростью работы центрального процессора. Если в среднем для одноадресных машинных команд будет одно обращение к памяти на одну исполненную команду, то это означает, что цикл обращения к оперативному запоминающему устройству должен быть меньше среднего числа тактов, приходящихся на исполнение одной команды. Время обращения к оперативному запоминающему устройству существенно зависит от объема ОЗУ (десятки слов, тысячи слов, сотни тысяч слов, сотни мегабайт), его организации (побайтной, пословной) и количества портов (один, два или более). Несколько иное отношение к дисковой, внешней памяти, у которой произвольного доступа к конкретной записи нет. Здесь речь может идти лишь о средней скорости подкачки данных в ОЗУ, которая зависит от суммы времени записи-чтения заданного объема данных и времени выхода считывающих головок на начальную позицию расположения данных. Таким образом, вся память вычислительной машины представляется в виде многоуровневой запоминающей структуры с участками увеличивающегося быстродействия и уменьшающегося объема по мере перемещения данных к арифметико-логическому узлу:

·  регистровая память – включает набор регистров общего назначения в количестве 64-256 обычно 32-битовых слов, доступ к которым происходит в течение одного такта, составляющего в современных процессорах величину порядка одной наносекунды;

·  сверхоперативная память (cash-memory – кэш-память) – удерживает данные наиболее близкие по времени использования и близкие по адресному расстоянию к данным, используемым очередной командой, и все чаще представляется кэшами уровня-1 и уровня-2 с объемами равными соответственно 8к слов при доступе за 1-2 такта и 256к слов со временем доступа 3-5 тактов;

·  оперативная память (ОЗУ) – основная память, расширяемая в настоящее время до 4 Гигаслов и имеющая время доступа, зависящего от общего объема, в пределах от 12 до 55 тактов, то есть несколько десятков наносекунд;

·  дисковая память – память длительного хранения большого объема данных (в настоящее время свыше 180 Гигабайт на одном диске) с последовательной формой записи (чтения) во множество секторов одной дорожки (трека) на протяжении одного оборота диска (4 – 7 мс/об.) и с произвольным доступом к заданной дорожке за 1-2 миллисекунды.

·  внешняя память – память удаленных компьютеров, связанных посредством локальных и глобальных сетей с процессором, выполняющим конкретные вычисления, доступ к которым определяется не столько временем доступа к памяти удаленного компьютера, сколько временем пересылки данных по каналам связи, особенно выходящим на спутники.

2.5.2  Общая память и проблема когерентности

Если узлами системы служат персональные компьютеры, то такую параллельную вычислительную систему следует рассматривать как совокупность процессоров, подсоединенных к многоуровневой иерархической памяти. Для каждого вычислительного элемента должна быть обеспечена одинаковость его копий, которые обрабатываются разными процессорами и размещены в разных блоках иерархической памяти, то есть в любой момент времени должна обеспечиваться когерентность памяти.

Способ размещения данных и доступа к ним в иерархической памяти может служить основой классификации архитектур параллельных вычислительных систем [6]:

·  явное размещение данных с явным указанием доступа к данным командами send (послать) и receive (принять), при котором размещение и  расстановка полностью реализуется программистом;

·  неявное размещение данных с неявным указанием доступа к данным, когда существует единое физическое или виртуальное адресное пространство, в котором программист использует только команды load (чтение) и store (запись);