KR101065114B1 - 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스 - Google Patents

프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스 Download PDF

Info

Publication number
KR101065114B1
KR101065114B1 KR1020040045523A KR20040045523A KR101065114B1 KR 101065114 B1 KR101065114 B1 KR 101065114B1 KR 1020040045523 A KR1020040045523 A KR 1020040045523A KR 20040045523 A KR20040045523 A KR 20040045523A KR 101065114 B1 KR101065114 B1 KR 101065114B1
Authority
KR
South Korea
Prior art keywords
application
array
instructions
data structure
memory associated
Prior art date
Application number
KR1020040045523A
Other languages
English (en)
Other versions
KR20040111165A (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 KR20040111165A publication Critical patent/KR20040111165A/ko
Application granted granted Critical
Publication of KR101065114B1 publication Critical patent/KR101065114B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Abstract

몇몇 실시예에서, 기억 매체는 하나 이상의 오퍼레이션을 실행하고 장치를 직접적으로 관리하는 애플리케이션 소프트웨어를 포함한다. 애플리케이션 소프트웨어는 장치를 관리하는 애플리케이션 소프트웨어에 의해 사용가능한 애플리케이션 데이터 구조(예를 들어, 대상 또는 어레이)를 초기화하는 명령을 포함하고 또한 장치 드라이버를 사용하지 않고 애플리케이션 데이터 구조를 장치와 관련된 메모리에 매핑하는 명령을 포함한다. 다른 실시예에서, 방법은 하드웨어 장치를 관리하는 애플리케이션 데이터 구조를 초기화하는 단계 및 장치 드라이버를 사용하지 않고 애플리케이션 데이터 구조를 하드웨어 장치와 관련된 메모리에 매핑하는 단계를 포함한다. 애플리케이션 데이터 구조는 싱글 디멘전 데이터 구조 또는 멀티 디멘전 데이터 구조를 저장할 수 있다. 몇몇 실시예에서, 애플리케이션 소프트웨어에 의해 관리되는 장치는 디스플레이를 포함할 수 있고 애플리케이션 소프트웨어는 자바 코드를 포함할 수 있다.
애플리케이션 소프트웨어, 초기화, 매핑, 디스플레이, 자바 코드

Description

프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스{ACCESSING DEVICE DRIVER MEMORY IN PROGRAMMING LANGUAGE REPRESENTATION}
본 발명의 바람직한 실시예의 보다 상세한 설명을 위하여, 이하에 첨부된 도면을 참조할 것이다.
도 1은 프로세서가 하드웨어 장치와 관련된 메모리를 직접 관리하도록 하는 압축기를 포함하는 본 발명의 바람직한 실시예에 따른 시스템도.
도 2는 도 1의 시스템의 추가 도면.
도 3은 애플리케이션이 하드웨어 장치의 메모리를 관리하도록 하는 압축기의 오퍼레이션을 나타내는 도면.
도 4a 및 도 4b는 상기 시스템의 제약을 나타내는 다양한 실시예를 나타내는 도면.
도 5는 애플리케이션 소프트웨어가 메타데이터를 포함하는 대상에서 동작하는 경우에 시스템의 사용을 나타내는 도면.
도 6은 비연속 데이터 구조에서 동작하는 시스템의 오퍼레이션을 나타내는 도면.
도 7 및 도 8은 멀티 디멘전 데이터 구조에서 동작하는 시스템의 다양한 실시예를 나타내는 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
100 : 시스템
102 : JSM
104 : MPU
106 : 메모리
108 : JVM
110 : 컴파일러
112 : 바이트코드
114 : 디스플레이
154 : 압축기
본 발명은 전반적으로 고레벨 프로그래밍 언어를 통해 장치 드라이버 메모리를 액세스하는 것에 관한 것이다.
많은 형태의 장치가 장치의 오퍼레이션을 위한 장치 드라이버를 요구한다. 이러한 장치는 디스플레이와 키보드를 포함한다. 장치 드라이버는 고레벨 프로그래밍 언어와 장치 사이의 프로그래밍 인터페이스를 제공하는 실행가능 소프트웨어이다. 장치 드라이버는 전형적으로 데이터를 제공하거나 제어하는 장치로부터 데이터를 수신하는데 사용하기 위해 메모리의 일부가 할달될 것을 요구하고 있다.
적어도 몇몇 고레벨 언어(예를 들어, 자바(Java))에 대하여, 이러한 언어는 전형적으로 C와 같이 "모(native)" 언어로 기술될 수 있는 장치 드라이버에 "호출(call)"을 요구한다. 고레벨 애플리케이션은 일반적으로 장치 드라이버 메모리에서 대응하는 데이터 구조에 데이터를 제공하고, 또는 상기 데이터 구조로부터 데이터를 수신하는 데이터 구조를 사용한다. 2개의 데이터 구조가 직접 호환가능하지 않을 수 있고, 따라서 이들 사이의 매핑이 요구된다. 장치 드라이버 메모리에서 고레벨 언어로부터 데이터 구조로의 데이터 구조의 매핑은 계산 집약적일 수 있다. 또한, 고레벨 애플리케이션과 장치 드라이버 사이의 컨텍스트 변화를 허용하는 호출이 바람직하지 못하게 지연을 야기할 수 있다.
몇몇 실시예에서, 저장 매체는 하나 이상의 오퍼레이션을 실행하고 장치를 직접적으로 관리하는 애플리케이션 소프트웨어를 포함한다. 애플리케이션 소프트웨어는 장치를 관리하는 애플리케이션 소프트웨어에 의해 사용가능한 애플리케이션 데이터 구조(예를 들어, 대상 또는 어레이)를 초기화하는 명령을 포함하고 또한 장치 드라이버를 사용하지 않고 애플리케이션 데이터 구조를 장치와 관련된 메모리에 매핑하는 명령을 포함한다. 다른 실시예에서, 방법은 하드웨어 장치를 관리하는 애플리케이션 데이터 구조를 초기화하는 단계 및 장치 드라이버를 사용하지 않고 애플리케이션 데이터 구조를 하드웨어 장치와 관련된 메모리에 매핑하는 단계를 포함한다. 애플리케이션 데이터 구조는 싱글 디멘전 데이터 구조 또는 멀티 디멘전 데이터 구조를 저장할 수 있다. 몇몇 실시예에서, 애플리케이션 소프트웨어에 의해 관리되는 장치는 디스플레이를 포함할 수 있고 애플리케이션 소프트웨어는 자바 코드를 포함할 수 있다.
특정 시스템 컴포넌트를 지칭하기 위하여 이하의 설명 및 청구범위를 통하여 특정 용어를 이용한다. 본 기술분야의 숙련된 자라면 이해할 수 있는 바와 같이, 다양한 회사가 다른 명칭으로 한 컴포넌트를 지칭할 수 있다. 본 명세서에서는 기능은 같지만 명칭은 상이한 컴포넌트 사이를 구별하고자 하는 것은 아니다. 다음의 설명 및 청구범위에서, "포함하는(including)"과 "포함하는(comprising)"의 용어는 제한이 없는 형식으로 사용되고, 따라서 "포함하는, 그러나 제한하는 것은 아닌"의 의미로 해석되어야 한다. 또한, "연결(couple)" 또는 "연결(couples)"의 용어는 간접 또는 직접 접속을 의미하는 것이다. 따라서, 제1 장치가 제2 장치에 연결된다면, 접속은 직접 접속을 통한, 또는 다른 장치를 통한 간접 접속을 통한 것일 수 있다.
<실시예>
이하의 설명은 본 발명의 다양한 실시예를 나타낸다. 하나 이상의 이들 실시예가 선호될 수 있지만, 개시된 실시예는 청구범위를 포함하는 개시의 범위를 제한하거나 그렇지 않으면 특정하는 것으로서 해석되거나 사용되지 않아야 한다. 또한, 본 기술분야의 숙련된자라면 이하의 설명이 폭넓은 응용을 가지며, 임의의 실시예의 설명은 그 실시예의 예시임을 의미하는 것이며, 청구범위를 포함하는 개시의 범위가 그 실시예에 한정시키고자 하는 것은 아니다.
여기서 개시된 주제는 전반적으로 장치 드라이버의 사용 없이 애플리케이션 소프트웨어를 통해 장치를 직접적으로 관리하는 소프트웨어 솔루션을 나타낸다. 단지 예로서, 여기에 설명된 실시예는 여기서 설명된 원리가 자바 언어 및 디스플레이 장치를 제외한 응용성을 갖고 있지만 디스플레이 장치를 관리하는 자바(Java) 애플리케이션을 나타내고 있다.
이하에 도 1을 참조하여, 시스템(100)은 본 발명의 바람직한 실시예에 따라 나타내어진다. 도시된 바와 같이, 본 시스템은 적어도 2개의 프로세서(102 및 104)를 포함한다. 프로세서(102)는 Java Stack Machine("JSM")으로서 본 개시의 목적으로 지칭되고 프로세서(104)는 Main Processor Unit("MPU")으로서 지칭될 수 있다. 시스템(100)은 또한 JSM(102) 및 MPU(104) 양자에 연결되고 따라서 두 프로세서에 의해 액세스가능한 메모리(106)를 포함할 수 있다. "압축기"(540)는 JSM(102)과 메모리(106)에 연결된다. 압축기와 관련 소프트웨어의 사용은 이하에서 보다 상세하게 설명될 것이다.
도 1을 참조하여, 시스템(100)은 또한 Java Virtual Machine("JVM")(108), 컴파일러(110), 및 디스플레이(114)를 포함한다. JSM(102)은 바람직하게 사용자가 본 시스템(100)의 다양한 양태를 제어하도록 하는 키패드와 같은 하나 이상의 입출력("I/O") 장치로의 인터페이스를 포함한다. 부가적으로, 데이터 스트림은 JSM(102)에 의해 처리되기 위하여 I/O 공간으로부터 JSM(102)으로 수신될 수 있다. 다른 컴포넌트(특별히 도시하지 않음)는 무선 통신을 다른 장치와 하도록 하는 아날로그 트랜시버 및 배터리를 포함할 수 있지만, 이에 국한되는 것은 아니다. 시 스템(100)은 광범위한 각종 전자 시스템를 대표하거나 또는 광범위한 각종 전자 시스템에 적합시켜질 수 있고 예시적인 전자 시스템은 배터리-동작 이동 셀 전화를 포함할 수 있다.
본 시스템(100)에서 실행되는 자바 코드는 복수의 "바이트코드(Bytecodes)" (112)를 포함한다. 바이트 코드(112)가 컴파일러(110)에 의해 컴파일되는 JVM(108)에 제공되고 거기에서 실행을 위하여 JSM(102) 및/또는 MPU(104)에 제공된다. JVM(108)은 일반적으로 소프트웨어 및 하드웨어의 조합을 포함한다. 소프트웨어는 컴파일러(110)를 포함할 수 있고 하드웨어는 JSM(102)을 포함할 수 있다. JVM은 클래스 로더, 바이트코드 검증기, 가비지 수집기, 및 JSM 프로세서(102)에서 실행되지 않는 바이트코드를 해석하는 바이트코드 인터프리터를 포함할 수 있다.
도 2는 디스플레이(114)의 관리에 관한 다양한 컴포넌트를 도시한다. 도시된 바와 같이, 애프리케이션 소프트웨어(150)(예를 들어, 자바 애플리케이션)는 애플리케이션 데이터 구조(152)를 포함한다. 애플리케이션 데이터 구조(152)는 어레이 또는 대상과 같은 임의의 적합한 형태의 구조를 포함할 수 있다. 데이터 구조(152)는 어레이로서 이하에 설명되지만, 보다 폭넓게 다른 형태의 구조일 수 있다. 애플리케이션 어레이(152)는 리포맷 로직(154)에 링크되고, 이는 차례로 디스플레이 메모리(156)에 링크된다. 디스플레이 메모리(156)는 디스플레이(114)에 의한 사용을 위해 할당된 메모리(106)의 일부를 포함할 수 있다. 보다 구체적으로는, 디스플레이(114) 상에 나타내어질 정보가 디스플레이 메모리(156)에 저장된다. 디스플레이 인터페이스(160)가 디스플레이 메모리(156)로부터 디스플레이 데이터를 추출하고 적합한 전기적 인터페이스를 제공하여 요구되는 정보를 디스플레이(114) 상에 올바르게 나타내도록 한다.
상술한 바와 같이, 소프트웨어 애플리케이션(150)은 애플리케이션 어레이(152)를 포함한다. 일반적으로, 자바 애플리케이션은 하나 이상의 어레이를 포함할 수 있지만, 본 발명의 바람직한 실시예를 설명하는 목적으로, 소프트웨어 애플리케이션(150)은 디스플레이(114)를 관리하는데 이용할 수 있는 적어도 하나의 애플리케이션 어레이(152)을 포함한다.
애플리케이션 어레이(152)는 바람직하게 자바 어레이이고 따라서 자바 프로그래밍 언어의 사용가능한 요구사항에 적합하다. 예를 들어, 어레이(152)는 n 비트(또는 바이트) 어드레스가능 데이터 구조일 수 있다. 자바에서, n은 전형적으로 어레이(152)가 32 비트(4 바이트) 증분의 단위에서 어드레스되는 것을 의미하는 32 비트이다. 그러나, 디스플레이 메모리(156)는 자바 어레이(152)와 상이하게 포맷될 수 있다. 예를 들어, 애플리케이션 어레이(152)는 n 비트 어드레스가능 데이터 구조이지만, 디스플레이 메모리(156)는 n과 상이한 m 비트 어드레스가능 데이터 구조를 포함할 수 있다. 몇몇 실시예에서, m은 디스플레이 컬러 정의에 적합한 임의의 비트수일 수 있지만, 예를 들어, m이 8일 수 있고, 반면에 n은 32 비트일 수 있다.
본 발명의 바람직한 실시예에 따라, 자바 애플리케이션(150)은 애플리케이션 어레이(150)를 통해 디스플레이 메모리(156)에 액세스한다. 자바 애플리케이션(150)은 택스트 및/또는 그래픽 데이터("디스플레이 데이터")가 이러 한 디스플레이 데이터를 애플리케이션 어레이(152)에 기록함으로써 디스플레이(114)에 도시되도록 할 수 있다. 상술한 바와 같이, 애플리케이션 어레이(152)는 n 비트 어드레스가능하고 디스플레이 메모리는 m 비트 어드레스가능하고, 여기서 n은 m과 상이할(예를 들어 더 클) 수 있다. 따라서, 애플리케이션 어레이는 디스플레이 메모리와 상이하게 포맷된다. n이 m과 다르기 때문에, 애플리케이션 어레이(152)로부터의 디스플레이 데이터는 리포맷되는 일없이 디스플레이 메모리(156)로 직접 복사될 수 없다. 애플리케이션 어레이(152) 내의 데이터가 애플리케이션 소프트웨어에 의해 액세스(판독 또는 기록)될 때, 데이터는 데이터 기록시 디스플레이 메모리(156)와 호환성이 있는 포맷으로 그리고 판독시 디스플레이 메모리 포맷에서 애플리케이션 어레이와 호환성이 있는 포맷으로 자동적으로 리포맷된다. 디스플레이 메모리의 m 디멘전은 n/m 비에 따라서 메모리 액세스 세분성(granularity)과 일치시킬 수도 있고 일치시키지 않을 수도 있어서, 압축된 물리적 영역으로의 액세스가 메모리 액세스 세분성에 일치하지 않을 때 디스플레이 메모리 내의 기록이 리포맷 로직(154)에 의해 판독-수정-기록에 의해 교체되도록 한다. 디스플레이 데이터를 애플리케이션 어레이(152)로부터 리포맷하는 프로세스는 더넓은 n 비트폭 데이터값을 더좁은 m 비트폭 데이터값으로 감소시키는 것을 포함하기 때문에, 리포맷 로직(154)은 "압축기"로 지칭되지만, 이 개시 및 청구범위는 는 데이터 그자체를 압축하는데 한정되지 않는다.
도 3은 압축기(154)의 기능성을 나타낸다. 애플리케이션 어레이(152)와 관련된 가상 어드레스 공간(160)은 기록될 애플리케이션(150)로부터 디스플레이 메모 리(156)에 저장되는 압축된 실제 물리적 어드레스 공간(166)까지의 디스플레이 데이터를 포함한다. 도 3의 예에서, 가상 메모리 공간(160)은 0xA000의 개시 어드레스를 갖고 어드레스 0xC000에서 개시하는 물리적 어드레스 공간(162) 상에 매핑되는 것으로서 도시된다. 바람직한 실시예에서, 타겟 실제 메모리가 압축된 메모리 공간(166)에 있기 때문에 몇몇 또는 모든 물리적 어드레스 공간(162)은 존재하지 않는다.
압축을 가능하게 하기 위하여, 압축기(154)는 바람직하게 가상 어드레스 공간(160)에서 고레벨 표현(32 비트 기초 메모리 블록)을 압축된 어드레스 공간(166)에서 저레벨 표현(8 비트 기초 메모리 블록) 상에 매핑한다. 가상 어드레스 공간(160)의 데이터 콘텐트는 바람직하게 저레벨 표현 최대값을 초과하지 않는다. 예를 들어, 압축된 어드레스 공간(166)이 8 비트 폭이면, 애플리케이션 어레이(152)와 관련된 가상 어드레스 공간(160)은 8 비트 청크(chunks)에서 의미있는 데이터를 저장한다. 도 3에 도시된 바와 같이, 의미있는 데이터 청크는 어드레스 0ㅌA003, 0xA007, 0xA00B 등에 나타내어지고, 어드레스 공간의 나머지 부분(예를 들어, 0xA000-0xA003, 0xA004-0xA006 등)은 사전결정된 값 0으로 설정된다.
상술한 바와 같이, 본 발명의 바람직한 실시예는 메모리가 매핑되는 장치의 메모리의 자바 표현으로서 사용될 자바 애플리케이션 어레이(152)의 사용을 포함한다. 예시적인 자바 방식은 애플리케이션 어레이(152)가 "VGA"(Video Graphics Adapter")라고 라벨링된 어레이인 이하와 같이 나타내어진다.
Class DisplayBitmap
{
public int VGA [320x200];
DisplayBit ()
{
//mapping the array on the device driver
mapArrayOn(VGA, 0xC000)
}
void driverSetPixel(int X, int Y, int value)
{
VGA{X+Y*320}=value;
}
}
상술된 방법에서, 자바 어레이 VGA는 어드레스 0xC000에서 디스플레이 메모리 상에 매핑된다. 매핑을 완전히 실행하기 위하여, 어드레스 상의 어레이 기초의 매핑을 실행하는 애플리케이션 프로그래밍 인터페이스("API")가 구현된다. 방법 "mapArrayOn"은 대상 DisplayBitmap의 "구성자(constructor)"로 불린다. 자바 코드는 디스플레이 메모리에서 명령 VGA[X+Y*320]을 사용하여 위치 X, Y 에서 픽셀의 값을 기록할 수 있다.
도 4a 및 도 4b는 압축기(154)의 사용이 적용가능할 수 있는 각종 제약을 나타낸다. 도 4a에서, MPU(104)(도 1) 상에서 운영되는 오퍼레이팅 시스템이 플랫( 또는 선형) 어드레싱 모드 또는 세그멘테이션 모드를 사용하면, 애플리케이션 어레이(152)와 관련된 가상 메모리 공간(160)은 바람직하게 연속 가상 메모리 범위를 포함한다. 연속 가상 메모리 범위(160)는 물리적 메모리(162) 상에 매핑되는 것으로 보여지지만, 실제 연속 가상 메모리 범위(160)는 압축된 물리적 메모리(166) 상에 압축된다.
도 4B에서, 오퍼레이팅 시스템이 페이지 모드 어드레싱을 사용하면, 가상 메모리 공간(160)이 복수의 개별 가상 페이지(VP 0, VP 1, …, VP N-1)으로 분할된다. 압축기(154)의 오퍼레이션에 따라서, 페이지 모드 어드레싱에 대한 가상 메모리 공간(160)은 나타내어진 바와 같이 연속 가상 메모리 범위를 포함한다. 가상 공간 페이지의 물리적 매핑은 페이지를 물리적 메모리 공간(162) 상에 페이지를 매핑하는 것으로서 보여지고, 여기서 물리적 페이지 PP 0 내지 PP N-1은 연속이다. 사실상, 페이지는 압축된 물리적 메모리(166)(디스플레이 메모리) 상에 압축된다. 일반적으로, 압축된 물리적 메모리 공간(166)의 개시 어드레스 상에 제약이 있지 않다. 하나 이상의 어드레스에 메모리가 존재하지 않는다면 시스템에서 하나 이상의 소프트웨어가 임의의 메모리 홀을 고려할 책임이 있다.
압축기(154)는 하나 이상의 프로그램가능 값을 유지하여 물리적 영역을 다른 압축된 물리적 영역으로 변환하는 멀티 레지스터를 포함한다. 프로그램가능 값은 JVM(108)의 제어하에 있고 비압축된 메모리 영역의 개시 어드레스, 비압축된 영역 또는 그 전체 사이즈의 종단 어드레스, 타겟 디스플레이 메모리(156)의 개시 어드레스, 애플리케이션 소프트웨어에서 어레이의 엘리먼트 당 비트 수("n") 및 압축된 영역에서 엘리먼트 당 비트 수("m") 또는 그 등가비 m/n를 포함할 수 있다. 메모리 세분성 액세스(예를 들어, 8 비트, 16 비트, 32 비트)와 같은 다른 정보는 비정렬된 기록 액세스를 관리하기 위하여 포함된다. 압축기(154)는 JVM(108)이 메모리가 매핑된 장치 메모리를 효율적으로 액세스하는 것을 용이하게 한다.
도 5에서는 자바 "메타데이터"는 애플리케이션 어레이(152)가 싱글 디멘전 어레이인 바람직한 실시예에서 어떻게 다루어지는지를 나타낸다. 자바에서 각각의 대상은 대상을 관리하는데 사용될 수 있는 메타데이터를 포함한다. 메타데이터는 대상 형태, 대상 사이즈, 및 다른 대상 특정 파라미터와 같은 정보를 포함할 수 있다. 도시된 바와 같이, 애플리케이션 어레이(152)는 "헤드" 메타데이터(170), 테일 메타데이터(174), 및 대상 필드(172)를 포함하는 데이터 구조(168)를 포함한다. 헤드 메타데이터(170)는 대상 필드(174)를 앞서고, 테일 메타데이터(174)는 대상 필드(172)의 뒤를 이을 수 있다. 바람직한 실시예에서, 메타데이터 필드(170 및 174)는 압축기(154)에 의해 압축되지 않는다. 즉, 압축기(154)는 바람직하게 대상 필드(172)를 압축하지만, 헤드 및 테일 메타데이터 필드(170 및 174)는 압축하지 않는다.
도 5를 참조하여, 플랫 또는 세그먼트 어드레싱 모드가 오퍼레이팅 시스템에 의해 구현되고 헤드 및/또는 테일 메타데이터가 도 5에서와 같이 존재하면, 물리적 메모리(166)로 압축되는 물리적 메모리(162b)의 선행 메모리(162a) 및 후행 메모리(162c)가 바람직하게 적어도 몇몇 실시예에 따라 실행되는 여기에 기재된 프로세스를 위하여 존재한다.
페이지 모드 어드레싱에서, 헤드 또는 테일 메타데이터는 가상 어드레스 공간(160)에서 개별 페이지((160a)(VP 0), (160c)(VP N)) 상에 매핑될 수 있다. 이와 같이, 헤드 메타데이터(170), 대상 필드(172), 및 테일 메타데이터(174)가 도 5에 도시된 바와 같이 연속 가상 어드레스 블록에 저장되고, 물리적 공간에서 이들은 압축된(162b) 및 비압축된(162a, 162c) 영역 상에 매핑될 수 있다. 이 구성에 대하여, 압축가능 메모리 공간의 시작 및 종단의 경계가 페이지 정렬된다. 몇몇 실시예는 헤더 내에 메타데이터만을 가질 수 있다.
이제 도 6을 참조하여, 싱글 디멘전 어레이의 비연속 대상 구성을 갖는 다른 실시예가 도시된다. 헤드 메타데이터(182), 포인터 필드(184), 및 테일 메타데이터(186)가 바람직하게 메모리에서 연속이다. 포인터 필드(184)는 대상 필드(188)를 지시하는 값("포인터")을 포함한다. 시스템 간접조치(indirection)가 포인터(184)를 사용하여 대상 필드를 액세스하는데 사용될 수 있다.
플랫, 세그먼트 또는 페이지 모드 어드레싱에서, JVM(108)이 바람직하게 두 연속 개별 메모리 공간을 사용하기 때문에 여기서 개시된 바람직한 프로세스를 사용함에 제약이 존재하지 않는다. 메모리 블록(182, 184, 및 186)은 플랫, 세그먼트, 또는 페이지 기초 연속 메모리 존 VP 0 내측에 매핑되고 물리적 메모리 페이지 PP 0 에 매핑될 때 압축되지 않는다. 그러나, 대상 필드(188)는 VP 1 내지 VP N-1에서 플랫, 세그먼트 또는 페이지 기초 메모리 존을 사용하여 매핑되고, 차례로 디스플레이 메모리(156)와 관련된 압축된 물리적 메모리 공간(166) 상에 매핑된다. 이 구성에서, 압축된 메모리 공간(166)의 선행 및 후행 물리적 메모리는 존재할 필 요가 없다.
자바는 멀티 디멘전 어레이의 생성 및 사용을 가능하게 한다. 도 7은 멀티 디멘전 데이터 구조(190)를 저장하는 애플리케이션 어레이(152)의 사용을 나타낸다. 가상 어드레스가능 블록(192)은 멀티 디멘전 데이터 구조(190)의 한 디멘전을 포함하고 제2 디멘전은 도시된 바와 같은 가상 어드레스가능 블록(194, 196 및 198)을 포함한다. 블록(192)은 블록(194, 196 및 198)으로의 포인터를 포함한다. 매핑 제약에 따라서, 플랫, 세그먼트 또는 페이지 기초 어드레싱에서, 어레이의 최종 디멘전을 나타내는 모든 대상 필드(블록 163, 165, 및 167)는 연속 압축된 물리적 메모리(166) 상에 물리적으로 매핑된다.
도 8은 블록(192)을 포함하는 한 디멘전을 갖는 비연속(도 6에서와 같이) 2 디멘전 어레이(190) 및 블록(194, 196, 및 198)을 포함하는 다른 디멘전을 나타낸다. 도 8의 이 구성에서, 어레이의 최종 디멘전을 나타내는 모든 대상 필드(블록 202, 204, 및 206)는 연속인 압축된 물리적 메모리(166)(디스플레이 메모리) 상에 물리적으로 매핑된다.
본 발명의 바람직한 실시예는 다른 장치 관리 파라다임에 대하여 실질적으로 이점을 제공한다. 예를 들어, 고레벨 언어는 전형적으로 정보를 디스플레이 상에 나타내도록 하는 디스플레이 드라이버에 호출의 사용을 요구한다. 바람직한 실시예에서, MPU(104)는 모 장치 드라이버를 운영하는데 인터럽트될 필요가 없다. 바람직한 실시예에서는 사용될 기능 호출 또는 인터럽트 서비스 핸들러가 없다. 그 결과, 지연이 감소된다. 또한, 디스플레이 메모리 내의 어드레스를 변환하는 계산이 소프트웨어 보다는 하드웨어에 의해 실행된다.
본 발명의 바람직한 실시예가 개시되었으나, 본 기술분야의 숙련된 자에 의해 본 발명의 사상을 벗어나지 않고 그 변경이 이루어질 수 있다. 여기서 설명된 실시예는 예시적인 것이며, 한정하는 것으로 의도되지 않는다. 여기 개시된 본 발명의 많은 수정 및 변경이 본 발명의 범위 내에서 가능하다. 따라서, 보호 범위는 상술된 설명에 의해 한정되지 않는다. 각각의 모든 청구범위는 본 발명의 한 실시예로서 발명의 상세한 설명으로 구체화된다.

Claims (26)

  1. 하나 이상의 오퍼레이션을 실행하고 장치를 직접 관리하는 애플리케이션 소프트웨어를 포함하는 기억 매체로서,
    상기 애플리케이션 소프트웨어는,
    상기 장치를 관리하기 위하여 상기 애플리케이션 소프트웨어에 의해 사용가능한 애플리케이션 데이터 구조를 초기화하는 명령들; 및
    상기 애플리케이션 데이터 구조를 상기 장치와 관련된 메모리에 매핑함으로써, 상기 애플리케이션 소프트웨어를 대신하여 상기 장치와 관련된 상기 메모리를 액세스하기 위한 장치 드라이버 기능 호출의 사용을 회피하도록 하는 명령들
    을 포함하고,
    상기 애플리케이션 데이터 구조의 포맷은 상기 장치와 관련된 메모리의 포맷과는 상이한 기억 매체.
  2. 제1항에 있어서, 상기 매핑하는 명령들은 상기 애플리케이션 소프트웨어가 상기 애플리케이션 데이터 구조를 초기화할 때 실행되는 기억 매체.
  3. 제1항에 있어서, 상기 애플리케이션 데이터 구조는 애플리케이션 어레이를 포함하는 기억 매체.
  4. 제3항에 있어서, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 명령들은 상기 애플리케이션 어레이를 디스플레이와 관련된 메모리에 매핑하는 명령들을 포함하는 기억 매체.
  5. 제3항에 있어서, 상기 애플리케이션 어레이를 초기화하는 명령들은 자바(Java) 어레이를 초기화하는 명령들을 포함하는 기억 매체.
  6. 제3항에 있어서, 상기 애플리케이션 어레이를 초기화하는 명령들은 멀티 디멘전(multi-dimensional) 자바 어레이를 초기화하는 명령들을 포함하는 기억 매체.
  7. 제3항에 있어서, 상기 애플리케이션 어레이를 초기화하는 명령들은 싱글 디멘전(single-dimensional) 자바 어레이를 초기화하는 명령들을 포함하는 기억 매체.
  8. 제3항에 있어서, 상기 애플리케이션 어레이를 초기화하는 명령들은 n 비트 애플리케이션 어레이를 초기화하는 명령들을 포함하고, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 명령들은 상기 애플리케이션 어레이를 상기 장치와 관련된 m 비트 메모리에 매핑하는 명령들을 포함하며, 여기서 m은 n과 상이한 기억 매체.
  9. 제8항에 있어서, n은 m보다 큰 기억 매체.
  10. 제3항에 있어서, 상기 애플리케이션 어레이는 대상 필드 및 메타데이터를 포함하고, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 명령들은 상기 메타데이터가 아닌, 상기 대상 필드를 하드웨어 장치와 관련된 상기 메모리에 매핑하는 명령들을 포함하는 기억 매체.
  11. 제10항에 있어서, 상기 메타데이터 및 대상 필드는 상기 애플리케이션 어레이의 연속하는 부분들에는 저장되지 않는 기억 매체.
  12. 제1항에 있어서, 상기 애플리케이션 소프트웨어는 데이터를 상기 데이터 구조에 기록함으로써, 상기 데이터가 상기 장치와 관련된 상기 메모리와 호환성이 있는 포맷으로 자동적으로 리포맷되도록 하는 명령들을 포함하는 기억 매체.
  13. 제1항에 있어서, 상기 애플리케이션 소프트웨어는 데이터를 상기 데이터 구조로부터 판독함으로써, 상기 데이터가, 상기 장치와 관련된 상기 메모리와 호환성이 있는 포맷에서 상기 애플리케이션 데이터 구조와 호환성이 있는 포맷으로 자동적으로 리포맷되도록 하는 명령들을 포함하는 기억 매체.
  14. 장치의 엘리먼트들을 애플리케이션 소프트웨어로부터 직접 액세스하는 방법으로서,
    상기 장치를 관리하기 위하여 상기 애플리케이션 소프트웨어에 의해 사용가능한 애플리케이션 데이터 구조를 초기화하는 단계; 및
    상기 애플리케이션 소프트웨어가 메모리를 액세스하도록 상기 애플리케이션 데이터 구조를 상기 장치와 관련된 메모리에 매핑함으로써, 상기 애플리케이션 소프트웨어를 대신하여 상기 장치와 관련된 상기 메모리를 액세스하기 위한 장치 드라이버 기능 호출의 사용을 회피하도록 하는 단계
    를 포함하며,
    상기 애플리케이션 데이터 구조의 포맷은 상기 장치와 관련된 메모리의 포맷과는 상이한 액세스 방법.
  15. 제14항에 있어서, 상기 매핑은 초기화하면서 일어나는 액세스 방법.
  16. 제14항에 있어서, 상기 애플리케이션 데이터 구조는 애플리케이션 어레이를 포함하는 액세스 방법.
  17. 제16항에 있어서, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 단계는 상기 애플리케이션 어레이를 디스플레이와 관련된 메모리에 매핑하는 단계를 포함하는 액세스 방법.
  18. 제16항에 있어서, 상기 애플리케이션 어레이를 초기화하는 단계는 자바 어레 이를 초기화하는 단계를 포함하는 액세스 방법.
  19. 제16항에 있어서, 상기 애플리케이션 어레이를 초기화하는 단계는 멀티 디멘전 자바 어레이를 초기화하는 단계를 포함하는 액세스 방법.
  20. 제16항에 있어서, 상기 애플리케이션 어레이를 초기화하는 단계는 싱글 디멘전 자바 어레이를 초기화하는 단계를 포함하는 액세스 방법.
  21. 제16항에 있어서, 상기 애플리케이션 어레이를 초기화하는 단계는 n 비트 애플리케이션 어레이를 초기화하는 단계를 포함하고, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 단계는 상기 애플리케이션 어레이를 상기 장치와 관련된 m 비트 메모리에 매핑하는 단계를 포함하며, 여기서 m은 n과 상이한 액세스 방법.
  22. 제21항에 있어서, n은 m보다 큰 액세스 방법.
  23. 제16항에 있어서, 상기 애플리케이션 어레이는 대상 필드 및 메타데이터를 포함하고, 상기 애플리케이션 어레이를 상기 장치와 관련된 메모리에 매핑하는 단계는 상기 메타데이터가 아닌, 상기 대상 필드를 하드웨어 장치와 관련된 상기 메모리에 매핑하는 단계를 포함하는 액세스 방법.
  24. 제23항에 있어서, 상기 메타데이터 및 대상 필드는 상기 애플리케이션 어레이의 연속하는 부분들에는 저장되지 않는 액세스 방법.
  25. 제14항에 있어서, 상기 애플리케이션 소프트웨어는 데이터를 상기 데이터 구조에 기록함으로써, 상기 데이터가 상기 장치와 관련된 상기 메모리와 호환성이 있는 포맷으로 동적으로 리포맷되도록 하는 명령들을 포함하는 액세스 방법.
  26. 제14항에 있어서, 상기 애플리케이션 소프트웨어는 데이터를 상기 데이터 구조로부터 판독함으로써, 상기 데이터가, 상기 장치와 관련된 상기 메모리와 호환성이 있는 포맷에서 상기 애플리케이션 데이터 구조와 호환성이 있는 포맷으로 동적으로 리포맷되도록 하는 명령들을 포함하는 액세스 방법.
KR1020040045523A 2003-06-19 2004-06-18 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스 KR101065114B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03291505.0 2003-06-19
EP03291505A EP1489592A1 (en) 2003-06-19 2003-06-19 Accessing video memory in programming language representation

Publications (2)

Publication Number Publication Date
KR20040111165A KR20040111165A (ko) 2004-12-31
KR101065114B1 true KR101065114B1 (ko) 2011-09-16

Family

ID=33396044

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040045523A KR101065114B1 (ko) 2003-06-19 2004-06-18 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스

Country Status (4)

Country Link
US (1) US7496930B2 (ko)
EP (1) EP1489592A1 (ko)
JP (1) JP2005011347A (ko)
KR (1) KR101065114B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200918B2 (en) 2004-10-01 2012-06-12 International Business Machines Corporation Tracking ownership of memory in a data processing system through use of a memory monitor
KR101563687B1 (ko) 2008-09-02 2015-11-09 삼성전자주식회사 표적 분자 분리를 위한 미세유동 카트리지, 분리장치, 및 이를 이용한 표적 분자 분리 방법
CN111367685B (zh) * 2020-02-28 2022-11-15 深圳平安医疗健康科技服务有限公司 接口调用的方法及装置、计算机设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072483A (ko) * 1998-02-09 1999-09-27 소니 유로파 비. 브이. 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템
US20020099902A1 (en) 2000-05-12 2002-07-25 Guillaume Comeau Methods and systems for applications to interact with hardware
KR20030073877A (ko) * 2002-03-13 2003-09-19 엘지전자 주식회사 피씨를 이용한 임베디드 시스템의 원격 메모리 제어 방법
KR20040020256A (ko) * 2002-08-30 2004-03-09 엘지전자 주식회사 자바를 이용하는 메모리의 제어장치 및 그 제어방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261077A (en) * 1990-06-29 1993-11-09 Digital Equipment Corporation Configurable data path arrangement for resolving data type incompatibility
US5680161A (en) * 1991-04-03 1997-10-21 Radius Inc. Method and apparatus for high speed graphics data compression
JP3413344B2 (ja) * 1997-05-16 2003-06-03 シャープ株式会社 画像演算処理装置およびその動作方法
KR100283412B1 (ko) * 1998-12-15 2001-03-02 김영환 프레임버퍼의 인터페이스 제어장치
US7159223B1 (en) * 2000-05-12 2007-01-02 Zw Company, Llc Methods and systems for applications to interact with hardware
US7213098B2 (en) * 2000-11-28 2007-05-01 Sun Microsystems, Inc. Computer system and method providing a memory buffer for use with native and platform-independent software code
US6996824B2 (en) * 2001-05-09 2006-02-07 Sun Microsystems, Inc. Frameworks for efficient representation of string objects in Java programming environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990072483A (ko) * 1998-02-09 1999-09-27 소니 유로파 비. 브이. 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템
US20020099902A1 (en) 2000-05-12 2002-07-25 Guillaume Comeau Methods and systems for applications to interact with hardware
KR20030073877A (ko) * 2002-03-13 2003-09-19 엘지전자 주식회사 피씨를 이용한 임베디드 시스템의 원격 메모리 제어 방법
KR20040020256A (ko) * 2002-08-30 2004-03-09 엘지전자 주식회사 자바를 이용하는 메모리의 제어장치 및 그 제어방법

Also Published As

Publication number Publication date
US7496930B2 (en) 2009-02-24
US20040261085A1 (en) 2004-12-23
KR20040111165A (ko) 2004-12-31
JP2005011347A (ja) 2005-01-13
EP1489592A1 (en) 2004-12-22

Similar Documents

Publication Publication Date Title
US5933846A (en) Rewritable ROM file device having read/write buffer access control via copy of rewritable area
US6658549B2 (en) Method and system allowing a single entity to manage memory comprising compressed and uncompressed data
EP1015976B1 (en) Data transfer to a non-volatile storage medium
US6496882B2 (en) Method and system for virtual memory compression in an embedded system
US5867690A (en) Apparatus for converting data between different endian formats and system and method employing same
EP0862759B1 (en) Dynamic programmable mode switching device driver architecture
JP2538029B2 (ja) コンピユ−タ・デイスプレイ装置
US5675773A (en) Graphics display system with a low level hardware dependent graphics library
US8799614B2 (en) Storing compressed data
US6091430A (en) Simultaneous high resolution display within multiple virtual DOS applications in a data processing system
US20090204651A1 (en) Accessing file data stored in non-volatile re-programmable semiconductor memories
US5802553A (en) File system configured to support variable density storage and data compression within a nonvolatile memory
US6549995B1 (en) Compressor system memory organization and method for low latency access to uncompressed memory regions
US5987582A (en) Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6195107B1 (en) Method and system for utilizing virtual memory in an embedded system
JP2004288150A (ja) フラッシュファイルシステム
US7506131B2 (en) Reformat logic to translate between a virtual address and a compressed physical address
KR100809293B1 (ko) 가상 머신에서 스택을 관리하는 장치 및 그 방법
KR101065114B1 (ko) 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스
US9471584B2 (en) Demand paging method for mobile terminal, controller and mobile terminal
US7299318B2 (en) Method for reducing cache conflict misses
KR20040073167A (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
US5809561A (en) Method and apparatus for real memory page handling for cache optimization
US7441254B1 (en) Simulation of memory-mapped I/O
US6240499B1 (en) Method and system for improving data storage and access for programs written in mid-level programming languages

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
FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8