Changes between Version 27 and Version 28 of arch_info


Ignore:
Timestamp:
Jun 21, 2018, 11:16:21 AM (3 years ago)
Author:
nicolas.van.phan@…
Comment:

Add links to referenced files

Legend:

Unmodified
Added
Removed
Modified
  • arch_info

    v27 v28  
    55ALMOS-MKH has been designed to support clustered manycore architectures. It can be 32 bits cores (such as the MIPS32 based TSAR architecture), or 64 bits cores (such as the multi-cores Intel/AMD architectures). Each cluster containing enough hardware resources to execute kernel code ( i.e. one core, one physical memory bank, and an interrupt controller unit) will host one kernel instance.
    66
    7 All relevant parameters describing the clustered multi-core architecture must be defined in the binary '''arch_info.bin''' file.
    8 This binary file is exploited by the ALMOS-MKH boot-loader to configure ALMOS-MKH. For each target architecture, there is a specific  '''arch_info.py''' python script, used to generate  this '''arch_info.bin''' file.
     7All relevant parameters describing the clustered multi-core architecture must be defined in the binary [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] file.
     8This binary file is exploited by the ALMOS-MKH boot-loader to configure ALMOS-MKH. For each target architecture, there is a specific  [[span('''arch_info.py''', title=/tsar/platforms/<my_platform>/arch_info.py, style=border-bottom: 1px dotted black)]] python script, used to generate  this [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] file.
    99
    1010== __1)  Cluster and cores identification__  ==
     
    1515assumption on the clusters topology, but makes the assumption that the '''cxy''' binary value can be directly concatenated 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 therefore , it cannot be used to index a clusters array.
    1616
    17 The size of the local physical address space (inside a cluster) is defined by a global configuration parameter in the '''kernel_config.h''' file, 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. A physical address is coded on a 64 bits integer in ALMOS-MKH.
     17The size of the local physical address space (inside a cluster) is defined by a global configuration parameter in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/kernel_config.h kernel_config.h] file, 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. A physical address is coded on a 64 bits integer in ALMOS-MKH.
    1818
    1919Note : 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-MKH can use it to optimize placement and improve locality, but this optimization is NOT mandatory, and ALMOS-MKH supports architectures where the set of cluster is simply a linear vector of clusters.
     
    2525To identify a specific core in the clustered architecture, ALMOS-MKH 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 depends on the cluster, but cannot be larger than the global parameter CONFIG_MAX_CORE_PER_CLUSTER_NR.
    2626
    27 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 [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] file.
    2828
    2929== __2) Hardware architecture description__ ==
    3030
    31 For ALMOS-MKH, the target hardware architecture is described in the binary file '''arch_info.bin'''.
     31For ALMOS-MKH, the target hardware architecture is described in the binary file [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]].
    3232This file is loaded from disk by the ALMOS-MKH boot-loader.
    3333
     
    4444 === 2.2) The arch_info_t structure ===
    4545
    46 The binary file '''arch_info.bin''' is a BLOB defined in the '''arch_info.h''' file .
     46The binary file [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] is a BLOB defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/arch_info.h arch_info.h] file .
    4747This structure has a three levels hierarchical organization:
    4848 *  the architecture contains a variable number of clusters.
     
    5252An addressable device can be a physical memory bank, or a peripheral containing addressable registers.
    5353
    54 The '''arch_info.bin''' BLOB is organized as the concatenation of a fixed size header, and 4 variable size arrays of fixed size objects:
     54The [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] BLOB is organized as the concatenation of a fixed size header, and 4 variable size arrays of fixed size objects:
    5555 *  archinfo_cluster_t  cluster[] 
    5656 *  archinfo_core_t     core[] 
     
    5858 *  archinfo_irq_t      irq[]   
    5959
    60 These four C structures are defined in the  [source:almos-work/tools/arch_info/arch_info.h arch_info.h] file. The access functions are defined in the  [source:almos-work/tools/arch_info/arch_info.c arch_info.c] file.
     60These four C structures are defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/arch_info.h arch_info.h] file. The access functions are defined in the  [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/arch_info.c arch_info.c] file.
    6161
    6262== __3) The python script__ ==
    6363
    64 This section defines the python constructs that can be used to generate  the '''arch_info.bin''' binary file.
    65 These Python classes are defined in the [source:soft/almos-work/tools/python/genarch.py genarch.py] file.
     64This section defines the python constructs that can be used to generate  the [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] binary file.
     65These Python classes are defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/genarch.py genarch.py] file.
    6666
    67 The target hardware architecture must be defined in the ''arch_info.py'' file , you must use the following constructors:
     67The target hardware architecture must be defined in the [[span('''arch_info.py''', title=/tsar/platforms/<my_platform>/arch_info.py, style=border-bottom: 1px dotted black)]] file , you must use the following constructors:
    6868
    6969=== 3.1) Architecture  ===
     
    107107
    108108The peripheral type defines actually a composite index containing a functional type (func-type), and an implementation type (impl_type).
    109 The supported peripheral types are defined in the [source:almos-work/tools/arch_info/arch_classes.py arch_classes.py] file.
     109The supported peripheral types are defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/arch_classes.py arch_classes.py] file.
    110110
    111111The following peripheral components require specific arguments with the following semantic depending on the functional type:
     
    128128== __4) The boot_info_t structure__ ==
    129129
    130 The ALMOS-MKH boot-loader  uses the information found in '''arch_info.bin''' to build one '''boot_info_t''' structure in each cluster. This generic  '''boot_info_t''' structure is used by the kernel to build in each cluster its own representation of the hardware.
     130The ALMOS-MKH boot-loader  uses the information found in [[span('''arch_info.bin''', title=/almos-mkh/arch_info.bin, style=border-bottom: 1px dotted black)]] to build one '''boot_info_t''' structure in each cluster. This generic  '''boot_info_t''' structure is used by the kernel to build in each cluster its own representation of the hardware.
    131131Therefore, the '''boot_info_t''' structure defines the generic (hardware independent) interface between the hardware specific boot-loader and the kernel. 
    132132
    133 It is defined in the [source:almos-work/tools/arch_info/boot_info.h boot_info.h] file.
     133It is defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/boot_info.h boot_info.h] file.