Как процессор понимает команды
Перейти к содержимому

Как процессор понимает команды

  • автор:

Как процессор «понимает» что перед ним — файл данных или программа?

Нашел здесь. Черт, ради таких перлов стоит иногда читать rss с форума ixbt! Местами просто оборжаться, и не только над постами автора (тонкий тролль нашел качественную траву), но и над ответами участников. Особую часть перенесу сюда.

Звонок в справочное бюро.
Оператор(О), голосом Карцева: Алё, справочная слушает.
Абонент(А), голосом Ильченко: Я вот интересуюсь по поводу файлов.
О: Да-да?
А: Как процессор отличает файлы которые ему выполнять от тех, что ему только обрабатывать?
О: В зависимости от программы, заложенной в компьютер.
А: Какой программы? А она тоже файл?
О: Вообще-то да. Но не обязательно.
А: Вот нет, подождите, я разобраться хочу. Вот есть файлы.
О: Допустим.
А: С ними нужно что-то делать.
О: Не факт.
А: Как не факт?
О: Не факт и всё, можно просто висеть и ничего не делать, морочить голову ерундой. Как Вы мне морочите.
А: Вы не обижайтесь пожалуйста, я разобраться хочу. Так как всё-таки процессор понимает, что файлы…
О: Процессор файлов не понимает, он выполняет команды и передаёт данные. Файлы абстракция другого уровня, существующая только в своём контексте. Процессор работает с данными, а уж где они находятся и куда уходят — дело десятое.
А: Странно, неувязочка какая-то. Так как же он тогда работает? Ведь файлы есть?
О: Как все работает, подготовился, включился в работу и пашет, пашет, пашет, информацию обрабатывает…
А: Информацию из файлов обрабатывает?
О (напряжённо, чувствуя подвох) : И из них тоже.
А: А как он их распознаёт и отличает?
О: О боже! Да никак, у него трудовой распорядок дня, как у всех: сделать то-то, когда что-то. Вот как ему данных из файла припрёт, он по записанной программе команду выдаст, та команда в стандартую библиотечную функцию треньк, та операционной системе вызов на открытие файла бздыньк, операционная система, драйвер, контроллер, запрос на обращение к диску, данные — хоп! И по той же цепочке обратно.
А: Не понял. Как интересно. А кто все эти люди? Треньк, бздыньк… Вообще, можно ещё раз?
О: Нет. Надо было записывать!
А: Ну ладно, но вот скажите тогда…
О: Что ещё?
А: Откуда обычно берутся программы?
О: Что значит откуда? Их пишут люди.
А: И сохраняют?
О (обречённо): Даааа….
А (обрадованно): В файлы?
О: Да, как правило…
А: А процессор, получая эти файлы…
О: Он их получает не просто так, а по программе, по программе, и ему сразу команды, что с ними делать.
А: Ага, так он их всё-таки понимает, что файлы…
О: Нет.
А: В смысле?
О: Не понимает.
А: Тогда как он знает, что ему делать?
О: По программе.
А: А там записано?
О: Там условие, если А, то то Б.
А (записывает): Понятненько…А, Б. Но команды берутся из программы, которая тоже файл?
О: Наш процессор файлов не понимает, он ТУПОЙ.
А: А он может случайно данные выполнить?
О: Случайно — нет. Может, если попросите. Неслучайно. Возьмёт и выполнит. По программе.
А: Но программа тоже файл?
О: Для Вас — нет! Программа это абстракция. Вы поняли, что такое абстракция? Да что Вы знаете об абстракциях? Абстракция — это сила! Программы вроде как нет, но она есть в виде команд, которые выполняет процессор, которые попадают процессору с диска или ещё как-то, и там далеко-далеко от процессора организованы некоторым образом в хранимые структуры данных. В частности, эти структуры могут быть уровнем-другим выше представлены как файлы. Вам… всё.. понятно?
А: Да, это я кажется понял. Кажется.
О: Ну и слава богу.
А: Интересно другое. Вот если случайно данные попадут на выполнение, что будет, как процессор разберётся?
О: Никак не разберётся, выполнит, что дали. Вот Вы в столовке лопаете что дают и не жужжите. И процессор так же. И кончите скорее всего вы оба одинакого, зависанием или крахом. Случайный эксперимент с закономерным исходом.
А: Вообще-то я себя неплохо чувствую. И на счёт случайности не скажите, ведь раз в год и палка стреляет.
О: Оооо…. чем она там стреляет?
А: Это неважно.
О: Прикладывайте раз в год эту палку к голове. Вам поможет.
А: Ну зачем же так?
О: Процессор это машина, понимаете тупая машина, которая работает по программе, вот как начала работать, так и работает. И что ей попадёт на выполнение, то она и выполнит.
А: Машина? Я думал машина эта та, что с колёсами…
О: Колёса похоже у Вас уже внутри, сколько можно мучить меня?!
А: Не ругайтесь. Я буду жаловаться.
О: Что угодно, только оставьте меня в покое.
А: Постойте, один последний вопрос и я уйду. Какие есть принципиальные отличия у выполнямых файлов? Чтобы можно было посмотреть на файл и сказать: это — наш клиент, на выполнение его!
О: Чей Вы клиент я похоже уже догадываюсь! Или Вы просто издеваетесь?
А: Как можно? Я разобраться хочу!
О: Ууууу….
А: Нет, подождите, не умирайте, давайте разберёмся спокойно. Вот есть файлы…
О: Да нет никаких файлов! Это всё коварные происки! Есть куча железа и внутри процессор ТУПОЙ. И ничего больше нет. Есть только процессор и вокруг — бездна. Вот были, были раньше файлы, но их замучали вопросами такие, как Вы! Где мои файлы? Вы убили их? Убийца!
А: Вы пожалуйста не уклоняйтесь от темы, мы ещё не разобрались до конца…
О: ГДЕ МОИ ФАЙЛЫ, УБИЙЦА?!
А: Ладно, я Вам ещё попозже перезвоню, когда будете в хорошем настроении…
О: Ни в коем случае! Меня нет, я сошёл с ума и вышел на бюллетень! И не звоните сюда больше! Убийца! Где мои файлы?…
А: До скорого, спасибо!

Команды процессора. Принцип работы процессора. Система команд процессора.

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

  1. Человек идет в помещение 2 за порцией данных, необходимых для решения задачи.
  2. Приносит их в помещение 1.
  3. Рабочая группа быстро обрабатывает данные и посылает за следующей порцией информации. При этом она бездействует в ее ожидании.
  4. Человек идете в помещение 2 за следующей порцией информации.
  5. Приносит их в помещение 1.
  6. Рабочая группа быстро обрабатывает данные и посылает за следующей порцией информации. При этом она бездействует в ее ожидании.
  7. И т.д., до тех пор, пока задача не будет решена.

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

Возникают следующие вопросы:

  1. Можно ли поручить решение задачи более «умной» рабочей группе, которая решит ее быстрее?
  2. Можно ли информацию из помещения 2 частично сразу перенести в Помещение 1?
  3. Можно ли посылать за информацией в помещение 2 не одного человека, а нескольких?

Только что, вы смоделировали процесс ускорения работы процессора. Помещение 1 — это процессор, а помещение 2 — это оперативная память. Главная задача ученых и инженеров — сделать процессоры более производительными.

Достигается это за счет:

  • Повышения тактовой частоты (более «умная» рабочая группа). Это самый очевидный путь повышения производительности.
  • Повышения разрядности процессора (поручить приносить информацию из помещения 2 более чем одному человеку). Чем выше разрядность процессора ( количество человек), тем больше байтов (больше информации) он может обработать за один такт.
  • Кэширования памяти. Процессор по отношению, например, к оперативной памяти является более быстрым устройством, поэтому он вынужден постоянно простаивать, ожидая медленно работающую память. Поэтому, чтобы процессор реже обращался к оперативной памяти, внутри него создают небольшой участок памяти размерим 256 или 512 Кбайт. Эта «сверхоперативная» память получила название кэш. В кэш-память процессор записывает те данные, которые получил из оперативной памяти, и если это данные понадобятся еще раз, он возьмет их из кэш. Таким образом, работа процессора происходит быстрее.

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

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

Процессор работает, по сравнению с другими устройствами компьютера, с наибольшей скоростью. И самыми медленными по сравнению с ним являются внешние устройства, в том числе и человек. Так, например, работая с клавиатурой, человек отправляет в компьютер в среднем один байт в секунду (нажимает на одну клавишу в секунду). Процессор обрабатывает такую и формацию за 0,000001 секунды. А что же делает процессор в остальное время, если он не может выключаться? А в остальное время он может получать сигналы от мыши, от других компьютеров, от гибких и жестких дисков. Он успевает несколько раз в течение секунды подзарядить оперативную память, обслужить внутренние часы компьютера, отдать распоряжение, как правильно отображать информацию на экране, и выполнить множество прочих дел.

Система прерываний процессора.

Каким образом, в таком ритме работы, процессор узнает, откуда приходят данные — от клавиатуры или от мыши, от монитора или от принтера? А может быть от микроволновой печи? И как с такими данными работать?

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

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

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

  • Сигналы от клавиатуры он получал бы один раз в десять лет. Обработка слова «компьютер» занимала бы почти 100 лет.
  • Данные от мыши — один раз в год. Перемещение указателя мыши из одного угла экрана в другой заняло бы тысячелетие.
  • Данные, поступившие по телефонным проводам через модем, — один раз в сутки. Прием и обработка одной страницы текста занимали бы 5-7 лет.
  • Данные от гибкого диска — один символ в несколько часов.
  • Данные от жесткого или лазерного диска — один байт в час.

Система команд процессора.

Процессор обрабатывает информацию, выполняя определенные команды. Таких команд может быть более тысячи. У каждой команды есть свой код (номер). Например, есть команда 000, 001, 002 и т.д. Коды всех команд процессора записаны в двоичной форме в специальном документе, который называется системой команд процессора.

У каждого процессора своя система команд, поэтому один и тот же код для, разных процессоров может обозначать разные команды. Если же процессоры имеют ограниченную совместимость, то их рассматривают как семейство. Примером семейства процессоров являются все процессоры Intel. Их родоначальником был процессор Intel 8086, на базе которого был сделан первый IBM PC. Процессоры семейства совместимы «сверху вниз», т.е. новый процессор понимает» все команды своих предшественников, но не наоборот.

Таблица прерываний AMD Atlon 64 X2:

Прерывание Вид Описание
DMA 02 Исключительный Стандартный контроллер гибких дисков
DMA 04 Исключительный Контроллер прямого доступа к памяти
IRQ 00 Исключительный Высокоточный таймер событий
IRQ 01 Исключительный Стандартная (101/102 клавиши) или клавиатура PS/2 Microsoft Natural
IRQ 03 Общий Ethernet-контроллер
IRQ 04 Общий Прочее устройство моста PCI
IRQ 06 Исключительный Последовательный порт (COM1)
IRQ 08 Исключительный Стандартный контроллер гибких дисков
IRQ 09 Исключительный Высокоточный таймер событий
IRQ 11 Общий Microsoft ACPI-совместимая система
IRQ 13 Общий SM контроллер шины
IRQ 11 Исключительный Процессор числовых данных
IRQ 17 Общий Realtek RTL8139 Family PCI Fast Ethernet NIC
IRQ 17 Общий NVIDIA GeForce 7600 GT
IRQ 18 Общий Стандартный OpenHCD USB хост-контроллер
IRQ 22 Общий Стандартный двухканальный контроллер PCI IDE
IRQ 22 Общий Стандартный расширенный PCI — USB хост-контроллер
IRQ 23 Общий Стандартный двухканальный контроллер PCI IDE
IRQ 23 Общий Стандартный контроллер гибких дисков

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

Все процессоры можно разделить на:

  • Процессоры с расширенной системой команд (CISC — процессоры).
  • Процессоры с сокращенной системой команд (RISC — процессоры).

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

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

Как процессор понимает команду?

Читаю книгу «Код.Тайный язык информатики». Возник такой вопрос. В главе 17 автор показывает простую схему компьютера, и принципы его работы. Так вот в том примере процессор получал команду, например (загрузить/сложить /сохранить) в двоичном виде. Как я понял, примерно так работал intel 8080. Я не могу понять как процессор понимает, команду загрузить(к примеру 0000001), то есть как он понимает, что ему нужно конкретно сделать? Эти команды заданы физически и потом как-то сравниваются?

  • Вопрос задан более года назад
  • 385 просмотров

Комментировать
Решения вопроса 1

nava2002

Ну если просто, то углубившись в рассматривание микропроцессора мы увидим что на самом «дне» находится так называемые » Элементы цифровой логики» «И, ИЛИ, НЕ».
Это кубики «ЛЕГО» из которых все собрано. Это атомы всей цифровой техники.
Так вот если мы скажем поставим параллельно 8 элементов и подадим на них скажем 8 сигналов (с какими то логическим уровнем 0 или 1 — «00101001» то на выходе мы получим 8 ответных сигналов (в зависимости какой элемент находится в данной позиции «101011100») .
Ну вот эта последовательность кубиков ЛЕГО и определяет систему команд процессора. (например х86, или ARM. ) и ЭТА система команд ЖЕСТКО зашита в конкретный процессор.
Ну а дальше все как катушка с нитками, размещаем соединения всякие штуки для памяти и учитывая что в процессоре миллионы транзисторов, а скажем элемент «НЕ» содержит 2 транзистора, то понятно сколько там этих «кубиков» в процессоре.

P.S. Но если честно то углубляться в эти дебри рационального смысла не имеет так как на Ассемблере 1 команда ну например в 32х разрядном процессоре это скажем 3 слова по 4 байта то есть 12 байт, а скажем программа на С++ после компиляции занимает 200 килобайт то написать код в 16000 строк это задача для истинного мазохиста. такие задачи делает коллектив и каждый все равно пишет по 1-2 тысяче строк потом это сливают в общий проект и потом мы получаем ОС Win10 которая занимает 4 гигабайта кода ну в общем невообразимый объем работы.

Ответ написан более года назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 2

hint000

у админа три руки

predecoder, предекодер — предварительный декодер, разделяющий несколько CISC-команд из порции на отдельные элементы (см. x86), используя информацию от длиномера. Подготовка команд может происходить наперёд их дальнейшей обработки декодером, если до него есть буфер.

ILD (instruction length decoder: декодер длин команд), длиномер — определитель длин CISC-команд. В x86-ЦП анализирует их префиксы, опкоды и байты modR/M. В ЦП Intel длиномер является частью предекодера, измеряя длины «на лету». В большинстве ЦП AMD он работает с командами при их загрузке из L2 в L1I, сохраняя разметку байтов команд в дополнительных битах в L1I, считываемых предекодером при загрузке порции.

ID (instruction decoder: декодер команд), decoder (декодер) — набор блоков, преобразующих команды в мопы. В x86-ЦП состоит из нескольких трансляторов и одного микросеквенсера (генератора последовательности мопов) с ПЗУ для микрокода. Осуществляет микрослияние и макрослияние.

translator («переводчик»), транслятор — часть декодера, обрабатывающая простые и частые команды без использования микрокода. В x86-ЦП Intel есть 1–3 простых транслятора (на 1 меньше числа путей конвейера), каждый из которых переводит команду в 1 моп за такт, и 1 сложный транслятор, переводящий команду в 1–4 мопа/такт. Как правило, число генерируемых трансляторами мопов не больше числа путей. Большинство ЦП AMD имеют 3–4 транслятора, каждый из которых переводит команду в 1–2 мопа/такт. Макросливаемые команды обрабатываются парами любым транслятором, но не более одной пары за такт.
.

Ответ написан более года назад
Комментировать
Нравится 2 Комментировать

Rst0

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

Ответ написан более года назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

процессоры

  • Процессоры
  • +4 ещё

Почему ядра процессора греются с разницей в ~20С при работе совместно с ГПУ?

  • 1 подписчик
  • вчера
  • 52 просмотра

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

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

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

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

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

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

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

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

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

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

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

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

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

Курс «Профессия Джуниор Frontend-разработчик»

Программа построена от простого к сложному и под силу каждому, у кого есть желание учиться.

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

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

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

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

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

Регистры

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

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

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

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

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

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Память (ОЗУ)

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

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

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

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

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

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

Курс «Автоматизация тестирования на Java»

Курс «Автоматизация тестирования на Java»

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

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

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

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

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

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

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

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

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

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

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, . Первые 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-устройствами (устройствами ввода-вывода) передаются по шинам. Чтобы загрузить в память только что обработанные данные, процессор помещает адрес в шину адреса и данные в шину данных. Потом нужно дать разрешение на запись на шине управления.

Курс «Автоматизация тестирования на Java»

Курс «Автоматизация тестирования на Java»

Кэш

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

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

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

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

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

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

Следите за новыми постами по любимым темам

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *