Разница между инструкцией, операцией и микрооперацией (моп)

4507
shailenTJ

Я пытаюсь понять сложные термины, связанные с производительностью процессоров.

Производительность компьютера измеряется в FLOPS, что мало для FLOPs в секунду . FLOPsсам по себе означает операции с плавающей точкой .

Теперь, почему операции с плавающей запятой рассматриваются для производительности компьютера. Как насчет целочисленных операций? Есть ли какой-либо источник в Интернете (официальное цитирование), который бы объяснил эту тенденцию? Google не дал мне ничего с моим поиском.

Теперь, что именно означает операция в FLOP? Означает ли это, что математическую операцию, как MUL, ADD, и DIVт.д.?

В этом случае, что будет инструкция ? Если в инструкции есть что-то вроде ADDPDи ADDSDт. Д., Как я вижу здесь ( http://docs.oracle.com/cd/E26502_01/html/E28388/epmpv.html ), то одна инструкция может привести ко многим внутренним операциям. Это будет микрооперация или мопс ?

Я не нашел объяснения микрооперации в Википедии. Кто бы ни объяснял это ясно здесь, вероятно, придется также улучшить статью в Википедии :)

Согласно книге Hennessy / Patterson по компьютерной архитектуре (5-е издание, стр. 233), ARM Cortex-A8 (RISC) способен выполнять две инструкции за такт. Означает ли это, что процессор может выполнять, например, ADDPDи ADDSD(всего = 2 инструкции) за один цикл?

Этот источник ( http://en.community.dell.com/techcenter/high-performance-computing/w/wiki/2329 ) гласит следующее:

Большинство современных микропроцессоров могут выполнять четыре (4) FLOP за такт, то есть 4 FLOP на Гц.

Я считаю, что автор не прав. Он, вероятно, подразумевал 4 инструкции за такт, ограничивая себя процессорами на базе CISC (например, Intel). Это связано с тем, что некоторые инструкции, такие как FMA для Haswell, могут повысить производительность, благодаря чему процессор может обрабатывать больше операций за цикл. Другими словами, 1 FMA инструкция переводится в пару операций . Я прав?

IPC расшифровывается как «Инструкция за цикл». Какие инструкции приведены здесь? Инструкция отошла от процессора? С помощью аппаратного счетчика я могу посчитать количество тактов процессора и количество INST_RETIRED.ANY. Будет ли это правильный способ расчета IPC?

Большое спасибо за любые ответы и комментарии. Надеюсь, мой вопрос поможет многим другим смущенным душам :)

2
Добро пожаловать в SuperUser. Можете ли вы быть более конкретным по вашему вопросу? Также вы задали более 1 вопроса здесь, и на это трудно ответить. Пожалуйста, смотрите [помощь] (http://superuser.com/help/how-to-ask) этого сайта. Uwe Plonus 10 лет назад 1
Понимаете ли вы разницу между операцией ADD, имеющей дело с целым числом, и операцией ADD, имеющей дело с плавающей запятой? Чтобы понять любой ответ на этот вопрос, вам нужно понять разницу. Ramhound 10 лет назад 0
@Ramhound, ADD будут отличаться, так как два разных ALU будут вычислять их. Например, на Sandy Bridge / Ivy Bridge есть два отдельных ALU под портом 0, которые выполняют эти вычисления. Однако, когда мы говорим о производительности, мы говорим о FLOPS. Целочисленные операции не принимаются во внимание. Так что это сбивает с толку. Я думаю, что все подвопросы относятся к большему вопросу, касающемуся разницы между тремя терминами. Я переформулирую весь вопрос так, чтобы я мог получить лучшие ответы и меньше отрицательных голосов :) shailenTJ 10 лет назад 0
@shailenTJ - меня смущает вопрос, если честно. Вы понимаете, как обрабатывается целое число и число с плавающей точкой. Ramhound 10 лет назад 0

1 ответ на вопрос

1
sawdust

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

Операции с плавающей запятой - это лишь одна из нескольких метрик, которые годами использовались для оценки производительности компьютера. Измерение операций FP считается более применимым для некоторых реальных приложений (таких как моделирование погоды), чем целочисленные операции. Если бы вы оценивали компьютеры для приложения базы данных, вы, вероятно, проигнорировали бы спецификации FLOPS и сосредоточились бы на IPS (количество команд в секунду) и производительности ввода-вывода.

Теперь, что именно означает операция в FLOP? Означает ли это математическую операцию, такую ​​как MUL, ADD, DIV и т. Д.?

«Операция» - это выполнение «инструкции», которая представляет собой машинный код (то есть двоичное значение) или одно вычисление с помощью FPU, модуля с плавающей запятой. (Более старый) FPU обычно работает асинхронно с CPU и ALU, чтобы не препятствовать выполнению программы, которая не зависит от результата FP.

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

Ранние ПК были похожей конструкции. В оригинальном IBM PC использовался микропроцессор Intel 8088, который не имел возможности HW FP. Но можно установить математический сопроцессор 8087, чтобы инструкции FP могли выполняться аппаратно, а не перенаправляться на программные процедуры. В конце концов Intel интегрировала математический сопроцессор в пакет CPU для i486

В этом случае, что будет инструкция?

«Инструкция» не должна быть неоднозначной сущностью. Это один машинный код или один мнемомик процессора.

тогда одна инструкция может привести ко многим внутренним операциям. Это будет микрооперация или мопс?

Видимо, вы имеете в виду микропрограммирование.
(Раньше была компьютерная компания, которая подняла микропрограммирование на одну итерацию ниже: до уровня нано программирования. Продукты были предназначены для эмуляции ЦП.)
Микропрограммирование не имеет никакого отношения к производительности прикладных программ. То есть вы, как правило, не можете переписать / улучшить микропрограммирование, как на нанопрограммном процессоре.

Означает ли это, что процессор может выполнять, например, ADDPD и ADDSD (всего = 2 инструкции) за один цикл?

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

Какие инструкции приведены здесь?

Каждая инструкция является машинным кодом.

Другими словами, 1 инструкция FMA преобразуется в пару операций. Я прав?

Нет, одна инструкция соответствует одной операции.

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