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

MOVZ (64-bit)

Test 1: uops

Code:

  movz x0, #0x1234, lsl 16
  nop ; nop ; nop

(no loop instructions)

1000 unrolls and 1 iteration

Retires (minus 3 nops): 1.000

Issues: 0.000

Integer unit issues: 0.000

Load/store unit issues: 0.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)031e3f51606d6emap rewind (75)map stall (76)map int uop (7c)8283flush restart other nonspec (84)85inst all (8c)inst int alu (97)l1d cache writeback (a8)acc3cfl1i cache miss demand (d3)d5map dispatch bubble (d6)d9ddfetch restart (de)e0eaeb? int retires (ef)f5f6f7f8fd
40045284028525152852831010005289511400110000002654516055525001000529529529529529
40045284028525052852831010005289511400110001002650516055525001000529529529529529
400452840285251528528310100052895114001100043002650516055525001000529529529529540
40045284028525152852831010005289511400110000002660516055525001000529529529529529
40045283028525152852831010005289511400110000002650516055525001000529529529529529
40045284028525152852831010005289511400110000302650516055525001000529529529529529
40045284028525152852831010005289511400110000002650516055525001000529529529529529
40045284028525152852831010005289511400110000002650516055525001000529529529529529
40045284028525052852831010005289511400110000002650516055525001000529529529529529
40045284028525052852831010005289511400110000002660516055525001000529529529529529

Test 2: throughput

Count: 8

Code:

  movz x0, #0x1234, lsl 16
  movz x1, #0x1234, lsl 16
  movz x2, #0x1234, lsl 16
  movz x3, #0x1234, lsl 16
  movz x4, #0x1234, lsl 16
  movz x5, #0x1234, lsl 16
  movz x6, #0x1234, lsl 16
  movz x7, #0x1234, lsl 16

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)0318191e3f51schedule 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)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
802041009078000352560050600506005030025004969841006410064061060092802562001006435118020110099100801001000015112216221005759950801001006110061100611006110061
802041006081000772560050600506005030025014969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
8020410060780001192560050600506005030025014970551006010060081860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
802041006078010352560050600506005030025014969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
8020410060780004182560050600506005030025004969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
802041006078000352560050600506005030025014969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
802041006078000352560050600506005030025004969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
8020410060780001502560050600506005030025004969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
802041006078000582560050600506005030025014969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061
802041006078000352560050600506005030025004969801006010060031860050802002001006035118020110099100801001000005112216221005759950801001006110061100611006110061

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l2 tlb miss data (0b)18191e1f3a3f51schedule 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 miss (a1)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9accfd0d2l1i cache miss demand (d3)d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
800241005578000000792560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000316111003559994800101003910039100391003910039
800241003877000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000316111003559994800101003910039100391003910039
8002410038780000004602560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000316111003559994800101003910039100391003910039
800241003877000000562560004600046000430002004969581003810038318600048002020100383511800211091080010100001005021000450111003559994800101003910039100391003910039
800241003877000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000216111003559994800101003910039100391003910039
800241003877000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100001005021000216111003559994800101003910039100391003910039
800241003878000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000216111003559994800101003910039100391003910039
800241003878000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000216111003559994800101003910039100391003910039
800241003878000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000416111003559994800101003910039100391003910039
800241003878000000352560004600046000430002004969581003810038318600048002020100383511800211091080010100000005021000316111003559994800101003910039100391003910039