본문 바로가기

분류 전체보기

(71)
Ubuntu 환경에서 'oh my zsh' 설치 및 적용하기 Ubuntu를 처음 설치하면 bash가 기본 shell로 동작하도록 되어 있는데, 이번 포스팅에서는 좀 더 편리한 기능을 제공하는 shell인 zsh 및 이를 관리하는 oh my zsh를 설치해서 적용하는 것을 다루기로 한다. bash와 같이 shell에 해당하는 것은 zsh이고, oh my zsh은 zsh의 설정을 관리해주는 프레임워크이다. 아래의 공식 페이지를 들어가보면 메인 페이지에 간단한 설명이 적혀있다. https://ohmyz.sh/ Oh My Zsh - a delightful & open source framework for Zsh Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh c..
[HPCA '21] (2/2) H. Wang, SpAtten: Efficient Sparse Attention Architecture with Cascade Token and Head Pruning 지난 포스팅에 이어서 이번 포스팅에서는 SpAtten의 알고리즘 및 HW 구현에 관한 detail을 다룬다. 3. Algorithmic Optimizations 3.1 Cascade Token Pruning Human language에는 필수적이지 않은 token들이 여러 개 존재하기 때문에, 이러한 token들을 찾아 제거한다면 보다 효율성을 높일 수 있을 것이다. 각 token들의 중요도의 판단 기준인 importance score는 attention layer를 통과할 때마다 attention probability를 누적해서 더한 것으로 계산된다. Figure 5에서 'fun'에 해당하는 key vector를 보면, probability 값이 높은데, 이것은 다른 token들과의 연관성이 높다는 것..
로컬 저장소와 원격 저장소 (Git repository) 연동하기 본인의 프로젝트를 github 원격 저장소에 백업해두는 용도 (또는 다른 사람들과 공유)로 github을 사용할 수 있는데, 이번 포스팅에서는 그 방법을 다루고자 한다. git이 이미 설치되어 있고, github 로그인이 가능한 상황을 전제로 한다. 여기서 가정하는 상황은 로컬 디렉토리 전체를 원격 저장소인 github repository와 연동시키고자 하는 것이다. 1. Github repository 생성 Github repository를 생성한다. 프로젝트 이름과 description을 알맞게 작성하고, readme file, git ignore 파일의 생성 여부를 체크한다. Gitignore 파일은 원격 저장소와 로컬 저장소 간 연동을 할 때 무시할 파일들을 명시한다. 예를 들어 Python 프로..
[ISCA '22] (2/2) S. Shukla, Register File Prefetching 3. Register File Prefetch (RFP) RFP의 목표는 load 명령어의 data를 prefetch 함으로써 L1 캐시 latency를 줄이는 것이다. 예측된 주소를 이용해 prefetch를 하고, load 명령어가 실행되면서 예측된 주소가 실제 load 주소와 일치하는지를 검사한다. 예측이 성공한 경우 dependent 명령어에게 바로 값을 공급하며 캐시 접근을 우회할 수 있다. 예측이 실패했다면 일반적인 OoO pipeline과 같이 동작한다. (1) Timeliness 먼저, 기존 방법에서와 같이 명령어 fetch와 동시에 prefetch를 시작할 수 있다. 그러나, 이 경우 prefetch의 correctness를 보장하기 위해 모든 in-flight store 명령어를 검사해야..
[ISCA '22] (1/2) S. Shukla, Register File Prefetching 1. Introduction 현대의 OoO (Out-of-Order) 프로세서의 성능을 제한하는 주요 요인은 load 명령어의 latency이며, 이를 memory wall이라고도 부른다. 현대의 프로세서는 Figure 1과 같이 multi-level 캐시 계층 구조를 갖고 있다. Latency를 보면 LLC (Last-level cache)에 비해 메인 메모리 DRAM에 접근하는 latency가 훨씬 큰데, 이로 인한 bottleneck을 해결하기 위해 그동안 메인 메모리로부터의 효율적인 prefetching과 캐시 management에 대한 많은 연구들이 이루어져 왔다. Figure 1은 각 캐시 계층의 performance headroom을 나타내는데, 이것은 각 계층 사이의 prefetching이..
Jekyll theme을 사용하여 github io 블로그 만들기 오늘 포스팅에서는 Jekyll theme을 이용해서 github io 블로그를 생성하는 방법을 다루고자 한다. 1. Git repository 생성 먼저 github repository를 만든다. 이 때 다른 건 크게 상관이 없고, repository name이 중요한데 이 이름이 곧 도메인 이름이 되기 때문이다. 만약 repository name을 repo_name이라고 한다면, 다음과 같은 주소로 설정된다. (github user 이름).github.io/(repo_name) 그런데, 이 때 repo_name을 만약 (github user 이름).github.io 로 설정한다면, 이것은 특별히 (github user 이름).github.io/ 과 같은 도메인 주소를 받게 된다. github 계정 당 ..
[Micro '22] R. Bera, Hermes: Accelerating Long-Latency Load Request via Perceptron-Based Off-Chip Load Prediction 1. Introduction (1) Topic of the paper On-chip 캐시에서 miss가 일어나는 load request는 off-chip의 메인 메모리로 가게 되고, 이것은 고성능 OoO(Out-of-Order) 프로세서의 성능을 제한하는 요소로 작용한다. (2) Current related works and limitations 이것을 해결하기 위한 기존의 시도는 크게 2가지로 분류할 수 있다. 첫째, HW prefetcher를 구현해 메모리 주소 패턴을 학습하도록 하여 코어에서 load request를 요청하기 이전에 미리 메인 메모리로부터 데이터를 가져오는 것이다. 둘째, on-chip 캐시 계층 구조를 확장시킨다. 그러나, 이러한 접근법에는 한계점이 존재한다. 첫째, HW pref..
[Ch 6] Synchronization: Critical Section Problem, Mutex Lock, Semaphore 서로 다른 프로세스들은 address space를 공유하거나 shared data를 사용할 수 있다. 이 때 이들이 동시에 실행되면 data inconsistency가 발생할 수 있는데, 이 chapter에서는 data consistency가 유지될 수 있도록 cooperating process들의 순차적 실행을 보장하는 synchronization 방법들을 살펴보도록 한다. 6.1 Background 프로세스 간 변수를 공유하는 상황에서 발생할 수 있는 data inconsistency를 구체적으로 살펴보도록 한다. 예를 들어, 두 프로세스 1, 2에서 count라는 변수를 공유해서 사용한다. 변수에 값을 쓰는 것은 assembly instruction level에서는 1) count 변수를 레지스터로..