ScholarGate
어시스턴트

I/O 아키텍처 및 버스

I/O 아키텍처는 프로세서와 메모리가 버스, 컨트롤러, 인터럽트 및 주소 지정 방식을 통해 주변 장치와 통신하는 방법을 정의하며, 외부 세계와 명령 및 데이터가 흐르는 방식을 관리합니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

I/O 아키텍처 및 버스는 컴퓨터의 프로세서와 메모리가 주변 장치와 제어 신호 및 데이터를 교환하는 조직 및 상호 연결을 의미하며, 여기에는 장치 레지스터의 주소 지정 및 장치가 서비스를 요청하는 메커니즘이 포함됩니다.

Scope

이 주제는 입출력의 구조, 즉 버스 및 지점 간 상호 연결, 장치 컨트롤러 및 레지스터, 메모리 맵 I/O 대 포트 맵 I/O, 폴링 및 인터럽트 기반 I/O, 버스 프로토콜 및 중재를 다룹니다. 장치가 연결되고 제어되는 방식을 다룹니다. 대량 전송 DMA 메커니즘 및 가상화(I/O 가상화 및 DMA)와 저장 매체 자체(보조 저장 장치)는 제외합니다.

Core questions

  • 주변 장치는 프로세서에 의해 어떻게 주소 지정되고 제어됩니까?
  • 메모리 맵 I/O와 포트 맵 I/O는 어떻게 다릅니까?
  • 폴링과 인터럽트 기반 I/O는 효율성 면에서 어떻게 비교됩니까?
  • 버스 및 지점 간 상호 연결은 어떻게 데이터를 중재하고 전송합니까?

Key concepts

  • 장치 컨트롤러 및 레지스터
  • 메모리 맵 I/O
  • 포트 맵 I/O
  • 폴링
  • 인터럽트 및 인터럽트 핸들러
  • 버스 및 상호 연결
  • 버스 중재
  • I/O 주소 지정

Key theories

인터럽트 기반 I/O
장치를 지속적으로 폴링하는 대신, 프로세서는 다른 작업을 진행하고 장치가 주의를 필요로 할 때 인터럽트에 의해 알림을 받으므로, 느리거나 간헐적으로 작동하는 장치의 효율성을 크게 향상시킵니다.

Mechanisms

각 장치는 프로세서가 메모리 맵 주소 또는 특수 I/O 포트를 통해 읽고 쓰는 레지스터를 노출하는 컨트롤러에 의해 관리됩니다. 프로세서는 이러한 레지스터를 폴링하거나, 더 효율적으로는 인터럽트를 활성화하여 장치가 준비되었을 때 신호를 보낼 수 있습니다. 버스는 구성 요소를 연결하고 여러 마스터 간의 액세스를 중재하는 반면, 최신 시스템은 공유 병렬 버스 대신 고속 지점 간 직렬 링크를 점점 더 많이 사용합니다.

Clinical relevance

I/O 아키텍처는 시스템이 저장 장치, 네트워크 및 기타 장치와 얼마나 효율적으로 통신하는지를 결정합니다. 인터럽트 기반 I/O는 프로세서가 유용한 작업을 수행할 수 있도록 해주며, 공유 버스에서 PCI Express와 같은 고속 직렬 상호 연결로의 발전은 최신 저장 장치, 네트워킹 및 가속기 하드웨어에 필요한 대역폭을 뒷받침합니다.

History

초기 시스템은 프로그래밍된 I/O와 중앙 중재를 사용하는 공유 병렬 버스를 사용했습니다. 인터럽트 메커니즘과 ISA 및 PCI와 같은 표준화된 버스는 유연성과 성능을 향상시켰습니다. PCI Express로 대표되는 고속 지점 간 직렬 상호 연결로의 전환은 공유 병렬 버스의 대역폭 및 신호 한계를 해결했습니다.

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Abraham Silberschatz

Related topics

Seminal works

  • hennessy2019
  • silberschatz2018

Frequently asked questions

메모리 맵 I/O와 포트 맵 I/O의 차이점은 무엇입니까?
메모리 맵 I/O는 일반 메모리 주소 공간 내에 장치 레지스터 주소를 할당하여 일반적인 로드 및 저장 명령으로 액세스합니다. 포트 맵 I/O는 별도의 주소 공간과 장치 액세스를 위한 특수 명령을 사용합니다. 메모리 맵 I/O는 최신 아키텍처에서 더 일반적입니다.
대부분의 장치에서 인터럽트가 폴링보다 나은 이유는 무엇입니까?
폴링은 장치가 준비되었는지 반복적으로 확인하는 데 프로세서 사이클을 낭비합니다. 인터럽트는 프로세서가 다른 작업을 수행하고 장치가 실제로 서비스를 필요로 할 때만 알림을 받도록 하므로, 느리거나 예측할 수 없게 응답하는 장치에 훨씬 더 효율적입니다.

Methods for this concept

Related concepts