2024. 4. 16. 02:32ㆍ카테고리 없음
< 컴퓨터 시스템 개요 차시의 목차 >
- 기본
- 1.1 컴퓨터의 기본 구조
- 1.2 정보의 표현과 저장
- 1.3 시스템의 구성
- 1.4 컴퓨터구조의 발전과정
< 기본 >
1. 컴퓨터 시스템의 구성
- 소프트웨어
: 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(command)들의 집합
=> 응용 소프트웨어(문서, 웹브라우저, ...)
=> 시스템 소프트웨어(OS, ...)
- 하드웨어
: 컴퓨터 정보들의 전송 통로를 제공해주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체들
2. 컴퓨터 하드웨어의 주요 요소들

- 매인 보드: 주 기판(모든 장치를 연결)
- CPU 및 GPU 칩: GPU는 AI, Graphics, 병렬처리에 쓰임
- 주기억장치: 메모리
- 확장보드: 사운드 카드 등
- 전원 공급 장치(power supply): 냉각기 필수
- 광 저장장치(보조기억장치): CD-ROM, DVD
- 하드 디스크, SSD(보조기억장치)
- 키보드(입력장치)
- 마우스(입력장치)
- 디스플레이 모니터(출력장치)
< 1.1 컴퓨터의 기본 구조 >
- 컴퓨터의 기능: 프로그램 코드를 정해진 순서대로 수행
> 데이터를 읽어서, 처리하고, 저장한다(read, processing, store).
- 주요 구성요소들: 중앙처리장치, 기억장치, 입출력장치

1. 컴퓨터의 기본적인 구성요소들
1) 중앙처리장치(CPU, Central Processing Unit)
> 프로세서(processor)라고도 함
> '프로그램 실행'과 '데이터 처리'의 역할
> CPU가 한 번에 처리하는 데이터 길이(비트수)에 따라 8비트, 32비트, 64비트 컴퓨터로 분류
2) 주기억장치(main memory)
> CPU와 가까이에 위치
> 고속 접근(읽기, 쓰기) 가능
> 고가 & 면적이 넓다 ~> 저장 용량에 한계
> 영구 저장 능력이 없기에, 일시적 저장장치로만 사용
3) 보조기억장치(auxiliary storage device)
> 저가 & 저장 밀도가 높음
> 영구 저장 능력이 있다
> 하드디스크, 플레시 메모리, CD-ROM 등
4) 입출력장치(I/O device)
> 주변장치(peripheral device)라고도 부름
> CPU는 해당 장치 제어기를 통하여 동작을 제어한다(CPU의 직접적인 access 불가하기에 별도의 제어기 필요)
< 1.2 정보의 표현과 저장 >
- 컴퓨터 정보: 2진수 비트들로 표현된 프로그램 코드와 데이터
- 프로그램 코드
> 기계어(machine language)
=> 기계 코드(machine code)라고도 함
=> 저급언어(CPU별로 달라질 수 있다)
=> 2진수 비트들로 구성
> 어셈블리 언어(assembly language)
=> 고급 언어와 기계어 사이의 중간 언어(저급언어로 분류)
=> 어셈블러(assembler)로 번역되며, 기계어와 일대일 대응
> 고급 언어(high-level language)
=> 컴파일러를 이용하여 기계어로 번역
=> C와 C++(중간언어), PASCAL, Python 등
1. 프로그램 언어의 번역 과정
[예] Z = X + Y
![]() - 001: '레지스터 A에 적재하라'는 연산 지정 비트 - 00101: 적재될 데이터가 저장된 기억장치의 주소(5번지) ~> 기억장치 5번지의 내용을 읽어서 레지스터 A에 적재(LOAD)하라. |
2. 프로그램 언어 번역 소프트웨어
- 컴파일러(compiler)
: 고급언어 프로그램을 기계어 프로그램으로 번역
- 어셈블러(assembler)
: 어셈블리 프로그램을 기계어 프로그램으로 번역
> 니모닉스(mnemonics)
=> 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호
=> 'LOAD', 'ADD', 'STOR' 등
3. 기계어(machine language) 형식
- 연산 코드(op code)
> CPU가 수행할 연산을 지정해주는 비트
> 비트 수 = '3'이라면, 지정될 수 있는 연산의 최대수: 2의 3승 = 8개
- 오퍼랜드(operand)
> 연산에 사용될 데이터 혹은 데이터가 저장된 기억장치 주소(memory address)
> 비트 수 = '5'라면, 주소지정(addressing)할 수 있는 기억장소의 최대수: 2의 5승 = 32개

4. 프로그램 코드와 데이터의 기억장치 저장
- 프로그램 코드(명령어)와 데이터는 지정된 기억 장소에 저장
- 단어(word) 단위로 저장
- 단어: 각 기억장소에 저장되는 정보의 기본단위로서, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
- 단어 길이의 예: 8비트, 16비트, 32비트, 64비트
- 주소지정 단위: 단어 단위 혹은 바이트(byte) 단위

< 1.3 시스템의 구성 >
<1.3.1 CPU와 기억장치의 접속 >
1. 시스템 버스(system bus)
> CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로
> 기본 구성: 주소버스(address bus), 데이터 버스(data bus), 제어 버스(control bus)
- 주소 버스(단방향성)
> CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합
> 각 주소 선은 하나의 주소 비트를 전송하는데 사용된다
> 전체 주소 선의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정
> CPU가 발생하는 주소 비트들의 수 = 주소 버스의 폭
=> 주소 버스의 비트 수(폭) = 16비트라면, 최대 2의 16승(64K)개 기억 장소들의 주소지정 가능
- 데이터 버스(양방향성)
> 데이터 버스가 하나인 것이 폰노이만 구조이다
> CPU가 기억장치 혹은 I/O장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합
> 워드 단위로 전송
> 데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정한다
=> 데이터 버스 폭 = 32비트라면, CPU는 기억장치로부터 한 번에 32비트씩 읽어올 수 있다
- 제어 버스(양방향성)
> CPU가 시스템 내의 각종 요소들의 동작을 제어하는데 필요한 신호 선들의 집합
> 제어 신호 선들의 수는 CPU & 시스템 구성에 따라 달라진다
> 기본적인 제어 신호
=> 기억장치 읽기/쓰기 신호
=> I/O 읽기/쓰기 신호
=> 인터럽트(Interrupt) 신호
=> 버스 제어(Bus Control) 신호
2. CPU와 시스템 버스 간의 접속

- 주소 버스: 단방향성(unidirectional)
> 주소는 CPU로부터 기억장치 혹은 I/O장치들로 보내지는 정보이다
- 데이터 버스, 제어 버스: 양방향성(bidirectional)
> 읽기와 쓰기 동작을 모두 지원한다
3. CPU와 기억장치 간의 접속
- 필요한 버스 및 제어신호
> 주소 버스, 데이터 버스, 제어신호: 기억장치 읽기 신호, 기억장치 쓰기 신호

- 기억장치 쓰기 동작
: CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내는 동시에, 쓰기 신호를 활성화

- 기억장치 쓰기 시간
: CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간
- 기억장치 읽기 동작
> CPU가 기억장치 주소를 주소 버스를 통하여 보내는 동시에, 읽기 신호를 활성화
> 일정 지연시간이 경과한 후에 기억장치로부터 읽힌 데이터가 데이터 버스 상에 실리고, CPU는 그 데이터를 버스 인터페이스 회로를 통하여 읽음

- 기억장치 읽기 시간
: 주소를 발생한 시간부터 기억장치의 데이터가 CPU에 도착했을 때까지의 시간
< 1.3.2 CPU와 I/O장치의 접속 >
- 필요한 버스 및 제어 신호
> 주소 버스, 데이터 버스, 제어 신호(I/O읽기신호, I/O쓰기신호)
- 접속 경로
: CPU <-> 시스템 버스 <-> IO 장치 제어기 <-> I/O 장치

1. I/O 장치 제어기(I/O device controller)
- 기능
> CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고, 데이터를 이동함으로써 명령을 수행하는 전자회로 장치
ex. 키보드 제어기, 프린터 제어기 등
- 상태 레지스터
> I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터
- 데이터 레지스터
> CPU와 I/O 장치 간의 임시 데이터 기억장치
- Buffer 역할(for 일시적 저장) ~> 데이터 버퍼(Data Buffer)라고도 부른다.
2. 키보드의 데이터 입력 과정
- 키보드 제어기
> 키보드의 어떤 한 키(key)를 누르면, 그 키에 대응되는 ASCII 코드가 키보드 제어기의 데이터 레지스터에 저장되고, 동시에 상태 레지스터의 In_RDY 비트가 1로 세트
- CPU
1) 키보드 제어기로부터 상태 레지스터의 내용을 읽어서 In_RDY 비트가 세트되었는지 검사(In_RDY 비트는 데이터 레지스터에 외부로부터 데이터가 적재되었는지를 표시)
2) 만약 세트되지 않았다면, 1번을 반복하여 대기. 만약 세트되었다면, 데이터 레지스터의 내용을 읽음


3. 프린터의 데이터 출력 과정
- CPU
1) 프린터 제어기의 상태 레지스터의 내용을 읽어서 Out_RDY 비트 검사(Out_RDY 비트: 프린터가 출력할 준비가 되었는지를 표시)
2) 만약 세트되지 않았으면, 1)번을 반복하며 대기. 만약 세트되었다면, 프린트할 데이터를 프린터 제어기의 데이터 레지스터에 저장(데이터 블록 전체를 제어기 내의 데이터 기억장치에 저장하는 것도 가능: spooling)
- 프린터 제어기:
1) 데이터 레지스터(혹은 데이터 기억장치)의 내용을 프린터로 보내고,
2) 프린터의 하드웨어를 제어하면서 인쇄 동작 수행


4. CPU와 보조저장장치의 접속
> 보조저장장치들: 디스크, 플레시 메모리, SSD, CD-ROM 등
- 차이점: 데이터 전송 단위
> 데이터 사이즈 大(비트단위X, 블록단위O로 대량 전송)
> 키보드: 바이트 단위 전송
> 보조저장장치: 블록(512bytes) 혹은 페이지(2K, 4K bytes) 단위로 전송
< 1.3.3 컴퓨터시스템의 전체 구성 >
1. 컴퓨터시스템의 전체 구성

2. 컴퓨터의 기본적인 기능들
- 프로그램 실행: CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행
- 데이터 저장: 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장
- 데이터 이동: 디스크 혹은 SSD에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동
- 데이터 입력/출력: 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다. 또한 CPU가 처리한 결과값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력
- 제어: 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생
< 1.4 컴퓨터 구조의 발전 과정 >은 다음 장에서 다루도록 함.
