AI SEARCH
FLOW ALGEBRA — REGISTER ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/computer-architecture/register-ontology.html
FLOW REGISTER_ONTOLOGY {
META {
DOMAIN = "Computing Ontologies"
SUBDOMAIN = "Computer Architecture"
ONTOLOGY = "Register Ontology"
PURPOSE = "Formalise processor registers, register types, stored values, data movement, addressing, status information and register-state transitions."
LOCALE = "en-GB"
}
ENTITY_TYPES {
REGISTER
PROCESSOR_REGISTER
GENERAL_PURPOSE_REGISTER
SPECIAL_PURPOSE_REGISTER
DATA_REGISTER
ADDRESS_REGISTER
INDEX_REGISTER
BASE_REGISTER
STACK_POINTER
FRAME_POINTER
PROGRAM_COUNTER
INSTRUCTION_POINTER
INSTRUCTION_REGISTER
MEMORY_ADDRESS_REGISTER
MEMORY_DATA_REGISTER
STATUS_REGISTER
FLAGS_REGISTER
CONTROL_REGISTER
VECTOR_REGISTER
FLOATING_POINT_REGISTER
REGISTER_FILE
CPU
PROCESSOR
CORE
CONTROL_UNIT
ARITHMETIC_LOGIC_UNIT
EXECUTION_UNIT
INSTRUCTION
OPCODE
OPERAND
VALUE
DATA
ADDRESS
BIT
BIT_VECTOR
WORD
BIT_WIDTH
FLAG
ZERO_FLAG
CARRY_FLAG
SIGN_FLAG
OVERFLOW_FLAG
CONTROL_BIT
INPUT
OUTPUT
READ_OPERATION
WRITE_OPERATION
LOAD_OPERATION
STORE_OPERATION
STATE
REGISTER_STATE
EVENT
CLOCK
CLOCK_CYCLE
DATA_PATH
CONFIGURATION
VERSION
ERROR
EVIDENCE
CONFIDENCE_SCORE
PROVENANCE_RECORD
}
RELATIONSHIPS {
IS_A
INSTANCE_OF
PART_OF
CONTAINS
HAS_REGISTER
HAS_REGISTER_FILE
STORES
HOLDS
READS
WRITES
LOADS
RECEIVES
PRODUCES
TRANSFERS_TO
ADDRESSES
POINTS_TO
CONTAINS_VALUE
HAS_BIT_WIDTH
HAS_FLAG
SETS_FLAG
CLEARS_FLAG
HAS_STATE
TRANSITIONS_TO
UPDATED_BY
USED_BY
ACCESSED_BY
SELECTED_BY
CONTROLS
HAS_INPUT
HAS_OUTPUT
HAS_CONFIGURATION
HAS_VERSION
DEPENDS_ON
PRECEDES
FOLLOWS
DERIVED_FROM
INFERRED_FROM
HAS_EVIDENCE
HAS_CONFIDENCE
HAS_PROVENANCE
MAPS_TO
SEMANTICALLY_EQUIVALENT_TO
}
INPUTS {
REGISTER_SPECIFICATIONS
REGISTER_FILE_DEFINITIONS
ISA_DEFINITIONS
REGISTER_NAMES
REGISTER_VALUES
BIT_WIDTH_DEFINITIONS
STATUS_FLAG_DEFINITIONS
CONTROL_BIT_DEFINITIONS
INSTRUCTION_STREAMS
EXECUTION_TRACES
READ_WRITE_TRACES
CLOCK_PARAMETERS
CONFIGURATION_DATA
VERSION_DATA
ONTOLOGY_TERMS
}
NORMALISE {
STANDARDISE_REGISTER_IDENTIFIERS
NORMALISE_REGISTER_NAMES
NORMALISE_REGISTER_CLASSES
NORMALISE_BIT_WIDTHS
NORMALISE_VALUE_REPRESENTATIONS
NORMALISE_ADDRESS_FORMATS
NORMALISE_FLAG_NAMES
NORMALISE_CONTROL_BITS
NORMALISE_VERSION_IDENTIFIERS
RESOLVE_REGISTER_ALIASES
RESOLVE_COMPONENT_IDENTITIES
ALIGN_ONTOLOGY_TERMS
REMOVE_DUPLICATES
VALIDATE_METADATA
PRESERVE_PROVENANCE
}
PROCESS REGISTER_ACCESS_PIPELINE {
INSTRUCTION
-> REGISTER_OPERAND_DECODE
-> REGISTER_SELECTION
-> READ_OR_WRITE_DECISION
-> REGISTER_ACCESS
-> DATA_PATH_TRANSFER
-> REGISTER_STATE_UPDATE
}
PROCESS REGISTER_READ {
REGISTER_IDENTIFIER
-> REGISTER_SELECTION
REGISTER_SELECTION
-> CURRENT_REGISTER_STATE
CURRENT_REGISTER_STATE
-> READ_VALUE
READ_VALUE
-> DATA_PATH_OR_EXECUTION_UNIT
}
PROCESS REGISTER_WRITE {
SOURCE_VALUE
-> DESTINATION_REGISTER_SELECTION
DESTINATION_REGISTER_SELECTION
-> WRITE_ENABLE
WRITE_ENABLE + CLOCK_OR_COMMIT_EVENT
-> REGISTER_UPDATE
REGISTER_UPDATE
-> NEW_REGISTER_STATE
}
PROCESS PROGRAM_COUNTER_REASONING {
PROGRAM_COUNTER(T1)
+ CONTROL_FLOW_EVENT
-> NEXT_ADDRESS_SELECTION
NEXT_ADDRESS_SELECTION
-> SEQUENTIAL_ADDRESS
OR -> BRANCH_TARGET
OR -> JUMP_TARGET
OR -> INTERRUPT_VECTOR
OR -> EXCEPTION_VECTOR
SELECTED_ADDRESS
-> PROGRAM_COUNTER(T2)
}
PROCESS STATUS_REGISTER_REASONING {
OPERATION_RESULT
-> FLAG_EVALUATION
FLAG_EVALUATION
-> ZERO_FLAG_UPDATE
-> CARRY_FLAG_UPDATE
-> SIGN_FLAG_UPDATE
-> OVERFLOW_FLAG_UPDATE
UPDATED_FLAGS
-> STATUS_REGISTER_STATE
}
PROCESS ADDRESS_REGISTER_REASONING {
ADDRESS_VALUE
-> ADDRESS_REGISTER
ADDRESS_REGISTER
-> MEMORY_OR_IO_ADDRESS
MEMORY_OR_IO_ADDRESS
-> READ_OR_WRITE_REQUEST
}
PROCESS REGISTER_FILE_REASONING {
REGISTER_INDEX_SET
-> REGISTER_FILE_SELECTION
REGISTER_FILE_SELECTION
-> MULTIPLE_READ_PORTS
-> WRITE_PORT
READ_PORTS
-> OPERANDS
WRITE_PORT
-> DESTINATION_REGISTER_UPDATE
}
PROCESS REGISTER_STATE_REASONING {
REGISTER_STATE(T1)
+ READ_OPERATION
-> REGISTER_STATE(T1)
REGISTER_STATE(T1)
+ WRITE_OPERATION
-> REGISTER_STATE(T2)
REGISTER_STATE_SEQUENCE
-> REGISTER_TRACE
}
RULES {
IF REGISTER_VALUE_IS_INTERPRETED
THEN REQUIRE {
BIT_WIDTH
REPRESENTATION_CONTEXT
ISA_OR_ARCHITECTURAL_CONTEXT
}
IF REGISTER_IS_WRITTEN
THEN LINK {
PRIOR_VALUE
SOURCE_VALUE
WRITE_EVENT
NEW_VALUE
EXECUTION_CONTEXT
}
IF REGISTER_IS_READ
THEN DO_NOT_INFER_REGISTER_STATE_CHANGE_FROM_READ_ALONE
IF PROGRAM_COUNTER_CHANGES
THEN PRESERVE CONTROL_FLOW_CAUSE
IF STATUS_FLAG_CHANGES
THEN LINK FLAG_CHANGE TO GENERATING_OPERATION_OR_EVENT
IF REGISTER_NAMES_ALIAS_SAME_PHYSICAL_STORAGE
THEN PRESERVE ALIAS_RELATIONSHIP
IF SAME_REGISTER_NAME_EXISTS_ACROSS_DIFFERENT_ISAS
THEN DO_NOT_ASSUME_IDENTICAL_SEMANTICS
IF SEMANTIC_IDENTIFIERS_DIFFER
AND REGISTER_REFERENT_IS_SAME
THEN APPLY SEMANTIC_EQUIVALENCE
}
CONFIDENCE {
CONFIDENCE_SCORE =
WEIGHT(
REGISTER_SPECIFICATION_COMPLETENESS,
ISA_CERTAINTY,
REGISTER_ALIAS_RESOLUTION,
BIT_WIDTH_CERTAINTY,
VALUE_REPRESENTATION_CERTAINTY,
TRACE_COMPLETENESS,
STATE_OBSERVABILITY,
PROVENANCE_COMPLETENESS
)
LEVELS {
HIGH
MODERATE
LOW
INSUFFICIENT
}
IF ISA_OR_BIT_WIDTH_IS_UNKNOWN
THEN REDUCE_REGISTER_INTERPRETATION_CONFIDENCE
IF REGISTER_ALIASING_IS_UNRESOLVED
THEN REDUCE CONFIDENCE_SCORE
IF COMPLETE_EXECUTION_TRACE_CONFIRMS_STATE
THEN INCREASE CONFIDENCE_SCORE
}
SEMANTIC_EQUIVALENCE {
EQUIVALENCE_KEY =
NORMALISE(
ENTITY_TYPE,
CANONICAL_REGISTER_IDENTIFIER,
ISA,
REGISTER_CLASS,
BIT_WIDTH,
ARCHITECTURAL_CONTEXT
)
IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
THEN A SEMANTICALLY_EQUIVALENT_TO B
ELSE PRESERVE_DISTINCT_ENTITIES
}
REASONING_CONSTRAINTS {
REGISTER != MEMORY_LOCATION
REGISTER_NAME != PHYSICAL_REGISTER_WITHOUT_ALIAS_CONTEXT
REGISTER_VALUE != SEMANTIC_VALUE_WITHOUT_REPRESENTATION
READ != WRITE
READ_OPERATION_DOES_NOT_NORMALLY_MUTATE_REGISTER_STATE
PROGRAM_COUNTER != INSTRUCTION
ADDRESS_REGISTER != ADDRESSED_MEMORY
STATUS_FLAG != OPERATION_RESULT
SAME_REGISTER_NAME != SAME_SEMANTICS_ACROSS_ARCHITECTURES
BIT_WIDTH_AFFECTS_VALUE_INTERPRETATION
ISA_AFFECTS_REGISTER_SEMANTICS
SPECULATIVE_REGISTER_STATE != COMMITTED_REGISTER_STATE
PROVENANCE_MUST_BE_PRESERVED
UNCERTAINTY_MUST_NOT_BE_DISCARDED
}
VALIDATION {
CHECK_ENTITY_TYPES
CHECK_RELATION_DOMAINS_AND_RANGES
CHECK_REGISTER_IDENTIFIERS
CHECK_REGISTER_CLASS
CHECK_ISA_CONTEXT
CHECK_BIT_WIDTH
CHECK_VALUE_REPRESENTATION
CHECK_REGISTER_ALIASES
CHECK_READ_WRITE_RELATIONS
CHECK_PROGRAM_COUNTER_TRANSITIONS
CHECK_STATUS_FLAGS
CHECK_EXECUTION_TRACE
CHECK_CONFIGURATION
CHECK_VERSION_CONTEXT
CHECK_PROVENANCE
CHECK_CONFIDENCE
CHECK_SEMANTIC_CONSISTENCY
}
OUTPUTS {
NORMALISED_REGISTER_ENTITIES
REGISTER_CLASS_RELATIONS
REGISTER_FILE_RELATIONS
REGISTER_VALUE_RELATIONS
REGISTER_ALIAS_RELATIONS
READ_WRITE_RELATIONS
REGISTER_STATE_TRANSITIONS
PROGRAM_COUNTER_TRANSITIONS
STATUS_FLAG_RELATIONS
ADDRESS_REGISTER_RELATIONS
REGISTER_TRACES
CONFIDENCE_SCORES
EVIDENCE_LINKS
PROVENANCE_RECORDS
EXPLANATION_PATHS
}
UPDATE_MODEL {
ON REGISTER_OR_ARCHITECTURE_CHANGE {
NORMALISE
ENTITY_RESOLUTION
UPDATE_REGISTER_SET
UPDATE_REGISTER_ALIASES
UPDATE_FLAG_SEMANTICS
UPDATE_BIT_WIDTH_CONTEXT
RECOMPUTE_AFFECTED_RELATIONS
UPDATE_CONFIDENCE
PRESERVE_VERSION_HISTORY
}
ON NEW_EXECUTION_EVIDENCE {
LINK_EVIDENCE
UPDATE_REGISTER_TRACE
UPDATE_REGISTER_STATES
REASSESS_READ_WRITE_RELATIONS
UPDATE_CONFIDENCE
RECORD_PROVENANCE
}
ON ONTOLOGY_REVISION {
REMAP_TERMS
CHECK_SEMANTIC_EQUIVALENCE
IDENTIFY_DEPRECATED_TERMS
MIGRATE_RELATIONSHIPS
PRESERVE_PRIOR_VERSION_REFERENCES
}
}
FLOW_HASH {
HASH_INPUT =
CANONICALISE(
ENTITY_TYPES,
RELATIONSHIPS,
RULES,
CONFIDENCE,
SEMANTIC_EQUIVALENCE,
REASONING_CONSTRAINTS,
UPDATE_MODEL
)
FLOW_HASH = SHA256(HASH_INPUT)
}
AI_CONSUMPTION {
INDEX {
ONTOLOGY
ENTITY_TYPES
RELATIONSHIPS
RULES
OUTPUTS
}
RETRIEVE {
BY_REGISTER
BY_REGISTER_CLASS
BY_REGISTER_FILE
BY_VALUE
BY_ADDRESS
BY_FLAG
BY_PROGRAM_COUNTER
BY_READ_OPERATION
BY_WRITE_OPERATION
BY_STATE
BY_EXECUTION_TRACE
BY_CONFIDENCE
}
REASON {
APPLY_RELATIONSHIPS
APPLY_RULES
TRACE_REGISTER_READS
TRACE_REGISTER_WRITES
TRACE_REGISTER_STATE
TRACE_PROGRAM_COUNTER
ANALYSE_STATUS_FLAGS
ANALYSE_REGISTER_ALIASES
CHECK_SEMANTIC_EQUIVALENCE
PRESERVE_UNCERTAINTY
TRACE_EVIDENCE
TRACE_PROVENANCE
GENERATE_EXPLANATION_PATH
}
RESPONSE_POLICY {
DISTINGUISH_REGISTER_FROM_MEMORY
DISTINGUISH_REGISTER_NAME_FROM_PHYSICAL_STORAGE
PRESERVE_ISA_AND_BIT_WIDTH_CONTEXT
DISTINGUISH_READ_FROM_WRITE
PRESERVE_REGISTER_ALIAS_CONTEXT
DISTINGUISH_SPECULATIVE_FROM_COMMITTED_STATE
RETURN_CONFIDENCE_WHEN_AVAILABLE
RETURN_PROVENANCE_WHEN_AVAILABLE
AVOID_UNSUPPORTED_REGISTER_INFERENCE
}
}
TERMINAL {
RESULT =
VALIDATED(
SEMANTICALLY_NORMALISED(
EVIDENCE_LINKED(
CONFIDENCE_AWARE(
REGISTER_KNOWLEDGE
)
)
)
)
}
}
END FLOW
Download Code
Copy to Clipboard