FAQ: Процессоры & Разгон — Форумы — обсуждение, помощь, проблема, не запускается, решение, ошибки

Инструкции процессоров Intel

Как известно, программирование на Ассемблере — это написание исходных текстов, которые представляют собой набор команд (инструкций) процессора. В этом разделе публикуются подробные описания инструкций процессоров Интел и совместимых.

Я уже не раз об этом говорил, но снова повторю — вдруг кто не слышал )))

А это важно:

Каждый процессор имеет свой набор команд (инструкций)!

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

Кроме того, команды с одинаковым именем могут по разному работать с разными процессорами.

Тем не менее, изучать то язык как-то надо. Поэтому обычно начинают с каких-то основ. Как правило, с изучения основных инструкций, которые очень похожи для большинства процессоров (и микроконтроллеров в том числе).

Набор базовых команд процессора

Именно с базовых инструкций лучше всего начать изучать Ассемблер. Такими базовыми командами (инструкциями) являются команды сложения, вычитания и других простых математических операций. А также команды перемещения значения из одного источника в другой (например, из области памяти в регистр).

Пример инструкций процессора Интел (8086): ADD (сложение), SUB (вычитание), MOV (перемещение) и т.п.

Базовым набором команд процессора Intel можно считать полный набор инструкций процессора 8086, у которого было 116 команд. У современных процессоров команд, конечно, намного больше (хотя это зависит от архитектуры — есть процессоры с сокращённым набором команд, где их всего несколько десятков).

Современные процессоры кроме основных команд имеют ещё и разные расширения, такие как набор команд MMX, которые предназначены для более быстрого выполнения определённых операций.

Вообще это тема очень объёмная и довольно сложная. Поэтому в очередной раз советую вам изучить (причём очень тщательно) какую-нибудь хорошую книгу по Ассемблеру (на этом сайте есть ссылки на такие книги).

antananarivo

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

Город Антананариву, столица Мадагаскара

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

Основные регистры. Микропроцессор использует 4 регистра сегмента, при этом каждый регистр имеет размер в одно слово.

1. регистр сегмента команд СS-код сегмента – указывает на сегмент указывающий текущую исполняемую программу. Работает в паре с регистром ip. Пара СS: ip указывает на следующую исполняемую команду.

2. DS – указывает на адрес начала сегмента

3. RS – регистр стека, SS- указывает на адрес сегмента начала стека.

4. регистры дополнительных сегментов ES, FS, GS.

5. Регистры общего назначения ax, bx, cx, dx, bp, si, di, sp.

 

Аббревиатура Регистр Перевод
A Accumulator Аккумулятор
B Base База
C Counter Счетчик
D Data Дата
BP Base Pointer Указатель базы
Si Source index Индекс источников
Di Destanaish index Индекс приемника
SP Stack Pointer Указатель стека

 

 

Регистры флагов.

Флаг – это бит принимающий значение единицы (флаг установлен, если выполнены некоторые условия, если 0 – флаг сброшен)

 

Флаги Разряды
OF(флаг переполнения) 11й
DF(флаг направления) От 10
IF(флаг прерываний)
TF(флаг трассировки)

 

УРОК 28


Дата добавления: 2014-01-06; Просмотров: 1774; Нарушение авторских прав?;




Читайте также:

Параллелизм и конвейеризация вычислений

1. Параллелизм и конвейеризация вычислений

Параллелизм и конвейеризация имеют одинаковые цели — повышение производительности вычислительных систем, оба подхода предполагают достижение этой цели за счет “размножения” аппаратных средств (избыточности аппаратуры вычислительных систем), однако организация вычислительного процесса в них достаточно различается, чтобы оправдать их сравнение. Приведенная таблица отражает наиболее существенные различия между этими подходами

Параллелизм можно определить как возможность одновременного выполнения разных и математических или служебных операций. Распараллеливание нахождение алгоритма решения задачи, использующего параллелизм и реализация этого алгоритма в ВС.

Параллельные ВС. это многопроцессорные ВС., в которых параллелизм используется для повышения производительности при решении задач за счет одновременного выполнения разных операций на разных процессорах или обрабатывающих устройствах одного процессора.

Проблемы распараллеливания:

Некоторые задачи очень хорошо распараллеливаются (например, многие задачи обработки матриц), некоторые — очень плохо.

Решение вопросов взаимодействия параллельных процессоров (например, обмен с памятью, межпроцессорный обмен, синхронизация и др.)

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

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

Конвейер — устройство, состоящее из N последовательно соединенных частей

(ступеней конвейера), каждая из которых выполняет очередной шаг вычислений за время t (такт конвейера).

Часто конвейерный режим используют в векторных ВС. Векторные ЭВМ и ВС выполняют не только скалярные операции (над числами), но и операции над векторами (массивами чисел), при этом векторные операции выполняются параллельно для всех элементов вектора, либо — на конвейере.

Выигрыш в производительности достигается за счет сокращения расходов на управление, а также за счет снижения универсальности устройства.

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

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

Параллельные программы строятся традиционными способами: выделением подзадач и ветвей программы, операций над векторами и матрицами и организацией конвейерной обработки данных. Наиболее просто реализуются вычисления с выделением подзадач н параллельных ветвей. При возникновении ветви в ведущей программе модуль посылает запрос на поиск свободного модуля, в который загружается программа и данные ветви, и ветвь выполняется как самостоятельная задача, по завершении которой в ведущий модуль отсылаются результаты обработки. Параллельные вычисления по конвейерной и матричной схемам организуются за счет создания соответствующих конфигураций связей между модулями – линейных (кольцевых) и матричных структур. Построение таких структур в многомодульных системах, в которых часть модулей занята выполнением ранее созданных задач, является пока нерешенной проблемой. Обычно для матричных вычислений в систему встраивает в качестве специального модуля матричный процессор, обеспечивающий высокопроизводительную обработку блоков данных.

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

Antananarivo Фото со стоков и изображения

Распределенное управление повышает надежность системы, поскольку каждый модуль способен реализовать управление ресурсами и процессами, и одновременно повышает производительность системы, так как управляющие решения формируются без затрат времени на сбор информации о состоянии всех элементов системы (а за это время ситуация в системе может существенно измениться).

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

Конвейер — устройство, состоящее из N последовательно соединенных частей (ступеней конвейера), каждая из которых выполняет очередной шаг вычислений за время t (такт конвейера). Таким образом, для решения задачи, требующей N шагов, потребуется время, равное t N, однако производительность конвейера может быть достаточно велика, поскольку освобождающиеся ступени могут заполняться новыми данными. В результате на каждом такте конвейер может выдавать очередной результат.

Билет №31

Полусумматор

Полусумматор — логическая схема, имеющая два входа и два выхода (двухразрядный сумматор, бинарный сумматор). Полусумматор используется для построения двоичных сумматоров.

Полусумматор позволяет вычислять сумму A+B, где A и B — это разряды двоичного числа, при этом результатом будут два бита S,C, где S — это бит суммы по модулю, а C — бит переноса.

Однако, как можно заметить, для построения схемы двоичного сумматора (трёхразрядный сумматор, тринарный сумматор) необходимо иметь элемент, который суммирует три бита A, B и C, где C — бит переноса из предыдущего разряда, таким элементом является полный двоичный сумматор, который как правило состоит из двух полусумматоров и логического элемента 2ИЛИ.

Двоичный полусумматор

Представляет собой объединение двух бинарных (двухоперандных) двоичных логических функций: сумма по модулю два — S и разряд переноса при двоичном сложении — C.

Троичный полусумматор

Троичный полусумматор представляет собой объединение двух троичных бинарных логических функций — «сложение по модулю 3» и «разряд переноса при троичном сложении». Так как существуют две троичных системы счисления — несимметричная, в которой в разряде переноса не бывает значения больше "1" и симметричная (Фибоначчи), в которой в разряде переноса возможны все три состояния трита, и, как минимум, три физических реализации троичных систем — трёхуровневая однопроводная, двухуровневая двухпроводная (BCT) и двухуровневая трёхбитная одноединичная, то и троичных полусумматоров может быть большое множество.

SISD и SIMD системы.

SISD (англ. Single Instruction, Single Data) или ОКОД (Одиночный поток Команд, Одиночный поток Данных) — архитектура компьютера, в которой один процессор выполняет один поток команд, оперируя одним потоком данных. Относится к фон-Неймановской архитектуре.

SISD компьютеры это обычные, «традиционные» последовательные компьютеры, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных (числовым или каким-либо другим значением). Большинство персональных ЭВМ до последнего времени, например, попадает именно в эту категорию. Иногда сюда относят и некоторые типы векторных компьютеров, это зависит от того, что понимать под потоком данных.

SIMD (англ. single instruction, multiple data — одиночный поток команд, множественный поток данных, ОКМД) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных.

 

SIMD-компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнению арифметических операций. В SIMD компьютере управление выполняется контроллером, а «арифметика» отдана процессорным элементам.

Билет №32

Четвертьсумматор.

Простейшим двоичным суммирующим элементом является четверть сумматор. Происхождение названия этого элемента следует из того, что он имеет в два раза меньше выходов и в два раза меньше строк в таблице истинности по сравнению с полным двоичным одноразрядным сумматором. Наиболее известны для данной схемы названия: элемент “сумма по модулю 2” и элемент “исключающее ИЛИ”. Имеет два входа а и b для двух слагаемых и один выход S для суммы.

MISD и MIMD системы.

MISD-Архитектура (англ. Multiple Instruction stream, Single Data stream, Множественный поток Команд, Одиночный поток Данных, МКОД) — тип архитектуры параллельных вычислений, где несколько функциональных модулей (два или более) выполняют различные операции над одними данными.

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

Было создано немного ЭВМ с MISD-архитектурой, поскольку MIMD и SIMD чаще всего являются более подходящими для общих методик параллельных данных. Они обеспечивают лучшее масштабирование и использование вычислительных ресурсов, чем архитектура MISD.

MIMD (англ. Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных, сокращённо МКМД) — концепция архитектуры компьютера, используемая для достижения параллелизма вычислений.

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

MIMD-архитектуры могут быть использованы в целом ряде областей, таких как системы автоматизированного проектирования / автоматизированное производство, моделирование, а также комуникатор связей (communication switches).

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

 

 

    1. Процедура выполнения команд. Конвейер команд

Процессор работает под управлением программы, состоящей из последовательности команд. При выполнении каждой команды процессор выполняет некоторую последовательность действий, называемую циклом выполнения команды. Каждый цикл состоит из нескольких фаз. Стандартные фазы работы ЦП включают в себя:

  • Выборка команды — передача содержимого счетчика команд в регистр адреса памяти, считывание команды из основной памяти в регистр команды, модификация содержимого счетчика команд для выборки следующей команды.

  • Выборка операндов — вычисление адреса и обращение в основную память или к регистру локальной памяти. Операнд считывается и принимается в регистр АЛУ.

  • Выполнение команды или арифметическая операция — инициализация (кодом операции) цикла работы устройства управления, которое, в свою очередь, управляет работой АЛУ, регистров и схем сопряжения.

  • Запись результатов — результат выполнения передается в локальную или основную память.

  • Обработку прерывания — сигналов от внутренних и внешних источников, требующих немедленной реакции ЭВМ.

  • Изменение состояния процессора и системы в целом, далее процессор переходит к выборке и выполнению следующей команды.

Эти фазы (за исключением прерывания) должны выполняться последовательно для каждой команды. Однако для нескольких команд можно совместить во времени различные фазы цикла. Для этого весь процессор разбивается на несколько частей — ступеней (уровней) конвейера. На каждой ступени выполняется определенная фаза выполнения команды. Такое совмещение стадий выполнения нескольких команд на различных ступенях конвейера приводит к тому, что выполнение следующей команды начинается в нём до окончания предыдущей. Это значительно увеличивает быстродействие процессора. Такую организацию процессора стали называть конвейером команд.

На рис.2 показаны временные диаграммы выполнения команды с разбиением на фазы а) последовательная обработка команд б) обработка команд в режиме совмещения — конвейер команд. Для простоты принято число фаз и ступеней конвейера равным 4. Моменты времени, помеченные t1, t2,… tN обозначают моменты окончания выполнения команд 1, 2, … N – соответственно. Как видно из рисунка 2, за меньшее время может быть выполнено большее число команд при конвейерной обработке, чем без неё.

Antananarivo

Значит средняя продолжительность выполнения команд в процессоре tСР (интервал, через который с конвейера «сходит» выполненная команда), гораздо меньше при конвейерной обработке, чем при последовательном выполнении команд. tСР при конвейерной обработке зависит не столько от длительности всех фаз команды, сколько от количества ступеней конвейера и временного шага конвейера.

Рис.2. Временные диаграммы обработки в процессоре N команд:

а) последовательное выполнение команд;

б) совмещенное выполнение команд (конвейеризация).

Совмещенные принципы обработки (конвейер) команд существенно увеличивают пропускную способность процессора, однако эффективность их использования зависит от управления (синхронизации) и числа уровней обработки – ступеней конвейера.

Приостановку работы конвейера вызывает любая команда условного перехода, поскольку заранее не известен адрес следующей команды. Он будет определен только по окончании команды передачи управления, и значит начать заранее выполнение следующей команды мы не можем (см. рис.3). t” — Момент, когда станет известен адрес следующей команды 2, и возможно обращение по этому адресу в ОП для выборки команды

Рис.3. Простой в работе процессора и в программе, вызванный командой передачи управления

Простои также возникают при взаимозависимости команд, т.е. использование следующей командой результатов предыдущей команды (см. рис.4). Следующая команда2 не может завершить выборку операндов и начать их обработку, т.к. предыдущая команда1 не записала результат, который и будет операндом для команды2.

Рис.4. Простой в работе программы, вызванный взаимозависимостью команд

Простои и неравномерность в работе конвейера могут быть также вызваны различной длительностью разных фаз команд. Команда2 может уже быть готова перейти к следующей ступени, но эта ступень может оказаться ещё занята предыдущей командой1. И наоборот, ступень конвейера свободна, но команда, которая должна туда перейти, ещё находится на предыдущей фазе своего выполнения. Поэтому CISC-процессоры со своими сложными многотактными командами имеют меньшую эффективность от применения конвейерной обработки, чемRISC-процессоры.

Следует учитывать, что совмещение обработки увеличивает объем оборудования и усложняет схемы управления тем сильнее, чем больше число уровней совмещения – ступеней. Все эти обстоятельства приходится учитывать при выборе числа уровней совмещения в каждом конкретном случае для получения заданных параметров и прежде всего удельных затрат (отношение производительности к стоимости). Опыт разработки ЭВМ общего назначения и проведенные исследования показывают, что технически и экономически целесообразной является совмещенная обработка 5-6 команд.

Добавить комментарий

Закрыть меню