wiki:arch_info

Version 2 (modified by alain, 8 years ago) (diff)

--

Hardware Platform Definition

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.