Как компьютеры эволюционировали из 0

внешний интерфейс задняя часть
Как компьютеры эволюционировали из 0

предисловие

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

логический вентиль

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

И ворота

Выполните операцию «И», два входа и один выход, выход равен 1, только если оба входа равны 1, и 0 в противном случае.

这里写图片描述

ИЛИ ворота

Выполните операцию «или», два входа и один выход, пока один из двух входов равен 1, выход равен 1.

这里写图片描述

НЕ ворота

Выполните операцию «НЕТ», один вход и один выход, принимая противоположный входной сигнал.

这里写图片描述

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

добавление

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

Вентиль исключающее ИЛИ (XOR) получается путем объединения трех самых основных вентилей.Структура вентиля XOR выглядит следующим образом.

image

Сокращенно как,

image

Объединены в полусумматор следующим образом:

image

отметить как,

image

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

image

Полный сумматор может обрабатывать только сложение трех двоичных одноразрядных чисел (одно из которых является вводом переноса). Если вы хотите реализовать сложение n-битных двоичных данных, вам нужно использовать n полных сумматоров для их соединения.

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

машинные инструкции

Хотя логические операции могут помочь людям в выполнении вычислений, использовать их напрямую для людей очень недружественно и неэффективно.(11+22+33)+(44+55)При работе нам нужно ввести три числа и добавить их по отдельности, а затем вручную записать промежуточный результат.Точно так же нам нужно записать еще один промежуточный результат, а затем снова ввести два числа, чтобы выполнить операцию сложения.

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

image

  • Считайте число по адресу 000 в сумматор
  • Добавьте номер по адресу 001 в сумматор
  • Добавьте номер по адресу 002 в сумматор
  • Сохраните номер сумматора в место, указанное адресом 003.
  • Считайте число по адресу 004 в сумматор
  • Добавьте номер по адресу 005 в сумматор
  • Сохраните номер сумматора в ячейку, на которую указывает адрес 006.
  • Считайте число по адресу 003 в сумматор
  • Добавьте номер по адресу 006 в сумматор
  • Остановить сумматор.

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

load 000
add 001
add 002
store 003
load 004
add 005
store 006
load 003
add 006
halt

Соответствующий код инструкции:

100 000
102 001
102 002
101 003
...
103

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

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

регистр

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

На первом из следующих двух рисунков показано прямое сравнение скорости разных хранилищ, а на втором — несколько примеров инструкций.

这里写图片描述

这里写图片描述

Язык программирования

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

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

image

Тот, что слева — это язык высокого уровня C, а тот, что справа — это язык ассемблера.Видно, что хотя ассемблер намного удобнее, чем машинный язык, он все же слишком громоздкий и неэффективный по сравнению с к языку высокого уровня, поэтому язык высокого уровня родился.

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

Операционная система

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

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

image

Суммировать

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

------------- Рекомендуем прочитать ------------

Краткое изложение моих проектов с открытым исходным кодом (машинное и глубокое обучение, НЛП, сетевой ввод-вывод, AIML, протокол mysql, чат-бот)

Зачем писать «Анализ проектирования ядра Tomcat»

2018 Алгоритмы структуры сводных данных

Сборник статей по машинному обучению за 2018 г.

Сводка статей о глубине Java за 2018 г.

Резюме по обработке естественного языка за 2018 г.

Резюме глубокого обучения за 2018 г.

Сводка статей об исходном коде JDK за 2018 г.

Обзор Java Concurrency Core за 2018 г.

Итоговые чтения за 2018 год


Добро пожаловать, чтобы обратить внимание: искусственный интеллект, чтение и мысли, болтовня о математике, распределенное, машинное обучение, глубокое обучение, обработка естественного языка, алгоритмы и структуры данных, глубина Java, ядро ​​​​Tomcat и другие статьи по теме