6.2 Memory
A memory component represents an execution platform component that stores binary images. This execution platform component consists of hardware such as randomly accessible physical storage, e.g., RAM, ROM, or more complex permanent storage such as disks, reflective memory, or logical storage.  Memories have properties such as the number and size of addressable storage locations.  Subprograms, data, and processes – reflected in binary images - are bound to memory components for access by processors when executing threads.  A memory component may be contained in a processor or may be accessible from a processor via a bus.
Legality Rules
Category
Type
Implementation
memory
Features
    • requires bus access
Flow specifications: no
Properties: yes
Subcomponents:
    • memory
Subprogram calls: no
Connections: no
Flows: no
Modes: yes
Properties: yes

A memory type can contain requires bus access declarations and property associations.  It must not contain flow specifications.
A memory implementation can contain memory subcomponent declarations. 
A memory implementation can contain a modes subclause and property associations.
A memory implementation must not contain a connections subclause, flows subclause, or subprogram calls subclause.
Standard Properties
-- Properties related memory as a resource and its access
Memory_Protocol: enumeration (read_only, write_only, read_write) => read_write
Word_Size: Size => 8 bits
Word_Count: aadlinteger 0 .. value(Max_Word_Count)
Word_Space: aadlinteger 1 .. value(Max_Word_Space) => 1
Base_Address: access aadlinteger 0 .. value(Max_Base_Address)
Read_Time: list of Time_Range
Write_Time: list of Time_Range
-- Hardware description properties
Hardware_Description_Source_Text: inherit list of aadlstring
Hardware_Source_Language: Supported_Hardware_Source_Languages
Semantics
Memory components are used to store binary images of source text, i.e., code and data.  These images are loaded into memory representing the virtual address space of a process and are accessible to threads contained in the respective processes bound to the processor.  Such access is possible if the memory is contained in this processor or is accessible to this processor via a shared bus component.  Loading of binary images into memory may occur during processor startup or the binary images may have been preloaded into memory before system startup. An example of the latter case is PROM or EPROM containing binary images.
A memory is accessible from a processor if the memory is connected via a shared bus component and the Allowed_Access_Protocol property value for that bus includes Memory_Access.
Memory components can have different property values under different operational modes.