프로그램 입출력
1. 개요
프로그램 입출력(PIO)은 다양한 전송 속도를 갖는 여러 모드로 그룹화된 인터페이스로, 데이터 전송을 위해 CPU의 직접적인 제어를 사용한다. ATA 표준에서 PIO 모드는 모드 0부터 모드 6까지 있으며, 각 모드마다 최대 전송 속도와 최소 사이클 시간이 다르다. PIO 모드는 초기에는 널리 사용되었지만, CPU 오버헤드가 크다는 단점으로 인해 DMA 인터페이스가 개발되었다. PIO 모드 5와 6은 컴팩트 플래시 규격 2.0에서 정의되었으며, 임베디드 시스템이나 FPGA와 같이 고속 전송이 필요하지 않은 경우에 유용하게 사용된다. 일부 장치는 PIO 타이밍과 호환되지 않으며, GL819 칩을 사용하는 샌디스크 SDDR-89 12-in-1 카드 리더의 경우 ATA 및 CF 규격과 다른 타이밍을 보인다.
| {"caption":"프로그램 입출력은 CPU가 주변 장치와 통신하는 방법입니다."} | |
| 유형 | 프로그램 입출력 인터럽트 구동 입출력 직접 메모리 접근 |
|---|---|
| 설명 | CPU가 소프트웨어를 통해 주변 장치와 직접 데이터를 교환하는 입출력 방식 |
|---|---|
| 작동 방식 | CPU는 주변 장치의 상태 레지스터를 주기적으로 폴링하여 데이터 전송 준비 여부를 확인 데이터 전송 준비가 완료되면, CPU는 입출력 명령어를 사용하여 데이터를 주변 장치와 교환 |
| 장점 | 간단한 하드웨어 구조 |
| 단점 | CPU가 데이터 전송을 기다리는 동안 다른 작업을 수행할 수 없어 효율성이 떨어짐 데이터 전송 속도가 CPU 속도에 의해 제한됨 |
| 설명 | 주변 장치가 데이터 전송 준비가 완료되면 CPU에게 인터럽트를 요청하여 데이터를 교환하는 방식 |
|---|---|
| 작동 방식 | CPU는 다른 작업을 수행하는 동안 주변 장치의 인터럽트 요청을 감지 인터럽트가 발생하면, CPU는 현재 작업을 중단하고 인터럽트 서비스 루틴(ISR)을 실행하여 데이터를 주변 장치와 교환 |
| 장점 | CPU가 데이터 전송을 기다리는 동안 다른 작업을 수행할 수 있어 효율성이 향상 |
| 단점 | 인터럽트 처리 오버헤드가 발생 하드웨어 구조가 복잡 |
| 설명 | 주변 장치가 CPU의 개입 없이 직접 메모리에 데이터를 읽고 쓰는 방식 |
|---|---|
| 작동 방식 | CPU는 DMA 컨트롤러에게 데이터 전송 시작 주소, 전송 바이트 수 등의 정보를 제공 DMA 컨트롤러는 CPU의 개입 없이 직접 메모리와 주변 장치 간에 데이터를 전송 |
| 장점 | CPU의 부담을 줄여 시스템 전체의 효율성을 향상 |
| 단점 | DMA 컨트롤러와 같은 추가적인 하드웨어 필요 메모리 접근 충돌 문제 발생 가능 |
2. ATA 표준에서의 PIO 모드
PIO 인터페이스는 서로 다른 전송 속도에 해당하는 여러 가지 모드로 그룹화된다. 각 모드 간의 전기 신호는 유사하지만, 더 높은 전송 속도를 위해 트랜잭션 간의 주기 시간이 감소한다. 모든 ATA 장치는 가장 느린 모드인 모드 0을 지원하며, CPU는 ATA 드라이브의 정보 레지스터에 접근(모드 0 사용)하여 장치의 최대 전송 속도를 결정하고 ATA 컨트롤러를 구성할 수 있다.
| | 최대 전송 속도 (MB/초) || 최소 순환 시간 || 규격 정의 표준 | |||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 모드 0 | 3.3 | 600 ns | ATA-1 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 모드 1 | 5.2 | 383 ns | ATA-1 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 모드 2 | 8.3 | 240 ns | ATA-1 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 모드 3 | 11.1 | 180 ns | ATA-2 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 모드 4 | 16.7 | 120 ns | ATA-2 | ||||||||||||||||||||||||||||||||||||||||||||||||
| 모드 5 | {{cvt|} | }
| | 최대 전송 속도 (MB/s) || 최소 사이클 시간 || 사양 정의 표준 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 모드 0 | 3.3 | 600 ns | ATA-1 | |||||||||||||||||||||||||
| 모드 1 | 5.2 | 383 ns | ATA-1 | |||||||||||||||||||||||||
| 모드 2 | 8.3 | 240 ns | ATA-1 | |||||||||||||||||||||||||
| 모드 3 | 11.1 | 180 ns | ATA-2 | |||||||||||||||||||||||||
| 모드 4 | 16.7 | 120 ns | ATA-2 | |||||||||||||||||||||||||
| 모드 5 | {{cvt|} | }
| | 최대 전송 속도 (MB/초) || 최소 순환 시간 || 규격 정의 표준 | |||
|---|---|---|---|
| 모드 5 | 20 | 100ns | 콤팩트플래시 2.0 |
| 모드 6 | 25 | 80ns | 콤팩트플래시 2.0 |
PIO 모드 5는 초당 22 MB의 동작 속도로 제안되었으나, 당시 CPU 성능 문제와 DMA 표준의 등장으로 하드 디스크에는 구현되지 않았다. 이 모드를 지원하는 하드 드라이브는 제조된 적이 없지만, 일부 메인보드 제조업체들은 바이오스를 통해 예비 지원을 제공했다. PIO 모드 5는 CF-to-IDE 어댑터를 통해 IDE에 콤팩트플래시 카드를 장착하여 사용할 수 있다.
PIO 모드 5는 22MB/s의 속도로 작동하도록 제안되었지만, 당시 CPU가 제안된 PIO 5 타이밍에서 하드 디스크를 기다리느라 성능이 저하될 것이고, 결국 DMA 표준이 이를 대체했기 때문에 하드 디스크에서는 구현되지 않았다. 이 모드를 지원하도록 제작된 하드 디스크 드라이브는 없었지만, 일부 마더보드 제조업체는 선제적으로 이에 대한 BIOS 지원을 제공했다. PIO 모드 5는 CF-to-ATA 어댑터를 통해 ATA에 연결된 컴팩트 플래시 카드와 함께 사용할 수 있다.
3. 장치 호환
모든 장치가 PIO 타이밍과 호환되는 것은 아니다. 제네시스 로직사의 GL819 칩을 사용하는 샌디스크 SDDR-89 12-in-1 카드 리더 장치를 예로 들 수 있는데, 이 칩은 대부분의 PIO 모드와 조금 다르다.
| PIO 모드 | 1 | 2 | 3 | 4 | 6 |
|---|---|---|---|---|---|
| GL819 타이밍 | 399ns | 249ns | 183ns | 133ns | 83ns |
| ATA 및 CF 규격 타이밍 | 383ns | 240ns | 180ns | 120ns | 80ns |