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

STRB (unsigned offset)

Test 1: uops

Code:

  strb w0, [x6, #8]
  mov x0, 0

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 0.000

Load/store unit issues: 1.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)031e1f223f46494f51schedule uop (52)schedule ldst uop (55)dispatch ldst uop (58)simd uops in schedulers (5a)606d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map ldst uop (7d)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst int store (96)inst ldst (9b)l1d tlb access (a0)l1d cache miss st (a2)st unit uop (a7)l1d cache writeback (a8)acafbcl1d cache miss st nonspec (c0)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)f5f6f7f8fd
1005542303152716160251000100010002285615425423553398100010002000549542111001100010001000341000011100223473216225391000543543550551550
10045424030527160325100010001000228080540540355340010001000200054255011100110001000100034100202110022073216225471000543543543541543
10045424031535160025100010001000223520550542362339810001000200054954211100110001000100034100202100223473216225461000543543543543541
100454240015270160251000100010002242405405503533408100010002000542542111001100010001000010020210002073216225391000551541551550543
100454243615270002510001000100022352055054235334001000100021465405421110011000100010000100200100223473216225481000541543543543541
100454040015271616025100010001000228080540542362340010001000200054054011100110001000100034100200100223473216225391000543541543541541
10045424091535161602510001000100022760054054235533981000100020005425421110011000100010003410020010022073216225371000543541543552541
1004540403152501602510001000100022808054054236434001000100020005405421110011000100010003410020010020073216225371000550551552541541
10045424031525160025100010001000224240542540353340010001000200054255011100110001000100034100205100223473216225391000541543543543543
10045423031527016025100010001000223520542542355340010001000200054255011100110001000100034100212100223473216225391000552551550543541

Test 2: throughput

Count: 8

Code:

  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  strb w0, [x6, #8]
  mov x7, x6
  mov x8, x6
  mov x9, x6
  mov x10, x6
  mov x11, x6
  mov x12, x6
  mov x13, x6

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)031e1f22233f46494f51schedule uop (52)schedule int uop (53)schedule ldst uop (55)dispatch int uop (56)dispatch ldst uop (58)int uops in schedulers (59)simd uops in schedulers (5a)696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)map int uop inputs (7f)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int store (96)inst int alu (97)inst ldst (9b)9fl1d tlb access (a0)l1d cache miss st (a2)st unit uop (a7)l1d cache writeback (a8)acafbcl1d cache miss st nonspec (c0)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)? int retires (ef)f5f6f7f8fd
8020540051300000040027161622580100100800001008000050018393524936962400404004229955329998801002008000020016000040042320031180201100991008000010080000100800003480000108000220051101161140039800001004004140460400434004340043
802044005030003104002516160258010010080000100800005001839352493696240042400402995532999880100200800002001600004004231995118020110099100800001008000010080000348000201180002034051101161140039800001004005140041400514004340043
8020440042300031040036161602580100100800001008000050018393524936970400404004229955330008801002008000020016000040042319951180201100991008000010080000100800000800020080002234051101161140048800001004004340041400434004140043
80204400403000310400271616025801001008000010080121500183985649369604004240042299553300008010020080000200160000400423199511802011009910080000100800001008000034800020080002034051101161140039800001004004340041400434005040041
8020440050300031040027016025801001008000010080000500183942449369624004040042299553300078010020080000200160000400423199311802011009910080000100800001008000034800000280002234051101161140037800001004004340043400434004140043
8020440040300030040025160025801001008000010080000500183935249369624004240040299553299988010020080000200160000400423199511802011009910080000100800001008000034800020280002234051101161140047800001004004340043400434004340043
80204400503000010400251616025801001018000010080000500183942449369624004240040299553299988010020080000200160000400423199311802011009910080000100800001008000034800000080002234051101161140047800001004004340041400434004140041
802044004030000104002701602580100100800001008000050018393524936960400424004229953330009801002008000020016000040040319951180201100991008000010080000100800000800020080002234051101161140039800001004005240043400514004340041
8020440040300031040036161602580100100800001008000050018393524936960400424004929955330000802462008000020016000040040319931180201100991008000010080000100800000800020280002034051101161140037800001004004340043400434004340043
80204400423000300400270160258010010080000100800005001839424493696240049400422995533000080100200800002001600004004031993118020110099100800001008000010080000080000008000220051101161140037800001004004340043400414005040043

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l2 tlb miss instruction (0a)1e1f223f46494f51schedule uop (52)schedule int uop (53)schedule ldst uop (55)dispatch int uop (56)dispatch ldst uop (58)int uops in schedulers (59)simd uops in schedulers (5a)60696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)map int uop inputs (7f)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int store (96)inst int alu (97)inst ldst (9b)9fl1d tlb access (a0)l1d cache miss st (a2)a4st unit uop (a7)l1d cache writeback (a8)acafbcl1d cache miss st nonspec (c0)cfd5map dispatch bubble (d6)ddfetch restart (de)e0ea? ldst retires (ed)? int retires (ef)f5f6f7f8fd
8002540040300000140027160025800101080000108000050183942414936962400404004029975330020800102080000201600004004040049118002110910800001080000108000034080002108000223450201516121240039080000104004140041400414004140043
8002440040300009140027161602580010108000010800005018393521493696040040400402997733003080010208000020160000400404004211800211091080000108000010800003408000205800002345020716121240037080000104018240051400434004140043
800244004030000014003501602580010108000010800005018394241493697140042400422997533002280010208000020160000400404005011800211091080000108000010800003408000200800022050201416111340046080000104004340050400414004140043
80024400403000090400271616025800101080000128000050183935214936962400404004229975330020800102080000201600004004240040118002110910800001080000108000000800020080000234502081691040039080000104004340041400434005240043
80024400403000001400351600258001010800001080000501839808149369694004240050299843300228001020800002016000040040400401180021109108000010800001080000008000000800020345020141611740039080000104004140052400434005140043
800244005130000304002700025800101080000108000050183935214936962400424004229977330022800102080000201600004004040042118002110910800001080000108000034080002028000203450201116131140039080000104004140041400504004340041
80024400423000031400340002580010108000010800005018394241493696240042400422997733002280010208000020160000400424004211800211091080000108000010800003408000202800022345020816121340047080000104018240043400434004340043
8002440042300003140175161602580010108000010800005018393521493696040042400422997733003180010208000020160000400424004211800211091080000108000010800000080000028000223450201016101140039080000104004340043400434004340041
80024400422990060400271616025800101080000108000050183985604936960400404004229985330020800102080000201600004005140042118002110910800001080000108000000800020080002205020816111340039080000104004340041400524004340041
80024400423000031400341616025800101080000108000050183935214936962400404004029977330020800102080000201600004005040042118002110910800001080000108000034080002028000003450201116121340037080000104004340041400434004140041