14 декабря 2016 в 09:43

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

Год назад вышло бесплатное электронное издание на русском языке всеохватного вводного учебника Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера». Книга попала в струю, ее скачивания завалили британский сайт Imagination Technologies (дважды — 1, 2), после чего учебник стали использовать преподаватели московских МФТИ, МГТУ, питерского ИТМО, киевского КНУ, КПИ и других вузов. Интересной особенностью учебника является то, что его перевод на русский сделала группа энтузиастов: преподавателей российских и украинских университетов, русских сотрудников компаний в Silicon Valley (AMD, Synopsys, Apple, NVidia ...) и российских компаний (НИИСИ, МЦСТ, Модуль ...).

При этом, электронное издание Харрис-энд-Харрис сформатировано для планшета, и уже после первых скачиваний посыпались емейлы, когда же учебник будет и на бумаге. И вот час настал — Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера» можно заказать на бумаге (выходит в новогоднюю ночь). В этом посте я покажу, чем этот учебник отличается от других. Бонус: фотки участников и участниц проекта!



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

Учебник H&H решает эту проблему:


Например H&H шаг за шагом показывает, как построить простой микропроцессор:





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



Это представление на уровне регистровых передач (Register Transfer Level — RTL) можно превратить в микросхему на фабрике, или использовать для конфигурации недорогой студенческой платы с ПЛИС/FPGA:



Далее в учебнике обсуждается, как превратить такой простейший процессор в конвейерный:



И наконец учебник показывает куда копать дальше, например в сторону суперскалярных процессоров с внеочередным выполнением команд и переименованием регистров:





Если теперь перейти с уровня микроархитектуры на более низкий уровень, основ цифровой логики, то на нем H&H четко формулирует общие определения, частные случаи / исключения и приводит полезные для понимания упражнения:





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



Краткость и четкость сохраняется при обсуждении правил писания кода на HDL на уровне регистровых передач:





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



В учебнике есть даже пара слов про экономику бизнеса, использовать ли фиксированные микросхемы ASIC или гибкие FPGA, в зависимости от цикла жизни продукта:





Теперь несколько лиц переводчиков книги. Переводчиков было больше 40, их полный список есть в книге и некоторые фотографии были в предыдущих постах (1, 2), но вот фотографии из последних встреч в Москве:

Юрий Панчул, инженер в Imagination Technologies (глава 7.8 + редактирование и администрирование)
и Илья Кудрявцев, декан Самарского национального исследовательского университета имени академика С.П. Королева (редактирование):



Студентки Ильи Кудрявцева: Анна Степашкина (главы 4.2 и 8.8) и Екатерина Степанова (8.4, 8.8.2-8.8.3, приложение А):



Слева доцент Киевского Национального Университета (КНУ) Александр Барабанов (перевод 3.5-до конца, редактирование 5.4-до конца, упражнения 2, 3.1-3.4, 5, приложение A.1-7, также ключевой переводчик слайдов для преподавателей). Справа Евгений Короткий, руководитель лаборатории Лампа КПИ Киевского Политехнического Института, ключевой переводчик слайдов для преподавателей:



А вот Алексей Фрунзе, Imagination Technologies, специалист по Java virtual machine, бывший работник Микрософта и основной редактор 6-й главы:



А вот слева — Павел Кустарев, ключевой редактор 4-й главы, из питерского Университета ИТМО:



Третий справа — выпускник МИФИ Иван Графский, у которого возникла идея коллективного перевода:



В форматировании книги помогало РОСНАНО, точнее eNANO (дочка РОСНАНО по образовательным программам).



eNano также помошло с одним из сиквелов к переводу Харрис & Харрис — также выходящему прямо сейчас электронному курсу «Специализированные интегральные схемы наноуровня» Чарльза Данчека (он есть на трех предыдущих фотографиях).

Слева Юлия Осаулец, организатор образовательных проектов РОСНАНО:



Юлия также организовала серию сопутствующих курсов:



И последнее слово предоставляем девушке Ирине:



Бумажный Харрис & Харрис

Видео Чарльз Данчек / Nanometer ASIC

С Новым Годом!
Какие форматы обучения для вас наиболее эффективны?

Проголосовало 273 человека. Воздержалось 46 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Юрий Панчул @YuriPanchul
карма
125,0
рейтинг 4,9
Разработка и верификация микропроцессорных ядер
Самое читаемое Разработка

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

  • +1
    Спасибо вам и «ДМК Пресс» за издание этой книги на бумаге! Помимо всего вышесказанного, мне нравится в ней четкое позиционирование глав с точки зрения уровней абстракции — самый первый рисунок в статье, не считая фото девушки. Хорошо бы к Новому году себе под ёлочку успеть получить книгу :)
    • 0
      Спасибо!
  • 0
    Ура. Жаль пока нет предзаказа в магазинахchitai-gorod или labirint, а то идти получать посылку в филиал ада на земле, очень не хочется… :(
  • +1
    Интересненько… там, где рисунки не нужны, они есть (обезьянка); но там, где чертеж действительно не помешал бы (электродвигатель) — не напрягались, и просто приложили фоточки.
    • 0
      Это да, но образ обезьянки там фигурировал в тексте — типа она нажала на кнопку во время апертуры
  • 0
    О, Панчул!
    Это аналог Хоровица и Хилла для компьютеров? ;)
    Годно.
    А «однотактный микропроцессор» — это «микропрограммное устройство», или такая терминология сейчас у нас не в ходу?
    • +2
      *** Это аналог Хоровица и Хилла для компьютеров? ;) ***

      Первая редакция Хоровица-Хилла вышла в 1980 году, когда еще не было методологий разработке на уровне регистровых передач ( Register Transfer Level — RTL ) и логического синтеза. Вторая редакция Хоровица-Хилла вышла когда RTL методология и logic synthesis только начали использоваться (конец 1980-х). За последние 25 лет разработка на уровне RTL стала мейнстримом, и вот Харрис-энд-Харрис — это вводный учебник для эпохи RTL.

      *** А «однотактный микропроцессор» — это «микропрограммное устройство» ***

      Нет, совсем нет. Это полноценный (хотя и очень простой) hardwired микропроцессор без всякого микропрограммирования. Микропрограммирование — это специфиаеский способ выработки последовательностей управляющих сигналов, при котором в микрокоманде стоит набор управляющих сигналов и адрес в пзу следующей микрокоманды в завиисимости от неких входных сигналов, как описано в http://minnie.tuhs.org/CompArch/Tutes/week04.html Оно было актуально и очень популярно во времена первого издания Хоровица-Хилла, но в 1990-е его использование сошло на нет и процессоры стали hardwired, при котором контрольные сигналы вырабатываются блоком управления без дополнительного уровня микропрограммирования.

      Замечу, что микропрограммирование в смысле в котором оно употреблялось в 1970-е, не стоит путать с микроинструкциями в современных x86 процессорах, в которых CISC-инструкции внутри процессора и перекодируются в RISC-образные микроинструкции, которые выполняются в конвейере.
      • 0
        Ну, нас учили, что микрокоманды — это просто команды, исполняемые за один такт.
        Просто, без привязки к микропроцессорам или чего-либо.
        Ну и дальше показывали устройство на гарвардской архитектуре — как более простое.
        Соотв., ни «регистрового файла», ни «основной памяти» там явно не было — было «ОЗУ» и «ПЗУ», последнее существенно шире ОЗУ.
        Ну и подразумевалась возможность дальнейшего расширения.
        Микрокод же в x86 всё равно присутствует?
        • 0
          *** Ну, нас учили, что микрокоманды — это просто команды, исполняемые за один такт.
          Просто, без привязки к микропроцессорам или чего-либо. ***

          То, что вы описываете — это способ создания конечных автоматов с помощью микропрограммного управления из последовательности «команд». Он гибок, красив и удобен, но:

          1. Он экономит труд, когда у вас нет под рукой технологии logic synthesis (которая стала применяться с конца 1980-х). Если же эта технология есть, то вместо пзу лучше поставить random combinational logic, потому что получившаяся схема может работать на более высокой тактовой частоте

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

          Ниже я привожу простейший пример конечного автомата из H&H реализованного без пзу:





          Код на Verilog из которого синтезируются схемы выше:

          http://www.silicon-russia.com/public_materials/2016_11_04_one_day_mipsfpga_connected_mcu_materials_public_for_the_website/06_optional_introductory_materials_if_necessary_for_the_audience/06_exercises/exercise_3_counter_shift_fsm.html

          // Smiling Snail FSM derived from David Harris & Sarah Harris
          
          module pattern_fsm_moore
          (
              input  clock,
              input  reset_n,
              input  a,
              output y
          );
          
              parameter [1:0] S0 = 0, S1 = 1, S2 = 2;
          
              reg [1:0] state, next_state;
          
              // state register
          
              always @ (posedge clock or negedge reset_n)
                  if (! reset_n)
                      state <= S0;
                  else
                      state <= next_state;
          
              // next state logic
          
              always @*
                  case (state)
          
                  S0:
                      if (a)
                          next_state = S0;
                      else
                          next_state = S1;
          
                  S1:
                      if (a)
                          next_state = S2;
                      else
                          next_state = S1;
          
                  S2:
                      if (a)
                          next_state = S0;
                      else
                          next_state = S1;
          
                  default:
          
                      next_state = S0;
          
                  endcase
          
              // output logic
          
              assign y = (state == S2);
          
          endmodule
          
          //----------------------------------------------------------------------------
          
          // Smiling Snail FSM derived from David Harris & Sarah Harris
          
          module pattern_fsm_mealy
          (
              input  clock,
              input  reset_n,
              input  a,
              output y
          );
          
              parameter S0 = 1'b0, S1 = 1'b1;
          
              reg state, next_state;
          
              // state register
          
              always @ (posedge clock or negedge reset_n)
                  if (! reset_n)
                      state <= S0;
                  else
                      state <= next_state;
          
              // next state logic
          
              always @*
                  case (state)
          
                  S0:
                      if (a)
                          next_state = S0;
                      else
                          next_state = S1;
          
                  S1:
                      if (a)
                          next_state = S0;
                      else
                          next_state = S1;
          
                  default:
          
                      next_state = S0;
          
                  endcase
          
              // output logic
          
              assign y = (a & state == S1);
          
          endmodule
          
          


          *** Микрокод же в x86 всё равно присутствует? ***

          Я не в курсе деталей внутреннего устройства ядер x86, но из косвенных соображений скажу: При обсуждении x86 есть терминологическая путаница: изначально в 8088/8086/286/386 микропрограммная реализация (в смысле выше) наверняка была, но в некоторый момент, когда вышел Pentinum Pro, микроархитектура процессора существенно поменялась — в декодере команды CISC стали перекодировать в RISC-образные «микроинструкции», которые выполнять конвейерным способом. При этом каждая «микроинструкция» может занимать несколько циклов, чтобы выполниться, но одновременно в процессоре находится много «микроинструкций» для выполнения. Как вы видите, эти «микроинструкции» — нечто совсем другое, чем выполняемый за 1 цикл команда микрокода при микропрограммном управлении. Но из-за похожего названия в интернете часто бываю споры, когда один спорщик имеет в виду одно, а другой — другое.

          Я допускаю, что в тех или иных блоках современных ядер x86 и одно, и другое. Как я указал, микропрограммирование (в вашем смысле 1) удобно, если вам не нужно конвейеризировать и если вам желательно гибко менять какие-то последовательности, загружая последовательность контролирующих сигналов в память. Как основной метод реализации процессора в x86 оно не используется — с Pentinum Pro совешенно точно. Но вот микроинструкции (в смысле 2) используются, потому что без них достигнуть высокой производительности с исходным набором команд x86 было бы трудно.

          Если вы хотите узнать это с большей детализацией, я рекомендую вам бегло прочитать главы 4 и 7 H&H, потому что иначе мне прийдется их пересказать в формате «вопрос-ответ», и это будет долго.
  • +2
    Другое (пояснить в комментариях)
    image
    • 0
      Да, обучающие мультики — это круто
  • 0
    Блииин.
    Я в своё время обжёгся на эксмо — тоже хотел оплатить предзаказ книги на их сайте. И опять.

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

    А у этого дмк-пресс вот что. У меня возникла проблема с яндекс-маркетом (была привязана карта с истекшим сроком). И теперь у меня есть «оплаченный» по мнению сайта ДМК-Пресс заказ, за который я не заплатил ни копейки. Опять куча проблем будет, чую.

    Руки вырвать надо бракоделам всяким, у которых все силы уходят на нескучный дизайн, а форму оплаты нормально сделать не могут.
    И задолбали эти издательства, которые себе нормальынй сайт обеспечить не могут.
    • –1
      Я знаю что я сделаю если они обработают мой заказ — я приду с покерфейсом забирать эту книгу в пункт выдачи, хотя не заплатил за неё. Заказали сайт у долбо*бов — ваши проблемы.
    • 0
      Сайт делала фирма Iris Digital. Не заказывайте у них — они бракоделы, похоже.
    • 0
      UPD:
      Спросил в издательстве что делать — сказали создавать новый заказ.
      Конечно, это неудобно.
      • 0
        Я посмотрел, у издательства в партнёрах есть labirint.ru, подожду выхода книги и закажу у них.
        Доставка там бесплатная в пункт выдачи. Никакой почты россии и оплата при получениии в пункте выдачи.
        http://dmkpress.com/nashi_partnery/portals/
        • 0

          Хорошая идея, лабиринт доставляют обычно за неделю.

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

    Многократно упомянутая Ирина — разработчик или имеет какую-то другую роль в подготовке проекта?
    • 0
      Нет, Ирина почитывает такие книжки для общего образования, но вообще она работает финансовым контролером интернет-стартапа в Сан-Франциско и помогает мне вот с таким маркетингом.
  • 0
    Помнится, когда я год назад скачал эту замечательную книгу, а потом и исправленное издание, в обоих случаях там были другой шрифт и форматирование текста (судя по фотографиям в этой статье). А можно ли где-нибудь будет скачать версию книги, которая по исполнению не отличалась бы от бумажной?
    • 0
      С издательством Elsevier было заключено два договора — от Imagination Technologies, по которому делалась бесплатная версия для планшетов и от DMK Press, по которому делалась платная бумажная книга.

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

      Детали второго договора я не совсем знаю, тут надо спрашивать DMK Press, могут ли они сделать электронную платную версию книго-образного PDF-а.
  • +1
    Что то во мне эти «Декодир.» и «Выполнен.» на рис. 7.45 всколыхнули ностальгию времен наколенного собственноручного перевода Volkov Commander'a на русский язык методом прямой правки COM-файла :)

    Но дело нужное и правильное! Заказал. Придется-таки идти в филиал_ада (tm).
    • 0
      Да, COM-файлы наше все! (Вспомнил, как в 1989 году увидел первый в жизни вирус, который распостранялся через .COM-файлы, разобрал его и написал антивирус).

      Спасибо!
  • 0
    Чудесная новость, спасибо! Книга замечательная, в свое время даже читал на планшете, хотя и не люблю это дело (бумажные лучше, но это на мой вкус). Один вопрос, а что значит «избранные места»? Создается впечатление что издание неполное, но по оглавлению вроде все на месте. В тексте об этом ни слова, не могли бы пояснить?
    • 0
      «Избранные места» — это значит, что в этот конкретный пост на Хабрахабре я вставил куски из страниц книги, которые мне лично нравятся больше всего (микроархитектура, метастабильность, правила RTL и т.д.). Книга переведена полностью, со всеми дополнениями.
      • 0
        А какую отладочную плату вы бы посоветовали к этой книге? Их конечно много разных, но интересует именно с точи зрения доступности софта для работы с ней, предпочтительней с SystemVerilog.
  • 0
    Днем цена была что-то около 770 рублей, вечером внезапно повысилась до 1039 рублей, с чем это связано?
    • 0
      Это к ДМК Пресс, они там чего-то меняют. Их представитель возможно сюда прийдет в комменты.
      • 0
        ок, подожду, может быть ответят тут, на сайте издательства почему-то комментарий не добавился у меня.В любом случае спасибо за перевод, заказал
  • +1
    При всем уважении к энтузиастам, перевод не очень хороший. Тяжёлый язык, много подстрочек с английского. Жаль, что на такой хороший проект не хватило опытного редактора-переводчика.
    • +1
      Проблемы с переводом есть, особенно в главе 1 (в сделали заключение по ней?)

      Если бы для перевода привлекли бы опытного редактора-переводчика, то книга бы не вышла, так как она не вписалась бы в бюджет образовательных программ на страны СНГ. Менеджмент Imagination согласился выделить немного денег, чтобы выкупить права на электронную версию книги у Elsevier и дать небольшие бонусы участникам, но если бы я запросил бы еще и на опытного редактора-переводчика, то получил бы отказ.

      Как говорится «инженерия — это искусство возможного».
      • +2
        Да, понимаю. Деньги решают все.
        Поясню ситуацию — я как раз такой (бывший) редактор с опытом исправления совершенно жуткого перевода довольно занудной книги о программно-определяемых радиосистемах (SDR). Мелочи, на которые никто и внимания не обратит, режут мне глаза. Критикую как профессионал, а не как недовольный интернет-хейтер.
        Хотя, с другой стороны, не нужно быть семи пядей в переводе, чтобы не нанизывать эти бесконечные «является… является...» и строить фразы более по-русски, чем по-английски. Имхо.
  • 0
    Спасибо! Такого рода литературу (техническую) всегда приятней читать на бумаге! Сделал предзаказ.

    P.S. Цена на сайте плавает — пишут, что поднимается с течением времени.
  • 0
    Скажите пожалуйста, а материал на бумаге один в один как и в электронной версии по объему?
    • 0
      Да
  • 0
    Кига появилась в лабиринте (2102 руб).
    Как раз сейчас 3 дня (до 5.02) идёт акция -18%. Можно взять дешевле.
    У меня там была накоплена скидка 6%, и оказалось что скидки суммируются,
    мне удалось её заказать со скидкой в 24% — 1598 р.
    http://www.labirint.ru/books/570643/

    Спешите.
    • 0
      О, спасибо!
  • 0

    С одной стороны, спасибо за книгу.


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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.