Linux Kernel

비순차 프로세서 파이프라인 (Out-of-order Processor Pipeline)의 핵심기술 (2)

지난 포스팅에서 비순차 프로세싱의 핵심기술인 register renaming, reoder buffer, reservation station 에 대해서 알아보았는데요. 여기에 또 하나 빠지지말아야할 기술이 있습니다.바로 메모리 연산을 위한 로드-스토어 큐(Load-Store Queue)입니다. 이번 시간에는 이 로드스토어큐에 대해 알아보겠습니다.Load-Store Queue 는 다음과...

비순차 프로세서 파이프라인 (Out-of-order Processor Pipeline)의 핵심기술 (1)

비순차 실행은 명령어 수준에서 병렬성(Instruction Level Parallelism)을 찾아서 이를 순차적이 아닌 비순차적, 즉 병렬적으로 처리할 수 있도록 한 기술을 말합니다.그러면, 큰 그림에서 이러한 비순차적 명령어 처리를 하려면 어떤 기술들이 필요한지 살펴봅시다.이를 위해 비순차 실행에서 필요한...

명령어수준 병렬성(ILP, Instruction-level Parallelism)

ILP 는 비순차 실행에서 사용되는 기술입니다.말그대로 명령어 수준에서 프로그램에 기록된 순서대로 순차적으로 처리하는게 아니라, 명령어간의 상관관계를 잘 따져서 병렬처리가 가능하도록 하는 기술입니다.예를 들어, 다음과 같은 코드가 있다고 가정하면… int main() { int x, y, a,...

Linux Kernel 에서의 Memory Barrier 구현

일반적인 명령어(instruction) 뿐만 아니라, Barrier 를 위한 명령어 또한 아키텍쳐마다 다릅니다.그리고, 컴파일러 Barrier 로 사용되는 Directive 도 컴파일러마다 다를 수 있습니다.이 때문에, Linux Kernel 에서는 몇가지 카테고리의 메모리 Barrier 를 정의해두고, 이러한 카테고리 별로 각...

파이프라인에서의 Commit Stage 의 역할

파이프라인에서의 Commit Stage 의 역할

내부적으로는 비순차적으로 실행하는 것을 결과적으로 순차적 실행처럼 보이게 하려면 pipeline 의 마지막에 특정한 단계를 하나 추가해야 하는데 이를 Commit Stage 라고 합니다.비순차 프로세서에서는 중간의 실행과정들이 순서가 뒤바뀔 수 있습니다. 그런데, 이런 뒤죽박죽인 순서대로 사용자에게 결과를...

Cache Coherence 동영상 강의

Cache Coherence 동영상 강의

Cache Coherence 에 관한 카네기멜론대 Onur Mutlu 교수님의 동영상 강의를 모두 들어보았는데 내용이 굉장히 좋습니다.MSI, MESI, Directory 방식 모두에 대해 다루고 있고 핵심 내용 위주로 설명을 아주 잘해주고 있는 동영상입니다. 이 교수님의 Computer Architecture 강의...

파이프라인상에서의 dmb(Data Memory Barrier) 동작방식

파이프라인상에서의 dmb(Data Memory Barrier) 동작방식

이전 포스팅에서 살펴본 사전 지식들을 바탕으로 아래 문서의 문구들을 참고하여 파이프라인 상에서 dmb 가 동작하는 방식을 그냥 제 나름대로 상상으로 정리해 봅니다. 관련 자료를 찾기가 상당히 어렵더군요. Memory Barriers: a Hardware View for Software Hackers...

비순차 프로세서 파이프라인 단계 (Out-of-order Processor Pipeline Stage)

비순차 프로세서 파이프라인 단계 (Out-of-order Processor Pipeline Stage)

비순차 프로세서에서 각 Stage 별로 어떤 일을 수행하는지 간단히 정리해보자. fetch명령어를 메모리(캐쉬)로부터 가져오는 단계 decodefetch buffer 에서 명령어를 하나씩 인출하여 해독하는 단계. rename register물리 register 를 이용하여 operand 의 가짜 의존성을 제거하는 단계 issue가짜 의존성...

Cache Coherence Protocol Flow (MSI, MESI)

Cache Coherence Protocol Flow (MSI, MESI)

MSI, MESI State Machine 그림에 대한 Flow 설명을 어떻게하면 쉽게 할수 있을까 2 시간이나 고민하면서 ppt 그림을 그리고 있었는데, 우연히 정말 잘 만들어진 Flow 설명 문서를 찾았습니다.Slideshare 에 올려두었습니다. 아래 slide 자료를 보기 전에 먼저...

inline assembly 에서 early clobber 의 역할

inline assembly 를 컴파일할 때 Gcc는 항상 모든 input 변수들이 다 사용된 후에 output 변수들이 쓰인다고 가정해서 input 변수와 output 변수를 같은 operand register 에 할당하기도 합니다. 즉, inline assembly 를 해독하여 assembly code 로...