llvm-project/llvm/lib/MCA
Andrea Di Biagio e074ac60b4 [MCA] Add an experimental MicroOpQueue stage.
This patch adds an experimental stage named MicroOpQueueStage.
MicroOpQueueStage can be used to simulate a hardware micro-op queue (basically,
a decoupling queue between 'decode' and 'dispatch').  Users can specify a queue
size, as well as a optional MaxIPC (which - in the absence of a "Decoders" stage
- can be used to simulate a different throughput from the decoders).

This stage is added to the default pipeline between the EntryStage and the
DispatchStage only if PipelineOption::MicroOpQueue is different than zero. By
default, llvm-mca sets PipelineOption::MicroOpQueue to the value of hidden flag
-micro-op-queue-size.

Throughput from the decoder can be simulated via another hidden flag named
-decoder-throughput.  That flag allows us to quickly experiment with different
frontend throughputs.  For targets that declare a loop buffer, flag
-decoder-throughput allows users to do multiple runs, each time simulating a
different throughput from the decoders.

This stage can/will be extended in future. For example, we could add a "buffer
full" event to notify bottlenecks caused by backpressure. flag
-decoder-throughput would probably go away if in future we delegate to another
stage (DecoderStage?) the simulation of a (potentially variable) throughput from
the decoders. For now, flag -decoder-throughput is "good enough" to run some
simple experiments.

Differential Revision: https://reviews.llvm.org/D59928

llvm-svn: 357248
2019-03-29 12:15:37 +00:00
..
HardwareUnits [MCA] Highlight kernel bottlenecks in the summary view. 2019-03-04 11:52:34 +00:00
Stages [MCA] Add an experimental MicroOpQueue stage. 2019-03-29 12:15:37 +00:00
CMakeLists.txt [MCA] Add an experimental MicroOpQueue stage. 2019-03-29 12:15:37 +00:00
Context.cpp [MCA] Add an experimental MicroOpQueue stage. 2019-03-29 12:15:37 +00:00
HWEventListener.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InstrBuilder.cpp [MCA] Correctly update the UsedResourceGroups mask in the InstrBuilder. 2019-03-26 15:38:37 +00:00
Instruction.cpp [MCA] Slightly refactor method writeStartEvent in WriteState and ReadState. NFCI 2019-02-18 11:27:11 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Pipeline.cpp [MCA] Fix -Wparentheses warning breaking the -Werror build. 2019-03-27 16:22:36 +00:00
Support.cpp [MCA] Improved debug prints. NFC 2019-02-12 16:18:57 +00:00