KR20130046440A - 인터럽트-기반 코맨드 프로세싱 - Google Patents

인터럽트-기반 코맨드 프로세싱 Download PDF

Info

Publication number
KR20130046440A
KR20130046440A KR1020137007382A KR20137007382A KR20130046440A KR 20130046440 A KR20130046440 A KR 20130046440A KR 1020137007382 A KR1020137007382 A KR 1020137007382A KR 20137007382 A KR20137007382 A KR 20137007382A KR 20130046440 A KR20130046440 A KR 20130046440A
Authority
KR
South Korea
Prior art keywords
command
interrupt
client
execution
completion
Prior art date
Application number
KR1020137007382A
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 퀄컴 인코포레이티드
Publication of KR20130046440A publication Critical patent/KR20130046440A/ko

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

일반적으로, 본 개시물은 디바이스/모듈간 코맨드 실행에 관한 컴퓨터 시스템의 디바이스들/모듈들 간의 통신을 허용하는 기법들을 설명한다. 본 명세서에 설명된 기법들에 따라, 컴퓨팅 시스템의 작동 디바이스는 클라이언트로부터 작동 디바이스 상에서 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신할 수 있다. 작동 디바이스는 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 추가로 수신할 수 있다. 작동 디바이스는 적어도 하나의 코맨드 완료 표시자가 수신되었던 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시킬 수 있다. 인터럽트는 일반적 인터럽트 또는 클라이언트-특정 인터럽트일 수 있다. 이 방식으로, 작동 디바이스 코맨드 실행의 클라이언트 모니터링에 의하여 야기되는 비효율성들이 감소될 수 있다.

Description

인터럽트-기반 코맨드 프로세싱 {INTERRUPT-BASED COMMAND PROCESSING}
본 출원은 컴퓨터 시스템의 모듈들 또는 디바이스들 사이의 코맨드들의 향상된 프로세싱에 관련된다.
통상적인 컴퓨터 시스템들은 데이터 프로세싱, 메모리 저장, 명령 프로세싱 등을 위한 지정된 기능들을 수행하는 다수의 상이한 디바이스들 또는 디바이스들 내의 모듈들을 이용한다. 예를 들어, 컴퓨터 시스템은 시스템의 다른 컴포넌트들, 예를 들어 랜덤 액세스 메모리(RAM), 하드 드라이브, 또는 고체 상태 메모리들과 인터페이싱하고 프로그램 명령들을 실행하는 중앙 처리 장치(CPU)를 이용할 수 있다. 몇몇 컴퓨터 시스템들은 그래픽 데이터 및/또는 명령들의 프로세싱에 전용되는 그래픽 처리 장치(GPU)와 같은, 전용된 기능을 위한 하나 초과의 프로세서 컴포넌트를 이용한다. 다른 컴퓨터 시스템들은 다수의 범용 프로세서 컴포넌트들을 이용할 수 있다.
다수의 경우들에서, 클라이언트 디바이스는 작동 디바이스로부터 하나 또는 그 초과의 코맨드들의 실행을 요청할 수 있다. 예를 들어, CPU 디바이스 또는 모듈은 GPU 디바이스 또는 모듈로부터 일련의 코맨드들(프로그램)의 실행을 요청할 수 있는데, 이는 GPU가 그래픽 코맨드들의 프로세싱을 위해 특별히 적응되기 때문이다. 다른 예에서, CPU는 일련의 코맨드들이 하나 또는 그 초과의 메모리 디바이스들 또는 모듈들에 데이터를 저장하기 위하여 실행되도록 요청할 수 있다. 또 다른 예에서, 메모리 디바이스 또는 제어기 모듈은 프로세스로부터 초래되는 데이터의 저장 이전에 CPU 또는 GPU 디바이스 또는 모듈에 의한 데이터의 프로세싱을 요청할 수 있다.
일반적으로, 본 개시물은 디바이스/모듈간 코맨드 실행에 관한 컴퓨터 시스템의 디바이스들/모듈들 간의 통신을 허용하는 기법들을 설명한다. 작동 디바이스는 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신할 수 있다. 작동 디바이스는, 적어도 하나의 코맨드 완료 표시자가 수신되었던 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시킬 수 있다. 인터럽트는 일반적 인터럽트 또는 클라이언트-특정 인터럽트일 수 있다. 이 방식으로, 작동 디바이스 코맨드 실행의 클라이언트 모니터링에 의하여 야기되는 비효율성들이 감소될 수 있다.
일 예에서, 방법은, 작동 디바이스에 의하여 하나 또는 그 초과의 클라이언트들로부터, 작동 디바이스에 의해 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하는 단계를 포함한다. 방법은 작동 디바이스에 의하여 하나 또는 그 초과의 클라이언트들로부터, 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하는 단계를 더 포함한다. 방법은, 적어도 하나의 코맨드 완료 표시자가 수신되었던 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시키는 단계를 더 포함한다.
다른 예에서, 디바이스는 코맨드들을 실행하도록 작동가능한 디바이스 실행 모듈을 포함한다. 디바이스는 하나 또는 그 초과의 클라이언트들로부터, 디바이스 실행 모듈에 의하여 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하도록 구성되는 코맨드 수신 모듈을 더 포함한다. 디바이스는 하나 또는 그 초과의 클라이언트들로부터, 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하도록 구성되는 인터럽트 제어 모듈을 더 포함한다. 인터럽트 제어 모듈은, 코맨드 완료 표시자가 수신되었던 코맨드의 실행의 완료 시, 코맨드 완료 표시자가 수신되었던 코맨드가 실행을 완료하였음을 표시하는 인터럽트를 발생시키도록 구성된다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 프로그램가능 프로세서로 하여금, 하나 또는 그 초과의 클라이언트들로부터, 프로그램가능 프로세서에 의하여 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하게 하기 위한 명령들을 포함한다. 컴퓨터 판독가능 저장 매체는, 프로그램가능 프로세서로 하여금, 하나 또는 그 초과의 클라이언트들로부터, 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트가 실행의 완료를 대기하고 있는 적어도 하나의 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하게 하기 위한 명령들을 더 포함한다. 컴퓨터 판독가능 저장 매체는, 프로그램가능 프로세서로 하여금 코맨드 완료 표시자가 수신되었던 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시키게 하기 위한 명령들을 더 포함한다.
다른 예에서, 디바이스는, 하나 또는 그 초과의 클라이언트들로부터, 디바이스에 의해 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하기 위한 수단을 포함한다. 디바이스는, 하나 또는 그 초과의 클라이언트들로부터, 하나 또는 그 초과의 코맨드들 중, 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 적어도 하나의 코맨드의 적어도 하나의 코맨드 완료 표시자를 수신하기 위한 수단을 더 포함한다. 디바이스는, 적어도 하나의 코맨드 완료 표시자가 수신되었던 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시키기 위한 수단을 더 포함한다.
하나 또는 그 초과의 예들의 세부사항들은 첨부된 도면들 및 하기의 설명에서 진술된다. 다른 특징들, 목적들 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백해질 것이다.
도 1은 본 개시물과 일치하는 예시적인 컴퓨팅 시스템을 예시하는 블록도이다.
도 2는 본 개시물과 일치하는 예시적인 컴퓨팅 시스템을 예시하는 블록도이다.
도 3a는 본 개시물과 일치하는 작동 디바이스의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 3b는 본 개시물과 일치하는 클라이언트의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 4a는 본 개시물과 일치하는 작동 디바이스의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 4b는 본 개시물과 일치하는 클라이언트의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 5a는 본 개시물과 일치하는 작동 디바이스의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 5b는 본 개시물과 일치하는 클라이언트의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 6a는 본 개시물과 일치하는 작동 디바이스의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 6b는 본 개시물과 일치하는 클라이언트의 관점으로부터의 디바이스/모듈간 코맨드 실행에 관한 통신들을 위한 방법의 일 예를 예시하는 흐름도이다.
도 7은 도 8-10에 관하여 설명된 프로세스들에 의해 이용되는 작동 디바이스(22)의 컴포넌트들의 일 예를 예시하는 블록도이다.
도 8은 본 개시물과 일치하는 디바이스/모듈간 코맨드 실행에 관한 통신들을 용이하게 하기 위하여 클라이언트 디바이스 상에서 구동하도록 적응된 프로세스의 일 예를 예시하는 흐름도이다.
도 9는 본 개시물과 일치하는 디바이스/모듈간 코맨드 실행에 관한 통신들을 용이하게 하기 위하여 작동 디바이스 상에서 구동하도록 적응된 프로세스의 일 예를 예시하는 흐름도이다.
도 10은 본 개시물과 일치하는 디바이스/모듈간 코맨드 실행에 관한 통신들을 용이하게 하기 위하여 작동 디바이스 상에서 구동하도록 적응된 인터럽트 발생 프로세스의 일 예를 예시하는 흐름도이다.
다수의 컴퓨팅 시스템들 또는 디바이스들은 컴퓨팅 시스템의 특정 기능들을 수행하는 다수의 이산 컴포넌트들(예를 들어, 디바이스들 또는 모듈들)로 분할된다. 컴퓨팅 시스템의 상이한 컴포넌트들은 단일 하드웨어 디바이스에 구현될 수 있거나, 또는 다수의 별개의 전문화된 디바이스들에 구현될 수 있다. 예컨대, 컴퓨팅 시스템의 상이한 컴포넌트들은 하나 또는 그 초과의 마이크로프로세서들, 주문형 집적 회로들(ASIC들), 필드 프로그램가능 게이트 어레이들(FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합들로서 구현될 수 있다.
예를 들어, 컴퓨팅 시스템은 하나 또는 그 초과의 프로세서들 및/또는 하나 또는 그 초과의 저장(예를 들어, 메모리) 컴포넌트들을 이용할 수 있다. 컴퓨팅 시스템은 범용 프로세서들 및/또는 메모리 컴포넌트들(CPU, RAM 메모리, 하드-드라이브 메모리) 모두를 이용할 수 있으며, 특정 태스크들에 적응되는 컴포넌트들, 예를 들어 그래픽 처리 장치(GPU) 또는 프로세싱을 위해 그래픽 데이터를 저장하기 위한 캐시 메모리를 추가로 이용할 수 있다. GPU는 미디어 관련 업무량들, 예컨대 비디오 및 오디오 코딩/디코딩, 압축, 그래픽 렌더링, 비디오 및 오디오 신호 프로세싱 등의 성능을 향상시키는 전문화된 프로세서일 수 있다. 몇몇 예들에서, GPU는 무선 통신 디바이스(예를 들어, 무선 모바일 핸드셋 또는 디바이스), 디지털 카메라, 디지털 텔레비전(TV), 비디오 카메라, 비디오 전화, 디지털 멀티미디어 플레이어, 개인용 디지털 단말(PDA), 비디오 게임 콘솔, 개인용 컴퓨터 또는 랩탑 디바이스, 스마트북/스마트폰 또는 다른 유사한 디바이스 내에 포함될 수 있다.
통상적인 컴퓨팅 시스템 환경에서, 상기 언급된 이산 컴포넌트들은 컴퓨팅 시스템의 다른 이산 컴포넌트들로부터의 태스크 또는 기능의 실행을 요청하도록 적응될 수 있다. 예를 들어, CPU와 같은 클라이언트 디바이스는 GPU와 같은 작동 디바이스로부터의 그래픽 관련 데이터 또는 명령들의 프로세싱에 관한 코맨드들의 실행을 요청할 수 있다. 다른 예에서, GPU(클라이언트)는 CPU(작동 디바이스)로부터의 비-그래픽 데이터 또는 명령들의 프로세싱을 요청할 수 있다. 다른 예들에서, CPU 또는 GPU(클라이언트 디바이스)는 실행될 명령들을 위한 RAM 메모리 또는 저장될 데이터를 위한 하드-드라이브 메모리와 같은 메모리(작동 디바이스)에 대한 데이터 또는 명령들의 저장을 요청할 수 있다. 마찬가지로, 메모리 컴포넌트(클라이언트 디바이스) 또는 제어기는 메모리 컴포넌트에 의한 데이터의 세이빙(saving) 이전에 CPU 또는 GPU(작동 디바이스)로부터의 명령들의 실행을 요청할 수 있다.
도 1은 본 명세서에 제공되는 개시내용에 일치하는 그러한 컴퓨팅 시스템의 코맨드 프로세싱 양상들 및 예시적인 컴퓨팅 시스템(2)의 컴포넌트들을 예시하는 블록도이다. 도 2에 도시된 바와 같이, 시스템(2)은 시스템(2)의 컴포넌트들로서 본 명세서에 참조되는 다수의 이산 디바이스들 또는 모듈들을 포함한다. 시스템(2)의 컴포넌트들은 전용 프로세서 또는 메모리 하드웨어와 같은 개별적인 그리고 별개의 하드웨어 컴포넌트들일 수 있다. 시스템(2)의 다수의 컴포넌트들은 대신에 하드웨어 컴포넌트들을 공유할 수 있는데, 예를 들어, 여기서 CPU, GPU 및/또는 메모리가 주문형 집적 회로(ASIC) 또는 필드 프로그램가능 게이트 어레이(FPGA)와 같은 단일 칩에 내장된다.
시스템(2)은 다수의 클라이언트들(4a-4e)(총칭하여, 클라이언트들(4)) 및 적어도 하나의 작동 디바이스(22)를 포함한다. 다수의 클라이언트들(4a-4e)은 시스템 버스(6)를 통해 작동 디바이스(22)에 커플링될 수 있다. 버스(6)는 컴포넌트들(4 및 22) 중 임의의 것 사이의 통신, 예를 들어, 클라이언트들(4a-4e) 중 하나 또는 그 초과의 것에 의한 코맨드들의 통신이 작동 디바이스(22)에 의하여 실행되는 것을 인에이블시키도록 작동가능하다.
도 1의 예에 도시된 바와 같이, 클라이언트들(4a-4e) 중 하나 또는 그 초과의 것은 작동 디바이스(22)에 의한 하나 또는 그 초과의 코맨드들의 실행을 요청할 수 있다. 몇몇 경우들에서, 다수의 클라이언트들(4a-4e)은 동시에 또는 거의 동시에 작동 디바이스(22)에 의한 코맨드 실행을 요청할 수 있다. 도 1의 시스템(2)에 따라, 클라이언트들(4a-4e) 각각은 작동 디바이스(22)에 의한 코맨드 실행을 요청한다. 도시된 바와 같이, 클라이언트(4a)는 코맨드들 A, B 및 C의 실행을 요청하고, 클라이언트(4b)는 코맨드 D의 실행을 요청하고, 클라이언트(4c)는 코맨드 E의 실행을 요청하고, 클라이언트(4d)는 코맨드들 F 및 G의 실행을 요청하며, 클라이언트(4e)는 코맨드 H의 실행을 요청한다.
도 1에 또한 도시된 바와 같이, 클라이언트들(4a-4e)은 프로세스, 예를 들어, 프로그램 또는 다른 세트의 코맨드 명령들의 형태로, 단일 코맨드(각각, 클라이언트들(4b, 4c 및 4e); 코맨드들 D, E 및 H)의 실행을 요청할 수 있거나, 또는 다수의 코맨드들(각각, 클라이언트들(4a 및 4d), 코맨드들 A-C로 구성되는 프로세스(10a) 및 코맨드들 F 및 G로 구성되는 프로세스(10b))의 실행을 요청할 수 있다. 도 1에 도시된 프로세스들(lOa-b) 및 코맨드들의 예들은 예시를 목적으로 간략화된다. 통상적으로, 클라이언트는 작동 디바이스(22)에 의하여 실행될 수백 또는 수천 개의 코맨드들로 구성되는 프로세스를 전송할 것이다. 종종, 클라이언트는, 클라이언트가 시스템(2)의 다른 기능을 수행하거나 또는 다른 코맨드들을 실행하기 이전에, 작동 디바이스(22)가 코맨드 또는 프로세스(예를 들어, 프로세스의 마지막 코맨드)의 실행을 완료하도록 요청할 수 있다.
시스템(2)은 코맨드 프로세서 모듈(14)을 포함한다. 코맨드 프로세서 모듈(14)은 클라이언트들(4) 중 하나 또는 그 초과의 것으로부터 하나 또는 그 초과의 작동 디바이스들(22)로 코맨드들을 전달하는 퍼넬(funnel)로서 작동할 수 있다. 코맨드 프로세서 모듈(14)은 클라이언트들로부터 하나 또는 그 초과의 코맨드들을 수신하고, 코맨드들을 순서화(order)하고, 코맨드들을 하나 또는 그 초과의 작동 디바이스들(22)에 할당하며, 코맨드들의 하나 또는 그 초과의 표시들을 작동 디바이스(22)로 송신하도록 적응될 수 있다. 코맨드 프로세서 모듈(14)은 코맨드들이 수신되는 시기에 기반하여 코맨드들을 정렬하고, 수신된 순서로 코맨드들의 표시들을 작동 디바이스(22)로 송신할 수 있다. 코맨드 프로세서 모듈(14)은 순차적으로 특정 프로세스(예를 들어, 도 1의 프로세스들(10a 또는 10b))의 코맨드들을 순서화하지 않을 수 있다. 예를 들어, 코맨드 프로세서 모듈(14)은 프로세스의 실행을 요청한 클라이언트를 제외한 클라이언트들로부터 수신되는 다른 코맨드들과 함께 프로세스(10a)의 코맨드들을 인터리빙할 수 있다.
상기 논의된 바와 같이, 코맨드 프로세서 모듈(14)은 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 하나 또는 그 초과의 작동 디바이스들(22)에 송신할 수 있다. 일 예에서, 하나 또는 그 초과의 코맨드 표시들은 프로그램 명령들일 수 있다. 다른 예들에서, 하나 또는 그 초과의 코맨드 표시들은 저장되거나 프로세싱될 데이터일 수 있다. 또 다른 예들에서, 하나 또는 그 초과의 코맨드 표시들은, 메모리 로케이션, 또는 로케이션의 다른 표시자일 수 있고, 여기서, 프로그램 명령들 또는 데이터는 하나 또는 그 초과의 작동 디바이스들(22)에 의하여 발견되고 리트리브(retrieve)될 수 있다.
코맨드 프로세서 모듈(14)은 다수의 상이한 방식들로 구현될 수 있다. 일 예에서, 코맨드 프로세서 모듈(14)은 CPU 클라이언트와 같은 클라이언트 디바이스들(4a-4e) 중 하나의 일부인 소프트웨어, 펌웨어 또는 하드웨어의 임의의 조합으로 구현될 수 있다. 다른 예들에서, 코맨드 프로세서 모듈(14)은 클라이언트 디바이스들(4a-4e) 중 하나의 일부가 아닌 전용 소프트웨어, 펌웨어 또는 하드웨어의 임의의 조합, 예를 들어, 전용 마이크로프로세서로 구현될 수 있다.
시스템(2)은 코맨드 버퍼(18)를 더 포함한다. 코맨드 버퍼(18)는 하드웨어 레지스터, 메모리 디바이스 또는 메모리 디바이스의 메모리의 블록일 수 있다. 코맨드 버퍼(18)는 입력 코맨드 버퍼를 포함할 수 있다. 입력 코맨드 버퍼는, 작동 디바이스(22)의 디바이스 실행 모듈(20)에 의한 실행을 위해 코맨드 프로세서 모듈(14)을 통해 클라이언트들(4a-4e)로부터 수신되는 코맨드들을 저장하도록 적응되는 하드웨어 레지스터, 메모리 디바이스 또는 메모리 블록일 수 있다. 코맨드 버퍼(18)는 출력 코맨드 버퍼를 더 포함할 수 있다. 출력 코맨드 버퍼는, 작동 디바이스(22) 상에서 실행이 완료된 적어도 하나의 코맨드의 표시들을 저장하도록 적응되는 하드웨어 레지스터, 메모리 디바이스 또는 메모리 블록일 수 있다.
시스템(2)은 코맨드 수신 모듈(24)을 더 포함한다. 코맨드 수신 모듈(24)은 일반적으로 클라이언트들(4)로부터 코맨드들을 수신하고 작동 디바이스(22)의 디바이스 실행 모듈(20)에 의한 실행을 위해 코맨드들을 준비하도록 적응될 수 있다. 일 예에서, 코맨드 수신 모듈(24)은 후속 실행을 위해 코맨드 버퍼(18)의 입력 버퍼에 수신된 코맨드 표시자들을 배치할 수 있다. 예를 들어, 클라이언트, 예를 들어, 클라이언트들(4a-4e) 중 하나의 클라이언트는 코맨드가 작동 디바이스(22) 상에서 실행되도록 요청하는 코맨드 표시를 전송한다. 코맨드 표시들은 코맨드 프로세서 모듈(14)에 의하여 수신되고, 순서화되며, 작동 디바이스(22)로 전송될 수 있다. 코맨드 수신 모듈(24)은 실행될 코맨드의 코맨드 표시를 수신할 수 있다. 코맨드 수신 모듈(24)은 고유 코맨드 식별자를 수신된 코맨드에 할당할 수 있다. 일 예에서, 코맨드 식별자는 이진 숫자일 수 있다. 이진 숫자는 코맨드 식별자가 코맨드 수신 모듈(25)에 의하여 수신될 때마다 증분되는, 연속하여 발생되는 이진 숫자일 수 있다. 코맨드 수신 모듈(24)은 코맨드 버퍼(18)의 입력 버퍼에 코맨드의 표시, 예를 들어, 코맨드 식별자를 배치할 수 있다. 코맨드 수신 모듈(24)은 코맨드의 실행을 요청한 클라이언트에 코맨드 식별자를 리턴할 수 있다. 일 예에서, 코맨드 식별자는 코맨드 프로세서 모듈(14)로 리턴되고, 요청 클라이언트로 재지향(redirect)된다. 다른 예들에서, 코맨드 식별자는 요청 클라이언트로 직접 리턴된다.
클라이언트로 리턴된 코맨드 식별자는 다수의 목적들을 위해 쓰일 수 있다. 일 예에서, 코맨드 식별자는 클라이언트에 의해 발행된 코맨드가 작동 디바이스(22)에 의하여 수신되었고 실행을 위해 준비되었다는 리턴 확인응답의 역할을 할 수 있다. 다른 예로서, 코맨드 식별자는 코맨드가 실행을 완료하였는지 아닌지를 결정하기 위하여 클라이언트가 코맨드의 실행을 모니터링하도록 허용할 수 있다. 코맨드 표시들이 코맨드 수신 모듈(24)에 의하여 수신됨에 따라 코맨드 식별자가 연속하여 발생되고 할당될 수 있기 때문에, 코맨드 식별자는 코맨드들의 실행의 순서를 추가로 표시할 수 있다.
이전에 언급된 바와 같이, 다수의 경우들에서, 특정 클라이언트는, 시스템(2)의 하나 또는 그 초과의 기능들을 계속해서 실행하기 이전에, 작동 디바이스(22)에 의하여 실행될 하나 또는 그 초과의 코맨드들의 실행의 완료를 대기할 수 있다. 일 예에서, 클라이언트는 실행을 완료하기 위하여 프로세스의 마지막 코맨드(예를 들어, 도 1에 예시되는 프로세스(10a)의 코맨드 C)를 대기할 수 있다. 통상적인 컴퓨팅 시스템들에 따라, 코맨드가 실행을 완료하였는지 여부를 결정하기 위하여, 클라이언트는 코맨드 버퍼(18)를 모니터링하여, 클라이언트가 대기하고 있는 특정 코맨드가 완료되었는지 여부를 결정할 수 있다. 그렇게 하기 위하여, 클라이언트는, 작동 디바이스(22)가 원하는 코맨드의 실행을 완료하였음을 표시하는 코맨드 식별자를 출력 코맨드 버퍼가 포함하는지 여부를 결정하기 위하여, 코맨드 버퍼(18)의 출력 코맨드 버퍼의 콘텐츠들을 간헐적으로 "핑(ping)"하거나 또는 리뷰할 수 있다.
클라이언트가 작동 디바이스(22) 코맨드 버퍼(18)를 "핑"하는 것의 필요성은 다수의 이유들로 바람직하지 않을 수 있다. 일반적으로, 코맨드 버퍼(18)를 "핑"하는 것의 필요성은 프로세서인 클라이언트(4)의 CPU 사이클들과 같은, 클라이언트(4) 리소스들에 대한 바람직하지 않은 고갈(drain)을 야기할 수 있다. 클라이언트가 너무 자주 "핑"한다면, 클라이언트의 컴퓨팅 리소스들은 과도하게 스트레스받고, 클라이언트의 기능들 또는 내부적으로 실행되는 코맨드들의 실행을 위한 것과 같이, 다른 목적들을 위해 이용될 수 있는 귀중한 CPU 사이클들을 소모할 수 있다. 클라이언트가 코맨드 버퍼(18)를 너무 드물게 "핑"한다면, 클라이언트는, 실행이 완료되었음을 클라이언트가 알아차리기 이전에 작동 디바이스(22) 상에서 실행되는 코맨드가 실제로 실행을 완료한 이후의 시간 기간 동안 과도하게 대기해야할 수 있고, 따라서 클라이언트에 의한 다른 프로그램들 또는 기능들의 내부적 실행을 지연시킬 수 있다. 이로써, 컴퓨팅 시스템에서 디바이스/모듈간 코맨드 실행에 관한 향상들에 대한 필요성이 존재할 수 있다.
컴퓨팅 시스템 코맨드 실행에서의 상기 언급된 결함들에 응답하여, 디바이스/모듈간 코맨드들에 관한 향상된 통신들을 제공하기 위한 시스템들, 방법들 및 디바이스들이 본 명세서에 개시된다. 다시 도 1을 참고하여, 하나 또는 그 초과의 클라이언트들(예를 들어, 클라이언트들(4a-4e))에 코맨드 완료 모듈(도 1의 코맨드 완료 모듈들(12a- 12e))이 제공되며, 하나 또는 그 초과의 작동 디바이스들(22)에 인터럽트 제어 모듈(16)이 제공된다. 하기에 논의된 다양한 예들에서, 코맨드 완료 모듈(12) 및 인터럽트 제어 모듈(16)은 서로와 그리고 시스템(2)의 다른 시스템들, 모듈들 및 디바이스들과 인터페이싱하여, 디바이스/모듈간 코맨드 실행에 관한 통신을 향상시킨다.
도 2는 본 명세서에 제공되는 개시내용과 일치하는 디바이스/모듈간 코맨드 실행에 관한 통신들을 향상시키도록 적응된 컴퓨팅 시스템(2)의 블록도이다. 설명을 목적으로, 도 2의 시스템(2)은 단지 하나의 클라이언트(4a) 및 하나의 작동 디바이스(22)로만 도시되나, 본 기술분야의 당업자는 시스템(2)이 임의의 수의 클라이언트들 또는 작동 디바이스들에 적용가능함을 인식할 것이다.
도 2에 도시된 바와 같이, 클라이언트(4a)는 버스(6)를 통해 작동 디바이스(22)에 커플링된다. 클라이언트(4a)는 작동 디바이스(22) 상에서 하나 또는 그 초과의 코맨드들의 실행을 원할 수 있다. 클라이언트(4a)는, 시스템(2)의 다른 코맨드들 또는 기능들의 실행을 계속하기 이전에, 하나 또는 그 초과의 코맨드들의 완료를 대기할 수 있다. 도 1에 관하여 상기 논의된 바와 같이, 클라이언트(4a)는 코맨드 프로세서 모듈(14)을 통해 코맨드(예를 들어, 도 1에 도시된 코맨드들 중 하나 또는 그 초과)의 코맨드 표시(50)를 작동 디바이스(22)로 통신할 수 있다. 코맨드 표시(50)는 작동 디바이스(22) 상에서 코맨드를 실행하기 위한 요청을 표시할 수 있다. 코맨드 수신 모듈(24)은 코맨드 식별자(60)를 클라이언트(4a)로 리턴하도록 작동가능할 수 있다.
클라이언트(4a)는 적어도 하나의 코맨드 완료 모듈(12a)을 포함한다. 일반적으로 말해, 코맨드 완료 모듈(12a)은 클라이언트(4a)의 관점으로부터 디바이스/모듈간 코맨드 실행에 관한 통신들을 관리하도록 기능한다. 그에 따라, 코맨드 완료 모듈(12a)은, 클라이언트(4a)가 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 표시하는 적어도 하나의 코맨드 완료 표시자(30)를 송신할 수 있다.
또한, 도시된 바와 같이, 작동 디바이스(22)는 적어도 하나의 인터럽트 제어 모듈(16)을 포함한다. 일반적으로 말해, 인터럽트 제어 모듈(16)은 작동 디바이스(22)의 관점으로부터 디바이스/모듈간 코맨드 실행과 관련되는 통신들을 관리하도록 기능한다. 하기에 추가로 상세히 논의될 바와 같은 다양한 예들에서, 인터럽트 제어 모듈(16)은 코맨드 완료 표시자(30)에 기반하여, 코맨드 완료 표시자(30)가 수신되었던 하나 또는 그 초과의 코맨드들이 실행을 완료하였음을 하나 또는 그 초과의 클라이언트들에 표시하는 적어도 하나의 인터럽트(40)를 송신하도록 적응된다.
몇몇 예들에서, 인터럽트(40)는 시스템(2)의 모든 또는 대부분의 디바이스들 및/또는 모듈들에 송신되는 일반적 인터럽트이다. 다른 예들에서, 인터럽트(40)는 코맨드 완료 표시자(30)를 제공하는 하나 또는 그 초과의 특정 클라이언트들에게 송신되는 클라이언트-특정 인터럽트이다. 또한, 하기에 더욱 상세히 논의될 바와 같은 다양한 예들에서, 인터럽트 제어 모듈(16)은 인터럽트(40)가 발생되어야 하는지 여부를 결정하기 위하여 한번 또는 그 초과의 비교들을 수행하도록 작동가능할 수 있다. 일 예에서, 인터럽트 제어 모듈(16)은, 작동 디바이스(22) 상에서 코맨드들이 실행을 완료함에 따라 코맨드들을 코맨드 완료 표시자(30)에 의하여 식별되는 코맨드와 비교하도록 구성된다. 매치가 존재하는 것으로 발견되면, 인터럽트(40)가 발생될 수 있다. 시스템(2)의 일반적 인터럽트 구성의 일 예에서, 코맨드 완료 모듈(12a)은 코맨드에 대한 코맨드 표시(50)가 작동 디바이스(22)로 전송된 것보다 다소 늦은 시점들에서, 클라이언트(4a)가 코맨드의 실행의 완료를 대기하고 있음을 표시하는 적어도 하나의 코맨드 완료 표시자(30)를 통신하도록 구성된다. 인터럽트 제어 모듈(16)은 코맨드 완료 표시자(30)를 수신하고, 비교를 위해 코맨드 완료 표시자(30)를 (예를 들어, 메모리 또는 레지스터에) 저장하도록 구성된다. 메모리 또는 레지스터는 코맨드 버퍼(18)의 일부일 수 있거나 또는 일부가 아닐 수 있다. 상기 논의된 바와 같이, 코맨드 완료 표시자(30)는 코맨드 식별자(60)일 수 있다. 인터럽트 제어 모듈(16)은 비교를 위해 단일 코맨드 완료 표시자(30) 또는 다수의 코맨드 완료 표시자들(30)을 저장할 수 있다. 작동 디바이스(22)에 의하여 실행되는 코맨드들이 완료됨에 따라, 완료된 코맨드들의 코맨드 식별자들(60)은 하나 또는 그 초과의 코맨드 완료 표시자들(30)에 비교된다. 일 예에서, 비교는 완료된 코맨드와 코맨드 완료 표시자(30) 간의 매치를 결정하는 것을 포함한다. 다른 예에서, 비교는 코맨드들의 순위(order of precedence)를 결정하는 것, 예를 들어, 어느 것이 더 먼저 실행될지를 결정하기 위한 코맨드 식별자들(60)의 비교를 포함한다.
인터럽트 제어 모듈(16)이 완료된 코맨드와 코맨드 완료 표시자(30) 간의 매치를 결정한다면, 코맨드 완료 표시자(30)가 수신되었던 코맨드가 실행을 완료하였음을 모든 클라이언트들(예를 들어, 도 1의 클라이언트들(4a-4e))에 통지하는 일반적 인터럽트(40)가 발생된다. 일 예에서, 일반적 인터럽트(40)는, 각각의 클라이언트로 하여금 인터럽트(40)가 클라이언트에 의하여 전송된 코맨드 완료 표시자(30)로 지향되는지 여부를 결정할 수 있게 하는, 코맨드 식별자(60)를 포함한다. 다른 예들에서, 인터럽트(40)를 트리거한 완료된 코맨드를 식별하는 코맨드 식별자(60)가 코맨드 버퍼(18)의 출력 버퍼에 배치될 수 있다. 그에 따라, 일반적 인터럽트(40)를 수신한 하나 또는 그 초과의 클라이언트들은 코맨드 버퍼(18)의 출력 버퍼의 콘텐츠에 액세스하고 리뷰하여, 인터럽트(40)가 클라이언트에 의해 전송된 코맨드 완료 표시자(30)로 지향되는지 여부를 결정할 수 있다.
시스템(2)의 일반적 인터럽트 구성의 다른 예에서, 코맨드 표시(50)의 전달에 후속하는 단계에서 코맨드 완료 표시자(30)를 제공하는 코맨드 완료 모듈(12a) 대신에, 코맨드 완료 표시자(30)는 코맨드 표시(50)의 전달과 함께 작동 디바이스(22)로 통신될 수 있다. 일 예에서, 코맨드 표시(50)가 코맨드를 나타내는 워드 또는 이진 숫자인 경우, 이진수 또는 숫자 또는 워드의 하나 또는 그 초과의 비트들이 코맨드 완료 표시자(30)에 대한 플래그로서 예비될 수 있다. 그에 따라, 클라이언트가 코맨드의 실행의 완료를 대기하고 있다면 하나 또는 그 초과의 비트들이 설정될 수 있다. 작동 디바이스(22) 및 그에 따른 인터럽트 제어 모듈(16)은, 코맨드 수신 모듈(24)이 코맨드 표시들(50)을 수신할 때 하나 또는 그 초과의 비트들을 판독하고, 하나 또는 그 초과의 비트들이 코맨드 완료 표시자(30)가 그 코맨드에 대하여 전송되었음을 표시하는 코맨드에 대한 코맨드 표시(50)를 저장하도록 구성될 수 있다. 코맨드 표시(50)는 그 후, 상기 설명된 바와 같이 작동 디바이스(22) 상에서 코맨드들이 실행을 완료함에 따라 코맨드들과 비교될 수 있다.
시스템(2)의 클라이언트-특정 인터럽트 구성의 예에서, 코맨드 완료 모듈(12a)은 코맨드 표시(50)의 최초 송신에 후속하여 코맨드 완료 표시자(30)를 통신할 때, 클라이언트를 식별하는 하나 또는 그 초과의 클라이언트 식별자들(70)을 통신하도록 구성될 수 있다. 이 예에 따라, 인터럽트 제어 모듈(16)은 하나 또는 그 초과의 버퍼들, 레지스터들 또는 다른 메모리 로케이션들에, 각각의 코맨드 완료 표시자(30)와 함께 클라이언트 식별자(70)를 저장하도록 적응될 수 있다. 하나 또는 그 초과의 버퍼들, 레지스터들, 또는 다른 메모리 로케이션들은 코맨드 버퍼(18)의 부분일 수 있다. 그에 따라, 인터럽트 제어 모듈(16)은, 코맨드 완료 표시자(30)가 전송되었던 코맨드들의 완료(및 상기 논의된 바와 같은 상응하는 비교) 시, 특정 코맨드 완료 표시자(30)를 발행한 특정 클라이언트에 클라이언트-특정 인터럽트(40)를 통신하도록 구성될 수 있다. 클라이언트(4)는 그 후 인터럽트(40)가 클라이언트로 지향되는지 여부를 결정할 필요 없이, 클라이언트-특정 인터럽트(40)를 트리거한 코맨드의 완료로부터 초래되는 데이터 또는 다른 정보에 액세스할 수 있다.
시스템(2)의 클라이언트-특정 인터럽트 구성의 다른 예에서, 클라이언트는, 코맨드 표시(50)를 작동 디바이스(22)에 통신할 때, 코맨드 완료 표시자(30) 및 클라이언트 식별자(70) 양자 모두를 제공하도록 적응될 수 있다. 코맨드 완료 표시자(30) 및 클라이언트 식별자(70)는 코맨드 완료 표시자(30)에 관하여 상기 논의된 바와 같이 코맨드 표시(50)를 나타내는 워드 또는 이진 숫자에 포함될 수 있다. 그에 따라, 상기 논의된 예와 유사하게, 인터럽트 제어 모듈(16)은 비교들을 수행하고 클라이언트-특정 인터럽트(40)를 제공할 수 있다.
도 3a는 본 명세서에 설명된 개시내용과 일치하는 디바이스/모듈간 코맨드 실행 통신들을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 3a의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 3a의 예는 작동 디바이스, 예를 들어, 본 명세서에 논의된 바와 같은 작동 디바이스(22)의 관점으로부터의 것이다. 도시된 바와 같이, 작동 디바이스는 하나 또는 그 초과의 클라이언트들로부터 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 수신한다(301). 하나 또는 그 초과의 코맨드들은 입력 코맨드 버퍼에 배치될 수 있다. 작동 디바이스는 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 요청 클라이언트로 리턴할 수 있다.
작동 디바이스는, 하나 또는 그 초과의 클라이언트 디바이스들이 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 표시하는 적어도 하나의 코맨드 완료 식별자를 수신할 수 있다(302). 코맨드 완료 식별자는, 하나 또는 그 초과의 클라이언트 디바이스들이 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 식별하는 코맨드 식별의 적어도 하나의 표시를 포함할 수 있다.
완료된 코맨드들과의 코맨드 완료 식별자의 비교에 기반하여, 작동 디바이스에 의해 코맨드 완료 표시자가 수신된 임의의 코맨드에 대해 실행을 완료하는 경우, 일반적 인터럽트가 작동 디바이스에 의하여 발생되고 하나 또는 그 초과의 클라이언트들로 통신된다(303). 일반적 인터럽트는 일반적 인터럽트를 트리거한 코맨드에 대한 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
도 3b는 본 명세서에 설명된 개시내용과 일치하는 디바이스/모듈간 코맨드 실행 통신들을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 3b의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 3b에 도시된 예는 클라이언트, 예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트(4)의 관점으로부터의 것이다. 도시된 바와 같이, 클라이언트는 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들(8)의 적어도 하나의 코맨드 표시를 전송한다(311). 클라이언트는 작동 디바이스에 의하여 수신되는 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 작동 디바이스로부터 수신할 수 있다.
클라이언트는, 클라이언트가 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 표시하는 적어도 하나의 코맨드 완료 표시자를 전송한다(312). 적어도 하나의 코맨드 완료 표시자는 적어도 하나의 코맨드 식별자를 포함할 수 있다.
클라이언트는, 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트에 의해 코맨드 완료 식별자가 전송된 코맨드가 실행을 완료하였음을 표시하는 적어도 하나의 인터럽트를 작동 디바이스로부터 수신한다(313). 적어도 하나의 인터럽트는 인터럽트를 트리거한 완료된 코맨드를 식별하는 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함한다면, 클라이언트는 인터럽트가 클라이언트로 지향되는지 여부를 결정하기 위하여 인터럽트를 리뷰할 수 있다(314). 인터럽트가 클라이언트로 지향된다면, 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함하지 않는다면, 클라이언트는, 클라이언트에 의해 코맨드 완료 표시자가 전송된 하나 또는 그 초과의 코맨드들의 실행의 완료를 인터럽트가 표시하였는지 여부를 결정하기 위하여 완료된 코맨드들이 저장된 버퍼에 액세스할 수 있다(315). 인터럽트가 클라이언트로 지향된다면, 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 코맨드의 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
도 4a는 본 명세서에 설명된 개시내용과 일치하는 디바이스/모듈간 코맨드 실행을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 4a의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 4a의 예는 작동 디바이스 예를 들어, 본 명세서에 논의된 바와 같은 작동 디바이스(22)의 관점으로부터의 것이다. 도시된 바와 같이, 작동 디바이스는 하나 또는 그 초과의 클라이언트들로부터, 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 수신한다(401).
클라이언트가 코맨드의 실행의 완료를 대기하고 있다면, 코맨드 표시는 클라이언트가 코맨드의 실행의 완료를 대기하고 있음을 표시하는 코맨드 완료 식별자를 포함할 수 있다. 일 예에서, 코맨드 완료 식별자는 코맨드 표시의 하나 또는 그 초과의 비트들이다. 특정 코맨드가 클라이언트가 실행을 대기하고 있는 코맨드인지 아닌지를 표시하기 위하여 하나 또는 그 초과의 비트들이 설정될 수 있다. 작동 디바이스는 하나 또는 그 초과의 비트들을 판독하고, 클라이언트가 코맨드의 실행의 완료를 대기하고 있는지 여부를 결정하도록 적응될 수 있다.
완료된 코맨드들과 코맨드 완료 식별자의 비교에 기반하여, 작동 디바이스에 의해 코맨드 완료 표시자가 수신된 임의의 코맨드에 대하여 실행이 완료될 때, 일반적 인터럽트가 작동 디바이스에 의하여 발생되고, 하나 또는 그 초과의 클라이언트들로 통신된다(402). 일반적 인터럽트는 일반적 인터럽트를 트리거한 코맨드에 대한 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
도 4b는 본 명세서에 설명된 개시내용과 일치하는 디바이스/모듈간 코맨드 실행 통신을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 4b의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 4b에 도시된 예는 클라이언트, 예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트(4)의 관점으로부터의 것이다. 도시된 바와 같이, 클라이언트는 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들(8)의 적어도 하나의 코맨드 표시를 전송한다(411). 코맨드 표시는 클라이언트가 하나 또는 그 초과의 코맨드들의 실행의 완료를 대기하고 있음을 표시하는 적어도 하나의 코맨드 완료 표시자를 포함할 수 있다. 일 예에서, 코맨드 완료 식별자는 코맨드 표시의 하나 또는 그 초과의 비트들이다. 특정 코맨드가 클라이언트가 실행을 대기하고 있는 코맨드인지 아닌지를 표시하기 위하여 하나 또는 그 초과의 비트들이 설정될 수 있다. 클라이언트는, 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트에 의해 코맨드 완료 식별자가 전송된 코맨드가 실행을 완료하였음을 표시하는 적어도 하나의 인터럽트를 작동 디바이스로부터 수신한다(412). 적어도 하나의 인터럽트는 인터럽트를 트리거한 완료된 코맨드를 식별하는 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다. 일반적 인터럽트의 수신 시, 클라이언트는, 완료된 코맨드가 클라이언트가 실행의 완료를 대기하고 있는 코맨드인지 여부를 결정하기 위하여 웨이크업 할 수 있다(413).
적어도 하나의 인터럽트가 코맨드 식별자를 포함한다면, 코맨드 완료 식별자가 클라이언트에 의하여 전송된 코맨드 표시에 포함되었던 코맨드로 인터럽트가 지향되는지 여부를 결정하기 위하여, 클라이언트는 인터럽트를 리뷰할 수 있다(414). 인터럽트가 클라이언트로 지향된다면, 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함하지 않는다면, 클라이언트는, 클라이언트에 의해 코맨드 완료 표시자가 전송된 하나 또는 그 초과의 코맨드들의 실행의 완료를 인터럽트가 표시하였는지 여부를 결정하기 위하여 완료된 코맨드들이 저장되는 버퍼에 액세스할 수 있다(415). 인터럽트가 클라이언트로 지향된다면, 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 코맨드의 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
도 5a는 본 명세서에 설명된 개시내용과 일치하는 디바이스/모듈간 코맨드 실행을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 5a의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 5a의 예는 작동 디바이스 예를 들어, 본 명세서에 논의된 바와 같은 작동 디바이스(22)의 관점으로부터의 것이다. 도시된 바와 같이, 작동 디바이스는 하나 또는 그 초과의 클라이언트들로부터, 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 수신한다. 하나 또는 그 초과의 코맨드들은 입력 코맨드 버퍼에 배치될 수 있다(501). 작동 디바이스는 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 요청 클라이언트로 리턴할 수 있다.
작동 디바이스는 하나 또는 그 초과의 클라이언트 디바이스들이 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 표시하는 적어도 하나의 코맨드 완료 식별자를 수신한다(502). 코맨드 완료 식별자는 코맨드 식별의 적어도 하나의 표시를 포함할 수 있다. 또한, 코맨드 완료 식별자는 코맨드 완료 식별자를 전송한 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 포함한다.
완료된 코맨드들과 코맨드 완료 식별자의 비교에 기반하여, 작동 디바이스에 의해 코맨드 완료 표시자가 수신된 코맨드에 대하여 실행이 완료되는 경우, 클라이언트-특정 인터럽트는 작동 디바이스에 의하여 발생되고, 하나 또는 그 초과의 클라이언트들로 통신된다(503). 작동 디바이스는 수신된 클라이언트 식별자에 기반하여 클라이언트-특정 인터럽트를 전송할 수 있다(예를 들어, 502에서). 클라이언트-특정 인터럽트는 일반적 인터럽트를 트리거한 코맨드에 대한 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
도 5b는 본 명세서에 설명되는 개시내용과 일치하는 디바이스/모듈간 코맨드 실행을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 5b의 방법은 도 1 및 2에 도시되는 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 5b에 도시된 예는 클라이언트, 예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트(4)의 관점으로부터의 것이다. 도시된 바와 같이, 클라이언트는 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 전송한다(511). 클라이언트는 작동 디바이스로부터, 작동 디바이스에 의하여 수신되는 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 수신할 수 있다.
클라이언트는 클라이언트가 실행의 완료를 대기하고 있는 하나 또는 그 초과의 코맨드들을 표시하는 적어도 하나의 코맨드 완료 표시자를 전송한다(512). 적어도 하나의 코맨드 완료 표시자는 적어도 하나의 코맨드 식별자를 포함할 수 있다. 또한, 코맨드 완료 식별자는 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 포함한다.
클라이언트는 작동 디바이스로부터, 클라이언트에 의해 코맨드 완료 식별자가 전송된 코맨드가 실행을 완료하였음을 표시하는 적어도 하나의 인터럽트를 수신한다(513). 적어도 하나의 인터럽트는 인터럽트를 트리거한 완료된 코맨드를 식별하는 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함한다면, 클라이언트는 클라이언트로 지향되는 인터럽트를 트리거한 코맨드를 결정하기 위하여 인터럽트를 리뷰할 수 있다(514). 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함하지 않는다면, 인터럽트를 트리거한 코맨드가 클라이언트에 의해 코맨드 완료 표시자가 전송된 코맨드였는지 여부를 결정하기 위하여, 클라이언트는 완료된 코맨드들이 저장되는 버퍼에 액세스할 수 있다(515). 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 코맨드의 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
도 6a는 본 명세서에 설명되는 개시내용과 일치하는 디바이스/모듈간 코맨드 실행을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 6a의 방법은 도 1 및 2에 도시된 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 6a의 예는 작동 디바이스 예를 들어, 본 명세서에 논의된 바와 같은 작동 디바이스(22)의 관점으로부터의 것이다. 도시된 바와 같이, 작동 디바이스는 하나 또는 그 초과의 클라이언트들로부터, 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 수신한다(601). 클라이언트가 코맨드의 실행의 완료를 대기하고 있다면, 코맨드 표시는 클라이언트가 코맨드의 실행의 완료를 대기하고 있음을 표시하는 코맨드 완료 식별자를 포함할 수 있다.
일 예에서, 코맨드 완료 식별자는 코맨드 표시의 하나 또는 그 초과의 비트들이다. 클라이언트가 실행을 대기하고 있는 코맨드인지 아닌지를 표시하기 위하여, 특정 코맨드가 하나 또는 그 초과의 비트들이 설정될 수 있다. 작동 디바이스는 하나 또는 그 초과의 비트들을 판독하고 클라이언트가 코맨드의 실행의 완료를 대기하는지 여부를 결정하도록 적응될 수 있다. 또한, 코맨드 표시는, 수신되었던 코맨드 표시를 전송한클라이언트를 식별하는 클라이언트 식별자를 포함한다.
완료된 코맨드들과 코맨드 완료 식별자의 비교에 기반하여, 코맨드 표시와 함께 작동 디바이스에 의해 코맨드 완료 표시자가 수신된 코맨드에 대하여 실행이 완료되는 경우, 클라이언트-특정 인터럽트는 작동 디바이스에 의하여 발생되고 클라이언트 식별에 의하여 식별되는 클라이언트에 통신된다(602). 클라이언트-특정 인터럽트는 일반적 인터럽트를 트리거한 코맨드에 대한 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
도 6b는 본 명세서에 설명되는 개시내용과 일치하는 디바이스/모듈간 코맨드 실행을 위한 하나의 예시적 방법을 도시하는 흐름도이다. 도 6b의 방법은 도 1 및 2에 도시되는 컴퓨팅 시스템(2)과 같은 컴퓨팅 시스템에 따라 구현될 수 있으나, 다른 컴퓨팅 시스템들도 또한 고려된다. 도 6b에 도시되는 예는 클라이언트, 예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트(4)의 관점으로부터의 것이다. 도시된 바와 같이, 클라이언트는 작동 디바이스 상에서 실행될 하나 또는 그 초과의 코맨드들의 적어도 하나의 코맨드 표시를 전송한다(611). 코맨드 표시는 클라이언트가 하나 또는 그 초과의 코맨드들의 실행의 완료를 대기하고 있음을 표시하는 적어도 하나의 코맨드 완료 표시자를 포함한다. 일 예에서, 코맨드 완료 식별자는 코맨드 표시의 하나 또는 그 초과의 비트들이다. 클라이언트가 실행을 대기하고 있는 코맨드인지 아닌지를 표시하기 위하여, 특정 코맨드가 하나 또는 그 초과의 비트들이 설정될 수 있다. 코맨드 표시는 코맨드 표시를 전송하는 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 더 포함한다.
클라이언트는 작동 디바이스로부터, 클라이언트에 의해 코맨드 표시가 전송된 코맨드가 실행을 완료하였음을 표시하는 적어도 하나의 인터럽트를 수신한다(612). 적어도 하나의 인터럽트는 인터럽트를 트리거한 완료된 코맨드를 식별하는 코맨드 식별자를 포함할 수 있거나 포함하지 않을 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함한다면, 클라이언트는, 인터럽트를 트리거한 클라이언트에 의하여 전송된 코맨드 표시자의 아이덴티티를 결정하기 위하여 인터럽트를 리뷰할 수 있다(613). 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
적어도 하나의 인터럽트가 코맨드 식별자를 포함하지 않는다면, 클라이언트는, 클라이언트에 의해 수신된 인터럽트를 트리거한 코맨드의 아이덴티티를 결정하기 위해, 완료된 코맨드들이 저장되는 버퍼에 액세스할 수 있다(614). 클라이언트는 코맨드의 실행의 결과들을 리트리브하고, 코맨드의 실행의 완료에 따라 기능들의 실행을 계속할 수 있다.
도 7-10은 일반적으로 본 명세서에 설명되는 개시내용과 일치하는 디바이스/모듈간 코맨드 실행에 관한 통신을 향상시키기 위하여 시스템들, 방법들 및 디바이스들의 특정 구현들의 일 예를 도시한다. 도 8-11에 도시되는 예들은 단지 예시를 목적으로 제공된다. 본 기술분야의 당업자는 본 명세서에 논의되는 디바이스/모듈간 코맨드 실행에 기반한 인터럽트의 다양한 예들이 도 7-10에 설명된 예들로 제한되지 않음을 인식할 것이다.
도 7은 일반적으로 도 8-10에 대하여 설명된 방법들에 의하여 이용되는 작동 디바이스(22)의 컴포넌트들의 일 예를 도시한다. 상기 논의된 바와 같이, 작동 디바이스(22)는 코맨드 버퍼(18)를 포함할 수 있다. 코맨드 버퍼(18)는 작동 디바이스(22)의 디바이스 실행 모듈(20) 상에서 실행될 코맨드들의 코맨드 식별자들(60)을 저장하는 입력 코맨드 버퍼를 포함할 수 있다. 코맨드 버퍼(18)는 작동 디바이스(22)의 디바이스 실행 모듈(20) 상에서 실행을 완료한 코맨드들의 코맨드 식별자들(60)을 저장하는 출력 코맨드 버퍼를 더 포함한다.
도시된 바와 같이, 인터럽트 제어 모듈(16)은 인터럽트들(40)의 발생을 용이하게 하는데 사용되는 값들의 비교를 위해 사용되는 일련의 버퍼들, 레지스터들, 메모리 블록들 등을 포함한다. 예를 들어, 인터럽트 제어 모듈(16)은 디바이스 실행 모듈(20) 상에서 현재 실행되는 코맨드의 코맨드 식별자(60)를 저장하도록 구성되는 버퍼(701)를 포함할 수 있다. 인터럽트 제어 모듈(16)은 하나 또는 그 초과의 코맨드 완료 표시자들(30)과 하나 또는 그 초과의 코맨드 식별자들(60)의 비교를 가능하게 하는 인에이블 플래그를 저장하도록 구성되는 비교 인에이블 버퍼(702)를 더 포함한다. 일 예에서, 인에이블 플래그는 인터럽트가 인터럽트 제어 모듈(16)에 의하여 발생될 때마다 거짓(false)으로 설정된다. 인터럽트 제어 모듈(16)은, 비교할 하나 또는 그 초과의 코맨드 완료 표시자들(30)(예를 들어, 코맨드 완료 표시자(30)가 수신되었던 코맨드들)을 저장하도록 구성되는 비교 코맨드 버퍼(command to compare bufer)(703)를 더 포함할 수 있다.
도 8은 작동 디바이스(22)에 코맨드 완료 표시자(30)를 통신하기 위하여 클라이언트의 코맨드 완료 모듈(12a)에 의하여 실행될 수 있는 프로세스의 흐름도를 예시한다. 클라이언트는 코맨드 완료 표시자(30)를 인터럽트 제어 모듈(16)에 전송함으로써 프로세스를 개시할 수 있다(801). 상기 논의된 바와 같이, 코맨드 완료 표시자(30)는 클라이언트가 실행을 위해 작동 디바이스(22)로 이전에 송신한 코맨드의 코맨드 식별자(60)일 수 있다. 코맨드 식별자(60)는 코맨드가 코맨드 수신 모듈(24)에 의하여 수신될 때마다 증분되는 이진 숫자일 수 있다. 따라서, 코맨드 식별자(60)는 각각의 코맨드에 할당되는 고유 숫자일 뿐 아니라, 이것은 또한 코맨드 버퍼(18)의 입력 코맨드 버퍼에서의 코맨드들의 실행의 순서를 나타낸다.
하기에 상세히 논의될 바와 같이, 특정 조건들이 충족된다면, 코맨드 완료 제어 모듈(12)은 인터럽트 제어 모듈(16)로부터, 코맨드 완료 표시자(30)가 전송되었던 코맨드의 표시를 수신할 수 있다(802). 코맨드의 표시는 실제 코맨드 그 자체, 코맨드 식별자(60) 또는 코맨드가 액세스될 수 있는 메모리 로케이션의 어드레스일 수 있다. 그 후 코맨드 완료 모듈(12a)은, 클라이언트가 실행의 완료를 표시하는 인터럽트(40)를 원하는 코맨드 완료 표시자(30)에 대한 리턴된 값의 비교를 수행할 수 있다. 코맨드의 표시가 전송된 코맨드 완료 표시자(30)에 의하여 표시되는 코맨드에 매칭되면, 코맨드 완료 모듈(12a)은, 그것이 전송한 코맨드 완료 표시자(30)와 연관되는 코맨드가 비교를 위해 순서상 다음 차례임(next in line)을, 그리고 코맨드 완료 모듈(12a)이 인터럽트(40)를 수신할 것으로 기대될 수 있음을 안다. 따라서, 클라이언트는 인터럽트(40)의 수신을 대기할 수 있다(804).
그러나 코맨드의 표시가 리턴되지 않으면, 코맨드 완료 모듈(12a)은 그것이 전송한 코맨드 완료 표시자(30)에 앞서 적어도 하나의 다른 코맨드가 비교되어야 함을 안다. 그에 따라, 코맨드 완료 모듈(12a)은 다른 코맨드 완료 표시자(30)를 인터럽트 제어 모듈(16)로 다시 전송하기 이전에 소정 시간 기간을 대기할 수 있다(803).
도 9는 인터럽트 제어 모듈(16) 상에서 구동할 수 있는 프로세스를 예시하는 흐름도이다. 인터럽트 제어 모듈(16)은 클라이언트로부터 코맨드 완료 표시자(30)를 수신할 수 있다(901). 상기 논의된 바와 같이, 코맨드 완료 표시자(30)는 클라이언트(4)가 실행의 완료를 대기하고 있는 코맨드를 식별하는 코맨드 식별자(60)일 수 있다.
인터럽트 제어 모듈(16)은 수신된 코맨드 완료 표시자(30)를 현재 실행 코맨드 버퍼(701)에 저장된 코맨드의 코맨드 식별자(60)와 비교할 수 있다(902). 이 비교는 클라이언트에 의하여 전송된 코맨드 완료 표시자(30)와 연관되는 코맨드가 아직 실행을 완료하지 않았고, 따라서 인터럽트(40)가 필요치 않음을 보장하는 역할을 한다. 일 예에서, 인터럽트 제어 모듈(16)은 코맨드 완료 표시자(30)를 전송한 클라이언트에 임의의 값을 리턴하지 않을 수 있다. 클라이언트는 그 후 코맨드 완료 표시자(30)가 전송되었던 코맨드를 이미 완료하였음을, 예를 들어, 타임아웃(timeout)을 다른 수단을 통해 결정할 수 있다. 다른 예들에서, 인터럽트 제어 모듈(16)은 코맨드 완료 표시자(30)에 의하여 식별되는 코맨드가 이미 실행을 완료하였다는 적어도 하나의 표시를 전송할 수 있다.
코맨드가 현재 실행 코맨드 버퍼(701)에 저장된 이후에 수신된 코맨드 완료 표시자(30)가 실행될 것이라면, 코맨드 완료 표시자(30)와 연관되는 코맨드 식별자(60)는 비교 코맨드 버퍼(703)에 저장된다. 또한, 현재 실행 코맨드 버퍼(701)에 코맨드 식별자(60)가 저장된 이후에 코맨드 완료 표시자(30)와 연관되는 코맨드가 실행될 것으로 902에서 결정된다면, 비교 인에이블 버퍼(702)에 저장되는 비교 인에이블 플래그는 장래의 비교들을 인에이블시키기 위하여 참(true)으로 설정된다. 인터럽트 제어 모듈(16)은 비교 코맨드 버퍼(703)에 현재 저장된 코맨드 식별자(60)와 코맨드 완료 표시자(30)를 비교할 수 있다(903). 수신된 코맨드 완료 표시자(30)와 연관되는 코맨드가 비교 코맨드 버퍼(703)에 현재 저장된 코맨드 식별자(60)와 연관된 코맨드보다 더 먼저 실행될 것이라면, 기존의(existing) 코맨드가 비교 코맨드 버퍼(703)에 저장되기 이전에, 코맨드 완료 표시자(30)와 연관되는 코맨드에는 우선순위가 주어져야 한다. 일 예에 따라, 인터럽트 제어 모듈(16)은 수신된 코맨드 완료 표시자(30)와 연관되는 코맨드 식별자(60)를 비교 코맨드 버퍼(703)에 기록할 수 있다. 인터럽트 제어 모듈(16)은 또한 장래의 비교들을 인에이블시키기 위하여 비교 인에이블 버퍼(702)의 비교 인에이블 플래그를 참으로 설정할 수 있다(904).
수신된 코맨드 완료 표시자(30)와 연관되는 코맨드가 비교 코맨드 버퍼(703)에 현재 저장된 다음에, 코맨드 식별자(60)와 연관되는 코맨드가 실행될 것이라면, 수신된 코맨드 완료 표시자(30)와 연관되는 코맨드 이전에 더 높은 우선순위 코맨드가 실행을 완료해야 한다. 그에 따라, 일 실시예에서, 어느 것도 클라이언트로 리턴되지 않는다. 다른 예에서, 더 높은 우선순위 대기가 스케줄링되는 하나 또는 그 초과의 표시들이 클라이언트로 전송된다.
코맨드 완료 표시자(30)는 인터럽트 제어 모듈(16)이 다른 단계들을 프로세싱하는 동안 코맨드 완료 표시자(30)와 연관되는 코맨드가 실행을 완료하지 않았음을 보장하기 위하여 현재 실행 코맨드 버퍼(701)에 저장되는 코맨드 식별자(60)와 다시 비교될 수 있다(905). 코맨드 완료 표시자(30)가 현재 실행 코맨드 버퍼(701)에 저장되는 코맨드 식별자(60)보다 더 늦게 실행될 것이라면, 그 후 비교 코맨드 버퍼(703)에 현재 저장된 코맨드의 표시는 코맨드 완료 모듈(12a)로 리턴된다(905). 도시되지 않은 일 예에서, 인터럽트 제어 모듈(16)은 비교 코맨드 버퍼(703)에 현재 저장된 코맨드의 표시를 리턴하기 이전에, 인터럽트(40)의 발생을 대기할 수 있다.
도 10은 인터럽트(40)를 발생시키기 위하여 인터럽트 제어 모듈(16) 상에서 구동할 수 있는 프로세스를 예시하는 흐름도이다. 코맨드들이 실행을 완료함에 따라, 인터럽트 제어 모듈(16)은 코맨드 식별자(60)와 같은 완료된 코맨드들의 표시를 수신할 수 있다(1001). 인터럽트 제어 모듈(16)은 도 9에 관하여 설명된 프로세스에 의하여 비교가 인에이블되었는지 여부를 결정하기 위하여 비교 인에이블 버퍼(802)를 체크할 수 있다(1002). 비교가 인에이블되지 않았다면, 비교가 이루어지지 않으며, 인터럽트(40)가 발생되지 않는다. 비교가 인에이블되었다면, 인터럽트 제어 모듈(16)은 현재 실행 코맨드 버퍼(801)에 저장된 코맨드 식별자(60)를 비교 코맨드 버퍼(703)의 코맨드 식별자(60)와 비교할 수 있다(1003). 비교 코맨드 버퍼(703)에 저장되는 코맨드 식별자(60)가 현재 실행 코맨드 버퍼(701)에 저장된 식별자 다음에 실행될 것이라면, 인터럽트(40)가 발생될 수 있다(1004). 인터럽트(40)는 하나 또는 그 초과의 클라이언트들로 전송될 수 있다. 상기 논의된 바와 같이, 클라이언트들은 인터럽트(40) 및/또는 코맨드 버퍼(18)의 출력 버퍼를 리뷰하여, 인터럽트(40)가 클라이언트로 지향되었는지 여부를 결정할 수 있다. 클라이언트는 그 후 프로세스로부터 초래되는 데이터 또는 정보를 리트리브하고, 인터럽트(40)가 발생된 코맨드에 의존되는 프로세스들 또는 코맨드들의 실행을 계속할 수 있다.
본 개시물에 설명되는 기법들 및/또는 컴포넌트들(예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트(4), 작동 디바이스(22), 코맨드 프로세서 모듈(14), 코맨드 완료 모듈들(12a-e), 코맨드 버퍼(18), 코맨드 수신 모듈(24), 인터럽트 제어 모듈(16), 디바이스 실행 모듈(20))은 범용 마이크로프로세서들, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 프로그램가능 로직 디바이스들(PLD들), 또는 다른 등가의 로직 디바이스들 중 하나 또는 그 초과의 것의 임의의 조합에 의하여 구현될 수 있다. 그에 따라, 본 명세서에 사용되는 바와 같은 용어들 "프로세서", "제어기", "디바이스" 또는 "모듈"은 전술한 구조들 또는 본 명세서에 설명되는 기법들의 구현을 위해 적합한 임의의 다른 구조 중 임의의 하나 또는 그 초과의 구조를 지칭할 수 있다.
본 명세서에 예시되는 다양한 컴포넌트들(예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트들(4a-4e), 작동 디바이스(22), 코맨드 프로세서 모듈(14), 코맨드 완료 모듈들(12a-e), 코맨드 버퍼(18), 코맨드 수신 모듈(24), 인터럽트 제어 모듈(16), 디바이스 실행 모듈(20))은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합의 임의의 적절한 조합에 의해 실현될 수 있다. 도면들에서, 다양한 컴포넌트들은 개별 유닛들 또는 모듈들로서 도시된다. 그러나 이들 도면들을 참고로 설명되는 다양한 컴포넌트들 중 몇개 또는 전부는 공통 하드웨어, 펌웨어 및/또는 소프트웨어 내에 조합된 유닛들 또는 모듈들로 통합될 수 있다. 그에 따라, 컴포넌트들, 유닛들 또는 모듈들로서의 피쳐들의 표현은 예시의 용이성을 위하여 특정 기능적 피쳐들을 강조하도록 의도되며, 개별 하드웨어, 펌웨어 또는 소프트웨어 컴포넌트들에 의한 그러한 피쳐들의 실현을 반드시 필요로 하는 것은 아니다. 몇몇 경우들에서, 다양한 유닛들은 하나 또는 그 초과의 프로세서들에 의하여 수행되는 프로그램가능 프로세스들로서 구현될 수 있다.
모듈들, 디바이스들 또는 컴포넌트들로서 본 명세서에 설명되는 임의의 피쳐들(예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트들(4a-4e), 작동 디바이스(22), 코맨드 프로세서 모듈(14), 코맨드 완료 모듈들(12a-e), 코맨드 버퍼(18), 코맨드 수신 모듈(24), 인터럽트 제어 모듈(16), 디바이스 실행 모듈(20)과 관련되는 피쳐들)은 집적 로직 디바이스에 함께, 또는 개별적이지만 상호운용성이 있는 로직 디바이스들로서 따로따로 구현될 수 있다. 다양한 양상들에서, 그러한 컴포넌트들(예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트들(4a-4e), 작동 디바이스(22), 코맨드 프로세서 모듈(14), 코맨드 완료 모듈들(12a-e), 코맨드 버퍼(18), 코맨드 수신 모듈(24), 인터럽트 제어 모듈(16), 디바이스 실행 모듈(20))은 적어도 부분적으로 하나 또는 그 초과의 집적 회로 디바이스들로서 형성될 수 있으며, 이러한 집적 회로 디바이스들은 집적 회로 칩 또는 칩셋과 같은 집적 회로 디바이스로서 총체적으로 지칭될 수 있다. 그러한 회로소자는 단일 집적 회로 칩 디바이스에 또는 다수의 상호운용성이 있는 집적 회로 칩 디바이스들에 제공될 수 있으며, 임의의 다양한 애플리케이션들 및 디바이스들에서 사용될 수 있다.
본 명세서에 설명되는 기법들 및/또는 컴포넌트들(예를 들어, 도 1 및 2에 도시된 바와 같은 클라이언트들(4a-4e), 작동 디바이스(22), 코맨드 프로세서 모듈(14), 코맨드 완료 모듈들(12a-e), 코맨드 버퍼(18), 코맨드 수신 모듈(24), 인터럽트 제어 모듈(16), 디바이스 실행 모듈(20))은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된다면, 기법들은 부분적으로 프로그램 코드를 포함하는 컴퓨터-판독가능 매체에 의하여 실현될 수 있으며, 상기 프로그램 코드는, 실행될 때, 프로세서로 하여금 상기 설명된 방법들 중 하나 또는 그 초과를 수행하게 하는 컴퓨터-판독가능 매체 상에 인코딩된 명령들을 포함한다. 이 경우에, 컴퓨터 판독가능 매체는 동기식 동적 랜덤 액세스 메모리(SDRAM), 판독 전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), 전기적 소거가능 프로그램가능 판독-전용 메모리(EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등과 같은 랜덤 액세스 메모리(RAM)를 포함할 수 있다.
다양한 양상들이 본 개시물에서 설명되었다. 이들 그리고 다른 양상들은 하기의 청구항들의 범위 내에 있다.

Claims (40)

  1. 방법으로서,
    작동 디바이스에 의하여 하나 또는 그 초과의 클라이언트들로부터, 상기 작동 디바이스에 의해 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하는 단계;
    상기 작동 디바이스에 의하여 상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 적어도 하나의 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하는 단계; 및
    상기 적어도 하나의 코맨드 완료 표시자가 수신되었던 상기 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트(interrupt)를 발생시키는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 인터럽트를 발생시키는 단계는 일반적(generic) 인터럽트를 발생시키는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 작동 디바이스에 의하여 실행될 상기 하나 또는 그 초과의 코맨드들을 수신하는 단계는 다수의 클라이언트들 중 적어도 하나의 클라이언트로부터 상기 하나 또는 그 초과의 코맨드들을 수신하는 단계를 포함하며,
    일반적 인터럽트를 발생시키는 단계는 상기 적어도 하나의 코맨드 완료 표시자가 수신되었던 상기 적어도 하나의 코맨드가 실행을 완료하였다는 표시를 상기 다수의 클라이언트들 각각에 송신하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 인터럽트를 발생시키는 단계는 상기 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 제공하는 단계를 포함하며, 상기 적어도 하나의 코맨드에 대한 실행의 완료는 인터럽트가 발생되게 하는, 방법.
  5. 제1항에 있어서,
    상기 인터럽트를 발생시키는 단계는 상기 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 저장하는 단계를 더 포함하며, 상기 적어도 하나의 코맨드에 대한 실행의 완료는 상기 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트에 의한 획득(acquisition)을 위해 버퍼에서 인터럽트가 발생되게 하는, 방법.
  6. 제1항에 있어서,
    상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 코맨드 표시들을 수신하는 단계는, 상기 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 상기 적어도 하나의 코맨드를 표시하는 상기 적어도 하나의 코맨드 완료 표시자를 수신하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 인터럽트를 발생시키는 단계는 클라이언트-특정 인터럽트를 발생시키는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 클라이언트들 중, 수신되었던 상기 적어도 하나의 코맨드 완료 표시자를 전송한 적어도 하나의 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 수신하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 인터럽트를 발생시키는 단계는 클라이언트-특정 인터럽트를 발생시키는 단계를 포함하며, 상기 클라이언트-특정 인터럽트는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하는, 방법.
  10. 제1항에 있어서,
    상기 작동 디바이스에 의하여 실행될 코맨드들의 상기 하나 또는 그 초과의 코맨드 표시들을 수신하는 단계는, 상기 하나 또는 그 초과의 클라이언트들 중에서 수신되었던 상기 적어도 하나의 코맨드 완료 표시자를 전송한 적어도 하나의 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자 및 상기 적어도 하나의 코맨드 완료 표시자를 수신하는 단계를 포함하고, 상기 인터럽트를 발생시키는 단계는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하여 클라이언트-특정 인터럽트를 발생시키는 단계를 포함하는, 방법.
  11. 디바이스로서,
    코맨드들을 실행하도록 구성되는 디바이스 실행 모듈;
    하나 또는 그 초과의 클라이언트들로부터, 상기 디바이스 실행 모듈에 의하여 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하도록 구성되는 코맨드 수신 모듈; 및
    상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 적어도 하나의 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하도록 구성되는 인터럽트 제어 모듈
    을 포함하며, 상기 인터럽트 제어 모듈은, 코맨드 완료 표시자가 수신되었던 상기 적어도 하나의 코맨드의 실행의 완료 시, 코맨드 완료 표시자가 수신되었던 상기 코맨드가 실행을 완료하였음을 표시하는 인터럽트를 발생시키도록 구성되는, 디바이스.
  12. 제11항에 있어서,
    상기 인터럽트 제어 모듈은 일반적 인터럽트인 인터럽트를 발생시키도록 구성되는, 디바이스.
  13. 제11항에 있어서,
    상기 코맨드 수신 모듈은 다수의 클라이언트들 중 적어도 하나의 클라이언트로부터 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하도록 구성되며, 상기 인터럽트 제어 모듈은 인터럽트를 발생시키고 상기 다수의 클라이언트들 각각에 상기 인터럽트를 송신하도록 구성되는, 디바이스.
  14. 제11항에 있어서,
    상기 인터럽트 제어 모듈은 상기 인터럽트를 발생시키도록 구성되며, 상기 인터럽트는 상기 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 포함하고, 상기 적어도 하나의 코맨드에 대한 실행의 완료는 상기 인터럽트가 발생되게 하는, 디바이스.
  15. 제11항에 있어서,
    상기 인터럽트 제어 모듈은 상기 인터럽트를 발생시키고 상기 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 저장하도록 구성되며, 상기 적어도 하나의 코맨드에 대한 실행의 완료는 상기 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트에 의한 획득을 위해 버퍼에서 인터럽트가 발생되게 하는, 디바이스.
  16. 제11항에 있어서,
    상기 코맨드 수신 모듈은 상기 하나 또는 그 초과의 클라이언트들로부터 상기 적어도 하나의 코맨드 완료 표시자를 더 포함하는 상기 하나 또는 그 초과의 코맨드 표시들을 수신하도록 구성되는, 디바이스.
  17. 제11항에 있어서,
    상기 인터럽트 제어 모듈은 클라이언트-특정 인터럽트인 인터럽트를 발생시키도록 구성되는, 디바이스.
  18. 제11항에 있어서,
    상기 인터럽트 제어 모듈은 상기 하나 또는 그 초과의 클라이언트들 중 수신되었던 상기 적어도 하나의 코맨드 완료 표시자를 전송한 적어도 하나의 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 수신하도록 추가로 구성되는, 디바이스.
  19. 제18항에 있어서,
    상기 인터럽트 제어 모듈은 인터럽트를 발생시키도록 구성되며, 상기 인터럽트는 클라이언트-특정 인터럽트이고, 상기 클라이언트-특정 인터럽트는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하는, 디바이스.
  20. 제11항에 있어서,
    상기 코맨드 수신 모듈은 하나 또는 그 초과의 클라이언트들로부터 코맨드 표시를 수신하도록 구성되며, 상기 코맨드 표시는 수신되었던 상기 코맨드 표시를 전송한 클라이언트의 아이덴티티를 표시하는 적어도 하나의 클라이언트 식별자 및 적어도 하나의 코맨드 완료 표시자를 더 포함하는, 디바이스.
  21. 컴퓨터 판독가능 저장 매체로서,
    프로그램가능 프로세서로 하여금,
    하나 또는 그 초과의 클라이언트들로부터, 상기 프로그램가능 프로세서에 의하여 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하고;
    상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트가 실행의 완료를 대기하고 있는 적어도 하나의 코맨드를 표시하는 적어도 하나의 코맨드 완료 표시자를 수신하며;
    상기 적어도 하나의 코맨드 완료 표시자가 수신되었던 상기 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시키게
    하기 위한 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  22. 제21항에 있어서,
    상기 인터럽트는 일반적 인터럽트인, 컴퓨터 판독가능 저장 매체.
  23. 제21항에 있어서,
    상기 하나 또는 그 초과의 코맨드 표시들이 다수의 클라이언트들로부터 수신되고, 상기 인터럽트는 상기 하나 또는 그 초과의 클라이언트들 중 적어도 하나의 클라이언트로부터 코맨드 완료 표시자가 수신되었던 적어도 하나의 코맨드가 실행을 완료하였음을 표시하며, 상기 명령들은 상기 프로그램가능 프로세서로 하여금 상기 다수의 클라이언트들 각각에 상기 인터럽트를 송신하게 하는, 컴퓨터 판독가능 저장 매체.
  24. 제21항에 있어서,
    상기 인터럽트는 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 포함하며, 상기 적어도 하나의 코맨드에 대한 실행의 완료는 상기 인터럽트가 발생되게 하는, 컴퓨터 판독가능 저장 매체.
  25. 제21항에 있어서,
    상기 프로그램가능 프로세서로 하여금, 상기 인터럽트의 발생 시, 적어도 하나의 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 버퍼에 배치하게 하기 위한 명령들을 더 포함하며, 상기 적어도 하나의 코맨드의 실행의 완료는 상기 인터럽트가 발생되게 하는, 컴퓨터 판독가능 저장 매체.
  26. 제21항에 있어서,
    상기 하나 또는 그 초과의 클라이언트들로부터 수신되는 상기 하나 또는 그 초과의 코맨드 표시들은 상기 적어도 하나의 코맨드 완료 표시자를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  27. 제21항에 있어서,
    상기 인터럽트는 클라이언트-특정 인터럽트인, 컴퓨터 판독가능 저장 매체.
  28. 제21항에 있어서,
    상기 프로그램가능 프로세서로 하여금, 상기 하나 또는 그 초과의 클라이언트들로부터, 수신되었던 코맨드 완료 표시자를 전송한 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 수신하게 하게 위한 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  29. 제29항에 있어서,
    상기 인터럽트는 클라이언트-특정 인터럽트이며, 상기 클라이언트-특정 인터럽트는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하는, 컴퓨터 판독가능 저장 매체.
  30. 제21항에 있어서,
    상기 하나 또는 그 초과의 코맨드 표시들은 상기 적어도 하나의 코맨드 완료 표시자를 더 포함하고, 상기 하나 또는 그 초과의 코맨드 표시들은 수신되었던 상기 하나 또는 그 초과의 코맨드 표시들을 전송한 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자를 더 포함하며, 상기 인터럽트는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하는 클라이언트-특정 인터럽트인, 컴퓨터 판독가능 저장 매체.
  31. 디바이스로서,
    하나 또는 그 초과의 클라이언트들로부터, 상기 디바이스에 의해 실행될 코맨드들의 하나 또는 그 초과의 코맨드 표시들을 수신하기 위한 수단;
    상기 하나 또는 그 초과의 클라이언트들로부터, 상기 하나 또는 그 초과의 코맨드들 중, 상기 하나 또는 그 초과의 클라이언트들이 실행의 완료를 대기하고 있는 적어도 하나의 코맨드의 적어도 하나의 코맨드 완료 표시자를 수신하기 위한 수단; 및
    적어도 하나의 코맨드 완료 표시자가 수신되었던 상기 적어도 하나의 코맨드의 실행의 완료를 표시하는 인터럽트를 발생시키기 위한 수단
    을 포함하는, 디바이스.
  32. 제31항에 있어서,
    상기 인터럽트를 발생시키기 위한 수단은 일반적 인터럽트를 발생시키기 위한 수단을 포함하는, 디바이스.
  33. 제31항에 있어서,
    상기 하나 또는 그 초과의 코맨드 표시들을 수신하기 위한 수단은, 다수의 클라이언트들로부터 상기 하나 또는 그 초과의 코맨드 표시들을 수신하기 위한 수단을 포함하고, 상기 인터럽트를 발생시키기 위한 수단은 상기 다수의 클라이언트들 각각에 상기 인터럽트를 송신하기 위한 수단을 포함하며, 상기 인터럽트는 코맨드 완료 표시자가 수신되었던 적어도 하나의 코맨드가 실행을 완료하였음을 표시하는, 디바이스.
  34. 제31항에 있어서,
    상기 인터럽트를 발생시키기 위한 수단은 코맨드를 식별하는 적어도 하나의 코맨드 식별자를 포함하는 인터럽트를 발생시키기 위한 수단을 포함하며, 상기 코맨드에 대한 실행의 완료는 상기 인터럽트가 발생되게 하는, 디바이스.
  35. 제31항에 있어서,
    상기 인터럽트를 발생시키기 위한 수단은, 상기 인터럽트의 발생 시, 코맨드의 적어도 하나의 표시를 버퍼에 배치하기 위한 수단을 포함하며, 상기 코맨드에 대한 실행의 완료는 상기 인터럽트가 발생되게 하는, 디바이스.
  36. 제31항에 있어서,
    상기 하나 또는 그 초과의 코맨드 표시들은 상기 적어도 하나의 코맨드 완료 표시자를 포함하는, 디바이스.
  37. 제31항에 있어서,
    상기 인터럽트를 발생시키기 위한 수단은 클라이언트-특정 인터럽트를 발생시키기 위한 수단을 포함하는, 디바이스.
  38. 제31항에 있어서,
    상기 하나 또는 그 초과의 클라이언트들로부터, 적어도 하나의 코맨드 완료 표시자가 수신되었던 코맨드를 식별하는 적어도 하나의 클라이언트 식별자를 수신하기 위한 수단을 더 포함하는, 디바이스.
  39. 제38항에 있어서,
    상기 인터럽트를 발생시키기 위한 수단은 클라이언트-특정 인터럽트를 발생시키기 위한 수단을 포함하며, 상기 클라이언트-특정 인터럽트는 적어도 부분적으로 상기 적어도 하나의 클라이언트 식별자에 기반하는, 디바이스.
  40. 제31항에 있어서,
    상기 하나 또는 그 초과의 코맨드 표시들은, 수신되었던 상기 하나 또는 그 초과의 코맨드 표시들을 전송한 클라이언트를 식별하는 적어도 하나의 클라이언트 식별자 및 상기 적어도 하나의 코맨드 완료 표시자를 더 포함하는, 디바이스.
KR1020137007382A 2010-08-23 2011-08-23 인터럽트-기반 코맨드 프로세싱 KR20130046440A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/861,590 US8677028B2 (en) 2010-08-23 2010-08-23 Interrupt-based command processing
US12/861,590 2010-08-23
PCT/US2011/048863 WO2012027407A1 (en) 2010-08-23 2011-08-23 Interrupt-based command processing

Publications (1)

Publication Number Publication Date
KR20130046440A true KR20130046440A (ko) 2013-05-07

Family

ID=44583458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137007382A KR20130046440A (ko) 2010-08-23 2011-08-23 인터럽트-기반 코맨드 프로세싱

Country Status (6)

Country Link
US (1) US8677028B2 (ko)
EP (1) EP2609505A1 (ko)
JP (1) JP2013539577A (ko)
KR (1) KR20130046440A (ko)
CN (1) CN103140835A (ko)
WO (1) WO2012027407A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677028B2 (en) * 2010-08-23 2014-03-18 Qualcomm Incorporated Interrupt-based command processing
KR20210094178A (ko) 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04354047A (ja) * 1991-05-31 1992-12-08 Nec Corp 負荷分散制御方式
US5818539A (en) 1996-03-29 1998-10-06 Matsushita Electric Corporation Of America System and method for updating a system time constant (STC) counter following a discontinuity in an MPEG-2 transport data stream
US5828416A (en) 1996-03-29 1998-10-27 Matsushita Electric Corporation Of America System and method for interfacing a transport decoder to a elementary stream video decorder
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6944776B1 (en) * 1999-04-12 2005-09-13 Microsoft Corporation System and method for data rights management
US6823467B1 (en) 2000-02-25 2004-11-23 Sun Microsystems, Inc. Method and apparatus for arbitrary resolution interval timeouts
JP2002049606A (ja) * 2000-08-04 2002-02-15 Nec Saitama Ltd マルチcpuシステム
JP2002297336A (ja) * 2001-03-30 2002-10-11 Seiko Instruments Inc プリンタシステム
US6952749B2 (en) * 2001-05-02 2005-10-04 Portalplayer, Inc. Multiprocessor interrupt handling system and method
JP2003167836A (ja) * 2001-12-04 2003-06-13 Fujitsu Ltd デバイスドライバ
US7130932B1 (en) * 2002-07-08 2006-10-31 Adaptec, Inc. Method and apparatus for increasing the performance of communications between a host processor and a SATA or ATA device
JP2006127300A (ja) * 2004-10-29 2006-05-18 Hitachi Global Storage Technologies Netherlands Bv ホストと記憶デバイスとの間における通信方法、記憶デバイス、ホスト、記憶デバイスとホストを備えるシステム
US7525549B1 (en) 2004-12-16 2009-04-28 Nvidia Corporation Display balance/metering
US7702835B2 (en) * 2005-02-03 2010-04-20 Oracle America, Inc. Tagged interrupt forwarding
US7831749B2 (en) * 2005-02-03 2010-11-09 Solarflare Communications, Inc. Including descriptor queue empty events in completion events
US20080155571A1 (en) 2006-12-21 2008-06-26 Yuval Kenan Method and System for Host Software Concurrent Processing of a Network Connection Using Multiple Central Processing Units
US8255577B2 (en) * 2007-04-26 2012-08-28 Hewlett-Packard Development Company, L.P. I/O forwarding technique for multi-interrupt capable devices
FR2923922A1 (fr) 2007-11-16 2009-05-22 France Telecom Procede de controle d'au moins un processus applicatif et produit programme d'ordinateur correspondant
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8566507B2 (en) * 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
US8677028B2 (en) * 2010-08-23 2014-03-18 Qualcomm Incorporated Interrupt-based command processing

Also Published As

Publication number Publication date
EP2609505A1 (en) 2013-07-03
JP2013539577A (ja) 2013-10-24
CN103140835A (zh) 2013-06-05
US20120047285A1 (en) 2012-02-23
US8677028B2 (en) 2014-03-18
WO2012027407A1 (en) 2012-03-01

Similar Documents

Publication Publication Date Title
US7953915B2 (en) Interrupt dispatching method in multi-core environment and multi-core processor
JP6961686B2 (ja) トリガ動作を用いたgpuリモート通信
CN112204524A (zh) 用于硬件加速的硬件资源的嵌入式调度
US10402223B1 (en) Scheduling hardware resources for offloading functions in a heterogeneous computing system
WO2016107340A1 (zh) 业务请求处理方法和装置
CN111258935B (zh) 数据传输装置和方法
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
CN109101662B (zh) 区块生成方法、装置、设备及存储介质
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
CN111615692A (zh) 数据搬运方法、计算处理装置、设备及存储介质
US8639840B2 (en) Processing unit, chip, computing device and method for accelerating data transmission
CN115129480B (zh) 标量处理单元的访问控制方法及标量处理单元
US20150268985A1 (en) Low Latency Data Delivery
CN112949847B (zh) 神经网络算法加速系统、调度系统及调度方法
US10318362B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
CN110995817B (zh) 请求回调方法、装置及客户端设备
US8677028B2 (en) Interrupt-based command processing
CN112559403B (zh) 一种处理器及其中的中断控制器
CN110245027B (zh) 一种进程间通信的方法和设备
CN114584618A (zh) 信息交互方法、装置、设备、存储介质和系统
CN108062224B (zh) 基于文件句柄的数据读写方法、装置及计算设备
US8412862B2 (en) Direct memory access transfer efficiency
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法

Legal Events

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