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

B.cc (not taken)

Test 1: uops

Code:

  b.eq .+4

(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)031e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)606d6emap 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 cond (94)9fl1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
10043690503525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535405825100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500015355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000107312111532536536536536536
1004535403525100010001000500015355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536
1004535403525100010001000500005355351623180100010001000535535111001100010001000007312111532536536536536536

Test 2: throughput

Count: 8

Code:

  b.eq .+4
  b.eq .+4
  b.eq .+4
  b.eq .+4
  b.eq .+4
  b.eq .+4
  b.eq .+4
  b.eq .+4

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03l2 tlb miss data (0b)191e3f4d51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6061696a6d6emap 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)9fl1d cache writeback (a8)acc2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd0d2d5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
802044046230200028613180112801128015316528001049370644014440144133861113396801538026380263401443207011802018010099801001008010000011151245101600401411004014540145401454014540145
802044014430100028613180112801128015316528001049370644014440144133861113396801538026380263401443207011802018010099801001008010000011151245101600401411004014540145401454014540145
80204401443010002860258010080100801001652000154937055401354013513376313414801008020080200401353207011802018010099801001008010000000051100022022401321004013640136401364013640136
802044013530100062560258010080100801001652000054937055401354013513376313414801008020080200401353207011802018010099801001008010000000051100022022401321004013640136401364013640136
80204401353001005560258010080100801001652000104937055401354013513376313414801008020080200401353207011802018010099801001008010010000051100022022401321004013640136401364013640136
80204401353010005560258010080100801001652000154937055401354013513376313414801008020080200401353207011802018010099801001008010000000051105122022401321004013640136401364013640136
80204401353010005560258010080100801001652000104937055401354013513376313414801008020080200401353207011802018010099801001008010000000051100022022401321004013640136401364013640136
80204401353010005560258010080100801001652000054937055401354013513376313414801008020080200401353207011802018010099801001008010000000051105122022401321004013640136401364013640136
80204401353000005560258010080100801001652000054937055401354013513376313414801008020080200401353207011802018010099801001008010000000051100022022401321004013640136401364013640136
8020440135301000556025801008010080100165200015493705540135401351337631341480100802008020040135320701180201801009980100100801000000005511511122022401321004013640136401364013640136

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l2 tlb miss data (0b)1e3f51schedule 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)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)accfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
8002443567311004025800108001080010584075049369654004540045133313133548001080020800204004540045118002180010980010108001000000502005204440042104004640046400464004640046
800244004530000402580010800108001058407504936965400454004513331313354800108002080020400454004511800218001098001010800100000225502003201652040042104004640046400464004640046
8002440045300004025800108001080010584075049369654004540045133313133548001080020800204004540045118002180010980010108001000000502003204440042104004640046400464004640046
8002440045299004025800108001080010584075049369654013540045133313133548001080020800204004540045118002180010980010108001000000502005205440042104004640046400464004640046
800244004530000402580010800108001058407514936965400454004513331313354800108002080020400454004511800218001098001010800100000778502004204340042104004640046400464004640046
8002440045300004025800108001080010584075149369654004540045133313133548001080020800204004540045118002180010980010108001000000502004204340042104004640046400464004640046
80024400453000092225800108001080010584075149369654004540045133313133548001080020800204004540045118002180010980010108001000000502003203540042104004640046400464004640046
8002440045299004025800108001080010584075049369654004540045133313133548001080020800204004540045118002180010980010108001000000502003204440042104004640046400464004640046
8002440045300006125800108001080010584075049369654004540045133313133548001080020800204004540045118002180010980010108001001000502034204340042104004640046400464004640046
80024400453000032525800108001080010584075049369654004540045133313133548001080020800204004540045118002180010980010108001000000502004203440042104004640046400464004640046