Сегодня взял в руки книжку Эндрю Таненбаума "Архитектура компьютера" (последнее издание на русском языке вышло в 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 издании) куски программ для иллюстрации различных случаев временной и пространственной локальности. Такой кусок есть в Харрис и Харрис, а в принстонском курсе есть вот такая полезная картинка: Вот страница из Таненбаума. Где такая картинка или куски кода? Для сравнения - вот из Дэвид Харрис и Сара Харрис Цифровая схемотехника и архитектура компьютера: Вообще по поводу Таненбаума, как указали в комментариях, напрашивается цитата из Фейнмана по поводу физики в Бразилии. Там цитировать можно все, например вот небольшой кусочек: https://dcn.icc.spbstu.ru/index.php?id=337  Я обнаружил кое-что еще, - продолжал я. - Hаугад листая страницы и останавливаясь в любом произвольно выбранном месте, я могу показать вам, почему это не наука, а заучивание во всех случаях, без исключения. Я рискну прямо сейчас, в этой аудитории перелистать страницы, остановиться в произвольном месте, прочитать и показать вам. Так я и сделал. Тррррр-ап - мой палец остановился на какой-то странице, и я начал читать: "Триболюминесценция. Триболюминесценция - это излучение света раздробленными кристаллами...". Я сказал: "Вот, пожалуйста. Есть здесь наука? Hет! Здесь есть только толкование одного слова при помощи других слов. Здесь ни слова не сказано о природе: какие кристаллы испускают свет, если их раздробить? Почему они испускают свет? Вы можете представить, чтобы хоть один студент пошел домой и попробовал это проверить? Они не могут. Hо если бы вместо этого вы написали: "Если взять кусок сахара и в темноте расколоть его щипцами, вы увидите голубоватую вспышку. То же самое происходит и с некоторыми другими кристаллами. Hикто не знает, почему. Это явление называется триболюминесценцией. Тогда кто-нибудь проделал бы это дома, и это было бы изучением природы". Я использовал для доказательства этот пример, но мог взять и любой другой, - вся книга была такая. Проектировщик CPU, GPU, сетевых микросхем