KR100278327B1 - 공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치 - Google Patents

공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100278327B1
KR100278327B1 KR1019920011990A KR920011990A KR100278327B1 KR 100278327 B1 KR100278327 B1 KR 100278327B1 KR 1019920011990 A KR1019920011990 A KR 1019920011990A KR 920011990 A KR920011990 A KR 920011990A KR 100278327 B1 KR100278327 B1 KR 100278327B1
Authority
KR
South Korea
Prior art keywords
window
graphics accelerator
access
memory
program
Prior art date
Application number
KR1019920011990A
Other languages
English (en)
Other versions
KR930002950A (ko
Inventor
맥인타이레 브루스
프리엠 커티스
로케티 로버트
Original Assignee
마이클 에이치. 모리스
썬 마이크로시스템즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이클 에이치. 모리스, 썬 마이크로시스템즈, 인코포레이티드 filed Critical 마이클 에이치. 모리스
Publication of KR930002950A publication Critical patent/KR930002950A/ko
Application granted granted Critical
Publication of KR100278327B1 publication Critical patent/KR100278327B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Digital Computer Display Output (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

유지된 윈도우용으로 사용되고, 그래픽 가속기에 의해 제어되는 프레임 버퍼 기억장치의 백업 기억 메모리에 직접적으로 그래픽 액세스를 가능하게 하는 방법에 있어서, 유지된 윈도우 영역이 최초에 잉여 프레임 버퍼 메모리내에 존재하는 것을 나타내는 백업 기억영역용의 시스템 메모리내에 있으며, 처리할 때에 공유 메모리 영역이 사용되는 것을 나타내는 기억장치를 포함하는 공유 메모리 파일을 확립하는 단계; 그래픽 가속기로의 액세스가 시도되고 다른 처리순서의 상태가 그래픽 가속기에 기억될 때마다 페이지 폴트를 작성하는 단계; 페이지 폴트에 응답하여 그래픽 가속기에 저장된 문맥을 액세스를 시도하는 처리의 문맥으로 스위칭하기 위해 장치 드라이버를 호출하는 단계;를 포함하는 것을 특징으로 하는 방법.

Description

공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치
제1도는 몇가지 오버랩핑 윈도우를 보여주는 출력 표시 스크린의 설명도.
제2도는 직접 그래픽 액세스를 갖는 응용 프로그램에 대한 가상 어드레스 사상.
제3도는 본 발명에 따른 방법을 설명하는 순서도.
본 발명은 표시기억장치(display memory)에 관한 것이며, 특히 직접적으로 그래픽 액세스(direct graphics access)가 가능한 오프-스크린 화소데이타를 기억하기 위해 표시기억장치를 이용하는 방법 및 장치에 관한 것이다.
[종래의 기술]
가장 간단한 형태로서, 컴퓨터는 데이터가 출력표시장치에 기록될 수 있도록 단일 프로그램으로부터 데이타를 기억하는 프레임 버퍼에 데이타를 기록한다. 이 단일 프로그램의 데이타는 출력 표시장치 전체를 커버한다.
출력 표시장치상에서 동시에 한개 이상의 프로그램을 표시하고 싶은 경우에, 컴퓨터 시스템은 여하간의 방법으로 각 프로그램이 표시될 수 있는 스크린(윈도우)의 상이한 부분을 제공하고, 각 프로그램으로부터 정보를 적정한 윈도우로 향하고, 각각의 적정부분에 제시되도록 상이한 윈도우의 오버래핑에 주의를 기울일 필요가 있다.
이러한 모든 작업들이 개별 프로그램에 의해 수행된다면 서로 다른 프로그램들이 서로 간섭하지 않도록 프로그램들 사이에는 상당히 많은 체크가 필요하다.
이것으로 인해 시스템의 작동이 늦어지는 경향이 있으며, 빈약하게 설계된 소프트웨어로 인해 시스템의 작동이 왜곡되는 경향이 있다. 이러한 이유들로 해서 진보된 컴퓨터 시스템들은 표시되는 것을 제어하기 위해 프레임 버퍼로의 기록 동작 전체를 접수하는 윈도우 시스템 프로그램을 설계한다. 윈도우 시스템은 전체 표시장치를 제어한다. 이것은 개별 응용 프로그램으로부터 정보를 표시하기 위해 요구를 수신하고, 시스템 메모리에 이들 요구를 기억하고, 서로 다른 프로그램이 표시될 수 있는 윈도우를 선택하고, 응용프로그램에 의해 제공되고, 주기억장치에 기억된 요구를 프레임 버퍼로의 본문 및 그래픽출력으로 변환하고, 윈도우의 오버랩을 제어하고, 요구에 응하여 윈도우의 커버된 부분에 데이타를 기억함으로써 시간이 지난후 리콜될 수 있으며 단일 출력 표시장치상에 많은 프로그램을 표시하는데 필요한 모든 작동을 행한다. 이것은 프로그램들이 그들의 출력을 나타내면서 정확하게 작동한다는 것을 확신시키며, 프로그램을 응용하는 프로그래머로 하여금 표시를 하기 위해서 많은 절차를 기록해야 하는 필요성을 덜어준다.
윈도우를 보통 출력 표시장치상에서 크기가 변하는 직사각형 화소영역으로 표시한다. 하나의 윈도우가 다른 것과 오버랩되면 오버랩된 윈도우로부터의 화소 부위는 더이상 출력표시장치에서 볼 수 없다. 출력 표시장치상에서 윈도우 오버랩의 배열이 변함으로 인해 볼 수 없는 오버랩되었던 윈도우 부위가 다시 보이면 이 윈도우로부터 앞서 보이지 않았던 화소영역을 반드시 고쳐야 한다. 때때로 프로그램은 이 윈도우로 출력을 송신해서 새롭게 노출된 영역을 고치는 것이 가능하다. 다른 경우에 있어서는 고치는 것이 복잡하기 때문에 프로그램은 윈도우 시스템이 이전에 출력흐름으로부터 이 화소에 나타나는 화소를 기억하고 프로그램으로 하여금 필요하게될 어떤 보수 연산(repair operation)을 무시하도록 내버려 두면서 윈도우 시스템이 화소를 필요한 것으로 보유해서 재기억하는데 조심하는 것을 선호한다. 임의 윈도우 시스템은 유지 윈도우(retained window)로 불리우는 메카니즘을 통해 이 형상을 지원한다. 그들의 윈도우의 손상된 영역을 보수해야 하는 번거로움을 원하지 않는 응용 프로그램은 윈도우 시스템으로부터 이 형상을 요구한다.
윈도우 시스템이 이러한 모든 것들을 하도록 설계되었지만 그들을 사용하는데는 몇가지 어려움이 있다. 예를들어 윈도우 시스템이 지원하지 않는 몇가지 그래픽 연산이 있을 수 있다. 부가하면 그러한 윈도우 시스템의 프로그램을 실행하는 컴퓨터 시스템은 개별 프로그램 그 자신이 프레임 버퍼에 대해서 직접적으로 기록을 행하는 것처럼 정보의 표시를 빠르게 동작하지 못한다. 필요한 오버헤드를 구비한 윈도우 시스템 프로그램은 초당 단지 10번에 걸쳐 출력표시장치를 변화시킬 수 있으며, 한편 실제 비디오 표시장치는 관찰자에게 왜곡되어 나타나지 않는 방법으로 액션을 표현하기 위해 초당 60번으로 표시되는 것이 요구된다.
전체적인 그래픽 연산을 빠르게 하기 위해서 중앙처리장치로부터 많은 그래픽 표시기능을 덜어줌으로써 표시장치에 대해 그래픽 정보를 빠르게 렌더링하는 여러가지 그래픽 가속기가 설계되었다. 어떤 컴퓨터 시스템은 개별 응용 프로그램으로부터 데이타가 윈도우 시스템 우회해서 그래픽 가속기로 직접적으로 기록되도록 허용함으로써 실제적으로 출력 표시장치상에서 그래픽화상을 빠르게 형성시킨다. 통상, 매우 빠른 그래픽 프로그램은 이 설비를 이용해서 렌더링을 빠르게 할 것이다. 그러나 윈도우 시스템 프로그램은 표시장치상에서 윈도우 영역의 할당과 조작을 제어하고 그리고 매우 빠른 렌더링을 요구하지 않는 다른 적용 프로그램에 대해 그래픽 화상의 렌더링을 제어하기 위해 다기능 환경(multitasking environment)에서 이용된다. 결론적으로, 두개의 개별 프로세스, 윈도우의 위치 및 이동을 제어하는 윈도우 시스템, 및 윈도우에 데이타를 제공하는 응용 프로그램은 응용 프로그램이 직접적인 그래픽 액세스를 갖는 윈도우에 대해서 그래픽 가속기 하드웨어를 공유해야 한다.
컴퓨터 시스템상에서 실행하는 다중 프로세스가 정확하게 작동하기 위해 실행되는 프로세스의 상태(프로세스의 상태를 규정하는 데이타, 보통 “상태(state)”라고 간단히 언급) 에 관한 정보를 기억하는 하드웨어의 일부분을 공유하기를 원한다면, 상이한 프로세스가 특정하드웨어를 이용하기를 원할 때마다 무언가가 하드웨어의 상태를 바꾸어야만 한다. 즉, 현재 실행되는 프로세스는 멈추어진 점에서 계속해서 프로세스를 진행시키기 위해 프로세스가 재개되면 상태가 하드웨어안에서 복구될 수 있도록 그 상태가 세이브되도록 해야 한다. 부가적으로, 실행될 프로세스는 프로세스가 정확하게 실행하도록 하드웨어안에서 그 상태가 재기억되도록 해야 한다. 이 연산은 보통은 상태 혹은 문맥 스위칭(context switching)을 세이브하고 복구하는 것으로 언급된다.
통상, 프로세스는 하드웨어의 특정부분의 독점적인 이용을 요구하며 어떤 기간동안 그것을 독자적으로 이용한다. 이러한 독점적인 이용을 획득하기 위해, 프로세스는 운영 시스템(operating system)에 대해 호출을 행한다. 운영 시스템은 많은 점검을 행하며 궁극적으로 문맥 스위칭을 달성하게 될 것이다. 그러한 콜은 많은 시간을 필요로 하여, 중앙처리장치가 다른 기능을 다하지 못하도록 한다. 컴퓨터가 단일 응용 프로그램을 실행할 때 소요되는 시간은 그리 크게 중요하지 않는데 그 이유는 그러한 호출이 자주 이용되지 않기 때문이다. 그러나 몇가지 상이한 응용 프로그램을 동시에 처리하는데 관련된 컴퓨터 시스템에 있어서는, 문맥 스위칭을 성취하기 위해 응용 프로그램으로부터 시스템 호출의 통상의 프로세스는 상당히 자주 이용되어야만 하고 실제적으로 시스템의 연산을 늦추게 한다.
일반적으로 많은 문맥 스위칭을 요구하는 복수의 프로세서(중앙 프로세서와 부동점 프로세서(floating point processor)와 같은)를 이용하는 시스템에서, 운영시스템에는 문맥의 스위칭을 달성하기 위해 프로세서에 따라 시스템의 호출을 행할 필요성을 없애고 게다가 그것에 필요한 시간을 단축하기 위해 종래 장기간에 걸쳐 스케줄링 기능이 제공되어 왔다. 그러나 그러한 자동 문맥 스위칭 메카니즘은 통상 시스템내의 다른 하드웨어를 이용할 때는 활용할 수 없었다.
프로세스가 출력 표시장치상에서 복수의 윈도우내에서 다중 적용 프로그램의 결과를 동시에 표시할 때처럼 극히 많은 양의 데이타 전달을 요구할 경우, 매우 광범위한 문맥 스위치가 필요하다. 예를들어 그래픽 가속기는 출력 표시장치상에서 윈도우내에서 동시에 표시되는 개별 응용 프로그램에 관한 상태를 기억한다. 이 상태는 다른 것들중에서 개별 윈도우의 위치, 응용 프로그램에 의해 이용되는 칼라모드, 프로그램에 의해 표시될 결과가 이중으로 버퍼되었는가 그리고 그외 몇가지를 표현한다. 마찬가지로, 윈도우 시스템의 연산에 필요한 상태는 그 프로세스가 실행될 때 그래픽 가속기 내에 기억된다.
일반적으로 다중수행환경에서 소프트웨어는 프로세스가 실행하는 전체시간동안 필요한 모든 하드웨어 자원의 독점적인 이용을 요구하도록 기록되어야 하고, 그렇지 않으면 그것을 이용하는데 필요한 각 시간마다 하드웨어를 명확하게 요구해야만 한다. 한정된 하드웨어 자원의 최대한의 공유를 허용하기 위해, 잘 기록된 소프트웨어는 보통 공유된 하드웨어에 대해 독점적인 액세스 권리를 홀딩하는데 소비하는 시간에 대해 제한을 가한다. 그러나 명확한 액세스 요구는 늘 시간을 소비하기 때문에, 대부분의 소프트웨어는, 만약있다면, 실제로 어떤 액세스의 종류가 실제로 요구되는지를 알지 못하고 상대적으로 톱 레벨의 코드에 액세스 요구를 위치시킨다. 다중 수행 시스템에서 만약 프로세스에 의해 각 중앙처리장치의 이용이 그래픽 가속기로의 액세스의 요구를 촉진한다면 중앙처리장치를 시분할하는 상이한 프로세스에 의해 무수한 요구들은 그래픽 하드웨어가 항상 요구되지 않더라도 일정한 문맥 스위칭을 일으킬 것이다. 만약 이들 요구들의 각각이 운영 시스템으로 호출을 요구한다면 그후 다중 윈도우의 실제표시는 단지 액세스 요구처리의 오버헤드로 인하여 급격히 늦어질 것이다. 응용 프로그램에 의해 시스템 호출이 상이한 응용 프로그램에 의한 그래픽 가속기의 실제 각 이용에 대해 요구될지라도 그 요구는 많은 시간을 필요로 한다.
최근 복수의 프로세스가 응용 프로그램에 의한 시스템 호출의 요구없이 중앙 프로세서와 수학적인 협력 프로세서에 부가해서 하드웨어 장치를 이용할 수 있는 문맥 스위칭에 대한 배열이 고안되었다.
1989년 9월 28일 지. 로젠샬 등에 의해 출원(미국특허 출원번호: 07/413,976)되고 본 발명의 양수인에게 양도된 “디바이스의 문맥 스위칭에 대한 방법 및 장치(Method and Apparatus for the Context Switching of Devices)”란 제목의 발명은 이러한 시스템을 설명하고 있다. 본 발명의 가르침에 따라서, 프로세스와 전속 문맥 스위칭에 의해 하드웨어의 이용에 관한 요구는 시스템 호출로 부터 운영 시스템내에서 이미 설치되어 최적화된 하드웨어와 유효 소프트웨어 지원으로 구성되는 시스템의 가상메모리 수행부분으로 옮겨간다. 장치를 이용하기 위해 장치상에서 실행하지 않는 프로세스에 의한 간단한 시도는 문맥 스위치를 성취하기 위해 시스템의 가상 메모리 수행 부위에 의해 자동적으로 조작되는 페이지 폴트(page fault)를 촉발시킨다. 메모리 수행설비는 이미 문맥 스위치를 효과적으로 하기 위해 설치되어 있다.
응용 프로그램으로부터 명확한 액세스 요구를 제거하는 것은 문맥 스위치에서 관련된 오버헤드의 양을 급격히 줄인다. 메모리 수행장치는 특정 하드웨어 부분에 대해 장치 드라이버를 호출한다. 장치 드라이버가 자동 연산으로서 문맥 스위치를 하기 위해 설치된다. 바람직한 실시예에서 프로세스가 실제로 특정 하드웨어를 액세스하지 않는다면, 장치의 문맥 스위치는 결코 발생하지 않을 것이다. 그래픽 가속기와 사용될 때, 프로세스는 발생하는 문맥 스위칭을 줄이고 그래픽 가속기 하드웨어를 이용해서 다중 윈도우에서 복수의 응용 프로그램을 제시할 때 발생하는 문맥 스위칭의 속도를 증대시키도록 작용한다. 이와 같은 새로운 발명은 동시에 실행하는 다중 그래픽 응용 프로그램에 대한 직접 그래픽 액세스 지원에 필요한 문맥 스위칭을 크게 가속화시켰다.
그러나 최근 표시장치와 연관된 오프 스크린 데이타를 기억하기 위해 액세스 프레임 버퍼 메모리를 이용하는 새로운 방법이 개발되었다. 예를들어, 또다른 윈도우 부분에 의해 커버된 그래픽 윈도우에서 데이터의 세컨드 표시를 오프-스크린 메모리에 기억하는 것은 때때로 유용하다.
이러한 세컨드 표시는 또다른 윈도우 부위에 의해 커버된 윈도우 부위에서 화소 데이타에 대해서 백업 기억(back up storage)(통상 “유지 윈도우”라 언급)을 제공한다. 이 화소 데이타는 만약 오버랩핑 윈도우가 커버링 위치로부터 제거된다면 스크린에 재기억되도록 유지된다. 만약 오프-스크린 유지 윈도우가 표시 하드웨어에서 국부적으로 기억될 수 있다면 그후 시스템 메모리에서 데이타를 기억하는데 요구되는 실제 시간이 절약된다. 응용 프로그램에 대해 이중 버퍼링을 제공하는 표시 시스템은 이중 버퍼링이 사용되지 않는 기간동안 사용되지 않은 실제 프레임 버퍼 메모리 양을 제공한다. 최근 발명이 있기전에는 오프-스크린 메모리의 할당은 너무 느려서 표시 메모리로 하여금 이 목적에 사용되도록 허용할 수 없었다.
1991년 6월 17일 맥인타이레 등에 의해 출원되고(미국특허 출원번호 ), 본 발명의 양수인에게 양도된 “오프-스크린 표시 메모리를 할당하는 방법(Method for Allocating Off-Screen Display Memory)”이란 제목의 발명은 이 오프-스크린 표시 메모리를 이용하는 방법을 자세하게 개시하고 있다.
통상, 윈도우 시스템은 유지 윈도우 화소 데이타의 기억과 갱신을 제어한다. 그러나 응용 프로그램에 의한 직접 그래픽 액세스가 있는 경우에는 윈도우 시스템은 화소 데이타에 대해 제어할 수 없으므로 응용 프로그램에 의해 윈도우의 가시 부분으로 만들어진 갱신에 해당하는 윈도우의 현재 보이지 않는 유지 부위에서는 데이타를 갱신할 수 없다. 결론적으로, 윈도우가 커버되지 않을 때 실효 화소 데이타는 제공될 수 있다. 응용 프로그램으로 호출을 요구하는 것 없이 윈도우의 커버된 부분을 갱신하기 위해, 직접 그래픽 액세스를 이용하는 응용 프로그램이 가시 메모리로 기록하는 동시에 오프-스크린 메모리로 기록할 수 있는 것이 필요하다. 이것은 그 응용이 노후된 출력을 기억해서 끄집어내는 능력없이 기록될 때 특히 그렇다. 이 이중 액세스가 앞에서 첫번째로 언급한 특허출원에 개시된 배열을 이용하는 것은 불가능하다. 만약 이중 버퍼링이 표시장치상에서 실행되는 어떠한 응용 프로그램에서든 요구된다면 응용 프로그램이 프레임 버퍼에서 오프-스크린 메모리로 직접 그래픽 액세스를 갖는것은 유용할 뿐아니라, 그후 오프-스크린 프레임 버퍼공간이 이 이중 버퍼링에 제공되어야만 한다. 이 경우에, 프레임 버퍼의 잉여 공간(이중 버퍼링으로 현재 사용되는)에 기억된 어떠한 유지 윈도우나 그 비슷한 오프-스크린 데이타는 시스템 메모리로 제거되어야만 한다. 결론적으로 데이타가 시스템 메모리내에 기억되면 응용 프로그램은 윈도우의 유지 부분으로 직접 그래픽 액세스를 가져야만 한다. 그리고 윈도우 시스템은 프레임 버퍼 또는 시스템 메모리내에 기억된 오프-스크린 데이타의 움직임을 제어하기 때문에, 응용 프로그램 및 윈도우 시스템은 프레임 버퍼 또는 시스템 메모리에서 유지 윈도우 데이타를 다룰 수 있어야만 한다. 이것은 오프-스크린 또는 시스템 메모리에서 화소 데이타로의 공유 액세스에 대한 메카니즘을 요구할뿐 아니라, 오프-스크린 메모리에서 액세스 동기화 및 그래픽 하드웨어의 문맥스위칭을 보증하는 방법을 요구한다.
[본 발명의 요약]
그러므로 본 발명의 목적을 프레임 버퍼 메모리에 있는 오프-스크린 데이터의 저장에 이용되는 하드웨어에 대해서 문맥 스위칭을 실행하는 시스템 호출의 필요성을 제거하는 것이다.
본 발명의 또다른 목적은 프레임 버퍼의 잉여 메모리에 기억된 오프-스크린 데이타에 대한 상태의 문맥 스위칭을 자동화시키는 것이다.
본 발명의 또다른 목적은 프레임 버퍼의 액세스 메모리 또는 시스템 메모리에 기억되는 오프-스크린 데이타에 대한 상태의 문맥 스위칭을 자동화시키는 것이다.
본 발명의 이러한 목적들은 윈도우의 유지된 부분용으로 이용되고 그래픽 가속기에 의해 제어되는 프레임 버퍼에 있는 백업 기억 영역으로 응용 프로그램에 의해 직접적으로 그래픽 액세스를 가능하는 방법으로써, 윈도우 영역의 유지된 부분이 최초에 잉여 프레임 버퍼 메모리내에 존재하는 것을 표시하는 백업 기억 영역용의 시스템 메모리내에 프로세스에 의해 공유 영역의 이용을 표시하는 기억장치를 갖는 공유 메모리 파일을 확립하는 단계; 또다른 프로세스의 상태가 그래픽 가속기상에 기억되는동안 그래픽 가속기로의 액세스가 시도될 때마다 페이지 폴트를 작성하는 단계; 및 그래픽 가속기 상에 기억된 문맥을 액세스를 시도하는 프로세스의 문맥으로 스위치하기 위해 페이지 폴트에 응답하여 디바이스 드라이버를 호출하는 단계를 포함하는 방법에 의해 실현된다.
본 발명의 특징 및 목적은 몇가지 도면을 통해 동일 요소는 동일 표시에 의해 언급되는 도면과 함께 상세한 설명을 참조로 해서 더 잘 이해될 것이다.
[표기방법 및 용어]
이하의 상세한 설명의 부분중에는 컴퓨터 메모리내의 데이타 비트에 관한 연산을 기호적 표현으로 설명하는 부분이 있다. 이러한 설명과 표현은 데이타 처리 기술분야에 숙련된 사람에 의해 사용되어 그들의 작업요지를 본 기술분야에 숙련된 다른 사람들에게 가장 효율적으로 전달하기 위한 수단이 된다. 이 연산은 물리적인 양의 물리적인 처리가 요구되는 것들이다. 보통, 반드시 그러한 것은 아니지만, 이들 양은 기억, 전송, 결합 및 비교되고, 그렇지 않은 경우 조작될 수 있는 전기 또는 자기신호의 형태를 취한다. 이들 신호는 때때로 일반적인 사용에 의해, 비트, 수치, 소자, 기호, 문자, 용어, 숫자 또는 이와 유사한 표현으로 언급되는 것이 편리하다. 그러나, 상기 표현형식 모두는 적절한 물리적인 양에 관련되며, 편리하게 이들 물리적인 양에 적용시킨 단순한 라벨이라는 점을 명심해야할 것이다. 또한, 수행되는 조작은 가산 또는 비교와 같은 용어로 언급되는데, 이는 보통 인간 오퍼레이터에 의해서 수행된 지능적인 동작에 관련된다. 그와 같은 인간 오퍼레이터의 능력은 본 발명의 일부를 형성하는 여기에서 언급된 임의의 동작 모든 경우에 반드시 필요하거나 바람직한 것은 아니다. 왜냐하면 동작 자체가 기계에 의해 행해지는 동작이기 때문이다. 본 발명을 수행하기 위한 유용한 기계는 범용 디지탈 컴퓨터나 다른 유사한 장치를 포함한다. 모든 경우에 컴퓨터를 연산하는데 있어서의 연산방법과 컴퓨터 자체의 방법사이의 차이점을 명심해야 한다. 본 발명은 전기적 또는 다른(즉, 기계적, 화학적) 물리적 신호를 다른 소정의 물리적 신호로 발생시키도록 컴퓨터를 연산시키는 장치 및 방법에 관한 것이다.
[발명의 상세한 설명]
본 발명은 서로 다른 컴퓨터 운영 시스템을 실행하는 어떠한 컴퓨터 시스템에 대해서도 적용될 수 있지만, 본 발명의 쉬운 이해를 위해서 유닉스 운영 시스템의 문맥에서 설명된다. 또한, 출력 표시장치상에서 복수의 윈도우 표시를 제어하기 위해 표현된 배열은 X 윈도우 시스템의 문맥 혹은 비슷한 윈도우 수행 시스템에서 설명된다.
지적했던 것처럼, 상기 언급된 첫번째 특허 출원은 그래픽 가속기를 이용하여 프로세스들 사이에서 문맥 스위칭을 가속시켜 그래픽 응용이 윈도우 시스템 프로그램에 의해 제어되는 표시장치에서 윈도우로 직접 그래픽 액세스를 갖도록 하는 것이다. 그 발명은 그래픽 가속기를 현재 이용하지 않는 프로그램이 하드웨어 일부를 액세스하기를 시도할 때마다 시스템 콜 없이 자동 문맥 스위칭 및 액세스 동기화를 제공한다. 액세스를 시도하는 프로그램은 직접 그래픽 액세스를 시도하는 응용 프로그램의 하나이거나 혹은 윈도우 시스템 프로그램일 것이다.
하드웨어 액세스를 찾는 프로그램은 최초에 두개 프로그램 사이에서 공유된 메모리의 페이지(잠금페이지라고 불리움)에 기록한다. 이 잠금페이지는 하드웨어 이용 또는 공유 메모리 영역 이용동안 프로그램에 대해 독점적인 액세스를 제공하는데 이용된다. 만약 상기 프로그램이 응용 프로그램이라면, 이와 같은 독점적인 이용은 정해진 기간후 종료할 것이다; 그리고 만약 응용 프로그램이 그 기간의 종료전에 장치를 명확하게 풀어주지 않을 경우 장치는 풀릴 것이다. 만약 장치(그래픽 가속기)가 현재 또다른 프로그램에 의해 잠겨지지 않을 경우, 이 프로그램은 즉시 실행을 개시한다. 만약 장치가 또다른 프로그램에 의해서 잠겨져 있으면 공유 메모리 잠김 페이지에 대해서 기록하려는 이같은 시도는 페이지 폴트를 유발한다. 운영 시스템에서 가상 메모리 수행 소프트웨어는 이와같은 메모리의 페이지를 특별한 페이지로 인식하고 페이지 폴트를 처리하도록 장치 드라이버를 호출한다. 그후 이 장치 드라이버는 현재 장치를 명확하게 잠근 프로그램이 그것이 포기하거나 사용하는 시간이 다 지나가 버릴 때까지 폐쇄된 프로그램이 잠들게 한다. 만약 그 프로그램이 윈도우 시스템 프로그램이면 그 잠김은 프로그램이 공유 메모리 페이지에 기록된 윈도우에 관한 어떠한 상태 정보(위치, 크기, 및 클립 형태(clip shape)같은)가 최신으로 된 것을 확신할 때까지 포기되지 않을 것이다.
일단 응용 프로그램이 성공적으로 공유 메모리 파일을 잠근다면, 응용 프로그램이 필요로 하는 임의의 상태정보가 갱신되고 그래픽 하드웨어를 이용할 권리를 갖는 것을 확신할 수 있다. 만약 새로운 잠금을 갖는 프로그램이 그래픽 하드웨어를 사용하는 마지막 프로그램이 아니었을 경우, 그 하드웨어에 대한 최초의 액세스에 따라 페이지 폴트가 유발되고, 그 결과 디바이스 드라이버가 개별적으로 호출되어 드라이버는 그래픽 하드웨어 프로그램이 발견하는 것을 기대하는 문맥을 로드함으로써 프로그램이 하드웨어를 독점적으로 사용할 수 있는 것을 인식할 수 있다. 다음에 프로그램은 그래픽 하드웨어의 사용이 종료할 때까지 진행하고, 거기에서 잠금동작과 유사한 동작을 통해 공유메모리를 잠금해제한다.
장치 드라이버는 운영 시스템의 부분이지만 자체를 가상 메모리 관리 시스템으로 등록함으로써 임의의 동작 형태(즉, 화소 액세스 동기화 또는 장치의 문맥 스위칭)가 발생할 때 호출된다. 그러므로 장치 드라이버는 응용 프로그램 또는 윈도우 시스템 프로그램에 의해서 시스템 호출을 요구하는 단락회로에 사용함으로써 액세스 동기화 또는 문맥 스위치가 공유 메모리 또는 장치에 대해서 필요할 때마다 문맥 스위칭 동작을 가속시킨다. 상기 특허출원에서 개시된 하나의 바람직한 실시예에서, 그 발명은 단지 프로그램이 실제로 그래픽 가속기를 필요할 때만 문맥 스위치를 촉발하는 기능을 함으로써 실제적으로 컴퓨터 시스템의 동작을 가속시킨다. 그 발명은 그래픽 가속기를 액세스하기 위해 윈도우 시스템 프로그램과 응용 프로그램 모두에 대해 필요한 상당히 빠른 문맥 스위칭을 허용함으로써 가시표시장치상에서 화소들에 대해 응용 프로그램 액세스를 준다.
상기에서 지적한 바와 같이, 유닉스 운영 시스템에서 응용 프로그램은 통상 동시에 작동되고 그 결과가 출력 표시장치상의 윈도우내에서 동시에 표시되는 복수의 프로그램중 하나로서 실행한다. 몇가지 윈도우에서 몇몇의 프로그램을 제시하는 출력 표시장치가 제1도에 도시된다. 이러한 윈도우들중 하나의 일부가 커버될때, 커버된 부분에 있는 데이터가 백업 저장 영역에서 유지됨으로써 만약 커버링 윈도우가 제거되면 다시 표시될 수 있도록 하는 것이 바람직하다. 윈도우 시스템은 상기와 같은 동작을 할 수 있도록 셋팅된다. 여러가지 이유들중 이런 이유로 인해, 많은 응용 프로그램은 윈도우 시스템 프로그램에 대해서 유지 윈도우를 발생할 것을 요구한다. 그러나, 상기 언급된 발명은 윈도우의 가시부위를 액세스하기 위해 응용 프로그램에 의해 이용될 수 있지만 그 윈도우 시스템은 그 발명을 이용하는 메모리의 유지 윈도우 부분에서 그 데이타를 액세스할 수 있는 유일한 프로그램이다. 그러므로 윈도우 시스템을 이용할 때, 응용 프로그램은 표시되는 윈도우의 가시부위에 대해서 직접 그래픽 액세스를 가질지라도 윈도우 영역의 유지부분에 대해서 액세스를 하지 못한다. 결과적으로, 직접적인 그래픽 액세스가 가능한 응용 프로그램은 그것의 윈도우의 가시부분에 있는 화소들을 빠르게 갱신하는 동안 윈도우의 임의의 커버링된 부분에 있는 화소를 갱신하기 위해서는 윈도우 프로그램에 의존해야 한다.
본 발명은 데이터가 오프-스크린 프레임 버퍼 메모리에 있을 때와 시스템 메모리에 있을때 모두 응용 프로그램이 윈도우 공간의 유지부분에 직접적으로 그래픽 액세스하는 것을 가능하게 한다.
응용 프로그램이 개시되면, 운영 시스템은 통상 그 프로그램에 가상 메모리 번지 공간의 특정량을 할당한다. 메모리 번지 공간의 특정량을 할당한다. 이와 같은 가상 메모리 공간이 제2도에 도시된다. 보통 응용 프로그램은 프로그램 명령코드 및 프로그램 데이터를 갖는 응용 프로그램에 가능한 가상 번지 공간의 작은 단편만을 점유한다. 응용 프로그램이 특정 하드웨어 장치를 이용하기를 바랄 때, 운영 시스템에게 사용될 특정장치에 대응하는 파일 시스템에 있는 특정 파일을 열 것을 요청함으로써 이용할 수 있다. 만약 장치가 시스템에 부착되어 프로그램에 대해서 이용가능하다면, 운영시스템은 파일 표시자를 상기 장치에 식별자를 제공하는 응용 프로그램으로 되돌려 보낸다. 그후 프로그램은 장치를 참고하기 위해서 표시자를 이용하고, 응용 프로그램에 남아있는 사용되지 않은 가상 메모리 번지 공간의 일부를 할당해서 특정 하드웨어 장치와 연관된 레지스터와 메모리를 가상 메모리 어드레스 공간에 매핑하도록 요청한다. 이것은 응용 프로그램이 하드웨어 장치를 어드레스할 수 있는 한 세트의 가상 어드레스를 제공한다.
유사한 방식으로, 윈도우 시스템은 그래픽 가속기(하드웨어장치)를 이용하기를 원할때, 윈도우 시스템은 운영 시스템에 대하여 장치의 사용을 가능하게 하는 특정의 파일을 열도록 요청하여, 운영 시스템으로부터 장치 표시자를 수신하며, 그 가상기억공간의 일부를 그래픽 가속기 내의 레지스터 및 기억 어드레스용으로 남겨둔다. 이것은 윈도우 시스템이 그래픽 가속기를 어드레스할 수 있는 제2 가상 어드레스 세트를 제공한다.
윈도우 시스템이 응용 프로그램에 의해 그래픽 가속기로의 어떠한 직접 그래픽 액세스 없이 출력 표시장치를 롤로 제어하는데 이용될 때, 단지 윈도우 시스템 프로그램만이 윈도우 시스템에 할당된 가상 메모리 공간으로 그래픽 가속기를 매핑함으로써 그래픽 가속기로 액세스한다. 다음에 각 응용 프로그램은 할당된 특정 윈도우로 전송할 준비를 할 때까지 통상 데이타를 시스템 메모리내에 데이터를 위치시키는 윈도우 시스템으로 데이터를 제공한다. 이런 형태의 동작에서, 프로그램이 출력 표시장치의 윈도우내에서 데이타를 표시하기를 요구하는 것에는 아무런 문맥 스위칭이 요구되지 않는데 그 이유는 오직 윈도우 시스템만이 그래픽 가속기와 프레임 버퍼 메모리에 대해서 액세스를 갖고 있기 때문이다.
그러나, 응용 프로그램(통상 그래픽 프로그램)이 직접적으로 그래픽 가속기를 액세스하고 또한 윈도우에 대해서 유지 윈도우 데이타를 조작할뿐만 아니라 윈도우를 형성시켜 움직이기 위해서 윈도우 시스템을 이용하기를 원할 때 그후 응용 프로그램 및 윈도우 시스템 모두 그 장치에 대해서 액세스를 가져야만 한다; 그리고 빈번한 동기화 및 문맥 스위칭이 요구된다. 이것은 상이한 가상 어드레스를 사용하는 두개의 상이한 프로그램이 그래픽 표시장치의 레지스터에 대해서 동일한 물리적 번지로의 액세스를 갖도록 요구한다. 그것은 또한 윈도우의 크기, 위치 및 오버랩핑을 다루고 있는 윈도우 시스템이 직접 그래픽 액세스를 이용하는 응용 프로그램에 대해 적시한 방식으로 이 정보에서 변화를 통신할 수 있도록 요구할 수 있다. 이것을 달성하기 위해서, 두개의 프로그램은 서로가 간섭하지 않도록 어떤 방법으로든 통신을 해야 한다. 이것은 양쪽 프로그램이 액세스할 수 있는 메모리의 공유영역을 이용함으로써 이루어진다.
가시 윈도우에 대해서 직접 그래픽 액세스를 갖기를 희망하는 응용 프로그램이 시작되면, 프로그램은 윈도우 시스템에 대해서 직접 액세스를 갖는 윈도우를 발생시키기를 원하며 윈도우가 공유될 것이라는 것을 신호로서 알린다. 그후 윈도우 시스템은 시스템 메모리에서 공유 메모리 파일을 발생하며, 양쪽 프로그램은 열려서 그 파일을 그들의 개별 가상 메모리 어드레스 공간으로 기억해서 매핑한다. 이 공유된 메모리 파일은 그후 동기 메카니즘 및 윈도우 시스템으로부터 정보를 응용 프로그램으로 시기적절하게 통신하는 방법으로서 이용된다. 공유 메모리 파일은 잠금 페이지와 적어도 하나의 상태 페이지를 포함한다. 이 상태 페이지는 응용 프로그램과 윈도우 시스템 모두가 이해하는 공통 데이타 구조를 포함한다. 데이타 구조는 윈도우의 상태를 나타내는 다양한 플래그 및 정보를 갖는다. 예를들면, 데이타 구조는 윈도우가 그의 좌표에 의해 프레임 버퍼 메모리에서 어디에 위치하고 있고, 어떠한 프로그램이 현재 윈도우를 제어하고 있는지를 말한다. 각 프로그램은 또한 개별적으로 그래픽 가속기의 레지스터를 사용하여 달성될 수 없는 동작에 대해, 프레임 버퍼 메모리로의 액세스가 즉시 획득될 수 있도록, 제2도에 기술된 바와같이 그의 각 가상메모리 어드레스 공간으로 프레임 버퍼를 개별적으로 매핑한다.
몇몇의 윈도우 시스템을 사용함으로써 제공된 이득 중의 하나는 유지된 윈도우 형상이다. 윈도우의 유지부분은 가시윈도우의 커버된 일부분에 있는 데이타의 카피를 포함한다. 윈도우의 유지부분은 전형적으로 시스템 메모리에 기억되어 있다. 만약 가시윈도우가 제1도에 기술된 바와같이 표시장치상의 제 2윈도우에 의해 커버되었다면, 윈도우의 유지부분은 만약 커버되지 않았을 경우 윈도우에 재기억 가능하도록 커버된 부분으로 송신된 최종 데이타의 카피를 유지하는데 사용된다. 상기 방식의 기능이 기술된 종래기술의 윈도우 시스템에서는 윈도우 시스템 프로그램만이 이 유지윈도우 데이타로 액세스되었다. 따라서, 만약에 데이타가 응용 프로그램에 의해 그래픽을 직접 액세스 함으로써 가시윈도우의 커버된 부분에 제공되었다면, 그 데이타는 응용 프로그램이 윈도우의 유지부위로 액세스되지 않았기 때문에 상실될 것이다. 윈도우 시스템 프로그램은 응용 프로그램이 윈도우 갱신을 담당했기 때문에, 윈도우의 커버된 부위에서 갱신할 필요가 있다는 사실을 알지 못했다; 결과적으로, 윈도우는 커버되지 않았을 때 무효(stale) 데이타를 표시한다. 전형적으로 매우 고속의 그래픽 프로그램 만이 직접 그래픽스 액세스 형상을 이용하기 때문에, 이들 프로그램은 종종, 특정한 응용 프로그램이 프로세서의 제어를 획득 할때까지 그들이 커버되지 않았을때 마다 왜곡된 윈도우를 표시하며, 새로운 데이타를 윈도우의 현재 가시부위로 기록할 수 있다.
표시장치에 연결된 오프-스크린 데이타를 기억하는 잉여 프레임 버퍼 메모리를 이용하기 위해 개발되었던 상기 기술된 새로운 방법은 다량의 메모리를 제공하며, 여기서 윈도우의 유지부분은 매우 편리하게 위치가능하다. 예를들면, 응용 프로그램에 대해 이중 버퍼링을 제공하는 표시 시스템은 이중 버퍼링이 사용되고 있지 않은 기간동안 충분한 량의 사용되고 있지 않은 프레임 버퍼 메모리를 제공한다. 만약 이 메모리가 유지된 윈도우를 지원하고 관련 데이타를 유사하게 표시하기 위해 사용될 수 있다면, 그래픽 연산의 속도는 상당히 증가될 수 있다. 이 정보가 표시 하드웨어에 국지적으로 기억될 수 있기 때문에, 시스템 메모리의 정보를 기억하고 갱신하는데 보통 요구되는 상당한 시간이 절약된다. 그러나, 윈도우 및 표시장치의 유사 부분이 커버되지 않았을 때 무효데이타의 문제가 발생하지 않도록, 윈도우의 유지부분이 응용 프로그램에 의해 직접 액세스될 수 있다면 더욱 바람직할 것이다.
이를 달성하기 위해, 본발명은 응용 프로그램에 의해 시스템 호출을 할 필요성을 제거하는 장치의 문맥 스위칭 및 신속한 액세스 동기화의 사용을 확장하고, 제 2공유메모리 기구를 사용함으로써 윈도우의 유지부로 직접 액세스를 제공하고, 직접 액세스를 액세스 프레임 버퍼 메모리 및 유지윈도우가 기억될 수 있는 시스템 메모리로 확장하며, 그들이 서로 간섭하지 않도록 프로그램간의 동기화 및 통신을 달성하기 위해 잠금 기구의 사용을 늘린다. 발명의 방법의 단계가 제3도에 상세화되어 있다.
방법의 제 1단계는 윈도우 시스템의 동작에 대한 실제적 배경이다. 이 단계(10)에서, 윈도우 시스템 프로그램은 동작을 개시한다. 그 프로그램은 가상 메모리 공간을 수리하고, 프레임 버퍼 및 그래픽 가속기 레지스터를 오픈해서 그 공간으로 매핑한다.
응용 프로그램이, 가시윈도우에 커버된 데이타의 카피를 보유하는 유지윈도우 공간 및 가시윈도우로 직접 액세스하기를 바랄때, 그것은 그것이 공유된 윈도우를 생성하기를 원한다는 것과 (단계 20), 윈도우 시스템의 유지윈도우 설비를 이용하기를 원한다는 것 (단계 30)을 윈도우 시스템에 신호한다. 다음으로 응용 프로그램은 그것이 이 윈도우의 가시부분으로 직접 액세스하기를 요청한다 (단계 40). 이는 윈도우 시스템의 승인이 필요하다. 이 승인이 인정되었다고 가정하면, 윈도우 시스템 및 응용 프로그램 간의 상호작용 및 윈도우 시스템의 응답은 윈도우의 가시부위에 대하여 사전 토의된 방식으로 단계 50, 60 및 70에 기술된 바와같이 계속된다. 그러나, 상호작용은 윈도우의 유지부분을 포함하기 위해 본발명에 의해 확장된다.
응용 프로그램은 다음에, 유지된 윈도우 공간으로 액세스하기를 원한다는 것을 윈도우 시스템 프로그램에 신호를 보낸다 (단계 80). 만약 윈도우 시스템이 공유된 유지윈도우에 대해 직접 그래픽을 액세스하도록 요청하는 것을 인정한다면, 윈도우 시스템은 윈도우의 유지부위에 관하여 동기화 정보에 대해 추가적인 공유메모리 파일을 생성하기 위해 단계(90)으로 이동하고, 이 파일에 대한 상태 페이지로서 공유메모리 파일의 제 1 페이지를 초기화 한다. 이 윈도우 시스템은 그것이 임의의 윈도우를 생성하고, 이 식별자가, 윈도우 시스템 및 응용 프로그램에 알려진 파일 시스템에 단일한 파일명을 제공하기 위해 윈도우의 유지부위에 대한 공유메모리 파일명에 사용될 때, 윈도우 식별자를 제공한다. 윈도우 시스템은 그후 (역시, 단계 90), 이 추가적인 공유메모리 파일의 파일 크기를 윈도우의 유지부분에 모든 화소를 포함하기에 충분한 크기가 되도록 확장시키고, 이 메모리 전부를 그의 가상 메모리 어드레스 공간으로 매핑한다.
단계(90)를 달성하는데 있어서, 윈도우 시스템은 그 메모리가 유지된 윈도우 데이타에 의해 사용하기 위해 이용가능하다면, 오프-스크린 프레임 버퍼메모리를 우선적으로 할당하는 것을 자동적으로 시도한다. 만약 이것이 불가능하다면 윈도우 시스템은 시스템 메모리에 유지윈도우 데이타를 위치시킨다. 만약 윈도우의 유지부분이 시스템 메모리에 있다면, 화소는 공유메모리 파일의 화소 영역으로 카피된다. 윈도우 시스템은 윈도우 유지부분이 오프-스크린 버퍼 메모리에 있는지, 또는 공유메모리 파일의 상태 페이지의 정보에 의해 공유메모리의 화소영역에 있는지를 응용 프로그램에 나타낸다. 일단 윈도우의 유지부위가 그래픽 가속기에 의해 제어된 오프-스크린 프레임 버퍼 메모리에 위치하게 되면, 화소데이타는, 윈도우 시스템에 의해 유지윈도우 공유메모리 파일의 화소 영역으로 이동되지 않고 동일한 위치에 남는다. 만약 이것이 발생하고, 나중에 화소데이타가 다른 위치에서 오프-스크린 메모리로 되돌려진다면, 응용 프로그램은 다음으로, 윈도우 시스템에 의해 갱신되었던 공유메모리 파일상태 페이지를 액세스 할때, 새로운 위치를 인식한다.
또한 응용 프로그램은 단계 100에서 추가적인 공유메모리 파일을 그의 가상메모리 공간으로 매핑한다 (제2도 참조). 응용 프로그램이 윈도우를 생성하기 위해 윈도우 시스템을 요청할때, 윈도우 시스템은 윈도우 식별자를 응용 프로그램으로 환원시킨다. 그후 응용 프로그램은 이 윈도우를 포함하여 모든 또다른 통신에 대하여 이 윈도우 식별자를 사용한다. 응용 프로그램 및 윈도우 시스템이 이 단일 식별자에 대해서 알고 있고 이 식별자로 부터 유지된 윈도우 공유메모리 파일에 대해 파일명을 조성하는 방법을 알고 있기 때문에, 응용 프로그램은 어떤 파일이 오픈되어서, 윈도우의 유지부로의 액세스를 획득하기 위해 그의 가상 메모리 어드레스 공간으로 매핑하는지를 자동적으로 알게된다. 그것은 유사한 방법으로 윈도우의 가시부분에 대한 공유메모리를 발견한다.
지적된 바와같이, 이 제 2공유메모리 파일의 제 1페이지는 응용 프로그램 및 윈도우 시스템이 윈도우의 유지부분에 관하여 통신할 수 있는 자료구조를 포함한다. 데이타 구조는 공유정보의 상태를 나타내는 다양한 플래그를 보유한다. 예를들면, 데이타 구조는 파일이 프레임 버퍼 오프-스크린 메모리에 있는지 아니면 시스템 메모리의 공유메모리 파일의 화소영역에 있는지를 알려준다. 그것은 또한, 만약 그것이 잉여 프레임 버퍼 메모리에 있을 경우 그의 좌표에 의해 위치된 윈도우의 유지부분이 어디에 있는가 및 만약 1이상의 프레임 버퍼가 작동한다면, 그때 어떠한 프레임 버퍼가 위치하고 있는지를 말한다. 이 윈도우 위치정보는, 만약 그래픽 가속기의 레지스터를 통해 이용불가능한 연산에 대해 프레임 버퍼 메모리를 직접 액세스할 필요가 있다면, 응용 프로그램에 의해 이용가능하다.
가시상태 및 유지윈도우 공간을 조성하는 공유메모리 파일 및 화소로 직접 액세스하기 때문에, 응용 프로그램이 윈도우의 가시부위의 항목을 갱신할 때 윈도우의 유지부위에 임의의 필요한 영역을 동시에 갱신할 수 있다. 그런데, 만약 윈도우의 오버랩된 부위가 나중에 커버되지 않는다면, 새로운 커버피지 않은 부분의 데이타는 윈도우 시스템에 의해 스크린으로 카피될 때 실효가 없을 것이다.
일단, 윈도우의 유지부분 및 가시부분에 직접 그래픽 액세스를 이용하기 위해 검색하는 윈도우 시스템 및 응용 프로그램이 적절한 공유메모리 통신 영역을 설치하면, 그들의 동기와 상호 작용은 다음의 방식으로 진행된다.
윈도우 시스템 및 응용 프로그램은 윈도우의 가시부위에 대해 공유메모리 잠금 페이지로 개인적인 액세스를 인정하는 가상 메모리 시스템을 요구한다(단계 50 및 80). 양 프로그램은 다음의 규칙, 즉 공유메모리 상태 페이지에 임의의 상태정보를 변경하거나 가시부위 또는 윈도우의 유지부위의 화소영역을 액세스 이전에, 그들이 우선 공유메모리 잠금 페이지로의 액세스를 시도함으로써 이들 공유영역을 “잠금”하는 규칙을 따른다 (단계 110 또는 단계 130). 이 액세스는, 만약 유효하다면, 가상 메모리 시스템이 액세스를 만드는 프로그램을 이들 모든 메모리 영역의 일시적 소유주로서 취급하도록 한다. 어떠한 프로그램도 잠금을 보유치 않을때, 잠금 페이지로 시도된 액세스는 가상 메모리 시스템에 의해 잠금의 즉시 인정을 그 프로그램으로 제공한다. 프로세스는 임의의 상태 또는 화소를 변경할 필요성을 만들면서 진행되고, 그후 잠금 동작과 유사한 액세스를 사용하는 잠금 페이지를 해제한다. 만약, 그러나, 하나의 프로그램이 잠금 페이지를 잠기게 하고 다른 프로그램이 잠금 페이지를 액세스하기를 시도한다면, 이 프로그램은 가상 메모리 시스템 페이지 폴트(fault) 메카니즘에 의해 방해되고, 잠금 페이지가 해제될 때까지 드라이버에 의해 잠자게 된다. 윈도우 시스템은 그것이 원하는 한 잠금을 유지할 수 있는 특권을 갖고 있지만, 너무 오랫동안 잠금을 유지하는 응용 프로그램은 중간 휴식을 하고, 장치 드라이버는 그로 부터 잠금을 인터럽트해서 제거할 것이다.
윈도우 시스템이 공유메모리 상태 정보를 갱신할 필요가 있을때 마다, 대기하는 동안 임의의 새로운 잠금의 인정을 방지하면서, 그래픽 직접 액세스와 함께 모든 응용 프로그램이 그들의 잠김을 포기할 것을 기다리며, 그후 모든 침범된 윈도우를 잠근 다음 오프-스크린 메모리로 부터 공유 화소영역까지 화소를 움직이는 것을 포함하는 그의 갱신을 만들며, 그후 모든 잠금을 해제한다.
따라서, 공유메모리 상태 또는 화소정보를 액세스하기 전에 잠금을 획득하기 위해 응용 프로그램을 액세스하는 직접 그래픽스에 대한 요구이기 때문에, 응용 프로그램이 변하고 있는 상태에서 상태나 화소정보와 마주치기란 불가능하다. 응용 프로그램은 일단 잠금을 획득하면, 잠금을 해제하기 이전 윈도우에 대한 유지 화소영역 및 가시부 모드를 갱신할 수 있고 또한 그렇게 해야 한다는 것을 보증한다.
따라서, 윈도우 시스템은 모든 응용 프로그램이, 공유메모리 상태 페이지에서 상태정보를 갱신하는데 필요 할때면 어느 때든 직접 그래픽 액세스로부터 폐쇄되는 것을 보증하기 위해 잠금 페이지를 사용한다. 유사한 방법으로, 응용 프로그램이 직접 그래픽 액세스를 사용하는 그것의 윈도우의 항목을 갱신하기를 원할때, 우선, 사전에 토의된 방법을 사용하는 윈도우의 가시부위에 대해 공유 메모리 잠금 페이지를 기록한다. 그것은 일단 액세스를 획득하고 공유메모리 잠금 페이지를 잠그면, 공유메모리에서 윈도우의 유지부분 및 가시부분에 대한 모든 상태정보가 완전하고 정확하다는 사실을 추정할 수 있다. 그때 응용 프로그램은 윈도우의 가시 및 유지부의 항목의 갱신방법을 결정하는데 이 정보를 사용할 수 있고, 잠금을 포기하기 전까지 그렇게 한다. 다시 한번, 다른 프로그램의 상태가 그래픽 가속기상에 기억될때, 그래픽장치를 액세스하는 시도는 페이지 폴트를 발생하며, 장치드라이버를 문맥 스위칭을 달성하기 위해 작동시킨다.
상기 지적된 바와같이, 장치에 대한 드라이버가 운영시스템의 부분 임에도 불구하고, 그것은 장치의 문맥 교체가 액세스가 시도된 이유로 발생할때 요청되도록, 가상메모리 운영시스템으로서 자신을 기록한다 (단계 120 또는 140). 따라서, 드라이버는 문맥 교체가 장치에 필요할때 마다 응용 프로그램에 의한 시스템 호출 요구를 단락시키기 위해 사용된다. 이는 고속 그래픽 동작의 전달에 뒤떨어지지 않는 속도로 스위칭이 매우 신속히 발생하도록 허용한다.
전형적으로, 윈도우 시스템은 윈도우가 일단 설치되면 공유 유지윈도우 상태 영역과 함께 많은 일을 하는데, 필요치 않다 (스텝 110). 통상, 또는 이중 버퍼링이 윈도우의 유지부분에 의해 사용된 프레임 버퍼의 영역을 요구하고, 기억된 화소데이타가 공유메모리 파일의 화소 메모리 영역으로 이동될 필요가 있을때, 그것은 단지 윈도우 리사이즈상의 상태정보 만을 변화시킨다. 후자가 발생할때, 윈도우 시스템은 응용 프로그램을 폐쇄함으로써 윈도우의 유지부분에 대해 공유메모리 파일로의 액세스를 획득한다. 이는 직접 그래픽 액세스 특권을 갖고서 모든 응용 프로그램에 대해 모든 공유메모리 파일을 “모두 잠금”하라는 명령을 제기함으로써 달성된다. 모든 잠금 명령은 잠궈지지 않은 그들의 공유메모리 파일을 잠그고, 사용중 임의의 파일상의 중간 휴식기 동안 대기한 후, 만약 선취가 필요하게 되면, 그들 공유메모리 파일을 선취하고 잠근다. 일단 그것이 공유메모리 파일상에 잠금을 갖는다면, 윈도우 시스템은, 데이터가 이동될때, 응용 프로그램이 윈도우의 유지부에 대해 화소를 발견할 수 있게 되어 그들을 액세스할 수 있도록, 화소데이타가 공유메모리 파일의 화소영역에 있다는 사실을 나타내기 위해 데이타 구조에서 명칭을 스위치한다. 최종적으로, 윈도우 시스템은, 프레임 버퍼 액세스 메모리 공간으로 부터 데이타를 파일의 제 2페이지의 제 1바이트상에서 시작하는 공유메모리의 화소영역으로 이동한다.
응용 프로그램이, 다음으로, 유지윈도우 메모리 영역으로 기록하기 위해 공유메모리 파일로 액세스를 획득할때 (단계 130), 파일이 시스템 메모리의 공유메모리 파일의 화소메모리 영역에 있다는 사실을 나타내는 상태 페이지에서 정보를 발견한다. 만약 윈도우가 리사이즈 화된다면, 윈도우 시스템은, 공유메모리 파일의 상태 페이지에 노후된 플래그를 장착하고, 파일명이 파일 시스템으로 부터 제거되었다는 사실을 확인하기 위해 검색하고, 새로운 윈도우 크기에 대해 적절한 크기를 제외한 동일한 이름으로 파일을 재생성하고, 이 파일을 재초기화 시킨다. 다음으로, 응용 프로그램은 구 공유메모리 영역을 액세스하기 위해 시도하고, 노후된 플래그를 찾고, 구 파일을 폐쇄하는 것을 알고, 재개방을 시도하고, 신규 파일을 재매핑 시킨다.
본발명이 바람직한 실시예의 견지에서 기술되었기는 하나, 다양한 변형 및 교체가 본발명의 정신 및 범위를 벗어나지 않고 당기술의 숙련인들에 의해 형성될 수 있다는 사실을 이해할 것이다. 예를 들자면, 본발명은 단지 유지윈도우로서 전형적으로 기술된 것에 대해서 뿐만이 아니라, 윈도우 시스템에 의해 제공된 다중 버퍼링 지원을 사용하는 응용 프로그램의 경우에 다양한 오프-스크린 버퍼에 대해서도 사용가능하다. 따라서, 본발명은 뒤따르는 청구범위의 항에서 평가되어야만 한다.

Claims (9)

  1. 유지된 윈도우용으로 사용되고, 그래픽 가속기에 의해 제어되는 프레임 버퍼 메모리의 백업 기억 영역에 직접적으로 그래픽 액세스를 가능하게 하는 방법에 있어서, 유지된 윈도우 영역이 최초에 잉여 프레임 버퍼 메모리내에 존재하는 것을 나타내는 백업 기억영역용의 시스템 메모리내에 있으며, 처리할 때에 공유 메모리 영역이 사용되는 것을 나타내는 기억장치를 포함하는 공유 메모리 파일을 확립하는 단계; 그래픽 가속기로의 액세스가 시도되고 다른 처리순서의 상태가 그래픽 가속기에 기억될 때마다 페이지 폴트를 작성하는 단계; 페이지 폴트에 응답하여 그래픽 가속기에 저장된 문맥을 액세스를 시도하는 처리의 문맥으로 스위칭하기 위해 장치 드라이버를 호출하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 유지된 윈도우용으로 사용되고, 그래픽 가속기에 의해 제어되는 프레임 버퍼 메모리의 백업 기억 영역에 직접적으로 그래픽 액세스를 가능하게 하는 방법에 있어서, 유지된 부분을 포함하는 윈도우에 제1공유 메모리 파일을 시스템 기억장치내에 확립하는 단계; 다른 프로그램이 윈도우를 사용할 때 프로그램이 윈도우를 사용하는 것을 저지하는 수단을 제1공유부분에 제공하는 단계; 시스템 메모리내에 있으며, 다른 프로그램이 윈도우를 사용중일 때 프로그램이 윈도우를 사용하는 것을 저지하는 제1공유부분에 있는 수단에 응답하는 제2공유 메모리 파일을 윈도우의 유지부분에 제공하는 단계; 유지된 윈도우 영역이 최초에 잉여 프레임 버퍼 메모리내에 존재하는 것을 나타내는 수단을, 프로세스에 의해 공유영역을 사용하도록 기억하는 제2공유 메모리 파일에 제공하는 단계; 그래픽 가속기로의 액세스가 시도되고 또 다른 처리순서의 상태가 그래픽 가속기에 기억될 때마다 페이지 폴트를 작성하는 단계; 일단 그래픽 가속기가 자유롭게 되면, 그래픽 가속기에 기억된 문맥을 액세스를 시도하는 프로세스의 문맥으로 스위칭하기 위해 페이지 폴트에 응답하여 장치 드라이버를 호출하는 단계;를 포함하는 것을 특징으로 하는 방법.
  3. 유지된 윈도우용으로 사용되고, 그래픽 가속기에 의해 제어되는 프레임 버퍼 메모리의 백업 기억 영역에 직접적으로 그래픽 액세스를 가능하게 하는 시스템에 있어서, 유지된 부분을 가질 수 있는 윈도우의 가시가능 부분용의 제 1 공유 메모리 파일을 시스템 메모리내에 확립하는 수단; 다른 프로그램이 윈도우를 사용중에 있을 때 프로그램이 윈도우를 사용하지 못하도록 저지하기 위한 제 1 공유메모리 파일내의 수단; 다른 프로그램이 윈도우를 사용중일 때 프로그램이 윈도우를 사용하지 못하도록 제 1 공유부분의 수단에 응답하는 제 2 공유 메모리 파일을 윈도우의 유지부분용 시스템 메모리에 확립하는 수단; 유지윈도우 영역이 잉여 프레임 버퍼 메모리에 존재하는지 또는 시스템 메모리에 존재하는지를 나타내기 위한 제 2공유메모리 파일내의 수단; 그래픽 가속기로의 액세스를 갖는 각 프로그램의 가상 어드레스 공간으로 각 공유메모리를 매핑하기 위한 수단; 그래픽 가속기로의 액세스가 시도되고, 다른 처리의 상태가 그래픽 가속기상에 기록될 때 마다 페이지 폴트를 발생시키는 수단; 일단 그래픽 가속기가 자유롭게 되면, 그래픽 가속기에 기억된 문맥을 액세스를 시도하는 프로세스의 문맥으로 스위칭하기 위해 다른 처리순서의 상태가 그래픽 가속기에 기억될때 발생된 페이지 폴트에 응답하는 수단; 을 포함하는 것을 특징으로 하는 시스템.
  4. 제3항에 있어서, 그래픽 가속기로의 액세스가 시도되고, 다른 프로세스의 상태가 그래픽 가속기상에 기억될때 마다 페이지 폴트를 발생하는 수단이 제 1 및 제 2공유메모리 파일을 잠그기 위한 수단을 포함하는 것을 특징으로 하는 시스템.
  5. 제3항에 있어서, 일단 그래픽 가속기가 자유롭게 되면, 그래픽 가속기에 기억된 문맥을 액세스를 시도하는 프로세스의 문맥으로 스위칭하기 위해 다른 처리순서의 상태가 그래픽 가속기에 기억될때 발생된 페이지 폴트에 응답하는 수단이 문맥을 스위칭하기 위해 그래픽 가속기용 장치 드라이버를 호출하기 위한 수단을 포함하는 것을 특징으로 하는 시스템.
  6. 제3항에 있어서, 유지된 부분을 가질 수 있는 윈도우의 가시가능 부분의 시스템 메모리내에 있는 제 1공유메모리 파일이 윈도우의 가시가능 부분을 기술하기 위한 수단을 포함하고, 윈도우의 유지된 부분용의 시스템에 메모리내에 있는 제 2공유메모리 파일이 윈도우의 유지된 부분을 기술하기 위한 수단을 포함하는 것을 특징으로 하는 시스템.
  7. 제3항에 있어서, 윈도우의 유지부분에 대해 시스템 메모리의 제 2공유메모리 파일을 확립하는 수단이 윈도우의 유지된 부분의 화소를 기억하기 위한 수단을 포함하는 것을 특징으로 하는 시스템.
  8. 제3항에 있어서, 일단 그래픽 가속기가 자유롭게 되면, 그래픽 가속기에 기억된 문맥을 액세스를 시도하는 프로세스의 문맥으로 스위칭하기 위해 다른 처리순서의 상태가 그래픽 가속기에 기억될때 발생된 페이지 폴트에 응답하는 수단이, 문맥을 스위칭하기 위해 그래픽 가속기용 장치 드라이버를 호출하는 수단을 포함하는 것을 특징으로 하는 시스템.
  9. 제3항에 있어서, 그래픽 가속기로의 액세스를 갖는 각 프로그램의 가상 어드레스 공간으로 각 공유메모리 파일을 매핑하기 위한 수단이 메모리 관리장치를 포함하는 것을 특징으로 하는 시스템.
KR1019920011990A 1991-07-05 1992-07-06 공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치 KR100278327B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/726,304 US5245702A (en) 1991-07-05 1991-07-05 Method and apparatus for providing shared off-screen memory
US726304 1991-07-05

Publications (2)

Publication Number Publication Date
KR930002950A KR930002950A (ko) 1993-02-23
KR100278327B1 true KR100278327B1 (ko) 2001-02-01

Family

ID=24918050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920011990A KR100278327B1 (ko) 1991-07-05 1992-07-06 공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US5245702A (ko)
EP (1) EP0521684B1 (ko)
JP (1) JP3645276B2 (ko)
KR (1) KR100278327B1 (ko)
DE (1) DE69211231T2 (ko)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353343A (en) * 1992-04-30 1994-10-04 Rockwell International Corporation Telephonic switching system with a user controlled data memory access system and method
US5652913A (en) * 1992-10-13 1997-07-29 Microsoft Corporation System for providing intercommunication of I/O access factors stored in a shared data structure, accessed and maintained by both file system and device driver
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
JP2561801B2 (ja) * 1993-02-24 1996-12-11 インターナショナル・ビジネス・マシーンズ・コーポレイション プロセス・スケジューリングの管理方法およびシステム
US5559954A (en) * 1993-02-24 1996-09-24 Intel Corporation Method & apparatus for displaying pixels from a multi-format frame buffer
US5546103A (en) * 1993-08-06 1996-08-13 Intel Corporation Method and apparatus for displaying an image in a windowed environment
US5572232A (en) * 1993-08-06 1996-11-05 Intel Corporation Method and apparatus for displaying an image using subsystem interrogation
US5552803A (en) * 1993-08-06 1996-09-03 Intel Corporation Method and apparatus for displaying an image using system profiling
US5652601A (en) * 1993-08-06 1997-07-29 Intel Corporation Method and apparatus for displaying a color converted image
US5751270A (en) * 1993-08-06 1998-05-12 Intel Corporation Method and apparatus for displaying an image using direct memory access
AU6018294A (en) * 1993-12-02 1995-06-19 Taligent, Inc. Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system
US5664139A (en) * 1994-05-16 1997-09-02 Compaq Computer Corporation Method and a computer system for allocating and mapping frame buffers into expanded memory
US5577188A (en) * 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US5613125A (en) * 1994-06-17 1997-03-18 Motorola, Inc. Method and system for selectively defining hardware parameters in an executable operating system program
US5598525A (en) 1995-01-23 1997-01-28 Cirrus Logic, Inc. Apparatus, systems and methods for controlling graphics and video data in multimedia data processing and display systems
US5784047A (en) * 1995-04-28 1998-07-21 Intel Corporation Method and apparatus for a display scaler
US5751979A (en) * 1995-05-31 1998-05-12 Unisys Corporation Video hardware for protected, multiprocessing systems
US5757386A (en) * 1995-08-11 1998-05-26 International Business Machines Corporation Method and apparatus for virtualizing off-screen memory of a graphics engine
US6412031B1 (en) * 1998-02-10 2002-06-25 Gateway, Inc. Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US6185582B1 (en) 1998-06-17 2001-02-06 Xerox Corporation Spreadsheet view enhancement system
US6230170B1 (en) 1998-06-17 2001-05-08 Xerox Corporation Spatial morphing of text to accommodate annotations
US6584479B2 (en) 1998-06-17 2003-06-24 Xerox Corporation Overlay presentation of textual and graphical annotations
US6256649B1 (en) 1998-06-17 2001-07-03 Xerox Corporation Animated spreadsheet for dynamic display of constraint graphs
US6510470B1 (en) * 1998-12-18 2003-01-21 International Business Machines Corporation Mechanism allowing asynchronous access to graphics adapter frame buffer physical memory linear aperture in a multi-tasking environment
US6295068B1 (en) 1999-04-06 2001-09-25 Neomagic Corp. Advanced graphics port (AGP) display driver with restricted execute mode for transparently transferring textures to a local texture cache
JP2001016593A (ja) * 1999-06-25 2001-01-19 Mitsubishi Electric Corp 画像復号表示装置
JP2004135300A (ja) * 2002-09-20 2004-04-30 Ricoh Co Ltd 画像形成装置,共有データ管理方法および共有データ管理システム
US7313764B1 (en) * 2003-03-06 2007-12-25 Apple Inc. Method and apparatus to accelerate scrolling for buffered windows
US7318133B2 (en) * 2003-06-03 2008-01-08 Hitachi, Ltd. Method and apparatus for replicating volumes
US20050088449A1 (en) * 2003-10-23 2005-04-28 Blanco Leonardo E. Child window redirection
US20050140692A1 (en) * 2003-12-30 2005-06-30 Microsoft Corporation Interoperability between immediate-mode and compositional mode windows
US7921373B2 (en) * 2004-04-05 2011-04-05 Panasonic Corporation Display screen management apparatus
US7412662B2 (en) * 2004-04-12 2008-08-12 Microsoft Corporation Method and system for redirection of transformed windows
US20060017738A1 (en) * 2004-07-23 2006-01-26 Juraj Bystricky System and method for detecting memory writes to initiate image data transfers
FR2881239B1 (fr) * 2005-01-24 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
US8788787B2 (en) * 2005-03-02 2014-07-22 The Boeing Company Systems, methods and architecture for facilitating software access to acceleration technology
US7616218B1 (en) * 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US9405564B2 (en) * 2006-05-10 2016-08-02 The Mathworks, Inc. System and method for targeting commands to concurrent computing units executing a concurrent computing process
US7631168B1 (en) 2006-05-10 2009-12-08 The Math Works, Inc. Graphical interface for grouping concurrent computing units executing a concurrent computing process
US8601223B1 (en) 2006-09-19 2013-12-03 Nvidia Corporation Techniques for servicing fetch requests utilizing coalesing page table entries
US8543792B1 (en) 2006-09-19 2013-09-24 Nvidia Corporation Memory access techniques including coalesing page table entries
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
US8347064B1 (en) 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
KR20080031595A (ko) * 2006-10-04 2008-04-10 삼성전자주식회사 오프스크린 버퍼링 관리 장치 및 방법
US8707011B1 (en) 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US8700883B1 (en) 2006-10-24 2014-04-15 Nvidia Corporation Memory access techniques providing for override of a page table
US8706975B1 (en) 2006-11-01 2014-04-22 Nvidia Corporation Memory access management block bind system and method
US8607008B1 (en) 2006-11-01 2013-12-10 Nvidia Corporation System and method for independent invalidation on a per engine basis
US8504794B1 (en) 2006-11-01 2013-08-06 Nvidia Corporation Override system and method for memory access management
US8533425B1 (en) 2006-11-01 2013-09-10 Nvidia Corporation Age based miss replay system and method
US8347065B1 (en) * 2006-11-01 2013-01-01 Glasco David B System and method for concurrently managing memory access requests
US8700865B1 (en) 2006-11-02 2014-04-15 Nvidia Corporation Compressed data access system and method
US20080244155A1 (en) * 2007-03-30 2008-10-02 Kyungwoo Lee Methods and apparatus to protect dynamic memory regions allocated to programming agents
US20090319933A1 (en) * 2008-06-21 2009-12-24 Microsoft Corporation Transacted double buffering for graphical user interface rendering
US20090328080A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Window Redirection Using Interception of Drawing APIS
US8384738B2 (en) * 2008-09-02 2013-02-26 Hewlett-Packard Development Company, L.P. Compositing windowing system
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4047243A (en) * 1975-05-27 1977-09-06 Burroughs Corporation Segment replacement mechanism for varying program window sizes in a data processing system having virtual memory
US4903218A (en) * 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
JPH01181163A (ja) * 1988-01-13 1989-07-19 Seiko Instr & Electron Ltd 図形表示システム
US5043923A (en) * 1988-10-07 1991-08-27 Sun Microsystems, Inc. Apparatus for rapidly switching between frames to be presented on a computer output display
US5016161A (en) * 1989-04-12 1991-05-14 Sun Microsystems, Inc. Method and apparatus for the flow control of devices
US5127098A (en) * 1989-04-12 1992-06-30 Sun Microsystems, Inc. Method and apparatus for the context switching of devices
US5159665A (en) * 1989-11-27 1992-10-27 Sun Microsystems, Inc. Graphics accelerator system

Also Published As

Publication number Publication date
EP0521684B1 (en) 1996-06-05
EP0521684A2 (en) 1993-01-07
DE69211231T2 (de) 1996-10-10
KR930002950A (ko) 1993-02-23
JP3645276B2 (ja) 2005-05-11
JPH05216614A (ja) 1993-08-27
US5245702A (en) 1993-09-14
EP0521684A3 (en) 1993-04-28
DE69211231D1 (de) 1996-07-11

Similar Documents

Publication Publication Date Title
KR100278327B1 (ko) 공유 오프-스크린 메모리를 제공하기 위한 방법 및 장치
US5555368A (en) Object-oriented multi-tasking view framework
US5127098A (en) Method and apparatus for the context switching of devices
US5465362A (en) Object-oriented view-system for displaying information in a windowing environment
KR100733852B1 (ko) 계산기 시스템
US4742450A (en) Method to share copy on write segment for mapped files
US5465363A (en) Wrapper system for enabling a non-multitasking application to access shared resources in a multitasking environment
US6629175B1 (en) Efficient adapter context switching
US5515493A (en) Window restoration methods for halted debugee window applications
US20050012753A1 (en) Systems and methods for compositing graphics overlays without altering the primary display image and presenting them to the display on-demand
KR960003416B1 (ko) 스크린 디스플레이를 제어하는 윈도우 시스템을 갖는 컴퓨터에서 프레임 버퍼에 직접 기입하기 위한 방법 및 장치
KR100988395B1 (ko) 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
US5367628A (en) Multi-window system and display method for controlling execution of an application for a window system and an application for a non-window system
US5179690A (en) System for display emulation by intercepting and changing control data stored in one of multiple temporary registers to suitable display control data
JPS6263333A (ja) 画面情報制御方式
KR101130361B1 (ko) 코프로세서 내의 연산을 스트림라인하는 방법
JPS6255693A (ja) グラフイツクデイスプレイ装置
JPH02238490A (ja) 画像処理装置
JPH08123651A (ja) マルチウィンドウディスプレイ装置
JPH0612054A (ja) グラフィックディスプレイ装置の画面表示制御方法
JPH04114238A (ja) 情報処理装置
Rosenthal et al. System aspects of low-cost bitmapped displays
JPH05189181A (ja) 表示方式
JPH06309183A (ja) グラフィックス資源共用アクセス方法および装置
JPH02187840A (ja) キャッシュメモリ制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee