Buderus-trade.ru

Теплотехника Будерус
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчик команд (ск)

Счетчик команд (ск).

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

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

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

СК содержит столько адресов, сколько адресов памяти (8, 16, 32,…). Мы рассмотрим пример Блок-схемы микропроцессора с 16 разрядами. СК состоит из двух частей:

Регистра младших разрядов;

Регистра старших разрядов.

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

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

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

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

Вывод: Для организации выполнения программ регистр СК используется как устройствами микропроцессора, так и самой программой.

Регистр команд (рк).

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

В отличие от других регистров, РК только принимает данные, а посылать их на шину не может. Число разрядов РК зависит от состава команд микропроцессора (3 и более).

Регистр адреса (ра).

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

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

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

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

Большая Энциклопедия Нефти и Газа

Счетчик команд СчК предназначен для формирования адресов команд, размещенных в ячейках ОП с последовательными адресами. В каждом цикле к содержимому СчК прибавляется единица, поэтому адреса команд представляют собой обыкновенную последовательность чисел. Содержимое СчК передается в начале каждого цикла в кодовые шины адреса КША для выборки из ОП кода очередной команды. В СчК информация может заноситься также и непосредственно с пульта управления ПУ.  [19]

Счетчик команд содержит адрес ячейки памяти, в которой помещены байты выполняемой команды.  [21]

Счетчик команд СчК предназначается для формирования адресов команд, размещенных в ячейках оперативной памяти ОП с по-ледовательными адресами. В каждом цикле к содержимому счетчика команд прибавляется единица, поэтому адреса команд представляют собой обыкновенную последовательность чисел. Содержимое СчК передается в начале каждого цикла в кодовые шины адреса КША для выборки из ОП кода очередной команды. В СчК информация может заноситься также и непосредственно с пульта управления ПУ.  [22]

Счетчик команд представляет собой регистр, содержащий адрес ячейки памяти, в которой хранится подлежащая выполнению команда. МП) адресами, поэтому для перехода к следующей команде содержимое счетчика команд автоматически увеличивается на 1, 2, 4 единиц после выборки текущей команды. При необходимости изменения естественного порядка следования команд в счетчик заносится адрес команды, к которой необходимо произвести переход.  [23]

Читайте так же:
Программа счетчик калорий без интернета

Счетчик команд ( СК) — это один из наиболее важных регистров микропроцессора; служит для хранения адреса команды, которая будет выполняться после исполнения текущей. Обычно счетчик команд имеет больше разрядов, чем в машинном слове данных микропроцессора.  [24]

Счетчик команд используется устройством управления PDP-11 для записи адреса ячейки памяти, содержащей команду, которая должна быть выполнена. Иными словами, PC всегда содержит адрес очередной подлежащей выполнению команды. Таким образом, при любом обращении процессора к счетчику команд для получения адреса слова памяти PC всегда увеличивается на 2, так как — это будет видно дальше — адрес слова всегда четный. Если встречается команда, требующая передачи управления на другую часть программы, то PC устанавливается на соответствующий адрес перехода. Изначально PC должен быть установлен на значение стартового адреса программы. Впоследствии он управляется командами программы.  [25]

Счетчик команд имеет 11 разрядов. Его содержимое задает номер ячейки, из которой производится пересылка команды на регистр команд для исполнения.  [26]

Счетчик команд ( СК) обеспечивает пошаговое выполнение программы. Счетчик команд похож на регулировщика, который определяет последовательность выполнения событий. Теперь в нем содержится адрес первой команды.  [27]

Счетчик команд адресует ячейки памяти в последовательном возрастающем порядке.  [28]

Счетчик команд указывает, где в памяти расположены байты данной команды. Устройство управления увеличивает содержимое счетчика команд на единицу всякий раз, когда байт кода команды передается из памяти в ЦП. Если код команды состоит из 2 байт, то ее считывание происходит за два шага. Перед началом считывания счетчик команд уже содержит адрес байта текущей команды, так как содержимое его было увеличено на единицу; в конце процедуры считывания предыдущей команды первый байт сразу может передаваться в ЦП, после чего содержимое счетчика команд снова увеличивается на единицу.  [29]

Счетчик команд ( PC) — 16-разрядный регистр, где находится адрес следующей подлежащей выполнению команды.  [30]

Счетчик программ и регистр команд

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

И какова длина каждого из этих регистров?

2 ответа

  • MIPS Регистр Команд

Если битовый шаблон 0x0C000000 помещен в регистр команд, то какая команда MIPS будет выполнена? Я не уверен, что этот вопрос означает регистр команд и как он относится к битовому шаблону.

Я изучаю assembly 8086 и понимаю, что assembly программ часто используют регистры, как это возможно, что 2 assembly программ, работающих в одно и то же время, могут использовать один и тот же регистр, не прерывая друг друга. Я подумал, что, возможно, a PC может иметь наборы регистров, например 100.

Вам всегда понадобится и то, и другое. Счетчик программ (PC) содержит адрес следующей инструкции, которая должна быть выполнена, в то время как регистр команд (IR) содержит закодированную инструкцию. При извлечении инструкции счетчик программы увеличивается на единицу «address value» (до местоположения следующей инструкции). Затем инструкция декодируется и выполняется соответствующим образом.

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

[Начало выполнения программы]

  1. PC содержит 0x00000000 (скажем, это начальный адрес программы в памяти)
  2. Закодированная инструкция извлекается из памяти и помещается в PC.
  3. Инструкция декодируется и выполняется.
  4. Теперь пришло время перейти к следующей инструкции, поэтому мы возвращаемся к PC, чтобы посмотреть, каков адрес следующей инструкции. Однако у нас есть проблема, потому что предыдущий адрес PC был удален, поэтому мы понятия не имеем, где находится следующая инструкция.

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

P.S. ширина регистров варьируется в зависимости от размера слова архитектуры. Например, для 32-разрядного процессора размер слова равен 32 битам. Следовательно, регистры на CPU будут иметь be 32 бит. Регистры команд ничем не отличаются по размерам. Разница заключается в поведении и интерпретации. Инструкции кодируются в различных формах, однако они по-прежнему занимают 32-разрядный регистр. Например, процессор Nios II от Altera содержит 3 различных типа команд, каждый из которых закодирован по-разному. См. страницу 6 из ftp://ftp.altera.com/up/pub/Tutorials/DE2/Computer_Organization/tut_nios2_introduction.pdf

Читайте так же:
Как сбросит счетчик разговоров андроид

Вы также можете узнать больше о структуре процессора Nios II по ссылке выше. Это простой IP CPU. Конечно, у Intel есть свои собственные спецификации/дизайн, и они будут отличаться.

Как вы уже сказали, Счетчик программ (PC) содержит адрес следующей инструкции для выполнения, а регистр команд (IR) хранит фактическую инструкцию для выполнения (но не ее адрес).

В зависимости от длины этих регистров текущие машины имеют 64-bit PCs. Длина IR (с логической точки зрения) зависит от архитектуры:

  • RISC машины обычно имеют инструкции фиксированной длины. Например, большинство инструкций SPARC кодируются в 32-разрядных форматах.
  • CISC машины (Intel, AMD) имеют инструкции переменной длины. Например, см. Руководства для разработчиков программного обеспечения Intel® 64 и IA-32 Architectures

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

  • Разница между счетчиком программ и Регистром ссылок?

У меня есть этот вопрос, специфичный для архитектуры arm. Я видел в наборе регистров ARM, что у нас есть регистр ссылок (r14) и счетчик программ (r15). Во время переключения контекста регистр связи получает адрес значения счетчика программы последней выполненной функции. но контекстный.

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

Похожие вопросы:

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

Чем отличаются друг от друга регистр адресов памяти(MAR) и счетчик программ(PC)?

Я работаю с HCS08 CPU (используется в Freescale MCUs) и не могу понять инструкцию ветвления. Вот инструкция . Счетчик программ в этой архитектуре указывает на следующую команду, которая должна быть.

Если битовый шаблон 0x0C000000 помещен в регистр команд, то какая команда MIPS будет выполнена? Я не уверен, что этот вопрос означает регистр команд и как он относится к битовому шаблону.

Я изучаю assembly 8086 и понимаю, что assembly программ часто используют регистры, как это возможно, что 2 assembly программ, работающих в одно и то же время, могут использовать один и тот же.

У меня есть этот вопрос, специфичный для архитектуры arm. Я видел в наборе регистров ARM, что у нас есть регистр ссылок (r14) и счетчик программ (r15). Во время переключения контекста регистр связи.

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

Я столкнулся со следующей проблемой на предыдущем экзамене из моего класса операционных систем. Рассмотрим архитектуру, в которой инструкция TRAP имеет два эффекта: загрузка предопределенного.

Я пытаюсь отладить segfault в Демоне surfaceflinger Android на изготовленной на заказ плате ARM. Процесс завершается сбоем перед сбросом стека вызовов и регистрационного содержимого, включая счетчик.

Можно ли просмотреть текущий счетчик программ и регистр команд в gdb? Вот вывод базовой программы C (добавьте int и верните его) в gdb на ubuntu14: Я думал, что увижу что-то вроде pc или ir , но.

Программная модель центрального процессора

Центральный процессор (ЦП) — устройство, непосредственно предназначенное для выполнения вычислительных операций. Процессор работает под управлением программы, выполняя вычисления или принимая логические решения, необходимые для обработки информации.
Большинство современных центральных процессоров строятся на базе 32-битной архитектуры Intel-совместимых процессоров IA-32 (Intel Architecture), которая является третьим поколением базовой архитектуры x86.

Структура центрального процессора

Функционально центральный процессор можно разделить на две части:

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

Программная модель центрального процессора

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

Читайте так же:
Звонки по телефону поверка счетчиков

Арифметико-логическое устройство (АЛУ) предназначено для выполнения арифметических и логических операций преобразования информации.

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

  • Шина данных – служит для пересылки данных между процессором и оперативным запоминающим устройством (ОЗУ).
  • Шина адреса – используется для передачи сигналов, с помощью которых определяется местоположение ячейки памяти для выполняемых процессором операций чтения/записи и ввода-вывода.
  • Шина управления – служит для пересылки управляющих сигналов. Каждая линия этой шины имеет своё особое назначение, поэтому они могут быть как однонаправленными, так и двунаправленными.
Микропроцессорная память

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

  • регистры общего назначения;
  • сегментные регистры;
  • регистр счетчика команд;
  • регистр признаков.

Регистр – устройство сверхбыстродействующей памяти в процессоре, служащее для временного хранения управляющей информации, операндов и/или результатов выполняемых операций. Совокупность регистров процессора называется набором регистров .

Набор регистров общего назначения 32-битной архитектуры центрального процессора включает в себя

  • 4 универсальных регистра: EAX, EBX, ECX, EDX ;
  • 2 индексных регистра: ESI, EDI ;
  • 2 регистра для работы со стеком: ESP, EBP .

Набор регистров центрального процессора

Каждый из 32-разрядных универсальных регистров представляет собой логическое объединение, позволяющее отдельно обращаться к своей младшей 16-разрядной части: AX, BX, CX, DX . Каждый 16-разрядный регистр позволяeт независимо обращаться к старшему ( H ) и младшему ( L ) байту. Соответствующие 8-разрядные регистры имеют имена AH, AL, BH, BL, CH, CL, DH, DL .

Регистры общего назначения

Регистр EAX (аккумулятор) – автоматически применяется при операциях умножения, деления и при работе с портами ввода-вывода. Его использование в арифметических, логических и некоторых других операциях позволяет увеличить скорость их выполнения. Используется для записи возвращаемого значения из функции.
Регистр EBX (регистр базы) – может содержать адреса элементов оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных.
Регистр ECX (счетчик) – используется в операциях повторения, например в циклах, в строковых командах и т.д.
Регистр EDX (регистр данных) – является единственным элементом, который может хранить адреса портов ввода-вывода в командах типа IN (получить из порта) и OUT (вывести в порт). Без его помощи невозможно обратиться к портам с адресами в адресном пространстве больше 1 байта. Автоматически применяется также в операциях умножения и деления.

Индексные регистры используются для выполнения косвенной адресации, а также автоматически используются в строковых командах. Каждый 32-разрядный индексный регистр представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр ESI (регистр индекса источника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки источника в сегменте данных.
Регистр EDI (регистр индекса приемника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки приемника в сегменте данных.

Сегментные регистры
Регистры для работы со стеком используются для хранения вершины стека ( ESP ) и текущего элемента (базы) — EBP . Каждый 32-разрядный регистр для работы со стеком представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр EBP (указатель базы) может содержать адреса элементов в оперативной памяти. Эти адреса будут представлять собой смещение в сегменте стека.
Регистр ESP (указатель стека) используется для записи данных в стек и чтения их из стека. Фактически он содержит смещение в сегменте стека, которое определяет нужное слово памяти. Значения этого регистра автоматически меняются командами для работы со стеком типов push, pop, pushf, popf, call, ret .
Регистры для работы со стеком

Сегментные регистры представляют собой набор 16-разрядных регистров (для 32-битной архитектуры центрального процессора).
Сегмент — это логический элемент программы, который представляет собой независимый, поддерживаемый на аппаратном уровне блок памяти.
reg4
Регистр CS (регистр сегмента кода) определяет стартовый адрес сегмента, в который помещается код выполняемой программы. Это единственный сегментный регистр, который нельзя загрузить непосредственно. Косвенно загрузить в регистр CS новое значение могут команды вида jxx, call, int, ret, iret .
Регистр DS (регистр сегмента данных) определяет стартовый адрес сегмента, в который помещаются данные для программы. По умолчанию смещения в сегменте данных задаются в регистрах EBX , ESI и EDI .
Регистр SS (регистр сегмента стека) определяет стартовый адрес сегмента, в который помещается стек для программы. По умолчанию смещения для сегмента стека задаются в регистрах ESP и EBP .
Регистры ES, FS, GS (регистры сегментов дополнительных данных) опредляют стартовый адрес сегмента, в который помещаются дополнительные данные для программы. Например, в случае строковых команд, DS определяет сегмент для строки-источника, а ES – сегмент для строки-приемника. За исключением строковых команд, доступ к данным в сегменте ES обычно менее эффективен, чем в сегменте DS .

Читайте так же:
Как проверить счетчик 4410

Регистр счетчика команд
Регистр EIP (указатель команд) содержит смещение в сегменте кода следующей выполняемой команды. Как только некоторая команда начинает выполняться, значение регистра EIP увеличивается на ее длину так, что будет адресовать следующую команду. Физический адрес команды в памяти выполняемой программы определяет пара регистров CS:EIP , то есть к физическому адресу начала сегмента кода добавляется смещение следующей команды в сегменте кода, хранящееся в регистре EIP .

Регистр признаков

Обычно команды выполняются в той последовательности, в которой они расположены в программе. Нарушают эту последовательность только команды переходов (они начинаются с буквы j: jxx ), команды вызова подпрограммы ( call ), обработчиков прерываний ( int ) и возврата ( ret, iret ). Непосредственно содержимое EIP нельзя изменить или прочитать. Косвенно загрузить в регистр EIP новое значение могут только команды jxx, call, int, ret, iret . Регистр EIP является 32-битным. Младшая 16-битная часть регистра счетчика команд имеет имя IP .

Регистр признаков
Регистр признаков EFLAGS включает биты, каждый из которых устанавливается в единичное или в нулевое состояние при определенных условиях. Регистр EFLAGS 32-битный. Младшая 16-битная часть регистра признаков имеет имя FLAGS .

Все биты регистра признаков подразделяются на

  • s — биты состояния ( STATUS );
  • c — биты управления ( CONTROL );
  • x — системные биты ( SYSTEM ).

Регистр признаков

CF – бит переноса: устанавливается в 1, когда арифметическая операция генерирует перенос или выход за разрядную сетку результата. сбрасывается в 0 в противном случае. Этот флаг показывает состояние переполнения для беззнаковых целочисленных арифметических действий. Он также используется в арифметических действиях с повышенной точностью. Может быть установлен командой STC или сброшен командой CLC .

PF – бит четности: устанавливается в 1, если результат последней операции имеет четное число единиц.

AF – бит вспомогательного переноса: устанавливается в 1, если арифметическая операция генерирует перенос из младшей тетрады битов (из 3 бита в 4), сбрасывается в 0 в противном случае. Этот флаг используется в двоично-десятичной арифметике.

ZF – бит нулевого значения: устанавливается в 1, если результат нулевой, сбрасывается в 0 в противном случае.

SF – знаковый бит: устанавливается равным старшему биту результата, который определяет знак в знаковых целочисленных операциях (0 – положительное число, 1 – отрицательное число).

TF – бит пошаговой отладки: устанавливается в 1 для включения режима пошаговой отладки программы, сбрасывается в 0 в противном случае.

IF – бит прерываний: при значении 1 микропроцессор реагирует на внешние аппаратные прерывания по входу INTR. При значении 0 микропроцессор игнорирует внешние прерывания.

DF – бит направления: управляет строковыми командами ( MOVS, CMPS, SCAS, LODS, STOS ). Если DF = 1 (команда STD ), то содержимое индексных регистров ESI, EDI увеличивается, если DF = 0 (команда CLD ), то содержимое индексных регистров ESI, EDI уменьшается.

OF – бит переполнения: устанавливается в 1, если целочисленный результат выходит за пределы разрядной сетки. Тем самым данный бит указывает на потерю старшего бита результата.

IOPL – уровень приоритета: 2-битовое поле, которое отображает уровень приоритета ввода-вывода для выполняемой в данное время программы или задачи. Действительный приоритет задачи может быть меньше или равен IOPL.

NT – флаг вложенной задачи: управляет последовательностью вызванных и прерванных задач. Установлен в 1, если текущая задача связана с предыдущей, сброшен в 0, если текущая задача не связана с другими задачами.

RF — флаг возобновления: используется при обработке прерываний от регистров отладки.

VM — флаг виртуального 8086: признак работы процессора в режиме виртуального 8086: 1 – процессор работает в режиме виртуального 8086, 0 – процессор работает в реальном или защищенном режиме.

Читайте так же:
Счетчик нева 102 аналог

AC — флаг контроля выравнивания: предназначен для разрешения контроля выравнивания при обращениях к памяти. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут вызывать исключительную ситуацию.

VIF — флаг виртуального прерывания: при определенных условиях (одно из которых – работа микропроцессора в V-режиме) является аналогом флага IF . Флаг VIF используется совместно с флагом VIP .

VIP — флаг отложенного виртуального прерывания: устанавливается в 1 для индикации отложенного прерывания. Используется совместно с VIF в виртуальном режиме.

ID — флаг поддержки идентификации процессора: используется для отображения поддержки микропроцессором инструкции CPUID .

Регистр счетчик команд содержит

Регистры MMX / 3DNow!

Расширение MMX

MMX было первым расширением, реализующим технологию SIMD (Single Instruction — Multiple Data). Основная идея SIMD заключается в одновременной обработке нескольких элементов данных одной операцией. Расширение MMX использует новые типы упакованных 64-битные целочисленных данных:

— 8 упакованных байт ( Packed byte );

— 4 упакованных слова ( Packed word );

— 2 упакованных двойных слова ( Packed double word );

— 1 учетверенное слово ( Quad word );

Эти типы данных могут специальным образом обрабатываться в 64-битных регистрах MM 0- MM 7, представляющих собой младшие биты стека 80-битных регистров FPU . Каждая инструкция MMX выполняет действие сразу над всем комплектом операндов (8, 4, 2 или 1), размещенных в адресуемых регистрах. Как и регистры FPU , эти регистры не могут использоваться для адресации памяти. Совпадение регистров MMX и FPU накладывает ограничение на чередование кодов FPU и MMX . В отличие от стека FPU регистры MMX адресуются не с помощью стека, а физически (по своим физическим номерам).

Расширение 3 DNow !

Технология 3 DNow !, разработанная AMD , расширяет возможности MMX . Она позволяет оперировать с новым типом данных — парой упакованных вещественных чисел одинарной точности. Эти числа занимают по двойному слову (32 бита) в 64-битных регистрах MMX .

Расширение 3 DNow ! работает с упакованными данными в FP -формате с одинарной точностью, а также упакованными 8 байт, 4 слова, 2 двойных слова и 64-битными целыми числами, размещая их в младших 64 битах регистров FPU / MMX .

Блок XMM

Начиная с Pentium III , Intel использует в своих процессорах новое потоковое расширение SSE ( Streaming SIMD Extension ). Оно реализуется дополнительным независимым блоком, имеющим восемь 128-битных регистров, названных XMM 0- XMM 7, и регистр состояния/управления MXCSR . В каждый из регистров XMM помещаются четыре числа в формате с плавающей точкой одинарной точности. Блок позволяет выполнять векторные (пакетные) и скалярные инструкции. Векторные инструкции реализуют операции сразу над четырьмя комплектами операндов. Скалярные инструкции работают только с одним комплектом операндов — младшим 32-битным словом. При выполнении инструкций XMM традиционное оборудование FPU / MMX не используется, что позволяет эффективно смешивать инструкции MMX с инструкциями с плавающей точкой.

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

В процессоре Pentium 4 набор инструкций получил новое расширение — SSE 2, в основном касающееся добавления новых типов 128-битных типов данных для блока XMM :

— упакованная пара вещественных чисел двойной точности;

— упакованные целые числа: 16 байт, 8 слов, 4 двойных слова или пара учетверенных слов.

В процессор введены новые функции целочисленной арифметики, 128-разрядные для регистров XMM и такие же 64-разрядные для регистров MMX ; ряд старых инструкций MMX распространили на XMM (в 128-битном варианте); добавлены инструкции преобразования для новых форматов данных, а также расширены возможности «перемешивания» данных в блоке XMM . Кроме того, расширена поддержка управления кэшированием и порядком исполнения операций с памятью.

Регистры архитектуры x86-64 (AMD64)

Выпущенные недавно фирмой AMD новые процессоры Athlon 64 и Opteron имеют архитектуру x 86-64, которая в отличие от архитектуры x 86 является полностью 64-битной. Она естественным образом расширяет регистры общего назначения x 86 до 64 битов и увеличивает их количество. Также удваивается число регистров XMM . Регистры FPU / MMX остаются без изменений.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector