본문 바로가기
기타

정보처리 필기_전자계산기 구조_17강_입출력 제어

by avvin 2019. 7. 28.



문제 정보 / 이미지 출처 (무료인강) : 

https://www.youtube.com/playlist?list=PLimVTOIIZt2aR9jib0ws7hoDVZXdtiWsK




1. 기억장치와 입출력 장치의 차이


2. 입출력 장치의 구성


3. DMA


4. Channel




1. 기억장치와 입출력 장치의 차이


기억장치 는 주기억장치를 말함


넓은 의미의 입출력 장치 보조기억장치에서 주기억장치 메인메모리로 데이터가 들어가면 입력 나오면 출력


넓은 의미의 입출력 장치는 보조기억장치 포함


즉, 주기억장치와 보조기억장치를 포함한 입출력 장치의 차이




CPU와 비교했을 때 느린것이지, 입출력장치 (보조기억장치) 와 비교하면 매우 빠름

그래서 어떻게하면 입출력장치를 제어 (빠르게)할 것인가가 중요


기억창지와 입출력장치는 동작속도★ / 동작의 자율성 / 정보의 단위 / 착오 발생률에서 차이가 있다. 는 것만 기억!


기억장치는 cpu의 신호를 받아야만 하므로 타율적



 

2. 입출력 장치의 구성


그래픽카드(그래픽 인터페이스 카드)



GPU (graphic processing unit ) : 원래 모두 cpu가 처리만했으나, 영상 처리와 관련된것은 GPU가 담당(분산처리)



HDMI나 DVI같은 접속단자(인터페이스)를 통해 메인보드와 연결



입출력 장치의 구성


- 입출력 제어장치(ex.GPU) :


 - 입출력장치 인터페이스와 컴퓨터 시스템간의 데이터 이동을 제한

 - 버퍼링을 이용한 두 장치 간의 속도 차 조절


- 입출력 인터페이스 :


두 장치를 연결(원래는 제어장치를 포함하는 개념)


- 입출력 버스







DMA 제어기 = 입출력 제어기 (뒤에서 다움)




입출력 제어방식



- programmed  IO(프로그램 제어방식) : 가장 초기 방식. 가장 비효율적  


- Interrupt IO                                            //CPU가 입출력 제어

-------------------------------------------------------------------------------------

- DMA ( Direct Memory Access )에 의한 IO    //CPU가 입출력에 관여하지 X


- Channel에 의한 IO


: DMA와 Channel은 일종의 IO 제어기



- programmed IO : 플래그 비트 하나를 두고 CPU가 0인지 1인지를 계속 검사하여 입력이 끝났는지를 판단( 동기식 )



- Interrupt IO : CPU가 동기적으로(규칙적으로) 계속 검사 요청을 하는것이 아닌 

  입출력장치 측에서 입력이 끝나면 CPU에 신호(IO 인터럽트 신호)를 주는 방식 ( 비동기식 )


-------------▼입출력 제어기를 따로 만들고 CPU와 분리----------------------------------------------------------------------


CPU는 입출력 제어기에 신호만 주고 이후 입출력에는 관여하지 않음


- DMA 제어기

DMA 입출력 방식 : 입출력장치에서 메인 메모리로 바로 데이터 전송하게 두고, DMA가 버스선 사용을 관리해줌 


- Channel 제어기(IOP: 입출력 프로세서), 그래픽 카드와 같은 부컴퓨터 : DMA에서 발전된 형태


 



2, 3번은 뒤에 나옴


인터리빙은 특수 기억창치의 복수모듈방식에서 본 CPU의 메모리로의 교차접근 방식 

 


프로그램 상태 워드(PSW)를 저장하는  PSWR = 플래그 레지스터 = 상태 레지스터


플래그 상태를 계속 검사하여 0이면 상태 레지스터를 계속해서 검사 -> 동기식 = 프로그램에 의한 IO


단어계수기는 DMA 방식에서 필요



- DMA


CPU와는 독립적으로 데이터를 직접 주기억장치에 고속 전송


입출력장치가 cpu에 입출력 수행을 알림

cpu는 DMA 제어기에 ( 장치 번호 , 데이터 분량,  입력인지 출력인지 ) 신호 줌

DMA는 입출력장치가 메모리에 직접 접근할 수 있도록 제어해줌


입출력 전송이 완료되면 DMA는 CPU에 인터럽트를 걸어서 종료를 알린다.


cpu는 수행이 종료된 입출력 장치가 메모리에 접근하는 버스 사용을 해제시킨다.

Cycle Steal 방식 : word 단위

Burst Mode : 블럭 단위


보다 빠른 데이터 전송 가능


블록으로 대용량 데이터 전송 가능


CPU의 상태 보존이 필요없다 : Interrupt에 의한 IO의 경우엔 한 명령이 끝났을 때의 결과값을 저장해둬야하는데

DMA 방식은 그럴 필요가 없다. >>뒤에서 설명


CPU와 DMA제어기는 메모리와 버스를 공유한다.


메모리 장치외의 통신에서 CPU보다 운선권을 가지고 있다.




DMA 제어기 및 전송 절차


1. DMA는 cpu에 Bus 요쳥(Request) 

2. cpu가 DMA에 Bus Grant (신호 1)

3. cpu가 주기억장치 수행 시작주소/ 전송할 word의 양(받아서 1씩 감소시킨다. 0이 되면 종료함) 를 넘겨줌

   (각각의 레지스터에 저장 : Address/ Word Counter / Control Register / Buffer Register)

4. 전송이 종료되면 cpu에 Interrupt 신호를 보냄


시작번지가 DMA의 주소(번지) 레지스터에 들어오는 것이지, 시작번지 자체가 구성요소는 X


 


address line을 통해 시작주소를 받는다.



Instruction Cycle 하나를 훔쳐서 수행한다고 하여 Cycle Streal 이라 한다.


DMA가 명령어를 인출하고, 해석하기 전에 CPU가 요청사실을 알게된다. (CPU가 하던것을 DMA가 수행)


인터럽트 IO 였으면, 결과 저장 후에 CPU가 요청 사실을 알고 인터럽트 인출이 수행된다.



인터럽트 IO는 명령 사이클이 끝나야, 입출력이 수행되기 시작하지만


DMA방식은 명령어 인출이 끝나고, 명령어 해석을 하는 도중에 입출력이 수행된다.


 

사이클 스틸 (Cycle Steal)


입출력 채널/DMA와 프로세서 (CPU)가 동시에 주기억장치에 접근하고 할 때,

DMA나 채널의 우선순위를 높여주어 입출력 장치의 효율을 향상시키기 위해 사용하는 것이 사이클 스틸 


"사이클 스틸" 하면 DMA! ★




>> 명령사이클 전체가 아니라 [ 명령어 해석 (cpu가 메모리 버스를 사용하지 않을 때) ] 한 사이클 동안 

메모리 버스를 사용한다거나

[ 수행 ] 한 사이클에서 cpu보다 버스 이용 우선순위를 얻는 경우를 사이클 스틸이라 함


  


>> CPU는 메모리 버스를 양보해야하기 때문에 오퍼레이션을 계속 수행할 수 없다.





4. Channel (IOP, 입출력 프로세서 : 제어에 처리기능까지 )


DMA C에서 발전된 IO 제어기, DMA 방식으로 제어


DMA와 동작은 똑같다.


자체적으로 자료의 수정 또는 코드 변환 등의 기능도 수행할 수 있다.


버스를 다른 말로 채널이라고도 하는데 채널 IO 제어기와는 다른 의미




고속의 입출력 장치의 경우 여러 장치를 동시에 입출력할 수 없어서 select 채널을 사용


저속 입출력 장치들은 느려서 조금씩 나눠서 보내는 방식 사용 (multoplexer 채널)


이 둘의 장점을 합친 것이 블록 멀리플렉서 채널 (Block Multiplexer Chnnel)

고속 입출력 장치 제어, 동시에 여러개의 입출력 장치 제어 


>>버스트는  블록 단위


Cycle Steal 방식 : word 단위 ( A B C A B C ... )>> multiplexer 채널 // 보통 저속인 경우

Burst Mode : 블럭 단위 >> Select 채널


>>채널은 기본 단위가 바이트



고정 채널보다는 가변 채널이 채널 효율이 높다.