= Hardware Platform Definition = [[PageOutline]] ALMOS-MK has been designed to support clustered manycore architectures, using 32 bits cores (such as the MIPS32 based TSAR architecture), or 64 bits cores (such as the I64 based multicores INTEL/AMD architectures). Each cluster contains one or several cores and one physical memory bank. ALMOS-MK implement one kernel instance per cluster. All relevant parameters describing the clustered multi-core architecture must be defined in the binary '''arch_info.bin''' file. This binary file is exploited by the ALMOS-MK boot loader to configure ALMOS-MK. It can be generated by a specific '''arch.py''' python scrip, for each target architecture. == 1) Cluster identification and addressing == To identify a cluster in the clustered architecture, ALMOS-MK uses an unique cluster identifier '''cxy'''. ALMOS-MK does not make any assumption on the clusters topology, but makes the assumption that the '''cxy''' binary value can be directly concatened to the local physical address (address inside a cluster) to build a global physical address. Warning: The cluster identifier '''cxy''' is NOT a continuous index, and cannot be used to index a cluster array. The size of the local physical address space (inside a cluster) is defined by the '''CONFIG_CLUSTER_SPAN''' global parameter, that is the number of bits in a local physical address. The value of this parameter is 32 in architectures using 32 bits cores, but it can be larger in architectures using 64 bits cores. Any physical address is coded on 64 bits in ALMOS-MK. Note : In architectures where the clusters are organized as a 2D mesh topology, is is possible to derive the [x,y] cluster coordinates from the '''cxy''' cluster identifier, and ALMOS-MK can use it to optimize placement and improve locality, but this optimisation is NOT mandatory. == 2) Processor core identification == ALMOS-MK makes the assumption that each physical core contains an addressable register containing an unique global identifier (called '''gid''') with the only constraint that two different cores have two different '''gid'''. To identify a specific core in the clustered architecture, ALMOS-MK does not use directly this physical '''gid''', but uses a composite index '''[cxy,lid]''', where '''cxy''' is the cluster identifier, and '''lid''' is a local core index. This '''lid''' index is a continuous index in [0,N-1], where N can depend on the cluster, but cannot be larger than the global parameter CONFIG_MAX_CORE_PER_CLUSTER_NR. This abstract composite index is mandatory to support various manycore hardware platforms. The association of a composite index '''[cx,lid]''' to a global physical identifier '''gid''', is defined in the '''arch_info.bin''' file.