System

CPU, GPU, RAM - CPU Instruction Cycle, Bus System

Ohs_ 2021. 1. 2. 17:03

CPU, GPU, RAM

입력장치로 부터 연산을 하고 그 결과를 출력장치를 보내는 역할을 하는 컴퓨터의 핵심 장치이다. 컴퓨터에서 사용되는 핵심 장치들을 크게 나누면 보조기억장치(HDD, SSD), 주기억장치(RAM), 중앙처리장치, 그래픽처리(CPU, GPU)가 있다. 보조기억장치는 데이터들을 저장하기 위한 장치로 비휘발성이다. 주요 장치들 중에서 처리속도가 가장 느리지만 저장 가능 용량이 가장 높다. 주기억장치는 보조기억장치에 있는 파일을 불러올 때 잠시 담아두는 공간으로 휘발성이다. 즉, 컴퓨터가 실행되는 동안에는 해당 공간에 담아진 데이터들이 남아있지만 전원이 꺼지면 없어진다. 잠깐이나마 유지시킬 수 있는 방법들이 있지만 그 또한 완전한 데이터를 기대할 수는 없고 일시적이다. 주요 연산장치는 CPU와 GPU가 있다. GPU는 우리가 잘아는 그래픽카드로 그래픽과 관련된 작업과 행렬처리 등을 빠르게 연산한다. CPU는 사칙연산과 논리연산을 빠르게 수행한다.

디지털 포랜식, 침해사고 분석등을 수행할 때 분석 대상 PC가 활성, 비활성에 따라 수집방법과 난이도가 크게 달라진다. 여기서 활성 상태는 사고가 발생한 상황 그대로 컴퓨터가 꺼지지않고 유지된 상태이다. 이때는 RAM에 적재된 메모리가 살아있기 때문에 프리패치 분석, 메모리 분석 등 사고 당시에 대한 여러 정보들을 수집할 수 있다. 비활성 상태는 PC가 꺼진 상태로 이때는 RAM에 남아있는 자료가 없기 때문에 디스크 이미징을 통해 최대한 사고 PC에 대한 무결성을 유지하며 데이터를 확보해야할 필요가 있다. 디스크 이미징은 디스크를 단순히 복사하는 것과 다르다. 디스크를 복사하는 행위를 디스크 카피라고 하는데 이때 디스크 카피와 디스크 이미징의 가장큰 차이는 원본 디스크와 해쉬값이다. 디스크 이미징의 경우 원본 디스크와 해시값이 같다. 즉, 디스크를 완전히 같은 상태로 만드는 것이다. 하지만 디스크 카피는 원본 디스크와 해시값이 다르다. 원본 디스크와 같은 내용을 복사하지만 내부적으로 봤을 때는 새로운 파일이 생성된 것이다.

CPU와 GPU는 최근 빅데이터 분석과 데이터마이닝, 딥러닝, 머신러닝 등의 분야의 핵심 장치이다. 연산과 관련된 만큼 고성능의 CPU와 GPU를 사용할 수록 모델이 학습하는 시간을 단축시킬 수 있다. 또한 데이터 마이닝, 빅데이터 처리 등에서 빠른 속도로 처리가 가능하다. 최근에는 분산처리 시스템(하둡, 스파크 등)을 이용하여 빠른 빅데이터 처리를 할 수있는 오픈소스가 있다.

 

CPU의 구성요소

구성요소 상세 기능
ALU(연상장치) 여러 산술 연산과 논리 연산을 수행한다. 여기서 산술 연산은 [+, -, *, /]를 의미하고 논리 연산은 [and, or, xor 등]을 의미한다.
Registeer(레지스터) CPU내부에서 소규모의 데이터나 값을 저장해두는 공간이다. 컴퓨터 기억장치 중에서 가장 빠른 처리속도를 갖고있다.
Control Unit(제어 장치) 프로그램의 코드를 해석하고, 실행하기 위한 제어 신호들을 발생시킨다.
내부 CPU 버스 ALU와 레지스터 사이의 통로이다.

 

레지스터의 종류

종류 주요 기능
PC(Program Count) 다음에 수행할 명령어가 저장된 주기억장치의 주소를 지정한다.
MAR(Memory Address Register) 주기억장치에 접근하기 위한 주기억장치의 주소를 기억한다.
MBR(Memory Buffer Register) 주기억장치에 입/출력할 자료를 기억한다.
IR(Instruction Register) 주기억장치에서 인출한 명령코드를 기억한다.

 

버스 시스템(Bus System)

버스는 시스템에 많은 장치를 공유하여 데이터, 주소, 제어 정보를 전달하는 전송 라인이다. 즉, 주기억장치와 중앙처리장치 사이에서 데이터가 오고가는 통로로 한정된 자원이다. 한정된 자원인 버스를 획득하기 위해 경합이 많이 발생하게 되고 버스 영역을 어떻게 사용하는지에 따라 입출력 성능이 달라지게 된다.

버스 시스템(Bus System)

버스 종류

종류 내용
데이터 버스(Data Bus) 시스템 컴포넌트 간 데이터를 전송하기 위한 용도이다. 컴포넌트는 컴퓨터가 업무를 수행하기 위해 독립적인 행위이다.
주소 버스(Address Bus) 기억장치의 위치와 장치를 식별하기 위한 라인이다. 해당 라인의 비트 수에 따라 접속될 수 있는 장치의 용량이 결정된다.
제어 버스(Control Bus) CPU와 기억장치 또는 입출력 장치 사이에 제어 신호를 전송하는 라인이다.

 

CPU 명령 실행 주기(IInstruction Cycle)

CPU 명령 실행 주기는 하나의 명령이 실행된 후 다음 명령이 실행되고 끝날 때 까지 걸리는 시간이다. CPU는 명령이 들어오면 인출, 해독, 피연산자 인출 ,실행 , 결과 저장 등의 일련의 과정들을 반복한다.

단계 동작 설명
1. 인출(Instruction Fetch) 인출단계는 메모리에서 데이터를 로드하여 CPU에 있는 레지스터에 적재하는 과정이다.
2. 간접(Indriect) 메모리를 참조할 때 간접주소 방식을 사용하는 경우에 실행한다. 간접 주소는 CPU가 메모리를 참조했을 때 해당 데이터가 있는 것이 아닌 데이터의 주소가 있는 경우를 간접 주소라고 한다. 직접 주소를 사용할 때 보다 속도가 느리지만 중앙처리에서 한번에 받을 수 있는 길이의 데이터를 주기억장치가 넘겨주기 때문에 나눠서 줘야할 데이터도 한번에 줄 수 있다.
3. 실행(Execution) 명령과 데이터로 CPU가 산술 및 논리연산을 수행한다.
4. 인터럽트(Interrupt) 컴퓨터 작동 중 예기치 못한 오류가 발생해도 계속 가동할 수 있도록 해주는 운영체제의 한 기능이다. 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눠진다.

 - SVC 하드웨어 인터럽트 : 기계착오 인터럽트, 외부 인터럽트, 입출력 인터럽트, 프로그램 검사 인터럽트
 - 소프트웨어 인터럽트 : CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생

 

반응형