Changes between Version 21 and Version 22 of io_operations
- Timestamp:
- Nov 3, 2016, 4:33:52 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
io_operations
v21 v22 6 6 7 7 ALMOS-MK identifies a peripheral by a composite index (func,impl). The '''func''' index defines a functionnal type, the '''impl''' index defines a specific hardware implementation. 8 * Each value of the functional index defines a generic (implementation independent) device XYZ, that is characterized by an API defined in the ''dev_xyz.h'' file. This generic API allows the kernel to access the peripheral without taking care on the actual implementation.8 * Each value of the functional index defines a generic (implementation independent) device XYZ, that is characterized by an API defined in the ''dev_xyz.h'' file. This generic API allows the kernel to access the peripheral without taking care on the actual hardware implementation. 9 9 * For each generic device XYZ, it can exist several hardware implementation, and each value of the implementation index '''impl''' is associated with a specific driver, that must implement the API defined for the XYZ generic device. 10 10 11 11 ALMOS-MK supports two types of peripheral components: 12 12 13 * '''External peripherals''' are accessed through a bridge located in one single cluster (called ''cluster_io'', identified by the ''io_cxy'' parameter in the arch_info description). They are shared ressources that can be used by any kernel instance,running in any cluster. Examples are the generic IOC device (Block Device Controller), the generic NIC device (Network Interface Controller), the generic TXT device (Text Terminal), the generic FBF device (Frame Buffer for Graphical Display Controller).13 * '''External peripherals''' are accessed through a bridge located in one single cluster (called ''cluster_io'', identified by the ''io_cxy'' parameter in the arch_info description). They are shared ressources that can be used by any thread running in any cluster. Examples are the generic IOC device (Block Device Controller), the generic NIC device (Network Interface Controller), the generic TXT device (Text Terminal), the generic FBF device (Frame Buffer for Graphical Display Controller). 14 14 15 * '''Internal peripherals''' are replicated in all clusters. Each internal peripheral is associated to the local kernel instance . There is very few internal peripherals. examples are the generic ICU device (Interrupt Controller Unit), or the generic MMC (L2 Cache Configuration).15 * '''Internal peripherals''' are replicated in all clusters. Each internal peripheral is associated to the local kernel instance, but can be accessed by ant thread running in any cluster. There is very few internal peripherals. Examples are the generic ICU device (Interrupt Controller Unit), or the generic MMC device (L2 Cache Configuration and coherence management). 16 16 17 ALMOS-MK supports ''multi-channels'' peripherals, where one single peripheral controller contains N channels that can run in parallel. Each channel has a separated set of addressable registers, and each channel can be used by the OS as an independent device. Examples are the TXT peripheral (one channel per text terminal), or the NIC peripheral (one channel per MAC interface).17 ALMOS-MK supports ''multi-channels'' external peripherals, where one single peripheral controller contains N channels that can run in parallel. Each channel has a separated set of addressable registers, and each channel can be used by the OS as an independent device. Examples are the TXT peripheral (one channel per text terminal), or the NIC peripheral (one channel per MAC interface). 18 18 19 19 The set of available peripherals, and their localisation in a given many-core architecture must be described in the '''arch_info.py''' file. For each peripheral, the composite index is implemented as a 32 bits integer, where the 16 MSB bits define the type, and the 16 LSB bits define the subtype. … … 86 86 == F) Implementation == 87 87 88 It is worth to note that this general I/O operation mechanism involve generally three clusters (client cluster / server cluster / IO cluster), but does not use any RPC:88 It is worth to note that this general I/O operation mechanism involves generally three clusters (client cluster / server cluster / IO cluster), but does not use any RPC: 89 89 * to post a new command in the waiting queue of a given (remote) device descriptor, the client thread uses only few remote access to be registered in the distributed XLIST rooted in the server cluster. 90 90 * to launch the I/O operation on the (remote) peripheral, the server thread uses only remote access to the physical registers located in the I/O cluster.