Основные компоненты внутри процессора, принцип работы, методы управления любым устройством с CPU. Как определить мощность ЦП быстро. Как увеличить эффективность кода, написанного программистом для выполнения CPU даже с невысокой частотой.
Все цифровые электронные устройства имеют в своей основе центральный процессор (CPU), который фактически является мозгом прибора. Процессоры устанавливаются на материнских платах ПК, в роутерах, игровых консолях, телефонах, планшетах, NAS и других устройствах. Изучение того, как работает процессор, важно для всех, кто собирается писать программное обеспечение. Также информация полезна всем, кто просто интересуется работой компьютеров. Основными частями CPU являются:
Арифметико-логическое устройство. Исполняет логические/арифметические действия (вычитание, сложение). Большая часть АЛУ включает в себя один выход или два входа, но есть разновидности с двумя выходами (такие арифметико-логические устройства называются посумматорами).
Устройство управления, позволяющее ЦП управлять работой устройства и исполнять все заложенные функции. УУ «говорит» периферии, что необходимо делать дальше, координируя работу с остальными частями системы. Предусмотрено два варианта устройства управления;
с использованием микропрограммного управления (MCU), где программная часть хранится в памяти УУ;
жесткой логикой (HCU), где особенности функционирования определены строением компонента. Внесение изменений в способ работы невозможно без вмешательства в физическую структуру.
Для обработки инструкций процессором ему нужны данные, часть из которых является промежуточной, а другие — входными/выходными. Наиболее простым объяснением функционирования ЦП является принцип, изложенный еще Дж. фон Нейманом 75 лет назад:
Fetch. Из регистра командной строки в ОЗУ проводится считывание команды, которая будет загружена в соответствующий накопитель.
Decode. Расшифровка поступившей команды при помощи декодера с последующей активацией схем для выполнения.
Fetch Operands. После загрузки значений и параметров команд в изменяемые регистры CPU может отыскать необходимые данные в RAM, кэш-памяти или съемном носителе.
Execute. Выполнение команды самим процессором или периферийным устройством. По окончанию данного этапа цикл повторяется.
Для увеличения эффективности кода рекомендуется изучить, как работает процессор. Достичь определенного результата можно с меньшим количеством строк кода. Это называется оптимизацией, которая позволяет сократить затраты ресурсов и времени на исполнение каждой задачи компьютером, микроконтроллером и другим устройством с ЦП в основе.
Каждая инструкция представляет собой вычисление, которое выполняет процессор. Есть несколько типов команд для выполнения. Все инструкции являются встроенными в CPU, а они генерируются компилятором. Набор инструкций может отличаться от одной линейки процессоров к другой, а стоимость изготовления CPU напрямую зависит от количества команд, которые выполняет ЦП.
Линейка процессоров x86 является обратно совместимой, что говорит о возможности выполнения кода, написанного еще на 8086 или 80486 с использованием современного CPU. В этом случае необходимо использование эмуляции, так как код, написанный для старого процессора с частотой 4,77 МГц на ассемблере, будет выполняться слишком быстро.
Любой процессор «понимает» команды в виде машинного кода, состоящего из простейших команд (нулей и единиц). Если вы ранее интересовались, как работает процессор, то уже знаете, что самым распространенным вариантом «общения» с процессором является написание программ на одном из языков программирования:
Высокоуровневые. Простые для понимания и портирования кода на другие устройства. Основной недостаток — требуется большая мощность самого CPU для исполнения. При этом код не привязан к тактовой частоте ЦП, как это есть с программами, написанными на asm.
Низкоуровневые. Наиболее популярный пример — ассемблер. Данный вариант является более эффективным и щадящим к ресурсам процессора, но требует и более высокий уровень подготовки программиста. У каждой линейки процессоров существует свой язык ассемблера, который быстро интерпретируется CPU. Наиболее популярным этот вариант программирования был на старых компьютерах (Apple II, C64, первые поколения Mac) и консолях (FamiCom, Mega Drive, Master System).
Быстродействие любого устройства с ЦП определяется именно тактовой частотой. Она представляет собой количество тактов за секунду, выполняемые CPU. Чем выше частота, тем быстрее устройство. Один цикл измеряется гигагерцами, а один ГГц равен 10 герцам, которые указывают на 10 циклов за секунду. Для ускорения работы процессора можно поднять тактовую частоту путем разгона, что является рискованным — операция способна повредить CPU и даже разъем с материнской платой.