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

Одним из ключевых преимуществ платформы Arduino является популярность. Популярную платформу активно поддерживают производители электронных устройств, выпускающие специальные версии различных плат, расширяющих базовую функциональность контроллера. Такие платы, совершенно логично называемые платами расширения (другое название: arduino shield, шилд), служат для выполнения самых разнообразных задач и могут существенно упростить жизнь ардуинщика. В этой статье мы узнаем, что такое плата расширения Arduino и как ее можно использовать для работы с разнообразными устройствами Arduino: двигателями (шилды драйверов двигателей), LCD-экранами (шилды LCD), SD-картами (data logger), датчиками (sensor shield) и множеством других.

Давайте сперва разберемся в терминах. Плата расширения Ардуино – это законченное устройство, предназначенное для выполнения определенных функций и подключаемое к основному контроллеру с помощью стандартных разъемов. Другое популярное название платы расширения – англоязычное Arduino shield или просто шилд. На плате расширения установлены все необходимые электронные компоненты, а взаимодействие с микроконтроллером и другими элементами основной платы происходят через стандартные пины ардуино. Чаще всего питание на шилд тоже подается с основной платы arduino, хотя во многих случаях есть возможность запитки с других источников. В любом шилде остаются несколько свободных пинов, которые вы можете использовать по своему усмотрению, подключив к ним любые другие компоненты.

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

Зачем нужны шилды arduino?

Все очень просто: 1) для того, чтобы мы экономили время, и 2) кто-то смог заработать на этом. Зачем тратить время, проектируя, размещая, припаивая и отлаживая то, что можно взять уже в собранном варианте, сразу начав использовать? Хорошо продуманные и собранные на качественном оборудовании платы расширения, как правило, более надежны и занимают меньше места в конечном устройстве. Это не значит, что нужно полностью отказываться от самостоятельной сборки и не нужно разбираться в принципе действия тех или иных элементов. Ведь настоящий инженер всегда старается понять, как работает то, что он использует. Но мы сможем делать более сложные устройства, если не будем каждый раз изобретать велосипед, а сосредоточим свое внимание на том, что до нас еще мало кто решал.

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

Наиболее популярным примерами шилдов являются платы расширения для работы с датчиками, двигателями, LCD-экранами, SD-картами, сетевые и GPS-шилды, шилды со встроенными реле для подключения к нагрузке.

Подключение Arduino Shields

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

Как правило, шилд предназначен для вполне конкретной версии контроллера, хотя, например, многие шилды для Arduino Uno вполне нормально работают с платами Arduino Mega. Распиновка контактов на меге выполнена так, что первые 14 цифровых контактов и контакты с противоположной стороны платы совпадают с расположением контактов на UNO, поэтому в нее легко становится шилд от ардуино.

Программирование Arduino Shield

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

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

Как правило, эта плата расширения идет в наборах ардуино и поэтому именно с ней ардуинщики встречаются чаще всего. Шилд достаточно прост – его основная задача предоставить более удобные варианты подключения к плате Arduino. Это осуществляется за счет дополнительных разъемов питания и земли, выведенных на плату к каждому из аналоговых и цифровых пинов. Также на плате можно найти разъемы для подключения внешнего источника питания (для переключения нужно установить перемычки), светодиод и кнопка перезапуска. Варианты шилда и примеры использования можно найти на иллюстрациях.




Существует несколько версий сенсорной платы расширения. Все они отличаются количеством и видом разъемов. Наиболее популярными сегодня являются версии Sensor Shield v4 и v5.

Данный шилд ардуино очень важен в робототехнических проектах, т.к. позволяет подключать к плате Arduino сразу обычный и серво двигатели. Основная задача шилда – обеспечить управление устройствами потребляющими достаточно высокий для обычной платы ардуино ток. Дополнительным возможностями платы является функция управления мощностью мотора (с помощью ШИМ) и изменения направления вращения. Существует множество разновидностей плат motor shield. Общим для всех них является наличие в схеме мощного транзистора, через который подключается внешняя нагрузка, теплоотводящих элементов (как правило, радиатора), схемы для подключения внешнего питания, разъемов для подключения двигателей и пины для подключения к ардуино.



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




Платы расширения для прототипирования

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





Arduino LCD shield и tft shield

Данный тип шилдов используется для работы с LCD-экранами в ардуино. Как известно, подключение даже самого простого 2-строчного текстового экрана далеко не тривиальная задача: требуется правильно подключить сразу 6 контактов экрана, не считая питания. Гораздо проще вставить готовый модуль в плату ардуино и просто загрузить соответствующий скетч. В популярном LCD Keypad Shield на плату сразу заведены от 4 до 8 кнопок, что позволяет срзау организовать и внешний интерфейс для пользователя устройства. TFT Shield также помогает



Arduino Data Logger Shield

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




Краткое резюме

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

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

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

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

Составляющие

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

Регистры предназначены для сохранения промежуточных итогов. Почти все команды используют информацию регистров. Шина информации проводит функции объединения CPU с остальным оборудованием ПК. Именно шина перемещает центральному процессору файлы и отображает итоги расчетов.

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

Частота

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

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

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

Самой маленькой единицей измерения времени для CPU является такт. Любое действие требует минимум одного такта. Обмен информацией с оперативкой выполняется в несколько тактов, куда относятся и такты простоя.

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

От чего еще зависит продуктивность CPU

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

Насколько можно поднять частоту?

Скорость работы CPU можно легко поднять увеличением частоты. Однако, не стоит забывать, что чип может перегреваться. С поднятием частоты растет потребление энергии процессором и его нагрев. Кроме того, увеличение частоты может увеличить степень электромагнитных помех. Другими словами, увеличением частоты поднять продуктивность CPU не получиться.

Шина данных

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

Разрядность шины

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

Шина адреса

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

Шину адреса можно представить в качестве системы нумерации зданий. Число полос в шине соответствует количеству цифр в номере здания. Если в номере зданий допускается не более 2-х цифр, то количество зданий будет не более ста. Если вставить одно число в номер, то число адресов вырастет до 103. В ПК применяется двоичная система вычисления, поэтому число ячеек памяти равняется 2.

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

Встроенные регистры

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

Почему происходит нагрев процессора

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

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

Кроме того, можно использовать современные материалы. Также есть процессоры, которые функционируют на низком напряжении. При этом изменение мощности напрямую зависит от напряжения. При уменьшении напряжения на 10% уменьшается потребление энергии на 20%.

Каким образом можно увеличить продуктивность процессоров

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

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

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

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

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

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

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

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

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

Как же он все-таки работает

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

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

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

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

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

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

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

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

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

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

Вы используете компьютер или мобильное устройство, чтобы читать данный топик в настоящее время. Компьютер или мобильное устройство для выполнения этих действий использует микропроцессор. Микропроцессор является сердцем любого устройства, сервера или ноутбука. Существует много марок микропроцессоров от самых разных производителей, но все они делают примерно то же самое и примерно таким же образом.
Микропроцессор - также известный как процессор или центральный блок обработки - это вычислительный двигатель, который изготовлен на одном кристалле. Первым микропроцессором был Intel 4004, он появился в 1971 году и был не столь мощным. Он мог складывать и вычитать, и это только 4 бита за один раз. Удивительным процессор был потому, что был выполнен на одном чипе. Вы спросите почему? А я отвечу: инженеры в то время производили процессоры либо из нескольких чипов или из дискретных компонентов (транзисторы использовались в отдельных корпусах).

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

Прогресс в производстве микропроцессоров: Intel

Первым микропроцессором, ставшим впоследствии сердцем простого домашнего компьютера, был Intel 8080 - полный 8-разрядный компьютер на одном чипе, появившийся в 1974 году. Первый микропроцессор стал причиной реального всплеска на рынке. Позже в 1979 году была выпущена новая модель - Intel 8088. Если вы знакомы с рынком ПК и его историей, то знаете, что рынок ПК переехал от Intel 8088 к Intel 80286, а тот к Intel 80386 и Intel 80486, а после к Pentium, Pentium II, Pentium III и Pentium 4. Все эти микропроцессоры сделаны Intel, и все они являются улучшениями базовой конструкции Intel 8088. Pentium 4 может выполнить любой код, но делает он это в 5000 раз быстрее.

В 2004 году Intel представила микропроцессоры с несколькими ядрами и миллионным количеством транзисторов, но даже эти микропроцессоры следовали общим правилам, что и ранее изготовленные чипы. Дополнительная информация в таблице:

  • Дата : является годом, когда процессор был впервые представлен. Многие процессоры были выпущены вновь, но уже с более высокими тактовыми частотами, и это продолжалось в течение многих лет после оригинальной даты выпуска
  • Транзисторы : это количество транзисторов на кристалле. Вы можете видеть, что число транзисторов на одном кристалле неуклонно растёт на протяжении многих лет
  • Микрон : ширина в микронах наименьшей проволоки на чипе. Для сравнения могу привести человеческий волос, имеющий толщину около 100 мкм. Поскольку размеры были всё меньше и меньше, число транзисторов возрастало
  • Тактовая частота : максимальная скорость, которую чип может развить. О тактовой частоте я расскажу чуточку позже
  • Ширина (шина) данных : является шириной АЛУ (арифметико-логическое устройство). 8-битное АЛУ может добавить, вычесть, умножить и т. д. Во многих случаях шина данных имеет ту же ширину, как АЛУ, но не всегда. Intel 8088 был 16-битным и имел 8-битную шину, в то время как современные модели Pentium 64-битные.
  • MIPS : данная колонка в таблице выступает за отображение количества операций в секунду. Является единицей измерения для микропроцессоров. Современные процессоры могут сделать столько всяких штук, что сегодняшние рейтинги, представленные в таблице, потеряют всякий смысл. Зато вы можете ощутить относительную мощность микропроцессоров тех времён
Из этой таблицы видно, что, в общем, существует связь между тактовой частотой и MIPS (количеством совершаемых операций в секунду). Максимальная тактовая частота является функцией производственного процессора. Существует также зависимость между количеством транзисторов и количеством операций в секунду. Например, Intel 8088 с тактовой частотой 5 МГц (а сейчас 2.5-3 ГГц) выполняет только 0.33 MIPS (около одной инструкции для каждого 15 такта). Современные процессоры могут часто выполнять две инструкции за такт. Это повышение напрямую связано с числом транзисторов на чипе и я расскажу об этом тоже далее.

Что такое чип?


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

Как это работает



Intel Pentium 4

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

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

  • Используя своё АЛУ (арифметико-логическое устройство), микропроцессор может выполнять математические операции. Например, сложение, вычитание, умножение и деление. Современные микропроцессоры способны выполнять чрезвычайно сложные операции
  • Микропроцессор может перемещать данные из одного места памяти в другое
  • Микропроцессор может принимать решения и перейти к новому набору инструкций, основанному на этих решениях


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

  • Шина адреса (8, 16 или 32 бита), которая посылает обращение к памяти
  • Шина данных (8, 16 или 32 бита), которая передаёт данные в память или принимает данные от памяти
  • RD (read, чтение) и WR (write, запись) сообщают памяти, хотят ли они произвести установку или же получить адресованное местоположение
  • Линия часов, которая позволяет просмотреть последовательность тактовых импульсов процессора
  • Линия сброса, которая сбрасывает счётчик команд к нулю и перезапускает выполнение

Память микропроцессора

Ранее мы говорили о шинах адреса и данных, а также о линиях чтения и записи. Всё это соединяется либо с ОЗУ (оперативная память) или с ПЗУ (постоянная память или постоянное запоминающее устройство, ПЗУ) - как правило, с обеими. В нашем примере микропроцессора мы имеем широкую адресную шину 8 бит и такую же широкую шину данных - тоже 8 бит. Это означает, что микропроцессор может обратиться 2^8 к 256 байт памяти, и может читать и писать 8 бит памяти за один раз. Давайте предположим, что этот простой микропроцессор имеет 128 байт встроенной памяти, начиная с адреса 0 и 128 байт оперативной памяти, начиная с адреса 128.

Оперативная память выступает за память только для чтения. Микросхема постоянной памяти запрограммирована с постоянными предустановленными заданными байтами. Шинный адрес сообщает чипу оперативной памяти, который байт, добраться и поместиться на шине данных. Когда линия чтения изменяет своё состояние, микросхема постоянной памяти представляет выбранный байт на шину данных.

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



RAM chip или чип постоянного запоминающего устройства (ПЗУ)

Кстати, почти все компьютеры содержат некоторое количество оперативной памяти. На персональном компьютере постоянное запоминающее устройство называется BIOS (Basic Input/Output System). При запуске микропроцессор начинает выполнять инструкции, которые он находит в BIOS. Инструкции BIOS, к слову, тоже выполняют свои роли: выполняют проверку аппаратных средств, а затем вся информация поступает на жёсткий диск, чтобы создать загрузочный сектор. Загрузочный сектор - это одна небольшая программа, и BIOS хранит её в памяти после прочтения её с диска. Затем микропроцессор начинает выполнять инструкции загрузочного сектора из оперативной памяти. Программа загрузочного сектора покажет микропроцессору, что нужно ещё взять с собой с жесткого диска в оперативную память, а затем выполняет всё это и так далее. Это - то, как микропроцессор загружает и выполняет всю операционную систему.

Микропроцессорные инструкции

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

Вот набор инструкций языка ассемблера:

  • LOADA mem - загрузить в регистр с адресом памяти
  • LOADB mem - загрузить в регистр B от адреса памяти
  • CONB mem - загрузить постоянное значение в регистр B
  • SAVEB mem - сохранить регистр B в адрес памяти
  • SAVEC mem - сохранить регистр C в адрес памяти
  • ADD - добавить A и B и сохранить результат в C
  • SUB - вычесть A и B и сохранить результат в C
  • MUL - умножить A и B и сохранить результат в C
  • DIV - разделить A и B и сохранить результат в C
  • COM - сравнить A и B и сохранить результат в тесте
  • JUMP addr - перейти по адресу
  • JEQ addr - перейти, если равно, для решения
  • JNEQ addr - перейти, если не равно, для решения
  • JG addr - перейти, если больше, для решения
  • JGE addr - перейти, если больше или равно, для решения
  • JL addr - перейти, если меньше, для решения
  • JLE addr - перейти, если меньше или равно, для решения
  • STOP - остановить выполнение
Язык ассемблера
Компилятор C переводит этот C-код на языке ассемблера. Если предположить, что оперативная память начинается с адреса 128 в этом процессоре, и постоянное запоминающее устройство (в котором содержится программа на языке ассемблера) начинается с адреса 0, то для нашего простого микропроцессора ассемблер может выглядеть следующим образом:

// Assume a is at address 128// Assume F is at address 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 the jump to 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114 ADD15 SAVEC 12816 JUMP 4 // loop back to if17 STOP

Постоянное запоминающее устройство (ПЗУ)
Таким образом, теперь вопрос: «Как все эти инструкции интегрируются с постоянным запоминающим устройством?». Я поясню, конечно: каждая из этих команд на языке ассемблера должна быть представлена в виде двоичного числа. Для простоты предположим, что каждая команда на языке ассемблера присваивает себе уникальный номер. Например, это будет выглядеть так:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ADD - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP addr - 11
  • JEQ addr - 12
  • JNEQ addr - 13
  • JG addr - 14
  • JGE addr - 15
  • JL addr - 16
  • JLE addr - 17
  • STOP - 18
Данные цифры будут известны как коды операций. В постоянном запоминающем устройстве наша маленькая программа будет выглядеть следующим образом:

// Assume a is at address 128// Assume F is at address 129Addr opcode/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 // LOADA 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // LOADA 12823 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Вы видите, что 7 линий C-кода стали 18 линиями ассемблера, и это всё стало 32 байтами в постоянном запоминающем устройстве.

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

  • 1. В первом такте необходимо загрузить саму инструкцию, поэтому декодеру нужно: активировать тремя состояниями буфер для счётчика команд, активировать линию чтения (RD), активировать данные в трёх штатах буфера в регистре команд
  • 2. Во втором такте инструкция ADD декодируется. Тут нужно сделать совсем немного: установить операцию арифметико-логического устройства (АЛУ) в регистр C
  • 3. Во время третьего такта программный счётчик увеличивается (в теории это может перекрываться во втором такте)
Каждая инструкция может быть разбита в виде набора секвенированных операций - таких, какие мы только что просмотрели. Они манипулируют компонентами микропроцессора в правильном порядке. Некоторые указания, как, например, инструкция ADD, может занять два-три такта. Другие могут занять пять или шесть тактов.

Подойдём к концу


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

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

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

Как работает процессор в компьютере?

Когда вы нажимаете какую-нибудь клавишу, то электрический сигнал бежит по проводникам на контроллер клавиатуры. Это ясно любому. Но дальше – самое сложное. Далее, чтобы понять суть процессов, необходимо ввести понятие прерывания. Прерывание – это процесс отправления сигнала процессору, чтобы то приготовился на этот сигнал отреагировать. Процессор, если этот сигнал принимает, прекращает текущую операцию и возвращается к ней после исполнения прервавшей команды. Прерывания могут исходить от разных устройств или программ: диска, приложения, запущенного в Windows, клавиатуры с мышью и т.д. Реализация механизма прерываний – неотъемлемая часть архитектуры процессора.

Но вернёмся к нашим баранам. Так вот, нажав на клавишу, мы с клавиатуры посылаем сигнал по одной из 16 линий запроса этого самого прерывания, которые называются «ирками» (IRQ – interrupted request lines). Кстати, семь из них постоянно наблюдают за выделенными для этого механизма составляющими системы, в том числе и клавиатурой (точнее, его контроллером). И далее…

  • Контроллер передаёт сигнал в подсистему под названием контроллер прерываний, который работает как начальник военного штаба, постоянно контролируя процесс вмешательства в работу процессора 256-тью видами возможных прерываний, которые требуют внимания ЦП.
  • Другие электрические цепочки прерываний следят за шиной ввода-вывода, которая содержит в себе слоты расширения компьютера. Кстати, карты расширения, которые можно ставить в или могут использовать одну и ту же «ирку», так как запросы на эти карты или от этих слотов будут управляться функцией Plug and Play (о ней чуть позже).
  • Далее, контроллер прерываний посылает сигнал на один из штырьков, торчащих из основания процессора. Этот штырёк-контакт имеет своё название – INTR (INterrupT Request) и часто используется для таких вот сигналов прерываний. К слову сказать, есть ещё один контакт на «пузе» процессора, который носит название NMI (NonMaskable Interrupt – немаскируемое прерывание – это высокоуровневое аппаратное прерывание, которое нельзя замаскировать или запретить (например, прерывание по исчезновению питания или по нажатии заветных клавиш ); при его возникновении процессор всегда прерывает текущую работу).
  • Процессор приостанавливает текущую работу, записывая прерванную задачу в некую область под названием стек. Эта область или адрес памяти потом напомнит процессору, что в очереди на исполнение стоит эта задача.
  • Центральный процессор проверяет другой штырёк на предмет, какую кнопку вы нажали. Но перед тем, как вы увидите на экране последствие нажатой кнопки или клавиши, процессор проверит раздел памяти под названием таблица дескрипторов прерываний (IDT ). Если быть точным, ЦП выдаёт определённые инструкции в одну из ячеек IDT , которая и ассоциируется с нажатой нами клавишей. Сразу после этого инструкции под названием программа обслуживания прерываний (ISR) только-только сообщает процессору, что же он должен сделать, когда мы эту злополучную клавишу нажимаем. Кстати, вот этот тернистый путь позволяет заменить обычные инструкции (просто отобразить на экране нажатую клавишу) на операции, характерные именно для исполняемой программы (клавиша S в Word это латинская s , а в игре – движение назад или «присесть»).
  • Итак, ISR закончила свою работу и посылает процессору инструкцию RET (возврат от прерывания). Она и призывает процессор вернуться к отложенной им задаче. ЦП обращается в адрес памяти и продолжает работать с последней инструкцией отложенной задачи.

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

Структура центрального процессора

Чтобы непрофессионалу стало понятно, как работает центральный процессор компьютера, рассмотрим из каких блоков он состоит:

Блок управления процессором;

Регистры команд и данных;

Арифметико-логические устройства (выполняют арифметические и логические операции);

Блок операций с действительными числами, то есть с числами с плавающей точкой или проще говоря с дробями (FPU);

Буферная память (кэш) первого уровня (отдельно для команд и данных);

Буферная память (кэш) второго уровня для хранения промежуточных результатов вычислений;

В большинстве современных процессоров имеется и кэш третьего уровня;

Интерфейс системной шины.

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

Алгоритм работы центрального процессора компьютера можно представить как последовательность следующих действий.

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

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

Арифметико-логическое устройство считывает инструкции и данные из соответствующих регистров процессора и выполняет эти команды над полученными числами.

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

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

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

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

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

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

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

Понравилась статья? Поделиться с друзьями: