Variant 1188338556.
Рассмотрим C-программу:
#include <stdio.h> main() { float sum=0.0, j=1.0, i=2.0; while (i/j>0.001) { j=j+j; sum=sum+i/j; printf("%f \n",sum); } }
Рассмотрим компьютерную многопроцессорную архитектуру, где каждый процессор имеет свой собственный кеш, и где все они конкурируют за доступ к системной шине (критическому ресурсу).
Каждый процессор может выполнить одну инструкцию за 500 наносекунд, если инструкция ссылается на закешированные ячейки памяти. Но если происходит кеш-промах, то выполнение инструкций процессором задерживается на дополнительных 2000 наносекунд, причем первую половину этой задержки шина обслуживает запрос, а вторую половину задержки, результат этого запроса помещается в кеш процессора и происходят другие действия, а шина может обслуживать запросы от других процессоров. В среднем, каждая инструкция содержит два указателя на память, а кеш-промахи случаются в 1% указателей.
Какую часть пропускной способности шины использует один процессор, если игнорировать конкуренцию других процессоров?
Рассмотрим SQL-запрос:
SELECT TYPE, avg(price), MIN(price) FROM product GROUP BY category
Некоторая параллельная программа выполняется 100 секунд на одном процессоре. Если 40% вычислений являются строго последовательными и не могут быть распараллелены, то какое будет время выполнения этой программы на 2 и 4 процессорах соответственно:
SELECT a.ln, fn, b.zip, c.city FROM a,b,c WHERE a.ln=b.ln