우선 컴퓨터의 구조를 먼저 알아보자.
데이터는 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보를 가리키고,
명령어는 데이터를 움직이고 컴퓨터를 작동시키는 정보이다.
그러니까 명령어는 컴퓨터를 작동시키는 정보이고, 데이터는 명령어를 위해 존재하는 재료라고 볼 수 있다.
* 주기억장치에는 RAM과 ROM이 있는데 메모리는 보통 RAM을 가리킨다.
이 네 가지 핵심부품을 시각화해보자.
하나씩 살펴봅시다요.
보통 RAM을 가리킨다.
현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
따라서 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다.
메모리에 저장된 명령어와 데이터의 위치는 정돈되어 있어야 하기 때문에,
주소라는 개념을 사용한다.
이 주소를 통해 메모리 내 원하는 위치에 접근할 수 있다.
메모리에 저장된 명령어를 읽고 이를 해석하고 실행하는 부품이다.
이 내부에는 또 여러 가지 구성 요소가 있는데,
산술논리연산장치(ALU), 레지스터, 제어장치가 가장 중요하다.
계산기와 같다. 컴퓨터 내부 대부분의 연산을 수행한다.
CPU 내부의 작은 임시 저장 장치이다. 프로그램을 실행하는데 필요한 값을 임시로 저장한다.
CPU 안에는 여러 개의 레지스터가 있고 각기 다른 이름과 역할을 가지고 있다.
제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치이다.
제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이다.
메모리는 실행되는 프로그램의 명령어와 데이터를 저장하지만, 가격이 비싸 저장 용량이 적고 전원이 꺼지면 저장된 내용을 잃는다는 단점이 있다.
하드 디스크, SSD, USB메모리 등.. 저장 장치가 보조기억장치의 일종이다.
컴퓨터의 전원이 꺼져도 컴퓨터에 파일이 남아있는 이유가 이것!
우리가 생각하는 그거티비
마이크, 스피커, 프린터, 키보드 등등
앞서 언급한 핵심 부품들은 모두 메인보드에 연결된다.
메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있는데, 메인보드 내부에 버스라는 통로가 있기 때문이다. 다양한 종류의 통로(버스)가 있지만 제일 중요한 버스는 시스템 버스이다.
시스템 버스는 주소버스, 데이터 버스, 제어버스로 나뉜다.
이렇게 핵심 부품들을 알아보았는데 그중에서 더 알아볼 부분은 레지스터에 대해 정리해보겠따.
그리고 그와 비슷한 역할을 하는 캐시도 함께 알아보자.
메모리의 계층 구조는 이렇게 되어 있다.
보이다 싶이 위로 올라갈수록 비싸고, 빠르고, 작고, CPU와 근접해있다.
그럼 둘을 비교 요약해보자.
특성 | 레지스터(Register) | 캐시(Cache) |
---|---|---|
위치 | CPU 내부 | CPU 내부 또는 가까운 위치 |
속도 | 가장 빠름 | 레지스터보다는 느리지만 메모리보다 빠름 |
용량 | 매우 작음 (몇 바이트) | 상대적으로 큼 (수십 KB ~ 수 MB) |
주요 역할 | CPU 연산에 필요한 데이터 저장 | 자주 사용되는 데이터나 명령어 저장 |
제어 | 하드웨어에서 직접 제어 | CPU와 하드웨어가 자동으로 관리 |
+
L1 캐시: CPU 코어 내부에 위치하며, 가장 빠르고 가장 작은 캐시
L2 캐시: L1 캐시보다는 약간 더 느리고 크기가 크며, 여전히 CPU에 매우 가깝다.
L3 캐시: 여러 코어가 공유하는 캐시로, L1, L2 캐시보다 크지만 속도는 더 느리다.
레지스터는 보통 어떠한 연산을 할 때 값을 저장하는 용도로 사용하고,
캐시는 반복되는 데이터를 저장해서 CPU에게 전달하는 용도로 사용되는 것 같다.
어제 스터디에서 스터디원이 캐시에 대해 더욱 자세히 설명해줬다.
정리를 더 해보좌
참고는 여기서 https://taku7664.tistory.com/
우선 캐시를 사용함으로써 얻을 수 있는 이점이 무엇이냐,
매우매우 중요하다.
자주 사용되는 데이터나 명령어를 저장하여 메인 메모리와의 접근 시간을 줄임으로써 병목현상을 낮춰준다고 한다. WOW
자주 사용되는 데이터가 캐시에 저장되어있으면 CPU가 메모리에 접근할 필요가 없어지기 때문이겠죠?
실제로 CPU에서 데이터가 개빠르게 들어오는데 RAM은 그만큼의 속도처리가 안되기 때문에 딜레이가 걸리고 느려지는 거랍니당
캐시가 어떤 식으로 쓰이는 지 알려면
캐시 미스와 캐시 히트 개념을 알아야합니다만
캐시 미스(캐시에 데이터 없음) 발생 시는 캐시에 데이터가 없어 CPU가 RAM에 접근하여 데이터를 가져와 캐시에 저장하여 연산을 수행하고,
캐시 히트(캐시에 데이터 있음) 발생 시엔 RAM에 접근하지 않고 캐시에서 바로 데이터를 가져와 사용함니다.
당연히 캐시 히트율(적중률)을 높여야 좋겠져? 생각만 해도 성능 향상이 될 것 같고 도키도키 합니다.
나머지 캐시에 대한 내용은 위 블로그에 잘 기술 되어있으니 확인해보세용