+ /**
+ * @brief Cpu constructor
+ *
+ * @param model The CpuModel associated to this Cpu
+ * @param host The host in which this Cpu should be plugged
+ * @param constraint The lmm constraint associated to this Cpu if it is part of a LMM component
+ * @param core The number of core of this Cpu
+ * @param speedPeak The speed peak of this Cpu in flops (max speed)
+ * @param speedScale The speed scale of this Cpu in [0;1] (available amount)
+ * @param stateInitial whether it is created running or crashed
+ */
+ Cpu(simgrid::surf::Model *model, simgrid::s4u::Host *host,
+ lmm_constraint_t constraint,
+ xbt_dynar_t speedPeakList, int pstate,
+ int core, double speedPeak, double speedScale,
+ int initiallyOn);
+
+ /**
+ * @brief Cpu constructor
+ *
+ * @param model The CpuModel associated to this Cpu
+ * @param host The host in which this Cpu should be plugged
+ * @param core The number of core of this Cpu
+ * @param speedPeak The speed peak of this Cpu in flops (max speed)
+ * @param speedScale The speed scale of this Cpu in [0;1] (available amount)
+ * @param stateInitial whether it is created running or crashed
+ */
+ Cpu(simgrid::surf::Model *model, simgrid::s4u::Host *host,
+ xbt_dynar_t speedPeakList, int pstate,
+ int core, double speedPeak, double speedScale,
+ int initiallyOn);
+
+ ~Cpu();
+
+ /**
+ * @brief Execute some quantity of computation
+ *
+ * @param size The value of the processing amount (in flop) needed to process
+ * @return The CpuAction corresponding to the processing
+ */
+ virtual simgrid::surf::Action *execute(double size)=0;
+
+ /**
+ * @brief Make a process sleep for duration (in seconds)
+ *
+ * @param duration The number of seconds to sleep
+ * @return The CpuAction corresponding to the sleeping
+ */
+ virtual simgrid::surf::Action *sleep(double duration)=0;
+
+ /** @brief Get the amount of cores */