컴퓨터 시스템 개요 1
- 컴퓨터 기본구조
하드웨어
: 컴퓨터에서 각종 정보의 전송 통로를 제공해 주고, 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체
소프트웨어
: 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(Command)들의 집합
CPU
: 컴퓨터의 특성을 결정하며, 컴퓨터의 핵심 기능인 프로그램 실행과 데이터 처리를 담당함
특징
- ‘프로세서’ 또는 ‘마이크로 프로세서’라고도 부름
- 산술 논리 연산 장치(ALU) : 산술, 논리, 보수, 시프트 연산을 수행하는 공간
- 제어장치(CU) : 명령어를 해독하여 명령어 실행에 필요한 제어 신호를 발생 시키고, 컴퓨터의 모든 장치를 제어
- 레지스터(register) : CPU 내부의 임시기억장치로, 중간값 or 결과값 or 상태 등을 기억함. (제일 빠름)
주 기억장치(MM)
- 장점 : 반도체 칩으로 구성되어 고속 접근이 가능
- 단점 : 비싸고 면적을 많이 차지하여 저장 용량에 한계가 있음
- 프로그램 실행 중에 일시적으로만 사용되는 휘발성(volatility) 메모리 → 전원 꺼지면 지워짐
- CPU ←→ 시스템 버스 ←→ 주기억장치 : CPU 내부의 레지스터들과 시스템 버스가 직접 연결됨 그러나 주기억장치와는 속도 차이가 있어 MAR, MBR 등의 버퍼를 통해 왔다갔다 함
- CPU <-> CPU 내부 버스 <-> MAR, MBR <-> 시스템 버스 <-> 주기억장치
보조기억장치 : 2차 기억 장치
- 하드 디스크(자기 디스크), SSD(플래시 메모리), 플래시 메모리(USB || MP3, 전기적으로 데이터 지우고 기록 가능)와 같은 비휘발성 메모리 + 저장밀도 높음 + 저가
- 그러나 속도가 느림.
- CPU에 당장 필요하지 않은 많은 양의 데이터나 프로그램을 저장한다.
- CPU가 직접 접근(읽기/쓰기)하지 못하고, 별도의 제어기를 통해 접근한다.
CPU ←→ 시스템 버스 ←→ 보조기억장치의 제어기 ←→ 보조기억장치
입출력 장치
- 사용자 - 컴퓨터 간의 상호작용(interaction)을 위한 장치
- CPU가 직접 데이터를 교환하지 못 하고 별도의 제어기를 통해 접근
- 입력 장치 : 데이터를 전자적인 2진 형태로 변환하여 컴퓨터 내부로 전달 ex)키보드, 마우스, 마이크 등
- 출력 장치 : 중앙 처리 장치가 처리한 전자적인 형태의 데이터를 사람이 이해할 수 있는 데이터로 변환하여 출력 ex)모니터, 스피커, 프린터 등
소프트웨어
: 컴퓨터를 구성하고 있는 하드웨어를 잘 동작시킬 수 있도록 제어하고, 지시하는 모든 종류의 프로그램
프로그램 : 어떤 일을 처리하기 위해 순차적으로 구성된 명령들의 집합
소프트웨어는 ‘시스템 소프트웨어’와 ‘응용 소프트웨어’로 구분
- 시스템 소프트웨어
: 하드웨어를 관리하고 응용 소프트웨어를 실행하는데 필요한 프로그램
ex) 운영체제(OS), 컴파일러, 인터프리터, 유틸리티 프로그램 등
- 유틸리티 프로그램
: 각종 주변 장치(보조기억장치, 입출력 장치)들을 구동하는데 필요한 드라이버 프로그램, 백신 프로그램, 압축 프로그램, 디스크 조각 모음 등
- 응용 소프트웨어
: 앱, 애플리케이션 등으로 불림
컴퓨터 시스템을 일반 사용자들이 특정한 용도에 활용하기 위해 만든 프로그램
2. 시스템의 구성
시스템 버스
: CPU와 기억장치 및 입출력 장치 사이에 정보를 교환하는 통로
- 주소 버스
- 데이터 버스
- 제어 버스
위 3가지가 기본 구성이고, 이들은 수십 개의 신호 선들로 구성됨.
주소 버스
- CPU가 기억장치나 입출력 장치를 지정하는 주소 정보를 전송하는 신호 선들의 집합
- 단방향 전송 : 주소는 CPU로부터 기억장치 혹은 IO장치로 보내지는 정보, CPU는 저장할 필요가 없음.
- 주소 선의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정
ex) 주소 버스의 비트 수 = 12비트라면, 최대 2^12 = 4K개의 기억 장소들의 주소를 지정가능
데이터 버스
- CPU가 기억장치나 입출력 장치 사이에 데이터 전송을 위한 신호선들의 집합
- 양방향 전송 : 읽기와 쓰기 동작 모두 지원
- CPU에 ALU나 레지스터 등 데이터가 임시저장될 수도 있으니까
- 데이터 선의 수는 CPU가 한 번에 전송할 수 있는 데이터 비트의 수를 결정
- ex) 데이터 버스 폭 = 32비트라면, CPU와 기억장치 간의 데이터 전송은 한 번에 32bit씩 가능
제어 버스
: CPU가 시스템 내의 기억 장치 및 IO 등 각종 요소의 동작을 제어하는 데 필요한 신호선들의 집합
- 기억장치 읽기 쓰기 신호 → 인출, 실행 때
- IO 읽기 쓰기
- 인터럽트 신호
- 버스 제어 신호 → 교통 제어 역할
++ 설계는 양방향이지만, 주로 단방향 사용
CPU와 기억 장치의 접속
액세스(access) : CPU가 데이터를 기억 장치의 특정 장소에 저장(쓰기)하거나, 이미 저장된 내용을 읽는 동작(읽기)
기억장치 액세스에 필요한 버스 및 제어신호
주소 및 데이터 버스 + 제어 신호(기억장치 읽기 or 쓰기 신호)
기억장치 저장(쓰기) 동작
: CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간
- 데이터를 저장할 기억장소 주소
- 저장할 데이터의 주소 버스와 데이터 버스
- 위 과정 동시에 쓰기 신호 활성화
기억장치 읽기(가져오기) 동작
: 주소를 발생한 시간부터 기억장치의 데이터가 CPU에 도착할 때 까지의 시간
- CPU가 기억장치 주소를 주소 버스를 통해 주소를 MM에 보내는 동시에 읽기 신호 활성화
- 일정 지연시간 경과 후(기억장치가 주소로 들어가서 데이터를 가져오는 시간 후), 데이터가 데이터 버스에 실리고 전달
CPU와 I/O 장치의 접속
필요한 버스 및 신호 : 주소 및 데이터 버스 + 제어 신호(I/O 읽기 or 쓰기 신호)
접속 경로 : CPU ↔ 시스템 버스 ↔ I/O 장치 제어기(속도차이 보완) ↔ I/O 장치
I/O 장치 제어기
: CPU로부터 I/O 명령을 받아, 장치를 제어하고 데이터를 이동함으로써 명령 수행
상태 + 데이터 레지스터는 주소를 가짐.
- 상태 레지스터준비상태(IN_RDY) 비트, 데이터 전송 확인(ACK, 잘 받으면 ACK가 1이 됨) 비트 등
- : I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터
- 데이터 레지스터 (데이터 버퍼)
- : CPU와 I/O 장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터
키보드의 데이터 입력 과정
키보드 제어기 동작
: 어떤 키(key)를 누르면, 그 키에 대응되는 ASCII 코드가 키보드 제어기의 데이터 레지스터에 저장
동시에 상태 레지스터의 IN_RDY 비트가 1로 세트
CPU의 동작
- 키보드 제어기로부터 상태 레지스터의 내용을 읽어서 IN_RDY가 1인지 검사
- IN_RDY가 1이면, 데이터 레지스터의 내용을 읽음
2-1. IN_RDY가 0이면, 반복하며 대기
프린터의 데이터 출력 과정
CPU 동작
- CPU는 프린터 제어기의 상태 레지스터를 읽어 Out_RDY 비트를 검사함
- Out_RDY 비트가 1이면, 프린터할 데이터를 프린터 제어기의 데이터 레지스터(혹은 데이터 버퍼)에 쓰고, 프린트 시작 제어 신호를 전송
2-1. Out_RDY 비트가 0이면, 반복하며 대기
프린터 제어기 동작
- 프린터 시작 제어 신호가 활성화 되면, 데이터 레지스터(혹은 데이터 버퍼)의 내용을 프린터로 보냄
- 프린터의 하드웨어를 제어하면서 인쇄 동작을 수행
CPU와 보조기억장치의 접속
: 보조기억장치(HDD, SSD, 플래시메모리 등)도 각 장치를 위한 제어기를 통해 I/O와 유사하게 접속
CPU는 보조기억장치의 제어기를 통해 접속
I/O와 보조기억장치 접속의 다른 점
키보드 : 바이트 단위 전송
보조기억장치 : 블록(512byte) || 페이지(2K, 4K 바이트) 단위로 전송
- 제어기 내에 한 블록 이상을 임시 저장할 수 있는 데이터 기억 장치(버퍼) 필요
컴퓨터 기능
프로그램 코드를 정해진 순서대로 수행
⇒ 데이터를 읽고(Read), 처리(Processing)하고, 저장(STORE) 함
프로그램 실행 : CPU가 주기억장치(MM)으로부터 프로그램 코드를 읽어서 실행
데이터 저장 : 프로그램 실행 결과를 주기억장치에 저장
데이터 이동 : HDD || SSD에 저장된 명령어와 데이터 블록을 주기억장치로 이동
데이터 입출력 : 사용자가 키보드 || 마우스를 통해 입력하는 명령어나 데이터를 읽거나 CPU가 처리한 결과를 모니터 || 프린터로 출력
제어 : 프로그램에 정해진 순서에 따라 실행되도록 각종 제어신호 발생 (if, for, 함수 등 필요에 따라 실행순서 변경)
'🖥️ Computer Science > Computer Architecture' 카테고리의 다른 글
[컴퓨터 구조] CPU의 구조와 기능 2 (1) | 2023.11.12 |
---|---|
[컴퓨터 구조] CPU의 구조와 기능 1 (0) | 2023.11.12 |
[컴퓨터 구조] 컴퓨터 시스템 개요 2 (1) | 2023.11.12 |