컴퓨터공학 공부

컴퓨터공학 공부 다시 시작하기 5주차 - 레지스터와 프로그래밍 이해, CPU 파이프라인 이해, CISC/RISC CPU 이해와 컴퓨터 구조 정리

개발학생 2024. 10. 20. 23:07
반응형

1. 레지스터와 프로그래밍 이해

Instruction Set와 코드

Software: Code+Data

- Software Engineer: Code를 작성하는 사람

- Machine language: CPU는 Instruction code를 만들어놓고 제공함

- 컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러를 통해 CPU가 제공하는 Instruction code를 기반으로 변환됨 

- 이제부터는 하드웨어를 고려하지 않고 코드레벨에 집중

Operation Operation Code Assembly Language
Load 10h LOD
Store 11h STO
Add 20h ADD
Substract 21h SUb

Instruction Code를 약자로 만들기라도 하면! 

LOD A, [1003h]

- LOD는 10h의 Instruction Code를 나타내는 약자

- A는 accumulator를 나타내는 약자

=> 1003h 주소에 있는 데이터를 로드해서 accumulator에 넣으라는 의미

 

주소도 약자로 만들기

BEGIN: LOD A, [1005h] - 코드 재작성시 주소가 변경되므로 이름을 붙임

- 고급 언어에서는 함수와 변수에 이름을 붙이는 작업이 됨

출처: 온라인 강의

다시 이해하는 폰 노이만 구조(현 컴퓨터 구조)

- Controller Unit: Program Counter

- ALU: 가산기+논리연산+Register

- 코드만 알맞은 주소에 써넣으면 원하는 대로 동작함! 

컴퓨터의 CPU 기본 구조

CPU에서 레지스터라는 저장 공간: 빠른 실행

- PC(Program Counter): 다음 실행할 명령어 주소를 가리키는 레지스터

- IR(Instruction Register): 가장 최근에 인출한 명령어 보관하는 레지스터

- 누산기(ACC, Accumulator): 데이터 일시 보관하는 레지스터

- MAR(Memory Address Register): CPU가 메모리 참조하기 위해 보관하는 데이터 주소를 가진 레지스터

- MBR(Memory Buffer Register): CPU가 메모리로부터 읽거나 저장할 데이터 자체를 보관하는 레지스터 

2. CPU 파이프라인 이해

현 컴퓨터의 CPU 기본 실행 구조

1. Instruction Fetch: 실행할 명령어를 메모리에서 읽어 CPU로 가져옴

- PC가 가리키는 주소를 MAR에 보냄

- MAR에 적힌 주소를 메모리에서 읽어서 MBR에 보냄

- MBR에 있는 명령어를 IR에 저장

- 다음 명령어를 가리키도록 PC는 주소값 증가

2. Instruction Decode: 인출한 명령어에 포함된 데이터 가져오고 명령어 해독

3. Instruction Execution: 명령어 실행

- MBR의 데이터와 ACC(Accumulator)의 데이터로 연산 후 ACC에 저장

4. Write Back: 실행 결과를 저장 

*CPU보다 방식은 조금씩 다를 지라도, 기본적으로 한 명령은 opcode+argument(operand) 구조

- 3E는 사전에 약속된 load 명령이며, 이 때 바로 이어지는 데이터는 operand

- load 명령에서 operand는 데이터가 있는 주소
  => 데이터를 operand 주소로부터 가져와서 약속된 레지스터에 저장

CPU 성능을 높이는 기법 - 파이프라인

- 파이프라인: 하나의 작업에 필요한 일을 세부적으로 나누어서 동시에 다른 세부작업을 실행하는 기법

하나의 명령을 실행하는 데 필요한 세부작업

- 명령어 인출(IF: Instruction Fetch)

- 명령어 해독(ID: Instruction Decode): 인출된 명령어 해석

- 오퍼랜드 인출(OF: Operand Fetch): 메모리에서 명령어 인출

- 명령어 실행(EX: Excute)

- 하나의 명령 실행 시 5 cycle

  => cycle: 1개 세부작업을 할 때의 시간 단위

       -> 1Hz: 1 cycle / sec

       -> 최초 인텔 CPU 4004: 108,000 cycles / sec (108 Kilo Hertz, KHz)

       -> 108,000 / 5 cycle(한 명령 실행 시간): 초당 21600 명령 실행

출처-온라인 강의

*인텔 보안 패치 성능 저하 이슈?

- 파이프라인을 타고 실행이 되다가, 보안에 이슈가 있으면 전체 실행 취소가 됨

   -> 그때까지 순서대로 실행되고 있는 다른 코드들도 다 실행 취소가 되며, 그만큼 CPU 사용을 낭비하게 됨

3. CISC/RISC CPU 이해와 컴퓨터 구조 정리

CPU 명령어를 정의하는 전략 - CISC vs RISC 

CISC(Complex Instruction Set Computer)

- 하나의 명령어 실행으로 가능한 한 많은 작업 수행(복합 명령어)

  -> 수행을 위해 CPU 회로 복잡도 증가, 따라서 한 명령어의 실행 시간 증가  

RISC(Reduced Instruction Set Computer)

- 간단한 명령어를 조합해서 실행하면 더 효율적이라고 생각함

CISC의 특성

- 명령어의 포맷이나 길이에 관한 규칙 없음

- 하나 이상의 사이클로 명령어(세부 작업) 실행

- 전체 명령이 얼마나 걸릴지 시간 예측 어려움

출처-온라인 강의

CISC/RISC CPU

- 대표적인 CISC: 인텔 CPU

- 대표적인 RISC: ARM(스마트폰, 임베디드, IoT 기기)

메모리

- 메모리가 비싸므로 성능을 높이기 위한 전략

   : 비싼 메모리는 CPU 바로 옆에 작게, 느린 메모리는 먼 곳에 크게

- Register: CPU 안에서 데이터보관

- SRAM: L1, L2, L3 캐쉬

  -> 최대한 가장 많이 사용하는 메모리의 데이터를 넣어두고, CPU가 메모리 접근 없이 가져다 쓸 수 있게 함

- DRAM: 메모리

- SSD/HDD(하드디스크): 컴퓨터를 꺼도 데이터 보존

DMA(Direct Memory Access)

- CPU가 캐쉬까지 데이터를 가져오는데 관여(Instruction Fetch)

  => 메모리, SSD에서 데이터를 가져오는 것까지 관여하면 CPU 활용도가 낮아짐

- DMA를 만들어 메모리/SSD에서 데이터를 관리하면, CPU는 명령 실행에 좀 더 집중 가능 

I/O Devices(Input/Output Devices, 입출력 기기)

- CD ROM, Mouse, Keyboard

- Printer

- Network Card 

- Bus를 통해 입출력기기에 데이터를 송수신함 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형