-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes to the Cluster API used by the GPU Project #3714
Conversation
Largely follows TileParams / CanAttachTile.
NullIntSource acts as an additional cease source node that always produces 0, and this breaks AND'ing all cease sources to produce cluster-wide cease (which is used at the ChipyardSubsystem to terminate simulation.)
…to ucb-bar-master
…into upstream-master
Can you summarize the changes in the PR comment? |
@hansungk can summarize :) |
(CCBUS(clusterId), ccbus)) ++ (if (coherence.nBanks == 0) Nil else List( | ||
(CMBUS(clusterId), csbus), | ||
(CCOH (clusterId), CoherenceManagerWrapperParams(csbus.blockBytes, csbus.beatBytes, coherence.nBanks, CCOH(clusterId).name)(coherence.coherenceManager)))), | ||
connections = if (coherence.nBanks == 0) Nil else List( | ||
(CSBUS(clusterId), CCOH (clusterId), TLBusWrapperConnection(driveClockFromMaster = Some(true), nodeBinding = BIND_STAR)()), | ||
// NOTE(hansung): not sure this is necessary | ||
(CLBUS(clusterId), CCOH (clusterId), TLBusWrapperConnection(driveClockFromMaster = Some(true), nodeBinding = BIND_STAR)()), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the difference between the CLBUS and the CSBUS?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you want the CLBUS to be totally private, you probably don't want it to the CCOH (ClusterCoherence) device, since that exposes cluster-external memory
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, thanks for the heads up
case class ClusterParams( | ||
val clusterId: Int, | ||
val clockSinkParams: ClockSinkParameters = ClockSinkParameters() | ||
) extends HierarchicalElementParams { | ||
) extends InstantiableClusterParams[Cluster] { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are many of these changes intended to let you extend Cluster?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks fine, I'm guessing this lets you extend Cluster.
Just curious what the purpose of CLBUS is
Yep, mostly to have Cluster extensible to other concrete impls. CLBUS is intended for cluster-local interconnect that's isolated from the outside system bus, which I think CSBUS connects to. Used for the SIMT core <-> scratchpad traffic that should not escape the cluster scope. |
Ah, can you leave CLBUS outside the scope of this PR then, and leave it in your extension to Cluster? I think you can pass a custom ClusterBusTopologyParams |
Yeah can do that, was unsure this would be a common use case, actually |
CLBUS changes should be moved here ucb-bar@d20e98d |
Related issue:
Type of change: other enhancement
Impact: API modification
Development Phase: implementation
Release Notes
title