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


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

May 21, 2015

Центральное процессорное устройство (англ. CPU – central processing unit) – электронный блок на котором выполняются набор машинных инструкций (арифметические и логические вычисления). Изначально этот термин относился к определенным логическим машинам, задачей которых было выполнение сложных компьютерных программ. Со временем, с начала 1960-х годов, определение центральное процессорное устройство было естественным образом перенесено на компьютеры. В настоящее время CPU реализуется в рамках компьютерного процессора (чипа), микропроцессора (интегральная схема) или многоядерного процессора.

История развития процессоров началась после Второй мировой войны. В 1946 году был разработан первый электронный компьютер общего назначения ЭНИАК (англ. ENIAC, Electronic Numerical Integrator and Computer — Электронный числовой интегратор и вычислитель). ENIAC разрабатывался для расчетов артиллерийских таблиц, но впоследствии был перепрофилирован для решения задач широкого спектра. Первоначально результаты работы этого компьютера перепроверяли математики.

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

Летом 1945 года математик Джон фон Нейман распространил «первый проект отчета о EDVAC» (Electronic Discrete Variable Automatic Computer). Проект был реализован в 1949 году командой ученых во главе с Джоном Мокли и Джоном Экертом. Главное отличие от ENIAC было использование двоичной системы, а не десятичной. EDVAC мог выполнить определенное количество инструкций (или операций) различных типов. Важно отметить, что программы, написанные для EDVAC хранились на подключаемом физическом носителе, а не в памяти компьютера. Это выгодно отличало его от ENIAC, для которого требовалось значительное время чтобы перенастроить на выполнение новых задач. Тем не менее EDVAC был не первой электронной вычислительной машиной с хранимыми в оперативной памяти программами реализовавшим архитектуру фон Неймана. Небольшой прототип, созданный в Манчестерском институте и Манчестерский Mark I, выполнили свои первые программы 21 июня 1948 года и 17 июля 1949 года соответственно.

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

В 1964 году IBM представила свой новый компьютер архитектуры System/360. Эта архитектура была использована в серии компьютеров, которые могли выполнять те же программы с разной скоростью и производительностью. Это было значимо для того времени, поскольку большинство компьютеров, даже одного производителя, были несовместимы. Чтобы решить эту задачу в IBM использовали понятие прошивки (микрокод), которая используется даже в современных процессорах. Процессоры с архитектурой System/360 были настолько популярны, что доминировали на рынке ЭВМ в течение многих десятилетий.

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

В 1970 годы произошел прорыв в технологии создания процессора. Была создана интегральная схема на кристалле которой были расположены основные элементы и блоки процессора. Эта микросхема известна как микропроцессор. В 1971 году фирма Intel выпустила первый коммерчески доступный 4-разрядный микропроцессор Intel 4004. В следующие несколько лет Intel выпустили 8-разрядный Intel 8080 и 16-разрядный 8086. Эти процессоры заложили основы архитектуры микропроцессоров для современных персональных компьютеров. Оптимальным материалом для изготовления микропроцессоров стал кремний.

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

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

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

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

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

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

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

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

lab-37.com

Что нужно знать о центральном процессоре компьютера

«Дареному процессору в кулер не дуют.»

Неизвестный автор

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

Следует сразу оговориться, что в этой статье будет рассказано в основном о центральном процессоре компьютера, так называемом CPU (Central Processing Unit), между тем, как к процессорам относятся и многие вспомогательные чипы, расположенные в компьютере, как, например, процессор видеокарты или звуковой карты. Тем не менее, принципы работы, характерные для CPU, во многом справедливы и для других типов чипов.

Содержание статьи

  • Немного истории
  • Устройство CPU
  • Принцип работы
  • Заключение

Немного истории

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

Микропроцессор i4004 — прадедушка сегодняшних CPU

Одним из первых микропроцессоров был четырехразрядный процессор фирмы Intel i4004. Он имел смехотворные по нынешним временам характеристики, но для своего времени – начала 1970-x гг., его появление представляло собой настоящий технологический прорыв. Как можно догадаться из его обозначения, он был четырехразрядным и имел тактовую частоту около 0,1 МГц. И именно его прямой потомок, процессор i8088, был выбран фирмой IBM в качестве «мозга» первого персонального компьютера фирмы IBM PC.

Процессор i8088 использовавшийся в первом персональном компьютере фирмы IBM

Шли годы, характеристики CPU становились все более серьезными и внушительными, и, как следствие, становились все более солидными характеристики персональных компьютеров. Значительной вехой в развитии микропроцессоров стал i80386. Это был первый полностью 32-разрядный CPU, который мог адресовать к 4 ГБ оперативной памяти, в то время как большинство его предшественников могло работать максимум с 640 КБ ОЗУ. Подобная разрядность микропроцессоров настольных компьютеров продержалась довольно долго, почти два десятилетия. В середине 80-х объем ОЗУ в 4 ГБ казался фантастически огромным, но сейчас его можно считать небольшим для серьезного компьютера.

i80386 — первый полностью 32-разрядный CPU

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

Intel 486DX — первый процессор с внутренним кэшем Процессор компании Intel — Pentium

Вместе с CPU Pentium 4 в ряду технологий, использующихся в микропроцессорах, появилась технология Hyper Threading. А процессоры Opteron от фирмы AMD и Pentium D от Intel открыли современную эпоху эволюции CPU, эпоху процессоров, имеющих несколько ядер. Сейчас на рынке представлено много CPU от различных производителей, но главными производителями до сих пор остаются две компании – Intel и AMD, причем на долю первой приходится более 80% рынка.

CPU Opteron от фирмы AMD и Pentium D от Intel

Устройство CPU

Любой CPU имеет вычислительное ядро (иногда их бывает несколько), а также кэш, то есть собственную оперативную память. Кэш обычно имеет два уровня – первый и второй (внутренний и внешний). Внутренний имеет меньший объем, но обладает большим быстродействием по сравнению с внешним. Емкость кэша второго уровня современных CPU составляет несколько мегабайт – больше, чем оперативная память первых персональных компьютеров!

В ядре CPU находится несколько функциональных блоков – блок управления, блок выборки инструкций, блок вычислений с плавающей точкой, блок целочисленных вычислений, и.т.д. Также в ядре располагаются главные регистры processor-а, в которых находятся обрабатываемые в определенный момент данные. В классической схеме микропроцессора архитектуры х86 этих регистров всего 16.

На сегодняшний день наибольшее распространение получили две основные разновидности процессоров – CISC (Complex Instruction Set Computing) и RISC (Reduced Instruction Set Computing). В CISC-процессорах мало внутренних регистров, но они поддерживают большой набор команд. В RISC-процессорах регистров много, зато набор команд ограничен. Традиционно микропроцессоры для персональных компьютеров архитектуры Intel х86 принадлежали к классу CISC-процессоров, однако в настоящее время большинство микропроцессоров представляют собой гибрид этих двух архитектур.

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

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

Сокет современного процессора

С другими устройствами процессор связан при помощи специальных каналов связи ­(шин) – шины памяти, шины данных и шины адреса. Разрядность последней очень важна, поскольку от этого параметра зависит объем доступной CPU, а значит, и программам, оперативной памяти.

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

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

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

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

CPU архитектуры х86 исторически поддерживают следующие режимы работы процессора:

  1. Реальный
  2. Защищенный
  3. Виртуальный
  4. Режим супервизора

Реальный режим работы был единственным режимом, в котором работали все CPU до i80386. В этом режиме processor мог адресовать лишь 640 КБ ОЗУ. В результате появления защищенного режима процессор получил возможность работать с большими объемами оперативной памяти. Также существует разновидность защищенного режима – виртуальный режим, предназначенный  для совместимости со старыми программами, написанными для процессоров 8086.

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

Заключение

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

biosgid.ru

#факты |Как работает процессор компьютера?

Вы читаете эти строки со смартфона, планшета или компьютера. Любое из этих устройств основано на микропроцессоре. Микропроцессор является «сердцем» любого компьютерного устройства. Существует много типов микропроцессоров, но все они решают одни и те же задачи. Сегодня мы поговорим о том, как процессор работает и какие задачи он выполняет. На 1 взгляд все это представляется очевидным. Но очень многим пользователям было бы интересно углубить свои знания о важнейшем компоненте, обеспечивающем работу компьютера. Мы узнаем о том, как технология, основанная на простой цифровой логике, позволяет вашему компьютеру не только решать математические задачи, но и быть развлекательным центром. Как всего 2 цифры — единица и ноль — преобразуются в красочные игры и фильмы? Этот вопрос многие неоднократно задавали себе и будут рады получить на него ответ. Ведь даже в основе недавно рассмотренного нами процессора AMD Jaguar, на котором базируются новейшие игровые приставки, лежит та же древняя логика.

В англоязычной литературе микропроцессор часто называют CPU (central processing unit, [единым] модулем центрального процессора). Причина такого названия кроется в том, что современный процессор представляет собою единый чип. 1 микропроцессор в истории человечества был создан корпорацией Intel в далеком 1971 году.

Роль Intel в истории микропроцессорной индустрии

Речь идет о модели Intel 4004. Мощным он не был и умел выполнять только действия сложения и вычитания. Одновременно он мог обрабатывать всего 4 бита информации (то есть был 4-битным). Но для своего времени его появление стало значительным событием. Ведь весь процессор поместился в одном чипе. До появления Intel 4004, компьютеры базировались на целом наборе чипов или дискретных компонентов (транзисторов). Микропроцессор 4004 лег в основу одного из первых портативных калькуляторов.

Первым микропроцессором для домашних компьютеров стал представленный в 1974 году Intel 8080. Вся вычислительная мощность 8-битного компьютера помещалась в одном чипе. Но по-настоящему большое значение имел анонс процессора Intel 8088. Он появился в 1979 году и с 1981 года стал использоваться в первых массовых персональных компьютерах IBM PC.

Далее процессоры начали развиваться и обрастать мощью. Каждый, кто хоть немного знаком с историей микропроцессорной индустрии, помнит, что на смену 8088 пришли 80286. Затем настал черед 80386, за которым следовали 80486. Потом были несколько поколений «Пентиумов»: Pentium, Pentium II, III и Pentium 4. Все это «интеловские» процессоры, основанные на базовой конструкции 8088. Они обладали обратной совместимостью. Это значит, что Pentium 4 мог обработать любой фрагмент кода для 8088, но делал это со скоростью, возросшей примерно в 5 тысяч раз. С тех пор прошло не так много лет, но успели смениться еще несколько поколений микропроцессоров.

С 2004 года Intel начала предлагать многоядерные процессоры. Число используемых в них транзисторов возросло на миллионы. Но даже сейчас процессор подчиняется тем общим правилам, которые были созданы для ранних чипов. В таблице отражена история микропроцессоров Intel до 2004 года (включительно). Мы сделаем некоторые пояснения к тому, что означают отраженные в ней показатели:

Name (Название). Модель процессора Date (Дата). Год, в который процессор был впервые представлен. Многие процессоры представляли многократно, каждый раз, когда повышалась их тактовая частота. Таким образом, очередная модификация чипа могла быть повторно анонсирована даже через несколько лет после появления на рынке 1 его версии Transistors (Количество транзисторов). Количество транзисторов в чипе. Вы можете видеть, что этот показатель неуклонно увеличивался Microns (Ширина в микронах). 1 микрон равен одной миллионной доле метра. Величина этого показателя определяется толщиной самого тонкого провода в чипе. Для сравнения, толщина человеческого волоса составляет 100 микрон Clock speed (Тактовая частота). Максимальная скорость работы процессора Data Width. «Битность» арифметико-логического устройства процессора (АЛУ, ALU). 8-битное АЛУ может слагать, вычитать, умножать и выполнять иные действия над 2 8-битными числами. 32-битное АЛУ может работать с 32-битными числами. Чтобы сложить 2 32-битных числа, восьмибитному АЛУ необходимо выполнить 4 инструкции. 32-битное АЛУ справится с этой задачей за 1 инструкцию. Во многих (но не во всех) случаях ширина внешней шины данных совпадает с «битностью» АЛУ. Процессор 8088 обладал 16-битным АЛУ, но 8-битной шиной. Для поздних «Пентиумов» была характерна ситуация, когда шина была уже 64-битной, а АЛУ по-прежнему оставалось 32-битным MIPS (Миллионов инструкций в секунду). Позволяет приблизительно оценить производительность процессора. Современные микропроцессоры выполняют настолько много разных задач, что этот показатель потерял свое первоначальное значение и может использоваться, в основном, для сравнения вычислительной мощности нескольких процессоров (как в данной таблице)

Существует непосредственная связь между тактовой частотой, а также количеством транзисторов и числом операций, выполняемых процессором за 1 секунду. Например, тактовая частота процессора 8088 достигала 5 МГЦ, а производительность: всего 0,33 миллиона операций в секунду. То есть на выполнение одной инструкции требовалось порядка 15 тактов процессора. В 2004 году процессоры уже могли выполнять по 2 инструкции за 1 такт. Это улучшение было обеспечено увеличением количества процессоров в чипе.

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

Логика микропроцессора

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

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

C помощью своего арифметико-логического устройства, процессор выполняет математические действия: сложение, вычитание, умножение и деление. Современные микропроцессоры полностью поддерживают операции с плавающей точкой (с помощью специального арифметического процессора операций с плавающей точкой) Микропроцессор способен перемещать данные из одного типа памяти в другой Микропроцессор обладает способностью принимать решение и, на основании принятого им решения, «перепрыгивать», то есть переключаться на выполнение нового набора команд

Микропроцессор содержит:

Address bus (адресную шину). Ширина этой шины может составлять 8, 16 или 32 бита. Она занимается отправкой адреса в память Data bus (шину данных): шириной 8, 16, 32 или 64 бита. Эта шина может отправлять данные в память или принимать их из памяти. Когда говорят о «битности» процессора, речь идет о ширине шины данных Каналы RD (read, чтения) и WR (write, записи), обеспечивающие взаимодействие с памятью Clock line (шина синхронизирующих импульсов), обеспечивающая такты процессора Reset line (шина стирания, шина сброса), обнуляющая значение счетчика команд и перезапускающая выполнение инструкций

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

Регистры A, B и C являются логическими микросхемами, используемыми для промежуточного хранения данных Address latch (защелка адреса) подобна регистрам A, B и C Счетчик команд является логической микросхемой (защелкой), способной приращивать значение на единицу за 1 шаг (если им получена соответствующая команда) и обнулять значение (при условии получения соответствующей команды) ALU (арифметико-логическое устройство) может осуществлять между 8-битными числами действия сложения, вычитания, умножения и деления или выступать в роли обычного сумматора Test register (тестовый регистр) является специальной защелкой, которая хранит результаты операций сравнения, производимых АЛУ. Обычно АЛУ сравнивает 2 числа и определяет, равны ли они или одно из них больше другого. Тестовый регистр способен также хранить бит переноса последнего действия сумматора. Он хранит эти значения в триггерной схеме. В дальнейшем эти значения могут использоваться дешифратором команд для принятия решений 6 блоков на диаграмме отмечены, как «3-State». Это буферы сортировки. Множество источников вывода могут быть соединены с проводом, но буфер сортировки позволяет только 1 из них (в 1 момент времени) передавать значение: «0» или «1». Таким образом буфер сортировки умеет пропускать значения или перекрывать источнику вывода возможность передавать данные Регистр команд (instruction register) и дешифратор команд (instruction decoder) держат все вышеперечисленные компоненты под контролем

На данной диаграмме не отображены линии управления дешифратора команд, которые можно выразить в виде следующих «приказов»:

«Регистру A принять значение, поступающее в настоящий момент от шины данных» «Регистру B принять значение, поступающее в настоящий момент от шины данных» «Регистру C принять значение, поступающее в настоящий момент от арифметико-логического устройства» «Регистру счетчика команд принять значение, поступающее в настоящий момент от шины данных» «Адресному регистру принять значение, поступающее в настоящий момент от шины данных» «Регистру команд принять значение, поступающее в настоящий момент от шины данных» «Счетчику команд увеличить значение [на единицу]» «Счетчику команд обнулиться» «Активировать 1 из из 6 буферов сортировки» (шесть отдельных линий управления) «Сообщить арифметико-логическому устройству, какую операцию ему выполнять» «Тестовому регистру принять тестовые биты из АЛУ» «Активировать RD (канал чтения)» «Активировать WR (канал записи)»

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

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

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

Выше мы писали о шинах (адресной и данных), а также о каналах чтения (RD) и записи (WR). Эти шины и каналы соединены с памятью: оперативной (ОЗУ, RAM) и постоянным запоминающим устройством (ПЗУ, ROM). В нашем примере рассматривается микропроцессор, ширина каждой из шин которого составляет 8 бит. Это значит, что он способен выполнять адресацию 256 байт (два в 8 степени). В 1 момент времени он может считывать из памяти или записывать в нее 8 бит данных. Предположим, что этот простой микропроцессор располагает 128 байтами ПЗУ (начиная с адреса 0) или 128 байтами оперативной памяти (начиная с адреса 128).

Модуль постоянной памяти содержит определенный предварительно установленный постоянный набор байт. Адресная шина запрашивает у ПЗУ определенный байт, который следует передать шине данных. Когда канал чтения (RD) меняет свое состояние, модуль ПЗУ предоставляет запрошенный байт шине данных. То есть в данном случае возможно только чтение данных.

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

Более того, теоретически компьютер может обойтись и вовсе без оперативной памяти. Многие микроконтроллеры позволяют размещать необходимые байты данных непосредственно в чип процессора. Но без ПЗУ обойтись невозможно. В персональных компьютерах ПЗУ называется базовой системой ввода и вывода (БСВВ, BIOS, Basic Input/Output System). Свою работу при запуске микропроцессор начинает с выполнения команд, найденных им в BIOS.

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

Инструкции микропроцессора

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

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

LOADA mem — Загрузить (load) регистр A из некоторого адреса памяти LOADB mem — Загрузить (load) регистр B из некоторого адреса памяти CONB con — Загрузить постоянное значение (constant value) в регистр B SAVEB mem — Сохранить (save) значение регистра B в памяти по определенному адресу SAVEC mem — Сохранить (save) значение регистра C в памяти по определенному адресу ADD — Сложить (add) значения регистров A и B. Результат действия сохранить в регистре C SUB — Вычесть (subtract) значение регистра B из значения регистра A. Результат действия сохранить в регистре C MUL — Перемножить (multiply) значения регистров A и B. Результат действия сохранить в регистре C DIV — Разделить (divide) значение регистра A на значение регистра B. Результат действия сохранить в регистре C COM — Сравнить (compare) значения регистров A и B. Результат передать в тестовый регистр JUMP addr — Перепрыгнуть (jump) к указанному адресу JEQ addr — Если выполняется условие равенства значений 2 регистров, перепрыгнуть (jump) к указанному адресу JNEQ addr — Если условие равенства значений 2 регистров не выполняется, перепрыгнуть (jump) к указанному адресу JG addr — Если значение больше, перепрыгнуть (jump) к указанному адресу JGE addr — Если значение больше или равно, перепрыгнуть (jump) к указанному адресу JL addr — Если значение меньше, перепрыгнуть (jump) к указанному адресу JLE addr — Если значение меньше или равно, перепрыгнуть (jump) к указанному адресу STOP — Остановить (stop) выполнение

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

Работа микропроцессора на примере вычисления факториала

Рассмотрим работу микропроцессора на конкретном примере выполнения им простой программы, которая вычисляет факториал от числа «5». Сначала решим эту задачку «в тетради»:

факториал от 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120

На языке программирования C этот фрагмент кода, выполняющего данное вычисление, будет выглядеть следующим образом:

a=1;f=1;while (a < = 5){ f = f * a; a = a + 1;}

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

Компилятор C транслирует (то есть переводит) этот код в набор инструкций языка ассемблера. В рассматриваемом нами процессоре оперативная память начинается с адреса 128, а постоянная память (которая содержит язык ассемблера) начинается с адреса 0. Следовательно, на языке данного процессора эта программа будет выглядеть так:

// Предположим, что a по адресу 128// Предположим, что F по адресу 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

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

// Предположим, что a по адресу 128// Предположим, что F по адресу 129Addr машинная команда/значение0 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 байта.

Декодирование

Разговор о декодировании придется начать c рассмотрения филологических вопросов. Увы, далеко не все компьютерные термины имеют однозначные соответствия в русском языке. Перевод терминологии зачастую шел стихийно, а поэтому 1 и тот же английский термин может переводиться на русский несколькими вариантами. Так и случилось с важнейшей составляющей микропроцессорной логики «instruction decoder». Компьютерные специалисты называют его и дешифратором команд и декодером инструкций. Ни одно из этих вариантов названия невозможно назвать ни более, ни менее «правильным», чем другое.

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

Рассмотрим работу дешифратора команд на примере инструкции ADD, выполняющей действие сложения:

В течение первого цикла тактовой частоты процессора происходит загрузка команды. На этом этапе дешифратору команд необходимо: активировать буфер сортировки для счетчика команд; активировать канал чтения (RD); активировать защелку буфера сортировки на пропуск входных данных в регистр команд В течение 2 цикла тактовой частоты процессора команда ADD декодируется. На этом этапе арифметико-логическое устройство выполняет сложение и передает значение в регистр C В течение третьего цикла тактовой частоты процессора счетчик команд увеличивает свое значение на единицу (теоретически, это действие пересекается с происходившим во время 2 цикла)

Каждая команда может быть представлена в виде набора последовательно выполняемых операций, которые в определенном порядке манипулируют компонентами микропроцессора. То есть программные инструкции ведут ко вполне физическим изменениям: например, изменению положения защелки. Некоторые инструкции могут потребовать на свое выполнение 2 или 3 тактовых циклов процессора. Другим может потребоваться даже 5 или 6 циклов.

Микропроцессоры: производительность и тенденции

Количество транзисторов в процессоре является важным фактором, влияющим на его производительность. Как было показано ранее, в процессоре 8088 на выполнение одной инструкции требовалось 15 циклов тактовой частоты. А чтобы выполнить 1 16-битную операцию, уходило и вовсе порядка 80 циклов. Так был устроен умножитель АЛУ этого процессора. Чем больше транзисторов и чем мощнее умножитель АЛУ, тем больше всего успевает сделать процессор за 1 свой такт.

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

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

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

Хотя массовое распространение 64-битные процессоры получили лишь несколько лет назад, они существуют уже сравнительно давно: с 1992 года. И Intel, и AMD предлагают в настоящее время такие процессоры. 64-битным можно считать такой процессор, который обладает 64-битным арифметико-логическим устройством (АЛУ), 64-битными регистрами и 64-битными шинами.

Основная причина, по которой процессорам нужна 64-битность, состоит в том, что данная архитектура расширяет адресное пространство. 32-битные процессоры могут получать доступ только к 2 или 4 гигабайтам оперативной памяти. Когда-то эти цифры казались гигантскими, но миновали годы и сегодня такой памятью никого уже не удивишь. Несколько лет назад память обычного компьютера составляла 256 или 512 мегабайт. В те времена четырехгигабайтный лимит мешал только серверам и машинам, на которых работают большие базы данных.

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

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

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

По материалам computer.howstuffworks.com

24hitech.ru

Как это работает: микропроцессор

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

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

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

Первым микропроцессором, ставшим впоследствии сердцем простого домашнего компьютера, был 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-разрядная архитектура. Может и я доберусь в ближайшее время до этой темы и поведаю вам, как же на самом деле это работает. На этом, пожалуй, всё на сегодня. Надеюсь, вам было интересно и вы узнали много нового.

trashbox.ru


Смотрите также