20150506

1. 영어 기사 읽기
1) Texas attacker tweeted with overseas terrorists, CNN
– The attack fits a well-known pattern of ISIS recruitment and incitement (incitement – 선동, 조장)
2) He codes, he live-streams, he’s 11., CNN


2. 여권 발급
– 군미필자의 경우 만 24세 이후에는 1년 단위의 여권만 발급 가능, 국외여행허가서 필요
– 일반적으로 해외 여행시 6개월 이상 기간이 남아있어야 함.
– 8월 말 여행을 위해 여권 재발급 받았으며, 12월 해외 여행하려면 다시 발급받아야 함.


3. Graphite 소스 코드 분석
– Graphite가 작동하는 과정을 대강 이해함. 아직 이해하지 못한 부분이 많지만, 대강의 흐름은 이해함. Graphite는 scalability에 초점이 맞춰져있는 simulator이다. Cycle accurate하지는 않으며, core 모델도 in-order core만 제공한다. OoO core로 확장 가능할 것으로 보이지는 않는다. 그럼에도 자주 쓰이는 이유는 그만큼 많은 코어를 시뮬레이션할 수 있는 도구가 없기 때문이라고 생각한다. 논문에 따르면 1000개의 코어까지 simulation할 수 있다고 한다. 사용하기에 어렵지 않은 편이며, 코드가 깔끔하다. 다른 simulator와 결합이 잘 되어있다 (DSENT, McPAT 등).
– 실험 및 워크로드는 ./tests 디렉토리 아래에 있으며, make 명령어로 실험을 시작할 수 있다. Simulator의 설정 파일은 carbon_sim.cfg이다. 실험 결과는 ./results/ 아래에 생성된다. 실험 결과는 csv 형식의 파일로 생성된다. Pin을 사용해 application을 실행하고, 그 과정에서 이벤트를 추출해 이벤트마다 core simulation을 하는 방식으로 실행된다.
– 작동하는 방식을 파악하기 위해 simulator 소스 코드를 볼 때에는 multithread임을 감안해 소스 코드를 분석해야 한다. 여러 개의 쓰레드가 실행 중이라는 것을 생각하며 코드를 분석하는 것이 어려웠다. 한 방향에서만 소스 코드를 따라가면, 그것이 최종적으로 simulator에 영향을 주는 위치를 확인할 수 없었다. 한 thread가 request하면, 다른 thread가 이를 읽어 처리해주는 방식으로 구현되어 있었다 (producer / consumer 구조). 소스 코드 분석 시작은 샘플 어플리케이션을 기준으로 시작하는 것이 좋다.
– Simulator를 시작할 때에는 CarbonStartSim()을 호출해 simulator를 초기화하고 시작한다. Simulator를 종료할 때에는 CarbonStopSim()을 호출해 메모리를 정리하고 종료한다. 쓰레드를 새롭게 생성하고 싶을 때에는 CarbonSpawnThread() 함수를 호출하며, 초기화 과정에서 생성된 쓰레드인 CarbonThreadSpawner()가 쓰레드를 생성해준다. MCP, LCP는 초기화 과정에서 쓰레드로 실행되며, transport 계층으로 넘어오는 요청들을 처리해준다.
– Graphite 작동 방식 및 사용법을 분석하기 위해서는 실행, 소스 코드 분석, tutorial 읽기, 논문 읽기 등을 병행하는 것이 좋다. Graphite의 경우에 tutorial pdf 보다는 논문을 읽는 편이 도움이 되었다.
– Graphite의 전체 동작 과정을 이해하는 것은 어렵지만, 수정해야 할 부분만 수정하는 것은 그리 어렵지 않을 것으로 보인다.
References:
[1] Graphite Multicore Simulator, CSAIL, http://groups.csail.mit.edu/carbon/?page_id=111
[2] Graphite, CASIL, https://github.com/mit-carbon/Graphite
[3] Jason et al., Graphite: A Distributed Parallel Simulator for Multicores, HPCA’10, http://groups.csail.mit.edu/carbon/docs/graphite_hpca2010_preprint.pdf
[4] Graphite Tutorial at PACT 2013, CSAIL, http://groups.csail.mit.edu/carbon/?page_id=569


4. [ISCA’15] Redundant Memory Mappings for Fast Access to Large Memories 읽기
page-based virtual memory를 사용하면 생산성, 보안성, 메모리 활용도는 높아진다. 하지만 최신 워크로드를 실행하는 것에는 최대 50%까지의 오버헤드가 발생한다. 이 문제를 해결하고자 이 논문에서는 redundant memory mappings (RMM)을 제안한다. RMM은 virtual에서 physical page로의 매핑에 range translation을 도입해, address mapping을 더 효율적으로 하겠다는 것이다.
기존에 address translation 오버헤드를 줄이고자 direct segment, multipage mapping, huge page 기법 등이 있었으나 각자 한계가 있다. direct segment의 경우 어플리케이션의 변경이 필요하다. multipage mapping의 경우 kernel의 지원이 필요하고, 크기에 제한이 있다. huge page의 경우에도 크기에 제한이 있다.
RMM은 range translation으로 이를 해결한다. Range는 연속된 메모리 공간을 의미한다. 여러 개의 range가 있을 때, 그 크기는 각기 다를 수 있다. 일반적인 워크로드의 경우 50개 미만의 range로 메모리 공간을 커버할 수 있다. 따라서 RMM에서는 한 프로세스 당 32개의 range translation을 허용함으로써 address translation을 효율적으로 하겠다는 것이다. page TLB와 range TLB를 동시에 두고, LLC TLB와 range TLB를 동시에 탐색한다. range table은 B-tree의 구조를 가지며, 각 요소는 주소의 범위를 갖는다. 추가로 locality를 활용하고자 range table에 대해 MRU pointer를 유지한다. 전반적으로 논문이 매우 깔끔하게 쓰여 있고, 전개가 체계적이며 다양한 문제를 고민해보았다는 느낌을 받았다.


5. SIGFPGA
ZedBoard를 활용한 연구 소개
– [WOOT’14] Are Your Passwords Safe: Energy-Efficient Bcrypt Cracking with Low-Cost Parallel Hardware
– [FPT’13] ZCluster: A Zynq-based Hadoop cluster

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 )

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: