CPU - 보조기억 장치에 직접 접근 불가
=> 보조기억장치(비휘발성)에 보관할 대상을 저장 -> RAM(휘발성)에 실행할 대상을 저장 -> CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 복사하여 저장 후 실행
물리 주소 : 메모리 하드웨어가 사용하는 주소 (실제 저장되노 하드웨어상의 주소)
논리 주소 : CPU와 실행 중인 프로그램이 사용하는 주소 (실행중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소)
=> 논리 주소와 물리 주소 간의 변환이 이루어져야 함 (CPU가 메모리와 상호작용하려면)
MMU ; 메모리 관리 장치 ( CPU와 주소 버스 사이에 위치)
=> CPU가 발생시킨 논리 주소에 베이스 레지스터 값 더함 -> 논리 주소 - - - > 물리 주소 변환
베이스 레지스터 : 프로그램의 가장 작은 물리 주소 ( == 프로그램의 첫 물리 주소 저장)
한계 레지스터 : 논리 주소의 최대 크기 저장
저장 장치 계층 구조
=> CPU에 얼마나 가까운가를 기준으로 계층적으로 나타냄
(가까움) 레지스터 < 메모리 < 보조 기억 장치 (멂)
캐시 메모리 ; CPU와 메모리 사이에 위치, 레지스터보다 용량 크고 메모리보다 빠른 SRAM 기반 저장장치
캐시 메모리 -> CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치
-> 코어 (CPU)와 가까운 순서대로 계층 구성
참조 지역성 원리 ; 메모리는 CPU가 사용할 법한 대상을 예측하여 저장
하드 디스크 구성 요소
플래터 = 트랙 + 섹터 / 실린더 : 여러 플래터의 동일한 트랙의 모임
하드 디스크의 데이터 접근 시간 = 탐색 시간 , 회전 지연, 전송 시간
플래시 메모리 => SLC, MLC, TLC (한 셀에 몇 비트 저장하냐에 따른)
-> 플래시 메모리의 읽기와 쓰기는 페이지 단위, 삭제는 블록 단위
데이터의 안전성, 높은 성능을 위해 여러 보조기억장치를 마치 하나의 장치처럼 사용하는 기술
RAID 0 ) 단순히 병렬 분산하여 저장
RAID 1) 완전한 복사본 저장
RAID 4) 패리티 저장한 장치 따로 두는 방식
RAID 5) 패리티 분산 저장
RAID 6) 서로 다른 두 개의 패리티
전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
장치 컨트롤러(하드웨어) == 입출력 제어기, 입출력 모듈
모든 입출력 장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고 받음
장치 컨트롤러 역할
1. CPU와 입출력 장치 간의 통신 중개
2. 오류 검출
3. 데이터 버퍼링
버퍼링이란?
전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼(임시저장공간)에 저장하여 전송률을 비슷하게 맞추는 방법
장치 컨트롤러 내부 = 데이터 레지스터 + 상태 레지스터 + 제어 레지스터 ...
데이터 레지스터 ) CPU 와 입출력장치 사이에 주고 받을 데이터가 담기는 레지스터 - 버퍼 역할
상태 레지스터 ) 입출력 작업 관련, 오류는 없는지 상태 정보 저장
제어 레지스터 ) 입출력 장치가 수행할 내용에 대한 제어 정보 저장
장치 컨트롤러가 컴퓨터 내부와 정보 주고받을 수 있게 하는 프로그램
(장치 컨트롤러가 입출력 장치 연결 위한 하드웨어적 통로라면, 장치 드라이버는 소프트웨어적 통로)
프로그램 입출력 ; 프로그램 속 명령어로
메모리 맵 입출력 ; 메모리 접근 + 입출력장치 접근 위한 주소공간 => 하나의 주소공간으로 간주
고립형 입출력 ; 메모리 접근 / 입출력 장치 접근 위한 주소공간 => 주소공간 분리
인터럽트 기반 입출력 ; 우선순위 따라 인터럽트
DMA 입출력 ; CPU 거치지 않고 메모리와 입출력 장치 간의 데이터 주고받음 (입출력 버스)
(입출력 버스 : 입출력 장치 - 컴퓨터 내부 연결 통로)
과제
185p 03.
주로 캐시 메모리로 활용 - SRAM
주로 주기억장치로 활용 - DRAM
대용량화하기 유리 - DRAM
집적도가 상대적으로 낮음 - SRAM (집적도가 높다 = 더 작고 빽빽하게 만들 수 있다)
205p 01.
1. 레지스터
2. 캐시메모리
3. 메모리
4. 보조기억장치