프로그래밍된 입력 출력

Programmed input–output

프로그래밍된 입출력(프로그래밍입출력, 프로그래밍된 I/O, PIO)은 중앙처리장치(CPU)와 주변장치(예: 네트워크 어댑터 또는 병렬 ATA 스토리지 장치) 간에 입출력(I/O)을 통한 데이터 전송 방식이다.각 데이터 항목 전송은 모든 트랜잭션의 CPU를 포함하는 프로그램의 지침에 의해 시작된다.이와는 대조적으로 DMA(Direct Memory Access) 작업에서는 데이터 전송에서 CPU의 전원이 차단된다.

이 용어는 메모리 매핑된 I/O(MMIO) 또는 포트 매핑된 I/O(PMIO)를 가리킬 수 있다.PMIO는 보통 x86 아키텍처와 같은 전용 지침으로 접근하는 정상 메모리 외부의 특별한 주소 공간을 사용한 전송을 말한다.MMIO는[1] 프로그램이 사용할 수 있는 정상적인 주소 공간에 매핑된 I/O 장치로 전송하는 것을 말한다.PMIO는 I/O 장치에 의해 귀중한 리소스가 소비되지 않았기 때문에 주소 공간이 작은 초기 마이크로프로세서에 매우 유용했다.

프로그래밍된 I/O를 사용하는 PC 장치의 가장 잘 알려진 예는 AT Attachment(ATA) 인터페이스와 직렬 ATA 인터페이스지만 AT Attachment 인터페이스는 여러 DMA 모드 중 하나에서도 작동할 수 있다.PC의 많은 구형 장치들은 또한 레거시 직렬 포트, ECP 모드에 있지 않을 때의 레거시 병렬 포트, 키보드와 마우스 PS/2 포트, 레거시 MIDI(Musical Instrument Digital Interface)와 조이스틱 포트, 인터벌 타이머 및 구형 네트워크 인터페이스를 포함하여 PIO를 사용한다.

ATA 인터페이스의 PIO 모드

PIO 인터페이스는 다른 전송 속도에 해당하는 다른 모드로 그룹화된다.다른 모드들 간의 전기 신호는 유사하다. 더 높은 전송률을 달성하기 위해 거래 간 사이클 시간만 단축된다.모든 ATA 장치는 가장 느린 모드(모드 0)를 지원한다.CPU는 ATA 드라이브의 정보 레지스터(모드 0 사용)에 액세스하여 기기의 최대 전송 속도를 결정하고 최적의 성능을 위해 ATA 컨트롤러를 구성할 수 있다.

PIO 모드는 데이터 트랜잭션을 구성하고 데이터를 전송하기 위해 많은 CPU 오버헤드가 필요하다.이러한 비효율성 때문에 DMA(그리고 결국 UDMA) 인터페이스가 생성되어 성능을 높였다.PIO 전송을 구현하는 데 필요한 단순한 디지털 로직은 오늘날에도 이 전송 방법을 유용하게 만든다. 특히 임베디드 시스템에서처럼 높은 전송 속도가 필요하지 않거나, PIO 모드를 큰 성능 손실 없이 사용할 수 있는 FPGA(Field Programmable Gate Array) 칩과 함께 사용하면 더욱 그렇다.

CompactFlash 사양 2.0에는 두 가지 추가 고급 타이밍 모드가 정의되어 있다.그것들은 PIO 모드 5와 6이다.그것들은 CompactFlash에만 해당된다.

PIO 모드
모드 최대 전송 속도(MB/s) 최소 사이클 시간 규격이 정의된 표준
모드 0 3.3 600ns ATA-1
모드 1 5.2 383ns ATA-1
모드 2 8.3 240ns ATA-1
모드 3 11.1 180ns ATA-2
모드 4 16.7 120ns ATA-2
모드 5 20 100ns 컴팩트플래시 2.0
모드 6 25 80ns 컴팩트플래시 2.0

PIO 모드 5

PIO 모드 5는 22MB/s로 운영과 함께 제안되었지만[2], 제안된 PIO 5 타이밍에 하드 디스크를 기다리는 당시의 CPU가 마비되었을 것이기 때문에 하드 디스크에서 구현되지 않았고, DMA 표준은 궁극적으로 이를 방지했다.이 모드를 지원하기 위해 제조된 하드 디스크 드라이브는 없지만, 일부 마더보드 제조업체는 이에 대한 BIOS 지원을 선제적으로 제공했다.PIO 모드 5는 CF-to-ATA 어댑터를 통해 ATA에 연결된 CompactFlash 카드와 함께 사용할 수 있다.

참고 항목

참조

  1. ^ Stallings, William (2012). Computer Organization and Architecture (9th ed.). Pearson.
  2. ^ Chen, Joseph (January 10, 1995). "Proposed 22 MByte/Sec ATA Timing Extension for ATA-3" (PDF). T10.org. Technical Committee T10 (X3T10). Archived (PDF) from the original on June 20, 2010. Retrieved February 19, 2020.