Computer Science/컴퓨터 구조

[컴퓨터 구조] Introduction to Computer Architecture (컴퓨터 구조의 소개)

바보1 2022. 9. 23. 21:38

0. 글을 쓰기에 앞서

 

 

해당 글은 경북대학교 컴퓨터학부 수업인 COMP0411-008 컴퓨터 구조의 수업을 들으면서 작성하는 내용입니다.

책은 [David Patterson, John Hennessy, ªComputer Organization and Design RISC-V Edition: The Hardware Software Interface,ª The Morgan Kaufmann] 을 보고 있습니다.


1. Introduction

 

 

컴퓨터는 지속적으로 발전하고 있고, 이런 컴퓨터의 발전은 이제 우리 삶 전반에 걸쳐 영향을 끼치고 있습니다.

대표적인 예시로 Computers in automobiles, Cell Phone, Human genome project, World Wide Web, Search Engines 등등 말하지 않아도 알 수 있을 정도로 많은 분야가 컴퓨터의 발전에 힘입어 발전하고 있습니다.

특히 인간 게놈 프로젝트는 컴퓨터가 없었더라면 절대로 할 수 없는 프로젝트입니다.


2. Classes of Computers, Post-PC Era

 

 

 

PC, Server, Embedded Computers 이런 것들이 전통적인 컴퓨터의 클래스입니다.

점점 하드웨어는 발전하고 있고, 이런 발전이 결국 컴퓨터의 세대를 바꿔버렸는데, 이것이 Post-PC 입니다.

이제는 PC 산업보다 스마트폰의 산업이 발전하고 있고, 이러한 스마트폰을 PMD(Personal mobile devices)라고 합니다.

그리고 이제는 기존의 서버를 대체하는 cloud 서비스가 많이 발전하고 있습니다.

 

사실 이제 자동차는 기계 장치라기보단 전자 장치에 더 가까울 정도로 전자장비가 많습니다.

ECU라는 작은 칩이 컴퓨터의 조종을 도와줍니다.

자율 주행 자동차도 마찬가지고...


3. What You Can Learn in This Book

 

 

성공한 프로그래머는 항상 그들의 프로그램의 성능에 대해 고민합니다.

유저가 빠른 응답을 받는 것은 성공적인 소프트웨어를 만드는데 필수적이기 때문입니다.

과거에는 메모리 문제 때문에 프로그램이 차지하는 메모리 공간을 최소화해서 프로그램을 어떻게든 빠르게 만드려고 했습니다.

하지만 지난 몇십 년 동안 하드웨어는 발전했고, 이제는 작은 메모리 사이즈에 대해 큰 중요성이 없어졌습니다.

(그렇다고 진짜 신경 안 쓰면 안 됨)

 

아무튼 컴퓨터 구조는 컴퓨터를 하려는 사람에겐 상식이고, 기본 지식이어야 합니다.

본인이 쓴 코드 아래서 어떤 일이 일어나는지는 알아야 합니다.

모든 과정이 끝났을 때, 아래의 질문들에 대답할 수 있어야 합니다.

  • high-level language로 작성한 프로그램이 어떻게 machine language로 변환되는가?
  • sw와 hw의 인터페이스는 무엇인가? 소프트웨어는 원하는 함수를 수행하기 위해 하드웨어에게 어떻게 지시하는가?
    • Instruction Set Architecture (ISA)
  • 프로그램의 성능은 어떻게 결정되는지, 그리고 개발자가 어떻게 이를 향상할 수 있는가?
  • 어떤 기술이 써야 하드웨어 디자이너가 성능을 향상할 수 있는지?
  • 등등.. (별로 안 중요해 보임)

기본적으로 프로그램의 성능을 이해하기 위해 어떤 요소들이 어떻게 영향을 끼치는지 알아야 합니다.

아래의 표는 프로그램 성능에 영향을 끼치는 주요 요소들입니다.

2, 3, 4번째에 대해 알아볼 예정입니다.

알고리즘은

2022.03.31 - [Computer Science/알고리즘]

 

[알고리즘] 알고리즘의 이해 - 기본, 용어 (Algorithm Understanding - Fundamental, Term)

안녕하세요 .. 개강하고 나서 글을 아무것도 못 썼네요 ..... 너무 바빠서 .. 이제부터 수업 듣는거 정리하는 겸 공부할 겸 글 다시 쓰려구요.. 1. 알고리즘이란? 알고리즘은 step-by-step precedure for solv

hi-guten-tag.tistory.com

여기에 작성해놓았습니다.

 

컴퓨터의 구조는 ISA(Instruction Set Architecture) + Machine Organization으로 구성됩니다.

Machine Oganization은 Processor, I/O System, Logic, Circuit 등등으로 이루어져 있습니다.

 

따라서 ISA과 Machine Organization 전반에 대해 공부할 예정입니다.


4. Eight Great Ideas in Computer Architecture

 

 

  • Design for Moore's Law
    • 반도체 소자의 집적도가 18~24개월마다 두 배씩 증가한다는 가설
  • Use Abstraction to simplify design
    • Abstraction to characterize the design at difference levels (다양한 레벨에서 디자인을 특성화하기 위한 추상화)
  • Make the common case fast
    • 흔한 경우를 빠르게 하는 것은 특이한 경우를 최적화하는 것보다 성능을 더 많이 향상한다.
  • Performance via parallelism
    • operation computing을 병렬적으로 처리함으로써 더 좋은 성능을 낼 수 있다.
  • Performance via pipelining
    • 병렬화의 특이한 패턴이다.
  • Performance via prediction
    • 평균에 근사하게 빨리 추측하고, 기다리는 것보다 빨리 작업을 시작한다.
  • Hierarchy of Memories
    • 빠르고, 크고 싼 메모리가 있다면 얼마나 좋을까.. 아쉽게도 그런 건 없다. 그러므로 상황에 맞게 빠르고 비싼 메모리는 작게 만들어서 CPU와 가까이 사용하고, 크고 느린 메모리는 크게 만들어서 메모리나 SSD 등을 만든다.
    • 이렇게 메모리를 필요에 따라서 메모리를 계층적으로 나눠서 사용하는 것이 Memory Hierarchy이다.
  • Dependability via redundacny
    • 중복 작업을 통한 컴퓨터의 신뢰성

5. Organization of a Computer

 

 

컴퓨터의 중요한 다섯가지 요소

컴퓨터의 중요한 다섯 개 요소는 Input, Output, Memory, Datapath, Control입니다.

여기서 Processor은 Control, Datapath 두 가지 요소로 이루어져 있습니다.

input은 데이터를 memory에 입력, output은 데이터를 memory에서 갑니다.

사실 다른 요소들은 I/O에 비하면 작은 부분을 차지합니다.

마지막으로 Control은 이 요소들 무엇이 어느 타이밍에 할지 결정합니다.


5.1 Memory

 

 

메모리에는 크게 두 가지 종류가 있는데, SRAM, DRAM 입니다.

SRAM은 Static random access memory의 약자이고, DRAM은 Dynamic random access memory의 약자입니다.

SRAM은 빠른 대신 비싸고, 용량이 작아서 주로 cache memory로 사용되고, 

DRAM은 느리지만 상대적으로 싸고, 용량이 커서 main memory로 사용됩니다.

 

이런 관계가 바로 memory hierarchy입니다.

 

자세한 내용은 아래의 링크에서 볼 수 있습니다.

https://m.blog.naver.com/ycpiglet/221984934010

 

SRAM 과 DRAM의 차이와 특징, 뜻 이해 (암기하기 쉬운 방법)

메모리를 공부하다보면 RAM이 크게 두 가지로 분류되는 걸 알 수 있다. 바로 SRAM과 DRAM 오늘...

blog.naver.com


5.2 Abstraction

 

 

ISA (instruction set architecture)은 하드웨어와 lowers-level softwar의 인터페이스 역할을 합니다.

또 다른 추상화는 ABI (Application binary interface)입니다.

ABI는 ISA + OS 인터페이스를 합쳤다고 볼 수 있습니다.

이런 추상화 덕분에 프로그래머는 일일이 하드웨어에 맞게 개발하지 않아도 됩니다.


5.3 Network

 

 

네트워크는 컴퓨터를 상호연결시켜주고, 네트워크에 접속된 컴퓨터는 몇 가지 장점을 가집니다.

 

  • Communication 
    • 정보가 컴퓨터 사이에서 빠른 속도로 교환됩니다.
  • Resource sharing
    • 네트워크에 있는 컴퓨터는 I/O device를 공유할 수 있습니다.
  • Nonlocal access
    • 유저들은 그들이 사용하는 컴퓨터와 다른 컴퓨터가 가까이 있을 필요가 없습니다.

 

 

LAN, WAN, Wireless network 등등이 있습니다.

 

 

 

 

 

 

 

 

 

기본적으로 컴퓨터 구조에 대한 소개는 마친 것 같습니다.

다음 글에는 간략하게 트랜지스터와 CPU clocking 등에 대해 알아보겠습니다.

 

2022.10.23 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Measuring Performance (성능 측정)

 

[컴퓨터 구조] Measuring Performance (성능 측정)

I/O 시간을 제외하고 CPU execution time만 보겠습니다. 개인 컴퓨터 같은 경우에는 response time를 중요시 여기고, 서버 같은 경우에는 throughput을 중요시 여깁니다. response time은 작업이 접수되고, 시작..

hi-guten-tag.tistory.com

 

 

감사합니다.