Pertti Kellomäki

Learn More
Purpose of embedded computing is to transform input data to output format. Functionality required to achieve this goal is therefore combination of operation executions on computing units and data transfers between those units. To avoid memory bottlenecks, processors use register files to store data during computation.
Software bypassing is a technique that allows programmer-controlled direct transfer of results of computations to the operands of data dependent operations, possibly removing the need to store some values in general purpose registers, while reducing the number of reads from the register file. Software bypassing also improves instruction level paral-lelism(More)
Software design aims at a mapping from domain concepts to an implementation. Abstractions that are not highlighted in the implementation structure often exist only in the minds of the developers during development. While this works reasonably well for single-purpose systems, software product lines, i.e., systems built by reusing the same core functionality,(More)
Multithreading is an important software modularization technique. However, it can incur substantial overheads, especially in processors where the amount of architecturally visible state is large. We propose an implementation technique for co-operative multithreading, where context switches occur in places that minimize the amount of state that needs to be(More)
We present an annotated specification of the consensus protocol of Paxos, the " Single-Decree Synod ". The protocol reaches consensus in a distributed system under non-Byzantine failures. The specification is given in the logic of the PVS theorem prover, and we verify a safety property stating the partial correctness of the algorithm. The specification is(More)