본문 바로가기

Computer Science/컴퓨터구조

[컴퓨터 구조] 입출력 구조

이 글은 www.youtube.com/watch?v=3bTJLI4Vwac 보고 공부한 글입니다.

 

입출력 구조

 

주변장치

온라인 장치(전기적 연결이 있는) / 오프라인 장치(cpu와 전기적, 물리적 연결이 없는)

 

 

주변장치 종류

입력장치: 키보드, 마우스, 마이크, 카메라
출력장치: 모니터, 프린터, 스피커, 서보장치서보 장치,
입출력장치:
저장장치, TV-인코더, LCD 터치스크린터치스크린

 

 

인터페이스

cpu와 디바이스를 어떻게 연결되어 있는지

 

 

컴퓨터와의 데이터 통신 방식

ASCII 문자를 많이 쓴다.

 

 

 

입출력 인터페이스의 기능

모든 디바이스는 인터페이스를 가지고 있다 버스를 통해서 cpu와 통신한다.
cpu
는 빠르고 IO장치는 느리다 이걸 연결하는 게 인터페이스 역할이다.

 

 

 

외부 버스가 있다. 입출력버스가 오디오, 디스크 등 과 연결되어 있는 것이다.

각 디바이스마다 인터페이스가 정의되어 있는 경우가 있다.

 

 

I/O 버스와 인터페이스 모듈

usb를 인식하는 과정이 테스트 커맨드이다.(디바이스의 종류 등을 알 수 있다.)

입력 I/o에서 커맨드로 전송하는 것이다.

 

 

I/O대 메모리 버스

32bit 컴퓨터이면 Data 버스가 32bit이다. Address는 8bit는 Control은 4~5bit를은4~5bit를 쓴다.

 

 

격리형 I/O

cpu는 인터페이스의 레지스터 주소를 지정해서 사용하는 것이 격리형이다. 지금은 많이 쓰지 않는 방식이다.

 

 

Memory Mapped I/O

요즘 많이 쓰는 방식이다.

인터페이스에 레지스터는 메모리이다. 메인 메모리처럼 사용하는 것
Read, Write
를 하듯이 I/O 디바이스를 메모리 read, write 한다.한다.

 

main 메모리에 read, write 하듯이 i/o메모리를하듯이i/o메모리를 쓸 수 있다.

(640k까지는 메인 메모리, 1MB부터 메인 메모리가 있다.)

 

 

i/o디바이스에 달려있는 인터페이스 예

Chip, Register select, I/o read, write가 버스이다.

Bus buffer가 왼쪽으로 가면 cpu로 가고 오른쪽으로 가면 디바이스에 간다. 양방향 데이터 전송이 가능하다.

 

1개 인터페이스에 2개의 포트가 있다.
1
개 인터페이스에 2개의 디바이스가 붙는다.

 

 

 

스트로보(Strobe) 제어

전송 제어 프로토콜

strobe라는 버스에 한 라인을 사용해야 한다.

 

destinationdata버스를 보면서 나한테 전송하는 데이터인지 그냥 띄운 데이터인지를 모른다.

strobe 버스를 보고 데이터가 나한테 오는 중이네 하고 안다.


strobe
가 꺼지면 데이터가 보내는 시간이 끝났구나 라고 생각한다.

 

destination이 한가해지면 strobe를 먼저 쏜다.

 

source가 데이터를 받을 수 있다고 판단하고 데이터를 준다. (1bit)


신호를 받았으면 strobe를 꺼버린다.

 

 

 

핸드 셰이킹(handshaking) 제어

Data valid = strobe

제대로 잘 받았다면 accepted 신호를 띄운다. 신호를 확인하면 data bus , data valid신호를 끊는다.


accepted
신호가 안 오면 선에 문제가 발생했다는 걸 알고 수리를 해야 한다.

 

destination이 먼저 ready for data신호를 보낼 수 있다.

data bus를 통해 데이터를 주고 ready for data신호가 꺼지면 잘 받았구나 생각해서 신호를 꺼버린다.

 

 

 

비동기 직렬 전송

TTL 전송

전송 규칙

Start bit, Stop bit 사이에 8비트를 전송하는 방식이 TTL이다.

 

하나에 데이터를 표현하는 신호 간격이 9600 bps라면 1/9600라는 뜻이다. bps가 커지면 폭이 짧아진 다는 것이다.

 

 

 

비동기 통신 인터페이스

UART(Universal Asynchronous Receiver Transmitter)

데이터를 받을 때마다 shift register에 채워 넣고 8비트가 차면 receiver register에 가서 cpu로 전달된다.
1
비트 받을 때 마다 핸드쉐이킹이 일어난다.

 

 

 

FIFO 버퍼

shift register의 내부

 

 

 

 

입출력 전송 모드의 종류

 

프로그램된 I/o  명령어에 의해서 I/OI/O 동작을 수행하는(cpu io장치를 관리)

 

 

인터럽트에 의한 I/o– cpu는 가만히 있는데 주변장치가 데이터를 전송할 것이 있다면 인터럽트로 cpu한태 알려주는 것이다.

 

버스는 하나의 데이터가 하나의 목적지로 전달되어야 한다.

 

 

 

인터럽트 우선순위

오른쪽 그림은  Pi, Po 을 수행하는 로직이다 .

우선순위는 어떻게 결정하느냐? 데이지체인 방식으로

 

 

데이지 체인 방식

device1, device3가 둘 다 인터럽트를 보낸다. 그럼 cpu가 처리 가능상황이면 intack신호를 보낸다.

 

cpu는 누가 인터럽트를 보냈는지 모른다.

 

구조상으로 device1이 먼저 cpuVAD1를 날려서 메모리의 PC의 값을 VAD1로 바꾼다.

 

device1이 동작이 끝나면 device2에 넘겨준다.

 

device2는 패스한다.

 

device3에 가면 VAD3를 넘겨서 인터럽트 수행하게 된다.

 

 

disk가 0번 우선순위 printer 1, readr 2 , keyboard 3으로 되어 있다.

 

disk와 reader가 동시에 입력이 들어오면 disk를 먼저 해준다. 그러면 시작 번지를 cpu에 보내준다.

시작 번지는 VAD에 있다.


disk
는 서비스 루틴의 주소는 00~~~~~으로 맞추고
printer
서비스 루틴의 주소는 01~~~~~~으로 맞춘다.

 

i2가 1이 되면 x, y는 무조건 10이 된다.

 

 

 

인터럽트 사이클

0~255까지 점프 명령이 있다.

 

 

 

인터럽트 동작

인터럽트 백터 테이블

백터 번호마다 인터럽트 번호가 있다.

 

mask 레지스터 비스를 0으로 = 다른 인터럽트는 안 받는다.


IEN
이 0이 되는 경우는 다른 인터럽트를 안 받고, 끝나고 나서 1로 받는다.

 

 

 

 

 

직접 메모리 접근(DMA)

DMA - io장치가 직접 메모리에 읽고 쓰는 것이다. cpu가 관여하지 않는다.

오른쪽 그림이  DMA  컨트롤러이다 .

DMA를 해주는 컨트롤러가 필요하다.

Bus request, grant가 있으면 DMA가 가능하다. 없다면 DMA를 지원하지 않는 cpu이다

.

Control Logic이 거의 cpu이다.

 

 

DMA는 어떻게 cpu한태 데이터를 전송하느냐? 사이클 스틸링

 

사이클 스틸링
버스를 안 쓰는 타이밍 T1,는 메모리를 안 쓰니깐 그 순간을 노려서 DMAcpu를 쓰는 것이다.

 

DMA가 동작하는 법

 

- 디바이스가 DMA request를 컨트롤러 한태 보낸다->

 

- DMA 하기하기 위해 cpu에게 BR를 보낸다.(내가 버스를 쓰겠다) ->

 

- cpu가 사이클 스틸링을 통해 가능하다 하면 BG를 보낸다. ->

 

- 컨트롤러가 디바이스 한태 DMA해도 좋다고 한다 ->

 

- 디바이스가 data버스를 쓸 수 있게 된다. ->

 

- 메모리에 직접 read, write 할할 수 있다. ->

 

- DMA 컨트롤러가 인터럽트를 걸어서 cpu에게 DMA가 끝났다고 신호를 보낸다. ->

 

- cpu가 bus는가bus는 아무도 사용하지 않는다고 판단한다.

 

 

 

 

입출력 프로세서(IOP)의 역할

DMA 컨트롤러의 확장판, 디바이스와 메모리를 통신하는데 도움을 준다.

칩셋: IOP와 Bus와 controller를 합친 것이다.

 

 

 

문자 지향 프로토콜

한 문자로만 통신하는가? 문자단위, 비트단위로도 보낸다.

프레임을 약속하고 보낸다.

 

 

 

문자가 아닌 이미지나, 사운드를 보낼 때 어떻게 하느냐?

비트 지향 프로토콜

비문자 데이터 전송용 Format

 

Control field에 따라서 여러 데이터 형태 결정

 

맨 앞에 flag, 맨뒤에 flag가 붙는다.


Address 8bit
어디로 가느냐?
Control 8bit
컨트롤
information any number of bits –
내가 보내고 싶은 비트
Frame check 16bit
애러 체크

 

 

728x90