컴퓨터 구조와 메모리 계층 구조(Memory hierarchy)
참고: 위키피디아, https://www.samsungsemiconstory.com
메인보드
컴퓨터 내에서 기본 회로와 부품들을 담고 있는 가장 기본적이고 물리적인 하드웨어이다. 마더보드(mother board) 또는 주기판이라고도 한다. 메인보드의 구성에는 CPU 소켓, 메모리 슬롯, 칩셋, 그리고 각종 확장카드 슬롯 및 저장장치 포트 등이 있다.
CPU와 프로세서, 코어, 스레드
컴퓨터를 뇌에 비유하면 단기기억 담당은 RAM, 장기기억은 하드디스크, CPU는 사고를 담당하는 대뇌피질이다.
대뇌피질 없이 인간의 사고가 성립하지 않듯이 컴퓨터도 CPU 없이는 그냥 전기 먹는 기계가 된다.
1. CPU
트랜지스터라고하는 반도체를 이용해서 만들어진 CPU는 수십억개의 트랜지스터를 통해 전기 신호를 1(켜짐)과 0(꺼짐)으로 처리하여 다양한 동작들을 수행하게 된다.
CPU는 기억, 해석, 연산, 제어라는 4대 주요 기능을 하는 컴퓨터의 가장 핵심적인 중앙 처리 장치이다. CPU는 컴퓨터가 동작하는 데 필요한 모든 계산을 처리하고 컴퓨터 전체의 동작을 제어한다. CPU 내부에는 Core, L3 캐시메모리, Memory 컨트롤러 등 다양한 부품으로 구성되어 있다.
'인텔의 CPU 제품군: 인텔 코어 i7 프로세서'처럼 CPU와 프로세서는 같은 의미로 사용
2. 프로세서
컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리회로로, 프로세서라는 용어는 점차 CPU라는 용어로 대체해왔기 때문에 둘을 같은 의미로 봐도 무방하다.
프로세서(CPU) 구성 요소
- 산술논리 연산장치(ALU): 사칙연산과 AND, OR의 논리연산 등의 연산 담당
- 제어 장치(Control unit): 모든 장치들의 동작을 제어하는 대장
- ex. 제어 장치: 메모리에서 데이터를 가져와라, 덧셈을 실행하라, 덧셈 결과값을 메모리로 옮겨놔라
- 레지스터: 각종 명령어나 명령어의 주소, 연산에 필요한 데이터 등을 임시로 보관하는 가장 빠른 저장 장소
3. Core
각종 연산을 하는 CPU 핵심 부품이며, CPU 내부에는 코어 말고도 컨트롤러, 캐시메모리 등이 들어있다. 코어가 1개면 싱글코어, 2개면 듀얼코어, 4개면 쿼드코어라고 하며 코어 수가 많을수록 병렬 처리 효율이 늘어난다.
연산은 정보를 다루고 처리하는 그 자체이므로, 코어가 많으면 좋을 것 같다. 하지만 코어가 아무리 많아도 여러 개의 코어에게 일거리를 효율적으로 배분하지 못하면 CPU 처리량이 더 필요해도 다른 코어의 도움을 받지 못하고 1번 코어에서만 비비적대며 돌아가거나, 심지어는 일감을 달라고 자기들끼리 싸우는 동안 실행 속도는 오히려 더 떨어져 버릴 수 있다. 따라서 사용 환경에 따라 적당한 코어를 사용해야 한다. 코어의 성능은 연산을 얼마나 빠른 속도로 처리할 수 있는가로 나타내는데, 해당 처리속도를 나타내는 표현 단위는 '클럭(Clock)'이 사용된다.
노트북의 작업 관리자를 보면 코어 밑에 논리 프로세서라는 게 있다. 코어가 일을 수행하기 위한 물리적인 장치라면, 논리 프로세서는 실제로 일을 수행하는 논리적인 주체다. 이 논리 프로세서를 '스레드'라고 한다. 그래서 내 노트북의 CPU는 코어는 4개, 스레드는 8개로 구성되어 있다고 할 수 있다.
- 코어: 작업자🧔 본인
- 스레드: 실제로 일을 수행하는 작업자의 👋
4. 스레드
프로세스(process) 내에서 실제로 작업을 수행하는 논리적인 주체이자 실행 단위라고 했다.
기본적으로 CPU는 1개의 코어에서 1개의 스레드로 일을 했는데, 물리적으로 하나인 코어를 논리적으로 둘로 나눠 마치 전체 코어 수가 2배로 늘어난 것과 유사한 효과를 볼 수 있는 SMT(Simultaneous Multi-Threading) 기술이 개발되었다. 인텔에선 자사 제품에 적용된 SMT 기술을 하이퍼쓰레딩(Hyper Threading)이라고 부른다. 이 기술을 통해 CPU는 1개의 코어가 2개의 스레드를 갖게 되었다. 단일 작업을 하더라도 한 손이 아닌 양 손으로 일을 하고, 두 가지 작업은 두 손으로 동시에 할 수 있게 된 것이다.
기억장치
위키피디아
기억 장치(computer data storage)는 컴퓨터에서 데이터를 일시적으로 또는 영구적으로 보존하는 장치를 말한다. 비슷한 말로 저장 장치라고도 하는데 이때는 대체로 비휘발성의 기억 장치를 의미한다.
컴퓨터의 기억 장치는 주기억 장치(RAM, ROM)와 보조 기억장치(HDD, SSD)로 나눌 수 있다.
위 표에서 보는 것처럼 CPU에 가까울수록 데이터를 더 빠르게 읽어올 수 있고, 보조 기억 장치가 있는 아래에서부터 CPU까지 데이터를 읽어오려면 훨씬 시간이 오래 걸린다.
1. 레지스터
CPU 내부에 위치하여 메모리 중 동작 속도가 가장 빠른 저장소이다. 일반적으로 현재 계산을 수행 중인 값을 저장하는 데 사용된다. 대부분의 SRAM에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후 결과를 다시 SRAM에 저장한다.
2. 주기억장치(RAM, ROM)
RAM(Random Access Memory)
CPU가 현재 사용 중인 프로그램이나 명령만을 임시로 저장하는 곳이다.
RAM의 Ramdom Acess는 무작위의 접근이 아니라, 메모리의 주소만 안다면 어느 위치든지 임의로 접근해도 동일한 시간이 걸린다. 이런 특징 때문에 파일의 현재 위치에서 순차적으로 저장된 데이터에 접근하는 보조기억장치(HDD, SSD, CD)과 다르게 접근 속도가 훨씬 빠르다.
일반적으로 주기억장치에 사용되는 기억 소자는 DRAM(Dynamic RAM)과 SRAM(Static RAM)이 있다.
기억소자는 데이터가 저장되는 방이다. 데이터가 왔다는 전기신호를 받으면 메모리는 이 방(기억소자)에 데이터를 집어넣는다. 이 방에는 문이 있을 수도 있고, 없을 수도 있다.
비휘발성 메모리는 방에 문이 있는 메모리로, 문을 열어주지 않는 한 데이터는 방 밖으로 나오지 않는다. 반면 휘발성 메모리에는 문이 없어서 전원이 꺼지면 데이터는 방 밖으로 나와버린다.
RAM은 휘발성 메모리로 전원이 꺼지면 메모리에 저장된 내용들은 모두 사라진다. 따라서 컴퓨터가 꺼진 이후에도 데이터를 유지하고 싶을 경우에는 데이터를 하드디스크에 저장해야 한다.
1) SRAM(Static RAM)
CPU 안에 포함되어 캐시 메모리라고도 하며, CPU와 DRAM의 속도 차이를 극복하기 위해 CPU와 DRAM 사이에 존재하는 고속 기억 장치이다. 캐시 메모리는 시간적, 공간적 지역성을 기반으로 가까운 미래에 접근될 확률이 높은 데이터를 미리 보관하는 것이다.
캐시 메모리의 저장 규칙
- 시간적 지역성: 최근에 접근된 데이터가 가까운 미래에 또 한번 사용될 가능성이 높다.
- 공간적 지역성: 최근에 접근된 데이터의 주변 데이터가 사용될 가능성이 높다.
🔎 그럼 작업 관리자의 L1, L2, L3 캐시는 무엇일까?
CPU 안에 내장되어 있는 L1~L3 캐시 메모리는 속도와 크기에 따라 분류한 것으로 L은 Level을 뜻한다.
L1 캐시는 크기는 작지만 CPU가 가장 빠르게 접근할 수 있고, CPU의 데이터 사용 및 검색에 가장 먼저 사용된다. 여기서 데이터를 찾지 못하면 L2와 L3 캐시 메모리로 넘어가게 된다.
CPU에서 필요로 하는 데이터가 캐시 메모리에 있어서 바로 접근할 수 있는지에 따라 Cache Memory의 성능이 된다. 이때 CPU가 필요한 데이터가 Cache Memory 내에 들어와 있으면 Cache Hit(캐시 적중)라 한다. 반면 데이터가 캐시에 없으면 Cache Miss(캐시 미스)라 하고 데이터를 주 메모리(DRAM) 또는 보조기억장치(스토리지)에서 캐시로 로드하도록 요청해야 하는데, 이는 시간이 걸리고 성능에 부정적인 영향을 미친다. 이러한 원하는 데이터가 캐시에 있을 수도 있고 없을 수도 있는데, 이때 원하는 데이터가 Cache에 있을 확률을 Hit Ratio(캐시 적중률)라 한다. 일반적으로 캐시 적중률은 캐시 크기가 증가할 때 향상된다.
2) DRAM(Dynamic RAM)
우리가 흔히 말하는 메인 메모리를 뜻하며, SRAM보다 속도는 느리지만 집적도를 높이기 쉬워 메모리 용량이 크고 SRAM보다 상대적으로 저렴하다.
🔎 SRAM과 DRAM의 구조적 차이
DRAM은 캐패시터로 이루어져있는 소자의 집합체로, 각각의 축전기(capacitor 커패시터)가 담고 있는 전자의 수에 따라 전기신호를 1과 0으로 나타내는데 축전기가 시간이 지나면 방전되어 데이터를 잃는다. 그래서 일정 시간마다 재충전하여 데이터를 재생시켜야 되므로 동적(Dynamic)이란 명칭이 주어진 것이다.
SRAM은 트랜지스터로 이뤄진 소자의 집합체로, 일반적으로 여섯 개의 트랜지스터를 사용한다. 두 쌍의 인버터를 통해 0과 1의 데이터가 전원이 들어올 동안 계속 유지하고 있어서 정적(Static)이란 명칭이 주어졌다.
DRAM과 SRAM은 공통적으로 휘발성 기억 소자이지만, DRAM은 데이터 유지를 위해서 메모리 자체에 지속적인 전기를 소모하고, 전기가 약해지면 순간적으로 데이터가 다 날아가버린다. 하지만 SRAM은 시스템에 전기가 남아있는 한 재생을 하지 않아도 메모리가 날아가지 않고, 트랜지스터 방식을 사용하는 SRAM이 DRAM에 비해서 훨씬 속도가 빠르다.
3) ROM
ROM도 주기억장치 중 하나로, 내용을 읽을 수는 있어도 쓰기가 불가능한 메모리다. 메인보드에 작은 부품으로 이미 공장에서 생산될 때 납땜되어 출하되고, 읽고 쓰기가 모두 가능한 RAM과 비교된다. ROM은 컴퓨터의 전원이 끊어져도 그 내용이 (반)영구적으로 유지되는 비휘발성 메모리이다.
ROM은 메인보드에 작은 부품으로 이미 공장에서 생산될 때 납땜되어 출하된다.
그래서 ROM은 주기억장치로 활용되기보단 컴퓨터의 입출력을 처리하는 바이오스 등의 변경 가능성이 없는 소프트웨어를 기억시키는 데 이용된다. 한 번 설정을 세팅하고 그대로 출시하는 냉장고, 에어컨 등에는 Mask ROM이 들어간다.
3. 보조기억장치(HDD, SSD, USB, CD)
보조기억장치는 주기억 장치를 확장한 것으로, 데이터를 영구적으로 저장하는 비 휘발성 대용량 기억장치이다. 주기억장치보다는 속도는 느리지만 저장 용량이 크고 컴퓨터의 전원을 끄더라도 데이터가 사라지지 않는다.
대표적인 보조기억장치로는 HDD와 SSD가 있다.
1) HDD(Hard Disk Driver)
물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치이다. 디스크에 물리적으로 저장하기 때문에 충격에 약하며, 소음이 발생한다. 가장 대중적인 보조기억장치 였으나, 크기가 작고 처리속도가 향상된 SSD가 나오면서 최근에 많이 소멸되고 있다.
2) SSD (Solid State Driver)
반도체를 이용하여 데이터를 저장하는 기억장치이다. SSD는 물리적으로 데이터를 저장하지 않고 전기적으로 데이터를 저장하기 때문에 HDD에 비해서 속도가 월등히 빠르고, 소음도 발생하지 않는다. 또한 전력소모가 적고, 소형화 할 수 있지만 HDD에 비해서는 가격이 다소 높은 게 단점이다.