[시프] Lecture 6
- cpu를 이해하는 다양한 관점에 대해 학습한다.
- ISA의 세가지 개념을 이해한다.
CPU
프로그램 개발은 아래의 단계를 거쳐 이루어진다.
- C파일 -> 컴파일러 -> 어셈블리파일
- 어셈블리파일 -> 어셈블러 -> 오브젝트 파일(기계어)
- 오브젝트 파일 + 라이브러리 -> 링커 -> 실행가능한 파일(ELF)
프로그램 실행은 아래와 같다.
- ELF -> 로더 -> RAM
실행중인 프로그램은 RAM 에 적재되어 실행되며, 프로그램의 code, data, stack 등의 정보가 저장된다.
BUS와 CPU
CPU는 버스(bus)를 통해 메모리에서 명령어를 가져온다. (이를 fetch라고 함)
1. Transistor → Gate → Logic + Clock
(생략)
- 트랜지스터의 역할
- 트랜지스터는 CPU의 가장 기본적인 구성 요소로, 전류를 제어하여 디지털 신호(0과 1)를 생성합니다.
- PNP와 NPN 트랜지스터가 그림에 나와 있으며, 이들은 서로 반대의 전류 흐름을 가지며 기본 논리 회로를 구성하는 데 사용됩니다.
- AND Gate와 OR Gate
- AND 게이트: 두 입력 신호(A와 B)가 모두 참일 때만 출력이 참이 되는 논리 회로.
- OR 게이트: 두 입력 신호 중 하나라도 참이면 출력이 참이 되는 논리 회로.
- 트랜지스터 회로를 사용하여 이러한 기본 논리 게이트를 구성할 수 있습니다.
2. Arithmetic Logic Unit (ALU) + Registers + Control Unit (CU) + BUS
(생략)
- ALU (산술 논리 연산 장치)
- 산술 연산(덧셈, 뺄셈)과 논리 연산(AND, OR 등)을 수행하는 CPU의 핵심 구성 요소.
- ALU는 CPU가 데이터를 처리하는 데 직접 관여합니다.
- Registers (레지스터)
- CPU 내부의 초고속 저장 공간으로, 데이터를 임시로 저장하고 연산에 사용됩니다.
- 레지스터는 메모리보다 빠르게 데이터를 처리할 수 있습니다.
- Control Unit (제어 장치)
- CPU의 동작을 제어하고 조정합니다.
- 명령어를 해석하고 ALU와 레지스터, 메모리 간의 데이터를 제어합니다.
- BUS
- 데이터와 명령어를 전달하는 통로로, CPU와 메모리, I/O 장치를 연결합니다.
3. Instruction Set Architecture (ISA)
CPU의 명령어 집합 구조를 정의한다. (CISC, RISC, VLIW, EPIC)
- 테스크 메모리는 운영체제와 프로세스 실행 관점에서 정의되는 메모리 구조로, 사용자 애플리케이션 실행을 위해 필요한 메모리 구조를 포함한다.
- 반면, ISA 메모리는 CPU가 명령어를 실행하고 데이터를 처리하기 위해 하드웨어와 소프트웨어 간 상호작용을 정의하는 모델이다.
둘은 서로 연결되어 동작하며, 테스크 메모리에 저장된 데이터를 CPU가 ISA 메모리 모델을 통해 읽고 처리한다.
4. Performance Characteristic
CPU의 성능을 향상시키기 위해 다음의 다양한 기술들이 사용된다.
1) 파이프라인 : Instruction Cycle의 중첩 실행을 통해 CPU의 성능을 높이는 기법이다.
- No overlap: 한 명령어가 끝나야 다음 명령어 실행 시작
- Overlap: 명령어가 서로 겹치면서 실행(Instruction Fetch, Decode 등 단계가 동시에 진행)
- IF (Instruction Fetch): 명령어 가져오기
- ID (Instruction Decode): 명령어 해독
- EX (Execute): 명령 실행
- MEM (Memory Access): 메모리 접근
- WB (Writeback): 결과를 레지스터에 기록
효율적인 파이프라인의 조건은 아래와 같다.
- RISC (Reduced Instruction Set Computing):
- 명령어의 복잡도를 줄여, 모든 명령어가 비슷한 실행 지연시간(latency)을 갖도록 설계.
- 충돌 방지:
- 명령어 Fetch와 데이터 Fetch(Memory Access) 간 충돌 방지.
- 캐시 사용:
- L1, L2 캐시를 사용해 명령어와 데이터를 빠르게 접근.
- 분기 예측(Branch Prediction) 및 비순차 실행(Out-of-Order Execution):
- CPU의 작업 효율성을 높이기 위한 고급 기술.
2) 슈퍼스칼라(Superscalar)
- 다중 명령어를 동시에 처리하여 성능을 극대화한다.
- 명령어 라인을 복수로 사용하거나 데이터라인 버스를 두 개 이상 사용하는 방식으로 구현한다.
ISA
ISA 모델은 아래 세가지 모델로 구분할 수 있다.
- 레지스터 모델: CPU 내의 레지스터와 그 사용 방식에 대한 정의.
- 메모리 모델: 메모리 주소 지정 방식, 계층 구조, 보호 방법 등을 정의.
- 명령어 모델: CPU에서 처리할 수 있는 명령어 집합과 그 형식, 연산을 정의.
1. 레지스터 모델
레지스터는 기능에 따라 크게 '세그먼트 레지스터', '범용 레지스터', 'EIP', 'EFLAGS' 네가지로 나눌 수 있다.
1) 세그먼트 레지스터 : 메모리 세그멘테이션에서 사용된다.
- CS : Code segment
- DS : Data segment
- SS : Stack segment
- ES : Extra segment
2) 범용 레지스터
3) EIP : PC(Program Counter)의 역할을 한다.
4) EFLAGS : 상태 및 제어 레지스터로, 32비트를 차지한다.
2. 메모리 모델
인텔 아키텍처에서는 세그먼트기법과 페이지기법을 둘 다 사용한다.
세그멘테이션과 페이징기법에 대한 자세한 설명은 OSTEP 운영체제 과목에서 자세히 설명해놓았다.
3. 명령어 모델
기본적인 Instruction model 의 구조는 위와 같다. 이와 관련된 더 많은 내용들은 챕터 7에서 살펴보도록 한다.