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

DMB (ISHLD)

Test 1: uops

Code:

  dmb ishld

(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)031e3f51schedule uop (52)schedule ldst uop (55)dispatch ldst uop (58)simd uops in schedulers (5a)60696d6emap rewind (75)map stall (76)dispatch uop (78)map ldst uop (7d)8283flush restart other nonspec (84)85inst all (8c)inst barrier (9c)ld unit uop (a6)st unit uop (a7)accfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)f5f6f7f8fd
1004303523030112001100010001000600004230353027328931000100030353026111001100001000073216113032100030273036302830363028
1004302723030202009100010001000600004230353027328851000100030273035111001100001000073116113032100030273036302730363028
1004303522030112000100010001000600013430263035328931000100030273035111001100001000073116113023100030363028303630273036
1004303522030202000100010001000600003430263035328851000100030263035111001100001000373116113023100030363027303630283027
1004302623030202009100010001000600004230353026328841000100030353027111001100001000073116113032100030283036302730363036
1004303523030202009100010001000600004230353027328841000100030353026111001100001000373116113032100030363027303630273036
1004303522030202009100010001000600013230263035328931000100030253035111001100001000073116113032100030363027303630273036
1004303523030122001100010001000600003230263035328931000100030253035111001100001000073116113024100030363028303630273036
1004303522030202001100010001000600003330263035328931000100030263035111001100001000073116113022100030363028303630283036
1004303522030122001100010001000600003430263035328931000100030273035111001100001000073116113024100030363027303630263036

Test 2: throughput

Code:

  dmb ishld

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 2.9043

retire uop (01)cycle (02)03mmu table walk data (08)1e3f51schedule 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)60696a6b6d6emap rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)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)inst barrier (9c)9fst unit uop (a7)l1d cache writeback (a8)acbranch mispred nonspec (cb)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)? int retires (ef)f5f6f7f8fd
10204291122180029120190081010010010000100100005005980004926055029025291353277361010020010000200290422329511102011009910010010000100100000007101161129032100001002913629037291362904329037
10204290362190029120190081010010010000100100005005980004925954029135290253277441010020010000200291352322211102011009910010010000100100000007101161129033100001002903629136290452913629035
10204290342180029012189171010010010000100100005005980004926055029043291353278431010020010000200291352322111102011009910010010000100100000007101161129032100001002913629044291362903629136
10204291352180629019189171010010010000100100006055980004925955029135290443277511010020010000200290342329511102011009910010010000100100001007101161129040100001002913629026291362903629136
10204291352170029120190081010010010000100100005005980004925948029135290343277521010020010000200291352969811102011009910010010000100100000126307101161129132100001002904329136290442913629045
10204290442180629120190081010010010000100100005005980004926055029035291353278431010020010000200291352329511102011009910010010000100100000607101161129040100001002913629029291362903529136
10204291352170029028189081010010010000100100005005980004926055029035291353278431010020010000200290272329511102011009910010010000100100000007101161129132100001002904329136290442913629045
10204290442180029027190081010010010000100100005005980014925963029135290353277361010020010000200291352322111102011009910010010000100100000007101161129132100001002903629043291362904429136
10204291352170029028189081010010010000100100005005980004926055029035291353278431010020010000200290342329511102011009910010010000100100000007101161129132100001002903529136290262913629036
10204290352180029020189171010010010000100100005005980004926055029044291353278431010020010000200291352321511102011009910010010000100100000007101161129132100001002902629136290362913629029

1000 unrolls and 10 iterations

Result (median cycles for code): 2.9951

retire uop (01)cycle (02)030918191e3f51schedule 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 rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)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)inst barrier (9c)9fst unit uop (a7)l1d cache writeback (a8)a9accfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
1002429921224000384299361991510010101000010100005059982149267852986629866329139100102010000202986729865111002110910101000010100000006403162229948010000102995229952299522995229867
100242986722400030298511983110010101000010100005059982149267852986629866328595100102010000202986729866111002110910101000010100000006403163329864010000102986729868298672986729866
1002429866223000273299361991510010101000010100005059982149268712995129951328596100102010000202995129951111002110910101000010100000006403163329862010000102995229952299522995229952
1002429951224000267298521983110010101000010100005059982049267852986729865328597100102010000202986729867111002110910101000010100000006403162229864010000102986729868298672986729866
100242986622400027298491983010010101000010100005059982049267872986429865328681100102010000202995129951111002110910101000010100000006403163329862010000102986629865298682986629952
1002429951225000318298521983010010101000010100005059982049268712995129951329001100102010000202995129951111002110910101000010100000006403163329862010000102986829867298672986829867
1002429864224000345298521991510010101000010100005059982049268712995129951328681100102010000202995129951111002110910101000010100000036402163329948010000102995229952299522995229952
1002429951225000645298511983210010101000010100005059982149267862986529867328597100102010000202995129951111002110910101000010100000006402162229862010000102986629865298682986629867
1002429867224000318298521983110010101000010100005059982049267872986729866328597100102010000202986729867111002110910101000010100000006402163329862010000103003830052298652986829993
100242986522303030299361991510010101000010100005059982149268712995129951328681100102010000202995129951111002110910101000010100000006623165329948110000102995229952299522995229952