컴퓨터시스템은 기본적으로 하드웨어와 시스템 소프트웨어로 구성되며, 그러한 시스템에 각종 응용 소프트웨어들이 탑재되어 사용자와 상호 작용하면서 프로그램을 처리함.
하드웨어 : 컴퓨터에서 정보를 처리하는 물리적 실체
하드웨어의 구성 요소
① 메인 보드 : 주요 IC 칩들과 메모리 모듈 및 I/O 장치 인터페이스를 위한 슬롯들이 장착되는 기판으로서, 주 기판 혹은 마더 보드라고도 부름
② CPU 및 GPU 칩 : 멀티-코어 마이크로프로세서 및 그래픽처리유니트 칩
③ 주기억장치 모듈 : DDR4 SDRAM과 같은 메모리칩들이 장착된 보드
④ 확장 보드 : 사운드 카드와 같이 기능 추가를 위하여 장착되는 각종 보드들
⑤ 전원공급장치
⑥ 광 저장장치 : CD-ROM, DVD, 블루레이 디스크 등
⑦ 하드 디스크, SSD 등
⑧ 키보드
⑨ 마우스
①⓪ 디스플레이 모니터
소프트웨어 : 정보처리의 종류와 수행시간을 지정해주는 명령들의 집합
컴퓨터는 프로그램 코드들을 정해진 순서대로 실행하는데, 그 과정에서 필요한 데이터를 읽어서, 처리하고, 결과를 저장한다.
중앙처리장치(CPU) : 프로그램 실행과 데이터 처리를 담당하는 핵심 요소로서, 프로세서라고도 부름
기억장치 : 프로그램 코드와 데이터를 저장하는 장치
주기억장치 : 액세스 속도가 높지만, 프로그램 실행 중에만 사용될 수 있는 일시적 기억장치
보조저장장치 : 속도는 느리지만, 영구저장 능력을 가진 보조적 기억장치
입출력장치 : 사용자와 컴퓨터간의 상호작용을 위한 장치
주변장치 : CPU에 의해 직접 액세스되지 못하고 별도의 제어기를 통하여 액세스가 가능한 I/O 장치와 보조저장장치
컴퓨터가 받아들이고 처리하는 정보의 종류로는 프로그램 코드와 데이터가 있음. 디지털 컴퓨터에서 그러한 정보들은 모두 2진수를 나타내는 비트들의 조합으로 표현.
컴파일러 : 고급언어 프로그램을 기계어로 변환해주는 소프트웨어
기계어 : 컴퓨터 하드웨어가 이해할 수 있는 언어
어셈블리 언어 : 고급 언어와 기계어 사이에 각 CPU 고유의 중간 언어
어셈블리 프로그램 : 고급 언어와 기계어 사이의 중간 언어인 어셈블리 언어로 작성된 프로그램
명령어 : 어셈블리 명령어의 약칭
니모닉스 : 명령어가 지정하는 동작을 타나내는 간략화된 기호 ex) LOAD, ADD, STOR
어셈블러 : 어셈블리 프로그램을 기계어로 번역해주는 소프트웨어
기계어 프로그램은 2진수인 1과 0들의 조합으로 이루어짐. 이 예에서는 어셈블리 명령어들이 각각 8-비트 기계어로 번역됨.
연산코드 : CPU가 수행할 연산을 지정해 주는 비트들 비트 수
오퍼랜드 : 연산에 사용될 데이터 혹은 그것이 저장되어 있는 기억장치 주소
연산코드 필드에 저장된 '001'은 '레지스터 A로 적재하라'는 연산을 지정해주는 비트들
오퍼랜드 필드의 '00101'은 적잭될 데이터가 저장되어 있는 지억장치 주소를 가리킴.
위의 기계어에서는 오퍼랜드가 '5'번지를 가리키고 있으므로 이 기계어는 '기억장치 5번지의 내용을 읽어서 레지스터 A에 저장하라'는 명령을 나타내는 것.
명령어 형식 : 명령어의 비트 수와 용도 및 필드 구성 방법을 지정해주는 형식
단어 : CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
8비트 = 1바이트
시스템 버스 : CPU와 다른 요소들 간의 정보교환 통로
주소 버스 : 주소 정보를 전송하기 위한 신호선들의 집합
데이터 버스 : 데이터를 전송하기 위한 신호선들의 집합
제어 버스 : 시스템 요소들의 동작을 제어하기 위한 신호선들의 집합
주소는 CPU에 의해 발생되어 기억장치와 I/O 장치로 보내지는 정보이기 때문에, 주소 버스는 단방향성이지만, 데이터 버스는 읽기와 쓰기 동작을 모두 지원해야하므로 양방향 전송이 가능해야 함.
액세스 : 기억장치에 데이터를 쓰거나, 저장된 내용을 읽는 동작
CPU가 특정 기억 장소로부터 데이터를 읽고자 할 때 기억장치로 보내주어야 하는 정보는 주소와 읽기 신호임. 그리고 데이터를 저장하려는 경우에는 해당 기억 장소의 주소와 데이터 및 쓰기 신호를 보내주어야 함. 따라서 CPU와 기억장치 사이에는 그러한 정보들의 전송 통로인 주소 버스, 데이터 버스 및 제어 신호 선들이 접속되어야 함.
CPU는 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내면서 동시에 쓰기 신호를 활성화 시킴. 이 신호들은 모두 기억장치 쓰기 동작이 완료될 때까지 그대로 유지되어 있어야 함.
기억장치 쓰기 시간 : CPU가 기억장치로 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간
CPU는 데이터가 저장되어 있는 기억 장소의 주소를 주소 버스를 통하여 기억장치로 보내면서 동시에 읽기 신호를 활성화시킴. 그러면 일정 지연 시간이 경과한 후에 기억장치로부터 읽혀진 데이터가 데이터 버스상에 실리며, CPU는 그 데이터를 버스 인터페이스 회로를 통하여 읽어 들이게 됨. 여기서 지연 시간이란 주소를 해독하는데 걸리는 시간과 기억장치 내부에서 데이터를 인출하는데 걸리는 시간을 합한 시간임.
기억장치 읽기 시간 : CPU가 기억장치로 주소를 보낸 순간부터 읽기 동작이 완료될 때까지의 시간
I/O 장치에는 외부와의 데이터 입력 및 출력을 위한 각종 주변장치들이 모두 포함됨. 보조저장장치들도 CPU가 직접 제어하거나 액세스하지 못하고 I/O 장치들과 마찬가지로 별도의 인터페이스 회로 혹은 제어기를 통하기 때문에 I/O 장치들과 같은 방법으로 CPU와 접속되어야 함.
데이터 레지스터 : CPU와 I/O 장치간의 임시데이터 기억장치
상태 레지스터 : I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터
CPU가 키보드로부터 데이터를 읽어 들이는 과정 : 키보드의 어느 한 키가 눌러지면 그에 대응되는 8-비트 데이터가 키보드 제어기로 전송되어 데이터 레지스터에 저장되며, 동시에 상태 레지스터의 지정된 비트가 세트됨. 이 비트는 입력 데이터가 준비되었다는 것을 가리키므로, 여기서는 입력 준비 비트라고 부르기로 함. CPU는 데이터 입력을 원하는 시점에서 먼저 상태 레지스터를 읽어들여서 In_RDY 비트가 1로 세트되어 있는지를 검사. 만약 세트되어 있다면, 즉시 데이터 레지스터의 내용을 CPU로 읽어들임으로써 데이터 입력 과정이 완료. 그러나 만약 In_RDY 비트가 세트되지 않았다면, CPU는 상태 레지스터의 내용을 읽고 검사하는 동작을 반복하면서 기다림. 이러한 반복 검사 과정은 In_RDY 비트가 세트될 때까지, 즉 키가 눌러져서 데이터가 들어올 때까지 계속됨. 밑의 그림은 지금까지 설명한 과정을 흐름도로 표현한 것.
CPU가 데이터를 프린트 출력하는 과정도 유사함.
데이터 버퍼 : CPU와 I/O 장치간의 데이터 임시 기억장치인 데이터 레지스터의 다른 명칭
디스크 버퍼 : 디스크 상의 한 트랙의 내용을 모두 저장할 수 있는 트랙 버퍼 혹은 그 이상의 용량
프로그램 실행 : CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행
데이터 저장 : 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장
데이터 이동 : 디스크나 SSD에 저장되어 있는 프로그램과 데이터 블록을 주기억장치로 이동
데이터 입력 및 출력 : 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들임. 또한 CPU가 처리한 결과 값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력
제어 : 프로그램이 순서대로 실행되도록 혹은 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생
컴퓨터의 역사는 기계장치들이 자동적으로 네 가지 기본 연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 처음으로 수행할 수 있게 된 17세기로부터 시작
첫 번째 컴퓨터는 1642년에 프랑스의 철학자이며 과학자였던 Blaise Pascal에 의해 만들어짐. 이것은 덧셈과 뺄셈을 수행하는 기계적인 카운터였는데, 다이얼의 위치에 따라 10진수를 표시하는 여섯 개의 원형판 두 세트로 구성됨. 각 원형판은 일시적으로 숫자를 기억하는 레지스터로도 사용됨.
몇 년 후인 1671년에 독일의 철학자이며 수학자인 Gottfried Leibniz는 덧셈과 뺄셈뿐 아니라 Pascal의 계산기에 두 개의 원형판들을 추가하여, 반복적 방법으로 곱셈과 나눗셈을 수행할 수 있게 함. Leibniz의 기계는 네 가지 기능을 가진 계산기라고도 불리며, 그 이후 많은 계산 기계들의 조상이 됨.
19세기가 되어 현대 컴퓨터의 할아버지로 불리는 Charles Babbage라는 영국인에 의해 계산기 개발 기술은 새로운 단계로 접어들게 됨. 먼저 그는 간단하면서도 수없이 반복되는 수학 연산들을 사람 대신에 정확하게 계산해줄 수 있는 계산 기계의 개발을 시도하였는데, 첫 번째 기계는 Difference Engine이었음. Difference Engine은 표에 있는 수들을 자동적으로 계산하고, 그 결과를 금속 천공기를 거쳐서 프린트하도록 설계됨. Difference Engine은 Pascal의 계산 기계와 마찬가지로 덧셈과 뺄셈만 수행할 수 있었음.
이어서 Babbage는 어떠한 수학 연산도 자동적으로 수행할 수 있는 일반목적용 기계인 Analytical Engine을 개발함. 밑의 그림은 그 기계의 최종적인 설계 구조를 보여주고 있음. 주요 구성 요소로는 기본적인 네 가지 산술 연산들을 수행하는 연산 장치인 Mill과 기억장치인 Store가 있음. 그리고 입력장치로는 카드 판독기, 출력장치로는 프린터와 카드 천공기가 각각 접속되었음.
동작 원리를 보면, 연산 카드에 의해 Mill이 수행할 연산이 지정되고, 그 연산에 사용될 데이터의 주소는 변수 카드에 의해 지정됨. 그러면 Mill은 Store 내의 지정된 위치로부터 데이터를 읽어와 레지스터에 저장하고, 연산을 수행한 후에 결과 값을 다시 Store에 저장함. 여기서 연산 카드와 변수 카드의 내용을 합한 것이 현대 컴퓨터의 프로그램 코드에 해당함.
그 이전에 개발되었던 다른 계산 기계들과 비교해볼 때, 이 기계의 주요 장점은 일반목적용이라는 점과 프로그래밍이 가능하다는 것임. 또다른 기술적인 혁신은 프로그램의 실행 순서를 변경할 수 있다는 점임. 이 기계에서 Babbage는 조건 분기 명령어를 고안하였던 것. 현대 컴퓨터의 주요 요소들인 기억장치, CPU 및 I/O 장치를 모두 포함하고 있었으며, 프로그램 언어도 사용함.
Analytical Engine은 속도가 느렸고 신뢰도가 낮다는 단점을 가지고 있었음. 그 후 1900년대에 들어와서 진공관이 발명되면서 그러한 단점들이 개선될 수 있었고, 진공관을 이용한 최초의 전자식 컴퓨터인 ENIAC이 펜실베니아 대학에서 개발됨. 그러나 이 컴퓨터의 가장 큰 단점은 프로그램을 저장하고 변경하는것이 불가능하다는 점임.
'Stored-program'으로 알려진 이 개념은 ENIAC의 설계자이며 수학자인 폰노이만에 의해 제안됨.
• 2진수 체계를 사용
• 프로그램과 데이터를 내부에 저장함
이 개념은 폰노이만이 새로운 컴퓨터인 EDVAC의 개발을 위하여 1945년에 처음 발표함.
1946년에 폰노이만과 그의 동료들은 IAS 컴퓨터라고 불리는 새로운 컴퓨터 개발을 시작함. IAS 컴퓨터는 1952년에 완성되었으며, 그 이후에 출현한 거의 모든 일반목적용 컴퓨터들의 기본형이 됨. 밑의 그림은 IAS 컴퓨터의 구조임.
IAS의 구조가 현대 컴퓨터들과 근본적으로 차이가 없다는 것을 알 수 있음. 이러한 컴퓨터들에서는 프로그램이 순차적으로 실행됨. 즉, 특별한 이유가 없는 한, 프로그램 코드들은 기억장치에 저장된 순서대로 실행되며, 그 주소는 CPU의 내부 레지스터인 프로그램 카운터에 의해 지정됨. 이러한 구조설계 개념을 폰노이만 아키텍처라고 부름.
트랜지스터 : 초기(제1세대) 전자식 컴퓨터의 핵심 부품인 진공관을 대체한 전자 부품 진공관보다 작고 싸며 더 적은 열을 발산 반도체 재료인 실리콘으로 만들어진 고체 장치 제2세대 컴퓨터들의 핵심 부품 초기 컴퓨터들은 약 1000개의 트랜지스터들로 구성
집적 회로 : 수만 개 이상의 트랜지스터들을 하나의 반도체 칩에 집적시킨 전자 부품 제3세대 컴퓨터들의 핵심 부품
실리콘 웨이퍼 : 반도체 칩의 재료인 실리콘을 수평 방향으로 절단하여 만든 원형판
인쇄회로기판 : 전자회로들 간의 연결을 위한 회로 선들을 미리 부착시켜놓은 기판
IC 칩들을 집적도에 따라 분류
SSI : 수십 개의 트랜지스터들이 집적되는 소규모 IC 최근에는 주로 기본적인 디지털 게이트들을 포함하 는 칩으로만 사용됨
MSI : 수백 개의 트랜지스터들이 집적되는 IC 카운터, 해독기 또는 시프트 레지스터와 같은 조합 회로나 순차 회로를 포함하는 칩
LSI : 수천 개의 트랜지스터들이 집적되는 대규모 IC 8-비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩 제4세대 컴퓨터 분류의 계기가 됨
VLSI : 수만 내지 수십만 개 이상의 트랜지스터들이 집적되는 초대규모 IC. 마이크로프로세서 칩들과 대용량 반도체 기억장치 칩
ULSI : 수백만 개 이상의 트랜지스터들이 집적되는 32-비트급 이상 마이 크로프로세서 칩들과 수백 메가비트 이상의 반도체 기억장치 칩 들 및 앞으로 출현할 고밀도 반도체 칩들을 지칭하기 위한 용어로 서, VVLSI라고도 불림
IC 칩들의 사용으로 인한 이점
• 회로들이 더 근접하여 위치하게 됨으로써 전기적 통로의 길이가 줄어들어 동작 속도가 크게 상승
• 컴퓨터의 크기가 대폭 줄어듦
• 회로들 간의 상호 연결이 칩 내부에서 이루어지기 때문에 부품들의 신뢰성이 높아짐
• 전력 소모가 줄어들고 냉각장치가 간단해짐
• 집적도가 높아져도 칩의 가격은 거의 변하지 않았기 때문에, 결과적으로 컴퓨터의 가격이 하락하게 됨.
1970년대에 들어와 마이크로프로세서가 출현하면서 컴퓨터의 크기가 더욱 줄어들고 가격도 급속히 하락함에 따라, 1980년대 초부터 개인도 컴퓨터를 보유할 수 있게 됨.
1) 개인용 컴퓨터(PC)
특징
• 소형, 저가
• 성능 : 수십 년전의 대형 메인프레임 컴퓨터의 성능을 능가
주요 발전 동향
• 성능이 개선된 새로운 마이크로프로세서들의 등장에 따라 PC의 성능은 계속 향상
• 8-비트, 16-비트, 32-비트 CPU 사용으로 단어 길이 증가, 64-비트 단위의 데이터 처리 및 기억장치 주소 사용 PC들도 출시 중
• 프로세서가 다수의 명령어 실행 유니트들 혹은 CPU 코어들을 포함하는 슈퍼스칼라, 듀얼-코어 및 멀티-코어 구조로 발전
• 칩의 집적도가 높아지면서 주변 요소들이 CPU 칩 내부에 포함됨 에 따라, 속도와 신뢰도가 크게 향상
• GPU를 계산보조장치로 사용함으로써 고속 그래픽 처리 뿐 아니라 복잡한 과학기술 계산들도 높은 속도 로 처리할 수 있게 됨
• 주기억장치와 보조저장장치의 용량 증가, 종류 다양화
종류(유형)
데스크탑 컴퓨터, 노트북 컴퓨터, 넷북, 태블릿 PC, 포켓 PC, 등
2) 임베디드 컴퓨터(내장 컴퓨터)
• 기계 장치나 전자 장치들의 내부에 포함되어, 그 장치들의 동작을 제어하는 컴퓨터들 ex) 가전제품, 컴퓨터 주변기기, 모바일폰, 비디오 게임기 등
• 8-비트 마이크로컨트롤러를 이용한 초소형부터 32-비트 컴퓨터에 이르기까지 다양
• 최소의 비용으로, 필요한 만큼의 성능 제공
• 실시간 처리
• IoT 및 지능형 로봇의 핵심 요소로 사용되어 더욱 다양해지고 보급도 확대될 전망
3) 서버급 컴퓨터시스템
워크스테이션
• CPU : 64-비트 마이크로프로세서 사용
• 고속 그래픽 처리 하드웨어 포함
• 주요 응용 : 3차원 동영상처리, 시뮬레이션, 컴퓨터 이용 설계, 등
• OS : UNIX, LINUX
슈퍼미니컴퓨터
• 시스템 구조 : 다중프로세서 구조
• CPU의 수 : 20 ~ 30 개
• 성능 : VAX-11 미니컴퓨터 성능의 수십 배 이상
• OS : UNIX, LINUX (multiprocessing, multi-user 지원)
• 서버(server)급 시스템의 다운사이징(downsizing)화 주도 → 네트워크에 접속된 다수의 중형급 컴퓨터 시스템들을 응용(혹은 용도) 별로 구분하여 사용하는 컴퓨팅 환경이 가능해지게 함
다중프로세서시스템의 구조
4) 메인프레임 컴퓨터
• 중앙집중식 컴퓨팅을 위한 대형 컴퓨터
• IBM 360 및 370 계열, 3081, 3090 등으로 계속 발전하였으며, 최근 시스템 보안 및 통신 기능이 대폭 보강된 IBM zEnterprise 계열 출현
• 대용량 저장장치 보유
• 다중 I/O 채널을 이용한 고속 I/O 처리 능력 보유
• 대규모 데이터베이스 저장 및 관리용으로 사용
• 정부기관, 은행, 대형 인터넷포탈사이트 등에서 대규모 데이터 베이스 저장 및 관리용으로 사용
5) 슈퍼컴퓨터
• 현존하는 컴퓨터들 중에서 처리 속도와 기억장치 용량이 다른 컴퓨터들에 비하여 상대적으로 월등한 컴퓨터 시스템들
• 분류 기준: 계속적으로 상승
최초의 슈퍼컴퓨터인 CRAY-1의 속도는 100 MFLOPS
최근의 슈퍼컴퓨터들의 속도는 PFLOPS급 (수백만 배 향상)
• 주요 응용 분야들
VLSI 회로 설계, 항공우주공학, 천문학, 구조 공학, 유 전 탐사, 핵공학, 인공지능, 입체 영상처리 등과 같은 대규모 과학 계산 및 시뮬레이션
구조적 특징에 따라 세 가지로 분류
① 파이프라인 슈퍼컴퓨터
② 대규모 병렬처리시스템
③ 클러스터 컴퓨터
파이프라인 슈퍼컴퓨터
• 초기의 슈퍼컴퓨터 구조
• 복잡한 초고속 연산회로들이 포함된, 적은 수의 CPU들로 구성
• 연산장치: 슈퍼파이프라인 구조를 이용하여 고속 벡터 계산 수행
• 대표적인 시스템들 : CRAY Y-MP, CRAY-2, Fujitsu VP2000, VPP500 등
대규모 병렬컴퓨터
• 상호연결된 수백 혹은 수천 개 이상의 범용 프로세서들 로 구성
• 프로세서들이 하나의 큰 작업을 분담하여 동시에 처리 하는 병렬처리 기술 이용
클러스터 컴퓨터
• 고속 LAN이나 네트워크스위치에 의해 서로 연결된 PC들 혹 은 워크스테이션들의 집합체
• 클러스터 미들웨어를 이용하여 노드들에 포함된 모든 자원들을 단일 시스템 이미지로 통합
• 저렴한 가격으로 고성능 고신뢰 병렬컴퓨팅 환경 구축 가능
• 대형 웹서버 및 슈퍼컴퓨터 설계 개념으로 널리 사용중