Subventions et des contributions :
Subvention ou bourse octroyée s'appliquant à plus d'un exercice financier. (2017-2018 à 2022-2023)
According to a study by the International Energy Agency in 2013, the power consumption of electronic devices is climbing 6% per year, twice the increase in overall global consumption. Natural Resources Canada estimates that 10% of household electricity goes into electronic devices. Independent of that, the effectiveness of code reuse has lead to code size and complexity that makes programs need more hardware and maintenance resources than ideally and makes hard guarantees about reliability difficult. Given our increased reliance on computing devices in communication, transportation, health, etc., these contradictory trends are difficult to sustain. We intend to advance programming techniques that address power consumption, reliability, and code reuse through lean programming .
At the "low end" of computing, sensor networks have gained traction, e.g. for indoor/outdoor guidance, urban planning, structural integrity monitoring, building automation, environmental monitoring, farming, and asset management. Ultra-low-power processors of such sensors can be powered by harvesting energy , e.g. solar, thermal, motion, sound, moisture, and RF fields, and are expected to perform without maintenance for years, e.g. embedded in concrete. We intend to propose a method for reliable intermittent computation with unreliable energy sources. Recently, we developed pState, a tool for the design of embedded systems that includes correctness analysis, quantitative analysis (e.g. power consumption, transmission reliability, message delay), code generation, and worst-case execution time analysis. We plan to implement intermittent computations by generating code that uses a combination of volatile and non-volatile memory and extend pState's analysis to the reliability of intermittent computations.
At the "high end" of computing, the increase in the number of processor cores since 2005 allowed an increase in performance while keeping power consumption constant. Although multi-core processors are common in smartphones and data centers, popular programming models do not scale well with the number of cores. Guarded atomic actions are appealing as they are "higher level" and easier to use than explicit signaling and message passing as commonly found. Our recent work has shown how guarded atomic actions in concurrent objects can be implemented highly efficiently and scale well with the number of cores. We plan to develop a production-quality programming language based on guarded atomic actions and address three research questions: (1) how to handle properly exceptions in atomic actions, (2) how to support code reuse through dynamic mixins , as a flexible and safe composition mechanism, with atomic actions, and (3) how to introduce ownership in such a language to allow better static checking, simplify correctness conditions, and improve code efficiency.