I/O 포트와 물리적 포트 사이에 차이가 있나요?

I/O 포트와 물리적 포트 사이에 차이가 있나요?

AFAIK에는 다음 정의가 적용됩니다.

  • I/O 포트는메모리 주소프린터 등 외부 장치와 통신하기 위한 인터페이스로 사용됩니다.
  • 물리적 포트(예: 커넥터)는 장치를 연결하는 물리적 인터페이스입니다.

이 정의에서 볼 수 있듯이 둘은 서로 다른 두 가지입니다. 그러나 이것이 (내 정의) 맞습니까? 아니면 이것이 실제로 한 가지이고 물리적 포트에 메모리 주소가 있습니까?

컴퓨터 아키텍처에 관해 읽고 있는 책에서 이전 정의를 해석했지만 지금은 그 내용을 더 많이 읽고 있어 천천히 혼란스러워지고 있습니다. 내 정의가 틀렸을 수도 있고 책을 잘못 해석했을 수도 있다고 생각합니다.

I/O 포트가 어떻게 사용되는지 간략하게 설명해주시면 정말 감사하겠습니다... 잘 모르겠습니다.

답변1

I/O 포트와 물리적 포트에 차이가 있나요?

다음 정의가 적용됩니다.

  • I/O 포트는 프린터 등 외부 장치와 통신하기 위한 인터페이스로 사용되는 메모리 주소입니다.
  • 물리적 포트(커넥터)는 장치를 연결하는 물리적 인터페이스입니다.

귀하의 정의는 본질적으로 정확합니다.

I/O 포트는 다음을 사용하여 통신합니다.소프트웨어(장치) 드라이버물리적 장치(물리적 포트에 연결된 장치)

보다I/O 시스템자세한 개요를 확인하세요.

답변2

"I/O 포트"는 실제로 소프트웨어 영역에 더 많이 포함되며 이는 메모리와 I/O 포트 사이에 실제 차이가 있었던 Intel x86 하드웨어의 레거시 설계로 인해 시작되었습니다. 두 장치를 모두 주소 버스에 둘 수 있으며, 메모리와 통신하고 싶을 때 I/O 포트를 '끄는' 신호와 메모리를 '켜는' 신호를 주장하고, 대화하려는 경우 바이스버스를 사용합니다. I/O에. 메모리와 I/O에 대한 다른 주소 지정 체계가 있었기 때문에 소프트웨어는 이를 추적해야 했습니다.

데이터 버스를 공유하는 데 메모리와 I/O가 필요한 이유는 16비트 CPU(64k)에서 사용할 수 있는 주소 공간이 제한되어 있기 때문입니다. CPU가 발전함에 따라 데이터 버스는 32비트(4GB)와 64비트(1800경!)로 증가했으며 공유를 위한 오버헤드가 필요하지 않았습니다.

현재 사용되는 32비트 및 64비트 프로세서를 사용하면 메모리와 I/O 모두 직접 주소가 지정되고 I/O 장치는 다른 주소 영역에 매핑됩니다. 이 방법을 메모리 매핑 I/O라고 합니다.

물리적 포트와 관련하여 I/O 포트와 메모리 매핑된 I/O는 컴퓨터 뒷면에 있는 커넥터로 가는 신호를 추가로 버퍼링하고 포맷(예: RS-232)하는 하드웨어에 연결됩니다.

답변3

I/O 공간/포트는 x86 관련 레거시 생성입니다. 예전에는 메모리 주소 지정과 주소 지정을 위해 여러 개의 서로 다른 주소 공간이 있었다고 합니다(PlayStation 4 및 Xbox One에서와 같이 CPU/GPU 리소스를 더 잘 공유하기 위해 공유 메모리 주소 공간을 사용하는 최근 추세를 보셨을 것입니다). I/O 주변 장치".

I/O 공간은 직렬 포트나 병렬 포트와 같은 "실제" 하드웨어 주변 장치와 통신하는 데 사용되었습니다. 일반적으로 I/O 공간 주소 0x3F8에는 시스템의 첫 번째 직렬 포트가 위치합니다. 이 장치와 통신하려면 기존 메모리 액세스 명령어를 사용하는 대신 I/O 액세스 명령어를 실행해야 합니다. 예를 들어 Linux에서는 사용하려는 너비에 따라 outb(), outl() 또는 outw()를 사용합니다. 다시,여긴 전혀 다른 기억 공간이야시스템 메모리 맵보다

PC와 x86이 성숙해짐에 따라(읽기: 이제 기본적으로 32비트 메모리 등을 처리할 수 있음)메모리 매핑I/O가 더욱 보편화되었습니다. 이제 시스템 메모리 맵(예: 0에서 0xFFFFFFFF까지)의 임의 메모리 위치를 특정 장치에 동적으로 매핑할 수 있습니다. PCI 장치에는 특정 양의 메모리 또는 I/O 공간이 필요한 BAR(기본 주소 레지스터)이 있습니다. 따라서 메모리 주소 0x80000000이라는 간단한 읽기/쓰기는 실제로 해당 위치에 '1'을 쓸 때 LED를 뒤집는 물리적 PCI 장치에 매핑될 수 있습니다. 이는 가상 메모리/프로세스별 주소 공간, 심지어 사용자 대 커널 공간 주소의 존재를 무시하는 지나치게 단순화된 것입니다.

그래서요약하다, 제 생각에는 전기/컴퓨터 엔지니어로서 "IO 포트"는 x86 아키텍처의 위치를 ​​나타냅니다.IO 메모리특정 장치에 매핑되는 공간입니다. 물리적 포트는 USB, 직렬 등 컴퓨팅 장치의 실제 유형 커넥터 중 일부입니다.

재미있는 예로, Star Wars: Dark Forces와 같은 오래된 DOS 게임을 플레이한 것을 기억한다면 SoundBlaster Pro를 설정했던 것을 기억하실 것입니다. 포트 220, IRQ 5, DMA 1과 같은 매개변수를 설정합니다. 이는 사운드 카드가 IRQ 채널 5를 사용하여 0x220의 I/O 공간에 있음을 게임에 알리는 것입니다(고급 APIC가 없음을 기억하십시오). 이 시점에는 Intel 8259 또는 2개) 및 DMA 채널 1이 있을 것입니다.

답변4

나는 당신의 진술에 동의하지 않습니다. 용어포트USB 포트, db-25(SR-232) 커넥터 등과 같은 물리적 인터페이스와 연결됩니다. 예상대로 용어는입출력 포트또한 종종 "물리적"으로 해석됩니다.I/O 핀.

그러나 이러한 사실은I/O 포트또는 핀 세트가 연결되었습니다.I/O 레지스터, 그래서 대략적으로 고려할 수 있습니다입출력 포트정말로메모리 주소.

아래 그림을 보면 알 수 있다4개의 I/O 포트, 케이블을 연결할 수 있습니다. 각 포트는 연결되어 있습니다.I/O 레지스터. 예를 들어 핀 PB0로직 레벨(그림의 첫 번째 핀)은 레지스터( DDRB, PINBPORTB)에서 선택한 로직 레벨이 해당 핀에서 결합되는 방식에 따라 달라집니다. 안I/O 레지스터에는 과 같은 DDRB관련 항목이 있습니다.메모리 주소코드를 통해 액세스하고 논리 값을 변경할 수 있습니다.

여기에 이미지 설명을 입력하세요

[이미지 링크]

관련 정보