상세 컨텐츠

본문 제목

01. 컴퓨터 시스템 개요

Computer Science/Computer Architecture

by RACC8N 2020. 3. 20. 21:25

본문

하드웨어(Hardware) : 컴퓨터에서 각종 정보들의 전송 통로를 제공해 주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들.

1. 메인보드 : 주요 IC 칩들과 메모리 모듈 및 I/O장치 인터페이스를 위한 슬롯들이 장착되는 기판.

2. CPU 및 GPU 칩 : 멀티-코어 마이크로프로세서 및 그래픽처리유니트 칩

3. 주기억장치 모듈 : DDR4 SDRAM과 같은 메모리 칩들이 장착된 보드

4. 확장 보드 : 사운드 카드와 같이 기능 추가를 위하여 장착되는 각종 보드들

 

소프트웨어(software) : 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 수행될 시간을 지정해주는 명령(command)들의 집합.

· 시스템 소프트웨어(System Software) : OS(Windows 10, Unix, Linux...), 각종 유틸리티 프로그램들(프린터 드라이버 등)

· 응용 소프트웨어(Application Software) : 워드프로세서, 웹브라우저, MS-EXCEL 등..

 

※ 소프트웨어는 하드웨어에 의존적이다. 컴퓨터의 기본적인 능력은 하드웨어에 의해 결정되며, 소프트웨어는 하드웨어가 제공해주는 기능들을 이용하여 최종적인 결과를 얻을 수 있도록 도와주는 것이다.

 

1.1 컴퓨터의 기본 구조

 

컴퓨터의 기능 : 프로그램 코드를 정해진 순서대로 수행

> 데이터를 읽어서(read), 처리(processing)하고, 저장(store)한다.

 

컴퓨터의 기본적인 구성요소들 : 중앙처리장치, 기억장치, 입출력장치

중앙처리장치(Central Processing Unit : CPU) (Processor):

'프로그램 실행'과 '데이터 처리'라는 중추적인 기능의 수행을 담당한다.

CPU가 한번에 처리하는 데이터의 길이(비트 수)에 따라서 32bit, 64bit 컴퓨터로 분류된다.

컴퓨터의 이론적인 처리 속도는 CPU의 성능에 의해 결정된다.

CPU가 처리할 프로그램 코드와 데이터는 기억장치에 저장된다.

 

기억장치

1. 주기억장치(main memory)

⊙ CPU 가까이 위치하며, 반도체 기억장치 칩들로 구성

⊙ 고속의 읽기 및 쓰기가 가능

⊙ 가격이 높고 면적을 많이 차지 -> 저장 용량의 한계

⊙ 영구 저장 능력이 없기 때문에, 프로그램 실행 중에만 일시적으로 사용되는 기억장치

 

2. 보조저장장치(auxiliary storage device)

⊙ 2차 기억장치 (secondary memory)

⊙ 저장 밀도가 높고, 비트 당 가격이 낮음

⊙ 읽고/쓰기 속도가 느림

⊙ 영구 저장 능력을 가진 저장장치 : 하드디스크(HDD), 플래시 메모리, SSD 등

 

입출력장치(I/O device)

⊙ 입력장치(input device)와 출력장치(output device)의 통칭

⊙ 사용자-컴퓨터 간의 상호작용을 위한 장치들

⊙ CPU는 해당 장치 제어기를 통하여 동작 제어

⊙ 이와 같이 CPU에 의해 직접 엑세스 되지 못하고 별도의 제어기를 통하여 엑세스가 가능한 I/O장치와 보조장치들을 주변장치(peripheral device)라고 부름.

 

1.2 정보의 표현과 저장

컴퓨터가 받아들이고 처리하는 정보 : 2진수 비트들로 표현된 프로그램 코드와 데이터

 

프로그램 코드 

1. 기계어(Machine Language)

⊙ 기계 코드(machine code)라고도 함

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

 

2. 어셈블리 언어(Assembly Language)

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

어셈블리(Assembler)를 이용하여 기계어로 번역, 기계어와 일대일 대응

 

3. 고급 언어(High-level Language)

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

⊙ C, C++, Python  등

컴파일러(Compiler)를 이용하여 기계어로 번역

 

ex) Z = X + Y

LOAD A, X : 기억장치 X번지의 내용을 읽어서 레지스터 A에 적재(load)

ADD A, Y : 기억장치 Y번지의 내용을 읽어서 레지스터 A에 적재된 값과 더하고, 결과를 다시 A에 적재

STOR Z, A : A에 적재된 값을 기억장치 Z번지에 저장(store)

프로그램 언어 번역 소프트웨어

컴파일러(compiler) : 고급언어 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

 

어셈블러(assembler) : 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

니모믹스(mnemonics) : 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호

 > ex) 'LOAD', 'ADD', 'STRO' 등

 

기계 명령어의 형식

연산코드(op code) :

cpu가 수행할 연산을 지정해 주는 비트들

비트 수 = '3'이라면, 지정될 수 있는 연산의 최대 수 : 2^3 = 8개

 

오퍼랜드(operand) :

⊙ 연산에 사용될 데이터 혹은 그것이 저장되어 있는 기억장치 주소(memory address)

⊙ 비트 수 = '5'라면, 주소지정할 수 있는 기억 장소의 최대 수 : 2^5 = 32개

 

프로그램 코드와 데이터의 기억장치 저장

프로그램 코드(명령어)와 데이터는 지정된 기억 장소에 저장

단어(word) 단위로 저장

 > 단어 : 각 기억장소에 저장되는 데이터 단위로서, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹

 > 단어 길이의 예 : 8비트, 16비트, 32비트, 64비트

 > 주소지정 단위 : 단어 단위 or 바이트 단위

 

1.3 시스템의 구성

1.3.1 CPU와 기억장치의 접속

시스템 버스 : 

CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로

⊙ 기본구성 

    1. 주소 버스 (address bus)

    2. 데이터 버스 (data bus)

    3. 제어 버스 (control bus)

 

1. 주소 버스(address bus)

⊙ CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합

⊙ 주소 선의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정

ex) 주소 버스 비트수 = 16비트라면, 최대 2^16 = 64K 개의 기억 장소들의 주소지정 가능

 

2. 데이터 버스(data bus)

⊙ CPU가 기억장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합

⊙ 데이터 선의 수는 CPU가 한 번에 전송할 수 있는 비트 수를 결정

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

 

3. 제어 버스(control buls)

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

ex) 기억장치 읽기/쓰기(Memory Read/Write)신호

I/O 읽기 쓰기(I/O Read/Write)신호

인터럽트(Interrupt) 신호

버스 제어(Bus Control)신호

 

CPU와 시스템 버스 간의 접속

1. 주소 버스 : 단방향성

⊙ 주소는 CPU로부터 기억장치 혹은 I/O장치들로 보내지는 정보

 

2. 데이터 버스, 제어 버스 : 양방향성

⊙ 읽기와 쓰기 동작을 모두 지원

※CPU가 데이터를 기억장치의 특정 장소에 저장하거나 이미 저장되어 있는 내용을 읽는 동작을 엑세스(access)한다고 한다.

 

CPU와 기억장치 간의 접속

필요한 버스 및 제어신호

⊙ 주소 버스

⊙ 데이터 버스

⊙ 제어 신호 : 기억장치 읽기(memory read) 신호, 기억장치 쓰기(memory write) 신호

1. 기억장치 쓰기 동작 : CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내는 동시에, 쓰기 신호를 활성화

기억장치 쓰기 시간(memory write time) : CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간

 

2. 기억장치 읽기 동작 : CPU가 기억장치 주소를 주소 버스를 통하여 보내는 동시에, 읽기 신호를 활성화. 일정 지연 시간이 경과한 후에 기억장치로부터 읽혀진 데이터가 데이터 버스 상에 실리고, CPU는 그 데이터를 버스 인터페이스 회로를 통하여 읽음.

기억장치 읽기 시간(memory read time) : 주소를 발생한 시간부터 기억장치의 데이터가 CPU에 도착할 때까지의 시간

 

1.3.2 CPU와 I/O장치의 접속

필요한 버스 및 제어 신호

 주소버스

데이터 버스

제어 신호 : I/O 읽기 신호, I/O 쓰기 신호

 

접속경로 : CPU <-> 시스템버스 <-> I/O 장치 제어기 <-> I/O 장치

I/O 장치 제어기

기능 : CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고, 데이터를 이동함으로써 명령을 수행하는 전자회로 장치 (EX, 키보드 제어기, 프린터 제어기 등)

 

상태 레지스터 

⊙ I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터

⊙ 준비 상태(RDY) 비트, 데이터 전송확인(ACK) 비트 등

 

데이터 레지스터 

⊙ CPU와 I/O 장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터

 

1. 키보드의 데이터 입력 과정

 

키보드 제어기 :

키보드의 어떤 한 키(KEY)를 누름 -> 그 키에 대응되는 ASCII 코드가 키보드 제어기 데이터 레지스터에 저장 -> 상태 레지스터의 In_RDY 비트가 1로 세트

 

CPU :

키보드 제어기로부터 상태 레지스터를 읽음 -> In_RDY비트가 세트 되어있으면 데이터 내용을 읽음 -> 아니면 반복 

2. 프린터의 데이터 출력 과정

 

CPU : 

프린터 제어기의 상태 레지스터의 내용을 읽어서 Out_RDY 비트 검사-> 세트 되어있으면 프린터할 데이터를 프린터 제어기 데이터 레지스터에 저장(데이터 블록 전체를 제어기 내의 데이터 기억장치에 저장하는 것도 가능 : spooling) -> 세트 안되어있으면 반복 기다림.

 

프린터 제어기 :

데이터 레지스터(혹은 데이터 기억장치)의 내용을 프린터로 보냄 -> 프린터의 하드웨어를 제어하여 인쇄 동작 수행

 

CPU와 보조저장장치의 접속

 

보조저장장치들 (디스크, 플래시 메모리, SSD, CD-ROM 등)도 각 장치를 위한 제어기를 통하여 키보드나 프린터와 유사한 방법으로 접속

 

차이점 : 데이터 전송 단위

1. 키보드 : 바이트 단위 전송

2. 보조저장장치 : 블록(512바이트) 혹은 페이지(2K, 4K 바이트)단위로 전송

   -> 제어기 내에 한 블록 이상을 임시 저장할 수 있는 데이터 기억장치(버퍼) 필요

컴퓨터의 기본적인 기능들

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

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

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

4. 데이터 입력/출력 : 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다. 또한 CPU가 처리한 결과값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력

5. 제어 : 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행순서를 변경하도록 조정하며, 각종 제어 신호들을 발생

 

1.4 컴퓨터 구조의 발전 과정

 

주요 부품들의 발전 과정

1. 릴레이(relay) -> 진공관 -> 트랜지스터 -> 반도체 집적회로(IC)

2. 발전 과정에서 개선된 특성들 : 

⊙ 처리속도 향상

⊙ 저장용량 증가

⊙ 크기 감소

⊙ 가격 하락

⊙ 신뢰도 향상

3. 특이 사항 : 초기 컴퓨터들의 근본적인 설계 개념과 동작 원리가 현대의 컴퓨터들에 거의 그대로 적용되고 있음

 

최초의 컴퓨터 

1642, Blaise Pascal(프랑스)

덧셈과 뺄셈을 수행하는 기계적 카운터

다이얼의 위치에 의하여 십진수를 표시하는 6개의 원형판 세트들로 구성

각 원형판은 일시적으로 숫자를 기억하는 레지스터로 사용

 

Leibniz의 기계

1671, Gottfried Leibniz(독일)

덧셈과 뺄셈 및 곱셈과 나눗셈도 할 수 있는 계산기

Pascal의 계산기에 두 개의 원형판들을 추가하여 반복적 방법으로 곱셈과 나눗셈을 수행

이후 많은 계산 기계들의 조상이 됨

 

Difference Engine

19세기 초, Charles Babbage(영국, 현대 컴퓨터의 할아버지)

표에 있는 수들을 자동적으로 계산하고, 그 결과를 금속 천공기를 거쳐서 프린트

덧셈과 뺄셈만 수행 가능

 

Analytical Engine

19세기 초, Charles Babbage(영국)

주요 특징들 :

⊙ 어떤 수학 연산도 자동적으로 수행할 수 있는 일반목적용 계산 기계

⊙ 프로그래밍 기능 : 프로그램 언어 사용

⊙ 프로그램의 실행 순서 변경 가능

> 수의 부호 검사를 이용한 조건 분기

> 제어 카드를 이용한 실행 순서 변경

문제점 : 주요 부품들이 기계적 장치라 속도가 느리고 신뢰도가 낮았음.

 

Analytical Engine의 기본 구조

산술연산장치 : MILL

기억장치 : STORE

입력장치 : 카드판독기

출력장치 : 카드 천공기, 프린터

ENIAC (Electronic Numerical Integrator And Computer)

1940년대 초, 폰 노이만이 개발

펜실바니아 대학에서 개발한 진공관을 사용한 최초의 전자식 컴퓨터

문제점 : 프로그램의 저장 및 변경 불가능

 

폰 노이만의 설계 개념(stored-program 원리) 발표

⊙ 프로그램과 데이터를 내부에 저장

⊙ 2진수 체계 사용

⊙ 1945년 발표 후, EDVAC(Eletronic Discrete Variable Computer)개발에 실제 적용

 

IAS컴퓨터

1946~1952년, 폰 노이만이 IAS에서 개발

프로그램 저장과 변경이 가능한 최초의 디지털 컴퓨터

주요 구성요소

⊙ 프로그램 제어 유니트(Program Control Unit) : 명령어 인출/해독

⊙ 산술논리연산장치(ALU)

⊙ 주기억장치 : 명령어와 데이터를 모두 저장

⊙ 입출력장치

 

IAS 컴퓨터의 구조

폰 노이만 아키텍쳐 : 

프로그램 코드들을 기억장치에 저장된 순서대로 실행하며, 그 주소는 CPU의 내부 레지스터인 프로그램 카운터(PC)에 의 해저장됨.

 

1.4.2 주요 컴퓨터 부품들의 발전 경위

 

트랜지스터(transistor)

 초기(제1세대) 전자식 컴퓨터의 핵심 부품인 진공관을 대체한 전자 부품

 진공관보다 작고 싸며 더 적은 열을 발산

 반도체 재료인 실리콘(Si)으로 만들어진 고체장치

 제2세대 컴퓨터들의 핵심 부품

 초기 컴퓨터들은 약 1000개의 트랜지스터들로 구성

 

집적 회로(Intergrated Circuit : IC)

⊙ 수만 개 이상의 트랜지스터들을 하나의 반도체 칩에 집적시킨 전자부품

⊙ 제3세대 컴퓨터들의 핵심 부품

집적도에 따른 IC의 분류

 

SSI(Small Scale IC)

⊙ 수십 개의 트랜지스터들이 집적되는 소규모 IC

⊙ 최근에는 주로 기본적인 디지털 게이트들을 포함하는 칩으로만 사용됨

 

MSI(Medium Scale IC)

⊙ 수백 개의 트랜지스터들이 집적되는 IC

⊙ 카운터(Counter), 해독기(Decoder)또는 시프트 레지스터(Shift register)와 같은 조합 회로나 순차 회로를 포함하는 칩

 

LSI(Large Scale IC)

⊙ 수천 개의 트랜지스터들이 집적되는 대규모 IC

⊙ 8비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩

제4세대 컴퓨터 분류의 계기가 됨

 

VLSI(Very Large Scale IC)

⊙ 수만 내지 수십만 개 이상의 트랜지스터들이 집적되는 초대규모 IC

⊙ 마이크로프로세서 칩들과 대용량 반도체 기억장치 칩

 

ULSI(Ultra Large Scale IC)

⊙ 수백만 개 이상의 트랜지스터들이 집적되는 32비트급 이상 마이크로프로세서 칩들과 수백 메가비트 이상의 반도체 기억장치 칩들 및 앞으로 출현할 고밀도 반도체 칩들을 지칭하기 위한 용어.

 

IC 사용에 따른 이점

⊙ 전기적 통로가 짧아짐 -> 동작 속도가 크게 상승

⊙ 컴퓨터 크기의 감소

⊙ 칩 내부의 회로들 간의 상호연결 -> 부품들의 신뢰도 향상

⊙ 전력소모 감소 및 냉각장치의 소형화

⊙ 컴퓨터 가격 하락

VLSI의 출현으로 개인용 컴퓨터(PC)가 개발됨

 

1.4.3 컴퓨터 시스템의 분류와 발전 동향

1. 개인용 컴퓨터 (PC)

특징 :

⊙ 소형, 저가

⊙ 성능 : 수십 년전의 대형 메인프레임 컴퓨터의 성능을 능가

주요 발전 동향 :

⊙ 성능이 개선된 새로운 마이크로프로세서들의 등장에 따라 PC의 성은은 계속 향상

⊙ 8비트, 16비트, 32비트 CPU사용으로 단어 길이 증가. (64비트 단위의 데이터 처리 및 기억장치 주소 사용 PC들도 출시)

⊙ 프로세서가 다수의 명령어 실행 유니트들 혹은 CPU코어들을 포함하는 슈퍼스칼라, 듀얼-코어 및 멀티-코어 구조로 발전

⊙ 칩의 집적도가 높아지면서 주변 요소들이 CPU 칩 내부에 포함됨에 따라, 속도와 신뢰도가 크게 향상

⊙ GPU(Graphic Processing Unit)를 계산보조장치로 사용함으로써 고속 그래픽 처리 뿐 아니라 복잡한 과학기술 계산들도 높은 속도로 처리할 수 있게 됨

⊙ 주기억장치와 보조저장장치의 용량 증가, 종류 다양화

종류(유형) :

⊙ 데스크탑 컴퓨터, 노트북 컴퓨터, 넷북, 태블릿 pc, 포켓 pc 등.

 

2. 임베디드 컴퓨터

⊙ 내장 컴퓨터라고도 부름

⊙ 기계 장치나 전자 장치의 내부에 포함되어, 그 장치들의 동작을 제어하는 컴퓨터들

ex) 가전제품, 컴퓨터 주변기기, 모바일폰, 비디오 게임기 등

⊙ 8비트 마이크로컨트롤러(micro-controller)를 이용한 초소형부터 32비트 컴퓨터에 이르기까지 다양

⊙ 최소의 비용으로, 필요한 만큼의 성능 제공

⊙ 실시간 처리(real-time processing)

⊙ IoT및 지능형 로봇의 핵심 요소로 사용되어 더욱 다양해지고 보급도 확대될 전망

 

3. 서버급 컴퓨터 시스템

워크스테이션(workstation)

⊙ CPU:64비트 마이크로프로세서 사용

⊙ 고속 그래픽 처리 하드웨어 포함

⊙ 주요 응용 : 3차원 동영상처리, 시뮬레이션, 컴퓨터 이용 설계(CAD) 등

⊙ OS : UNIX, LINUX

 

슈퍼미니컴퓨터(Super-minicomputer)

⊙ 시스템 구조 : 다중프로세서(multiprocessor) 구조

⊙ CPU의 수 : 20 ~ 30개

⊙ 성능 : VAX-11 미니컴퓨터 성능의 수십 배 이상

⊙ OS : UNIX, LINUX (multiprocessing, multi-user 지원)

⊙ 서버(Server)급 시스템의 다운사이징(downsizing)화 주도

-> 네트워크에 접속된 다수의 중형급 컴퓨터 시스템들을 응용(혹은 용도)별로 구분하여 사용하는 컴퓨팅 환경이 가능해지게 함

4. 메인프레임 컴퓨터(mainframe computer)

⊙ 중앙집중식 컴퓨팅을 위한 대형 컴퓨터

⊙ 대용량 저장장치 보유 

⊙ 대중 I/O채널을 이용한 고속 I/O 처리 능력 보유

⊙ 대규모 데이터베이스 저장 및 관리용으로 사용

⊙ 정부기관, 은행, 대형 인터넷 포탈 사이트 등에서 대규모 데이터베이스(빅데이터) 저장 및 관리용으로 사용

 

5. 슈퍼컴퓨터(SuperComputer)

⊙ 현존하는 컴퓨터들 중에서 처리 속도와 기억장치 용량이 다른 컴퓨터들에 비하여 상대적으로 월등한 컴퓨터 시스템들

⊙ 분류기준 : 계속적으로 상승

⊙ 주요 응용 분야들 : VLSI 회로 설계, 항공우주공학, 천문학(일기 예보), 구조 공학, 유전 탐사, 핵공학, 인공지능, 입체 영상처리 등과 같은 대규모 과학 계산 및 시뮬레이션

 

구조적 특징에 따른 슈퍼컴퓨터의 분류

1. 파이프라인 슈퍼컴퓨터(pipeline supercomputer)

⊙ 초기의 슈퍼컴퓨터 구조

⊙ 복잡한 초고속 연산회로들이 포함된, 적은 수의 CPU들로 구성

⊙ 연산장치 : 슈퍼파이프라인 구조를 이용하여 고속 벡터 계산 수행

⊙ 대표적인 시스템들 : CRAY Y-MP, CRAY-2, Fujitsu, VP2000, VPP500등

 

2. 대규모 병령컴퓨터(massively parallel computer)

⊙ 상호연결된 수백 혹은 수천 개 이상의 범용 프로세서들로 구성

⊙ 프로세서들이 하나의 큰 작업을 분담하여 동시에 처리하는 병렬처리 기술 이용

⊙ 시스템 사례 : IMB BlueGene/Q 슈퍼컴퓨터

3. 클러스터 컴퓨터(Cluster Computer)

⊙ 고속 LAN이나 네트워크스위치에 의해 서로 연결된 PC들 혹은 워크스테이션들의 집합체

⊙ 클러스터 미들웨어(Cluster middleware)를 이용하여 노드(단위 컴퓨터)들에 포함된 모든 자원들을 단일 시스템 이미지(Single System Image : SSI)로 통합

저렴한 가격으로 고성능 고신뢰 병렬컴퓨팅 환경 구축 가능

대형 웹서버 및 슈퍼컴퓨터 설계 개념으로 널리 사용중

 

관련글 더보기

댓글 영역