search for: issuewidth

Displaying 19 results from an estimated 19 matches for "issuewidth".

2018 May 09
2
[MachineScheduler] Question about IssueWidth / NumMicroOps
Hi, I would like to ask what IssueWidth and NumMicroOps refer to in MachineScheduler, just to be 100% sure what the intent is. Are we modeling the decoder phase or the execution stage? Background: First of all, there seems to be different meanings of "issue" depending on which platform you're on: https://stackoverflow....
2018 May 09
0
[MachineScheduler] Question about IssueWidth / NumMicroOps
> On May 9, 2018, at 9:43 AM, Jonas Paulsson <paulsson at linux.vnet.ibm.com> wrote: > > Hi, > > I would like to ask what IssueWidth and NumMicroOps refer to in MachineScheduler, just to be 100% sure what the intent is. > Are we modeling the decoder phase or the execution stage? > > Background: > > First of all, there seems to be different meanings of "issue" depending on which platform you're on:...
2018 May 14
2
[MachineScheduler] Question about IssueWidth / NumMicroOps
...xplanations! Many things could go in as comments, if you ask me - for example: --- > The LLVM machine model is an abstract machine. > The abstract pipeline is built around the notion of an "issue point". This is merely a reference point for counting machine cycles. > > > IssueWidth is meant to be a hard in-order constraint (we sometimes call this kind of constraint a "hazard"). In the GenericScheduler strategy, no more than IssueWidth micro-ops can ever be scheduled in a particular cycle. > > In practice, IssueWidth is useful to model to the bottleneck between...
2018 May 14
0
[MachineScheduler] Question about IssueWidth / NumMicroOps
...as comments, if you ask me - for example: > > --- >> The LLVM machine model is an abstract machine. > >> The abstract pipeline is built around the notion of an "issue point". This is merely a reference point for counting machine cycles. >> >> >> IssueWidth is meant to be a hard in-order constraint (we sometimes call this kind of constraint a "hazard"). In the GenericScheduler strategy, no more than IssueWidth micro-ops can ever be scheduled in a particular cycle. >> >> In practice, IssueWidth is useful to model to the bottlenec...
2018 May 15
1
[MachineScheduler] Question about IssueWidth / NumMicroOps
...see >> as helpful during pre-RA scheduling for SystemZ. Could this be made >> optional, or perhaps only done post-RA if target does post-RA >> scheduling? SystemZ does post-RA scheduling to manage decoder >> grouping, which is where the BeginGroup/EndGroup and >> IssueWidth/NumMicroOps is useful. However doing this pre-RA and >> thereby limiting the freedom of other heuristics (making less >> instructions available) seems like a bad idea. > > I've worked on a few cpus in the past that had issue group > restrictions. It seems like a natural...
2011 May 27
0
[LLVMdev] Post-RA scheduler and IssueWidth
...rrent LLVM sources. Otherwise, I have a (trivial) >> patch for it. >> >> BR >> >> m > > > Hi Max, > > The target's processor itinerary is expressive enough to enforce issue width. See ARMScheduleXX.td. Several months ago, I added ARMSubTarget::computeIssueWidth() so clients could query issue width without modeling the complete reservation table (via ScoreboardHazardRecognizer). This function may or may not work with your itinerary--you may need to write your own. I did consider adding a separate issue width field to the target description for targets that...
2011 May 27
2
[LLVMdev] Post-RA scheduler and IssueWidth
Hi, Can someone tell me if my understanding is right in that post-RA scheduler currently assumes no limits on a pipeline's issue width? If so, is it by design or just overlooked? I have a case for, say, 1-issue pipeline when certain pipeline resource becomes occupied a few clocks after instruction start, but hazard evaluation is done incorrectly as scheduler advances clock not for every
2017 Apr 03
2
Scheduler: modelling long register reservations?
...te only one lane of the vector result. Am I specifying the scheduling constraints incorrectly? Can llvm support this kind of constraint? Thank you, Nick Johnson D. E. Shaw Research // Excerpted from lib/Target/MyTarget/MyTargetSchedule.td: // def DesGCv3GenericModel : SchedMachineModel { let IssueWidth = 1; let MicroOpBufferSize = 0; let CompleteModel = 1; } // ... def FlexU : ProcResource<64> { let BufferSize = 1; } def : WriteRes<IIFlexRead, [FlexU]> { let Latency = 25; let ResourceCycles = [25]; } class SchedFlexRead : Sched< [IIFlexRead] >; // I app...
2015 Nov 16
3
DFAPacketizer, Scheduling and LoadLatency
...tage<1, [Slot0, Slot1]>]>, // <-- This itinerary class describes load instructions InstrItinData<BR, [InstrStage<1, [Slot0]>]> .............................. ]>; def MyTargetModel : SchedMachineModel { // Max issue per cycle == bundle width. let IssueWidth = 2; let Itineraries = MyTargetItineraries; let LoadLatency = 2; } Nowhere in my itinerary description it says that load instruction takes 2 cycles. In the code I couldn't find a path (but I could have missed) how a value from LoadLatency propagates to a load instruction? So how does the...
2015 Mar 27
2
[LLVMdev] Question about load clustering in the machine scheduler
On Thu, Mar 26, 2015 at 11:50:20PM -0700, Andrew Trick wrote: > > > On Mar 26, 2015, at 7:36 PM, Tom Stellard <tom at stellard.net> wrote: > > > > Hi, > > > > I have a program with over 100 loads (each with a 10 cycle latency) > > at the beginning of the program, and I can't figure out how to get > > the machine scheduler to intermix ALU
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...). This was always a hard one to generalize in a machine independent way, and half the world seems to swap the meaning of those terms. If you’re going to make this distinction please define the terms clearly in the machine model and explain how tools are expected to use the information. Currently IssueWidth is used to tell the scheduler that ’N' microops will definitely take ’N’ / ‘IssueWidth’ cycles regardless of which functional units or dispatch pipeline is involved. [Reading below, I saw that you define instruction “dispatch" as what the LLVM machine model calls “issue”. LLVM doesn’t mod...
2016 Apr 26
3
How to get started with instruction scheduling? Advice needed.
...lace itineraries. class A9WriteLMOpsListType<list<WriteSequence> writes> { list <WriteSequence> Writes = writes; SchedMachineModel SchedModel = ?; } // Cortex-A9 machine model for scheduling and other instruction cost heuristics. def CortexA9Model : SchedMachineModel { let IssueWidth = 2; // 2 micro-ops are dispatched per cycle. let MicroOpBufferSize = 56; // Based on available renamed registers. let LoadLatency = 2; // Optimistic load latency assuming bypass. // This is overriden by OperandCycles if the // Itineraries are queri...
2016 Apr 20
2
How to get started with instruction scheduling? Advice needed.
So if I use the SchedMachineModel method, can I just skip itineraries? Phil On Wed, Apr 20, 2016 at 12:29 PM, Sergei Larin <slarin at codeaurora.org> wrote: > Target does make a difference. VLIW needs more hand-holding. For what you > are describing it should be fairly simple. > > > > Best strategy – see what other targets do. ARM might be a good start for > generic
2015 Oct 15
3
what can cause a "CPU table is not sorted" assertion
I'm trying to create a simplified 2 slot VLIW from an OR1K. The codebase I'm working with is here <https://github.com/openrisc/llvm-or1k>. I've created an initial MyTargetSchedule.td def MyTargetModel : SchedMachineModel { // HW can decode 2 instructions per cycle. let IssueWidth = 2; let LoadLatency = 4; let MispredictPenalty = 16; // This flag is set to allow the scheduler to assign a default model to // unrecognized opcodes. let CompleteModel = 0; } def WriteALU : SchedWrite; def WriteBranch : SchedWrite; let SchedModel = MyTargetModel in { // SLOT0 can hand...
2018 Mar 02
5
[RFC] llvm-mca: a static performance analysis tool
...rd one to generalize in a machine independent way, and > half the world seems to swap the meaning of those terms. If you’re going to > make this distinction please define the terms clearly in the machine model > and explain how tools are expected to use the information. > > Currently IssueWidth is used to tell the scheduler that ’N' microops will > definitely take ’N’ / ‘IssueWidth’ cycles regardless of which functional > units or dispatch pipeline is involved. > > [Reading below, I saw that you define instruction “dispatch" as what the > LLVM machine model calls “...
2011 Oct 22
0
[LLVMdev] Instruction Scheduling Itineraries
...Evan >> > > An N-wide machine can be described with N units, regardless of how deep the > pipeline is. > > Furthermore if you only need to model issue width, then you don't even need > to describe the pipeline at all. You only need to set the > InstrItineraryData::IssueWidth field. ARMSubtarget::computeIssueWidth does > this by assuming something about the convention of ARM itineraries. But you > could simply embed the issue width constants for your subtargets within the > target initialization code (in place of computeIssueWidth). I never bothered > to add...
2018 Mar 01
9
[RFC] llvm-mca: a static performance analysis tool
...ch logic is implemented by class DispatchUnit in file Dispatch.h. The size of a dispatch group depends on the availability of hardware resources, and it cannot exceed the value of field 'DispatchWidth' in class DispatchUnit. Note that field DispatchWidth defaults to the value of field 'IssueWidth' from the scheduling model. Users can override the DispatchWidth value with flag "-dispatch=<N>" (where 'N' is an unsigned quantity). An instruction can be dispatched if: - The size of the dispatch group is smaller than DispatchWidth - There are enough entries in the...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...gt; in file > Dispatch.h. > > The size of a dispatch group depends on the availability of hardware > resources, > and it cannot exceed the value of field 'DispatchWidth' in class > DispatchUnit. > Note that field DispatchWidth defaults to the value of field > 'IssueWidth' from > the scheduling model. > > Users can override the DispatchWidth value with flag "-dispatch=<N>" > (where 'N' > is an unsigned quantity). > > An instruction can be dispatched if: >  - The size of the dispatch group is smaller than DispatchW...
2018 Mar 02
0
[RFC] llvm-mca: a static performance analysis tool
...chUnit in > file > Dispatch.h. > > The size of a dispatch group depends on the availability of hardware > resources, > and it cannot exceed the value of field 'DispatchWidth' in class > DispatchUnit. > Note that field DispatchWidth defaults to the value of field 'IssueWidth' > from > the scheduling model. > > Users can override the DispatchWidth value with flag "-dispatch=<N>" > (where 'N' > is an unsigned quantity). > > An instruction can be dispatched if: > - The size of the dispatch group is smaller than Dispa...