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

STRB (post-index)

Test 1: uops

Code:

  strb w0, [x6], #8

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 2.000

Integer unit issues: 1.000

Load/store unit issues: 1.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)1e1f2022293a3e3f4046494f51schedule 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)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)l1d cache miss ld (a3)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)aaabacafbcl1d cache miss st nonspec (c0)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
10051040800185002411010251994025200010001000100010005077845824104010408243898200010002000104012411100110001000103004031810001146110160597321611103710001000100010411041104110411041
1004104080004220000102592151252000100010001000100050778458241040104082438982000100020001040124111001100010001044072001000000010080727311611103710001000100010411041104110411041
10041040700650000010250100252000100010001000100050778458241040104082438982000100020001040124111001100010001038080527100002814610250567311611103710001000100010411041104110411041
10041040800650000010250010252000100010001000100050778458241040104082438982000100020001040124111001100010001046080214100001412010141647311611103710001000100010411041104110411041
1004104070094210050102517330252000100010001000100050778458241040104082438982000100020001040124111001100010001028080728100101412610140487311611103710001000100010411041104110411041
100410408000416100010251132025200010001000100010005077845824104010408243898200010002000104012411100110001000102207201410000146010180567311611103710001000100010411041104110411041
100410408100322007410251112125200010001000100010005077845824104010408243898200010002000104012411100110001000101504861510081148010160647311611103710001000100010411041104110411041
100410408006400001210250001252000100010001000100050778458241040104082438982000100020001040124111001100010001038096018100001412610140697311611103710001000100010411041104110411041
100410408006421000010250001252000100010001000100050778458241040104082438982000100020001040124111001100010001018066514100001612010000617311611103710001000100010411041104110411041
100410407006418107010251142025200010001000100010005077845824104010408243898200010002000104012411100110001000101808051410000148010140487311611103710001000100010411041104110411041

Test 2: Latency 2->2

Code:

  strb w0, [x6], #8

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 1.0040

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)1e1f20222324293a3c3e3f404446494f51schedule 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)l1d cache miss ld (a3)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9aaabacafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)eaeb? ldst retires (ed)? int retires (ef)f5f6f7f8fd
10209100407510102211918453005448802521002580701301684525201001010010000101001000052212746882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109478135541306771025528709327289710907241355707101171110037100004010000101001004110041100411004110041
102041004075100021091078472005448102481002580401471574025201001010010000101001000052213146882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109037142039306811027027629367887910890201300707101171110037100000010000101001004110041100411004110041
10204100407510002037978612005369103041002578901671864025201001010010000101001000052210946882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109417145239106821026026309367087610933231400707101171110037100005010000101001004110041100411004110041
10204100407710002208988462005527902641002576301501184325201001010010000101001000052215746882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109017149739506601026330809329095410935251191707101171110037100000010000101001004110041100411004110041
10204100407511102229858512005208402321002579701531523625201001010010000101001000052207746882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109437155737407041025730028648094110902281362717101171110037100000010000101001004110041100931007810041
10204100407610102154948252005368602601002580801581364025201001010010000101001000052215146882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109037138639316981024727909327891310929271312717101171110037100001010000101001004110041100411004110041
10204100407510102064978202005608002161002576101451764925201001010010000101001000052205146882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109177133440906821024127009249493510910311210707101171110037100005010000101001004110041100411004110041
102041004075101022261028492004967502281002579601801793125201001010010000101001000052214746882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109128152241606441025729809147089610943221281717101171110037100009010000101001004110041100411004110041
10204100407510002235898452005288101881002579201581873125201001010010000101001000052215546882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100109267143141206971023630808887888310912251277707101171110037100000010000101001004110041100411004110041
10204100407510002175938142005369402081002578301851763925201001010010000101001000052214946882404969601004010040867438747201002001000020020000100401221110201100991001000010010000100108888139839706721025129509588297910917221222717101171110037100000010000101001004110041100411004110041

1000 unrolls and 10 iterations

Result (median cycles for code): 1.0040

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)l2 tlb miss data (0b)1e1f2022293a3c3e3f4046494f51schedule 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)l1d cache miss ld (a3)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9aaabacafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)ea? ldst retires (ed)? int retires (ef)f5f6f7f8fd
10029100407511024247882317447811681002577410610937252001010010100001001010000521081468824149696010040100408696387702001020100002020000100401241110021109101000010100001010902013863790659102622640924408201091413115500640316221003710000310000100101004110041100411004110041
1002410040751002208868581744681156100257648811224252001010010100001001010000521073468824149696010040100408696387702001020100002020000100401241110021109101000010100001010916713173800673102552550902428561090323125670640316221003710000110000100101004110041100411004110041
10024100407511022418579317447221601002575812412932252001010010100001001010000521121468824149696010040100408696387702001020100002020000100401241110021109101000010100001010918013473480702102632950906508691090816124600640216331003710000110000100101004110041100411004110041
10024100407510023438777617444411201002576413712432252001010010100001001010000521121468824149696010040100408696387702001020100002020000100401241110021109101000010100001010897813213780665102502871874408991091419117371640216221003710000010000100101004110041100411004110041
1002410040751002142948071736750152100257847514527252001010010100001001010000521049468824149696010040100408696387702001020100002020000100401241110021109101000010100001010900714963820644102502801928468671094818117070640316221003710000010000100101004110041100411004110041
10024100407500023287680617526801001002580712312720252001010010100001001010000521049468824149696010040100408696387702001020100002020000100401241110021109101000010100001010922714294100674102682840894368781089622119770640316221003710000110000100101004110041100411004110041
1002410040751002331958211720771921002576413712445252001010010100001001010000521129468824149696010040100408696387702001020100002020000100401241110021109101000010100001010916013633730653102622610908368041090613118300640316331003710000110000100101004110041100411004110041
100241004075101229210279716966811161002576111210437252001010010100001001010000521073468824149696010040100408696387702001020100002020000100401241110021109101000010100001010926014263840660102582530894328291089519124900640416221003710000110000100101004110041100411004110041
10024100407500022358080217607211161002578814110236252001010010100001001010000521089468824149696010040100408696387702001020100002020000100401241110021109101000010100001010875713533960621102802780860467951088421116472640316321003710000010000100101004110041100411004110041
1002410040751012211887801728732116100258131248439252001010010100001001010000521129468824149696010040100408696387702001020100002020000100401241110021109101000010100001010906013713850670102652690890407861093319108900640216331003710000010000100101004110041100411004110041

Test 3: throughput

Count: 8

Code:

  strb w0, [x6], #8
  strb w0, [x7], #8
  strb w0, [x8], #8
  strb w0, [x9], #8
  strb w0, [x10], #8
  strb w0, [x11], #8
  strb w0, [x12], #8
  strb w0, [x13], #8
  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.5053

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)l2 tlb miss data (0b)1e1f2022293a3e3f4046494f51schedule 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)6067696a6d6emap 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)l1d cache miss ld (a3)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9aaabacafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
802094047630311121753968501736110140404188151969198191251608548080680005801008000040780318568760287493736540450405223032733049616010020080000200160000405069311802011009910080000100800001008097020396348714917802802740938421184811642434144270511011711404858062780000801004043540382404634044440482
8020440355302200185737280117121031284041979520081946832516388084359800008010080000423444185668411172493730440491404423029133039116010020080000200160000404328211802011009910080000100800001008095127506549912899802812810917401153811152745237282511011711404208093980000801004043640464404094040240424
8020440432302110208537381617521141004037080921721844100251637888159180000801008000040788718557720154493735740388403623038233042916010020080000200160000404018511802011009910080000100800001008093714433749010835802482850917401231810902784638140511011611404338040080000801004048940415404254038640440
802044046230310119743678001720971324039878921182114107251653278088980000801008000040479318612430432493740740479404863039733045716010020080000200160000404429111802011009910080000100800001008091915438545812907802732812897261366811662514364140511011711403908032580000801004040240385404284045440404
8020440401302101206436582017129212440341789210619839925160698836318004580100800004090291856468038149373434049140401304483303611601002008000020016000040381831180201100991008000010080000100809131443025286910802662850871301164811452344079141511011611404048189380000801004035040577404204037140419
8020440391303100282636981616801051124040177519722048101251608028074780000801008000040233218545960180449373064041140434302983304511601002008000020016000040437851180201100991008000010080000100809191446665256858802742680935421227811812454324140511011711404588338180000801004042640509403674045440422
80204404013021001989340797175210810840443816186320609525160710855388005580100800004140471856396028349374544047540409303183303751601002008000020016000040481911180201100991008000010080000100809021540325474926802452780922441177811562644160140511011711404028057880000801004044040483404044042740396
8020440469304101242437279017281031604041381920771821104691632488049180120804448000042418518617841208493735740414404193036233038016010020080000200160000404269211802011009910080000100800001008102714437153167870802792662877421985811902754143140511011711406158104480000801004064940412407474035040484
802044036930310021783638461720112100404297891956205310725162707834598005080100800004013621856588035649373494038840452302793303711601002008000020016000040351851180201100991008000010080000100809131445155267932802592740863281174811632564159140511011611404258089380000801004042540465404564040540524
80204404023031102028363796172011313240458824193520289725164413807958000180100800004013121855340028749373964039340456303693303711601002008000020016000040389831180201100991008000010080000100809231445344999898802732670911421189811342644406141511011711404858068380000801004044040433403874037840415

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)1e1f2022293a3e3f4046494f51schedule 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)6067696a6d6emap 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)l1d cache miss ld (a3)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9aaabacafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
800294047030321212124367806171210714840329796189919741002516052486082800008001080000404028185867211704937373404824041230539330480160010208000020160000404007511800211091080000108000010808851545665001288380257286093236122081134225435000502041644404098541680000800104038340544403744043140479
800244040230300002088409804168811011240389757202220491012516054180321800008001080000400759185569612751493733640454403973036833052216001020800002016000040606751180021109108000010800001080914043225021290880265279092432128281165255479800502031644404568050080000800104044540502403394044540463
8002440469304000021304068041744115104403707671986214283251611848243880000800108000040195718576880148493729240439404023033833052216001020800002016000040419751180021109108000010800001080868048594741088880256282091452122581167254434500502231643404348027680000800104045140437403964038440464
8002440390303000020703387761744112140403918072007216910925160575803138000080010800004040931858456118449373034039740447303523303771600102080000201600004032975118002110910800001080000108088804479515989980248276091040122481103267426600502031743404248081480000800104046840436404974053340474
800244038530200002175392769170410714040489793196020147525160642878788000080010800004227591855604123004937488404074056530350330441160010208060020160000403978511800211091080000108000010809351447385192857802763180895381244811572834126141502031644404168499280000800104037240468404654045840413
8002440421303110021933838221736110140403647902156196710225160490817588000080010800004020551858432116849373974038140409303863303851600102080000201600004039675118002110910800001080000108090414440750319882802722890892421247811412834393142502041743403938010980000800104037640492405224033040584
80024404193031000215734482717761142124043180221321910812516048180315800008001080000401977186151711554937302404604058430429330473160010208000020160000405119011800211091080000108000010809681447515013906802612950926341335810852474979140502041644404038601080000800104053340405404964043440353
80024404473031000207639982317281152484043376719601967782516045880254800868001080000400756185773611994937387405344043030410330351160010208000020160000403987511800211091080000108000010808890450247711906802722910911421253811622614380140502031743403748040480000800104046440394404724049940476
8002440406302100120913448211720114136404288112026212210225160469802938004780010800004103061855460117049372994052140445304413304141600102080000201600004036185118002110910800001080000108092504640527886980253282089330130081109250481200502031644404688052780000800104046840458405004047840381
8002440402303100024333738451704117884041779620512097862516046586106800008001080000400419185618111344937328404034049030338330394160010208000020160000404929211800211091080000108000010809131444525015914802662800931341348811612644258141502041844404778042580000800104044540443404874043940421