[컴퓨터 구조] 20. 입출력장치 (2)
1. 인터럽트 구동 입출력
프로그램 구동 입출력 (Programmed I/O)
• CPU가 모든 입출력 과정을 통제하며 수행.
• 상태 검사
• 데이터 저장 또는 출력 적재
• 단점: 루프 사이클 낭비로 CPU 자원 소모
워치독 타이머 (Watch-dog timer)
• 입출력 루틴 중 무한 루프를 방지하는 타이머.
• 입출력장치 동작 최대 시간 설정
• 대기 과정에서 시간 검사
• 타이머 만료 시 오류 보고
인터럽트 구동 I/O
• CPU가 직접 입출력을 관리하지 않고 인터럽트 발생 시만 개입.
• 인터럽트 서비스 루틴(ISR)을 주기억장치에 적재
• 인터럽트 벡터 설정
• 인터럽트 가능 플래그를 설정해 요청 허용
인터럽트 처리 과정
(1) 인터럽트 가능 플래그를 비활성화
(2) ISR에서 사용하는 레지스터 스택 저장
(3) 입출력 모듈 상태 확인
(4) 데이터 저장 및 기억장치에 저장
(5) 스택 복구 후 ISR 종료 → 원래 프로그램으로 복귀
2. 다중 인터럽트 처리
개요
• 여러 입출력 장치에서 동시에 인터럽트를 요청할 수 있어, 이를 구분하고 처리해야 함.
CPU는 다음 기능을 수행할 수 있어야 함:
• 요청 장치 식별
• ISR 탐색
• 우선순위 선택
인터럽트 벡터와 인터럽트 벡터 테이블
• 인터럽트 벡터: ISR 시작 주소
• 인터럽트 벡터 테이블: 여러 벡터를 주기억장치 특정 영역에 저장
→ 장치 번호(n)에 따라 ISR 주소 결정
다중 인터럽트 처리 방법
(1) 소프트웨어 폴링
• 대표 ISR에서 요청 장치를 프로그램적으로 확인
• 우선순위는 코드상 정의된 순서로 결정
(2) 다중 인터럽트 요청선
• 각 장치별로 독립된 인터럽트 요청선 보유
• 각 요청선마다 별도의 ISR 존재
• 하드웨어가 우선순위 결정
(3) 데이지 체인 (Daisy Chain = Hardware Polling)
• 장치들을 연속 연결한 형태 (ex. A-B-C 순서)
• CPU에 가까운 장치부터 우선 처리
• 하나의 인터럽트 요청선 사용
• IntAck 신호를 통해 인터럽트 확인 및 우선순위 결정
(4) 우선순위 인코더 (Priority Encoder)
• 별도의 인터럽트 제어기 사용
• 입력된 신호 중 우선순위가 가장 높은 장치를 식별
• IntAck 후 데이터 버스 통해 인터럽트 번호 확인 및 ISR 수행
3. 직접기억장치 액세스 (DMA)
개요
• CPU 개입 없이 입출력장치와 기억장치 사이에서 직접 데이터를 전송.
• 속도 빠르고 대용량 데이터 전송 가능
• DMA 컨트롤러 필요
• 전송 과정에서 CPU는 다른 작업 가능 (Cycle stealing)
• 블록 단위(512B~4KB) 전송
DMA 동작 방식
(1) CPU → DMA 제어기에게 전송 명령
(2) CPU는 다른 작업 수행
(3) 입출력장치 준비되면 DMA가 버스 사용 요청
(4) DMA가 데이터 전송 수행
DMA 처리 과정
• 준비: 기억장치 주소, 단어 수, 전송 방향, 채널 번호 설정
• 처리 단계:
① DMA request
② Bus request
③ Bus grant
④ DMA acknowledge
⑤ Memory transfer by DMAC
⑥ Interrupt request
⑦ Interrupt acknowledge
구조 특징
• DMA는 일종의 버스 제어기 역할
• 각 채널이 I/O 장치와 직접 송수신 수행
• CPU의 컨텍스트 스위치 필요 없음
4. 입출력장치 전체 정리
입출력장치(I/O)의 개요
• 종류 다양, 기계적 요소 포함
• 포트 입출력, 기억장치 맵 구조 존재
프로그램 구동 입출력
• CPU 직접 상태 검사 및 데이터 전송
• 워치독 타이머로 무한루프 방지
인터럽트 구동 입출력
• 인터럽트 벡터와 ISR 활용
• 다중 처리 방식: 소프트웨어 폴링, 요청선, 데이지 체인, 인코더
DMA (직접기억장치 액세스)
• 빠르고 효율적인 대량 데이터 전송
• DMA 컨트롤러 사용
• 전송 전 준비사항 필수: 주소, 단어 수, 방향, 채널 번호
이 내용은 휴넷사회복지평생교육원의 컴퓨터 구조 강의를 듣고 정리한 것입니다.