컴퓨터 아키텍처 : IRQ 범위가 좁아 USB 키보드의 응답 성이 떨어 집니까?


19

방금 생각한 내용이 있습니다. 누구든지, 왜 그런지 말해 줄 수 있습니까?

성명서 : USB 키보드는 낮은 IRQ 수준에만 액세스 할 수있는 USB 일반 드라이버 및 아키텍처에 의존하기 때문에 다른 PS2 컨트롤러처럼 IRQ에 키보드 액세스 권한을 부여 할 수 없습니다.

이것이 사실이라면 USB 포트가 다른 포트 유형 (PS2와 같은)에 연결된 키보드보다 우선 순위가 낮다는 것을 의미합니까?

다른 중간 우선 순위 인터럽트 루틴에 갇힌 결함이있는 시스템에서 중간 우선 순위 IRQ에 매핑 된 USB 키보드를 예로 들어 보겠습니다. 상대적으로 동일한 우선 순위로 인해 키보드 이벤트가 무시되고 Ctrl-Alt-del 또는 기타 비상 키 입력을 보낼 수 없습니다. 키보드의 우선 순위가 높은 경우 시스템은 키 입력 인터럽트 루틴을 시작할 수 있습니다.

또는 USB 컨트롤러에 키보드에 필요한 우선 순위를 부여 할 수있는 충분한 IRQ 범위 (연속적인 우선 순위인지 아닌지)가 있습니까?

그리고 원격 데스크톱 세션에서 네트워크 연결을 통해 매핑 된 가상 키보드는 어떻습니까?

편집 : 내 질문은 속도에 관한 것이 아닙니다 .


2
USB 마우스에 대해서도 마찬가지입니다. 몇 달 전에 인터페이스 (마우스 자체는 아님)를 전환 한 후 분명히 그렇게 보입니다.
martineau

키보드의 경우에는 마우스의 경우와 거의 같습니다. 그러나 마우스를위한 비상 키 입력이 없기 때문에 덜 중요합니다
PPC

나는 이것이 걱정할만한 것이 아니라고 생각합니다. 이렇게하고 키보드가 멈 추면 네트워크 인터페이스가 고갈되어 시스템을 원격으로 제어 할 수 없습니다. 하나의 문제를 다른 문제와 거래하는 것 같습니다.
David Schwartz

1
@DavidSchwartz : 주로 이론적 인 질문이며 컴퓨터 설계자의 관점에서 가져 왔습니다. 그래도 사용자의 PoV에있는 하나의 응용 프로그램이 있습니다. "내 컴퓨터가 멈췄거나 Ctrl-Alt-Backspace에 응답하지 않습니다. PS2 키보드를 찾거나 잊어 버리고 하드 재부팅해야합니다"
PPC

2
@ PPC : Ctl-alt-del은 어쨌든 작동하지 않을 것입니다. 재부팅 프로세스는 프로그램을 종료하고 캐시를 플러시하는 고급 소프트웨어에 의해 제어됩니다. 인터럽트 스톰이 있으면 고급 소프트웨어가 작동하지 않습니다.
David Schwartz

답변:


17

IRQ 범위가 아니라 세 가지 주요 요소가 있습니다.

  1. 버스 혼잡 량
  2. 데이터 양
  3. 데이터 경로의 길이

과거에는 키보드와 마우스에 전용 IRQ (키보드의 경우 IRQ1, PS / 2 마우스의 경우 IRQ12)가있었습니다.

이것은 키를 눌렀을 때 CPU와 거의 직결 된 선을 가졌음을 의미합니다 (PIC를 통하지 만 여전히 한 번만 점프합니다). 이를 통해 특히 IRQ1이 있기 때문에 키보드 이벤트를 하드웨어에서 매우 빠르게 처리 할 수있었습니다. (물론 이것은 일반적인 키보드 사용에 관한 것이며 키보드 컨트롤러에서 CPU로 직접 이동하는 리셋 라인은 무시합니다.)

반면 USB 장치는 모두 동일한 버스와 USB 컨트롤러의 IRQ (일반적으로 NIC, 비디오 카드 등과 같은 다른 장치와 공유되는 IRQ 조정 장치 중 하나)를 공유합니다. 따라서 USB 키보드를 사용하면 이벤트가 키보드 컨트롤러에서 USB 버스를 통해 USB 호스트 컨트롤러로, 거기서부터 2 차 PIC로, 마스터 PIC로, OS 또는 BIOS의 드라이버로 이동합니다. 그런 다음 CPU에. 또한 USB를 통해 전송 된 데이터에 추가 된 오류 검사 데이터가 있습니다.

다시 말해, AT 또는 PS / 2 키보드보다 USB 키보드로 더 많은 작업이 진행되는 것입니다. 데이터 경로가 길고 더 많은 데이터가 있으며 소프트웨어 를 거쳐야 할 수도 있습니다 . USB 대역폭이 충분히 크더라도 동일한 포트에 다른 장치가 있으면 충돌 및 지연이 발생합니다 (허브를 추가 할 수 있지만 포트의 모든 포트는 여전히 컨트롤러의 동일한 포트 임). 그래서 더 많은 대기가 진행되고 있습니다.

또한, 자체 (IRQ는 이전 키보드가 필요할 때마다 CPU의 처리를 방해 할 수 있음을 의미했습니다. USB를 사용하면 키보드에 그러한 메커니즘이 없으며 일부 데이터 만 보내고 USB 컨트롤러가 CPU를 인터럽트하기를 기다릴 수 있습니다. 어느 시점에서.

가상 키보드는 물론 하드웨어 라인과 경쟁 할 수없는 소프트웨어를 확실히 통과 하기 때문에 더욱 악화 됩니다.

다음은 AT 또는 PS / 2 키보드와 USB 키보드의 차이점을 간단히 시각화 한 것입니다.

여기에 이미지 설명을 입력하십시오


우선 순위보다 속도가 빠르지 않습니다. 데이터 경로가 길수록 키 입력이 대기 할 수 있음을 이해합니다. 그러나 나는 경로 길이에 의존하지 않는다고 생각하는 "잘못된 시스템에서 키 입력이 손실 될 가능성"에 대해 생각하고 있습니다.
PPC

CPU에 도달하기 전에 소프트웨어에서 IRQ를 어떻게 처리 할 수 ​​있습니까? APIC에 자체 프로세서가 있습니까? 중앙 메모리에 루틴이 있습니까? CPU 시간을 '빌리기'합니까?
PPC

> "결함이있는 시스템에서 키 입력이 손실 될 가능성이 있습니다."결함에 따라 다릅니다. 그러나 USB 키보드는 추가 복잡성으로 인해 키 입력이 손실 될 가능성이 훨씬 높습니다. > Re : APIC 예, 키보드 컨트롤러에 프로세서, 비디오 카드에 GPU 등이있는 것처럼 일부 수준의 처리를 수행하는 프로세서가 있습니다. 대부분의 하드웨어에는 일부 처리를 처리하는 일종의 칩이 있습니다.
Synetech

> CPU에 도달하기 전에 소프트웨어에서 IRQ를 어떻게 처리 할 수 ​​있습니까? USB 키보드에는 드라이버가있을뿐만 아니라 USB 컨트롤러에도 드라이버가 있습니다. 키보드 데이터는 대신 같은 몇 가지 때문에, 다음 CPU 또는 필요에 따라 다른 소프트웨어, 키보드 드라이브에 그 드라이버, USB 컨트롤러에 키보드를 통해 길을 만드는, CPU에 직행하지 않는다 Ctrl+Alt+Del'돈 하드웨어 라인을 통해 작동하지 않지만 오히려 소프트웨어를 통해 처리됩니다.
Synetech

따라서 키 스트로크의 기본 데이터 흐름은 USB 컨트롤러, APIC, CPU In Low-pri IRQ, USB ISR / IST, CPU 자체 생성 IRQ (TRAP와 같은), 키보드 ISR / IST 등입니다. 이런 식으로, 관련 우선 순위는 USB 컨트롤러의 우선 순위입니다. 내 질문에 USB 컨트롤러가 USB 패킷을 실제 키보드 IRQ로 변환 할 수 있다고 생각했습니다.
PPC

14

짧은 답변

두 키보드 모두 사용자 수준 코드에서 완전히 동일하게 작동합니다. 장치 드라이버를 작성하면 약간의 차이 ( 현대 PC에서는 나노초 에서 마이크로 초 까지 )가있을 수 있습니다. 시스템이 중단되면 두 키보드 모두 문제를 해결하지 못합니다. 하드 재부팅으로 이동하십시오.


긴 답변 TL; DR;

인터럽트 란 무엇입니까?

하드웨어 (또는 커널과 같은 중요한 OS 내부 소프트웨어 일부)에 프로세서 서비스가 필요한 경우 프로세서가 메시지 또는 인터럽트를 발생 시켜 프로세서가 수행하는 작업을 연기하고이 요청을 처리하도록 요청합니다.

어떻게 작동합니까?

하드웨어가 인터럽트 (예 : 키 누름)를 생성하면이 요청은 인터럽트 컨트롤러로 들어갑니다. 그런 다음 컨트롤러는 머신 코드의 한 줄에서 CPU를 즉시 중단합니다 (CPU는 여전히이 마지막 줄을 실행합니다). 프로세서가이 요청을 처리 할 준비가되면 인터럽트 컨트롤러 (IRQ) 및 처리 루틴을 요청 합니다. 인터럽트 컨트롤러 는 특정 IRQ에 대해 CPU에 의해 실행되어야하는 루틴에 대한 포인터를 포함 하는 내부 데이터 구조- 인터럽트 디스패치 테이블 을 갖습니다 .

모든 다른 인터럽트는 잘 정의 된 제한된 IRQL ( Interrupt Request Level )에 해당합니다. 예를 들어 x86 시스템에는 32 개의 IRQL이 있으며 x64 및 IA64에는 실제로 16 개의 IRQL이 적습니다. 분명히 IRQL보다 더 많은 하드웨어 장치와 소프트웨어 서비스가 있다는 것은 모든 시스템 개체가 IRQL을 공유한다는 것을 의미합니다.

x64에 대한 IRQL 테이블

    IRQL | 기술
--------------------------------------------
    15 | 높음 / 프로필
    14 | 인터 프로세서 인터럽트 / 전원
    13 | 시계
    12 | 동조
    11 | 장치 N
    .. | ...
     3 | 장치 1
     2 | 파견 / DPC
     1 | APC
     0 | 수동 / 낮음

IRQL이 높을수록 (숫자가 많을수록) 우선 순위가 높습니다. 시스템의 모든 구성 요소는 프로세서의 현재 IRQL을 가능한 가장 낮은 수준 (0)으로 유지하려고합니다. 높은 수준의 인터럽트가 발생하면 프로세서의 현재 IRQL 수준이 높아지고 낮은 수준의 인터럽트는 처리되지 않습니다. 더 높은 레벨의 모든 인터럽트가 해결됩니다. IRQ 스케줄러가 프로세서 실행을 위해 동일한 수준의 여러 IRQ를 대기열에 넣을 수있는 경우 IRQ를 일괄 처리 할 수 ​​있습니다.

요점이 뭐야?

이 모든 것은 최종 사용자를 복잡한 하드웨어와 분리하고 많은 유형의 하드웨어 / 소프트웨어와 작동 할 수있는 범용 아키텍처를 만들기 위해 실제로 잘 설계되었습니다.

  1. 사용자 수준 코드 (즉, 커널 수준이 아님)는 프로세서가 수동 / 낮음 (0) IRQL에있을 때만 실행됩니다. 요점은 모든 IRQL이 처리 된 후에 만 ​​응용 프로그램에서 키 누름 이벤트 만 처리 할 수 ​​있다는 것입니다. 따라서 키보드의 경우 IRQL이 하드웨어 인터럽트에 할당되는 것은 중요하지 않습니다.

  2. IRQL은 OS 추상화 일 뿐이며 스톤에는 설정되지 않습니다 . 해당 IRQ 및 IRQL은 Windows 레지스트리 (예 :)에 저장되며 모든 열정적 인 사용자는 수동으로 변경할 수 있습니다.

결론

질문에서 인용

USB 키보드는 일부 IRQ 채널에만 액세스 할 수있는 USB 일반 드라이버 및 아키텍처에 의존하기 때문에 다른 PSQ 컨트롤러와 같이 IRQ에 키보드 액세스 권한을 부여 할 수 없습니다.

아마도 저자 는 더 적은 IRQ 채널 대신 더 낮은 IRQL을 의미했을 것이다 . 어쨌든, 그것은 현대 PC에서 사용자에게 보이지 않기 때문에 실제로 중요하지 않습니다. 가능한 차이는 나노초 에서 마이크로 초 수준이며 커널 수준에서만 발생합니다. 두 경우 모두 사용자 수준 코드는 OS 커널에 의해 차단됩니다.

이것이 사실이라면 USB 포트가 다른 포트 유형에 연결된 키보드보다 응답 성이 떨어질 것입니까?

OS가 설계된 방식으로 인해 사실이 아닙니다. OS가 무언가에 바쁘고 "느린"경우 두 키보드는 동일하게 동작합니다.

다른 중간 우선 순위 인터럽트 루틴에 걸린 결함이있는 시스템에서 중간 우선 순위 IRQ에 맵핑 된 USB 키보드를 예로들 수 있습니다.

이 경우 시스템은 BSOD가되고 IRQ 처리 루틴은 특정 표준 (예 : 고속, 동기식, 비 블로킹 등)으로 설계되어야합니다. 이것과 커널과의 편차는 BSOD입니다.

상대적으로 동일한 우선 순위로 인해 키보드 이벤트가 무시되고 Ctrl-Alt-del 또는 기타 비상 키 입력을 보낼 수 없습니다.

시스템이 정지하면 잘못 될 수있는 많은 것들이 있지만, 키 입력 IRQL은 드라이버 레벨에서 처리 될 것입니다. 문제는 OS가 다른 작업을 수행하고 있기 때문에 그러한 알림을 신청 한 응용 프로그램에 전달되지 않는다는 것입니다.


내가 대상으로하는 응용 프로그램은 창 관리자 (easy case) 또는 OS 자체입니다. 내 CPU가 정상적으로 자사의 USB와 같은-IRQL 처리를 드롭 내 동기화 - 디스크 - 전-I-재부팅 - 당신 받으실
PPC

>> 이것이 .. USB kbds의 응답 성이 떨어짐을 의미합니까? '아니요'답변을 자세히 설명해 주시겠습니까?
PPC

@PPC 장치 드라이버를 설계하면 USB kbd가 나노초에서 마이크로 초까지 느려질 수 있습니다. 사용자 레벨 코드에 관심이있는 경우 레벨> 1의 IRQL을 처리 할 때 코드가 차단 된 상태로 유지됩니다. 따라서 kbd IRQL이 최고 IRQL 또는 중간 IRQL과 같은 경우에는 중요하지 않습니다. 사용자 코드가 차단되었습니다.
oleksii
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.