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

MSR (FPCR)

Test 1: uops

Code:

  msr fpcr, x0
  mrs x0, fpcr

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 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)03091e3f5160696a6d6emap stall dispatch (70)map rewind (75)map stall (76)8283flush restart other nonspec (84)85inst all (8c)l1d tlb access (a0)l1d tlb miss (a1)l1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
1004110288500110132604979481102811028106513107561102811028111001000073114611110251102911029110291102911029
1004110288600110132604979481102811028106513107561102811028111001001073114611110251102911029110291102911029
1004110288600110132614979481102811028106513107561102811028111001000073114611110251102911029110291102911029
1004110288600110132604979481102811028106513107561102811028111001000073114611110251102911029110291102911029
100411028850011013260497948110281102810651310756110281102811100122022073114611110251106811029110291102911029
100411028850897110132604979481102811028106513107561102811028111001000373114611110251102911029110291102911029
1004110288500110132604979481102811028106513107561102811028111001000073114611110251102911029110291102911029
1004110288500110132614979481102811028106513107561102811028111001000073114611110251102911029110291102911029
1004110288500110132614979481102811028106513107561102811028111001000073114611110251102911029110291102911029
1004110288600110132604979481102811028106513107561102811028111001000073114611110251102911029110291102911029

Test 2: throughput

Code:

  msr fpcr, x0
  mrs x0, fpcr

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 11.0028

retire uop (01)cycle (02)031e3f51schedule 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)9fld unit uop (a6)l1d cache writeback (a8)acbranch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfmap dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
102041100288530110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000001117192400110025100110029110029110029110029110029
1020411002885312110013261001001005001491069481100281100281086177108722100200200110028877811110201100991001001000101117192400110025100110029110029110029110029110029
102041100288530110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000001117192400110025100110029110029110029110029110029
1020411002885312110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000001117192400110025100110029110029110029110029110029
102041100288530110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000101117192430110025100110029110029110029110029110067
1020411002885312110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000031117192400110025100110029110029110029110029110029
102041100288520110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000101117192400110025100110029110029110029110029110029
102041100288530110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000101117192400110025100110029110029110029110029110029
1020411002885212110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000031117192400110025100110029110029110029110029110029
102041100288530110013261001001005000491069481100281100281086177108722100200200110028877811110201100991001001000001117192430110025100110029110029110029110029110106

1000 unrolls and 10 iterations

Result (median cycles for code): 11.0028

retire uop (01)cycle (02)03l1i tlb fill (04)mmu table walk data (08)09l2 tlb miss data (0b)18191e1f3a3f51schedule 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 tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)a9acc2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
10024110028853000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000100064051356611002510110029110029110029110029110029
10024110028853000000000110013261010105004910694811002811002810853431086391020201100281100281110021109101010000000064061356611002510110029110029110029110029110029
10024110028853000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000003064061356611002510110029110029110029110031110029
10024110028853000000000110013261010105014910694811002811002810858531086391020201100281100281110021109101010000000064071357711002510110029110029110029110029110029
1002411002885200000000011001326101010501491069481100281100281085343108639102020110028110028111002110910101000022821064071357711002510110029110029110029110029110029
100241100288530000000001100132610101050149106948110028110029108534310863910202011002811002811100211091010100001030640716711711002510110029110029110029110029110029
10024110028853000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000100064051357711002510110029110029110029110029110029
10024110028853000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000000064061356611002510110029110029110029110029110029
10024110028852000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000000064071357711002510110029110029110029110029110029
10024110028853000000000110013261010105014910694811002811002810853431086391020201100281100281110021109101010000000064061356611002510110029110029110029110029110029