전공 과목/컴퓨터 구조

Lecture 02: Computer Abstractions and Technology - 1

arsenic-dev 2024. 9. 26. 00:27

경희대학교 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 정리한 글입니다.

Why we Study Computer Architecture?

▶  Code (e.g, Python)

 

컴퓨터는 binary(0 or 1)로만 이루어진 하드웨어이기 때문에 위 code와 같은 high level language는 이해하지 못 한다.

때문에 컴퓨터가 이해할 수 있는 low level language로 바꿔줘야 한다.

 

이때, 가장 중요한 게 CPU이다.

▶ Inside of Computer

 

※ Register: CPU 내의 소형 고속 메모리 저장 위치로, 사칙 연산 처리 등에 사용된다.

Class of Computing Applications

1. PC(Personal Computer)

Personal의 뜻처럼, 각자 용도, 예를 들어 과제 혹은 게임의 용도에 맞게 만들어진 컴퓨터이다. 

 

PC 컴퓨터엔 여러 개의 프로세스가 있다.

※ Process: 컴퓨터에서 실행 중인 프로그램, 이때 프로그램은 디스크에 존재하는 정적인 것이며 프로세스는 램에 존재하는 동적인 것이다.

 

  PCs usually consist the following parts

  • Computer case
  • Power supply(전력 공급)
  • Motherboard(메인 보드): 부품끼리 신호 주고 받도록 하드웨어적으로 연결한다.
  • Random access memory (RAM): 하드 디스크, SSD에 실제 데이터가 저장이 되어 있을 때 여기에 직접 접근하는 건 속도가 느림. 때문에 데이터를 임시적으로 저장하는 메모리인 RAM이 필요하다. 램이 크면 클 수록 임시적으로 데이터를 저장할 수 있는 곳이 크기 때문에 속도가 빠르다고 볼 수 있다.
  • Hard disk: 물리적으로 데이터가 저장되어 있는 곳이다.
  • External devices (e.g., visual display(모니터), keyboard, printer, etc.)

※메모리: RAM, Hard disk

2. Server

PC는 우리의 개인적인 용도였다면, 그걸 좀 더 확장한 개념이 바로 Server이다.

 

이러한 Server는 여러 명의 유저가 동시에 접근해서 쓸 수 있는 용도로 만들어진 것이다.

이때,  여러 접속자들이 접속을 할 땐 네트워크망을 통해 접근하게 된다.

3. Supercomputer

Server의 확장 버전으로, 더 많은 프로세서로의 확장이다.

 

연산이 많이 처리되기에 굉장히 뜨거워, 식혀야되는 냉각수도 많이 필요하다.

4. Embedded computer

지금까지와 달리 축소의 개념으로,

최소한의 에너지를 쓰며 최대한의 효율을 보는 컴퓨터이다. 

 

이는 일반적으로 크기가 작은 칩 안에 넣어놔야 하기에, pre-determined application,

즉 미리 넣어둔 어플리케이션만 사용(통신) 가능하다.

 

ex) 드론, 자동차 등에 탑재되는 칩

5. PMD(Personal Mobile Device)

우리가 사용하는 스마트폰, 테블릿 컴퓨터를 의미한다.

 

키보드, 마우스를 터치 스크린으로 대체하여 구동된다.

6. Cloud computing

USB가 없을 때 사용하기 좋은 것으로,

물리적으로 가지고 있는 게 아니라 인터넷을 통해 컴퓨팅을 할 수 있는 것이다.

 

외부에 있는 remote(원격) server에 접속하여 거기에 저장되어 있는 값을 인터넷을 통해 가지고 온다.

 

ex) google drive

 

Advantages

  • Lower cost
  • Improve agility(민첩성) and time-to-value(Do not have to wait weeks, months for buying)

Decimal/Binary Values and Names

Hard Disk Storage

▶ 512GB SSD -> Actual (476GB)

 

표기 용량과 실제 용량의 차이가 발생하는 이유는,

표기하기로는 10진법을 사용하지만, 컴퓨터는 2진법을 사용해 용량을 계산하기 때문이다.

 

※ 512 x 10^9/ 2^30 = 512 x 0.931322575 ≈ 476

 

⭐Decimal/Binary Values and Names

▶ 용량 이름

Eight Great Ideas in Computer Architecture

1. Design for Moore's law

컴퓨터에선 트랜지스터를 이용해 binary 값을 표현하는데,

이때 IC(Integrated circuit)의 트랜지스터 개수가 2년마다 2배씩 증가한다는 법칙이다.

 

즉, 이런식으로 집적, 즉 압축하는데,

이때 압축 많이 할 수록 표현할 수 있는 비트의 수가 많아지기에 데이터를 저장할 수 있는 공간도 많아진다.

 

하지만 최근에는 이 법칙이 틀렸다는 사람도 많아 많이 쓰이지는 않는다.

 

2. Use abstraction(추상화) to simplify design

lower-level (machine code) 코드를 higher-level로 단순화하여, 복잡한 코드를 숨기라는 뜻이다.

 

3. Make the common case fast

자주 사용하는 거는 최대한 빠르게 접근할 수 있게 하라는 뜻이다.

 

ex) 속도: 하드디스크 < RAM < 캐시

 

※ 캐시: CPU가 자주 사용하는 데이터를 더 빠르게 처리하기 위해 메인 메모리(RAM)보다 더 가까운 위치에 임시 저장하는 소형 고속 메모리로, 용량은 작다.

 

4. Performance via parallelism

주어진 데이터를 병렬 처리하여 performance를 향상시키는 것이다.

 

5. Performance via pipelining

pipelining 기법을 통해 performance를 향상시키는 것이다.

 

기존 single cycle 기법처럼 하나 끝나고 다음 거 시작, 또 하나 끝나고 다음 거 시작, 이런 식으로 하는 것이 아니라,

순차적으로 동시에 진함으로써 속도를 향상시킨다.

▶ single cycle

▶ pipelining

 

6. Performance via prediction

prediction을 통해 performance(속도)를 향상시키는 것이다.

 

앞서 설명한 파이프라이닝 기법은 예측이 불가피한 상황을 만드는데,

이때 이전 히스토리를 보고 잘 예측하도록 해야 한다.

 

※ 파이프라이닝 기법에서는 여러 명령어를 동시에 처리하는데, 각 단계가 독립적으로 진행되어 다음에 실행될 명령어를 미리 예측해야 하는 상황이 발생한다.

 

7. Hierarchy(계층) of memories

▶ Memory Hierarchy

 

8. Dependability via redundancy

여유분(병렬)을 이용한 신용도 개선을 의미한다.

▶ 여유분을 이용한 신용도 개선

Below Our Programs

▶ Layers of software are organized in a hierarchical fashion(계층적 방식)

 

1. Applications software

흔히 우리가 아는 어플(Application)로, 어플들은 각자의 목적이 있다.

 

ex) 크롬, 사파리, 마이크로소프트 오피스

 

2. Systems software

Application software를 있게 만드는 play ground로, ⭐컴퓨터 시스템 운영에 필요한 프로그램들을 말한다.

 

Operating system(OS) 

OS는 하드웨어가 어떻게 동작할지를 결정하는 데에 중요한 역할을 한다.

ex) Windows, macOS, Linux

 

Compiler

high-level language를 기계가 이해할 수 있는 언어로 바꿔주는 프로그램이다.

3. Hardware

소프트웨어를 있게하는 물리적인 공간을 말한다.

ex) 주기억장치, 보조기억장치, 입력장치, 출력장치, 중앙처리장치

⭐ High-Level Language to Hardware Language

1. High-level program language

우리가 코드를 짤 때 사용하는 언어로, 컴퓨터는 이해할 수 없다.

ex) C, python

 

2. Assembly languages

instruction, 즉 특정 작업을 정의하는 명령어들로 표현되는 언어이다.

이 역시, 컴퓨터는 아직 이해할 수 없다.

ex) MIPS

 

※ instruction 예시

  • multi: 곱셈
  • add: 덧셈
  • lw:load word, 메모리의 데이터를 레지스터로 로드
  • sw: store(save) word, 레지스터의 데이터를 메모리에 저장
  • jr: jump register, 레지스터에 저장된 주소로 점프

※ 컴파일러: High-level program language -> Assembly languages

 

3. Binary machine languages

컴퓨터가 이해할 수 있는 언어로, 0 또는 1로 구성되어 있다.

 

※ 어셈블러: Assembly languages -> Binary machine languages

The Organization of Computer

▶ Five components

 

※ processor는 cpu를 나타내며, processor는 memory에 있는 값을 불러 연산한다.

Performance Growth per Unit Cost(단위 비용)

Relative performance per unit cost of technologies

1. Vacuum tube(진공관)

컴퓨터의 시초로, 불이 켜져 있으면 1 꺼져 있으면 0으로 binary를 표현한다.

이때, 진공관 하나로 한 비트만 표현 가능하다.

 

but, 높은 발열과 고장으로 인한 진공관 교체로 불편하였다.

 

2. Transistor

트랜지스터는 진공관보다 크기도 소형화 되고 더 많은 2진수를 표현 가능하다.

 

3. Integrated circuit (IC)

엄청 많은 트랜지스터를 담아 싱글 칩으로 만든 것으로, 많은 2진수를 표현 가능한 회로이다.

 

4. VLSI (Very Large-Scale Integrated circuit)

IC의 확장 버전으로 표현 가능한 규모가 더욱 크다.

Performance Growth in DRAM

현재, 시간이 지남에 따라 DRAM의 용량이 증가하고 있다.

그렇다면 왜 용량을 늘릴까?

 

용량이 늘어날수록, 즉 저장하는 비트가 많을 수록 속도가 빨라짐을 의미하기 때문이다.

그 이유는 램은 CPU로부터 가까워 접근하기 빠르기에 부르는 속도가 빠른 것이다.

 

RAM

CPU와 가까운 곳에 임시로 저장하는 곳이다.

  • SRAM: 보통 캐시로 사용된다.
  • DRAM: 메인 메모리로, 저장된 데이터가 시간과 전원의 끊김에 따라 소멸된다.