컴퓨터 구조와 성능 향상 PDF

Summary

This document provides lecture material in Korean on computer architecture and performance improvement. It covers topics such as the basic structure of computers, CPU and memory, performance improvement technologies, and multi-processing. The document explains hardware and software aspects of computing systems.

Full Transcript

운영체제 02. 컴퓨터 구조와 성능 향상 공지사항  과제 Ch.1 ~ Ch.2 연습문제 풀어보기 (제출 X)  퀴즈 3월 24일 (월) 수업시간 (약 20분) 객관식 또는 단답형 연습문제 토대로 출제 학습 목표  컴퓨터를 구성하는 하드웨어의 특성을 이해  CPU와 메모리의 구성 및 동작 방식 이해  컴...

운영체제 02. 컴퓨터 구조와 성능 향상 공지사항  과제 Ch.1 ~ Ch.2 연습문제 풀어보기 (제출 X)  퀴즈 3월 24일 (월) 수업시간 (약 20분) 객관식 또는 단답형 연습문제 토대로 출제 학습 목표  컴퓨터를 구성하는 하드웨어의 특성을 이해  CPU와 메모리의 구성 및 동작 방식 이해  컴퓨터의 성능 향상 기술 및 멀티 프로세싱에 대한 이해  학습 내용 보조 요리사 요리사(CPU) 주방 보조 1. 컴퓨터의 기본 구성 2. CPU와 메모리 3. 컴퓨터 성능 향상 기술 4. 멀티 프로세싱 도마(메모리) 보관 창고(저장장치) 1. 컴퓨터의 기본 구성 1-1. 하드웨어의 구성  컴퓨터의 구성 하드웨어 (H/W): 컴퓨터에서 각종 정보의 입력, 처리, 저장이 실제 일어나게 해주는 물리적인 실 체 소프트웨어 (S/W): 정보 처리의 종류를 지정하고 정보의 이동 방향을 결정하는 동작이 일어나는 시간을 지정해주는 명령들의 집합 컴퓨터 중앙 처리 장치 펜티엄 프로세서 등 - 하드웨어 기억 장치 주기억 장치 RAM. ROM. DDR SDRAM 등 보조 기억 장치 하드 디스크, CD-ROM.SSD 등 입출력 장치 입력 장치 키보드, 마우스, 스캐너 등 출력 장치 프린터, 모니터, 스피커 등 소프트웨어 시스템 소프트웨어 운영체제 유닉스, 리눅스, 윈도우 등 언어 번역 프로그램 컴파일러, 인터프리터 등 유틸리티 프로그램 드라이버, 백신 프로그램 등 응용 소프트웨어 한글, MS 오피스 등 1-1. 하드웨어의 구성  컴퓨터의 구성 필수장치: 중앙처리장치, 메인 메모리(대부분의 작업이 이루어 짐) 주변장치: 입력장치, 출력장치, 저장장치 (intel) XEON™ 필수장치 중앙처리장치 메인메모리 주변장치 입력장치 출력장치 저장장치 1-1. 하드웨어의 구성  중앙 처리 정치 (CPU, Central Processing Unit) 명령어를 실행하는 핵심 장치 - 산술 논리 연산 장치 (ALU, Arithmetic and Logic Unit) - 제어 장치 (CU, Control Unit): 명령어를 해독하여 실행에 필요한 제어 신호를 발생시켜 모든 장치를 제어 - 레지스터 (Register): CPU 내부에서 사용되며 고속으로 액세스가 가능한 임시 기억 장치 산술 논리 연산 장치 1 CPU 내부 버스 제어 장치 레지스터 1-1. 하드웨어의 구성  메모리 (Memory) 작업에 필요한 프로그램과 데이터를 저장하는 장소 _ 일시적으로 사용되는 휘발성 메모리 고속으로 액세스가 가능하며 보조 기억 장치 보다 고가의 장치 속도 1ns 레지스터 바이트 2ns !1 캐시 메가바이트 50ns 메모리 기가바이트 500ns 저장장치 테라바이트 용량 1-1. 하드웨어의 구성  저장 장치 (보조 기억 장치) 메모리보다 느리지만 저렴하고 용량이 큼 전원의 온오프와 상관없이 데이터를 영구적으로 저장 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 싸기 때문 종류 - 자성 이용 장치: 카세트테이프, 플로피디스크, 하드디스크 등 - 레이저 이용 장치: CD, DVD, 블루레이디스크 등 - 메모리 이용 장치: USB 드라이버, SD 카드, CF 카드, SSD 등 Sanisk 3 W Verbatim 64개B CD-PV 1-1. 하드웨어의 구성  입출력정치 입력장치 : 외부의 데이터를 컴퓨터에 입력하는 장치 - 키보드, 마우스, 스캐너, 터치스크린 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치 - 프린트, 모니터,스피커,3D프린터 입력장치 출력정치 1-1. 하드웨어의 구성  메인보드 CPU와 메모리 등 다양한 부품을 연결하는 커다란 판 다양한 장치들을 버스(bus)로 연결 함. 버스는 데이터가 지나다니는 통로 그래픽카드, 사운드카드, 랜카드 등이 기본으로 장착되어 있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함 RAM 단자 마우스, 키보드 단자 CPU 단자 하드디스크 연결 단자 그래픽카드 연결 단자 내장 그래픽카드 단자 USB 일반장치 연결 단자 단자 사운드 단자 1-2. 폰 노이만 구조  폰 노이만 구조 메모리에서 실행할 명령어를 인출 CPU 내 제어 장치에서 이 명령어를 해독하고 ALU 및 관련 장치에 제어 신호를 전달 ALU는 명령어를 실행하고 레지스터나 메모리에 결과를 저장 중앙 처리 장치(CPU) intel 프로그램 카운터 XEON™ 누산기 CPU 메모리 메모리 메인보드 레지스터 (주기억 장치) 데이터 1 산술 논리 연산 장치 버스 제어 장치 (ALU) 입출력장치 n 입출력정치 1 저장장치 1 저장장치 n 입출력 장치 1-2. 폰 노이만 구조  요리사 모형 요리사 -CPU, 도마- 메모리, 보관 창고 - 저장장치에 비유 요리사(CPU)가 요리를 하려면 보관 창고(저장장치)에 있는 재료를 도마(메모리)로 가져와야 함 주방에서는 도마(메모리)가 핵심적인 작업 공간이고 보관 창고(저장장치)는 보조적인 공간임 요리사(CPU) 보조 요리사 주방 보조 요리사 모형 운영체제 작업 요리 방법 결정 프로세스 관리 도마 정리 메모리 관리 보관 창고(저장장치) 도마(메모리) 보관 창고 정리 저장장치 관리 1-2. 폰 노이만 구조  메인 메모리가 작으면 컴퓨터가 느려지는 이유 메인 메모리를 도마라 생각해보면, 도마가 크면 재료를 모두 가져다놓고 요리할 수 있지만 도마가 작으면 재료를 모두 가져올 수 없음 도마가 작으면 재료 하나를 다듬어 보관 창고에 갖다놓고 다른 재료 가져와야 하므로 재료 손질 시 간보다 옮기는 시간이 많이 걸려 작업 속도가 떨어짐 도마의 크기가 전체 재료를 놓을 수 있을 만큼 충분히 크다면 작업 속도에 영향을 미치지 않음 1-3. 기초 용어 정리 데이터 표시 단위 비트 (b, Oor 1), 바이트 (B, 8비트) SI(10진수 단위) IEC(2진수 단위) 값 기호 이름 값 기호 이름 10진수 변환 크기 (103)= 108 K,K kilo- (210)1=210-103.015 Ki kibi- 1,024 (109)2=106 M mega- (210)2=220≥ 106.02 Mi mebi- 1,048,576 (108)3= 109 G giga- (210)3=230≥ 108.03 Gi gibi- 1,073,741.824 (103)4= 1012 T tera- (210)4=240~ 1012.04 Ti tebi- 1,099,511,627.776 (108)5=1015 P peta- (210)5=250≥ 1015.05 Pi pebi- 1,125,899,906,842.624 (103)6=1018 E exa- (210)6=260≥ 1018.06 Ei exbi- 1.152,921.504,606.846.976 1037= 1021 Z Zetta- (210)7=270~1021.07 Zi zebi- 1,180.591.620.717.411.303,424 (103) = 1024 Y yotta- (210)8=280~1024.08 Yi yobi- 1,208,925.819,614.629,174,706,176 kibi: kilobinary, mebi: megabinary, gibi gigabinary, tebi: terabinary, pebi : petabinary, exbi-: exabinary, zebi : zettabinary, yobi-: yottabinary 1-3. 기초 용어 정리  클록 (Clock)과 헤르쯔 (Hz) 클록(clock)은 컴퓨터에서 일정한 박자를 만들어 내는 것 - 펄스(Pluse): 클록에 의해 일정 간격으로 만들어지는 틱(tick) 클록이 일정 간격으로 펄스를 만들면 거기에 맞추어 컴퓨터 안의 모든 구성 부품들이 작업 진행 - CPU는 클록 한 번에 한 번의 덧셈, 메모리도 클록이 발생할 때마다 데이터 저장 헤르쯔 (Hz): 클록 또는 CPU의 성능을 표현하는 단위 - 1초 동안 몇 번의 작업이 이루어져서 몇 번의 펄스(클록 틱)가 발생하였는가를 의미 클럭주기 1-3. 기초 용어 정리  시스템 버스와 CPU 버스 시스템 버스(System Bus): 메모리와 주변장치를 연결하는 버스 - 메인보드의 동작 속도를 의미하며 FSB(Front-Side Bus) 혹은 전면 버스라고 부름 CPU 버스: CPU 내부의 다양한 장치를 연결하는 버스 - BSB(Back Side Bus) 혹은 후면 버스라 부름 BSB 속도는 CPU 클록과 같고 FSB보다 훨씬 빠름 부품 사양 CPU 인텔 코어 i7(6코어, 12스레드, 기본 3.7GHz, 최대 5.0GHz, 캐시 20MB) 메인보드 FSB 3,200MHz 메모리 DDR4 SDRAM 4GB(3,200MHz) 그래픽카드 RTX 3060 12GB, 베이스클록 1,530MHz 하드디스크(HDD) 1TB, 7200rpm, 256MB 1-3. 기초 용어 정리  프로그래밍 (Programming): 컴퓨터 프로그램을 만드는 것  프로그래밍 언어 (Programming Language): 프로그래밍할 사용하는 언어 기계어 (Machine Language): 0과 1의 이진수로 이루어진 언어 어셈블리어 (Assembly Language): 사람이 이해할 수 있는 문자 형태로 바꾼 언어 - 일반인이 사용하기 어려운 저급 언어 (Low Level Language) 고급언어 (High Level Language): 일반인이 이해할 수 있는 단어로 만든 언어 - 기계어, 어셈블리어를 제외한 대부분의 언어가 고급 언어 - C, Java, Python 1-3. 기초 용어 정리  컴파일 (Compile): 고급언어를 기계어로 번역하는 과정  컴파일러 (Compiler): 컴파일을 담당하는 프로그램 컴파일러가 소스코드를 번역하여 기계어로 이루어진 실행 파일을 만들면 컴퓨터가 실행하여 작업 을 시작함 소스코드를 기계어로 번역하는 다른 방법인 인터프리터(interpreter)는 소스코드를 한 번에 한 문장씩 번역하여 실행 1-3. 기초 용어 정리  자료구조 큐(Queue): 먼저 들어온 자료가 먼저 처리되는 First In, First Out. 한쪽으로 자료를 넣으면 반 대쪽으로 나오는 구조 스택 (Stack): 가장 나중에 들어온 자료가 가장 먼저 처리되는 First In, Last Out. 순서가 뒤집혀 서 나오고 한쪽으로만 입출력이 이루어짐 배열 (Array): 형태가 같은 자료를 나열하여 메모리에 연속으로 저장하는 것으로 구현은 간단하지 만 공간의 삽입과 삭제 같은 관리가 어려운 게 단점 - 크기가 정해진 메모리나 파일 관리에 사용 연결 리스트 (Linked List): 데이터를 포인터(Pointer)로 연결해 데이터를 중간에 삽입 가능 - 데이터의 삽입과 삭제가 빈번한 테이블에 주로 사용 2. CPU와 메모리 2-1. CPU의 구성과 동작  산술 논리 연산 장치 (ALU, Arithmetic and Logic Unit) 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR, XOR 같은 논리 연산을 수행  제어 장치 (CU, Control Unit) 명령어를 해독하여 실행에 필요한 제어 신호를 발생시켜 모든 장치를 제어  레지스터 (Register) CPU 내부에서 사용되며 고속으로 액세스가 가능한 임시 기억 장치 산술 논리 연산 장치 CPU 내부 버스 제어 장치 레지스터 2-1. CPU의 구성과 동작  CPU의 명령어 처리 두 수의 덧셈 과정 intD2 int D2 == 20; 20; //메모리 100번지가 1/메모리 100번지가 D2로 가정 D2로 가정 intD3 int D3 = 30; 30; //메모리 120번지가 1/메모리 120번지가 D3로 D3로 가정 int sum; int sum; //메모리 160번지가 1/메모리 160번지가 sum으로 가정 sum == D2 Sum D2 ++ D3; D3; 어셈블리어 변환 1 LOAD LOADmem(100), mem(100), register 2 register 2 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 2 LOAD mem(120), LOAD mem(120), register register 33 120번지(D3) 내용을 //메모리120번지(D3) 1/메모리 R3로이동 내용을 R3로 이동 3 ADD register ADD 5, register register 5, 2, register register 2, 3 1/R2와 register 3 R3를더한 //R2와 R3를 더한 후 R5에임시 후 R5에 임시 저장 저장 44 MOVE MOVE register register 5, 5, mem(160) mem(160) //R5의 결과를 결과를 160번지 (sum)에 저장 160번지 (sum)에 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 인출-해독- 실행사이클로 구성 (폰 노이만 구조) 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC CU 제어 정치 (Control Unit) IR 메모리 주소 레지스터 (Memory Address Register): 제어 버스 CU MAR 메모리 관리자가 접근해야 할 메모리 주소를 저장 메모리 버퍼 레지스터 (Memory Buffer Register): 레지스터 세트 ALU AC MBR 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 데이터 버스 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (인출) 1 LOAD 1 LOAD mem(100),register mem(100), register 2 2 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - PC에 저장된 값 (1)을 MAR로 보내고 메모리로부터 명령어 데이터를 MBR을 통해 명령어를 받음 - MBR로부터 받은 명령어 데이터는 IR에 탑재 주소 버스: 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 " 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (인출) 1 LOAD 1 LOAD mem(100),register mem(100), register 22 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - PC는 자동으로 다음 명령어를 인출하기 위해 다음 명령어 주소로 교체된다 (1- 2) 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (해독) 1 LOAD 1 LOAD mem(100),register mem(100), register 22 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - CU (제어 장치)는 IR로부터 받은 명령어를 해석한다 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (해독) 1 LOAD 1 LOAD mem(100),register mem(100), register 2 2 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - CU (제어 장치)는 명령어를 해석하고, 피연산자인 메모리의 100번지 데이터를 받기 위해 메모리로 제 어 신호를 보내고 MAR에는 100이 저장된다. 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (해독) 1 LOAD 1 LOAD mem(100),register mem(100), register 22 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - 메모리에 저장된 100번지의 값(20)을 MBR로 전달 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 (실행) 1 LOAD 1 LOAD mem(100),register mem(100), register 22 100번지(D2) 내용을 //메모리100번지(D2) 1/메모리 R2로 이동 내용을 R2로 이동 - 제어장치는 MBR에 저장된 값을 register 2로 옮김 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 " CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 22 LOADmem(120), LOAD mem(120), register register 3 3 120번지(D3) 내용을 //메모리120번지(D3) //메모리 R3로 이동 내용을 R3로 이동 - 1번 명령과 동일하게 2명 명령을 인출 (PC-MAR-Memory-MBR-IR)하고, PC값 증가 (3) - 인출된 명령어는 제어장치에서 해독 후, 피연산자는 MAR을 통해 MBR로 저장 - MBR에 저장된 값은 register 3으로 이동 (실행) 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 33 ADD ADDregister register 5, 5, register register 2,2,register register3 3 //R2와 R3를더한 1/R2와R3를 더한후 RS에임시 후R5에 임시저장 저장 1번 명령과 동일하게 2명 명령을 인출 (PC-MAR-Memory-MBR-IR)하고, PC값 증가 (4) - 인출된 명령어는 제어장치에서 해독하고, ALU에 연산을 위한 제어신호 전달 ALU는 피연산자를 받아 덧셈 연산을 수행 (실행) 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 제어 버스 CU MAR 메모리 주소 레지스터 (Memory Address Register): 메모리 관리자가 접근해야 할 메모리 주소를 저장 레지스터 세트 ALU AC MBR 메모리 버퍼 레지스터 (Memory Buffer Register): 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  CPU의 명령어 처리 과정 44 MOVE MOVE register5,5,mem(160) register mem(160) //R5의 결과를 1/R5의 (sum)에저장 결과를 160번지 (sum)에 저장 - 1번 명령과 동일하게 2명 명령을 인출 (PC-MAR-Memory-MBR-IR)하고, PC값 증가 (5) - 인출된 명령어는 제어장치에서 해독하고 - MAR에 메모리 주소 (160)와 MBR에 데이터를 싣고, 메모리에 쓰기 명령 전달 (실행) 주소 버스 MAR 내용 ALU 산술 논리 연산 장치 (Arithmetic and Logic Unit) PC IR CU 제어 잔치 (Control Unit) 메모리 주소 레지스터 (Memory Address Register): 제어 버스 CU MAR 메모리 관리자가 접근해야 할 메모리 주소를 저장 메모리 버퍼 레지스터 (Memory Buffer Register): 레지스터 세트 ALU AC MBR 메모리 관리자가 메모리에서 가져온 데이터를 임시 저장 데이터 버스 PC 프로그램 카운터 (Program Counter): 다음에 실행할 명령어의 위치를 저장 MBR IR 명령 레지스터 (Instruction Register): 실행중인 명령어를 저장 AC 누산기 (Accumulator): ALU에서 계산된 과정을 누적 저장 2-1. CPU의 구성과 동작  버스의 종류 제어 버스: 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사 용한다. 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문 에 양방향이다. 주소 버스: 메모리 주소 레지스터와 연결된 버스로, 데이터를 읽거나 쓸 때 메모리나 주변 장치에 위치 정보를 보내기 위해 사용하며 단방향이다. 데이터 버스: 메모리 버퍼 레지스터와 연결된 버스로 양방향이다. 제어 버스 주소 버스 데이터 버스 CPU 제어장치 메모리 주소 레지스터 메모리 버퍼 레지스터 CPU 내부 버스(BSB) 주변장치 메모리 시스템 버스(FSB) 2-2. 메모리의 종류와 부팅  메모리의 종류 DRAM 휘발성 SRAM PSRAM RAM PRAM 비휘발성 FRAM 반도체 메모리 MRAM One Time Mask ROM ROM EPROM Rewritables EEPROM 플래시 NAND NOR 2-2. 메모리의 종류와 부팅  RAM (Random Access Memory) 임의의 주소에 빠르게 접근할 수 있는 특성 주로 휘발성인 특성 DRAM - 2진 정보를 커패시터에 공급되는 전하 형태로 보관. 시간이 경과하면 방전되므로 일정 시간 안에 재충 전 필요 - 집적도가 높아 메인 메모리에서 주로 활용 SRAM - 2진 정보를 플립플롭으로 구성되며, 전원이 공급되는 동안 보존 - 속도가 빨라 캐시에서 주로 활용 2-2. 메모리의 종류와 부팅  ROM (Read-only Memory) 변경할 필요가 없는 프로그램이나 데이터를 저장하는데 사용 마스크롬(mask ROM): 데이터를 지우거나 쓸 수 없음 PROM (Programmable ROM): 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음 EPROM (Erasable Programmable ROM): 데이터를 여러 번 쓰고 지울 수 있음 EEPROM (Electrically Erasable Programmable ROM): 전기적 신호를 이용해 빠르게 데이터 를 지우고 다시 쓸수 있는 비휘발성 메모리 - 플래시 메모리 (Flash Memory): 디지털 카메라, MP3 플레이어, USB 등 - SSD: 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 높은 내구성으로 많이 사용 2-2. 메모리의 종류와 부팅  메모리 보호 일괄 작업 시스템: 사용자 영역의 작업이 운영체제 영역의 작업으로 침범하지 못하도록 막음 현대의 운영체제 - 시분할 기법을 사용하여 여러 프로그램이 동시에 실행하므로, 여러 개의 작업 공간으로 나눔 - 운영체제나 다른 프로그램 영역으로 침범하려는 악성 소프트웨어 (바이러스)로부터 보호 한계 레지스터 - 메모리 보호를 위해 CPU가 현재 진행중인 경계 및 크기를 레지스터에 저장 - 운영체제가 중단된 동안 CPU가 하드웨어 레벨에서 보호 0 - 문제 발생 시, 메모리 오류와 관련된 신호를 발생 운영체제 100 A 작업 140 140 경계 레지스터 B 작업 180 4 40 한계 레지스터 C 작업 220 D 작업 260 그림 2-14 메모리 보호 2-2. 메모리의 종류와 부팅  부팅 컴퓨터를 켰을 때, 운영체제를 메모리에 올리는 과정 마스터 부트 레코드: 하드 디스크의 첫번째 섹터로 부트스트랩이 저장됨 - 부트스트랩 (로더): 운영체제를 실행하기 위한 작은 코드. 하드디스크에 저장된 운영체제를 메모리로 가져와 실행하는 역할 하드웨어 점검 바이오스 (롬) 메모리에 마스터 부트 부트스트랩 코드를 올려서 실행 레코드 운영체제 부트스트랩 코드가 운영체제 프로세스 실행 3. 컴퓨터 성능 향상 기술 3-1. 버퍼  버퍼 (Buffer): 일정량의 데이터가 모이면 한번에 옮김으로써, 속도가 다른 두 장치간의 차이를 완화하는 역할 - 데이터 하나하나 이동 시키는 불필요한 작업량을 감소 예시 - HDD의 메모리 버퍼 (DRAM) 쓰기: 데이터를 먼저 버퍼에 저장해두고, 쌓이면 HDD에 기록 - 네트워크 버퍼 스트리밍: 영상 데이터를 네트워크 버퍼에 저장하여 재생이 끊기지 않도록 함 3-1. 버퍼  스풀 (SPOOL: Simultaneous Peripheral Operation On-line) CPU와 입출력정치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼 예시: 프린터 스풀러 - 운영체제가 프린트 데이터를 스풀 파일로 변환하고, HDD에 저장 - 저장된 파일이 대기열 (Queue)에서 기다리고, 사용 가능해지면 프린터 버퍼로 전송 - 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작 - 인쇄물이 완료될 때까지 다른 인쇄물이 끼어들 수 없으므로 프로그램 간에 배타적임 3-1. 버퍼  캐시 (Cache) 메모리와 CPU 간의 속도 차이 (시스템 버스와 내부 버스)를 완화하기 위해 메모리의 데이터를 미 리 가져와 저장해두는 임시 장소 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되 는 데이터를 미리 옮겨둠 CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄 3-1. 버퍼  캐시 구조 캐시 히트(cache hit): 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용 캐시 미스(cache miss): 캐시에 원하는 데이터 없으면 메모리로 가서 찾음 캐시 적중률(cache hit ratio): 캐시 히트 되는 비율로 일반적인 컴퓨터의 캐시 적중률은 약 90% 캐시 적중률 향상 방법 - 캐시의 크기를 늘리는 방법: 비용의 문제 발생 - 지역성 (가까운 데이터가 멀리 있는 데이터보다 사용 확률이 높다)을 활용한 적중률 향상 방법 - 교체 알고리즘, 블록 크기 등 시작 CPU에서 주소 수신 캐시에 NO 해당 정보가 포함된 정보 존재? 주기억 장치를 액세스 YES 정보 블록에 대한 캐시 라인 할당 해당 정보를 CPU로 전송 주기억 장치의 요청한 정보를 정보 블록을 캐시에 저장 CPU로 전달 완료 3-1. 버퍼  캐시 쓰기 방식 즉시 쓰기(write through) - 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식 - 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐 - 메모리의 최신 값이 항상 유지되기 때문에 급작스러운 정전에도 데이터를 잃어버리지 않음 지연 쓰기(write back) - 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기 적으로 반영하는 방식 - 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음 - 메모리와 캐시된 데이터 사이의 불일치가 발생할 수도 있음 CPU CPU 쓰기 쓰기 캐시 캐시 함께 쓰기 함께 쓰기 나중에 쓰기 주기억 장치 주기억 장치 3-1. 버퍼  L1/L2 캐시 캐시는 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시, 명령어와 데이터를 구분하 여 가져오는 특수 캐시로 구분 일반 캐시: 메모리와 연결되기 때문에 L2(Level 2) 캐시라고 부름 특수 캐시: CPU 레지스터에 직접 연결되므로 L1(Level 1) 캐시라고 부름 명령어 레지스터 데이터 레지스터 특수 캐시 너 특수 캐시 명령어 캐시 데이터 캐시 일반 캐시 일반 캐시 L2 캐시 ^ 미리 가져오기 3-2. 저장장치의 계층 구조  가격 한도 내에 최적화된 속도와 큰 용량을 동시에 얻는 방법 빠르고 비싼 저장장치를 CPU 가까이 배치하고, 싸고 용량이 큰 저장창지를 반대쪽에 배치  이점 CPU와 가까운 쪽에 레지스터나 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있음 메모리에서 작업한 내용을 하드디스크와 같이 저렴하고 용량이 큰 저장장치에 영구적으로 저장할 수 있음  단점 속도 1ns 레지스터 바이트 데이터 일관성 문제: 지연 쓰기의 경우 2ns 캐시 메가바이트 50ns 메모리 기가바이트 저장장치 테라바이트 500ns 용량 3-3. 인터럽트  폴링 (Polling) CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식 CPU가 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리 CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여하므로 작업 효율 떨어짐 인터럽트(interrupt)  방식 입출력 관리자가 대신 입출력을 해주는 방식 CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음 3-3. 인터럽트  인터럽트 동작 방식 1. CPU가 입출력 관리자에게 입출력 명령 전송 2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치 로 이동 3. 데이터 전송이 완료되면 입출력 관리자는 CPU에 완료 신호를 보냄 ③ 인터럽트 발생 0 1 2 3 4 0 × ① 입출력 요청 CPU 입출력 관리자 ② 데이터 전송 메모리 3-3. 인터럽트  인터럽트 번호 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용하는 번호 - IRQ (Interrupt Request)  인터럽트 벡터 여러 개의 입출력 작업을 한꺼번에 처리하기 위해 여러 개의 인터럽트를 하나의 배열로 만든 것 인터럽트 처리를 위한 주소 정보 ③ 인터럽트 발생 0 1 2 3 4 0 X ① 입출력 요청 입출력 관리자 CPU ② 데이터 전송 메모리 3-3. 인터럽트  DMA (직접 메모리 접근, Direct Memory Access) 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한 제공 메모리 맵 입출력: 입출력장치를 위해 입출력 작업 영역을 메모리에 할당 사이클 훔치기: CPU와 DMA가 동시에 메모리에 접근하면 CPU가 사용 권한을 양보 운영체제 영역 CPU 입출력장치 1 입출력장치 2 직접 메모리 CPU 작업 영역 접근 제어기 : 메모리 입출력장치 n 입출력 작업 영역 시스템 버스 입출력 버스 메모리 4. 멀티 프로세싱 4-1. 멀티코어 시스템  단일 프로세서 시스템(single processor system) 프로세서가 하나의 작업을 처리 CPU 클록을 높이면 성능향상이 가능하지만 발열 등 HWV 기술적 한계  멀티 프로세서 시스템(multi processor system) 컴퓨터의 성능을 높이기 위해 프로세서를 여러 개 설치하여 사용하는 시스템 프로세서마다 레지스터와 캐시를 가지며, 모든 프로세서가 시스템 버스를 통하여 메인메모리를 공유 장점: 많은 작업을 동시에 실행시킬 수 있음 단점: 보드 설계 등 구조적인 변화가 요구됨 4-1. 멀티코어 시스템  프로세서의 기본 인터페이스를 변경하지 않고 속도를 향상시키는 방법 클록 속도의 향상 파이프라이닝 특정 기능 장치 추가 (슈퍼스칼라) 멀티 스레딩 멀티-코어 프로세서 4-2. CPU 병렬 처리  파이프라이닝 클록 사이클당 명령을 여러 개 실행 (낮은 수준의 병렬화) 명령 하나를 여러 단계로 나누어 각각을 독립적인 장치에서 동시에 실행하는 기술 단점: 단계별 실행 속도가 다르기 때문에 완전한 병렬화 불가능 S1 S2 S3 $4 S5 명령어 오퍼랜드 데이터 인출 장치 명령어 해독 장치 인출 장치 -> 명령어 실행 장치 저장 장치 (a) 5단계 파이프 라인 S1 1 2 3 4 5 6 7 8 9 S2 1 2 3 4 5 6 7 8 S3 1 2 3 4 5 6 7 $4 1 2 3 5 6 S5 2 3 4 5 1 2 3 4 5 6 7 8 9 시간 (b) 시간에 따른 각 단계별 상태 4-2. CPU 병렬 처리  슈퍼 스칼라 하나의 명령에서 특정 기능의 장치를 추가하여, 속도 차에 의한 병렬화의 단점 보완 s1 S2 S3 S4 S5 명령어 오퍼랜드 명령어 데이터 *해독 장치 인출 장치 실행 장치 * 저장 장치 명령어 인출 장치 82 84 S3 85 명령어 오퍼랜드 명령어 데이터 해독 장치 인출 장치 실행 장치 저장 장치 정수 ALU 정수 ALU 인출 해독 오퍼랜드 인출 * 부동 소수 연산 결과 저장 LOAD STORE 4-2. CPU 병렬 처리  멀티 스레딩 (Multi Threading) 물리적 CPU 코어는 하나지만 운영체제는 논리적 CPU가 2개 있는 것처럼 속임 가상 CPU 하나가 정지되어 대기 중이면 다른 가상 CPU가 실행 자원을 빌림 속도 향상에는 도움이 되지만 실제로 코어를 추가하는 만큼 좋지 않다 (a) A1 A2 A3 A4A5 A6 A7 A8 (b) B1 B2 B3 B4 B5 B6 B7 B8 (C) C1 C2 C3 C4 C5 C6 C7 C8 (d) A1 B1 C1 A2 B2 C2 A3 B3 C3 A4 B4 C4 4-2. CPU 병렬 처리  멀티 코어 (Multi-core) 기존 시스템을 유지한 채 멀티 프로세싱을 할 수 있게 하는 시스템 하나의 칩(chip)에 CPU의 핵심이 되는 코어(core)를 여러 개 만들어 여러 작업을 동시에 처리 듀얼코어(dual core)는 CPU의 주요 기능을 담당하는 코어가 2개, 쿼드코어(quad core)는 4개 응용 프로그램 개발 시, 멀티 스레딩을 지원하도록 직접 작성 4-2. CPU 병렬 처리 병렬 처리 대상 특징 파이프라이닝 하나의 명령어 하나의 명령어를 여러 단계로 나누어 병렬 처리 슈퍼 스칼라 단일 스레드 내 다중 명령어 여러 명령어를 병렬로 실행하여 단일 스레드의 성능 극대화 하나의 물리적 코어에서 두 개의 논리적 코어를 사용하여 멀티 스레딩 단일 프로세스 내의 다중 스레드 스레드를 병렬로 처리 멀티 코어 다중 프로세스 여러 물리 코어를 사용하여 병렬로 작업 처리 Thank You :)