Как работают Микропроцессоры. Часть 3. Память микропроцессора, его производительность и инструкции.

clip_image0011

Расмотрим теперь непосредственно память микропроцессора.

Микросхема ROM.

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

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

Микросхема RAM.

ddr_ram

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

К сведению…, все компьютеры содержат постоянную память. Возможно создать простой компьютер, который не будет иметь RAM, т.к. много микроконтроллеров помещают свою горстку байтов для RAM непосредственно в микросхему процессора, а вот создать компьютер, который не содержит ROM невозможно. В персональных компьютерах ROM называют BIOS (Базовая система ввода-вывода). Когда микропроцессор запускается, он начинает выполнять инструкции, которые находятся непосредственно в BIOS. Инструкции BIOS запускают тестирование аппаратных средств в машине, после прохождения, которого переходит к жесткому диску для поиска загрузочной записи. Этот загрузочный сектор – скажем маленькая программа (набор инструкций) BIOS помещает в RAM и микропроцессор тогда начинает выполнять инструкции уже этого загрузочного сектора из RAM. Программа загрузочного сектора говорит микропроцессору, что еще необходимо считать с жесткого диска в RAM поочередно, согласно приоритетам. Таким образом микропроцессор загружает установленную операционную систему и переходит уже непосредственно к выполнению её команд.

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

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

Приведу небольшой (не полный) набор инструкций по ассемблеру, которые программист может использовать для микропроцессора в нашем примере:

  • LOADA mem – Загрузка значения регистра А из памяти;
  • LOADB mem - Загрузка значения регистра В из памяти;
  • CONB con – Загрузка константы в регистр В;
  • SAVEB mem - Сохранение значения регистра В в памяти;
  • SAVEC mem - Сохранение значения регистра С в памяти;
  • ADD – Суммировать А и В и сохранить в С;
  • SUB - Вычесть А и В и сохранить в С;
  • 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 – Остановить выполнение. И т.д.

Вот такими командами руководствуется микропроцессор в процессе работы, которые содержаться в ROM, регистре команд и декодере инструкций.

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

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

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

Тенденции

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

СТАТЬИ

МАНУАЛЫ

СХЕМЫ