07.10.2023

Популярно о сложном принцип работы процессора. Как работает процессор компьютера? Принцип действия процессора


Процессор - это, без сомнения, главный компонент любого компьютера. Именно этот небольшой кусочек кремния, размером в несколько десятков миллиметров выполняет все те сложные задачи, которые вы ставите перед своим компьютером. Здесь выполняется операционная система, а также все программы. Но как все это работает? Этот вопрос мы попытаемся разобрать в нашей сегодняшней статье.

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

Сначала давайте рассмотрим что такое процессор. CPU или central processing unit (центральное обрабатывающее устройство) - который представляет из себя микросхему с огромным количеством транзисторов, сделанную на кристалле кремния. Первый в мире процессор был разработан корпорацией Intel в 1971 году. Все началось с модели Intel 4004. Он умел выполнять только вычислительные операции и мог обрабатывать только 4 байта данных. Следующая модель вышла в 1974 году - Intel 8080 и мог обрабатывать уже 8 бит информации. Дальше были 80286, 80386, 80486. Именно от этих процессоров произошло название архитектуры.

Тактовая частота процессора 8088 была 5 МГц, а количество операций в секунду только 330 000 что намного меньше чем в современных процессоров. Современные устройства имеют частоту до 10 ГГц и несколько миллионов операций в секунду.

Мы не будем рассматривать транзисторы, переместимся на уровень выше. Каждый процессор состоит из таких компонентов:

  • Ядро - здесь выполняется вся обработка информации и математические операции, ядер может быть несколько;
  • Дешифратор команд - этот компонент относится к ядру, он преобразует программные команды в набор сигналов, которые будут выполнять транзисторы ядра;
  • Кэш - область сверхбыстрой памяти, небольшого объема, в которой хранятся данные, прочитанные из ОЗУ;
  • Регистры - это очень быстрые ячейки памяти, в которых хранятся сейчас обрабатываемые данные. Их есть всего несколько и они имеют ограниченный размер - 8, 16 или 32 бит именно от этот зависит разрядность процессора;
  • Сопроцессор - отдельное ядро, которое оптимизировано только для выполнения определенных операций, например, обработки видео или шифрования данных;
  • Адресная шина - для связи со всеми, подключенными к материнской плате устройствами, может иметь ширину 8, 16 или 32 бит;
  • Шина данных - для связи с оперативной памятью. С помощью нее процессор может записывать данные в память или читать их оттуда. Шина памяти может быть 8, 16 и 32 бит, это количество данных, которое можно передать за один раз;
  • Шина синхронизации - позволяет контролировать частоту процессора и такты работы;
  • Шина перезапуска - для обнуления состояния процессора;

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

  • Регистры A, B, C - предназначены для хранения данных во время обработки, да, их только три, но этого вполне достаточно;
  • EIP - содержит адрес следующей инструкции программы в оперативной памяти;
  • ESP - адрес данных в оперативной памяти;
  • Z - содержит результат последней операции сравнения;

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

Как работает процессор компьютера?

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

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

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

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

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

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

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

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

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

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

Выводы

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

На завершение видео об истории создания процессоров:

Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.

Чарльз Бэббидж

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

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

Два основных компонента процессора

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

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

Существует два типа реализации УУ:

  • УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением - устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
  • УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.

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

Арифметико-логическое устройство

Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.

Большинство логических элементов имеют два входа и один выход.

Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S - выходом, C - переносом (в старший разряд).

Схема арифметического полусумматора

Хранение информации - регистры и память

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

Регистры

Регистр - минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

Прим. перев. Триггеры могут быть синхронные и асинхронные. Асинхронные могут менять своё состояние в любой момент, а синхронные только во время положительного/отрицательного перепада на входе синхронизации.

По функциональному назначению триггеры делятся на несколько групп:

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set - Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

Для хранения промежуточных данных ОЗУ не подходит, т. к. это замедлит работу процессора. Промежуточные данные отсылаются в регистры по шине. В них могут храниться команды, выходные данные и даже адреса ячеек памяти.

Принцип действия RS-триггера

Память (ОЗУ)

ОЗУ (оперативное запоминающее устройство, англ. RAM) - это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.

Прим. перев. Оперативная память бывает статической и динамической - SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической - конденсаторы. SRAM быстрее, а DRAM дешевле.

Команды (инструкции)

Команды - это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические : сложение, вычитание, умножение и т. д.
  • Логические : И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные : move , input , outptut , load и store .
  • Команды перехода : goto , if ... goto , call и return .
  • Команда останова : halt .

Прим. перев. На самом деле все арифметические операции в АЛУ могут быть созданы на основе всего двух: сложение и сдвиг. Однако чем больше базовых операций поддерживает АЛУ, тем оно быстрее.

Инструкции предоставляются компьютеру на языке ассемблера или генерируются компилятором высокоуровневых языков.

В процессоре инструкции реализуются на аппаратном уровне. За один такт одноядерный процессор может выполнить одну элементарную (базовую) инструкцию.

Группу инструкций принято называть набором команд (англ. instruction set).

Тактирование процессора

Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота - количество тактов (соответственно и исполняемых команд) за секунду.

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц - миллиард операций в секунду.

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

Выполнение инструкций

Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, <1100 1000> . Первые 4 бита - код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A - поместить данные 1000 (последние 4 бита команды) в регистр A .
  2. LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 (0010) в регистр B .
  3. ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
  4. STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .

Вот такие операции нужны, чтобы сложить два числа.

Шина

Все данные между процессором, регистрами, памятью и I/O-устройствами (устройствами ввода-вывода) передаются по шинам. Чтобы загрузить в память только что обработанные данные, процессор помещает адрес в шину адреса и данные в шину данных. Потом нужно дать разрешение на запись на шине управления.

Кэш

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Поток инструкций

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

Однако такое решение подходит только для тех инструкций, которые не зависят друг от друга.

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

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

1. Введение 2. Ядро процессора 2.1. Принцип работы ядра процессора 2.2. Способы повышения производительности ядра процессора 2.2.1. Конвейеризация 2.2.2. Суперскалярность 2.2.3. Параллельная обработка данных 2.2.4. Технология Hyper-threading 2.2.5. Технология Turbo Boost. 2.2.6. Эффективность выполнения команд. 2.3 Способы снижения энергопотребления ядра процессора 3. КЭШ-память

1. Введение.

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

Большинство современных процессоров состоит из:

    одного или нескольких ядер, осуществляющих выполнение всех инструкций;

    нескольких уровней КЭШ-памяти (обычно, 2 или три уровня), ускоряющих взаимодействие процессора с ОЗУ;

    контроллера ОЗУ;

    контроллера системной шины (DMI, QPI, HT и т.д.);

И характеризуется следующими параметрами:

    типом микроархитектуры;

    тактовой частотой;

    набором выполняемых команд;

    количеством уровней КЭШ-памяти и их объемом;

    типом и скоростью системной шины;

    размерами обрабатываемых слов;

    наличием или отсутствием встроенного контроллера памяти;

    типом поддерживаемой оперативной памяти;

    объемом адресуемой памяти;

    наличием или отсутствием встроенного графического ядра;

    энергопотреблением.

Упрощенная структурная схема современного многоядерного процессора представлена на рисунке 1.

Начнем обзор устройства процессора с его основной части – ядра.

2. Ядро процессора.

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

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

    блока выборки инструкций;

    блоков декодирования инструкций;

    блоков выборки данных;

    управляющего блока;

    блоков выполнения инструкций;

    блоков сохранения результатов;

    блока работы с прерываниями;

    набора регистров;

    счетчика команд.

Блок выборки инструкций осуществляет считывание инструкций по адресу, указанному в счетчике команд. Обычно, за такт он считывает несколько инструкций. Количество считываемых инструкций обусловлено количеством блоков декодирования, так как необходимо на каждом такте работы максимально загрузить блоки декодирования. Для того чтобы блок выборки инструкций работал оптимально, в ядре процессора имеется предсказатель переходов.

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

Блоки декодирования , как понятно из названия, – это блоки, которые занимаются декодированием инструкций, т.е. определяют, что надо сделать процессору, и какие дополнительные данные нужны для выполнения инструкции. Задача эта для большинства современных коммерческих процессоров, построенных на базе концепции CISC, – очень сложная. Дело в том, что длина инструкций и количество операндов – нефиксированные, и это сильно усложняет жизнь разработчикам процессоров и делает процесс декодирования нетривиальной задачей.

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

В современных процессорах, обычно, бывает 2-4 блока декодирования инструкций, например, в процессорах Intel Core 2 каждое ядро содержит по два таких блока.

Блоки выборки данных осуществляют выборку данных из КЭШ-памяти или ОЗУ, необходимых для выполнения текущих инструкций. Обычно, каждое процессорное ядро содержит несколько блоков выборки данных. Например, в процессорах Intel Core используется по два блока выборки данных для каждого ядра.

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

Блоки выполнения инструкций включают в себя несколько разнотипных блоков:

ALU – арифметическое логическое устройство;

FPU – устройство по выполнению операций с плавающей точкой;

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

MMX (Multimedia Extensions) – набор инструкций, разработанный компанией Intel, для ускорения кодирования и декодирования потоковых аудио и видео-данных;

SSE (Streaming SIMD Extensions) – набор инструкций, разработанный компанией Intel, для выполнения одной и той же последовательности операций над множеством данных с распараллеливанием вычислительного процесса. Наборы команд постоянно совершенствуются, и на данный момент имеются ревизии: SSE, SSE2, SSE3, SSSE3, SSE4;

ATA (Application Targeted Accelerator) – набор инструкций, разработанный компанией Intel, для ускорения работы специализированного программного обеспечения и снижения энергопотребления при работе с такими программами. Эти инструкции могут использоваться, например, при расчете контрольных сумм или поиска данных;

3DNow – набор инструкций, разработанный компанией AMD, для расширения возможностей набора инструкций MMX;

AES (Advanced Encryption Standard) – набор инструкций, разработанный компанией Intel, для ускорения работы приложений, использующих шифрование данных по одноименному алгоритму.

Блок сохранения результатов обеспечивает запись результата выполнения инструкции в ОЗУ по адресу, указанному в обрабатываемой инструкции.

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

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

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

Регистры – сверхбыстрая оперативная память (доступ к регистрам в несколько раз быстрее доступа к КЭШ-памяти) небольшого объема (несколько сотен байт), входящая в состав процессора, для временного хранения промежуточных результатов выполнения инструкций. Регистры процессора делятся на два типа: регистры общего назначения и специальные регистры.

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

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

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

Структура центрального процессора

Чтобы непрофессионалу стало понятно, как работает центральный процессор компьютера, рассмотрим из каких блоков он состоит:

Блок управления процессором;

Регистры команд и данных;

Арифметико-логические устройства (выполняют арифметические и логические операции);

Блок операций с действительными числами, то есть с числами с плавающей точкой или проще говоря с дробями (FPU);

Буферная память (кэш) первого уровня (отдельно для команд и данных);

Буферная память (кэш) второго уровня для хранения промежуточных результатов вычислений;

В большинстве современных процессоров имеется и кэш третьего уровня;

Интерфейс системной шины.

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

Алгоритм работы центрального процессора компьютера можно представить как последовательность следующих действий.

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

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

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

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

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

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

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

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

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

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

Вы читаете эти строки со смартфона, планшета или компьютера. Любое из этих устройств основано на микропроцессоре. Микропроцессор является «сердцем» любого компьютерного устройства. Существует много типов микропроцессоров, но все они решают одни и те же задачи. Сегодня мы поговорим о том, как процессор работает и какие задачи он выполняет. На первый взгляд все это представляется очевидным. Но очень многим пользователям было бы интересно углубить свои знания о важнейшем компоненте, обеспечивающем работу компьютера. Мы узнаем о том, как технология, основанная на простой цифровой логике, позволяет вашему компьютеру не только решать математические задачи, но и быть развлекательным центром. Как всего две цифры — единица и ноль — преобразуются в красочные игры и фильмы? Этот вопрос многие неоднократно задавали себе и будут рады получить на него ответ. Ведь даже в основе недавно нами процессора AMD Jaguar, на котором базируются новейшие игровые приставки, лежит та же древняя логика.

В англоязычной литературе микропроцессор часто называют CPU (central processing unit, [единым] модулем центрального процессора). Причина такого названия кроется в том, что современный процессор представляет собою единый чип. Первый микропроцессор в истории человечества был создан корпорацией Intel в далеком 1971 году.

Роль Intel в истории микропроцессорной индустрии


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

Первым микропроцессором для домашних компьютеров стал представленный в 1974 году Intel 8080. Вся вычислительная мощность 8-битного компьютера помещалась в одном чипе. Но по-настоящему большое значение имел анонс процессора Intel 8088. Он появился в 1979 году и с 1981 года стал использоваться в первых массовых персональных компьютерах IBM PC.

Далее процессоры начали развиваться и обрастать мощью. Каждый, кто хоть немного знаком с историей микропроцессорной индустрии, помнит, что на смену 8088 пришли 80286. Затем настал черед 80386, за которым следовали 80486. Потом были несколько поколений «Пентиумов»: Pentium, Pentium II, III и Pentium 4. Все это «интеловские» процессоры, основанные на базовой конструкции 8088. Они обладали обратной совместимостью. Это значит, что Pentium 4 мог обработать любой фрагмент кода для 8088, но делал это со скоростью, возросшей примерно в пять тысяч раз. С тех пор прошло не так много лет, но успели смениться еще несколько поколений микропроцессоров.


С 2004 года Intel начала предлагать многоядерные процессоры. Число используемых в них транзисторов возросло на миллионы. Но даже сейчас процессор подчиняется тем общим правилам, которые были созданы для ранних чипов. В таблице отражена история микропроцессоров Intel до 2004 года (включительно). Мы сделаем некоторые пояснения к тому, что означают отраженные в ней показатели:
  • Name (Название). Модель процессора
  • Date (Дата). Год, в который процессор был впервые представлен. Многие процессоры представляли многократно, каждый раз, когда повышалась их тактовая частота. Таким образом, очередная модификация чипа могла быть повторно анонсирована даже через несколько лет после появления на рынке первой его версии
  • Transistors (Количество транзисторов). Количество транзисторов в чипе. Вы можете видеть, что этот показатель неуклонно увеличивался
  • Microns (Ширина в микронах). Один микрон равен одной миллионной доле метра. Величина этого показателя определяется толщиной самого тонкого провода в чипе. Для сравнения, толщина человеческого волоса составляет 100 микрон
  • Clock speed (Тактовая частота). Максимальная скорость работы процессора
  • Data Width. «Битность» арифметико-логического устройства процессора (АЛУ, ALU). 8-битное АЛУ может слагать, вычитать, умножать и выполнять иные действия над двумя 8-битными числами. 32-битное АЛУ может работать с 32-битными числами. Чтобы сложить два 32-битных числа, восьмибитному АЛУ необходимо выполнить четыре инструкции. 32-битное АЛУ справится с этой задачей за одну инструкцию. Во многих (но не во всех) случаях ширина внешней шины данных совпадает с «битностью» АЛУ. Процессор 8088 обладал 16-битным АЛУ, но 8-битной шиной. Для поздних «Пентиумов» была характерна ситуация, когда шина была уже 64-битной, а АЛУ по-прежнему оставалось 32-битным
  • MIPS (Миллионов инструкций в секунду). Позволяет приблизительно оценить производительность процессора. Современные выполняют настолько много разных задач, что этот показатель потерял свое первоначальное значение и может использоваться, в основном, для сравнения вычислительной мощности нескольких процессоров (как в данной таблице)

Существует непосредственная связь между тактовой частотой, а также количеством транзисторов и числом операций, выполняемых процессором за одну секунду. Например, тактовая частота процессора 8088 достигала 5 МГЦ, а производительность: всего 0,33 миллиона операций в секунду. То есть на выполнение одной инструкции требовалось порядка 15 тактов процессора. В 2004 году процессоры уже могли выполнять по две инструкции за один такт. Это улучшение было обеспечено увеличением количества процессоров в чипе.

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

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


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

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

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

Микропроцессор содержит:

  • Address bus (адресную шину). Ширина этой шины может составлять 8, 16 или 32 бита. Она занимается отправкой адреса в память
  • Data bus (шину данных): шириной 8, 16, 32 или 64 бита. Эта шина может отправлять данные в память или принимать их из памяти. Когда говорят о «битности» процессора, речь идет о ширине шины данных
  • Каналы RD (read, чтения) и WR (write, записи), обеспечивающие взаимодействие с памятью
  • Clock line (шина синхронизирующих импульсов), обеспечивающая такты процессора
  • Reset line (шина стирания, шина сброса), обнуляющая значение счетчика команд и перезапускающая выполнение инструкций

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

  • Регистры A, B и C являются логическими микросхемами, используемыми для промежуточного хранения данных
  • Address latch (защелка адреса) подобна регистрам A, B и C
  • Счетчик команд является логической микросхемой (защелкой), способной приращивать значение на единицу за один шаг (если им получена соответствующая команда) и обнулять значение (при условии получения соответствующей команды)
  • ALU (арифметико-логическое устройство) может осуществлять между 8-битными числами действия сложения, вычитания, умножения и деления или выступать в роли обычного сумматора
  • Test register (тестовый регистр) является специальной защелкой, которая хранит результаты операций сравнения, производимых АЛУ. Обычно АЛУ сравнивает два числа и определяет, равны ли они или одно из них больше другого. Тестовый регистр способен также хранить бит переноса последнего действия сумматора. Он хранит эти значения в триггерной схеме. В дальнейшем эти значения могут использоваться дешифратором команд для принятия решений
  • Шесть блоков на диаграмме отмечены, как «3-State». Это буферы сортировки. Множество источников вывода могут быть соединены с проводом, но буфер сортировки позволяет только одному из них (в один момент времени) передавать значение: «0» или «1». Таким образом буфер сортировки умеет пропускать значения или перекрывать источнику вывода возможность передавать данные
  • Регистр команд (instruction register) и дешифратор команд (instruction decoder) держат все вышеперечисленные компоненты под контролем

На данной диаграмме не отображены линии управления дешифратора команд, которые можно выразить в виде следующих «приказов»:

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

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

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


Знакомство с , касающимися компьютерной памяти и ее иерархии помогут лучше понять содержание этого раздела.

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

Модуль постоянной памяти содержит определенный предварительно установленный постоянный набор байт. Адресная шина запрашивает у ПЗУ определенный байт, который следует передать шине данных. Когда канал чтения (RD) меняет свое состояние, модуль ПЗУ предоставляет запрошенный байт шине данных. То есть в данном случае возможно только чтение данных.

Из оперативной памяти процессор может не только считывать информацию, он способен также записывать в нее данные. В зависимости от того, чтение или запись осуществляется, сигнал поступает либо через канал чтения (RD), либо через канал записи (WR). К сожалению, оперативная память энергозависима. При отключении питания она теряет все размещенные в ней данные. По этой причине компьютеру необходимо энергонезависимое постоянное запоминающее устройство.

Более того, теоретически компьютер может обойтись и вовсе без оперативной памяти. Многие микроконтроллеры позволяют размещать необходимые байты данных непосредственно в чип процессора. Но без ПЗУ обойтись невозможно. В персональных компьютерах ПЗУ называется базовой системой ввода и вывода (БСВВ, BIOS, Basic Input/Output System). Свою работу при запуске микропроцессор начинает с выполнения команд, найденных им в BIOS.

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

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


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

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

  • LOADA mem — Загрузить (load) регистр A из некоторого адреса памяти
  • LOADB mem — Загрузить (load) регистр B из некоторого адреса памяти
  • CONB con — Загрузить постоянное значение (constant value) в регистр B
  • SAVEB mem — Сохранить (save) значение регистра B в памяти по определенному адресу
  • SAVEC mem — Сохранить (save) значение регистра C в памяти по определенному адресу
  • ADD — Сложить (add) значения регистров A и B. Результат действия сохранить в регистре C
  • SUB — Вычесть (subtract) значение регистра B из значения регистра A. Результат действия сохранить в регистре C
  • MUL — Перемножить (multiply) значения регистров A и B. Результат действия сохранить в регистре C
  • DIV — Разделить (divide) значение регистра A на значение регистра B. Результат действия сохранить в регистре C
  • COM — Сравнить (compare) значения регистров A и B. Результат передать в тестовый регистр
  • JUMP addr — Перепрыгнуть (jump) к указанному адресу
  • JEQ addr — Если выполняется условие равенства значений двух регистров, перепрыгнуть (jump) к указанному адресу
  • JNEQ addr — Если условие равенства значений двух регистров не выполняется, перепрыгнуть (jump) к указанному адресу
  • JG addr — Если значение больше, перепрыгнуть (jump) к указанному адресу
  • JGE addr — Если значение больше или равно, перепрыгнуть (jump) к указанному адресу
  • JL addr — Если значение меньше, перепрыгнуть (jump) к указанному адресу
  • JLE addr — Если значение меньше или равно, перепрыгнуть (jump) к указанному адресу
  • STOP — Остановить (stop) выполнение

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

Работа микропроцессора на примере вычисления факториала


Рассмотрим работу микропроцессора на конкретном примере выполнения им простой программы, которая вычисляет факториал от числа «5». Сначала решим эту задачку «в тетради»:

факториал от 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120

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

A=1;f=1;while (a

Когда эта программа завершит свою работу, переменная f будет содержать значение факториала от пяти.

Компилятор C транслирует (то есть переводит) этот код в набор инструкций языка ассемблера. В рассматриваемом нами процессоре оперативная память начинается с адреса 128, а постоянная память (которая содержит язык ассемблера) начинается с адреса 0. Следовательно, на языке данного процессора эта программа будет выглядеть так:

// Предположим, что a по адресу 128// Предположим, что F по адресу 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 the jump to 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // loop back to if17 STOP

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

  • LOADA — 1
  • LOADB — 2
  • CONB — 3
  • SAVEB — 4
  • SAVEC mem — 5
  • ADD — 6
  • SUB — 7
  • MUL — 8
  • DIV — 9
  • COM — 10
  • JUMP addr — 11
  • JEQ addr — 12
  • JNEQ addr — 13
  • JG addr — 14
  • JGE addr — 15
  • JL addr — 16
  • JLE addr — 17
  • STOP — 18

// Предположим, что a по адресу 128// Предположим, что F по адресу 129Addr машинная команда/значение0 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 байта.

Декодирование


Разговор о декодировании придется начать c рассмотрения филологических вопросов. Увы, далеко не все компьютерные термины имеют однозначные соответствия в русском языке. Перевод терминологии зачастую шел стихийно, а поэтому один и тот же английский термин может переводиться на русский несколькими вариантами. Так и случилось с важнейшей составляющей микропроцессорной логики «instruction decoder». Компьютерные специалисты называют его и дешифратором команд и декодером инструкций. Ни одно из этих вариантов названия невозможно назвать ни более, ни менее «правильным», чем другое.

Дешифратор команд нужен для того, чтобы перевести каждый машинный код в набор сигналов, приводящих в действие различные компоненты микропроцессора. Если упростить суть его действий, то можно сказать, что именно он согласует «софт» и «железо».

Рассмотрим работу дешифратора команд на примере инструкции ADD, выполняющей действие сложения:

  • В течение первого цикла тактовой частоты процессора происходит загрузка команды. На этом этапе дешифратору команд необходимо: активировать буфер сортировки для счетчика команд; активировать канал чтения (RD); активировать защелку буфера сортировки на пропуск входных данных в регистр команд
  • В течение второго цикла тактовой частоты процессора команда ADD декодируется. На этом этапе арифметико-логическое устройство выполняет сложение и передает значение в регистр C
  • В течение третьего цикла тактовой частоты процессора счетчик команд увеличивает свое значение на единицу (теоретически, это действие пересекается с происходившим во время второго цикла)

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

Микропроцессоры: производительность и тенденции


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

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

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

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


Хотя массовое распространение 64-битные процессоры получили лишь несколько лет назад, они существуют уже сравнительно давно: с 1992 года. И Intel, и AMD предлагают в настоящее время такие процессоры. 64-битным можно считать такой процессор, который обладает 64-битным арифметико-логическим устройством (АЛУ), 64-битными регистрами и 64-битными шинами.

Основная причина, по которой процессорам нужна 64-битность, состоит в том, что данная архитектура расширяет адресное пространство. 32-битные процессоры могут получать доступ только к двум или четырем гигабайтам оперативной памяти. Когда-то эти цифры казались гигантскими, но миновали годы и сегодня такой памятью никого уже не удивишь. Несколько лет назад память обычного компьютера составляла 256 или 512 мегабайт. В те времена четырехгигабайтный лимит мешал только серверам и машинам, на которых работают большие базы данных.

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

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

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

По материалам computer.howstuffworks.com


© 2024
exotop.ru - ExoTop - интернет и технологии