캐시와 레지스터의 차이가 무엇일까요???



 캐시와 레지스터의 차이가 무엇일까요???

컴퓨터에 대한 지식은 공부를 아무리 많이해도 어렵고 잘 와닿지 않는 것 같습니다. 
캐시와 레지스터에 대한 차이가 무엇인지 갑자기 궁금해져서 포스팅을 하게 되었습니다. 



캐시란?

- 컴퓨터 시스템의 성능을 향상시키기 위해 주로 CPU 칩 안에 포함되는 빠르고 작고 매우 비싼 메모리 

- 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템(MMU)이 내부적으로 제어한다.

- 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.

(위키 백과에서는 디스크 캐시와 기타 다른 캐시가 있는 것으로 보여지지만 이 포스팅에서는 cpu에 관련된 캐시만 다루겠습니다)


레지스터란?

- 레지스터는 CPU에 존재하는 다목적 저장 공간

- 레지스터는 데이터와 명령어를 저장하는 역할을 한다. 

- Register는 Flip Flop의 집합이며, 이 Flip Flop이라는 것은 각각 1bit의 정보를 저장할 수 있는 것들을 의미.
결국 n-bit Register라는 것은 n bit의 정보를 저장할 수 있는 -> 결국 n개의 Flip Flop으로 이루어진 -> Flip Flop의 Group을 말하는 것입니다.

- 레지스터는 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억 장소이다. 일반적으로 현재 계산을 수행중인 값을 저장하는 데 사용된다. 대부분의 현대 프로세서는 메인 메모리에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후 그 내용을 다시 레지스터에서 메인 메모리로 저장하는 로드-스토어 설계를 사용하고 있다. 레지스터는 메모리 계층의 최상위에 위치하며, 가장 빠른 속도로 접근 가능한 메모리이다. 최신 프로세서에서 레지스터는 대개 레지스터 파일로 구현되지만, 과거에는 플립플롭, 마그네틱 코어, 박막 필름 메모리 등으로 구현되기도 했다.

레지스터의 종류

데이터 레지스터 : 정수 값을 저장할 수 있는 레지스터.
주소 레지스터 : 메모리 주소를 저장하여 메모리 접근에 사용되는 레지스터. 어떤 프로세서에서는, 주소를 저장하는 것이 아니라 조작하기 위한 목적으로 색인 레지스터를 사용하기도 한다.
범용 레지스터 : 데이터와 주소를 모두 저장할 수 있는 레지스터.
부동 소수점 레지스터 : 많은 시스템에서 부동소수점 값을 저장하기 위해 사용된다. 
상수 레지스터 : 0이나 1 등 고정된 값을 저장하고 있는 레지스터. 
특수 레지스터 : 프로그램의 상태를 저장한다. 프로그램 카운터, 스택 포인터, 상태 레지스터 등이 있다. 
명령 레지스터 : 현재 실행중인 명령어를 저장한다. 
색인 레지스터 : 실행중에 피연산자의 주소를 계산하는 데 사용된다.


캐시와 레지스터의 공통점으로는 '어떤 명령어나 데이터를 저장해두는 저장 공간' 이라고 볼 수 있습니다.
차이점은 아래와 같이 정의할 수 있을 것 같습니다. 
캐시는 cpu와 별도로 있는 공간이며, 메인 메모리와 cpu 간의 속도 차이를 극복하기 위한 것이라는 것이고
레지스터는 cpu 안에서 연산을 처리하기 위하여 데이터를 저장하는 공간 이라는 것입니다. 


- 출처- 
https://namu.wiki/w/%EC%BA%90%EC%8B%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC 
http://jh8992.tistory.com/entry/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0Register-1%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0%EB%9E%80 
http://recipes.egloos.com/4972694 
https://ko.wikipedia.org/wiki/프로세서_레지스터