Но такая организация процесса вычисления идеально работает только для линейных программ без команд условного перехода. Наличие такой команды разветвляет алгоритм и продолжение вычисления невозможно до момента вычисления результата условия. Чтобы сократить время ожидания, в процессор добавлена система предсказания переходов, которая в случае правильного предсказания увеличивает производительность, а в случае ошибочного – снижает за счет того, что обработанные команды неправильного переход сбрасываются с конвейера.
Таким образом, для расчета производительности компьютера необходимо знать:
- частоту процессора;
- длину конвейера;
- объем кэша I уровня и разделение его на команды и данные;
- объем кэша II уровня, частота его работы, разделение на команды и данные;
- частоту системной шины;
- тип и частоту оперативной памяти;
- оценку процента числа команд условного перехода и процента ошибок предсказания перехода.
В данной курсовой работе расчет производительности компьютера производится по усредненным оценкам, позволяющим оценить нижнюю границу производительности, т.е. считаем, что в программе 12,5% или 1 из 8 команд является командой условного перехода и в 25% случаях система предсказания переходов ошибается.
Параметры процессора, системной шины и памяти определим по их паспортным данным:
- частота процессора : а) 2500 МГц;
б) 2000 МГц;
- длина конвейера 20 команд;
- объем кэша I уровня 32кб (16кб данные, 16кб команды), частота 2000, 2500 МГц;
- объем кэша II уровня 512кб (256кб данные, 256кб команды), частота 2000, 2500 МГц;
- частота системной шины 133 МГц;
- оперативная память DDR, частота 133 МГц;
- технология Hyper Treading не применяется, т.е. память и системная шина не используются в дуплексном режиме.
Произведем расчет производительности.
I. Процессор
1. а) Один такт процессора длится 1/(2500∙106) = 4∙10-10 с.
б) Один такт процессора длится 1/(2000∙106) = 5∙10-10 с.
2. В кэш I уровня помещается 16∙1024/4 = 4096 команд (каждая команда, являясь 32-х разрядной, занимает 4 байта).
3. На 4096 команды 4096∙12,5% = 512 команды условного перехода.
4. Из 512 команд в 128 случаях система предсказания переходов будет ошибаться.
Таким образом, на выполнение команд кэша I уровня потребуется
4∙10-10∙ (4096 + (128∙(20-1))) = 2611∙10-10 с
5∙10-10∙ (4096 + (128∙(20-1))) = 3264∙10-10 с
II. Кэш I уровня – кэш II уровня
1. а) Один такт шины между Кешами длится 1/(2500∙106) = 4∙10-10 с.
б) Один такт шины между Кешами длится 1/(2000∙106) = 5∙10-10 с.
2. За один такт передается 4 байта данных в одну сторону.
Таким образом, на обмен данными между Кешами I и II уровня требуется а) (4∙10-10∙32∙1024/4)∙2 = 6553∙10-10 с
б) (5∙10-10∙32∙1024/4)∙2 = 8192∙10-10 с
III. Кэш II уровня – оперативная память
1. Один такт системной шины длится 1/(133∙106) = 7,5∙10-9 с.
2. За один такт передается 4 байта данных в одну сторону
3. Дополнительно используется 4 такта (по 2 такта на адрес строки и столбца матрицы памяти, по адресу которых данные передаются в память и извлекаются из нее).
Таким образом, на обмен данными между кэшем II уровня и оперативной памятью требуется а) 7,5∙10-9∙((512∙1024/4)∙2+4) = 1971011∙10-10 с
б) 7,5∙10-9∙((512∙1024/4)∙2+4) = 1971011∙10-10 с
Один цикл работы процессора складывается из выполнения команд в кэше I уровня, обмен данными между Кешами и повторения вычисления до окончания команд в кэше II уровня, после чего происходит обмен между памятью и кэшем.
Значит, длительность цикла процессора будет равна:
а) (2611∙10-10+6553∙10-10)∙(512/32) + 1971011∙10-10 = 2117648∙10-10 с.
б) (3264∙10-10+8192∙10-10)∙(512/32) + 1971011∙10-10 = 2154303∙10-10 с.
При этом будет выполнено 4096∙512/32 = 65536 команд. Делением числа команд на длительность их выполнения получим производительность
65536 / 2117648∙10-10 = 30 947 537 команды/сек (≈31 млн. команд в секунду).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.