package archimulator.common; import archimulator.core.bpred.BranchPredictorType; import archimulator.uncore.cache.replacement.CacheReplacementPolicyType; import archimulator.uncore.dram.MemoryControllerType; import archimulator.util.StorageUnitHelper; import java.util.ArrayList; import java.util.List; /** * CPU experiment config. * * @author Min Cai */ public class CPUExperimentConfig implements NoCConfig { private ExperimentType type; private String outputDirectory; private List<ContextMapping> contextMappings; private long numMaxInstructions; private int helperThreadPthreadSpawnIndex; private boolean dynamicSpeculativePrecomputationEnabled; private int numMainThreadWaysInStaticPartitionedLRUPolicy; private int numCores; private int numThreadsPerCore; private int physicalRegisterFileCapacity; private int decodeWidth; private int issueWidth; private int commitWidth; private int decodeBufferCapacity; private int reorderBufferCapacity; private int loadStoreQueueCapacity; private BranchPredictorType branchPredictorType; private int twoBitBranchPredictorBimodSize; private int twoBitBranchPredictorBranchTargetBufferNumSets; private int twoBitBranchPredictorBranchTargetBufferAssociativity; private int twoBitBranchPredictorReturnAddressStackSize; private int twoLevelBranchPredictorL1Size; private int twoLevelBranchPredictorL2Size; private int twoLevelBranchPredictorShiftWidth; private boolean twoLevelBranchPredictorXor; private int twoLevelBranchPredictorBranchTargetBufferNumSets; private int twoLevelBranchPredictorBranchTargetBufferAssociativity; private int twoLevelBranchPredictorReturnAddressStackSize; private int combinedBranchPredictorBimodSize; private int combinedBranchPredictorL1Size; private int combinedBranchPredictorL2Size; private int combinedBranchPredictorMetaSize; private int combinedBranchPredictorShiftWidth; private boolean combinedBranchPredictorXor; private int combinedBranchPredictorBranchTargetBufferNumSets; private int combinedBranchPredictorBranchTargetBufferAssociativity; private int combinedBranchPredictorReturnAddressStackSize; private int tlbSize; private int tlbAssociativity; private int tlbLineSize; private int tlbHitLatency; private int tlbMissLatency; private int l1ISize; private int l1IAssociativity; private int l1ILineSize; private int l1IHitLatency; private int l1INumReadPorts; private int l1INumWritePorts; private CacheReplacementPolicyType l1IReplacementPolicyType; private int l1DSize; private int l1DAssociativity; private int l1DLineSize; private int l1DHitLatency; private int l1DNumReadPorts; private int l1DNumWritePorts; private CacheReplacementPolicyType l1DReplacementPolicyType; private int l2Size; private int l2Associativity; private int l2LineSize; private int l2HitLatency; private CacheReplacementPolicyType l2ReplacementPolicyType; private MemoryControllerType memoryControllerType; private int memoryControllerLineSize; private int fixedLatencyMemoryControllerLatency; private int simpleMemoryControllerMemoryLatency; private int simpleMemoryControllerMemoryTrunkLatency; private int simpleMemoryControllerBusWidth; private int basicMemoryControllerToDramLatency; private int basicMemoryControllerFromDramLatency; private int basicMemoryControllerPrechargeLatency; private int basicMemoryControllerClosedLatency; private int basicMemoryControllerConflictLatency; private int basicMemoryControllerBusWidth; private int basicMemoryControllerNumBanks; private int basicMemoryControllerRowSize; private int randSeed; private String routing; private String selection; private int maxInjectionBufferSize; private int maxInputBufferSize; private int numVirtualChannels; private int linkWidth; private int linkDelay; private String antPacketTraffic; private int antPacketSize; private double antPacketInjectionRate; private double acoSelectionAlpha; private double reinforcementFactor; /** * Create a CPU experiment config. */ public CPUExperimentConfig() { this.type = ExperimentType.DETAILED; this.outputDirectory = ""; this.contextMappings = new ArrayList<>(); this.numMaxInstructions = -1; this.helperThreadPthreadSpawnIndex = 3720; this.dynamicSpeculativePrecomputationEnabled = false; this.numMainThreadWaysInStaticPartitionedLRUPolicy = -1; this.numCores = 2; this.numThreadsPerCore = 2; this.physicalRegisterFileCapacity = 128; this.decodeWidth = 4; this.issueWidth = 4; this.commitWidth = 4; this.decodeBufferCapacity = 96; this.reorderBufferCapacity = 96; this.loadStoreQueueCapacity = 48; this.branchPredictorType = BranchPredictorType.PERFECT; this.twoBitBranchPredictorBimodSize = 2048; this.twoBitBranchPredictorBranchTargetBufferNumSets = 512; this.twoBitBranchPredictorBranchTargetBufferAssociativity = 4; this.twoBitBranchPredictorReturnAddressStackSize = 8; this.twoLevelBranchPredictorL1Size = 1; this.twoLevelBranchPredictorL2Size = 1024; this.twoLevelBranchPredictorShiftWidth = 8; this.twoLevelBranchPredictorXor = false; this.twoLevelBranchPredictorBranchTargetBufferNumSets = 512; this.twoLevelBranchPredictorBranchTargetBufferAssociativity = 4; this.twoLevelBranchPredictorReturnAddressStackSize = 8; this.combinedBranchPredictorBimodSize = 2048; this.combinedBranchPredictorL1Size = 1; this.combinedBranchPredictorL2Size = 1024; this.combinedBranchPredictorMetaSize = 1024; this.combinedBranchPredictorShiftWidth = 8; this.combinedBranchPredictorXor = false; this.combinedBranchPredictorBranchTargetBufferNumSets = 512; this.combinedBranchPredictorBranchTargetBufferAssociativity = 4; this.combinedBranchPredictorReturnAddressStackSize = 8; this.tlbSize = 32768; this.tlbAssociativity = 4; this.tlbLineSize = 64; this.tlbHitLatency = 2; this.tlbMissLatency = 30; this.l1ISize = (int) StorageUnitHelper.displaySizeToByteCount("64 KB"); this.l1IAssociativity = 4; this.l1ILineSize = 64; this.l1IHitLatency = 1; this.l1INumReadPorts = 128; this.l1INumWritePorts = 128; this.l1IReplacementPolicyType = CacheReplacementPolicyType.LRU; this.l1DSize = (int) StorageUnitHelper.displaySizeToByteCount("64 KB"); this.l1DAssociativity = 4; this.l1DLineSize = 64; this.l1DHitLatency = 1; this.l1DNumReadPorts = 128; this.l1DNumWritePorts = 128; this.l1DReplacementPolicyType = CacheReplacementPolicyType.LRU; this.l2Size = (int) StorageUnitHelper.displaySizeToByteCount("512 KB"); this.l2Associativity = 16; this.l2LineSize = 64; this.l2HitLatency = 10; this.l2ReplacementPolicyType = CacheReplacementPolicyType.LRU; this.memoryControllerType = MemoryControllerType.FIXED_LATENCY; this.memoryControllerLineSize = 64; this.fixedLatencyMemoryControllerLatency = 200; this.simpleMemoryControllerMemoryLatency = 200; this.simpleMemoryControllerMemoryTrunkLatency = 2; this.simpleMemoryControllerBusWidth = 4; this.basicMemoryControllerToDramLatency = 6; this.basicMemoryControllerFromDramLatency = 12; this.basicMemoryControllerPrechargeLatency = 90; this.basicMemoryControllerClosedLatency = 90; this.basicMemoryControllerConflictLatency = 90; this.basicMemoryControllerBusWidth = 4; this.basicMemoryControllerNumBanks = 8; this.basicMemoryControllerRowSize = 2048; this.randSeed = 13; this.routing = "oddEven"; this.selection = "aco"; this.maxInjectionBufferSize = 32; this.maxInputBufferSize = 4; this.numVirtualChannels = 4; this.linkWidth = 4; this.linkDelay = 1; this.antPacketTraffic = "uniform"; this.antPacketSize = 4; this.antPacketInjectionRate = 0.01; this.acoSelectionAlpha = 0.5; this.reinforcementFactor = 0.05; } /** * Get the experiment type. * * @return the experiment type */ public ExperimentType getType() { return type; } /** * Set the experiment type. * * @param type the experiment type */ public void setType(ExperimentType type) { this.type = type; } /** * Get the output directory. * * @return the output directory */ public String getOutputDirectory() { return outputDirectory; } /** * Set the output directory. * * @param outputDirectory the output directory */ public void setOutputDirectory(String outputDirectory) { this.outputDirectory = outputDirectory; } /** * Get the list of context mappings. * * @return the list of context mappings */ public List<ContextMapping> getContextMappings() { return contextMappings; } /** * Get the maximum number of dynamic instructions to be simulated. * * @return the maximum number of dynamic instructions to be simulated */ public long getNumMaxInstructions() { return numMaxInstructions; } /** * Set the maximum number of dynamic instructions to be simulated. * * @param numMaxInstructions the maximum number of dynamic instructions to be simulated */ public void setNumMaxInstructions(long numMaxInstructions) { this.numMaxInstructions = numMaxInstructions; } /** * Get the helper thread pthread spawning pseudo call index. * * @return the helper thread pthread spawning pseudo call index */ public int getHelperThreadPthreadSpawnIndex() { return helperThreadPthreadSpawnIndex; } /** * Set the helper thread pthread spawning pseudo call index. * * @param helperThreadPthreadSpawnIndex the helper thread pthread spawning pseudo call index */ public void setHelperThreadPthreadSpawnIndex(int helperThreadPthreadSpawnIndex) { this.helperThreadPthreadSpawnIndex = helperThreadPthreadSpawnIndex; } /** * Get a boolean value indicating whether dynamic speculative precomputation is enabled or not. * * @return a boolean value indicating whether dynamic speculative precomputation is enabled or not */ public boolean isDynamicSpeculativePrecomputationEnabled() { return dynamicSpeculativePrecomputationEnabled; } /** * Set a boolean value indicating whether dynamic speculative precomputation is enabled or not. * * @param dynamicSpeculativePrecomputationEnabled a boolean value indicating whether dynamic speculative precomputation is enabled or not */ public void setDynamicSpeculativePrecomputationEnabled(boolean dynamicSpeculativePrecomputationEnabled) { this.dynamicSpeculativePrecomputationEnabled = dynamicSpeculativePrecomputationEnabled; } /** * Get the number of main thread ways used in the static partitioned LRU policy. * * @return the number of main thread ways used in the static partitioned LRU policy */ public int getNumMainThreadWaysInStaticPartitionedLRUPolicy() { return numMainThreadWaysInStaticPartitionedLRUPolicy; } /** * Set the number of main thread ways used in the static partitioned LRU policy. * * @param numMainThreadWaysInStaticPartitionedLRUPolicy the number of main thread ways used in the static partitioned LRU policy */ public void setNumMainThreadWaysInStaticPartitionedLRUPolicy(int numMainThreadWaysInStaticPartitionedLRUPolicy) { this.numMainThreadWaysInStaticPartitionedLRUPolicy = numMainThreadWaysInStaticPartitionedLRUPolicy; } /** * Get the number of cores. * * @return the number of cores */ public int getNumCores() { return numCores; } /** * Set the number of cores. * * @param numCores the number of cores */ public void setNumCores(int numCores) { this.numCores = numCores; } /** * Get the number of threads per core. * * @return the number of threads per core */ public int getNumThreadsPerCore() { return numThreadsPerCore; } /** * Set the number of threads per core. * * @param numThreadsPerCore the number of threads per core */ public void setNumThreadsPerCore(int numThreadsPerCore) { this.numThreadsPerCore = numThreadsPerCore; } /** * Get the physical register file capacity. * * @return the physical register file capacity */ public int getPhysicalRegisterFileCapacity() { return physicalRegisterFileCapacity; } /** * Set the physical register file capacity. * * @param physicalRegisterFileCapacity the physical register file capacity */ public void setPhysicalRegisterFileCapacity(int physicalRegisterFileCapacity) { this.physicalRegisterFileCapacity = physicalRegisterFileCapacity; } /** * Get the decode width. * * @return the decode width */ public int getDecodeWidth() { return decodeWidth; } /** * Set the decode width. * * @param decodeWidth the decode width */ public void setDecodeWidth(int decodeWidth) { this.decodeWidth = decodeWidth; } /** * Get the issue width. * * @return the issue width */ public int getIssueWidth() { return issueWidth; } /** * Set the issue width. * * @param issueWidth the issue width */ public void setIssueWidth(int issueWidth) { this.issueWidth = issueWidth; } /** * Get the commit width. * * @return the commit width */ public int getCommitWidth() { return commitWidth; } /** * Set the commit width. * * @param commitWidth the commit width */ public void setCommitWidth(int commitWidth) { this.commitWidth = commitWidth; } /** * Get the decode buffer capacity. * * @return the decode buffer capacity */ public int getDecodeBufferCapacity() { return decodeBufferCapacity; } /** * Set the decode buffer capacity. * * @param decodeBufferCapacity the decode buffer capacity */ public void setDecodeBufferCapacity(int decodeBufferCapacity) { this.decodeBufferCapacity = decodeBufferCapacity; } /** * Get the reorder buffer capacity. * * @return the reorder buffer capacity */ public int getReorderBufferCapacity() { return reorderBufferCapacity; } /** * Set the reorder buffer capacity. * * @param reorderBufferCapacity the reorder buffer capacity */ public void setReorderBufferCapacity(int reorderBufferCapacity) { this.reorderBufferCapacity = reorderBufferCapacity; } /** * Get the load store queue capacity. * * @return the load store queue capacity */ public int getLoadStoreQueueCapacity() { return loadStoreQueueCapacity; } /** * Set the load store queue capacity. * * @param loadStoreQueueCapacity the load store queue capacity */ public void setLoadStoreQueueCapacity(int loadStoreQueueCapacity) { this.loadStoreQueueCapacity = loadStoreQueueCapacity; } /** * Get the branch predictor type. * * @return the branch predictor type */ public BranchPredictorType getBranchPredictorType() { return branchPredictorType; } /** * Set the branch predictor type. * * @param branchPredictorType the branch predictor type */ public void setBranchPredictorType(BranchPredictorType branchPredictorType) { this.branchPredictorType = branchPredictorType; } /** * Get the bimod size used in the two bit branch predictor. * * @return the bimod size used in the two bit branch predictor */ public int getTwoBitBranchPredictorBimodSize() { return twoBitBranchPredictorBimodSize; } /** * Set the bimod size in the two bit branch predictor. * * @param twoBitBranchPredictorBimodSize the bimod size in the two bit branch predictor */ public void setTwoBitBranchPredictorBimodSize(int twoBitBranchPredictorBimodSize) { this.twoBitBranchPredictorBimodSize = twoBitBranchPredictorBimodSize; } /** * Get the number of sets in the branch target buffer used in the two bit branch predictor. * * @return the number of sets in the branch target buffer used in the two bit branch predictor */ public int getTwoBitBranchPredictorBranchTargetBufferNumSets() { return twoBitBranchPredictorBranchTargetBufferNumSets; } /** * Set the number of sets in the branch target buffer used in the two bit branch predictor. * * @param twoBitBranchPredictorBranchTargetBufferNumSets the number of sets in the branch target buffer used in the two bit branch predictor */ public void setTwoBitBranchPredictorBranchTargetBufferNumSets(int twoBitBranchPredictorBranchTargetBufferNumSets) { this.twoBitBranchPredictorBranchTargetBufferNumSets = twoBitBranchPredictorBranchTargetBufferNumSets; } /** * Get the associativity of the branch target buffer used in the two bit branch predictor. * * @return the associativity of the branch target buffer used in the two bit branch predictor */ public int getTwoBitBranchPredictorBranchTargetBufferAssociativity() { return twoBitBranchPredictorBranchTargetBufferAssociativity; } /** * Set the associativity of the branch target buffer used in the two bit branch predictor. * * @param twoBitBranchPredictorBranchTargetBufferAssociativity the associativity of the branch target buffer used in the two bit branch predictor */ public void setTwoBitBranchPredictorBranchTargetBufferAssociativity(int twoBitBranchPredictorBranchTargetBufferAssociativity) { this.twoBitBranchPredictorBranchTargetBufferAssociativity = twoBitBranchPredictorBranchTargetBufferAssociativity; } /** * Get the size of the return address stack used in the two bit branch predictor. * * @return the size of the return address stack used in the two bit branch predictor */ public int getTwoBitBranchPredictorReturnAddressStackSize() { return twoBitBranchPredictorReturnAddressStackSize; } /** * Set the size of the return address stack used in the two bit branch predictor. * * @param twoBitBranchPredictorReturnAddressStackSize the size of the return address stack used in the two bit branch predictor */ public void setTwoBitBranchPredictorReturnAddressStackSize(int twoBitBranchPredictorReturnAddressStackSize) { this.twoBitBranchPredictorReturnAddressStackSize = twoBitBranchPredictorReturnAddressStackSize; } /** * Get the size of the L1 cache used in the two level branch predictor. * * @return the size of the L1 cache used in the two level branch predictor */ public int getTwoLevelBranchPredictorL1Size() { return twoLevelBranchPredictorL1Size; } /** * Set the size of the L1 cache used in the two level branch predictor. * * @param twoLevelBranchPredictorL1Size the size of the L1 cache used in the two level branch predictor */ public void setTwoLevelBranchPredictorL1Size(int twoLevelBranchPredictorL1Size) { this.twoLevelBranchPredictorL1Size = twoLevelBranchPredictorL1Size; } /** * Get the size of the L2 cache used in the two level branch predictor. * * @return the size of the L2 cache used in the two level branch predictor */ public int getTwoLevelBranchPredictorL2Size() { return twoLevelBranchPredictorL2Size; } /** * Set the size of the L2 cache used in the two level branch predictor. * * @param twoLevelBranchPredictorL2Size the size of the L2 cache used in the two level branch predictor */ public void setTwoLevelBranchPredictorL2Size(int twoLevelBranchPredictorL2Size) { this.twoLevelBranchPredictorL2Size = twoLevelBranchPredictorL2Size; } /** * Get the shift width used in the two level branch predictor. * * @return the shift width used in the two level branch predictor */ public int getTwoLevelBranchPredictorShiftWidth() { return twoLevelBranchPredictorShiftWidth; } /** * Set the shift width used in the two level branch predictor. * * @param twoLevelBranchPredictorShiftWidth the shift width used in the two level branch predictor */ public void setTwoLevelBranchPredictorShiftWidth(int twoLevelBranchPredictorShiftWidth) { this.twoLevelBranchPredictorShiftWidth = twoLevelBranchPredictorShiftWidth; } /** * Get the xor used in the two level branch predictor. * * @return the xor used in the two level branch predictor */ public boolean isTwoLevelBranchPredictorXor() { return twoLevelBranchPredictorXor; } /** * Set the xor used in the two level branch predictor. * * @param twoLevelBranchPredictorXor the xor used in the two level branch predictor */ public void setTwoLevelBranchPredictorXor(boolean twoLevelBranchPredictorXor) { this.twoLevelBranchPredictorXor = twoLevelBranchPredictorXor; } /** * Get the number of sets in the branch target buffer used in the two level branch predictor. * * @return the number of sets in the branch target buffer used in the two level branch predictor */ public int getTwoLevelBranchPredictorBranchTargetBufferNumSets() { return twoLevelBranchPredictorBranchTargetBufferNumSets; } /** * Set the number of sets in the branch target buffer used in the two level branch predictor. * * @param twoLevelBranchPredictorBranchTargetBufferNumSets the number of sets in the branch target buffer used in the two level branch predictor */ public void setTwoLevelBranchPredictorBranchTargetBufferNumSets(int twoLevelBranchPredictorBranchTargetBufferNumSets) { this.twoLevelBranchPredictorBranchTargetBufferNumSets = twoLevelBranchPredictorBranchTargetBufferNumSets; } /** * Get the associativity of the branch target buffer used in the two level branch predictor. * * @return the associativity of the branch target buffer used in the two level branch predictor */ public int getTwoLevelBranchPredictorBranchTargetBufferAssociativity() { return twoLevelBranchPredictorBranchTargetBufferAssociativity; } /** * Set the associativity of the branch target buffer used in the two level branch predictor. * * @param twoLevelBranchPredictorBranchTargetBufferAssociativity the associativity of the branch target buffer used in the two level branch predictor */ public void setTwoLevelBranchPredictorBranchTargetBufferAssociativity(int twoLevelBranchPredictorBranchTargetBufferAssociativity) { this.twoLevelBranchPredictorBranchTargetBufferAssociativity = twoLevelBranchPredictorBranchTargetBufferAssociativity; } /** * Get the size of the return address stack used in the two level branch predictor. * * @return the size of the return address stack used in the two level branch predictor */ public int getTwoLevelBranchPredictorReturnAddressStackSize() { return twoLevelBranchPredictorReturnAddressStackSize; } /** * Set the size of the return address stack used in the two level branch predictor. * * @param twoLevelBranchPredictorReturnAddressStackSize the size of the return address stack used in the two level branch predictor */ public void setTwoLevelBranchPredictorReturnAddressStackSize(int twoLevelBranchPredictorReturnAddressStackSize) { this.twoLevelBranchPredictorReturnAddressStackSize = twoLevelBranchPredictorReturnAddressStackSize; } /** * Get the bimod size used in the combined branch predictor. * * @return the bimod size used in the combined branch predictor */ public int getCombinedBranchPredictorBimodSize() { return combinedBranchPredictorBimodSize; } /** * Set the bimod size used in the combined branch predictor. * * @param combinedBranchPredictorBimodSize the bimod size used in the combined branch predictor */ public void setCombinedBranchPredictorBimodSize(int combinedBranchPredictorBimodSize) { this.combinedBranchPredictorBimodSize = combinedBranchPredictorBimodSize; } /** * Get the L1 cache size used in the combined branch predictor. * * @return the L1 cache size used in the combined branch predictor */ public int getCombinedBranchPredictorL1Size() { return combinedBranchPredictorL1Size; } /** * Set the L1 cache size used in the combined branch predictor. * * @param combinedBranchPredictorL1Size the L1 cache size used in the combined branch predictor */ public void setCombinedBranchPredictorL1Size(int combinedBranchPredictorL1Size) { this.combinedBranchPredictorL1Size = combinedBranchPredictorL1Size; } /** * Get the L2 cache size used in the combined branch predictor. * * @return the L2 cache size used in the combined branch predictor */ public int getCombinedBranchPredictorL2Size() { return combinedBranchPredictorL2Size; } /** * Set the L2 cache size used in the combined branch predictor. * * @param combinedBranchPredictorL2Size the L2 cache size used in the combined branch predictor */ public void setCombinedBranchPredictorL2Size(int combinedBranchPredictorL2Size) { this.combinedBranchPredictorL2Size = combinedBranchPredictorL2Size; } /** * Get the meta size used in the combined branch predictor. * * @return the meta size used in the combined branch predictor */ public int getCombinedBranchPredictorMetaSize() { return combinedBranchPredictorMetaSize; } /** * Set the meta size used in the combined branch predictor. * * @param combinedBranchPredictorMetaSize the meta size used in the combined branch predictor */ public void setCombinedBranchPredictorMetaSize(int combinedBranchPredictorMetaSize) { this.combinedBranchPredictorMetaSize = combinedBranchPredictorMetaSize; } /** * Get the shift width used in the combined branch predictor. * * @return the shift width used in the combined branch predictor */ public int getCombinedBranchPredictorShiftWidth() { return combinedBranchPredictorShiftWidth; } /** * Set the shift width used in the combined branch predictor. * * @param combinedBranchPredictorShiftWidth the shift width used in the combined branch predictor */ public void setCombinedBranchPredictorShiftWidth(int combinedBranchPredictorShiftWidth) { this.combinedBranchPredictorShiftWidth = combinedBranchPredictorShiftWidth; } /** * Get the xor used in the combined branch predictor. * * @return the xor used in the combined branch predictor */ public boolean isCombinedBranchPredictorXor() { return combinedBranchPredictorXor; } /** * Set the xor used in the combined branch predictor. * * @param combinedBranchPredictorXor the xor used in the combined branch predictor */ public void setCombinedBranchPredictorXor(boolean combinedBranchPredictorXor) { this.combinedBranchPredictorXor = combinedBranchPredictorXor; } /** * Get the number of sets in the branch target buffer used in the combined branch predictor. * * @return the number of sets in the branch target buffer used in the combined branch predictor */ public int getCombinedBranchPredictorBranchTargetBufferNumSets() { return combinedBranchPredictorBranchTargetBufferNumSets; } /** * Set the number of sets in the branch target buffer used in the combined branch predictor. * * @param combinedBranchPredictorBranchTargetBufferNumSets the number of sets in the branch target buffer used in the combined branch predictor */ public void setCombinedBranchPredictorBranchTargetBufferNumSets(int combinedBranchPredictorBranchTargetBufferNumSets) { this.combinedBranchPredictorBranchTargetBufferNumSets = combinedBranchPredictorBranchTargetBufferNumSets; } /** * Get the associativity of the branch target buffer used in the combined branch predictor. * * @return the associativity of the branch target buffer used in the combined branch predictor */ public int getCombinedBranchPredictorBranchTargetBufferAssociativity() { return combinedBranchPredictorBranchTargetBufferAssociativity; } /** * Set the associativity of the branch target buffer used in the combined branch predictor. * * @param combinedBranchPredictorBranchTargetBufferAssociativity the associativity of the branch target buffer used in the combined branch predictor */ public void setCombinedBranchPredictorBranchTargetBufferAssociativity(int combinedBranchPredictorBranchTargetBufferAssociativity) { this.combinedBranchPredictorBranchTargetBufferAssociativity = combinedBranchPredictorBranchTargetBufferAssociativity; } /** * Get the size of the return address stack used in the combined branch predictor. * * @return the size of the return address stack used in the combined branch predictor */ public int getCombinedBranchPredictorReturnAddressStackSize() { return combinedBranchPredictorReturnAddressStackSize; } /** * Set the size of the return address stack used in the combined branch predictor. * * @param combinedBranchPredictorReturnAddressStackSize the size of the return address stack used in the combined branch predictor */ public void setCombinedBranchPredictorReturnAddressStackSize(int combinedBranchPredictorReturnAddressStackSize) { this.combinedBranchPredictorReturnAddressStackSize = combinedBranchPredictorReturnAddressStackSize; } /** * Get the size of the translation lookaside buffer (TLB). * * @return the size of the translation lookaside buffer (TLB) */ public int getTlbSize() { return tlbSize; } /** * Set the size of the translation lookaside buffer (TLB). * * @param tlbSize the size of the translation lookaside buffer (TLB) */ public void setTlbSize(int tlbSize) { this.tlbSize = tlbSize; } /** * Get the associativity of the translation lookaside buffer (TLB). * * @return the associativity of the translation lookaside buffer (TLB) */ public int getTlbAssociativity() { return tlbAssociativity; } /** * Set the associativity of the translation lookaside buffer (TLB). * * @param tlbAssociativity the associativity of the translation lookaside buffer (TLB) */ public void setTlbAssociativity(int tlbAssociativity) { this.tlbAssociativity = tlbAssociativity; } /** * Get the line size of the translation lookaside buffer (TLB). * * @return the line size of the translation lookaside buffer (TLB) */ public int getTlbLineSize() { return tlbLineSize; } /** * Set the line size of translation lookaside buffer (TLB). * * @param tlbLineSize the line size of the translation lookaside buffer (TLB) */ public void setTlbLineSize(int tlbLineSize) { this.tlbLineSize = tlbLineSize; } /** * Get the hit latency of the translation lookaside buffer (TLB). * * @return the hit latency of the translation lookaside buffer (TLB) */ public int getTlbHitLatency() { return tlbHitLatency; } /** * Set the hit latency of the translation lookaside buffer (TLB). * * @param tlbHitLatency the hit latency of the translation lookaside buffer (TLB) */ public void setTlbHitLatency(int tlbHitLatency) { this.tlbHitLatency = tlbHitLatency; } /** * Get the miss latency of the translation lookaside buffer (TLB). * * @return the miss latency of the translation lookaside buffer (TLB) */ public int getTlbMissLatency() { return tlbMissLatency; } /** * Set the miss latency of the translation lookaside buffer (TLB). * * @param tlbMissLatency the miss latency of the translation lookaside buffer (TLB) */ public void setTlbMissLatency(int tlbMissLatency) { this.tlbMissLatency = tlbMissLatency; } /** * Get the size of the L1 cache. * * @return the size of the L1 cache */ public int getL1ISize() { return l1ISize; } /** * Set the size of the L1 cache. * * @param l1ISize the size of the L1 cache */ public void setL1ISize(int l1ISize) { this.l1ISize = l1ISize; } /** * Get the associativity of the L1 cache. * * @return the associativity of the L1 cache */ public int getL1IAssociativity() { return l1IAssociativity; } /** * Set the associativity of the L1 cache. * * @param l1IAssociativity the associativity of the L1 cache */ public void setL1IAssociativity(int l1IAssociativity) { this.l1IAssociativity = l1IAssociativity; } /** * Get the line size of the L1 cache. * * @return the line size of the L1 cache */ public int getL1ILineSize() { return l1ILineSize; } /** * Set the line size of the L1 cache. * * @param l1ILineSize the line size of the L1 cache */ public void setL1ILineSize(int l1ILineSize) { this.l1ILineSize = l1ILineSize; } /** * Get the hit latency of the L1 cache. * * @return the hit latency of the L1 cache */ public int getL1IHitLatency() { return l1IHitLatency; } /** * Set the hit latency of the L1 cache. * * @param l1IHitLatency the hit latency of the L1 cache */ public void setL1IHitLatency(int l1IHitLatency) { this.l1IHitLatency = l1IHitLatency; } /** * Get the number of read ports in the L1 instruction cache. * * @return the number of read ports in the L1 instruction cache */ public int getL1INumReadPorts() { return l1INumReadPorts; } /** * Set the number of read ports in the L1 instruction cache. * * @param l1INumReadPorts the number of read ports in the L1 instruction cache */ public void setL1INumReadPorts(int l1INumReadPorts) { this.l1INumReadPorts = l1INumReadPorts; } /** * Get the number of write ports in the L1 instruction cache. * * @return the number of write ports in the L1 instruction cache */ public int getL1INumWritePorts() { return l1INumWritePorts; } /** * Set the number of write ports in the L1 instruction cache. * * @param l1INumWritePorts the number of write ports in the L1 instruction cache */ public void setL1INumWritePorts(int l1INumWritePorts) { this.l1INumWritePorts = l1INumWritePorts; } /** * Get the replacement policy type of the L1 instruction cache. * * @return the replacement policy type of the L1 instruction cache */ public CacheReplacementPolicyType getL1IReplacementPolicyType() { return l1IReplacementPolicyType; } /** * Set the replacement policy type of the L1 instruction cache. * * @param l1IReplacementPolicyType the replacement policy type of the L1 instruction cache */ public void setL1IReplacementPolicyType(CacheReplacementPolicyType l1IReplacementPolicyType) { this.l1IReplacementPolicyType = l1IReplacementPolicyType; } /** * Get the size of the L1 data cache. * * @return the size of the L1 data cache */ public int getL1DSize() { return l1DSize; } /** * Set the size of the L1 data cache. * * @param l1DSize the size of the L1 data cache */ public void setL1DSize(int l1DSize) { this.l1DSize = l1DSize; } /** * Get the associativity of the L1 data cache. * * @return the associativity of the L1 data cache */ public int getL1DAssociativity() { return l1DAssociativity; } /** * Set the associativity of the L1 data cache. * * @param l1DAssociativity the associativity of the L1 data cache */ public void setL1DAssociativity(int l1DAssociativity) { this.l1DAssociativity = l1DAssociativity; } /** * Get the line size of the L1 data cache. * * @return the line size of the L1 data cache */ public int getL1DLineSize() { return l1DLineSize; } /** * Set the line size of the L1 data cache. * * @param l1DLineSize the line size of the L1 data cache */ public void setL1DLineSize(int l1DLineSize) { this.l1DLineSize = l1DLineSize; } /** * Get the hit latency of the L1 data cache. * * @return the hit latency of the L1 data cache */ public int getL1DHitLatency() { return l1DHitLatency; } /** * Set the hit latency of the L1 data cache. * * @param l1DHitLatency the hit latency of the L1 data cache */ public void setL1DHitLatency(int l1DHitLatency) { this.l1DHitLatency = l1DHitLatency; } /** * Get the number of read ports in the L1 data cache. * * @return the number of read ports in the L1 data cache */ public int getL1DNumReadPorts() { return l1DNumReadPorts; } /** * Set the number of read ports in the L1 data cache. * * @param l1DNumReadPorts the number of read ports in the L1 data cache */ public void setL1DNumReadPorts(int l1DNumReadPorts) { this.l1DNumReadPorts = l1DNumReadPorts; } /** * Get the number of write ports in the L1 data cache. * * @return the number of write ports in the L1 data cache */ public int getL1DNumWritePorts() { return l1DNumWritePorts; } /** * Set the number of write ports in the L1 data cache. * * @param l1DNumWritePorts the number of write ports in the L1 data cache */ public void setL1DNumWritePorts(int l1DNumWritePorts) { this.l1DNumWritePorts = l1DNumWritePorts; } /** * Get the replacement policy type of the L1 data cache. * * @return the replacement policy type of the L1 data cache */ public CacheReplacementPolicyType getL1DReplacementPolicyType() { return l1DReplacementPolicyType; } /** * Set the replacement policy type of the L1 data cache. * * @param l1DReplacementPolicyType the replacement policy type of the L1 data cache */ public void setL1DReplacementPolicyType(CacheReplacementPolicyType l1DReplacementPolicyType) { this.l1DReplacementPolicyType = l1DReplacementPolicyType; } /** * Get the size of the L2 cache. * * @return the size of the L2 cache */ public int getL2Size() { return l2Size; } /** * Set the size of the L2 cache. * * @param l2Size the size of the L2 cache */ public void setL2Size(int l2Size) { this.l2Size = l2Size; } /** * Get the associativity of the L2 cache. * * @return the associativity of the L2 cache */ public int getL2Associativity() { return l2Associativity; } /** * Set the associativity of the L2 cache. * * @param l2Associativity the associativity of the L2 cache */ public void setL2Associativity(int l2Associativity) { this.l2Associativity = l2Associativity; } /** * Get the line size of the L2 cache. * * @return the line size of the L2 cache */ public int getL2LineSize() { return l2LineSize; } /** * Set the line size of the L2 cache. * * @param l2LineSize the line size of the L2 cache */ public void setL2LineSize(int l2LineSize) { this.l2LineSize = l2LineSize; } /** * Get the hit latency of the L2 cache. * * @return the hit latency of the L2 cache */ public int getL2HitLatency() { return l2HitLatency; } /** * Set the hit latency of the L2 cache. * * @param l2HitLatency the hit latency of the L2 cache */ public void setL2HitLatency(int l2HitLatency) { this.l2HitLatency = l2HitLatency; } /** * Get the replacement policy type of the L2 cache. * * @return the replacement policy type of the L2 cache */ public CacheReplacementPolicyType getL2ReplacementPolicyType() { return l2ReplacementPolicyType; } /** * Set the replacement policy type of the L2 cache. * * @param l2ReplacementPolicyType the replacement policy type of the L2 cache */ public void setL2ReplacementPolicyType(CacheReplacementPolicyType l2ReplacementPolicyType) { this.l2ReplacementPolicyType = l2ReplacementPolicyType; } /** * Get the type of the memory controller. * * @return the type of the memory controller */ public MemoryControllerType getMemoryControllerType() { return memoryControllerType; } /** * Set the type of the memory controller. * * @param memoryControllerType the type of the memory controller */ public void setMemoryControllerType(MemoryControllerType memoryControllerType) { this.memoryControllerType = memoryControllerType; } /** * Get the line size of the memory controller. * * @return the line size of the memory controller */ public int getMemoryControllerLineSize() { return memoryControllerLineSize; } /** * Set the line size of the memory controller. * * @param memoryControllerLineSize the line size of the memory controller */ public void setMemoryControllerLineSize(int memoryControllerLineSize) { this.memoryControllerLineSize = memoryControllerLineSize; } /** * Get the latency of the fixed latency memory controller. * * @return the latency of the fixed latency memory controller */ public int getFixedLatencyMemoryControllerLatency() { return fixedLatencyMemoryControllerLatency; } /** * Set the latency of the fixed latency memory controller. * * @param fixedLatencyMemoryControllerLatency the latency of the fixed latency memory controller */ public void setFixedLatencyMemoryControllerLatency(int fixedLatencyMemoryControllerLatency) { this.fixedLatencyMemoryControllerLatency = fixedLatencyMemoryControllerLatency; } /** * Get the memory latency of the simple memory controller. * * @return the memory latency of the simple memory controller */ public int getSimpleMemoryControllerMemoryLatency() { return simpleMemoryControllerMemoryLatency; } /** * Set the memory latency of the simple memory controller. * * @param simpleMemoryControllerMemoryLatency the memory latency of the simple memory controller */ public void setSimpleMemoryControllerMemoryLatency(int simpleMemoryControllerMemoryLatency) { this.simpleMemoryControllerMemoryLatency = simpleMemoryControllerMemoryLatency; } /** * Get the memory trunk latency of the simple memory controller. * * @return the memory trunk latency of the simple memory controller */ public int getSimpleMemoryControllerMemoryTrunkLatency() { return simpleMemoryControllerMemoryTrunkLatency; } /** * Set the memory trunk latency of the simple memory controller. * * @param simpleMemoryControllerMemoryTrunkLatency the memory trunk latency of the simple memory controller */ public void setSimpleMemoryControllerMemoryTrunkLatency(int simpleMemoryControllerMemoryTrunkLatency) { this.simpleMemoryControllerMemoryTrunkLatency = simpleMemoryControllerMemoryTrunkLatency; } /** * Get the bus width of the simple memory controller. * * @return the bus width of the simple memory controller */ public int getSimpleMemoryControllerBusWidth() { return simpleMemoryControllerBusWidth; } /** * Set the bus width of the simple memory controller. * * @param simpleMemoryControllerBusWidth the bus width of the simple memory controller */ public void setSimpleMemoryControllerBusWidth(int simpleMemoryControllerBusWidth) { this.simpleMemoryControllerBusWidth = simpleMemoryControllerBusWidth; } /** * Get the "to dram" latency of the basic memory controller. * * @return the "to dram" latency of the basic memory controller */ public int getBasicMemoryControllerToDramLatency() { return basicMemoryControllerToDramLatency; } /** * Set the "to dram" latency of the basic memory controller. * * @param basicMemoryControllerToDramLatency the "to dram" latency of the basic memory controller */ public void setBasicMemoryControllerToDramLatency(int basicMemoryControllerToDramLatency) { this.basicMemoryControllerToDramLatency = basicMemoryControllerToDramLatency; } /** * Get the "from dram" latency of the basic memory controller. * * @return the "from dram" latency of the basic memory controller */ public int getBasicMemoryControllerFromDramLatency() { return basicMemoryControllerFromDramLatency; } /** * Set the "from dram" latency of the basic memory controller. * * @param basicMemoryControllerFromDramLatency the "from dram" latency of the basic memory controller */ public void setBasicMemoryControllerFromDramLatency(int basicMemoryControllerFromDramLatency) { this.basicMemoryControllerFromDramLatency = basicMemoryControllerFromDramLatency; } /** * Get the precharge latency of the basic memory controller. * * @return the precharge latency of the basic memory controller */ public int getBasicMemoryControllerPrechargeLatency() { return basicMemoryControllerPrechargeLatency; } /** * Set the precharge latency of the basic memory controller. * * @param basicMemoryControllerPrechargeLatency the precharge latency of the basic memory controller */ public void setBasicMemoryControllerPrechargeLatency(int basicMemoryControllerPrechargeLatency) { this.basicMemoryControllerPrechargeLatency = basicMemoryControllerPrechargeLatency; } /** * Get the closed latency of the basic memory controller. * * @return the closed latency of the basic memory controller */ public int getBasicMemoryControllerClosedLatency() { return basicMemoryControllerClosedLatency; } /** * Set the closed latency of the basic memory controller. * * @param basicMemoryControllerClosedLatency the closed latency of the basic memory controller */ public void setBasicMemoryControllerClosedLatency(int basicMemoryControllerClosedLatency) { this.basicMemoryControllerClosedLatency = basicMemoryControllerClosedLatency; } /** * Get the conflict latency of the basic memory controller. * * @return the conflict latency of the basic memory controller */ public int getBasicMemoryControllerConflictLatency() { return basicMemoryControllerConflictLatency; } /** * Set the conflict latency of the basic memory controller. * * @param basicMemoryControllerConflictLatency the conflict latency of the basic memory controller */ public void setBasicMemoryControllerConflictLatency(int basicMemoryControllerConflictLatency) { this.basicMemoryControllerConflictLatency = basicMemoryControllerConflictLatency; } /** * Get the bus width of the basic memory controller. * * @return the bus width of the basic memory controller */ public int getBasicMemoryControllerBusWidth() { return basicMemoryControllerBusWidth; } /** * Set the bus width of the basic memory controller. * * @param basicMemoryControllerBusWidth the bus width of the basic memory controller */ public void setBasicMemoryControllerBusWidth(int basicMemoryControllerBusWidth) { this.basicMemoryControllerBusWidth = basicMemoryControllerBusWidth; } /** * Get the number of banks in the basic memory controller. * * @return the number of banks in the basic memory controller */ public int getBasicMemoryControllerNumBanks() { return basicMemoryControllerNumBanks; } /** * Set the number of banks in the basic memory controller. * * @param basicMemoryControllerNumBanks the number of banks in the basic memory controller */ public void setBasicMemoryControllerNumBanks(int basicMemoryControllerNumBanks) { this.basicMemoryControllerNumBanks = basicMemoryControllerNumBanks; } /** * Get the row size of the basic memory controller. * * @return the row size of the basic memory controller */ public int getBasicMemoryControllerRowSize() { return basicMemoryControllerRowSize; } /** * Set the row size of the basic memory controller. * * @param basicMemoryControllerRowSize the row size of the basic memory controller */ public void setBasicMemoryControllerRowSize(int basicMemoryControllerRowSize) { this.basicMemoryControllerRowSize = basicMemoryControllerRowSize; } /** * Get the random seed. * * @return the random seed */ @Override public int getRandSeed() { return randSeed; } /** * Set the random seed. * * @param randSeed the random seed */ public void setRandSeed(int randSeed) { this.randSeed = randSeed; } /** * Get the routing algorithm in the NoCs. * * @return the routing algorithm in the NoCs */ @Override public String getRouting() { return routing; } /** * Set the routing algorithm in the NoCs. * * @param routing the routing algorithm in the NoCs */ public void setRouting(String routing) { this.routing = routing; } /** * Get the selection policy in the NoCs. * * @return the selection policy in the NoCs */ @Override public String getSelection() { return selection; } /** * Set the selection policy in the NoCs. * * @param selection the selection policy in the NoCs */ public void setSelection(String selection) { this.selection = selection; } /** * Get the maximum size of the injection buffer. * * @return the maximum size of the injection buffer */ @Override public int getMaxInjectionBufferSize() { return maxInjectionBufferSize; } /** * Set the maximum size of the injection buffer. * * @param maxInjectionBufferSize the maximum size of the injection buffer */ public void setMaxInjectionBufferSize(int maxInjectionBufferSize) { this.maxInjectionBufferSize = maxInjectionBufferSize; } /** * Get the maximum size of the input buffer. * * @return the maximum size of the input buffer */ @Override public int getMaxInputBufferSize() { return maxInputBufferSize; } /** * Set the maximum size of the input buffer. * * @param maxInputBufferSize the maximum size of the input buffer */ public void setMaxInputBufferSize(int maxInputBufferSize) { this.maxInputBufferSize = maxInputBufferSize; } /** * Get the number of virtual channels. * * @return the number of virtual channels */ @Override public int getNumVirtualChannels() { return numVirtualChannels; } /** * Set the number of virtual channels. * * @param numVirtualChannels the number of virtual channels */ public void setNumVirtualChannels(int numVirtualChannels) { this.numVirtualChannels = numVirtualChannels; } /** * Get the link width. * * @return the link width */ @Override public int getLinkWidth() { return linkWidth; } /** * Set the link width. * * @param linkWidth the link width */ public void setLinkWidth(int linkWidth) { this.linkWidth = linkWidth; } /** * Get the link delay. * * @return the link delay */ @Override public int getLinkDelay() { return linkDelay; } /** * Set the link delay. * * @param linkDelay the link delay */ public void setLinkDelay(int linkDelay) { this.linkDelay = linkDelay; } /** * Get the ant packet traffic. * * @return the ant packet traffic */ @Override public String getAntPacketTraffic() { return antPacketTraffic; } /** * Set the ant packet traffic. * * @param antPacketTraffic the ant packet traffic */ public void setAntPacketTraffic(String antPacketTraffic) { this.antPacketTraffic = antPacketTraffic; } /** * Get the size of an ant packet. * * @return the size of an ant packet */ @Override public int getAntPacketSize() { return antPacketSize; } /** * Set the size of an ant packet. * * @param antPacketSize the size of an ant packet */ public void setAntPacketSize(int antPacketSize) { this.antPacketSize = antPacketSize; } /** * Get the ant packet injection rate. * * @return the ant packet injection rate */ @Override public double getAntPacketInjectionRate() { return antPacketInjectionRate; } /** * Set the ant packet injection rate. * * @param antPacketInjectionRate the ant packet injection rate */ public void setAntPacketInjectionRate(double antPacketInjectionRate) { this.antPacketInjectionRate = antPacketInjectionRate; } /** * Get the ACO selection alpha. * * @return the ACO selection alpha */ @Override public double getAcoSelectionAlpha() { return acoSelectionAlpha; } /** * Set the ACO selection alpha. * * @param acoSelectionAlpha the ACO selection alpha */ public void setAcoSelectionAlpha(double acoSelectionAlpha) { this.acoSelectionAlpha = acoSelectionAlpha; } /** * Get the reinforcement factor. * * @return the reinforcement factor */ @Override public double getReinforcementFactor() { return reinforcementFactor; } /** * Set the reinforcement factor. * * @param reinforcementFactor the reinforcement factor */ public void setReinforcementFactor(double reinforcementFactor) { this.reinforcementFactor = reinforcementFactor; } }