Устройство и принцип работы микропроцессора

Устройство и принцип работы микропроцессора
26

В 1991 году свет увидела изумительная научно-популярная книга под названием «Энциклопедия профессора Фортрана», которая в форме комиксов — в понятном для детей младшего школьного возраста виде — объясняет устройство персонального компьютера, его периферийного оборудования, а также всё, что связано с программным обеспечением. Эта книга, популярная и сегодня, стала отправной точкой освоения компьютерной грамотности для многих, кто сейчас занимается серьёзной работой в области информационных технологий.

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

Время чтения Время чтения: 16 минут

Микропроцессоры? Это очень просто!

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

Понятия, прямо относящиеся к микропроцессорам

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

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

Арифметико-логическое устройство (АЛУ) — блок процессора, работающий под управлением УУ. Он выполняет арифметические и логические операции.

Регистры процессора — сверхбыстрая память, расположенная прямо на кристалле. В них временно хранятся данные, необходимые при выполнении инструкций.

Инструкции — элементарные команды процессора. Это могут быть арифметические операции, чтение и запись данных в регистры, работа с портами ввода/вывода, переходы к другим инструкциям и т. д. Любая программа состоит из набора таких инструкций, сформированных на языке программирования (например, Ассемблере).

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

программа на ассемблере
Пример: программа на Ассемблере, выводящая «Hello, World!» на экран. Выглядит сложно, зато работает очень быстро.

Шина адреса — набор линий, по которым процессор передаёт адрес ячейки памяти для чтения или записи. Её разрядность определяет максимальный объём адресуемой памяти (например, 32-битные процессоры ограничены примерно 4 ГБ).

Шина данных — линии передачи между процессором, памятью и устройствами ввода/вывода. Её разрядность определяет объём информации, передаваемый за один такт.

Тактовая частота — число тактов (циклов), выполняемых за одну секунду. Одна инструкция может выполняться за один такт (в RISC-процессорах) или за несколько (в CISC-процессорах).

CISC-процессоры появились раньше и имеют более «человеко-понятный» набор инструкций для Ассемблера. RISC-процессоры появились позже и используют более простой и оптимизированный набор, что повышает производительность.

Разрядность — количество данных, обрабатываемых процессором за один такт.

Кэш-память — сверхбыстрая память между регистрами и оперативкой для хранения часто вызываемых данных. Делится на уровни: L1, L2 и L3. L1 — самая быстрая, но с минимальным объёмом; L3 — самая медленная, но ёмкая.

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

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

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

Принцип работы микропроцессора

Микропроцессоры семейств x86 и x86-64 являются прямыми потомками «классического» Intel 8086, поэтому его удобно рассматривать как основу для понимания принципов работы современных решений.

схема Intel 8086
Блок-схема внутренней организации 8086 показывает разделение на два независимых функциональных узла: блок интерфейса шины (BIU) и устройства управления (EU). Они функционируют параллельно, что повышает общую производительность.

BIU отвечает за взаимодействие процессора с внешними компонентами. Он реализует 16-разрядную двунаправленную шину данных и 20-разрядную адресную шину. В его задачи входят все операции внешнего обмена:

  • формирование адреса для чтения и записи в память или порты ввода/вывода;
  • выборка инструкций из памяти по заданному адресу;
  • считывание данных из памяти и периферии;
  • запись информации в память или устройства ввода/вывода;
  • поддержка очереди инструкций;
  • работа с преобразованием и смещением адресов.

Для выполнения этих функций блок содержит очередь инструкций (Instruction Stream Byte Queue), сегментные регистры (ES, CS, SS, DS), указатель инструкции (IP), сумматор адресов (Σ), а также управляющую логику шины.

Очередь инструкций

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

Благодаря этому УУ может брать следующую инструкцию из очереди, пока текущая ещё выполняется. Например, выполняется операция умножения. В архитектуре 8086 операнды обычно уже находятся в регистрах процессора, но сама операция требует около 100 тактов. Это довольно долго, и без дополнительных механизмов процессор простаивал бы.

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

принцип очереди fifo
Очередь работает по принципу «первым пришёл — первым ушёл» (First In, First Out, FIFO).

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

Сегментные регистры

Процессор 8086 имеет 20-битную адресную шину и способен обращаться к памяти объёмом до 1 МБ. При этом его регистры и шина данных имеют разрядность 16 бит, поэтому напрямую адресовать всё пространство за один раз невозможно. Для решения этой проблемы используется сегментация памяти.

Память рассматривается не как единое целое, а как набор сегментов размером до 64 КБ. В пределах одного сегмента доступ к данным возможен с использованием 16-битной шины. В любой момент времени процессор работает с четырьмя активными сегментами.

Для их хранения используются сегментные регистры (по 16 бит каждый):

  • CS (Code Segment) — кода.
  • DS (Data Segment) — данных.
  • SS (Stack Segment) — стека.
  • ES (Extra Segment) — дополнительный.

Эти регистры содержат старшие 16 бит начальных адресов соответствующих областей памяти. Например, CS задаёт базовый адрес сегмента кода, из которого выбираются инструкции.

сегментация памяти
Под базовым адресом понимается начальный байт активного сегмента кода

Назначение регистров:

  • CS указывает область, из которой извлекаются инструкции.
  • SS определяет сегмент стека, используемый при работе со стековыми операциями.
  • DS и ES применяются для работы с данными и дополнительными областями памяти.

Основные особенности сегментации:

  • сегменты могут перекрываться и начинаться с одного адреса (например, 00000H);
  • начало сегмента может быть любым адресом, кратным 16.

Преимущества такого подхода:

  • позволяет адресовать до 1 МБ памяти при 16-битных операциях;
  • даёт возможность работать с кодом, данными и стеком, превышающими 64 КБ, за счёт переключения сегментов;
  • упрощает разделение областей памяти под разные задачи программы;
  • обеспечивает переносимость программ, так как их размещение в памяти может изменяться при запуске, что важно для многозадачных систем.

Указатель инструкции

Регистр указателя инструкции хранит 16-битный адрес следующего байта кода в сегменте кода. Значение, содержащееся в регистре IP, называется смещением. Это значение необходимо сместить относительно базового адреса сегмента в CS (прибавить к нему), чтобы получить требуемый 20-битный физический адрес.

Формирование 20-битного адреса

Содержимое регистра CS умножается на 16, то есть сдвигается на четыре позиции влево путём вставки четырёх нулевых битов, а затем смещение, то есть содержимое IP добавляется к сдвинутому содержимому CS для формирования физического адреса. Как показано на рисунке ниже, содержимое CS равно 348AH, следовательно, сдвинутое содержимое CS равно 348A0H.

формирование адресов процессора
Когда интерфейс шины добавляет смещение 4214H в IP к этому начальному адресу, результатом становится 20-битное физическое значение 38AB4H

Устройство управления (EU)

У 8086 EU получает от интерфейса шины инструкции и данные, декодирует их и выполняет. Оно также определяет, какие действия должен выполнить процессор и какие операции передать другим блокам.

EU включает:

  • блок управления;
  • декодер инструкций;
  • АЛУ;
  • регистр флагов;
  • регистры общего назначения;
  • указатели и индексные регистры.

Схема управления, декодер инструкций, АЛУ

Блок управления координирует внутренние процессы EU. Декодер преобразует машинные инструкции в последовательность действий процессора.

АЛУ выполняет основные операции: сложение, вычитание, логические операции AND, OR, XOR, а также инкремент, декремент, сдвиги и другие операции с 16-битными данными.

Регистр флагов (FLAGS)

Флаг — это специальный бит, который отражает результат выполнения операции или управляет работой процессора.

регистр флагов процессора
Регистр FLAGS содержит набор из девяти активных флагов

Регистры общего назначения

В процессоре есть восемь 8-битных регистров: AH, AL, BH, BL, CH, CL, DH и DL. Они временно хранят данные — операнды, промежуточные результаты и счётчики.

Пары регистров (AX, BX, CX, DX) могут объединяться для работы с 16-битными значениями.

Указатели и индексные регистры

Хотя сегментные регистры имеют 16-битную разрядность, физический адрес памяти формируется как 20-битное значение. Для этого используются дополнительные регистры, связанные с адресацией.

К этой группе относятся:

  • IP (указатель инструкции);
  • SP (указатель стека);
  • BP (базовый указатель);
  • SI (индекс источника);
  • DI (индекс приёмника).

Указатель стека (SP)

Он хранит смещение относительно начала стекового сегмента и указывает на вершину стека.

указатель стека
Для работы со стеком физический адрес получается путём сложения содержимого регистра указателя стека с базовым адресом сегмента в регистре SS

Для этого содержимое регистра сегмента стека сдвигается на четыре бита влево, а содержимое SP добавляется к результату сдвига. Если SP равно 9F20H, а SS — 4000H, то физический адрес вычисляется следующим образом:

SS = Сдвиг 4000H на четыре бита влево = 40000H,

Физический адрес = SS + SP = 40000H + 9F20H = 49F20H

Указатель базы, индекса источника и приёмника (BP, SI и DI)

Эти регистры применяются как универсальные, но чаще имеют специальные роли:

  • BP — для доступа к данным в стеке.
  • SI — как индекс источника (например, при работе с массивами и строками).
  • DI — как индекс приёмника для записи результатов операций.

Кажется, что процессор не делает ничего сложнее, чем задачи по арифметике в первом классе! В общем-то, так и есть. Он способен работать только с очень небольшими порциями данных и ничего, того, что не смогут вычислить ученики начальной школы, он вычислить также не способен. Никакой процессор. Ни рассмотренный 8086, ни его правнуки — ультрасовременные Intel Core и AMD Ryzen. Вся его сила в том, что он умеет работать чертовски быстро! Разбивая программу на простейшие инструкции и выполняя их с огромнейшей скоростью, решают даже сложнейшие задачи.

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


Понравилась статья? Поделитесь ей в ваших социальных сетях:
Инструменты, которые окупаются за один сложный ремонт
Стоит ли покупать приборы для ремонта? Когда они окупятся? На эти вопросы ответит статья Суперайс
Инструменты, которые окупаются за один сложный ремонт 44
Инструменты, которые окупаются за один сложный ремонт
Почему современные платы стали «одноразовыми» и как это влияет на ремонт
Почему так сложно ремонтировать современные платы? На этот вопрос ответит статья магазина Суперайс
Почему современные платы стали «одноразовыми» и как это влияет на ремонт 110
Почему современные платы стали «одноразовыми» и как это влияет на ремонт
Какие инструменты покупают «на вырост»: опыт инженеров и лабораторий
Покупаете инструмент на раз? Инженеры объясняют, почему экономия убивает бюджет. В этой статье разбираем осциллографы, паяльные станции и блоки питания.
Какие инструменты покупают «на вырост»: опыт инженеров и лабораторий 130
Какие инструменты покупают «на вырост»: опыт инженеров и лабораторий