90 likes | 232 Views
Behavior and Software Modeling. MPEG Decoder Mapping on Mobile Phone Architecture. Model Purpose and Criteria. Different methods to model behavior/ software Mapping of behavior on hardware and software Experimentation and analysis Performance, resource utilization and power consumption
E N D
Behavior and Software Modeling MPEG Decoder Mapping on Mobile Phone Architecture
Model Purpose and Criteria • Different methods to model behavior/ software • Mapping of behavior on hardware and software • Experimentation and analysis • Performance, resource utilization and power consumption • Compare the performance on the three architectures Mirabilis Designã Confidential
Top-Level Model Three Architectures Select Parameters Traffic Source Computing & Plotting Software Definition Mirabilis Designã Confidential
Architecture Architecture Parameters Architecture Resources Data Routing Between resources Mirabilis Designã Confidential
Behavior Modeling: Define instructions an provide latency to Scheduler Three Sequences Behavior Modeling in the uEngine LBL Video_Packet_Loop ; /* Video Packet Loop */ ACT input wait ; /* Wait for DS In */ ACT DS_Out = Input_Queue ; /* Input Queue */ LBL Execute_on_Processor ; /* Schedule Resource */ ACT DS_Out.Task_Time = rand(1000.0, 2000.0) ; /* Execute on Processor */ ACT DS_Out.Cell_Command = Mapping_Name ; /* Send to Mapping Name */ ACT DS_Out.INDEX = Plot_ID ; /* Send to Task ID */ ACT output2 send DS_Out ; /* Send Packet Out */ ACT input2 wait ; /* Wait for Complete */ ACT DS_Out = Input_Queue ; /* Input Queue */ LBL Execute_on_Bus ; /* Schedule Resource */ ACT DS_Out.Task_Time = rand(100.0, 200.0) ; /* Execute on Bus */ ACT Text_ = "B" ; /* Construct Dest */ ACT Text_ += Integer_ ; /* Construct Dest */ ACT DS_Out.Cell_Command = Text_ ; /* Send to Mapping Name */ ACT DS_Out.INDEX = 1 ; /* Send to Task ID */ ACT output2 send DS_Out ; /* Send Packet Out */ ACT input2 wait ; /* Wait for Complete */ ACT DS_Out = Input_Queue ; /* Input Queue */ LBL Execute_on_Cache ; /* Schedule Resource */ ACT DS_Out.Task_Time = rand(100.0, 200.0) ; /* Execute on Cache */ ACT Text_ = "C" ; /* Construct Dest */ ACT Text_ += Integer_ ; /* Construct Dest */ ACT DS_Out.Cell_Command = Text_ ; /* Send to Mapping Name */ ACT DS_Out.INDEX = 2 ; /* Send to Task ID */ ACT output2 send DS_Out ; /* Send Packet Out */ ACT input2 wait ; /* Wait for Complete */ ACT DS_Out = Input_Queue ; /* Input Queue */ LBL Send_Packet_Out ; /* Done with Tasks */ ACT output send DS_Out ; /* Send Packet Out */ Send to Task_Issue Mirabilis Designã Confidential
Behavior Modeling: Describe pseudo code and latency per task Behavior and Latency Modeling in uEngine LBL Psuedo_Code ; /* SWT adds delay */ ACT Software_Time = irand(1000, 2000) ; /* Convert to Double */ ACT Software_Time *= SWT ; /* Cycle Time */ ACT Software_Time wait ; /* Process Algorithm 1 */ LBL Cycle_Per_Instruction ; SWT JIF Integer_ < 1500 +3 ; /* Follow-On Process */ SWT ACT Integer_ = 1500 - Integer_ ; /* Make a Calc */ SWT GTO +2 ; SWT ACT Integer_ = Integer_ - 1500 ; /* Make a Calc */ SWT WHL Integer_ >= 0 Ext_Code_Execution ; /* While Loop */ SWT ACT Software_Time = SWT * 2.0 ; /* Times 2.0 */ ACT Software_Time wait ; /* Wait for 2 Cycles */ SWT RTN Integer_ -- ; /* End of Loop */ LBL Ext_Code_Execution ; ACT Software_Time = TReal ; /* Wall Clock */ ACT output send DS_Out ; /* Send Packet to SW */ ACT input wait ; /* Wait SW to Finish */ ACT Text2_ = Input_Queue ; /* Input Queue */ ACT Software_Time = TReal - Software_Time ; /* Delta Wall Clock */ ACT Software_Time *= 1.0E-03 ; /* Convert to Seconds */ ACT DS_Out.Task_Time = Software_Time / SW_Cycles_per_Sec ; /* Store in DS */ ACT output2 send DS_Out ; /* Send Packet Out */ GTO Video_Packet_Loop ; /* Repeat */ Latency in DLY Column using a parameter Delay using “wait” statement Mirabilis Designã Confidential
uEngine Software estimation Code LBL Video_Packet_Loop ; /* Video Packet Loop */ ACT input2 wait ; /* Wait for DS In */ ACT DS_Out = Input_Queue ; /* Input Queue */ ACT Software_Time = TReal ; /* Wall Clock */ ACT output send DS_Out ; /* Send Packet to SW */ ACT input wait ; /* Wait for SW to Exec */ ACT Text_ = Input_Queue ; /* Input Queue */ ACT Software_Time = TReal - Software_Time ; /* Wall Clock Time */ JIT Software_Time < 1.0 +4 ; /* Fast Software? */ ACT Software_Time *= 1.0E-03 ; /* Convert Msec to Sec */ ACT Software_Time /= SW_Cycles_per_Sec ; /* Convert Cycl to Sec */ ACT DS_Out.Task_Time = Software_Time ; /* Store in DS */ ACT output2 send DS_Out ; /* Send Packet Out */ GTO Video_Packet_Loop ; /* Repeat */ Software Code Estimation • Create a C Wrapper in VisualSim for the decoder code • Attached the input and output of the wrapper to the uEngine block • Connect output2 of uEngine to a Task_Issue • The Real Time difference between the input and output to code is the processing time Mirabilis Designã Confidential
Latency and Power Analysis Total Latency for the same operation on different architectures Total Power for the same operation on different architectures Mirabilis Designã Confidential
Resource Task Graph Activity at each resource on a timeline Mirabilis Designã Confidential