6. 입력 및 출력


(1) 입출력장치의 구성 : 입출력 제어장치, 입출력 인터페이스, 입출력버스


1) 입출력 제어장치 : 입출력장치와 컴퓨터 사이 자료전송을 제어하는 장치(DMA, 채널, 입출력컴퓨터 등) 

데이터 버퍼 레지스터로 두 장치간 속도차 조절(데이터 버퍼링)


2) 입출력 인터페이스 : 메모리나 CPU 레지스터 등 내부저장장치와 외부I/O장치 간 2진정보를 전송하는 방법을 제공

- 데이터 레지스터, 장치의 동작을 나타내는 flag, 장치번호 디코더



(2) 기억장치와 입출력장치의 동작 차이

입출력장치 : 동작속도 느림, 타율/자율,  정보단위 Byte, 착오발생률 많음

기억장치 : 동작속도 빠름, 타율,  정보단위 Word, 착오발생률 적음


(3) 비동기 데이터 전송 : 핸드셰이킹 방식, 스트로브 펄스 방식


(4) 버퍼링과 스풀링


1) 버퍼링

- 저속 입출력장치와 고속 CPU 처리 속도차를 개선하기 위한 방법. 

- 주기억장치 일부공간을 버퍼공간으로 할당하여 처리할 데이터를 임시 보관

- 많은 데이터를 주기억장치에서 한번에 가져나감

- 데이터를 주기억장치에서 읽어내거나 저장하기 위해 임시로 자료를 저장하는 공간

- 버퍼 위치는 주기억장치


2) 스풀링 Spooling

- I/O 효율을 높이기 위해 내용을 디스크 등에 모았다가 처리하는 방식

- 디스크 일부를 매우 큰 버퍼처럼 사용. 

- 스풀 위치는 보조기억장치

- 어떤 작업의 입출력과 다른 작업 계산을 병행처리하는 기법


3) 버퍼링과 스풀링의 차이점

버퍼링은 하드웨어적 구현, 스풀링은 소프트웨어적 구현

버퍼링은 단일작업 단일사용자, 스풀링은 다중작업 다중사용자

버퍼 위치는 주기억장치, 스풀 위치는 보조기억장치



입출력 제어방식


1) Programming I/O 

프로그램 입출력방식에서 입출력장치 인터페이스에 포함되어야 하는 하드웨어 : 데이터 레지스터, 장치의 동작을 나타내는 flag, 장치번호 디코더


2) Interrupt I/O 

- CPU가 계속 flag를 검사하지 않고 데이터가 준비되면 

- CPU가 계속 flag를 검사하지 않아도 되므로 프로그래밍 I/O보다 효율적


3) DMA I/O (Direct Memory Access)

- 데이터 입출력 전송이 CPU를 통하지 않고 직접 주기억장치와 주변장치 사이에서 수행되는 방식

- CPU를 거치지 않고 메모리와 입출력장치가 직접 통신하지 않기 때문에 CPU에 부하가 증가되지 않음.

- CPU와 DMA 제어기는 메모리와 버스를 공유함

- DMA는 기억장치와 주변장치 사이의 직접적인 데이터 전송을 제공

- DMA는 블록으로 대용량 데이터를 전송할 수 있음

- 자료 입출력에 가장 효과적인 방법, 보다 데이터 전송 가능

- 메모리 장치 외 통신에서 CPU보다 우선권을 갖고 있음

- 데이터 대량 전송(Burst Transfer) 및 사이클 스틸링(Cycle Stealing)과 관계 있음

사이클 스틸링(Cycle Stealing) : DMA 제어기가 한번에 한데이터 워드를 전송하고 버스의 제어를 CPU에게 돌려주는 방법

입출력 자료 전송을 빠르게 처리 가능. 사이클 스틸은 DMA 인터페이스에 의해 이루어짐.


사이클 스틸 : CPU 상태 보존할 필요 없음, 잠시 CPU가 쉼, 아무 사이클이나 훔칠 수 있음

인터럽트 : CPU 상태를 보존해야 함, CPU는 인터럽트를 처리해야 함, 항상 실행 사이클 이후에만 인터럽트 인지됨


DMA 구성 : 워드 카운트 레지스터, 주소 레지스터, 자료 버퍼 레지스터


4) 채널 I/O 

신호를 보낼 수 있는 전송로. 입출력은 DMA 방법으로도 수행함. CPU의 명령으로 입출력 개시하면 CPU와 독립적으로 조작

채널 제어장치 : 입출력장치와 CPU 사이의 속도차 단점을 극복하기 위해 고려됨

채널 종류 : Selector Chanel(선택 채널), Multiplexer Chanel(다중 채널), Block Multiplexer Chanel

입출력 throughput 비율이 증가하는 순서 : 폴링 < 인터럽트 < DMA



인터럽트 (Interrupt)


(1) 인터럽트의 정의

- 프로그램을 실행하는 도중 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것.

- 컴퓨터 시스템에 예기치 않은 일이 발생했을 때 제어프로그램에게 알려주는 것

- 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 구분. 외부/내부는 CPU 신호로 발생. 소프트웨어 인터럽트는 명령어 수행으로 발생

- 인터럽트 체제 기본요소 : 처리 기능, 요청 신호, 취급 루틴


(2) 인터럽트 종류 및 발생 원인

1) 외부 인터럽트 : 입출력장치, 타이밍장치, 전원 등 외부적 요인으로 발생

전원 이상 인터럽트(Power Fail Interrupt)

기계 착오  인터럽트(Machine Check Interrupt), 

외부신호 인터럽트(External Interrupt):타이머로 규정된 시간(Time Slice), 키보드로 인터럽트 키 누른 경우, 외부장치의 요청

입출력 인터럽트: 입출력장치 오류, 데이터 전송 요구나 전송이 끝난 경우, 입출력장치 동작에 CPU 기능 요청시


2) 내부 인터럽트(트랩, Trap) : 프로그램 검사 인터럽트(프로그램 실행 오류)

프로그램 실행 중 트랩 발생 조건 : overflow나 underflow, 0으로 나눗셈, 불법적 명령, 보호 영역 내 메모리 어드레스를 Access


3) 소프트웨어 인터럽트 : SVC(Supervisor Call) 인터럽트. 명령의 요청에 의해 발생


4) S/W 문제로 오류 없는데도 인터럽트 발생하는 경우 : 금지된 자원의 접근 시도



(3) 인터럽트의 동작 원리

1) 인터럽트 수행순서

- 인터럽트 요청신호 발생(CPU에 인터럽트 요청)

- 현재 수행중인 명령을 완료 후 상태 기억(작업중인 주소 메모리에 저장)

- 어느장치가 인터럽트 요청했는지 찾음(인터럽트 인지신호 발생)

- 인터럽트 취급 루틴 수행(백터 인터럽트 처리)

- 보존한 프로그램 상태 복귀 (리턴에 의한 복귀)


2) 인터럽트 발생시 CPU가 확인할 사항

프로그램 카운터 내용, 상태 조건 내용(PSW), 사용한 모든 레지스터 내용

※ PSW : program status word, 프로그램 상태어


벡터 인터럽트(Vectored Interrupt)

- 인터럽트 발생시 프로세서의 인터럽트 서비스가 특정 장소로 점프(분기)하여 서비스 할 수 있게 함.

- 인터럽트 발생 장치가 프로세서에게 분기할 곳의 정보를 제공해주는 것

- 인터럽트 벡터에 필수적인 것: 분기번지

- 하드웨어 신호에 의해 특정 번지 서브루틴을 수행하는 것


인터럽트 수행 후에 처리되는 것 : 인터럽트 처리시 보존되었던 PC 및 제어상태 데이터를 PC와 제어상태 레지스터에 복구


스택(Stack) : Interrupt 발생시 복귀주소를 기억시키는데 사용됨. 인터럽트가 받아들여졌을 때 스택 메모리 사용함


Program Counter(PC) : 인터럽트 처리 루틴에서 반드시 사용되는, 반드시 보존되어야 하는 레지스터



(4) 인터럽트 우선순위

높음

전원이상(Power Fail) - 기계이상 - 외부신호 - 입출력 - 명령어 오류 - 프로그램 검사 - SVC


인터럽트 우선순위 판별법

소프트웨어적 방법: 폴링(Polling). 인터럽트 요청신호 플래그를 차례로 검사하여 인터럽트 원인 판별

하드웨어적 방법: 데이지체인(Daisy-Chain 직렬우선순위 부여방식), 병렬우선순위 부여방식보다 응답속도 빠르다!


데이지체인(Daisy-Chain) : 직렬 우선순위 부여방식

- 인터럽트 발생장치를 모두 직렬로 연결

- 하드웨어를 이용하여 우선순위를 결정하는 장치.

- 벡터에 의한 인터럽트 처리 방법

- 인터럽트된 모든 장치들은 벡터를 동시에 보낼 수 있음

- 인터럽트 요청 체인 방식(Interrupt Request Chain) = Daisy Chain

- 하드웨어 방식으로 우선순위가 높은 것에서 낮은 것 순으로 인터럽트 요청 회선을 직렬로 연결하여 인터럽트 요청을 받는 순서대로 우선순위를 결정하는 방법

- 하드웨어 방식으로 인터럽트 요청을 받은 장치 중에서 가장 우선순위가 높은 장치만이 CPU에게 자신의 장치번호를 보낼 수 있도록 하여 우선순위를 결정하는 방식


병렬 우선순위 부여방식 : 인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결


프로그램 수행 중 인터럽트 발생시 인터럽트의 처리 시기 : 수행 중인 인스트럭션을 끝내고 처리





7. 병렬 컴퓨터 구조


(1) 병렬처리 개념

폰 노이만 컴퓨터 구조의 순차처리의 반대. 다수의 Processor에서 동시에 여러  작업을 처리하는 것.


(2) 병렬처리 분류

1) Feng의 4가지 분류 : WSBS, WPBS, WSBP, WPBP 단어별 순차/병렬인지 비트별 순차/병렬인지로 구분

W: Word, S: Serial, P: Parallel, B: Bit-Parallel


2) Flynn의 4가지 분류 : SISD, SIMD, MISD, MIMD

S: Single, I: Instruction Stream, M: Multiple, D: Data Stream


(3) 병렬처리기법

1) 병렬처리기 종류 : Pipeline Procssor, Vector Processor, Multi Proccesor

2) 배열처리기 (Array Processor) : PE(Processing Element)라는 다수의 연산기를 갖는 형태. 동기적으로 병렬처리 수행

복수배열독립디스크(RAID: Redundant Arrays Independent Disk)

RAID-2 : 오류검출을 위해 해밍코드를 이용하는 것







Posted by netyhobby
,