본문 바로가기
CS/Computer Organization and Design

[CO&D] 1-1. Computer Architecture

by 쵸빙 2020. 4. 30.

CO&D는 Computer Organization and Design의 준말로, 컴퓨터구조론을 배우면서 필기한 내용들을 담도록 하겠다.

이번 시간에는 컴퓨터의 구조에 대해 알아보도록 하겠다.

 

 

 

 

-컴퓨터 구조론이라는 과목은 컴퓨터의 성능 향상 방향으로 구조를 개선해왔던 과정을 배우는 것이다.

  → 성능 향상은 속도,  에너지, 전력 소비량(특히 모바일은 배터리 제한)을 줄이는 것이다.

- 논리회로 과목에서의 (ALU, Adder, MUX(멀티플렉스))의 개념이 필요하다.

 

 

 

 

 

 

● Computer Architecture

- 컴퓨터의 세 가지 기본 구성 요소 : CPU, Memory, I/O

 

CPU(Central Process Unit) : 컴퓨터에서 유일하게 일하는 곳

 연산 작업 (+, -, *, /, AND, OR, SHIFT 등), 명령어 처리

 

Memory(MEM)

- 명령어, data, stack으로 구성되어 있음.

  → 모두 기계어로 저장되어 있음. 컴퓨터가 이해할 수 있는 건 2진수 기계어뿐.

 

I/O

- printer, modems, secondary storage(disks, tapes, etc), analog converters, motor controllers, displays, ...

 

④ Optional Additional Memory Storages (보조기억장치)

- main memory보다 훨씬 크지만 CPU에서 접근하는 데 더 시간이 오래 걸릴 것.

- off-board memory, multiprocessor shared momory

 

Computer Architecture

 

* 구성 요소들 간 상호작용 단계

① CPU가 첫 번째 명령어를 수행하기 위해서 주소를 main memory에게 버스를 통해 준다.

 

② 그에 해당하는 명령어를 main memory가 CPU에게 넘겨줌.

→ 예: 만약 덧셈이라면 두 개의 피연산자가 main memory로부터 전달될 것.

 

③ CPU 안에는 여러 회로가 있지만 만약 덧셈을 한다면 대표적인 ALU HW를 쓸 것.

→ 메모리로부터 불러온 데이터를 바로 ALU라는 논리회로에 연결해서 덧셈을 구현하는 게 아니라 메모리로부터 들어온 데이터, 명령어들은 다 CPU 안에 있는 메모리인 register에 일단 저장

 

④ 이렇게 레지스터에 저장된 데이터를 논리회로에 넣는 것. 덧셈이라는 control 신호도 전달됨.

 

⑤ 연산한 결과값도 다시 레지스터에 저장.

 

⑥ 필요에 따라 bus를 통해 main memory의 어떤 공간에 다시 저장.

 

 

 

* Memory

-메모리는 2개의 큰 구역으로 나뉘어짐.

RAM, ROM

- ROM은 비휘발성, RAM은 휘발성.

- ROM은 Read-Only Memory로 이 안에 booting program이 있는 것.

 

 

* HDD(Hard Disk Drive)

- 여러 프로그램들이 저장되어 있다.

  → OS, HWP, I/E, Game, ...

 

 

 

* HDD와 MEM의 관계

① HWP, I/E 등이 하드디스크에 있을 때는 "프로그램(program)"이라고 불린다.

전원이 켜지면 부팅 프로그램(booting program)은 하드 디스크 드라이브를 쫙 훑어서 OS를 찾아서 Main Memory RAM에 올린다.

 

② 그 뒤 OS는 메인 메모리 빈 공간에 다른 필요한 프로그램들을 올린다.

 

③ 이렇게 프로그램들이 메인 메모리에 올라가면 "프로세스(process)"가 된다.

→ 하드 디스크에 있는 건 CPU에 연결되어 있지 않아서 아무런 일을 할 수 없다. 그러나 일단 프로그램이 메인 메모리에

   올라가면 버스를 통해서 CPU에서 사용 가능.

 

 

 

 

 

 

 

 

 

 

● Classes of Computers

 

Personal Computers (PC)

- 개인 혼자 사용함. 한 명의 사용자.

- 큰 목적이 있는 것이 아니라 범용이다. 여러가지 프로세스를 사용할 수 있게 하는 것.

- 게임, 한글 프로그램, 인터넷 익스플로러 등 여러 다양한 소프트웨어를 사용할 수 있다.

 

Server Computers

- 여러 명이 사용하는 것

- 용량이 크고 성능이 좋고 신뢰도가 높아야 한다. (High capacity, performance, reliability)

  → 여러 명이 사용해야하니 용량이 크고 성능이 좋아야 한다.

  어떤 사용자가 사용하다가 문제가 생기면 OS는 interrupt 시킨다. 그러면 다른 사용자가 사용을 할 수 없으므로

      reliability가 중요하다.

  사용자 수에 따라, 목적에 따라, 용량에 따라 서버는 크기가 다르다.

- 작은 서버부터 건물 크기의 서버 등 범위가 넓다.

 

Supercomputers

- 과학적이고 공학적인 큰 계산들을 처리한다.

  → 예: 날씨 예측 (기상청), 전세계 강수량, 실시간 초단위 정보 등

- computation power가 굉장히 세야한다.

- 슈퍼 컴퓨터를 사용하고자하는 사용 기관이라던지 사용자들이 많지 않아서 컴퓨터 시장에서는 굉장히 작은 부분을

  차지한다.

 

Embedded computers

- 어떤 디바이스들 안에 속해있어서 주로 보이지 않는다.

  → 카메라, 프로젝터, 프린터, 냉장고, 세탁기 등 안에 있는 작은 구성 요소

- 엄중한 power, performance, cost constraints를 지켜야 할 것.

 

 

 

 

 

 

● 컴퓨터구조론에서 배우게 될 것

- 프로그램을 기계어로 바꾸는 능력 & 어떻게 하드웨어가 그 기계어를 실행하는지

  → 기계어로 잘 구조화시켜야 한다. 우리가 짠 소스코드를 기계어로 얼마나 잘 바꾸는가.

- 기계어 → 하드웨어와 소프트웨어 인터페이스의 역할을 한다.

 

- 프로그램 성능과 어떻게 향상될 수 있는지

 

-어떻게 하드웨어 디자이너가 성능을 향상시키는지

 

 

 

 

 

● Below your Program

Application software

- High-Level Language(HHL)로 작성되어있다.

 

System software

- Compiler : HHL code를 기계어로 바꿔준다.

- Operating System : 시스템들을 관리하기 때문에 "시스템 소프트웨어"라고 한다.

  → 입출력 관리

  → 메모리와 저장소 관리

  → Scheduling Tasks & sharing resources

  → 메모리에 한 개 만이 아니라 여러 개의 프로세스를 올려서 사용할 때 어떤 프로세스를 먼저 수행할 것인가

 

Hardware

- processor, memory, I/O controller

 

 

 

 

* 계층 구조

- application에는 HHL로 본인이 짠 프로그램이 C, C++ 등의 소스코드로 존재할 수 있고, 주로 Hard Disk Drive에

  저장되어있다.

- O/S는 소프트웨어를 하드웨어와 관련되게 잘 연결하고 manage하는 소프트웨어이다.

- 한글 파일을 메모리에 올릴 때 Memory Management OS라는 소프트웨어를 통하고, 다시 Hard Disk Drive에

  올리던지 한다.

 

 

 

 

 

 

 

 

● Levels of Program Code

 

High-level language

- 프로그램 도메인에 가까운 추상화 단계

- productivity

- portability : 쉽게 실행하게 여러 다양한 기계에서 독립적으로 돌릴 수 있다.

 

Assembly Language

- 명령어의 글자적 표현

 

Hardware representation

- 2진수 (비트 단위)

- 명령어와 데이터가 기계어로 바뀐 것(인코딩)

 

 

 

 

 

- 프로그램 코드는 위의 3개의 단계로 이루어져 있다.

High-level language

HHL은 기계가 이해하지 못하기 때문에 기계어로 바꿔야한다.

- HHL은 사용자(사람)가 컴퓨터에 수행하고자 하는 명령들이다.

 

Assembly Language Program

- 사람이 이해하기 쉬운 기계적 과정을 거친다.

  → 어셈블리어가 있는 이유는 사람과 컴퓨터 모두 서로 이해하기 쉽게 하기 위해서이다.

      HHL에서 기계어로 바꿀 때 기계어를 실행시키는 데 향상시키도록 컴퓨터를 구조화시켜야한다.

 

③ Binary machine language program

- 각각은 비트이다.

- 각 명령어에 대해서 기계어로 바로 바꾸면 좋은데 그러려면 컴퓨터 구조를 아주 잘 알아야한다.

  바로 바꾸는 것은 굉장히 빨라서 해킹할 때 쓰이는 방법이다.

  컴퓨터 구조를 매우 자세히 알아야 명령어를 쓸 수 있다면 생산성이 떨어지게 되고, 그래서 쉽게 코드를 작성할 수

  있는 HHL을 사용한다.

 

 

 

 

 

 

 

 

● Inside the Processor (CPU)

 

Datapath : 데이터에 대한 연산을 수행한다.

 

Control : sequences datapath, memory, ...

 

Cache Memory → register

- 작고 빠른 SRAM 메모리이고 데이터의 직접 접근을 위해 필요하다

 

* SRAM과 DRAM

- SRAM : CPU 안에 있는 레지스터들로 접근이 굉장히 빠르다.

- DRAM : 메모리에 있는 메모리. 굉장히 작으면서 굉장히 빠르지만 매우 비싸다. CPU가 바로 데이터에 접근할 수 있다.

 

 

 

 

 

 

 

다음 시간에는 본격적으로 어떻게 컴퓨터의 성능을 향상시키는지 보도록 하겠다.