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

TBNZ (taken)

Test 1: uops

Code:

  tbnz 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)031e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6d6emap 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)l1d cache writeback (a8)cfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
1004389860352510001000100050005355351623180100010001000535535111001100007322111532536536536536536
100453530352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
1004535451352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453530352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453543352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536

Test 2: throughput

Count: 8

Code:

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

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)09l2 tlb miss data (0b)1e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)60696a6d6emap 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 cache writeback (a8)a9acbranch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
802058104260600002827801058010580107400530149776808076680768610801078020780207807786473411802018010080099100100100000011180747437697312314807611008080180773807738077180775
802048076660500002827801058010580107400530149776928076480766610801078020780207807646472211802018010080099100100100000011180763315647314316807671008080980797807938078780769
802048076660500002827801058010580107400530149776928076280766610801078020780207807626472411802018010080099100100100000011180751315645312313807651008079580795808058080780775
802048076660500002827801058010580107400530149777148079280792610801078020780207807926474411802018010080099100100100000011180775335667327329807911008080180767807698076580777
802048076260500002827801058010580107400530149776968077680782610801078020780207807766473611802018010080099100100100000011180781311637319327807831008080980789807878078580787
802048078060500002827801058010580107400530149776968077480772610801078020780207807806474211802018010080099100100100400011180743315647317313807611008078980793807878078380791
802048078460500002827801058010580107400530149776868076480766610801078020780207807626471811802018010080099100100100000011180767327665334328807831008078980771807718076580763
802048076660500002827801058010580107400530149776988077480778610801078020780207807766472211802018010080099100100100000011180751325651320318807691008079980797807878079580793
8020480786605000050327801058010580107400530149776928078480784610801078020780207808046473611802018010080099100100100000011180747318649313313807611008079380775807678076780765
8020480758605000028278010580105801074005301497770280780807723910801078020780207807706472611802018010080099100100100000011180763320665323319807771008079780771807698075980763

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03mmu table walk instruction (07)l2 tlb miss instruction (0a)18191e3a3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6061696a6b6d6emap 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 cache writeback (a8)acc2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd0d2d5map dispatch bubble (d6)dbddfetch restart (de)e0eaec? int retires (ef)f5f6f7f8fd
80024240119179800000135288001180011800124000580049236962024004224005061080012800228002224004624004811800218001080009101010067001112400220079833160014079991800022400390010240043240048240044240043240045
80024240042179811000135288001180011800124000580049236960024004424004218108001280022800222400442400421180021800108000910101000001112400200080002160014079992800022400410010240045239996240043240041240043
8002424004217981100013528800118001180012400058004923696202400442400426108005480022800222400442400441180021800108000910101000001112400200080001160012079991800022400390010240043240043240043240043240045
8002424004417981100913528800118001180012400058004923696002400422400426108001280093800222400442400421180021800108000910101000001112400220080002160024079991800022400410010240041240043240043239916240113
8002424004417981100013528800118001180012400058004923696002400442400446108001280022800732400442400441180021800108000910101000001112400219180001160014079992800032400390010240043240043240043240043239910
8002524004217981100013528800118001180012400058004923696202400442400406108001280022800222400992400501180021800108000910101000001112400210080002160016079992800022400410010240045240043240043240045240045
8002424004417981100013528800118001180012400058004923696202400442400426108001280022800222400422400441180021800108000910101000301112400210080002160014079992800022400410010240045240045240043240043240045
8002424004417982100013528800118001180012400058004923696202400442400426108001280022800222400422400441180021800108000910101000001112400210080002160014079992800022400410010240045240043240043240043240045
80024240042179712000170028800118001180078400058004923696202400442400426108001280022800222400422400421180021800108000910101000001112400210080002160014079992800032400390010240045240043240041240043240043
800242400421798110001156828800118001180012400058004923695802400462400486108001280022800222400442400421180021800108000910101000001112399685080002160014079994800032400390010240047240047240051240047240043