Обнаружил баг американской системы образования

19ee10caffcf5d1ab5a6585b6d262a0c.jpg

Обнаружил интересный баг американской системы образования:

У многих студентов в резюме стоит «делал курсовой проект по алгоритму Томасуло, out-of-order суперскаляру, многопоточному процессору итд».

На это я спрашиваю: «Прекрасно, давайте возмем два процессорных ядра — одно со статическим конвейером, а у другого с динамическим, как в вашем курсовике. Насколько ваш процессор будет производительнее?»

На это они отвечают «процессор будет производительнее, потому что» — и начинают ковыряться в деталях зависимостей между инструкциями.

На это я машу руками и говорю «стоп-стоп-стоп. Я не просил вас объяснить мне что такое RaW (read-after-write), WaR и WaW зависимости. Я вообще не спрашивал у вас «почему?» Я спросил у вас «сколько?» Я просил вас грубо оценить пользу от вашей разработки.

Вот вы вместе с другими студентами, под руководством профессора проектировали процессор, делали довольно сложную, продвинутую оптимизацию. Теперь возьмем написанный вами верилог, запустим его в симуляторе и пропустим через него бенчмарку, скажем Dhrystone или CoreMark. Допустим у процессора со статическим конвейером сколько-то итераций бенчмарки прошли за сто тысяч тактов. За сколько тактов пройдет эта же бенчмарка на вашем процессоре — за сто тактов или за миллион? Или за что-то посередине? Сколько вы покупаете вашей оптимизацией — 1%, 10%, 100%? Какой ценой в размере логики? Может такты изменятся мало, но повысится максимальная тактовая частота? На сколько?»

И представляете, что они мне отвечают? «Мы не запускали бенчмарки».

Бенчмарки у них в учебниках есть — это я не думаю, а знаю, так как все их учебники стоят у меня на полке. Это выглядит для меня чисто как плохая работа преподавателей: преподаватели должны:

  1. Давать обзорную картину с высоты птичьего полета сколько покупают различные оптимизации и какой ценой.

  2. Подкреплять это знание измерением бенчмарков и статического анализа тайминга во время курсовых проектов. Также — если у университета есть доступ к Synopsys PTPX или Cadence Joules, то измерять динамическое энергопотребление. Но если нет — мерять такты и STA можно бесплатными тулами — Icarus Verilog и Open Lane.

Впрочем, в России и Украине проблем больше, чем у американских вузов: мне говорили несколько лет назад, что в МФТИ вообще обучали конвейерным процессорам с помощью cycle-accurate модели на C++, при этом без измерения статического анализа тайминга для разных вариантов микроархитектуры. Ну это как учить электричеству без магнетизма. Хотя с тех пор прошло время, и я надеюсь, что они это исправили.

© Habrahabr.ru