Сейчас просматриваю и местами читаю книгу "Цифровая схемотехника и архитектура компьютера" Дэвида М. Харрис и Сары Л. Харрис в русском переводе. Я давно про эту книгу слышал, но все как-то не до нее было. Казалось книга ну и книга, мало что ли их написано? Её в свое время рекламировал на Хабре Юрий Панчул, я так понимаю это он приложил усилия и организовал людей, и таким образом эта публикация была переведена на русский язык.
Цель этой статьи познакомить читателей нашего блога интересующихся цифровой схемотехникой с этим произведением инженерной мысли. Очень рекомендую книгу для изучения студентам технических вузов и даже школьникам старших классов. Я намеренно положу эту статью в наш раздел о процессоре MIPS, так как сама книга умело подводит читателя от простых понятий, от транзисторов и логических элементов к микроархитектуре реального процессора MIPS.
В конце статьи будет ссылка для скачивания книги.
От простого к сложному.
Начинается книга "Цифровая схемотехника и архитектура компьютера" со знакомства с системами счисления: десятичной, шестнадцатеричной, двоичной, со знакомства с понятиями прямого и дополнительного кода. Так же здесь рассказывается о знаковых числах и двоичной арифметике. Далее идет знакомство с простыми логическими элементами и показано, как они они устроены внутри, сколько в них транзисторов и как они соединены. Несколько рисунков из книги:
Фрагмент книги параграфа 1.7.5 Логический вентиль НЕ на КМОП-транзисторах:
Схема на Рис. 1.32 демонстрирует, как можно построить логический элемент НЕ, используя КМОП-транзисторы. На этой схеме треугольник обозначает напряжение земли GND, а горизонтальная линия обозначает напряжение питания VDD. На всех последующих схемах в этой книге мы не будем использовать буквенные обозначения VDD и GND. Рис. 1.32 Схема вентиля НЕ Глава 1 От нуля до единицы 91 n-МОП-транзистор N1 включен между землей GND и выходным контактом Y. В свою очередь, p-МОП-транзистор P1 включен между напряжением питания VDD и выходным контактом Y. Напряжение на входном контакте А управляет переходами обоих транзисторов. Если напряжение на А равно 0, то транзистор N1 выключен, а транзистор P1 включен. При этом, напряжение на контакте Y равно напряжению питания VDD, а не земли, что соответствует логической единице. В этом случае говорят, что Y «подтянут» к единице (англ.: pulled up). Включенный транзистор P1 хорошо передает логическую единицу (равную напряжению питания), то есть напряжение на контакте Y очень близко к VDD. Если же напряжение на контакте А равно логической единице, то транзистор N1 включен, а транзистор P1 выключен, и напряжение на контакте Y равно напряжению земли, что соответствует логическому нулю. В этом случае говорят, что Y «подтянут» к нулю (англ.: pulled down). Включенный транзистор N1 хорошо передает логический ноль, то есть напряжение на контакте Y очень близко к GND.
И дальше сложнее и сложнее, и про энергопотребление и быстродействие. Про комбинационную логику и как из простых логических элементов строятся сложные:
Есть там и про триггера, про карты Карно и автоматы Мура и Мили.
В книге вводятся и объясняются понятия временных задержек сигналов, критического пути, импульсной помехи.
Цитата:
может оказаться, что одиночное изменение на входе вызывает несколько выходных изменений. Это называется импульсной помехой или паразитным импульсом. Хотя паразитный импульс обычно не вызывает проблем, важно понимать, что он есть, и уметь распознавать его на временных диаграммах. На Рис. 2.75 показана схема, подверженная паразитным импульсам, и карта Карно для нее.
Постепенно шаг за шагом авторы приводят читателя к языкам описания аппаратуры System Verilog и VHDL. Причем в книге дается хоть и в сжатом виде, но весьма достаточное представление о возможностях языков. Да, по этой книге на приведенных примерах можно начинать изучать языки Verilog и VHDL.
Далее еще сложнее: описываются функциональные блоки вычислительных систем и даже подробно разбирается структура процессора MIPS, причем не просто так, а рассматриваются методы построения однотактного, многотактного и конвейерного процессоров:
Цитата:
Сначала мы разработаем микроархитектуру MIPS, которая выполняет команды за один такт. Начнем с конструирования тракта данных путем соединения показанных на Рис. 7.1 элементов, хранящих состояние процессора, при помощи комбинационной логики, которая и будет выполнять разные команды. Управляющие сигналы нужны, чтобы указывать, как именно тракт данных должен выполнять команду, находящуюся в нем в текущий момент времени. Устройство управления содержит комбинационную логику, которая формирует необходимые управляющие сигналы в зависимости от того, какая команда
выполняется в данный момент. В заключение мы оценим производительность такого процессора.
В книге очень подробно расписывается, какие модули нужны для построения работающей системы и приведено много схем с описанием их работы.
Вот итоговая схема однотактного процессора MIPS:
Потом эта схема будет еще усложняться до многотактной архитектуры и даже до конвейерной, которая дает максимальную производительность.
Более того, в книге расписываются подробно на языках System Verilog и VHDL отдельные функциональные блоки MIPS процессора. Очень интересно читать.
Даже если вы в целом знакомы с архитектурой RISC процессоров, вы обязательно узнаете из книги что-то новенькое для себя. Я, например, с удовольствием почитал про исключения, предсказание условных переходов и переименование регистров в процессорах. Так же интересно почитать про реализацию виртуальной памяти в современных процессорах.
В общем, очень рекомендую данную книгу к прочтению.
Скачать в формате PDF можно здесь:
Подробнее...