Как работают микропроцессоры

Carder

Professional
Messages
2,616
Reaction score
2,025
Points
113
микропроцессор

Микропроцессоры лежат в основе всех компьютеров.
Компьютер, который вы используете для чтения этой страницы, использует для своей работы микропроцессор. Микропроцессор - это сердце любого обычного компьютера, будь то настольный компьютер, сервер или ноутбук. Микропроцессор, который вы используете, может быть Pentium, K6, PowerPC, Sparc или любой из многих других марок и типов микропроцессоров, но все они делают примерно одно и то же примерно одинаково.
Микропроцессор, также известный как ЦП или центральный процессор, представляет собой законченный вычислительный механизм, созданный на одном кристалле. Первым микропроцессором был Intel 4004, представленный в 1971 году. 4004 был не очень мощным - все, что он мог делать, это складывать и вычитать, и он мог делать только 4 бита за раз. Но удивительно, что все было на одной микросхеме. До 4004 инженеры строили компьютеры либо из наборов микросхем, либо из дискретных компонентов (транзисторы подключались по одному). 4004 работал на одном из первых портативных электронных калькуляторов.

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

Содержание
  1. Развитие микропроцессора: Intel
  2. Микропроцессорная логика
  3. Микропроцессорная память
  4. Инструкции микропроцессора
  5. Производительность микропроцессора и тенденции
  6. 64-битные микропроцессоры

Развитие микропроцессора: Intel​

microprocessor-8080-micro.jpg

Intel 8080 был первым микропроцессором в домашнем компьютере.

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

microprocessor-chart.jpg

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

СОСТАВЛЕНО ИЗ КРАТКОГО СПРАВОЧНОГО РУКОВОДСТВА ПО МИКРОПРОЦЕССОРАМ INTEL И РЕЗУЛЬТАТОВ ТЕСТОВ TSCP.
Дополнительная информация о таблице на этой странице:
  • Дата является годом , что процессор был впервые введен. Многие процессоры повторно представлены на более высоких тактовых частотах в течение многих лет после первоначальной даты выпуска.
  • Транзисторы - это количество транзисторов на микросхеме. Вы можете видеть, что количество транзисторов на одном кристалле с годами неуклонно растет.
  • Микроны - это ширина в микронах самого маленького провода на кристалле. Для сравнения, толщина человеческого волоса составляет 100 микрон. По мере уменьшения размера элемента на кристалле количество транзисторов увеличивается.
  • Тактовая частота - это максимальная частота, с которой может работать чип. Тактовая частота будет более понятна в следующем разделе.
  • Ширина данных - это ширина ALU. 8-битный ALU может складывать, вычитать, умножать и т. Д. два 8-битных числа, в то время как 32-битный ALU может управлять 32-битными числами. 8-битный ALU должен выполнить четыре инструкции для сложения двух 32-битных чисел, а 32-битный ALU может сделать это за одну инструкцию. Во многих случаях ширина внешней шины данных равна ширине ALU, но не всегда. У 8088 был 16-битный ALU и 8-битная шина, в то время как современные Pentium извлекают данные по 64 бита за один раз для своих 32-битных ALU.
  • MIPS означает «миллионы инструкций в секунду» и является приблизительной мерой производительности процессора. Современные процессоры могут делать так много разных вещей, что рейтинги MIPS теряют свое значение, но вы можете получить общее представление об относительной мощности процессоров из этой колонки.
Из этой таблицы вы можете видеть, что, как правило, существует взаимосвязь между тактовой частотой и MIPS. Максимальная тактовая частота зависит от производственного процесса и задержек внутри микросхемы. Также существует зависимость между количеством транзисторов и MIPS. Например, 8088 работал на частоте 5 МГц, но выполнялся только на скорости 0,33 MIPS (примерно одна инструкция за 15 тактов). Современные процессоры часто могут выполнять со скоростью две инструкции за такт. Это улучшение напрямую связано с количеством транзисторов на кристалле и будет более осмысленным в следующем разделе.

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

Микропроцессорная логика​

microprocessor-p4-alone.jpg

Процессор Intel Pentium 4.

Чтобы понять, как работает микропроцессор, полезно заглянуть внутрь и узнать о логике, использованной для его создания. В процессе вы также можете узнать о языке ассемблера - родном языке микропроцессора - и о многих вещах, которые инженеры могут сделать для повышения скорости процессора.
Микропроцессор выполняет набор машинных инструкций, которые говорят процессору, что делать. В соответствии с инструкциями микропроцессор выполняет три основных действия:
  • Используя свой ALU (арифметический / логический блок), микропроцессор может выполнять математические операции, такие как сложение, вычитание, умножение и деление. Современные микропроцессоры содержат законченные процессоры с плавающей запятой, которые могут выполнять чрезвычайно сложные операции с большими числами с плавающей запятой.
  • Микропроцессор может перемещать данные из одной ячейки памяти в другую.
  • Микропроцессор может принимать решения и переходить к новому набору инструкций на основе этих решений.
Микропроцессор может выполнять очень сложные задачи, но это три его основных действия. На следующей диаграмме показан чрезвычайно простой микропроцессор, способный выполнять эти три функции:
microprocessor1.gif


Это примерно так же просто, как и микропроцессор. Этот микропроцессор имеет:
  • Шина адреса (который может быть 8, 16 или 32 бит), который посылает адрес в память
  • Шины данных (это может быть 8, 16 или 32 бита), который может посылать данные в памяти или принимать данные из памяти
  • Строки RD (чтение) и WR (запись), чтобы сообщить памяти, хочет ли она установить или получить адресуемое местоположение
  • Линия синхронизации, которая позволяет тактового импульса последовательности процессора
  • Линии сброса, который сбрасывает счетчик программы на ноль (или любой другой ) и перезапускает выполнение
Предположим, что в этом примере ширина шины адреса и данных составляет 8 бит.
Вот компоненты этого простого микропроцессора:
  • Регистры A, B и C - это просто защелки, сделанные из триггеров. (Подробности см. В разделе «Защелки, запускаемые фронтом» в статье Как работает логическая логика.)
  • Защелка адреса аналогична регистрам A, B и C.
  • Программный счетчик представляет собой защелку с дополнительной возможностью увеличиваться на 1, когда требуется сделать это, а также сбрасываться на ноль, когда это требуется.
  • АЛУ может быть таким же простым, как 8-битный сумматор (подробности см. в теме о сумматорах в Как работает логическая логика), или он может складывать, вычитать, умножать и делить 8-битные значения. Предположим здесь второе.
  • Тестовый регистр представляет собой специальную защелку, которая может хранить значения из сравнений, выполняемых в ALU. ALU обычно может сравнивать два числа и определять, равны ли они, больше ли одно, чем другое, и т. Д. Тестовый регистр также обычно может содержать бит переноса из последней ступени сумматора. Он сохраняет эти значения в триггерах, а затем декодер команд может использовать эти значения для принятия решений.
  • На диаграмме есть шесть полей, помеченных как «3 состояния». Это буферы с тремя состояниями . Буфер с тремя состояниями может передавать 1, 0 или по существу отключать свой выход (представьте переключатель, который полностью отключает выходную линию от провода, к которому направляется выход). Буфер с тремя состояниями позволяет нескольким выходам подключаться к проводу, но только один из них фактически выводит на линию 1 или 0.
  • Регистр команд и декодер команд отвечают за управление всеми другими компонентами.
Хотя они не показаны на этой диаграмме, там будут управляющие линии от декодера команд, которые:
  • Сообщают регистру A зафиксировать текущее значение на шине данных
  • Сообщают регистру B зафиксировать текущее значение на шине данных
  • Сообщают регистру C зафиксировать значение, которое в настоящее время выводит ALU.
  • Сообщают регистру программного счетчика, чтобы он зафиксировал текущее значение на шине данных.
  • Указывают регистру адреса зафиксировать текущее значение на шине данных
  • Сообщают регистру команд, чтобы он зафиксировал текущее значение на шине данных.
  • Сообщают счетчику программы, что нужно увеличить
  • Сообщают счетчику программы обнулить
  • Активируют любой из шести буферов с тремя состояниями (шесть отдельных строк)
  • Сообщают ALU, какую операцию выполнить
  • Сообщают тестовому регистру, чтобы он зафиксировал тестовые биты ALU
  • Активируют строку RD
  • Активируют линию WR
В декодер команд поступают биты из тестового регистра и линии синхронизации, а также биты из регистра команд.

Микропроцессорная память​

microprocessor-rom.jpg

Микросхема ПЗУ.

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

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

microprocessor-ram.jpg

Чип RAM.

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

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

Даже невероятно простой микропроцессор, показанный в предыдущем примере, будет иметь довольно большой набор инструкций, которые он может выполнять. Набор инструкций реализован в виде битовых комбинаций, каждая из которых имеет различное значение при загрузке в регистр инструкций. Люди не особенно хорошо запоминают битовые шаблоны, поэтому для представления различных битовых шаблонов определяется набор коротких слов. Этот набор слов называется ассемблером процессора. Ассемблер может перевести слова в их битовых комбинации очень легко, а затем выход ассемблера помещается в памяти микропроцессора для выполнения.
Вот набор инструкций на языке ассемблера, которые разработчик может создать для простого микропроцессора в нашем примере:
  • LOADA mem - загрузить регистр A из адреса памяти
  • LOADB mem - загрузить регистр B из адреса памяти
  • CONB con - загрузить постоянное значение в регистр B
  • SAVEB mem - сохранить регистр B по адресу памяти
  • SAVEC mem - сохранить регистр C по адресу памяти
  • ДОБАВИТЬ - сложите 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 вычислит факториал 5 (где факториал 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):

a = 1; f = 1; в то время как (a <= 5) {f = f * a; а = а + 1;}

В конце выполнения программы переменная f содержит факториал 5.

Язык ассемблера​

C компилятор переводит этот C код на языке ассемблера. Предполагая, что ОЗУ начинается с адреса 128 в этом процессоре, а ПЗУ (которое содержит программу на языке ассемблера) начинается с адреса 0, тогда для нашего простого микропроцессора язык ассемблера может выглядеть так:

// Предположим, что a находится по адресу 128 // Предположим, что F находится по адресу 1290 CONB 1 // a = 1; 1 SAVEB 1282 CONB 1 // f = 1; 3 SAVEB 1294 LOADA 128 // если a> 5, переход к 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 // возврат к if17 STOP

ПЗУ​

Итак, теперь вопрос: «Как все эти инструкции выглядят в ПЗУ?» Каждая из этих инструкций на языке ассемблера должна быть представлена двоичным числом. Для простоты предположим, что каждой инструкции на языке ассемблера присвоен уникальный номер, например:
  • НАГРУЗКА - 1
  • НАГРУЗКА - 2
  • КОНБ - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ДОБАВИТЬ - 6
  • СУБ - 7
  • МУЛ - 8
  • DIV - 9
  • COM - 10
  • JUMP адрес - 11
  • Адрес JEQ - 12
  • Адрес JNEQ - 13
  • JG адрес - 14
  • Адрес JGE - 15
  • JL адрес - 16
  • Адрес JLE - 17
  • СТОП - 18
Цифры известны как коды операций. В ПЗУ наша маленькая программа будет выглядеть так:

// Предположим, что a находится по адресу 128 // Предположим, что F находится по адресу 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 430831 18 // СТОП

Вы можете видеть, что семь строк кода C превратились в 18 строк на ассемблере, а это стало 32 байта в ПЗУ.

Расшифровка​

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

Производительность микропроцессора и тенденции​

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

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

Тенденции​

Тенденция в дизайне процессоров в первую очередь была направлена на полные 32-битные ALU со встроенными быстрыми процессорами с плавающей запятой и конвейерное выполнение с несколькими потоками инструкций. Новейшая разработка процессоров - это 64-битные ALU, и ожидается, что в следующем десятилетии люди будут иметь эти процессоры в своих домашних ПК. Также существует тенденция к использованию специальных инструкций (таких как инструкции MMX), которые делают определенные операции особенно эффективными, и добавления аппаратной поддержки виртуальной памяти и кэширования L1 на микросхеме процессора. Все эти тенденции увеличивают количество транзисторов, что приводит к появлению многомиллионных мощностей транзисторов, доступных сегодня. Эти процессоры могут выполнять около миллиарда инструкций в секунду!

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

microprocessor-athlon-64.jpg


Шестидесятичетырехразрядные процессоры используются нами с 1992 года, а в 21 веке они стали широко использоваться. И Intel, и AMD представили 64-битные чипы, а Mac G5 оснащен 64-битным процессором. Шестидесятичетырехразрядные процессоры имеют 64-битные ALU, 64-битные регистры, 64-битные шины и так далее.
Одна из причин, по которой миру нужны 64-битные процессоры, заключается в их увеличенном адресном пространстве . Тридцать два-битные чипы часто ограничены до максимума 2 Гб или 4 Гб доступа RAM. Это звучит много, учитывая, что большинство домашних компьютеров в настоящее время используют от 256 МБ до 512 МБ ОЗУ. Однако ограничение в 4 ГБ может стать серьезной проблемой для серверных машин и компьютеров с большими базами данных. И даже домашние машины довольно скоро начнут преодолевать ограничение в 2 или 4 ГБ, если текущие тенденции сохранятся. У 64-битного чипа нет ни одного из этих ограничений, потому что адресное пространство 64-битной RAM практически бесконечно в обозримом будущем - 2 ^ 64 байта RAM - это что-то порядка миллиарда гигабайт RAM.

Благодаря 64-битной адресной шине и широким высокоскоростным шинам данных на материнской плате 64-битные машины также обеспечивают более высокую скорость ввода-вывода (ввода-вывода) для таких вещей, как жесткие диски и видеокарты. Эти функции могут значительно повысить производительность системы.
Серверы определенно могут извлечь выгоду из 64-битных систем, но как насчет обычных пользователей? Помимо решения RAM, не ясно, предлагает ли 64-битный чип «нормальным пользователям» какие-либо реальные, ощутимые преимущества в данный момент. Они могут быстрее обрабатывать данные (очень сложные данные содержат много действительных чисел). Люди, занимающиеся редактированием видео, и люди, редактирующие фотографии очень больших изображений, выигрывают от такой вычислительной мощности. Высококлассные игры также выиграют, если они будут перекодированы для использования 64-битных функций. Но средний пользователь, который читает электронную почту, просматривает Интернет и редактирует документы Word, на самом деле не использует процессор таким образом.
Для получения дополнительной информации о микропроцессорах и связанных темах просмотрите ссылки на следующей странице.
 
Last edited by a moderator:
Top