CPU의 구조와 메모리 계층(Memory hierarchy)

Computer Engineering

  • CPU의 구조

    • CU(Control Unit)

      • Instruction code(machine code) execution(0과 1의 코드를 실행)
    • ALU(Arithmetic Logic Unit)

      • +, -, *, /, &, |, ^의 연산, 비교 수행
    • Register(레지스터)

    1. General Purpose Register(범용 레지스터)

      • AX, BX, CX 등등 데이터를 일시적으로 저장
    2. PC(Program Counter)

      • 다음에 실행될 인스트럭션이 메인 메모리에서 저장된 곳의 주소값을 저장하는 레지스터
    3. IR(Instruction Register)

      • CU가 현재 실행 중인 인스트럭션 자체가 저장된 레지스터

      • CU가 이 곳을 참조하여 실행

    4. Stack Pointer

      • stack frame을 생성하고 stack segment의 맨 꼭대기(Top)를 가리킴
    5. Base Pointer(Frame Pointer)

      • stack frame 내에서 변수(데이터, 메모리)에 접근하는 기준점
  • CPU와 Memory(RAM) 관계

    • CPU와 Memory(RAM) 사이에는 address bus, control bus, data bus로 연결되어 있다.

    • bit 수에 따라 address bus와 data bus의 수가 결정된다.

    • address bus를 통해 주소를 메모리에 전송하면, 메모리는 지정된 주소의 데이터를 data bus에 실어보낸다.

    • Memory(RAM)는 위에서부터 code, data, heap, stack 공간으로 이루어져 있다.

    • 메모리 자체 내에서 연산이 수행되서 들어가는 것이 아니다.

    • 범용 레지스터 AX, BX에서 연산한 것을 한번 더 AX에 저장한 후, RAM으로 가져오는 것이다.

  • Instruction 의미

    1
    기계어 <--mapping--> 어셈블리어
    • ex) C code를 기계어로 변환한 것

    • RISC(Reduced Instruction Set Computer)

      • 기계어와 어셈블리어 매칭이 1:1
    • CISC(Complex Instruction Set Computer)

      • 기계어와 어셈블리어 매칭이 비슷
  • Clock(클럭)

    • Instruction을 실행하거나 실행되고 있는 시간

    • GHz = 주파수(frequency)

    • 주기(Period) = 1/주파수 = sec/cycle

    • Rising Edge(상승 에지)가 없으면 데이터를 보낼 수 없다.

    • CPI(Clock Cycles Per Instruction)

      • 인스터럭션 당 걸리는 수
  • Stack Segment

    • Stack Pointer - esp

      • 스택 영역의 맨 꼭대기(Top)를 가리킨다.
    • Base Pointer(Frame Pointer) - ebp

      • 스택 프레임 기준(가운데)을 가리킨다.

      • 함수 안에 있는 값을 접근할 때 Base Pointer를 기준으로 접근한다.

    • 함수가 호출될 때

      • 최초에 함수가 호출되면 frame이 깨지지 않기 위해 미리 공간을 확보한다.

      • stack segemet에서는 메모리가 거꾸로 쌓이기 때문에 주소값에 마이너스를 해야 공간이 늘어난다.

      • 함수가 끝나고 다시 호출되었던 자리로 돌아가기 위해 Return Address(ret)도 stack에 쌓아둔다.

  • Memory hierarchy(메모리 계층)

    • 계층 순위

      1. Register

      2. Cache

      3. Memory(RAM)

      4. Hard Disk(HDD)

    • 사이클

      • Register <-- 1 cycle --> 다른 Register

      • Register <-- 3 cycle --> Cache

      • Register <-- 20 100 - cycle --> Memory(RAM)

      • Register <-- 500,000 - 5,000,000 cycle --> HDD

    • 요즘에는 SSD도 있지만, 메모리 계층에서는 HDD와 SSD가 동급이다.

    • 계층 순위가 올라갈수록 빠르고, 용량이 적으며, 값이 비싸다.

    • 반드시 HDD -> Memory -> Cache -> Register 순으로 저장된다.

    • HDD에서 Register로 한번에 가져올 수는 없다.

    • Memory(RAM)에도 buffer, Cache라는 공간이 있어서, HDD, SSD에서 가져온 값을 담아둘 수 있다.

  • Cache에 대해

    • Principle of locality
    1. Temporal locality(시간 지연성)

      • 한번 접근한 메모리에 자주 접근
    2. Spatial locality(공간 지연성)

      • 접근하는 메모리가 이전에 접근한 메모리의 근처일 확률이 높음
    • Cache line

      • CPU가 Cache한테 데이터를 요청했을 때, 그 주변 데이터를 모두 가져옴(64 ~ 128byte)
    • Cache Hit

      • CPU가 요청한 데이터가 Cache에 있을 때
    • Cache miss

      • CPU가 요청한 데이터가 Cache에 없을 때 메모리를 다시 가져와야 하는 상황
    • Cache Memory

      • L1, L2, L3로 이루어짐

      • 속도는 L1 > L2 > L3

      • 용량은 L1 < L2 < L3

      • 요즘 Cache L1은 CPU 안에 있다.

Share