11.1 주변 장치
- 컴퓨터의 입출력(I/O) 시스템은 중앙 처리 장치(CPU)와 외부 환경 간의 데이터 교환을 담당.
- 프로그램과 데이터는 저장 장치(디스크, 테이프 등)에 미리 저장되어야 하며, 결과는 출력 장치를 통해 사용자에게 제공됨.
11.2 입출력 인터페이스
I/O 버스와 인터페이스 모듈
- I/O 버스는 데이터 라인, 주소 라인, 제어 라인으로 구성.
- 각 주변 장치는 인터페이스 유닛을 통해 CPU와 연결됨.
- CPU는 주소 라인을 이용해 특정 장치를 선택하고, 제어 라인을 통해 명령을 전달함.
- I/O 명령어 유형:
- 제어 명령(Control Command): 주변 장치 활성화 및 동작 지시.
- 상태 명령(Status Command): 주변 장치의 상태 점검.
- 데이터 출력 명령(Data Output Command): 데이터를 주변 장치로 전송.
- 데이터 입력 명령(Data Input Command): 데이터를 주변 장치에서 수신.
I/O 버스와 메모리 버스
- 버스가 메모리, I/O와 통신하는 방법
- 별도 버스 사용: 메모리 버스와 I/O 버스를 분리하여 독립적으로 운영.
- 공용 버스 + 개별 제어 라인: 하나의 버스를 사용하되, 메모리와 I/O를 위한 개별 제어 라인 활용.
- 완전 공용 버스: 단일 버스로 메모리와 I/O를 모두 처리(제어 라인 공유).
격리형 I/O vs 메모리 매형 I/O
- 독립형 I/O (Isolated I/O)
- 메모리와 I/O 주소를 구분하여 별도 관리.
- CPU는 특정 입출력 명령어를 사용하여 I/O 장치를 제어.
- I/O 주소가 메모리 주소 공간에 영향을 주지 않음.
- 메모리 매핑 I/O (Memory-Mapped I/O)
- 메모리와 I/O가 같은 주소 공간을 공유.
- CPU는 일반적인 메모리 명령어(LOAD, STORE 등)를 사용하여 I/O 장치를 제어 가능.
- 단점: I/O 주소가 메모리 주소를 차지하여 전체 메모리 사용 가능 공간이 줄어듦.
11.3 비동기 데이터 전송
- 디지털 시스템의 내부 동작은 공통 클럭 펄스로 동기화된다. 그러나 CPU와 I/O 인터페이스는 서로 독립적으로 설계되므로 각 장치의 내부 타이밍이 다를 수 있다. 이런 경우 두 장치는 비동기적(asynchronous) 이라고 한다.
- 키보드
비동기 데이터 전송을 위해 제어 신호를 사용하여 데이터 전송 시점을 알려야 한다. 이를 위한 방법으로 스트로브 펄스(strobe pulse) 방식과 핸드셰이킹(handshaking) 방식이 있다.
1. 스트로브 제어 방식
※ 스트로브 펄스(strobe pulse)는 디지털 시스템에서 CPU와 메모리 모듈 또는 I/O 장치와 같은 두 장치 간의 데이터 전송 타이밍을 조정하는 데 사용되는 제어 신호. 데이터가 유효하며 읽거나 써야 하는 시기를 나타내는 짧은 지속 시간의 신호이다.
※ 스트로브 (strobe)란 데이터 전송을 동기화하기 위해 스트로브 펄스를 생성하거나 사용하는 메커니즘
- 송신기(Source unit)가 전송을 시작하는 경우
- 송신기가 데이터 버스에 데이터를 올림.
- 스트로브 신호를 활성화하여 수신기(destination)에게 데이터 전송을 알림.
- 수신기가 데이터를 읽고, 송신기는 스트로브 신호를 비활성화.
- 수신기(Destination unit)가 전송을 요청하는 경우
- 수신기가 스트로브 신호를 활성화하여 데이터를 요청.
- 송신기가 데이터 버스에 데이터를 올림.
- 수신기가 데이터를 읽고, 스트로브 신호를 비활성화.
✅ 단점: 송신기가 수신기가 데이터를 제대로 받았는지 확인할 방법이 없다.
2. 핸드셰이킹 방식
스트로브 방식의 단점을 보완하기 위해 2개의 제어 신호를 사용한다.
- 데이터 유효(data valid): 송신기가 데이터를 올렸음을 알리는 신호
- 데이터 수락(data accepted): 수신기가 데이터를 받았음을 알리는 신호
(1) 송신기 주도 전송
- 송신기가 데이터 버스에 데이터를 올리고 데이터 유효 신호를 활성화.
- 수신기가 데이터를 받고 데이터 수락 신호를 활성화.
- 송신기가 데이터 유효 신호를 비활성화(데이터 무효화).
- 수신기가 데이터 수락 신호를 비활성화(다음 데이터 수신 준비 완료).
(2) 수신기 주도 전송
- 수신기가 데이터 준비 완료(ready for data) 신호를 활성화.
- 송신기가 데이터를 올리고 데이터 유효 신호를 활성화.
- 수신기가 데이터를 받고 데이터 수락 신호를 활성화.
- 송신기가 데이터 유효 신호를 비활성화.
- 수신기가 데이터 수락 신호를 비활성화(다음 데이터 요청 준비 완료).
✅ 핸드셰이킹 방식의 장점
- 송신기와 수신기가 데이터를 확실히 주고받았는지 확인 가능.
- 각 장치는 자신의 속도에 맞춰 데이터를 주고받을 수 있음.
- 타임아웃 기능을 추가하여 일정 시간 내 응답이 없을 경우 오류 감지 가능.
비동기 직렬 전송
1. 직렬 전송과 병렬 전송
- 병렬 전송: 여러 개의 비트가 동시에 여러 개의 경로를 통해 전송됨. 빠르지만 많은 전선이 필요함.
- 직렬 전송: 데이터를 한 비트씩 순차적으로 전송함. 느리지만 전선이 적게 필요하여 비용이 저렴함.
2. 동기식과 비동기식 직렬 전송
- 동기식 전송: 송신기와 수신기가 공통된 클럭 신호를 공유하여 일정한 속도로 데이터를 전송함.
- 비동기식 전송: 데이터가 필요할 때만 전송되며, 전송되지 않을 때는 회선이 유휴 상태로 유지됨.
3. 비동기식 직렬 전송 방식
- 데이터의 시작과 끝을 구별하기 위해 시작 비트(Start Bit)와 정지 비트(Stop Bit) 사용.
- 시작 비트(0) → 데이터 비트 → 정지 비트(1) 순서로 전송됨.
- 수신기는 1에서 0으로의 전환을 감지하여 새로운 데이터 수신을 시작함.
11.4 전송 모드
- 프로그램된 I/O (Programmed I/O)
- CPU가 직접 I/O 장치를 제어하며, 데이터 전송을 위해 명령어를 실행한다.
- CPU는 인터페이스 상태를 지속적으로 모니터링해야 하며, 플래그(Flag) 비트를 확인해 데이터 전송을 수행한다.
- CPU가 지속적으로 확인해야 하므로 비효율적이며, 저속 장치나 전용 시스템에서 주로 사용된다.
- 인터럽트 기반 I/O (Interrupt-Initiated I/O)
- CPU가 I/O 장치의 상태를 지속적으로 감시하지 않고, 장치가 데이터 전송이 가능할 때 인터럽트 신호를 보낸다.
- CPU는 인터럽트가 발생하면 현재 작업을 일시 중단하고 I/O 작업을 처리한 후 원래 작업으로 복귀한다.
- 인터럽트 방식에는 벡터 인터럽트(Vectored Interrupt) 와 비벡터 인터럽트(Nonvectored Interrupt) 가 있다.
- 벡터 인터럽트: 인터럽트 발생 시 특정 메모리 주소에서 서비스 루틴을 찾아 실행.
- 비벡터 인터럽트: 고정된 메모리 위치에서 서비스 루틴을 실행.
- 직접 메모리 접근 (DMA, Direct Memory Access)
- CPU 개입 없이 데이터가 직접 메모리와 I/O 장치 간에 전송된다.
- CPU는 초기 설정만 하고, 이후에는 DMA 컨트롤러가 데이터 전송을 담당.
- CPU는 메모리 접근을 일시 중단하는 방식으로 DMA 전송을 허용한다.
- 빠르고 효율적이며, 대용량 데이터 전송에 적합하다.
11.5 우선순위 인터럽트
- CPU는 I/O 장치와 데이터를 전송할 때 장치가 준비되었는지를 확인해야 한다. 이를 위해 인터럽트 신호를 사용하며, CPU는 인터럽트 요청을 받으면 현재 실행 중인 프로그램의 주소를 스택에 저장하고, 인터럽트 서비스 루틴(ISR)으로 분기한다.
- 여러 개의 I/O 장치가 인터럽트를 요청할 수 있으며, 동시에 여러 요청이 들어올 경우 우선순위(priority) 를 정해야 한다. 속도가 빠른 장치(예: 하드디스크)는 높은 우선순위를, 속도가 느린 장치(예: 키보드)는 낮은 우선순위를 갖는다.
- 소프트웨어 방식 (Polling Method)
- 인터럽트 요청이 발생하면, CPU가 순차적으로 모든 장치를 검사하여 가장 높은 우선순위를 가진 장치를 찾는다.
- 단점: 인터럽트 요청이 많으면 처리 속도가 느려질 수 있음.
- 하드웨어 방식 (Priority Interrupt Controller, PIC)
- 하드웨어가 자동으로 우선순위를 판별하여 가장 높은 우선순위를 가진 장치만 인터럽트를 허용한다.
데이지 체인 우선순위 인터럽트
- 장치들을 직렬(Serial)로 연결하여, 가장 높은 우선순위를 가진 장치가 인터럽트 요청을 먼저 처리함.
- 장점: 하드웨어 구성이 간단함.
- 단점: 장치의 개수가 많아지면 응답 속도가 느려질 수 있음.
병렬 우선순위 방식 (Parallel Priority Method)
- 각 장치별로 인터럽트 비트를 갖는 레지스터를 사용하여 인터럽트 요청을 판별.
- 마스크 레지스터를 사용해 특정 인터럽트를 비활성화(masking) 할 수도 있음.
- 장점: 빠르고 효율적임.
- 단점: 하드웨어 설계가 복잡함.
우선순위 인코더
- 두 개 이상의 입력이 동시에 들어왔을 때 높은 우선순위를 가진 입력에 우선권을 주는 것
- X: don't care 조건
- IST: 인터럽트 상태 비트
'Mano의 컴퓨터시스템구조' 카테고리의 다른 글
[mano의 컴퓨터시스템 구조] 10장 컴퓨터 산술 연산 (0) | 2025.02.26 |
---|---|
[mano의 컴퓨터시스템 구조] 9장 파이프라인과 벡터 처리 (1) | 2025.02.02 |
[mano의 컴퓨터시스템 구조] 8장 중앙 처리 장치 (1) | 2025.01.18 |
[mano의 컴퓨터시스템 구조] 7장 마이크로 프로그램된 제어 (0) | 2025.01.05 |
[mano의 컴퓨터시스템 구조] 6장 기본 컴퓨터 프로그래밍 (2) | 2024.12.16 |