2014-10-20 2 views
0

이 질문은 다소 모호하게 보일 수 있지만 인터럽트 시스템이 작동하는 방식과 지연 시간에 대해 연구하고 있습니다. ARM의 FIQ와 같은 아키텍처 기능이 대기 시간을 줄이는 데 어떻게 도움이되는지 이해하려고합니다. 액세스 권한이 없거나 액세스 권한을 제공 할 수없는 운영 체제를 사용하는 것과 어떻게 다른가요? 예를 들어 - Windows RT는 ARM 등을 위해 만들어졌으며이 운영 체제는 다른 아키텍처로 이식 할 수 없습니다.전용 아키텍처 및 운영 체제를 통한 낮은 인터럽트 대기 시간

여러 아키텍처 (예 : Linux)에서 이식 할 수있는 운영 체제에 비해 전용 운영 체제가있는 전용 아키텍처에서 인터럽트 지연이 어떻게 다릅니 까?

호언 장담에 대한 사과 - 아마도 당신이 말할 수있는 것처럼 나는 꽤 혼란 스러워요.

+1

중복 가능성 (HTTP를 [FIQ와 IRQ 인터럽트 시스템의 차이점은 무엇입니까?] //stackoverflow.com/questions/973933/what-is-the-difference-between-fiq-and-irq-interrupt-system) –

+0

하드웨어 문서를 검색하여 시작하십시오. 팔 코어가 많이 있으며 인터럽트가 관리됩니다. ARM은 코어를 만드는 칩을 만들지 않으며, 칩 공급 업체는 ARM 로직에 자체 인터럽트 관리자 논리를 추가로 추가 할 수 있습니다. 다시 google은 당신의 친구입니다. 하드웨어를 이해하거나 눈을 뜨게해야하는 베어 메탈에서 테스트 (비 결정적 응답 시간)하면 오픈 소스 운영 체제를 조사 할 수 있습니다. –

+0

약간 막연하고 모호합니다. 하드웨어에서 추상화 계층으로, 추상화 계층에서 일반 처리기로 이동하는 데 더 많은 코드 (사이클 시간)가 필요한 가장 일반적인 추상화 계층을 목표로하거나 덜 일반적으로 사용할 수있는 가장 휴대 성이 뛰어난 운영 체제를 기대합니다. ..하지만 물론 ... "의존합니다". –

답변

1

Windows RT 예제부터 시작하겠습니다. Windows RT는 ARM 아키텍처에 대한 Windows 포트입니다. '전용 운영 체제'가 아닙니다. (아마도) 오직 하나의 아키텍처에서만 동작하는 많은 OS들이 있지만, 그 이유는 어떤 이유로 인해 포트를 포팅 할 수 없다는 것입니다.

'포트'는 실제로 무엇을 의미합니까?

Windows에는 커널 (여기서는 NT라고하며, 중요하지 않음)이 있으며 NT 커널에는 구현해야 할 개념이 많이 있습니다. 이러한 개념은 타이머, 메모리 가상화, 예외 등과 같은 것입니다 ...

이러한 개념은 아키텍처간에 다르게 구현되므로 커널 및 드라이버의 포트 (여기 나머지 OS는 무시합니다. 재 컴파일 만)은 필요한 개념을 구현하기 위해 사용 가능한 실리콘 조각을 사용하는 문제입니다. 이 구현은 '포트'라고합니다.

FIQ 및 IRQ가있는 ARM에서 인터럽트 (일명 예외)를 확대 해 보겠습니다. 일반적으로 인터럽트는 비동기식으로 발생할 수 있습니다. 이는 언제든지 의미합니다. CPU는 일반적으로 IRQ가 어설 션 될 때 무언가를 하느라 바쁘기 때문에 CPU가 UserContext1에서 사용중인 모든 리소스를 사용하기 전에 컨텍스트 (우리는 UserContext1이라고 부름)를 저장해야합니다. 일반적으로 이것은 레지스터를 사용하기 전에 스택에 저장하는 것을 의미합니다. ARM에서 IRQ가 발생하면 CPU가 IRQ 모드로 전환됩니다. 레지스터 r13과 r14에는 IRQ 모드를위한 자체 복사본이 있으며, 나머지는 사용할 경우 저장해야합니다. 그러면 그럴 것입니다. 메모리에 저장하는 데 시간이 좀 걸립니다. IRQ가 처리되고 UserContext1이 스택에서 다시 팝되면 IRQ 모드가 종료됩니다.

이 경우 대기 시간은 IRQ 어설 션에서부터 IRQ 벡터 실행이 시작될 때까지 걸리는 시간이 될 수 있습니다. 이것은 IRQ가 발생했을 때 CPU가 무엇을했는지에 따라 정해진 수의 클럭 사이클이 될 것입니다. IRQ 처리가 발생할 수있는 대기 시간은 IRQ 어설 션에서 CPU가 컨텍스트 저장을 완료 할 때까지의 시간입니다. 사용자 모드 코드가 실행될 수있는 대기 시간은 여기서 설명 할 OS/커널의 내용에 따라 다르지만 IRQ 어설 션에서 User Context1을 복원 한 후 반환되는 시간과 OS 컨텍스트 전환 시간에 이르기까지 최소한의 시간이 필요합니다.

FIQ - 손톱 프로그래머가 어려운 경우 인터럽트 서비스를 완벽하게 처리하기 위해 7 개의 레지스터 만 사용해야 할 수 있습니다. 필자는 IRQ 모드가 자체 레지스터 2 개를 가지고 있다고 말했고, FIQ 모드는 7 개의 레지스터로 이루어진 자체 복사본을 가지고 있습니다. 그래, 스택에 밀어 넣을 필요가없는 28 바이트의 컨텍스트 (실제로는 그 중 하나가 링크 레지스터이므로 실제로 6 개)입니다. 그러면 UserContext1을 저장하고 UserContext1을 복원 할 필요가 없습니다. 따라서 저장/복원을 수행하는 데 필요한 시간까지 대기 시간을 줄일 수 있습니다.

아무 것도 OS와 관련이 없습니다. OS는 이러한 기능을 사용할지 여부를 선택할 수 있습니다. 운영 체제는 인터럽트 처리기의 OS 개념을 실행하는 데 걸리는 시간을 보장할지 여부를 선택할 수 있습니다. 이것은 RTOS의 기본 개념 중 하나입니다. RTOS는 핸들러가 실행되기 전의 계약입니다. OS는 어떤 목적으로 (그리고 그 목적은 '일반적'일 수 있습니다) 설계되었습니다. 목표 설계 목표는 OS가 포팅 된 많은 대상보다 지연에 더 많은 영향을 미칩니다.

일부 하드웨어를 구입하고 시도하는 것보다 freertos와 유사한 내용을 읽으십시오. 코드에 주석을 달고보고 싶은 대기 시간을 파악하십시오. IT가 귀하의 ehad를 얻는 가장 좋은 방법 일 것입니다.

(* 멀티 CPU 시스템으로하지만, 일부 동기화 및 장벽 기능과 복잡도의 뿌리와는 동일하게 함)의