20150108 – Research

1. MARSS 실행 시의 에러 해결
– Assertion `ctx.get_cs_eip() == uop.rip’ failed 에러는 vm snapshot 옵션을 주지 않고 실행해서 발생하는 에러였다.
– xeonlike_single이 생성되지 않은 것은 같은 설정의 xeonlike_multi가 선언되어 있었기 때문이다.
– marss.dramsim을 빌드할 때에는 dramsim 옵션에 DRAMSim2의 전체 경로를 적어주어야 한다.
– DRAMSim2 관련 에러는 system.ini를 주지 않아서 발생하는 에러이다. system.ini.example이 DRAMSim2의 기본 소스 코드에 제공된다. 하지만 그 의미가 어떻게 되는지는 모르겠음


2. MARSS 소스 코드 분석 & 물어볼 것
1. 지금 소스 코드가 잘 실행되었었는지? 동일한 machine이 두 개 있으면 MachineBuilder에서 에러가 발생함.
– 동일한 machine이 두 개 있으면 안 된다. 둘 중 하나를 주석처리해야 하는 것이 맞음.
2. 실행 옵션에서 cache=unsafe 옵션은 왜 주는가?
– 원래 그렇게 되어 있었기 때문에 이유는 모름.
3. system.ini 파일에 변경이 있었는가?
– 변경 없었음.
4. prefetch가 중복해서 일어나는 것 같다.
– 아니다. do_prefetch 함수를 살펴보면, prefetch enable이 되어있지 않으면 prefetch하지 않는다. 따라서 문제없음.
./ptlsim/cache/cacheController.cpp

                if(!queueEntry->prefetch && type == MEMORY_OP_READ) {
                    do_prefetch(queueEntry->request);
                    if ( type_ == L3_CACHE ) {
#ifdef ENABLE_CTX_PREFETCHER
                        do_ctx_prefetch(queueEntry->request);
#endif
                    }    
                } 

5. 아래 명령어는 user instruction을 기준으로 하기 위한 듯하다.
– 맞음
./ptlsim/sim/ptlsim.cpp : ptl_simulate()

    // if (config.stop_at_insns <= total_insns_committed || config.kill == true
    if (config.stop_at_insns <= total_user_insns_committed || config.kill == true 

6. 다음의 주석처리된 코드는 무슨 의도로 넣은 것인가?
– 단순 테스팅 목적으로 넣은 것.
./ptlsim/sim/ptl-qemu.cpp

static void cpu_fast_fwded(Context& ctx) 
{
    bool all_halted_or_stopped = true;
    bool others_halted = false;
    W64 insns_remaining = 0; 

    /* Stop this CPU and check if all CPU are stopped or not */
    ctx.stopped = 1; 

    /* Check if all other cpus are stopped or not */
    foreach (i, NUM_SIM_CORES) {
        Context& t_ctx = contextof(i);
        insns_remaining += t_ctx.simpoint_decr;

        if (i != ctx.cpu_index)
            others_halted |= (t_ctx.halted);

        all_halted_or_stopped &= (t_ctx.stopped || t_ctx.halted ||
//JSAHN------------------------------------------------------------------------------------------
        // all_halted_or_stopped &= (t_ctx.stopped ||
//-----------------------------------------------------------------------------------------------
                !qemu_cpu_has_work(&t_ctx));

7. 메일을 보내는 방법을 아는지?
– 확인함.


3. Related Work 조사
– google scholar에서 virtualization “prefetch” cache 검색


4. 교수님과의 미팅
4.1 Virtual Physical Address Space에 대한 연구
연구를 개선하고 확장하려면 어떻게 해야 하는지에 대해 이야기함.
1) multi segment가 우수한 점이 무엇인지 명확히 보여주어야 한다.
– direct segment의 한계점을 확인하고, multi segment가 얼마나 개선할 수 있는지 보여주자.
2) 연구 방법에 대해.
– linux kernel에 직접 구현하는 것이 최선의 방법이 될 것이다.
– 조금 더 현실적으로는, memory access trace를 가지고 simulator로 구현하는 것이 더 쉬울 것이다. 여러 개 어플리케이션이 동시에 memory request할 때 memory simulation 결과를 보여주어야 한다.
– memory access trace에 어떤 정보를 넣을지 잘 정의해야 한다.
– segmentation 알고리즘을 잘 만드는 것이 중요하다
– mmap을 호출한다고 해서 항상 쓰는 것은 아닌데, 이에 대해 어떻게 할지 고민하는 것도 필요할 수 있다. mmap이 요청한 것을 무시하고 실제로 touch한 메모리만 할당할 것인지, 아니면 요청하는 메모리 영역을 예약해두는 방식으로 할 것인지 등.
– 논문에서 단순히 direct segment와 multi segment를 비교하지 말고, direct/multi/many segment를 비교하는 것도 좋다. 각각의 효율과 낭비, latency 등에 대해 보여주면 될 것이다.
4.2 Context prefetcher 연구
– multicore simulation이 가능하도록 하라.


./ptlsim/cache/cacheLines.h : insert()
– 주석처리된 코드들은 어떤 목적으로 작성되었던 것인가?
./ptlsim/cache/cacheController.cpp
– using namespace OOO_CORE_MODEL; 하는 이유가 무엇인가?
./ptlsim/cache/memoryRequest.cpp
– memoryRequest에 insertionType_이 왜 필요한가?

Advertisements
Posted in 1) Memo

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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s

Recent Posts
누적 방문자 수
  • 146,251 hits
%d bloggers like this: