본문 바로가기

전체 글

(71)
[Ch 1] Introduction to Operating System 1.1 What Operating Systems Do 컴퓨터 시스템은 크게 4가지 계층으로 나누어 볼 수 있는데, hardware, OS, application program, user이 그것이다. OS는 여러 user들이 여러 application을 사용할 수 있도록 하드웨어를 제어하는 역할을 한다. 여기서는 user의 관점과 system의 관점으로 나누어 OS의 역할을 살펴본다. 1.1.1 User View User 관점에서는 우선 사용하기에 편리해야 하며, user가 현재 하고 있는 일의 효율성을 최대화하도록 해야 한다. 마치 user의 프로그램이 컴퓨터의 모든 자원을 독점(monopolize)하고 있다는 착각을 주도록 말이다. 최근에는 스마트폰, 태블릿 등 user가 소통하는 기기가 다양해지는데,..
[Paper Review] Cloud-based or On-device: An Empirical Study of Mobile Deep Inference 논문 정보는 아래와 같다. Tian Guo, Cloud-based or On-device: An Empirical Study of Mobile Deep Inference, IEEE International Conference on Cloud Engineering, 2018 Introduction 2 Design Choices: Cloud-based & On-device Deep neural network(이하 DNN)를 학습시키는 것은 매우 많은 데이터와 연산 능력을 요구하기 때문에, 주로 cloud GPU를 활용하여 이루어진다. 한 번 학습이 완료된 이후, 새로운 input을 대상으로 한 inference는 학습에 비하면 시간이 적게 걸린다. 이렇게 미리 학습된 모델은 서버에 저장되어 private 또..
[Paper Review] μLayer: Low Latency On-Device Inference Using Cooperative Single-Layer Acceleration and Processor-Friendly Quantization 논문 정보는 아래와 같다. Youngsok Kim, μLayer: Low Latency On-Device Inference Using Cooperative Single-Layer Acceleration and Processor-Friendly Quantization, EuroSys, 2019 Introduction 과거에는 모바일 기기에서 NN 어플리케이션을 실행시킬 때 cloud(=서버) 환경에서 실행시킨 뒤 결과를 받는 방식을 사용하였다. 그러나, 최근 모바일 SoC 기술의 발달과 함께 모바일 기기의 하드웨어 환경에서 실행시키는 on-device inference가 주목받고 있다. Low-latency라는 목표를 달성하기 위해 한정적인 모바일 환경의 하드웨어 자원들을 최대한 효율적으로 활용하는 것이 ..
[Paper Review] Band: coordinated multi-DNN inference on heterogeneous mobile processors 논문 정보는 아래와 같다. Joo Seong Jeong, Band: coordinated multi-DNN inference on heterogeneous mobile processors, ACM MobiSys, 2022 Introduction Mobile DL inference with heterogeneous processors 최근 DL 기술의 발달과 함께 DNN은 실시간 사람 얼굴 인식 등과 같은 여러 복잡한 task에도 널리 쓰이고 있다. AR의 경우, 하나의 프레임에 대해서 사람의 pose estimation, object tracking 등 여러 DNN을 실행시킨다. 하지만, TensorFlow Lite, Mace 등과 같은 현재 모바일 DL 프레임워크들은 이러한 모바일 어플리케이션을 실행시..
Ch 9-1. Virtual Memory: Advantages, Page Table, Page Fault, Address Translation, TLB Physical Address vs Virtual Address 컴퓨터 시스템의 메인 메모리(일반적으로 DRAM)는 byte 단위로 접근 가능한 하나의 연속적인 배열의 형태를 갖는다. 메인 메모리의 각 byte는 고유의 주소를 가지는데, 이를 physical address라고 한다. 예전의 컴퓨터 시스템은 CPU에서 physical address를 이용해 메모리에 접근했으며, 오늘날에도 MCU(마이크로컨트롤러)와 같은 임베디드 시스템에서는 physical address를 이용하기도 한다. 하지만, 최근 컴퓨터 시스템은 모두 CPU에서 virtual address를 사용하여 메모리에 접근하고, CPU chip에 함께 존재하는 Memory Management Unit(이하 MMU)라는 하드웨어에서 virtu..
Ch 6-2. Locality (2): Matrix Multiplication with Various Computation Order Matrix Multiplication Matrix multiplication(이하 MM)은 3중 for loop으로 구현 가능하다. 사람이 일반적으로 이해하기에 가장 직관적인 연산 순서는 하나의 output element 씩 계산하고, output element를 row->column 순으로 반복하는 방식이다. 이를 pseudocode로 나타내면 아래와 같다. void MM(int** A, int** B, int** C){ for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) { C[i][j] += A[i][k] * B[k][j]; } } } } Consider all permutation of co..
Ch 6-1. Locality (1): Reference to 2D Array Data Principle of Locality Locality를 이해하는 것은 프로그램 내에서 메모리를 효율적으로 접근하는 데에 있어서 중요하며, 이는 같은 동작을 하는 프로그램이더라도 메모리 접근에 걸리는 실행 시간 측면에서 성능 차이를 가져올 수 있는 요소이다. Locality란 크게 다음의 2가지를 말한다. 첫째는 temporal locality로, 한 번 참조된 메모리 영역은 이후에 여러 번 다시 참조될 가능성이 높다는 것이다. 둘째는 spatial locality로, 한 번 참조된 메모리 영역과 인접한 영역을 다시 참조할 가능성이 높다는 것이다. Memory hierarchy 상의 logic(예를 들어 cache의 set 개념이나 replacing policy 등)을 설계하는 사람들은 프로그램의 loc..
Ch 8-4. Process Control with C Program(2): waitpid, execve, A Simple Shell Program 이번 포스팅에서는 지난 번에 이어 C 프로그램에서 system call 함수를 호출하여 process level에서 조작하는 예시를 다룬다. Wait Child Process: waitpid() fork() 함수로 새로운 child process를 생성할 수 있고, waitpid() 함수는 child process가 종료될 때까지 기다린다. Argument와 return 값에 대한 자세한 것은 아래 reference를 참고하면 알 수 있는데, 포스팅에서는 이 중 몇 가지만 정리해볼 것이다. 링크: https://www.ibm.com/docs/en/zos/2.4.0?topic=functions-waitpid-wait-specific-child-process-end waitpid() — Wait for a ..