본문 바로가기

컴퓨터구조, 운영체제

입출력 장치

728x90
반응형
SMALL

장치 컨트롤러

장치컨트롤러는  컴퓨터 시스템에서 하드웨어 장치를 제어하는 데 사용되는 하드웨어 구성 요소입니다. 방대한 입출력 장치의 종류들로 인해 CPU나 메모리 보다 다루기 어려우며, 일반적으로 CPU나 메모리에 비해 전송률이 낮습니다.

그리고 디바이스 컨트롤러, 하드웨어 컨트롤러, 인터페이스 카드, 입출력 제어기, 입출력 모듈 등으로 다양하게 불리고 있습니다.

 

장치 컨트롤러는 특정 유형의 장치와 상호 작용하고, 데이터 전송을 처리하며, 데이터를 메모리에 읽고 쓰는 등의 작업을 수행합니다.

대표적인 역할로

1. CPU와 입출력장치 간의 통제

2. 오류 검출

3. 데이터 버퍼링 (*버퍼링: 전송률이높은 장치와 낮은 장치 사이에 주고 받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법)

이 있습니다.

 

장치 컨트롤러 내부는 간단히 데이터 레지스터, 상태레지스터, 제어 레지스터 등으로 이뤄져 있으며 각각에 대한 설명은 다음과 같습니다.

  1. 데이터 레지스터(Data Register) : 데이터 레지스터는 연산에 사용되는 데이터를 일시적으로 저장하는 데 사용됩니다. 즉, CPU가 처리할 데이터가 메모리에서 읽혀온 후에는 이 데이터를 데이터 레지스터에 저장하고, 연산이 완료된 후에는 다시 메모리에 저장됩니다.
  2. 상태 레지스터(Status Register) : 상태 레지스터는 CPU의 상태 정보를 저장하는 데 사용됩니다. 예를 들어, 상태 레지스터는 실행 중인 명령의 종류, 연산 결과의 상태, 오류 또는 예외 상황이 발생한 경우에 대한 정보 등을 저장합니다.
  3. 제어 레지스터(Control Register) : 제어 레지스터는 CPU의 제어 신호를 저장하는 데 사용됩니다. 제어 레지스터는 CPU의 제어 신호, 인터럽트 신호, 메모리 보호 등과 같은 제어 기능을 제공합니다. 예를 들어, 제어 레지스터는 연산을 수행할 때 사용할 연산 모드, 메모리 보호 기능을 활성화할지 여부, 인터럽트를 활성화할지 여부 등을 결정합니다.

장치 드라이버

장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램입니다. (소프트웨어) 떄문에, 기기에 맞는 장치드라이버가 없다면 해당 입출력 장치를 사용할 수 없습니다.

 

입출력 방법

1. 프로그램 입출력: 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법

  • 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
  • 고립형 입출력: 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법

 

2. 인터럽트 기반 입출력: 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행하는 것을 기반으로 입출력하는 방법

(* 폴링: 입출력 장치의 상태를 주기적으로 확인하는 방법)

NMI

NMI Interrupt는 "Non-Maskable Interrupt"의 약어로, CPU가 처리할 수 없는 예외적인 상황이 발생했을 때, 우선순위가 가장 높은 인터럽트입니다. 이러한 상황은 시스템의 심각한 문제를 나타내므로, NMI Interrupt가 발생하면 CPU는 현재 수행 중인 작업을 중단하고, NMI Interrupt Handler라는 특수한 루틴을 실행합니다.


이렇게 우선순위를  반영해 다중 인터럽트를 처리하는 방법 중에 대부분의 컴퓨터는 프로그래머블 인터럽트 컨트롤러라는 하드웨어를 사용합니다. 이 PIC는 인터럽트의 우선순위를 판단해 CPU에게 알려줍니다.

 

3. DMA 입출력

DMA는 CPU의 개입 없이 주변장치와 메인 메모리 간에 데이터를 직접 전송하는 기능을 제공합니다.

일반적으로, CPU는 주변장치에서 데이터를 읽거나 쓰기 위해 중간 단계를 거쳐야 합니다. 예를 들어, 하드 디스크로부터 데이터를 읽을 때, CPU는 먼저 데이터를 디스크 컨트롤러로부터 읽어와서 CPU의 캐시 메모리에 저장한 다음, 메인 메모리로 전송합니다.

그러나 DMA를 사용하면, 주변장치에서 데이터를 메모리로 직접 전송할 수 있으므로, CPU의 개입이 줄어들고 전송 속도가 향상됩니다.

DMA는 주로 대용량의 데이터 전송에 사용되며, 예를 들어, 디스크에서 파일을 복사하거나, 네트워크 카드를 통해 데이터를 전송하는 경우에 사용됩니다. DMA는 CPU와는 별개의 전용 하드웨어 컨트롤러를 필요로 하며, 이 컨트롤러는 DMA를 지원하는 하드웨어 장치에서 제공됩니다.

 

입출력 버스: DMA를 위해 시스템 버스를 너무 자주 사용할 경우, 그만큼 CPU가 시스템 버스를 이용하지 못하는데, 이를 해결하기 위해 DMA 컨트롤러와 장치컨트롤러를 열결하는 별도의 버스

728x90
반응형
LIST

'컴퓨터구조, 운영체제' 카테고리의 다른 글

프로세스와 스레드  (0) 2023.03.30
운영체제 시작하기  (0) 2023.03.30
보조기억장치  (0) 2023.03.27
메모리와 캐시메모리  (0) 2023.03.23
CPU 향상 기법  (0) 2023.03.23