Файл: Процессор персонального компьютера. Назначение, функции, классификация процессора. (ПРИНЦИП РАБОТЫ ПРОЦЕССОРА).pdf
Добавлен: 28.03.2023
Просмотров: 151
Скачиваний: 2
Усовершенствование архитектуры Intel 8086 также связано с внедрением в структуру микропроцессора специального сумматора для вычисления адресов памяти [9].
Как отмечалось выше, разрядность адресов микропроцессора составляет 20. Однако для упрощения хранения и пересылки адресной информации процессор манипулирует 16-битными логическими адресами, которые включают начальные (базовые) адреса сегментов памяти и значения смещения в этих сегментах. Логические адреса используются для вычисления 20-битных физических (абсолютных) адресов с помощью следующей процедуры. Содержимое каждого сегментного регистра обрабатывается как 16 старших разрядов A19-A4 начального адреса соответствующего сегмента. Младшие биты A3-A0 этого адреса всегда считаются равными нулю и поэтому не хранятся в регистрах, а назначаются справа на старшие биты во время операции вычисления физического адреса [14]. Эта операция выполняется сумматором адресов, расположенным в блоке BSS, и состоит из сложения 20-битного начального адреса сегмента с 16-битным смещением, которое дополняется четырьмя старшими битами A19-A16, равными нулю, как показано на фиг. 1.3. Сумматор адресов выполняет, например, следующие вычисления: CS + IP - при выборе следующей команды, SS + SP - при обращении к стеку, DS + SI и ES + DI - при обработке строк, DS + EA-при обращении к оперативной памяти (EA-исполнительный адрес, формирование которого описано ниже) [9].
Поскольку наименьшие четыре цифры начального адреса любого сегмента должны быть равны нулю, значения начальных адресов сегментов выбираются как кратные 16. Максимальный объем памяти, выделенной для одного сегмента, определяется максимальным значением 16-битного смещения и составляет 64 КБ байт [22].
Таким образом, в простых системах с объемом памяти не более 64 КБ можно отказаться от сегментации памяти и установить все регистры сегментов в ноль. В этом случае 16-битный адрес смещения фактически будет абсолютным адресом. При использовании системы с большим объемом памяти (до 1м байт включительно) начальные адреса сегментов задаются исходя из особенностей структуры программного обеспечения и данных, хранящихся в памяти.
2 ФУНКЦИИ ЦЕНТРАЛЬНОГО ПРОЦЕССОРА
Процессор представляет собой кремниевую пластину с несколькими сотнями контактов, в которой размещается несколько миллионов транзисторов. Количество контактов определяется разъемом материнской платы. Транзисторы и контакты размещены в корпусе, на котором установлен радиатор с вентилятором (такая конструкция называется кулером, от англ. с Cooler-охладитель) [17].
Принцип работы процессора заключается в следующем. Данные, с которыми работает процессор, помещаются в его регистры (память процессора) или микрокоманды, в оперативную память ПК. Если информация хранится во внешних запоминающих устройствах, например на жестком диске, то она должна быть считана в оперативную память, с нее-в кэш процессора, и только потом в регистры процессора. Микрокоманды процессора вводят числа в свои регистры, обрабатывают их, а затем выводят результат, например, в оперативную память. Чтобы сложить целые числа 5 и 3, Процессор, помимо них, получает команду «сложить числа». На выходе получается результат-целое число 8 [12].
Архитектура современных ПК основана на магистрально-модульном принципе. Модульная архитектура предполагает магистральный (шинный) принцип обмена информацией между устройствами посредством следующих шин:
- данных;
- адреса;
- управления [11].
Физически шины представляют собой многопроволочные линии.
Шина данных. На этой шине данные, такие как блоки информации, считанные из ОЗУ, могут быть переданы процессору, а затем после обработки отправлены обратно в ОЗУ для временного хранения. Основной характеристикой шины данных является битовая скорость, которая определяется битовой скоростью процессора (количеством двоичных битов, обрабатываемых за такт). Чем выше битовая глубина, тем больше пропускная способность. Процессоры x486 имели 32-разрядные шины данных, Pentium 64 - разрядные и Pentium II dual 64 – разрядные [15].
Шина адреса. Известно, что каждое устройство ПК или ячейка ОЗУ имеет свой собственный адрес. Процессор выбирает устройства или ячейки памяти, в которые он записывает или считывает информацию по шине данных. Адрес передается по адресной шине только в одном направлении от процессора к оперативной памяти и устройствам.
Разрядность адресной шины определяет количество ячеек ОЗУ с уникальными адресами, которое может быть вычислено по формуле 2P, где p-разрядность адресной шины. Например, для 32-разрядной адресной шины число адресуемых ячеек памяти составляет 4 294 967 296 (232) [9].
Шина управления. Управляющая шина передает сигналы, определяющие характер обмена информацией. Управляющие сигналы определяют, какую операцию выполнять, синхронизируют обмен информацией между устройствами и т.д. [16].
Почти все время работы процессора связано с оперативной памятью, из которой извлекаются и вводятся данные (операнды), подлежащие обработке. Поэтому работа делится на несколько этапов, и их результаты сохраняются. Эти схемы используют собственную память процессора (регистры).
Все операции обработки данных в процессоре выполняются командами, представленными в определенном формате-комбинации размеров всех полей и их расположения в команде. Команда разделена на два направления:
- область кода операции (указывает, что нужно сделать вообще);
- адрес области (операнд, с помощью которого это должно быть сделано).
Адресная область состоит из трех полей: в первых двух хранятся адреса операндов, а в третьем-адрес результата действия над операндами [4].
В двухадресных командах область адреса состоит из двух полей: поля адреса первого и второго операндов, а адрес результата записывается в поле адреса первого операнда. В одноадресных командах адресная область состоит из одного поля, содержащего адрес операнда, и адрес второго операнда и результат такой же, как сумматор. Есть также безадресные команды.
Существует несколько типов адресации одного операнда:
- прямая адресация (вместо адреса операнда команда задает сам операнд (целое число));
- полный или абсолютный тип адресации (команда задает полный адрес ячейки, в которой находятся данные);
- косвенная адресация (в поле адреса операнда можно указать адрес регистра или ячейки памяти, где хранится тот же адрес, по которому можно найти ячейку с нужным операндом). Количество ссылок (или переходных шагов) называется глубиной косвенной адресации [3].
Для нескольких операндов или массивов обычно указываются адрес массива и номер (индекс) элемента. Начальный адрес указывается в команде, где также имеется поле с номером регистра, содержащее значение индекса или номер ячейки в массиве относительно начального адреса-модификация адреса. Существует также относительная адресация, когда регистр задает начальный адрес, в команде-адрес этого регистра и смещение относительно начального адреса. Все остальные адреса операндов будут получены суммированием адреса и смещения.
Первые регистры процессора могли хранить только 4-разрядные числа. Затем появились 8-и 16-битные процессоры, с появлением процессора X386 был реализован 32-битный режим, который позволял работать с числами размерности свыше двух миллиардов [8].
Это статическая память (Stati-RAM-SRAM), которая, в отличие от динамической памяти, не требует периодической регенерации (обновления). Время доступа к этой памяти составляет не более 2 НС., т. е. он может работать синхронно с процессором на частоте 500 МГц и более. Контроллер кэша находится в чипе Северного моста чипсета материнской платы [15].
В процессорах x386 кэш-память объемом 128 КБ располагалась на материнской плате. Начиная с процессоров x486, в процессоре появился дополнительный кэш, работающий на его частоте,-кэш первого уровня (LevelI-LI). На материнской плате установлен кэш второго уровня (L2). В большинстве современных процессоров кэш Li и L2 встроен в ядро процессора. И если в PentiumII и PentiumIII кэш второго уровня работает на половине частоты процессора, то у Celeron, AMDK6 - III, Athlon и PentiumIV-на частоте процессора, что положительно сказывается на производительности.
Первой такой выделенной технологией можно считать MultiMediaeXtension (MMX) - расширение базового набора команд процессора (57 команд для обработки графики и звука). Одна команда может обрабатывать много данных, что значительно повышает производительность (SIMD-SingleInstruction, ManyData-одна команда, много данных) [11].
При работе с командами MMX данные хранятся в регистрах сопроцессора, что означает невозможность выполнения операции с плавающей запятой при выполнении программы MMX. Кроме того, команды MMX предназначены только для работы с целыми числами.
От технологии SIMD пришли две конкурирующие системы для потоковой обработки данных.
Так, в процессорах AMDK6-2, помимо блока MMX-commands, был добавлен блок 3DNow!, отвечающий за обработку трехмерных изображений. Он включает в себя 27 новых команд для обработки чисел с плавающей запятой, и в отличие от MMX, 3DNow! Не поддерживает работу процессора [1].
Процессоры Pentium II представили универсальный мультимедийный ускоритель, работающий по принципу SIMD, но не зависящий от ядра. Это стало возможным благодаря новому блоку SSE (Streaming SIMD Extensions - stream SIMD extension). Он состоит из 70 команд, управляющих 8 специальными 128-битными регистрами. SSE позволяет выполнять одновременные операции с содержимым двух регистров [9].
До недавнего времени увеличение быстродействия процессоров было связано исключительно с увеличением их тактовой частоты и размера кэша. Но одновременное выполнение нескольких потоков также приводит к увеличению быстродействия процессора, причем более значительному. Именно в обработке нескольких потоков и заключается суть новой технологии Hyper - Threading.
Как известно, процессор оперирует набором из нескольких команд, которые необходимо выполнить. Для этого используется счетчик команд, который указывает места в памяти, где хранится следующая команда, подлежащая выполнению. После каждой команды значение этого регистра увеличивается, пока поток не завершится [9]. В конце выполнения потока в счетчик команд вводится адрес следующей выполняемой инструкции. Потоки могут прерывать друг друга, но процессор запоминает значение счетчика команд в стеке и загружает новое значение в счетчик. Хорошо известный способ решения этой проблемы заключается в использовании двух процессоров-если один процессор может выполнять один поток одновременно, то два процессора могут выполнять два потока одновременно. Возможность распределять выполнение нескольких потоков по ресурсам компьютера называется многопоточностью.
Нечто похожее на многопоточность предлагает новая технология от Intel под названием Hyper-Threading. Он появился в ответ на проблему неполного использования исполнительных блоков процессора. Hyper-Threading-это название технологии одновременной многопоточности (SimultaneousMulti-Threading-SMT). Один физический процессор по существу эмулирует ОС как два логических. В Гиперпоточном процессоре каждый логический процессор имеет свой собственный набор регистров (включая отдельный счетчик команд), и чтобы не усложнять технологию, он не реализует одновременное выполнение некоторых команд в двух потоках [6].
Когда команды извлекаются из кэша (или ОЗУ), они должны быть декодированы и отправлены на выполнение. Эти операции (получение команд, декодирование и отправка на выполнение) выполняются на препроцессоре. Из препроцессора они направляются в постпроцессор, где и выполняются. После этого результат возвращается в кэш (ОЗУ) [14].
Как вы можете видеть, весь процесс обработки команд состоит из четырех шагов, которые определяют так называемый 4-ступенчатый процесс (конвейер).
1. Извлечение из кэша (ОЗУ).
2. Декодирование (разборка команды).
3. Выполнение команд (применение действий).
4. Запись в кэше (ОЗУ).
Каждый из этих шагов команда должна пройти ровно один такт. Поэтому, чем быстрее каждый из этапов выполняет свои функции, тем быстрее работает весь процессор и тем выше его тактовая частота. Выполнение всех этих четырех команд определяет цикл. Большинство процессоров выполняют команды в одном цикле, но есть сложные команды, которые требуют нескольких циклов. При выполнении сложных команд различные устройства используют свои собственные конвейеры выполнения, тем самым добавляя еще несколько шагов к основному конвейеру процессора. Количество ступеней определяет глубину конвейера [3].
В отличие от классического варианта, когда весь конвейер состоит из четырех ступеней, в большинстве современных процессоров конвейер разделен на семь и более ступеней (гиперконвейерная обработка), что требует более высокой тактовой частоты.
Технология обработки гипертония предполагает удвоение длины конвейера по сравнению с предыдущей микроархитектурой P6. например, один из основных элементов трубопровода-блок прогнозирования и восстановления ветвей-разделен на 20 циклов [9].
В Pentium на этапе исполнения используется меньше функциональных блоков процессора. Но каждый из них имеет более длинный и более короткий трубопровод. Процессор Pentium может одновременно выполнять 126 команд на разных этапах. Кроме того, в Pentium IV кэш первого уровня секционирован, и его кэш команд фактически находится на препроцессоре. Он называется tracecache и влияет как на конвейер, так и на основной поток команд. Этот кэш содержит декодированные команды x86 (микрокоманды), что исключает задержку в расшифровке кодов команд. Процессорные исполнительные устройства получают непрерывный поток команд, и общее время восстановления значительно сокращается в случае неправильного предсказания ветвления [2].