20150112 – Research

1. 소스 코드 검증 완료
Minor한 차이가 있는 것 같다. 하지만 그렇다고 해서 이것이 큰 문제가 될 것 같지는 않는다.


2. Multicore로 확장
~/.initgdb에 다음 두 명령어를 정의함.

define reload_marss
    file ./qemu/qemu-system-x86_64
end

define debug_marss
    handle SIGUSR1 noprint
    handle SIGUSR1 nostop
    handle SIGUSR2 noprint
    handle SIGUSR2 nostop
    run -m 4G -serial pty -nographic -drive cache=unsafe,file=$VM_img/ubuntu-11-natty-for-debugging.qcow2 -vnc :1
end

debug 옵션을 주고 빌드했을 때 에러가 발생하는 문제점이 있다.
./ptlsim/SConstruct에 debug 옵션을 따로 추가해주었다.

#TKHEO------------------------------------------------------------------------------------------
#to enable context aware insertion policy, uncomment the line below
env.Append(CCFLAGS = '-DCONTEXT_AWARE_INSERTION')
#-----------------------------------------------------------------------------------------------
#JSAHN------------------------------------------------------------------------------------------
#to enable context prefetching, uncomment the line below
#env.Append(CCFLAGS = '-DCONTEXT_PREFETCH')
#to assume ideal context prefetching, uncomment the line below
#env.Append(CCFLAGS = '-DIDEAL_CONTEXT_PREFETCH')
#-----------------------------------------------------------------------------------------------
#TKHEO------------------------------------------------------------------------------------------
#actually, we can give a debug option using "debug=1" as a parameter.
#However, there is a build problem. (Because of the modification)
#I'll fix it later, but I have to debug now. Thus I added an debug option for g++
env.Append(CCFLAGS = '-g3')
#-----------------------------------------------------------------------------------------------

부팅이 다 되지 않았는데 simulation을 시작하면 다음과 같은 에러가 발생한다. 부팅 과정의 특징으로 인한 에러인 것 같다. 부팅이 다 되지 않았을 때에는 simulation을 시작하면 안 된다.

(qemu) simconfig -run -stopinsns 1m -machine xeon_ooo_2_th -logfile /tmp/test.log -stats /tmp/test.yml
qemu-system-x86_64: ptlsim/build/core/ooo-core/ooo-pipe.cpp:2107: int xeon::ReorderBufferEntry::commit(): Assertion `ctx.get_cs_eip() ==  uop.rip' failed.

Multicore simulation에서 context aware insertion policy는 에러를 발생시키지 않는다. Context prefetching은 multicore simulation에서 에러가 발생한다.

(qemu) simconfig -machine xeon_ooo_2_th -logfile /tmp/test.log -stats /tmp/test.yml -corefreq 3401000000 -stopcycle 30000000 -run
simulation options received:-machine xeon_ooo_2_th -logfile /tmp/test.log -stats /tmp/test.yml -corefreq 3401000000 -stopcycle 30000000 -run
  Completed             0 cycles, (            0,             0) commits:         0 Hz,         0 insns/sec: rip ffffffff81037eeb ffffffff81037eebtoggle_logging() called

Program received signal SIGSEGV, Segmentation fault.
lookup (key=4650635264, this=0x8a9bf8) at ptlsim/lib/superstl.h:2973
2973            if unlikely (keys[slot] == key) return slot;
(gdb) bt
#0  lookup (key=4650635264, this=0x8a9bf8) at ptlsim/lib/superstl.h:2973
#1  get (key=4650635264, this=0x8a9bf8) at ptlsim/lib/superstl.h:2998
#2  ProcessFootprintController::toggle (this=0x8a9a70 <vtable for Memory::CoherentCache::CacheQueueEntry+16>, pid=4650635264, 
    enable=enable@entry=true) at ptlsim/build/cache/processFootprintController.cpp:117
#3  0x00000000006f3ed7 in toggle_logging (this=0x3843920, doLog_=true, pid=<optimized out>) at ptlsim/cache/cacheController.h:343
#4  xeon::OooCore::runcycle (this=0x36f0120, none=<optimized out>) at ptlsim/build/core/ooo-core/ooo.cpp:629
#5  0x000000000079f329 in BaseMachine::run (this=0x1336320 <coremodel>, config=...) at ptlsim/build/sim/machine.cpp:270
#6  0x00000000007ac340 in ptl_simulate () at ptlsim/build/sim/ptlsim.cpp:1408
#7  0x00000000006411ae in sim_cpu_exec ()
#8  0x000000000040ce35 in main ()

3. 정섭이 형과 대화
Multicore simulation이라고 해서 추가적으로 많은 것이 필요하지는 않다. Multicore로 확장했을 때 생길 수 있는 문제점은 기존의 context aware cache insertion, context prefetching이 동작하지 않을 수 있다는 점이다. 이를 해결해야 한다. 소수점 셋째자리 IPC 차이로 다르다고 이야기할 수는 없다. Cache를 수정하고 있으므로, cache 관련 값들을 보면서 유사한지 아닌지 확인해야 한다.

Advertisements
Tagged with: , , , ,
Posted in 1) Memo
One comment on “20150112 – Research
  1. […] MARSS 개발 원하는 기능을 구현했으며, 이를 디버깅하고자 함. MARSS 디버깅 방법은 이전에 […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,610 hits
%d bloggers like this: