2017-04-07 4 views
0

Sparc V8 아키텍처에는 N 개의 레지스터 창이 있습니다. 일반적으로 컨텍스트 스위칭 중 RTOS는 레지스터를 밀어 넣고 팝합니다. 이 레지스터 창을 스레드 중 하나로 사용할 수 있습니까 (또는 이미 완료되었습니다). 이렇게하면 레지스터 창을 이동하고 PSR을 누르고 터뜨리는 것과 같이 다음 스레드로 전환 할 수 있습니다! 따라서 컨텍스트 스위칭 시간을 절약하고보다 빠른 컨텍스트 스위칭 주파수를 가능하게합니다.Sparc V8 RTOS 쿼리

+1

구현시 3 ~ 32 개의 레지스터 창이있을 수 있으며,이 방법을 사용하는 작업 수가 제한됩니다. V8 Arch 매뉴얼에서는 컨텍스트 스위칭에 대해 설명합니다. 구현에 따라이를 기대합니다. V9 Arch 매뉴얼에는 컨텍스트 스위치를보다 신속하게 설계 할 수있는 개선점이 설명되어 있습니다. – Clifford

+0

나는 당신의 요지를 알고 있습니다. 내 질문은 가능한지 여부입니다. 그리고 만약 그것이 있다면 그것은 초고속 컨텍스트 스위칭을 허용 할 것인가입니다. – Prakhar

+0

인접한 레지스터 창 사이에 겹침이 있음을 잊지 마십시오. 하나의 창의 출력 레지스터는 다음 윈도우의 입력이됩니다. 따라서 각 작업에 레지스터 창을 할당하더라도 각 컨텍스트 스위치에 입력 레지스터 (물론 전역)를 저장/복원해야합니다. –

답변

0

어쩌면 스레드에 의한 의미와 개수에 따라 다를 수 있습니다.

레지스터 창은 잘 정의 된 작업으로 하드웨어 및 소프트웨어 트랩에서이를 구현하여 함수 호출 및 반환에 대한 아이디어를 토대로 구축됩니다. 스레드가 라운드 로빈 방식 등으로 호출되는 함수 일 경우 ... "예"에서 호출 된 다른 함수와 마찬가지로이 방식으로 전환됩니다. 일단 레지스터 창 수보다 더 많은 기능을 갖게되면 등록 파일에서 페이징 처리가 시작됩니다.

OS 및 사용자 코드의 관점에서 ... 등록실 창에 들어가거나 나가면 어떤 일이 발생할지 제어 할 수 없습니다. 등록 창은 트랩으로 구현되어 있기 때문에 아마도 펌웨어에서 이해할 수 있습니다. 만약 당신이 Sparc을 어떻게 운영하고 있는지를 바꾸고 싶다면, Sparc이 무엇을하는지는 스펙 (Spec)에 정의되어 있기 때문에 더 이상 작동하지 않습니다.

레지스터 창의 모든 부분은 항상 빠른 컨텍스트 스위칭 이었지만, TLB와 같은 Sparc 하드웨어의 다른 측면은 플랫 주소 공간이있는 Sparc MCU 컨텍스트에서 얻을 수 있습니다. ... 그렇다면 그것은 정말로 빠를 것입니다.