Юный техник 1984-07, страница 18

Юный техник 1984-07, страница 18

ствует одной машинной команде. Сколько команд будет выполнено процессором? Шесть? Неправильно. Операции 1,. 2 и 6 в самом деле будут выполнены по одному разу, зато с 3-й по 5-ю ■— 5 раз. Итого 18 команд. А для произвольного N — 3N+3. Процессор «крутится» в нашей коротенькой программе, упорно прибавляя к S число за числом. А что ему остается делать? Помочь-то ведь некому.

Теперь допустим, что в нашем распоряжении ЭВМ с двумя па-I аллельными процессорами, выполняющими одни и те же команды Числа для этих команд располагаются в нам; ЭВМ по соседству, парами. Пары обозначаются заглавн] ми буквами, например, Р = (3,5) означает, что в памяти подряд записаны числа 3 и 5, Q=(l,l) — две единицы. Операция сложения P+Q даст в результате пару R=(4,6): первое число пары 4=3+1 будет получено 1-м процессором, второе — 6=5+1 — 2-м, причем одновременно.

Если I — пара индексов, например (1,2), то через А обозна

чается ntpa чисел (аь а2). S=(s', s") — пара, в которой накапл вается сумма: s'=ai+a2+ +...; s"=a2+a4+... Пусть, наконец, N — четное число. Тогда мы можем записать программу в следующем виде:

1. Допустим, S = (0* 0).

2. Допустим, 1=(1, 2).

3. Вычислим новое S=S+A .

4. Вычислим новое 1=1+(2,2).

5. Если 1 (N+l, N+2), перейти к операции 3.

6. Вычислим s=s'+s".

7. Вычислим b = s/N.

Заметьте, что две последние

операции действуют уже не над парами, а над одиночными числами; второй процессор в это время стоит без дела.

Как видно, программа получилась немногим сложнее, Чем прежняя, для однопроцессорной ЭВМ Но ее выполнение будет состоять только из 1.5N+4 команд (проверьте!). Для больших N мы получили двукратный рост производительности, для малых N — несколько меньше. Будь процессоров не два, а больше, они бы работали не с парами, а с тройками, четверками или вообще с наборами чисел произвольной длины. Чем больше процессоров, тем выше производительность, но и тем труднее находить для всех них работу.