Обеспечивают ли процессоры Core i3 / 5/7 механизм измерения IPC? - PullRequest
8 голосов
/ 26 октября 2010

Все процессоры Intel за последнее десятилетие (по крайней мере) включают набор мониторов производительности, которые подсчитывают различные события.Предоставляют ли последние процессоры Intel Core i3, i5 и i7 (он же Nehalem) механизм для подсчета инструкций за такт (IPC)?Если да, то как они используются?

Если это возможно, я, вероятно, напишу код для этого в ассемблере, но системные вызовы Windows или Linux также могут пригодиться.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

Да, Vtune от Intel (Linux и Windows) может измерять IPC.

Если вы хотите измерить его самостоятельно с точными счетчиками для некоторой части кода, вам нужно использовать некоторые API производительности, такие как PAPI или perfctr (оба для Linux).

Они используют аппаратные счетчики производительности, описанные в руководствах Intel http://www.intel.com/products/processor/manuals/

Том 3D, глава 30 и приложение А. http://www.intel.com/Assets/PDF/manual/253669.pdf

Vtune использует соотношение «Отставка инструкций» и «Нерабочие часы» для вычисления ИПЦ («Количество циклов на одну инструкцию»). Для Core2 используются следующие счетчики производительности: «CPU_CLK_UNHALTED.CORE», «INST_RETIRED.ANY»

Эти счетчики одинаковы для всех процессоров Core *: Приложение A1 тома 3B, стр. 384:

Table A-1. Architectural Performance Events

Event | Event Mask Mnemonic | Umask | Description
num.  
3CH   | UnHalted Core Cycles| 00H   | Unhalted core cycles
C0H   | Instruction Retired | 00H   | Instruction retired
0 голосов
/ 26 октября 2010

IPC теряет смысл с текущим набором команд с несколькими инструкциями в час.

Из документа i7 propoganda:

Микросхема имеет более широкое ядро ​​выполнения, позволяющее процессору выполнять до четырех полных инструкций одновременно, а также более эффективный 14-этапный конвейерIPC (количество команд за такт) по сравнению с Pentium 4 / D

Все эти значения IPC зависят от типа выполняемого кода.

...