20150118

1. 영어 기사 읽기
1) Hope for Ebola epidemic end in Liberia, CNN
– “The challenge,” he said. “Is not to let up, not to be complacent and to really double down.” (complacent – 현실에 안주하는)
2) Woman sees images of black males as sniper targets; one is her brother, CNN
– There were six bullet-riddled mugshots of black males at the range. (mugshot – 범인 식별용 얼굴 사진)


2. MARSS 디버깅
이틀 전, 에러의 원인이 TraceDecoder 구조체에 있을 것이라 예상함. bzip2_chicken으로 한 번 더 확인해봄. 에러가 발생하기 전에 TraceDecoder::invalidate() 함수가 호출되었다. 에러가 발생하기 전에 TraceDecoder::decode_complex()는 여러 번 호출되며, decode_complex()가 호출된다고 해서 에러가 발생하는 것은 아니다. TraceDecoder에서 invalidate() 함수의 호출을 유발하는 원인을 찾으면 된다.
decode_complex에서 MakeInvalid는 여러 곳에서 호출하는데, tonto의 경우 에러가 발생하기 전에 default case에서 호출한다. switch(op)에 해당하는 op를 찾지 못한 것이다.

bool TraceDecoder::decode_complex() {
  DecodedOperand rd;
  DecodedOperand ra;

  switch (op) {

  case 0x60: {
    // pusha [not used by gcc]
    MakeInvalid();
    break;
  }
...
...
...
invalid_opcode:
    MakeInvalid();                                                                                                       
    break;                                                                                                               
  
  default: {
    MakeInvalid();                                                                                                       
    break;                                                                                                               
  }                                                                                                                      
  }                                                                                                                      
  
  return true;                                                                                                           
}

tonto에서는 op가 0x103(10진수 259)일 때 에러가 발생한다. op값은 TraceDecoder::translate()에서 받아오며, translate() 함수에서 fetch1() 함수가 op에 값을 할당한다. decode_complex() 함수에서 switch-case문으로 처리하는 값들은 x86 opcode를 의미한다. (MazeGen, X86 Opcode and Instruction Reference, http://ref.x86asm.net/coder64.html) 표를 대조해보았을 때, 0x103은 LSL을 의미한다. bzip2_chicken도 동일한 위치에서 에러가 발생하며, 이 때 op 또한 0x103(10진수 259)이다. 동일한 원인으로 에러가 발생한다.
구현되지 않은 opcode 문제는 MARSS에서 흔한 문제이며, mailing list를 보면 이를 해결하기 위한 사람들의 질문이 많았음을 알 수 있다. (Peter Hornyack, [marss86-devel] clflush instruction in Marss, https://www.mail-archive.com/marss86-devel@cs.binghamton.edu/msg01080.html)

만약 instruction이 unimplemented 된 것이 문제라면
1) X86 어셈블리를 이해해야 하고
2) PTLsim의 decoding 과정을 이해한 뒤에
3) 없는 instruction을 구현해야 한다.

이것이 문제가 아닐 수도 있다는 위험이 있긴 하지만, 이것이 문제인 듯 하다.
내일 자세히 읽어보고 찾아봐야겠다.

그래도 한 가지 의문점이 있다면, 같은 아키텍쳐에서 같은 실험을 했는데 어떤 커널 버전에서는 되고, 어떤 커널 버전에서는 안 된다는 것은 이상하다.


3. MARSS 실험
최근 실험 결과 정리, 실험 환경 재설정. 실험 결과가 예상한 방향대로 나오지 않는 원인 파악. 특이한 값을 보이는 실험 위주로 실험 환경 재검증.
한편, MARSS로 여러 개의 실험을 동시에 할 때 유의해야 할 것을 정리함.

여러 개의 실험을 다른 설정으로 실행하고 싶을 때, 소스 코드를 복사하게 된다.
그 뒤에 설정을 변경해준 뒤 실험한다. 소스 코드를 복사할 때 유의할 점.
1. ./config 디렉토리 일관성 유지.
 - MARSS에서 제공하는 것이 아닌 자신만의 machine configuration을 생성한다면,
   machine configuration이 유지될 수 있도록 한다. (config도 복사해주어야 한다.)
2. ./util/util.cfg 일관성 유지
 - marss_dir를 해당 디렉토리의 절대경로로 반드시 변경해주어야 한다.
 - checkpoint가 다른 이미지에 담겨있는 경우, 이미지의 경로 및 이름도 변경해주어야 한다.
3. xoauth.txt도 빠뜨리지 않고 복사해주어야 메일 전송이 가능하다.

실험 시작하기 전에 유의할 점
1. 빌드 옵션 설정해주기
 - 소스 코드를 여러 개로 복사하는 이유는 다른 빌드 옵션으로 빌드하기 위함이다. 
   따라서 빌드 옵션을 다르게 주어야 한다.
2. scons 명령어 사용해서 빌드하기
 - 빌드 옵션을 준 다음에는 반드시 빌드하여 이를 바이너리에 반영한다.
Advertisements
Posted in 1) Memo
One comment on “20150118
  1. […] 2015/01/16 TraceDecoder 구조체가 문제이라고 추측하고 디버깅하기 시작함. 2015/01/18 decode_complex 함수를 수정해 디버깅 시도 2015/01/21 실행 환경에 따라 에러가 […]

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

누적 방문자 수
  • 96,405 hits
%d bloggers like this: