반응형

개인 공부 38

The gem5 Simulator

Abstract M5 : Simulation frame work multiple ISA GEMS : flexible memory system gme5 : M5 + GEMS (ARM, ALPHA, MIPS, Power, SPARC, x86 1. Intro 기존의 시뮬레이터들은 라이센스 문제 및 코드의 퀄리티 때문에 협업이 힘들었다. GEM5에서는 BSD 라이센스를 사용하고 CPU mode, Execution Mode, Memory systems의 다양한 옵션을 주어 Flexibility, Modular simulation system을 지원한다. 2. Overall Goals Flexible modeling, Broad range of users, Wide avialability and utility 2...

Adaptive Memory Fusion: Towards Transparent, Agile Integration of Persistent Memory

Abstract PM의 필요성 -PM(Persistent Memory)는 시스템 업그레이드를 위한 이상적인 후보 -현재의 Enterprise System에 PM을 사용하는 것은 호환성 및 대규모 수정 측면에 큰 장벽 -DRAM과 같은 방식으로 사용할 수 있도록 Transparent하게 설계 문제점 -Big Data Application이 In Memory Computing을 수행하려면 대용량 메모리 필요 -하지만, 현재 DRAM을 계속 확장하는 것은 비용, 공간, 소모 전력의 벽에 부딪힌다. -ReRAM, STT-RAM 및 3D Xpoint 와 같은 PM모듈의 등장으로 DRAM과 유사한 성능을 제공할 수 있다. (Table 1) -Persistent적 특징을 사용하려면 Memory management, ..

Hybrid2: Combining Caching and Migration in Hybrid Memory Systems

Abstract Hybrid2의 필요성 -3D-stacked Memory와 Off chip DRAM으로 구성된 시스템을 위함 -기존에는 DRAM Cache 혹은 Flat address space 방식으로 사용되었음 -메모리 용량 및 데이터 전송 Cost의 절충을 위한 Hybrid 방식을 구성 Intro 문제점 -컴퓨터 시스템의 성능은 대부분 Memory hierarchy 구조에 의해 좌우 -높은 대역폭:적은 용량을 가진 3D-stacked DRAM을 Near Memory, 낮은 대역폭:많은 용량을 가진 일반 DRAM을 Far Memory -NM이 DRAM cache로 사용될 때, 메모리 시스템에서 NM용량은 무시 -NM이 Flat address space로 사용될 때, Swap으로 인한 오버헤드 증가 -..

Ubuntu 라이브러리 생성

이전에 생성했던 hello 시스템콜을 사용해 라이브러리를 생성한다. 1. Static Library $ vi hello.c $ gcc –c hello.c $ ar rc libhello.a hello.o $ vi static.c $ gcc static.c –o static –L./ -lhello $ ./static 2. Shared Library $ vi hello.c $ gcc –fPIC –c hello.c –o hello.o $ gcc –shared –o libhello.so.0.0.0 hello.o $ sudo cp libhello.so.0.0.0 /usr/lib/libhello.so.0.0.0 $ sudo ln –s /usr/lib/libhello.so.0.0.0 /usr/lib/libhello.s..

Ubuntu 시스템콜 추가

1. 간단한 시스템콜 소스코드 추가 $ cd /usr/src/linux-5.5.16 $ sudo vi kernel/hello.c 시스템 콜 핸들러 함수는 리눅스 커널에서 제공하는 SYSCALL_DEFINE1과 같은 매크로 함수로 선언되어 있다. SYSCALL_DEFINEx(시스템 콜 이름, 1st 인자 타입, 1st 인자 이름, 2nd 인자 타입, 2nd 인자 이름,...) x는 매개변수 개수를 나타낸다. 2. 시스템콜 테이블에 엔트리 추가 $ cd /usr/src/linux-5.5.16 $ sudo vi arch/x86/entry/syscalls/syscall_64.tbl '436 common hello __x64_sys_hello' 추가 위와 같은 형태로 선언 해야한다. 3. 헤더파일에 시스템콜 선언..

커널 컴파일(Ubuntu)

Centos Ubuntu 18.04, 1. 현재 사용하는 커널의 버전 확인 $ uname -r 2. www.kernel.org/ 통해 커널 다운로드 만약 원하는 커널 버젼이 5.4.84일때 $ cd /usr/src $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.84.tar.xz $ tar xz -d linux-5.4.84.tar.xz $ tar xf linux-5.4.84.tar $ cd linux-5.4.84 3. 컴파일에 필요한 패키지 설치 $ apt install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev..

커널 컴파일(CentOS)

Centos 7, 1. 현재 사용하는 커널의 버전 확인 $ uname -r 2. www.kernel.org/ 통해 커널 다운로드 만약 원하는 커널 버젼이 5.4.84일때 $ cd /usr/src/kernels $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.84.tar.xz $ tar xz -d linux-5.4.84.tar.xz $ tar xf linux-5.4.84.tar $ cd linux-5.4.84 3. 컴파일에 필요한 패키지 설치 $ yum install ncurses-devel make gcc bc openssl-devel elfutils-libelf-devel rpm-build 4. config 파일 수정 사용하는 시스템에 설치..

반응형