close

不確定

重要

PPU SIDE:

  • ppu_trace.c
  • ppu_io.c
  • ppu_trace_collector.c

1. ppu_trace.c:

使用變數:

  • SPURecords [MAX_SPU] [BUFFER_NUM] [PPU_BUFFER_ENTRY] (spu_trace_t),
  • SPUStatus [MAX_SPU] [BUFFER_NUM] (status_t),
  • EA[MAX_SPU] [BUFFER_NUM] [2] (存前兩者address),
  • PPURecords [PPU_BUFFER_ENTRY * BUFFER_NUM] (ppu_trace_t),
  • SPEInfo (spe_info_t),
  • SPECtx [MAX_SPU] (spe_context_ptr_t), Cell上特殊結構
  • SPU_Count,
  • TreadCount
  • BufPos
  • SPU_Tid (pthread_t), Pthread

extern void* WriteSPUFile (實做於ppu_io.c)

實作函式:

  • PPU_TraceInit  -->  初始化變數及設定, 呼叫OpenPPUFile及FunctionStart
  • PPUTraceTerminate  -->  結束Trace, 呼叫FunctionEnd及ClosePPUFile
  • SentBufferAddress  -->  有關SPU的資訊 --> call SPUCreate
  • PThreadCreateStart
  • PThreadCreateEnd  -->  呼叫外部函式  --> WriteSPUFile -->  寫出trace.details(四個給converter的檔案之一) (我們將寫在msg_exit)
  • PThreadJoinStart
  • PThreadJoinEnd

2. ppu_io.c

使用變數:

  • Store [BUFFER_NUM] [STORAGE_ENTRY] (spu_trace_t)
  • StoreID [BUFFER_NUM] [STORAGEW_ENTRY/PPU_BUFFER_ENTRY]
  • FILE *ch,*ch1;
  • FILE*PPUFile,*PPUFile1;
  • ptread_t tid;

實做函式:

  • OpenPPUFile  -->  PPUFile (trace.ppu.event), PPUFile1 (trace.details)
  • WritePPUFile  -->  將PPURecords寫入PPUFile並將BufPos設為0
  • WriteSPUDetails  -->  紀錄SPU num及Buffer entry並寫至PPUFile1
  • ClosePPUFile
  • *WriteFile  -->  將前述宣告的變數寫至ch及ch1
  • *WriteSPUFile  --> 被外部程式呼叫

3. ppu_trace_collector.c

使用變數:

  • PPUTime

實做函式;

  • IncreasePos  -->  對BufPos++,並檢查buffer是否已滿
  • CheckCommunicator
  • RecordEvent
  • RecordEventTime
  • RecordEventStart
  • RecordEventEnd
  • FunctionStart
  • FunctionEnd
  • SPUCreate
  • PPUTerminate
  • DMA, MBOX, Sig function
arrow
arrow
    全站熱搜

    phchiu 發表在 痞客邦 留言(0) 人氣()