Обеспечивает выполнение процессором последовательности команд программы какое устройство
Презентация на тему: " Процессоры Устройство центрального процессора Задачи процессора: вызов команд, определение их типа и выполнение. Основные компоненты: устройство управления," — Транскрипт:
1 Процессоры Устройство центрального процессора Задачи процессора: вызов команд, определение их типа и выполнение. Основные компоненты: устройство управления, регистры и АЛУ, соединенные внутренними шинами. Команды можно поделить на два типа: регистр – память и регистр – регистр.
3 Микропрограммированиепростые и сложные команды Чем же микропрограммирование отличается от простого программирования в терминах машинного кода? Возьмем простую команду ассемблера add. Выполнение любой команды подразумевает прохождение трех стадий – выборка, дешифровка и собственно выполнение. Команда add имеет различное число форматов, например: КомандаКодСред. время (такты) add ax, add eax, [ebx]03 ModRM7 add al, bl02 ModRM2 Второй из предложенных вариантов команды будет выполняться целых семь тактов. Это связано с тем, что второй операнд команды лежит в памяти. Для ее выполнения надо сначала передать порту работы с памятью адрес нужной ячейки. Затем дождаться считывания значения. После передать его в один из регистров. И только затем начать выполнение как обычно.
4 Таким образом под микропрограммированием мы будем подразумевать управление трактом данных. Каждая микроинструкция – это указание, что должен сделать тракт данных на его следующем цикле. Для чего это нужно? Вернемся к команде add.
5 Возьмем два ее варианта: add eax, ebx add bl, [ecx] Второй вариант можно отбросить, предложив пользователю использовать вместо него следующий набор команд: mov al, bl cbw cwde mov ebx, eax mov al, [ecx] cbw cwde add eax, ebx mov bl, al
6 Плюсы и минусы Оба подхода имеют право на жизнь! В первом случае мы получаем большой набор сложных команд, понятных пользователю и возможно быстрее выполняющихся, чем эквивалентный им набор команд во втором варианте. Но зато если взять простую команду, которая есть и в первом наборе и во втором, то мы получим уже плюсы второй схемы. Ведь из-за большого числа сложных команд, стадия дешифровки и выборки команд первой схемы значительно усложнилось. Как следствие – при второй схеме простая команда выполняется быстрее.
7 RISC и CISC В 70-е годы оба этих подхода получили воплощение в жизнь. Архитектура с минимальным набором простейших команд получила название RISC (Reduced Instruction Set Computer), а архитектура с большим набором сложных интерпретируемых команд – CISC (Complex Instruction Set Computer). Наиболее известные представители: RISC – Alpha, VAX, Sparc CISC – линейка x86 Хотя надо сделать маленькое отступление и сказать, что начиная с 486-го, процессоры фирмы Intel содержать ядро RISC, которое быстро выполняет простые команды, а сложные выполняются как обычно долго.
8 Особенности RISC и CISC RISC: 1.Отделение команд обработки от команд работы с памятью 2.Каждая команда выполняется небольшое кол-во времени (предпочтительно один такт) 3.Большое число регистров (32 или более) 4.Трехадресный формат команд 5.Маленькое число форматов команд и способов адресации
9 Особенности RISC и CISC CISC: 1.Маленькое число регистров (8 – 16) 2.Большое кол-во команд, в том числе сложных, выполняющихся за большое число тактов 3.Двухадресный формат команд 4.Большое число способов адресации и форматов команд 5.Наличие команд обработки типа регистр- память
10 Основные принципы разработки современных компьютеров 1.Все команды непосредственно выполняются аппаратным обеспечением (исключение составляют особо сложные команды, которые разбиваются на несколько частей и как следствие снижают скорость) 2.Компьютер одновременно начинает выполнение большого числа команд – параллелизм (некоторые команды даже могут выполняться не в том порядке, в котором они расположены) 3.Команды должны легко декодироваться 4.К памяти должны обращаться только команды загрузки и сохранения 5.Должно быть большое количество регистров
11 Параллелизм Параллелизм на уровне команд Параллелизм на уровне команд осуществляется за счет выполнения сразу нескольких команд (или их частей) на одном процессоре одновременно
12 Конвейеры Основная проблема высокой скорости выполнения команд – их вызов из памяти! Архитектура с буфером выборки с упреждением В систему добавляют специальный набор регистров – буфер упреждения, в который команды вызывались из памяти заранее, до того как они будут нужны. Когда какая-либо команда становилась нужной, то она вызывалась не непосредственно из памяти, а из буфера. Основная идея – разделение команды на два этапа: выборка и выполнение.
13 Конвейеры Эта стратегия была более развита в конвейерной архитектуре. Теперь команды подразделяются не на два а на более этапов, каждая из которых выполняются определенной частью аппаратного обеспечения. Причем все эти части могут работать параллельно.
14 Блок выборки команд Блок выборки операндов Блок декодирования Блок выполнения команд Блок возврата С1С2С3С4С5 С1П1П2П3П4П5П6П7П8П9 С2П1П2П3П4П5П6П7П8 С3П1П2П3П4П5П6П7 С4П1П2П3П4П5П6 С5П1П2П3П4П
15 Каков выигрыш? Пусть каждая стадия занимает dt нс, а конвейер содержит k стадий. Тогда время выполнения на простом компьютере будет: T 1 = dt * k * n, где n – кол-во команд. На компьютере с конвейером мы получим другую формулу: T 2 = dt * n + l, где l – время загрузки конвейера. При постоянной работе процессора n. Тогда перейдя к пределу мы получаем прирост производительности равный k. Но это идеальная модель!
16 Проблемы 1. Почти никогда не бывает, чтобы время выполнения каждой ступени конвейера было одинаковым. Зато частота синхронизации конвейера – единица постоянная. Отсюда следствие время выполнения любой из ступеней конвейера становится равным времени выполнения самой длительной из них. Таким образом, конвейер не только не увеличивает время выполнения одной инструкции, а даже уменьшает его. Кроме того, так как каждая ступень конвейера является отдельной аппаратной единицей, то возникает необходимость хранить промежуточный результат. Для этого используют так называемые регистровые станции, что, в свою очередь, замедляет выполнение одной инструкции на 5 – 10%. Вывод: конвейер хорош только при его постоянной загруженности!
17 Проблемы 2. Конфликты 1.Структурные конфликты – невозможно выполнение команд из- за неразделяемости ресурсов. Например: оперативная память предоставляет только один порт ввода-вывода. Но на стадиях С1 и C3 требуется обращение к ОП. Возникает конфликт. Одной из команд придется выждать один цикл синхронизации. 2.Конфликты по данным – результат работы одной команды нужен для работы другой. 3.Конфликты управления.
18 Суперскалярные системы Основная идея суперскалярных систем – это увеличение числа конвейеров. Например: у 486 процессора был один конвейер, а у Pentium – их уже два. С2С3С4С5 С1 С2С3С4С5
Одним из важнейших устройств компьютера является центральный процессор (CPU — англ, central processing unit, что переводится как «центральное вычислительное устройство»). Именно от типа процессора и его характеристик в первую очередь зависит производительность компьютерной системы в целом.
Центральный процессор — это устройство компьютера, предназначенное для выполнения арифметических и логических операций над данными, а также координации работы всех устройств компьютера.
Современные центральные процессоры для персональных компьютеров выполняются в виде отдельных микросхем и называются микропроцессорами. В дальнейшем будем считать понятия «микропроцессор» и «процессор» равнозначными.
Схема состава микропроцессора показана на рисунке 1.
Основным элементом микропроцессора является ядро, от которого зависит большинство характеристик самого процессора. Ядро представляет собой часть микропроцессора, содержащую его основные функциональные блоки и осуществляющую выполнение одного потока команд.
Современные процессоры могут иметь более одного ядра, т.е. могут быть многоядерными. Многоядерные процессоры способны выполнять одновременно несколько потоков команд. Основная причина перехода к многоядерным процессорам была вызвана тем, что повышение производительности микропроцессоров путем дальнейшего наращивания тактовой частоты достигло физического предела в связи с очень высоким уровнем тепловыделения и энергопотребления. Производительность многоядерного процессора увеличивается за счет распараллеливания обработки данных между несколькими ядрами. Визуальное представление процессора показано на рисунке 2.
Ядро процессора помещается в корпус (пластмассовый или керамический) и соединяется проводками с металлическими ножками (выводами), с помощью которых процессор присоединяется к системной плате компьютера. Количество выводов и их расположение определяют тип процессорного интерфейса (разъема). Каждая системная плата ориентирована на один определенный тип разъема
Арифметико-логическое устройство (АЛУ) выполняет все математические и логические операции.
Управляющее устройство (УУ) обеспечивает выполнение процессором последовательности команд программы.
Набор регистров — ячейки памяти внутри процессора, используемые для размещения команд программы и обрабатываемых данных.
Кэш-память (кэш) — сверхбыстрая память, хранящая содержимое наиболее часто используемых ячеек оперативной памяти, а также части программы, к которым процессор обратится с наибольшей долей вероятности. Процессор в первую очередь пытается найти нужные данные именно в кэш-памяти, а если их там не оказывается, обращается к более медленной оперативной памяти. Кэш-память делится на два или три уровня, которые обозначаются LI, L2 и L3 (чаще всего уровней два).
Сопроцессор — элемент процессора, выполняющий действия над числами с плавающей запятой.
Характеристики микропроцессора Тактовая частота. Для каждой выполняемой процессором команды требуется строго определенное количество единиц времени (тактов). Тактовые импульсы формируются генератором тактовой частоты, установленным на системной плате. Чем чаще они генерируются, тем больше команд процессор выполняет за единицу времени, т. е. тем выше его быстродействие. Тактовая частота обычно выражается в мегагерцах. 1 МГц равен 1 миллиону тактов в секунду. Первые модели процессоров Intel ( i 8008 x ) работали с тактовыми частотами, меньшими 5 МГц. Сегодня тактовая частота последних процессоров превышает 3 ГГц (1 ГГц = 1000 МГц). Внутренняя архитектура процессора, как и тактовая частота, также влияет на работу процессора, поэтому два CPU с одинаковой тактовой частотой не обязательно будут тратить одинаковое время на выполнение одной команды. Если, например, микропроцессору Intel 80286 требовалось 20 тактов, чтобы выполнить команду умножения двух чисел, то Intel 80486 или старше мог выполнить это же действие за один такт. Некоторые процессоры способны выполнять более одной команды за 1 такт. Их называют суперскалярными. Различают внутреннюю и внешнюю тактовую частоту. Внешняя тактовая частота — это частота, с которой процессор обменивается данными с оперативной памятью компьютера. Как уже было сказано выше, она формируется генератором тактовых импульсов (кварцевым резонатором).
Внутренняя тактовая частота — это частота, с которой происходит работа внутри процессора. Именно это значение указывается в прайс-листах фирм, продающих процессоры.
2.1. Процессор.
Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):
Рис. 4. Упрощённая структура процессора
Основные элементы процессора:
· Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.
· Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.
· Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).
· Тактовый генератор , или генератор тактовых импульсов, задаёт рабочую частоту процессора.
2.2. Режимы работы процессора.
Процессор архитектуры x86 может работать в одном из пяти режимов и переключаться между ними очень быстро:
1. Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним программным обеспечением (DOS-программами).
2. Защищенный режим (protected mode) — режим, который впервые был реализован в 80286 процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.
3. Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования программ реального режима, причем дает возможность одновременной работы нескольких таких программ, что в реальном режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной машины, эмулирующей процессор8086. Виртуальная машина формируется программными средствами операционной системы. В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы от работающих DOS-приложений.
4. Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.
5. Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.
При загрузке компьютера процессор всегда находится в реальном режиме, в этом режиме работали первые операционные системы, например MS-DOS, однако современные операционные системы, такие как Windows и Linux переводят процессор в защищенный режим. Вам, наверное, интересно, что защищает процессор в защищенном режиме? В защищенном режиме процессор защищает выполняемые программы в памяти от взаимного влияния (умышленно или по ошибке) друг на друга, что легко может произойти в реальном режиме. Поэтому защищенный режим и назвали защищенным.
2.3. Регистры процессора (программная модель процессора).
Для понимания работы команд ассемблера необходимо четко представлять, как выполняется адресация данных, какие регистры процессора и как могут использоваться при выполнении инструкций. Рассмотрим базовую программную модель процессоров Intel 80386, в которую входят:
· 8 регистров общего назначения, служащих для хранения данных и указателей;
· регистры сегментов — они хранят 6 селекторов сегментов;
· регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;
· регистр-указатель EIP выполняемой следующей инструкции процессора;
· система команд (инструкций) процессора;
· режимы адресации данных в командах процессора.
Начнем с описания базовых регистров процессора Intel 80386.
Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.
Рис. 5. Базовые регистры процессора Intel 80386
Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.
2.4. Регистры общего назначения.
Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.
2.5. Сегментные регистры.
При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров - CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.
В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.
2.6. Регистр флагов.
Еще один важный регистр, использующийся при выполнении большинства команд, - регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):
Рис. 6. Регистр флагов FLAGS.
CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг CF = 1.
PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.
AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.
ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.
SF – флаг знака. Он всегда равен старшему биту результата.
TF – флаг ловушки. Он был предусмотрен для работы отладчиков, не использующих защищенный режим. Установка его в 1 приводит к тому, что после выполнения каждой программной команды управление временно передается отладчику.
IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.
DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF =0 – наоборот.
OF – флаг переполнения. Он устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице, то есть отрицательное, и наоборот.
Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.
2.7. Цикл выполнения команды
Программа состоит из машинных команд. Программа загружается в оперативную память компьютера. Затем программа начинает выполняться, то есть процессор выполняет машинные команды в той последовательности, в какой они записаны в программе.
Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).
Счётчик команд работает со сверхоперативной памятью, которая находится внутри процессора. Эта память носит название очередь команд, куда помещается одна или несколько команд непосредственно перед их выполнением. То есть в счётчике команд хранится адрес команды в очереди команд, а не адрес оперативной памяти.
Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.
- Выборка команды . Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
- Декодирование команды . Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
- Выборка операндов . Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
- Выполнение команды . АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
- Запись результата в память . Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.
Суммируем полученные знания и составим цикл выполнения команды:
- Выбрать из очереди команд команду, на которую указывает счётчик команд.
- Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
- Декодировать команду.
- Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
- Выполнить команду и установить флаги.
- Записать результат в память (по необходимости).
- Начать выполнение следующей команды с п.1.
Это упрощённый цикл выполнения команды. К тому же действия могут отличаться в зависимости от процессора. Однако это даёт общее представление о том, как процессор выполняет одну машинную команду, а значит и программу в целом.
Процессор — это устройство, предназначенное для автоматического считывания команд программы, их расшифровки и выполнения.
Название «процессор» происходит от английского глагола to process — обрабатывать. Процессор, изготовленный в виде микросхемы — электронной схемы на одном кристалле кремния, — называется микропроцессором (рис. 2.1).
Рис. 2.1
В любой процессор обязательно включены две важные части:
• арифметико-логическое устройство (АЛУ), в котором выполняется обработка данных;
• устройство управления (УУ), которое выполняет программу в автоматическом режиме (без участия человека) и обеспечивает согласованную работу всех узлов компьютера.
Программа — это последовательность команд процессора.
Примеры простейших команд — сложение или деление чисел, копирование данных из одного места памяти в другое. Процессор также может сравнить два числа, определить, какое из них больше (меньше), и даже перейти по результатам этого сравнения к разным частям программы.
Выполнение каждой команды состоит из элементарных действий, которые называются микрокомандами. Простые команды состоят из нескольких микрокоманд, более сложные (например, умножение) могут включать несколько десятков микрокоманд. Разбиение команд на микрокоманды в различных процессорах может быть сделано по-разному.
Каждая из микрокоманд запускается с помощью управляющего импульса от источника (генератора) импульсов. Интервал между двумя соседними импульсами называется тактом (рис. 2.2). Очевидно, что чем чаще поступают импульсы, тем быстрее будет выполняться программа. Поэтому скорость поступления тактовых импульсов может быть характеристикой быстродействия процессора.
Рис. 2.2
Тактовая частота — это количество тактовых импульсов в секунду.
Обычно процессор выполняет за один такт одну простую команду (например, сложение двух чисел). Тогда при тактовой частоте 4 ГГц (4 гигагерца, т. е. 4 миллиарда импульсов в секунду) за одну секунду выполняется около 4 миллиардов таких операций.
Другая характеристика быстродействия процессора — его разрядность. Как вы знаете, все данные хранятся в компьютере в виде цепочек нулей и единиц. Каждый элемент памяти, куда можно записать 0 или 1, называется битом, потому что хранит 1 бит информации.
Разрядность — это максимальное количество битов, которые процессор способен обработать за одну команду.
Современные компьютеры за одну команду могут обработать 64 бита данных.
Как вы думаете, почему увеличение разрядности процессора может привести к ускорению обработки данных? В каких задачах оно может оказаться бесполезным?
Следующая страница Память
Cкачать материалы урока
Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.
Компьютер тоже можно назвать машиной, только вместо паровой силы здесь электричество. Но программирование сделало компьютер таким же простым, как любой инструмент.
Процессор — это сердце/мозг любого компьютера. Его основное назначение — арифметические и логические операции, и прежде чем погрузиться в дебри процессора, нужно разобраться в его основных компонентах и принципах их работы.
Два основных компонента процессора
Устройство управления
Устройство управления (УУ) помогает процессору контролировать и выполнять инструкции. УУ сообщает компонентам, что именно нужно делать. В соответствии с инструкциями он координирует работу с другими частями компьютера, включая второй основной компонент — арифметико-логическое устройство (АЛУ). Все инструкции вначале поступают именно на устройство управления.
Существует два типа реализации УУ:
- УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением — устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
- УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.
УУ на жёсткой логике быстрее, но УУ с микропрограммным управлением обладает более гибкой функциональностью.
Арифметико-логическое устройство
Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.
Большинство логических элементов имеют два входа и один выход.
Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S — выходом, C — переносом (в старший разряд).
Схема арифметического полусумматора
Хранение информации — регистры и память
Как говорилось ранее, процессор выполняет поступающие на него команды. Команды в большинстве случаев работают с данными, которые могут быть промежуточными, входными или выходными. Все эти данные вместе с инструкциями сохраняются в регистрах и памяти.
Регистры
Регистр — минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.
Прим. перев. Триггеры могут быть синхронные и асинхронные. Асинхронные могут менять своё состояние в любой момент, а синхронные только во время положительного/отрицательного перепада на входе синхронизации.
По функциональному назначению триггеры делятся на несколько групп:
- RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set — Сброс/Установка).
- JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
- T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
- D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.
Для хранения промежуточных данных ОЗУ не подходит, т. к. это замедлит работу процессора. Промежуточные данные отсылаются в регистры по шине. В них могут храниться команды, выходные данные и даже адреса ячеек памяти.
Принцип действия RS-триггера
Память (ОЗУ)
ОЗУ (оперативное запоминающее устройство, англ. RAM) — это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.
Прим. перев. Оперативная память бывает статической и динамической — SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической — конденсаторы. SRAM быстрее, а DRAM дешевле.
Команды (инструкции)
Команды — это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:
- Арифметические: сложение, вычитание, умножение и т. д.
- Логические: И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
- Информационные: move , input , outptut , load и store .
- Команды перехода: goto , if . goto , call и return .
- Команда останова: halt .
Прим. перев. На самом деле все арифметические операции в АЛУ могут быть созданы на основе всего двух: сложение и сдвиг. Однако чем больше базовых операций поддерживает АЛУ, тем оно быстрее.
Инструкции предоставляются компьютеру на языке ассемблера или генерируются компилятором высокоуровневых языков.
В процессоре инструкции реализуются на аппаратном уровне. За один такт одноядерный процессор может выполнить одну элементарную (базовую) инструкцию.
Группу инструкций принято называть набором команд (англ. instruction set).
Тактирование процессора
Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота — количество тактов (соответственно и исполняемых команд) за секунду.
Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц — миллиард операций в секунду.
Чтобы уменьшить время выполнения программы, нужно либо оптимизировать (уменьшить) её, либо увеличить тактовую частоту. У части процессоров есть возможность увеличить частоту (разогнать процессор), однако такие действия физически влияют на процессор и нередко вызывают перегрев и выход из строя.
Выполнение инструкций
Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.
Ниже рассмотрен пример набора команд, который суммирует два числа:
- LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, . Первые 4 бита — код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A — поместить данные 1000 (последние 4 бита команды) в регистр A .
- LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 ( 0010 ) в регистр B .
- ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A ). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
- STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .
Вот такие операции нужны, чтобы сложить два числа.
Все данные между процессором, регистрами, памятью и I/O-устройствами (устройствами ввода-вывода) передаются по шинам. Чтобы загрузить в память только что обработанные данные, процессор помещает адрес в шину адреса и данные в шину данных. Потом нужно дать разрешение на запись на шине управления.
У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.
Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).
Поток инструкций
Современные процессоры могут параллельно обрабатывать несколько команд. Пока одна инструкция находится в стадии декодирования, процессор может успеть получить другую инструкцию.
Однако такое решение подходит только для тех инструкций, которые не зависят друг от друга.
Если процессор многоядерный, это означает, что фактически в нём находятся несколько отдельных процессоров с некоторыми общими ресурсами, например кэшем.
Читайте также: