8. Related Work
In this section, we discuss prior research in dynamic
verification. For verifying the execution of a single
thread, there have been two different approaches. First, DIVA adds a small, simple checker core that verifies the
execution of the instructions committed by the microprocessor [3]. By leveraging the microprocessor as an
oracular prefetcher and branch predictor, the simple
checker can keep up with the performance of the microprocessor. Second, there have been several schemes for
multithreaded uniprocessors, starting with AR-SMT
[23], that use redundant threads to detect errors. These
schemes leverage the multiple existing thread contexts
to achieve error detection. Unlike DVMC, none of these
schemes extend to the memory system or to multiple
threads.
For multithreaded systems with shared memory,
there are four related pieces of work. Sorin et al. [25]
developed a scheme for dynamic verification of a subset
of cache coherence in snooping multiprocessors.
Although dynamically verifying these invariants is helpful, it is not an end-to-end mechanism, since coherence
is not sufficient for implementing consistency. Cantin et
al. [6] propose to verify cache coherence by replaying
transactions with a simplified coherence protocol. Cain
et al. [4] describe an algorithm to verify sequential consistency, but do not provide an implementation. Finally,
we previously [16] designed an ad-hoc scheme for
dynamic verification of sequential consistency, which
does not extend to any other consistency models.
8. Related Work
In this section, we discuss prior research in dynamic
verification. For verifying the execution of a single
thread, there have been two different approaches. First, DIVA adds a small, simple checker core that verifies the
execution of the instructions committed by the microprocessor [3]. By leveraging the microprocessor as an
oracular prefetcher and branch predictor, the simple
checker can keep up with the performance of the microprocessor. Second, there have been several schemes for
multithreaded uniprocessors, starting with AR-SMT
[23], that use redundant threads to detect errors. These
schemes leverage the multiple existing thread contexts
to achieve error detection. Unlike DVMC, none of these
schemes extend to the memory system or to multiple
threads.
For multithreaded systems with shared memory,
there are four related pieces of work. Sorin et al. [25]
developed a scheme for dynamic verification of a subset
of cache coherence in snooping multiprocessors.
Although dynamically verifying these invariants is helpful, it is not an end-to-end mechanism, since coherence
is not sufficient for implementing consistency. Cantin et
al. [6] propose to verify cache coherence by replaying
transactions with a simplified coherence protocol. Cain
et al. [4] describe an algorithm to verify sequential consistency, but do not provide an implementation. Finally,
we previously [16] designed an ad-hoc scheme for
dynamic verification of sequential consistency, which
does not extend to any other consistency models.
การแปล กรุณารอสักครู่..