초보 코린이의 성장 일지

컴퓨터 구조 - 이론 본문

컴퓨터 구조

컴퓨터 구조 - 이론

코오린이 2023. 7. 11. 13:57

하드웨어 

- 컴퓨터 정보들의 전송 통로를 (전문 용어 Bus) 제공해 주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체

 

소프트웨어

-  정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 동작들이 일어나는 시간을 지정해주는 명령(Command)들의 집합

시스템 소프트웨어 - OS (Win, Unix, Linux 등)

응용 소프트웨어 - 워드프로세서, 웹, MS-Excel 등

 

컴퓨터 하드웨어 

중앙처리 장치 (Central Processing Unit : CPU) : 코어 프로세서

1. "프로그램 실행"과  "데이터 처리"라는 기능 수행을 담당하는 요소 

 

기억장치 2가지

주기억장치 (Main Memory) : RAM, ROM, DDR SDRAM 등

- CPU 가까이 위치하며, 기억장치 칩들로 구성

- 고속 액세스

- 면적을 많이 차지, 저장 용량의 한계

- 영구 저장 능력이 없이 때문에, 일시적 저장장치로만 사용 

 

보조저장장치 (Auxiliary Storage Device) : 디스크, CD - ROM (플래시 메모리) 등

- 2차 기억장치 (secondary memory)

- 저장 밀도가 높고, 읽기 / 쓰기 속도가 느림

- 영구 저장 능력을 가진 저장장치 : 하드 디스크

 

입출력장치 (I / O Device) : 입력장치, 출력장치

- 사용자와 컴퓨터간의 대화를 위한 입력 및 출력장치

- 유무선 통신 네트워크 인터페이스 장

 

번외

전원공급장치, 냉각 송풍기 등

 

고급 언어 (High - Level Language)

- 영문자와 숫자로 구성되어 사람이 이해하기 쉬운 언어

- C++, PASCAL, FORTRAN, COBOL 등 / C++은 추상화된 언어이므로 고급언어, C는 저급언어

- 컴파일러를 이용하여 기계어로 변역

 

어셈블리 언어 (Assembly Language)

- 고급 언어와 기계어 사이의 중간 언어

- 어셈블리 (assembler)로 번역시, 기계어와 일대일 대응

-  Decoder와 1:1로 매핑되면 어셈블리로 칭한다.

 

기계어 (Machine Language)

- 기계 코드 (machine code)라고 한다.

- 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어로서, 2진 비트들로 구성 : 00100101

- 연산 코드 (op code) : CPU가 수행할 연산을 지정해 주는 비트들 : 비트수 3 -> 2 ^ 3 = 8개

- 오퍼 랜드 (operand) : 연산에 사용될 데이터 혹은 저장되어 있는 기억장치 주소 (memory address) : 비트수 5 -> 2 ^ 5 = 32개

 

컴파일러 (Compiler)

- 고급언어 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

 

어셈블러(Assembler)

- 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

- 니모닉스 (nemonics) : 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호 : LOAD, ADD, STOR 등

 

Loader

- 하드디스크에 있는 OS를 포함한 특정 프로그램을 주기억장치로 적재하는 프로그램 : CPU가 명령어 실행

 

컴파일러 언어

- 한번에 번역 해놓고 실행시킨다.

- 유일하게 사용하는게 C++

 

인터프리터 언어 : C#, Java

- 한줄 한줄 번역하면서 실행하기 때문에 유연성이 크다.

 

CPU와 기억장치

아래에 선을 그린걸 하나의 통로(Bus)로 보면된다.

CPU - Register, Decorder, ALU, Shifter

   |

Cache

   |

RAM  ────

              |

            I / O

              |

           SSD

 

제어 버스 (Control Bus)

- CPU가 시스템 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합

- 기억장치 읽기 / 쓰기

- I / O 읽기 / 쓰기

- 인터럽트 (Interrupt)

 

주소 버스 (Address Bus)

- CPU가 메모리로부터 읽을 데이터의 주소나, 데이터를 쓸 주소 전달

- 주서 버스의 비트수 : 16 비트라면, 최대 216 = 64K 개의 기억 장소들의 주소지정 가능

 

데이터 버스 (Data Bus)

- CPU가 메인 메모리로부터 읽거나 쓸 데이터, 입출력 장치로부터 입력 받거나 출력한 데이터 전달

- 데이터 버스 폭 : 32 비트라면, CPU와 기억장치 간의 데이터 전송은 한 번에 32 비트씩 가능

 

위에 그림의 대한 설명

- CPU는 기억장치에게 주소 버스를 통해 현재 실행할 프로그램 주소를 요청한다. (주소 버스)

- 기억장치는 주소에있는 데이터를 CPU에게 보내준다. (데이터 버스)

- 위에 그림처럼 주소버스는 한방향으로 가지만, 데이터 버스는 양방향으로 간다. CPU 내에도 레지스터라는 기억장치가 존재하기 때문이다.

 

- register를 붙여서 선언하게 되면, Ram 영역에 들어가지 않고 CPU에 레지스터라는 공간으로 들어간다.

- register은 빠른 대신에 공간이 엄청 작다.

 

ex)

int a = 10;

int b = 20;

int c = a + b;

 

위에 코드를 작성하고 컴파일을 하게되면 실행 파일 .exe가 나오게된다.

실행 파일은 현재 SSD인 보조기억 장치안에 들어가있다.

실행 파일을 클릭하게 되면 실행을 하기위해 입출력 버스를 통해 Ram으로 올라간다.

 

Ram에는 4가지 구역이 존재한다

- 첫번째 Code 영역에 작성한 기계어 코드가 올라간다.

- 두번째 Data 영역에는 아직 존재하는게 없다.

- 세번째 Heep 영역에도 아직 쓸게 존재하지 않는다.

- 네번째 Stack 영역에 하나씩 쌓이게 된다.

 

컴퓨터의 기본적인 기능

- 프로그램 실행 : CPU가 주 기억장치로부터 프로그램 코드를 읽어서 실행

- 데이터 저장 : 프로그램 실행 결과로서 얻어진 데이터를 주기억 장치에 저장

- 데이터 이동 : 디스크 혹은 CD-ROM에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동

- 데이터 입력 / 출력 :

1. 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다.

2. CPU가 처리한 결과값이나 기억장치의 내용을 프린터로 출력

- 제어 : 프로그램이 순서대로 실행되도록, 또는 필요에 따라 실행 순서를 변경하도록 조정

 

연산처리장치

 

CPU와 GPU

CPU 

1. 모든 장치의 동작을 기억, 해석, 연산, 제어 등의 기능 수행을 하는 장치

2. 컴퓨터의 가장 중요한 부분으로서, 명령을 해독하고 산술 논리연산이나 데이터 처리를 실행하는 장치.

3. 다양한 명령어들을 연산하기 위해 코어가 크다. 그래서 ALU가 작다

4. Control, ALU, Cache가 하나의 코어라고 생각하면 된다.

5. 제어장치, 연산장치, 레지스터, 범용 연산

 

GPU

1. 다수 ALU, 코어를 기반으로 고속 그래픽 처리에 특화된 프로세서

2. CPU와 다르게 위에 그림에 주황색 부분이 하나의 코어를 나타낸다 CPU와 달리 코어가 많다.

3. GPGPU, 부동소수점

 

GPGPU

1. 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를 전통적으로 중앙 처리 장치(CPU)가 맡았던 응용 프로그램들의 계산에 사용하는 기술

2. 어떠한 자료형들 사용해도 float로 처리한다.

3. 일반적인 Shader 언어만으로 사용했던 GPU를 범용연산을 할수 있게 해주기 위해 나왔다.

 

APU

1. 성능 가속 향상을 위해 CPU와 GPU 기능을 통합 활용하는 프로세서 (CPU + GPU)

 

NPU (신경망처리장치)

1. 다양한 병렬처리, 병목현상 감소 등, 인간의 뇌를 모방하여 생성한 프로세서

2. AI처리에 사용하는 획기적인 기술

3. 뉴런, 시냅스, TPU, NNP, IPU 

'컴퓨터 구조' 카테고리의 다른 글

컴퓨터 구조 (2) - 이론  (0) 2023.07.12
Comments