(old) | htmldiff from- | (new) |
Speculation Barrier is a barrier that controls speculation.
The semantics of the Speculation Barrier are that the execution, until the barrier completes, of any instruction that appears later in the program order than the barrier:
In particular, any instruction that appears later in the program order than the barrier cannot cause a speculative allocation into any caching structure where the allocation of that entry could be indicative of any data value present in memory or in the registers.
The SB instruction:
When the prediction of the instruction stream is not informed by data taken from the register outputs of the speculative execution of instructions appearing in program order after an uncompleted SB instruction, the SB instruction has no effect on the use of prediction resources to predict the instruction stream that is being fetched.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | (0) | (0) | (0) | (0) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
CRm | opc |
MemBarrierOpif !op;MBReqDomain domain;
MBReqTypes types;
case opc of
when '00' op = MemBarrierOp_DSB;
when '01' op = MemBarrierOp_DMB;
when '10' op = MemBarrierOp_ISB;
otherwise
if HaveSBExt() && CRm<3:0> == '0000' then
op = MemBarrierOp_SB;
else
UNDEFINED;
case CRm<3:2> of
when '00' domain = MBReqDomain_OuterShareable;
when '01' domain = MBReqDomain_Nonshareable;
when '10' domain = MBReqDomain_InnerShareable;
when '11' domain = MBReqDomain_FullSystem;
case CRm<1:0> of
when '01' types = MBReqTypes_Reads;
when '10' types = MBReqTypes_Writes;
when '11' types = MBReqTypes_All;
otherwise
if CRm<3:2> == '01' then
op = MemBarrierOp_PSSBB;
elsif CRm<3:2> == '00' && opc == '00' then
op = MemBarrierOp_SSBB;
elsif HaveSBExt() && CRm<3:2> == '00' && opc == '11' then
op = MemBarrierOp_SB;
else
types = MBReqTypes_All;
domain = MBReqDomain_FullSystem() then UNDEFINED;;
case op of
when MemBarrierOp_DSBDataSynchronizationBarrier(domain, types);
when MemBarrierOp_DMBDataMemoryBarrier(domain, types);
when MemBarrierOp_ISBInstructionSynchronizationBarrier();
when MemBarrierOp_SSBBSpeculativeStoreBypassBarrierToVA();
when MemBarrierOp_PSSBBSpeculativeStoreBypassBarrierToPA();
when MemBarrierOp_SBSpeculationBarrier();
Internal version only: isa v30.41v30.3, AdvSIMD v27.08v27.04, pseudocode r8p5_00bet2_rc5v85-xml-00bet9_rc1_1, sve v8.5-00bet10_rc5v8.5-00bet9_rc1
; Build timestamp: 2019-03-28T062018-12-12T11:3450
Copyright © 2010-20192010-2018 Arm Limited or its affiliates. All rights reserved.
This document is Non-Confidential.
(old) | htmldiff from- | (new) |