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

MRS (NZCV)

Test 1: uops

Code:

  mrs x0, nzcv

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 1.000

Load/store unit issues: 0.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)031e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)606d6emap 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)accfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
1004535433525100010001000500015355353703388100010001000535901110010732211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110019731211152910001000536536536536536
1004535403525100010001000500005355353703388100010001000535901110010731211152910001000536536536536536
10045354123525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500015355353703388100010001000535901110010731211152910001000536536536536536
1004535403525100010001000500005355353703388100010001000535901110010731211152910001000536536536536536

Test 2: throughput

Count: 8

Code:

  mrs x0, nzcv
  mrs x1, nzcv
  mrs x2, nzcv
  mrs x3, nzcv
  mrs x4, nzcv
  mrs x5, nzcv
  mrs x6, nzcv
  mrs x7, nzcv

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03l2 tlb miss instruction (0a)l2 tlb miss data (0b)1e3f4d51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6061696a6d6emap 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)l1d cache writeback (a8)a9acc2cdcfd0d2d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
802044018532300217376025801008010080286165200000493705540135401353005063008580100802008020040135901180201100991001005446230320511051421334013080000801004013640404403694030040256
802044025231101151396025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000010300511051321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540135402663005033008880100802008020040135901180201100991001001000000000511051321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000000000511050321334013080000801004013640136401364013640136
80204401353110005316025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000000000511050321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000000000511051321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000010000511051321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540308401353005033008880100802008020040135901180201100991001001000000000511050321334013080000801004013640136401364013640136
8020440135311000556025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000000000511051321334013080000801004013640136401364013640136
802044013531100123016025801008010080100165200015493705540135401353005033008880100802008020040135901180201100991001001000000000511051321334013080000801004013640136401364013640136

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)1e3f51schedule 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)9e9fl1d tlb access (a0)l1d cache writeback (a8)a9acc2cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)eb? int retires (ef)f5f6f7f8fd
800244006129900129402580010800108001058407504936965400454004529998330021800108002080020400459011800211091010010000000502022024400418000010800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001010000050203202340041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001000000050203203340041800000800104004640046400464004640046
80024400453000007051098001080010800105840750493696540045400452999833002180010800208011240045901180021109101001000000050202203240041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001000000050203202340041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001001000050203203340041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001009000050203203340041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001000000050203203340041800000800104004640046400464004640046
800244004530000040258001080010800105840750493696540045400452999833002180060800208002040045901180021109101001000000050203203240041800000800104004640046400464004640046
8002440045300001282258001080010800105840750493696540045400452999833002180010800208002040045901180021109101001000000150202204440041800000800104004640046400464004640046