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

Оглавление:

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

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

Видео: HTG объясняет: как работает процессор на самом деле?
Видео: Wi-Fi 2.4 или 5 ГГц: что лучше и почему вай фай опасен для здоровья? - YouTube 2024, Апрель
Anonim
Большинство вещей в компьютере относительно просты в понимании: оперативная память, память, периферия и программное обеспечение работают вместе, чтобы сделать компьютерную функцию. Но сердце вашей системы, процессор, кажется волшебным даже для многих технических людей. Здесь мы сделаем все возможное, чтобы сломать его.
Большинство вещей в компьютере относительно просты в понимании: оперативная память, память, периферия и программное обеспечение работают вместе, чтобы сделать компьютерную функцию. Но сердце вашей системы, процессор, кажется волшебным даже для многих технических людей. Здесь мы сделаем все возможное, чтобы сломать его.

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

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

Запуск малого

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

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

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

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

Выполнение математики с помощью ворот

С помощью всего лишь двух ворот вы можете выполнить базовое двоичное добавление. На приведенной выше диаграмме показан полумастер, созданный с использованием Logicly, бесплатной игровой площадки для логических ворот. Столбец XOR будет включен, если включен только один из входов, но не оба. Линия И будет включаться, если оба входа включены, но остаются включенными, если нет ввода. Поэтому, если оба они включены, XOR остается включенным, и вентиль AND включается, подходящий для двух ответов:
С помощью всего лишь двух ворот вы можете выполнить базовое двоичное добавление. На приведенной выше диаграмме показан полумастер, созданный с использованием Logicly, бесплатной игровой площадки для логических ворот. Столбец XOR будет включен, если включен только один из входов, но не оба. Линия И будет включаться, если оба входа включены, но остаются включенными, если нет ввода. Поэтому, если оба они включены, XOR остается включенным, и вентиль AND включается, подходящий для двух ответов:
Это дает нам простую настройку с тремя различными выходами: ноль, один и два. Но один бит не может хранить ничего выше 1, и эта машина не слишком полезна, поскольку она решает только одну из самых простых математических задач. Но это всего лишь половина сумматора, и если вы подключите два из них с другим вводом, вы получите полный сумматор:
Это дает нам простую настройку с тремя различными выходами: ноль, один и два. Но один бит не может хранить ничего выше 1, и эта машина не слишком полезна, поскольку она решает только одну из самых простых математических задач. Но это всего лишь половина сумматора, и если вы подключите два из них с другим вводом, вы получите полный сумматор:
Полный сумматор имеет три входа - два числа для добавления и «перенос». Перемещение используется, когда конечный номер превышает то, что может быть сохранено в одном бите. Полные сумматоры будут связаны в цепочке, а перенос передается от одного сумматора к другому. Перемещение добавляется к результату ворот XOR в первом таймере, и есть дополнительный логический элемент OR для обработки обоих случаев, когда необходимо, чтобы он был включен.
Полный сумматор имеет три входа - два числа для добавления и «перенос». Перемещение используется, когда конечный номер превышает то, что может быть сохранено в одном бите. Полные сумматоры будут связаны в цепочке, а перенос передается от одного сумматора к другому. Перемещение добавляется к результату ворот XOR в первом таймере, и есть дополнительный логический элемент OR для обработки обоих случаев, когда необходимо, чтобы он был включен.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Image
Image

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

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

Как все вместе

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

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

Рекомендуемые: