Компьютерная архитектура: ускорение

Это домашнее задание.

Проблема: программа имеет 20% доступа к памяти, 50% умножения, а остальное для других функций, не связанных ни с тем, ни с другим. Если требуется общее ускорение в 1,2 раза, то какое ускорение потребуется как для доступа к памяти, так и для умножения, если оба они будут улучшены одинаково.

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

Если бы он просто искал доступ к памяти, я думаю, что решил бы следующее уравнение для x:

1.2 = 1/[(1 - 0.2) + 0.2/x]

Является ли ключом к объединению двух процентов и использованию 0.2 + 0.5 = 0.7 в законе Амдала?


person Victor Brunell    schedule 10.05.2014    source источник
comment
«Это домашнее задание». Поздравляем!   -  person Giacomo1968    schedule 10.05.2014
comment
Да, поскольку оба компонента улучшаются одинаково, их можно рассматривать как один компонент путем суммирования долей их вклада.   -  person Paul A. Clayton    schedule 10.05.2014


Ответы (1)


Предположим, что текущее время выполнения составляет 100 секунд.

Желаемое ускорение — 6/5, так что это означает, что новое время по сравнению со старым временем должно быть 5/6, сокращение на 16,67% или 16,67 секунды. (Вот и весь закон Амдала!)

Вы знаете, что 20 секунд тратится на доступ к памяти, 50 секунд тратится на умножение и 30 секунд на другие вещи.

Вопрос «если бы оба были улучшены одинаково» неоднозначен. Означает ли это, что оба уменьшаются на одну и ту же абсолютную величину, которая составляет половину 16,67 каждый, или это означает, что они уменьшаются пропорционально, 2/7 из 16,67 секунд берутся из памяти, а 5/7 - из умножения?

Ты бери оттуда!

Кстати: когда ученые говорят о настройке производительности, они, как правило, имеют в виду небольшие одностраничные программы, в которых доступ к памяти, математические операции и большие O — это то, о чем идет речь. Реальная настройка производительности сильно отличается. Речь идет о том, чтобы выяснить, как программное обеспечение перепроектировано, и использовать диагностику производительности (например, профилирование, но лучше), чтобы выяснить, где находится жир, и отрезать его за несколько итераций. Пример.

person Mike Dunlavey    schedule 02.07.2014