Архитектура компьютера
Также данная книга доступна ещё в библиотеке. Запишись сразу в несколько библиотек и получай книги намного быстрее.
Посоветуйте книгу друзьям! Друзьям – скидка 10%, вам – рубли
По вашей ссылке друзья получат скидку 10% на эту книгу, а вы будете получать 10% от стоимости их покупок на свой счет ЛитРес. Подробнее
По абонементу вы каждый месяц можете взять из каталога одну книгу до 700 ₽ и две книги из специальной подборки. Узнать больше
Книга Эндрю Таненбаума, всемирно известного специалиста в области информационных технологий, писателя и преподавателя, выходящая уже в шестом издании, посвящена структурной организации компьютера. В ее основе лежит идея иерархической структуры, в которой каждый уровень выполняет вполне определенную функцию. В рамках этого нетрадиционного подхода подробно описываются цифровой логический уровень, уровень архитектуры команд, уровень операционной системы и уровень языка ассемблера. В шестое издание внесены многочисленные изменения, которые приводят книгу в соответствие со стремительным развитием компьютерной отрасли. В частности, была обновлена информация о машинах, представленных в качестве примеров: Intel Core i7, Texas Instrument OMAP4430 и Atmel ATmegal68. Книга рассчитана на широкий круг читателей: как на студентов, изучающих компьютерные технологии, так и на тех, кто самостоятельно знакомится с архитектурой компьютера.
Возрастное ограничение: 16+ Дата выхода на ЛитРес: 03 декабря 2021 Дата перевода: 2021 Дата написания: 2015 Объем: 816 стр.
ISBN: 978-5-4461-1103-9 Общий размер: 14 MB Общее кол-во страниц: 816 Размер страницы: Переводчик: Правообладатель: Питер
Книга Эндрю Таненбаума «Архитектура компьютера» — скачать в pdf или читать онлайн. Оставляйте комментарии и отзывы, голосуйте за понравившиеся.
Почему книга Эндрю Таненбаума «Архитектура компьютера» вредна для образования
Сегодня взял в руки книжку Эндрю Таненбаума «Архитектура компьютера» (последнее издание на русском языке вышло в 2018 году). Я ее пролистывал лет 10 назад, но сегодня решил пролистать снова, чтобы быть абсолютно уверенным в том что я напишу ниже. А именно: это книжка была вредна для образования. Она плодила не инженеров-проектировщиков, а потенциальных игроков для телевикторины «Что-Где-Когда?» и спорщиков-всезнаек на форумах интернета, которые могли рассуждать часами о микрокоде и джава-процессорах, нагибая собеседников своей эрудицией про очереди микроопераций (стр 291 4-го издания 2003-го года) и защелках в трактах данных (стр. 286), но при этом ничего не могли сделать своими руками.
Потому что (сначала мелкие придирки):
1. Микрокод в том виде в котором его описывал Эндрю Таненбаум был популярен в 1970-х, но уже в 1980-х процессоры были hard-wired для удобства конвейеризации. Причем сам Эндрю Таненбаум об этом знал (стр. 29) но все равно учил с микрокодом, показывая его не как особый случай, а как мейнстрим.
2. Термин «защелка» означает «level-sensitive D-latch» и такие конструкции не используются для хранения результатов в конвейере, и не использовались, когда писалась эта книга (в 90-е, хотя последнее русское издание вышло в 2018). Для регистров в конвейере используются переключаемые по фронту D-flip-flop / D-триггеры. Хотя и для них могут использовать слово latch, но только в качестве глагола «to latch a values into».
Вообще защелки используются в сто-тысячу раз реже чем D-триггеры и как правило присутствуют в блоках для clock-gating. Еще более редкое использование — в latch array и time borrowing, но это не имеет отношение к книжке Таненбаума.
3. В книге не было вообще никакой информации, даже намека на нее, как реализуется упомянутая очередь, никаких read/write pointers в fifo. Очередь — это был просто магический объект в контексте книги, соломенный пропеллер соломенного самолета.
И таких объектов там было навалом на каждой странице. Для нормального образования инженера нужно чтобы после каждой главы учебника он мог бы в идеале реализовать описанное в железе — или хотя бы представлять, как он бы реализовал описанное в железе, если бы у него был бы свободный викенд/неделя/лето.
В книге не было ссылок на языки описания аппаратуры и статический тайминг. Возможно они появились в 6-м русском издании 2018 года, но судя по оглавлению — навряд ли. Каким образом можно понять необходимость конвейера или многоуровневого кэша, если из рассуждений выносится за скобки тайминг, задержки внутри цикла? Получается не инжиниринг, а просто текст для демонстрации эрудиции.
В русской википедии написано «Эндрю Таненбаум также признан как автор учебников для высшей школы по некоторым областям информатики и вычислительной техники, в своих областях книги считаются избранными как стандарт».
Тогда 10 лет назад я подумал «Если это правда, то использование таких книг как стандарт образования навсегда опускает дисциплину проектирования в стране на уровень стран третьего мира — студенты смогут поговорить, но ничего не смогут сделать». Как у Пелевина — больше всего рассуждают о дорогих часах и автомобилях те, кто не могут их купить.
В защиту Таненбаума можно сказать, что его специализацией были операционные системы, и он просто писал о архитектуре компьютера со стороны (изначально он был физиком, а потом занимался софтвером), а в России его наверное промоутили люди, которые наверное сами находились на таком же положении, и им Таненбаум был близок.
К счастью в России выпустили книгу Харрис & Харрис (Цифровая схемотехника и архитектура компьютера), вышло еще много материалов и эта проблема 10-летней давности наверное рассосалась. Или нет?
UPD: Мне написали в комментариях «вы не раскрыли тему пользы учебника по компьютерной архитектуре не для электронщиков, а для программистов». Согласен и дополняю:
К сожалению, в этом месте Таненбаум тоже не фонтан. Возьмем например его главу про кэши. Он не показывает в своей главе (по крайней мере в 4 издании) куски программ для иллюстрации различных случаев временной и пространственной локальности. Такой кусок есть в Харрис и Харрис, а в принстонском курсе есть вот такая полезная картинка:
Вот страница из Таненбаума. Где такая картинка или куски кода?
Для сравнения — вот из Дэвид Харрис и Сара Харрис Цифровая схемотехника и архитектура компьютера:
Вообще по поводу Таненбаума, как указали в комментариях, напрашивается цитата из Фейнмана по поводу физики в Бразилии. Там цитировать можно все, например вот небольшой кусочек:
Я обнаружил кое-что еще, — продолжал я. — Hаугад листая страницы и останавливаясь в любом произвольно выбранном месте, я могу показать вам, почему это не наука, а заучивание во всех случаях, без исключения. Я рискну прямо сейчас, в этой аудитории перелистать страницы, остановиться в произвольном месте, прочитать и показать вам.
Так я и сделал. Тррррр-ап — мой палец остановился на какой-то странице, и я начал читать: «Триболюминесценция. Триболюминесценция — это излучение света раздробленными кристаллами. «.
Я сказал: «Вот, пожалуйста. Есть здесь наука? Hет! Здесь есть только толкование одного слова при помощи других слов. Здесь ни слова не сказано о природе: какие кристаллы испускают свет, если их раздробить? Почему они испускают свет? Вы можете представить, чтобы хоть один студент пошел домой и попробовал это проверить? Они не могут. Hо если бы вместо этого вы написали: «Если взять кусок сахара и в темноте расколоть его щипцами, вы увидите голубоватую вспышку. То же самое происходит и с некоторыми другими кристаллами. Hикто не знает, почему. Это явление называется триболюминесценцией. Тогда кто-нибудь проделал бы это дома, и это было бы изучением природы». Я использовал для доказательства этот пример, но мог взять и любой другой, — вся книга была такая.
Стоит почитать: обзор на книгу Эндрю Танненбаума «Архитектура компьютера»
Могу с уверенностью сказать, не только по своему опыту, но и по опыту многих моих друзей и коллег, что почти всегда вход в профессию разработчика происходит не с основ, скажем так, компьютерной грамотности. А уже где-то посередине между полным новичком и гуру.
Приходя на первое место работы, многие почти сразу начинают решать задачи бизнеса (пусть и не очень критичные). Например, писать высокоуровневый код, деплоить приложения и так далее. Это не хорошо и не плохо. Это просто данность, с которой в любом случае нам придётся иметь дело. А учитывая то количество средств разработки, которое сегодня доступно программистам практически любого уровня, можно говорить о постоянно снижающемся пороге входа в профессию.
И всё-таки, на мой взгляд, знание основ никогда не бывает лишним. Книга Танненбаума «Архитектура компьютера» – это не просто скучный университетский курс, объём которого отпугнул бы новичка. Это настоящая энциклопедия того, как вообще появились современные компьютеры. Причём написанная максимально простым для такого материала языком и приправленная добрым юмором.
Конечно, нельзя сказать, что это стопроцентно необходимое пособие для начинающего программиста, и без знаний из этой книги делать в профессии нечего. Но в книге есть несколько ключевых аспектов, важных для понимания многих вещей из IT. А именно:
- Основная идея «Архитектуры компьютера», на мой взгляд, состоит в том, что сам компьютер и все те протоколы и системы, которые обеспечивают его работу, организованы слоями. То есть каждый уровень абстракции изолирован от остальных уровней, находящихся выше. А наружу предоставляет только некий интерфейс взаимодействия с ним. Скажем, программируя на ассемблере, мы не задумываемся, как устроены транзисторные вентили на кристалле процессора. Или программируя 3D-графику, нам не нужны подробности работы графических шин и так далее. Хотя это никак не ограничивает нас в нашей работе.
- В книге приводится довольно подробный обзор различных систем и протоколов компьютера. С одной стороны, это может показаться излишним и не очень современным. Но с другой даёт важную пищу для размышлений о том, как можно в принципе решать проблемы, с которыми мы сталкиваемся. Например, при проектировании приложений. Описывая историю появления того или иного протокола, Танненбаум показывает путь, который пришлось пройти проектировщикам ЭВМ в разные годы при достижении своих целей. И какие проблемы проектирования встретились у них на пути.
- В конце глав есть великолепные, часто неожиданные вопросы и задания, которые интересно читать и выполнять. Помимо вопросов по основному содержанию главы встречаются и житейские, и даже юридические!
Многие вещи из разработки приложений уходят своими корнями в железо и ОС. Например, многопоточное программирование, системные вызовы, организация памяти (чем, например, отличаются структуры «стек» и «куча» и зачем ОС нужны каждая из них). Всё это затронули в книге. Скажем, для меня стало открытием, что граница между железом и софтом никогда не была фиксированной. В разное время разные вещи то находили себя в аппаратной реализации, то уходили в микроядро.
В интернете всегда есть масса материалов отдельно по каждому их этих пунктов. Но то, что Танненбаум их соединил в одном пособии, как мне кажется, — очень важный момент. В этой же связи также хочется отметить, что автор часто подчёркивает вещи, различные для Windows и Unix-like систем, о которых полезно знать.
Ещё я бы хотел отдельно отметить сам дух книги «Архитектура компьютера». Танненбаум по праву считается идейным вдохновителем Линуса Торвальдса. И уже одно это должно мотивировать нас знакомиться с трудами Эндрю. «Его книги вывели меня на новый уровень», — сказал однажды Линус. Вряд ли можно было бы придумать рекламу лучше. Танненбаум написал книгу живо, остроумно, без лишних деталей — это выгодно отличает её от аналогичных изданий. Я бы однозначно рекомендовал эту книгу всем, кто считает себя причастным к миру IT.