Please enable JavaScript.
Coggle requires JavaScript to display documents.
시구_컴퓨터구조_IO - Coggle Diagram
시구_컴퓨터구조_IO
입출력 제어 방식
Program에 의한 I/O: CPU가 I/O 완료 여부 폴링하면서 확인
Interrupt에 의한 I/O: CPU에게 알림, 대량 자료 전송 시 부담
DMA에 의한 I/O: DAM 제어기, CPU 부담X, 블록으로 전송, (I/O 장치주소, 연산지정자, 주기억장치주소, 데이터단어수, 트랙/섹터), 구성요소(Data Buffer Register, State Register, Word Counter, 인터페이스 회로), Cycle Stealing(CPU가 시스템버스 미사용 시 사용)
Channel에 의한 I/O: DMA 확장시킨 IOP(입출력 작업을 CPU 대신 전담 처리하는 전용 프로세서) 사용, 하드웨어(프로세서, 지역기억장치, 시스템버스 인터페이스 및 버스마스터 회로, I/O버스 중재회로)
Channel
Selector Channel: 고속 입출력장치(디스크, 자기 테이프, 자기 드럼)와 입출력하기 위해 사용, 특정 한 개 장치 독점
Multiplexer Channel: 저속 입출력장치(카드리더, 프린터), 동시 사용
Block Multiplexer Channel: 고속 입출력장치, 동시 여러 장치 사용
Isolated I/O: 주소 공간을 메모리용과 I/O 장치용으로 완전히 분리하여 관리하는 방식 (I/O 전용 주소 공간 존재)
Memory-mapped I/O: I/O 장치를 메모리의 일부분으로 간주하여, 메모리 주소 공간의 일부를 I/O 포트에 할당하는 방식
파이프라인
목표: 명령어당 실행 사이클 수인 CPI를 1에 가깝게 만드는 것
정의: 하나의 명령어를 여러 단계로 나누어, 각 단계를 서로 다른 하드웨어가 병렬로 처리함으로써 전체적인 처리량을 높이는 기술
파이프라인 시간 = (단계 + 개수 - 1) X 클록!, 슈퍼파이프라인=단계+(개수-1)/슈퍼파이프라인정도
구조적 헤저드: 리소스 충돌, 하드웨어 추가, NOP 삽입, 예약표, 동시 읽기/쓰기, 하버드 아키텍처(명령어와 데이터 메모리 분리)
데이터 헤저드: 이전 결과값이 결정되기 전 참조, 전방 전달 (Forwarding), 코드 리스케줄링, Stall(NOP), Scoreboarding
제어 헤저드: 분기 명령어로 주소 변경, 루프버퍼, 분기 예측, 지연 분기
인출 및 해독: 별개회로/별개회로/하나의 회로, 스케줄링: 하드웨어/하드웨어/컴파일러, 성능: 클럭사이클/ALU수/동시처리 가능 연산수, 요구조건: 고속 부품 스위칭 기능/적은 데이터 의존성/높은 명령어 수준 병렬성
시스템 버스
동기식 버스: 공통 버스 클럭 기준, 회로 간단, 일반 컴퓨터
비동기식 버스: 낭비 시간 없음, 회로 복잡, 소규모 컴퓨터에 사용
클록 주파수는 “얼마나 자주”, 클록 주기는 그 역수이며, 버스 대역폭은 “한 번에 얼마를 얼마나 자주 보내느냐”의 곱이다.
MSYN은 마스터의 전송 개시 선언 신호이며, SSYN은 슬레이브의 전송 완료 응답 신호로, 비동기식 버스에서 장치 간 속도 차이를 흡수하기 위한 핵심 제어 메커니즘(핸드셰이크)이다.
인터럽트 동작원리
인터럽트 서비스 루틴 식별 정보, ISR 시작주소, CPU는 요청대상으로 부터 데이터 버스를 통해 인터럽트 벡터를 전달 받음
현재 프로그램 중단-프로그램 상태 보존(스택, ISR, 별도 레지스터 세트)- 인터럽트 원인 판별-인터럽트 서비스 루틴 실행-상태복구-프로그램 실행 재개
우선순위
Polling: 소프트웨어 방식, 인터럽트 요청 플래그를 차례로 검사, 느림, 간단함(별도 하드웨어 불필요),유연함, 우선순위 변경이 쉬움
Vectored: 하드웨어 방식, 하드웨어 신호(Daisy Chain)로 판별, 빠름, 복잡함, 확장성 낮음, ISR의 주소를 바로 찾음, 벡터 인터럽트 방식
직렬 방식(데이지 체인 방식, 느리고 우선순위 고정(물리적 위치 순)), 병렬 방식(정의: 각 인터럽트 선마다 개별적인 Mask Bit를 두어, 특정 인터럽트의 발생 여부를 제어하고 우선순위를 결정하는 방식, 인터럽트 요청 레지스터(IRR)/마스크 레지스터(IMR)/우선순위 판별 회로)
우선순위 규칙
전원 이상 (Power Fail): 가장 높음 (데이터 손실 방지)
기계 착오 (Machine Check): 하드웨어 고장
외부 신호 (External): 타이머, 오퍼레이터 요청 등
입출력 (I/O): 데이터 전송 완료 등
프로그램 오류: 0으로 나누기, 오버플로 등 (가장 낮음)
다중 인터럽트: "순차는 선착순, 중첩은 급한 놈(우선순위) 먼저!"
(중첩은 반드시 CPU의 인터럽트 플래그(IF)가 활성화)
인터럽트
외부 인터럽트: 전원 이상, 기계 착오, 외부 신호(타이머, 키보드, 외부장치), 입출력
내부 인터럽트: 트랩이라고도 함, 주로 예외 상황, 프로그램 검사(0으로 나누기, 오버플로우/언더플로우, 잘못된 명령어 사용, 부당한 기억장소 참조, 기타 프로그램 Exception)
S/W 인터럽트: SVC(SuperVisor Call) 인터럽트: 의도적 호출, 프로그램에서 입출력 처리 및 기억장치 할당, 프로세스 생성, 파일시스템, 프로세스간 통신(IPC)