pub struct RduUnitModel {
pub pcu_stages: Fact<usize>,
pub pcu_lanes: Fact<usize>,
pub pcu_envelope: Fact<(usize, usize)>,
pub datapath_bits: Fact<u32>,
pub acc_tiles: Fact<usize>,
pub mesh_columns: Fact<usize>,
pub fusion_window: Fact<usize>,
pub counter_nest: Fact<usize>,
pub pmu: Fact<PmuSpec>,
pub credit: Option<Fact<CreditLatency>>,
}Expand description
What the public record does not say about a PCU, a PMU and the mesh — every field modeled and cited,
until an SDK number replaces it as Published data.
Fields§
§pcu_stages: Fact<usize>FU pipeline stages per PCU — a result leaves the unit no earlier than this many cycles after entry.
pcu_lanes: Fact<usize>SIMD lanes per PCU — the width of a vector access and of the cross-lane reduction tree.
pcu_envelope: Fact<(usize, usize)>(rows, cols) placement envelope of ONE datapath: what place_with_target may place per PCU.
datapath_bits: Fact<u32>Datapath width in bits (the SIMD/reconfig metadata and the SAT proof width of the envelope).
acc_tiles: Fact<usize>Accumulator capacity per PCU in native tiles.
mesh_columns: Fact<usize>Columns of the modeled mesh: the aspect the PCU count is laid out into.
fusion_window: Fact<usize>Ops fused into one spatial pipeline stage.
counter_nest: Fact<usize>Nested-counter depth the PCU’s own control drives.
pmu: Fact<PmuSpec>The PMU: banks × words, N-buffering, address-datapath stages.
credit: Option<Fact<CreditLatency>>Credit-loop latencies. None is undeclared, NOT zero: the descriptor then gets the vendor’s
double-buffering discipline instead of an invented rate.
Implementations§
Source§impl RduUnitModel
impl RduUnitModel
Sourcepub fn plasticine_inherited() -> RduUnitModel
pub fn plasticine_inherited() -> RduUnitModel
The unit model inherited from the open RDU.
Sourcepub fn metapipeline_unit(&self) -> UnitModel
pub fn metapipeline_unit(&self) -> UnitModel
The metapipeline unit this model drives: the ISCA’17 PCU as the public toolchain simulates it, at this depth (result latency = pipeline depth, one-cycle carried-register turnaround).
Trait Implementations§
Source§impl Clone for RduUnitModel
impl Clone for RduUnitModel
Source§fn clone(&self) -> RduUnitModel
fn clone(&self) -> RduUnitModel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RduUnitModel
impl Debug for RduUnitModel
Source§impl PartialEq for RduUnitModel
impl PartialEq for RduUnitModel
Source§impl Serialize for RduUnitModel
impl Serialize for RduUnitModel
impl Copy for RduUnitModel
impl Eq for RduUnitModel
impl StructuralPartialEq for RduUnitModel
Auto Trait Implementations§
impl Freeze for RduUnitModel
impl RefUnwindSafe for RduUnitModel
impl Send for RduUnitModel
impl Sync for RduUnitModel
impl Unpin for RduUnitModel
impl UnsafeUnpin for RduUnitModel
impl UnwindSafe for RduUnitModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.