CPU 와 메모리

more·2023년 8월 17일
0

CPU와 메모리

컴퓨터의 구성

입출력 장치

  • 컴퓨터와 사용자간의 의사소통 창구
  • 입력 장치
    • 사용자 -> 컴퓨터
    • 명령을 하거나, 데이터를 입력 => 명령 실행, 저장, 변경 등
    • 종류 : 키보드, 마우스, 터치스크린, 마이크, 스캐너, 카메라 등..
  • 출력 장치
    • 컴퓨터 -> 사용자
    • 데이터나 처리 결과를 출력 (보여주거나 들려줌)
    • 종류 : 모니터, 스피커, 프린터 등…

CPU

  • 명령에 대한 작업을 수행하는 처리장치
    - 구성 : 산술논리 연산장치(ALU), 제어 장치 (제어부(CU)와 내부 버스), 레지스터, 캐시 메모리(L1)

  • 산술논리 연산장치(ALU)

    • 논리연산(덧셈,뺄셈,비교연산) 수행
    • 산술연산과 논리 연산을 계산하는 디지털 회로
  • 제어 장치

    • 명령어를 실행하는 순서를 제어하고 스케쥴링
    • 제어부 (CU)
      • 주기억 장치에 저장되어 있는 명령어를 순서대로 호출하여 해독하고, 제어 신호를 발생시켜 컴퓨터의 각 장치를 동작하도록 하는 장치
    • 내부 버스
      • 기억, 연산, 제어 기능을 실현하기 위한 CPU와 주기억 장치, 입출력 장치, 외부 기억 장치, 주변 장치, 통신 처리 장치 등의 제어부 사이를 연결하는 버스
      • 버스 : 컴퓨터 안의 부품들 간에, 또는 컴퓨터 간에 데이터와 주소, 제어 신호 등 정보를 전송하는 통로
  • 레지스터

    • 연산에 필요한 데이터를 저장하고 빠른속도로 접근할 수 있는 저장공간
    • 프로세서 레지스터 : 프로세서에 위치한 고속 메모리로 극히 소량의 데이터나 처리 중인 중간 결과와도 같은 프로세서가 바로 사용할 수 있는 데이터를 담고 있는 영역
      • 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
      • 특수목적 레지스터
        • 메모리 주소 레지스터: (MAR) : 읽고 쓰기 위한 주기억장치의 주소를 저장
        • 프로그램 카운터 (PC) : 다음에 수행할 명령어의 주소를 저장
        • 명령어 레지스터 (IR) : 현재 실행 중인 명령어를 저장
        • 메모리 버퍼 레지스터 (MBR) : 주기억장치에서 읽어온 데이터나 저장할 테이터를 임시로 저장
        • 누산기 (AC, ACCUMULATOR) : 연산 결과를 임시로 저장
  • 동작 : 기계어(저장공간) > 어셈플리어(CPU) > 프로그래밍 언어(사람)

    • 사이클 : 명령어 인출 -> 명령어 해독 -> 실행 -> 반영
  • 성능 결정하는 부분

    • 클럭

      • CPU 내부에서 일정한 주파수를 가지는 신호, 모든 명령어가 동작되게 되게 함
      • 1Hz(헤르츠)면 1초에 한 번의 주기. 1기가 헤르츠라고 하면 1초에 1기가만큼(1024메가), 즉 10억 번 정도
        • 예를 들어 4.5GHz라는 것은 초당 45억 번의 명령어를 처리할 수 있다는 뜻
      • 따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 할 수 있음
    • 코어

      • 코어는 중앙처리 장치 역할을 하는 블록
      • 즉, 멀티 코어들은 싱글 코어에 비해서 마치 여러 개의 CPU가 작동하듯이 많은 연산을 빠르게 병렬 처리 가능

메모리

  • 레지스터 = CPU

  • 캐시메모리(SRAM) : 컴퓨터 시스템 향상을 위해서 CPU와 주기억장치 사이에 있는 아주 작은 비싼 메모리 (CPU에 있는 L1과는 다름)

    • L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상
    • L2,L3 캐시메모리 vs CPU 레지스터
      • L2, L3 캐시메모리는 CPU와 별도의 공간, 메인 메모리와 CPU 간의 속도차이를 극복하기 위한 것
      • CPU 레지스터는 CPU안에서 연산을 처리하기 위하여 데이터를 저장하는 공간
  • 메인 메모리(DRAM) = 주 기억장치 : 전원이 꺼지면 지워지지만 조금더 빠르게 조회할 수 있는 저장공간 (휘발성 메모리)

    • 데이터를 유지하고 싶을 경우에는 데이터를 하드디스크에 저장
    • 모든 프로그램은 컴퓨터에서 실행되기 위해 메모리의 일부를 사용
    • SRAM vs DRAM

      • SRAM(Static RAM)

        • 정적 메모리
        • 전원 공급이 되는 동안은 기록된 내용이 지워지지 않기 때문에 재충전이 필요 X
        • 접근 속도가 빠르고 가격이 비싸다는 특징이 있으며 주로캐시메모리, 레지스터로 사용
      • DRAM(Dynamic RAM)

        • 동적 메모리
        • 전원이 계속 공급되더라도 주기적으로 재충전되어야 기억된 내용을 유지
        • 주로 대용량의 기억장치에 사용되며 가격이 저렴
        • 주로 RAM이라고 표현하는 것(주기억장치)은 거의 DRAM
  • 하드디스크(HDD) = 보조 기억장치 : 컴퓨터 전원이 꺼져도 지워지지 않는 저장공간 (비휘발성)

  • 데이터와 프로그램을 반영구적으로 저장

CPU 와 메모리의 구조

  • 하버드 구조
    • 명령어 메모리 = 프로그램에서 사용할 명령어를 모아둔 메모리
      • 명령어 메모리 -> 제어장치 : 명령어 대한 정보를 보내줌
    • 데이터 메모리 = 명령어들로 사용될 메모리
    • ALU = 데이터를 가지고 명령어를 읽어서 연산 수행
    • 장/단점
      • 장점 : 메모리가 두개이기 때문에 역할이 나누어져 있으며 속도가 빠르다.
      • 단점 : 구성이 많기 때문에 비싸며, 복잡한 구성으로 고장이 날 확률이 높다

  • 폰노이만 구조
    • 보조기억장치에서 데이터들이 CPU에서 연산되기 위해서 하나의 메모리에 올라감
    • 제어장치는 산술논리장치에 데이터가 메모리 어디에 위치한지 알려주는 역할
    • 프로그램 메모리와 데이터 메모리가 구분되어 있지 않고 하나의 버스를 가짐 -> 병목현상
    • 병목 현상 : 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상 (입구가 좁으면 물이 느리게 빠지는 것)

  • 개선된 구조
    • 하버드 구조 + 폰노이만 구조
    • CPU의 캐시 메모리 형상에 관여
    • CPU 내부 - 하버드 : CPU 내부에 캐시를 둬서 RAM과 CPU 간의 속도 차이를 줄이려고 노력
    • CPU 외부 - 폰노이만 : 메모리 하나에 하나의 버스를 가지는 구조이기 때문에 병목현상이 아직까지는 존재

  • 최근 이슈
    • M1 : 장치간의 거리도 짧고 통합 메모리 구조를 가졌기에 CPU의 효율을 극대화
      • 하나의 칩 형태로 나왔기에 RAM(주 기억장치)을 추가 한다던지의 자유도는 매우 떨어지고
      • 사전에 정해진 형태로만 메모리간에 통신하기 때문에 메모리별 최적화가 적용되어있는 일부 프로그램은 동작 X

CPU 동작

  1. 데이터를 가져오기(Fetch)

    데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달. 각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 알아야 함

    명령어는 프로그램 카운터(PC)에 의해 보관 -> PC와 명령문은 IR(지침 레지스터)에 배치

    PC 길이는 다음 명령문의 주소를 참조하기 위해 증가

  2. 디코딩(Decoding)

    명령을 가져와 IR에 저장하면 CPU는 명령 해독기라는 회로로 명령을 전달

    명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환

  3. 실행(Execute)

    마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송

    결과는 CPU 레지스터에 기록, 이 레지스터는 이후 명령문에 의해 참조

    ex) 계산기의 메모리 기능

profile
조금 더

1개의 댓글

comment-user-thumbnail
2023년 8월 17일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기