Программа как работает процессор

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 5 лет назад .

Изучая C++ у меня возник вопрос, как устроен ПК и как так происходит, что он «понимает» данные ему команды? То есть как он понимает, что 2+2=4, он же не человек?

Отслеживать
51k 83 83 золотых знака 262 262 серебряных знака 500 500 бронзовых знаков
задан 26 мар 2018 в 21:49
119 1 1 серебряный знак 7 7 бронзовых знаков

Это слишком сложная для обсуждения здесь тема. Подробно можно почитать, например, в книге Таненбаума «Архитектура Компьютера»

26 мар 2018 в 22:00

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

26 мар 2018 в 22:53
Не железа, а кремния. Куча хитрым образом соединённых транзисторов. (А их вроде в школе проходят)
27 мар 2018 в 5:12
29 мар 2018 в 8:49

КАК РАБОТАЕТ ПРОЦЕССОР | ОСНОВЫ ПРОГРАММИРОВАНИЯ

29 мар 2018 в 9:11

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

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

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

Сигнал на базу поступает из различных внешних источников — намагниченная дорожка жесткого диска, проходящий луч лазера через CD-R или же замкнутый нажатой кнопкой на клавиатуре контакт. Не важно, главное, что у нас теперь есть два состояния — есть сигнал и нет сигнала.

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

комбинирование вентилей для получения различных сигналов на выходе

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

основные вентили

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

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

схемы: сумматор и сдвиг

КАК работает ПРОЦЕССОР? ОБЪЯСНЯЕМ

Есть даже схемы, которые умеют хранить значение, так называемые защелки выполняющие роль памяти (RS-триггер).

Как видите никакой магии, ну почти — на одном процессоре таких транзисторов умещается миллиарды. нет, не так — МИЛЛИАРДЫ! Это огромнейшее количество различных схем различной сложности и различного направления на паре квадратных сантиметров. Расчетом их упаковки на процессор как правило занимаются специальные программы, человеку это не под силу и создаются они с помощью высокоточной электроники. Сложно представимый научный прогресс в маленькой коробочке рядом с вами. В общем как-то так.

Источник: ru.stackoverflow.com

Я не знал, как работают процессоры, поэтому написал программный симулятор

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

Я прочитал книгу «Но откуда он знает?» Кларка Скотта с детальным описанием простого 8-битного компьютера: начиная с логических вентилей, ОЗУ, транзисторов процессора, заканчивая арифметико-логическим устройством и операциями ввода-вывода. И мне захотелось реализовать всё это в коде.

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

Результат моей работы можно посмотреть в репозитории simple-computer: простом вычислителе. Он простой и он вычисляет.

Читайте также:
Можно ли перенести программы с диска с на диск д

Пример программ

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

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

Я даже написал грубый ассемблер, который на многое открыл глаза, мягко говоря. Он не идеален. На самом деле даже немного дерьмовый, но он показал мне проблемы, которые другие люди уже решили много-много лет назад.

Но зачем ты это делаешь?

«Тринадцатилетние дети собирают процессоры в Minecraft. Позови, когда сможешь сделать настоящий CPU из телеграфных реле»

Моя ментальная модель устройства CPU застряла на уровне учебников по информатике для начинающих. Процессор для эмулятора Gameboy, который я написал в 2013 году, на самом деле не похож на современные CPU. Даже если эмулятор — это просто конечный автомат (машина состояний), он не описывает состояния на уровне логических вентилей. Почти всё можно реализовать с помощью только оператора switch и сохраняя состояние регистров.

Я хочу лучше разобраться, как всё устроено, потому что не знаю, например, что такое кэш L1/L2 и конвейеризация и я не совсем уверен, что понимаю статьи об уязвимостях Meltdown и Spectre. Кто-то сказал, что они оптимизируют код таким образом, чтобы использовать кэш процессора, но я не знаю, как это проверить, кроме как поверить на слово. Я не совсем уверен, что означают все инструкции x86.

Не понимаю, как люди отправляют задачи на GPU или TPU. И вообще, что такое TPU? Я не знаю, как использовать SIMD-инструкции.

Всё это построено на фундаменте, который нужно усвоить в первую очередь. Это значит вернуться к основам и сделать что-то простое. В вышеупомянутой книге Кларка Скотта описан простейший компьютер. Вот почему я начал с него.

Слава Скотту! Он работает!

Компьютер Скотта — это 8-разрядный процессор, подключённый к 256 байтам ОЗУ, все они подключены через 8-разрядную системную шину. У него 4 регистра общего назначения и 17 машинных инструкций. Кто-то сделал визуальный симулятор для веба: это действительно здорово. Страшно подумать, сколько времени потребовалось, чтобы отследить все состояния схемы!

Схема со всеми компонентам процессора Скотта. Копирайт 2009-2016. Зигберт Фильбингер и Джон Кларк Скотт

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

Мой компьютер отличается от версии Скотта разве что тем, что я обновил его до 16 бит, чтобы увеличить объём доступной памяти, ведь хранение только глифов для таблицы ASCII занимает большую часть 8-битной машины Скотта, оставляя совсем мало места для полезного кода.

Мой процесс разработки

В целом, разработка шла по такой схеме: чтение текста, изучение диаграмм, а затем попытка реализовать их на языке программирования общего назначения и определённо не использовать никаких специализированных инструментов для проектирования интегральных схем. Я написал симулятор на Go просто потому, что немного знаком с этим языком. Скептики могут сказать: «Болван!

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

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

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

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

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

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

Читайте также:
LG direct drive 5 kg инструкция программ стирки время

Периферия

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

Как адаптеры ввода-вывода подключаются к окну GLFW

С таким разделением оказалось довольно просто подключить клавиатуру и дисплей к окну под управлением GLFW. На самом деле я просто вытащил большую часть кода из своего эмулятора и немного изменил его, чтобы каналы Go работали как сигналы ввода/вывода.

Запускаем компьютер

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

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

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

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

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

Это было нелегко. Самая сложная часть программы text-writer — правильно рассчитать, когда перейти к новой строке или что происходит, когда вы нажимаете клавишу Enter.

main-getInput: CALL ROUTINE-io-pollKeyboard CALL ROUTINE-io-drawFontCharacter JMP main-getInput

Основной цикл программы text-writer

Я не удосужился реализовать клавишу Backspace и клавиши-модификаторы. Зато понял, сколько труда требует разработка текстовых редакторов и насколько это утомительно.

Выводы

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

Хотя этот процессор очень прост и далёк от CPU в моём ноутбуке, но мне кажется, что проект многому меня научил, в частности:

  • Как биты перемещаются по шине между всеми компонентами.
  • Как работает простой ALU.
  • Как выглядит простой цикл Fetch-Decode-Execute.
  • Что машина без регистра указателя стека и концепции стека — отстой.
  • Что машина без прерываний тоже отстой.
  • Что такое ассемблер и что он делает.
  • Как периферийные устройства взаимодействуют с простым процессором.
  • Как работают простые шрифты и как отображать их на дисплее.
  • Как может выглядеть простая операционная система.

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

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

Пригодятся ли эти знания на моей основной работе? Возможно, пригодятся, хотя вряд ли. В любом случае, мне это нравится, так что неважно. Спасибо за чтение!

  • CPU
  • ALU
  • устройство процессора
  • булева алгебра
  • логические вентили
  • NAND
  • ассемблер
  • периферийные устройства
  • Системное программирование
  • Go
  • Производство и разработка электроники
  • Процессоры
  • Электроника для начинающих

Источник: habr.com

Для чего нужен процессор в компьютере

bestprogrammer.ru

процессор

Технологии

На чтение 5 мин Просмотров 3.2к. Опубликовано 09.10.2020

процессор

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

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

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

Что такое процессор

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

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

Блоки обработки принимают инструкции из оперативной памяти (RAM) компьютера. Когда эти инструкции получены, ЦП декодирует и обрабатывает действие, а затем выдаёт результат.

Читайте также:
К какому виду оздоровительных программ относится танцевальный степ

Intel и AMD — самые известные компании в индустрии процессоров для настольных, портативных и серверных компьютеров. Intel Core и AMD Ryzen — одни из самых популярных процессоров для настольных ПК. Apple, Nvidia и Qualcomm известны своими процессорами для мобильных устройств.

Где находится процессор

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

Что делает процессор процессором

Процессор состоит из четырёх компонентов: ALU, FPU, регистров и кэш-памяти.

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

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

Наконец, процессоры включают в себя память L1, L2 и L3. Этот кэш-память позволяет процессору хранить данные локально, не извлекая их из ОЗУ. Включение этого компонента помогает сделать ЦП более быстрым и эффективным.

Как работает процессор

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

Выборка

Первый шаг в цикле выборка-выполнение — выборка. Он включает в себя получение — или «извлечение» — инструкции. Эта инструкция передаётся из ОЗУ в ЦП.

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

Декодировать

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

Выполнить

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

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

процессор2

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

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

Есть два основных типа процессоров: 32-битные и 64-битные. Эти числа относятся к тому, сколько бит может быть передано одновременно между разными частями ЦП. Чем выше количество битов, тем быстрее будет процессор.

Тактовая частота

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

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

L2 / L3 кэш

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

Как работают ядра процессора

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

Большинство компьютеров сегодня имеют от двух до четырёх ядер. Вы часто слышите, что эти настройки называются «двухъядерными» и «четырехъядерными» соответственно. Некоторые процессоры имеют до 12 ядер, в зависимости от их назначения. Чем больше ядер у ЦП, тем больше инструкций может интерпретировать процессор.

Многоядерные процессоры — это просто два или более процессора на одном кристалле. Четырехъядерный процессор — это четыре процессора, всё на одном кристалле. Затем они связываются, чтобы они могли работать вместе.

Подведение итогов

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

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

Источник: bestprogrammer.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru