Как работают микропроцессоры

Как работают микропроцессоры
Как работают микропроцессоры
микропроцессор
микропроцессор

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

Микропроцессор, также известный какCPU или центральный процессор, представляет собой законченный вычислительный механизм, изготовленный на одном кристалле. Первым микропроцессором был Intel 4004, представленный в 1971 году. 4004 был не очень мощным - все, что он мог делать, это складывать и вычитать, и он мог делать это только 4 бита за раз. Но было удивительно, что все было на одном чипе. До 4004 инженеры строили компьютеры либо из наборов микросхем, либо из отдельных компонентов (транзисторов, соединенных по одному). На 4004 работал один из первых портативных электронных калькуляторов.

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

Прогрессия микропроцессоров: Intel

Интел 8080
Интел 8080

Первым микропроцессором, использованным в домашнем компьютере, был Intel 8080, полноценный 8-битный компьютер на одном кристалле, представленный в 1974 году. Первым микропроцессором, произведшим настоящий фурор на рынке, был Intel 8088, представлен в 1979 году и включен в состав IBM PC (который впервые появился примерно в 1982 году). Если вы знакомы с рынком ПК и его историей, то знаете, что рынок ПК перешел от 8088 к 80286, к 80386, к 80486, к серии Pentium, к серии Core, к серии Xeon. Все эти микропроцессоры производятся Intel, и все они являются усовершенствованием базовой конструкции 8088.

С 2004 года Intel представила микропроцессоры с несколькими ядрами и миллионами дополнительных транзисторов. Но даже эти микропроцессоры подчиняются тем же общим правилам, что и более ранние чипы.

Процессор Intel Core i9 может иметь до восьми ядер, каждое из которых может выполнять любой фрагмент кода, работавший на оригинальном 8088, всего примерно в 6 700 раз быстрее! Каждое ядро может обрабатывать несколько потоков инструкций, что позволяет компьютеру более эффективно управлять задачами.

С 1970-х годов ассортимент продукции Intel существенно расширился. На момент написания этой статьи компания по-прежнему производит процессоры Pentium и Core для компьютеров, но более производительные ПК и серверы могут использовать чип Xeon. Кроме того, Intel предлагает линейки процессоров Celeron и Atom. Celeron ориентирован на пользователей компьютеров начального уровня, а процессоры Atom лучше подходят для мобильных устройств и устройств, являющихся частью Интернета вещей.

Несмотря на то, что Intel по-прежнему занимает большую долю рынка, у нее больше конкурентов, чем ее справедливая доля. AMD конкурирует с Intel на рынке процессоров для ПК, но также имеет большой бизнес в области чипов для графических процессоров, популярных среди геймеров. Nvidia, известная своими графическими чипами, также производит процессоры. В 2020 году Apple представила свои чипы серии M, которые заменяют чипы Intel, которые Apple использовала для своих компьютеров Macintosh. Samsung также может работать над собственным дизайном процессоров. Многие другие компании производят процессоры для других применений электроники, таких как автомобили и продукты для умного дома. Рынок становится все более и более конкурентным.

Что такое чип?

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

Логика микропроцессора

Процессор Интел Пентиум 4.
Процессор Интел Пентиум 4.

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

Микропроцессор выполняет набор машинных инструкций, которые сообщают процессору, что делать. Основываясь на инструкциях, микропроцессор делает три основные вещи:

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

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

микропроцессор
микропроцессор

Это настолько просто, насколько это возможно для микропроцессора. Этот микропроцессор имеет:

  • Шинаадресная шина (которая может иметь ширину 8, 16, 32 или 64 бита), которая отправляет адрес в память
  • Aшина данных (которая может иметь ширину 8, 16, 32 или 64 бита), которая может отправлять данные в память или получать данные из памяти
  • СтрокаRD(чтение) иWR (запись), чтобы сообщить памяти, должна ли она установить или получить адресованное местоположение
  • Aтактовая линия, которая позволяет тактовому импульсу последовательности процессора
  • Areset line, которая сбрасывает счетчик программ на ноль (или что-то еще) и перезапускает выполнение

Давайте предположим, что в этом примере и адресная шина, и шина данных имеют разрядность 8 бит.

Вот компоненты этого простого микропроцессора:

  • Регистры A, B и C - это просто защелки, сделанные из триггеров. (Подробности см. в разделе «Защелки, запускаемые фронтом» в книге «Как работает логическая логика».)
  • Защелка адреса аналогична регистрам A, B и C.
  • Счетчик программ - это защелка с дополнительной способностью увеличиваться на 1, когда об этом говорят, и сбрасываться на ноль, когда об этом говорят.
  • АЛУ может быть таким же простым, как 8-битный сумматор (подробности см. в разделе о сумматорах в книге «Как работает логическая логика»), или он может складывать, вычитать, умножать и делить 8-битные значения. Давайте предположим здесь последнее.
  • Регистр проверки - это специальная защелка, в которой могут храниться значения из сравнений, выполненных в АЛУ. ALU обычно может сравнивать два числа, чтобы определить, равны ли они, больше ли одно, чем другое и т. д. Тестовый регистр также может обычно хранить бит переноса из последней ступени сумматора. Он сохраняет эти значения в триггерах, а затем декодер инструкций может использовать эти значения для принятия решений.
  • На диаграмме есть шесть полей с пометкой «3-State». Этобуферы с тремя состояниямиБуфер с тремя состояниями может передавать 1, 0 или он может по существу отключать свой выход (представьте себе переключатель, который полностью отключает выходную линию от провода, к которому направляется выход). Буфер с тремя состояниями позволяет нескольким выходам подключаться к проводу, но только один из них фактически передает 1 или 0 на линию.
  • Регистр инструкций и декодер инструкций отвечают за управление всеми остальными компонентами.

Хотя они не показаны на этой диаграмме, там должны быть линии управления от декодера команд, которые будут:

  • Указать регистру A зафиксировать текущее значение на шине данных
  • Сообщить регистру B, чтобы он зафиксировал текущее значение на шине данных
  • Сообщить регистру C, чтобы он зафиксировал значение, выдаваемое ALU
  • Указать регистру счетчика программ зафиксировать текущее значение на шине данных
  • Указать адресному регистру зафиксировать текущее значение на шине данных
  • Указывает регистру команд зафиксировать значение, которое в данный момент находится на шине данных
  • Указать программному счетчику увеличить
  • Сообщить счетчику программ обнулить
  • Активировать любой из шести буферов с тремя состояниями (шесть отдельных строк)
  • Сообщить АЛУ, какую операцию выполнить
  • Указать тестовому регистру зафиксировать тестовые биты АЛУ
  • Активировать линию RD
  • Активировать линию WR

В декодер команд поступают биты из тестового регистра и тактовой линии, а также биты из регистра инструкций.

Память микропроцессора

В предыдущем разделе говорилось о шинах адреса и данных, а также о линиях RD и WR. Эти шины и линии подключаются либо к ОЗУ, либо к ПЗУ - обычно к обоим. В нашем образце микропроцессора у нас есть адресная шина шириной 8 бит и шина данных шириной 8 бит. Это означает, что микропроцессор может адресовать 256 байтов памяти и одновременно считывать или записывать 8 бит памяти. Предположим, что этот простой микропроцессор имеет 128 байт ПЗУ, начиная с адреса 0, и 128 байт ОЗУ, начиная с адреса 128.

ROM означает постоянную память. Чип ПЗУ запрограммирован с постоянным набором предварительно установленных байтов. Адресная шина сообщает микросхеме ПЗУ, какой байт следует получить и поместить на шину данных. Когда линия RD изменяет состояние, микросхема ПЗУ представляет выбранный байт на шину данных.

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

Кстати, почти все компьютеры содержат некоторое количество ПЗУ (можно создать простой компьютер без ОЗУ - многие микроконтроллеры делают это, помещая несколько байтов ОЗУ в сам чип процессора - но обычно невозможно создать тот, который не содержит ПЗУ). На ПК ПЗУ называется BIOS (базовая система ввода/вывода). Когда микропроцессор запускается, он начинает выполнять инструкции, найденные в BIOS. Инструкции BIOS делают такие вещи, как тестирование аппаратного обеспечения в машине, а затем они отправляются на жесткий диск для получениязагрузочного сектора (подробности см. в разделе «Как работают жесткие диски»). Этот загрузочный сектор представляет собой еще одну небольшую программу, и BIOS сохраняет ее в оперативной памяти после считывания с диска. Затем микропроцессор начинает выполнять инструкции загрузочного сектора из ОЗУ. Программа загрузочного сектора скажет микропроцессору загрузить что-то еще с жесткого диска в ОЗУ, что микропроцессор затем выполнит, и так далее. Так микропроцессор загружает и выполняет всю операционную систему.

Инструкции микропроцессора

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

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

  • LOADA mem - Загрузить регистр A из адреса памяти
  • LOADB mem - Загрузить регистр B из адреса памяти
  • CONB con - Загрузить постоянное значение в регистр B
  • SAVEB mem - Сохранить регистр B по адресу памяти
  • SAVEC mem - Сохранить регистр C по адресу памяти
  • ADD - добавить A и B и сохранить результат в C
  • SUB - вычесть A и B и сохранить результат в C
  • MUL - умножить A и B и сохранить результат в C
  • DIV - разделить A и B и сохранить результат в C
  • COM - сравнение A и B и сохранение результата в тесте
  • JUMP addr - Перейти к адресу
  • JEQ addr - Перейти, если они равны, к адресу
  • JNEQ addr - Перейти, если не равно, к адресу
  • JG addr - Перейти, если больше, к адресу
  • JGE addr - Перейти, если больше или равно, к адресу
  • JL addr - Перейти, если меньше, к адресу
  • JLE addr - Перейти, если меньше или равно, к адресу
  • STOP - Остановить выполнение

Если вы читали «Как работает программирование на C», то знаете, что этот простой фрагмент кода на C вычисляет факториал 5 (где факториал 5=5!=54321=120):

a=1;f=1;в то время как (a<=5){ f=fa; а=а + 1;}

В конце выполнения программы переменнаяf содержит факториал 5.

Язык ассемблера

AКомпилятор C переводит этот код C на язык ассемблера. Если предположить, что ОЗУ в этом процессоре начинается с адреса 128, а ПЗУ (содержащее программу на ассемблере) начинается с адреса 0, то для нашего простого микропроцессора язык ассемблера может выглядеть так:

// Предположим, что a находится по адресу 128// Предположим, что F находится по адресу 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // если a > 5 переход к 175 CONB 56 COM7 JG 178 LOADA 129 // f=fa;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // вернуться к if17 СТОП

ROM

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

  • LOADA - 1
  • ЗАГРУЗКА БД - 2
  • КОНБ - 3
  • СОХРАНИТЬB - 4
  • SAVEC мем - 5
  • ДОБАВИТЬ - 6
  • SUB - 7
  • МУЛ - 8
  • ДЕЛ - 9
  • КОМ - 10
  • Адрес ПЕРЕХОДА - 11
  • JEQ адрес - 12
  • Адрес JNEQ - 13
  • JG адрес - 14
  • JGE-адрес - 15
  • JL адрес - 16
  • JLE-адрес - 17
  • СТОП - 18

Числа известны каккоды операций. В ПЗУ наша программка будет выглядеть так:

// Предположим, что a находится по адресу 128// Предположим, что F находится по адресу 129Addr opcode/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 / / LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 / / CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Вы можете видеть, что семь строк кода C превратились в 18 строк ассемблера, а в ПЗУ это стало 32 байта.

Расшифровка

Декодер инструкций должен преобразовать каждый код операции в набор сигналов, которые управляют различными компонентами внутри микропроцессора. Возьмем в качестве примера инструкцию ADD и посмотрим, что она должна делать:

  1. Во время первого такта нам нужно загрузить инструкцию. Следовательно, декодер инструкций должен:
  2. активировать буфер с тремя состояниями для счетчика программ
  3. активировать линию RD
  4. активировать>Производительность и тенденции микропроцессора

    Количество доступныхтранзисторов оказывает огромное влияние на производительность процессора. Как было показано ранее, типичная инструкция процессора, такого как 8088, выполнялась за 15 тактов. Из-за конструкции умножителя для выполнения одного 16-битного умножения на процессоре 8088 требовалось около 80 циклов. С большим количеством транзисторов становятся возможными гораздо более мощные умножители, способные работать с однотактной скоростью.

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

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

    Тренды

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

    64-битные микропроцессоры

    микропроцессор
    микропроцессор

    64-битные процессоры с нами с 1992 года, а в 21 веке они стали мейнстримом. Эти процессоры имеют 64-битные АЛУ, 64-битные регистры, 64-битные шины и так далее.

    Одна из причин, по которой миру нужны 64-битные процессоры, заключается в ихрасширенном адресном пространстве Тридцатидвухбитные чипы часто ограничены максимальным объемом 2 ГБ или 4 ГБ. доступа к оперативной памяти. Это казалось много, когда большинство домашних компьютеров использовали только от 256 МБ до 512 МБ ОЗУ. Но домашние компьютеры 21-го века могут обрабатывать данные (очень сложные данные содержат много вещественных чисел) быстрее. Люди, занимающиеся редактированием видео, и люди, занимающиеся редактированием фотографий очень больших изображений, получают выгоду от такой вычислительной мощности. Продвинутые геймеры также выиграют от более детализированных игр с высоким разрешением.

    64-битный чип открывает больше возможностей, потому что 64-битное адресное пространство ОЗУ практически бесконечно в обозримом будущем - 2^64 байта ОЗУ - это что-то порядка миллиарда гигабайт ОЗУ. Благодаря 64-битной адресной шине и широким высокоскоростным шинам данных на материнской плате 64-битные машины также обеспечивают более высокую скорость ввода-вывода для таких устройств, как жесткие диски и видеокарты. Эти функции могут значительно повысить производительность системы.

    Для получения дополнительной информации о микропроцессорах и смежных темах перейдите по следующим ссылкам.

    Часто задаваемые вопросы

    Для чего используется микропроцессор?

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

    Как называется микропроцессор?

    Микропроцессор также известен как центральный процессор.