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

STLXRH

Test 1: uops

Code:

  stlxrh w0, w1, [x6]
  mov x0, 0

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 50.673

Integer unit issues: 0.000

Load/store unit issues: 50.673

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)191e1f223f4f51schedule uop (52)schedule ldst uop (55)dispatch ldst uop (58)simd uops in schedulers (5a)6064696a6d6emap 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)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafatomic or exclusive fail (b4)bcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)f5f6f7f8fd
1005380012851111019981403798607267506725067387816100364011000493492138001380011314759372440287816914401828803800138001100111001100010004498215449679144981022012449661000141000101658912063113791710003800238002380023800238002
1004380012851001019981413798607267506735067287816100363811000493492138001380011314759372440287816914401828803800138001100111001100010004498014449670044980002012449671000141000111658912057113791710003800238002380023800238002
1004380012851111019981403798647267506725067387816100363511000493492138001380011314759412440287816914401828803800138001100111001100010004498214449660144981002012449661000141000101658912063113791710003800238002380023800238002
1004380012841111019981403798607267506725067387816100363811000493492138001380011314859372440287816914401828803800138001100111001100010004498014449670144981012012449671000141000101658912057113791710003800238002380023800238002
1004380012851111019981403798647267506735067287816100363511000493492138001380011314759372440287816914401828803800138001100111001100010004498114449670044980012012449671000141000111658912059113791710003800238002380023800238002
1004380012851111020101403798617267506735067287815100363511000493492138001380011314859372440387816914401828803800138001100111001100010004498114449660044981012012449661000141000111658912055113791710003800238002380023800238002
1004380012851010019981403798607267506725067387815100363511000493492138001380011314759412440287816914401828803800138001100111001100010004498214449670044980002012449661000141000101658912063113791710003800238002380023800238002
1004380012841111019981403798607267506755067687816100363611000493492138001380011314759432440287816914401828803800138001100111001100010004498115449660144981012012449671000141000111658912063113791710003800238002380023800238002
1004380012851001019981403798607267506735067287816100364111000493492138001380011314859382440287816914401828803800138001100111001100010004498116449670144981012013449661000141000111658912063113794010003800238002380023800238002
1004380012851011019981403798607267506765067687816100363611000493492138001380011314759402440287816914401828803800138001100111001100010004498215449660044980002012449661000141000101658912063113791710003800238002380023800238002

Test 2: throughput

Code:

  stlxrh w0, w1, [x6]
  add x6, x6, 2

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 38.9135

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk instruction (07)mmu table walk data (08)09l2 tlb miss instruction (0a)l2 tlb miss data (0b)18191e1f202223293a3e3f404f51schedule 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)606467696a6b6d6emap 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)a9aaabacafatomic or exclusive fail (b4)bcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cdcfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
202063891612916000000002000401362001080389112520692795585002989242595767887746974861274460211717709110000049386169038913038912783534590881813041486286794473778667794500155720038925038925210001120201100991001000010100100001002296990321141291112296480133221999822975810000016320002094521551129653593891902914231000010100389128389251389128389251389253
2020438912729150000010020003089200900389237540694025585002989242595767888006974861274502411717662110000049386172038925238912683528592061812941486256794500778665794473155720838925038912710001120201100991001000010100100001002297540357961601312296535010001999822964810000013440002094521551097553593890672914631000010100389253389251389253389253389128
2020438925229150000010019998096200102038911249069402558500298924259576788772697486127445781171770211000004938604703891273892528352859083181302148628379447377860679449915573303892503892601000112020110099100100001010010000100229784038004110136229648001361201999822978110000012160002094521551097853593891902914231000010100389253389151389251389140389129
20204389126291500000000200330960001020389237450694045585002989242595767887726974861274468811716973110000144938604703891273892528352859212181253148625979449977866579447115573263892493891261000112020110099100100001010010000100229773033587120127229648101271101999822977610000014720002094511551097853593890672914231000010100389253389128389253389253389251
20204389250291500000000199980120100104038923743069279558500298924259576788772697486127446051171771811000009838620903891263892558352759201181170148628279449777866579449715572003891283892521000112020110099100100001010010000100229786038004200142229662606401999822964810000015040002094521551097653593891902914231000010100389253389250389129389253389128
202043891272914000000002001001272009403891123606927955850029892425957678879769748612744703117176391100000493861700389252389128835315920118117314862607944717786047944701557210389127389250100011202011009910010000101001000010022965202843820862296482066182000122975210000014400002094671561097853593891902914231000010100389251389251389129389128389231
2020538925829160000000020027042000500389238706927855850029892425957678877369748612744611117177181100000493861720389250389126834645920618117114862587944967786057944991557326389126389128100011202011009910010000101001000010022979042917880822963512272662000422972710000011520002094541551097853593890702914261000010100389128389251390230389129389250
202043891272915000000001999800000990389111360694025585002989242595767887976974861274461111716921110000144938617203891273891268346859079181293148631079447377860079449915572003892523891271000112020110099100100001010010000100229764034325110116229648201161062020422976810000013120002094511551097853593891902914231000010100389128389250389128389250389253
202043891272916000000002000401301007003892370069278558500298924259576788773697486127463251172368111000004938604803892523892528352859079181293148625879447077866479449615573363892503892501000212020110099100100001010010000100229768034323308522964810112501999822964810000013760002094521551097553363890672914231000010100389251389250389128389253389128
2020438912829160000000020004012810011303892346106928055850029892425957678877069748612744605117176891100000493861690389252389127834645907818132314862837944747786657944971557334389126389127100011202011009910010000101001000010022975802954180111229648301111042000122975910000016480002094521551097853593891922914261000010100389250389250389253389253389128

1000 unrolls and 10 iterations

Result (median cycles for code): 38.9947

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)18191e1f202223293a3e3f404f51schedule 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)606467696a6b6d6emap 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)a9aaabacafatomic or exclusive fail (b4)bcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cdcfd0l1i cache miss demand (d3)d5map dispatch bubble (d6)dadbddfetch restart (de)e0? int output thing (e9)eaeb? ldst retires (ed)? int retires (ef)f5f6f7f8fd
2002638996429211110001999800000203899320070099550200290544259656760246697566126893541176473811000009838685603899363899477081159892188851145780776081275916276081415183183899363899361000112002110910100001001010000102297560343370075229728202912200042298521000001472000200994004210977104042389896289801091000010010389957389945389945389957389956
20024389955292120020019998702001103899400470099550216290552259664760254697574126898101176506101000004938687503899443899447081659906188856145782676082075917076081715183383899564410001120021109101000010010100001022979893728818002297430200200112297361000071600102200994304210954003443389887289793001000010010389948389941389937389948389948
20024389937292111110020010075000303899216070088550200290544259656760241697566126893881176467201000004938685703899363899477081159901188867145792876081275916376080915183343899363899471000112002110910100001001010000102297460299212012297280108200132298421000001440020200996004210974004042389888289795001000010010389938389937389948389948389949
200243899482921111100199980000052038993247070100550200290544259656760238697566126893921176470001000004938382703899483899367080959900188847145780876081275916476081615183363899483899471000112002110910100001001010000102297292313940002297282100199982297281000001152010200994004210972004042389876289793001000010010389949389938389949389950389949
2002438993629211111001999803200044038992210070099550200290544259656760242697566126893601176476901000004938685603899383899477081659888188861145781076081075916076081615183243899473899471000112002110910100001001010000102297930203560082297280000199982297281000001856010200994004210972003442389876289793001000010010389937389950389953389948389982
2002438994729211101001999803400017038992110070090550200290544259676760242697569126893561176480801000004938686703899363899477081659906188856145780576081175916676081015183283899473899481000112002110910100001001010000102298640369138014122972811140134200012298701000001680020200994004310976004042389888289793001000010010389940389940389949389937389948
200243899382921111100200160821004103899332907009955020029054425965676024069756612689383117647730100000493868670389936389936708115989818890314578427608147591677608181518336389936389936100011200211091010000100101000010229728129922002229728119174200012298161000001376020200994003610972004042389906289793001000010010389939389949389937389948389937
20024389947292111100019998010500033603899237070088550200290544259656760245697568126893691176471101000004938686703899483899387081659912188862145781176080875916776081415183343899483899791000112002110910100001001010000102298190269770042297280100199982297301000001152010200994004210978013436389887289793091000010010389949389948389937389949389939
20024389936292111010019998012610059038992151070088550200290544259656760241697566126893871176476101000004938685603899483899477081159889188899145781076082275920576081415183283899383899481000112002110910100001001010000102298040210917079229728103814199982297951000001264010200994003610976004042389888289793001000010010389937389948389937389937389937
20024389947292010110020037075000003899941207011955021629059225966776034869760612689732117647721100000493868870389947389936708115990018885714578107608207591717608971518332389948389947100011200211091010000100101000010229731125139709422974690700199982297281000001472010200994004210978004042389887289793991000010010389937389937389939389949389937

Test 3: throughput

Code:

  stlxrh w0, w1, [x6]
  mov x7, 8

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 38.0108

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)191e2223243a3f4f51schedule 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)606467696a6b6d6emap 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)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafatomic or exclusive fail (b4)bcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cdcfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
1020538011828471002000710003801670702765292721069751857510697915715543841046175401000004937703003803683801101304295995124897592641219100938418191061876836380110380110100011102011009910010000100100001004588682458866004588662019998458866100000100000010172638113211081131131380043119710000100380354380111380111380111380111
102043801102847004200160001833800950702765292721069751857510697915715543841046175411000004937703003801103801121304295995424897492641419100938418191001876836380110380110100011102011009910010000100100001004588660458866004588660019998458866100000100000010172639113111081131131380043119710000100380111380111380111380111380112
102043803432847000199980001833800970702765292721069751857510697915715551891046175401000004937703203801103801101304295995424897892641219100938418191001876836380110380112100011102011009910010000100100001004588660458866004588660020009458866100000100000010172638113111080131131380043119710000100380111380111380111380111380112
1020438011028480001999800018438009507027253943110697518575106979156875439410463992110000049377032038011038011013042959964248978926412191009384181910018768363801103801101000111020110099100100001001000010045886604588665404588660019998458866100000100000010172641113011081131131380043119710000100380111380174380111380111380111
10204380110284700019998100183380096070278529272106975185811069791571554384104617591100000493770310380124380142130429599512489829264121910093841819100187683638011038011010001110201100991001000010010000100458866045886600458866001999845886610000010000001017265311311108142131380044119710000100380113380111380114380111380113
102053801242847000199980001823800950702765292721069751857510697915715543841046175401000004937703003801113801101304295995124897492641219100938418191001876836380110380110100021102011009910010000100100001004588660458866904588664019998458866100000100000010172641113011070131131380043119710000100380111380111380111380112380113
10204380110284700019998000333800950702765292721069751857510697915715543841046180511000004937397303801103801101304295996124897492641319100938418191001876836380110380110100011102011009910010000100100001004588740458866004588660019998458866100000100000010172641113011068131131380043119710000100380111380111380111380111380111
102043801122847000200040001833800950702765292721069751857510697915715543841046175411000004937703003801103801101304295995124897492641419100938418191001876836380110380110100011102011009910010000100100001004588680458866004588660219998458866100000100000010172639113011081131131380044119710000100380111380111380126380130380111
102043801102848000199980001823800950702765292721069751857510697915715543841046175401000004937703003801103801101304295996124898292641419100938511191001876836380112380111100011102011009910010000100100001004588660458866004588660020012458866100000100000010172639113111079131131380043119710000100380111380111380111380111380111
102043801102847000199980001823800950702765292721069751857510697915715543841046175411000004937703003801103801101304295996124920192646319100938418191001876836380110380110100011102011009910010000100100001004588660458866004588660019998458866100000100000010172637113011081131131380043119710000100380114380111380111380111380113

1000 unrolls and 10 iterations

Result (median cycles for code): 38.0011

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk instruction (07)mmu table walk data (08)l2 tlb miss instruction (0a)l2 tlb miss data (0b)1e1f22233a3f4f51schedule 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)6064696a6b6d6emap 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)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafatomic or exclusive fail (b4)bcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
1002538001928460150150200071410238002707026951973210675186661067915807542410470561110000493769390380021380019138355599392493359171561910954235191019087983800193800191001111002110910100001010000104591941445893104589750120012458958100001410000120169769731108054713799521171000010380020380020380020380020380020
1002438001928471161160200071400238000647026751973010685186641067915806542410470532110000493769410380019380201138356599522493529168741910953884191019077523800193800191000111002110910100001010000104589721545895804589710020012458957100001410000100169680711106972753799521171000010380020380020380020380020380020
1002438001928461161160199981400238000427026751973710675186631067915807542410470533110000493769390380019380019138354599552493379168741910953876191019077503800193800731000111002110910100001010000104589721445895704589720020012458958100001410000100169680731106471753799521171000010380020380021380020380020380020
1002438001928461140161199981400238000407026751972910675186661067915807542410470528110000493769390380019380019138355599552493469168741910953876191019077503800193800191000111002110910100001010000104589731545895814589710120028458958100001410000110169678741108073723799521171000010380020380020380020380020380109
1002438001928471161151200101510238000407026751973010675186671067915807542410470515110000493769390380019380019138355599392493359168771910953875191019077563800193800191000111002110910100001010000104589731545895804589700020025458957100001410000100169678701107872713799521171000010380020380020380020380020380020
1002438001928471160160199980002379996070267519732106751866510679158055424104701541100004937693103800473800111383485994024932991687219109538761910190775638001138001210001110021109101000010100001045895604589560458956001999845895610000010000000169676701106969693799441171000010380013380012380012380012380012
1002438001128460160140199980002379997070267519732106751866510679158055424104701391100004937693103800113800941383485994224933091687219109538771910190775438001138001110001110021109101000010100001045895604589560458956001999845895610000010000000169684691106571713799451171000010380012380012380012380012380013
1002438001128470150150201100101379996070267519732106751866510679158055424104701431100004937693103800113800111383485994924932791687219109538751910190775038001138001110001110021109101000010100001045895604589560458956001999845895610000010000000169680711108071733799441171000010380012380012380012380016380012
1002438001128460160160199980102379996070269519732106751867710679158055424104701281100004937693103800113800111383485993924932791687219109538741910190775238001138001110001110021109101000010100001045895604589600458956002001745895610000010000000169678541108073693799601171000010380012380012380012380012380018
1002438001228470170160199980102379996070267519732106751866510679158055424104701541100009837693503800123800111383485994124933091687219109538741910190775238001138001110001110021109101000010100001045895604589560458956001999845896010000010000000169678711108071713799441171000010380012380012380012380012380013