[hellogcc] Re: Re: [hellogcc] Re: [hellogcc] Re: [hellogcc] Re: [hellogcc] HelloGCC 2012 活动通知

  • From: 陳韋任 (Wei-Ren Chen) <chenwj@xxxxxxxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Fri, 17 Aug 2012 15:00:18 +0800

> 我们目前实现的是BB的Profiling,即一个基本块的执行次数是否到达一定阈值,如果达到了,就是热点,然后启动动态编译模块去对热点的BB进行翻译。
> 
> 其实我们也实现了trace的profiling ,但是效果不太好,目前发现和BB
> Profiling效果差不多。主要是trace的profiling本身有些复杂,也要占用运行时间。还需要进一步研究。

  trace profiling 你們是怎麼做的? trace profiling 最大的用處是這樣,

   ---------------
  | Load CPUState | BB1
  |               |
  |               |
  | Save CPUState |
   ---------------
         |
         v
   ---------------
  | Load CPUState | BB2
  |               |
  |               |
  | Save CPUState |
   ---------------

  假設 BB1 -> BB2 構成一條 trace,那你就可以把 BB1 和 BB2 的代碼合在一起,
以 LLVM 來說,就是在一個 LLVM function 裡生成 BB1 和 BB2 的代碼,這樣一來
你可以透過 LLVM 優化手段把 BB1 尾端的 Save CPUState 和 BB2 開頭的 Load
CPUState 消除。一般做法是將 CPUState 要讀出的內容存在 LLVM alloca 分配的
內存上,再透過 Promote Memory to Register 這一類的 opt pass 消除冗餘的
load/store。

韋任

-- 
Wei-Ren Chen (陳韋任)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667
Homepage: http://people.cs.nctu.edu.tw/~chenwj

Other related posts:

  • » [hellogcc] Re: Re: [hellogcc] Re: [hellogcc] Re: [hellogcc] Re: [hellogcc] HelloGCC 2012 活动通知 - 陳韋任 (Wei-Ren Chen)