Все помнят со школы, что Александр Сергеевич Пушкин был освобожден от призыва на Отечественную Войну 1812 года. Но не все знают, что великий поэт в это время плавал в составе экспедиции Русско-американской компании И. А. Кускова. Вместе с экспедицией он посетил Форт-Румянцев (нане американский город Бодега-Бэй) и проплыл мимо будущей крепости Росс. Некоторые исследователи считают, что романы Пушкина с жительницами побережья легли в основу советской рок-оперы "Юнона и Авось". В Бодега-Бэй построили музей-избушку с восстановленной обстановкой начала XIX века. В ней можно увидеть кровать, прялки, бочки с порохом и скипидаром, ружья и гусиные перья. Неподалеку есть церковь Святого Германа Аляскинского, построенная на месте часовни, которую посещал Пушкин весной 1813 года, и в которой он возможно даже обручился с испанской креолкой Консепсьон перед плаванием на родину, из которого он так и не вернулся.
Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.
Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.
В главе про последнее российского читателя может озадачить упоминание "политкорректной системы". Что бы это значило? Это вероятно намек на казус, который произошел в округе Лос-Анжелес в 2003 году. Чиновники Лос-Анджелеса попросили производителей, поставщиков и подрядчиков прекратить использование терминов "master/slave" («хозяин» и «раб») в отношении компьютерного оборудования, так как одному из работников округа эти термины напомнили про рабовладельческое прошлое.
Сейчас авторы технической литературы избегают терминов master/slave. В современной Америке работают и афро-американские инженеры (например София Мвокани из Камеруна - на фото слева), и использование старых терминов выглядит архаично, как выглядели бы например термины "пан/холоп" в украинской технической литературе вместо принятых "провідний/ведений" (рус. "ведущий/ведомый").
Это не первый раз, когда в российском электронном образовании появляется тема борьбы афро-американцев за гражданские права. Например Татьяна Волкова, известный специалист по образованию в электронике, носит маечку с эмблемой "Черных Пантер", калифорнийского движения, которое в свое время сочло мирный протест недостаточным, и занялось вооруженным протестом.
Полное изображение эмблемы под кожанкой Татьяны Александровны - под катом, но в основном я буду рассказывать про дельта-циклы и конечные автоматы: ( Collapse )
Сегодня я делал ревью главы про мультиплексоры для российского лабника по Verilog+RTL+FPGA. Во время ревью я заметил, что в главе не хватает некоторых полезных идей, которые есть в других книгах. Поэтому я оставляю куски этих книг здесь, а потом буду на этот пост ссылаться.
1. В главе под ревью показно, как сделать мультиплексор из логических элементов. Но в ней не показано, как сделать любой логический элемент из мультиплексора. В частности любую функцию двух вводов, используя четырехвходной мультиплексор. Это важная идея, которая подводит читателя к устройству LUT в FPGA. Эта идея описана в книжке Harris & Harris (см. скриншоты ниже).
2. Помимо общего случая с lookup table (1) существует популярный элементарный вопрос для собеседований "сделайте такую-то gate из двухвходового мультиплексора и инвертора". Это стоит ввести в вопросы в конце главы (см. ответы в книжке Digital Logic Interview Questions ниже).
3. У читателя главы может сложится впечатление, что все мультиплексоры во всех микросхемах строятся из логических элементов. Это не так - разные виды MUX-ов как правило есть в ASIC libraries в standard cell design, не говоря уже о custom design. Это стоит упомянуть, со ссылкой на книжку CMOS VLSI design by Weste & Harris. На страницах ниже показано как сделать mux из transmission gates, транзисторов и tristate elements. Tristate наверное упоминать не надо, но про компактную реализацию mux для ASIC или custom пару предложений стоит сказать.
4. Важным моментом является использование mux-ов для resource allocation and sharing в арифметических операциях. В книжке Bhasker-а приводится пример экономии целого ALU с помощью перестановки mux-а для управления операндом. Его стоит привести с ссылкой на книжку Bhasker-а. Операции такого рода часто делаются например в схемах для DSP:
5. Пару кусков кода в главе можно улучшить с помощью feature которая называется variable vector part select. Есть куча людей, которые считают, что это черта SystemVerilog, а не Verilog, но на самом деле это черта Verilog-2001, и ее можно спокойно использовать, даже если требование блока использовать только Verilog, и не SystemVerilog. Сейчас поддержка тулами Verilog-2001 практически такая же, как и Verilog-95, поэтому большинство компаний стандартизуются минимум на Verilog-2001 даже для самого консервативного синтезируемого подмножества языка:
Hacker's Delight - чрезвычайно занятная книжка, назначение которой народ совершенно не понимает. Хотя разумеется не весь народ. Например у нас в офисе MIPS эту книжку любят - когда я забыл ее где-то (наверное в туалете), ее заметил мой коллега, начал ее читать, зачитался, и я нашел книжку только через неделю, после того, как разослал емейл по всему офису.
Но почитайте комменты к первому и второму изданию этой книжки на Озоне:
Отзыв 1: "Очередной опус из серии "Как облапошить компилятор" -- классика стиля программистов на С. Собственно, ничего другого по C и программистами на C и не написано. Это не алгоритмические трюки -- это трюки с плохим языком программирования. На практике малополезно и методически вредно".
Отзыв 2: "Ничего не могу сказать против этой книги, но она явно предназначена для узкого круга специалистов. Например, для тех, кто хочет ускорить на десять процессорных тактов операцию деления за счет снижения переносимости и полной нечитабельности кода. В наш век большинство программистов пишут на таких языках как C# или JavaScript, поэтому виртуальная машина или интерпретатор съест всю выгоду описанных хакерских трюков, а поддерживать код становится трудно".
Это отрицательные отзывы. Но даже люди, которые написали положительные отзывы, эту книжку тоже не понимают. Они думают, что это чтобы улучшить программирование на Си для высокопроизводительных приложений. Это тоже не совсем верно.
Важно знать, что автор книги занимался не только программированием, но и компьютерной архитектурой. Отсюда легко понять, что он писал эту книжку для четырех видов специалистов, а именно тех кто:
1. Пишет компиляторы.
2. Пишет стандартные библиотеки программ на Си и ассемблере.
3. Работает над компьютерной архитектурой: анализирует смеси инструкций в приложениях и придумывает, какие инструкции добавить в систему команд процессора.
4. Занимается хардверной реализацией микроархитектуры процессоров, а также специализированных вычислительных блоков, на уровне регистровых передач.
(У нас в компании есть четыре соответствующих отдела, где такие знания нужны).
Так вот. Я пролистал книжку Hacker's Delight ( https://doc.lagout.org/security/Hackers%20Delight.pdf ), чтобы найти в ней какие-нибудь занятные алгоритмы и трюки, на основе которых можно было бы сделать задачки для лабника по разработке аппаратных блоков на уровне регистровых передач, с использованием языка описания аппаратуры Verilog и с реализацией на программируемых логических интегральных схемах ПЛИС / FPGA.
Зачем нужны именно задачки на основе примеров и идей из Hacker's Delight? Чтобы добавить что-нибудь новое, яркое, а не повторять одни и те же унылые упражнения из tutorials от Xilinx, Altera и учебников 25-летней давности.
И вот что я выудил из пролистывания Hacker's Delight (второго издания - это важно - в интернете можно отыскать PDF первого издания, но не второго, часть моих находок именно из второго издания):
Недавно вышло еще одно печатное издание книжки Харрис & Харрис на русском языке. Это широкоохватывающий ликбез про то, как проектируют микросхемы в компаниях типа Apple и Intel (методология проектирования на уровне регистровых передач с использованием языков описания аппаратуры). До этого печатного издания вышло бесплатное электронное издание этой же книжки, которое стало вирусным - его скачивания дважды завалили британский сайт Imagination Technologies, а посты о книжке на Хабре и Гиктаймс собрали более 300,000 просмотров (1, 2, 3, 4, 5 ). История перевода книжки на русский тоже довольно поучительна - он начался как общественный проект группы энтузиастов: преподавателей российских и украинских университетов, а также русских сотрудников компаний как в Silicon Valley (MIPS, AMD, Synopsys, Apple, NVidia ...) так и в России (НИИСИ, МЦСТ, Модуль ...). Когда вышло первое печатное издание на русском языке, его тоже довольно быстро раскупили и пожаловались, что оно черно-белое. Поэтому следующий принт был цветной, улучшенного качества.
Теперь возникает вопрос: ну хорошо, вы приобрели или скачали бесплатно книжку, поняли основы цифровой схемотехники, языков описания аппаратуры Verilog и VHDL, приобрели вкус писания на ассемблере и разобрались с организацией простейшего конвейерного микропроцессора, а также как все это стыкуется с периферийными устройствами и встроенным программированием. Что делать дальше?
На снимке - Татьяна Волкова, сотрудница образовательных программ компании Samsung в Московском Физико-Техническом Институте
По сообщениям ТАСС, украинское правительство запретила импорт любых книг из России. Тем самым под запрет формально попала и книга ЦИФРОВАЯ СХЕМОТЕХНИКА И АРХИТЕКТУРА КОМПЬЮТЕРА, изданная недавно на бумаге российским издательством ДМК Пресс. В чем-то запрет абсолютно логичен:
Книжка вводит, в том числе россиян, в проектирование цифровых микросхем на основе методологии RTL-to-GDSII
В комментах снова нападки, что якобы нужно сначала всех школьников учить английскому, а уже потом допускать до микроархитектуры. Написал стандартный ответ:
Эта книга - не документация, а учебник по основам для 16-летних. Практика показала (по словам Тимура Палташева, старшего менеджера AMD в Саннивейл, одновременно профессора ИТМО в Санкт-Петербурге), что если объяснять простые вещи (скажем основы цифровой логики или архитектуру / программирование на ассемблере), то российские студенты 1-2 курса по английски понимают неплохо, но вот когда дело доходит до микроархитектуры (устройство конвейера), тогда они на английском начинают терять нить рассуждений - для более сложной тематики младшекурсникам в России лучше читать на русском.
Рынок переполнен людьми с хорошим английским, а вот людей с глубоким пониманием микроахитектуры и проектирования цифровой электроники на уровне регистровых передач - найти гораздо труднее. Это глубокое понимание нужно вводить рано, когда понимание английского может еще не быть идеальным. В любой физматшколе можно найти кучу победителей матолимпиад, которые не любят английский. Вот это книжка для них.
Сбылась мечта panchul и таки в издательстве ДМК вышла в свет книга о которой он так много говорил, писал, толкал итп. Можно поздравить с таким событием главного толкателя этого проекта.
Дамы и Господа! Я приношу извинения членам украинского коммьюнити Области Сан-Францисского Залива, которых я обидел своими insensitive шуточками. Прежду всего я хочу сказать, что в моем личном отношении к украинской культуре, украинским церквям и коммьюнити нет никакого пренебрежения. Я высоко оценил художественное качество всего, представляемого в украинском коммьюнити. Я в детстве ходил в Киеве в две музыкальные школы, а также учился живописи у художника с западной Украины, поэтому я могу все оценить.
Просто 1) я включил разного рода фривольные рассуждения (например о шишках) чтобы повысить интересность текста для части публики (из-за этого текст больше читают) и 2) я ввожу противоположные точки зрения (например высказывания об Агапии Гончаренко со стороны русского коммьюнити Сан-Франциско 19 века) с целью создания многосторонней дискуссии.
Что касается комментариев у меня в ЖЖ - так как у меня много подписчиков, среди которых есть люди самых разных политических и культурных взглядов, то я позволяю им всем высказаться (фильтруя только откровенные призывы к насилию или грязные обзывания). В интересах украинского коммьюнити, чтобы его больше обсуждали, даже и не с самыми идеальными комментариями. Если на всех обижаться и замыкаться, то культуру труднее презентовать другим людям. Вы знаете поговорку "preaching to the choir"? Представьте себе, что чехи обижались бы на Ярослава Гашека про книжку "Похождения бравого солдата Швейка", которая прославила чешскую культуру за пределами Чехии - что бы из этого получилось?
Тем не менее, так как я осознаю, что мой стиль является controversial и неприемлемым для некоторого количества людей, которые не сделали мне ничего плохого, и напротив, доставили мне много интересных впечатлений, я закрываю свой пост и постараюсь отзываться на данные темы в будущем с бОльшей sensitivity.
Монтерейский аквариум знаменит своей оканской частью, особенно секциями "Открытый океан" и "Лес бурых водорослей", но в нем есть и небольшая секция о пресноводных ручьях Калифорнии.