전자계산기구조 - Chap1.컴퓨터시스템

1. 컴퓨터 시스템

컴퓨터 시스템의 개념적 구성

컴퓨터 시스템 :
HW + SW

HW:
물리적 부품. 전자적 기계적 형태

SW:
하드웨어에 순서를 지시하는 명령. 유저를 상대로 하는 프로그램.
HW에서 작업을 수행할 때 순서와 방법을 지시한 명령어 집합.
펌웨어:하드웨어 제어에 필수적임. 처음 시작 시 세팅하도록 되어있다. 고정도가 높다.
기본적인 제어 프로그램으로, 효율을 높이기 위해 ROM에 저장되어있다. 하드웨어에서 분리됨.

컴퓨터 시스템 4대 기능

입력 : 키보드 등 입력장치를 통해 외부로부터 정보를 받아들이는 기능
처리 : CPU를 통해 산술 연산, 논리 연산을 수행하여 정보 가공하는 기능.
저장 혹은 보관 : 하드디스크 등 저장장치에 입력된 정보나 처리된 정보를 저장하는 기능.
출력 : 저장된 정보를 모니터 등 외부로 출력.

컴퓨터가 이해할 수 있는 디지털 정보 (비트, 바이트, 워드)

비트 : 정보 구성 최소 단위.

1비트 => 0,1 두가지 정보 나타낼 수 있음.
2비트 => 00,01,10,11 네가지 정보를 나타낼 수 있음.

바이트 : 정보 표현의 기본 단위
워드 : 중앙처리장치에서 한 번에 처리할 수 있는 비트의 집합.
8비트를 한 번에 처리하면 워드는 8비트, 64비트를 한 번에 처리할 수 있으면 워드는 64비트.

냉장고 워드 = 8비트
64비트 컴퓨터의 워드 = 64비트 : 한번에 처리할 수 있는 비트가 64비트. 8바이트.

비트와 달리 바이트, 워드는 의미를 갖는 정보.
제어장치 : 입력된 워드 단위 정보를 명령어로 해석
연산장치 : 입력된 워드 단위 정보를 수치와 같은 데이터로 취급

2. 컴퓨터 하드웨어

컴퓨터 시스템은 하드웨어, 소프트웨어로 구성된다.
컴퓨터 시스템의 하드웨어는 기능에 따라
중앙처리장치, 기억장치, 주변장치로 구성된다.

중앙처리장치 CPU

CPU : 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고
명령을 실행하는 장치. 논리적 구성 요소. 오로지 논리 연산만 가능하다. 산술 연산은 불가능.
1+1 = 1. 1+0 = 1. 0+0=0.

마이크로프로세서 : CPU의 집적회로(Intergrated circuit)형태. 물리적 구성 요소

CPU 구성
제어장치, 연산장치, 레지스터, CPU 내부 버스 등으로 구성

1) 제어장치 : 명령어를 인출 및 해독하여 연결된 장치에 제어 신호를 보냄.
제어장치는 워드 단위 정보를 명령어로 해석

2) 연산장치 : 제어 신호에 따라 명령어가 의도하는 대로 데이터를 실행하기 위해
CPU 내부에서 데이터를 처리하는 장치를 말하며, 실행장치 혹은 산술논리장치라고도 불림.
연산장치는 워드 단위 정보를 수치와 같은 데이터로 해석

3) 레지스터 : 데이터를 처리하는 동안 사용할 값이나 연산의 중간 결과를
일시적으로 기억하는 고속 기억장치이다. ex)누산기, 명령어 레지스터

4) CPU 내부 버스 : 제어장치(1), 연산장치(2), 레지스터(3) 등
CPU 내부 구성 요소를 연결하는 배선의 집합으로 데이터 신호, 주소 신호, 제어 신호를 전송.

기억 장치

일반적으로 기억장치라고 하면 CPU에 직접 연결되어 있는 메인 메모리를 의미한다. 기억장치는 컴퓨터 시스템에 의해 처리될 프로그램과 데이터를 저장하기 위한 장치이다.
기억장치는 저비용, 고효율로 이용하기 위해 일반적으로 계층적 기억장치로 구성하여 사용.

CPU에서 즉각적으로 수행할 프로그램과 필요한 데이터를 기억하기 위한 장치로서
DRAM(Dynamic Random Access Memeory) 사용

::계층적 기억 장치 비교::
용량 : CPU 내부 기억장치 레지스터 < 캐시 메모리(SRAM) < 메인 메모리(DRAM) < 보조 기억장치 (HDD 등)
효율 및 비용 : CPU 내부 기억장치 레지스터 > 캐시 메모리(SRAM) > 메인 메모리(DRAM) > 보조 기억장치 (HDD 등)

주변장치

CPU와 메인 메모리를 제외한 나머지 구성 요소를 말함.
입출력장치라고도 한다.
크게 입력장치, 출력장치, 저장장치로 구분한다.

입력 장치

처리할 데이터를 외부에서 입력하기 위한 장치.
인간이 사용하는 문자, 숫자 소리 등과 같은 데이터 -> 0,1 로 코드화된 컴퓨터가 사용할 수 있는 데이터로 변환
ex. 키보드, 마우스, 마이크

출력 장치

처리한 데이터를 외부로 보내기 위한 장치.
0,1 과 같은 컴퓨터가 사용하는 데이터 -> 인간이 사용하는 문자, 숫자, 소리 등과 같은 데이터로 변환
ex. 모니터, 프린터, 스피커

저장장치

주변장치로 분류한다. 저장장치는 메인 메모리의 제한적인 기억 용량을 보조하는데 사용.
일반적으로 전원이 차단되어도 기억 내용을 상실하지 않는다. 상대적으로 속도가 느리지만 비용이
저렴하고 대용량의 데이터를 거의 영구적으로 저장할 수 있다.

기타 하드웨어

버스, 메인보드

버스

컴퓨터 시스템의 구성하는 기능장치를 연결하는 배선의 집합
컴퓨터 시스템의 구성 요소는 버스를 통해 각종 신호를 전달 및 교환
CPU, 기억 장치(메인 메모리), 주변 장치를 유기적으로 연결.
데이터 버스 + 주소 버스 + 제어 버스 => 시스템 버스

데이터 버스 :
CPU와 메인메모리, 주변장치 사이에 데이터를 전송하는 배선 집합.
데이터 버스를 구성하는 배선의 수는 CPU가 한 번에 전송할 수 있는 비트 수를 결정한다. (워드)

주소 버스 :
CPU가 시스템 구성 요소를 식별하기 위한 주소 정보를 전송하는 배선의 집합이다.
주소 버스를 구성하는 배선의 수는 CPU와 접속할 수 있는 최대 메모리의 용량을 결정한다.

제어 버스 :
CPU가 시스템 구성 요소의 동작을 제어하는 데 사용되는 배선의 집합.
제어 신호에 의해 연산장치의 종류 및 메인 메모리의 읽기`쓰기 동작이 결정된다.

메인보드

마더보드, 주회로기판, 시스템보드라고도 불림
CPU나 메인 메모리, 하드디스크 등이 컴퓨터 성능을 좌우하는 기능장치라면,
메인 보드는 이러한 기능장치 사이의 호환성이나 확장의 범위를 결정한다.
따라서 메인보드는 시스템 전반의 안정적인 동작 여부를 좌우한다.
CPU, 메모리, BIOS(Basic Input Output System) 등과 같은
시스템의 중요 기능장치 대부분을 부착할 수 있다.
주변 장치를 위한 확장 슬롯, 각종 단자 및 커넥터 제공

3. 컴퓨터 소프트웨어

소프트웨어는 명령의 집합으로 구성된 컴퓨터 프로그램 및 그와 관련된 문서를 총칭함.

소프트웨어 품질은 컴퓨터 하드웨어의 사용 효율과 사용 환경을 결정한다.
하드웨어가 급속히 발전함에 따라 가격이 저렴해지고, 교체 주기가 짧아져서 소프트웨어 중요성이
더욱 커지고 있다.

소프트웨어는 크게 시스템 소프트웨어, 응용 소프트웨어로 구분된다.

시스템 소프트웨어

시스템 소프트웨어는 컴퓨터 하드웨어의 기능을 실행하기 위해
필수적인 작업(명령어 해석, 하드디스크에 저장, 주변장치와의 통신 등)을 하거나
응용 소프트웨어의 실행을 지원하는 소프트웨어를 말한다. 시스템 소프트웨어로는 운영체제,
장치 드라이버, 컴파일러, 인터프리터, 번역기, 링커, 로더 등이 있다.

운영체제 Operating System :
컴퓨터 자원을 관리하고 응용 프로그램의 실행 환경을 제공하는 소프트웨어

장치 드라이버 :
컴퓨터에 온라인으로 연결된 주변 기기를 제어하는 운영체제 모듈

컴파일러와 인터프리터 :
고급 언어로 작성된 원시 프로그램을 컴퓨터가
이해하는 저급언어로 변환하는 소프트웨어로서 일종의 번역기.

링커 :
다수로 분할하여 작성된 프로그램에 의해 생성된 목적 프로그램 또는
라이브러리 루틴을 결합하여 실행 가능한 하나의 프로그램으로 연결하는 소프트웨어
(라이브러리 루틴 : 컴퓨터 시스템에서 자주 사용되는 기계어 루틴을
별도로 관리하기 위해 모아둔 목적 프로그램)

로더 :
디스크와 같은 저장장치에 보관된 프로그램을 읽어
메인 메모리에 적재한 후 실행 가능한 상태로 만드는 소프트웨어

응용 소프트웨어

컴퓨터 시스템을 특정 분야에 사용하기 위해 제작된 소프트웨어.
애플리케이션, 앱, 어플 이라고도 한다.
사무, 그래픽, 멀티미디어, 게임, 통신 및 네트워크 등
다양한 응용 소프트웨어가 있다.

응용 소프트웨어 용도 예시
사무용 한글,MS 오피스,리브레 오픈 오피스
그래픽용 포토샵
멀티미디어용 Gom플레이어
게임용 스타크래프트
통신 및 네트워크 크롬,카카오톡

4. 운영체제와 부팅

운영체제

컴퓨터 시스템은 매우 복잡하고 많은 하드웨어 자원으로 구성되어 있는데, 이것을
아키텍쳐가 제공하는 명령어로 하드웨어 자원을 사용하거나 관리하기가 매우 어렵다.
운영체제 자원을 효율적으로 관리하고, 응용 프로그램의 공통된 서비스를 제공하는 소프트웨어의 모음이다.
운영체제는 실제 컴퓨터보다 더욱 좋은환경의 가상 컴퓨터를 사용자에게 제공하기 위해
입출력 동작, 메모리 할당과 같은 세부 사항을 숨긴다.

- 운영체제 주요 기능

  • 하드웨어 자원 관리
  • 사용자-하드웨어 간 인터페이스 역할
  • 하드웨어의 고장 탐색, 오류 처리, 보안 유지

부팅

운영체제가 컴퓨터 하드웨어를 관리하고, 응용 소프트웨어를 실행할 수 있도록 컴퓨터에
시동을 거는 것으로, 보조기억장치(HDD)에 저장된 운영체제를 메인메모리(RAM)에 불러들이는 과정을 말한다.
부트스트랩이라고도 한다.

운영체제는 용량이 매우 큰 시스템 소프트웨어로
컴퓨터 시스템을 동작시키고 응용 소프트웨어의 실행을 지원하는 플랫폼을 제공한다.
따라서 컴퓨터에는 반드시 운영체제가 실행되고 있어야 한다.

그런데 컴퓨터의 전원을 켜면 다음과 같은 상황이 발생한다.

  • 모든 소프트웨어는 하드웨어에서 동작하기 위해 메인 메모리인 RAM에 적재되어야 한다.
    CPU는 RAM에 적재된 프로그램만 실행할 수 있기 때문이다.

  • RAM은 휘발성기억장치이므로 전원이 차단되면 RAM에 저장된 모든 내용이 소멸된다. 즉,
    컴퓨터의 전원을 새롭게 인가하면 RAM에 아무 내용이 없다.

  • 운영체제가 RAM에 적재되어 있지 않기 때문에, 컴퓨터의 전원을 켜면 운영체제를 하드웨어에서
    실행할 수가 없다.

  • 따라서 응용 소프트웨어도 실행할 수 없다.

해결책 : ROM(Read Only Memory), 부트로더(부트스트랩 로더)
모든 소프트웨어는 하드웨어에서 동작하기 위해 메인 메모리인 RAM에 적재되어야 한다.
CPU는 RAM에 적재된 프로그램만 실행할 수 있기 때문이다.
보조기억장치(HDD)에 저장된 운영체제를 메인 메모리에 단계적으로 적재하는 소규모 프로그램이다.
부트로더는 ROM에 저장된 고정 프로그램으로 펌웨어에 속한다. ROM은 비휘발성 메모리이다
기본적으로 저장된 내용을 수정할 수 없음.
ROM에 저장된 부트로더는 운영체제의 위치를 알기 때문에 운영체제를 RAM에 적재할 수 있다.

5. 컴파일러와 인터프리터

하드웨어는 저급언어인 기계어만 인식한다.
소프트웨어는 일반적으로 자연어에 가까운 고급언어로 작성되지만,
다음과 같은 경우에는 아직까지도 고급언어대신 기계어를 연상부호화한 어셈블리어로 작성한다.

  • 속도, 크기가 매우 중요한 프로그램
  • 속도가 매우 중요한 프로그램 일부
  • 오래된 컴퓨터, 특수 컴퓨터에 사용되는 프로그램
  • 프로세서 동작모드를 바꿀 필요가 있는 프로그램

최근에는 컴파일러 발달로 속도, 크기가 매우 중요한 프로그램이라도
고급언어로 작성하는 경향이 있다.

컴파일러

고급언어로 작성된 원시 프로그램을 저급언어로 구성된 목적 프로그램(Object Program)으로
변환하는 소프트웨어.
입력 : 원시 프로그램
출력 : 목적 프로그램
ex. Java, C, C++

원시 프로그램을 전체적으로 분석하여 변환하므로 많은 시간이 소요되지만,
변환 과정을 한 번만 거치면 항상 실행파일을 수행할 수 있고,
프로그램 최적화로 프로그램 실행속도가 빠르다.

일반적으로 고급 언어 한 문장은 다수 저급언어로 대체되어야 동일한 효과를 나타낸다.
저급 언어로의 변환 과정이 끝나면 목적 프로그램은 실행을 위해 컴퓨의 메모리에 적재되어야 한다.

인터프리터

고급언어에서 하나의 명령어를 분석하여 동일한 효과를 가진 저급언어 명령어로 변환한 후
저급언어를 실행시키며, 전체 프로그램이 실행될 때까지 이 과정을 반복하는 소프트웨어이다.
ex. R, Python, Ruby

원시 프로그램을 명령어 단위로 변환하고 프로그램 전체에 대해 분석하지 않으므로 변환 시간이 짧다.
그러나 프로그램을 실행할 때마다 변환 과정이 필요하고, 별도의 실행 파일이 존재하지 않는다.
프로그램 최적화가 불가능해서 프로그램 실행 속도가 느리다.

5. 컴퓨터의 분류

처리 능력 / 사용 목적 / 응용 분야 / 사용 데이터 / 아키텍쳐에 따라 다양하게 분류할 수 있다.

처리 능력에 의한 분류

태블릿 컴퓨터 :
터치스크린 방식으로 프로그램 실행가능한 모바일 인터넷 기기를 의미.
검색, 게임에 활용

개인용 컴퓨터 :
PC라고 하며, 노트북, 데스크톱이 있음. 크기가 작고 저렴. 가정 및 사무실에
개인 일처리에 주로 사용.
워크스테이션 :
고사양 하드웨어부품.
가격이 높지만 입출력 및 통신 능력이 우수.
다중사용자 시스템으로 개인이나 소수 전문가들이 특수한 작업 수행하는데 사용.

미니컴퓨터, 메인프레임 컴퓨터 :
주로 공동 작업용, 기업용으로 사용.
서버 역할을 수행하는 중-대형 컴퓨터를 의미한다.
규모에 따라 미니컴퓨터 or 메인 프레임 컴퓨터.
안정성 높고, 주변장치 포함 모든 장비를 수용할 넓은 공간 필요.
발열에 따른 온도 조절을 위한 냉각 장치, 정전에 대비한
무정전 전원장치 등도 갖춰야 한다.

슈퍼컴퓨터 :
복잡한 연산작업 초고속 처리하는 고성능 컴퓨터. 매우 비싸다.
기상청, 연구원 등에서 기상 예측, 항공 우주, 재난 예방,
에너지 분야 등과 같은 분야에서 사용.

사용 목적에 따른 분류

전용 컴퓨터, 특수 목적 컴퓨터 :
특정 목적을 위해 설계된 컴퓨터로, 특별한 목적에만 사용할 수 있음.
가격이 저렴할 수 있지만, 대부분 소수의 주문 생산으로 가격이 높다.
의료용, 공장의 자동 제어같은 한정된 목적.

범용 컴퓨터 :
다목적 용도로 설계된 컴퓨터. 대부분 일반적인 컴퓨터.
대량 제작되어 사무 처리, 과학 계산, 데이터 처리 등에 사용.
다양한 소프트웨어 개발중.

응용 분야에 의한 분류

데스크톱 컴퓨터 :
처리 능력에 의한 분류상 개인용 컴퓨터가 이 범주에 속한다.
가격이 저렴하며 대규모 시장 형성중.

서버 :
미니컴퓨터, 메인프레임 컴퓨터, 슈퍼컴퓨터가 이 범주에 속한다.
가격, 성능의 폭이 매우 넓고 주로 기업 및 기관용.

임베디드 컴퓨터 :
다른 시스템에 내장되어 미리 정해진 특정 기능을 수행하는 컴퓨터
다른 시스템과 일체형으로 공급. 자동차, 텔레비전, 비행기 등 시스템에
내장되어 특수 목적 수행 혹은 시스템 제어 역할. 휴대전화, 태블릿 등도 이
범주에 속한다.

사용 데이터에 의한 분류

디지털 컴퓨터 :
불연속적인 자료의 조합으로 구성된 디지털 데이터를 처리하는 컴퓨터.
연산-정보처리 기능을 수행해 이용 범위가 매우 넓다. 대부분의 컴퓨터가
여기에 속함.

아날로그 컴퓨터 :
전압, 전류, 온도 등 연속적이고 계량적인 데이터(아날로그 데이터)를
처리한 후 곡선이나 그래프로 출력하는 컴퓨터.
정밀도 떨어지고 비효율적.

컴퓨터의 구조, 구성(구현), 실현

뒤에서 위 용어가 자주 등장한다.
용어가 매우 중요하니까 잘 알아두고 넘어가자.

컴퓨터 구조

컴퓨터는 하드웨어, 소프트웨어,
명령어 집합 구조(ISA, Instruction Set Architecture)로 구성된다.

컴퓨터 구조는 하드웨어와 소프트웨어의 인터페이스에 대한 설명을 의미하는
명령어 집합 구조에 해당.
컴퓨터 아키텍쳐 or CPU 아키텍처라고도 함.
프로그래머에게 보이는 시스템의 속성이다.
프로그램의 논리적 실행에 직접 영향을 미치는 시스템의 특성, 즉 컴퓨터가 할 수 있는 기능을 나타내는 명령어 집합,
다양한 데이터 형식을 표현하는데 사용되는 비트의 수,
레지스터의 개수나 형식,
메모리 주소 지정 방식 등을 의미한다.

컴퓨터의 구조를 보면
컴퓨터가 무엇을 할 수 있는지 (기능)을 설명해주지만,
컴퓨터가 어떻게 만들어졌는지는 구조를 통해 알 수 없다.

컴퓨터 구성(구현)

CPU와 각종 구성 요소, 관련 회로의 인터페이스에 대한 세부 사항 등
프로그래머에게 투명한 하드웨어 내역을 의미한다.
컴퓨터 구현 이라고도 한다.
캐시 메모리, 직렬 덧셈장치, 병렬 덧셈장치
고정결선식 제어장치, 마이크로프로그래밍식 제어장치
등에 관련된 선택

덧셈 장치 중 어느 것을 선택하더라도
프로그래머가 원하는 덧셈 기능을 사용할 수 있으나
속도, 가격 등만 차이가 날 뿐이다.
파이프라이닝, 메모리 계층 구조 및 메모리 인터리빙 등도
컴퓨터 구성에 관한 내용이다.

컴퓨터 실현

어떤 컴퓨터 부품이 사용되며, 그 부품들이 어떻게
서로 연결되고 배치되는지 결정한다.
신기술이나 부품의 신뢰성. 유지-보수, 냉각 방법,
실딩, 패키징 등과 관련

8. 하드웨어와 소프트웨어의 상호 조정

=> 컴퓨터 시스템의 기능을 하드웨어 수준에서 구현하면 속도가 빨라지고 비용이 상승한다.
그러나 하드웨어의 기능을 소프트웨어로 대체하면 높은 융통성과 사용자 편의성을 얻을 수 있다.

댓글남기기