diff options
author | Tushar Krishna <tushar@csail.mit.edu> | 2011-11-04 18:40:22 -0400 |
---|---|---|
committer | Tushar Krishna <tushar@csail.mit.edu> | 2011-11-04 18:40:22 -0400 |
commit | ac993964a93b7d2190aa178dc0d5c1c0ade4a966 (patch) | |
tree | 292a8fd447690367721ec955ac2b3895d09731df /src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh | |
parent | 5ff6e05ffdf926523969de471044c9de8b00d593 (diff) | |
download | gem5-ac993964a93b7d2190aa178dc0d5c1c0ade4a966.tar.xz |
GARNET: adding a fault model for resilient on-chip network research.
This patch adds a fault model, which provides the probability of a number of
architectural faults in the interconnection network (e.g., data corruption,
misrouting). These probabilities can be used to realistically inject faults
in GARNET and faithfully evaluate the effectiveness of novel resilient NoC
architectures.
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh')
-rw-r--r-- | src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh index e5a3a0ce2..babc0d443 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh @@ -50,6 +50,7 @@ class RoutingUnit_d; class VCallocator_d; class SWallocator_d; class Switch_d; +class FaultModel; class Router_d : public BasicRouter { @@ -86,6 +87,8 @@ class Router_d : public BasicRouter void vcarb_req(); void swarb_req(); void printConfig(std::ostream& out); + void printFaultVector(std::ostream& out); + void printAggregateFaultProbability(std::ostream& out); double calculate_power(); void calculate_performance_numbers(); @@ -93,6 +96,15 @@ class Router_d : public BasicRouter double get_dynamic_power(){return m_power_dyn;} double get_static_power(){return m_power_sta;} double get_clk_power(){return m_clk_power;} + bool get_fault_vector(int temperature, float fault_vector[]){ + return m_network_ptr->fault_model->fault_vector(m_id, temperature, + fault_vector); + } + bool get_aggregate_fault_probability(int temperature, + float *aggregate_fault_prob){ + return m_network_ptr->fault_model->fault_prob(m_id, temperature, + aggregate_fault_prob); + } private: int m_virtual_networks, m_num_vcs, m_vc_per_vnet; |