Tuesday 6 October 2009

John L. Hennessy, David A. Patterson. "Computer Architecture: A Quantitative Approach." Fourth Edition.

Эту книгу посоветовал инструктор, который читал нам Solaris Internals курс. Мужик был очень грамотный и понимал, что 50% столь интимные подробности могут в жизни не понадобиться совсем. Вот и посоветовал прочитать данный опус.

Речь идет о 4-м издании, что очень важно. Оно сильно переработано и вышло после выхода СМТ процессора Ниагара от компании SUN.

Издание интересно тем, что 4-ое меньше 3-го по объему. Но это касается печатной версии. Часть материала ушла из основного текста в приложения. А оригинальность в том, что большая часть приложений вынесена на CD, который идет с книгой.

Итак.

Chapter 1 Fundamentals of Computer Design
Это основы. Я это знал давно (ну, такой я умный), но в одном месте в концентрированном виде встретил впервые. Очень и очень полезно. Показывается на простых примерах из чего складывается производительность компьютера.
Есть некоторые формулы, они наглядны, но вызывают сомнения весовые коэффициенты, оценивающие прирост производительности в целом, от возросшей производительности компонент.
Много фактического материала, что как развивалось - процы, память, диски. Диаграммы, наглядное изложение истории :-). Основные ограничения архитектуры.
Очень полезно, особенно для тех кто начинает свое знакомство с миром серверов. То есть это взрослая жизнь, без персоналок и видео акселераторов.
Chapter 2 Instruction-Level Parallelism and Its Exploitation
Шаг за шагом объясняется как работает механизм распараллеливания, механизмы предвыборки и предсказания ветвлений. То, что определяет быстродействие современных компьютеров.
Что поражает?
Абсолютная убогость используемых алгоритмов!
Огромная сложность их реализации и офигенная эффективность!
То есть если их не использовать, то можно сливать воду. Никакой производительности наблюдаться не будет вообще.
Chapter 3 Limits on Instruction-Level Parallelism
Chapter 4 Multiprocessors and Thread-Level Parallelism
Третья часть говорит сама за себя, а вот 4-ая очень важна.
После того как все кинулись делать многоядерные процессоры возник вопрос, а как они себя поведут.
На момент написания книги материала было явно недостаточно - 2-х ядерные Power5 и UltraSPARC IV, и 8-ми ядерная Ниагара. Это сейчас у нас и Интел, и АМД отметились на этом рынке, у АМД на сегодняшний момент 6-ядерник, у Интела 4-х.
НО! Читайте эти главы и вы поймете, что к чему.
За это я и люблю базовое/фундаментальное образование!
Поняв отличия Instruction-Level Parallelism от Thread-Level Parallelism вы поймете и основные современные результаты по производительности многоядерных процессоров. То есть, их недостатки обусловлены их достоинствами. Кроме того, завлекательные заявления производителей, становятся менее завлекательными, если вы вспомните алгоритмы предвыборки и предсказания ветвлений.
Chapter 5 Memory Hierarchy Design
Очень четкое и подробное, иногда излишне подробное (это касается всего стиля изложения - "иногда излишне подробно"), изложение работы памяти и, главное, как работают кэши 1-го, 2-го и 3-го уровня. Крайне полезно!
Видны ограничения архитектуры, понятно, какие типы задач какого уровня кэша требуют. Четко объяснено, что бездумное увеличение кэшей положительного эффекта не дает.
Работа памяти объяснена, но это я в основном пропустил, поскольку по page-ингу была как-то хорошая статья по Solaris.
Chapter 6 Storage Systems
Четко, коротко. Кстати, затронута проблема SSD, но на тот момент они были крайне дороги. Сейчас ситуация поменялась и зная как работает кэширование, можно сказать, что превосходные результаты на гибридных системах (диски+SSD) вполне предсказуемы.


Книгу читать!!!
Рассматривать как академическое издание.

No comments:

Post a Comment