Thread
- 하나의 실행 문맥을 가지며, 프로세스를 사용하는 최소 단위
- 자신의 레지스터 상태나 호출 스택의 상태를 가지고 있어, 하나의 실행 흐름을 유지한다.
가상메모리
- 운영체제의 안정성을 크게 높임
- 프로세스마다 고유한 주소 공간을 주어서 서로 침범할 수 없도록 한다.
프로세서
- 데이터 패스 : ALU, 메모리 계층의 여러 요소(레지스터 파일, 캐시, 메모리장치)
- 컨트롤 장치 : 데이터 패스를 서로 조율하여 명령어가 오가면서 계산이 이루어지도록 제어한다.
프론트엔드
- 명령어의 인출과 ㅁ여령어 해독은 실제 계산 장치가 처리할 명령어의 흐름을 만든다는 것을 의미.
예외처리
1. Exception : 프로그램 실행 도중 동기적(synchronous)으로 발생한다.
- trap : 문제를 일으킨 명령어부터 다시 시작.
- fault : 문제를 일으킨 명령어의 다음부터 다시 시작.
- abort : 어디서 문제가 발생했는지 안알려주고, 다시 시작할 수 없다.
2. Interrupt
- HW : 외부에서 일어나는 명령어의 흐름처리와 상관없는 비동기적(asynchronous) 사건.
- SW
파이프라인 해저드
- 파이프라인 프로세서에서 의존성으로 발생할 수 있는 문제를 가리킨다.
- 파이프라인은 Latency를 개선하지 못하지만, 처리율을 크게 향상시킬 수 있는 일반적인 기술이다.
1. 구조해저드 : 프로세서의 자원이 부족해서 발생하는 stall. HW의 제약으로 발생한다.
해결책 : 자원늘리기
2. 컨트롤해저드 : 프로그램이 근본적으로 갖는 의존성 때문에 발생. ex) 분기문.
해결책 : 분기 예측
3. 데이터해저드 : RAW/WAW/WAR 데이터의 의존성과 메모리 의존성으로 발생한다.
해결책 : Bypass. 즉, 결과를 바로바로 전송한다.
출처 : 프로그래머가 몰랐던 멀티코어 CPU 이야기
'콤퓨타 > Computer Arch.' 카테고리의 다른 글
데이터의존성 예시 (0) | 2013.03.07 |
---|
댓글