KR20100073085A - 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치 - Google Patents

다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치 Download PDF

Info

Publication number
KR20100073085A
KR20100073085A KR1020080131671A KR20080131671A KR20100073085A KR 20100073085 A KR20100073085 A KR 20100073085A KR 1020080131671 A KR1020080131671 A KR 1020080131671A KR 20080131671 A KR20080131671 A KR 20080131671A KR 20100073085 A KR20100073085 A KR 20100073085A
Authority
KR
South Korea
Prior art keywords
abstraction
device driver
abstraction component
component
interface
Prior art date
Application number
KR1020080131671A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020080131671A priority Critical patent/KR20100073085A/ko
Publication of KR20100073085A publication Critical patent/KR20100073085A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

다중 코어 플랫폼(multicore platform)에서의 하드웨어 디바이스 드라이버 추상화 방법 및 이를 이용한 디바이스 드라이버가 개시된다. 본 발명의 일양상에 따른 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법은, 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용되지 않고, 미리 정해진 인터페이스를 통해서만 접근이 가능하도록 디바이스 추상화 컴포넌트를 구성한다. 이에 의해, 응용 프로그램, 운영체제 또는 하드웨어 플랫폼이 변경되더라도 디바이스 드라이버의 변경을 최소화함으로써 디바이스 드라이버의 재사용성을 극대화할 수 있다.
디바이스 드라이버, 추상화, 다중코어

Description

다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치 {Method and apparatus for abstraction of device driver for hardware devices in the multicore platform}
본 발명의 일양상에 따른 기술분야는 시스템 온 칩(system on chip, SOC)에서의 디바이스 드라이버(device driver)에 관한 것으로, 보다 상세하게는 다중 코어 플랫폼(multicore platform)에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치에 관한 것이다.
임베디드 시스템(embedded systems)에서 하드웨어 디바이스(hardware devices)는 단순한 버튼, 또는 LED, LCD를 포함하는 디스플레이 장치와 같은 단순한 입출력 장치에서 벗어나서 키보드, 마우스, 터치 스크린, 고음질의 마이크 및 스피커 등과 같은 복잡한 장치로 진화하고 있다.
그리고, 임베디드 시스템의 내부에도 메모리 제어기(memory controller), DMA 제어기(DMA controller), 버스 중재부(bus arbitrator), 네트워크 제어기(NoC(Network on Chip) controller), 인터럽트 제어기(interrupt controller)와 같은 각종 하드웨어 제어기를 비롯하여 다양한 하드웨어 라이브러리(IP)들이 고성 능화되고 복잡한 구조를 가지고 있다.
또한, 이러한 각종 하드웨어 디바이스가 하나의 칩(chip)에 집적되는 시스템 온 칩(SoC)으로 발전하고 있으며, 임베디드 시스템의 두뇌에 해당되는 중앙처리장치(CPU)의 코어도 2개 이상이 하나의 SoC에 포함되는 멀티코어/매니코어로 진화하고 있는 추세이다.
한편, 디바이스(device)의 종류가 다양해지고 복잡해지면 디바이스를 제어하기 위한 소프트웨어인 디바이스 드라이버도 복잡해지므로, 이를 사용하는 시스템의 생산성이 저하될 수 있다. 또한, 응용 소프트웨어 및 운영체제도 새로운 디바이스가 소개되거나 하드웨어 플랫폼이 변경될 때마다 이를 수용하여 변경되어야 한다.
그리고, 한번 구현된 디바이스 드라이버를 새로운 하드웨어 플랫폼이나 기존과는 다른 운영체제 또는 소프트웨어 플랫폼에 적용하기 위해서는 그대로 사용할 수 없으며, 외부 인터페이스를 비롯하여 메모리 주소 공간의 변경, 인터럽트 처리 등 많은 부분을 변경하여야 한다.
따라서, 본 발명의 일 양상에 따라, 디바이스 드라이버를 둘러싸고 있는 소프트웨어 및 하드웨어 인터페이스를 추상화하여, 외부 환경이 변경되더라도 디바이스 드라이버 자체의 변경이 최소화될 수 있는 하드웨어 디바이스 드라이버 추상화 방법 및 장치를 제공하고자 한다.
또한 본 발명의 일 양상에 따라, 디바이스 드라이버의 병렬 실행을 효율적으로 지원하는 동기화 방법을 제공하고자 한다.
또한 본 발명의 일 양상에 따라, 디바이스 드라이버들간 대용량의 데이터를 송수신할 수 있는 통신 방법을 제공하고자 한다.
본 발명의 일 양상에 따른 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법은, 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용되지 않고, 미리 정해진 인터페이스를 통해서만 접근이 가능하도록 디바이스 추상화 컴포넌트를 구성하는 단계를 포함한다.
또한, 본 발명의 다른 양상에 따른 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치는, 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용되지 않고, 미리 정해진 인터페이스를 통해서만 접근이 가능한 디바이스 추상화 컴포넌트; 상기 디바이스 추상화 컴포넌트가 실행될 수 있도록 상호간의 인터페이스를 매핑하고 상기 디바이스 추상화 컴포넌트가 실행되는데 필요한 부가기능을 제공하는 디바이스 추상화 컴포넌트 실행 환경부; 및 하드웨어 장치를 접근하기 위한 인터페이스를 제공하는 물리 입출력 인터페이스부를 포함한다.
본 발명의 일실시예에 따르면, 디바이스 드라이버의 외부 인터페이스를 추상 화하여 응용 프로그램, 운영체제 또는 하드웨어 플랫폼이 변경되더라도 디바이스 드라이버의 변경을 최소화함으로써 디바이스 드라이버의 재사용성을 극대화할 수 있다.
또한 디바이스 드라이버 간의 동기화 방법을 제공함으로써 멀티코어/매니코어 환경에서 다수의 디바이스 드라이버가 하나의 장치를 제어할 때 발생할 수 있는 위험 지역을 원천적으로 제거함으로써 장치에 대한 무결성을 보장할 수 있다.
그리고, 본 발명의 일실시예에 따른 디바이스 드라이버 간의 동기화 방법에 따르면, 순차 알고리즘으로 구현된 디바이스 드라이버를 멀티코어/매니코어 환경으로 쉽게 이식(porting)할 수 있다.
또한, 본 발명의 일실시예에 따른 디바이스 드라이버 간의 대용량 데이터 전송 방법에 따르면, 응용 프로그램 또는 운영체제에서 발생하는 오버헤드 없이 대용량의 데이터를 장치간에 전송할 수 있다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일실시예에 따른 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법을 설명하기 위한 참조도이다.
본 발명의 일실시예에 따른 디바이스 드라이버 추상화 방법에 적용될 수 있는 임베디드 시스템은 LCD, 터치스크린, 마이크, 스피커와 같은 입출력 장치 및 메모리 제어기, DMA 제어기, 버스 중재기(bus arbitrator), NoC 제어기, 인터럽트 제어기와 같은 내부 장치와 그래픽 가속기, 비디오 가속기, 부동소수점 처리기 등 각종 하드웨어 IP를 포함한다. 따라서, 본 발명의 실시예들은 이러한 임베디드 시스템에서 본 발명의 일실시예에 따른 디바이스 드라이버 관리 방법이 포함된다.
디바이스 드라이버 추상화 장치(120)는 운영체제(OS)(130) 내부에서 실행될 수 있다. 다른 실시예로 운영체제 외부에 존재하는 것도 가능하다. 디바이스 드라이버 추상화 장치(120)는 장치를 관리하는 소프트웨어인 디바이스 추상화 컴포넌트(124), 디바이스 추상화 컴포넌트(124)가 실행할 수 있는 환경을 제공하는 디바이스 추상화 컴포넌트 실행 환경부(125), 하드웨어 디바이스를 접근하기 위한 인터페이스를 제공하는 물리 입출력 인터페이스부(122)를 포함한다.
디바이스 추상화 컴포넌트(Device Abstraction Component, DAC)는 종래의 디바이스 드라이버를 컴포넌트화 한 형태이다. 즉, 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용하지 않으며, 이러한 자원이나 디바이스 드라이버가 제공하는 기능을 이용하기 위해서는 미리 정해진 인터페이스를 통해서만 가능하다.
따라서, 디바이스 드라이버 작성자는 디바이스 드라이버 내부의 자원 및 디 바이스 드라이버가 외부에 제공할 기능을 정의하고, 이를 외부에서 사용할 수 있도록 인터페이스를 정의하여 제공하여야 한다.
디바이스 추상화 컴포넌트 실행 환경부(DAC Run-Time Module, DAC-RTM)(126)는 디바이스 추상화 컴포넌트(DAC)(124)가 운영체제(130) 또는 응용 소프트웨어(140)에 독립적으로 실행될 수 있도록 상호간의 인터페이스를 사상하고(mapping), 디바이스 추상화 컴포넌트(124)가 실행하는데 필요한 부가적인 기능을 제공한다.
디바이스 추상화 컴포넌트 실행 환경부(DAC-RTM)(126)의 부가적인 기능의 일예로는, 디바이스 추상화 컴포넌트(DAC)(124)의 설정(configuration), 디바이스 추상화 컴포넌트(DAC)(124)가 사용할 자원(메모리, 프로세싱 코어, DMA, 인터럽트 라인 등)의 할당, 디바이스 추상화 컴포넌트(DAC)(124)들간의 통신, 디바이스 추상화 컴포넌트(DAC)(124)의 오류 처리, 시간 관리, 데이터 버퍼 관리 등을 포함한다.
또한, 디바이스 추상화 컴포넌트(DAC)(124)를 설계하고 구현할 수 있도록, 디바이스 추상화 컴포넌트 실행 환경부(DAC-RTM)(126)는 디바이스 추상화 컴포넌트(DAC)(124)의 실행 모델링, 디바이스 추상화 컴포넌트(DAC)(124)가 사용하는 데이터에 대한 모델링, 디바이스 추상화 컴포넌트(DAC)(124)의 설정 기법에 대한 모델링 및 디바이스 추상화 컴포넌트(DAC)(124) 인터페이스부(128)의 호출 및 명명(naming) 방법을 제공한다.
한편, 디바이스 추상화 컴포넌트(DAC)(124)의 실행 모델링은 디바이스 추상화 컴포넌트(DAC)(124)가 실행 시점에 필요한 사항을 정의한 것으로, 일예로 디바 이스 추상화 컴포넌트(DAC)(124)의 실행 이미지, 디바이스 추상화 컴포넌트(DAC)(124)의 실행 단위, 디바이스 추상화 컴포넌트(DAC)(124)간 통신 채널, 디바이스 추상화 컴포넌트(DAC)(124)의 오류 발생 및 복구 기법, 외부 인터페이스 형식 등을 정의한다.
또한 디바이스 추상화 컴포넌트(DAC)(124)가 사용하는 데이터에 대한 모델링은 디바이스 추상화 컴포넌트(DAC)(124) 내부에서 사용되거나 외부와 인터페이스할 때 사용되는 데이터의 구조를 정의한다. 데이터 모델링에서는 일예로, 데이터가 메모리에 적재될 때의 표현 양식, 외부로 전달될 데이터의 표현 양식을 포함한다.
그리고 디바이스 추상화 컴포넌트(DAC)(124)의 설정 기법 모델링은 디바이스 추상화 컴포넌트(DAC)(124)의 특성을 표현하는 방식을 정의한다. 본 발명의 일예에서는 디바이스 추상화 컴포넌트(DAC)(124)를 설계할 때 도출되는 정적 특성과 디바이스 추상화 컴포넌트(DAC)(124)가 목적 시스템에서 실행될 때 변경 가능한 동적 특성으로 분리하여 제공할 수 있다.
정적 특성은 디바이스 추상화 컴포넌트(DAC)(124)를 설계할 때 미리 알 수 있는 특성들의 집합으로 디바이스 추상화 컴포넌트(DAC)(124)의 이름, 디바이스 추상화 컴포넌트(DAC)(124)와 결합되어야 할 다른 디바이스 추상화 컴포넌트(DAC)들의 목록, 디바이스 추상화 컴포넌트(DAC)(124)의 제작 환경, 디바이스 추상화 컴포넌트(DAC)(124)가 사용할 라이브러리(library) 목록, 디바이스 추상화 컴포넌트(DAC)(124)의 엔디안(endian), 디바이스 추상화 컴포넌트(DAC)(124)의 자원 사용량 등이 포함된다. 이는 디바이스 추상화 컴포넌트(DAC)(124)를 개발하는 과정에 서 개발자가 작성하거나 생성할 때 도출될 수 있는 특성들이다.
한편, 정적 특성은 디바이스 추상화 컴포넌트(DAC)(124)의 실행 이미지에 함께 패키징된 후에 목적 시스템에서 실행될 때 추출되어 사용될 수 있다. 그리고 디바이스 추상화 컴포넌트(DAC)(124)의 동적 특성은 디바이스 추상화 컴포넌트(DAC)(124)가 목적 시스템에서 동적으로 적재되어 실행되거나 제거될 수 있는 환경에서 사용되는 특성으로, 디바이스 추상화 컴포넌트(DAC)(124)와 결합되어야 할 다른 디바이스 추상화 컴포넌트(DAC)들의 인터페이스 목록, 통신 채널 핸들 등의 정보가 포함된다.
그리고 디바이스 추상화 컴포넌트(DAC)(124) 인터페이스부(128)를 통한 인터페이스 호출 및 명명 방법은 디바이스 추상화 컴포넌트(DAC)(124)간 또는 디바이스 추상화 컴포넌트(DAC)(124)와 운영체제(130) 또는 응용 프로그램(140)과의 인터페이스를 설계하거나 구현할 때 사용하는 규약을 정의한다. 디바이스 추상화 컴포넌트(DAC)(124) 인터페이스부(128)는 시스템 전체에서 유일한 이름으로 명명된다. 본 발명의 일실시예에 따른 디바이스 추상화 컴포넌트(DAC)(124)의 외부 인터페이스의 호출 방법은 통신 채널을 이용한 1:1 통신 호출 방법과 비동기 함수 및 회귀 함수(callback function)를 이용한 비동기 호출 방법이 모두 사용될 수 있다. 이에 관해서는 도 5를 참조하여 후술한다.
물리 입출력 인터페이스부(122)는 디바이스 추상화 컴포넌트(DAC)(124)의 외부 인터페이스 중에서 특히 하드웨어 디바이스와 직접 통신하는 기능을 담당한다. 본 발명의 일양상중의 하나인 디바이스 드라이버의 추상화를 위해 하드웨어 디바이 스와의 직접적인 통신을 물리 입출력 인터페이스부(122)로 독립화하였으며, 디바이스 추상화 컴포넌트(DAC)(124)는 실제 하드웨어 디바이스와는 독립적인 연산을 통해서 자신의 기능을 구현할 수 있다.
물리 입출력 인터페이스부(122)는 디바이스 추상화 컴포넌트(DAC)(124)와 채널 통신 또는 비동기 통신 방법을 통해 데이터를 주고 받게 되며, 하드웨어 디바이스와는 PIO(Programmed I/O) 또는 DMA(direct memory access) 및 인터럽트 방식을 이용하여 통신할 수 있다. 따라서, 하드웨어 디바이스 또는 플랫폼이 변경되더라도 물리 입출력 인터페이스부(122)만 이에 맞게 수정하면 다른 부분은 수정 없이 재사용이 가능해진다.
도 2는 본 발명의 일실시예에 따른, 실행 가능한 하드웨어 시스템을 도시한 도면이다.
본 발명의 일실시예에 따른 디바이스 드라이버 추상화 방법이 구현되는 환경을 설명하기 위한 도면으로, 다수의 프로세싱 코어(220a 내지 220e)와 하드웨어 디바이스(240a 내지 240e)가 제1연결처리부(210) 및 제2연결처리부(230)와 같은 인터커넥션(interconnection)으로 연결되어 있는 다중 코어 시스템이다. 제1연결처리부(210) 및 제2연결처리부(230)와 같은 인터커넥션(interconnection)은 프로세싱 코어(220a 내지 220e)와 하드웨어 디바이스(240a 내지 240e)를 연결하여 데이터 또는 제어 명령을 전달하는 장치로 버스, NoC 등을 포함한다.
프로세싱 코어(220a 내지 220e)는 작업을 수행하는 주체로서 다중 코어 시스템에서는 적어도 둘 이상이 구비될 수 있다. 하드웨어 디바이스(240a 내지 240e) 는 프로세싱 코어(220a 내지 220e)에서 수행할 수 없는 작업을 대신하거나 입출력 작업을 전문적으로 수행하는 장치이다. 예를 들면, LCD, 터치스크린, 마이크, 스피커와 같은 입출력 장치 및 메모리 제어기, DMA 제어기, 버스 중재기(bus arbitrator), NoC 제어기, 인터럽트 제어기와 같은 내부 장치와 그래픽 가속기, 비디오 가속기, 부동소수점 처리기 등 각종 하드웨어 IP를 포함한다.
도 3은 본 발명의 일실시예에 따른, 응용 프로그램과 하드웨어 사이의 데이터 및 제어 흐름을 도시한 도면이다.
응용 프로그램(140)에서 프로세싱 코어 및 하드웨어(110)로 데이터 및 제어 메시지가 전달되는 경로를 살펴보면 다음과 같다. 응용 프로그램(140)이 운영체제(130)로 시스템 호출과 같은 방법을 통해 장치 연산을 요청하게 되고, 이 요청이 운영체제 내의 장치 서브 시스템(310)에 전달된다. 장치 서브 시스템(310)은 리눅스(Linux), 윈도우즈(Windows)와 같은 대부분의 운영체제에 존재하는 기능으로 파일 서브 시스템, 네트워크 서브 시스템 등이 예이다. 장치 서브 시스템(310)은 본 발명과는 독립적으로 이것이 존재하지 않는 운영체제라고 하더라도 본 발명은 적용이 가능하다.
운영체제(130)로부터의 요청은 디바이스 추상화 인터페이스부(128)로 전달되고, 디바이스 추상화 인터페이스부(128)에서는 이를 디바이스 추상화 컴포넌트(DAC)(124)에서 정의한 디바이스 추상화 인터페이스로 변환한 후, 이를 디바이스 추상화 컴포넌트(DAC)(124)에 전달한다. 디바이스 추상화 컴포넌트(DAC)(124)에서는 이 요청을 분석하여 하드웨어 디바이스(110)에 데이터를 전달하거나 제어한다. 이때, 하드웨어 디바이스(110)에 직접적인 접근이 필요할 경우 물리 입출력 인터페이스부(122)로 전달하고, 실제적인 데이터 전달이나 제어는 물리 입출력 인터페이스(122)가 대행한다.
반대로, 하드웨어 디바이스(110)로부터 응용 프로그램(140) 또는 운영체제(130)로 데이터 또는 제어 메시지가 전달되는 경로를 살펴보면 다음과 같다. 하드웨어 디바이스(110)는 인터럽트를 통해 데이터가 도착했음을 알린다. 만일, 인터럽트가 존재하지 않은 하드웨어 플랫폼에서는 디바이스 추상화 컴포넌트(DAC)(124)가 주기적 또는 비지 웨이팅(busy waiting) 기법을 통해 데이터가 도착했음을 감지한다. 처리해야 할 데이터가 존재함을 감지하면 디바이스 추상화 컴포넌트(DAC)(124)는 물리 입출력 인터페이스부(122)를 통해서 데이터를 수신하게 되며, 이는 다시 디바이스 추상화 인터페이스부(128)를 통해서 운영체제(130) 또는 응용 프로그램(140)으로 전달된다.
도 4는 본 발명의 일실시예에 따른 리소스 동기화를 제공하기 위한 디바이스 드라이버 컴포넌트의 구조를 도시한 도면이다.
종래의 동기화 방법들은 디바이스 드라이버의 개발자들이 동기화가 필요한 영역을 지정하고 명시적인 동기화 연산을 이용하여 그 영역을 보호하는 방식을 사용하는 반면, 본 발명에서는 명시적인 동기화 연산 없이 디바이스 추상화 컴포넌트(DAC)(124)의 구조를 정의하여 다중 코어 동기화를 제공할 수 있다.
동기화를 위한 디바이스 추상화 컴포넌트(DAC)(124)의 구조는 다음과 같다. 첫째, 디바이스 추상화 컴포넌트(DAC)(124)는 하나 이상의 도메인(domain)(422, 424, 426)으로 구성된다. 도메인(422, 424, 426)은 동기화의 단위로도 사용되며, 디바이스 추상화 컴포넌트(DAC)(124)의 실행 단위를 나타낼 수도 있다. 동일한 도메인은 시스템 상에서 동시에 한 도메인만이 실행될 수 있으며, 도메인 간에 자원을 공유하지 않는다.
둘째, 디바이스 추상화 컴포넌트(DAC)(124)가 다수의 도메인으로 구성되었을 때에 전역 변수(410)가 있을 경우에는 그 변수에 대해 읽기 연산만이 가능하다. 즉, 전역 변수에 대한 동기화는 필요없다.
셋째, 디바이스 추상화 컴포넌트(DAC)(124)의 초기화 시에 디바이스 추상화 컴포넌트 실행 환경부(DAC-RTM)(126)은 하나의 도메인을 초기화하여 실행한다. 이러한 도메인을 제1도메인(422)이라고 하며, 다른 도메인은 디바이스 추상화 컴포넌트(DAC)(124)의 요청에 의해 디바이스 추상화 컴포넌트 실행 환경부(DAC-RTM)(126)이 생성한다.
이러한 구조를 통해 디바이스 추상화 컴포넌트(DAC)(124)에서 접근하는 모든 데이터는 하나의 쓰레드(thread)만이 접근될 수 있다. 따라서, 명시적인 동기화 연산 없이도 다중 코어 상에서 디바이스 추상화 컴포넌트(DAC)(124)가 실행될 수 있다. 디바이스 추상화 컴포넌트(DAC)(124) 개발자는 동기화 및 병렬성을 고려하여 도메인을 설정하면 되고, 도메인간(422, 424, 426) 또는 디바이스 추상화 컴포넌트(DAC)(124) 간의 동기화 및 병렬성은 디바이스 추상화 컴포넌트 실행 환경부(DAC-RTM)(126)에서 자동적으로 이루어지므로, 디바이스 추상화 컴포넌트(DAC)(124) 개발자는 도메인 내에서 순차 알고리즘을 이용하여 구현하면 되기 때 문에 디바이스 추상화 컴포넌트(DAC)(124)의 구현이 용이해질 수 있다.
도 5는 본 발명의 일실시예에 따른 디바이스 드라이버간의 데이터 통신을 설명하기 위한 도면이다.
본 발명의 일실시예에 따른 대용량 데이터 전송 방식은 점대점(point-to-point) 통신 방식이다. 즉, 전용 통신 채널을 두개의 디바이스 추상화 컴포넌트(DAC)(510, 520)만이 소유하여 통신하는 방식이다. 이러한 방식은 통신 연결이나 종료가 쉽고, 통신 경로의 오버헤드가 적은 장점이 있다. 채널(530)은 가상의 통신 경로이고, 실제 채널을 구분하는 구분자는 채널 핸들러(514, 524)이다. 채널 핸들러(514, 524)는 하나의 채널별로 2개가 할당되며, 채널의 양 끝단의 디바이스 추상화 컴포넌트(DAC)가 각각 소유한다. 또한, 채널 핸들러(514, 524)에는 채널 연산부(512, 522)가 위치하여, 채널에 대한 연산 벡터가 할당되어 해당 채널에서 제공해야 할 기능을 구현한 함수들의 진입점 역할을 한다.
채널(530)의 할당 및 연결은 설계 시점에 결정되며, 실행시에는 이미 결정된 채널 핸들러(514, 524)를 이용하여 채널 반대쪽 디바이스 추상화 컴포넌트(DAC)의 채널 연산부를 호출하여 데이터를 전달하거나 상대편 디바이스 추상화 컴포넌트(DAC)에서 제공하는 기능을 수행한다.
한편, 본 발명의 일실시예에 따른 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명의 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 일실시예에 따른 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법을 설명하기 위한 참조도,
도 2는 본 발명의 일실시예에 따른, 실행 가능한 하드웨어 시스템을 도시한 도면,
도 3은 본 발명의 일실시예에 따른, 응용 프로그램과 하드웨어 사이의 데이터 및 제어 흐름을 도시한 도면,
도 4는 본 발명의 일실시예에 따른 리소스 동기화를 제공하기 위한 디바이스 드라이버 컴포넌트의 구조를 도시한 도면,
도 5는 본 발명의 일실시예에 따른 디바이스 드라이버간의 데이터 통신을 설명하기 위한 도면이다.
<도면의 주요부분에 대한 설명>
110 : 프로세싱 코어 및 하드웨어 120 : 디바이스 드라이버 추상화 장치
122 : 물리 입출력 인터페이스부 124 : 디바이스 추상화 컴포넌트
126 : 디바이스 추상화 컴포넌트 실행환경부
128 : 디바이스 추상화 인터페이스부
130 : 운영체제 140 : 응용 프로그램

Claims (9)

  1. 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용되지 않고, 미리 정해진 인터페이스를 통해서만 접근이 가능하도록 디바이스 추상화 컴포넌트를 구성하는 단계를 포함하는 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법.
  2. 제1항에 있어서, 상기 디바이스 추상화 컴포넌트는
    자원을 주고 받는 인터페이스를 추상화한 적어도 하나의 도메인으로 구분되며, 어느 도메인이든 동시에 한 도메인만이 실행될 수 있으며, 도메인 상호간에 자원을 공유하지 않는 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법.
  3. 제1항에 있어서,
    두개의 디바이스 추상화 컴포넌트가 통신하는 경우, 전용 통신 채널을 통해 통신하는 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법.
  4. 디바이스 드라이버가 사용하는 각종 자원을 다른 디바이스 드라이버 또는 운영체제로부터 보호하여 외부에서 직접적으로 접근되는 것을 허용되지 않고, 미리 정해진 인터페이스를 통해서만 접근이 가능한 디바이스 추상화 컴포넌트;
    상기 디바이스 추상화 컴포넌트가 실행될 수 있도록 상호간의 인터페이스를 매핑하고 상기 디바이스 추상화 컴포넌트가 실행되는데 필요한 부가기능을 제공하는 디바이스 추상화 컴포넌트 실행 환경부; 및
    하드웨어 장치를 접근하기 위한 인터페이스를 제공하는 물리 입출력 인터페이스부를 포함하는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
  5. 제4항에 있어서,
    상기 디바이스 추상화 컴포넌트간 또는 디바이스 추상화 컴포넌트와 운영체제 또는 응용 프로그램과의 인터페이스를 통한 인터페이스 호출 및 명명 방법을 위한 규약을 정의하는 디바이스 추상화 인터페이스부를 더 포함하는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
  6. 제4항 또는 제5항에 있어서,
    상기 디바이스 드라이버는 운영체제 내부 또는 외부에 설치되는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
  7. 제4항 또는 제6항에 있어서, 상기 디바이스 추상화 컴포넌트 실행 환경부는
    상기 디바이스 추상화 컴포넌트를 설계하고 구현할 수 있도록 상기 디바이스 추상화 컴포넌트의 실행 모델링, 상기 디바이스 추상화 컴포넌트가 사용하는 데이 터에 대한 모델링, 상기 디바이스 추상화 컴포넌트의 설정 기법에 대한 모델링 및 상기 디바이스 추상화 컴포넌트 인터페이스부의 호출 및 명명 방법을 제공하는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
  8. 제4항 또는 제5항에 있어서, 상기 디바이스 추상화 컴포넌트는
    자원을 주고 받는 인터페이스를 추상화한 적어도 하나의 도메인으로 구분되며, 어느 도메인이든 동시에 한 도메인만이 실행될 수 있으며, 도메인 상호간에 자원을 공유하지 않는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
  9. 제4항 또는 제5항에 있어서,
    두개의 디바이스 추상화 컴포넌트가 통신하는 경우, 전용 통신 채널을 통해 통신하는 다중 코어 플랫폼에서의 디바이스 드라이버 추상화 장치.
KR1020080131671A 2008-12-22 2008-12-22 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치 KR20100073085A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080131671A KR20100073085A (ko) 2008-12-22 2008-12-22 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080131671A KR20100073085A (ko) 2008-12-22 2008-12-22 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20100073085A true KR20100073085A (ko) 2010-07-01

Family

ID=42636111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080131671A KR20100073085A (ko) 2008-12-22 2008-12-22 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20100073085A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101130781B1 (ko) * 2010-04-16 2012-03-28 성균관대학교산학협력단 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법
KR101355443B1 (ko) * 2010-02-26 2014-01-28 에스케이플래닛 주식회사 모바일 그래픽 처리 장치 및 방법, 그를 위한 컴퓨터 판독 가능한 기록매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355443B1 (ko) * 2010-02-26 2014-01-28 에스케이플래닛 주식회사 모바일 그래픽 처리 장치 및 방법, 그를 위한 컴퓨터 판독 가능한 기록매체
KR101130781B1 (ko) * 2010-04-16 2012-03-28 성균관대학교산학협력단 부분 가상 머신 및 이를 이용한 디바이스 드라이버 처리 방법

Similar Documents

Publication Publication Date Title
Priedhorsky et al. Charliecloud: Unprivileged containers for user-defined software stacks in hpc
JP5323897B2 (ja) 仮想マシン・モニタと、acpi準拠ゲスト・オペレーティング・システムとの間の双方向通信のための方法、装置及びシステム
JP5122597B2 (ja) 仮想プロセッサへの直接的なインタラプトの送信
CN109032706A (zh) 智能合约执行方法、装置、设备和存储介质
JP2016541072A (ja) リソース処理方法、オペレーティング・システム、およびデバイス
KR20050112524A (ko) 논리적으로 분할된 컴퓨터 시스템에서의 리소스 전달을제어하는 장치 및 방법
EP3436947B1 (en) Secure driver platform
JP2010521034A (ja) オペレーティングシステムからオペレーティング環境を抽象化する方法
KR20150104592A (ko) 하드웨어 디바이스에 대한 소프트웨어 인터페이스
US20100169883A1 (en) Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
EP2941694B1 (en) Capability based device driver framework
JP2012524312A (ja) ユーザ端末で利用可能なアプリケーションを作成するためのシステム
Zuepke et al. AUTOBEST: a united AUTOSAR-OS and ARINC 653 kernel
KR20060063643A (ko) 운영 체제의 성능을 향상시키는 방법 및 시스템
US8463972B2 (en) System and method for dynamic, local retriggered interrupt routing discovery
KR101498965B1 (ko) 가상화 기술을 이용한 내외부망 격리 시스템 및 방법
Barnes et al. RMoX: a Raw Metal occam Experiment
WO2011039887A1 (ja) 計算機装置
KR20100073085A (ko) 다중 코어 플랫폼에서의 하드웨어 디바이스 드라이버 추상화 방법 및 장치
KR102092459B1 (ko) 컨테이너 기반 가상화 환경에서 gpu 메모리 자원 관리 및 스케줄링 방법 및 시스템
US10496439B1 (en) Finite resource allocator with intrinsically subordinate operating system
EP2941695B1 (en) High throughput low latency user mode drivers implemented in managed code
KR20130104958A (ko) 다중 운영체제들을 실행하는 장치 및 방법
Neumann et al. Intel Virtualization Technology in Embedded and Communications Infrastructure Applications.
CN118331687B (zh) 用户态半虚拟化数据路径加速方法、设备、集群以及介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application