저번시간에 우린 컴퓨터의 간단한 구조 및 개요를 살펴보았다.
이번 시간에는 Memory에 대해서 강의를 시작해보려고 한다.

메모리는 크게 다음과 같은 특징을 지니고 있다.
메모리에는 프로그램이 실행될 때 (실행 중인 프로그램을 프로세스라고 함) 프로그램이 포함되어 있으며, 실행되지 않는 프로그램은 일반적으로 하드디스크에 저장되게 된다.
실행 중인 프로그램 또는 프로세스는 변수, 파일 및 기타 리소스와 같은 다양한 유형의 데이터에 액세스해야 한다.
이러한 데이터는 일반적으로 RAM에 저장되어 CPU가 프로그램 실행 중에 빠르게 액세스할 수 있도록 해준다.
PC 메모리는 일반적으로 DRAM (Dynamic Random Access Memory) 칩으로 구성되게 된다.
개인 컴퓨터(PC) 메모리인 RAM과 같은 것들은 일반적으로 DRAM(Dynamic Random Access Memory) 칩을 사용하여 구성되게 된다.
DRAM은 휘발성 메모리 유형으로, 빠른 읽기 및 쓰기 액세스를 가능하게 하므로 CPU가 빠르게 액세스해야 하는 데이터 및 프로그램을 저장하는 데 적합합니다.
랜덤 액세스(Random Access)?
반대로 하드 디스크는 순차 액세스(Sequential Access)이다.

하드 디스크는 일반적으로 데이터를 읽거나 쓰려면 데이터가 물리적으로 저장된 위치로 읽기/쓰기 헤드를 이동해야 하며, 데이터의 물리적 위치에 따라 다양한 시간이 걸릴 수 있게 된다.
빠르고 강력한 중앙 처리 장치(CPU)는 성능을 극대화하기 위해 대용량 데이터를 빠르고 쉬운 엑세스를 필요로 한다.
CPU가 필요한 데이터에 액세스할 수 없으면 말 그대로 멈추고 기다려야 한다.
현대 CPU는 약 1 기가헤르츠의 속도로 동작하며, 초당 수십 억 바이트의 대량 데이터를 처리할 수 있다.
이런 메모리를 대량으로 사용하는 것은 대부분의 사람들이 감당할 수 없을 정도로 많은 비용이 들게 된다.

그래서, 컴퓨터 디자이너들은 이 비용 문제를 "계층 구조화 메모리"를 사용하여 해결을 하였다.
즉 소량의 비싼 메모리를 사용하고 더 저렴한 메모리의 대량 사용으로 보완하는 방법이다.
그림을 보면 피라미드형 구조를 볼 수 있는데, 이는 각각의 트레이드오프관계를 계층화 시킨것이다.
비용, 속도, 용량순으로 비교를 해보자.
비용: 보조기억장치(HDD) < 주기억장치(RAM) < 캐시(Cache) < 레지스터(Register)
속도: 보조기억장치(HDD) < 주기억장치(RAM) < 캐시(Cache) < 레지스터(Register)
용량: 보조기억장치(HDD) > 주기억장치(RAM) > 캐시(Cache) > 레지스터(Register)
이제 각각 뭐하는 놈들인지 알아보도록 하자.
1. 레지스터 (Registers)
레지스터는 CPU 내부에 내장된 가장 빠른 메모리로, 매우 소량의 데이터를 저장한다.
또한, 레지스터는 CPU의 핵심 부분 중 하나로, 프로세서가 즉시 접근할 수 있는 데이터와 명령어를 저장한다.
역할: 레지스터는 CPU가 현재 수행 중인 연산에 필요한 데이터를 임시로 저장한다.
속도: 매우 빠르며, CPU의 클럭 속도와 일치하여 최상의 성능을 제공해준다.
용량: 매우 적은 용량을 가지며, 일반적으로 몇 바이트에서 수십 바이트 수준이다.
2. 캐시 (Cache)
캐시 메모리는 CPU와 주기억장치(RAM) 사이에 위치하여, 자주 사용되는 데이터를 저장함으로써 데이터 접근 시간을 줄여준다. 캐시는 여러 레벨(L1, L2, L3)로 나뉘며,
각 레벨은 CPU에 대한 접근 속도와 용량에 따라 차이가 존재한다.
L1 캐시
CPU 내부에 위치하며, 가장 빠른 메모리이다.
용량은 일반적으로 2KB ~ 64KB 사이
CPU가 가장 빈번하게 사용하는 데이터를 저장하여 성능을 향상시켜준다.
L2 캐시
L1 캐시의 상위 계층으로, CPU 근처에 위치한다.
용량은 일반적으로 256KB ~ 2MB 사이이다.
L1 캐시에 비해 약간 느리지만, 더 많은 데이터를 저장할 수 있다.
L3 캐시
여러 CPU 코어가 공유하는 캐시이다.
용량은 수 MB에서 수십 MB에 달한다.
L1, L2 캐시보다 느리지만, 주기억장치보다 빠르다.
3. 주기억장치 (Main Memory)
주기억장치, 흔히 RAM(Random Access Memory)으로 불리는 이 메모리는 실행 중인 프로그램과 데이터를 저장한다.
역할: 현재 실행 중인 프로그램과 그 프로그램이 처리하는 데이터를 저장하여 CPU가 빠르게 접근할 수 있도록 한다.
속도: 캐시보다 느리지만, 보조기억장치보다 빠르다.
용량: 일반적으로 수 GB에서 수십 GB에 달한다.
특징: 전원이 꺼지면 데이터가 사라지는 휘발성 메모리이다.
4. 보조기억장치 (Secondary Storage)
보조기억장치는 데이터를 영구적으로 저장하는 데 사용됩니다. 하드디스크(HDD)와 솔리드 스테이트 드라이브(SSD)가 대표적인 예이다.

하드디스크 (Hard Disk Drive, HDD)
솔리드 스테이트 드라이브 (Solid State Drive, SSD)
1. Volatile Main Memory (휘발성 주 메모리)
2. Non-volatile Secondary Memory (비휘발성 보조 메모리)
3. Magnetic Disk (자석 디스크)
4. Flash Memory (플래시 메모리)
5. Optical Disk (광학 디스크 - CD-ROM, DVD)
1. 코드 실행 단계
프로그램 코드는 하드 디스크나 다른 저장 장치에서 읽혀서 RAM(Random Access Memory)으로 적재되게 된다.
코드가 RAM에 적재되면 CPU는 이 코드를 실행한다.
CPU는 코드와 데이터를 연산기(예: 중앙 처리 장치, CPU)까지 가져와야 한다.
2. 캐시 메모리 사용
3. 레지스터로의 전달
CPU의 레지스터(Register)는 CPU 내부에 있는 작고 빠른 메모리 셀입니다. 레지스터는 CPU가 직접 액세스할 수 있으며, 레지스터를 통해 CPU는 연산을 수행하고 결과를 저장한다.
캐시에서 데이터나 코드가 필요할 때, CPU는 해당 데이터를 레지스터로 가져와 연산을 수행한다.
4. ALU(산술 논리 장치)에서 연산
ALU는 CPU의 핵심 부분 중 하나로, 산술 및 논리 연산을 수행한다. CPU는 ALU를 사용하여 코드나 데이터를 연산하고 원하는 결과를 생성한다.
ALU는 주로 레지스터의 데이터에 직접 접근하여 연산을 수행한다. 이렇게 하면 데이터의 빠른 처리와 연산 결과의 빠른 반환이 가능하다.
여기서 모르는 단어 및 용어는 차차 강의하면서 배워보도록 하자.