From 4af6b73406baaca2d1e4ce064fe393df503218c0 Mon Sep 17 00:00:00 2001 From: Om Patil <200010036@iitdh.ac.in> Date: Tue, 7 Nov 2023 18:35:56 +0530 Subject: [PATCH] simulation of both the old trace format (PIN and Qemu) and the new VISA trace format now supported --- src/simulator/config/EmulatorConfig.java | 1 + src/simulator/config/SystemConfig.java | 5 +++++ src/simulator/config/XMLParser.java | 22 ++++++++++++++++++- src/simulator/config/config.xml | 14 +++++++++--- .../emulatorinterface/RunnableThread.java | 2 +- .../communication/filePacket/FilePacket.java | 13 ++++++----- .../instruction/InstructionClassTable.java | 2 +- .../translator/x86/objparser/ObjParser.java | 11 ++++++++-- src/simulator/main/Main.java | 13 +++++++++++ 9 files changed, 69 insertions(+), 14 deletions(-) diff --git a/src/simulator/config/EmulatorConfig.java b/src/simulator/config/EmulatorConfig.java index dc03079..595b4c8 100755 --- a/src/simulator/config/EmulatorConfig.java +++ b/src/simulator/config/EmulatorConfig.java @@ -4,6 +4,7 @@ public class EmulatorConfig { public static CommunicationType communicationType; public static EmulatorType emulatorType; + public static boolean isVISATrace; public static int maxThreadsForTraceCollection = 1024; public static boolean storeExecutionTraceInAFile; diff --git a/src/simulator/config/SystemConfig.java b/src/simulator/config/SystemConfig.java index adf659f..9b71056 100755 --- a/src/simulator/config/SystemConfig.java +++ b/src/simulator/config/SystemConfig.java @@ -31,8 +31,13 @@ public class SystemConfig Bus, Noc } + public static int NUM_BENCHMARKS; + public static int NoOfCores; + public static String benchmarknames[]; // Number of benchmarks + public static String numCountThreads[]; + public static int maxNumJavaThreads; public static int numEmuThreadsPerJavaThread; diff --git a/src/simulator/config/XMLParser.java b/src/simulator/config/XMLParser.java index f612033..aae6f3e 100755 --- a/src/simulator/config/XMLParser.java +++ b/src/simulator/config/XMLParser.java @@ -67,7 +67,7 @@ public class XMLParser createSharedCacheConfigs(); setSimulationParameters(); setEmulatorParameters(); - + setBenchmarks(); setSystemParameters(); FrequencyConfig.setupStepSizes(); @@ -205,6 +205,7 @@ public class XMLParser EmulatorConfig.emulatorType = getEmulatorType(getImmediateString("EmulatorType", emulatorElmnt)); EmulatorConfig.communicationType = getCommunicationType(getImmediateString("CommunicationType", emulatorElmnt)); + EmulatorConfig.isVISATrace = Boolean.parseBoolean(getImmediateString("isVISATrace", emulatorElmnt)); EmulatorConfig.PinTool = getImmediateString("PinTool", emulatorElmnt); EmulatorConfig.PinInstrumentor = getImmediateString("PinInstrumentor", emulatorElmnt); @@ -1124,6 +1125,25 @@ public class XMLParser return ((Node) resultNode.item(0)).getNodeValue(); } + + private static void setBenchmarks() // Get the immediate string value of a particular tag name under a particular parent tag + { + NodeList nodeLst = doc.getElementsByTagName("Benchmark"); + SystemConfig.NUM_BENCHMARKS=nodeLst.getLength(); + SystemConfig.benchmarknames=new String[SystemConfig.NUM_BENCHMARKS]; + SystemConfig.numCountThreads=new String[SystemConfig.NUM_BENCHMARKS]; + + for(int i=0; i< nodeLst.getLength();i++){ + Node node = nodeLst.item(i); + System.out.println(""); + if (node.getNodeType() == Node.ELEMENT_NODE) + { Element eElement = (Element) node; + SystemConfig.benchmarknames[i]=eElement.getElementsByTagName("BenchmarkPath").item(0).getTextContent(); + SystemConfig.numCountThreads[i]=eElement.getElementsByTagName("Threads").item(0).getTextContent(); + } + } + } + private static PortType setPortType(String inputStr) { PortType result = null; diff --git a/src/simulator/config/config.xml b/src/simulator/config/config.xml index 376f77c..8e65add 100755 --- a/src/simulator/config/config.xml +++ b/src/simulator/config/config.xml @@ -31,12 +31,13 @@ TDP = 15W - pin + none - sharedMemory + file + false @@ -84,6 +85,13 @@ TDP = 15W sub 2 + + + + /store/Documents/B_Tech/Semester_7/ACA/Tejas-Dh/traces/qemuTrace/7zip + 2 + + @@ -477,7 +485,7 @@ TDP = 15W NOC - /nfs_home/rajshekar/resources/tejas_configs/config_2core_kabylake_NocConfig.txt + /store/Documents/B_Tech/Semester_7/ACA/Assignments/Assignment_4/NocConfig.txt STATIC 4 FCFS diff --git a/src/simulator/emulatorinterface/RunnableThread.java b/src/simulator/emulatorinterface/RunnableThread.java index c8bd576..8869ac7 100755 --- a/src/simulator/emulatorinterface/RunnableThread.java +++ b/src/simulator/emulatorinterface/RunnableThread.java @@ -116,7 +116,7 @@ public class RunnableThread implements Encoding, Runnable { public void run() { if (EmulatorConfig.emulatorType == EmulatorType.none - && EmulatorConfig.communicationType == CommunicationType.file) { + && EmulatorConfig.communicationType == CommunicationType.file && EmulatorConfig.isVISATrace) { //trace-file based simulation // for(int core = 0; core < maxCoreAssign; core++) diff --git a/src/simulator/emulatorinterface/communication/filePacket/FilePacket.java b/src/simulator/emulatorinterface/communication/filePacket/FilePacket.java index 67c09e7..6378c3e 100755 --- a/src/simulator/emulatorinterface/communication/filePacket/FilePacket.java +++ b/src/simulator/emulatorinterface/communication/filePacket/FilePacket.java @@ -34,9 +34,9 @@ public class FilePacket extends IpcBase implements Encoding { ArrayList pinpointWeights; int cur_slice = 0; String []basenameForBenchmarks; + int count[]=new int[SystemConfig.NUM_BENCHMARKS]; public FilePacket(String []basenameForBenchmarks) { - /* this.maxApplicationThreads = SystemConfig.maxNumJavaThreads*SystemConfig.numEmuThreadsPerJavaThread; this.basenameForBenchmarks = basenameForBenchmarks; @@ -60,10 +60,14 @@ public class FilePacket extends IpcBase implements Encoding { misc.Error.showErrorAndExit(e.getMessage()); } } + + for(int i=0;i< SystemConfig.NUM_BENCHMARKS;i++){ + count[i]=Integer.parseInt(SystemConfig.numCountThreads[i]); + } int numTotalThreads = 0; for (int benchmark=0; benchmark=maxApplicationThreads) { misc.Error.showErrorAndExit("FilePacket cannot handle tid = " + tidApp); } @@ -206,8 +209,6 @@ public class FilePacket extends IpcBase implements Encoding { } return maxSize; - */ - return 0; } public void errorCheck(int tidApp, long totalReads) { diff --git a/src/simulator/emulatorinterface/translator/x86/instruction/InstructionClassTable.java b/src/simulator/emulatorinterface/translator/x86/instruction/InstructionClassTable.java index c2e88bf..bfa13fb 100755 --- a/src/simulator/emulatorinterface/translator/x86/instruction/InstructionClassTable.java +++ b/src/simulator/emulatorinterface/translator/x86/instruction/InstructionClassTable.java @@ -857,7 +857,7 @@ public class InstructionClassTable { //unhandled x86 instruction type if(instructionClass == null && operation.compareTo("ud2") != 0) - System.out.println(operation); + System.out.println("[x86 Translator] Unhandled instruction type encountered: " +operation); if (instructionClass == null) return InstructionClass.INVALID; diff --git a/src/simulator/emulatorinterface/translator/x86/objparser/ObjParser.java b/src/simulator/emulatorinterface/translator/x86/objparser/ObjParser.java index 438be78..9f11cde 100755 --- a/src/simulator/emulatorinterface/translator/x86/objparser/ObjParser.java +++ b/src/simulator/emulatorinterface/translator/x86/objparser/ObjParser.java @@ -529,8 +529,15 @@ public class ObjParser assemblyTokens[0] = str; currentPointer = indexOf(asmBytes, ' ', previousPointer, 64); - assemblyTokens[1] = new String(asmBytes, previousPointer, (currentPointer-previousPointer)); - currentPointer++; previousPointer = currentPointer; + if(currentPointer==-1) { + assemblyTokens[1] = new String(asmBytes, previousPointer, len(asmBytes)-previousPointer); // only operation field is present + assemblyTokens[2] = assemblyTokens[3] = assemblyTokens[4] = null; + return assemblyTokens; + } + else { + assemblyTokens[1] = new String(asmBytes, previousPointer, (currentPointer-previousPointer)); + currentPointer++; previousPointer = currentPointer; + } } else { assemblyTokens[0] = null; assemblyTokens[1] = str; diff --git a/src/simulator/main/Main.java b/src/simulator/main/Main.java index cffece7..dad58ca 100755 --- a/src/simulator/main/Main.java +++ b/src/simulator/main/Main.java @@ -92,7 +92,20 @@ public class Main { } /*else if(EmulatorConfig.emulatorType==EmulatorType.none) { ObjParser.initializeThreadMicroOpsList(SystemConfig.numEmuThreadsPerJavaThread); }*/ + else{ + executableAndArguments = new String[SystemConfig.NUM_BENCHMARKS]; + + for(int i=0;i