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

Test 1: uops

Code:

  strh w0, [x6]
  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)6d6emap 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 tlb miss (a1)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
100556040315271616025100010001000224245495423633408100010002000542542111001100010001000034100208100223473216115391000543543543543543
100454240915341616025100010001000228085425423553400100010002000542542111001100010001000034100202100223473116115391000543543543543543
100454240305341616025100010001000224245495423633400100010002000550542111001100010001000034100202100223473116115391000647543543543543
100454240305271616025100010001000224245425493553400100010002000542550111001100010001000034100208100223473116115481000552552543543543
100454240315271616025100010001000224245495423633408100010002000542542111001100010001000034100205100223473116115461000550543543543543
100454240305271616025100010001000224245425503553407100010002000542551111001100010001000034100208100223473116115391000550551543543543
100454240315351616025100010001000227845425423633400100010002000550542111001100010001000034100202100223473116115391000550551543543543
100454240305271616025100010001000227605425423553407100010002000542542111001100010001000034100202100223473116115481000551552543543543
100454240305271616025100010001000227605425423553408100010002000542542111001100010001000034100208100223473116115481000543543583543552
100454240305351616025100010001000227845425423643408100010002000542542111001100010001000034100208100223473116115391000551552543543543

Test 2: throughput

Count: 8

Code:

  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  strh w0, [x6]
  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)03l2 tlb miss data (0b)18191e1f22233f46494f51schedule 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)c2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)? int retires (ef)f5f6f7f8fd
80205400423000006933104002816161258010010080000100800065001839474049369624004040042299617299958010620080016200160032400423199511802011009910080000100800001008000042080002008000220011151181116101040037800001004004140055400434004340043
80204400423000001170104002516161258010010080000100800065001839503049369624004040043299617300068010620080016200160032400423199311802011009910080000100800001008000042080002028000224201115118101671240039800001004004440043400414004440043
8020440040300000486310400270160258010010080000100800005001839472049369624004340043299553300128010020080000200160000400423199511802011009910080000100800001008000042080002028000200000051101216121440040800001004004140043400414004440043
80204400433000005253004002501612580100100800001008000050018393520493696040040400423001433001280100200800002001600004004231993118020110099100800001008000010080000420800020280002242000051101316111140039800001004004340043400434004340041
802044004030000003104002716160258010010080000100800005001839448049369744004240040299553300018010020080000200160000400403199511802011009910080000100800001008000042080002008000020000051101116101240039800001004004340041400434004340043
802044004230000051931040025161612580100100800001008000050018394720493696040042400422995632999880100200800002001600004005431995118020110099100800001008000010080000420800021080002042000051101216101040039800001004004140041400434004440043
802044004030000184310400271616125801001008000010080000500183944804936962400424004229955330000801002008000020016000040042319951180201100991008000010080000100800000080002008000224200005110101681140037800001004004340043400414004340043
8020440040300000516310400271616025801001008000010080000500183935204936962400424004229955330000801002008000020016000040042319951180201100991008000010080000100800000080000028000224200005110121611740039800001004004340043400434004340044
8020440040300000450010400280002580100100800001008000050018394480493696040040400432995333000080100200800002001600004004031995118020110099100800001008000010080000420800000280002242000051101216111040039800001004004340043400434004340041
80204400423000004443104002701602580100100800001008000050018394480493696040042400402995533000080100200800002001600004004331993118020110099100800001008000010080000420800021280002042000051101216111040037800001004004440043400434004440043

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)1e1f2223243a3f46494f51schedule 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)c2cfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
8002540042300110124201001400371616525800101080000108000050183986014936980400584004729996330040800102080000201600004005840057118002110910800001080000108001414000800160118800021636141502001616101040046080000104006040053400624005340060
80024400533001110615100140044161652580010108000010800005018402681493697240052400532998733003880010208000020160000400534004711800211091080000108000010800161536018001600148000214361405020091610840056080000104005340060400534004840053
800244004730010010191001400360160258001010800001080000501839692149369834004840047299953300328001020800002016000040058400471180021109108000010800001080015143602800160014800001636141502009169940048080000104006140060400614005940049
8002440052300101001710014003816161258001010800001080000501839932149369704005840050299853300328001020800002016000040060400471180021109108000010800001080015150008001601178000016014250200916101040047080000104005940053400614006040059
8002440047300100061910014004616169258001010800001080000501840174149369694005840058299943300408001020800002016000040058400581180021109108000010800001080014163601800161015800021634141502009169840044080000104005940048400604005140053
80024400613001101014100140035161604080010108000010800005018402201493698740052400592998733003980010208000020160000400474005911800211091080000108000010800141502080014001880000163614050200101610940044080000104005340060400544006040052
800244005830010010191001400431616525800101080000108000050183969214936981400524005929987330027800102080000201600004005240059118002110910800001080000108001415360180016001780000163614150200101691040058080000104006040053400594004840059
80024400473001011019000140035160525800101080000108000050184024414936972400534005229987330027800102080000201600004005340058118002110910800001080000108001515360180014011880002163614250200816101140049080000104005340049400544006040052
8002440058300111101910014004416155258001010800001080000501840268149369734005140053299873300388001020800002016000040052400521180021109108000010800001080016140008001601188000216361415020010169940048080000104006140060400484005940058
8002440047300111102110014004401652580010108000010800005018399561493697140061400512998633003980010208000020160000400494005211800211091080000108000010800141436008001601198000014351425020010169940055080000104005440059400484006240053