Memory
- 프로그램, 데이터, 운영 체제 등을 저장하는데 사용된다. 메모리는 실행 중인 프로그램의 코드와 필요한 데이터를 저장하고 있다.
- 보편적으로 메모리하면 RAM을 뜻하며, ROM(읽기 전용 메모리), 보조 기억장치(HDD,SDD 등)이 포함된다.
- CPU의 레지스터보다는 상당히 낮은 속도를 보이지만, 더 많은 데이터를 저장할 수 있다.
이 정도만 알아보고
메모리에서 좀 더 자세히 볼 수 있다.
Register
컴퓨터의 프로세서(CPU) 내에서 데이터를 보관하는 아주 빠른 기억 장치로, 일반적으로 그냥 레지스터라 불리며 프로세서 레지스터라고 불리기도 한다. 주로 현재 계산을 수행중인 값을 저장하는데 사용된다.
대부분의 현대 프로세서는 메인 메모리에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후, 그 내용을 다시 레지스터에서 메인 메모리로 저장하는 로드 - 스토어 설계를 사용하고 있다.
레지스터는 메모리 계층의 최상위에 위치하며, 가장 빠른 속도로 접근 가능한 메모리이다.
위치, 속도
레지스터는 CPU 내부에 위치하며, 컴퓨터 시스템에서 가장 빠른 데이터 접근 속도를 제공한다.
프로그램 실행 중에 필요한 데이터와 명령어를 즉시 사용할 수 있게 함.
역할
- 데이터 처리
CPU 가 실행 중인 프로그램의 연산을 처리하기 위해, 레지스터는 필요한 데이터를 저장하고, 연산 결과를 임시로 보관한다.
- 명령어 실행
CPU는 실행할 명령어를 레지스터에 저장하고, 명령어에 따라 다른 레지스터에 저장된 데이터를 사용한다.
- 프로그램 흐름 제어
프로그램 카운터와 같은 특수 목적 레지스터는 실행 중인 프로그램의 현재 위치를 추적하고, 다음에 수행할 명령어의 주소를 가리킨다.
- 상태 표시
상태 레지스턴느 현재 CPU의 상태를 나타내는 플래그를 포함하여, 연산의 결과나 CPU의 상태를 나타낸다.
용량
레지스터의 크기는 보통 32비트나 64비트와 같이 CPU의 아키텍처에 따라 다르다. 레지스터의 용량은 메우 제한적이며, 큰 데이터를 저장하기에는 매우 부적합하다.
32비트에서 64비트의 CPU 아키텍쳐가 만들어 졌을 때, 새로운 아키텍쳐를 설계하기 보단 기존에 사용하던 방식들이 많은 보급이 이루어졌기 때문에 버리고 새로 만들기에는 비용이 많이 들며, 많은 문제점들을 일으킬 수 있기 때문에 32비트의 구조에서 Extend 형식으로 설계 되었다. 때문에 64비트에서의 레지스터는 32비트에서의 레지스터들을 내부에 가지고 있다.
구성
- PC(프로그램 계수기) : 다음에 실행할 명령어(instruction)의 주소를 가지고 있다.
- IR(명령어 레지스터) : 현재 수행 중인 명령어를 가지고 있다.
- MAR(메모리 주소 레지스터) : 메모리로부터 읽어오거나 메모리에 쓰기 위한 주소를 가지고 있다.
- MBR(메모리 버퍼 레지스터) : 메모리로부터 읽어온 데이터 또는 메모리에 써야할 데이터를 가지고 있다.
- I/O AR(입출력 주소 레지스터) : 입출력 장치에 따른 입출력 모듈의 주소를 가지고 있다.
- I/O BR(입출력 버퍼 레지스터) : 입출력 모듈과 프로세서 간의 데이터 교환을 위해 사용된다.
목적
일반적으로 레지스터는 일반 목적 레지스터와, 특수 목적 레지스터 2가지로 나뉜다.
![업로드중..]()
일반 목적 레지스터
일반 목적 레지스터는 다양한 데이터 처리 작업에 사용된다.
- RAX, RBX, RCX, RDX (64bit)
주로 데이터 연산과 저장에 사용된다.
- RSI, RDI
스택 관리에 사용된다.
- R8,9,10,...,15
다양한 다목적 용도로 활용된다.
특수 목적 레지스터
특정 기능만을 위해 설계된 레지스터들로 CPU의 제어와 상태 관리에 주로 사용된다.
- PC(Program Counter) 또는 IP(Instruction Pointer)
다음에 실행할 명령어의 주소를 저장한다. PC나 IP는 레지스터가 아닌 레지스터의 구성 중 하나를 뜻하는데, RIP 레지스터가 수행함.
- Instruction Register(IR)
현재 실행 중인 명령어를 저장한다.
- Status Register/ Flag Register(ex: FLAGS, EFLAGS, RFLAGS)
CPU의 상태 플래그( 제로 플래그, 오버플로 플래그 등)을 저장한다.
- RSP
현재 스택의 상단을 가리킨다.
- RBP
스택 프레임의 기준점을 가리킨다.
- 세크먼트 레지스터
메모리 세그먼트의 시작 주소를 저장하고 관리한다. 주로 메모리 관리에 사용된다.
- 컨트롤 레지스터
시스템의 상태와 제어를 위한 레지스터
cache
캐시는 데이터나 값을 미리 복사해 놓는 임시 장소로 쓰인다.
캐시의 접근 시간에 비해 원래 데이터에 접근하는 시간이 오래 걸리는 경우 중앙 처리 장치(CPU)와 메모리 사이의 속도 차이를 줄이기 위해, 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용되는 고속 데이터 저장소이다. 캐시의 주요 목적은 데이터와 명령어를 빠르게 접근할 수 있게 함으로써 전체 시스템의 성능을 향상시키는 것이다.
특징
- 고속 접근
캐시는 CPU와 메모리 사이에 위치하여, CPU가 필요한 데이터와 명령어를 빠르게 접근할 수 있도록 해준다.
- 임시 저장서
자주 사용되는 데이터나, 연산 결과 값, 명령어를 저장하여 CPU 가 메인 메모리에 접근하는 횟수를 줄여준다.
작동 원리
- 로컬리티 원칙
캐시는 시간적 지역성과 공간적 지역성의 원칙을 활용한다. 이는 프로그램이 특정 데이터나 명령어를 한 번 사용하면 곧 다시 사용할 가능성이 높다는 것을 의미한다.
- 캐시 적중과 캐시 미스
CPU가 데이터를 요청햇을 때 캐시에 해당 데이터가 있으면 캐시 적중 없으면 캐시 미스라고 한다.
캐시 미스가 발생하면 데이터는 메인 메모리에서 가져와 캐시에 저장된다.
캐시와 레지스터의 차이
레지스터에 들어오는 데이터는 처리되기 위해서 들어오는 것이고 저장되기 위해서 들어오는 것이 아니다.
즉, 레지스터는 데이터 처리를 위한 구성요소로써 CPU의 필수 구성 요소지만 캐시는 CPU를 개선하고 돕기위한 저장을 위한 요소로 CPU의 보조 구성요소이다.