- Code Area
읽기 영역 (Text Area) 제어문 , 함수 , 상수
- Data Area
전역 · 정적 변수 , BSS 는 초기화되지 않는 전역변수
- Heap Area
사용자가 관리하는 동적할당 공간
- Stack Area
지역변수 , 매개변수
함수 종료시 쓰레드에 해당하는 변수 해제
- 전처리
(.i)
외부에 선언된 소스코드 , 라이브러리 포함
주석제거
매크로 치환 적용
- 컴파일
(.s)
전처리된 소스코드파일 어셈블리어 변환
언어문법 검사
정적영역 메모리 할당
- 어셈블리
(.o)
어셈블리어 파일 -> 오브젝트 파일 변환
- 링킹
(.exe)
오브젝트 파일 · 프로그램에 사용되는 라이브러리 링크 => 하나의 실행파일 변환
- PC
메모리에서 가져올 명령어 주소 저장
특별한 경우 제외 순차적 주소 값 증가
- MAR
PC 에서 주소 값을 받아 메모리 접근
제어장치의 제어신호화 함께 메모리 접근
- MBR
MAR 에서 접근한 메모리 명령어 · 데이터 저장
- IR
MBR 에서 저장된 명령어 · 데이터 해석
CPU 가 진행하고 있던 작업을 중단시키는 상황
- 동기 인터럽트
CPU 가 직접 작업 중단
- 비동기 인터럽트
입출력 장치에서 인터럽트 요청신호 호출 ↓
FLag Register 의 IF 활성화 여부에 따라 인터럽트 결정 ↓
현재 작업 스택에 백업후 인터럽트 백터 확인 ↓
해당 장치의 인터럽트 서비스 루틴 실행 ↓
백업한 작업 재개
명령어가 처리되는 과정을 순차적으로 처리하는 기법
- 데이터 헤저드
데이터가 의존적일 때 둘중 하나의 명령어가 처리되지 못하는 상황- 컨트롤 헤저드
분기로 인한 PC 의 갑작스러운 변환쓸모 없는 명령어 발생
- 스트럭쳐 헤저드
서로 다른 명령어가 같은 자원 접근
명렁어들이 순차적으로 실행되지 않는 기법
- 순서가 바뀌어도 진행에 영향을 주지 않는 명령어 우선 처리
명령어 처리 딜레이로스가 발생하지 않도록 함
- CISC
가변길이 명령어
복잡하고 다양한 기능 제공메모리 관리 효율적
명령어의 크기 · 실행 시간이 일정하지 않음.
파이프라이닝 불리
- RISC
명령어의 종류 축소 · 규격화된 명령어 제공
작성되는 명령어 증가
한 클럭 내외 실행
파이프라이닝 유리
- DRAM
일정시간 이후 데이터 소멸을 막기 위한 재활성화
소비전력 · 비용 ↓
집적도 ↑
대용량 설계 유리
주기억 장치 사용
- SRAM
데이터 유지
속도 ↑
집적도 ↓
소비전력 · 비용 ↑
캐시메모리 사용
CPU 에서 사용될 것으로 예측되는 데이터 미리 확보후 CPU 에서 제공하는 메모리 공간
- 코어 내에서 개별 메모리 할당
L1 · L2 캐시
- 코어 외에서 각 코어 캐시 메모리 공유
L3 캐시
- 한번 접근한 곳에 접근 할 가능성
시간지역성
- 접근한 메모리와 인정한 공간에 접근할 가능성
공간지역성
- 컴파일 언어
소스 코드 전체 검사 -> 저급 언어 변환 -> 실행 파일 생성
- 인터프리터 언어
코드를 한줄 씩 저급 언어 변환후 실행컴파일 시간 · 실행 파일 생성 x
실행 때 마다 인터프리터 과정 반복 수행