Skip to content

Latest commit

 

History

History
190 lines (104 loc) · 17.5 KB

컴퓨터 구조 기초.md

File metadata and controls

190 lines (104 loc) · 17.5 KB

// 2022.07.28 // Ayden

컴퓨터 구조 기초

스크린샷 2022-07-28 오전 2.11.32.png

Microprocessor Cache


  • 일단 Processor가 뭘까?

    Process는 어떠한 일에 있어 그를 세분화 하여 진행 하는 절차 Processor는 그럼 그 일을 하기 위한 장치(기본적인 명령어들을 처리하는 논리 회로).

MPU(Micro Processor Unit = Microprocessor)란?

컴퓨터 중앙 처리 장치(CPU)의 핵심 기능을 통합한 집적 회로(IC). 마이크로 프로세서는 즉 Micro(작게) 쪼개어 일을 처리 하는 Unit(장치)를 말함.

컴퓨터의 핵심 기능인 주어진 기계어를 해석하고, 연산을 수행하는 기능만 가지고 있는 프로세서(연산에 특화).

컴퓨터의 CPU 또한 마이크로프로세서라 불리며, 개별적으로는 연산만 가능할 뿐 저장장치 (RAM, ROM), 출력장치(I/O포트) 등의 주변 장치가 없으면 작동 불가능.

  • 마이크로 프로세서 구성

    제어장치 : 명령어를 해석하여 레지스터나 연산장치를 제어한다.

    연산장치 : 덧셈, 뺄셈 등 사칙연산과 AND, OR와 같은 논리연산 등을 담당하며 제어장치의 제어를 받는다.

    레지스터 : 소량의 데이터를 임시 저장하는 공간이다.

💡 중요! **MCU(Micro Controller Unit)**와의 차이! : `MCU`는 **CPU의 기능을 하는 핵심 장치와 그 주변 장치들을 포함하고 있는 통합형 칩셋**입니다. 그렇기 때문에 이 소형(Micro) 칩(Unit) 하나만으로 LED나 센서와 같은 다른 부품들을 제어(Controller) 할 수 있다.

MCU와는 달리 MPU는 컴퓨터의 핵심 기능인 주어진 기계어를 해석하고, 연산을 수행하는 기능에 중점을 두고 있다. 그렇기 때문에 MPU는 RAM, ROM , I/O 등의 주변 장치를 추가해주지 않으면 작동을 하는 것이 불가능하다.

즉, MCU가 하나의 컴퓨터를 소형화 시켜놓은 칩이라면, MPU는 단지 CPU 그 자체만을 소형화시켜 놓은 칩인 셈.

그래서 일반적으로 개인용 컴퓨터, 워크스테이션 등에서 사용되는 중앙 처리장치는 CPU라고 부르고, 전자기기나 산업용 장비에 쓰이는 소형화 된 CPU는 MPU라고 부릅니다.


Untitled

Cache란?

주기억 장치(Main Memory)와 중앙처리장치(CPU) 사이에 있는, CPU가 데이터를 처리할 때 자주 사용하는 데이터를 임시 보관하는 곳.

⇒ 고속 버퍼 메모리 : 일시적으로 데이터를 저장하여 주변기기의 데이터 처리 속도가 CPU보다 늦어서 생기는 차이를 보충해주는 부품.

자주 접속하는 데이터나 프로그램 명령을 이 캐시 메모리에 넣어 놓으면 중앙처리장치가 명령을 내릴 때 주기억장치로 가기 전에 캐시 메모리로 먼저 가서 필요한 프로그램 사용할 수 있도록 한다.

캐시 메모리의 용량이 작으면 CPU에 비해 동작 속도가 훨씬 느린 주 기억장치(RAM, 메모리)나 보조 기억 장치(하드디스크, CD-ROM, SSD 등)로부터 직접 데이터를 불러들이는 빈도가 높아지는데, 이런 경우 컴퓨터의 전반적인 처리 속도가 크게 저하된다. 결론적으로 CPU의 캐시 메모리는 크면 클수록 성능 향상에 유리하다.

캐시 메모리도 레벨이 있어서 L1, L2, L3 등으로 나뉩니다. L1은 CPU와 가장 가까이 있으며 속도가 가장 빠릅니다. 숫자가 커질수록 CPU와도 멀어지고, 속도도 느려지지요. 따라서 데이터 처리에 필요한 명령이 들어오면 제일 먼저 L1의 데이터를 찾아보고, 없으면 L2, L3으로 가는 형식이다.

요청된 데이터가 캐시 안에서 발견되는 경우를 '캐시 히트(cache hit)'라고 하고, **캐시 내에 없을 때는 '캐시 미스(cache miss)'**라고 한다. 캐시 히트가 높을수록 컴퓨터의 처리속도가 향상된다. 만일 자주 가는 홈페이지가 있으면 그 주소를 캐시가 기억하고 있을 것이다. 이후 같은 홈페이지에 접속하게 되면 캐시 안의 홈페이지 데이터를 발견하는 캐시 히트가 일어나기 때문에 더 빠르게 홈페이지에 접속할 수 있게 되는 것이다.

Memory Bus란?

**버스(Bus)**는 컴퓨터 ****안의 부품들 간에, 또는 컴퓨터 간에 데이터와 정보를 전송하는 통로(통신 시스템)이다.

메모리와 다른 장치를 이어주는 통로메모리 버스(memory bus)라고 한다.

💡 데이터를 찾을 때, MPU에 요청 → MPU가 Cache에 데이터가 있는지 데이터 주소를 보냄 → Cache에 있으면 Cache Hit되어 MPU에게 데이터 전달 / Cache에 없으면 Cache Miss되어 Memory와 연결된 Memory Bus를 타고 Memory에게 데이터 주소 전달 → 데이터 찾으면 다시 이 과정 거쳐 MPU에게 전달 → 이 과정에서 Cache Memory에 데이터가 업데이트 됨.

스크린샷 2022-07-28 오전 2.29.24.png

Virtual Memory(Memory Management)


Virtual Memory(가상 메모리)란?

프로그램이 실행되기 위해서는 보조기억장치(HDD, 하드 디스크)에 저장되어 있는 프로그램의 데이터들을 주기억장치(RAM, 램)로 가져와야 한다.(이 과정을 “적재” 또는 “로딩”이라고 함.)

하지만, 다음과 같은 두 가지 상황에서는 주기억장치 공간의 부족으로 인해 모든 데이터들이 주기억 장치로 이동할 수 없다(프로그램이 제대로 실행되지 x).

  1. 프로그램 전체의 크기가 주기억장치보다 큰 경우

    스크린샷 2022-07-28 오전 2.33.44.png

  2. 여러 개 프로그램을 실행할 경우 그 프로그램들 크기가 주기억장치보다 큰 경우

    스크린샷 2022-07-28 오전 2.34.13.png

이와 같이 프로그램의 크기가 주기억장치의 용량보다 큰 상황에서는 가상 메모리(virtual memory)가 필요하다.

Untitled

가상메모리를 사용하는 시스템은 여러 프로그램이 동시에 실행되는 것처럼 보여도 어느 한 순간에는 한 개의 프로그램만 실행되고, 한 프로그램내에서도 그중 일부만 실행하기 때문에 당장 실행에 필요한 부분만 주기억장치에 저장하고, 나머지는 그대로 보조기억장치에 두고 실행함으로써 실제의 메모리 용량보다 큰 프로그램이나 여러 개의 프로그램을 실행할 수 있도록 해줍니다.

게임을 하거나 프로그램을 실행시키면 '로딩중'이라고 뜨는 것을 볼 수 있다. 또는 그런 메세지가 뜨지 않더라도 실행 명령을 내린 이후 실제로 프로그램이 열리기까지 약간의 시간이 소요된다. 이 때가 바로 보조기억장치에 있던 데이터들을 나누고, 선별해서 필요한 데이터만 주기억장치로 불러들이는 시간이라고 할 수 있다.

컴퓨터는 각 프로그램을 일정한 크기로 나누어서 관리하기 때문에, 프로그램 전체 크기가 크더라도 지금 당장 필요한 부분만 주기억장치에 넣어(A1을 넣음) 실행한 뒤 나머지는 보조기억장치에 둔다. 필요한 부분이 바뀌면 그 부분만 다시 주기억장치로 불러들인다.

이때, 실행할 프로그램을 일정한 크기의 작은 단위로 나눈 것을 **페이지(page)**라 하고 주기억장치를 동일한 크기로 나눈 것을 **페이지 프레임(page frame)**이라 하며, 페이지 단위로 주기억장치에 올리는 기법을 **페이징(paging)**이라고 한다.

**페이지 테이블(page Table)**은 각각의 페이지가 메모리의 어느 페이지 프레임에 저장될지 주소를 가지고 있고, CPU에게 알려준다(CPU는 원하는 데이터가 메모리의 어디에 있는지 모르기 때문에). 페이지 테이블은 가상 주소와 물리 주소를 매핑하는 테이블이다.

이 정보를 이용해 가상기억장치의 주소를 주기억장치의 주소로 변환하는 작업을 **매핑(mapping)**이라고 한다.

MMU는 뭐야?

Memory Management Unit.

논리 주소(가상 주소)를 물리 주소로 변환해주며 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해주는 하드웨어.

가상 메모리의 논리 주소를 가지고 실제 데이터가 담겨 있는 곳에 접근하기 위해서는 빠른 물리 주소로의 변환이 필요한데, 이를 MMU가 도와준다.

TLB는 MMU에서 사용하는 캐싱 역할을 하는 메모리다.

  • 🤔 물리 주소, 가상 주소가 뭐야?
    • Physical Address : 물리적 주소는 실제 하드웨어 부품인 RAM 칩에서 사용하는 실질적 주소를 의미한다.
    • Logical Address : 가상 주소(Virtual Address)라고도 불리우는 논리적 주소는 물리적으로 존재하는 주소는 아니지만 메모리를 안전하게 관리하기 위해서 사용된다.
    • 구분 짓는 이유
      • 논리적 주소의 탄생 이전, 프로그램은 실제 물리적 주소를 사용했었다. 유저는 컴퓨터 사용시 보통 둘 이상의 프로그램들을 함께 돌린다. 각각의 프로그램이 유효한(사용 가능한) 주소만 사용하면 평화롭고 지속적으로 컴퓨터를 사용 가능하지만 문제는 서로 다른 프로그램이 동일한 주소를 사용하려 할 때 발생한다.
        • 메모리 보호의 필요성 : 프로그램의 프로세스들이 안전하게 격리되어 운용되도록 해야함.
        • 읽기/쓰기 보호의 필요성 : 읽기와 쓰기 가능/불가능 영역의 구분이 필요함.

스크린샷 2022-07-28 오전 3.23.50.png

어떻게 Virtual Address → Physical Address?

  • 일단, 왜 변환이 필요해?

스크린샷 2022-07-28 오전 3.25.17.png

스크린샷 2022-07-28 오전 3.25.32.png

스크린샷 2022-07-28 오전 5.02.57.png

3. TLB란?

CPU가 어떤 정보가 필요할 때 가상 주소를 가지고 페이지 테이블에게 물어봄 → 가상 주소에 해당하는 물리 주소를 가지고 메모리에 접근함.

⇒ 이 과정에서 CPU 내부적으로 사용하는 캐시가 바로 ‘TLB ’. TLB는 자주 사용하는 가상 주소에 대한 물리 주소를 이미 가지고 있다. Page Table에 cache 개념을 적용한 것.

만약 A라는 프로세스에서 페이지 테이블에 A-1(가상 주소) = 1(물리 주소), A-2 = 2 라고 가상 주소에 대한 물리 주소가 매핑되어있다고 하자. → CPU가 A-2에 대한 정보를 가져오려고 한다. → 페이지 테이블에서 A-2를 확인하고 메모리의 실제 주소가 2번이라는 것을 확인하고 → 메모리의 2번 주소에 접근해 그 정보를 가져오게 된다.

But, TLB를 사용하게 되면 A-2 = 2번이라는 걸 이미 저장하고 있어서 → CPU에서 TLB 주소를 바로 가서 2번 주소를 확인 후→ 바로 메모리의 2번 주소로 간다. ⇒ 페이지 테이블을 참조하지 않게 된다!

흐름 설명(가상 주소를 가지고 물리 주소를 가져올 때)

MPU(in CPU)에서 Virtual Address(가상 주소)가 있는지 TLB에 물어봄 → TLB에 미리 저장해놓은 해당 가상 주소와 매핑된 물리 주소가 있다면 바로 물리 주소를 가지고 메모리에 접근함 / TLB에 없다면 페이지 테이블에 물어봄 → 페이지 테이블에 가상 주소와 매핑된 물리 주소가 있다면 TLB에 업데이트 후, 물리 주소를 가지고 메모리에 접근함 / 페이지 테이블에 없다면 메모리에도 없다는 뜻. 보조 기억 장치에서 가상 주소에 대한 물리 주소의 위치를 불러와 메모리에 올린 후, 페이지 테이블과 TLB에 업데이트하고, 물리 주소로 접근함.

스크린샷 2022-07-28 오전 3.25.48.png

ㅇㅇㅇㅇ

스크린샷 2022-07-28 오전 3.26.08.png

Reference

MPU, MCU 참고 글

캐시 메모리 참고 글

가상 메모리 참고 글

MMU 참고 글

페이지 테이블 참고 유튜브 ⭐️ 강추!!

TLB, MMU 참고 유튜브 ⭐️ 강추!!

+) 프로세스 참고 글