컴퓨터 구조 기초

전지성·2023년 12월 28일

CS 지식

목록 보기
1/1

Microprocessor Cache

MPU

정의 : MPU(Micro Processor Unit)는 컴퓨터 시스템에서 중앙 처리 장치(CPU)의 역할을 수행하는 집적 회로입니다. MPU는 프로그래밍된 명령어를 해석하고 실행하여 데이터를 처리하고 저장하는데 사용됩니. 컴퓨터나 기타 전자 장치의 두뇌로 생각할 수 있으며, 다음과 같은 기능 수행합니다.

기능 :

  1. 명령어 해석 및 실행: MPU는 기계어로 작성된 프로그램 명령어를 읽고 해석한 후, 이에 따라 연산을 수행합니다.
  2. 데이터 처리: 수학적 연산, 논리 연산, 데이터 이동 등 다양한 종류의 데이터 처리 작업을 수행합니다.
  3. 메모리 관리: 메모리에 데이터를 저장하고 읽는 것을 관리합니다. 이는 메모리 주소를 통해 이루어집니다.
  4. 입출력 관리: 외부 장치와의 데이터 교환을 관리합니다. 이를 위해 입출력 포트를 사용하거나, 다른 커뮤니케이션 인터페이스를 통해 작동합니다.
  5. 클록 관리: MPU는 클록 신호를 기반으로 동작합니다. 클록은 MPU의 작업 속도를 결정합니다.

특징

  1. 외부 메모리 필요성: 대부분의 MPU는 내장 메모리가 제한적이거나 전혀 없어, 작업을 수행하기 위해 외부 RAM (Random Access Memory)에 의존합니다. RAM은 프로그램 코드와 작업 데이터를 저장하는 데 사용됩니다.
  2. 입출력 장치 의존성: MPU는 스스로 사용자와 직접적인 상호작용을 할 수 없습니다. 따라서, 키보드, 마우스, 디스플레이, 네트워크 인터페이스 등과 같은 외부 입출력 장치가 필요합니다.
  3. 보조 저장 장치 연결: MPU는 데이터를 장기간 저장할 수 없으므로, 하드 드라이브, SSD, 플래시 메모리와 같은 보조 저장 장치가 필요합니다.
  4. 전원 관리: MPU는 별도의 전원 관리 시스템이 필요합니다. 이는 안정적인 전원 공급과 열 관리를 위해 필수적입니다.
  5. 시스템 버스 연결: MPU는 시스템 버스를 통해 다른 하드웨어 구성 요소와 통신합니다. 이 버스는 데이터, 주소, 제어 신호 등을 전달합니다.
  6. 주변 장치와의 인터페이스: 다양한 주변 장치와의 호환성을 위해, MPU는 여러 인터페이스 표준을 지원해야 합니다 (예: USB, HDMI, PCIe).
  7. 클록 신호 의존성: MPU는 외부에서 제공되는 클록 신호에 의존하여 동작합니다. 이 클록 신호는 MPU의 작동 속도를 결정합니다

캐시(Cache)

정의

캐시는 MPU와 메인 메모리 사이에서 데이터와 명령어를 일시적으로 저장하는 고속 버퍼입니다. 이는 MPU가 반복적으로 접근하는 데이터를 빠르게 제공함으로써, 메인 메모리로부터 데이터를 가져오는 데 걸리는 시간을 줄입니다. 캐시 시스템은 크게 캐시 메모리와 캐시 컨트롤러로 구성됩니다.

기능

캐시 메모리의 기능

  1. 데이터 저장: 자주 사용되는 데이터와 명령어를 임시 저장하여 MPU가 빠르게 접근할 수 있도록 합니다.
    1. ex) CPU가 1,000,000 bps 이고 Memory가 1 bps라 하자.CPU에서 Memory로 바로 1,000,000 bit 데이터를 보내려면 1,000,000초가 걸린다.(병목현상)하지만 1,000bps Cache를 사용하면CPU -> Cache : 1000초Cache -> Memory : 1000초CPU에서 Cache로 데이터를 보내면서 Cache에서 Memory로 데이터를 보낼 수 있기 때문에 "시간단축"의 효과를 가진다
  2. 속도 향상: 메인 메모리에 비해 훨씬 빠른 접근 속도를 제공함으로써 전반적인 컴퓨팅 속도를 향상시킵니다.
  3. 계층화: 캐시 메모리는 다양한 수준(L1, L2, L3)으로 구성되어, 데이터 접근 시간을 최적화합니다.

캐시 컨트롤러의 기능

  1. 주소 변환: MPU로부터 받은 주소를 캐시 메모리의 주소로 변환합니다.
  2. 캐시 히트/미스 결정: 요청된 데이터가 캐시에 있는지 확인하고, 캐시 히트 또는 미스를 판단합니다.
  3. 데이터 관리: 캐시 미스 발생 시, 메인 메모리에서 데이터를 가져와 캐시를 업데이트합니다.
  4. 캐시 교체 알고리즘 실행: 캐시의 저장 공간이 모두 사용됐을 때, 어떤 데이터를 제거할지 결정합니다.
  5. 쓰기 정책 관리: 캐시에 저장된 데이터가 메인 메모리에 언제 그리고 어떻게 반영될지 결정합니다.

캐시의 특징

  1. 속도: 캐시는 MPU가 메인 메모리보다 훨씬 빠르게 데이터에 접근할 수 있게 해 줍니다.
  2. 크기와 비용: 캐시 메모리는 메인 메모리보다 작고, 비용이 더 많이 듭니다.
  3. 위치: 캐시는 MPU에 매우 가깝게 위치하여 빠른 데이터 전송을 가능하게 합니다.
  4. 효율성: 캐시 시스템은 시스템의 성능을 크게 향상시키지만, 관리가 복잡하고 정교한 알고리즘이 필요합니다.
  5. 일관성: 멀티코어 프로세서에서는 캐시 일관성을 유지하기 위해 추가적인 메커니즘이 필요합니다.
  6. 에너지 소비: 캐시는 시스템의 에너지 효율성을 향상시키는 데 기여할 수 있습니다

Memory Bus

메모리 버스는 컴퓨터 시스템 내에서 데이터를 전송하는 통로로, 마이크로프로세서(MPU), 캐시, 그리고 메인 메모리 간의 데이터와 명령어를 전달하는 데 사용됩니다.

메모리 버스의 정의

메모리 버스는 일련의 전기적 신호선으로 구성된 시스템 버스의 한 부분입니다. 이는 메모리 컨트롤러와 메인 메모리 사이의 인터페이스를 제공하며, 때로는 MPU와 메모리 사이에 직접적인 연결을 제공하기도 합니다.

메모리 버스의 기능

  1. 데이터 전송: 메모리 버스의 주요 기능은 MPU와 메인 메모리 간, 또는 캐시와 메인 메모리 간의 데이터 전송을 가능하게 하는 것입니다.
  2. 주소 지정: MPU가 메모리에 접근할 때, 메모리 버스는 MPU로부터 전송된 주소 정보를 메모리 컨트롤러로 전달합니다.
  3. 제어 신호 전달: 메모리 읽기와 쓰기 작업을 제어하는 신호들도 메모리 버스를 통해 전송됩니다.
  4. 동기화: 메모리 버스는 시스템 클록에 동기화되어, 데이터 전송이 안정적으로 이루어지도록 합니다.

메모리 버스의 특징

  1. 폭(Bandwidth): 메모리 버스의 폭은 동시에 전송할 수 있는 데이터 비트 수를 의미합니다. 폭이 넓을수록 더 많은 데이터를 한 번에 전송할 수 있습니다.
  2. 속도(Frequency): 버스의 속도는 시스템 클록의 속도에 따라 결정되며, 이는 전송할 수 있는 데이터의 양을 결정합니다.
  3. 대역폭(Bandwidth): 메모리 버스의 데이터 전송 속도는 대역폭으로 측정됩니다. 이는 버스의 폭과 클록 속도에 의해 결정되며, 단위 시간당 전송할 수 있는 최대 데이터 양을 나타냅니다.
  4. 지연 시간(Latency): 데이터가 MPU로부터 메모리로, 또는 그 반대로 전송되기까지의 시간입니다.
  5. 타입: 메모리 버스는 병렬 또는 직렬 방식으로 데이터를 전송할 수 있습니다. 병렬 버스는 한 번에 여러 비트를 전송하는 반면, 직렬 버스는 비트를 차례로 전송합니다.
  6. 호환성: 메모리 버스는 다양한 메모리 타입과 호환되어야 하며, 때로는 메모리의 종류에 따라 다른 특성을 가질 수 있습니다.

메모리 버스의 설계와 성능은 컴퓨터의 전체적인 성능에 중대한 영향을 미칩니다. MPU의 빠른 처리 능력을 충분히 활용하기 위해서는 메모리 버스가 충분한 대역폭과 낮은 지연 시간을 제공해야 합니다.

Main Memory

메인 메모리는 컴퓨터 시스템의 핵심 구성 요소로, 실행 중인 프로그램의 코드와 현재 처리 중인 데이터를 저장합니다.

메인 메모리의 정의

메인 메모리는 일반적으로 휘발성 메모리인 RAM (Random Access Memory)으로 구성되어 있으며, 시스템의 중앙처리장치(CPU)가 직접 접근할 수 있는 메모리입니다. 컴퓨터가 켜져 있는 동안 데이터를 유지하며, 전원이 꺼지면 저장된 정보는 사라집니다.

메인 메모리의 기능

  1. 데이터 저장: 현재 실행 중인 모든 프로그램과 프로세스의 데이터와 명령어를 저장합니다.
  2. 데이터 접근: CPU는 메인 메모리로부터 명령어와 필요한 데이터를 읽고, 처리 결과를 메모리에 다시 쓰기를 수행합니다.
  3. 데이터 전송: 메모리 버스를 통해 데이터와 명령어를 CPU와 주고받습니다.

메인 메모리의 특징

  1. 휘발성: 메인 메모리는 전원이 공급되는 동안에만 데이터를 유지합니다. 전원이 꺼지면 데이터는 손실됩니다.
  2. 임의 접근: 메인 메모리는 임의 접근이 가능하며, 데이터는 메모리 내의 어떤 위치에서나 거의 동일한 시간 안에 접근할 수 있습니다.
  3. 속도: 메인 메모리는 하드 드라이브나 SSD와 같은 보조 저장 장치보다 빠르지만, CPU의 레지스터나 캐시 메모리보다는 느립니다.
  4. 용량: 메인 메모리의 용량은 시스템에서 동시에 실행할 수 있는 프로그램의 양과 성능에 영향을 미칩니다.
  5. 동적: 메모리는 동적으로 할당되고 회수됩니다. 운영체제의 메모리 관리 시스템은 프로세스와 프로그램에 메모리를 할당하고 회수하는 작업을 합니다.
  6. 공유 자원: 시스템의 모든 프로세스와 하드웨어 장치는 메모리 자원을 공유합니다.

메인 메모리의 성능과 용량은 컴퓨터의 전반적인 성능에 중요한 영향을 미치며, 충분한 메모리가 없을 경우 시스템의 반응성과 멀티태스킹 능력이 저하될 수 있습니다. 최신 컴퓨팅 환경에서는 메인 메모리의 크기를 증가시켜 더 많은 양의 데이터와 복잡한 프로그램을 빠르게 처리할 수 있도록 하고 있습니다.

Virtual Memory(Memory Management)

MMU (Memory Management Unit)

정의:

MMU는 컴퓨터 하드웨어의 일부로, CPU에 의해 생성된 가상 메모리 주소를 물리적 메모리 주소로 변환하는 역할을 합니다.

기능:

  • 주소 변환: 프로세서가 사용하는 가상 주소를 실제 물리적 주소로 매핑합니다.
  • 메모리 보호: 각 프로그램이 자신에게 할당된 메모리 영역만을 사용하도록 보장합니다.
  • 캐시 관리: 더 빠른 접근을 위해 자주 사용되는 데이터의 주소 변환 결과를 저장합니다.

특징:

  • 투명성(Transparency): 프로그램은 메모리 관리의 복잡성을 신경 쓸 필요 없이, 가상 주소를 통해 데이터에 접근할 수 있습니다.
  • 효율성(Efficiency): 자주 사용되는 주소 변환 정보를 캐싱하여 성능을 향상시킵니다.

가상 메모리 (Virtual Memory)

정의:

가상 메모리는 컴퓨터 시스템의 메모리 관리 기술로, 프로그램이 실제 물리적 메모리 용량보다 더 큰 주소 공간을 사용할 수 있게 해줍니다. 이 기술은 메모리의 일부를 디스크에 파일 형태로 저장함으로써 구현됩니다.

기능:

  • 주소 공간의 확장: 프로그램이 필요로 하는 메모리가 실제 물리적 메모리보다 클 때, 가상 메모리는 디스크의 일부를 이용하여 이를 해결합니다.
  • 메모리 보호: 각 프로세스는 독립된 메모리 공간을 가짐으로써 다른 프로세스의 메모리 공간에 무단으로 접근하는 것을 방지합니다.
  • 데이터 관리: 가장 자주 사용되지 않는 데이터를 디스크로 이동시키고, 필요할 때 다시 물리적 메모리로 불러옵니다.

특징:

  • 스왑아웃(swap out) 및 스왑인(swap in): 물리적 메모리 공간을 효율적으로 사용하기 위해, 시스템은 사용 빈도가 낮은 페이지를 디스크로 이동시키고(스왑아웃), 필요한 페이지를 물리적 메모리로 불러옵니다(스왑인).

  • 페이징(paging)과 세그멘테이션(segmentation): 가상 메모리는 주로 페이지 또는 세그먼트라는 고정된 크기의 블록으로 나누어 관리됩니다.

스왑인과 스왑아웃 / 페이징과 세그멘테이션은 다른 글에서 더 자세히 설명하도록 하겠습니다.

CPU에서 시작하여 디스크까지 이르는 메모리 접근 과정

  • CPU는 가상 주소(V.A)를 생성하여 MMU에 전달합니다.
  • MMU는 TLB에서 해당 가상 주소에 대한 물리 주소 변환을 검색합니다.
  • TLB에 해당 주소가 존재하면(TLB hit), 변환된 물리 주소(P.A)를 사용하여 캐시에서 데이터를 찾습니다.
  • TLB에 주소가 없으면(TLB miss), MMU는 페이지 테이블에서 변환을 수행합니다.
  • 캐시에서 해당 데이터를 찾으면(cache hit), CPU는 데이터를 사용합니다.
  • 캐시에서 데이터를 찾지 못하면(cache miss), 주 메모리에서 데이터를 검색합니다.
  • 주 메모리에도 데이터가 없으면(main memory miss), 최종적으로 디스크에서 데이터를 가져와야 합니다.
profile
끝 없는 도전으로 성장하고 싶은 앱(swift/flutter) 개발자입니다.

0개의 댓글