Как сделать

HTG объясняет: как на самом деле работает процессор?

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

Большая часть исследований для этой статьи написана Дж. Кларком Скоттом «Но как это узнать?» . Это фантастическое чтение, оно гораздо глубже, чем эта статья, и стоит того, чтобы заплатить пару долларов на Amazon.

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

Начиная с малого

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

СВЯЗАННЫЕ: Что такое бинарный, и почему компьютеры используют его?

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

Логические ворота

Правильно сложите несколько транзисторов, и вы получите так называемые логические элементы. Логические элементы берут два двоичных входа, выполняют над ними операцию и возвращают выход. Например, вентиль OR возвращает true, если любой из входов имеет значение true. Логический элемент И проверяет, являются ли оба входа истинными, XOR проверяет, является ли истинным только один из входов, а N-варианты (NOR, NAND и XNOR) являются инвертированными версиями своих базовых вентилей.

Математика с воротами

Всего с двумя воротами вы можете сделать базовое двоичное сложение. На этой диаграмме выше показан половинный сумматор, созданный с помощью бесплатной онлайн-площадки для логических ворот Logicly . Гейт XOR здесь включится, если включен только один из входов, но не оба. Вентиль AND включится, если оба входа включены, но останется выключенным, если нет входа. Таким образом, если оба включены, XOR остается выключенным, и вентиль AND включается, получая правильный ответ из двух:

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

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

Когда оба входа включены, перенос включается и отправляет его следующему полному сумматору в цепочке:

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

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

Автобус и память

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

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

Каждый регистр все еще имеет бит записи и чтения, но в этой настройке ввод и вывод — одно и то же. Это на самом деле хорошо. Например. Если вы хотите скопировать содержимое R1 в R2, вы бы включили бит чтения для R1, который выдвинет содержимое R1 на шину. Пока бит чтения включен, вы должны включить бит записи для R2, ​​который будет копировать содержимое шины в R2.

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

Декодеры берут двоичный вход и включают соответствующий пронумерованный провод. Например, «11» — это 3 в двоичном виде, самое старшее 2-битное число, поэтому декодер включит самый высокий провод. На каждом перекрестке есть регистр. Все они подключены к центральной шине и к центральному входу записи и чтения. Как чтение, так и запись будут включаться только в том случае, если два провода, пересекающие регистр, также включены, эффективно позволяя вам выбрать регистр для записи и чтения. Опять же, современная оперативная память намного сложнее, но эта настройка все еще работает.

Часы, Степпер и Декодер

Регистры используются повсеместно и являются основным инструментом для перемещения данных и хранения информации в ЦП. Так, что говорит им, чтобы переместить вещи?

Часы являются первым компонентом в ядре ЦП и будут выключаться и включаться через заданный интервал, измеряемый в герцах или циклах в секунду. Это скорость, которую вы видите рекламируемой вместе с процессорами; Чип 5 ГГц может выполнять 5 миллиардов циклов в секунду. Тактовая частота часто является очень хорошим показателем скорости процессора.

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

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

Эти логические элементы И также подключены к выходу другого компонента, декодера команд. Декодер команд принимает инструкцию типа «SET R2 TO R1» и декодирует ее во что-то, что может понять процессор. Он имеет собственный внутренний регистр, называемый «регистр инструкций», в котором хранится текущая операция. Как именно это происходит, зависит от системы, в которой вы работаете, но как только она будет декодирована, она включит правильный набор и активирует биты для правильных регистров, которые сработают в соответствии с часами.

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

Как все это происходит вместе

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

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

Изображение предоставлено: Rost9 / Shutterstock

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone