컴퓨터시스템의구성과기능 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi
Section 01 컴퓨터분해를통한본체살펴보기 [ 그림 4-1] 컴퓨터의분해와연결 2
주회로기판 (main board) 의구성 [ 그림 4-2] 메인보드의구성 3
구성요소 중앙처리장치 (CPU) 핵심기능인프로그램을실행하고데이터를처리한다제어장치, 연산장치, 레지스터 (register) 등으로구성다양한마이크로프로세서사용 Intel, AMD, Motorola 마이크로프로세서 4
주기억장치 구성요소 컴퓨터내에서명령어와데이터들을기억하여저장 고속액세스가가능하나가격이높고저장용량의한계가존재 영구저장능력이없어프로그램실행중에일시적으로만저장이가능 RAM(Random Access Memory) : CPU 읽기, 쓰기를위해사용하는기억장치로, 명령어와데이터를저장 ROM(Read Only Memory) : 읽기전용기억장치로부팅 (booting) 에필요한명령어를내장하고있음 캐시기억장치 (cache memory) : RAM 보다빠른고속 RAM 으로 CPU 에자주쓰이는명령어와데이터를저장하여처리성능을높임 5
보조기억장치 구성요소 주기억장치를보조하므로 2 차기억장치 (second memory) 라고함 액세스의속도가느리며대용량데이터를저장하는데사용되고영구저장이가능함 하드디스크, DVD-ROM, CD-ROM, 플로피디스크 IDE 등의표준화연결방식으로 CPU 에연결 시스템확장카드 컴퓨터의기능을확장하거나보조하기위하여카드형태로만들어짐 사용자는특수목적에맞는확장카드를주회로기판에부착하여사용 LAN 카드, 사운드카드, 그래픽카드, 영상카드등종류가다양함 6
입출력포트 구성요소 입출력장치를컴퓨터에연결함 병렬포트 (parallel port), 직렬포트 (serial port), USB 포트, Firmwire 포트, LAN 포트, 음향기를위한입출력포트가있음 최근에는병렬포트가 USB 포트와 Firmwire 포트로대체되고있으며, 또한블루투스의무선연결방식으로대체되고있음 입출력포트의발전 7
컴퓨터의개념적구성 컴퓨터의구성요소 실제의물체를의미 컴퓨터에서사용되는정보들을처리, 전송, 저장하며, 전송통로를제공함 소프트웨어를하드웨어화한것 하드웨어와소프트웨어의중간단계에해당되는미들웨어 (middleware) 라고함 소프트웨어가새로운제어신호들을제공하면이제어신호에따라다양한작업을처리할수있음 하드웨어가특정작업을수행하도록제어신호들을제공하는일련의부호 (codes) 혹은명령어 (instructions) 의집합을소프트웨어라고함 8
하드웨어 (hardware) 컴퓨터구성요소 정보들의전송통로를제공하고, 그정보에대한처리가실제일어나게해주는물리적인실체 하드와이어프로그램 (hardwired program) 부품을연결하여필요기능을수행하는프로그래밍의한형식 특정목적에만사용, 다른목적을위해서부품의재연결이필요 컴퓨터시스템은융통성이없다. 9
소프트웨어 (software) 컴퓨터구성요소 하드웨어가특정작업을수행하도록제어신호들을제공하는일련의코드들 (codes) 혹은명령어들 (instructions) 의집합 펌웨어 (Firmware) 하드웨어와소프트웨어의중간단계에해당 소프트웨어를하드웨어화시킨것 10
하드웨어 (hardware) 의분류 컴퓨터구성요소 중앙처리장치 (CPU) : 컴퓨터의두뇌로서프로그램을읽고해석하여실행. 산술논리연산장치, 제어장치, 레지스터로구성 저장장치 : 컴퓨터에필요한정보를저장. CPU 가사용하는주기억장치와영구적저장을위한보조기억장치로구성 입력장치 : 컴퓨터시스템외부에서정보를입력받음. 마우스, 키보드, 터치패드, 광학스캐너등이있음 출력장치 : 컴퓨터시스템에서처리된결과물을외부로출력. 프린터, 스피커, 모니터등이있음 11
컴퓨터구성요소 중앙처리장치를구성하는하드웨어 산술논리연산장치, 레지스터, 제어장치 12
컴퓨터구성요소 산술논리연산장치 (ALU: Arithmetic Logical Unit) 컴퓨터에서산술연산과논리연산을수행 13
컴퓨터구성요소 산술논리연산장치 (ALU: Arithmetic Logical Unit) 4 비트의덧셈과뺄셈연산 14
컴퓨터구성요소 산술논리연산장치 (ALU: Arithmetic Logical Unit) 논리연산처리기 AND, OR, XOR, 보수의연산 15
컴퓨터구성요소 산술논리연산장치 (ALU: Arithmetic Logical Unit) 이동처리기 16
레지스터 (Register) 컴퓨터구성요소 CPU 에서사용되는데이터를임시적으로저장하며, 플립플롭의연결을기본으로하는순차논리회로임 아래그림은 4 비트데이터를병렬로읽기와쓰기가가능한레지스터 17
레지스터 (Register) 컴퓨터구성요소 프로그램카운터 (PC: Program Counter) : 다음에실행할명령어의주소를저장하는레지스터. 명령어의집합을프로그램이라고함. 프로그램을수행하는것은명령어가순차적으로실행되는것을의미. 즉프로그램카운터는다음에수행할명령어순서를나타냄 명령어레지스터 (IR: Instruction Register) : 메모리에서읽은명령어를수행하기위하여일시적으로저장 기억장치주소레지스터 (MAR : Memory Address Register) : 다음에읽기동작이나쓰기동작을수행할기억장소의주소를저장하는주소저장용레지스터 기억장치버퍼레지스터 (MBR : Memory Buffer Register) : 기억장치에저장할데이터나기억장치에서읽은데이터를임시적으로저장하며, 모든데이터가거치게되는데이터출입용레지스터 입출력주소레지스터 (I/O AR : I/O Address Register) : 입출력장치의주소를저장 입출력버퍼레지스터 (I/O BR : I/O Buffer Register) : 입출력모듈과 CPU 사이에교환되는데이터를일시적으로저장하는레지스터 18
컴퓨터구성요소제어장치 (control unit) CPU에서사용하는명령어의실행과정을관리하고제어제어장치구성 순서제어논리장치 (sequence logic) 제어장치레지스터 (control unit register) 명령어해독기 (decoder) 제어메모리 (control memory) 제어장치레지스터구성 제어주소레지스터 (control address register) 제어버퍼레지스터 (control buffer register) 서브루틴레지스터 (subroutine register) 19
제어장치구성 제어장치의구성 20
제어장치의마이크로구조 제어장치의마이크로구조 21
SRAM 기억장치를구성하는논리회로 SRAM 은플립플롭을기본구성으로해서 1 비트를저장하는기억소자를만듬 RS 플립플롭과 AND 게이트가조합된순차논리회로 22
4 x 3 SRAM 기본구조 여러비트를저장하는기억장치 주소를입력하기위해 2 x 4 디코더활용 23
버스를통한하드웨어의연결 컴퓨터를구성하는하드웨어는버스로연결되고, 버스를통해데이터와각종제어신호를전달한다. 24
소프트웨어 정보들의이동방향과정보처리의종류를지정 명령이모여서하나의프로그램을형성하는것으로, 프로그램들이모여서집합을형성한것 컴퓨터시스템이나주변기기등의하드웨어를작동시켜원하는작업결과를얻기위한프로그램또는명령어거대집합 소프트웨어의분류 25
소프트웨어 시스템소프트웨어 컴퓨터시스템을운영하기위한프로그램으로, 컴퓨터시스템의개별하드웨어요소를직접제어, 통합, 관리하는가장중요한기능을수행 따라서사용자가목적하는작업을수행하는응용소프트웨어와는반대개념 운영체제, 장치드라이버, 프로그래밍도구, 컴파일러, 어셈블리, 유틸리티등을포함 시스템소프트웨어가전원이제거되었는데도저장된데이터가삭제되지않고비휘발성기억장치에기억되는경우가있는데, 이를펌웨어라고함. 26
운영체제 역할을두가지로분류 소프트웨어 물리적장치와논리적자원인파일을관리하고제어. 하드웨어를직접제어하고자원을관리해서컴퓨터의시동, 메모리나파일관리, 주변기기관리, 네트워크에연결등의작업을수행. 응용프로그램들의실행환경을제공하는데, 응용프로그램의실행기반이라는의미로플랫폼이라고함. 컴퓨터와사용자사이의중재적역할을하는것으로인터페이스를제공 운영체제의기능 27
소프트웨어 프로그램언어및컴파일러 프로그램언어는컴퓨터가읽고사용하는명령이나코드의집합 만든응용프로그램들은컴퓨터가이해할수있는언어로번역해야하며이때, 번역을해주는프로그램이컴파일러임 고급언어 명령어가일상적인문장과매우유사 컴퓨터하드웨어에독립적이므로프로그래밍과정은매우간단 기계어와의차이가커서, 고급언어 (high-level) 를기계어로번역하려면복잡한과정을거쳐야함 FORTRAN, C, C++, Java, SQL 저수준언어 컴퓨터가사용하는언어로기계어 (machine language) 라고함 데이터를표현할때기본단위인비트의값 0 과 1 을그대로표기함 저수준언어 (low-level) 는컴퓨터 CPU 의종류에따라각기고유한명령어로구성되므로컴퓨터실행에효율적 28
소프트웨어 프로그램언어및컴파일러 어셈블리언어 컴퓨터고유의기계어명령을사람이어느정도해독할수있도록문자화하거나기호화된현태의중간수준의언어 기계어와일대일로대응되므로기계어로번역되는과정이고급언어보다는간단하다는장점이있음 CPU 종류에따라어셈블리언어 (assembly language) 의명령어가다름 컴파일러 모든프로그램은컴퓨터가사용할수있는기계어로번역되어야실행이가능 컴파일러 (compiler) 는소스프로그램 (source program) 을기계어로번역하여오브젝트코드 (object code) 라불리는실행가능한프로그램으로만들어줌 우리가사용하는응용프로그램들은컴파일되어실행파일형태로제공되고있어프로그램실행시해는번역없이빠르게실행 기계어는직관적으로확인하기어려워보안에도용이 29
소프트웨어 데이터베이스관리시스템 응용소프트웨어와운영체제사이에서대용량데이터를효율적으로관리하기위한시스템소프트웨어 사용자가데이터베이스를관리할때나응용소프트웨어가데이타베이스에접속하여시스템과연결된인터페이스가많은경우에유용 데이타베이스관리시스템의특징 데이터의효율적관리 데이터접근에대한관리 효율적인데이터검색 원하는형태의보고서즉시작성 백업및복구기능보유 다양한인터페이스제공 30
소프트웨어 범용유틸리티소프트웨어 사용자가컴퓨터를효율적으로관리하는데필요한다양한기능을독립적으로수행하는프로그램 파일관리 : 파일의목록을보여주고파일을복사하거나이름을바꾸고삭제하며저정함 디스크관리 : 디스크상태보기기능을활용하여불필요한파일을삭제하거나문제점을해결, 포맷팅기능도함. 디스크조각모으기를해서작은조각들을모아서파일공간으로사용하기쉽게만들어줌 시스템상태관리 : 컴퓨터하드웨어, 주변기기나시스템소프트웨어의상태보기를통해시스템의문제를판단하고오류를수정 장치드라이버 컴퓨터에연결되는주변장치를제어할수있도록지원하는소프트웨어 컴퓨터는장치드라이버를통해주변장치를인식하고제어 31
펌웨어 (Firmware) 시스템효율을높이기위한 ROM 에들어있는기본프로그램 ROM 에프로그램이고정되어하드웨어의특성도가지고있지만실제로는소프트웨어에더가깝다. 소프트웨어를하드웨어화시킨것으로소프트웨어와하드웨어의중간에해당 전형적인처리루틴, 비휘발성, 변경불가등의특징으로특수한영역에서많이사용 32
하드웨어컴퓨터의주요하드웨어 기억장치 (memory) 저장장치 (storage device) CPU가실행할프로그램과데이터를저장 주기억장치와보조기억장치가존재 입출력장치 (I/O device) 사용자와컴퓨터간의대화를위한도구 입력장치는입력데이터를컴퓨터가이해하는신호로변환 출력장치는중앙처리장치가처리한결과를출력하는장치 33
버스와상호연결 개론 버스 (bus) 는컴퓨터에서두개혹은그이상의장치를연결하는공유전송매체버스를통해전송되는데이터의유형 프로세서가기억장치로부터명령어와데이터를읽는유형 프로세서가기억장치에데이터를저장하는유형 입출력장치와관련된내용 프로세서는입출력 I/O 모듈을통하여입출력장치로부터데이터를읽고 프로세서가입출력장치로데이터를전송 입출력모듈이 DMA(Direct Memory Access) 를통하여기억장치와직접데이터를교환하는경우 이렇게프로세서, 기억장치및입출력장치간의통신을위한상호연결을시스템버스 (system bus) 라고함 34
버스와상호연결시스템버스의분류 주소버스 (address bus) 데이터버스 (data bus) 제어버스 (control bus) 35
버스와상호연결주소버스 (address bus) 데이터를읽거나쓸기억장소의주소를전송하는통로 CPU가발생하는주소정보를외부로전송하는신호선들의집합주소버스는주소선들의 ( 주소버스폭 ) 에의해 CPU와접속될수있는최대기억장치용량이결정 예 ) 만약주소버스의비트수가 16 비트라면, 최대 2 16 = 64K 개의기 억장소들의주소를지정할수있음. 따라서최대기억장치용량 이 64K 로정해짐 36
버스와상호연결데이터버스 (data bus) 데이터버스는모듈사이로데이터를전송하는통로 CPU가기억장치와입출력장치와의사이에데이터를전송하기위한신호선의집합데이터버스폭이 32비트라면 CPU와기억장치간의데이터전송은한번에 32비트씩전송이가능 예 ) 데이터전송폭이 32 비트이고버스의클록이 33MHz 일때의 전송속도 32bit 4byte 4byte x 33,000,000Hz = 132,000,000 byte/sec 37
버스와상호연결제어버스 (control bus) 제어신호들을전송하는통로 CPU가컴퓨터시스템내의각종장치요소들의동작을제어하기위한신호선의집합일반적인제어신호분류 기억장치읽기 / 쓰기 (memory read/write) I/O 읽기 / 쓰기 (I/O read/write) 전송확인 (transfer acknowledge) 버스요구 (bus grant) 인터럽트요구 (interrupt request) 인터럽트확인 (interrupt acknowledge) 클록 (clock) 리셋 (reset) 38
버스와상호연결시스템버스의방향성 데이터버스는읽기동작과쓰기동작을모두수행해야하기때문에양방향성 (bi-directional) 을갖음제어버스는데이터를요구하는제어신호와올바른전송을확인해주는제어신호를사용하므로, 양방향성을갖음주소버스는, 주소를표현하는신호가 CPU로부터기억장치혹은입출력장치로전송되고반대로의전송은없기때문에단방향성 ( uni-directional) 버스 39
버스와상호연결기억장치의쓰기와읽기시간 쓰기동작 CPU가기억장치에데이터를전송해서저장하는것을기억장치쓰기동작읽기동작 CPU가기억장치에저장된데이터를가져와자신의레지스터에싣는것을기억장치읽기동작 40
버스와상호연결기억장치의쓰기와읽기시간 쓰기동작순서 Step 1 : 저장할기억장소의주소를주소버스를통하여기억장치에보냄 Step2 : 데이터를데이터버스를통해기억장치에보냄 Step 3 : 제언버스에서는쓰기신호를활성화 쓰기시간 (memory write time) CPU 가주소와데이터를보낸순간부터저장이완료될까지의 시간 41
버스와상호연결기억장치의쓰기와읽기시간 읽기동작순서 Step 1 : CPU가기억장치주소를주소버스를통하여보냄 Step2 : 제어버스를통해읽기신호를활성활 Step 3 : 일정지연시간경과후에기억장치에서읽은데이터가데이터버스에실리고, CPU는그데이터를버스인터페이스회로를통해읽음 읽기시간 (memory read time) 주소를해독 (decode) 하는데걸리는시간과선택된기억소자로부터데이터를읽는데걸리는시간을합한시간 42
CPU 와주변장치의데이터전송 CPU 는외부장치들과도데이터를송수신, 이때버스의동자은기억장치와동일, 그러나입출력장치는버스와직접적으로연결되어데이터를송신하거나수신하지않음 그이유는 CPU 와입출력장치간처리하는속도차이가 커서, 처리속도가느린입출력장치가빠르게전송되어온 데이터를제대로처리하지못하기때문 그래서시스템버스와입출력장치를연결하는입출력장치 제어기 (I/O device controller) 가존재 CPU 와입출력장치간의데이터흐름경로 CPU 시스템버스 입출력장치제어기 입출력장치 43
CPU와주변장치의데이터전송입출력장치제어기는두개의레지스터가존재 상태레지스터 입출력장치의현재상태를나타내는비트들을저장 준비상태 (RDY) 비트, 데이터전송확인 (ACK) 비트가해당상태를표시해줌 준비상태비트가 1로세트되면입출력장치가데이터를 CPU로송수신할준비가되었음을알려줌 입출력장치가 CPU에데이터송수신을완료하면데이터전송확인비트가 1로세트됨 데이터레지스터 CPU 에서입출력장치간에이동되는데이터를일시적으로저장하는레 지스터 44
CPU 와주변장치의데이터전송 CPU 와입출력장치간의버스연결 45
CPU 와보조기억장치데이터송수신 입출력장치와마찬가지로각장치에해당하는제어기를이 용해서데이터를이동할수있음 보조기억장치는많은양의데이터를저장할수있는저속의 장치 하드디스크, 플라피디스크, CD-ROM, DVD 등 CPU 는보조기억장치로한번에많은양의데이터를읽거나쓰는동작을수행. 보조기억장치는블록단위로전송. 블록의크기는 512 바이트, 1024 바이트, 4096 바이트로큰값을가짐 보조기억장치제어기에도한블록이상을임시로저장할수있는데이터버퍼가필요 46
CPU 와보조기억장치데이터송수신 시스템버스를통한구성장치의연결 47
컴퓨터시스템의동작 컴퓨터시스템의전원단추를누르면부팅이되면서펌웨어는하드웨어를초기화함 그리고운영체제프로그램이주기억장치에적재되어컴퓨터시스템을제어 응용프로그램은운영체제위에서동작하면서사용자의목적에맞는프로그램을동작시킴 부팅을위한펌웨어는 ROM 에저장되어있고, 운영체제는하드디스크에저장 펌웨어 ( 부팅 ) ROM 운영체제 동작제어 RAM 응용소프트웨어 하드디스크 48
프로그램을실행할때구성장치들이수행하는동작 49
프로그램의처리과정 명령어의수행과정 명령어인출 (instruction fetch) 과명령어실행 (instruction execution) 반복 [ 그림 4-7] 명령어의단계적수행 50
명령어사이클 (instruction cycle) 중앙처리장치가하나의명령어를실행하는데필요한전체처리과정 인출사이클 (fetch cycle) 과실행사이클 (execution cycle) 의부사이클 (sub-cycle) 두개로구성 [ 그림 4-12] 명령어부사이클 (sub-cycle) 의동작 51
기본명령어사이클 52
CPU 내의레지스터 프로그램카운터 (PC: Program Counter) 다음에실행할명령어의주소를저장하는레지스터 명령어레지스터 (IR: Instruction Register) 메모리로부터읽어온명령어를수행하기위하여일시적으로저장하는레지스터 기억장치주소레지스터 (MAR: Memory Address Register) 다음에읽기동작이나쓰기동작을수행할기억장소의주소를저장하는주소저장용레지스터 메모리버퍼레지스터 (MBR: Memory Buffer Register) 기억장치에서인출된명령어를임시저장하는레지스터 53
CPU 내의레지스터 (Register) [ 그림 4-8] 컴퓨터내부구성에서의저장장치 54
명령어인출사이클과정시간의단계별구성 55
정보의표현과컴퓨터언어 프로그램코드는컴퓨터에서사용하는형태와가까우면저급언어, 인간이사용하는형태와가까우면고급언어로분류 저급언어 (low-level language) 기계어 (machine language) 는기계코드 (machine code) 들의집합 컴퓨터하드웨어부품들이이해할수있는언어 2 진수비트들로구성된코드 56
정보의표현과컴퓨터언어 어셈블리언어 (assembly language) 어셈블리코드 (assembly code) 들의집합고급언어와기계어사이의중간언어저급언어인기계어와일대일대응관계로기계어로의변환과정이쉽다. 고급언어 (high-level language) 영문자와숫자로구성되어사람이이해하기쉬운언어 C, PASCAL, FORTRAN, COBOL 프로그래머가쉽게작성할수있으나컴퓨터가이해할수있게번역하는과정필요 57
컴파일러 (compiler) 컴파일러와어셈블러 인간이작성하기쉬운고급언어프로그램을하드웨어가이해할수있는기계어프로그램으로번역하는소프트웨어 어셈블러 (assembler) 어셈블리프로그램을이진수의기계어프로그램으로번역하는소프트웨어 58
덧셈연산을수행하는프로그램의언어별표현 기계어표현 기호를니모닉 (mnemonics) 라고함. 대표적인니모닉스로 LOAD, ADD, STOR 등이있음 기계어로의번역과정 59
연산코드 (op code) CPU 가수행할연산을지정해주는비트들 오퍼랜드 (operand) 기계명령어형식 적재될데이터가저장된기억장치주소혹은연산에사용될데이터비트 [ 그림 4-10] 기계명령어형식 연산코드의비트수가 3 이면, 지정할수있는연산의최대수는 2 3 = 8 이된다. 오퍼랜드의비트의수가 5 이면, 주소지정할수있는기억장소의최대수는 2 5 = 32 가된다. 60
단어 (word) 프로그램과데이터가기억장치에저장되는단위 기억장치에저장된기계어 CPU 에의해한번에처리될수있는비트들의그룹 [ 그림 4-11] 기억장치에저장된기계어 61