[CPU 와 Memory]
캐시메모리, 왜 메모리가 컴퓨터의 전체 성능을 좌우할까?
# 왜 메모리가 컴퓨터의 전체 성능을 좌우할까?
CPU가 일을 하려면 일의 내용이 CPU로 전달이 되어야 한다.
이 명령어나 데이터는 파일에 일부로 담겨있다. 파일은 하드 디스크에 저장이 되어 있다.
파일의 일부 내용이 하드 디스크에서 CPU까지 전달하려면 데이터가 BUS를 타야 한다.
버스란, 컴퓨터 안에 데이터들을 싣어 날라주는 연결선인데,
그러면 하드디스크에 있는 파일의 일부가 이 버스를 타고 CPU로 올라간다.
CPU에서 일처리가 끝나면 결과가 다시 버스를 타고 어디론가 흘러간다. 이렇게 버스로 컴퓨터안에서 오간다.
이때 문제는, 버스가 상대적으로 느리다는 것이다.
상대적이라는 말을 이해해야 한다.
컴퓨터 안에서 데이터가 오가는 속도는 굉장히 빠르다.
사실 하드디스크가 느리다고 말하지만, 엄청난 속도로 실린더를 돌고 있다.
CPU가 빠른 처리를 하기 위해 하드디스크의 파일의 내용 일부를 메모리에 올려 놓고 수행을 한다.
여기서 자꾸 프로그램의 일부라고 하는 이유는 프로그램이 얼마나 큰가 그 파일이 메모리에 한꺼번에 다 올라가는 것이 아니라, 메모리는 매우 한정된 공간이기때문에 프로그램 중 일부가 올라가는 것이다.
메모리는 CPU가 하고자 하는 일을 임시 저장한다.
메모리를 하드디스크보다 훨씬 속도가 빠르기 때문에 CPU의 일거리를 바로 바로 줄 수 있다.
그래서 CPU가 일을 얼마나 빨리 처리하느냐도 중요하지만, 옆에 일을 얼마나 많이 잘 대기 시켜줄 수 있느냐도 중요하다.
메모리는 일을 쌓아두는 임시 창고 같은 곳이다. 그래서 그 창고의 크기가 중요한 것이고,
또 그래서 CPU는 속도가 중요하며, 메모리는 크기가 중요하다.
사실 메모리를 많이 쓰게 되면 속도는 빨라질 수 있는데, 창고가 크다고 해서 일처리가 느리다면 메모리만 많다고 일이 빨라지는 것은 아닐 것이다. 전체 컴퓨터 성능에는 영향을 미친다. 메모리가 많아야 하는 경우는 어떤 경우일까? 일처리를 빨리만 해야 한다면 사실 CPU의 성능이 중요할텐데, 메모리가 많아지면 성능이 좋아질 수 있는 경우는 많은 양의 데이터를 한꺼번에 메모리에 올려 실행하는 프로그램이 있는 경우이다. 대표적인 것이 게임이다. 최근 게임들을 보면 용량이 엄청 크다. 그래픽 사양도 높다. 한꺼번에 메모리에 올려야 할 파일도 많아진다. 그리고 여러개의 작업을 동시에 많이 하는 경우라면 메모리가 많이 필요하다. 이유는 메모리에 여러개의 프로그램의 일부분이 올라가기 때문이다.
# 캐시(Cache)의 개념
캐시 되어 있어서 빠른거야 라는 말을 들어본 적 있을 것이다.
캐시는 잠시 저장해둔다는 의미이고, 기능이다.
캐시 메모리라고 하면 실제 메모리와 CPU 사이에서 빠르게 전달을 위해서 미리 데이터들을 저장해두는 좀더 빠른 메모리이다.
네트워크에서 캐시는 로컬에 파일을 미리 받아놓고, 그 내용을 보거나 웹서버에서도 매번 로딩을 해야 하는 파일들을 미리 로딩해두고, 응답을 주기도 한다. 데이터 베이스를 매번 확인해야 하는것도 캐시서버를 이용한다면 빠른 응답을 해줄 수 있다.
데이터를 고속으로 엑세스 할 수 있다는 장점이 있다.
치명적인 단점도 있긴한데, 특성을 알고 사용하기 때문에 단점이라고 말할 수 없지만) 캐시 서버 또는 캐시 메모리 등 캐시가 붙은 기능에 저장된 데이터는 지워질 수 있다는 것을 전제로 한다. 영구적 메모리 공간이 아니다. 언제든 지워질 수 있고, 그것을 당연시 생각하고 프로그램 또는 서버를 개발해야 한다. 그리고 캐시는 되도록 빈도수가 높은 것들 위주로 데이터량이 많지 않은 것이 좋다. 캐시메모리 서버 등 캐시가 붙은 장치는 비싸다. 물론 상대적으로 말이다. 그래서 이곳에 모든 데이터를 넣고, 서비스를 할 생각은 말아야 한다.
#레지스터
레지스터란?
- CPU에 존재하는 다목적 저장 공간
- 데이터와 명령어를 저장하는 역할을 한다.
캐시와 레지스터의 공통점으로는 '어떤 명령어나 데이터를 저장해두는 저장 공간'
차이점은
캐시는 cpu와 별도로 있는 공간이며, 메인 메모리와 cpu 간의 속도 차이를 극복하기 위한 것이라는 것이고
레지스터는 cpu 안에서 연산을 처리하기 위하여 데이터를 저장하는 공간 이라는 것.
# 버스 🚌
버스는 두 종류가 있다.
- Internal Bus(내부 버스)
: 프로세서 내부에서 레지스터, 연상장치를 연결, 외부버스(External bus)와 연결
- External Bus(외부 버스)
: 프로세서와 메모리, 프로세서와 입출력장치, 입출력장치와 입출력장치를 연결.
#Memory
주기억 장치 : 연산 속도를 더 빨리 하려는 메모리
보조 기억 : 더 많은 테이터를 저장하려는 메모리
메모리는 여러가지 종류를 나눌 수있는데, 억세스 방식으로도 구분할 수 있다.
랜덤 억세스, 시퀀셜, 다이렉트
시퀀셜 방식으로 처음엔.. 순차적으로 저장되어 있는걸 가져올 때는 좋은데,
여기저기 산재되어 있는 데이터는 힘들다. 순차적으로, 정렬되어있는 무언가를 처리할 때는 좋다. 그래서 백업 같은 곳에서 자주 쓰인다. 예시를 들자면 시퀀셜은 아파트 한 층에 한 집만 있는 것. 엘베가 수직으로 왔다갔다 하는데 10층까지 가려면 1층부터 하나하나 다 열리면서 10층까지 열리고 다시 내려갈때도 하나하나 내려가는 것이다.
우선 시퀀셜과 다이렉트 이 두 방식의 차이점은 데이터를 일차원상에 나열했나, 이차원상에 나열했나? 이다.
한 방향으로 데이터를 찾아가는 시퀀셜 방식보다 이차원 상에서 두방향으로 찾아가는 다이렉트가 더 좋다.
다이렉트는 모두 다 아는 디스트 형식으로 생겼다.
섹터와 섹터 안의 트랙으로 이루어진 디스크가 몇번째 섹터, 몇번째 트랙으로 이동하자! 하고 이동한다.
아까와 같은 예시로 한 층마다 몇 집이 있는데, 거기서 버튼을 누르면 엘베가 거기까지 쭉 오고, 가다가 다른 층 사람이 또 버튼 누르면 거기도 가고 이런 방식. 근데 이것도 느린것 같아서 랜덤 억세스 방식(R-A-M-)을 고안했다.
랜덤 억세스 방식은, 몇층 몇호를 가야하면 거기 밧줄이 있어서 그대로 쭉 가고 내려갈 수 있는 방식이다.
속도가 가장 빠른데, 뭐 단점이라면 당연히 뒤로 갈수록 비싸다는거 ㅎㅎ
이상 시험기간에 정리겸 써본 글!
'💻 컴퓨터 시스템' 카테고리의 다른 글
컴퓨터에서의 정수표현 (부호있는 정수, 2의 보수) (0) | 2021.07.20 |
---|---|
가상메모리, 페이징, 세그멘테이션, 페이지교체 알고리즘 (0) | 2021.07.20 |
메모리 Memory (0) | 2021.07.20 |
OS, 스케쥴링 알고리즘 (0) | 2021.07.20 |
객체지향, 오버로딩과 오버라이딩의 차이, 생성자 (1) | 2021.07.20 |
댓글