Сегодня взял в руки книжку Эндрю Таненбаума "Архитектура компьютера" (последнее издание на русском языке вышло в 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ет! Здесь есть только толкование одного слова при помощи других слов. Здесь ни слова не сказано о природе: какие кристаллы испускают свет, если их раздробить? Почему они испускают свет? Вы можете представить, чтобы хоть один студент пошел домой и попро6овал это проверить? Они не могут. Hо если бы вместо этого вы написали: "Если взять кусок сахара и в темноте расколоть его щипцами, вы увидите голубоватую вспышку. То же самое происходит и с некоторыми другими кристаллами. Hикто не знает, почему. Это явление называется триболюминесценцией. Тогда кто-нибудь проделал бы это дома, и это было бы изучением природы". Я использовал для доказательства этот пример, но мог взять и любой другой, - вся книга была такая.

Комментарии (115)


  1. sergeyns
    14.11.2021 21:38
    +3

    По операционкам он так же аморфен. Я отлично понимаю что это не "руководство для чайников по win/*nix", но хотелось бы также каких-нибудь примеров "в железе/коде" а не, например, описания RSA на десяток+ страниц (а те примеры которые есть в книге по конкретным операционкам, такие же аморфные). И если каждый раздел хоть описательно описан (типа управление памятью или потоками происходит в общих чертах так), как всё это работает ВМЕСТЕ..


    1. YuriPanchul Автор
      14.11.2021 21:45

      Отчего же он так был популярен в 2000-е? Просто не разобрались или привыкли к научпопно-описательным книгам?


      1. victor_1212
        14.11.2021 22:23
        +5

        Таненбаум профессор из Нидерландов, imho книги среднего уровня, удобные для чтения лекций по ним, опыт практического программирования у него типа ограниченный, от жизни слегка оторванный, в 1990-2000х в связи с появлением PC, в программисты двинуло большое количество плохо подготовленных людей, соответственно его книги стали более-менее продаваться, тот кто действительно может писать хорошие современные книги по предмету, вероятно занимается более важными делами, примерно так

        ps

        >Отчего же он так был популярен в 2000-е?

        этого не заметил, может в россии его книги только перевели?


        1. qrdl
          15.11.2021 10:25
          +16

          опыт практического программирования у него типа ограниченный, от жизни слегка оторванный

          Серьезно? Это о человеке, практически в одиночку написавшем Minix?


          1. khabib
            15.11.2021 14:21
            +1

            Которая, в свою очередь, является одной из самых распространенных ОС (так как используется в intel IME)


            1. victor_1212
              15.11.2021 20:57
              +1

              в свою очередь, об использовании которой Таненбаум вообще не знал порядка 10 лет, потому как Intel ему не сообщил, профессор написал систему для своих студентов Vrije Universiteit, нигде кроме VU насколько знаю он не работал до выхода на пенсию, узнав что Intel ее использует, написал письмо:

              "Thanks for putting a version of MINIX inside the ME-11 management engine chip used on almost all recent desktop and laptop computers in the world. I guess that makes MINIX the most widely used computer operating system in the world, even more than Windows, Linux, or MacOS. And I didn't even know until I read a press report about it."

              ps

              ничего не имею против профессора Таненбаума, судите сами какая операционная система в мире самая распространенная :)


        1. Polarisru
          15.11.2021 10:31
          +2

          книги среднего уровня, удобные для чтения лекций по ним

          С самого института и до сегодняшнего дня мне не дает покоя вопрос - зачем читать лекции и крайне неэффективно тратить на это время, если уже есть книга?


          1. Kanut
            15.11.2021 11:37
            +1

            С самого института и до сегодняшнего дня мне не дает покоя вопрос — зачем читать лекции и крайне неэффективно тратить на это время, если уже есть книга?

            Ну например потому что правильную книгу(или точнее книги) тоже кто-то должен подобрать. И вообще-то предполагается что у студентов при прочтении книг/прослушивании лекций возникают вопросы и кто-то должен на них отвечать :)


          1. masai
            15.11.2021 14:07
            +2

            Если лекция сводится к чтению книги вслух, то конечно, полезного в этом мало. А вообще, хорошие лекции (и другие виды занятий с преподавателем) и книги прекрасно дополняют друг друга. На лекции даётся обзор, общее понимание, рассказываются вещи, которые в книгу не вошли.

            Изучение чего-то — это комплексный процесс, который включает множество видов деятельности. К сожалению, нельзя просто прочитать и после этого знать. Нужно делать упражнения, повторять, пытаться взглянуть на вещи с другого ракурса, проложить мостики между разными фрагментами знаний. И занятия с хорошим преподавателем в этом очень полезны.


            1. Polarisru
              17.11.2021 16:29

              нельзя просто прочитать и после этого знать

              Для этого и есть практикумы, семинары, лабораторные, курсовые проекты, тестирование и т.д. Куда полезнее потратить время на них, а не на переписывание книги в конспект в обстановке, когда студенты не имеют ни времени, ни желания (по причине отсутствия практического применения только что записанных знаний) задавать вопросы.


      1. sergeyns
        15.11.2021 00:26

        Да просто других книг на русском языке то и нет... Есть уж совсем узкоспециальные по отдельным типам процессоров...


        1. YuriPanchul Автор
          15.11.2021 00:42
          +6

          Как это нет? В смысле? А Цифровая схемотехника и архитектура компьютера Харрис & Харрис?

          Там все уровни - логические элементы, проектирование на уровне регистровых передач, Verilog и VHDL, архитектура, микроархитектура, использование готовых и все привязано к реальному проектированию как сейчас делается в компаниях. Даже про out-of-order superscalar есть в главе 7, и гораздо более внятно чем у Таненбаума. Есть издание c примерами простого процессора на архитектуре MIPS, на ARM, вот выходит с примерами RISC-V.


          1. victor_1212
            15.11.2021 03:13
            +3

            David Harris вообще из MIT, потом Intel, и др., PhD Stanford, сейчас с женой в HMC в Калифорнии, он типа за свою жизнь сделал столько, что на нескольких человек хватит, все таки в us делается >50% sw в мире, странно если бы книг не могли писать по предмету, но моя любимая за все время таки Mead, Connay "Introduction to VLSI", эта книга вообще типа памятника заслуживает :)

            ps

            imho стоит взглянуть на страницу David Harris в HMC:

            http://pages.hmc.edu/harris/


          1. FirsofMaxim
            15.11.2021 10:24
            +5

            Прекрасная книга, читается легче Таненбаума.


      1. Mox
        15.11.2021 01:01
        +6

        Просто с Торвальдсем вовремя посрался. Если бы не публикация этого срача, я бы и не узнал про Танненбаума.


      1. Hardoman
        16.11.2021 05:16

        Я считаю, что он заслуженно популярен среди тех, кто недостаточно подготовлен (а это большинство студентов и начинающих разработчиков) для того, чтобы погрузиться в мир микроархитектуры. И я скажу, что если все усложнять ещё больше, осилить на этом этапе вообще будет нереально.

        Начинать нужно вообще с микроархитектуры для чайников, а потом уже тоже самое читать в более сложном изложении со снипетами кода. И отдельная книга должна быть с лабами и переносом на железо.

        Нереально и даже плохо запихать все и сразу в одну книгу потому не возможно будет прочитать до конца никогда вообще.


        1. YuriPanchul Автор
          16.11.2021 05:36
          +1

          Я двумя руками за упрощение, но в том-то и проблема, что Таненбаум не упрощает, а наводит тень на плетень. Если не верите, почитайте у Таненбаума таблицу его микроинструкций и текст вокруг них. Таненбаум интерпретирует то, что он увидел у коллег-микроархитекторов в 1970-х и пересказывает это студентам. Если вы хотите увидеть как выглядит хорошая микроархитектура для чайников - выше ссылка на главу 7 Харрис & Харрис, можете заценить и сравнить с главой "Микроархитектура" у Таненбаума. У Харрисов и проще, и корректнее, так как Дэвид Харрис до преподавания в коледже Харви-Мадд в южной Калифорнии работал инженером-проектировщиком в Интеле уже когда использовалась современная методология.

          Если не хотите читать текст или ходить по ссылкам - посмотрите вот этот Gif schoolRISCV ниже - более чайничного процессора сделать невозможно, причем он реализует подмножество настоящей используемой архитектуры RISC-V, в отличие от таненбауманского Mic-1 который вне его учебника не существует:

          https://github.com/zhelnio/schoolRISCV


        1. YuriPanchul Автор
          16.11.2021 05:42
          +1

          Отдельная книга с лабами и переносом на железо (реконфигурируемые микросхемы ПЛИС/FPGA) уже есть - книга 2020 года, ее можно купить и сделать чайничный процессор -

          ЦИФРОВОЙ СИНТЕЗ: ПРАКТИЧЕСКИЙ КУРС


          1. Hardoman
            28.11.2021 00:31

            Спасибо, познавательно.


      1. AKonia
        16.11.2021 09:07
        +2

        ПМСМ причин несколько:

        а) Слабая обратная связь между профильными издательствами и специалистами(в т.ч. педагогами) связанными с предметной областью - как итог разрекламированная на западе, за счёт своей простоты книга - незаслуженно стала считайте учебником по дисциплине.

        б) Печальное пренебрежение принципами педагогики и даже дидактики в современной образовательной системе, что приводит к тому, что часто имеем либо перенасыщенный лишними(не являющимися необходимыми) сложностями, трудноусвояемый материал, либо напротив легкоусвояемый материал, в избытке избегающий сложностей, но ценой содержания, состоятельности и прикладной значимости на практике материал.

        в) Сопричина к пункту а) - чрезмерная прозападность мысли области ИТ - в известной мере влияние запада и США в частности на инфотех влияет на впечатлительные головы, что порождает антипедагогичные заявления уровня "нужно читать в оригинале", от чего спрос падает, да и обратная связь не происходит, т.к. те кто мог оценить книги на другом языке - часто безразличны к возможности упростить, поднять качество, ускорить освоение знаний другими.

        г) Сопричина к пункту в) - плохо устоявшаяся обратная связь между издательствами,переводчиками,педагогами с одной стороны и специалистами профильных областей с другой - породило печальную ситуацию с терминологической базой - сплошной разброд и шатание - присутствуют крайности на любой вкус - от переводов на "вкус переводчика", до порочных крайностей изобилия заимствования и транслитерации терминов и определений(хотя это старая песня с заменой терминологии и неадаптированного перевода пошла ещё с 60-ых годов с украинских издательств, которые в то время курировали перевод иностранной литературы по технике и кибернетике)


        1. khim
          17.11.2021 16:11

          Понимаете, если бы в статье было сказано, что Таннебаум устарел и что его изучение больше подходит для того, чтобы ознакомиться с историей вопроса, но современные технологии там не описаны, то никто бы и не спорил — у того же Кнута (всем известного, но никем не читанного) тоже есть эта проблема. Пеереход с MIX на MMIX, скорее всего он осуществить не успеет.

          Но рассказывать, что у Танненбаума кучи ошибок, которых у него, в общем-то, нет (да, есть опечатки, но я даже в 20м переиздании задачника по физике их находил в своё время)? Ну зачем же врать-то!

          P.S. И да, есть много других книг, более полезных на тему архитектуры компьютеров. С тем, что Танненбаум разрекламирован слишком широко — я согласен. Это вообще другой вопрос.


          1. AKonia
            17.11.2021 22:50

            Честно говоря моё мнение о книжках Таненбаума - они жидковаты и бестолковы(если читать c пристрастием от корки до корки), причём что по ОС, что по ЭВМ, т.к. изобилуют поверхностностью и только если отжать из них воду(сжать вчетверо), то только тогда проглядываются +- толковые ознакомительные пособия.

            Моё личное негодование после прочения архитектуры было сопоставимо тому, если бы Страуструп посвятил 1000+ страниц своей большой книги по плюсам обсуждению Hello World, да ещё на Си.

            ПМСМ по ОСям лучше Сталлингса(он последователен и пишет +- по делу) читать и статьи в сети, а по архитектуре статьи и только беглое чтение Патерсона/Хеннеси, но важно - строго по диагонали, методом поиска стоящей информации - сэкономите кучу времени.


    1. lealxe
      14.11.2021 23:54
      +8

      Мне, когда читал, показалось, что как это все работает вместе в конкретной системе, надо смотреть в первоисточниках, которые он дает, и так и надо, у него самого все обще. Там, ЕМНИП, есть у него ссылка на FreeBSD Design and Implementation, например.

      Ну и он просто хорошо пишет, как мне опять же показалось. Очень легко читать. Ту же FBSD D&I я скорее как справочник использую, а Таненбаума можно просто читать с начала и до конца по порядку следования глав.

      P.S.: По поводу того, что ниже написали, как он ругал Линуса за монолитное ядро (особенно мне запомнился ответ Линуса про "ученого и исследователя" xD ), а Линус оказался прав - ну, умозрительно микроядерная архитектура и правда красивее, нет?


      1. alexxz
        15.11.2021 01:03
        +1

        Микроядерная архитектура навешивает новые уровни абстракций. За каждый уровень абстракции приходится расплачиваться производительностью. Либо производительностью ПО. Либо производительностью программиста. Это как рассуждать про выбор алгоритма сортировки... Вот же есть QuickSort. Но, если в массиве всего 3 элемента, то квиксорт может оказаться не самым лучшим решением.... https://golang.org/src/sort/sort.go


  1. maxood
    14.11.2021 21:52
    +5

    Вспоминая дебаты Торвальдса и Таненбаума тридцати-летней давности, скорее, Таненбаум несет не совсем верные идеи. Даже более, он написал Торвальдсу - "Be thankful you are not my student. You would not get a high grade for such a design". Но! Появился бы Linux, не будь Таненбаума? :)


    1. Sdima1357
      14.11.2021 23:17
      +21

      При всем уважении к ним обоим, эта ниша пустой не осталась бы. "Свято место пусто не бывает".

      Freebsd там или ещё что нибудь вроде нее. " Если бы Эдисон не изобрел лампочку, то мы бы работали за компьютерами в темноте"?


  1. richman1000000
    15.11.2021 00:21

    да в общем то архитекрута компьютера с тех пор то особо и не изменилась.
    RAM, CPU, chipset, disk system.
    Я интересовался и старыми машинами и мейнфреймами в свое время, хотя являюсь IT спецом выпуска 2005 года.
    Так что я считаю книгу все же полезной к ознакомлению.


    1. YuriPanchul Автор
      15.11.2021 00:36
      +3

      Здрасте, как это не изменилась? Минимум два раза все было полностью переписано. Во-первых, сам же Танненбаум упоминает (но потом не следует своему упоминанию), что в 1980-х процессоры стали не microcoded, а hard-wired. Во-вторых у него полностью, абсолютно пропущена вся революция в проектировании на уровне регистровых передач с использованием языков описания аппаратуры, которая началась в конце 1980-х и стала мейнстримом в 1990-е. То, что он пишет - это взгляд программиста на железо 1970-х годов с косметическими поправками.


      1. code07734
        16.11.2021 17:22

        Как же hard-wired если микрокодом уязвимости исправляют? Или его влияние было сведено к нулю? Или я не так понимаю "hard-wired'


        1. YuriPanchul Автор
          16.11.2021 17:26

          Я привел ниже ссылку и скриншоты книги Шена-Липасти (лучшей в своей области) в которой написано что microcode sequencer для микрокода загружаемого из памяти - работает только для редко встречающися сложных инструкций, а большинство инструкций получается из-за перекодирования cisc инструкций в risc-like микрооперации без участия загружаемого микрокода - см. коммент https://habr.com/ru/post/589091/#comment_23705965


          1. code07734
            16.11.2021 17:52

            cisc инструкций в risc-like микрооперации

            Это я знаю. Но почему то мне подумалось что вместо исполнения инструкций вызовом подпрогаммы из ROM, добавили какое-то крайне простое in-order ядро и записали на его isa в ROM программу-декодер. Кажется за счет конвееризации всех стадий исполнения процессором кода этот вариант вообще не будет уступать/отличаться от hard-wired. И это более гибко


            1. YuriPanchul Автор
              16.11.2021 18:42

              Если так сделать, будет гораздо хуже тайминг, чем у комбинационной логики декодера. Кроме этого вспомните что в высокопроизводительном процессорном ядре выбирается сразу несколько инструкций, причем разной длины


              1. Sdima1357
                16.11.2021 20:15

                Ну пока что интел(с микрокодами) покупает все и всех подряд, а ARM не знает кому продаться , MIPS напомните когда последний вышел (2013-2014)?, RISC-V еще не завелся , что там еще без микрокодов ??? Если практика != теории, то может стоит задуматься ?


                1. amartology
                  16.11.2021 20:35
                  +1

                  ARM не знает кому продаться
                  Расскажите это миллиардам смартфонов) Их в штуках в мире сильно больше, чем x86-based ПК.


                  1. Sdima1357
                    16.11.2021 20:40

                    Ну да , это общеизвестно, а разработчик в убытке. И в старшем, серверном сегменте ARM-ы пока не конкурентны. Возможно это временно, а может и нет. Вот NV их купит и закроет всем кислород.И что будете делать ?

                    PS

                    ARM не знает кому продаться

                    Холдинг разумеется, а не процессор.


                1. YuriPanchul Автор
                  16.11.2021 23:04

                  Я привел фото страниц из шена-липасти, которые объясняют, что делает Интел. Интеловских микрооперации - это не микрокод в стиле vax-11 который описывает у себя в книжке таненбаум. Хотя микрокод с microcode sequencer в интеловском процессоре тоже есть, но он делается для редко используемых сложных инструкций. Большинство интеловских инструкций превращаются в декодере в risc-like операции и скармливаются (ещё с 1996 года, то есть с Pentium Pro) динамическому out-of-order конвейеру который в high-end ARM, Intel и AMD устроен принципиально похоже. В книге Таненбаума этого кстати нет.

                  Микрокод там - это вспомогательная штука сбоку.

                  Обращаю внимание, что даже кафедра Интела в МФТИ изучала сначала микроархитектуру на основе MIPS, а сейчас на основе RISC-V. Вот доказательство:

                  https://github.com/MIPT-ILab/mipt-mips/wiki/About-Us

                  https://mipt-ilab.github.io/


                  1. Sdima1357
                    16.11.2021 23:33

                    микрокод в стиле vax-11

                    Лет прошло с тех пор немало. Нельзя сравнивать транзисторные бюджеты что были тогда и те которые доступны сейчас. Соотвественно и подходы со временем меняются. Так что неудивительно.

                    Out of order

                    И создает уязвимости с монолитным ядром OS. Так что в чем-то Танненбаум прав :)...


  1. GREGOR_812
    15.11.2021 00:46
    +4

    По операционным системам у него две книги: "Современные операционные системы" вроде называется -- такой же абстрактный труд, как и "Архитектура". Зато вторая, где разбирается проектирование ОС с примерами из MINIX, очень конкретна и полезна. Но в бумажном виде я её так и не нашёл.


    1. Rigidus
      15.11.2021 04:24

      Как называется вторая?



  1. Khort
    15.11.2021 01:27
    +2

    Про пассаж на тему защелок не понятно. Они использовались, используются, и будут использоваться. А time borrow в STA такой же устоявшийся термин как setup или hold. Другое дело, что дизайнеры зачастую не знают как с защелками обращаться и проектировать на них ... но, это проблема самих дизайнеров. Настоящие лоу-пауэрные штуки делаются на защелках, а не флопах. Зависит от дизайна, конечно же.


    1. YuriPanchul Автор
      15.11.2021 02:39
      +1

      Я сам использую защёлки в дизайне в местах которые я указал (для clock gating и latch array для low power). Ну и что? Их нужно использовать в вводном тексте для защелкивания операндов alu? Серьезно?


    1. YuriPanchul Автор
      15.11.2021 02:51
      +1

      Вне контекста Таненбаума: раз уж вы об этом заговорили, приведите пример дизайна на защёлках, который лучше чем на флопах, и который не сводится к схемам для clock gating и latch array, и заодно как интегрировать такой дизайн в бОльший дизайн на флопах.


      1. Khort
        15.11.2021 09:49
        +3

        Хорошо, пример. Есть кусок комб. логики с большим количеством XOR и флопами на выходе. В этой схеме будет сумашедший процент потребления за счет паразитного свитчинга, верно? Разламываем флопы на две части, и левые защелки двигаем влево в "середину" комб схемы, отсекая таким образом часть паразитного свитчинга. Профит.

        Но иногда весь дизайн строят на защелках. К примеру, есть такая штука как pulsed latch. Там получается экономия на ликедже (защелка в два раза меньше) и холд-бафферах (практически не нужны), за счет более сложной схемы тактирования.


        1. YuriPanchul Автор
          15.11.2021 12:27
          +2

          Про первый пример я что-то такое слышал. Это рассказывал человек, с которым я работал и который начинал карьеру ещё в Amdahl, а сейчас работает в Apple. Про pulsed latch поищу, спасибо. Ну чип на миллиард транзисторов только на латчах вряд-ли практично строить (такое не поддерживает маршрут проектирования), какой процент логики в дизайне какого размера делался на защёлках?


          1. Khort
            15.11.2021 13:27
            +2

            Зависит от задачи. К примеру, в чипах для биткоин майнинга вычислительные конвееры имеют глубину ~30-40 стадий (точно уже не вспомню) и на ~90% строятся на защелках - можно считать что 89% всего чипа на защелках. В этой области рынка микроэлектроники самая жесткая конкуренция Ватт/такт (хеш/ватт).

            Борьба с паразитным свитчингом только недавно стала актуальной - на тонких finfet процессах. Раньше не заморачивались.

            Pulsed latch - давно забытое старое, из 80х. К примеру мипс R3000 был полностью на защелках (хотя не уверен насчет палс - кажется, там был просто 50/50 меандр в управлении). А сейчас .. у многих вендоров (пример - dolphin) есть соотвествующие айпи на продажу - защелки и палс-генераторы.


  1. kuftachev
    15.11.2021 01:30
    +16

    Когда мы говорим про учебное пособие, то нужно понимать для кого оно написано. То есть, бывает неорганическая химия для химиков, а бывает для геологов, это две книжки у которых очень мало общего.

    Конечно, если Вы занимаетесь проектированием процессов, Вы лучше знаете как это делается и что неправильно в самой книге.

    Но кто сказал, что эта книга для тех, кто проектирует процессоры, а не для программистов или системных администраторов?

    Я считаю, что Таненбаум абсолютно полезное чтение потому, что он учит думать, понимать концепции, смотреть на вещи с разных точек зрения.

    Та же его книжка по сетям даёт отличное предоставление о том, как это все работает, а те, кто будет этим заниматься как основным направлением деятельности, будут читать ещё и более специфичную литературу.


    1. YuriPanchul Автор
      15.11.2021 02:44
      +1

      Но если читатель его книжки по архитектуре решит реально развиваться в сторону микроархитектуры и пойти работать проектировщиком RTL (register transfer level) в любую электронную компанию - ARM, Intel, NVidia итд - ему нужно будет сначала вытряхнуть из головы вот тот взгляд Таненбаума из 1970-х и всякие мутные объяснения вокруг этого, а потом выучить все это заново.


  1. aborouhin
    15.11.2021 01:34
    +2

    Хм... Я Танненбаума всегда воспринимал как хорошее популярное изложение для подготовки квалифицированного пользователя. Которому надо именно что в общих чертах знать, как эта коробка, за которой ему предстоит всю жизнь сидеть, устроена. Но уж точно не как книгу для разработчика - ни софта, ни тем более процессоров. Именно в таком качестве несколько лет назад подарил 3 бумажных тома (архитектура компьютера, ОС и сети) своим племянницам, когда они классе в 9 или 10 учились. Как более вменяемую альтернативу школьным урокам информатики, но не более.


    1. YuriPanchul Автор
      15.11.2021 02:56
      +3

      Ну и как, племянницы поняли как скрестить микрокод и внеочередное выполнение?


      1. aborouhin
        15.11.2021 03:05
        +9

        Ну одна чего-то там сейчас пишет, правда игрушки на Unity, а не микрокод :) Считаю свою задачу выполненной - в мир IT в той или иной форме погрузилась, а дальше уже сама.

        А смысл в сей затее был ведь не в том, чтобы они поняли 100% написанного, а в том, чтобы получили какой-то общий кругозор, который позволит ориентироваться в теме, знать, что при необходимости гуглить, и не пугаться незнакомых слов. Мне кажется, что Танненбаум для этой цели вполне подходит. Изложение популярное, читать интересно, а уж то, что что-то у него там неактуально или не очень полно описано - для поставленной задачи дело десятое, кому надо будет погрузиться в тему, тот ещё десятки книжек и многие тысячи статей/постов/обсуждений прочитает, и все нужные выводы сделает.


        1. YuriPanchul Автор
          15.11.2021 03:30
          -3

          Микрокод сейчас и не используют как универсальное средство дизайна, как использовали в 1970-е. От этого отказались ещё в 1980-х, так как он мешал конвейеризации процессоров, и оставили его в некоторых уголках. То, что Таненбаум его использует, порождает то, что когда сейчас начать рассказывать про современную методологию проектирования на основе синтеза языков описания аппаратуры (то что появилось в конце 1980-х, вошло во все айфоны и не описано у Таненбаума), то часто находится кто-нибудь, кто спрашивает "ааа, Verilog - это микрокод?" То есть это типа как если поместить в головы геологию до открытия движения тектонических плит, то потом прийдется объяснять обученным, что плиты - это не геосинклинали


          1. BugM
            15.11.2021 03:47
            +1

            Кто микрокод не использует? Интел, например, вовсю использует. Даже патчит иногда.

            https://en.wikipedia.org/wiki/Intel_Microcode


            1. YuriPanchul Автор
              15.11.2021 04:48
              +2

              Это именно то, о чем я говорю: так как архитектура x86 появилась в 1978 году, когда были популярны microcoded implementations, то 8086 был реализован так. Но от этого начали избавляться ещё в 486, а Pentium Pro стал перекодировать большинство часто используемых инструкций в risc-подобные микроинструкции ( это не то же, что микрокод 1970-х) и отправлял их на динамический конвейер, таким образом что внутри что Интел, что out-of-order RISC процессоры стали микроархитектурно, по строению конвейера, похожи.

              Микрооперации - это не микрокод. Только часть редко встречающихся операций включает microcode sequencer, где в памяти лежит этот самый микрокод. То есть это не мейнстримная часть процессора, а только для некоторых медленных команд


  1. mc2
    15.11.2021 03:10

    А как же его Minix, который взяли в работу в Intel?


    1. YuriPanchul Автор
      15.11.2021 03:22

      Minix наверное был хороший, но вот эта глыба по архитектуре - это явно не его


  1. SShtole
    15.11.2021 03:43
    +3

    Как у Пелевина

    Скорее уж, как у Фейнмана в Бразилии.


    1. YuriPanchul Автор
      15.11.2021 03:49
      +1

      Кстати да! Тут можно процитировать всю главу Фейнмана про Бразилию от начала до конца, и она будет применима.


  1. Golex
    15.11.2021 04:23
    +1

    Напишу не в тему потому, что обсуждаемые книжки не читал. В свое время книга "Многоуровневая организация ЭВМ" еще издательства МИР 1979 года, наверное, дала мне понимание, что "огры как лук" (с) Шрек и помогла понять как справляться со сложностью устройства компьютеров.


  1. vsb
    15.11.2021 08:56
    +1

    Я воспринимаю подобные книги, как действительно что-то для общего кругозора, а не как что-то, чего будет достаточно для практических целей создания компьютера или ОС. Книжки из разряда "галопом по Европам" тоже нужны, имхо. Хотя бы для того, чтобы, когда возникнет нужда, уже примерно представлять, куда углубляться.


    1. YuriPanchul Автор
      15.11.2021 09:13
      +1

      Конкретно с Таненбаумом галоп по Европам заведет в болото, так как он знает это понаслышке от других людей и имеет базу 1970-х годов, на которую просто наводил косметику, добавляя всякие джава процессоов. В частности он пропустил революцию в проектировании с помощью логического синтеза конца 1980-х.

      Для галопа по Европам лучше или Паттерсон и Хеннесси, или Харрис и Харрис. Они и понятнее, и четко привязаны к современной реальной жизни в архитектуре и микроархитектуре процессоров.


      1. khim
        15.11.2021 15:30
        +1

        В частности он пропустил революцию в проектировании с помощью логического синтеза конца 1980-х.

        Отлично. Однако предположим, что книжка Танненбаума — это “химия для геологов”. То есть описание железа для программистов. При написании операционок низкоуровневую архитектуру процессоров нужно учитывать, так что наличие такой книжки именно у Танненбаума разумно.

        Ну и где, в каком месте, отсутствие “послереволюционного” описания архитектуры помешает программисту? А это, внезапно, 90%, если не 99% потенциальных читателей (почти во всех вузах программистов, которые никогда не будут рарабатывать процессоры тоже обучают архитектуре).

        У вас же с точки зрения наиболее вероятного читателя книждка в статье не рассмотрена и даже в опросе такого варинта нет. Только и исключительно взгляд с точки зрения разработчика процессоров. Но разработчкиов процессоров в этом мира — на порядок (два порядка? три порядка?) меньше, чем программистов! Почему вы рассматриваете книжку не с точки зрения её чиьтателя, а исключительно со своей?


        1. YuriPanchul Автор
          15.11.2021 18:46
          +2

          Насчёт того, что в опрос надо было поставить "для программиста - понять как архитектура и микроархитектура привязаны к софтверу" - я с вами согласен. Я сам думал такое вставить в опрос уже после опубликования поста, но решил не менять. Это валидное возражение.

          А вот насчёт аналогии с химией . Представим себе учебник по органической химии, в котором отсутствуют молекулярные орбитали и степени окисления, а вместо это нудно расжевывается теория валентности 19 века, но в сочетании с обзором продукции химических предприятий 20 века. Понятно, что если выучить студентов по такому учебнику, их потом нужно будет переучивать заново, и некоторые вещи из выученного им будут просто мешать, вызывать ложные ассоциации (как после чтения Таненбаума люди спрашивают "Verilog - это микрокод?) Вот такой учебник химии - это таненбаум.


          1. khim
            15.11.2021 19:23

            Представим себе учебник по органической химии, в котором отсутствуют молекулярные орбитали и степени окисления, а вместо это нудно расжевывается теория валентности 19 века, но в сочетании с обзором продукции химических предприятий 20 века.

            Ну то есть стандартный такой, типичный, школьный, учебник органической химии 20 века, после которого школьники не могут объянить почему у фталиевой кислоты не бывает двух изомеров (через двойную связь и через одинарную в бензольном кольце)? Предствил. Собственно и представлять ничего не нужно: большинство советских учебников органической химии так и были написаны.

            Там если и был раздел, объясняющий почему у бензола все связи имеют одинаковую длину, то это была, скорее, врезка, призванная показать что “всё на самом деле несколько сложнее”, но подробности оставить ВУЗу специализированному.

            Понятно, что если выучить студентов по такому учебнику, их потом нужно будет переучивать заново, и некоторые вещи из выученного им будут просто мешать, вызывать ложные ассоциации (как после чтения Таненбаума люди спрашивают "Verilog - это микрокод?)

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

            Для подавляющего большинства школьников даже и такой учебник не особо нужен, как показывает практика, но в качестве чего-то, что может побудить кого-то к чтению уже более серьёзных книг — годится.

            Вот такой учебник химии - это таненбаум.

            Ну да. Полезная книжка для людей, которые не будет разрабатывать процессоры. И да, слишком поверхностная для тех, кто будет. Может и не самая лучшая, в своём классе, но уж точно неплохая и явно не вредная.

            Где вы видите “вред для образования”?

            P.S. Вы всё время несёте какую-то чушь про якобы ошибки, вами найденные и показанные, но все примеры относятся к категории “сейчас так не носют, это уже не модно”. Возможно. Но ни одной фактический ошибки вы так и не привели, что для меня — вполне себе показатель качества.

            P.P.S. Ну вот чем Танненбаум отличается от учебника, по которому один мой знакомый год назад изучал C++ используя Turbo C++ 3.1 (я не издеваюсь, вот сборка для 64 битной Windows 11 к этому курсу, сам курс, извините, на хинди, так что вряд ли вы его сможете прочитать)? Да ничем, в сущности. Просто вы не понимаете, похоже, что с точки зрения образовательной системы, технологии 30-50 летней давности (и более старые) — это то, что описывается в большинстве учебников, а если где-то речь заходит о технологиях 10-20 летней давности, то это будет, в любом колледже, охарактеризовано как что-то суперноваторское и мегаэкспериментальное.


            1. YuriPanchul Автор
              15.11.2021 21:15
              +1

              *** Ну вот чем Танненбаум отличается от учебника, по которому один мой знакомый год назад изучал C++ используя Turbo C++ 3.1 ? Да ничем, в сущности. ***

              На ТурбоСи вы можете сесть и написать кучу полезных для обучения программ - начиная от сортировки пузырьком, игры жизнь и ханойских башен до парсирования выражений LR(k) парсером, задачи про лифт от Кнута (моделирование дискретных событий) и программу игры в шашки перебором с возвратами. Этот же код вы можете использовать потом - gcc и llvm проглотит ANSI C 1990 без проблем.

              Что вы можете сделать с главой Таненбаума по микроархитектуре? Разглядывать сто страниц невыразительных картинок и описаний его типа "Если один или несколько битов в поле JAM равны 1, то потребуются еще некоторые действия. Если бит JAMN равен 1, то триггер N соединяется через схему ИЛИ со старшим битом регистра MPC. Если бит JAMZ равен 1, то триггер Z соединяется через схему ИЛИ со старшим битом регистра MPC. Е" ?

              Да, для Mic-1, самой простой из его учебных машин, есть симулятор, но вне курса Таненбаума он не существует.

              Так что в сущности отличается.


              1. khim
                15.11.2021 21:38

                На ТурбоСи вы можете

                На Turbo C — да. Но речь ведь про курс C++. Turbo C++ 3.1 1991го года и ANSI C++ 1998го года (на котором современный C++ основан) отличаются, в мелочах, очень и очень заметно.

                Этот же код вы можете использовать потом - gcc и llvm проглотит ANSI C 1990 без проблем.

                Не проглотит даже простейший пример. На #include <iostream.h> поперхнётся.

                Да, для Mic-1, самой простой из его учебных машин, есть симулятор, но вне курса Таненбаума он не существует.

                Точно также, как и #include <conio.h> вне учебного курса. Ибо реализовать gotoxy и kbhit поверх современных фреймворков — весьма нетривиальная задача, а главное — неблагодарная. Сегодня UI с помощью символов псевдографики и без цикла событий никто не делает.

                Но вот знание языка из курса C++ вынести можно, как и понимание того, как, грубо, устроен процессор из курса Таненбаума.

                Так что в сущности отличается.

                Существенных отличий — не вижу. Извините.


                1. YuriPanchul Автор
                  17.11.2021 07:37
                  +1

                  Я не хотел это писать, потому что это оффтоп и уводит от дискуссии, но вы задели у меня некую струну. Дело в том, что аккурат в 1991 году я аккурат на TurboC написал символами псевдографики кросс-отладчик для советского авиационного бортового компьютера Орбита-20/700, который продал через малое предприятие рижскому военному училищу. И вот в этом отладчике я сделал цикл событий, чем очень гордился, так как до этого научился программировать под Windows 2.1 (а потом 3.0) и про очередь событий там знал. Но на этом не закончилось. Потом я перенес его на SunOS для чего я написал имитацию gotoxy с помощью curses (это на самом деле довольно тривиальная задача на день).

                  Но я при этом считаю что делать такое 30 лет спустя для обучения GUI - это маразм. Курс на хинди для меня не авторитет.


                  1. khim
                    17.11.2021 14:55
                    +1

                    Но я при этом считаю что делать такое 30 лет спустя для обучения GUI - это маразм. Курс на хинди для меня не авторитет.

                    Для вас, по-моему, ничто не авторитет. В принципе. С чего вы взяли, что это был “курс обучения GUI” с очередью событий? Ещё раз прочитайте, блин: это был курс обучения C++! Самый начальный. Рассказывалось как циклы работают, что такое арифметика указателей и чем виртуальные функции от невиртуальных отличаются.

                    Но есть одна проблемка: всё это, формально, никакого UI вообще не требует; но, на практике, ученикам хочется какую-нибудь программу запустить и кнопки потыкать.

                    И вот так уж получилось, что в начальных курсах по языку это никогда не делается с помощью циклов обработки событий и GUI. Неважно какой язык: C++, Java, или, скажем, Rust — всё равно всё начинается с простейших программ, работающих с консолью (вторая глава учебника Rust 2018, например).

                    Но если к обычным консольным функциям добавить gotoxy и kbhit, то можно делать слегка более красочные программы — что разработчики этого курса когда-то и проделали.

                    А потом бац: и из новых компиляторов эти функции исчезли. Что им теперь — курс переделывать? А что — с тех пор арифметика указателей изменилась или виртуальные функции стали работать по другому?

                    В том-то и дело, что 90% этого курса (если не 99%) акутальны и сегодня, хотя пара функций, на которых все примеры в курсе устроены, больше не используются.

                    И с Танненбаумом — та же история!


            1. up40k
              16.11.2021 03:37

              Но ни одной фактический ошибки вы так и не привели, что для меня — вполне себе показатель качества.

              Простите, что влезаю в вашу дискуссию с автором поста. Я не разделяю его позицию.

              Сейчас как раз читаю упомянутую книгу впервые, в общем-то, мне она нравится (хоть и кажется довольно поверхностной), если не считать, что она в переводе и перевод издательства Питер ужасен, читаю с карандашом в руке, ошибок, добавленных переводчиком - очень много.

              Пожалуйста, вот вам фактическая ошибка самого автора (да, я понимаю, что это просто опечатка, но она добралась до 6 издания, что говорит о качестве редактуры как минимум).

              Скриншот


    1. YuriPanchul Автор
      15.11.2021 09:15

      1. SoluS
        15.11.2021 14:38
        +1

        Небольшой оффтоп: Если кто соберётся покупать — в озоне на 1000 дешевле.


        1. Gennadij_Kalin2020
          17.11.2021 12:12

          А на сайте дмк пресс еще дешевле, дпже с доставкой. А если брать еще и по арм дополнение...


  1. coinlite
    15.11.2021 09:19
    +1

    Танненбаум прекрасен именно как научпоп. Его книги интересно читать просто для удовольствия и общего ознакомления с темой. И читать их легко, в отличие от почти всех остальных. Тем и ценны. Например, с моделью OSI я ознакомился именно по его «Компьютерным сетям». Держа в уме отличие эталонной модели от практических реализаций, я, неуч, напоминаю образованным коллегам о нюансах, вытекающих из иерархической структуры, которые они упускают из внимания.

    Танненбаум форева в качестве вводных лекций по идеологии систем, предваряющих углубление в реализации. Для расширения кругозора и для тех, у кого есть время и желание.


    1. YuriPanchul Автор
      15.11.2021 09:29

      Я согласен, что можно легко и увлекательно написать книгу о системе Птолемея, и ее будет читать интереснее чем скучную книгу Коперника с кучей таблиц. Я не знаю, насколько хорошо Таненбаум знает про сети, но как ознакомитель с компьютерной архитектурой и особенно микроархитектурой он просто ведет как он это понимает. Если вы будете поправлять на основе его книги вы можете просто попасть впросак. Например кто-нибудь спросит по байпасы в конвейере, а вы ему про микрокод. Выше в комментах я привел две вводные книги, которые и легко читать, и они при этом корректны, и то что там написано можно реализовать в виде простейшего процессора и запустить его на плате реконфигурируемой логики.


      1. coinlite
        15.11.2021 09:42

        Да, архитектура — не моя специальность. Я админ.


      1. dragonnur
        24.11.2021 04:29

        Коперник был дальше от истины, чем «птолемейцы» в конце «жизненного цикла» своей теории (добивались точности расчётными методами и согласовывали с наблюдениями). Реальный переворот в астрономии совершил Кеплер с эллиптическими орбитами и переносом центра масс системы из геометрического центра в фокус.


  1. LAutour
    15.11.2021 10:22
    +1

    Вообще защелки используются в сто-тысячу раз реже чем D-триггеры

    С точки зрения отечественного электронщика без уточнения типа D-триггера — фраза не корректна.


    1. YuriPanchul Автор
      15.11.2021 10:29
      +1

      Как вы классифицируете D-триггеры - по типа set/reset, enable, posedge/negedge фронт, еще как-нибудь? В чем некорректность?


      1. LAutour
        15.11.2021 10:32
        +3

        В фразе как раз не указан тип синхронизации: по уровню или фронту.


        1. YuriPanchul Автор
          15.11.2021 10:38
          +1

          Хорошо буду указывать по перепаду, то бишь edge-triggered. По английски D-flip-flop подразумевается edge-triggered, так как level-sensitive - это уже D-latch.


          1. LAutour
            15.11.2021 11:00
            +1

            Еще например: сейчас посмотрел название RS-треггера в импортном даташите. Там он назывался flip-flop latch. А там переключение по уровням. Рядовые студенты с ассоциациями на flip-flop и latch могут запутаться.


            1. YuriPanchul Автор
              15.11.2021 12:11

              Покажите даташит. Это необычно.


              1. LAutour
                15.11.2021 13:32
                +1

                www.ti.com/lit/ds/symlink/sn74ls279a.pdf
                «The 279 offers 4 basic S-R flip-flop latches»


                1. YuriPanchul Автор
                  15.11.2021 18:53
                  +1

                  Хм, действительно. 1983 год. Сейчас так в компаниях не говорят. Flip-flop latch - это оксиморон. При современном ASIC design и FPGA design возникают D-flip-flop и немного D-latch, а SR-latch для цифрового проектировщика вне учебника практически не встречаются.


                  1. amartology
                    15.11.2021 20:59

                    RS-лэтчи активно используются в других местах, например в PWM-контроллерах.


  1. marlishink
    15.11.2021 10:31
    -5

    Отличная статья, согласен с автором полностью.


  1. porto
    15.11.2021 11:38
    +5

    Выше уже были комментарии о том, что "Архитектура компьютера" - это не учебник, а обзорная работа, которая отлично подходит для того, чтобы получить первичное представление о том, что вообще происходит в потрохах компьютера. Вы же это отрицаете, а ваша аргументация базируется всего на трех найденных неточностях/упущениях, каждое из которых относится к узкоспециализированным нишевым знаниям, до которых, как мне кажется, большинству читателей дела нет (хотя бы потому, что эти неточности составляют очень малую часть всего материала книги). Да, не очень хорошо, что автор продвигает свое видение некоторых технических моментов, но почему это обесценивает остальную часть материала?


    1. YuriPanchul Автор
      15.11.2021 12:06
      -1

      Я привел три ошибки просто сразу, с наугад взятой страницы. Я сказал, что там такое на каждой странице. Никаким обзором книга Таненбаума сейчас в 2021 году не является. То, что он пишет, очень слабо связано с тем, как работает группа проектирования процессоров в современной компании. Можете для разнообразия сравнить микроархитектурные диаграммы процессоров на сайте arm, в книгах Паттерсона и Хеннесси, Харрис и Харрис, Shen-Lipasti и других учебниках, которые используются для реального обучения современной компьютерной архитектуре.

      То, что в книге отсутствовало в 4 издании упоминание о языках описания аппаратуры, синтезе итд, при том что все процессорные группы так проектировали процессоры с начала 1990-х - ARM, MIPS, Sun, Intel, AMD, Hitachi, Fujitsu, итд итп - показывало что автор вообще не следит что происходит.

      Один из ревьюеров на Амазоне сказал, что автор не определяет термины, с которыми работает, а другой - что книга похожа на сборник статей из Википедии. Я с ними тоже согласен.

      Дело ваше - в качестве научпопа читайте хоть руководство по сборке паровых двигателей или эпос о Гильгамеше. Я написал что это плохо для образования. Потому что выпускать студентов с специализацией "компьютерная архитектура" которые набрались слов но не могут построить процессор в симуляторе и синтезировать свое творение на FPGA плате - это такая же профанация образования, если не большая, как заучивание по буквам формул тригонометрии Алисой Тепляковой.


  1. pvlinux
    15.11.2021 12:13
    +3

    Вы путаете академическое образование и Architecture Developer Manual


    1. YuriPanchul Автор
      15.11.2021 12:17

      Таненбаум - академическое образование в компьютерной архитектуре? А кто же тогда Хеннесси из Стенфорда и Паттерсон из Беркли, авторы самого популярного учебника Computer Organisation and Design? Или скажем Дэвид Харрис и Сара Харрис, авторы Цифровая схемотехника и архитектура компьтера? (Я кстати встречал их в реале кроме Паттерсона и написал пару статей в соавторстве с Сарой Харрис).

      Они, в отличие от Таненбаума, дизайнили процессоры : Хеннесси - MIPS, Паттерсон - SPARC и RISC-V, Дэвид Харрис был разработчиком в Интеле.


      1. pvlinux
        15.11.2021 12:32
        +6

        Квадрат гипотенузы равен квадрату катетов (c) Пифагор, ~2500 лет назад.

        А вот и нифига! (с) Лобачевский, 250 лет назад.

        Вы о чём, люди?!! (с) Теория Струн, 25 лет назад.

        Ну так вот, Таненбаум - это "Пифагор архитектур современных процессоров", - это описание идеи, а не реализаций. Конкретные железяки даны как примеры, из-за того, что технарям сложно мыслить абстрактно.


        1. Gennadij_Kalin2020
          17.11.2021 12:13
          -1

          лобачевский построил планиметрию с пересекующимися параллельными прямыми, а не с отрицания теоремы пифагора.


          1. khim
            17.11.2021 18:05
            +2

            Это же надо столько ошибок понаделать в одной фразе! Талант, не всякий может.

            Параллельные прямые у Лобачевского, внезапно, не пересекаются.

            И теорема Пифагора там не действует (хотя есть свой аналог).

            Почитайте на досуге, если интересно.

            P.S. Ошибки грамматики и орфографии спишем на опечатки, это не так принципиально.


            1. Gennadij_Kalin2020
              17.11.2021 18:32
              -1

              Оказалось действительно, о пересекающихся параллельных прямых, действительно миф. Но я как то еще в школе это слышал. Даже с учителями обсуждал это. Но в принципе в советском научпопе хватало ошибок.

              P.S. Там такая путаница, пересекаются не пересекаются. У всех такой апломб... Будет время уделю внимание.


  1. eridium
    15.11.2021 14:01
    +1

    На первых курсах университета читала эту и другие книги Таненбаума. На научпоп его книга выглядит только первую главу. Дальше трудновато, очень много кратких описаний технологий на одну страницу, без концентрации на чем-то одном. Мне его книги больше подходят для повторения.


    1. sergey-gornostaev
      18.11.2021 17:29

      Почитайте Харисов. После этого возможна переоценка понятия "трудновато".


  1. Gordon01
    15.11.2021 14:03
    -1

    Она плодила не инженеров-проектировщиков, а потенциальных игроков для телевикторины "Что-Где-Когда?" и спорщиков-всезнаек на форумах интернета, которые могли рассуждать часами о микрокоде и джава-процессорах, нагибая собеседников своей эрудицией про очереди микроопераций (стр 291 4-го издания 2003-го года) и защелках в трактах данных (стр. 286), но при этом ничего не могли сделать своими руками.

    Мне кажется, вся советско-российская система образования была нацелена на это по всем областям знаний.


  1. Brak0del
    15.11.2021 14:14
    +1

    Имхо, следует отметить, что книгу читают не только будущие инженеры-проектировщики процессоров, но и будущущие программисты. Программистам не обязательно знать о всей этой кухне латчей, HDL, фифо и микрокода, но желательно знать о базовых вещах типа конвейеризации, спекулятивном выполнении, предсказании ветвлений, кэшах, виртуальной памяти и прочем, что повлияет на производительность их программ и систем. Следует также отметить, что количество проектировщиков процессоров и IP-ядер (к сожалению!) сейчас на порядки меньше количества программистов.


    1. khim
      15.11.2021 16:38
      +4

      Это вы бросьте. Все книги в мире написаны для того, чтобы человек смог придти в отдел разработки процессоров и начать работать. И описания языков PHP и Python. И книжки про операционные системы. И, уж конечно, книжки, описывающие архитектуру компьютера. Это же аксиома! Во всяком случае так считает топикстартер, как я понял.

      Давно я не видел такого уровня снобизма, если честно. Половина комментаторов говорит автору: “эта книга — не для тебя”, но это замечание даже не удостаивается серьёзного ответа, дискуссия, с упорством, досточным лучшего применения переводится в разрез “выпуска студентов с специализацией "компьютерная архитектура"”.

      А кто, блин, вам сказал, что эта книга для них? Или что она будет у них единственной? Это было бы бесконечно глупо, но автору ведь пофиг на то, что подавляющее большинство читателей не будут студентами подобной специализации. Важно же, что то, что он [Таннебаум] пишет, очень слабо связано с тем, как работает группа проектирования процессоров в современной компании. А тот факт, что на каждого человека из группы проектирования процессоров приходится не одна сотня разработчиков софта, которым, внезапно, знание того как в общих чертах устроен компьютер и процессор тоже может оказаться небесполезно.

      Я воспринимаю Танненбаума как расширенную версию вот этой вот книжки, но эта книга крайне плоха ведь, с точки зрения группы проектирования процессоров в современной компании…

      P.S. Хотя, разумеется, это не означает, то Танненбаум — идеален. Но просто если не ожидать от него того, что он даже не пытался достичь, то будет… ну не будет, по крайней мере, вот этих претензий идиотских.


      1. YuriPanchul Автор
        15.11.2021 19:41
        +1

        Я согласен, что мне нужно было в моем посте сделать бОльший упор на архитектуру для программистов. К сожалению, в этом месте Таненбаум тоже не фонтан. Возьмем например его главу про кэши. Он не показывает в свое главе (по крайней мере в 4 издании) кусков для иллюстрации различных случаев временной и пространственной локальности. Такой кусок есть в Харрис и Харрис, а в принстонском курсе есть вот такая полезная картинка:

        Вот страница из Таненбаума. Где такая картинка или куски кода?

        Для сравнения - вот из Дэвид Харрис и Сара Харрис Цифровая схемотехника и архитектура компьютера:


        1. khim
          15.11.2021 20:27
          +4

          По-моему вы великолепно подтвердили мой тезис.

          Вот страница из Таненбаума. Где такая картинка или куски кода?

          В курсе, описывающим структуры данных и алгоритмы, очевидно. Где как раз и объясняется как можно устроить очередь на массиве и после которого вам не нужны будут картинки, которые вам так нравятся. И Танненбаум, резонно, ожидает, что программист, лезущий изучать уже и архитектуру процессора, подобный курс прочитал и все упражнения там проделал.

          Для сравнения - вот из Дэвид Харрис и Сара Харрис Цифровая схемотехника и архитектура компьютера.

          Отлично. И где в этих описаниях описано, что кеш первого уровня имеет размер в 16-64 килобайта, эксклюзивен для каждого ядра и разделен для кода и данных? L2 - общий для кода и данных и имеет размеры в несколько сотен колобайт, редко в мегабайт, а L3 — уже таки многомебайтный, а главно, в отличие от L1 и L2, с развитием железа растёт. А?

          А это — критически важная информация, которая нужна программисту (и не очень нужна разработчику процессора, у него эти константы автоматически появятся, когда он начнёт его разрабатывать).

          Зато описаны расчёты всяких странных вещей типа процента попадания в кеш в случае работы конкретной программы на конкретному процессоре.

          Уже вот буквально из этих нескольких страничек хорошо видно, что в Харрис и Харрис, как данность, приведены (и никак не объяснены) вещи, которые незнакомы и “не интересны” разработчику железа (но которые нужно учитывать), а в Танненбауме точно так же, как данность, приведены (и никак не объяснены) вещи, которые незнакомы и “не интересны” программисту (но которые нужно учитывать).

          Но вы, почему-то, из этого делаете вывод про “вредность” Танненбаума, и “полезность” Харрис и Харрис.

          Ну вот в какое место может эти примеры из Харрис и Харрис может программист на JavaScript применить? Как он будет проценты промаха мерить и, главное, пытаься как-то на них влиять?

          А вот измерить размеры L1 кеша и L2 кеша — он может. И использовать с пользой это знание — тоже может.


      1. YuriPanchul Автор
        15.11.2021 19:48
        +2

        Вообще по поводу Таненбаума, как указали выше, напрашивается цитата из Фейнмана по поводу физики в Бразилии. Там цитировать можно все, например вот небольшой кусочек:

        https://dcn.icc.spbstu.ru/index.php?id=337

        - Я обнаружил кое-что еще, - продолжал я. - Hаугад листая страницы и останавливаясь в любом произвольно выбранном месте, я могу показать вам, почему это не наука, а заучивание во всех случаях, без исключения. Я рискну прямо сейчас, в этой аудитории перелистать страницы, остановиться в произвольном месте, прочитать и показать вам.

        Так я и сделал. Тррррр-ап - мой палец остановился на какой-то странице, и я начал читать: "Триболюминесценция. Триболюминесценция - это излучение света раздробленными кристаллами...".

        Я сказал: "Вот, пожалуйста. Есть здесь наука? Hет! Здесь есть только толкование одного слова при помощи других слов. Здесь ни слова не сказано о природе: какие кристаллы испускают свет, если их раздробить? Почему они испускают свет? Вы можете представить, чтобы хоть один студент пошел домой и попро6овал это проверить? Они не могут. Hо если бы вместо этого вы написали: "Если взять кусок сахара и в темноте расколоть его щипцами, вы увидите голубоватую вспышку. То же самое происходит и с некоторыми другими кристаллами. Hикто не знает, почему. Это явление называется триболюминесценцией. Тогда кто-нибудь проделал бы это дома, и это было бы изучением природы". Я использовал для доказательства этот пример, но мог взять и любой другой, - вся книга была такая.


    1. YuriPanchul Автор
      15.11.2021 18:59
      +1

      Вот как раз конвейеризации именно как концепция описана у Таненбаума очень мутно, достаточно посмотреть на картинку работы конвейерных инструкций в Таненбаума и сравнить их с описаниями конвейеризации в Паттерсоне-Хеннесси и Харрис -Харрис.


  1. sheshanaag
    15.11.2021 17:54

    изначально он был физиком

    Вообще-то, это знак качества


    1. masai
      15.11.2021 19:15

      Ну как сказать... Я видел много кода написанного физиками (причём хорошими) и не думаю, что хороший физик — это непременно хороший специалист в computer science. Хотя есть много и таких примеров.


      1. sheshanaag
        15.11.2021 19:29
        -2

        Физик, во-первых, способен сам глубоко разобраться в изучаемом вопросе и, во-вторых, глубоко и непротиворечиво изложить его в печатном (или другом) виде, причём в любом вопросе, необязательно связанном с физикой, я как-бы об этом.


  1. qwerty123123
    15.11.2021 19:03
    +1

    У нас до сих пор считают, что ВУЗ должен развивать кругозор и заваливать студентов ненужной информацией. Лишь бы учителям дать отработать их часы. Университет это большое ПТУ, а не музей истории искусств. У нас по любой специальности выходят какие-то историки и искусствоведы, а не инженеры или экономисты. Изучаешь в вузе 5 лет экономику СССР и потом идешь экономистом. Вышвырнуть всех этих стариков из вуза!


    1. LAutour
      16.11.2021 10:05

      Начнешь учиться в универе — одна технология будет в мегаросте и популярности. Закончишь универ — она уже морально устарела и от нее отказывается официальный разработчик. Вот поэтому база и кругозор вместо конкретики.


      1. AKonia
        16.11.2021 11:03

        Вы возводите в абсолют, т.к. всегда есть и более того появляются знания, которые с полным правом можно назвать фундаментальные, а вот что действительно может меняться, так это не теория, а инструменты и вот тут и правда - за модой гнаться не стоит, т.к. всякие новомодные языки программирования, расхайпленные соцсети и пр. как правило не предлагают ничего нового, того, что содержательно меняло пользовательский опыт, а лишь обрушивают весь карательный аппарат отдела рекламы на внушаемых людей и те начинают от какого-нибудь фанатизма по гуглу учить Go или из криптосектантских побуждений бегать по форумам и на каждом шагу рекламировать Раст - в общем если не путать нужное-полезное и модное, то проблем не будет.


        1. YuriPanchul Автор
          16.11.2021 17:01
          +1

          Проблема заключается в том, что Танненбаум использует базу конца 1970-х годов - микропрограммирование (реализация процессора с помощью последовательности контрольных сигналов, извлекаемой сиквенсором из памяти микропрограмм) и стековую архитектуру системы команд. От стековой архитектуры, так же как и от микропрограммирования, стали отказываться в 1980-е годы из-за увеличения разрыва в скорости памяти и логики и трудностях с кэшированием стека.

          На границе 1980-х и 1990х годов база была заменена на RISC-процессоры с большим набором регистров. Именно этой базе следуют самые популярные во всем мире учебники Паттерсона и Хеннесси, которые появились в начале 1990-х (они стали использовать сначала абстрактный процессор DLX, копию MIPS, потом MIPS, потом сделали варианты учебника для ARM и RISC-V). Учебника Харрисов, который появился уже в 21 веке, последовал той же базе, но добавил языки описания аппаратуры (без них студенту-стажеру на работу проектировщиком или даже стажирование в электронную компанию в Silicon Valley сейчас не устроится).

          Просто база от Танненбаума на 10-15 лет старше и ее использование имеет два крупных негативных последствия: 1) не привязывается к лабам на FPGA плате в стиле MIT 6.111. 2) приводит к проблемам с трудоустройству после института именно в роли архитекотора/микроархитектора процессора. По сравнению с более свежей базой.

          От микропрограммирования стали отказываться в 1980-е годы из-за того что оно мешает конвейеризации процессоров, новые процессоры стали делать hard-wired. Причем Танненбаум это знает и даже об этом пишет, хотя не указывает связь с конвейеризацией:

          Смещение функциональности на уровень микрокода

          С 1970 года, когда получило развитие микропрограммирование, производители осознали, что теперь новые машинные команды можно добавлять простым расширением микропрограммы. Иначе говоря, они могли добавлять «аппаратное обеспечение» (новые команды) путем программирования. Это открытие буквально привело к взрыву в производстве наборов машинных команд, поскольку производители начали конкурировать друг с другом — каждый старался, чтобы его набор команд был больше и лучше, чем у других. Многие команды не представляли особой ценности, поскольку те же задачи можно было легко решить, используя уже существующие команды, но обычно они выполнялись немного быстрее.

          Конец микропрограммирования

          В 60-х–70-х годах количество микропрограмм значительно увеличилось. Однако они работали все медленнее и медленнее, поскольку занимали все больше места. В конце концов исследователи осознали, что отказ от микропрограмм резко сократит количество команд, и компьютеры станут работать быстрее. Таким образом, компьютеры вернулись к тому состоянию, в котором они находились до изобретения микропрограммирования.


    1. AKonia
      16.11.2021 11:13

      У нас до сих пор считают, что ВУЗ должен развивать кругозор и заваливать студентов ненужной информацией

      Вы ерунду пишете - широкий кругозор нужен именно для того, чтобы

      а) В человеке развивать широту взглядов, умение смотреть на вещи под разным углом - крайняя специализация же напротив - делает из людей роботов и фанатиков, которые становяться не способны ничего создать, а могут только выполнять приказы.

      б) Поддерживать гибкость ума, которая в свою очередь и позволяет науку развивать, т.к. человек гибкого ума может развивать науку на стыке предметных областей, люди узкого ума никогда не придумали бы ни переводчиков, ни движимой техники(зачем какая-то там четырёхколёсная "самодвижущаяся телега", если есть лошадь ?)

      В общем - не нужно выдумывать "ненужность информации" для оправдания собственного нежелания осваивать что-то новое - пользуйтесь достижениями людей гибкого ума и широкого кругозора и бурчите.


      1. YuriPanchul Автор
        16.11.2021 17:14
        +2

        Танненбаум именно и показывает специализированное решение - микропрограммирование и стековая архитектура. И одно и другое сейчас в 2021 году не является мейнстримом. Процессоры начиная с 1980х годов hard-wired а не microprogrammed (ARM в смартфонах итд, даже у интела микрокод из microcode sequencer остался только для редко используемых инструкций, а другие cisc инструкции перекодируются начиная с PentiumPro в risc-like инструкции).

        Из-за этой танненбаумской книжки постоянно возникают вопросы типа "а что Verilog - это микрокод?" и приходится все время тратить время объясняя что это не микрокод, а другое (синтез из языка описания аппаратуры в непосредственно логику). А также вопросы типа "а давайте сделаем стековую машину", после чего приходится объяснять, почему от них отказались 35 лет назад (трудность кэширования стека). Даже короткий всплеск интереса к стековым архитектурам в середине 1990-х из-за джавы быстро сошел на нет так как стало понятно что just in time трансляция для risc процессоров с традиционным большим набором регистров эффективнее.

        Давайте для гибкости ума поучим инженеров автомобильных двигателей пару семестров конструировать паровые машины - это то же самое, что возится с танненбауманской машиной Mic вместо RISC-V процессорами по Паттерсону, Хеннесси, Харрисам итд. Паттерсон и Хеннесси - гораздо больший авторитет по компьютерной архитектуре в мире, чем Танненбаум.


        1. dragonnur
          24.11.2021 05:06

          Не получится. Паровой машине без котла не поработать :)

          но вообще-то инженеры-теплотехники изучали и турбины (паровые и газовые), и поршневые движки, и компрессоры (поршневые, ротативные и лопаточные), и котлы с конденсаторами, и даже холодильные машины.


  1. pvlinux
    17.11.2021 00:41

    Все ваши высказывания прекрасны, когда знаете тему. Танненбаум для 3-курса, когда ещё дифф. ур. и ТФКП мусолят.


  1. F376
    18.11.2021 17:57
    +1

    Проблема стара как мир. Ю.Панчул практик микроэлектроники. А.Таненбаум - академик-теоретик с упором в программирование, отсюда излагаемое им более неопределенно, академично и абстрактно. Современная электроника быстро движется вперед, поэтому кажущееся еще лет пятнадцать назад незыблемым не только устаревает, но становится неактуальным и даже вредным. Поэтому критика Ю.Панчула имеет под собой основание.