KR102333541B1 - 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 - Google Patents
컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 Download PDFInfo
- Publication number
- KR102333541B1 KR102333541B1 KR1020210083657A KR20210083657A KR102333541B1 KR 102333541 B1 KR102333541 B1 KR 102333541B1 KR 1020210083657 A KR1020210083657 A KR 1020210083657A KR 20210083657 A KR20210083657 A KR 20210083657A KR 102333541 B1 KR102333541 B1 KR 102333541B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- port
- bytecode
- data
- physical
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
본 발명은 디바이스 드라이버 액세스 방법에 관한 것이다. 본 발명의 디바이스 드라이버 모델은 현재 모델에서 OS 가상 메모리 공간은 물론 응용 소프트웨어 공간 부터 디바이스 포트에 있는 모든 물리적 계층 디바이스 드라이버 코드들을 없애 OS와 응용 메모리 공간에 이들 코드가 보이지 않는다. 이것을 지원하는 FIFO 지향 I/O 디바이스가 구현되어, 호스트 컴퓨터 시스템이나 프로세서를 하나처럼 보이도록 한다.
Description
본 발명은 컴퓨터 아키텍처에 관한 것으로, 구체적으로는 디바이스 드라이버 액세스 방법에 관한 것이다.
1969년 파일시스템을 기반으로 한 Unix가 개발되었을 때, 디바이스 드라이버의 개념은 이마 잘 정립되었는데, 동일한 파일시스템의 연장으로 보기도 했다. 휴대형 운용체제의 모델은 2개의 메인요소, 즉 C와 같은 고레벨 언어로 라이트되어야만 하는 디바이스 독립요소(디바이스의 논리계층)와, 디바이스 드라이버 모델이 물리적 디바이스의 저레벨 데이터 구조를 논리적 디바이스의 고레벨 데이터구조로 매핑하는 하드웨어-의존(디바이스의 물리적 계층) 요소로 일찌기 결정되었다. 따라서, Unix 파일시스템은 정보가 깔린 길과 관련된 두렷한 디바이스를 갖지 않는데, 이는 블록 엔티티로 데이터를 취급하고 휴대형으로 OS 커널을 구성하려면 블록을 어떻게 구성하는가에 대한 지식이 없기 때문이다.
이 모델은 이런 식으로 Posix(portable-operating-system-interface-for unix)에도 채택되어 모든 응용례의 GNU/Linux 시스템에도 채택되었다.
2012년 현재의 OS 모델, 예컨대 Unix, Linux, 윈도우와 GUI(Graphical-User-Interface)와 안드로이드는 VFS(virtual-file-system)내의 수많은 HAL(hardware-abstraction-layer)을 이용하고 있지만, 하드웨어에 특정된 드라이버 코드는 KMDF(Kernal-Mode-Driver-Framework)로서 커널에 존재하거나, 필요할 때만 요구되는 로더블 모듈일 수 있다. 다른 방법으로는, UMDF(User-Mode-Driver-Framework)이 드라이버 코드를 커널 밖으로 움직인다.
그럼에도 불구하고, 경우에 따라서는 OS가 디바이스-사양 제어를 요하는 가상의 메모리공간에 존재하는 물리적인 드라이버 코드를 실행해야만 하기도 한다. 이 경우, 커널 하드웨어가 휴대형이 되지 못함은 물론, 동일한 플랫폼을 업그레이드할 수도 없다. HAL이 OS를 공급자지정 하드웨어에서 격리한다 해도, HAL은 여전히 OS 메모리공간에 있다. 이 경우 2가지 문제가 생기는데; 첫째, 시스템 프로세서가 물리적 드라이버 코드를 실행하거나 병렬처리를 할 때 다른 프로세스를 돌릴 수 없고(멀티타스킹 불가능), 둘째 디바이스 제조업자가 물리적 디바이스 드라이버를 공급해야만 한다. 이 경우 특정 커널을 업그레이드해야 해서, 비디오나 사운드와 같은 컴퓨터장치의 가장 기본적인 변화도 해야만 한다.
따라서, 본 발명에서처럼 HAL을 디바이스 자체 밖으로 옮기고 fifo를 구현할 필요가 있다. 이렇게 되면, 디바이스를 단일 디바이스처럼 취급해야하는 새로운 모델이 등장한다. 다른 모델도 생기는데, 모든 디바이스 포트에 FIFO를 추가하고, 기존의 컴퓨터 요소를 제거할 수 있어, DMA 엔진, 멀티-중재기, 멀티버스, PCI와 같은 I/O 버스를 없앨 수 있다.
아주 비슷한 발명이 1996년 I2O(intelligent-I/O) 명세서를 공개한 I2OSIG(I2O Special Interest Group)에 의해 시작되었다. 이런 조정위원회 멤버에는 HP, Intel, Microsoft, Novell, Adaptec, 3Com 이외에도, Acer, ARM, Dell, Fujitsu, Samsung, Seagate, Siemens, Western Digital과 같으 60개 멤버가 더 있다. 이 발명의 유사점은, HAL이 OS 어드레스 공간을 벗어나 디바이스 자체에 들어간다는 것이다. 그러나, FIFO 방향성은 없어서, MPI(message passing interface)와 프로토콜을 갖는 훨씬 더 복잡한 구성이 되었다.
본 발명은 아래와 같이 여러가지 면에서 종래의 것과 다르다.
1) 본 발명은 I/O C 컴파일러, 자체 로컬버스, 자체 부트메모리, 자체 실행 공간, 공유메모리, DMA와 같은 자체 개발툴 세트를 갖는 어떤 특정 I/O 프로세서도 이용하지 않고; 2) 본 발명은 FIFO를 구분하여, 호스트 프로세서는 FIFO만 찾으며; 3) I2O는 DMA 엔진(실제로는 공통 DMA는 물론 로컬 DMA도 규정), 멀티-중재기, 멀티버스 및 PCI와 같은 I/O 버스의 제거를 언급하고 있지 않고; 4) I2O의 디바이스는 특정 하나의 I/O 세그먼트내의 하나의 I/O 프로세서에 의존하고 있어 코드를 병렬로 실행할 수 없으며; 5) I2O는 P2P 전송을 하고; 6) I2O는 FIFO 지향성 I/O 시스템이 아니기 때문에 I/O 디바이스들을 하나로 보지 못하며; 7) I2O는 리퀘스트-리플라이 프로토컬을 요하는 MPI(message passing interface)에 상당히 의존하여, 본 발명의 단순한 바이트코드와 대비되고; 8) I2O는 I/O, 메모리 및 PCI에 아주 유사한 구성을 위한 어드레싱 작용 공간을 만드는 독립적인 버스들로 I/O 프로세서들을 구획하였으며; 9) I2O는 각 세그먼트내 메모리들을 3개의 카테고리, 즉 시스템메모리, I/O 프로세서 전용메모리 및 다른 액세스 체계들을 갖는 공유 메모리로 규정하였고; 10) I2)가 PCI와 같은 확장버스를 규정하고 이것을 플랫폼을 오픈할 키로 간주한데 반해, 본 발명은 PCI를 요하지 않으며; 11) I2O가 버스 마스터링을 제시한 반면, 본 발명은 모든 I/O 버스들을 하나로 취급하고; 12) I2O는 호스트에서 명령하고 I/O 디바이스들 사이에 멀티워드 프로토콜과 가변 페이로드를 갖는 MPI를 통해 전송이 이루어져, 적어도 6개의 32-비트 워드나 192 바이트가 필요하다.
발명의 요약
디바이스 드라이버 모델은 현재 모델에서 OS 가상 메모리 공간은 물론 응용 소프트웨어 공간 부터 디바이스 포트에 있는 모든 물리적 계층 디바이스 드라이버 코드들을 없애 OS와 응용 메모리 공간에 이들 코드가 보이지 않는다. 이것을 지원하는 FIFO 지향 I/O 디바이스가 구현되어, 호스트 컴퓨터 시스템이나 프로세서를 하나처럼 보이도록 한다.
OS 메모리 공간에서 물리적 계층 디바이스 드라이버가 없어지면, 디바이스를 액세스하고 제어할 수 있는 수단이 있어야 한다. 이것은 각각의 디바이스의 2개의 포트인, 데이터포트와 제어포트에 의해 이루어진다. 데이터포트에서는 동기적 데이터 버스트전송만 가능하고, 명령어 바이트코드 형태인 제어 워드는 제어포트에서 일어난다. 바이트코드는 상위계층에 대해 균일하고 단일한 디바이스 액세스 모델을 제공한다. 바이트코드는 프로토콜이 적고 훨씬 더 간단하며 직접 어드레싱이 가능한 점에서 MPI와는 크게 다르고, MPI의 리퀘스트-리플라이 프로토콜이 필요치 않아 기본적으로 더 빠르다.
모든 I/O 디바이스는 2가지 기능만 필요한데; 첫째는 제어포트에 의해 수신된 컨피규레이션 제어이며, 둘째는 데이터포트를 통한 데이터의 동기적 버스트전송이다. I/O 디바이스 자체 외부에서는 어떤 디바이스-지정 코드들도 불필요하므로, 물리적 계층 디바이스 드라이버 코드가 불필요하다. 이런 디바이스 드라이버 모델은 OS에 대한 완전한 하드웨어 추상화가 가능하다.
디바이스 바이트코드는 개념적을 CPU ISA(instruction-set-architecture)와 비슷하지만 PC의 메인 CPU가 아닌 디바이스 모듈에서 구현된다. 이런 디바이스 바이트코드는 I/O 중재기와 동시에 작용하는 것으로, 특정 CPU에 종속되지 않는 새로운 컴퓨터 모듈과 아키텍처를 제시함과 동시에, 물리적 디바이스 드라이버를 없앨 수 있다. 새로운 모델은 DMA 엔진, 멀티버스, 멀티-중재기, PCI와 같은 모든 I/O 버스도 불필요하다.
예컨대 LAN 액세스 디바이스의 관점에서, 새로운 디자인이 새로운 LAN 컨트롤러칩이 필요할 경우, LAN 보드 디자이너는 LAN 액세스 사양을 확인하기만 하면 되고, 물리적 계층 디바이스 드라이버 코드에 해당하는 레지스터-지정 프로그래밍에 대해서는 걱정할 필요가 없다. 따라서, 결코 충분히 구현되지 않더라도 현대의 OS에 실제로 필요하다.
본 발명의 디바이스 드라이버 모델의 3가지 장점은:
i. 휴대형 디바이스: 완전한 하드웨어 추상화와 하드웨어 독립; I/O 모듈을 디바이스 드라이버 코드가 없는 컴퓨터 시스템처럼 사용할 수 있어, 디바이스 제조업자가 모든 OS 지정 코드를 라이트할 필요가 없다;
ii. 물리적 디바이스 드라이버가 디바이스 자체에서 실행되기 때문에 메인컴퓨터 프로세서가 물리적 디바이스 드라이버 코드를 실행할 필요가 없어, 빌트인 병렬 프로세싱이 가능;
iii. 복잡한 종래의 컴퓨터 프로토콜, 예컨대 멀티버스, 멀티-중재기, DMA d엔진, 버스 브리지, 및 PCI와 같은 버스커넥터가 불필요.
논리적 계측 측면에서, 바이트코드는 OS 메모리공간에 있는 I/O의 논리적 디바이스 드라이버에 의해 보내진 I/O 디바이스의 컨피규레이션 제어워드와 같은 역할을 한다. 이런 바이트코드는 초기화 시퀀스중에 보내지는 하나의 워드인 것이 보통이다. 바이트코드는 시스템 데이터버스로 보내지고, 시스템 어드레스 라인 및 3개의 동기적 버스트전송 신호인 CLK, STP1, STP2 신호들과 같이 사용되어야 한다. 어드레스된 I/O 디바이스가 제어포트를 통해 바이트코드를 받으면, 데이터의 동기적 버스트전송이 데이터포트를 통해 이루어질 수 있다.
도 1은 CPU와 I/O 중재기를 갖는 OS-디바이스 모델의 블록도;
도 2는 도 1의 device-1 데이터경로의 확대된 블록도;
도 3은 2개의 6-비트 디바이스 필드와 하나의 1-비트 제어-데이터 포트 선택을 위해 13-비트 어드레스 라인들을 이용하는 어드레싱 과정을 보여주는 도면;
도 4는 OS 소프트웨어 메모리공간, 바이트코드, 물리적 디바이스 드라이버 코드, HAL, 및 공급자지정 디바이스 하드웨어의 관계를 보여주는 블록도;
도 5는 좌측의 HAL의 위치와 우측의 본 발명의 모델을 보여주도록 도 4를 단순화한 형태의 블록도.
도 2는 도 1의 device-1 데이터경로의 확대된 블록도;
도 3은 2개의 6-비트 디바이스 필드와 하나의 1-비트 제어-데이터 포트 선택을 위해 13-비트 어드레스 라인들을 이용하는 어드레싱 과정을 보여주는 도면;
도 4는 OS 소프트웨어 메모리공간, 바이트코드, 물리적 디바이스 드라이버 코드, HAL, 및 공급자지정 디바이스 하드웨어의 관계를 보여주는 블록도;
도 5는 좌측의 HAL의 위치와 우측의 본 발명의 모델을 보여주도록 도 4를 단순화한 형태의 블록도.
도 4의 단순화 버전인 도 5는 현재의 디바이스 드라이버(500)의 단순화한 모델을 본 발명의 실시예(510)와 비교한 것이다. 도 5에 도시된 것처럼, 하드웨어 디바이스를 구현하는 현재의 OS 모델은 시스템 메모리공간(501) 안에 HAL(502; hardware abstraction layer)를 둔다. HAL(502)의 디바이스 사양 코드는 제어라인(504)을 통해 디바이스(503)를 직접 제어한다. 이런 시스템 메모리 공간(502)은 점선 박스(505) 안에있는 모든 것으로 정의된다. OS 커널(506)이 HAL(502) 코드를 실행하는데, 이는 OS 메모리공간(501) 안에 있기 때문이다.
우측의 본 발명의 실시예(510)에서는 HAL(512)이 시스템 메모리공간(511) 밖이면서 디바이스(513) 자체내에 있다. 이런 OS에서는 바이트코드(514)를 통해 HAL(512)에 액세스한다. OS 커널(516)은 논리적 디바이스 드라이브(517)를 통해서만 디바이스(513)에 액세스할 수 있고 HAL(512) 코드를 바로 실행할 수는 없는데, 이는 OS 메모리공간(511) 밖에 있기 때문이다. 논리적 디바이스 드라이버(517)는 데이터 전송을 요청하고, 바이트코드(514)를 통해 디바이스(513)를 구성할 수 있다. 이제 디바이스(513)는 외부에 제어라인(504)을 전혀 제공하지 않고, 도 3에 도시된 종류의 디바이스(300)와 같은 바이트코드(514)를 이용해서 동일한 성능과 서비스를 낼 수 있다.
이제 도 1~4를 참조하여 자세히 설명한다.
device-1(102)는 디바이스의 데이터 경로에 관한 것으로서, 모든 다른 디바이스들을 대표하여 설명한다. 도 1에 도시된 바와 같이, device-1(102)는 시스템 I/O 중재기(101) 및 시스템 프로세서(100)와 관련된다. device-1(102)의 데이터경로와 I/O 중재기(101)에 대한 위치와 시스템의 기능적 동작이 도 2에 도시된다.
도 4의 OS 디바이스는 다른 데이터라인(426)을 갖는 모든 공급자-지정 하드웨어를 포함할 수 있는데, 이런 데이터라인은 직렬데이터, 4-비트 와이드-패러렐 데이터, 바이트-와이드 패러렐 데이타 또는 풀 32-비트 워드데이터를 이용한다. I/O 포트(410) 밖에 있는 device-1(430)은 I/O 포트 엔진-1(423)에 직접 연결되고, I/O 포트 엔진-1(423)은 단순히 FSM(424; finite state machine)으로 이루어지거나 좀더 복잡하게 전용 프로세서(425)를 더 포함할 수 있다. 포트엔진-1(423)은 바이트코드(407)를 실행하는 직병렬 변환을 하여, 신호라인(427)을 제어하고, FIFO를 제어하며(419,420), HAL(422) 코드를 실행한다.
포트엔진 FSM(424)은 3가지 동기신호인 CLK(412), STP1(413), STP2(414)와 함께 제어포트(415)에 제시된 바이트코드(407)를 읽도록 프로그램된다. 제어포트(415)는 도 3의 DA12=1(304)가 데이터버스(408)의 데이터워드가 바이트코드(416)라는 것을 I/O 포트(410)에 알려줄 때 13-비트 어드레스 라인(418)을 기초로 선택된다. 바이트코드(407)를 전송해야 한다면, FSM(424)이 디바이스 제어워드 버퍼(421)에서 바이트코드(407)를 버퍼한다. 이어서 활성 STP1(413) 신호에 의한 버스트전송이 끝났을 때 FSM(424)이 버퍼(421)에서 바이트코드(421)를 실행한다. 바이트코드(421)는 초기화나 컨피그레이션 단계에서만 실행되는 것이 보통이다. 바이트코드(421)가 실행되면, 데이터의 버스트 전송을 시작할 수 있다.
FSM(424)는 디바이스 프로세서(425)를 위한 명령어 코드(421)로서 바이트코드(407)를 다운받을 수도 있다. 이 경우, 디바이스 프로세서(425)가 필요할 때 HAL(422) 코드를 실행할 수 있어, 디바이스의 기능을 장래 업그레이드하는데 특히 유용하다.
I/O 포트(430)가 컨피그되면, 데이터 워드의 버스트전송이 데이터포트(411)에서 일어날 수 있는데, 특히 DA12=0(304)일 때 13-비트 어드레스 라인(418)에 의해 선택되었을 때 그렇다. 따라서, DA11~DA6으로부터 디바이스 ID(300)의 3자리 16진법(hex) 어드레스를 정하고 3자리 hex 넘버 앞에 "1"을 붙여 I/O 포트(410)로 데이터워드의 버스트전송을 선택하거나, 0x1000을 추가하여 디바이스 제어포트(415)를 선택한다. 예컨대, 디바이스 ID=0x509에 대해 데이터포트를 어드레스하고, DA12=1이면 디바이스 ID=0x1509가 되어 제어포트가 어드레스된다.
특정 I/O 포트(410)를 정하는 13-비트 어드레스 라인들(418,300)과 관련 하드웨어 디바이스는 도 3과 같은 어드레스 체계(300)를 따른다. I/O 포트(410)와 디바이스 넘버링 체계(300)는 임의의 어드레스 오프셋(418,300)처럼 변해서는 안되고, 아무런 디바이스 매핑이 불필요하여 액세스 타임을 높일 필요가 없는 인스톨된 정확한 디바이스를 넘버로 식별한다.
디바이스 어드레스들은 커널(401) 물리적 어드레스(409)내의 디바이스 공간의 오프셋 어드레스(300)로부터 시작한다. 어드레스는 2가지 사양만 갖는 13-비트 어드레스(418)를 필요로 하는데; 예컨대 (가장 중요한 비트인) MSb 필드(301) A11~A6은 디바이스의 종류(HDD, LAN 등)를 규정하고, LSb는 데이터포트(411)나 제어포트(415)를 선택하는 디바이스 넘부(302) A5~A0, A12를 규정한다. 어드레스가 짧을수록 인터페이스 라인이 적어지고 2개의 어드레스-데이터 위상들을 PCI 프로토컬처럼 할 필요가 줄어들어 유리하다. 도 3은 디바이스 넘버링 체계(300)와 SATA 드라이브(305), USB 디바이스(306), LAN 디바이스(307), 사운드 디바이스(308)에 할당하는 방식을 보여주는 일례이다.
직렬형태일 수 있는 외부 device-1(430)로부터의 데이터라인(426)은 디바이스에만 특유한 제어신호라인(427)을 이용해 워드내 바이트의 일부를 I/O 포트(410)로 보낸다. 포트엔진-1(423)은 32-비트 워드인 시스템의 버스 사이즈(408)에 수신된 어떤 데이터 포맷도 변환하고, 초기화된 사이즈에 맞게 다 찰 때까지 송신 FIFO-1(419)에 버퍼한다. 다 차면, FSM(424)이 I/O 중재기(101)로의 인터럽트(107)를 활성화하여, 데이터워드를 버스트전송할 준비가 되었음을 프로세서(100)에 알려준다. 프로세서(100)는 ISR(404; interrupt service routine)을 통해 데이터블록(406)을 받는데, 이때 동일한 CLK(412), STP1(413), STP2(414) 신호들을 이용해 메인메모리(405)에 데이터블록을 동기적으로 보낸다.
I/O 포트-1(410)는 데이터포트(411)가 선택되었을 때 3개의 동기신호(412,413,414)와 같이 프로세서(401)로부터 데이터블록(406)을 받아 초기화된 사이즈에 맞게 다 찰때까지 수신 FIFO-1(420)에 이들을 버퍼한다. 다 차면, FSM(424)가 데이터워드를 리드하고 device-1(430)의 데이터포맷으로 필요한 변환을 하며, 이 데이터블록을 제어신호라인(427)을 통해 device-1(430)에 전송하기 시작한다.
Claims (7)
- OS 커넬과 논리적 디바이스 드라이버를 갖는 제1 디바이스를 제공하는 단계;
물리적 디바이스 드라이버와 이런 물리적 디바이스 드라이버에 의해 실행되는 물리적 디바이스 드라이버 코드를 갖고, I/O 디바이스인 제2 디바이스를 제공하는 단계;
제1 디바이스가 전송한 컨피규레이션 제어를 제2 디바이스의 제어포트가 받는 단계; 및
제1 디바이스가 전송한 동기적 버스트전송을 제2 디바이스의 데이터 포트가 받는 단계;를 포함하고,
로컬 어드레싱 체계, 및 제어포트와 데이터포트를 통한 바이트코드가 균일 시스템내에 있어, 제1 디바이스가 제2 디바이스에 액세스하여 제어할 수 있고, 제2 디바이스의 디바이스-지정 코드들이 제1 디바이스에 저장되지 않는 것을 특징으로 하는, 디바이스의 균일 액세스 방법. - 제1항에 따른 방법을 구현하기 위한 디바이스에 있어서:
적어도 한쌍의 송수신 FIFO; 및
상기 FIFO를 중재하여 시스템 데이터버스로의 액세스를 중재하는 I/O 중재기;를 포함하고,
상기 디바이스가 I/O 중재기, 디바이스 바이트코드 및 적어도 3개의 동기 버스터전송 신호들의 상호작용을 이용해 개선된 컴퓨터 프로토콜을 달성하며;
동기적 버스트전송이 CPU에 의해 공급된 클록틱마다 메인메모리에 대한 32-비트 데이터의 병렬전송인 것을 특징으로 하는 디바이스. - 제1항에 있어서, 상기 데이터포트가 동기신호 CLK, STP1 및 STP2를 이용해 동기적 버스트전송을 지원하며; 상기 제어포트는 모든 하드웨어와 OS 플랫폼에 있는 디바이스 바이트코드를 이용해 액세스되고; 상기 디바이스 바이트코드는 제어포트에서 선택된 디바이스로 보내진 32-비트 워드나 워드 블록으로서, 데이터 블록의 전송에 필요한 정보를 규정하는 것을 특징으로 하는, 디바이스의 균일 액세스 방법.
- 제1항에 있어서, 13-비트 어드레스 라인을 이용해 선택된 제어포트에 바이트코드나 바이트코드 블록이 보내지고, 제어포트로의 워드의 버스트전송이 특정 포트를 결정하는 13-비트 어드레스 라인들 중의 bit-12로 이루어지며, bit-12=1일 때 제어포트가 선택되는 것을 특징으로 하는, 디바이스의 균일 액세스 방법.
- 제3항에 있어서, 13-비트 어드레스 라인을 이용해 데이터포트가 선택되면 이 데이터포트에서 동기적 버스트전송이 이루어지고, 프로세서 메모리공간으로부터의 워드의 동기적 버스트전송은 특정 포트를 결정하는 13-비트 어드레스 라인들 중의 bit-12로 이루어지며, bit-12=0일 때 데이터포트가 선택되는 것을 특징으로 하는, 디바이스의 균일 액세스 방법.
- 제4항에 있어서, 시스템의 물리적 어드레스내의 디바이스의 오프셋 어드레스에 둘 수 있는 13-비트 어드레스 라인들에 의해 디바이스 ID가 결정되고; 13-비트 어드레스 라인들은 6-비트 MSb와 6-비트 LSb의 2개의 필드로 나누어지는데, 6-비트 MSb 필드는 HDD, LAN을 포함한 디바이스의 종류를 규정하며, 6-비트 LSb 필드는 device-0부터 device 63(0x3f)까지의 디바이스 넘버를 규정하고; 상기 2개 필드가 고유 디바이스 ID를 구성하여, 4096 디바이스들의 최대 넘버를 고유하게 할당할 수 있는 것을 특징으로 하는, 디바이스의 균일 액세스 방법.
- 제1항에 있어서, 코드를 실행하는 제1 디바이스와, 연결된 물리적 디바이스 드라이버 코드들을 실행하는 제2 디바이스의 시스템 프로세서로 제 디바이스의 시스템에서이루어지는 병렬처리를 할 수 있고; 제2 디바이스의 물리적 디바이스 드라이버가 제1 디바이스의 시스템의 메모리공간에서 보이지 않는 물리적 디바이스 드라이버 코드들을 제2 디바이스 자체내에서 실행하기 때문에 제1 디바이스의 메인컴퓨터 프로세서가 물리적 디바이스 드라이버 코드들을 실행할 필요가 없는 것을 특징으로 하는, 디바이스의 균일 액세스 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210083657A KR102333541B1 (ko) | 2014-09-26 | 2021-06-28 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140128832A KR20160036795A (ko) | 2014-09-26 | 2014-09-26 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
KR1020210083657A KR102333541B1 (ko) | 2014-09-26 | 2021-06-28 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140128832A Division KR20160036795A (ko) | 2014-09-26 | 2014-09-26 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210099534A KR20210099534A (ko) | 2021-08-12 |
KR102333541B1 true KR102333541B1 (ko) | 2021-12-01 |
Family
ID=55800066
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140128832A KR20160036795A (ko) | 2014-09-26 | 2014-09-26 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
KR1020210083657A KR102333541B1 (ko) | 2014-09-26 | 2021-06-28 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140128832A KR20160036795A (ko) | 2014-09-26 | 2014-09-26 | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 |
Country Status (1)
Country | Link |
---|---|
KR (2) | KR20160036795A (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090128605A (ko) * | 2008-06-11 | 2009-12-16 | 삼성전자주식회사 | 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를구동하기 위한 디바이스 드라이버 |
KR101517835B1 (ko) * | 2008-08-04 | 2015-05-07 | 삼성전자주식회사 | 프로세서간 통신을 위한 아이피씨 드라이버를 포함하는프로세서, 시스템 및 기록 매체 |
KR102333544B1 (ko) * | 2014-09-26 | 2021-12-01 | 유니버시티 테크놀로지 말레이시아 | 마이크로컴퓨터 시스템용 인터럽트-구동 i/o 중재기 |
-
2014
- 2014-09-26 KR KR1020140128832A patent/KR20160036795A/ko not_active Application Discontinuation
-
2021
- 2021-06-28 KR KR1020210083657A patent/KR102333541B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20210099534A (ko) | 2021-08-12 |
KR20160036795A (ko) | 2016-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5999989A (en) | Plug-and-play | |
US7506087B2 (en) | Method for configuring a Peripheral Component Interconnect Express (PCIE) | |
US8719483B2 (en) | Multi-root PCI express switch, boot method thereof, and multi-root PCI manager program | |
US5729767A (en) | System and method for accessing peripheral devices on a non-functional controller | |
KR101324844B1 (ko) | 기능 변환 시스템 및 방법과 변환 수행 시스템 | |
US6119192A (en) | Circuit and method for configuring a bus bridge using parameters from a supplemental parameter memory | |
US7003627B2 (en) | Deferred tuple space programming of expansion modules | |
USRE41904E1 (en) | Methods and apparatus for providing direct memory access control | |
US6785746B1 (en) | Dual-channel SCSI chips and methods for configuring separate interoperability of each channel of the SCSI chip | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
US20020023179A1 (en) | Method and apparatus for providing support for dynamic resource assignment and configuation of peripheral devices when enabling or disabling plug-and-play aware operating systems | |
KR100764921B1 (ko) | 장치 이뉴머레이션을 위한 가상 rom | |
CN112005211A (zh) | 用于异构片上系统的软件定义多域创建和隔离 | |
WO2017174000A1 (en) | Dynamic partitioning of processing hardware | |
JP4562107B2 (ja) | 複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのダイレクトメモリアクセスエンジン | |
KR102568906B1 (ko) | PCIe 디바이스 및 그 동작 방법 | |
WO2000019292A2 (en) | Upgrade card for a computer system | |
US9158552B2 (en) | Adaptive device driver method and system | |
US6820149B2 (en) | Method, system, and program for testing a bus interface | |
US10114770B2 (en) | Homogenous device access method which removes physical device drivers in a computer operating system | |
KR102333541B1 (ko) | 컴퓨터 운용체제에서 물리적 디바이스 드라이버를 없애는 디바이스 액세스 방법 | |
US8892784B2 (en) | Adaptive apparatus | |
US11650930B2 (en) | Reconfigurable memory mapped peripheral registers | |
GB2367918A (en) | Batch methods for accessing IDE task registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |