(PCID에서 넘어옴)
개요
프로세스 컨텍스트 식별자(PCID, Process Context Identifier)는 현대 CPU(특히 x86의 확장된 페이지 테이블 기능)에서 제공되는 기능으로, 프로세스 간 문맥 전환 시 발생하는 오버헤드를 줄이기 위해 전체 TLB(Translation Lookaside Buffer)를 매번 플러시(초기화)하지 않고도 주소 공간 전환을 수행할 수 있도록 돕는다.
배경
전통적으로 운영체제는 한 프로세스에서 다른 프로세스로 전환할 때, 이전 프로세스의 페이지 테이블과 관련된 TLB 엔트리를 무효화하거나 다시 로드해야 합니다. 이는 메모리 성능에서 중요한 역할을 하는 TLB 접근(lookup)에 큰 비용을 초래한다.
PCID는 TLB 엔트리에 “프로세스(또는 주소 공간)별 ID(식별자)”를 태그 형태로 부여하여, 주소 공간 전환 시 이전 프로세스에 속했던 TLB 엔트리를 전부 제거(플러시)하지 않고, 단지 “현재 프로세스의 PCID와 일치하지 않는 엔트리”를 무시하도록 하는 방식을 제공한다.
PCID 작동 방식
- 각 프로세스(또는 주소 공간)는 고유한 PCID를 할당
- CPU의 TLB 엔트리는 해당 PCID 태그와 함께 저장
- 문맥 전환 시, 운영체제는 새 프로세스의 CR3(페이지 테이블 베이스 레지스터)를 로드하고 적절한 PCID를 설정
- TLB에는 이전 프로세스의 엔트리가 남아있을 수 있지만, CPU는 “현재 설정된 PCID”와 일치하는 엔트리만 사용하여 주소 변환을 수행
장점
- **TLB 플러시 오버헤드 감소**: 문맥 전환마다 전체 TLB를 비울(플러시) 필요가 줄어듬
- **성능 향상**: 불필요한 TLB 재로딩 과정을 피하므로, 문맥 전환 시의 메모리 접근 지연이 감소