제1장. Computer System의 개요
ComputerSystem의 구성 하드웨어(Hardware) 소프트웨어(Software) 시스템소프트웨어(System Software) : OS(DOS, Windows, Unix, Linux, RTOS, Device Driver, Web Server, BIOS, Assembler, Compiler, Link, Liberian 등) 응용 소프트웨어(Application Software) : Wordprocessor, 파워포인트 등 펌웨어(Firmware) Hardware: Computer 정보들의 전송통로(Bus)를 제공해 주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들. Fig. 1-1. Computer Hardware의 주요 요소들 Software: 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(Command)들의 집합. 중앙처리장치 : Pentium, UltraSparc, MIPS R8000 등 Computer 기억장치 주기억장치 : RAM, ROM Hardware 보조기억장치 : Disk, CD-ROM 등 입출력장치 입력장치 : 키보드, 마우스 등 출력장치 : Printer, CRT, 스피커 등 전원공급장치, UPS(무정전전원공급장치),냉각송풍기
제1장. Computer System 개요 1.1 Computer의 기본 구조 1.2 정보의 표현과 저장
Computer의 기본 기능 Program을 실행하며, 그 과정에서 (1) 필요한 Data를 읽고(Read), (2) 처리(Processing)하며, (3) 저장(Store)한다. Fig. 1-2. Computer의 기본 구조
입출력장치(I/O device): 사용자와 Computer간의 대화를 위한 도구. 중앙처리장치(Central Processing Unit: CPU): 'Program 실행'과 'Data 처리'라는 중추적인 기능의 수행을 담당하는 요소이며, 프로세서(processor)라고 불리기도 한다. 기억장치(Memory; 또는 저장장치(Storage Device)): CPU가 실행할 Program과 Data를 저장하는 장치. (1) 주기억장치(Main Memory): CPU 가까이 위치하며 반도체 기억장치 Chip들로 구성. 액세스 속도가 빠르다. 가격이 비싸고 면적을 많이 차지하기 때문에 저장 용량을 크게 할 수 없다. 영구 저장 능력이 없기 때문에 Program 실행 중에 일시적으로만 사용된다. (2) 보조저장장치(Auxiliary Storage Device; 2차 기억장치(Secondary Memory): Disk나 자기 테이프(Magnetic Tape) 등과 같이 영구 저장 능력을 가진 저장장치. 저장 밀도가 높고, bit당 가격이 낮다. 기계적인 장치가 포함되기 때문에 속도가 느리다. 입출력장치(I/O device): 사용자와 Computer간의 대화를 위한 도구.
제1장. Computer System 개요 1.1 Computer의 기본 구조 1.2 정보의 표현과 저장
Computer 정보: 2진수 bit들로 표현된 Program 코드와 Data. Program 코드 고급 언어 Program: C, PASCAL, FORTRAN, COBOL 등과 같은 고급언어를 이용하여 작성된 Program. 기계어(machine language): Computer Hardware 부품들이 이해할 수 있는 언어로서 2진수 bit(1과 0)들로 이루어지며, 기계 코드(machine code)라고도 함. Assembly Program: 고급 언어와 기계어 사이의 중간 언어인 Assembly 언어(assembly language: 혹은 Assembly 명령어(assembly instruction)로 작성된 Program. Fig. 1-3. 고급-언어 Program이 기계어 Program으로 번역되는 과정 (예) Z = X + Y LOAD A,X 00100101 ADD A,Y 10000110 STOR Z,A 01000111
Assembly Program의 예(Fig. 1-3 하단) LOAD A,X ; 기억장치 X 번지의 내용을 읽어서 Register A에 저장하라. ADD A,Y ; 기억장치 Y 번지 내용을 읽어서 Register A에 저장된 값과 더하고, 결과를 다시 A에 저장하라. STORE Z,A ; 그 값을 기억장치 Z 번지에 저장하라. 컴파일러(Compiler): 고급언어 Program을 기계어 Program으로 번역하는 Software. 어셈블러(assembler): Assembly Program을 기계어 Program으로 번역하는 Software. 기계 명령어 형식의 예: 연산 코드 오퍼랜드 연산 코드(op code): CPU가 수행할 연산을 지정해 주는 bit들. bit 수 = 3이면, 최대 23 = 8 가지의 연산들 지정 가능. 오퍼랜드(operand): 연산에 사용될 Data 혹은 Data가 저장된 기억장치 Address. Address bit의 수 = 5이면, Address지정할 수 있는 기억장소의 수는 25 = 32 001 00101
단어(word): CPU가 기본 연산 과정에서 한 번에 처리할 수 있는 bit들의 그룹. Program 코드와 Data가 기억장치에 저장된 예 Fig. 1-4. Program과 Data가 기억장치에 저장된 모습
제1장. Computer System 개요 1.1 Computer의 기본 구조 1.2 정보의 표현과 저장
System Bus(시스템버스): CPU와 System 내의 다른 요소들 사이에 정보를 교환하는 통로. Address Bus(주소버스): CPU가 외부로 발생하는 Address 정보를 전송하는 신호 선들의 집합. Address 선들의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정. (예) Address Bus의 bit 수 = 16 bit라면, 최대 216 = 64K 개의 기억 장소들의 Address를 지정할 수 있다. Data Bus(데이터버스): CPU가 기억장치 혹은 I/O 장치와의 사이에 Data를 전송하기 위한 신호 선들의 집합. Data 선들의 수는 CPU가 한 번에 전송할 수 있는 bit 수를 결정. (예) Data Bus 폭 = 32 bit라면, CPU가 기억장치로부터 한 번에 32 bit씩 읽어올 수 있다. Control Bus(제어버스): CPU가 System 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합. (예) 기억장치 읽기/쓰기(Memory Read/Write) 신호 I/O 읽기/쓰기(I/O Read/Write) 신호
Data Bus는 읽기와 쓰기를 모두 해야 하므로 양방향 전송(bidirectional transfer)이 가능해야 한다. Fig. 1-5. CPU와 System Bus들 Address가 CPU로부터 기억장치 혹은 I/O 장치들로 전송되는 정보이기 때문에 Address Bus는 단방향성(unidirectional bus)이다. Data Bus는 읽기와 쓰기를 모두 해야 하므로 양방향 전송(bidirectional transfer)이 가능해야 한다.
CPU - 반도체 기억장치의 접속 Fig. 1-6. CPU와 기억장치의 접속 기억장치 쓰기 동작(Memory Write): CPU가 Data를 저장할 기억장소의 Address와 저장할 Data를 각각 Address bus와 Data bus를 통하여 보내면서 동시에 쓰기신호(Write)를 활성화시킨다. 기억장치 쓰기 시간(Memory Write Time): CPU가 Address와 Data를 보낸 순간부터 저장이 완료될 때까지의 시간.
기억장치 읽기(Memory Read)동작 CPU가 Memory Address를 AddressBus를 통하여 보내고 읽기신호(Read)를 활성화시킨다. 일정 지연 시간이 경과한 후에 기억장치로부터 읽혀진 Data가 Databus 상에 실린다. CPU는 그 Data를 BusInterface 회로를 통하여 읽어 들인다. 기억장치 읽기 시간(Memory Read Time): Address를 해독(Decode)하는 데 걸리는 시간과 지정된 기억소자들로 부터 Data를 읽는 데 걸리는 시간을 합한 시간. Fig. 1-7. 기억장치 액세스 동작의 시간 흐름도 읽
방법: I/O 장치 제어기를 System Bus에 접속하고, 그 제어기를 통하여 I/O 장치를 연결한다. 1.3.2 CPU와 I/O 장치의 접속 방법: I/O 장치 제어기를 System Bus에 접속하고, 그 제어기를 통하여 I/O 장치를 연결한다. I/O 장치 제어기(I/O Device Controller) : CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고 Data를 이동함으로써 명령을 수행하는 전자회로 장치. [예] Printer 제어기, 키보드 제어기, 등. 주요 요소들 상태 Register: I/O 장치의 현재 상태를 나타내는 bit들을 저장한 Register. (예) 준비 상태(RDY) bit, Data 전송확인(ACK) bit Data Register: CPU로부터 I/O 장치로 (혹은 반대 방향으로) 이동되는 Data를 일시적으로 저장하는 Register.
키보드와 Printer가 각각 제어기를 통하여 System Bus와 접속된 예 Fig. 1-8. CPU와 I/O 장치들 간의 접속 키보드로부터 Data를 입력하는 과정 키보드의 어떤 한 키( key)를 누르면, 그 키에 대응되는 ASCII 코드가 I/O 제어기의 Data Register에 저장되고, 동시에 상태 Register의 In_RDY bit가 1로 set된다.
CPU는 (1) I/O 제어기로부터 상태 Register의 내용을 읽어서 In_RDY bit가 set되었는지 검사한다. (In_RDY bit는 Data Register에 외부로부터 Data가 적재되었는지를 나타낸다.) (2) 만약 set되지 않았으면, (1)번을 반복하며 기다린다. 만약 set되었다면, Data Register의 내용을 읽어온다. Fig. 1-9. 키보드 Data 입력 과정의 흐름도
Printer로 Data를 출력하는 과정 CPU는 (1) Printer 제어기내 상태 Register의 내용을 읽어서 Out_RDY bit가 set되었는지 검사한다. (Out_RDY bit는 Printer가 출력할 준비가 되었는지를 나타낸다.) (2) 만약 set되지 않았으면, (1)번을 반복하며 기다린다. 만약 set되었다면, Print할 Data를 I/O 제어기내의 Data Register에 쓴다. Printer 제어기는 Data Register의 내용을 Printer로 보내고, Printer의 Hardware를 제어하여 Print시킨다.
키보드, Printer: Data 전송 단위 = Byte(8 bit) 보조저장장치들(Hard Disk, Floopy Disk, CD-ROM 등)도 각 장치를 위한 제어기를 통하여 이와 유사한 방법으로 접속. <차이점> 키보드, Printer: Data 전송 단위 = Byte(8 bit) 보조저장장치: 블록(512 Byte, 1024 Byte, 또는 4096 Byte) 단위로 전송. ⇒ 제어기 내에 적어도 한 블록 이상을 임시 저장할 수 있는 Data Buffer 필요. (예) Disk 제어기에는 Disk의 한 Track 내용을 저장할 수 있는 Track Buffer buffer가 있다.
1.3.3 전체 System의 구성 Fig. 1-10. Computer System의 전체 구성도
Computer의 기본적인 기능들 Program 실행: CPU가 주기억장치로부터 Program 코드를 읽어서 실행한다. Data 저장: Program 실행 결과로서 얻어진 Data를 주기억장치에 저장한다. Data 이동: Disk 혹은 CD-ROM에 저장되어 있는 Program과 Data 블록을 기억장치로 이동한다. Data 입력/출력: 사용자가 키보드를 통하여 보내는 명령이나 Data를 읽어 들인다. 또한 CPU가 처리한 결과 값이나 기억장치의 내용을 출력장치(Printer, 혹은 Monitor)로 출력한다. 제어: Program이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생한다.
제1장. Computer System 개요 1.1 Computer의 기본 구조 1.2 정보의 표현과 저장
1.4.1 초기 Computer들의 구조 주요 부품들의 발전 과정 릴레이(Relay) → Transistor → 반도체 집적회로(IC: Integrated Circuit) ⇒ 처리속도 향상, 저장용량 증가, 크기 감소, 가격 하락, 신뢰도 향상 초기 Computer들의 근본적인 설계개념과 동작원리가 현대의 Computer들과 거의 같음.
최초의 Computer: 1642년, 프랑스의 철학자이며 과학자였던 Blaise Pascal에 의하여 개발. 덧셈과 뺄셈을 수행하는 기계적 카운터. 다이얼의 위치에 의하여 십진수를 표시하는 6개의 원형판 set들로 구성. 각 원형판은 일시적으로 숫자를 기억하는 Register로 사용. Leibniz의 기계: Gottfried Leibniz(독일)이 1671년에 개발. 덧셈과 뺄셈 및 곱셈과 나눗셈도 할 수 있는 계산기. Pascal의 계산기에 두 개의 원형판들을 추가하여 반복적 방법으로 곱셈과 나눗셈을 수행. 이후 많은 기계들의 조상이 됨. Difference Engine: 19세기초, 현대 Computer의 할아버지로 불리는 Charles Babbage(영국)에 의해 개발. 표에 있는 수들을 자동적으로 계산하고, 그 결과를 금속천공기를 거쳐서 Print. 덧셈과 뺄셈만 수행 가능.
Analytical Engine: Charles Babbage(영국)에 의해 개발. 어떤 수학 연산도 자동적으로 수행할 수 있는 일반 목적용 계산 기계. 주요 구성 요소들 Mill : 산술연산장치 Store : 기억장치 입력장치: 카드판독기 출력장치: Printer, 카드 천공기 Fig. 1-11. Analytic Engine의 기본 구조
주요 특징들 (1) 일반 목적용 (2) 프로그래밍 가능: Program 언어 사용 (3) Program의 실행 순서 변경 가능. 수의 부호 검사를 이용한 조건 분기 제어카드 이용을 이용한 실행 순서 변경 문제점: 주요 부품들이 모두 기계적인 장치들이었기 때문에 속도가 느렸고 신뢰도가 낮다. ENIAC(Electronic Numerical Integrator And Computer): 1960년대초에 폰 노이만(Von Neumann)이 펜실바니아 대학에서 개발한, 진공관을 사용한 최초의 전자식 Computer. 문제점: Program의 저장과 변경 불가능 ◆ 폰 노이만의 설계 개념 (Stored-program 개념) o 2진수 체계(Binary number system)를 사용 한다. o Program과 Data를 내부에 저장 한다. EDVAC(Electronic Discrete Variable Computer): 폰 노이만 개념을 이용하여 1945년 개발된 System.
IAS Computer: 1952년에 완성된 새로운 ‘Stored-Program' Computer 개발. 주요 구성요소들: Program 제어 유니트(CU: Program Control Unit): 주기억장치로부터 명령어들을 한 개씩 가져와서 실행 산술논리연산장치(ALU) 주기억장치: 명령어와 Data를 모두 저장 입출력장치 주요 특징: 주기억장치로부터 한 번에 두 개씩의 명령어 인출. 그 중의 하나는 즉시 Program 제어장치(CU)로 보내져서 실행되며, 다른 하나는 일단 명령어 Buffer에 저장되어 있다가 다음 명령어 실행 사이클에서 실행. 최근 Processor들의 명령어 선인출(Instruction Prefetch)과 같은 개념.
Fig. 1-12. ISA Computer의 구조 폰 노이만 구조(von Neumann Architecture): Program 코드들을 기억장치에 저장된 순서대로 실행하며, 그 Address는 CPU의 내부 Register인 Program 카운터(program counter)에 의하여 지정.
Transistor(transistor): 초기(제1세대) 전자식 Computer의 핵심 부품인 진공관을 대체한 전자 부품. 진공관보다 작고 싸며 더 적은 열을 발산. 반도체 재료인 실리콘(Si)으로 만들어진 고체(solid-state) 장치. 제2세대 Computer로 분류됨. (비교: 제1세대 Computer들의 부품은 진공관) 초기 Computer들은 약 1000 개의 Transistor들로 구성. 집적 회로(Integrated Circuit: IC): 수만개 이상의 Transistor들을 하나의 반도체 Chip에 집적시킨 전자 부품. 제3세대 Computer로 분류됨.
IC의 제조 과정 Fig. 1-13. IC Chip의 제조 과정
집적도에 따른 IC의 분류 SSI(Small Scale IC): 수십 개의 Transistor들이 집적되는 소규모 IC로서, 최근에는 주로 기본적인 Digital Gate들을 포함하는 Chip으로 제조되고 있다. MSI(Medium Scale IC): 수백 개의 Transistor들이 집적되는 IC로서, 카운터(counter), 해독기(Decoder) 또는 Shift Register와 같은 조합 회로나 순차 회로를 포함하는 Chip으로 제조되고 있다. LSI(Large Scale IC): 수천 개의 Transistor들이 집적되는 LSI로서, 8-bit Microprocessor Chip이나 소규모 반도체 기억장치 Chip들이 이 분류에 속한다. VLSI(Very Large Scale IC): 수만 내지 수십만 개 이상의 Transistor들이 집적되는 LSI로서, Microprocessor Chip들과 대용량 반도체 기억장치 Chip들이 이 분류에 속한다. ULSI(Ultra Large Scale IC): 수백만 개 이상의 Transistor들이 집적되는 32-bit급 이상 Microprocessor Chip들과 수백 Mb 이상의 반도체 기억장치 Chip들 및 앞으로 출현할 고밀도 반도체 Chip들을 지칭하기 위한 용어지만, 아직 일반적으로 통용되는 용어는 아니다.
IC 사용에 따른 이점 전기적 통로가 짧아짐으로써 동작 속도가 크게 상승. Computer 크기의 감소. 회로들 간의 상호 연결이 Chip 내부에서 이루어지므로 부품들의 신뢰성 향상. 전력 소모 감소 및 냉각 장치의 소형화. Computer 가격 하락. 제4세대 Computer 시대가 시작됨. 개인용 Computer 출현 초고속 Super Computer 개발
1.4.3 Computer System의 분류와 발전 동향 (1) 개인용 Computer(Personal Computer: PC) 특 징 소형, 저가 성능: 십년 전의 대형 Mainframe Computer의 성능을 능가. 주요 발전 동향 매 2 ~ 3 년마다 성능이 개선된 새로운 Microprocessor가 등장하고, 그에 따라 새로운 PC 모델 출현. 주변 요소들(Cache, MMU, Floating Point Processor:산술보조프로세서 등)이 CPU Chip에 내장됨에 따라 속도 및 신뢰도가 향상. CPU 구조가 다수의 ALU들 혹은 명령어 실행 유니트들을 포함하는 슈퍼스칼라(Super Scalar) 구조로 발전함에 따라, 여러 명령어들의 동시 실행 가능. 분기 예측(Branch Prediction), 동적 실행(Dynamic Execution) 기법 등이 사용됨에 따라 Hardware 이용률이 높아지고, 따라서 처리속도가 더욱 향상. 문자 이외의 다양한 정보들에 대한 입력과 출력, 저장 및 처리 능력을 보유하게 됨에 따라 멀티미디어 PC로 발전되고 있다. 보다 더 편리한 사용자 Interface를 제공해 주는 System Software들 출현. [예] Windows-98 고속 입출력장치들의 Interface를 위한 새로운 Bus 규격 제안. 주기억장치와 보조저장장치의 용량이 크게 증가.
(2) 중형급 Computer System 워크스테이션(workstation) CPU: 32-bit 혹은 64-bit Microprocessor 사용. 고속 Graphics 처리 Hardware 포함. 주요 응용: Computer를 이용한 설계(CAD), Simulation 등. OS: UNIX 슈퍼미니Computer(Super-minicomputer) System 구조: 다중프로세서(Multiprocessor) 구조 CPU의 수: 20 ~ 30 개 성능: VAX-11 Mini-Computer 성능의 수십 배 이상. Downsizing(다운사이징) 주도 : Network에 접속된 다수의 중형급 Computer System들을 응용(혹은 용도)별로 구분하여 사용하는 컴퓨팅 환경이 가능해지게 함.
Fig. 1-14. Multi-Processor System의 구조
(3) Mainframe Computer( 대형컴퓨터) IBM 360 및 370 계열, 3081, 3090 등으로 계속 발전. 대용량 저장장치 보유 다중 I/O 채널을 이용한 고속 I/O 처리 능력 보유 대규모 Database 저장 및 관리용으로 사용 최근 성능과 가격면에서 Super Mini-Computer들과 경쟁하고 있으며, 점차적으로 시장 점유율 하락 중. (4) Supercomputer(수퍼컴퓨터) 정의: 현존하는 Computer들 중에서 처리 속도와 기억장치 용량이 다른 Computer들에 비하여 상대적으로 월등한 Computer System들. 분류 기준: 계속적으로 상승. (예) 최초의 Super Computer인 CRAY-1의 속도 = 100 MFLOPS 최근의 Super Computer들의 속도는 수백 GFLOPS 이상. 주요 응용 분야들: VLSI 회로 설계, 항공우주공학, 천문학(일기 예보), 구조 공학, 유전 탐사, 핵공학, 인공지능, 입체 영상처리 등과 같은 대규모 과학 계산 및 시뮬레이션.
(1) 파이프라인 슈퍼Computer(Pipeline Supercomputer) 구조에 따른 분류 (1) 파이프라인 슈퍼Computer(Pipeline Supercomputer) 한 CPU 내에 다수의 연산 장치들이 포함. 각 연산 장치는 고도의 Pipeline구조를 이용하여 고속 벡터 계산 가능. 대표적인 System들: CRAY Y-MP, CRAY-2, Fujitsu VP2000, VPP500 등. (2) Massively Parallel Computer (초대규모 병렬 컴퓨터) 한 System 내에 상호 연결된 수백 혹은 수천 개 이상의 Processor들 포함. Processor들이 하나의 큰 작업을 나누어서 병렬로 처리. System 구조의 예 : Thinking Machine사의 CM-1 System 특징: Processor 수 = 최대 65,536(216)개 Processor 내부 구조: 매우 간단한 구조의 Processor 16개가 상호 연결되어 하나의 Chip에 집적되어 있으며, 그러한 Chip들이 수백개가 모여 한 Processor 모듈을 구성.
Fig. 1-15. CM-1 병렬Computer의 Processor 모듈과 내부 구조