Changes between Version 2 and Version 3 of arch_info


Ignore:
Timestamp:
Jul 20, 2016, 1:29:56 PM (8 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • arch_info

    v2 v3  
    33[[PageOutline]]
    44
    5 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.
     5ALMOS-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, a variable number of addressable peripherals, and one physical memory bank. ALMOS-MK implement one kernel instance per cluster.
    66
    77All relevant parameters describing the clustered multi-core architecture must be defined in the binary '''arch_info.bin''' file.
    88This 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.
    99
    10 == 1)  Cluster identification and addressing ==
     10== 1)  Cluster and cores identification  ==
     11
     12=== 1.1) Cluster identification ===
    1113
    1214To identify a cluster in the clustered architecture, ALMOS-MK uses an unique cluster identifier '''cxy'''. ALMOS-MK does not make any
    1315assumption 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.
    1416
    15 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.
     17The size of the local physical address space (inside a cluster) is defined by a 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.
    1618
    17 Note : In architectures where the clusters are organized as a 2D mesh topology, is is possible to derive the [x,y] cluster coordinates from
    18 the '''cxy''' cluster identifier, and ALMOS-MK can use it to optimize placement and improve locality, but this optimisation is NOT mandatory.
     19Note : In architectures where the clusters are organized as a 2D mesh topology, is is generally 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, and ALMOS-MK supports architectures where the set of cluster is simply a linear vector of clusters.
    1920
    20 == 2) Processor core identification ==
     21=== 1.2) Core identification ==
    2122
    22 ALMOS-MK makes the assumption that each physical core contains an addressable register containing an unique global identifier
    23 (called '''gid''') with the only constraint that two different cores have two different '''gid'''.
     23ALMOS-MK makes the assumption that each physical core contains an hardware addressable register defining an unique global identifier (called '''gid''') with the only constraint that two different cores have two different '''gid'''.
    2424
    2525To 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.
    2626
    27 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.
     27The association of a composite index '''[cx,lid]''' to a global physical identifier '''gid''', is defined in the '''arch_info.bin''' file.
     28
     29== 2) Hardware architecture description ==
     30
     31For ALMOS-MK, the target hardware architecture is described in the binary file '''arch_info.bin'''.
     32This file is loaded from disk by the ALMOS-MK boot-loader. This architecture specific boot-loader  uses this information to build one '''boot_info_t''' structure in each cluster. This generic  '''boot_info_structure''' is the hardware abstraction used by the ALMOS kernel to build in each cluster its own representation of the hardware.
     33
     34=== 2.1) General hypothesis ===
     35
     36 * Each cluster contains a variable number of cores, a variable number of peripherals, and a physical memory bank.
     37 * The number of clusters is variable (can be one).
     38 * The cluster topology is variable (2D mesh or vector)
     39 * The number of cores per cluster is variable (can be zero).
     40 * The number of addressable peripherals per cluster is variable.
     41 * The size of the physical memory bank per cluster is variable.
     42 * Each cluster cover a fixed size segment in the physical address space.
     43
     44 === 2.2) the arch_info_t structure ===
     45
     46The binary file '''arch_info.bin''' is a BLOB containing the binary form of the C arch_info_t structure.
     47This structure has a three levels hierarchical organisation:
     48 *  the architecture contains a variable number of clusters.
     49 *  each cluster contains a variable number of cores and a variable number of addressable devices.
     50 *  some devices contains a variable number of input IRQs.
     51
     52An adressable device can be a physical memory bank, or a peripheral containing addressable registers.
     53
     54The BLOB is organised as the concatenation of a fixed size header and 4 variable size arrays of fixed size objects:
     55 *  archinfo_cluster_t  cluster[] 
     56 *  archinfo_core_t     core[] 
     57 *  archinfo_device_t   device[]
     58 *  archinfo_irq_t      irq[]   
     59
     60All these structures are described in the file [source:almost_work/tools/arch_info/arch_info.h arch_info.h].