Variant 2333733566.
Рассмотрим компьютерную многопроцессорную архитектуру, где каждый процессор имеет свой собственный кеш, и где все они конкурируют за доступ к системной шине (критическому ресурсу).
Каждый процессор может выполнить одну инструкцию за 500 наносекунд, если инструкция ссылается на закешированные ячейки памяти. Но если происходит кеш-промах, то выполнение инструкций процессором задерживается на дополнительных 2000 наносекунд, причем первую половину этой задержки шина обслуживает запрос, а вторую половину задержки, результат этого запроса помещается в кеш процессора и происходят другие действия, а шина может обслуживать запросы от других процессоров. В среднем, каждая инструкция содержит два указателя на память, а кеш-промахи случаются в 1% указателей.
Какую часть пропускной способности шины использует один процессор, если игнорировать конкуренцию других процессоров?
Рассмотрим 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); } }
Некоторая параллельная программа выполняется 100 секунд на одном процессоре. Если 40% вычислений являются строго последовательными и не могут быть распараллелены, то какое будет время выполнения этой программы на 2 и 4 процессорах соответственно:
Пусть таблица vtable содержит (помимо прочих) следующие колонки:
a integer not null b varchar(244) null
Что неправильно в следующем SQL-операторе:
CREATE INDEX myindex ON vtable(a,b)
Про таблицу vtable известно, что в ней 100 записей, есть индекс по полю b, плюс все стобцы "non-unique". Сколько записей просканирует СУБД при выполнении следующего запроса:
SELECT a, b, c, d FROM vtable WHERE a=5