Важнейший элемент любого компьютера – процессор. Данный элемент в большей степени определяет возможности вычислительной системы и, образно выражаясь, является ее сердцем. Вовсе не обязательно он представляет из себя одну микросхему. В больших вычислительных системах процессор (процессоры) могут занимать пространство, размером не с один шкаф. Например, процессор «Эльбрус», разработанный в Зеленограде и признанный на сегодняшний день совершенством (с точки зрения архитектуры, то есть внутреннего строения) – представляет собой систему довольно больших геометрических размеров. Мы же будем вести речь о микропроцессорах, то есть об устройствах, которые используются, в основном, в персональных компьютерах. Микропроцессор, как правило, представляет собой сверхбольшую интегральную схему, реализованную в одном полупроводниковом кристалле и способную выполнять функции центрального процессора. Степень интеграции определяется размером кристалла и количеством реализованных в нем транзисторов. Зачастую интегральные микросхемы называют чипами (chips).
К обязательным компонентам микропроцессора относятся арифметико – логическое (исполнительное) устройство и блок управления. Они характеризуются скоростью (тактовой частотой), разрядностью или длиной слова (внутренней и внешней), архитектурой и набором команд. Архитектура процессора определяет необходимые регистры, стеки систему адресации а также систему команд и типы обрабатываемых процессором данных. Обычно используются следующие типы данных: бит (один разряд), полубайт (4 бита), байт (8 бит), слово (16 бит), двойное слово (32 бита). Выполняемые процессором команды предусматривают, как правило, арифметические действия, логические операции, передачу управления (условную и безусловную) и перемещение данных (между регистрами, памятью и портами ввода-вывода).
Под конвейерным режимом понимают такой вид обработки, при которой интервал времени, необходимый для выполнения процесса в функциональном узле (например, в арифметико-логическом устройстве) микропроцессора, продолжительнее, чем интервалы, через которые данные могут вводиться в этот узел. Предполагается, что функциональный узел выполняет процесс в несколько этапов, то есть когда первый этап завершается, результаты передаются на второй этап, на котором используются другие аппаратные средства. Разумеется, что устройство, используемое на первом этапе, оказывается свободным для начала новой обработки данных. Как известно, можно выделить четыре конкретных этапа обработки команды микропроцессора: выборка, декодирование, выполнение и запись результата. Иными словами, в ряде случаев пока команда выполняется, вторая может декодироваться, а третья выбираться.
С внешними устройствами микропроцессор может общаться “благодаря” шинам адреса, данных и управления выведенными на специальные контакты корпуса микросхемы. Стоит отметить, что разрядность внутренних регистров микропроцессора может не совпадать с количеством внешних выводов для линий данных. Иначе говоря, микропроцессор с 32-разрядными регистрами может иметь только 16 внешних линий данных. Объем физически адресуемой процессором памяти однозначно определяется разрядностью внешней шины адреса как 2 в степени N, где N – количество адресных линий.
Рисунок 1 структурная схема вычислительного устройства
Таким образом, структурная схема устройства, выполняющего, например, операции сложения будет выглядеть, как показано на рисунке 1, и состоять из процессора, памяти, шин адреса, данных и управления. При этом возникает необходимость ввода информации и вывода результатов. Это достигается использованием внешних устройств для ввода - вывода информации (например, клавиатуры, монитора).
Прежде чем далее говорить о микропроцессорах, необходимо запомнить некоторые важные определения, которые пригодятся в дальнейшем:
Периферийным устройством называется любое внешнее устройство, совершающее по отношению к микропроцессору операции ввода-вывода.
Регистр - совокупность бистабильных устройств (то есть имеющих два устойчивых состояния), предназначенных для хранения информации и быстрого доступа к ней. В качестве таких устройств в интегральных схемах используют триггеры. Триггер в свою очередь выполнен на транзисторных переключателях (электронных ключах). В регистре из N триггеров можно запомнить слово из N бит информации.
Порт — это некая схема сопряжения, обычно включающая в себя один или несколько регистров ввода-вывода и позволяющая подключить, например, периферийное устройство к внешним шинам микропроцессора. Практически каждая микросхема использует для различных целей несколько портов ввода-вывода. Каждый порт в персональном компьютере имеет свой уникальный номер. Номер порта — это, по сути, адрес регистра ввода-вывода, причем адресные пространства основной памяти и портов ввода-вывода не пересекаются.
Прерывание - сигнал, по которому процессор узнает о совершении некоего асинхронного события. При этом исполнение текущей последовательности команд приостанавливается (прерывается), а вместо нее начинает выполняться другая последовательность, соответствующая данному прерыванию. Прерывания можно классифицировать как:
· аппаратные,
· логические,
· программные.
Аппаратные прерывания обычно связаны с запросами от периферийных устройств (например, нажатие клавиши на клавиатуре), логические возникают при работе самого микропроцессора (например, деление на ноль), а программные инициируются выполняемой программой и используются для вызова специальных подпрограмм. Кроме того, прерывания могут быть:
маскируемыми, то есть при определенных условиях (например, запрете на определенные прерывания) микропроцессор не обращает на них внимания;
немаскируемыми, то есть не игнорируемыми ни при каких условиях. В этом случае, как правило, должны обрабатываться почти катастрофические события (падение напряжения питания или ошибка памяти).
В режиме прямого доступа (DMA, Direct Memory Access) периферийное устройство связано с оперативной памятью непосредственно, минуя внутренние регистры микропроцессора. Наиболее эффективна такая передача данных в ситуациях, когда требуется высокая скорость обмена при передаче большого количества информации (например, при загрузке данных в память с внешнего накопителя).
Довольно часто для адресов, номеров портов, прерываний и т.п. используется шестнадцатеричная система счисления. В этом случае после соответствующего числа стоит буква "h" (hexadecimal).
1.3.1 Архитектура и команды микропроцессора.
Исторически сложилось так, что набор инструкций, "понимаемых" (т. е. выполняемых) процессорами очень велик. Всего существует более 100 различных типов инструкций, причем многие из них принимают модификаторы, по существу превращающие один тип инструкций в целое семейство типов. В общем, процессор готов исполнить несколько сотен приказов программиста. Некоторые из них чрезвычайно просты, другие изрядно сложны. (Но не сложнее даже очевидной фразы на практически любом умеренно сложном человеческом языке.)
Длина инструкций процессоров, например, х86 варьируется от одного - до десятка байтов. Короткими инструкциями кодируются простые действия. Сложные — длинными, причем некоторые могут достигать со всеми модификаторами до 20 байт длины.
Все эти характеристики типичны для так называемого CISC-компьютера (Complex Instruction Set Computer, CISC — компьютер со сложным набором инструкций). С каждым новым поколением процессоров х86 CISC-компьютеры становятся все сложнее. Забавно, но одновременно они все больше напоминают RISC-машины (Reduced Instruction Set Computer, RISC — компьютер с уменьшенным набором инструкций). RISC-машины характеризуются относительно скудным набором инструкций одинаковой длины.
В научных кругах уже много лет ведутся дискуссии о сравнительных достоинствах подходов CISC и RISC к проектированию. Проблема выбора уступила место идее объединения двух подходов.
По мнению адвокатов RISC, хотя такой тип машин и не может выполнить много действий, реализуя одну инструкцию, зато каждая инструкция быстрее декодируется в набор операций для логического устройства процессора в силу их единого размера. В среднем, для выполнения RISC-инструкции требуется меньше тактов, чем для выполнения средней CISC-инструкции. Более того, обычно RISC-машинам под силу исполнение сразу нескольких инструкций за такт а на CISC-машинах есть инструкции, для выполнения требующие более 100 тактов.
Ha эти выпады защитники CISC спокойно отвечают, что любимый ими подход имеет перед RISC два больших преимущества. Во-первых, заявляют они, программировать легче и естественнее под CISC-процессор, потому что он "знает" больше операций, элементарных с точки зрения программиста. А во-вторых, грамотно сделанный CISC-процессор может работать даже быстрее соответствующей RISC-машины, потому что сложные инструкции делают программы короче, а значит и быстрее. Банально, но истина опять где-то посередине. Всего 10 или 20 лет назад все высокопроизводительные рабочие станции, используемые инженерами, программистами, компьютерными художниками, были построены на базе RISC-процессора (или процессоров). Теперь же уровня RISC-станции можно достичь, купив CISC-персональный компьютер.
Просто создатели CISC-процессоров, наконец, позаимствовали некоторые идеи RISC-подхода. В некоторых случаях, примером чему AMD, процессор научился разбивать сложные инструкции х86, ,которые программист считает неделимыми, на множество меньших RISC-инструкций, и уже они выполняются логическим устройством процессора. По сути дела, имеет место эмуляция работы CISC-процессора RISC-процессором.