레지스터
레지스터는 CPU가 연산을 위해 명령어와 데이터를 저장하는 위한 임시 저장 장치이다.
CPU 안에는 목적에 따라 여러가지 레지스터들이 존재한다.
﹒프로그램 카운터(PC, Program Counter)
﹒명령어 레지스터(IR, Instruction Register)
﹒메모리 주소 레지스터(MAR, Memory Address Register)
﹒메모리 버퍼 레지스터(MBR, Memory Buffer Register)
﹒플래그 레지스터(FR, Flag Register)
﹒범용 레지스터
﹒필요에 따라 누산기, 기억 레지스터, 주소 레지스터, 색인 레지스터 등의 기능을 수행
﹒스택 포인터(SP, Stack Pointer)
﹒베이스 레지스터(BR, Base Regiester)
레지스터의 이름은 제조사마다 이름과 역할이 상이하다. 따라서 자세한 내용을 알기 위해서는 해당 CPU와 어셈블리 코드를 직접 확인해봐야 한다. 다음 링크에서 ARM과 x86 레지스터에 대한 추가적이 자료를 확인할 수 있다.
ARM과 x86 레지스터 추가자료
캐시 메모리
범용 컴퓨터는 대부분 메모리 계층 구조(Memory Hierarchy)로 설계되어 있다. 일반적으로 메모리의 속도와 가격은 비례하기 때문에, 비용을 최소화하면서 성능과 용량을 높이기 위해서 위와 같은 구조를 사용한다.
흔히 메모리라고 부르는 것은 실제로 RAM을 의미한다. RAM은 휘발성 메모리이기 때문에 전원 공급이 없어지면 내부 데이터도 사라진다. 따라서 데이터를 영구적으로 혹은 반영구적으로 저장하기 위해서는 HDD나 SSD와 같은 보조기억장치에 저장해야한다. 또 다른 메모리인 ROM은 비휘발성 메모리로서 주로 BIOS와 같은 펌웨어를 저장한다.
프로그램을 실행하게 되면 먼저 보조기억장치에서 해당 프로그램을 RAM으로 가져온다. CPU는 보조기억장치에 접근하지 않고 상대적으로 빠른 RAM에 접근하여 명령어와 데이터를 레지스터로 가져와서 연산을 수행한다.
이처럼 프로그램을 실행하기 위해 CPU는 RAM과 끊임없이 데이터를 주고받아야한다. 하지만 CPU의 속도에 비해 RAM의 속도는 느리기 때문에, CPU가 메모리에 계속 접근을 하면 병목 현상이 발생하고 그만큼 성능이 저하된다.
이를 해결하기 위해 RAM 보다 속도가 빠른 캐시 메모리에 데이터를 미리 가져오는 방법을 사용한다.
일반적인 메모리는 DRAM으로 설계되어 있으며, 캐시 메모리는 DRAM보다 속도가 빠른 SRAM으로 설계되어 있다.
캐시 메모리 또한 비용 대비 성능을 향상시키기 위해 계층 구조로 설계되어 있다. 계층 구조로 설계된 캐시 메모리에는 CPU와 가까운 순서로 L1, L2 그리고 L3 캐시가 있다.
캐시 메모리는 메모리에 있는 모든 내용을 저장할 수는 없기 때문에 메모리가 보조기억장치에서 필요한 부분만 가져와서 사용하는 것처럼, 메모리의 일부를 가져와서 사용해야한다. 이 때 캐시 메모리는 CPU가 사용할 만한 대상을 예측하여 저장한다. 캐시 메모리는 지역성의 원리를 기준으로 데이터를 예측하여 저장하며, 예측이 들어맞는 경우를 캐시 히트(Cache Hit)라고 하며, 들어 맞지 않는 경우를 캐시 미스(Cache Miss)라고 한다.
결론
레지스터와 캐시 메모리는 둘 다 CPU가 연산을 하기 위해 명령어와 데이터를 저장하는 공간이다.
레지스터는 CPU가 가장 빠르게 접근이 가능한 저장 공간이며, CPU 내부에 위치한다.
캐시 메모리는 메모리 접근 속도를 향상시키기 위해 중간 버퍼역할을 하는 저장 공간이다. 일반적으로 L1 캐시와 L2 캐시는 코어 내부에 위치하며, L3 캐시는 코어 외부에 위치한다.
'Books' 카테고리의 다른 글
[혼공컴운] CPU 성능 향상을 위한 설계 기법에는 무엇이 있나요? (1) | 2023.11.24 |
---|---|
[혼공컴운] ALU와 CU의 차이가 무엇인가요? (1) | 2023.11.24 |