- 컴퓨터 시스템 -
: 하드웨어 + 시스템 소프트웨어(system software)
① 하드웨어(hardware) : 컴퓨터에서 정보를 처리하는 물리적 실체
1. 메인보드(main board)
: 주요 IC 칩들과 메모리 모듈 및 I/O 장치 인터페이스를 위한 슬롯들이 장착되는 기판.
주 기판, 마더 보드(mother board)라고도 함.
2. CPU 및 GPU칩
: 멀티-코어 마이크로프로세서 및 그래픽처리유니트 칩.
3. 주기억장치 모듈(main memory module)
: 메모리칩들이 장착된 보드.
4. 확장 보드(expamsopn board)
: 사운드 카드(sound card)와 같이 기능 추가를 위하여 장착되는 각종 보드들.
5. 전원공급장치(power supply)
6. 광 저장장치(optical storage device)
: CD-ROM. DVD, 블루레이 디스크 등
7. 하드 디스크, SSD 등
8. 키보드
9. 마우스
10. 디스플레이 모니터
② 소프트웨어(software) : 정보처리의 종류와 수행 시간을 지정해주는 명령(command)들의 집합.
소프트웨어는 하드웨어에 의존적임.
즉, 컴퓨터의 기본적인 능력은 하드웨어에 의해 결정되고,
소프트웨어는 하드웨어가 제공해주는 기능들을 이용하여 최종적인 결과를 얻을 수 있도록 도와줌.
- 컴퓨터의 기본 구조 -
중앙처리장치(Central Processing Unit = CPU)
: 프로그램 실행과 데이터 처리를 담당하는 핵심 요소로서, 프로세서(processor)라고도 부름.
사실상 컴퓨터의 특성과 성능에 가장 큰 영향을 미치는 구성요소.
CPU가 한 번에 처리하는 데이터의 길이(비트 수)에 따라 8비트, 32비트, 64비트 컴퓨터로 분류가 되며,
컴퓨터의 이론적인 처리 속도는 CPU의 성능에 의해 결정됨.
기억장치(memory)
: 프로그램 코드와 데이터를 저장하는 장치.
① 주기억장치(main memory)
: 액세스 속도가 높지만, 프로그램 실행 중에만 사용될 수 있는 일시적 기억장치.
메인 보드 상에서 CPU 가까이 위치함.
반도체 기억장치 칩(semiconductor memory chip)들로 이루어져 고속의 읽기 및 쓰기가 가능.
가격이 높고 면적을 많이 차지하여 저장 용량에 한계가 있음.
영구 저장 능력이 없어 프로그램 실행 중에만 일시적으로 사용되는 기억장치.
② 보조저장장치(auxiliary storage device)
: 속도는 느리지만, 영구저장능력을 가진 보조적 기억 장치.
2차 기억장치(secondary memory)라고도 함.
하드 디스크(hard disk), SSD(solid-state drive)와 같이 영구 저장 능력을 가진 기억장치들을 말함.
저장 밀도가 높고 비트당 가격이 저렴함.
기계적인 장치가 포함되거나 쓰기 동작이 복잡한 반도체 칩들을 이용하기 때문에 속도가 느림.
보조저장장치들은 CPU가 직접 액세스(읽기/쓰기)하지는 못하고, 별도의 제어기를 통해서만 가능함.
③ 입출력장치(I/O device)
: 사용자와 컴퓨터간의 상호작용을 위한 장치.
CPU와 직접 데이터를 교환할 수 없으며, 각 장치를 위한 별도의 제어기가 CPU로부터 명력을 받아서 장치의 동작을 제어하고 데이터를 이동시키는 일을 수행함.
주변장치(peripheral device)
: CPU에 의해 직접 액세스되지 못하고 별도의 제어기를 통하여 액세스가 가능한 I/O장치와 보조저장장치들을 의미함.
- 정보의 표현과 저장 -
컴퓨터가 받아들이고 처리하는 정보의 종류로는 프로그램 코드(program code)와 데이터(data)가 있으며,
이러한 정보들은 2진수(binary number)를 나타내는 비트(bit)들의 조합으로 표현됨.
컴파일러(compiler)
: 고급언어 프로그램을 기계어로 변환해주는 소프트웨어.
기계어(machine language)
: 컴퓨터 하드웨어가 이해할 수 있는 언어.
기계 코드(machine code)라고도 함.
고급 언어들은 어느 컴퓨터에서 사용되든 거의 동일하지만, 기계어는 CPU마다 서로 다름.
따라서 이러한 언어상의 차이를 해결하기 위해 고급 언어와 기계어 사이에는 각 CPU 고유의 중간 언어인 어셈블리 언어가 존재함.
어셈블리 언어(assembly language)
: 고급 언어와 기계어 사이의 중간 언어.
어셈블리 명령어(assembly instruction)라고도 함.
어셈블리 프로그램(assembly program)
: 어셈블리 언어로 작성된 프로그램.
고급 언어 프로그램 -> 어셈블리 프로그램 -> 기계어 프로그램
고급 언어 프로그램이 컴퓨터에서 처리되기 위해 어셈블리 프로그램으로 번역되고,
그런 다음 해당 CPU를 위한 기계어 프로그램으로 번역됨.
명령어(instruction)
: 어셈블리 명령어(assembly instruction)의 약칭.
니모닉스(mnemonics)
: 명령어가 지정하는 동작을 나타내는 간략화된 기호.
명령어는 CPU가 수행해야 할 동작뿐 아니라, 처리할 데이터가 저장되어 있는 기억장치 주소나 레지스터 번호도 구체적으로 지정해줌.
따라서 명령어들은 CPU의 내부 구조와 밀접한 관계가 있기 때문에, 어셈블리 프로그래머는 컴퓨터의 내부 구조를 알고 있어야 프로그램을 작성할 수 있음.
어셈블리 언어로 작성된 프로그램은 어셈블러가 기계어 프로그램으로 번역해줌.
어셈블러(assembler)
: 어셈블리 프로그램을 기계어로 번역해주는 소프트웨어.
- 기계어 해석 -
예시) 001(연산코드) 00101(오퍼랜드)
연산코드 필드(operation code field)에 저장된 '001'은 '레지스터 A로 적재하라'는 연산을 지정해주는 비트.
오퍼랜드 필드(operand field)에 저장된 '00101'은 적재될 데이터가 저장되어 있는 기억장치 주소.
따라서, 위 기계어는 '기억장치 5번지의 내용을 읽어서 레지스터 A에 저장하라'는 명령을 나타내고 있음.
명령어는 비트들의 개수와 용도 및 주소지정 방식에 따라 다양하게 구성될 수 있음.
명령어 형식(instruction format)
: 명령어의 비트 수와 용도 및 필드 구성 방법을 지정해주는 형식.
번역된 기계어들은 순서대로 기억장치에 저장됨.
단어(word)
: CPU에 의해 한 번에 처리 될 수 있는 비트들의 그룹.
각 기억 장소에 저장되는 데이터 단위.
- 시스템의 구성 -
1. CPU와 기억장치의 접속.
1. 시스템 버스(system bus)
: CPU와 다른 요소들 간의 정보교환 통로.
① 주소 버스(address bus)
: 주소 정보를 전송하기 위한 신호선들의 집합.
각 주소 선은 하나의 주소 비트를 전송하는 데 사용되며, 전체 주소 선들의 개수가 CPU와 접속될 수 있는 최대 기억장치 용량을 결정해줌.
주소 버스의 폭(width) : CPU가 발생하는 주소 비트들의 수.
폭이 16비트일 경우. 최대 2의 16승 = 65,536개(즉, 64K개) 기억 장소들의 주소를 지정할 수 있음.
단방향성(uni-directional)
② 데이터 버스(data bus)
: 데이터를 전송하기 위한 신호선들의 집합.
데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정해줌.
양방향 전송(bi-directional transfer)
③ 제어 버스(control bus)
: 시스템 요소들의 동작을 제어하기 위한 신호선들의 집합.
제어 신호 선들의 수는 CPU 혹은 시스템 구성에 따라 달라짐.
기본적인 제어 신호들로는 기억장치 읽기/쓰기 신호와 I/O 읽기/쓰기 신호가 있음.
액세스(access)
: 기억장치에 데이터를 쓰거나. 저장된 내용을 읽는 동작.
기억장치 쓰기 시간(memory wirte time)
: CPU가 기억장치로 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 순간.
CPU는 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내면서 동시에 쓰기 신호를 활성화 시킴.
이 신호들은 모두 기억장치 쓰기 동작이 완료될 때까지 그대로 유지되어 있어야 함.
기억장치 읽기 시간(memory read time)
: CPU가 기억장치로 주소를 보낸 순간부터 읽기 동작이 완료될 때까지의 순간.
CPU는 데이터가 저장되어 있는 기억 장소의 주소를 주소 버스를 통하여 기억장치로 보내면서 동시에 읽기 신호를 활성화시킴.
일정 지연 시간이 경과한 후에 기억장치로부터 읽혀진 데이터가 데이터 버스상에 실리며, CPU는 그 데이터를 버스 인터페이스 회로(bus interface circuit)를 통하여 읽어 들이게 됨.
지연 시간
: 주소를 해동(decode)하는데 걸리는 시간과 기억장치 내부에서 데이터를 인출하는데 걸리는 시간을 합한 시간.
2. CPU와 I/O 장치의 접속.
I/O 장치 및 보조저장장치를 CPU와 접속하는 기본 원리.
1. CPU와 I/O 장치들 간의 접속.
CPU가 키보드로부터 데이터를 읽어 들이는 과정.
: 키보드의 어느 한 키가 눌러짐.
-> 그에 대응되는 8비트(ASCII 코드 7비트 + 패리티 비트) 데이터가 키보드 제어기로 전송.
-> 데이터 레지스터에 저장됨. 동시에 상태 레지스터의 지정된 비트가 세트됨.
이 비트는 입력 데이터가 준비되었다는 것을 가리킴. 입력 준비(In_RDY) 비트라고 함.
-> CPU는 데이터 입력을 원하는 시점에서 먼저 상태 레지스터를 읽어 들여 In_RDY 비트가 1로 세트 되어 있는지 검사.
-> 세트가 되어 있을 경우, 즉시 데이터 레지스터의 내용을 CPU로 읽어 들여 입력 과정을 완료함.
-> 세트가 되어 있지 않을 경우. CPU는 상태 레지스터의 내용을 읽고 검사하는 동작을 반복하면서 기다림.
In_RDY 비트가 세트될 때까지 반복됨. 즉, 키가 눌러져서 데이터가 들어올 때까지 계속 반복됨.
CPU가 데이터를 프린트 출력하는 과정.
: CPU는 프린터 제어기 내의 상태 레지스터를 읽어, 데이터 출력 준비(Out_RDY) 비트를 검사함.
프린터가 이전에 받은 데이터에 대한 프린트 동작을 완료하고 다음 프린트 동작을 시작할 준비가 되었는지 검사하는 절차.
-> Out_RDY 비트가 1로 세트 되었을 경우, CPU는 프린트할 데이터를 프린트 제어기의 데이터 레지스터로 쓰고, 프린트 시작 신호를 보냄.
-> 제어기는 프린터의 하드웨어를 적절히 구동하여 그 내용을 프린트 함.
-> Out_RDY 비트가 1로 세트 되지 않았을 경우, CPU는 그 비트에 대한 검사를 반복하면서 기다림.
데이터 레지스터(data register)
: CPU와 I/O 장치간의 임시 데이터 기억장치.
데이터 버퍼(data buffer)라고도 함.
상태 레지스터(status register)
: I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터.
하드 디스크, SSD(solid-state drive) 및 CD-ROM과 같은 보조저장장치들도 각 장치를 위한 제어기를 통해 유사한 방법으로 접속됨.
단, 키보드의 경우, 데이터가 바이트(8비트) 단위로 전송되고,
보조저장장치의 경우, 블록(512바이트, 1024바이트, 4096바이트) 단위로 전송되기 때문에 제어기 내에 적어도 한 블록 이상을 임시 저장할 수 있는 데이터 버퍼가 필요함.
디스트 제어기들 중에는 디스크 상의 한 트랙의 내용을 모두 저장할 수 있는 트랙 버퍼 혹은 그 이상의 용량인 디스크 버퍼를 가지고 있는 경우도 많음.
3. 전체 시스템의 구성.
프로그램 실행 : CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행함.
데이터 저장 : 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장.
데이터 이동 : 디스크나 SSD에 저장되어 있는 프로그램과 데이터 블록을 주기억장치로 이동.
데이터 입력 및 출력 : 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어들임. CPU가 처리한 결과 값이나 기억장치의 내용을 프린터 혹은 모니터로 출력.
제어 : 프로그램이 순서대로 실행되도록 혹은 필요에 다라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생함.
- 컴퓨터 구조의 발전 과정 -
1. 초기 컴퓨터들의 구조.
17세기 기계장치들이 자동적으로 데 가지 기본 연산(+, -, *, /) 처음으로 수행.
1642년 프랑스의 철학자이자 과학자 Blaise Pascal
: 덧셈과 뺄셈을 수행하는 기계적인 카운터.
다이얼의 위치에 따라 10진수를 표시하는 여섯 개의 원형판 두 세트로 구성됨.
각 원형판은 일시적으로 숫자를 기억하는 레지스터로도 사용됨.
1672년 독일의 철학자이자 수학자 Gottfried Leibniz
: 덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기.
Pascal의 계산기에 두 개의 원형판을 추가하여 반복적 방법으로 곱셈과 나눗셈을 수행할 수 있게 함.
19세기 영국인 Charles Babbage(현대 컴퓨터의 할아버지)
① Difference Engine
: 산술연산(덧셈, 뺄셈) 및 프린트 기능을 가진 최초의 계산기계.
표에 있는 수들을 자동적으로 계산하고, 그 결과를 금속 천공기를 거쳐서 프린트하도록 설계됨.
② Analyric Engine
: 네 가지 산술연산 기능과 입력 및 출력장치를 모두 갖춘 최초의 일반목적용 계산기계.
네 가지 산술 연산을 수행하는 연산 장치인 Mill, 기억장치인 Store가 있음.
입력장치로는 카드 판독기, 출력장치로는 프린터와 카드 천공기가 각각 접속되어 있음.
단점) 속도가 느리고 신뢰도가 낮음.
1900년대 펜실베니아 대학 ENIAC(Electronic Numerical Integrator And Computer)
: 진공관을 이용한 최초의 전자식 컴퓨터.
단점) 프로그램을 저장하고 변경하는 것이 불가능.
프로그램과 데이터를 기억장치에 저장하고 변경할 수도 있다면 더 편리하게 사용할 수 있음.
'Stored-program' 개념은 ENIAC의 설계자이자 수학자인 폰노이만에 의해 제안됨.
그가 발표한 설계 개념
1. 2진수 체계를 사용함.
2. 프로그램과 데이터를 내부에 저장함.
위의 개념 1945년 폰노이만이 새로운 컴퓨터 EDVAC(Electronic Discrete Variable Automatic Computer)의 개발을 위해 발표함.
1946년 폰노이만 IAS컴퓨터
: 폰노이만의 설계개념을 적용하여 프로그램 저장과 변경이 가능하도록 구현된 최초의 디지털컴퓨터.
1952년에 완성됨.
이후에 출현한 모든 일반목적용 컴퓨터들의 기본형이 됨.
폰노이만 아키텍처(von Neumann Architecture)
: 폰노이만이 제안한 컴퓨터구조 설계 개념.
기억장치에 저장된 프로그램을 프로그램 카운터가 지정하는 순서대로 실행시킴.
2. 주요 컴퓨터 부품들의 발전 경위.
1940년대 진공관을 트랜지스터(transistor)로 대체.
진공관을 사용해 만든 컴퓨터들을 제1세대 컴퓨터로 구분하고, 트랜지스터를 사용한 컴퓨터들을 제2세대 컴퓨터로 분류함.
1958년 집적회로(Intefrated Circuit : IC)의 발명으로 제3세대로 넘어가게 됨.
집적회로(Intefrated Circuit : IC)
: 실리콘 반도체 칩에 다수의 트랜지스터들을 넣어(집적시켜) 제조한 전자부품.
실리콘 웨이퍼(silicon wafer)
: 반도체 칩의 재료인 실리콘을 수평 방향으로 절단하여 만든 원형판.
인쇄회로기판(PCB)
: 전자회로들 간의 연결을 위한 회로 선들을 미리 부착시켜놓은 기판.
3. 컴퓨터시스템의 분류와 발전 동향.
마이크로프로세서(micoprocessor)
: CPU 내부 회로 전체를 하나의 반도체 칩에 넣어 제조한 IC로서, 컴퓨터의 크기 감소 및 가격 하락에 지대한 영향을 미치 혁신적 전자부품.
① 개인용 컴퓨터
: 개인이 소유할 수 있는 수준의 크기와 가격대의 컴퓨터에 대한 통칭으로서, 최근에는 용도와 크기 면에서 다양한 형태들이 출현하고 있음.
데스크탑 컴퓨터 : 책상위에 설치하는 크기.
노트북 컴퓨터 : 이동시 휴대할 수 있는 크기.
넷북 : 웹사이트의 콘텐츠 및 전자우편 열람 정도의 기본적인 인터넷 위주 작업에 이용. 노트북보다 가격이 더 저렴하고 가볍게 제조됨.
태블릿 PC : 터치스크린을 주 입력장치로 장착한 휴대용 PC.
포켓 PC : 크기가 작지만, 성능과 기능이 제한되어 PDA(personal digital assistant)용도로만 사용.
② 임베디드 컴퓨터(embedded computer)
: 각종 기계장치 혹은 전자 장치의 내부에 설치되어, 그 장치들의 동작을 제어하는 기능을 수행하는 소형 컴퓨터.
③ 서버급 컴퓨터시스템
워크스테이션(workstation)
: 고속 그래픽처리 및 시뮬레이션 등에 사용되는 64비트급 고성능 컴퓨터.
슈퍼미니컴퓨터(superminicomputer)
: 미니컴퓨터의 수십 배 성능을 가지는 서버급 컴퓨터시스템.
다중프로세서시스템으로 구성됨.
다운사이징(downsizing)
: 대형컴퓨터를 이용한 중안집중식 처리 방식에서 여러 대의 중형급 시스템들을 이용한 응용별 처리 방식으로 바뀌어가는 현상.
④ 대형 메인프렌임 컴퓨터
⑤ 슈퍼컴퓨터(supercomputer)
: 현존하는 컴퓨터들 중에서 처리 속도와 저장 용량이 상대적으로 월등한 컴퓨터들로서 주로 대규모 과학계산 응용들을 처리하며, 수천 개 이상의 CPU들을 이용한 병렬처리를 수행함으로써 성능이 계속 높아지고 있음.
파이프라인 슈퍼컴퓨터(pipeline supercomputer)
: 고도로 파이프라이닝 된 구조를 가진 소수의 CPU들을 이용하여 구성되는 슈퍼컴퓨터.
대규모 병렬처리시스템(MPP)
: 매우 많은 수의 프로세서들을 이용하여 병렬처리를 수행하도록 설계되는 슈퍼컴퓨터의 구성 방식.
병렬처리(parallel processing)
: 많은 수의 프로세서들이 하나의 큰 작업을 분할하여 동시에 처리하는 기술.
클러스터 컴퓨터(cluster computer)
: 고속 LAN이나 네트워크 스위치에 의해 서로 연결된 독립적인 컴퓨터들의 집합체로서 단일 시스템 이미지를 형성하여 하나의 큰 시스템으로서 동작하며, 최근 슈퍼컴퓨터 분야에서 가장 널리 사용되고 있는 시스템 구성 방식.
'Study > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터구조] CPU의 구조와 기능 (0) | 2021.01.14 |
---|---|
[컴퓨터 구조] 컴퓨터시스템 개요_문제 (0) | 2021.01.11 |
댓글