20150104

1. 영어 기사 읽기
1) Future Smartphone Could Fall Smartly, Too, Scientific American
2) Side Effects Vex Anti-Malaria Push in Sierra Leone, Scientific American
– Mass drug distribution was intended to curb cases with Ebola-like symptoms and reduce, in turn, the number of people whose symptoms could be mistaken for those of Ebola (curb – 억제하다, 제한하다)
– But Kamara’s reluctance to take the malaria drug increases the likelihood of that very problem.


2. Memory Systems Cache, DRAM, Disk – Chapter 10. Chapter 11. 읽음
Chapter 10. DRAM Memory System Organization
– DRAM의 내부 구조를 처음 공부할 때 읽으면 좋은 chapter이다.
– DRAM의 전체 구성도가 헷갈릴 때 다시 읽어볼 부분.
– Figure 10.6 ~ Figure 10.9를 차례대로 보면 됨.
– 옛날옛적에는 DRAM이 DIP으로 패키징되어 있었다고 한다. 011114_0014_vimfcommand1.png
Chapter 11. Basic DRAM Memory-Access Protocol
– DRAM timing parameter가 무엇인지와 각 의미를 알면 됨.
– Table 11.1만 이해해도 됨.

다음에는 Chapter 13. DRAM Memory Controller를 읽어야겠다.


3. Computer Architecture A Quantitative Approach
Chapter 1 ~ Chapter 4 간략히 다시 읽음.

다음에 Chapter 5. Thread-Level Parallelism을 읽어야겠다.


4. 가상화 기술 서베이
KVM은 무엇인가? QEMU란? XEN과는 어떻게 다른가라고 물었을 때 명쾌하게 대답하기가 힘들었기에, 이를 찾아보았다. 알고있다고 생각했는데, 설명하려고 보니 모르는 것 같았다. QEMU를 가속하려면 KVM을 사용한다, XEN과 QEMU는 다르다 정도로만 이해하고 있었다.

4.1 가상화 방식 분류 (Type 1 vs Type 2)
1) Bare-metal (Type 1) : VMM이 OS 도움 없이 HW를 직접 제어한다.
2) Hosted (Type 2) : VMM이 OS 위에서 실행되며, HW 제어할 때 OS에 요청한다.

4.2 가상화 방식 분류 (전가상화 vs 반가상화)
1) 전가상화 : OS의 수정을 통해 가상화하는 것.
2) 반가상화 : OS의 수정 없이 가상화하는 것.

4.3 QEMU, KVM, XEN의 개념
1) QEMU
QEMU는 open source machine emulator이다. Dynamic binary translation을 사용해 임의의 binary를 emulation해 실행한다.
2) KVM
KVM (Kernel-based Virtual Machine)은 user space program이 processor의 hardware virtualization 기능을 사용하게 해주는 리눅스 커널의 모듈이다. QEMU는 이를 사용해 processor의 하드웨어 가속을 사용할 수 있다.
3) Xen
Xen은 type-1 (baremetal) hypervisor이다. Xen에서는 guest를 domain이라 부르는데, Dom0와 Dom U로 나뉜다. Dom0는 VMM을 제어할 수 있는 특별한 guest이다. (사실상 control interface) 기본적으로 반가상화를 지원하며, QEMU를 활용해 전가상화도 가능하다.

References :
[1] X86Virtualization, Joinc, http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/cloud/X86Virtualization
[2] 엄영익, 가상화 기술, http://rmcrc.khu.ac.kr/admin/bbs/down.php?code=5_5&idx=5150&no=4
[3] KVM and QEMU – do you know the connection?, Innervoice Blogs, http://www.innervoice.in/blogs/2014/03/10/kvm-and-qemu/
[4] Kernel-based Virtual Machine, Wikipedia, http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
[5] KVM, QEMU, http://wiki.qemu.org/KVM
Difference between KVM and QEMU, StackExchange, http://serverfault.com/questions/208693/difference-between-kvm-and-qemu
[6] 정정인, QEMU & KVM Guide #1, http://www.slideshare.net/baramdori/qemu-kvm-guide-1-intro-basic
[7] Xen Project Software Overview, Xen, http://wiki.xen.org/wiki/Xen_Project_Software_Overview
[8] Barham et al., Xen and the Art of Virtualization, http://www.cse.psu.edu/~bhuvan/teaching/spring06/slides/xen.pdf
[9] Xen과 KVM, http://onestep.tistory.com/94
[10] 유성배, 하이퍼바이저의 이해: Xen, http://blog.secmem.org/309


5. DRAMSim2 사용법 확인
다음 명령어로 DRAMSim2 소스 코드를 다운받는다.

$git clone git://github.com/dramninjasUMD/DRAMSim2.git

README를 보고 DRAMSim2를 빌드하고 실행해보았다.
README, README.pdf에 설명이 잘 되어있다.
DRAMSim2의 실행 인자는 다음과 같다.

$./DRAMSim --help
DRAMSim2 Usage: 
DRAMSim -t tracefile -s system.ini -d ini/device.ini [-c #] [-p pwd] [-q] [-S 2048] [-n] [-o OPTION_A=1234,tRC=14,tFAW=19]
        -t, --tracefile=FILENAME        specify a tracefile to run  
        -s, --systemini=FILENAME        specify an ini file that describes the memory system parameters  
        -d, --deviceini=FILENAME        specify an ini file that describes the device-level parameters
        -c, --numcycles=#               specify number of cycles to run the simulation for [default=30] 
        -q, --quiet                     flag to suppress simulation output (except final stats) [default=no]
        -o, --option=OPTION_A=234,tFAW=14                       overwrite any ini file option from the command line
        -p, --pwd=DIRECTORY             Set the working directory (i.e. usually DRAMSim directory where ini/ and results/ are)
        -S, --size=#                    Size of the memory system in megabytes [default=2048M]
        -n, --notiming                  Do not use the clock cycle information in the trace file
        -v, --visfile                   Vis output filename

DRAMSim2를 사용하는 방법에는 크게 두 가지가 있다. 첫째는 standalone으로, trace file을 입력으로 주고 이를 시뮬레이션하는 것이다. 둘째는 library로 사용하는 것이다. 라이브러리와 헤더 파일을 추가하고, 이를 갖다쓰면 된다. DRAMSim2의 DRAM timing parameter는 ini 파일을 수정해서 설정할 수 있다.
전체 구조는 간단한 것 같다. 이전에도 살펴본 것처럼, addTransaction()으로 transaction을 차례대로 추가하고 update() 명령어로 cycle을 증가시키며 시뮬레이션한다.
dramsim2
한편 이를 직접 갖다쓰는 시뮬레이터를 직접 확인해볼 필요가 있을 것 같다. Standalone으로 사용하는 경우는 드물고, 대개의 경우 코어 모델에 붙여서 사용할 것이기 때문이다. MARSS + DRAMSim2 시뮬레이터 소스 코드를 확인해보아야겠다. 1) 어떻게 갖다쓸 수 있는지 2) 갖다쓰는 경우 무엇이 중요한지 확인해야 한다.

Advertisements
Tagged with: , , , , , , , , ,
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
누적 방문자 수
  • 144,299 hits
%d bloggers like this: