본문 바로가기
메모/ETC

CS - CPU와 메모리

by 구너드 2023. 10. 20.

CPU

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

데이터는 이진수(011010..)로 표시되며 RAM에서 CPU로 전달.

각 실행 작업은 모든 작업의 작은 부분일 뿐이므로 CPU는 다음에 어떤 실행이 나올지 인지해야함.

명령어는 프로그램 카운터(PC)에 의해 보관됩니다. 그런 다음 PC와 명령문은 IR(지침 레지스터)에 배치.

 

2. 디코딩(Decoding)

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

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

-> 디코딩

 

3. 실행(Execute)

디코딩된 명령문은 완료될 CPU의 관련 부분으로 전송

대개 CPU 레지스터에 기록되며, 이 레지스터는 이후 명령문에 의해 참조 가능

 

 

레지스터 

연산에 필요한 데이터를 저장하고 빠른속도로 접근할 수 있는 저장공간

1.범용 레지스터 - 연산에 필요한 데이터나 연산 결과를 임시로 저장

2.특수목적 레지스터 - 특별한 용도로 사용되는 레지스터

  • 메모리 주소 레지스터 - 주기억장치의 주소 저장
  • 프로그램 카운터 - 다음에 수행할 명령어의 주소 저장
  • 명령어 레지스터 - 실행중인 명령어 저장
  • 메모리 버퍼 레지스터 - 주기억장치에서 읽어온 데이터, 저장할 데이터를 임시 저장
  • 누산기 - 연산 결과를 임시 저장

제어장치(CU)

명령어를 실행하는 순서를 제어하고 스케줄링

제어부 - 주기억장치에 저장된 명령어를 순서대로 호출하여 해독하고 제어 신호를 발생시켜 각 장치가 동작하도록 제어

내부버스 - 기억,연산,제어 기능을 실현하기 위한 CPU와 주기억장치, 입출력장치,외부 기억 장치, 주변 장치, 통신 처리 장치등의 제어부 사이를 연결

 

연산장치(ALU)

논리연산 수행

산순 논리 장치라고 불리기도 하며 산술연산, 논리연산을 계산하는 디지털 회로


CPU 동작 방식

기계어(0,1) -> 하드웨어적으로 CPU가 해독할 수 있는 어셈블리어 -> 인간이 인지 가능한 변환한 프로그래밍 언어 

기계어(저장공간) - 어셈블리어(CPU) - 프로그래밍 언어

  1. 명령어 인출 - CU가 수행할 명령어 정보를 가져옴
  2. 명령어 해독 - 인출한 명령어 정보를 opcode라고 하는 명령어 코드로 인출하고 해당 opcode의 성격에 맞게 레지스터 동작
  3. 해독된 명령을 수행
  4. 수행한 결과를 실제로 반영하면서 사이클 종료

클럭 

  • CPU 내부에서 일정한 주파수를 가지는 신호로, 이를 통해 모든 명령어가 동작
  • 1헤르츠라면 1초에 한 번의 주기, 1기가 헤르츠라면 1초에 1 기가(1024 메가), 대략 10억번의 명령어 처리
  • 4.5Ghz = 초당 약 45억번의 명령어 처리 가능
  • 클럭 주파수가 높을수록 제한된 시간 내에 더 많은 명령을 처리할 수 있음

코어

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

메모리

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

캐시메모리

전원이 꺼지면 삭제되지만 CPU와 가장 가깝기에 빠르게 조회할 수 있는 저장 공간

CPU 구성에 존재하는 캐시메모리는 L1 메모리. 해당 메모리 그룹에 속한 캐시메모리는 L2,L3로 CPU와는 별개로 구성

L2,L3 - CPU와 별도의 공간, 메인 메모리와 CPU 간의 속도차이를 극복하기 위한 것

CPU 레지스터 - CPU 내부에서 연산 처리를 위해 데이터를 저장하는 공

 

주기억장치

메인 메모리, RAM

RAM은 DRAM과 SRAM이 존재하는데 주기억장치는 보통 DRAM을 지칭

컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리(전원이 꺼지면 캐시와 마찬가지로 모두 삭제)

보조기억장치보다 접근 속도가 빠름

 

보조기억장치

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

전원이 꺼지더라도 비휘발성 메모리의 특징을 가지고 있음


CPU와 메모리 

동작 순서

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

 

구조

 

1. 하버드 구조

  • 명령어 메모리 = 프로그램에서 사용할 명령어를 모아둔 메모리
  • 데이터 메모리 = 명령어들로 사용될 메모리
  • ALU = 데이터를 가지고 명령어를 읽어서 연산 수행
  • 장/단점
    • 장점 : 메모리가 두개이기 때문에 역할이 나누어져 있으며 속도가 빠름
    • 단점 : 구성이 많기 때문에 비싸며, 복잡한 구성으로 고장이 날 확률이 높음

2. 폰노이만 구조

  • 보조기억장치에서 데이터들이 CPU에서 연산되기 위해서 하나의 메모리에 올라감
  • 제어장치는 산술논리장치에 데이터가 메모리 어디에 위치한지 알려주는 역할
  • 프로그램 메모리와 데이터 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있음. 이로인해서 병목현상 발생.

 

개선된 구조

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

'메모 > ETC' 카테고리의 다른 글

CS - 메모리  (1) 2023.10.23
CS - CPU, Scheduling  (1) 2023.10.21
TDD, 프로세스/쓰레드  (0) 2023.09.25
Entity, Dto, Vo  (0) 2023.08.10
클러스터, 클러스터링  (2) 2023.08.08