Apple Microarchitecture Research by Dougall Johnson

M1/A14 P-core (Firestorm): Overview | Base Instructions | SIMD and FP Instructions
M1/A14 E-core (Icestorm):  Overview | Base Instructions | SIMD and FP Instructions

MRS (CNTFRQ_EL0)

Test 1: uops

Code:

  mrs x0, cntfrq_el0

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 1.000

Load/store unit issues: 0.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)030e1e3f51schedule uop (52)schedule int uop (53)696a6d6emap stall dispatch (70)map rewind (75)map stall (76)8283flush restart other nonspec (84)85inst all (8c)91l1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
10048572660085592610001000495494857285728191383358571118211100104937311101185681000100085738574857585748574
10048585660085572610001000495494857185748189383358574118111100102637311101185681000100085748573857385728575
1004857166008557261000100049549185718572819138335857411821110010507311101185711000100085728572857485758574
10048571660085572610001000495494857185718189383378574118311100103467311141185681000100085728575857285738575
1004857770008557261000100049549385748572819038337857211841110010007311101185691000100085748573857385748573
10048573660085562610001000495493857285728188383358585118311100105837311101185681000100085748572857285758573
1004857366008556261000100049549285738573819038335857111841110010007311101185711000100085748573857585738573
1004857367008557261000100049549185718573819138337857411841110010007311101185711000100085788575857585738575
1004857367008557261000100049549185718574819038335857311811110010107311101185681000100085738573857585758573
1004857166008558261000100049549485748572819038336857411811110010007311101185691000100085758572857585728575

Test 2: throughput

Count: 8

Code:

  mrs x0, cntfrq_el0
  mrs x1, cntfrq_el0
  mrs x2, cntfrq_el0
  mrs x3, cntfrq_el0
  mrs x4, cntfrq_el0
  mrs x5, cntfrq_el0
  mrs x6, cntfrq_el0
  mrs x7, cntfrq_el0

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code divided by count): 8.5011

retire uop (01)cycle (02)0318191e1f3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)60696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map int uop inputs (7f)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)9fld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)acc2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)eaec? int retires (ef)f5f6f7f8fd
8020468008852720017706800762680100801001005000496770066800816800866698153669952100200200680090118311802011009910010010000100000511029422680083800000080100680143680091680085680098680091
802046801155272000068040826801008010010050004967700068007968008266980936699581002002006800831183118020110099100100100000000005110210622680085800000080100680073680087680088680083680085
802046800795271000068007326801008010010050004967700368010768008866980536699511002002006800721181118020110099100100100000360000511029822680083800000080100680080680084680088680099680086
802046804475271000068006926801008010010050004967701268008268008466981836699521002002006800951183118020110099100100100000000005110210622680083800000080100680103680085680074680090680084
80204680088527200006800682680100801001005000496743366800726800846698193669954100200200680087118111802011009910010010000000000511029822680087800000080100680078680089680084680084680075
8020468008152710000680069268010080100100500149677005680087680089669810366999710020020068008311821180201100991001001000003900005110210222680072800000080100680087680085680086680082680094
80205680083527240006800682680100801001176200496770006800906800836698143669965100200200680098118211802011009910010010000118540000511029422680084800000080100680209680119680480680090680090
802046800885272000068006526801008010010050004967934768008468008966980836699561002002006800881181118020110099100100100000000005110210222680084800000080100680085680084680509680090680084
802046800815095000068007026801008010010050009867700668008868008466981336699531002002006800871182218020110099100100100000000005110211022680077800000080100680088680073680084680087680072
802046800955094006068046226801008010010050004967699368045168043166981536699601002002006800861181118020110099100100100001000005110210620680076800000080100680091680091680087680081680081

1000 unrolls and 10 iterations

Result (median cycles for code divided by count): 8.5011

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss instruction (0a)l2 tlb miss data (0b)18191e1f3a3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)5f60696a6b6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map int uop inputs (7f)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd store (99)9fld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acc2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfl1i cache miss demand (d3)d5map dispatch bubble (d6)d9dadbddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
80024680096527200000189006804352680044800101050004967699306805016801106698433670371102020680096118221800211091010010303030000502003102000586800708004080010680100680093680102680199680107
80024680512527300101088068007812880010800101068004967739006800996801466698387669988112020680107118111800211091010010003090000503304118000456804458000080010680106680102680096680098680139
800246804685271000001200680090127800108001010620049677011068046268010466984236699851020206804851182118002110910100100100240000502004110000436800938003880010680099680106680567680098680104
80024680095527200000120068009412780048800101150004967702006801006800966698263669994102020680089236411800211091010010000000000502005110000846801268000080010680100680098680486680097680102
80024680091527200000000680083268004280010105001496770240680102680101669835366998310202068010611811180021109101001000000000050200394000356800968000080010680097680103680102680097680133
80024680095527200000000680084268001080010105001496770220680106680102669838366998510202068010011831180021109101001000000000150200394000346819528000080010680099680102680152680102680096
8002468009652721000012006817662680045800101050014967432406800986800966698343669987102020680486118311800211091010010000000000502005110000556800888000080010680161681078680153680104680141
825916800945141000008910068005826800108001012680149677458068045568048666990876699741220227233951181511800211091010010000000000502003102800556800768000080010680085680085680087680090680076
8002568008550940000015006800672680107800101050014967700406800846804966699933669982102020680074118211800211091010010000000000502004110000546804358000080010680072680083680087680085680084
800246804395094000000006800722680010800101050004967701006800766800766698343669983102020680083118211800211091010010003000000502003102000436800838000080010680080680072680079680085680092