Computer Science 기초_ CPU와 메모리

hoy_·2023년 8월 17일
0

Computer Science 기초

목록 보기
1/2


▶ 입출력장치

  • 입력장치 : 사용자는 입력 장치들을 통해 컴퓨터에게 명령을 요청하거나 데이터를 입력
  • 출력장치 : 사용자에게 명령이나 데이터를 입력할 수 있는 화면을 보여주거나 명령에 대한 처리결과를 보여주거나 들려줌


▶ CPU

  • 구성
    • 연산장치 (ALU) : 덧셈, 뺄셈같은 산술연산과 논리 연산을 계산하는 디지털 회로
    • 제어장치 (CU) : 명령어를 실행하는 순서를 제어하고 스케쥴링
    • 제어부 : 주기억 장치에 저장되어 있는 명령어를 순서대로 호출하여 해독하고, 제어 신호를 발생시켜 컴퓨터의 각 장치를 동작하도록 하는 장치
    • 내부버스 : 기억/연산/제어 기능을 실현하기 위한 CPU와, 주기억 장치/입출력 장치/외부 기억 장치/주변 장치/통신 처리 장치 등의 제어부 사이를 연결하는 버스
    • 레지스터 : 연산에 필요한 데이터를 저장(처리할 명령어를 저장)하고 빠른속도로 접근할 수 있는 저장공간

      👉 특수목적 레지스터
      - 메모리 주소 레지스터 : (MAR) : 읽고 쓰기 위한 주기억장치의 주소를 저장
      - 프로그램 카운터 (PC) : 다음에 수행할 명령어의 주소를 저장
      - 명령어 레지스터 (IR) : 현재 실행 중인 명령어를 저장
      - 메모리 버퍼 레지스터 (MBR) : 주기억장치에서 읽어온 데이터나 저장할 테이터를 임시로 저장
      - 누산기 (AC, ACCUMULATOR) : 연산 결과를 임시로 저장


  • 동작
    • 기계어(저장공간) > 어셈플리어(CPU) > 프로그래밍 언어(사람)
    • CPU가 명령어를 읽고 수행하는 동작
    • 명령어 인출: CU가 이번에 수행할 명령어 정보를 가지고 옴
    • 명령어 해독: 보통 opcode라고 하는 명령어 코드를 인출하고 opcode의 성격에 맞게 레지스터들을 준비
    • 실행
    • 반영

  • 성능
    • 클럭 : CPU 내부에서 일정한 주파수를 가지는 신호로, 이 신호로 모든 명령어가 동작. 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치
    • 코어 : 중앙처리 장치 역할을 하는 블록. 멀티 코어들은 싱글 코어에 비해서 마치 여러 개의 CPU가 작동 하듯이 많은 연산을 빠르게 병렬 처리.




▶ 메모리

  • 레지스터 = CPU
  • 캐시메모리(SRAM), 메인 메모리(DRAM) = 주기억장치
  • 하드디스크(HDD) = 보조 기억장치

  • 캐시메모리
    • 컴퓨터가 전원이 꺼지면 지워지지만 제일 빠르게 조회할 수 있는 저장공간
    • 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상
    • L2, L3 캐시메모리는 CPU와 별도의 공간이며, 메인 메모리와 CPU 간의 속도차이를 극복하기 위한 것이다!


  • 주기억장치(메인메모리 = 주기억장치 = RAM)
    • 컴퓨터가 전원이 꺼지면 지워지지만 조금더 빠르게 조회할 수 있는 저장공간
      (컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리)
    • RAM은 Random Access Memory의 약자
    • RAM은 DRAM과 SRAM이 있는데 주기억장치는 주로 DRAM을 의미
    • 모든 프로그램은 컴퓨터에서 실행되기 위해 메모리의 일부를 사용
    • CPU가 사용하기 좋도록 각종 정보를 임시 저장하는 휘발성 장치
    • SRAM🏎️ vs DRAM 🚌

  • 보조기억장치
    • 컴퓨터 전원이 꺼져도 지워지지 않는 저장공간
    • 우리가 설치하는 모든 프로그램이나 파일들은 이곳에 반영구적으로 저장

SRAM🏎️ - Static RAM

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

DRAM🚌 - Dynamic RAM

  • 동적 메모리
  • 전원이 계속 공급되더라도 주기적으로 재충전되어야 기억된 내용을 유지할 수 있음
  • 주로 대용량의 기억장치에 사용되며 가격이 저렴함
  • 주로 RAM이라고 표현하는 것(주기억장치)은 거의 DRAM을 가리킴



▶ CPU와 메모리

  • 동작
    - 주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다
    - CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억 장치에 저장한다
    - 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력시킨다
    - CPU 내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어한다

👉 데이터를 가져오기, 디코딩, 실행

  1. 데이터를 가져오기(Fetch)
    데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달됩니다. 각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 알아야 합니다.
    명령어는 프로그램 카운터(PC)에 의해 보관됩니다. 그런 다음 PC와 명령문은 IR(지침 레지스터)에 배치됩니다.
    그리고 PC 길이는 다음 명령문의 주소를 참조하기 위해 증가됩니다.

  1. 디코딩(Decoding)
    일단 명령을 가져와 IR에 저장하면 CPU는 명령 해독기라는 회로로 명령을 전달합니다.
    명령어는 CPU의 다른 부분으로 전달하여 작동을 위해 전달되는 신호로 변환됩니다.
    이것을 디코딩이라고 합니다.

  1. 실행(Execute)
    마지막 단계에서 디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송됩니다.
    결과는 대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조될 수 있습니다.
    계산기의 메모리 기능처럼 생각하시면 쉽게 이해하실 수 있습니다.



▶ CPU와 메모리 구조

  • 폰노이만 구조

    • 장점 : 하나의 메모리로 가지게 되므로 CPU코에서 공간을 적게 차지한다.
    • 단점 : 병목현상이 일어남.
      데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조 때문에 CPU가 명령어와 데이터에 동시 접근할 수 없음




  • 하버드 구조

    • 장점 : 명령을 메모리로부터 읽는 것과 데이터를 메모리로부터 읽는 것을 동시에 할 수 있음 = 속도가 빠르다
    • 단점 : 두개의 버스와 메모리를 가지게 되므로 CPU코어에서 공간을 많이 차지한다. = 비용↑, (복잡한 구조)고장날 확률↑



현재는?

CPU의 외부적으로는 폰 노이만 구조, 내부적으로는 하버드 구조를 적용하여 속도를 향상시킨 것이 많다.
그러나 이것 또한 폰노이만 구조를 기반으로 만들어진 것이기 때문에, 병목현상만 어느 정도 해결할 뿐 메모리 속의 프로그램을 순차적으로 실행하는 근본적인 구조 자체는 변하지 않는다.

  • CPU 내부 - 하버드 : CPU 내부에 캐시를 둬서 RAM과 CPU 간의 속도 차이를 줄이려고 노력
  • CPU 외부 - 폰노이만 : 메모리 하나에 하나의 버스를 가지는 구조이기 때문에 병목현상이 아직까지는 존재한다.
profile
배우는 사람

0개의 댓글