Когда большинство людей слышат термин «ЦП», они автоматически ограничивают свое мышление компьютером. Некоторые видят в нем ту гигантскую коробку, которая сопровождает ваш настольный компьютер.

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

Что такое процессор?

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

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

Процессоры — это то, что запускает веб-браузер, который вы используете для чтения этой статьи, все ваши мобильные и настольные приложения.

ЦП содержит три основных компонента: память, блок управления и АЛУ (арифметико-логическое устройство).

«Хорошая новость о компьютерах заключается в том, что они делают то, что вы им говорите. Плохая новость в том, что они делают то, что вы им говорите». Тед Нельсон

Современная архитектура ЦП реализована на ИС (интегральных схемах) с одной или двумя одиночными микросхемами металл-оксид-полупроводник. Чипы микропроцессоров с несколькими процессорами называются многоядерными процессорами. В этой статье мы будем иметь в виду архитектуру одного ядра ЦП.

ИС, содержащая ЦП, может иногда иметь периферийные интерфейсы и другие компоненты компьютеров, такие ИС обычно называют микроконтроллерами или SoC (системами на кристалле).

Краткая история архитектуры ЦП

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

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

В середине 1940-х годов Джон фон Нейман предложил компьютерную модель с хранимой программой. Эта модель переосмыслила компьютер общего назначения как три отдельных компонента:

  • Память: компонент памяти для хранения данных и инструкций.
  • Центральный процессор: для декодирования и выполнения инструкций
  • Входы/выходы: набор входных и выходных интерфейсов.

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

В конце 1940-х годов произошло развитие транзисторной технологии на основе полупроводников, которая пришла на смену старой конструкции на электронных лампах большинства конструкций ЦП.

Вычисление уровней абстракции

Есть две основные ключевые концепции, необходимые для понимания того, как работает ЦП; двоичная система и вычислительные уровни абстракции.

Компьютеры используют систему счисления, основанную на нулях и единицах. Для того чтобы компьютеры функционировали критически, вся информация, данные и числа должны быть представлены в простых состояниях ВКЛ или ВЫКЛ. Символы и числа, которые мы используем для общения, могут быть легко переведены в двоичные системы, такие как ASCII-представление символов алфавита.

Уровни вычислительной абстракции относятся к тому, как вы можете начать с очень простых вещей, таких как атомы и транзисторы, и добавить уровень абстракции, уровень абстракции для построения сложных приложений, работающих в крупных центрах обработки данных. В основе слоев абстракции лежат атомы, объединенные в такие материалы, как кремний, из которого мы делаем простые транзисторы. Эти транзисторы действуют как переключатели, которые включаются или выключаются при подаче сигнала электрического тока или напряжения. Соединяя многочисленные переключатели вместе в точном порядке, мы формируем то, что мы называем ВОРОТАМИ, фундаментальными булевыми логическими операторами для выполнения вычислений (И, ИЛИ, НЕ ВОРОТАМИ). Теперь мы можем абстрагировать единицы и нули на языке логики, который более эффективен для понимания, чем язык физики и потока электронов. Используя транзисторы в качестве переключателей и соединяя выход одного со входом другого, мы можем построить множество логических схем или функциональных блоков. Эти функциональные блоки могут принимать форму сумматоров, мультиплексоров, триггеров, защелок, регистров, счетчиков, декодеров и т. д. Объединение функциональных блоков вместе позволяет выполнять еще более сложные логические функции.

С помощью этих сложных логических функций мы можем создавать собственные исполнительные блоки, выполняющие определенные вычисления. Одним из наиболее важных исполнительных блоков ЦП является АЛУ.

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

Архитектура набора инструкций

Архитектура набора инструкций (ISA) — это набор инструкций, который определяет, какие операции могут выполняться на оборудовании. Это больше похоже на язык компьютера. Как и в английском, во французском есть словари, в которых описываются слова, формат, грамматический синтаксис, значение и произношение. ISA — это абстрактная модель, которую иногда называют архитектурой компьютера. ISA определяет модель памяти, поддерживаемые типы данных, регистры, поведение машинного кода, то есть последовательности нулей и единиц, которые должен выполнять ЦП. Несколько типов ISA включают x86, ARM (Advanced RISC Machines), MIPS (микропроцессор без взаимосвязанных этапов конвейера). ISA действует как мост между аппаратным и программным обеспечением. Что касается программного обеспечения, ISA использует компилятор для преобразования кода, написанного на языке высокого уровня, таком как C, Python или Java, в инструкции машинного кода, которые может выполнять ЦП. Что касается аппаратного обеспечения, то при проектировании микроархитектуры ЦП ISA служит проектной спецификацией, которая указывает инженеру, какой набор инструкций и типов данных эта архитектура ЦП должна интерпретировать и выполнять.

Инструкции в ISA не зависят от реализации, это означает, что если разные компании создают различные проекты микроархитектуры, все они могут выполнять один и тот же код на основе одной и той же ISA. Компьютерные архитекторы продолжают развивать ISA, расширяя наборы инструкций. Эти дополнительные инструкции часто создаются для более эффективного выполнения определенных операций, используя новые элементы обработки в своей микроархитектуре. Эти расширения ISA повышают производительность процессора за счет оптимизации операций для определенного расположения элементов обработки. Современные процессоры поддерживают тысячи различных операций, многие из которых связаны с арифметическими операциями (сложение, вычитание, деление, умножение), логическими операциями (И, НЕ, ИЛИ), операциями с памятью (загрузка, сохранение, перемещение) и управлением потоком, например разветвление. Это упрощенное объяснение ISA, важно отметить, что современные ISA намного сложнее, чем я мог бы объяснить в этой короткой статье. ISA являются одной из наиболее важных частей современного дизайна ЦП, поскольку они являются связующим звеном между аппаратным и программным обеспечением, что обеспечивает высокопроизводительные вычисления и бесперебойную работу программного обеспечения на различных микроархитектурах ЦП.