Apple M1 Microarchitecture Research by Dougall Johnson

Firestorm: Overview | Base Instructions | SIMD and FP Instructions
Icestorm:  Overview | Base Instructions | SIMD and FP Instructions

LDR (literal, S)

Test 1: uops

Code:

  ldr s0, .+4

(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 (01)cycle (02)0305080b0f1e2022233a3f4043464f51inst issue (52)~issue ld/st (55)~dispatch ld/st (58)huge thing ld/st (5a)60696d6edispatch stall (70)scheduler rewind (75)scheduler stall (76)~dispatch op (78)~map op ld/st (7d)8283pipeline redirect (84)85inst all (8c)inst fp/simd load (98)inst ldst (9b)9da0a1a2a3a6a7a8a9abacafb5b6bbdcache load miss (bf)dtlb miss (c1)c2c3cfd5d6ddinst fetch restart (de)e0eaebecld/st retires (ed)f5f6f7f8fd
1004386200005324000379000425100010001000147740361394394216324610001000394402111001100010000102021032103900005010201224016191073116113914221000400388395389395
10044093120037010137314008251000100010001509703683943932153252100010003933941110011000100001019200161029205124410201223932190073116113904221000389388396389394
10043883110053000237200092510001000100014887036238738821032451000100038638611100110001000010192001610290006471016613016191073116113854421000389405396402389
10044043101037000137200062510001000100014725036238838721032451000100039138611100110001000010201901610291060311010612916191073116113844121000388389389388388
10043873100038000137300432510001000100014774136238838821032451000100038638611100110001000110202101610291006371010613016191073116113842221000388387387388388
10043933111037000037300042510001000100014788036138638821032461000100038738611100110001000010191901610290004541027612916191073116113854421000389388389388388
10043873110037000137301052510001000100015023136338838921032461000100038838711100110001000010202001610291016411010612916191073116113844421000388388388389388
10043942111037010037300182510001000100015059036138739421732521000100039338611100110001000010212101610290006371010613016191073116113834221000389389388389388
10044022100037000137300042510001000100014759036338738821332461000100038738711100110001000010201901610291004531010612916190073116113784221000388389389388389
1004397310101600003650005251000100010001459903563803812033239100010003803851110011000100011007013210100001020101062201600073116113776321000381381382387388

Test 2: throughput

Count: 8

Code:

  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4
  ldr s0, .+4

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire (01)cycle (02)030508090b0e18191e1f20223a3e3f404346494f51inst issue (52)~issue int (53)~issue ld/st (55)~dispatch int (56)~dispatch ld/st (58)huge thing int (59)huge thing ld/st (5a)60696b6d6edispatch stall (70)scheduler rewind (75)scheduler stall (76)~dispatch op (78)~map op int (7c)~map op ld/st (7d)~map lookup int (7f)8283pipeline redirect (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst b.cc (94)inst integer (97)inst fp/simd load (98)inst ldst (9b)9d9fa0a1a2a3a5a6a7a8a9abacafb5b6bbdcache load miss (bf)c2c3cfd5d6d8ddinst fetch restart (de)e0? int output thing (e9)eaebecld/st retires (ed)gpr retires (ef)f5f6f7f8fd
8020426731200162110001110007026720032272580100100800001008000050011751930266940267162672316646316678801002008000020026718267161180201100991001008000080000010080736023208004212732080185800961221116824985110216022267160432800001002671726719268202672426734
802042694120001405000250709026697620062580100123800001008000050011683070274520267152716116638316675801002048000020227411267134180201100991001008000080000010080789611321198004016411516228801396211162524225110216122222670922432800001002671426762272682671426714
802042693120002080006061200266980000264168801001008000010080712500117200112668802671327568166363017337801002008057520027273267131180201100991001008000080000010080078114132080402830900145801746110166971751102160222730121432800001002671926714267142671426725
80204267202000350750001705027702669762003258010010080130100807126261166200126688026717271671663631721780100200800002002682526713118020110099100100800008000001008024897016358003151717901458018512310161871555110216022267570432800001002672126714267132671426723
80204268662000009100017012114026957310037258010010080130100801785001169079026690026867267131663531667180100200800002002671326715118020110099100100800008000001008031612160800426184162670803286111161463925110216022267100432800001002671426714267142671426810
802042678620200047001170515016268520000325801001008000010080000500116858102682802671326925166433166718030420080000200267192671231802011009910010080000800000100804203511608003840813960176801786112164062125110216022267240432800001002671426714267142671426723
8020426867200000660004804110267030000102580100123800001188000057011683040266880267132672016635101667880479200800002002671326713118020110099100100800008000001008010500160800338121280558031412111163191495110216022267100532800001002671426719267142672426876
802042686920005606000017001002685451001072580255100801301008017850011716570266880269782671916804316667801002008019020026718269781180201100991001008000080000010080346186016080152108315969478010412221324511425110216022267100532800001002672026725267202671626718
802042685220005302200020502652026704000072580100100800001278000060111725221267020267182681816642316677801002008000020026713267191180201100991001008000080000010080192013208001394186161168018712120324941555110233022268530432800001002672826724267172672426739
8020426735200043048100340701026699120003258010010080000100800005001166655126695026721267131663631668980100200800002002671326713118020110099100100800008000001008013033160800394454331611580025611016741555110216022267100432800001002692526714267152696826714

1000 unrolls and 10 iterations

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

retire (01)cycle (02)0308090b1e202223292b3a3e3f404346494f51inst issue (52)~issue int (53)~issue ld/st (55)~dispatch int (56)~dispatch ld/st (58)huge thing int (59)huge thing ld/st (5a)696d6edispatch stall (70)scheduler rewind (75)scheduler stall (76)~dispatch op (78)~map op int (7c)~map op ld/st (7d)~map lookup int (7f)8283pipeline redirect (84)85inst all (8c)inst branch (8d)inst branch taken (90)92inst b.cc (94)inst integer (97)inst fp/simd load (98)inst ldst (9b)9d9fa0a1a2a3a6a7a8a9abacafb5b6bbdcache load miss (bf)c2c3cdcfd5d6ddinst fetch restart (de)e0e7eaebecld/st retires (ed)gpr retires (ef)f5f6f7f8fd
800242697720101028390100011562682510786374172258001010800001080000501176109268432685026903168413168188001020800002026820268471180021109010108000080000010801280527280272170216320502803251451725029619240050205163326859023181180000102683426842268502682826833
8002426872201010380108102409362683910764033752580010108000010800005011733492681726834268281679031682280010208000020269292691511800211090101080000800000108013602333880347194218042320805011102225326265129050203163326844032231780000102691826878269262686826880
8002426920201000470115100093626785120123221692580010108000010800005011764622678726837268411678131680280010208000020268462689411800211090101080000800000108014721734680319105317364391803401302329334749110050202162326848027302080000102690126892269042691326887
8002426851201110353631001370268407165652962580010108000010800005011769272683426843268601678731683880010208000020268672685111800211091101080000800000108016401130180300132321722340804451112527938024219050203162326854025191280000102682926877268682684226825
8002426959201000409143000096026843857195277258001010800001080000501183176268572685027349168233168278036820800002026857268691180021109010108000080000010801220133118021710341788628480380761418525035269050202163326848026331180000102684026878268202682526837
800242694020100535524102401372268317210854987258001010800001080000501178183267932685026875168263168378001020800002026883268831180021109110108000080000010801110627980228157210336268805641311519627710121050203163326848022241080000102681826864268532685526864
8002427030202620370119000111642686097539721022580010108000010800005011742232688126850268231676931687880010208000020269712682311800211090101080000800000108008901727280226133215530406804071742025332512110050203163226850028181080000102685926869268602692326914
800242700820100032168102408802685311611382581258001010800001080000501174824268662681026828168243168488001020800002026874268591180021109010108000080000010801440836780250192213162373804681301520926972656050203163326840032191880000102685926877269372685926836
80024269702011003766710005442680178550478125800101080000108000050117710126782268382684716842316830805462080000202688926861118002110901010800008000001080075013478802799031036636880415188202544334575050203163326889015221180000102681026842268242683726841
8002427004201000425210000123226824846474280258001010800001080000501177944268282705526844167593168438001020800002026864268521180021109010108000080000010802072163318019317031645029780369101171962436115405020316432683412917780000102686626870268442684826849