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

CBNZ (not taken)

Test 1: uops

Code:

  cbnz x0, .+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)03mmu table walk instruction (07)l2 tlb miss instruction (0a)1e3a3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)606d6emap 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)l1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
100431201822005025100010001000500002056194231810001000100019621890111001100010000019326591036464417197118471989198320851965
10042074151100622510001000100050001198819763181000100010002060195011100110001000001958473992496449196719591977192520692081
10041902150100352510001000100050001198619663181000100010002042199611100110001000001948517940478418194120151907199519772015
100421461500003325100010001000500011992197231810001000100019661864111001100010000121980471822431525186120591987184520171993
10042104140100412510001000100050001203819803181000100010001958210011100110001000001976476960507465204320551965195920552019
10042090150000352510001000100050000196620003181000100010001976211611100110001000002004475816438523192920811979186720092081
10041850150100412510001000100050001199822023181000100010001958192611100110001000201914486954525512193320091977187320672015
100420561401003525100010001000500012020197431810001000100019601930111001100010000019664301004501484215319652095199919991949
10041914140000352510001000100050001197618823181000100010001968199411100110001000632022458988475476191319592071195920431949
10042004150000412510001000100050001187421743181000100010001962196411100110001000031884504916443458189319591971190120111993

Test 2: throughput

Count: 8

Code:

  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  cbnz x0, .+4
  mov x0, 0

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)031e3f51schedule 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 cache writeback (a8)acbranch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
80204404503030693288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
8020440090301028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
802044009030002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000475111517101600400871004009140091400914009140091
8020440090300028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091404234009140091
8020440090300028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
8020440090300028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
8020440090300028288011080110801144005601493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
80204400903000693288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
8020440090301028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091
8020440090300028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000111511801600400871004009140091400914009140091

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)031e3f51schedule 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 cache writeback (a8)acbranch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0ea? int retires (ef)f5f6f7f8fd
800244287130903525800108001080010400050149369604004040040133313133498088480020800204004040040118002180010910101000000502052035400370104004140041400414004140041
800244004030003525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502032055400370104004140041400414004140041
8002440040300062525800108001080010400050049369604004040040133313133498001080020800204004040040118002180010910101000000502052053400370104004140041400414004140041
800244004030003525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502052053400370104004140041400414004140041
800244004029903525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502062053400370104004140041400414004142350
8002440040300423525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502052053400370104004140041400414004140041
800244004030003525800108001080010400050049369604004040040133313133498001080020800204004040040118002180010910101010000502052064400370104004140041400414004140041
800244004030003525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502042055400370104004140041400414004140041
8002440040300035258001080010800104000501493696040040400401333131334980010800208002040040400401180021800109101010530000502052055400370104004140041400414004140041
800244004030003525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101000000502052055400370104004140041400414004140041