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

2024. 6. 21. 19:47CS/Computer Architecture

제 11장 Part-2

위 유튜브 강의를 정리, 보충한 내용입니다.

 


 

본격적으로 들어가기 앞서 I/O와 Memory에 대하여 알아보자.

 

  • Device란?
    : 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 키보드, 하드디스크, 플로피디스크, 프린터 등과 같은 주변 장치를 뜻함.
    : 디바이스의 구동을 위해서 디바이스 드라이버가 필요함.

  • Device Driver란?
    : 실제 device를 추상화하여 사용자 프로그램이 정형화된 인터페이스를 통해 디바이스를 제어할 수 있도록 하는 프로그램.
    : 디바이스 제어에 필요한 정형화된 인터페이스를 구현하기 위하여 요구되는 함수와 자료구조의 집합체.
    : 응용 프로그램이 하드웨어를 제어할 수 있도록 인터페이스를 제공한다.
    : 하드웨어 독립적인 프로그램을 작성할 수 있도록 함.
    : 사용자는 디바이스의 물리적인 구조와 사용법을 이해하지 않아도 됨.

 

  • 어떻게 디바이스와 컴퓨터를 연결하는가?
    -> 모든 디바이스는 VFS(virtual File System)을 통해서 파일로 인식되고, 접근할 수 있다.

  • 어떻게 디바이스 드라이버를 동작?
    : 하드웨어 장치들을 구동하는 것이 드라이버의 궁극적인 역할이다.
    : Filesystems의 의해서 인식되고 접근 가능해진 디바이스를 제어하기 위해서 드라이버가 필요하다.
    : 디바이스 드라이버는 컴퓨터에서 memory를 할당받아서 동작한다.
    : Cpu와 디바이스 사이에 드라이버가 할당받은 memory가 위치한다고 생각하면 된다.
    : 이 메모리는 디바이스와 CPU 간의 데이터 전송을 중계하는 데 사용된다. (데이터 버퍼로서 동작)

비동기 데이터 전송 (Asynchronous Transfer)

 

실제 하드웨어 수준에서 1bit 데이터를 전달하는 방법에 대하여 알아보자.

 

 

  동기식 버스 비동기식 버스
정의 시스템 버스에서 모든 버스 동작들이 발생하는 시간이 공통의 클록을 기준으로 결정됨. 시스템 버스에서 버스 동작들의 발생 시간이 다른 버스 동작의 발생 여부에 따라 결정됨.
인터페이스 회록 간단 복잡
낭비되는 시간 버스 클록의 주기가 가장 오래 걸리는 버스 동작의 고요 시간을 기준으로 정해져야 하기 때문에, 클록 주기가 짧은 동작은 완료된 후에도 다음 주기까지 기다려야 한다. 각 버스 동작이 완료되는 즉시, 연관된 다음 동작이 발생되므로 낭비되는 시간이 없다.
활용 중형급 이상의 시스템 소규모 컴퓨터시스템

 


스트로보(Strobe)

 

스트로보(Strobe)는 비동기 데이터 전송에서 데이터를 전송하는 시점을 알리는 신호입니다.

 

  • Source Initiate
    : Source Unit → Destination Unit
    : Source Unit이 데이터 전송을 시작하는 것을 의미합니다.
  • Destination Initiate
    : Destination Unit → Source Unit
    : Destination Unit가 데이터 전송을 시작하는 것을 의미합니다.

 

스트로보의 주요 문제점은 데이터 전송이 정상적으로 완료되었는지 확인할 수 없다는 점.

 


핸드셰이킹 제어 (Handshaking)

 

우리가 실제로 사용하는 방식.

 

Strobe보다 1개의 선이 더 필요함.

 

데이터를 성공적으로 받았다면 Accepted 신호 전송.

 

또는 Destination unit이 데이터를 받을 준비가 되어있다면 먼저 신호를 보내기도 한다.

 

1bit당 한 번의 핸드셰이킹 발생.

 

일반적으로 가정에서 사용되는 네트워크가 100mbps니 1초에 1,000,000번의 핸드셰이킹이 발생한다.

 

 

 


비동기 직렬 전송(TTL)

  • 0V, 5V 신호로 데이터 전송
  • 시작 비트 1, 데이터 비트 8, 정지비트 2, 총 11 비트 단위로 8비트 데이터 전송
  • 데이터 신호의 간격 = 1/전송속도

 

전송 규칙:

  1. 데이터가 전송되지 않을 때에는 항상 1 신호(5V) 유지
  2. 문자 전송의 시작은 시작 비트 0으로 표시
  3. 시작 비트 뒤로 8개의 데이터 비트 표시
  4. 마지막 비트 후 2비트 이상의 1 신호 유지

32bit bus라면 각 라인마다 TTL 수행한다고 생각하면 된다.

 


UART (Universal Asynchronous Receiver Transmitter)

 

UART (Universal Asynchronous Receiver Transmitter)는 직렬 데이터 통신을 위한 장치.

 

비동기 통신 인터페이스를 수행하며, 데이터를 직렬로 변환하여 전송하고 수신된 직렬 데이터를 다시 병렬로 변환하는 역할을 수행.

 

UART는 Shift Register를 사용하여 이러한 작업을 수행합니다.

 

Shift Register는 데이터 비트를 순차적으로 이동시키는 레지스터로, UART에서는 데이터를 직렬화하거나 병렬화하는 데 사용됩니다.

 


전송 모드 (Modes of Transfer)

 

위 데이터 전송 방식을 토대로 어떻게 I/O 장치에서 CPU로 CPU에서 I/O장치로 데이터를 전송할지 선택해야 한다.

 

 

전송 모드 주관 설명
프로그램된 I/O CPU 이 모드에서는 CPU가 모든 I/O 작업을 주관합니다. 데이터를 전송할 준비가 되면 CPU에게 플래그를 설정하여 알립니다. CPU는 이 플래그를 확인하고 데이터를 전송하거나 수신합니다. 예를 들어, 프린터와 같은 장치에서 사용됩니다.
인터럽트에 의한 I/O I/O 장치 이 모드에서는 I/O 장치가 데이터를 전송할 준비가 되면 CPU에게 인터럽트를 보냅니다. CPU는 이 인터럽트를 받고 현재 작업을 중단하고 데이터를 전송하거나 수신한 후에 원래 작업으로 돌아갑니다. 이 모드는 CPU가 다른 작업을 계속 수행하면서 I/O 작업을 처리할 수 있도록 해줍니다.
직접 메모리 접근 (DMA) I/O 장치 이 모드에서는 I/O 장치가 데이터를 직접 메모리에 읽거나 씁니다. CPU는 이 작업에 관여하지 않습니다. 이 모드는 대량의 데이터를 빠르게 전송할 때 매우 유용합니다. CPU는 다른 작업을 계속 수행할 수 있고, I/O 장치는 데이터 전송을 처리합니다.

  • DMA Controller : DMA를 수행하는 전용 하드웨어