❗️Review : 메모리
▶️ 주기억장치, 메인 메모리
▶️ '현재 실행'되는 프로그램의 명령어와 데이터를 저장하는 부품
▶️ 프로그램이 실행되기 위해서는 프로그램의 명령어와 데이터가 메모리 안에 있어야 함
▶️ 즉 실행되는 프로그램의 명령어와 데이터를 저장함
▶️ 상대적으로 가격이 비쌈
1️⃣ RAM(Random Access Memory): 컴퓨터 전원이 꺼지면 저장된 내용을 잃음(휘발성 저장장치)
2️⃣ ROM(Read Only Memotry): 컴퓨터 전원이 꺼져도 저장된 내용이 존재함(비휘발성 저장장치)
(+) 주소: 명령어와 데이터가 저장되어 있는 메모리 내 위치를 나타내는 값, 일반적으로 컴퓨터가 명령어와 데이터를 찾거나 저장할 때 사용됨
❗️Review : 인터럽트(interrrupt)
▶️ CPU가 먼저 처리해야 할 작업이 생겼을 때, 발생
▶️ 순차적 실행 흐름이 끊김
1️⃣ 동기 인터럽트(synchronous interrupt, 예외 Exception ) : CPU가 예외를 만났을 때 발생 ex) 폴트, 트랩, 중단, 소프트웨어 인터럽트, 디버깅
폴트(Falut) : 예외 발생 지점에서 프로그램의 실행을 중단하고 예외 처리 후에 실행을 재개
ex) 프로그램의 잘못된 동작, 허용되지 않은 메모리 접근, 0으로 나누는 경우와 같은 연산 오류
트랩(Trap) : 예외 발생 지점 다음부터 실행 재개
ex) 프로그램이 특정한 조건을 만족하여 요청한 예외 상황, 시스템 호출, 인터럽트 명령
중단(Interrupt) : 하드웨어 장치의 상태 변화나 사용자의 요청에 의해 발생하는 이벤트
ex) 키보드 입력, 타이머 만료
소프트웨어 인터럽트(SW Interrupt) : 프로그램의 특정한 동작 수행을 위해 소프트웨어가 운영 체제에 요청
ex) 시스템 호출, 프로세스 간 통신용 신호 전송, 파일 입출력 작업 완료 알림
디버깅(Debuging) : 프로그램 분석 및 오류 발견을 위해, 실행 중인 프로그램의 동작을 일시적으로 멈추고 상태 확인/수정
2️⃣ 비동기 인터럽트(asynchronous interrupt, 하드웨어 인터럽트 ) : 주로 입출력 장치에 의해 입출력 작업 중 CPU의 효율적인 명령어 처리를 위해 알림 형태로 발생 ex) 입출력 완료
▶️ 막을 수 있는 인터럽트(maskable interrupt, MI) vs 막을 수 없는 인터럽트(non-maskable interrupt, NMI)
▶️ 모든 인터럽트 요청을 수용할 수 있는 것은 아님
1. RAM(Random Access Meomory)
▶️ 휘발성 저장 장치(volatile memory): 전원을 끄면 저장된 내용이 사라지는 저장 장치
▶️ CPC가 실행할 대상을 저장
▶️ RAM 용량이 일정 수준 이상 증가한 이후에는 속도가 용량 증가폭에 비례해서 증가❌️
RAM 용량 ⬆️ | 데이터 저장 多 → 보조기억장치 접근 횟수⬇️ → 프로그램 실행시간⬇️ → 많은 프로그램을 동시에 빨리 실행하는데 유리 |
RAM 용량 ⬇️ | 데이터 저장 少 → 보조기억장치 접근 횟수⬆️ → 프로그램 실행시간⬆️ |
1️⃣ DRAM(Dynamic RAM)
▶️ 저장된 데이터가 동적으로 변하는 RAM(동적 RAM)
▶️ 시간이 지나면 데이터 점차 소멸
▶️ 데이터 소멸 방지를 위해 일정 주기로 데이터를 재충전해야 함(=저장, 재활성화)
▶️ 일반적으로 사용하는 메모리(주 기억장치)
▶️ 데이터 전송 속도 ⬇️
▶️ 소비 전력이 비교적 少
▶️ 상대적으로 비용 少
▶️ 집적도 ⬆️ → 대용량으로 설계하기 유리
집적도: 집적 회로의 단위 면적당 또는 한 개의 집적 회로당 포함되는 소자(素子)의 수.
2️⃣ SRAM(Static RAM)
▶️ 저장된 데이터가 변하지 않는 RAM(정적 RAM)
▶️ 시간이 지나도 데이터 유지
▶️ 데이터를 재충전할 필요 ❌️
▶️ 캐시 메모리에 주로 사용
▶️ DRAM보다 일반적으로 데이터 전송 속도 ⬆️
▶️ 소비 전력 多
▶️ 상대적으로 비용 多
▶️ 집적도 ⬇️
3️⃣ SDRAM(Synchronous Dynamic RAM)
▶️ DRAM 중 하나
▶️ 클럭 신호와 동기화됨
→ 클럭에 맞춰 동작
→ 클럭마다 CPU와 정보를 주고 받음
▶️ 대역폭 ⬆️
→ 데이터 전송 속도 ⬆️
→ 클럭 당 CPU와 데이터를 주고 받는 횟수⬆️
→ 메모리 성능 ⬆️
▶️ 대역폭은 2ⁿ씩 증가함
ex) DDR3 SDRAM : SDR SDRAM 보다 2^3배의 대역폭
SDRAM의 각 세대별 특징
1) SDR SDRAM(Single Data Rate SDRAM): 한 클럭당 하나씩 데이터를 주고 받음(SDRAM 초기 버전)
2) DDR SDRAM(Double Data Rate SDRAM): SDR SDRAM보다 대역폭이 2배 높은 SDRAM
3) DDR2 SDRAM: 대역폭이 4배 높은 SDRAM
4) DDR3 SDRAM: 대역폭이 8배 높은 SDRAM
5) DDR4 SDRAM: 대역폭이 16배 높은 SDRAM
6) DDR5 SDRAM: 대역폭이 32배 높은 SDRAM
2. 메모리의 주소공간
▶️ 메모리에 저장된 정보는 시시각각 변함
▶️ CPU가 파악한 프로그램 실행 주소 /= 메모리 실제 주소
1️⃣ 물리 주소(physical address)
▶️ 정보가 실제로 저장된 하드웨어 상의 실제 주소
▶️ 메모리 사용
▶️ 범위: 베이스 레지스터 값 ~ (베이스 레지스터 값 + 한계 레지스터 값)
2️⃣ 논리 주소
▶️ 실행 중인 프로그램들에게 부여된 주소
▶️ CPU가 프로그램의 실행 위치를 파악할 때 사용
▶️ 각 프로그램은 0번지부터 시작하는 프로그램 내의 주소 ⭕️(즉, 프로그램마다 같은 논리주소가 존재할 수 ⭕️)
3. 메모리 관리 장치(Memory Management Unit, MMU)
▶️ 논리 주소와 물리 주소간 변환을 해주는 장치
▶️ CPU와 주소 버스 사이에 위치
▶️ CPU가 발생시킨 논리 주소와 베이스 레지스터 값을 더해서 물리 주소로 변환
ex> 프로그램 B를 실행할 때, 베이스 레지스터에 5000이 저장돼 있고, CPU가 논리주소 100번지 데이터 삭제를 명령하면 MMU는 5000과 100을 더한 5100번지의 데이터를 삭제
논리 주소: 프로그램의 시작점으로부터 떨어진 거리
베이스 레지스터: 프로그램이 시작하는 첫 물리 주소를 저장하는 레지스터,프로그램 논리 주소 0번지의 물리적 위치를 의미
4. 메모리 보호 기법
▶️ 논리 주소 범위를 벗어나는 명령어 실행을 방지하고, 실행 중인 프로그램이 다른 프로그램의 영향을 받지 않도록 보호하는 기법
▶️ CPU는 실행 중인 프로그램의 논리 주소 영역을 벗어난 곳에 명령을 내리면, 다른 프로그램의 영역을 침범해 데이터 손상을 발생시킬 수 있음
▶️ CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 할 때는 인터럽트(트랩)을 발생시켜 프로그램 실행을 중단
(즉, 실행 중인 프로그램의 독립적 실행 공간을 형성하고, 그 범위를 넘거나 침범받지 않도록 보호)
한계 레지스터
논리 주소의 최대 크기를 저장하는 레지스터
CPU 명령이 프로그램 주소 범위를 벗어나는 경우를 방지하는 장치
CPU가 접근하는 논리 주소는 한계 레지스터가 저장한 값보다 크면❌️
5. 저장 장치 계층 구조
▶️ 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
▶️ CPU와의 거리⬇️ → 저장 장치 속도 ⬆️ → 용량 ⬇️ → 비용 ⬆️
거리 | 용량 | 속도 | 비용 | |
레지스터 | ⬇️ ⬇️ | 少 少 | ⬆️ ⬆️ | ⬆️ ⬆️ |
캐시 메모리 | ⬇️ | 少 | ⬆️ | ⬆️ |
메모리 (주 기억장치, RAM) |
中 | 中 | 中 | 中 |
보조기억장치(USB) | ⬆️ | 多 | ⬇️ | ⬇️ |
6. 캐시 메모리(cash memory)
▶️ CPU와 메모리(RAM) 사이에 위치한 SRAM 기반의 저장 장치
▶️ CPU가 자주 사용하는 데이터나 명령어를 저장
→ CPU가 메모리에 접근할 때 캐시 메모리에 저장된 데이터를 더 빠르게 가져옴
▶️ 전체 시스템 성능 향상에 기여 ← CPU의 연산 속도와 메모리 접근 속도 간의 차이⬇️
▶️ CPU(코어)와 가까운 순대로 캐시 메모리의 계층 구성됨
거리 | 위치 | 코어마다 고유한 캐시 메모리 할당 | |
L1 (level 1) 캐시 | ⬇️ | 코어 내부 | ⭕️ |
L2 (level 2) 캐시 | 中 | ||
L3 (level 3) 캐시 | ⬆️ | 코어 외부 | ❌️ 여러 코어가 하나의 L3 공유 |
'공부(TIL) > 스터디' 카테고리의 다른 글
[면접대비]Stack과 Queue (0) | 2024.04.12 |
---|---|
[면접대비] RDBMS의 1:1관계, 1:N관계, N:M관계 (0) | 2024.04.12 |
[컴퓨터 구조] CPU 속도 향상 조건 (2) | 2024.04.12 |
[컴퓨터 구조] 인터럽트(interrupt) (0) | 2024.04.11 |
[컴퓨터구조] CPU의 내부구조 (0) | 2024.04.11 |