Почему в гугле предпочитают быстродействующие процессора экономичным.
Закон Амдаля: S=1/((1-P)+P/S). S - общее ускорение, P - доля ускоряемого кода в коде программы (доля времени выполнения), S - ускорение этого самого ускоряемого кода. Коротко P и (1-P) можно называть "обработкой" и "анализом
(
Read more... )
Comments 50
Кстати, а вы читали книгу Computer Architecture: A Quantitative Approach . Как оцениваете?
Reply
Просмотрел первое издание, на citeseer. Более-менее. Кое-где они кое-что упростили так, что даже не очень хорошо получилось. В системах команд, например, стековые архитектуры не сильно отличаются от регистровых, что неправда.
Reply
Плюс к этому, достигается вход в прерывание "за 0 тактов". Нить выполняет специальную инструкцию ожидания внешнего сигнала, и её конвейер приостанавливается. При появлении нужного сигнала нить начинает обработку прерывания со следующего такта. С учётом влияния кэшей, конечно, но это уже мелочи.
Reply
А я про это не говорил. То, что вы описываете, это улучшение загрузки процессора за счёт выполнения нескольких потоков команд. Процессор XBox, Niagara T*.
Это не улучшает работу однопоточной программы анализа.
Reply
Скорость однопоточной программы можно было бы улучшать, удлиняя конвейер, если бы не ветвление. Я где-то слышал, что средняя длина линейного участка - несколько десятков инструкций. Дальше растягивать конвейер нет смысла. Ну и предсказание ветвления тут обязательный элемент.
Reply
Каждая пятая инструкция переход, по моим сведениям. ;)
Там выше дали ссылку на книгу на Амазоне, в ней в этой копии на графике B.13 указана частота условных переходов в 20%.
>Понятно, почему внеочередное выполнение сейчас не в моде: можно переложить проблему на разработчиков компиляторов и сэкономить несколько милливатт потребления. :)
Так ведь не получается же. См. статью выше. "Поджаристые" процессоры выигрывают у экономных и по скорости разработки, и по другим критериям.
Reply
Reply
Reply
Reply
Для прикладух -- да, почти пофиг. Разве что надо бы прикидывать, как эта прикладуха будет оптимизироваться с учетом особенностей железа. Например, банально переколбасить алгоритм так, чтоб компилятор переложил его на какой-нибудь SSE/MMX/Neon/итп.
Reply
Reply
> Правда, это мои теоретические соображения. На практике не проверял.
На практике это было хорошо видно во времена Pentium 4 и Athlon XP. В синтетике первый был очень неплох. А в реальных приложениях ничего не мог. Хотя частота больше. А все (наверное) из-за длиннющего (20 ступенчатого?) конвеера, который видимо срывался из-за prediction miss'ов и приходилось все начинать сначала.
Reply
Leave a comment