跳到主要内容

PTO-ARCH-PROFILE-REFERENCE-PROFILE

PTO-ARCH-PROFILE-REFERENCE-PROFILE

ASL 伪代码

下面直接显示完整的 ASL 所有者。

// PTO-UNIT: {"id":"PTO-ARCH-PROFILE-REFERENCE-PROFILE","surface":"arch","classification":["profile","reference-profile"],"depends_on":["PTO-ARCH-PROFILE-APPLICABILITY"]}implementation func ReadMonotonicTime() => Wordbegin    return _SystemRegisters.cycle;end;
implementation func FloatingExponential(value: real) => realbegin    // PTO v0 fixes an 18-term Taylor reference algorithm. It is deterministic    // executable evidence, not a promise of a host libm implementation.    var result: real = 1.0;    var term: real = 1.0;    for index = 1 to 18 do        term = (term * value) / Real(index);        result = result + term;    end;    return result;end;
implementation func FloatingRoundNearest(value: real) => integerbegin    let lower = RoundDown(value);    let fraction = value - Real(lower);    if fraction < 0.5 then return lower;    elsif fraction > 0.5 then return lower + 1;    elsif lower MOD 2 == 0 then return lower;    else return lower + 1;    end;end;
implementation func ScalarFPBinaryProfile(operation: FloatingBinaryOperation,                                           rounding_mode: NumericRoundingMode,                                           source_type: bits(5),                                           left: Word, right: Word)                                           => (Word, bits(5))begin    assert ScalarFPTypeCodeSupported(source_type);    case operation of        when FloatingBinary_ADD => return (left + right, Zeros{5});        when FloatingBinary_SUB => return (left - right, Zeros{5});        when FloatingBinary_MUL => return (MultiplyWord(left, right), Zeros{5});        when FloatingBinary_DIV =>            if ScalarFPCarrierIsZero(right, source_type) then                return (Ones{PTO_XLEN}, Zeros{5} + 2);            else return (DivideWordUnsigned(left, right), Zeros{5});            end;        // Scalar dispatch owns MIN/MAX NaN and signed-zero behavior. These        // totality arms are not reached by decoded FMIN/FMAX.        when FloatingBinary_MIN =>            if SInt(left) <= SInt(right) then return (left, Zeros{5});            else return (right, Zeros{5});            end;        when FloatingBinary_MAX =>            if SInt(left) >= SInt(right) then return (left, Zeros{5});            else return (right, Zeros{5});            end;    end;end;
implementation func ScalarFPUnaryProfile(operation: FloatingUnaryOperation,                                          rounding_mode: NumericRoundingMode,                                          source_type: bits(5), value: Word)                                          => (Word, bits(5))begin    assert ScalarFPTypeCodeSupported(source_type);    case operation of        when FloatingUnary_ABS =>            if source_type == '00001' then                return (ZeroExtend{PTO_XLEN}(value[30:0]), Zeros{5});            else return (value AND (Zeros{PTO_XLEN} + 0x7fffffffffffffff), Zeros{5});            end;        when FloatingUnary_SQRT => return (value, Zeros{5});        when FloatingUnary_EXP => return (value + 1, Zeros{5});        when FloatingUnary_RECIP =>            if ScalarFPCarrierIsZero(value, source_type) then                return (Ones{PTO_XLEN}, Zeros{5} + 2);            else return (DivideWordUnsigned(Ones{PTO_XLEN}, value), Zeros{5});            end;    end;end;
implementation func ScalarFPFusedProfile(operation: FloatingFusedOperation,                                          rounding_mode: NumericRoundingMode,                                          source_type: bits(5), addend: Word,                                          left: Word, right: Word)                                          => (Word, bits(5))begin    assert ScalarFPTypeCodeSupported(source_type);    let product = MultiplyWord(left, right);    case operation of        when FloatingFused_MADD => return (product + addend, Zeros{5});        when FloatingFused_MSUB => return (product - addend, Zeros{5});        when FloatingFused_NMADD =>            return (Zeros{PTO_XLEN} - (product + addend), Zeros{5});        when FloatingFused_NMSUB =>            return (Zeros{PTO_XLEN} - (product - addend), Zeros{5});    end;end;
implementation func ScalarFPToIntegerProfile(    rounding_mode: NumericRoundingMode, destination_type: bits(5),    source_type: bits(5), value: Word) => (Word, bits(5))begin    assert ScalarIntegerTypeCodeSupported(destination_type);    assert ScalarFPTypeCodeSupported(source_type);    return (value, Zeros{5});end;
implementation func ScalarFPConvertProfile(    rounding_mode: NumericRoundingMode, destination_type: bits(5),    source_type: bits(5), value: Word) => (Word, bits(5))begin    assert ScalarFPTypeCodeSupported(destination_type);    assert ScalarFPTypeCodeSupported(source_type);    return (value, Zeros{5});end;
implementation func ScalarIntegerToFPProfile(    rounding_mode: NumericRoundingMode, source_type: bits(5),    destination_type: bits(5), value: Word) => (Word, bits(5))begin    assert ScalarIntegerTypeCodeSupported(source_type);    assert ScalarFPTypeCodeSupported(destination_type);    return (value, Zeros{5});end;
implementation func TileSquareRoot(value: Word) => Wordbegin    return value;end;
implementation func TileLogarithm(value: Word) => Wordbegin    return value;end;
implementation func TileReciprocal(value: Word) => Wordbegin    return DivideWordUnsigned(Ones{PTO_XLEN}, value);end;
implementation func TileReciprocalSquareRoot(value: Word) => Wordbegin    return value;end;
implementation func TileExponential(value: Word) => Wordbegin    return value + 1;end;
readonly implementation func AtomicAddress(address: Word,                                            far: boolean) => Wordbegin    return address;end;
readonly implementation func TranslateDataAddress(address: Word,                                                  size_bytes: integer {1..262144},                                                  write: boolean) => Wordbegin    return address;end;
readonly implementation func DataAccessPermitted(address: Word,                                                 size_bytes: integer {1..262144},                                                 write: boolean) => booleanbegin    let end_address = UInt(address) + size_bytes;    if end_address > PTO_MODEL_MEMORY_BYTES then return FALSE; end;    // PTO v0 assigns ACR0 and ACR1 full bounded-memory access. ACR2 through    // ACR15 use the bounded 3072-byte application region.    if CurrentACR() >= 2 then return end_address <= 3072;    else return TRUE;    end;end;
implementation func SaveTrapContext(target: AccessControlRing,                                    source: AccessControlRing)begin    _TrapContexts[[target]].valid = TRUE;    _TrapContexts[[target]].source_acr = source;    _TrapContexts[[target]].tpc = ReadTPC();    _TrapContexts[[target]].bpc = ReadBPC();    _TrapContexts[[target]].core_state = _SystemRegisters.core_state;    _TrapContexts[[target]].bundle_argument = _BundleArgument;    _TrapContexts[[target]].commit_argument = _CommitArgument;    _TrapContexts[[target]].bundle_active = _BundleActive;    _TrapContexts[[target]].bundle_body_active = _BundleBodyActive;    _TrapContexts[[target]].bundle_commit_target_set = _BundleCommitTargetSet;    _TrapContexts[[target]].bundle_condition_set = _BundleConditionSet;    _TrapContexts[[target]].system_block_terminal_pending =        _SystemBlockTerminalPending;    _TrapContexts[[target]].barg = _BARG;    _TrapContexts[[target]].bundle_sequential_pc = _BundleSequentialPC;    _TrapContexts[[target]].frame_stack_return_target =        _FrameStackReturnTarget;    _TrapContexts[[target]].return_address = _ReturnAddress;    _TrapContexts[[target]].bundle_argument_kind = _BundleArgumentKind;    _TrapContexts[[target]].bundle_operation = _BundleOperation;    _TrapContexts[[target]].bundle_dimensions = _BundleDimensions;    _TrapContexts[[target]].bundle_dimension_present =        _BundleDimensionPresent;    _TrapContexts[[target]].bundle_scalar_bindings = _BundleScalarBindings;    _TrapContexts[[target]].bundle_tile_bindings = _BundleTileBindings;    _TrapContexts[[target]].bundle_shared_bindings = _BundleSharedBindings;    _TrapContexts[[target]].bundle_range_group = _BundleRangeGroup;    _TrapContexts[[target]].bundle_zero_participation_seen =        _BundleZeroParticipationSeen;    _TrapContexts[[target]].bundle_control_attributes =        _BundleControlAttributes;    _TrapContexts[[target]].bundle_data_attributes = _BundleDataAttributes;    _TrapContexts[[target]].bundle_data_attributes_present =        _BundleDataAttributesPresent;    _TrapContexts[[target]].bundle_hint = _BundleHint;    _TrapContexts[[target]].bundle_fixed_point_attributes =        _BundleFixedPointAttributes;    _TrapContexts[[target]].local_generations = _LocalGenerations;    _TrapContexts[[target]].shared_generations = _SharedGenerations;    _TrapContexts[[target]].bundle_execution_domain_token =        _BundleExecutionDomainToken;    _TrapContexts[[target]].memory_copy_template = _MemoryCopyTemplate;    _TrapContexts[[target]].frame_template = _FrameTemplate;    _TrapContexts[[target]].t_queue = _TQueue;    _TrapContexts[[target]].t_queue_valid = _TQueueValid;    _TrapContexts[[target]].u_queue = _UQueue;    _TrapContexts[[target]].u_queue_valid = _UQueueValid;    _TrapContexts[[target]].predicates = _PredicateRegisters;
    var ecstate = _SystemRegisters.core_state;    ecstate[3:0] = AccessControlRingBits(source);    ecstate[4] = if _BundleBodyActive then '1' else '0';    PTOv0WriteContextRegister(target, 0x0f00, ecstate);
    var control: Word = Zeros{PTO_XLEN};    control[3:0] = AccessControlRingBits(source);    control[4] = '1';    control[5] = if _BundleActive then '1' else '0';    control[6] = if _BundleBodyActive then '1' else '0';    control[10:7] = PTOv0BundleKindCode(_BARG.block_type);    control[13:11] = PTOv0BundleTransferCode(_BARG.transfer_type);    control[14] = if _BARG.taken then '1' else '0';    PTOv0WriteContextRegister(target, 0x0f40, control);    PTOv0WriteContextRegister(target, 0x0f41, ReadBPC());    PTOv0WriteContextRegister(target, 0x0f42, _BARG.bpcn);    PTOv0WriteContextRegister(target, 0x0f43, ReadTPC());    PTOv0WriteContextRegister(target, 0x0f44, _ReturnAddress);    for index = 0 to PTO_TEMPORARY_QUEUE_DEPTH - 1 do        PTOv0WriteContextRegister(target, 0x0f45 + index,            _TQueue[[index]]);        PTOv0WriteContextRegister(target, 0x0f49 + index,            _UQueue[[index]]);    end;    PTOv0WriteContextRegister(target, 0x0f4d, Zeros{PTO_XLEN});    PTOv0WriteContextRegister(target, 0x0f4e, Zeros{PTO_XLEN});end;
implementation func TileProfileFloatingModulo(data_type: TileDataType,                                               left: Word, right: Word) => Wordbegin    let encoding = TileDataTypeToEncoding(data_type);    if ScalarFPCarrierIsZero(right, encoding) then        return Ones{PTO_XLEN};    end;    let quotient = DivideWordUnsigned(left, right);    return left - MultiplyWord(quotient, right);end;
implementation func TileProfileUnary(op: TileUnaryOperation,                                      data_type: TileDataType,                                      value: Word) => (Word, bits(5))begin    if TileUnaryUsesClosedElementwiseContract(op) then        let (result, invalid) = TileFixedUnaryValue(            op,            data_type,            value);        return (            result,            if invalid then Zeros{5} + 1 else Zeros{5});    end;    return (        TileUnaryValue(op, value),        Zeros{5});end;
implementation func TileProfileFloatingCompare(    comparison: TileComparison,    data_type: TileDataType,    left: Word,    right: Word) => (boolean, bits(5))begin    let left_class = TileNumericValueClass(data_type, left);    let right_class = TileNumericValueClass(data_type, right);    let signaling_nan =        left_class == NumericValue_SignalingNaN ||        right_class == NumericValue_SignalingNaN;    if NumericValueClassIsNaN(left_class) ||       NumericValueClassIsNaN(right_class) then        return (            comparison == TileComparison_NE,            if signaling_nan then Zeros{5} + 1 else Zeros{5});    end;    let both_zero = NumericValueClassIsZero(left_class) &&        NumericValueClassIsZero(right_class);    let equal = both_zero || left == right;    let left_less = if both_zero then FALSE else        UInt(TileFloatingOrderKey(data_type, left)) <        UInt(TileFloatingOrderKey(data_type, right));    return (TileCompareBoolean(comparison, left_less, equal), Zeros{5});end;
implementation func TileProfileReductionInitial(    operation: TileReductionOperation,    data_type: TileDataType,    first: Word) => Wordbegin    return TileReductionInitialValue(        operation,        data_type,        first);end;
implementation func TileProfileReductionStep(    operation: TileReductionOperation,    data_type: TileDataType,    accumulator: Word, value: Word) => (Word, boolean)begin    let (result, selected, -) = TileReductionStepWithFlags(        operation,        data_type,        accumulator,        value);    return (result, selected);end;
implementation func TileProfileMixedExpdifFP32(    source_type: TileDataType,    left: Word,    broadcast: Word) => (Word, bits(5))begin    assert source_type == TileDataType_FP16 ||           source_type == TileDataType_BF16;    let (handled, discriminator_result) =        HardwareNumericMixedExpdifDiscriminator(left, broadcast);    if handled then return (discriminator_result, Zeros{5}); end;
    let (difference, subtract_flags) = TileProfileBinaryWithFlags(        TileBinary_SUB,        TileDataType_FP32,        left,        broadcast);    let (special_handled, special_result, special_flags) =        TileSFUUnarySpecialValue(            TileUnary_EXP,            TileDataType_FP32,            difference);    if special_handled then        return (            special_result,            subtract_flags OR special_flags);    end;
    let (profile_result, profile_flags) = TileProfileUnary(        TileUnary_EXP,        TileDataType_FP32,        difference);    return (        profile_result,        subtract_flags OR profile_flags);end;implementation func TileProfileExpand(op: TileExpandOperation,                                      data_type: TileDataType,                                      left: Word, broadcast: Word) => Wordbegin    return TileExpandValue(        op,        data_type,        left,        broadcast);end;implementation func TileProfileOrderLeft(left: Word, right: Word,                                         descending: boolean,                                         data_type: TileDataType) => booleanbegin    if descending then return SInt(left) >= SInt(right);    else return SInt(left) <= SInt(right);    end;end;
implementation func TileProfileValueIsNaN(value: Word,                                           data_type: TileDataType) => booleanbegin    // The deterministic raw-carrier reference profile has no NaN class.    return FALSE;end;
implementation func TileProfileMatrixAccumulate(    accumulator: Word, left: Word, right: Word,    destination_type: TileDataType, left_type: TileDataType,    right_type: TileDataType, control: NumericExecutionControl) => Wordbegin    return accumulator + MultiplyWord(left, right);end;
implementation func TileProfileFusedMultiplyAdd(    data_type: TileDataType,    addend: Word,    left: Word,    right: Word) => (Word, bits(5))begin    return ScalarFPFusedProfile(        FloatingFused_MADD,        DefaultNumericExecutionControl().rounding_mode,        TileDataTypeToEncoding(data_type),        addend,        left,        right);end;
implementation func TileProfileFusedInvalidResult(    data_type: TileDataType,    left: Word,    right: Word,    addend: Word) => (Word, bits(5))begin    let (available, quiet_nan) =        HardwareNumericCanonicalNaNResult(data_type);    assert available;    return (quiet_nan, Zeros{5} + 1);end;
implementation func TileProfileMatrixBias(value: Word, bias: Word,                                          destination_type: TileDataType,                                          bias_type: TileDataType) => Wordbegin    return value + bias;end;
implementation func TileProfileMatrixScaledAccumulate(    accumulator: Word, left: Word, right: Word,    left_scale: Word, right_scale: Word,    left_scale_present: boolean, right_scale_present: boolean,    destination_type: TileDataType, left_type: TileDataType,    right_type: TileDataType, left_scale_type: TileDataType,    right_scale_type: TileDataType) => Wordbegin    let scaled_left = if left_scale_present then        MultiplyWord(left, left_scale)    else        left;    let scaled_right = if right_scale_present then        MultiplyWord(right, right_scale)    else        right;    return accumulator + MultiplyWord(scaled_left, scaled_right);end;

架构行为

目的与范围

用途与范围

参考配置档为配置档定义的钩子提供确定性实现,使 PTO v0 模型无需依赖宿主库的选择,就能执行数值、地址、访问控制、Tile 和陷阱上下文行为。

这些函数定义参考配置档,而不是必需的微架构。例如,固定 18 项的指数算法是可执行的参考行为,并不承诺调用宿主 libm 实现。

概念与架构状态

配置档机制

  • 时间从 _SystemRegisters.cycle 读取;标量数值钩子覆盖二元、一元、融合和转换操作。
  • Tile 钩子覆盖一元操作、浮点比较、规约、扩展、排序、矩阵累加、融合乘加、偏置和缩放累加。
  • 地址钩子选择原子地址、转换数据地址,并决定当前 ACR 是否允许某次访问。
  • 陷阱处理把架构控制、指令束、绑定、代次、队列和谓词状态保存到按 ACR 索引的陷阱上下文及上下文寄存器映像中。
规则与交互

规则与交互

FloatingRoundNearest 舍入到最近整数;当小数部分恰好为 0.5 时选择偶数整数。

FloatingExponential 从 1.0 开始,并按固定顺序累加 18 个泰勒项,使参考结果不依赖宿主的指数函数。

ScalarFPBinaryProfile 同时返回原始 Word 结果和 5 位状态字段;以零载体为除数时,它返回全一结果位,并在该字段中返回 Zeros{5} + 2。

SaveTrapContext 把来源 ACR、TPC、BPC、指令束执行状态、绑定、代次状态、T/U 队列和谓词记录到保存的陷阱上下文中,并写入选定的上下文寄存器映像。

边界与未定义范围

配置档边界

在这个参考配置档中,AtomicAddress 和 TranslateDataAddress 原样返回传入的地址。

DataAccessPermitted 计算不包含在访问范围内的结束地址;当该右开边界超过 PTO_MODEL_MEMORY_BYTES 时拒绝访问。在这段建模内存内,ACR 0 和 1 可以访问完整的有界范围,而 ACR 2 至 15 要求该右开边界地址不大于 3072。

这个配置档中 Scalar MIN 和 MAX 的完备性分支,不是已解码 FMIN 和 FMAX 的特殊值契约;它们的 NaN 和有符号零行为由标量分派所有者定义。

使用示例

示例性示例

使用 FloatingRoundNearest 时,2.5 舍入为 2,3.5 舍入为 4,因为两个恰好位于中点的数都选择偶数结果。

某次访问从 3000 开始且大小为 72 时,不包含在范围内的结束地址是 3072,因此 ACR 2 仍位于参考配置档允许的区域内。把大小增加到 73 后,该结束地址变成 3073,同一次访问会被拒绝。

NDF 条款

正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。

No NDF clause is attached to this unit.

Evidence index

19 matching entries

Executable evidence10
  • reference-profile address, ACR, and trap access rules are exact
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case005
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-ACCESS-EXEC-005
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-access-005.asl
    Kind / role
    execution
    Pass condition
    address translation, access permission, and trap context assertions hold
    SHA-256
    eb604d8c6f7b0bb4aabce0500ea989b246177cf88fd1f4742c6b11ab64eade12
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-ACCESS-EXEC-005
  • reference-profile reset clears every architectural state family
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case007
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-RESET-EXEC-007
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-reset-007.asl
    Kind / role
    execution
    Pass condition
    reset state, memory, Tile, reservation, and context assertions hold
    SHA-256
    fa24ce2bbb3f85a16e9a83bb2eda73c28371e202ae82f2cc19afdecd49833c9c
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-RESET-EXEC-007
  • reference-profile rounding and conversion operations are exact
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case004
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-ROUNDING-EXEC-004
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-rounding-004.asl
    Kind / role
    execution
    Pass condition
    rounding selectors, scalar FP, and Tile conversion assertions hold
    SHA-256
    4b5a7c0f3234f7a17c75929202cfee9fb1f29935625d7aac83d2e1a1d8a1f2e1
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-ROUNDING-EXEC-004
  • reference-profile NaN and signed-zero rules are exact
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case002
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-SPECIAL-VALUES-EXEC-002
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-special-values-002.asl
    Kind / role
    execution
    Pass condition
    NaN, comparison, min-max, and signed-zero assertions hold
    SHA-256
    00aae83648a1597cca55809fb2a2aa50a4956fbeff60780fbfb9b9dd4bf81440
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-SPECIAL-VALUES-EXEC-002
  • reference-profile subnormal boundaries and applicability are exact
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-SUBNORMAL-EXEC-001
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-001.asl
    Kind / role
    execution
    Pass condition
    subnormal configuration, boundary, and applicability assertions hold
    SHA-256
    38814e41be41d630c7839bdd6988e4df6e4ca8eb0667764d6a6e8b6eedd6ace5
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-SUBNORMAL-EXEC-001
  • reference-profile Tile arithmetic and trap recovery are exact
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case006
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-TILE-EXEC-006
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-tile-006.asl
    Kind / role
    execution
    Pass condition
    Tile profile and trap recovery assertions hold
    SHA-256
    9717313724a760b57189ec7c23429171937dcfd53c27aaaddaae46c0278ffccb
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-TILE-EXEC-006
  • reference-profile numeric encodings map to exact value classes
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case003
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-CONCRETE-VALUE-CLASSES-EXEC-003
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-concrete-value-classes-003.asl
    Kind / role
    execution
    Pass condition
    encoding validity, value class, and canonical NaN assertions hold
    SHA-256
    91670f4a73dc9c2d0d433afc66ff18354a43035c8ede7c98a35612464fb220af
    Open exact source ↗ for PTO-AVS-ARCH-CONCRETE-VALUE-CLASSES-EXEC-003
  • PTO-ARCH-PROFILE-REFERENCE-PROFILE compiles as an independent normative unit
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-PROFILE-REFERENCE-PROFILE-STATIC-001
    Path
    tests/asl/arch/profile/reference-profile/arch-static-reference-profile-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    58ea19f523b6a5a5d43b22a58c28b5c4e1ed0bce3d05344713c5e24b652cba29
    Open exact source ↗ for PTO-AVS-ARCH-PROFILE-REFERENCE-PROFILE-STATIC-001
  • the reference scalar FP division branch returns the assigned zero-divisor result and five-bit status field
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case009
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-REFERENCE-PROFILE-DIVZERO-009
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-reference-profile-divzero-009.asl
    Kind / role
    execution
    Pass condition
    a zero right carrier returns all-one result bits and status Zeros{5}+2
    SHA-256
    6dfdb745ac38fe937ee919e00fbd1abef8516be7d147281d0c8c10bdfaa582d2
    Open exact source ↗ for PTO-AVS-ARCH-REFERENCE-PROFILE-DIVZERO-009
  • the reference profile evaluates a nonzero exponential through the fixed 18-term algorithm
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-REFERENCE-PROFILE
    3. categoryEXECUTION
    4. case008
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-REFERENCE-PROFILE-EXPONENTIAL-008
    Path
    tests/asl/arch/profile/reference-profile/arch-exec-reference-profile-exponential-008.asl
    Kind / role
    execution
    Pass condition
    FloatingExponential(2.0) falls inside the independently fixed narrow interval that excludes the 17-term result
    SHA-256
    344da1461904ae2a456be8e94ee94344cf452dec526cfa3252232e26a721006a
    Open exact source ↗ for PTO-AVS-ARCH-REFERENCE-PROFILE-EXPONENTIAL-008
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-TRACEABILITY
    Path
    spec/evidence/release-traceability-readiness.json
    Kind / role
    ASL/NDF/documentation/AVS traceability
    SHA-256
    c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Path
    spec/evidence/instruction-contract-closure.json
    Kind / role
    mnemonic and encoding contract closure
    SHA-256
    3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-GATE-READINESS
    Path
    spec/evidence/release-gate-readiness.json
    Kind / role
    exact-head gate readiness
    SHA-256
    a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST
Decision history4
  • PTO v0 concrete reference profile · accepted
    1. decision recordADR
    2. case0005

    Decision record

    Loading ADR-0005…

    Sources and references
    Complete stable ID
    ADR-0005
    Path
    docs/status/decisions/0005-pto-v0-concrete-reference-profile.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-EXTENSION-FIRST-USE, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION, PTO-ARCH-PROFILE-RESET, PTO-ARCH-PROFILE-TRAP-CONTEXT-RECOVERY
    Affected NDF
    PTO-ARCH-EXTENSION-FIRST-USE-PROFILE-001, PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    a83528c2fc744cc120c2a0a32c82410059638ea88936fa65ac0eb36a0274d87c
    Open exact decision source ↗ for ADR-0005
  • Numeric profile identity and bounded variation framework · accepted
    1. decision recordADR
    2. case0037

    Decision record

    Loading ADR-0037…

    Sources and references
    Complete stable ID
    ADR-0037
    Path
    docs/status/decisions/0037-numeric-profile-identity-and-variation-framework.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION
    Affected NDF
    PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    b09efd36ccfc7258d1743c974f42b875ead42137c503f576a12f471f65b52e30
    Open exact decision source ↗ for ADR-0037
  • Numeric variation-point ownership · accepted
    1. decision recordADR
    2. case0042

    Decision record

    Loading ADR-0042…

    Sources and references
    Complete stable ID
    ADR-0042
    Path
    docs/status/decisions/0042-numeric-variation-point-ownership.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION
    Affected NDF
    PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    f25df23306837e4199f6b7c03f70de853a693fdc6435c65ead57b2a174076081
    Open exact decision source ↗ for ADR-0042
  • B.SUBVIEW and B.ASSEMBLE range-modifier association · accepted
    1. decision recordADR
    2. case0098

    Decision record

    Loading ADR-0098…

    Sources and references
    Complete stable ID
    ADR-0098
    Path
    docs/status/decisions/0098-b-range-modifiers.md
    Affected units
    PTO-ARCH-PROFILE-RESET, PTO-BLOCK-B-IOT, PTO-BLOCK-B-IOS, PTO-BLOCK-B-SUBVIEW, PTO-BLOCK-B-ASSEMBLE, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-OPERANDS-RANGE-MODIFIERS, PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-BLOCK-MODEL-STATE-CONTROL-STATE, PTO-BLOCK-MODEL-STATE-DESCRIPTOR-STATE, PTO-BLOCK-MODEL-STATE-TYPES, PTO-ARCH-DATA-TYPES-TRAP-CONTEXT, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-TRAP-CONTEXT-RECOVERY, PTO-ARCH-STATE-TRAP-CONTEXT, PTO-BLOCK-MODEL-DISPATCH-TILE-EXECUTION, PTO-BLOCK-MODEL-DISPATCH-TILE-SCHEMA, PTO-BLOCK-MODEL-FAULTS-ROLLBACK, PTO-BLOCK-MODEL-LIFECYCLE-RESET, PTO-BLOCK-MODEL-OPERANDS-LOCAL-GENERATION, PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION, PTO-BLOCK-MODEL-OPERANDS-PORTABLE-CARRIERS, PTO-BLOCK-MODEL-OPERANDS-SUBVIEW-DESCRIPTOR, PTO-BLOCK-MODEL-STATE-SHARED-GENERATION, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS
    Affected NDF
    PTO-B-IOT-STREAM-001, PTO-B-IOS-SHARED-STATE-001, PTO-B-SUBVIEW-RANGE-001, PTO-B-ASSEMBLE-RANGE-001, PTO-B-SUBVIEW-DESCRIPTOR-001, PTO-BLOCK-TILE-OPERATION-APPLICABILITY-001, PTO-B-ASSEMBLE-LOCAL-GENERATION-001, PTO-B-ASSEMBLE-SHARED-GENERATION-001, PTO-B-ASSEMBLE-SHARED-STANDALONE-001, PTO-B-ASSEMBLE-CONSUMER-READINESS-001, PTO-B-ASSEMBLE-SPECULATION-001, PTO-B-ASSEMBLE-PRODUCER-EFFECT-ELIGIBILITY-001
    SHA-256
    e194ccc6b6922fd4b65066b533f5e4b0eba094e099970059bca8e25b4e466fba
    Open exact decision source ↗ for ADR-0098

Unit metadata

Open 4 generated metadata fields
id
PTO-ARCH-PROFILE-REFERENCE-PROFILE
surface
arch
classification
[
  "profile",
  "reference-profile"
]
depends_on
[
  "PTO-ARCH-PROFILE-APPLICABILITY"
]
Open generated traceability record
{
  "classification": [
    "profile",
    "reference-profile"
  ],
  "documentation": "docs/arch/profile/reference-profile.md",
  "id": "PTO-ARCH-PROFILE-REFERENCE-PROFILE",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0005",
    "ADR-0037",
    "ADR-0042",
    "ADR-0098"
  ],
  "semantic_tests": [
    "PTO-AVS-ARCH-CONCRETE-ACCESS-EXEC-005",
    "PTO-AVS-ARCH-CONCRETE-RESET-EXEC-007",
    "PTO-AVS-ARCH-CONCRETE-ROUNDING-EXEC-004",
    "PTO-AVS-ARCH-CONCRETE-SPECIAL-VALUES-EXEC-002",
    "PTO-AVS-ARCH-CONCRETE-SUBNORMAL-EXEC-001",
    "PTO-AVS-ARCH-CONCRETE-TILE-EXEC-006",
    "PTO-AVS-ARCH-CONCRETE-VALUE-CLASSES-EXEC-003",
    "PTO-AVS-ARCH-REFERENCE-PROFILE-DIVZERO-009",
    "PTO-AVS-ARCH-REFERENCE-PROFILE-EXPONENTIAL-008"
  ],
  "source": "asl/arch/profile/reference-profile.asl",
  "surface": "arch",
  "tests": [
    "PTO-AVS-ARCH-CONCRETE-ACCESS-EXEC-005",
    "PTO-AVS-ARCH-CONCRETE-RESET-EXEC-007",
    "PTO-AVS-ARCH-CONCRETE-ROUNDING-EXEC-004",
    "PTO-AVS-ARCH-CONCRETE-SPECIAL-VALUES-EXEC-002",
    "PTO-AVS-ARCH-CONCRETE-SUBNORMAL-EXEC-001",
    "PTO-AVS-ARCH-CONCRETE-TILE-EXEC-006",
    "PTO-AVS-ARCH-CONCRETE-VALUE-CLASSES-EXEC-003",
    "PTO-AVS-ARCH-PROFILE-REFERENCE-PROFILE-STATIC-001",
    "PTO-AVS-ARCH-REFERENCE-PROFILE-DIVZERO-009",
    "PTO-AVS-ARCH-REFERENCE-PROFILE-EXPONENTIAL-008"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
35985186c37e602be42577c20249bc42984855d210d834347182b222022e2800
文档 SHA-256
64d6f31735c74dd479a19ac6f0ef97094b05c191bded998f2786478549a7d6b7

精确所有者