(1) A memory component represents an execution platform component that stores code and data binaries. 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 · provides bus access · feature group · feature Flow specifications: no Modes: yes Properties: yes |
Subcomponents: · memory · bus · abstract Subprogram calls: no Connections: yes Flows: no Modes: yes Properties: yes |
(L1) A memory type can contain bus access declarations, feature groups, a modes subclause, and property associations. It must not contain flow specifications.
(L2) A memory implementation can contain abstract, memory, and bus subcomponent declarations.
(L3) A memory implementation can contain a modes subclause and property associations.
(L4) A memory implementation can contain bus access connection declarations. Bus access connections can connect a memory subcomponent to a bus subcomponent or a requires bus access feature, as well as connect a provides bus access feature to a bus subcomponent.
(L5) A memory implementation must not contain flows subclause, or subprogram calls subclause.
Standard Properties
-- Properties related memory as a resource and its access
Memory_Protocol: enumeration (execute_only, read_only, write_only, read_write) => read_write
Word_Size: Size => 8 bits
Byte_Count: aadlinteger 0 .. Max_Byte_Count
Word_Space: aadlinteger 1 .. Max_Word_Space => 1
Base_Address: aadlinteger 0 .. Max_Base_Address
Read_Time: record (
Fixed: Time_Range;
PerByte: Time_Range; )
Write_Time: record (
Fixed: Time_Range;
PerByte: Time_Range; )
-- Hardware description properties
Hardware_Description_Source_Text: inherit list of aadlstring
Hardware_Source_Language: Supported_Hardware_Source_Languages
-- mode related properties
Resumption_Policy: enumeration ( restart, resume )
-- Virtual machine layering
Implemented_As: classifier ( system implementation )
Semantics
(2) 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.
(3) A memory is accessible from a processor if the memory is contained in a processor or is connected via a shared bus component and the Allowed_Physical_Access property value for that bus includes Memory_Access.
(4) Memory components can have different property values under different operational modes.
(5) The memory component is intended to be an abstraction of a physical storage component. This can be a memory component such as RAM, or it can represent a more abstract storage component such as a map database. If it is desirable, the internals of the memory can be modeled by AADL as a system in its own right, i.e., an application system and an execution platform. For example, a map data base as a memory component can be modeled as a set of processors and disks as well as the database software. This system implementation description can be associated with the memory component declaration by the Implemented_As property (see Section 14).