Changes between Version 27 and Version 28 of arch_info
- Timestamp:
- Jun 21, 2018, 11:16:21 AM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
arch_info
v27 v28 5 5 ALMOS-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. 6 6 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.7 All 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. 8 This 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. 9 9 10 10 == __1) Cluster and cores identification__ == … … 15 15 assumption 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. 16 16 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.17 The 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. 18 18 19 19 Note : 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. … … 25 25 To 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. 26 26 27 The association of a composite index '''[cx,lid]''' to a global physical identifier '''gid''', is defined in the '''arch_info.bin'''file.27 The 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. 28 28 29 29 == __2) Hardware architecture description__ == 30 30 31 For ALMOS-MKH, the target hardware architecture is described in the binary file '''arch_info.bin'''.31 For 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)]]. 32 32 This file is loaded from disk by the ALMOS-MKH boot-loader. 33 33 … … 44 44 === 2.2) The arch_info_t structure === 45 45 46 The binary file '''arch_info.bin''' is a BLOB defined in the '''arch_info.h'''file .46 The 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 . 47 47 This structure has a three levels hierarchical organization: 48 48 * the architecture contains a variable number of clusters. … … 52 52 An addressable device can be a physical memory bank, or a peripheral containing addressable registers. 53 53 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:54 The [[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: 55 55 * archinfo_cluster_t cluster[] 56 56 * archinfo_core_t core[] … … 58 58 * archinfo_irq_t irq[] 59 59 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.60 These 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. 61 61 62 62 == __3) The python script__ == 63 63 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.64 This 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. 65 These Python classes are defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/genarch.py genarch.py] file. 66 66 67 The target hardware architecture must be defined in the ''arch_info.py''file , you must use the following constructors:67 The 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: 68 68 69 69 === 3.1) Architecture === … … 107 107 108 108 The 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.109 The 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. 110 110 111 111 The following peripheral components require specific arguments with the following semantic depending on the functional type: … … 128 128 == __4) The boot_info_t structure__ == 129 129 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.130 The 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. 131 131 Therefore, the '''boot_info_t''' structure defines the generic (hardware independent) interface between the hardware specific boot-loader and the kernel. 132 132 133 It is defined in the [ source:almos-work/tools/arch_info/boot_info.h boot_info.h] file.133 It is defined in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/boot_info.h boot_info.h] file.