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

TBZ (not taken)

Test 1: uops

Code:

  tbz x0, #1, .+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 data (08)181e1f3f51schedule 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 tlb access (a0)l1d tlb miss (a1)l1d cache writeback (a8)a9acc2cfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
100431171800003525100010001000500011956193231610001000100020421952111001100010000000001818638968518479206520851983200120352007
1004200215000035251000100010005000118981990318100010001000188219861110011000100000000019364451048465522198919972023186321652011
100419761500003525100010001000500012062196631810001000100018642036111001100010000000001930463988464532196321391989190920592025
100419961500003525100010001000500012058206431610001000100019642094111001100010000000001952502944512443198520751997186520672023
100420101500003525100010001000500012052199431810001000100020541964111001100010000000001946513932531466206919492011201318451981
100419701400003525100010001000500011970186231810001000100019741986111001100010000000001924477968499467192519512021198518551987
100419481500003525100010001000500011884196231810001000100019621962111001100010000000001918463900424470192920651965201120132071
1004197415000035251000100010005000119462008318100010001000195220201110011000100000000019224521048466499187719352007200720352061
100419661510903525100010001000500011970203431810001000100020342010111001100010000000001920426942475510205719452041206119592051
100419721600003525100010001000500011954203631810001000100021581980111001100010000000001846523958472490205519632013194520271843

Test 2: throughput

Count: 8

Code:

  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  tbz x0, #1, .+4
  mov x0, 2

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

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 miss (a1)l1d cache writeback (a8)acc2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
8020440386302002828801108011080114400560149370104009040090133497133598011480224802244009032050118020180100991001001000000111511831600400871004009140091400914009140091
8020440090300002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000100111511801600400871004009140091400914009140256
8020440090300004928801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140418400914009140091
8020440090300002828801108011080114400560149370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
8020440090300002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
8020440090300002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
8020440090300002828801108011080114400560149370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
80204400903000059828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
8020440090300002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000000111511801600400871004009140091400914009140091
8020540090300002828801108011080114400560049370104009040090133497133598011480224802244009032050118020180100991001001000100111511801600400871004009140091400914009140091

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)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 cache writeback (a8)acbranch mispred nonspec (cb)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
80024424613100035258001080010800104000501493696040040400401333131334980010800208002040040400401180021800109101010000502120201415400370104004140041400414004140041
80024400403000035258001080010800104000500493696040040400401333131334980010800208002040040400401180021800109101010090502117201517400370104004140041400414004140041
800244004030000352580010800108001040005014936960400404004013331313349800108002080020400404004011800218001091010100005021920916400370104005340041400414004140041
80024400403000035258001080010800104000500493696040040400401333131334980010800208002040040400401180021800109101010000502113201715400370104004140041400414004140041
800244004030000352580010800108001040005014936960400404004013331313349800108002080020400404004011800218001091010100120502116201718400370104004140041400414004140041
800244004029900320258001080010800104000500493696040040400941333731334980010800208002040040400401180021800109101010030502119201917400370104004140041400414004140041
800244004030000352580010800108001040005004936960400404004013331313349800108002080020400404004011800218001091010100660502118201417400370104004140041400414004140041
800244004030000356848001080010800104000500493696040040400401333131334980010800208002040040400401180021800109101010090502117201415400370104004140041400414004140041
80024400402990123525800108001080010400050149369604004040040133313133498001080020800204004040040118002180010910101001050502117201516400370104004140041400414004140041
800244004030000352580010800108001040005014936960400404004013331313349800108002080020400404004011800218001091010100117050211620169400370104004140041400414004140041