Lecture #1 제1장. 컴퓨터시스템 개요
강의 목차 1.1 컴퓨터의 기본 구조 1.2 정보의 표현과 저장 1.3 시스템의 구성 1.4 컴퓨터구조의 발전과정
1.1 컴퓨터의 기본 구조 컴퓨터시스템의 구성 응용 소프트웨어 (application software) 하드웨어(hardware) 시스템 소프트웨어(system software) 응용 소프트웨어 (application software) Computer Architecture
하드웨어와 소프트웨어 하드웨어(hardware) 소프트웨어(software) 컴퓨터 정보들의 전송 통로를 제공해 주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들 소프트웨어(software) 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(command)들의 집합 시스템 소프트웨어(system software) : OS(WinXP, Unix, Linux 등) 응용 소프트웨어(application software) : 워드프로세서, 웹 브라우저 등 Computer Architecture
컴퓨터 하드웨어의 주요 요소들 Computer Architecture
컴퓨터 하드웨어의 기본 구조 컴퓨터는 프로그램 코드들을 정해진 순서대로 실행 필요한 데이터를 읽어서(read), 처리(processing)하고, 저장(store) Computer Architecture
컴퓨터 하드웨어의 주요 구성요소 (1) 중앙처리장치(Central Processing Unit: CPU) 프로세서(processor) '프로그램 실행'과 '데이터 처리'라는 중추적인 기능의 수행을 담당하는 요소 컴퓨터의 특성과 성능을 대부분 결정 기억장치(memory) CPU가 실행할 프로그램과 데이터를 저장하는 장치 (1) 주기억장치(main memory) CPU 가까이 위치하며 반도체 기억장치 칩들로 구성 고속 액세스 가격이 높고 면적을 많이 차지 저장 용량의 한계 영구 저장 능력이 없기 때문에 프로그램 실행 중에 일시적으로만 사용 Computer Architecture
컴퓨터 하드웨어의 주요 구성요소 (2) (2) 보조저장장치(auxiliary storage device) 2차 기억장치(secondary memory) 기계적인 장치가 포함되기 때문에 저속 액세스 저장 밀도가 높고, 비트 당 비용이 저가 영구 저장 능력을 가진 저장장치 : 디스크, 자기 테이프(magnetic tape) 등 입출력장치(I/O device) 입력 장치(input device), 출력 장치(output device) 사용자와 컴퓨터간의 대화를 위한 도구 별도의 I/O 제어기를 통해 CPU와 통신 CPU와 I/O 장치 사이에 직접적인 데이터 교환이 일어나지 않음 Computer Architecture
컴퓨터 하드웨어의 주요 구성요소 (3) 시스템 버스(System Bus) 컴퓨터 시스템을 구성하는 구성 요소들을 연결하여 상호 데이터 교환을 지원 구성 요소간의 데이터 데이터 교환 경로 Computer Architecture
1.2 정보의 표현과 저장 컴퓨터 정보 2진수(1 or 0) 비트(bit: binary digit)들로 표현된 프로그램 코드와 데이터 프로그램 코드 기계어(machine language) 기계 코드(machine code), 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어 2진수 비트들로 구성 어셈블리 언어(assembly language) 어셈블리 코드(assembly code), 고급 언어와 기계어 사이의 중간 언어 저급 언어(low-level language), 기계어와 1:1 대응 고급 언어(high-level language) 영문자와 숫자로 구성되어 사람이 이해하기 쉬운 언어 C, PASCAL, FORTRAN, COBOL 등 Computer Architecture
프로그램 언어의 변환 과정 Z = X + Y LOAD A,X : 기억장치 X번지의 내용을 읽어 레지스터 A에 적재(load) ADD A,Y : 기억장치 Y번지 내용을 읽어 레지스터 A에 적재된 값과 더하고 결과를 다시 A에 적재 STOR Z,A : 그 값을 기억장치 Z 번지에 저장(store) Computer Architecture
프로그램 언어 번역 소프트웨어 컴파일러(compiler) 어셈블러(assembler) 고급언어 프로그램을 기계어 프로그램으로 번역하는 소프트웨어 어셈블러(assembler) 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어 니모닉스(mnemonics) 어셈블리 명령어가 지정하는 동작을 개략적으로 짐작할 수 있도록 하기 위하여 사용된 기호 ‘LOAD’, ‘ADD’, ‘STOR’ 등 Computer Architecture
기계 명령어의 형식 연산 코드(op code) 오퍼랜드(operand) CPU가 수행할 연산을 지정해 주는 비트들 비트 수 = 3이면, 지정할 수 있는 연산의 최대 수는 23 = 8 오퍼랜드(operand) 적재될 데이터가 저장된 기억장치 주소 혹은 연산에 사용될 데이터 비트의 수 = 5이면, 주소 지정할 수 있는 기억장소의 최대 수는 25 = 32 Computer Architecture
프로그램 코드와 데이터의 기억장치 저장 단어(word) 각 기억 장소에 저장되는 데이터의 기본 단위로서, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹 Computer Architecture
1.3 컴퓨터 시스템의 구성 1.3.1 CPU와 기억장치의 접속 1.3.2 CPU와 I/O 장치의 접속 1.3.3 컴퓨터 시스템의 전체 구성 Computer Architecture
1.3.1 CPU와 기억장치의 접속 시스템 버스(system bus) 기본 구성 주소 버스(address bus) 데이터 버스(data bus) 제어 버스(control bus) Computer Architecture
시스템 버스 (1) 주소 버스(address bus) 데이터 버스(data bus) CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합 주소 선들의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정 주소 버스의 비트 수 = 16 비트라면, 최대 216 = 64K 개의 기억 장소들의 주소를 지정 가능 데이터 버스(data bus) CPU가 기억장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합 데이터 선들의 수는 CPU가 한 번에 전송할 수 있는 비트 수를 결정 데이터 버스 폭 = 32 비트라면, CPU와 기억장치 간의 데이터 전송은 한 번에 32 비트씩 가능 Computer Architecture
시스템 버스 (2) 제어 버스(control bus) CPU가 시스템 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합 기억장치 읽기/쓰기(Memory Read/Write) 신호 I/O 읽기/쓰기(I/O Read/Write) 신호 Computer Architecture
CPU와 시스템 버스 주소 버스 : 단방향성(uni-directional bus) 주소가 CPU로부터 기억장치 혹은 I/O 장치들로 전송되는 정보이기 때문 데이터 버스, 제어 버스 : 양방향성(bi-directional) 읽기와 쓰기를 모두 해야 하기 때문 Computer Architecture
CPU와 기억장치 (1) 기억장치 쓰기 동작 CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내면서 동시에 쓰기 신호를 활성화 기억장치 쓰기 시간(memory write time) CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간 Computer Architecture
CPU와 기억장치 (2) 기억장치 읽기 동작 CPU가 기억장치 주소를 주소 버스를 통하여 보내면서 읽기 신호를 활성화 기억장치 읽기 시간(memory read time) 주소를 해독(decode)하는 데 걸리는 시간과 선택된 기억 소자들로부터 데이터를 읽는 데 걸리는 시간을 합한 시간 Computer Architecture
기억장치 액세스 동작의 시간 흐름도 읽기 Computer Architecture
1.3.2 CPU와 I/O 장치의 접속 CPU - 시스템 버스 – I/O 장치 제어기 – I/O 장치 I/O Controller Computer Architecture
I/O 장치 제어기 (I/O device controller) CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고, 데이터를 이동함으로써 명령을 수행하는 전자회로 장치 (키보드 제어기, 프린터 제어기 등) 상태 레지스터 I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터 준비 상태(RDY) 비트, 데이터 전송확인(ACK) 비트, 등 데이터 레지스터 CPU와 I/O 장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터 Computer Architecture
키보드의 데이터 입력 과정 키보드 제어기 CPU 키보드의 어떤 한 키(key)를 누르면, 그 키에 대응되는 ASCII 코드가 키보드 제어기의 데이터 레지스터에 저장되고, 동시에 상태 레지스터의 In_RDY 비트가 1로 세트 CPU 키보드 제어기로부터 상태 레지스터의 내용을 읽어서 In_RDY 비트가 세트 되었는지 검사 (In_RDY 비트는 데이터 레지스터에 외부로부터 데이터가 적재되었는지를 표시) 만약 세트 되지 않았으면, 1번을 반복하며 대기. 만약 세트 되었다면, 데이터 레지스터의 내용을 읽음 Computer Architecture
프린터의 데이터 출력 과정 CPU : 프린터 제어기 : 프린터 제어기의 상태 레지스터의 내용을 읽어서 Out_RDY 비트 검사 (Out_RDY 비트는 프린터가 출력할 준비가 되었는지를 표시) 만약 세트 되지 않았으면, 1번을 반복하며 대기 만약 세트 되었다면, 프린트할 데이터를 프린터 제어기의 데이터 레지스터에 씀 프린터 제어기 : 데이터 레지스터의 내용을 프린터로 보내고, 프린터의 하드웨어를 제어하여 인쇄 Computer Architecture
CPU와 보조저장장치의 접속 보조저장장치들(디스크, 플로피 디스켓, CD-ROM 등)도 각 장치를 위한 제어기를 통하여 키보드나 프린터와 유사한 방법으로 접속 차이점 : 데이터 전송 단위 키보드, 프린터 : 바이트(8 비트) 단위로 전송 보조저장장치 : 블록(512/1024/4096 바이트) 단위로 전송 제어기 내에 한 블록 이상을 임시 저장할 수 있는 데이터 버퍼 필요 트랙 버퍼(track buffer) 하드 디스크상의 한 트랙의 내용을 모두 저장할 수 있는 디스크 제어기내의 데이터 버퍼 Computer Architecture
I/O 장치의 식별 CPU가 특정 I/O 장치에 데이터를 전송하고자 할 때에 원하는 I/O 장치를 어떻게 식별하는가? I/O 주소(I/O Address) 사용 I/O 장치제어기의 레지스터 별로 I/O 주소를 할당 CPU가 입출력하고자 할 때에 해당 I/O 장치제어기의 I/O 주소를 이용하여 I/O 장치제어기를 접근 Computer Architecture
1.3.3 컴퓨터시스템의 전체 구성 Computer Architecture
컴퓨터의 기본적인 기능들 프로그램 실행 데이터 저장 데이터 이동 데이터 입력/출력 제어 CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행 데이터 저장 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장 데이터 이동 디스크 혹은 CD-ROM에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동 데이터 입력/출력 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다. 또한 CPU가 처리한 결과값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력 제어 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생 Computer Architecture
1.4 컴퓨터 구조의 발전 과정 주요 부품들의 발전 과정 릴레이(relay) → 트랜지스터 → 반도체 집적회로(IC) 발전된 특성들: 처리속도 향상 저장용량 증가 크기 감소 가격 하락 신뢰도 향상 초기 컴퓨터들의 근본적인 설계 개념과 동작 원리가 현대의 컴퓨터들과 거의 같음 Computer Architecture
최초의 컴퓨터 1642년, Blaise Pascal(프랑스) 덧셈과 뺄셈을 수행하는 기계적 카운터 다이얼의 위치에 의하여 십진수를 표시하는 6개의 원형판 세트들로 구성 각 원형판은 일시적으로 숫자를 기억하는 레지스터로 사용 Computer Architecture
Leibniz의 기계 1671년, Gottfried Leibniz(독일) 덧셈과 뺄셈 및 곱셈과 나눗셈도 할 수 있는 계산기 Pascal의 계산기에 두 개의 원형판들을 추가하여 반복적 방법으로 곱셈과 나눗셈을 수행 이후 많은 기계들의 조상이 됨 Computer Architecture
Difference Engine 19세기 초, Charles Babbage(영국, 현대 컴퓨터의 할아버지) 표에 있는 수들을 자동적으로 계산하고, 그 결과를 금속천공기를 거쳐서 프린트 덧셈과 뺄셈만 수행 가능 Computer Architecture
Analytical Engine 19세기 초, Charles Babbage(영국) 주요 특징들 문제점 어떤 수학 연산도 자동적으로 수행할 수 있는 일반 목적용 계산 기계 프로그래밍 가능 : 프로그램 언어 사용 프로그램의 실행 순서 변경 가능 수의 부호 검사를 이용한 조건 분기 제어카드 이용을 이용한 실행 순서 변경 문제점 주요 부품들이 기계적인 장치들이었기 때문에 속도가 느렸고 신뢰도가 낮음 Computer Architecture
Analytical Engine의 기본 구조 산술연산장치 : CPU 기억장치 : Store 입력장치: 카드판독기 출력장치: 프린터, 카드 천공기 Computer Architecture
ENIAC Electronic Numerical Integrator And Computer 1940년대 초, von Neumann(폰 노이만) 펜실바니아 대학에서 개발한 진공관을 사용한 최초의 전자식 컴퓨터 문제점 : 프로그램의 저장과 변경 불가능 폰 노이만의 설계 개념(Stored-program 개념) 2진수 체계(binary number system)를 사용 프로그램과 데이터를 내부에 저장 EDVAC(Electronic Discrete Variable Computer) 개발을 위하여 1945년에 발표 Computer Architecture
IAS 컴퓨터 1952년, 폰 노이만 'stored-program' 컴퓨터 주요 구성요소 주요 특징 프로그램 제어 유니트(Program Control Unit) : 명령어 인출/해독 산술논리연산장치(ALU) 주기억장치 : 명령어와 데이터를 모두 저장 입출력장치 주요 특징 주기억장치로부터 한 번에 두 개씩 명령어 인출 하나는 즉시 프로그램 제어 유니트로 보내져서 실행 다른 하나는 명령어 버퍼에 저장되어 있다가 다음 명령어 실행 사이클에서 실행 최근 프로세서들의 명령어 선인출(instruction prefetch)과 같은 개념 Computer Architecture
IAS 컴퓨터의 구조 폰 노이만 구조(von Neumann Architecture) 프로그램 코드들을 기억장치에 저장된순서대로 실행하며, 그 주소는 CPU의내부 레지스터인 프로그램 카운터(program counter)에 의하여 지정 Computer Architecture
1.4.2 주요 컴퓨터 부품들의 발전 경위 트랜지스터(transistor) 초기(제1세대) 전자식 컴퓨터의 핵심 부품인 진공관을 대체한 전자 부품 진공관보다 작고 싸며 더 적은 열을 발산 반도체 재료인 실리콘(Si)으로 만들어진 고체(solid-state) 장치 제2세대 컴퓨터로 분류 제1세대 컴퓨터들의 부품은 진공관 초기 컴퓨터들은 약 1000 개의 트랜지스터들로 구성 집적 회로(Integrated Circuit: IC) 수만 개 이상의 트랜지스터들을 하나의 반도체 칩에 집적시킨 전자 부품 제3세대 컴퓨터로 분류 Computer Architecture
IC의 제조 과정 Computer Architecture
집적도에 따른 IC의 분류 (1) SSI(Small Scale IC) MSI(Medium Scale IC) 최근에는 주로 기본적인 디지털 게이트(digital gate)들을 포함하는 칩 MSI(Medium Scale IC) 수백 개의 트랜지스터들이 집적되는 IC 카운터(counter), 해독기(decoder) 또는 쉬프트 레지스터(shift register)와 같은 조합 회로나 순차 회로를 포함하는 칩 LSI(Large Scale IC) 수천 개의 트랜지스터들이 집적되는 대규모 IC 8-비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩 Computer Architecture
집적도에 따른 IC의 분류 (2) VLSI(Very Large Scale IC) 마이크로프로세서 칩들과 대용량 반도체 기억장치 칩 ULSI(Ultra Large Scale IC) 수백만 개 이상의 트랜지스터들이 집적되는 32-비트급 이상 마이크로프로세서 칩들과 수백 메가비트 이상의 반도체 기억장치 칩들 및 앞으로 출현할 고밀도 반도체 칩들을 지칭하기 위한 용어 아직 일반적으로 통용되는 용어는 아님 LSI 기술을 이용한 마이크로프로세서 개발부터 제4세대 컴퓨터 시대의 시작 개인용 컴퓨터 출현 초고속 슈퍼컴퓨터 개발 Computer Architecture
IC 사용에 따른 이점 전기적 통로가 짧아짐 동작 속도가 크게 상승 컴퓨터 크기의 감소 칩 내부의 회로들간의 상호연결 부품들의 신뢰성 향상 전력 소모 감소 및 냉각 장치의 소형화 컴퓨터 가격 하락 Computer Architecture
반도체 집적 이론 ‘무어의 법칙’ ‘황의 법칙’ 인텔의 창업자인 고든 무어가 주장 반도체의 집적도가 18개월마다 2배씩 증가하며 PC가 이를 주도한다는 이론 최근 미세공정의 한계로 인해 무어의 법칙의 효용성이 낮아졌다는 주장이 제기 ‘황의 법칙’ 황창규 삼성전자 반도체총괄 사장이 2002년 미국 샌프란시스코에서 열린 국제반도체회로학술회의(ISSCC) 총회에서 발표한 반도체 메모리 신성장론 반도체 메모리 집적도가 1년에 2배씩 증가하며 모바일 기기와 디지털 가전제품 등이 그 성장을 주도할 것 삼성전자는 2002년 90나노 2Gb(기가비트)를 개발한 데 이어 2003년 70나노 4Gb, 2004년 60나노 8Gb, 2005년 50나노 16Gb 낸드플래시를 매년 내놓으면 '황의 법칙'을 입증 Computer Architecture
1.4.3 컴퓨터시스템의 분류와 발전 동향 개인용 컴퓨터 시스템 중형 컴퓨터 시스템 메인프레임 컴퓨터 시스템 슈퍼컴퓨터 Computer Architecture
개인용 컴퓨터 (1) 특징 주요 발전 동향 소형, 저가 성능 : 십년 전의 대형 메인프레임 컴퓨터의 성능을 능가 매 2 ~ 3 년마다 성능이 개선된 새로운 마이크로프로세서가 등장하고, 그에 따라 새로운 PC 모델 출현 주변 요소들(캐쉬, MMU, 산술보조프로세서 등)이 CPU 칩에 내장됨에 따라 속도 및 신뢰도가 향상 CPU 구조가 다수의 ALU들 혹은 명령어 실행 유니트들을 포함하는 슈퍼스칼라(superscalar) 구조로 발전함에 따라, 여러 명령어들의 동시 실행 가능 Computer Architecture
개인용 컴퓨터 (2) 주요 발전 동향 (계속) 분기 예측(branch prediction), 동적 실행(dynamic execution) 기법 등이 사용됨에 따라 하드웨어 이용률이 높아지고, 따라서 처리 속도가 더욱 향상 문자 이외의 다양한 정보들에 대한 입력과 출력, 저장 및 처리 능력을 보유하게 됨에 따라 멀티미디어 PC로 발전 보다 더 편리한 사용자 인터페이스를 제공해 주는 시스템 소프트웨어들 출현 (Windows 95/98/ME/2000/XP) 고속 입출력장치들의 인터페이스를 위한 새로운 버스 규격 제안 주기억장치와 보조저장장치의 용량이 크게 증가 Computer Architecture
중형급 컴퓨터시스템 워크스테이션(workstation) 슈퍼미니컴퓨터(Super-minicomputer) CPU : 32-비트 혹은 64-비트 마이크로프로세서 사용 고속 그래픽 처리 하드웨어 포함 주요 응용 : 컴퓨터를 이용한 설계(CAD), 시뮬레이션 등 OS : UNIX 슈퍼미니컴퓨터(Super-minicomputer) 시스템 구조 : 다중프로세서(multiprocessor) 구조 CPU의 수 : 20 ~ 30 개 성능 : VAX-11 미니컴퓨터 성능의 수십 배 이상 다운사이징(downsizing) 주도 네트워크에 접속된 다수의 중형급 컴퓨터 시스템들을 응용(혹은 용도)별로 구분하여 사용하는 컴퓨팅 환경이 가능해지게 함 Computer Architecture
다중프로세서시스템의 구조 Computer Architecture
메인프레임 컴퓨터(Mainframe Computer) IBM 360 및 370 계열, 3081, 3090 등으로 계속 발전 대용량 저장장치 보유 다중 I/O 채널을 이용한 고속 I/O 처리 능력 보유 대규모 데이터베이스 저장 및 관리용으로 사용 최근 성능과 가격면에서 슈퍼미니급 컴퓨터들과 경쟁하고 있으며, 점차적으로 시장 점유율 하락 중 Computer Architecture
슈퍼컴퓨터(Supercomputer) 현존하는 컴퓨터들 중에서 처리 속도와 기억장치 용량이 다른 컴퓨터들에 비하여 상대적으로 월등한 컴퓨터 시스템들 분류 기준 : 계속적으로 상승 최초의 슈퍼컴퓨터인 CRAY-1의 속도는 100 MFLOPS 최근의 슈퍼컴퓨터들의 속도는 수백 GFLOPS 이상 주요 응용 분야들 VLSI 회로 설계, 항공우주공학, 천문학(일기 예보), 구조 공학, 유전 탐사, 핵공학, 인공지능, 입체 영상처리 등과 같은 대규모 과학 계산 및 시뮬레이션 Computer Architecture
슈퍼컴퓨터: 구조에 따른 분류 파이프라인 슈퍼컴퓨터(pipeline supercomputer) 한 CPU 내에 다수의 연산 장치들이 포함 각 연산 장치는 고도의 파이프라이닝 구조를 이용하여 고속 벡터 계산 가능 대표적인 시스템들 : CRAY Y-MP, CRAY-2, Fujitsu VP2000, VPP500 등 대규모 병렬컴퓨터(massively parallel computer: MPP) 한 시스템 내에 상호 연결된 수백 혹은 수천 개 이상의 프로세서들 포함 프로세서들이 하나의 큰 작업을 나누어서 병렬로 처리 시스템 구조의 예 : Thinking Machine사의 CM-1 시스템 특징 : 프로세서 수 = 최대 65,536(216)개 프로세서 내부 구조 매우 간단한 구조의 프로세서 16개가 상호 연결되어 하나의 칩에 집적되어 있으며, 그러한 칩들이 수백개가 모여 한 프로세서 모듈을 구성 Computer Architecture
MPP의 예: CM-1 병렬컴퓨터의 프로세서 모듈 Computer Architecture