Каждый программист, каждый программист, который занимается компьютерами, каждый программист, который занимается программным и аппаратным обеспечением в компьютере, каждый программист сCPU
Программисты, которые занимаются, поэтому, играете ли вы с аппаратным обеспечением или занимаетесь программным обеспечением, ваш мир незаменим для ядра компьютера - процессора
что такое процессор
Полное название процессораCentral Processing Unit
, это самое硬核
компоненты, не будет преувеличением сказать, что. Процессор — это то, что позволяет вашему компьютеру вызывать计算机
Основной компонент компьютера, но он не может представлять ваш компьютер Отношения между процессором и компьютером эквивалентны отношениям между мозгом и человеком. Это небольшой компьютерный чип, встроенный в материнскую плату настольного компьютера, ноутбука или планшета. Процессор создается путем размещения миллиардов крошечных транзисторов на одном компьютерном чипе. Эти транзисторы позволяют ему выполнять вычисления, необходимые для запуска программ, хранящихся в памяти системы, а это означает, что процессор определяет вычислительную мощность вашего компьютера.
что на самом деле делает процессор
Ядром ЦП является получение инструкций от программы или приложения и выполнение вычислений. Этот процесс можно разбить на три основных этапа:Извлечь, декодировать и выполнить. ЦП извлекает инструкцию из ОЗУ системы, затем декодирует фактическое содержание инструкции, которая затем выполняется соответствующей частью ЦП.
RAM: Random Access Memory (англ.: Random Access Memory, аббревиатура:RAM), также называемая основной памятью, — это внутренняя память, которая обменивается данными напрямую с ЦП. Он может быть прочитан и записан в любое время (кроме сброса) и работает быстро, обычно как функция операционной системы или другой запущенной программы.Временный носитель данных
Внутренняя структура ЦП
Если так много говорить о важности ЦП, какова внутренняя структура ЦП? Из чего он состоит? На следующем рисунке показан процесс выполнения общей программы (в качестве примера взят язык C) Можно сказать, что понимание процесса выполнения программы является основой и предпосылкой для овладения механизмом выполнения программы.
В этом процессе ЦП отвечает за интерпретацию и запуск контента, который в конечном итоге преобразуется в машинный язык.
Процессор в основном состоит из двух частей:控制单元
и算术逻辑单元(ALU)
- Блок управления: извлекает инструкции из памяти и декодирует их для выполнения.
- Арифметико-логическое устройство (ALU): обрабатывает арифметические и логические операции.
Центральный процессор — это сердце и мозг компьютера, а память и память — электронные компоненты, состоящие из множества транзисторов. Он получает ввод данных, выполняет инструкции и обрабатывает информацию. Он взаимодействует с устройствами ввода/вывода (I/O), которые отправляют данные в ЦП и получают данные от него.
С функциональной точки зрения внутренняя часть ЦП состоит изРегистры, контроллеры, операторы и часыОн состоит из четырех частей, и части соединены электрическими сигналами.
-
寄存器
Он является частью центрального процессора. Их можно использовать для временного хранения инструкций, данных и адресов. Думайте об этом как о типе памяти. В зависимости от типа ЦП будет иметь внутри от 20 до 100 регистров. -
控制器
Отвечает за чтение инструкций и данных из памяти в регистры и управление компьютером в соответствии с результатами инструкций. -
运算器
Отвечает за вычисление данных, считываемых в регистры из памяти. -
时钟
Отвечает за выдачу тактового сигнала для ЦП, чтобы начать отсчет времени
Далее я кратко объясню память.Почему ЦП нужно говорить о памяти, ведь память является мостом для связи с ЦП. Все компьютерные программы работают в памяти, которая также известна как память.主存
, функция которого заключается в хранении рабочих данных в ЦП и обмене данными с внешними запоминающими устройствами, такими как жесткие диски. Пока компьютер работает, ЦП будет передавать данные для расчета в основную память для работы.По завершении операции ЦП передает результат.Работа основной памяти также определяет стабильную работу компьютер.
Основная память подключается к процессору через микросхему управления и состоит из элементов, доступных для чтения и записи, каждый байт (1 байт = 8 бит) имеет номер адреса.Обратите внимание, что это байт, а не бит. ЦП считывает данные и инструкции из основной памяти по адресу, а также может записывать данные по адресу. Примечание. При выключении компьютера инструкции и данные в памяти также удаляются.
ЦП представляет собой набор регистров
Из четырех структур ЦП нашим программистам нужно понять только寄存器
Все, остальным трем не нужно уделять слишком много внимания, почему вы так говорите? Потому что программы описывают регистры как объекты.
Когда дело доходит до регистров, я должен говорить о языке ассемблера.Мой университет изучает управление информацией и информационные системы, и я никогда не проходил курс ассемблера (даже если этот курс будет, я плохо выучу ххх), и Я всегда выхожу.В свою очередь, если вы хотите быть хардкорным программистом, вы не можете не понимать эти концепции. Когда дело доходит до языка ассемблера, мы должны говорить о языках высокого уровня, а когда мы говорим о языках высокого уровня, мы должны вовлекать语言
это понятие.
Компьютерные языки
Одной из наиболее очевидных характеристик нас как людей является то, что мы можем общаться друг с другом с помощью речи, но компьютер не может понять, что вы говорите.Если вы хотите общаться с ним, вы должны обмениваться в соответствии с инструкциями компьютера, что включает Проблема языка.Компьютер сделан из двоичного кода, и он может понимать только двоичный код.机器语言
, но обычные люди не могут понять машинный язык.В это время необходим язык, который может быть распознан компьютерами и понятен людям.Первым из появившихся является汇编语言
. Но язык ассемблера непонятен и труден для понимания, поэтому существуют языки высокого уровня, такие как C, C++ и Java.
Поэтому компьютерные языки принято делить на два типа: языки низкого уровня (машинный язык, язык ассемблера) и языки высокого уровня. Программы, написанные на языках высокого уровня, могут быть запущены только после их компиляции и преобразования в машинный язык, в то время как язык ассемблера может быть преобразован в машинный язык ассемблером.
язык ассемблера
Сначала посмотрите на листинг кода на ассемблере
mov eax, dword ptr [ebp-8] /* 把数值从内存复制到 eax */
add eax, dword ptr [ebp-0Ch] /* 把 eax 的数值和内存的数值相加 */
mov dword ptr [ebp-4], eax /* 把 eax 的数值(上一步的结果)存储在内存中*/
Это часть написания программы на языке ассемблера. Язык ассемблера использует助记符(memonic)
Чтобы написать программу, каждая инструкция машинного языка, которая изначально является электрическим сигналом, будет иметь соответствующую мнемонику, такую какmov,add
Они являются сокращением для хранения данных (перемещения) и добавления (добавления) соответственно. Существует однозначное соответствие между языком ассемблера и машинным языком. Это сильно отличается от языков высокого уровня.Обычно процесс преобразования программы, написанной на языке ассемблера, в машинный язык называется汇编
; И наоборот, процесс преобразования машинного языка в язык ассемблера называется反汇编
.
Язык ассемблера помогает понять, что делает компьютер, а программы на уровне машинного языка寄存器
Для обработки в приведенном выше кодеeax,ebp
Все они представляют собой регистры, которые являются именами внутренних регистров ЦП, поэтому можно сказать, чтоЦП — это набор регистров. Хранение в памяти представлено номерами адресов, а типы регистров различаются по имени.
Разные типы ЦП имеют разные типы и количество внутренних регистров, а также диапазон значений, хранящихся в регистрах. Однако в зависимости от функции регистры можно разделить на следующие категории:
тип | Функции |
---|---|
регистр накопления | Хранит данные запуска и расчетные данные. |
регистр флага | Он используется для отражения состояния процессора и некоторых особенностей результатов операций, а также для контроля выполнения инструкций. |
счетчик команд | Счетчик программ — это место, где хранится адрес устройства, в котором находится следующая инструкция. |
базовый регистр | Начальное местоположение памяти, где хранятся данные |
индексный регистр | Сохраняет относительный адрес базового регистра |
регистр общего назначения | хранить произвольные данные |
регистр команд | Сохраняет выполняемую инструкцию, используемую внутри ЦП, и программист не может читать или записывать этот регистр. |
стековый регистр | начало области стека |
вСчетчик программ, регистр накопления, регистр флагов, регистр команд и регистр стекаСуществует только один, а других регистров обычно несколько.
счетчик команд
程序计数器(Program Counter)
- это адрес устройства, в котором хранится следующая инструкция.
При выполнении программы начальным значением ПК является адрес первой инструкции программы.При последовательном выполнении программы,控制器
Сначала из памяти извлекается инструкция по адресу инструкции, указанному программным счетчиком, а затем инструкция анализируется и выполняется, а значение PC увеличивается на 1, чтобы указать на следующую команду, которая должна быть выполнена.
Рассмотрим подробно процесс выполнения счетчика программ на примере.
Это операция по добавлению, программа запускается, и после компиляции и разбора операционная система копирует программу с жесткого диска в память.Программа в примере складывает 123 и 456, и выводит результат на дисплей. Поскольку это сложно описать на машинном языке, то это результат после перевода.На самом деле, каждая инструкция и данные могут быть распределены по разным адресам, но для удобства объяснения память и данные, из которых состоит инструкция, помещаются в один адрес памяти.
адрес0100
является начальной позицией выполнения программы. После того, как Windows и другие операционные системы скопируют программу с жесткого диска в память, она установит счетчик программ в качестве начальной позиции 0100, а затем выполнит программу.После выполнения каждой инструкции значение счетчика программ будет увеличиваться на 1 (или прямо указать на следующий инструк. адрес), то ЦП прочитает команду из памяти и выполнит ее в соответствии со значением счетчика команд, т. е.Счетчик программ контролирует ход выполнения программы..
Механизмы условного ветвления и цикла
Мы все изучали языки высокого уровня, Поток условного управления в языках высокого уровня в основном делится на три типа:顺序执行、条件分支、循环判断
В-третьих, последовательное выполнение заключается в выполнении инструкций в порядке содержания адреса. Условная ветвь — это инструкция, которая выполняет произвольный адрес на основе условия. Цикл — это многократное выполнение инструкции по одному и тому же адресу.
- Случай последовательного выполнения относительно прост, значение счетчика программ равно +1 для каждой выполняемой инструкции.
- Условные и циклические переходы заставляют счетчик программ указывать на произвольный адрес, так что программа может вернуться к предыдущему адресу, чтобы повторить ту же инструкцию или перейти к любой инструкции.
Далее условное ветвление используется в качестве примера для иллюстрации процесса выполнения программы (цикл также очень похож).
Процесс запуска программы такой же, как и процесс последовательности.ЦП начинает выполнять команду с 0100.Последовательно выполняются как 0100, так и 0101.Последовательность значений ПК равна +1.Когда инструкция по адресу 0102 выполняется, значение регистра 0106 считается больше 0. , перейти (перейти) к инструкции с адресом 0104, вывести значение на дисплей, а затем завершить программу, инструкция 0103 пропускается, что такой же как и в нашей программеif()
Решение такое же, если условие не выполняется, инструкция будет пропущена напрямую. Поэтому процесс выполнения ПК не напрямую +1, а адрес следующей инструкции.
регистр флага
Используются условные и циклические переходыjump(跳转指令)
, он будет судить, следует ли прыгать в соответствии с текущей инструкцией, о которой мы упоминали выше.标志寄存器
, независимо от того, положительный, отрицательный или нулевой результат текущей операции регистра накопления, сохранит его флаговый регистр (также отвечает за переполнение и четность)
Переполнение (overflow): означает, что результат операции превышает диапазон длины регистра
Проверка четности: относится к проверке того, является ли значение результата операции четным или нечетным.
Когда ЦП выполняет операцию, значение регистра флага будет автоматически установлено в соответствии с результатом текущей операции Положительное, отрицательное и нулевое состояния результата операции представлены тремя битами регистра флага. Когда соответствующие результаты первого байтового бита, второго байтового бита и третьего байтового бита регистра флага равны 1, они представляют положительные числа, нуль и отрицательные числа соответственно.
Механизм выполнения ЦП интересен.Предположим, XXX, хранящийся в регистре накопления, сравнивается с YYY, хранящимся в общем регистре.После сравнения механизм работы ЦП будет выполнять операцию вычитания. Независимо от того, будет ли результат операции вычитания положительным, нулевым или отрицательным, он будет сохранен в регистре флагов. Положительный результат означает, что XXX больше, чем YYY, нулевой результат означает, что XXX и YYY равны, а отрицательный результат означает, что XXX меньше, чем YYY. Инструкции для сравнения программ фактически выполняются внутри ЦП.减法
операция.
механизм вызова функции
Далее продолжаем знакомить с механизмом вызова функции.Даже если это программа, написанная на языке высокого уровня, обработка вызова функции реализуется путем установки значения программного счетчика в адрес хранения функции. После того, как функция выполнит инструкцию перехода, она должна выполнить обработку возврата.Простой переход инструкции не имеет смысла.Ниже приведен пример реализации перехода функции.
На рисунке переменным a и b присвоены значения 123 и 456 соответственно, а метод MyFun(a,b) вызывается для выполнения перехода к инструкции. Адреса на рисунке - это адреса во время выполнения после компиляции языка C в машинный язык. Поскольку однострочная программа на C обычно после компиляции становится многострочной на машинном языке, адреса на рисунке разбросаны. После выполнения инструкции MyFun(a,b) программа вернется к следующей инструкции MyFun(a,b), а ЦП продолжит выполнение следующих инструкций.
Две инструкции, которые важны для вызова и возврата функции:call
иreturn
Прежде чем установить адрес входа функции в программный счетчик, инструкция вызова сохранит адрес инструкции, которая должна быть выполнена после вызова функции, в основной памяти, называемой стеком. После обработки функции инструкция возврата выполняется через выход из функции. Функция инструкции возврата состоит в том, чтобы установить адрес, хранящийся в стеке, в программный счетчик. Перед вызовом функции MyFun в стеке сохраняется адрес 0154. После обработки функции MyFun адрес 0154 сохраняется в программном счетчике. Процесс вызова выглядит следующим образом
В некоторых условных операторах или операторах цикла языка высокого уровня обработка вызовов функций будет преобразована в инструкции вызова, а обработка после завершения функции будет преобразована в инструкции возврата.
Массив по адресу и индексу
Далее, давайте посмотрим на базовый регистр и индексный регистр. С помощью этих двух регистров мы можем разделить определенную область в основной памяти для выполнения операций, подобных массивам. Во-первых, мы используем шестнадцатеричные числа для разделения памяти компьютера. на 00000000 - FFFFFFFF. Затем для любого адреса памяти в этом диапазоне, пока есть 32-битный регистр, можно просмотреть все адреса. Но если вы хотите разделить конкретную область памяти наподобие массива для непрерывного просмотра, удобнее использовать два регистра.
Например, мы используем два регистра (базовый регистр и индексный регистр) для представления значения памяти.
Это представление очень похоже на построение массива,数组
Это относится к структуре данных, в которой данные одинаковой длины располагаются в памяти непрерывно. Используйте имя массива для представления всех значений массива и различайте каждый элемент данных массива по индексу, например: a[0] - a[4],[]
0 - 4 внутри являются нижними индексами массива.
Процесс выполнения инструкций ЦП
Так как же ЦП выполняет инструкции одну за другой?
Почти все процессоры типа фон Неймана работают в пять этапов:Выборка инструкции, декодирование инструкции, выполнение инструкции, доступ к данным, обратная запись результата.
-
取指令
Стадия — это процесс чтения инструкции из памяти в регистр ЦП, а программный регистр используется для хранения адреса следующей инструкции. -
指令译码
На этапе, после завершения выборки инструкции, он сразу переходит к этапу декодирования инструкции.На этапе декодирования инструкции декодер инструкции разделяет и интерпретирует выбранные инструкции в соответствии с заранее определенным форматом инструкции, а также идентифицирует и различает различные типы инструкций и различные методы получения операндов. -
执行指令
На этапе после завершения декодирования эту инструкцию необходимо выполнить.Задачей этого этапа является выполнение различных операций, указанных в инструкции, и конкретная реализация функции инструкции. -
访问取数
На этапе, в соответствии с потребностями инструкции, может потребоваться извлечение данных из памяти.Задачей этого этапа является получение адреса операнда в основной памяти по коду адреса инструкции, и чтение операнд из основной памяти для работы. -
结果写回
Стадия, как последняя стадия, стадия обратной записи результата (Write Back, WB) «записывает» данные результата операции стадии выполнения инструкции в какую-либо форму хранения: данные результата часто записываются во внутренние регистры ЦП для последующего использовать быстрый доступ к инструкции;
Суммировать
В этой статье мы в основном говорим о
- Что такое ЦП, важность ЦП, процесс, посредством которого ЦП выполняет программу
- Также описывается внутреннее устройство ЦП, его компоненты.
- Упоминаются язык ассемблера и языки высокого уровня
- Упоминается связь между процессором и регистрами.
- Упомянуты функции основных регистров, счетчика программ, флагового регистра, базового регистра и индексного регистра.
- Также упоминается, как устроен механизм вызова функций.
- Процесс выполнения инструкций процессора
Сделайте рекламу для себя ниже, пожалуйста, обратите внимание на общедоступный номерJava建设者
, Владелец стека технологий Java, любит технологии, любит читать, любит делиться и подводить итоги и надеется поделиться с вами каждой хорошей статьей на пути роста. Обратите внимание на ответ на общедоступный номер002
Получите гулянку, специально приготовленную для вас, вы полюбите ее и соберете.
Использованная литература:
En. Wikipedia.org/wiki/cent RA…
woohoo.цифровые тренды.com/computing/i…
baike.baidu.com/item/register/18…
baike.baidu.com/item/memory/103…
blog.CSDN.net/mark_basketball/art…
baike.baidu.com/item/счетчик программ/…
«Как работает программа»