495 research outputs found

    Verification of Synchronous Elastic Pipelined Systems

    Get PDF
    The constant shrinking of technology has lead to several design challenges that the synchronous design paradigm is unable to cope with. Elastic design is a novel and promising design paradigm that overcomes many of these challenges by using components that are insensitive to the latencies of its inputs. Verification is a critical problem for any design paradigm. The complexity of elastic designs arises when the system is pipelined. We develop formal verification techniques to verify synchronous elastic pipelined systems. Note that the goal of verification is not to establish the correctness of the algorithm for synthesizing elastic circuits, but instead, to find bugs and formally prove the correctness of elasticized designs. We develop two formal verification procedures. The first procedure checks the correctness of elastic pipelined systems against their synchronous parent pipelined systems. The second procedure checks the correctness of elastic pipelined systems against their high-level non-pipelined specifications (such as an instruction set architecture). Datatlow through elastic architectures is complicated by the insertion of any number of elastic buffers in any place in the design. We introduce elastic tokenflow diagrams, which arc used to track the flow of data in elastic architectures. We provide a method to construct such diagrams. We also develop highly automated and systematic procedures based on elastic token-flow diagrams that compute functions that map states of elastic systems to states of their specifications. Such functions, known as refinement maps, are used to compare behaviors of elastic and synchronous systems and hence prove their equivalence. We elasticized a 5-stage DLX processor that enables the insertion of buffers in its data path. We constructed several elastic processors by introducing up to 5 elastic buffers at various places in the data path and verified equivalence with both their synchronous parent pipelined systems and also with their instruction set architecture specifications

    Verifying sequentially consistent memory using interface refinement

    Get PDF

    Verifying sequentially consistent memory using interface refinement

    Get PDF

    Compositional C++: Compositional Parallel Programming

    Get PDF
    A compositional parallel program is a program constructed by composing component programs in parallel, where the composed program inherits properties of its components. In this paper, we describe a small extension of C++ called Compositional C++ or CC++ which is an object-oriented notation that supports compositional parallel programming. CC++ integrates different paradigms of parallel programming: data-parallel, task-parallel and object-parallel paradigms; imperative and declarative programming; shared memory and messagebased programs. CC++ is designed to be transportable across a range of MIMD architectures

    Cost models for shared memory architectures

    Get PDF
    We address the gap between structured parallel programming and parallel architectures by formalizing a cost model for shared memory architectures. The cost model captures most of architectural details (processors, memory hierarchy, interconnection network, etc.) to evaluate the under-load shared memory access latency. Analytical and Numerical resolution techniques will be provided and compared. The former ones will be based on Queueing Theory. The latter ones will resort on Markov Chains constructed by means of the stochastic process algebra PEPA
    corecore