Jump to content

Предварительная выборка входной очереди

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

Введение

[ редактировать ]

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

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

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

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

При выполнении самомодифицирующегося кода изменение кода процессора непосредственно перед текущим местом выполнения может не изменить то, как процессор интерпретирует код, поскольку он уже загружен в его PIQ. Он просто выполняет свою старую копию, уже загруженную в PIQ, вместо новой и измененной версии кода в своей оперативной памяти и/или кэше .

Такое поведение PIQ можно использовать для определения того, выполняется ли код внутри эмулятора или непосредственно на оборудовании реального ЦП. [ нужна ссылка ] Большинство эмуляторов, вероятно, никогда не будут имитировать такое поведение. Если размер PIQ равен нулю (изменения в коде всегда немедленно влияют на состояние процессора), можно сделать вывод, что либо код выполняется в эмуляторе, либо процессор делает PIQ недействительным при записи по адресам, загруженным в PIQ. .

Оценка производительности на основе теории массового обслуживания

[ редактировать ]

( А. К. Эрланг 1878-1929) первым предложил использовать очередь как решение проблемы перегрузок телефонного трафика. Предлагаются различные модели массового обслуживания для приблизительного моделирования систем массового обслуживания в реальном времени, чтобы их можно было математически проанализировать для различных характеристик производительности.

Модели массового обслуживания можно представить с помощью обозначений Кендалла :

А1/А2/А3/А4

где:

  • A1 — распределение времени между двумя прибытиями
  • A2 — распределение времени обслуживания.
  • A3 — общее количество серверов
  • А4 — емкость системы
  1. Модель M/M/1 (одна очередь, один сервер/ марковская модель ). В этой модели элементы очереди обслуживаются в порядке очереди. Учитывая средние скорости прибытия и обслуживания, фактические скорости варьируются вокруг этих средних значений случайным образом и, следовательно, должны определяться с использованием кумулятивной функции распределения вероятностей . [2]
  2. Модель M/M/r . Эта модель является обобщением базовой модели M/M/1, в которой несколько серверов работают параллельно. Модель такого типа также позволяет моделировать сценарии с нетерпеливыми пользователями, которые немедленно покидают очередь, если не получают обслуживания. Это также можно смоделировать с помощью процесса Бернулли, имеющего только два состояния: успех и неудачу. Лучшим примером этой модели являются наши обычные проводные телефонные системы. [3]
  3. Модель M/G/1 (модель Такача с конечным входом): эта модель используется для анализа сложных случаев. Здесь распределение времени обслуживания больше не является марковским процессом . В этой модели рассматривается случай, когда один ремонтник ремонтирует более одной вышедшей из строя машины. В этом случае время обслуживания для любого пользователя увеличится. [4]

Обычно в таких приложениях, как очередь ввода с предварительной выборкой, широко используется модель M/M/1 из-за ограниченного использования функций очереди. В этой модели в соответствии с микропроцессорами пользователь берет на себя роль исполнительного устройства, а сервер — устройства интерфейса шины.

Очередь инструкций

[ редактировать ]

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

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

Процессор обычно имеет два отдельных блока для получения инструкций и выполнения инструкций. [6] [7]

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

Этот процесс намного быстрее, чем отправка адреса, чтение кода операции, а затем его декодирование и выполнение. Выборка следующей инструкции во время декодирования или выполнения текущей инструкции называется конвейерной обработкой. [8]

Процессор 8086 имеет шестибайтовый конвейер команд предварительной выборки, а процессор 8088 — четырехбайтовый. Пока исполнительный модуль выполняет текущую инструкцию, модуль интерфейса шины заранее считывает до шести (или четырех) байтов кодов операций из памяти. Длины очередей были выбраны на основе симуляционных исследований. [9]

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

Недостатки

[ редактировать ]

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

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

Однако эти недостатки в значительной степени компенсируются улучшением времени выполнения процессора. После введения очереди команд предварительной выборки в процессоре 8086 все последующие процессоры включили эту функцию.

пример кода x86

[ редактировать ]
code_starts_here:
  mov bx, ahead
  mov word ptr cs:[bx], 9090h
ahead:
  jmp near to_the_end
  ; Some other code
to_the_end:

Эта самомодифицирующаяся программа перезапишет jmp to_the_end двумя NOP (которые закодированы как 0x9090 ). Переход jmp рядом с to_the_end собирается в два байта машинного кода, поэтому два NOP просто перезапишут этот переход и ничего больше. (То есть переход заменяется кодом ничего не делать.)

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

Пример программы для определения размера

[ редактировать ]

Это пример NASM синтаксиса самомодифицирующего x86 алгоритма языка ассемблера , который определяет размер PIQ:

code_starts_here:
  xor bx, bx                  ; zero register bx
  xor ax, ax                  ; zero register ax

  mov dx, cs
  mov [code_segment], dx      ; "calculate" codeseg in the far jump below (edx here too)

around:
  cmp ax, 1                   ; check if ax has been altered
  je found_size
                              ; 0x90 = opcode "nop" (NO oPeration)
  mov byte [nop_field+bx], 0x90
  inc bx

  db 0xEA                     ; 0xEA = opcode "far jump"
  dw flush_queue              ; should be followed by offset (rm = "dw", pm = "dd")
code_segment:
  dw 0                        ; and then the code segment (calculated above)
flush_queue:
                              ; 0x40 = opcode "inc ax" (INCrease ax)
  mov byte [nop_field+bx], 0x40
nop_field:
  times 256 nop 
  jmp around
found_size:
  ;
  ;    register bx now contains the size of the PIQ
  ;    this code is for [[real mode]] and [[16-bit protected mode]], but it could easily be changed into
  ;    running for [[32-bit protected mode]] as well. just change the "dw" for
  ;    the offset to "dd". you need also change dx to edx at the top as
  ;    well. (dw and dx = 16 bit addressing, dd and edx = 32 bit addressing)
  ;

По сути, этот код меняет поток выполнения и грубо определяет размер PIQ. «На каком расстоянии мне нужно изменить код передо мной, чтобы он подействовал на меня?» Если он находится слишком близко (он уже есть в PIQ), обновление не будет иметь никакого эффекта. Если это достаточно далеко, изменение кода повлияет на программу, и тогда программа найдет размер PIQ процессора. Если этот код выполняется в многозадачной ОС, переключение контекста может привести к неправильному значению.

См. также

[ редактировать ]
  1. ^ «Информационный центр АРМ» . Статьи технической поддержки ARM .
  2. ^ Хейс, Джон (1998). Компьютерная архитектура и организация (второе изд.). МакГроу-Хилл.
  3. ^ Феллер, Уильям (1968). Введение в теорию вероятностей и ее приложения (второе изд.). Джон Уайли и сыновья.
  4. ^ Папулис, Афанасий; С.Унникришна Пиллаи (2008). Вероятность, случайные величины и случайные процессы (Четвертое изд.). МакГроу-Хилл. стр. 784–800.
  5. ^ Заки, Сафват; В. Карл Хамахер; Звонко Г. Вранешич (1996). Компьютерная организация (Четвертое изд.). МакГроу-Хилл. стр. 310–329 . ISBN  0-07-114309-2 .
  6. ^ «Блок-схема процессора 8086» .
  7. ^ Холл, Дуглас (2006). Микропроцессоры и интерфейсы . Тата МакГроу-Хилл. п. 2.12. ISBN  0-07-060167-4 .
  8. ^ Холл, Дуглас (2006). Микропроцессоры и интерфейсы . Нью-Дели: Тата МакГроу-Хилл. стр. 2.13–2.14. ISBN  0-07-060167-4 .
  9. ^ Маккевитт, Джеймс; Бэйлисс, Джон (март 1979 г.). «Новые варианты от больших фишек». IEEE-спектр . 16 (3): 28–34. дои : 10.1109/MSPEC.1979.6367944 . S2CID   25154920 .
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: acf705f7a38339504bc466aff2ec42de__1690743600
URL1:https://arc.ask3.ru/arc/aa/ac/de/acf705f7a38339504bc466aff2ec42de.html
Заголовок, (Title) документа по адресу, URL1:
Prefetch input queue - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)