Как рассчитать MIPS для алгоритма для процессора ARM

Недавно меня попросили произвести MIPS (миллион операций в секунду) для алгоритма, который мы разработали. Алгоритм представлен набором функций в стиле C. Мы проверили код на Dell Axim, чтобы оценить производительность при разных входных данных.

Этот вопрос пришел от нашего поставщика оборудования, но я в основном разработчик программного обеспечения HL, поэтому я не знаю, как ответить на запрос. Может быть, кто-то с похожим опытом HW/SW может помочь...

  1. Поскольку наш алгоритм не работает в режиме реального времени, я не думаю, что нам нужно количественно определять его как MIPS. Можно просто указать общее количество инструкций по сборке?

  2. Если верно 1, то как это сделать (т.е. как измерить количество ассемблерных инструкций) вообще или конкретно для ARM/XScale?

  3. Можно ли выполнить 2 на устройстве WM или с помощью эмулятора устройства, представленного в VS2005?

  4. Можно ли автоматизировать 3?

Спасибо большое за вашу помощь. Чарльз


Спасибо за вашу помощь. Я думаю, С.Лотт попал в самую точку. И в качестве продолжения, у меня теперь есть больше вопросов.

5 Есть предложения по измерению MIPS? Я слышал, что кто-то предложил запустить наш алгоритм и сравнить его с тестом Dhrystone/Whetstone для расчета MIS.

6 Поскольку алгоритм не нужно запускать в режиме реального времени, действительно ли MIPS является полезной мерой? (например, factorial(N)) Какие существуют другие способы количественного определения требований к обработке? (Я уже измерил производительность во время выполнения, но это был неудовлетворительный ответ.)

7 Наконец, я предполагаю, что MIPS является грубой оценкой и будет зам. на компиляторе, настройках оптимизации и т. д.?


person Charles    schedule 24.03.2009    source источник
comment
Это долгий путь, но, возможно, они хотели, чтобы вы вместо этого преобразовали свой алгоритм в набор инструкций MIPS? en.wikipedia.org/wiki/MIPS_architecture   -  person e.James    schedule 24.03.2009
comment
Это MIP, а не MIPS. Загляните в инженерные пабы.   -  person Jonathan Cline IEEE    schedule 12.08.2011
comment
Тег mips предназначен для архитектуры MIPS. Перед добавлением тега прочитайте описание. Если вы имеете в виду миллион операций в секунду, удалите его и добавьте правильный тег.   -  person phuclv    schedule 15.06.2014


Ответы (7)


Могу поспорить, что ваш поставщик оборудования спрашивает, сколько MIPS вам нужно.

Например, «Вам нужен процессор с производительностью 1000 MIPS или процессор с производительностью 2000 MIPS?»

Что переводится руководством в «Сколько MIPS?»

Аппаратное обеспечение предлагает MIPS. Программное обеспечение потребляет MIPS.

У вас есть две степени свободы.

  • Неотъемлемое предложение процессора MIPS.

  • Количество секунд, в течение которых вы потребляете это количество MIPS.

Если у процессора недостаточно MIPS, ваш алгоритм будет «медленным».

если у процессора достаточно MIPS, ваш алгоритм будет «быстрым».

Я заключил «быстрый» и «медленный» в кавычки, потому что вам нужно иметь требования к производительности, чтобы определить «достаточно быстро, чтобы удовлетворить требования к производительности» или «слишком медленно, чтобы удовлетворить требования к производительности».

На процессоре с производительностью 2000 MIPS вы могли бы занять приемлемые 2 секунды. Но на процессоре с производительностью 1000 MIPS это время увеличивается до неприемлемых 4 секунд.


Сколько MIPS вам нужно?

  1. Получите официальный MIPS для вашего процессора. См. http://en.wikipedia.org/wiki/Instructions_per_second.

  2. Запустите свой алгоритм на некоторых данных.

  3. Измерьте точное время работы. Усредните группу выборок, чтобы уменьшить неопределенность.

  4. Отчет. 3 секунды на процессоре 750 MIPS — это, ну, 3 секунды на 750 MIPS. MIPS — это скорость. Время есть время. Расстояние равно произведению скорость * время. 3 секунды при 750 MIPS — это 750*3 миллиона инструкций.

Помните Скорость (в инструкциях в секунду) * Время (в секундах) дает вам инструкции.

Не говорите, что это 3*750 MIPS. Это не так; это 2250 миллионов инструкций.

person S.Lott    schedule 24.03.2009
comment
Спасибо, С.Лотт. Думаю, ты прав. Любое предложение о том, как идти об измерении MIPS? Поскольку алгоритм не нужно запускать в реальном времени, действительно ли MIPS полезен? (например, factorial(N)) Наконец, я предполагаю, что MIPS является грубой оценкой и будет отд. на компиляторе, настройках оптимизации и т. д.? - person Charles; 24.03.2009

Некоторые примечания:

  1. MIPS часто используется в качестве общей меры «мощности» для процессоров, особенно в области мягкого реального времени / встроенных систем, где вы хотите убедиться, что вы не перегружаете процессор работой. Обратите внимание, что это количество инструкций в секунду, так как время очень важно!

  2. MIPS, используемый таким образом, совершенно ненаучен.

  3. MIPS, используемый таким образом, по-прежнему часто является лучшим приближением для определения размера системы и определения скорости процессора. Это может быть на 25% меньше, но неважно...

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

Вы никак не можете приблизиться к этому на ПК. Вам нужно использовать один из нескольких инструментов, чтобы сделать это правильно:

  1. Используйте симулятор набора инструкций для целевой архитектуры, такой как Qemu, собственные инструменты ARM, Synopsys, CoWare, Virtutech или VaST. Они быстрые, но могут довольно хорошо считать инструкции и будут поддерживать правильный набор инструкций. За исключением широкого использования дорогостоящих инструкций, таких как целочисленное деление (и, пожалуйста, без плавающей запятой), эти числа имеют тенденцию быть полезными близкими.

  2. Найдите точный симулятор тактового цикла для вашего целевого процессора (или что-то близкое), который даст довольно хорошую оценку эффектов конвейера и т. д. Опять же, получите его от ARM или от Carbon SoCDesigner.

  3. Получите плату разработки для семейства процессоров, на которое вы ориентируетесь, или ARM, близкого к нему по дизайну, и профилируйте приложение там. Вы не используете ARM9 для профилирования ARM11, но ARM11 может быть хорошим приближением, например, для ARM Cortex-A8/A9.

person jakobengblom2    schedule 02.06.2009

MIPS обычно используется для измерения возможностей процессора.

Алгоритмы обычно принимают либо:

  1. a certain amount of time (when running on a certain processor)
  2. a certain number of instructions (depending on the architecture)

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

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

const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
    runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials
person e.James    schedule 24.03.2009
comment
Спасибо, aJames, я уже сделал то, что вы предложили (на Dell Axim), но среднее время не было удовлетворительным ответом. Таким образом, запрос на MIPS. - person Charles; 24.03.2009

MIPS — это показатель скорости процессора, а не производительности алгоритма. Могу только предположить, что где-то по ходу дела кто-то слегка запутался. Что они пытаются выяснить? Единственный вероятный сценарий, о котором я могу думать, это то, что они пытаются помочь вам определить, насколько быстрый процессор им нужен для удовлетворительной работы вашей программы.

Поскольку вы можете измерить алгоритм количеством инструкций (которое, несомненно, будет зависеть от входных данных, так что это нетривиально), вам потребуется некоторая мера времени, чтобы получить MIPS — например, скажем, " Мне нужно вызывать его 1000 раз в секунду». Если ваш алгоритм состоит из 1000 инструкций для этого конкретного случая, вы получите:

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

Я все еще думаю, что это действительно странный способ пытаться что-то делать, поэтому вы можете попросить разъяснений. Что касается ваших конкретных вопросов, я оставлю их тем, кто более знаком с Visual Studio.

person rmeador    schedule 24.03.2009

Также помните, что разные компиляторы и опции компилятора имеют ОГРОМНОЕ значение. Один и тот же исходный код может работать на разных скоростях. Таким образом, вместо того, чтобы покупать процессор 2mips, вы можете использовать процессор 1/2mips и использовать опцию компилятора. Или потратьте деньги на лучший компилятор и используйте более дешевый процессор.

Сравнительный анализ в лучшем случае ошибочен. В качестве хобби я компилировал один и тот же код dhrystone (и точильного камня) на разных компиляторах от разных поставщиков для одного и того же оборудования, и цифры были повсюду, на порядки. Тот же исходный код, тот же процессор, dhrystone ничего не значил, бесполезен в качестве основы. Что важно в бенчмаркинге, так это то, насколько быстро работает ВАШ алгоритм, лучше, чтобы он был таким же быстрым или быстрее, чем нужно. В зависимости от того, насколько близко к финишу вы находитесь, допускайте много помоев. В начале, возможно, вы захотите работать в 5, 10 или 100 раз быстрее, чем вам нужно, чтобы к концу проекта вы были хотя бы немного быстрее, чем вам нужно.

Я согласен с тем, что, по моему мнению, говорит С. Лотт, это все разговоры о продажах, маркетинге и менеджменте. Будучи тем, кого руководство поставило между молотом и наковальней, вам нужно убедить их купить самый быстрый процессор и лучшие инструменты, которые они готовы потратить, основываясь на красочных круговых диаграммах и графиках, которые вы собираетесь показать. генерировать из воздуха в качестве оправдания. Если ближе к концу пути он не совсем соответствует производительности, то можно вернуться к stackoverflow, но при этом руководство будет вынуждено купить другой тулчейн практически по любой цене или поменять местами процессоры и перераскрутить плату. К тому времени вы должны знать, насколько вы близки к цели, нам нужно 1,0, и мы на 1,25, если мы купим процессор, который в два раза быстрее, чем тот, который мы купили, мы должны его сделать.

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

person old_timer    schedule 29.04.2009

Этот ответ предназначен не для прямого ответа на вопрос, а для предоставления дополнительного контекста, объясняющего, почему задается этот вопрос.

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

Например, рассмотрим контроллер, предназначенный для определения скорости ветра и перемещения исполнительного механизма в течение секунды, когда скорость ветра превышает 25 миль в час. Допустим, требуется 1000 инструкций для расчета и сравнения скорости ветра с порогом. Требование MIPS для этого алгоритма составляет 1 кило инструкций в секунду (KIP). Если контроллер основан на 1 процессоре MIPS, мы можем с уверенностью сказать, что в контроллере больше сока для добавления других функций.

Какие еще функции можно добавить в контроллер? Это зависит от MIPS добавляемой функции/алгоритма. Если есть другая функция, которая требует выполнения 100 000 инструкций в секунду (т. е. 100 KIP), мы все равно можем приспособить эту новую функцию, и у нас останется место для добавления других функций.

person Saravanakumar Tiruthani    schedule 14.06.2012

Для первой оценки может быть полезен тест на ПК.

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

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

person starblue    schedule 25.03.2009