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

STRH (register)

Test 1: uops

Code:

  strh w0, [x6, x7]
  mov x0, 0
  mov x7, 8

(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
100555140305361616025100010001000224241542542355340010001000300054254211100110001000100034100205100223473116115471000551551552543552
100455140315271616025100010001000224240542550355340010001000300054254911100110001000100034100202100223473116115391000543543543543543
100454240315271616025100010001000224240542542355340010001000300054255111100110001000100034100202100223473116115391000543543543543543
100454240905271616025100010001000224240542542363340010001000300054254211100110001000100034100202100223473116115481000551552543543543
100454930305271616025100010001000224240542550355340010001000300054254911100110001000100034100202100223473116115391000543543543543543
100454240305351616025100010001000228080542542363340010001000300054255011100110001000100034100202100223473116115471000552550543543543
1004542409153516162251000100010002242405425423633400100010003000542542111001100010001000341002011100223473116115391000543543543543543
100454240905271616025100010001000224240542542363340010001000300054254211100110001000100034100202100223473116115391000543543543543543
100454240905271616025100010001000224241542551355340010001000300054254211100110001000100034100202100223473116115391000543543543543543
100454240315271616025100010001000224240542550355340010001000300054255011100110001000100034100202100223473116115471000552543543543543

Test 2: throughput

Count: 8

Code:

  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  strh w0, [x6, x7]
  mov x7, 8

(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)03l1d tlb fill (05)l2 tlb miss data (0b)1e1f22233f46494f51schedule 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)st unit uop (a7)l1d cache writeback (a8)a9acafbcl1d cache miss st nonspec (c0)branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)e0? ldst retires (ed)? int retires (ef)f5f6f7f8fd
80205400423001003104003401602580100100800001008000650018394551493696240042400402995972999480106200800162002400484004231993418020110099100800001008000010080000348000200280002234111511801640039800001004005140043400504004140050
8020440042300000000400360160258010010080000100800075001839858149369624004240040299597299928010720080016200240048400423199311802011009910080000100800001008000008000000128000020111511801640037800001004004340051400414004140041
80204400423000000104002716002580100100800001008000750018393781493696240040400422996172999480106200800162002400484004231995118020110099100800001008000010080000348000200080000234111511801640037800001004004340051400434004140043
802044004029900030040035000258010010080000100800075001839455149369624004240042299597299948010720080016200240048400423199511802011009910080000100800001008000008000200580000234111511801640039800001004004340043400434004340050
802044004030000060040027161602580100100800001008000750018394551493696240040400402996972999480107200800162002400484005131993118020110099100800001008000010080000348000000080000034111511801640046800001004005040043400514004340043
802044004030000000040034000258010010080000100800065001839378149369604004040040299617299928010720080016200240048400424059611802011009910080000100800001008000008000000080000234111511801640039800001004004140041400434004340050
8020440042300000610400341600258010010080000100800075001839378149369624004940049299597299948010620080016200240048400433200411802011009910080000100800001008000008000200280002234111511801640039800001004004140041400434004340041
80204400422990000104002501602580100100800001008000750018394551493696040040400422996173000280106200800162002400484004331995118020110099100800001008000010080000348000200280002034111511801640037800001004005140043400514004140041
80204400403000000104002716002580100100800001008000750018393781493697140042400402995973000380106200800162002400484004331995118020110099100800001008000010080000348000000280000234111511801640037800001004004340051400414004140043
80204400403000000104003501602580100100800001008000750018398871493696240042400512995972999480106200800162002400484004231993118020110099100800001008000010080000348000000080002234111511801640039800001004004340041400434004140041

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)1e1f22233a3f46494f51schedule 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 tlb miss (a1)l1d cache miss st (a2)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2branch cond mispred nonspec (c5)cdcfd2l1i cache miss demand (d3)d5map dispatch bubble (d6)d9daddfetch restart (de)e0ea? ldst retires (ed)? int retires (ef)f5f6f7f8fd
80025400583001111620001400431616225800101080000108000050184022014936978400534005829982330038800102080000202400004005840058118002110910800001080000108001616360180016011880002163614100502006616206340044080000104005940053400604005440048
80024400523001001019101400351616325800101080000108000050184031614936971400594006029993330032800102080000202400004005240052118002110910800001080000108001515360080014021480000143614200502005416004340050080000104005140048400524004840061
8002440059299110101910140044160525800101080000108000050183969214936972400504004729987330039800102080000202400004004740607118002110910800001080000108001515350280016012080002163614000502005416002440055080000104005940050400484004840053
8002440060300101101910140037016225800101080000108000050183969214936967400474006129993330032800102080000202400004005840047118002110910800001080000108001514360280016011980002143614200502005416004240044080000104006040048400594005140054
800244006030011110210014004316052580010108000010800005018402441493697940047400472998733003980010208000020240000400524005211800211091080000108000010800151436008001600148000216014100502005416004240044080000104005940048400494004840060
800244005230011110191014003501602580010108000010800005018397881493697140059400492999533002780010208000020240000400594006011800211091080000108000010800161536018001600148000016014100502005416004240049080000104005340059400534006040051
800244004730011100190014003200625800101080000108000050184022014936978400524005829994330039800102080000202400004005240047118002110910800001080000108001414360080014001880002163614000502005316002440055080000104004840058400534005940048
80024400473001000017101400361616625800101080000108000050184024614936967400594005929993330031800102080000202400004046340058118002110910800001080000108001515360180016001880002143614001502005616004340044080000104005140051400604005340060
8002440050300110101900140032016025800101080000108000050183969314936967400584005829994330031800102080000202400004005940047118002110910800001080000108001516360080016011880000163614100502005416002440044080000104006040051400484004840053
800244004730010110201014004316052580010108000010800005018402681493697940052400472999333003980010208000020240000400574006011800211091080000108000010800161502180016011880002163614000502005216215240054080000104005140060400534004840061