KR100879825B1 - 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 - Google Patents

이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 Download PDF

Info

Publication number
KR100879825B1
KR100879825B1 KR1020060136758A KR20060136758A KR100879825B1 KR 100879825 B1 KR100879825 B1 KR 100879825B1 KR 1020060136758 A KR1020060136758 A KR 1020060136758A KR 20060136758 A KR20060136758 A KR 20060136758A KR 100879825 B1 KR100879825 B1 KR 100879825B1
Authority
KR
South Korea
Prior art keywords
sequencer
accelerator
exo
instruction
user
Prior art date
Application number
KR1020060136758A
Other languages
English (en)
Other versions
KR20070072396A (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 KR20070072396A publication Critical patent/KR20070072396A/ko
Application granted granted Critical
Publication of KR100879825B1 publication Critical patent/KR100879825B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Programmable Controllers (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

일 실시예에 따르면, 본 발명은 액셀러레이터(accelerator)와 그에 연결된 명령어 시퀀서(instruction sequencer) 사이에서 직접 통신하는 방법을 포함하며, 여기서 액셀러레이터는 명령어 시퀀서에 대해 이질적인(heterogeneous) 리소스이다. 이들 리소스 간에 통신을 제공하기 위해 인터페이스가 사용될 수 있다. 이러한 통신 메커니즘을 통해, 사용자-레벨 애플리케이션은 운영 체제 지원 없이도 액셀러레이터와 직접 통신할 수 있다. 또한, 명령어 시퀀서 및 액셀러레이터는 병렬로 연산을 수행할 수 있다. 다른 실시예들이 기술되고 청구된다.
명령어 세트 아키텍처, 시퀀서, 액셀러레이터, 엑소-스켈레톤

Description

이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신{INSTRUCTION SET ARCHITECTURE-BASED INTER-SEQUENCER COMMUNICATIONS WITH A HETEROGENEOUS RESOURCE}
도 1은 본 발명의 일 실시예에 따른 프로세서의 블록도.
도 2는 본 발명의 일 실시예에 따른 시스템의 일부분의 블록도.
도 3은 본 발명의 다른 실시예에 따른 시스템의 일부분의 블록도.
도 4는 본 발명의 일 실시예에 따른 시스템의 블록도.
도 5는 본 발명의 일 실시예에 따른 프로세서에서 수행되는 연산들에 대응하는 방법의 흐름도.
도 6은 본 발명의 일 실시예에 따른 액셀러레이터에서 수행되는 연산들에 대응하는 방법의 흐름도.
도 7은 본 발명의 다른 실시예에 따른 시스템의 블록도.
<도면의 주요 부분에 대한 부호의 설명>
110: 시퀀서
120: 엑소-스켈레톤
130: 액셀러레이터
135: 엑소-시퀀서
150: 슈레드 라이브러리
160: 사용자 애플리케이션
본 발명의 실시예들은 프로세서-기반 시스템에서 통신을 향상시키는 것에 관한 것으로서, 특히 다수의 시퀀서(sequencer)를 포함하는 시스템에 관한 것이다.
컴퓨터 시스템은 데이터를 처리 및 통신하기 위한 여러가지 컴포넌트를 포함한다. 전형적인 시스템은 하나 또는 다수의 프로세서를 포함하며, 그 각각은 연관된 메모리, 입출력(I/O) 장치 및 기타 그러한 컴포넌트와 함께 다수의 코어를 포함할 수 있다. 계산 효율성을 향상시키기 위해, 계산 액셀러레이터, 특수 목적의 I/O 장치, 및 기타 그러한 특수 유닛이, 본 명세서에서 일반적으로 헬퍼 유닛(helper unit)이라고 하는, 하나 이상의 특수 컴포넌트를 통해 제공될 수 있다. 그러나, 그러한 헬퍼 유닛을 사용함에 있어서 비효율이 발생할 수 있는데, 이는 범용 프로세서 및 산업-표준 운영 체제(OS) 환경을 구현하는 일반적인 컴퓨팅 환경에서 소프트웨어 스택이 효율적인 사용을 방해할 수 있기 때문이다. 즉, 전형적인 OS 환경에서, 시스템 소프트웨어는 서로 다른 특권 레벨(privilege level)을 통해 애플리케이션 소프트웨어로부터 격리되어 있으며, 이들 서로 다른 특권 레벨 각각에서의 연산은, 제한들 중에서도 특히 OS 컨텍스트 저장 및 복구 연산에 영향을 받는다.
따라서, 특수 목적의 액셀러레이터 등의 헬퍼 유닛이 포함되어 있을 때마다, 이 헬퍼 유닛은 보통 장치로서 노출되고, 사용자-레벨 애플리케이션은 원시의 물리적 헬퍼 유닛 리소스(raw physical helper unit resource)에 직접 액세스하는 OS의 장치 드라이버 소프트웨어 스택을 통해 간접적으로만 헬퍼 유닛을 사용할 수 있다. 따라서, 연관된 장치 드라이버를 통한 헬퍼 유닛 리소스는 시스템-전반적인 리소스이며, 컨텍스트 전환(context switch)을 통해 가상화되는 범용 레지스터, 가상 메모리 또는 시퀀서와 같은 애플리케이션-레벨 리소스가 아니다.
헬퍼 유닛에 액세스하기 위해 장치 드라이버를 사용해야만 하는 것에 있어서의 문제점은 비효율(애플리케이션으로부터 드라이버로 또 헬퍼 유닛으로의 경로 길이의 관점에서 볼 때), 및 "표준화된" 드라이버 인터페이스에 관련된 OS-부과 제한으로 인한 비유연성이다.
계산 액셀러레이터의 종래의 예는 수학 코프로세서(math coprocessor)(초기의 인텔
Figure 112006097811950-pat00001
아키텍처(IA)-32 프로세서에 대한 소위 x87 부동 소수점 코프로세서 등)와 같은 코프로세서이다. 전형적으로, 이러한 코프로세서는 메인 프로세서와 공통의 명령어 세트 아키텍처(instruction set architecture, ISA)를 갖는 코프로세서 인터페이스를 통해 메인 프로세서(예컨대, 중앙 처리 장치(CPU))에 연결된다. 또한, 이들 리소스 간의 상호작용은 종래의 확장/대기 신호 프로토콜(escape/wait signal protocol)을 경유하며, 여기서 코프로세서가 요청된 기능을 수행하는 동안 메인 프로세서는 대기 상태에 놓여 있으며, 그 수행의 종료 시에 제어는 다시 메인 프로세서로 되돌아간다. 그러나, 코프로세서 연산 동안에, 메인 프로세서는 코프 로세서로부터 결과를 기다리면서 유용한 작업을 수행할 수 없다. 즉, 코프로세서는 아키텍처적으로 메인 프로세서의 제어 흐름의 프로그램 순서에 따라 순차적으로 연산하도록 통합되어 있다. 이것에 의해 프로세서 활용에 있어서 비효율성이 야기되며, 특히 코프로세서가 메인 프로세서 상에서의 계산과 동시에 일어나는 연산을 할 수 있을 때 그러하다. 따라서, 이러한 헬퍼 유닛과 통신하고 이를 사용하는 개선된 방식이 필요하다.
다양한 실시예들에 따르면, 명령어 세트 아키텍처(ISA)-기반 시퀀서간 통신을 가능하게 하는 메커니즘이 제공된다. 본 명세서에서 사용되는 바와 같이, "시퀀서"는 별개의 스레드 실행 리소스이며, 스레드를 실행할 수 있는 임의의 물리적 또는 논리적 유닛일 수 있다. 시퀀서는 논리적 스레드 유닛 또는 물리적 스레드 유닛일 수 있으며, 주어진 스레드에 대해 실행될 후속 명령어를 결정하는 후속 명령어 포인터 로직(next instruction pointer logic)을 포함할 수 있다.
특히, ISA-기반의 시퀀서간 통신은 제1 ISA의 제1 시퀀서와 제2 리소스 사이에 구현될 수 있으며, 이는 이질적인 성질의 시퀀서(sequencer) 또는 비시퀀서(non-sequencer)일 수 있다. 즉, 제2 리소스는 다른 ISA의 시퀀서이거나, 고정 함수 유닛(fixed function unit; FFU), 주문형 반도체(application specific integrated circuit; ASIC) 또는 다른 사전에 프로그램된 로직과 같은 비시퀀서 리소스(non-sequencer resource)일 수 있다. 다양한 실시예들에 따르면, 본 명세서에서 "엑소-스켈레톤(exo-skeleton)"이라고 하는 매개물(intermediary) 또는 인터 페이스는 이러한 이질적인 리소스들 간의 통신을 제공할 수 있다. 다른 실시예들에 따르면, 엑소-스켈레톤은 소프트웨어, 하드웨어, 및/또는 펌웨어를 포함하는 다양한 형태를 취할 수 있다. 일부 실시예들에 따르면, 엑소-스켈레톤은 이질적인 리소스에 밀접하게 연결되는 유한 상태 머신(finite state machine; FSM)으로 구현될 수 있다. 물론, 다른 구현도 가능하다.
이제 도 1을 참조하면, 본 발명의 일 실시예에 따른 프로세서의 블록도가 도시되고 있다. 도 1에 도시된 바와 같이, 프로세서(10)는 다양한 서로 다른 리소스를 포함한다. 서로 다른 구현에서, 프로세서(10)는 단일 코어 프로세서(single core processor) 또는 다중 코어 프로세서(multi-core processor)일 수 있다. 이러한 프로세서는, 그 중에서도 특히, 칩 멀티프로세서(chip multiprocessor; CMP) 시스템 또는 동시 멀티스레딩(simultaneous multithreading; SMT) 시스템 또는 스위치-온-이벤트 멀티스레딩(switch-on-event multithreading; SoeMT) 시스템을 비롯한 서로 다른 유형의 시스템에 구현될 수 있다.
도 1에 도시된 바와 같이, 프로세서(10)는 복수의 시퀀서(20a, 20b, 20c, 20d)(즉, 시퀀서 1 내지 시퀀서 4, 총칭하여 시퀀서(20)라고 함)를 포함한다. 도 1의 실시예에서 4개의 이러한 시퀀서를 갖는 것으로 도시되어 있지만, 본 발명의 범위가 그에 한정되지 않는다는 것을 잘 알 것이다. 도 1에 도시된 바와 같이, 프로세서(10) 내의 시퀀서(20)는 ISA(30)를 구현하며, 이 ISA(30)는 일 실시예에서 인텔
Figure 112006097811950-pat00002
아키텍처(IA-32) 명령어 세트 아키텍처 및/또는 그의 64-비트 확장(인텔
Figure 112006097811950-pat00003
확장 메모리 64-비트 기술(EM64T)이라고도 함)일 수 있다. 또한, 프로세서(10)는 제1 리소스(즉, 리소스 1)(50a), 제2 리소스(즉, 리소스 2)(50b), 및 제3 리소스(50c)(즉, 리소스 3)(총칭하여 리소스(50)라고 함)를 포함하는 다른 리소스도 포함한다. 이들 리소스는 프로세서(10)의 ISA(30)를 구현하지 않는 이질적인 리소스일 수 있다. 도 1의 실시예에서 3개의 이러한 리소스를 포함하는 것으로 도시되어 있지만, 다른 실시예들에서 더 많은 또는 더 적은 리소스가 가능하다.
각각의 리소스(50)는 시퀀서(ISA(30)와 다른 ISA를 구현할 수 있음), 비시퀀서 프로세싱 엔진, 또는 본 명세서에서 총칭하여 액셀러레이터(accelerator)라고 불리는 기타 특수 기능 로직을 포함한다. 다른 실시예들에서, 서로 다른 유형의 리소스가 그래픽 처리 유닛(GPU)(전형적으로 시퀀서임), 암호 유닛(cryptographic unit)(전형적으로 비시퀀서임), 물리 처리 유닛(physics processing unit, PPU)(전형적으로 비시퀀서임), 고정 함수 유닛(FFU)(전형적으로 비시퀀서임) 등을 포함하는 액셀러레이터로서 구현될 수 있다. 도 1에 도시된 바와 같이, 각각의 리소스(50)는 (총칭하여) 액셀러레이터(52), 보다 구체적으로는 액셀러레이터(52a, 52b, 52c)를 포함할 수 있으며, 이들 각각은 리소스(50a-50c) 중 하나와 연관된다. 액셀러레이터(52)는 본 명세서에서 헬퍼 유닛이라고도 한다. 리소스(50a-50c)가 다른 ISA를 가질 수 있거나 비시퀀서일 수 있고 또 그 자체로서 시퀀서(20)에 대해 이질적일 수 있기 때문에, 이러한 리소스와 통신할 수 있도록 하기 위해 인터페이스가 사용될 수 있다. 특히 도 1에 도시된 바와 같이, 엑소-스켈레톤(54a, 54b, 54c)(총칭하여 엑소-스켈레톤(54)이라고 함)은 리소스(50) 각각과 연관될 수 있다. 따라서, 각각의 리소스(50)는 엑소-스켈레톤(54)과 그의 연관된 액셀러레이터(52) 간의 밀접한 결합을 나타내는 "엑소-시퀀서(exo-sequencer)"라고 할 수 있다. 이와 같이, 이들 이질적인 리소스는 시퀀서간 통신(및/또는 적용가능한 경우, 공유 메모리-기반 어드레싱)을 지원하는 통합된 ISA 프레임워크로 동질적인 시퀀서 리소스와 통합될 수 있다. 또한, 여러가지 리소스는 각각의 리소스가 성능을 향상시키기 위해 동시에 사용될 수 있도록 병렬 방식으로, 예컨대 다중 명령어 다중 데이터(multiple instruction multiple data, MIMD) 방식으로 실행될 수 있다.
그러나, 다른 실시예들에서, 리소스(50)는 시퀀서(20)에 대해 동질적인 시퀀서 리소스일 수 있으며 시퀀서(20)와 동일 또는 유사한 아키텍처를 포함하도록 대칭 코어(symmetric core)일 수 있다. 그러한 방식으로, 동시적인 파이버(concurrent fiber)가 구현될 수 있고, 레거시 OS 확장성(legacy OS scalability)이 향상될 수 있다. 또한, 다른 구현들에서, 리소스(50)는 비대칭 코어(asymmetric core)일 수 있다. 즉, 이들 리소스는 시퀀서(20)와 동일한 ISA를 갖지만 상이한 마이크로아키텍처(microarchitecture)를 가질 수 있다. 이러한 실시예들은 비대칭성을 관리하고 레거시 OS와의 호환성을 제공하는 데 도움이 될 수 있다.
이질적인 리소스를 구현하는 실시예들의 경우, 일 실시예에 따른 엑소-스켈레톤은 이들 이질적인 리소스가 시퀀서간 통신을 위한 최소한의 순응을 달성하기 위해 공통의 ISA를 갖는 것처럼 착각하게 할 수 있다. 따라서, 여러가지 실시예들에서, 이질적인 리소스는 (시스템-레벨 장치라기보다는) 사용자-레벨 기능 유닛 리 소스로서 기능할 수 있다. 즉, 여러가지 사용자-레벨 애플리케이션은 액셀러레이터와 직접 통신하고 그에 액세스하여, 액셀러레이터가 사용자-레벨 기능 유닛이 될 수 있다. 이와 같이, 여러가지 액셀러레이터 리소스는 ISA-관리 이질적 컴포넌트가 될 수 있다.
예를 들어, 각각의 엑소-시퀀서 또는 리소스(50)는 시퀀서와 유사한 "래퍼(wrapper)" 엑소-스켈레톤(54)을 갖는 특수 목적의 계산 액셀러레이터를 노출시킴으로써 이들 액셀러레이터(52)가 애플리케이션 프로그램에 의해 MIMD 리소스와 같은 사용자-레벨 이질적 계산 리소스로서 직접 사용될 수 있도록 할 수 있다.
따라서, 애플리케이션 프로그래머는 이들 헬퍼 유닛(52)을 프로그램하기 위해 사용자-레벨 ISA(30)를 직접 사용할 수 있지만, 헬퍼 유닛 자체가 물리적으로 반드시 ISA(30)를 가지는 것은 아니다. 또한, 프로그래머는 (ISA 또는 장치 속성의 관점에서) 각각이 별개의 특성을 갖는 다양한 일련의 이질적인 헬퍼 유닛을 프로그램하기 위해 균일한 ISA 메커니즘을 사용할 수 있다. 사실상, 본 발명의 일 실시예에 따른 엑소-시퀀서는 프로그래머로 하여금 레거시 장치 드라이버 소프트웨어 스택을 단순화(short circuit)시킬 수 있게 해준다. 따라서, 이를 위해, 엑소-시퀀서는 헬퍼 유닛에 베니어 엑소-스켈레톤(veneer exo-skeleton)을 장착하고, 헬퍼 유닛이 프로세서 또는 다른 장치의 시퀀서-인식 ISA-기반 시퀀서간 연산(sequencer-aware ISA-based inter-sequencer operation)에 참여할 수 있는 최소 시퀀서인 것처럼 보이게 할 수 있다. 소프트웨어 스택의 관점에서 볼 때, 엑소-시퀀서의 경우, 애플리케이션 프로그램 또는 사용자-런타임은 액셀러레이터를 애플리 케이션 리소스, 및 액셀러레이터를 시스템-레벨 리소스로서 관리하기 위해 느슨하게 결합된 OS-기반 장치 드라이버를 사용할 필요가 없이, 애플리케이션 바이너리(application binary)의 밀접하게 결합된 부분으로서 관리하기 위해 애플리케이션-레벨 소프트웨어 계층을 제공할 수 있다.
또한, 일부 구현에서, 하나 이상의 엑소-시퀀서는 명시적인 MIMD 멀티-시퀀서 ISA 인터페이스를 포함할 수 있으며, 이 경우 각각의 참가하는 헬퍼 유닛이 아키텍처적으로 플라이급 사용자-레벨 이벤트 생성 메커니즘(fly-weight user-level event yield mechanism)을 통한 비동기 시퀀서간 상호작용 또는 시퀀서-인식 동기 연산을 통해 메인 프로세서(즉, 제1 시퀀서)와 상호작용하는 최소 시퀀서 리소스로서 사용된다. 헬퍼 유닛 및 제1 시퀀서가 아키텍처적으로 동일한 OS 스레드에 밀접하게 결합되어 있지만, 메인 프로세서 및 엑소-스켈레톤 장착 헬퍼 유닛은 2개의 별개의 MIMD 시퀀서로서 상호작용한다. 특히, 엑소-스켈레톤 인터페이스를 통한 제1 시퀀서와 헬퍼 유닛 간의 데이터 및 제어 교환은 아키텍처적으로 시퀀서간 교환과 동등하다.
도 1의 실시예에서 특정의 리소스를 갖는 것으로 도시되어 있지만, 프로세서(10)가 각각이 일련의 아키텍처 상태(architectural state)를 포함하는 다수의 하드웨어 스레드 컨텍스트(명료함을 잃지 않고, "스레드 컨텍스트"라고도 함, 이것이 소프트웨어 스레드 컨텍스트와 동일하지 않다는 것에 유의할 것)를 지원할 수 있는 단일의 물리적 프로세서일 수 있다는 것을 잘 알 것이다. 일부 실시예들에서, 어떤 리소스는 이들 스레드 컨텍스트에 보일 수 있지만, 다른 리소스는 보이지 않는다. 따라서, 도 1에 도시된 바와 같이, 시퀀서(20) 각각은 스레드 컨텍스트에 대응할 수 있다. 이들 스레드 컨텍스트 중 적어도 일부(예컨대, n 중의 m, m ≤ n)가 운영 체제에 보이게 될 때, 이들 스레드 컨텍스트는 때때로 논리적 프로세서 또는 OS-관리 시퀀서라고 한다. 각각의 스레드 컨텍스트는 일련의 아키텍처 상태(AS1-ASn)를 유지한다. 아키텍처 상태는, 예컨대 데이터 레지스터, 세그먼트 레지스터, 제어 레지스터, 디버그 레지스터, 및 모델 특정(model specific) 레지스터 대부분을 포함한다. 스레드 컨텍스트는 캐쉬, 실행 유닛, 브랜치 예측기(branch predictor), 제어 로직 및 버스와 같은 물리적 프로세서의 대부분의 마이크로아키텍처 리소스를 공유할 수 있다. 이러한 특징이 공유될 수 있지만, 프로세서(10)의 각각의 스레드 컨텍스트는 독립적으로 후속 명령어 어드레스를 생성할 수 있다(그리고, 예컨대 명령어 캐쉬, 실행 명령어 캐쉬, 또는 추적 캐쉬(trace cache)로부터의 페치(fetch)를 수행할 수 있다). 스레드 컨텍스트에 대응하는 시퀀서(20) 각각은 대응하는 아키텍처 상태(40)(총칭하여)와 연관되어 있다. 특히, 예를 들어, 아키텍처 상태(AS1)(40a)는 시퀀서(20a)와 연관될 수 있고, AS2(40b)는 시퀀서(20b)와 연관될 수 있고, AS3(40c)은 시퀀서(20c)와 연관될 수 있으며, AS4(40d)는 시퀀서(20d)와 연관될 수 있다.
프로세서(10) 또는 유사한 이러한 프로세서를 사용하여, OS를 개입시키지 않고 ISA-기반 시퀀서간 통신이 행해질 수 있다. 예를 들어, 공유 메모리 멀티프로세싱 패러다임에서, 애플리케이션 프로그래머는 병렬 기능(parallelism)을 표현하 기 위해 소프트웨어 프로그램(즉, 애플리케이션 또는 프로세스)을 동시에 실행될 다수의 작업으로 분할할 수 있다. 동일한 소프트웨어 프로그램("프로세스")의 모든 스레드는 메모리 어드레스 공간의 공통의 논리적 뷰를 공유한다. 그러나, OS 스레드는 운영 체제에 의해 생성되거나, 스케쥴링되거나 또는 다른 방식으로 관리되지 않을 수 있는 다수의 사용자-레벨 스레드와 연관될 수 있다. 이러한 사용자-레벨 스레드는, OS 스레드와 구별하기 위해, "슈레드(shred)"라고 지칭될 수 있다. 이들 슈레드는 OS 스케쥴러에게 보이지 않을 수 있으며, 따라서 OS는 연관된 OS 스레드가 할당된 논리적 시퀀서 어드레스 상에서 언제 또는 어떻게 슈레드를 실행할지를 스케쥴링하는 것을 관리하지 않는다. OS 스레드 자체가 보통 자신의 슈레드 중 하나를 언제 또 어떻게 실행할지를 스케쥴링하는 일을 맡고 있다.
ISA-기반 시퀀서간 통신을 위한 아키텍처적인 지원은 사용자가 시퀀서 간의 제어 및 상태 전송을 직접 조작할 수 있게 하기 위해 하나 이상의 명령어가 제공되도록 하는 ISA의 확장을 포함하며, 이는 소위 시퀀서-인식(sequencer-aware) 또는 시퀀서-산술 명령어(sequencer-arithmetic instruction)일 수 있다. 이러한 명령어는 다른(즉, 제2) 시퀀서에 신호하는 제1 시퀀서를 제공하거나(한 명령어는 본 명세서에서 이그레스 시나리오(egress scenario)라고 하는 이그레스 제어 정보(egress control information)를 전송할 수 있고 데이터 페이로드를 전달할 수 있는 슈레드 전송(shred transfer) 또는 "SXFR" 명령어라고 함), 이러한 신호가 있는지 모니터링하도록 제2 시퀀서를 설정하는 것을 제공하고(본 명세서에서 슈레드 모니터 또는 "SEMONITOR" 명령어라고 함), 신호를 비동기적으로 수신할 시에 핸들 러로의 제어 이전을 수행하는(인그레스 시나리오(ingress scenario)라고 함) 명령어를 포함할 수 있다.
또한, 시퀀서-인식 명령어는 시퀀서-인식 상태 저장 및 복구 명령어와 같은 기타 명령어들도 포함할 수 있다. 이러한 상태 저장 명령어의 실행 시에, 제1 시퀀서는 제2 시퀀서의 아키텍처 상태(들)의 스냅샷 복사본을 생성할 수 있다. 시퀀서-인식 복구 명령어는 저장된 아키텍처 상태가 특정 시퀀서로 로드되도록 지정할 수 있다.
적어도 일 실시예에서, 하나 이상의 시퀀서-인식 명령어는 프로그래머에 의해 OS 스레드에 속하는 슈레드로 코딩될 수 있다. 이러한 명령어는, OS 스레드의 연산 동안에 실행될 때, OS 스케쥴링 로직의 간섭 없이 슈레드에 대한 생성, 제어 이전, 컨텍스트 저장, 컨텍스트 복구, 또는 기타 연산을 야기할 수 있다.
이러한 방식으로, 일 실시예에 따른 ISA-기반 시퀀서간 통신은 오버헤드를 감소시키고, 성능을 향상시킨다. 동일한 ISA의 시퀀서들 간의 통신 이외에, 여러가지 실시예에서, 예컨대 본 발명의 일 실시예에 따른 엑소-스켈레톤을 통해 이질적인 시퀀서들 간에 또는 시퀀서와 비시퀀서 간에 ISA-기반 시퀀서간 통신이 일어날 수 있다.
이제 도 2를 참조하면, 본 발명의 일 실시예에 따른 시스템의 일부분의 블록도가 도시되고 있다. 도 2에 도시된 바와 같이, 시스템(100)은 시퀀서(110) 및 액셀러레이터(130)를 포함한다. 액셀러레이터(130)는 서로 다른 실시예에서 많은 서로 다른 형태를 취할 수 있지만, 본 명세서에서의 설명의 목적상, 액셀러레이 터(130)가 시퀀서(110)와 이질적인 성질을 갖는 것으로 가정될 수 있다. 즉, 액셀러레이터(130)는 상이한 ISA를 가질 수 있거나 비시퀀서일 수 있다. 그러나, 여러가지 실시예에서, 시퀀서(110) 및 액셀러레이터(130)는 단일의 기판 상에 (예컨대, 멀티코어 프로세서의 일부로서) 구현될 수 있다. 대안으로서, 시퀀서(110) 및 액셀러레이터(130)는 집적 회로(IC) 내의 상이한 실리콘 부분에 또는 패키지나 마더보드 상에 위치하는 상이한 IC에 구현되거나 다른 방식으로 구현될 수 있다.
ISA-기반 시퀀서간 통신을 가능하게 하기 위해, 엑소-스켈레톤(120)이 액셀러레이터(130)에 연결될 수 있다. 엑소-스켈레톤(120) 및 액셀러레이터(130)는 함께 본 명세서에서 엑소-시퀀서(135)라고 한다. 액셀러레이터(130)가 이질적인 ISA를 갖거나 비시퀀서인 실시예들에서, 유한 상태 머신(FSM)이거나 가상화 계층일 수 있는 엑소-스켈레톤(120)은 액셀러레이터(130)가 시퀀서간 통신에 참여할 수 있도록 (특정의 실시예에 따라 하드웨어, 펌웨어 또는 소프트웨어로) 구현될 수 있다. 이러한 ISA-기반 시퀀서간 통신은 액셀러레이터(130)로의 인그레스 방향(ingress direction)으로 시그널링 프로토콜을 제공하며, 그에 따라 액셀러레이터(130)는 엑소-시퀀서의 아키텍처 상태가 있는지 GET 및/또는 SET 명령어를 포함하는 다른 시퀀서 또는 엑소-시퀀서로부터 SXFR에 의해 전송된 인그레스 시나리오를 모니터링하고 그에 응답할 수 있다. 또한, 이 시그널링 프로토콜은 시퀀서(110)에 페이지 결함(page fault)과 같은 이벤트에 대한 프록시 실행 요청과 같은 예외 처리를 위한 표시를 포함하는 이그레스 시나리오를 신호하는 액셀러레이터(130)로부터의 이그레스 통신을 포함한다. 또한, 일부 실시예들에서, 시퀀서(110) 또는 다른 리소스로 부터의 질의(query) 시에, 엑소-스켈레톤(120)이 액셀러레이터(130)의 보다 효과적인 사용을 가능하게 하기 위해 액셀러레이터(130)의 능력에 관한 정보를 전달할 수 있도록, 액셀러레이터(130)는 엑소-스켈레톤(120)을 통해 능력 보고-지향 통신 활동(capability reporting-oriented communication activity)에 참가할 수 있다.
도 2에 도시된 바와 같이, 엑소-스켈레톤(120)은 액셀러레이터(130)와 밀접하게 결합될 수 있다. 도 2에 더 도시된 바와 같이, 시스템(100)은 슈레드, 즉 사용자-레벨 스레드를 관리하고 스케쥴링하는, 슈레드 라이브러리(shred library)(150)로 표기되어 있는 사용자-레벨 런타임 소프트웨어 계층을 포함한다. 다른 구현에서, 슈레드 라이브러리(150)는 시퀀서(110)와 같은 시퀀서 상에서 슈레드를 지원 및 관리하는 연산을 구현할 수 있다. 예를 들어, 슈레드 라이브러리(150)는 슈레드 스케쥴링, 슈레드 컨텍스트 저장, 전환 및 복구 등을 관리할 수 있다. 이와 같이, OS(190)가 이들 연산에 관여되지 않기 때문에 더 낮은 오버헤드가 소비된다.
사용자 애플리케이션(160)은 시스템(100) 내에서 실행되고 있을 수 있고, 특수화된 또는 계산-집중적인(compute-intensive) 기능의 실행을 요청할 수 있다. 특히 MIMD 또는 병렬 환경에서, 성능 개선을 가능하게 하기 위해, 사용자 애플리케이션(160)은 시퀀서(110)가 액셀러레이터(130)와 통신하여 액셀러레이터(130)가 애플리케이션의 기타 유용한 작업(또는 시퀀서(110)에 의해 실행되는 기타 슈레드)을 수행하는 시퀀서(110)와 병렬로 기능을 수행하도록 요청할 수 있다. 이와 같이, 개선된 실행이 달성되는데, 이는 시퀀서(110) 및 액셀러레이터(130)가 모두 슈레드 인 애플리케이션 스레드의 서로 다른 부분에서 병렬로 실행될 수 있기 때문이다. 따라서, 본 발명의 실시예들을 사용하여, 시퀀서(110)의 제어 흐름은, 별도의 슈레드로서 효과적으로 연산하는 엑소-시퀀서(135) 상에서 수행되는 특수 목적의 계산과 병렬 및 비동기적으로 실행될 수 있다.
오버헤드를 감소시키기 위해, 시퀀서-인식 명령어를 통한 시퀀서(110)와 엑소-시퀀서(135) 간의 ISA-기반 시퀀스간 통신은 OS(190)의 개입을 필요로 하지 않을 수 있다. 이러한 방식으로, OS(190)의 장치 드라이버 스택이 회피될 수 있고, 대신에 시퀀서(110)와 엑소-시퀀서(135) 간의 직접 통신이 달성될 수 있다. 따라서, 도 2에 도시된 바와 같이, 일 실시예에서, ISA-기반 시퀀스간 통신이 시퀀서-인식 명령어를 통해 시퀀서(110)와 엑소-시퀀서(135) 간에 직접 진행될 수 있다. 사용자 애플리케이션일 수 있는 애플리케이션 코드(160)는 슈레드 런타임 라이브러리(150)를 통해 이러한 ISA-기반 시퀀스간 통신을 사용할 수 있다. 최소 OS 계층(minimal OS layer)(140)은 OS 스레드의 컨텍스트 저장 및 컨텍스트 복구 연산을 지원한다. OS 스레드가 OS-관리 시퀀서 상에서 컨텍스트 저장 또는 컨텍스트 복구 명령어를 수행할 때, OS-관리 시퀀서와 연관되어 있는 모든 애플리케이션 관리 시퀀서 및 엑소-시퀀서에 대한 컨텍스트가 그에 따라 저장 및 복구된다. OS는 OS 스레드 컨텍스트 전환에 걸쳐 이들 상태를 저장하기 위해 OS 스레드별로 충분한 저장 영역을 제공할 수 있다. 그곳에서, ISA-기반 시퀀서간 통신은 엑소-시퀀서(135)에 제공되고 또 그에 의해 영향을 받을 수 있도록 변환될 수 있다. 유사한 통신 흐름이 역 방향으로 일어날 수 있다. 적어도 일 실시예에서, OS 스레드 컨텍스트 전환 시에 각각의 시퀀서 또는 엑소-시퀀서에서의 컨텍스트 저장 및 복구는 동일한 OS 스레드 내의 다른 시퀀서/엑소-시퀀서와 병렬로 각각의 시퀀서 또는 엑소-시퀀서에 의해 수행될 수 있다. 이러한 병렬 구현은 전체적인 저장 및 복구 연산의 성능을 향상시킬 수 있다.
도 2의 실시예에서 단일의 시퀀서(110)를 포함하는 것으로 도시되어 있지만, 본 발명의 범위가 그에 한정되지 않으며 다른 실시예들에서 멀티-시퀀서 시스템이 제공될 수 있다는 것을 잘 알 것이다. 이러한 시스템에서, 엑소-스켈레톤(120)은 단일의 물리적 액셀러레이터(130)가 다수의 시퀀서에 의해 연관될 수 있도록 가상화 기능을 더 구현할 수 있다. 따라서, 엑소-스켈레톤(120)은 각각이 논리적 엑소-시퀀서에 연결되는 서로 다른 시퀀서들에 대한 액셀러레이터(130)의 아키텍처 상태의 다수의 복사본을 저장하기 위해 다수의 컨텍스트에 대한 저장소를 구현할 수 있다. 엑소-스켈레톤(120)은 컨텍스트 상태의 저장 및 복구를 가능하게 하고 액셀러레이터(130)를 사용하기 위해 서로 다른 시퀀서의 시퀀싱 또는 멀티플렉싱을 제공하는 로직을 더 포함할 수 있다. 이러한 방식으로, 액셀러레이터(130)는 시스템의 다수의 시퀀서에 서비스할 수 있다. 적어도 일 실시예에서, 엑소-스켈레톤은 스위치-온-이벤트 멀티스레딩을 통해 다수의 논리적 엑소-시퀀서를 구현할 수 있다. 이러한 실시예에서, 논리적 엑소-시퀀서 컨텍스트는 별개의 온-칩 레지스터 파일 또는 전용의 스크래치 메모리로서 구현될 수 있고, 엑소-시퀀서 컨텍스트 전환 조건은 또는 마이크로코드와 같은 펌웨어 또는 로직으로 구현될 수 있다. 적어도 일 실시예에서, 각각의 시퀀서에 대해 별개의 물리적 엑소-시퀀서가 구현될 수 있다. 이 실시예에서, 다수의 물리적 엑소-시퀀서는 동시 멀티스레딩(SMT) 또는 CMP 시스템으로서 구현될 수 있다.
액셀러레이터가 시퀀서(110) 및/또는 나머지 시스템과 동일한 ISA를 갖지 않을 때 또는 액셀러레이터가 비시퀀서인 경우 도 2에 도시된 것과 같은 실시예가 사용될 수 있다. 이러한 실시예에서, 도 2에 도시된 데이터 흐름은 OS(190)의 개입 없이 시퀀서(110)와 액셀러레이터(130) 간의 효율적인 ISA-기반 시퀀서간 통신을 제공한다.
그러나, 다른 구현에서, 액셀러레이터는 시퀀서 또는 시스템의 다른 부분과 공통의 ISA를 가질 수 있다. 또한, 일부 구현에서, 액셀러레이터는 시스템의 나머지와 유사하게 구성될 수 있다. 예를 들어, 일부 구현에서, 액셀러레이터는 특수 연산을 실행하도록 구성된 시스템 컴포넌트일 수 있다. 그러나, 주어진 시스템 구성에서, 이 컴포넌트는 주변 장치 또는 부속 장치(add-in device)와 같은 다른 컴포넌트를 위해 디스에이블되거나 최소로 사용된다. 예를 들어, 집적된 그래픽 처리 유닛(GPU)은 시스템 마더보드 상의 (그래픽 메모리 컨트롤러 허브(graphic memory controller hub, GMCH)와 같은) 칩셋의 일부로서 구현될 수 있다. 그러나, 어떤 시스템 구성에서, 부속 개별 그래픽 카드는 마더보드에 대해 (예컨대, PCI(Peripheral Component Interconnect) 슬롯 상에서와 같이) 플러그-인으로서도 구성된다. 이러한 경우에, 집적된 GPU는 디스에이블되거나 사용되지 않을 수 있다. 마찬가지로, GPU 또는 기타 이러한 컴포넌트는 다수의 서로 다른 프로세싱 엔진을 포함할 수 있으며, 그 중 일부는 어떤 시스템 구성에서 충분히 이용되지 않을 수 있다.
이러한 구현에서, 이들 그렇지 않으면 디스에이블되거나 최소로 사용되는 프로세싱 리소스는 본 발명의 일 실시예에 따른 액셀러레이터(130)로서 구성될 수 있다. 이제 도 3을 참조하면, 시퀀서(210) 및 액셀러레이터(230)를 포함하는 시스템(200)의 일부분의 블록도가 도시되고 있다. 도 3의 실시예에서, 액셀러레이터(230)는 제1 부분(232) 및 제2 부분(234)을 포함할 수 있다. 제1 부분(232)은 엑소-시퀀서로서 동작하도록 구성될 수 있는 반면, 제2 부분(234)은 정상적인 OS 제어 하에서 특수 그래픽 또는 미디어 기능과 같은 다양한 기능을 수행하도록 구성될 수 있다. 따라서, 도 3에 도시된 바와 같이, 제2 부분(234)은 장치 드라이버 스택(295)으로의 OS 애플리케이션 프로그래밍 인터페이스(API)를 통해 OS-기반 실행 모델의 애플리케이션(260)과 통신할 수 있도록 OS(290)의 장치 드라이버 스택(295)에 연결된다. 이러한 방식으로, 제2 부분(234)은 종래의 OS 통신 경로를 통해 애플리케이션(260)의 요청 하에서 프로세싱 기능을 수행할 수 있다.
반면에, 제1 부분(232)은 엑소-스켈레톤(220)을 통해 시퀀서(210)와 직접 통신하도록 구성된다. 엑소-스켈레톤(220)은 제1 부분(232)과 시퀀서(210) 간의 ISA-기반 통신을 가능하게 하는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합일 수 있다. 따라서, 사용자-레벨 애플리케이션(256)은 엑소-스켈레톤(220)을 통한 시퀀서(210)와 제1 부분(232) 간의 통신을 위해 ISA-기반 시퀀서간 명령어를 사용할 수 있다. 전형적으로, 사용자-레벨 슈레드 라이브러리(250)가 사용될 수 있으며, 전술한 바와 같이 OS 스레드 컨텍스트 저장 및 복구 연산에 대한 지원을 제공 하기 위해 OS 지원(240)의 최소 계층이 사용된다.
따라서, 도 3의 실시예에서, 2개의 소프트웨어 스택, 즉 본 발명의 일 실시예에 따른 OS 드라이버 스택 및 사용자-레벨 런타임 스택이 공존할 수 있다. 액셀러레이터(230)의 리소스 공유를 제공함으로써, 성능이 향상될 수 있는데, 이는 ISA-기반 시퀀서간 통신을 통해 최소 오버헤드를 제공하는 사용자-레벨 애플리케이션 및 레거시-기반 애플리케이션(예컨대, OS 장치 드라이버 모델을 사용함) 모두가 액셀러레이터(230)의 리소스를 이용할 수 있기 때문이다. 일부 구현에서, 엑소-스켈레톤(220)은 애플리케이션(256) 및 애플리케이션(260) 모두가 액셀러레이터(230)의 (애플리케이션에 보이는) 전체 리소스의 소유권을 갖는 것으로 생각하도록 액셀러레이터(230)에 대해 가상화 작업(virtualization task)을 수행할 수 있다. 따라서, 다른 실시예들에서, 엑소-스켈레톤(220)은 액셀러레이터(230)에 대한 아키텍처 상태의 다수의 컨텍스트를 제공하는 것 및 스위치-온-이벤트 멀티스레딩과 유사한 조건 하에서 컨텍스트 전환에 대한 지원을 제공하는 것을 포함하는 가상화 작업을 수행할 수 있다.
그 자체로서, 액셀러레이터(230)에서의 기능의 서브셋은 OS(290)를 통해 레거시 애플리케이션과 연관될 수 있는 반면, 기능의 다른 서브셋은 본 발명의 일 실시예에 따른 ISA-기반 시퀀서간 통신 프로토콜을 통해 사용자-레벨 애플리케이션과 연관될 수 있다. 따라서, 액셀러레이터(230)의 물리적 리소스는 이들 2개의 별개의 패러다임의 공존을 지원할 수 있다.
이제 도 4를 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시 되고 있다. 도 4에 도시된 바와 같이, 시스템(300)은 그래픽 메모리 컨트롤러 허브(GMCH)(320) 연결된 프로세서(예컨대, 시퀀서)(310)를 포함하며, 이는 차례로, 예컨대 동적 랜덤 액세스 메모리(DRAM)일 수 있는 메모리(330)에 연결된다. 또한, GMCH(320)는 (평면 디스플레이와 같은) 디스플레이(340)에 연결된다. GMCH(320)는 집적된 그래픽 액셀러레이터를 포함할 수 있다. GMCH(320)는 여러가지 주변 장치를 시스템(300)에 연결하기 위해 사용될 수 있는 입력/출력(I/O) 컨트롤러 허브(ICH)(350)에 더 연결된다. 예를 들어, 도 4의 실시예에는 ICH(350)에 연결된 별개의 그래픽 장치일 수 있는 외부 그래픽 장치(360)가 다른 주변 장치(370)와 함께 도시되어 있다.
시스템(300)이 별도의 외부 개별 그래픽 장치(360)를 갖도록 구성되어 있기 때문에, GMCH(320) 내의 집적된 그래픽이 디스에이블될 수 있다. 예를 들어, 시스템 기본 입출력 시스템(BIOS)이 디스에이블 비트를 프로그램할 수 있거나, 다른 메커니즘이 GMCH(320)에서의 그래픽 기능을 디스에이블할 수 있다. GMCH(320)에서의 그래픽 처리를 위해 사용되는 다른 쉬는(idle) 프로세싱 리소스가 대신에 본 발명의 일 실시예에 따른 액셀러레이터로 변환될 수 있다. 따라서, 이 리소스는, 예컨대 사용자-레벨 애플리케이션을 통해, OS 개입을 필요로 하지 않고 여러가지 기능을 구현하는 데 사용될 수 있다. 이와 같이, 특히 GMCH(320)의 그래픽 리소스에 의한 이러한 프로세싱이 프로세서(310) 내의 시퀀서에서의 작업과 병렬로(예컨대, MIMD 방식으로) 수행되는 경우에, 성능이 향상될 수 있다.
일부 실시예들에서, GMCH(320)의 집적된 그래픽에서의 그래픽 기능을 위한 엑소-시퀀서는 직교 기능(orthogonal functionality)을 수행하는 여러가지 그래픽 처리 유닛을 포함할 수 있다. 이들 프로세싱 리소스 중 하나 이상은 시스템(300)의 OS와 연관된 하나 이상의 미디어 장치 드라이버의 개입 없이 시스템(300) 내에 미디어 연산을 구현하기 위해 ISA-기반 미디어 액셀러레이터 엑소-시퀀서로서 구성될 수 있다. 이와 같이, 디지털 미디어의 인코딩 및 디코딩과 같은 미디어 연산은 프로세서(310)의 최소 개입으로, 또한 OS의 장치 드라이버 스택의 오버헤드를 겪지 않고 시스템(300)에서 수행될 수 있다.
여러가지 실시예들에서, 시퀀서와 마찬가지로, 엑소-시퀀서는 애플리케이션-레벨 아키텍처 리소스의 형태이며, 따라서 시퀀서-인식 사용자-레벨 연산에서 사용하기 위한 고유의 가상화가능한 이름 공간을 가질 수 있다. 따라서, 시퀀서간 통신은 OS 개입 없이 전적으로 사용자 레벨에서 수행될 수 있다. 시퀀서 가상화에 있어서, 논리적 엑소-시퀀서 아키텍처 리소스는 레지스터 이름 변경 및 메모리 가상화와 유사한 방식으로 관리될 수 있으며, 여기서 물리적 리소스의 수가 논리적 리소스의 수와 동일할 필요는 없다. 또한, 아키텍처 특성, 마이크로아키텍처 특성, 열적 특성, 전력 소모 특성 등을 포함하는 다양한 장점 척도의 관점에서 물리적 리소스들 간에 다양한 차이가 있을 수 있다. 이들 차이는 사실상 엑소-시퀀서 리소스들 간의 비대칭성 및 이질성으로 나타난다. 또한, 가상적으로 어드레싱가능한 리소스로서, 엑소-시퀀서 리소스는 엑소-시퀀서 리소스의 동기적 또는 비동기적 액세스 제어를 관리하기 위해 물리적 시퀀서-특정 능력을 표현하는데 어떤 하드웨어, 펌웨어 및 소프트웨어 추상화 계층에 의해 가상 시퀀스 어드레스에 있는 비트 가 사용될 수 있는 능력-기반 관리를 받을 수 있다.
적어도 일 실시예에서, 엑소-시퀀서는 제1 시퀀서로부터의 이하의 2가지 정규의 인그레스 시나리오(canonical ingress scenario), 즉 GET 인그레스 시나리오(이 시나리오에서, 제1 시퀀서는 엑소-시퀀서에 로컬인 상태를 판독/달성하기 위해 엑소-시퀀서에 GET 시나리오를 전송하는데 SXFR을 사용할 수 있음), 및 SET 인그레스 시나리오(이 시나리오에서, 제1 시퀀서는 엑소-시퀀서에 로컬인 상태를 기록/갱신하기 위해 엑소-시퀀서에 SET 시나리오를 전송하는데 SXFR을 사용할 수 있음)에 대한 응답을 제공함으로써 최소 시퀀서간 교환 프로토콜을 지원할 수 있다. 또한, 엑소-시퀀서는, 예컨대 완료, 진행 또는 예외 조건의 비동기적 이벤트 통지를 수행하기 위해 제1 시퀀서에 NOTIFY 시나리오를 전송하는데 NOTIFY 이그레스 시나리오 및 SXFR를 사용할 수 있다. 제1 시퀀스를 대신하여 액셀러레이터가 프록시 실행 모드에서 연산하게 할 수 있는 PROXY 시나리오는 NOTIFY 이그레스 시나리오의 특수 형태이다.
이 최소 상태 보고 및 갱신 능력으로, 제1 시퀀서는 데이터 및 제어 상태를 (개별적으로 또는 전체적으로) 처리하기 위한 상위 레벨 제어 메시지를 작성할 수 있다. 특히, 여러가지 합성 상태 액세스가 작성될 수 있다. 예를 들어, 컨텍스트 저장/복구를 사용하여, 제1 시퀀서는 컨텍스트 전환에 걸쳐 저장/복구될 상태들의 세트를 판독 또는 갱신하기 위해 반복하여 SXFR을 사용할 수 있거나, 대체 실시예에서, 제1 시퀀서는 엑소-시퀀서가 다수의 상태에 걸쳐 로컬적으로 반복하는 상태들의 서브셋을 판독 및 갱신하기 위해 하나의 SXFR을 사용할 수 있다. 또한, 제1 시퀀서는 상태, 연관된 속성(기록, 판독 등), 포맷 등을 포함하는 구성(즉, 기능 열거(capability enumeration))을 질의하기 위해 SXFR을 사용할 수 있다. 이러한 방식으로, 전통적으로 시퀀서가 아니거나 OS-기반 장치 드라이버 없이 범용 프로세서와 같이 작업할 수 없는 특정 부류의 집적 장치는, 그 장치가 프로세서의 기능 유닛이고 그의 상태가 OS 스레드 컨텍스트 전환에 걸쳐 OS 스레드 컨텍스트 저장 및 복구되는 것처럼, 특정의 애플리케이션에 의해 원하는 바대로 가상화될 수 있다.
일 실시예에서, 시퀀서 유형의 헬퍼 유닛과 제1 시퀀서와 다른 ISA의 헬퍼 유닛이 제1 시퀀서에 대해 아키텍처적으로 정의되는 들어오는(incoming) 및 나가는(outgoing) 시나리오를 통해 통신하기 위해 엑소-스켈레톤 유한 상태 머신(FSM)을 구현하는데 자신의 사설(private) ISA를 사용할 수 있다. 이러한 방식으로, 헬퍼 유닛은 제1 시퀀서에 의해 요청된 연산에 응답하여 여러가지 알고리즘을 구현하는데 자신의 사설 ISA를 사용하기로 할 수 있지만, 헬퍼 유닛 하드웨어 자체는 그 연산을 직접 지원하지 않는다. 이 시퀀서 FSM 구현은 임의의 물리적 상호 연결부 또는 인터페이스를 통해 행해질 수 있다. 상호 연결부 상의 2개의 장치는 서로 신호할 수 있으며, 이 신호는 수신되고 제1 시퀀서 상에서 논리적 및 아키텍처적으로 사용자-레벨 이벤트 및 FSM으로의 트리거 입력으로서 로컬적으로 변환될 수 있다. 일 실시예에서, 질의-관련 컨텍스트 저장/복구 인그레스/이그레스 시나리오에 영향을 받는 엑소-시퀀서의 종합적 상태는 헬퍼 유닛의 원래의 상태의 서브셋(또는 전체 세트)일 수 있다. 이 경우에, 헬퍼 유닛의 사설 ISA에서의 엑소-스켈레톤 코드 는 제1 시퀀서의 시퀀서-인식 연산을 지원하기 위해 펌웨어로 구현되는 마이크로코드 루틴처럼 작동한다.
다른 실시예에서, 제1 시퀀서와 동일한 ISA의 격리된(sequestered) 시퀀서는 헬퍼 유닛을 대신하여 최소 FSM을 구현하기 위해 엑소-스켈레톤으로서 사용될 수 있다. 엑소-시퀀서와 헬퍼 유닛 간의 사설 프로토콜이 반드시 네이티브-ISA-적합(native-ISA-compliant)일 필요는 없지만, 제1 시퀀서는 엑소-스켈레톤과 상호작용하여, 엑소-스켈레톤이 제1 시퀀서에 그 자신 및 헬퍼 유닛(즉, 다른 ISA)의 종합적 상태를 제공할 수 있다. 헬퍼 유닛의 상태는 엑소-스켈레톤 시퀀서에 의해 엑소-시퀀서의 종합적 상태로 1:1 또는 M:1(단, M>1임) 매핑될 수 있다. 다시 말하면, 제1 시퀀서의 시퀀서간 연산을 지원하도록 FSM을 구현하는 코드 시퀀스는 헬퍼 유닛 하드웨어의 마이크로코드-기반 제어와 유사하다.
다른 예에서, 엑소-시퀀서는 (임의의 ISA의) 내장된 제어 시퀀싱, 예컨대 I/O 로직을 갖는 특수 ASIC 블록을 갖지 않는 하드와이어드 "고정 함수" 헬퍼 장치를 포함할 수 있다. 이러한 헬퍼 유닛의 경우, 적어도 하나의 실시예에서, 엑소-스켈레톤은 고정 함수 유닛에 부착된 프록시 FSM을 통해 구축될 수 있다. 최소 시퀀서 상태 열거 및 질의 인터페이스는 ASIC에 물리적으로 액세스하는 엑소-스켈레톤 FSM에 구현될 수 있다. 노출된 ASIC 상태는 엑소-스켈레톤 시퀀서 상태에 1:1 또는 M:1 매핑될 수 있으며, 엑소-스켈레톤 FSM에 구현될 수 있다. FSM 로직은 ASIC 블록으로의 인터페이스로서 물리적으로 구현될 수 있다. 다른 실시예에서, 엑소-스켈레톤 FSM은 프로그램가능 마이크로컨트롤러 시퀀서이거나 하드와이어드 ASIC 블록일 수 있지만, 인그레스 시나리오를 가로채고 이그레스 시나리오를 방출할 수 있다.
일 실시예에서, 제1 시퀀서와 동일한 ISA의 격리된 시퀀서는 엑소-스켈레톤 FSM을 구현하는 동작을 할 수 있으며, 엑소-스켈레톤 시퀀서는 ASIC 상태에 물리적으로 액세스할 수 있고 ASIC 상태와 그 자신의 상태를 엑소-시퀀서 상태로서 논리적으로/아키텍처적으로 종합할 수 있다. 다른 실시예에서, 제1 시퀀서와 다른 ISA의 격리된 시퀀서는 엑소-스켈레톤 FSM을 구현하는 동작을 할 수 있다.
어느 경우든지, 엑소-스켈레톤 시퀀서의 격리는 주어진 헬퍼 유닛에 정적으로 전용되어 있는 물리적 시퀀서를 예비함으로써 물리적으로 행해지거나, 각각이 고유의 헬퍼 유닛과 논리적으로 연관되는 다수의 논리적 격리된 시퀀서로서 동적으로 멀티플렉싱될 수 있다. 즉, 엑소-스켈레톤 시퀀서는 시퀀서 어드레스 가상화를 위한 임의의 원하는 방식을 통해 가상화된 시퀀서일 수 있다.
일 실시예에서, 액셀러레이터는 제1 시퀀서에 대한 비간섭성 스크래치 패드 메모리(non-coherent scratch pad memory)를 가질 수 있다. 이러한 헬퍼 유닛을 엑소-시퀀서가 되도록 하기 위해, 비간섭성 스크래치 패드 상태는 엑소-시퀀서의 "공표된"(즉, 열거가능한) 종합 상태의 일부로서 매핑될 수 있다. 스크래치 메모리 크기가 충분히 큰 경우에, 엑소-스켈레톤은 스크래치 상태의 제한된 서브셋(상태가 없는 것을 포함함)만을 대응하는 엑소-시퀀서 상태의 일부로서 제시할 수 있다. 예를 들어, 액셀러레이터가 1 킬로바이트(Kb) 길이의 데이터의 프레임을 처리할 수 있지만, 엑소-시퀀서는 저장/복구될 256 바이트의 버퍼 상태를 포함하는 것으로 액 셀러레이터를 노출시킬 수 있을 뿐이다.
제1 시퀀서로/로부터 데이터를 전송하기 위해 직접 메모리 액세스(DMA) 프로토콜을 사용하는 헬퍼 유닛 장치의 경우, 일 실시예에서, 헬퍼 유닛과 엑소-스켈레톤 간의 사설 프로토콜은 원시 DMA-기반인 채로 있을 수 있지만, 엑소-시퀀서는 제1 시퀀서에 엑소-스켈레톤의 종합적 상태 및 헬퍼 유닛 장치에 관한 DMA 구성 상태를 제공할 수 있다. 이후, 엑소-스켈레톤에 관한 DMA 구성 및 엑소-시퀀서 "에뮬레이션/구현" FSM 상태가 컨텍스트 저장/복구될 수 있다(따라서, OS 컨텍스트 전환에 걸쳐 가상화될 수 있다). 그러나, 제1 시퀀서는 아키텍처적으로 구현에 특정된 DAM 구성 정보 중 임의의 것을 알고 있을 필요가 없다.
다른 실시예에서, 엑소-시퀀서(예컨대, 사용자-레벨 아키텍처 리소스임) 및 시스템-레벨(예컨대, 특권 레벨) 장치 리소스는 실제로 공통의 물리적 원시 구성 블록 리소스를 공유할 수 있다. 엑소-시퀀서에 대한 공표된 논리적 상태는 시스템-레벨 논리적 장치에 의한 판독/기록 명령을 통해 액세스가능한 구성 블록에서 동일한 물리적 상태로 이름 변경될 수 있다. 물리적 헬퍼 유닛 내부에서, 리소스의 분할/파티션이 정적으로 또는 동적으로 관리될 수 있고, 사용자-레벨 엑소-시퀀서 및 시스템-레벨 장치 모두에 대해 ISA에 투명할 수 있다.
어떤 서버 플랫폼은 네트워크 스택 계산의 속도를 높이기 위해 암호화/복호화 액셀러레이터를 구비할 수 있다. 이들 암호-엔진은 보통 암호-액셀러레이터를 제어하는 프로그램가능 마이크로-엔진을 포함하는 네트워크 프로세서에 물리적으로 연결된다. 일례로서, 암호 엔진은 해시 테이블 계산에서 사용하기 위한 것과 같은 난수 발생기 또는 의사 난수 발생기를 포함할 수 있다. 이러한 구현에서, 프로세서 마이크로-엔진은 엑소-시퀀서가 되도록, 암호-엔진과 연결된 엑소-스켈레톤 FSM으로서 재프로그램될 수 있다.
일 실시예에서, 격리된 액셀러레이터는 가상 머신 확장(VMX)-기반 에뮬레이터 가상 머신 모니터(VMM)를 통해 에뮬레이트될 수 있다. 컨텍스트 저장/복구를 포함하는 상태 액세스 및 갱신을 위한 인그레스/이그레스 시나리오는 엑소-시퀀서의 종합 상태로서 부가의 아키텍처 상태를 갖는 시퀀서 에뮬레이션의 상부에 구현될 수 있다. 엑소-시퀀서로부터 제1 시퀀서로의 비동기 NOTIFY 시그널링은 PROXY 시나리오로서 구현될 수 있다.
엑소-스켈레톤을 통해, 여러가지 시퀀서간 계산 프리미티브(primitive)를 나타낼 수 있는 부가의 인그레스 시나리오는 엑소-시퀀서 FSM 에뮬레이터를 통해 에뮬레이트되거나 통과될 수 있고, 계산 가속화를 위해 격리된 원시 물리적 리소스로 전달될 수 있다. 사실상, 헬퍼 유닛의 원시 계산 리소스의 서브셋은 사용자-레벨 MIMD 시퀀서 아키텍처 리소스인 것처럼 애플리케이션 프로그램에 의해 사용될 수 있다.
이제 도 5를 참조하면, 본 발명의 일 실시예에 따른 방법의 흐름도가 도시되고 있다. 도 5에 도시된 바와 같이, 방법(400)은 시퀀서, 예컨대 프로세서 코어 등에서 구현될 수 있다. 도 5에 도시된 바와 같이, 방법(400)은 액셀러레이터로부터의 신호를 모니터링하기 시작하고 그 신호를 시퀀서 내의 이벤트 핸들러와 연관시키기 위해 모니터링 개시(예컨대, SEMONITOR 명령어)를 수행하는 것으로 시작할 수 있다(블록 405). 특히, 이러한 신호는 액셀러레이터로부터의 메시지를 가리키는 식별 또는 통지 신호일 수 있다. 액셀러레이터는, 예컨대 다른 ISA의 명령어 시퀀서 또는 비시퀀서에 대해 이질적인 리소스일 수 있다. 따라서, 명령어 시퀀서와 액셀러레이터 간의 통신은 엑소-스켈레톤을 경유할 수 있다. 따라서, 액셀러레이터로부터 수신되는 신호는 엑소-스켈레톤을 경유하여 시퀀서에 의해 수신될 수 있다.
액셀러레이터가 사용자-레벨 애플리케이션을 대신하여 연산을 수행하도록 구성하고 이를 가능하게 하기 위해, 애플리케이션에서 사용하기 위한 아키텍처 상태는, 예컨대 SXFR을 경유하여 액셀러레이터로 전송될 수 있다(블록 410). 예를 들어, 명령어 시퀀서는 레지스터 값, 구성 정보 등에 대응하는 슈레드 아키텍처 상태에 대한 여러가지 정보를 엑소-스켈레톤을 경유하여 전송할 수 있다.
이후, 명령어 시퀀서는 액셀러레이터가 사용자-레벨 애플리케이션을 대신하여 하나 이상의 연산을 수행할 수 있도록 액셀러레이터에 대한 명령 정보를 준비할 수 있다(블록 415). 예를 들어, 명령어 시퀀서는 액셀러레이터에 의해 조작 또는 처리될 데이터 및/또는 그 데이터에 적용될 특정의 가속 기능을 더 포함할 수 있는 명령 정보를 준비할 수 있다. 이어서, 이 명령 정보는, 예컨대 SXFR 명령어의 용도를 포함하는 시퀀서간 프로토콜(inter-sequencer protocol)을 통해 통신될 수 있다(블록 420). 특히, 이 프로토콜은 명령어 시퀀서의 ISA를 가질 수 있다. 이 정보는 이 프로토콜을 사용하여 엑소-스켈레톤으로 직접 전달될 수 있으며, 이는 기본 데이터가 액셀러레이터로 전달될 수 있도록 프로토콜을 변환할 수 있다.
이러한 시퀀서간 프로토콜 통신을 구현하는 서로 다른 방식이 여러가지 실시예에서 행해질 수 있다. 예를 들어, 일부 실시예들에서, 통신은 명령어 시퀀서와 액셀러레이터 간의 공유 메모리 버퍼일 수 있는 버퍼에 저장된 각각의 작업 요소에 대해 하나 이상의 명령어를 포함할 수 있다. 다른 실시예들에서, 최소 명령 정보는 명령어 시퀀서, 예컨대 명령어 포인터(IP)로부터 액셀러레이터 상에서 실행되기를 원하는 코드 세그먼트로 전송될 수 있다. 이어서, 액셀러레이터 자체가 시퀀서인 것으로 가정하면, 이 액셀러레이터는 표시된 위치로부터 코드를 페치하도록 연산을 구현할 수 있다. 명령 정보가 전송되는 입도(granularity) 역시 변할 수 있다. 예를 들어, 다른 실시예에서, 명령 정보는 명령별로 또는 더 넓은 입도로 전송될 수 있다. 또 다른 실시예에서, 제1 시퀀서는 엑소-스켈레톤을 통해 메모리를 거치지 않고 네이티브 명령을 액셀러레이터로 전송할 수 있으며, 이어서 액셀러레이터는 그 명령을 직접 실행할 수 있다.
계속 도 5를 참조하면, 이후 명령어 시퀀서는 명령어 시퀀서의 명령 하에서 액셀러레이터의 연산과 병렬로 직교(예컨대, 독립적인) 연산을 수행할 수 있다(블록 425). 즉, 일부 실시예들에서, 병렬 연산, 예컨대 MIMD 연산은 명령어 시퀀서 및 액셀러레이터 모두가 유용한 작업을 병렬로 수행할 수 있도록 수행될 수 있다. 이와 같이, 명령어 시퀀서는 액셀러레이터로부터의 결과를 기다릴 필요가 없으며, 대신에 다른 유용한 작업을 수행할 수 있다. 물론, 명령어 시퀀서는 관련 연산들을 병렬로 수행할 수 있다.
이후, 명령어 시퀀서가 액셀러레이터로부터 이벤트를 수신하였는지가 판정될 수 있다(결정 블록 430). 이러한 이벤트는 액셀러레이터에서의 작업의 상태 또는 완료를 나타내는 통지 또는 기타 메시지의 형태일 수 있다. 유의할 점은 이 판정이 동기적 폴링(synchronous polling)을 통할 필요가 없으며, 대신에 이 통지가 비동기적이고 이벤트-구동(event-driven)이며, 따라서 비폴링-기반(non-polling-based)일 수 있다는 점이다. 결정 블록(430)에서 이러한 이벤트가 수신되지 않은 경우, 제어는 전술한 블록(425)으로 다시 넘어간다. 대신에, 이벤트가 수신될 때, 명령어 시퀀서는 액셀러레이터로부터 데이터를 수신 및 처리하기 위해 이벤트 핸들러(예컨대, 블록(405)에서 SMONITOR를 통해 최초로 등록됨)를 기동시킬 수 있다(블록 440). 여러가지 구현에서, 이 이벤트 핸들러는 OS 호출 또는 컨텍스트 전환의 오버헤드가 회피되도록 라이트급 사용자-레벨 핸들러(light-weight user-level handler)일 수 있다. 이와 같이, 개선된 연산이 행해질 수 있고, 결과 데이터가 액셀러레이터로부터 획득되어 사용자-레벨 애플리케이션에 의해 원하는 바대로 사용될 수 있다. 핸들러로의 제어 이전은, 이벤트 핸들러가 완료된 후에 정지된 실행이 나중에 재개될 수 있도록, 그 다음 명령어 포인터가 기록된(예컨대, 스택으로 푸시된) 후에 행해질 수 있다.
이제 도 6을 참조하면, 본 발명의 일 실시예에 따른 엑소-스켈레톤을 갖는 액셀러레이터에서 수행되는 연산에 대응하는 방법의 흐름도가 도시되고 있다. 전술한 바와 같이, 이 액셀러레이터는 시퀀서에 대해 이질적인 성질을 가질 수 있다. 따라서, 엑소-스켈레톤은 시퀀서간 프로토콜 통신을 제공할 수 있다. (전술한 도 5의) 블록(410)에 응답하여, 액셀러레이터는 시퀀서로부터 슈레드 아키텍처 상태 정보(shred architecture state information)를 수신할 수 있다. 따라서, 액셀러레이터는 이 정보에 기초하여 구성될 수 있다(블록 460). 액셀러레이터의 이질적인 성질로 인해, 엑소-스켈레톤은 이 시퀀서간 통신을 수신하고 그 통신이 액셀러레이터에 의해 처리될 수 있도록 이를 변환하기 위해 사용될 수 있다.
이후, (도 5의) 블록(420)에 응답하여, 명령 정보는 엑소-스켈레톤을 통해 시퀀서로부터 수신될 수 있다(블록 465). 이러한 명령 정보는, 처리될 데이터와 함께, 제어 및/또는 구성 정보를 포함할 수 있다. 따라서, 액셀러레이터는 명령 정보에 따라 연산을 수행할 수 있다(블록 470). 이 연산은 시퀀서가 자신의 연산을 수행하는 것과 병렬로 수행될 수 있다. 즉, 시퀀서는 다른 유용한 작업을 수행하기 이전에 액셀러레이터가 자신의 연산을 완료하기를 기다릴 필요가 없다. 전술한 바와 같이, 시퀀서 및 액셀러레이터에서의 연산은 MIMD 방식으로 수행될 수 있으며, 일부 구현에서는 직교 연산에 대응할 수 있다.
액셀러레이터가 자신의 연산을 완료할 때, 엑소-스켈레톤은 그에 따라 시퀀서에 알려줄 수 있다(블록 475). 이어서, 사용자-레벨 코드, 예컨대 사용자-레벨 이벤트 핸들러를 기동시키는 라이트급 사용자-레벨 생성 메커니즘의 제어 하에서, 액셀러레이터에서 획득된 여러가지 결과에 대응하는 데이터는 엑소-스켈레톤을 통해 시퀀서로 전송될 수 있다(블록 480). 도 5 및 도 6의 실시예에서 이 특정의 흐름에 따라 기술되어 있지만, 본 발명의 범위가 그에 한정되지 않는다는 것을 잘 알 것이다.
본 발명의 일 실시예에 따른 엑소-시퀀서를 사용하여, 서로 다른 레벨의 추 상화(abstraction)가 구현될 수 있다. 예를 들어, 일부 구현에서, 가상 또는 복합 명령어 세트 컴퓨팅(complex instruction set computing, CISC) 명령어가 엑소-스켈레톤으로 전송될 수 있고, 이 엑소-스켈레톤은 이러한 명령어를, 제1 시퀀서와 다른 ISA를 갖는 시퀀서일 수 있거나 전혀 시퀀서가 아닐 수 있는 액셀러레이터에 대한 네이티브 물리적 명령어 또는 명령 시퀀스로 매핑하기 위한 확장을 수행한다. 따라서, 액셀러레이터의 기본 명령 세트가 시간에 따라 수정되거나 개선된 경우, 레거시 지원이 여전히 이러한 레벨의 추상화를 통해 제공될 수 있다. 이와 같이, 액셀러레이터에 대한 개선된 성능은 레거시 사용자-레벨 애플리케이션에 대해서도 달성될 수 있다. 다른 구현에서, 직접 또는 단축 명령어 세트 컴퓨팅(reduced instruction set computing, RISC) 명령어가 시퀀서로부터 액셀러레이터 하드웨어 상에서 명령어를 직접 실행할 수 있는 엑소-시퀀서로 전송될 수 있다.
실시예들은 많은 서로 다른 시스템 유형으로 구현될 수 있다. 이제 도 7을 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시되고 있다. 도 7에 도시된 바와 같이, 멀티프로세서 시스템(500)은 지점 간(point-to-point) 상호연결 시스템이며, 지점 간 상호연결(550)을 통해 연결된 제1 프로세서(570) 및 제2 프로세서(580)를 포함한다. 도 7에 도시된 바와 같이, 프로세서(570, 580) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(574a, 574b) 및 프로세서 코어(584a, 584b))를 포함하는 멀티코어 프로세서일 수 있다. 프로세서(570, 580) 각각은 엑소-시퀀서, 즉 제1 엑소-시퀀서(575) 및 제2 엑소-시퀀서(585)를 더 포함할 수 있다. 전술한 바와 같이, 엑소-시퀀서(575, 585)는 프로세서 코어(570, 580)의 나머 지 리소스에 대해 이질적인 리소스일 수 있다. 프로세서마다 단일의 엑소-시퀀서만을 갖는 것으로 도시되어 있지만, 본 발명의 범위가 그에 한정되지 않는다는 것을 잘 알 것이다. 다른 실시예들에서, 주어진 프로세서에 다수의 엑소-시퀀서가 존재할 수 있다. 또한, 하나 이상의 엑소-시퀀서가 프로세서의 각각의 개별적인 코어와 연관될 수 있다.
제1 프로세서(570)는 메모리 컨트롤러 허브(MCH)(572) 및 지점 간(P-P) 인터페이스(576, 578)를 더 포함한다. 마찬가지로, 제2 프로세서(580)는 MCH(582) 및 P-P 인터페이스(586, 588)를 포함한다. 도 7에 도시된 바와 같이, MCH(572, 582)는 프로세서를, 각자의 프로세서에 로컬적으로 부착된 메인 메모리의 일부분일 수 있는 각자의 메모리, 즉 메모리(532) 및 메모리(534)에 연결한다.
제1 프로세서(570) 및 제2 프로세서(580)는 각각 P-P 인터페이스(552, 554)를 경유하여 칩셋(590)에 연결될 수 있다. 도 7에 도시된 바와 같이, 칩셋(590)은 P-P 인터페이스(594, 598)를 포함한다. 또한, 칩셋(590)은 칩셋(590)을 고성능 그래픽 엔진(538)과 연결시키는 인터페이스(592)를 포함한다. 일 실시예에서, 그래픽 엔진(538)을 칩셋(590)에 연결시키는데 AGP(Advanced Graphics Port) 버스(539)가 사용될 수 있다. AGP 버스(539)는 미국 캘리포니아주 산타 클라라 소재의 인텔사에 의해 1998년 5월 4일자로 발표된 Accelerated Graphics Port Interface Specification, Revision 2.0과 부합될 수 있다. 대안으로서, 지점 간 상호연결(539)이 이들 컴포넌트를 연결시킬 수 있다.
이번에는, 칩셋(590)이 인터페이스(596)를 통해 제1 버스(516)에 연결될 수 있다. 일 실시예에서, 제1 버스(516)는 1995년 6월자의 PCI Local Bus Specification, Production Version, Revision 2.1에 의해 정의된 PCI(Peripheral Component Interconnect) 버스 또는 PCI Express 버스와 같은 버스 또는 다른 3세대 I/O 상호연결 버스일 수 있지만, 본 발명의 범위가 그에 한정되지는 않는다.
도 7에 도시된 바와 같이, 여러가지 I/O 장치(514)가, 제1 버스(516)를 제2 버스(520)에 연결시키는 버스 브리지(518)와 함께, 제1 버스(516)에 연결될 수 있다. 일 실시예에서, 제2 버스(520)는 LPC(low pin count) 버스일 수 있다. 일 실시예에서, 예컨대 키보드/마우스(522), 통신 장치(526), 및 코드(530)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장소와 같은 데이터 저장 유닛(528)을 포함하는 여러가지 장치가 제2 버스(520)에 연결될 수 있다. 또한, 오디오 I/O(524)가 제2 버스(520)에 연결될 수 있다. 유의할 점은 다른 아키텍처가 가능하다는 점이다. 예를 들어, 도 7의 지점 간 아키텍처 대신에, 시스템은 멀티 드롭 버스(multi-drop bus) 또는 기타 이러한 아키텍처를 구현할 수 있다.
실시예들은 코드로 구현될 수 있으며, 명령어를 수행하도록 시스템을 프로그램하는데 사용될 수 있는 명령어를 저장하는 저장 매체 상에 저장될 수 있다. 이 저장 매체는 플로피 디스크, 광학 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 컴팩트 디스크 재기록가능(CD-RW), 및 자기-광학 디스크를 포함하는 임의의 유형의 디스크, 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 플래쉬 메모리, 전기적 소거가능 프로그램가능 판독 전 용 메모리(EEPROM)와 같은 반도체 장치, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적합한 임의의 기타 유형의 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다.
본 발명이 제한된 수의 실시예들에 대해 기술되어 있지만, 당업자라면 이로부터의 다수의 수정 및 변형을 잘 알 것이다. 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 속하는 모든 이러한 수정 및 변형을 포함하는 것으로 보아야 한다.
본 발명에 따르면, 명령어 세트 아키텍처(ISA)-기반 시퀀서간 통신을 가능하게 해주는 메커니즘이 제공될 수 있다.

Claims (30)

  1. 사용자-레벨 애플리케이션으로부터의 요청을 제1 명령어 시퀀서에 연결된 액셀러레이터로 상기 제1 명령어 시퀀서를 경유하여 직접 전달하는 단계 - 상기 액셀러레이터는 상기 제1 명령어 시퀀서에 대해 이질적인 리소스를 포함함 -,
    상기 요청을 상기 액셀러레이터와 연관된 엑소-스켈레톤(exo-skeleton)을 경유하여 상기 액셀러레이터에 제공하는 단계, 및
    상기 요청에 응답하여 상기 제1 명령어 시퀀서에서의 제2 기능과 병렬로 상기 액셀러레이터에서 제1 기능을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 요청을 직접 전달하는 단계는 상기 요청을 상기 엑소-스켈레톤으로 전송하고 상기 엑소-스켈레톤과 상기 액셀러레이터 간의 사설 프로토콜(private protocol)에 따라 상기 요청을 상기 엑소-스켈레톤으로부터 상기 액셀러레이터로 전달하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    제1 명령어 세트 아키텍처를 경유하여 상기 요청을 상기 엑소-스켈레톤으로 전송하는 단계를 더 포함하고,
    상기 액셀러레이터는 제2 명령어 세트 아키텍처의 리소스를 포함하는 방법.
  4. 제1항에 있어서,
    사용자-레벨 애플리케이션으로부터의 상기 요청을 상기 액셀러레이터로 직접 전달하는 단계는 운영 체제(OS) 지원 없이 상기 요청을 직접 전달하는 단계를 더 포함하며,
    상기 액셀러레이터는 상기 OS에 투명한(transparent) 방법.
  5. 제1항에 있어서,
    상기 액셀러레이터에서 상기 제1 기능을 수행하는 단계는 상기 요청에 응답하여 상기 액셀러레이터의 아키텍처 상태(architectural state)의 서브셋을 상기 사용자-레벨 애플리케이션에 제공하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 액셀러레이터에서 상기 제1 기능을 수행하는 단계는 상기 요청에 응답하여 상기 엑소-스켈레톤 및 상기 액셀러레이터의 종합적 아키텍처 상태를 상기 사용자-레벨 애플리케이션에 제공하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 사용자-레벨 애플리케이션으로부터의 상기 요청을 상기 액셀러레이터로 직접 전달하기 전에, 시스템의 디스에이블된 리소스를 상기 시스템의 구성에 따라 식별하고 상기 디스에이블된 리소스를 상기 액셀러레이터가 되도록 구성하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 시스템의 상기 디스에이블된 리소스를 식별하고 상기 디스에이블된 리소스를 상기 액셀러레이터가 되도록 구성한 후에, 운영 체제-레벨 미디어 드라이버를 경유하지 않고 상기 디스에이블된 리소스를 경유하여 사용자-레벨 미디어 애플리케이션을 수행하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 사용자-레벨 애플리케이션으로부터의 상기 요청을 상기 액셀러레이터로 직접 전달하기 전에, 상기 액셀러레이터 내의 제1 기능 서브셋이 상기 사용자-레벨 애플리케이션에게 보이고 상기 액셀러레이터 내의 제2 기능 서브셋이 운영 체제(OS)에게 보이도록 상기 엑소-스켈레톤을 경유하여 상기 액셀러레이터를 가상화하는 단계를 더 포함하는 방법.
  10. 명령어를 수행하는 제1 명령어 시퀀서, 및
    상기 제1 명령어 시퀀서에 연결된 엑소-시퀀서
    를 포함하고,
    상기 엑소-시퀀서는,
    상기 제1 명령어 시퀀서로부터 수신되는 데이터에 대해 적어도 하나의 연산을 수행하는 액셀러레이터 - 상기 액셀러레이터는 상기 제1 명령어 시퀀서에 대해 이질적인 리소스를 포함함 -, 및
    사용자-레벨 제어 하에서 상기 제1 명령어 시퀀서와 상기 액셀러레이터 사이에서 시퀀서간 통신을 가능하게 하는, 상기 액셀러레이터에 연결된 엑소-스켈레톤
    을 포함하는 장치.
  11. 제10항에 있어서,
    상기 액셀러레이터는 고정 함수 유닛(fixed function unit)을 포함하고,
    상기 엑소-스켈레톤은 상기 고정 함수 유닛에 연결된 유한 상태 머신(finite state machine; FSM)을 포함하는 장치.
  12. 제10항에 있어서,
    상기 장치는 상기 제1 명령어 시퀀서 및 상기 액셀러레이터를 포함하는 단일의 기판을 갖는 프로세서를 포함하는 장치.
  13. 제10항에 있어서,
    상기 제1 명령어 시퀀서 및 상기 액셀러레이터는 병렬로 연산들을 수행하는 장치.
  14. 제10항에 있어서,
    상기 액셀러레이터는 상기 적어도 하나의 연산의 완료 시에 상기 제1 명령어 시퀀서에 통지하는 장치.
  15. 제14항에 있어서,
    상기 제1 명령어 시퀀서는 상기 통지 이후에 상기 사용자-레벨 제어 하에서 이벤트 핸들러를 실행하고,
    상기 이벤트 핸들러는 상기 적어도 하나의 연산으로부터 결과 데이터를 수신 및 처리하는 장치.
  16. 제10항에 있어서,
    상기 시퀀서간 통신은 운영 체제(OS) 개입 없는 직접 통신을 포함하는 장치.
  17. 삭제
  18. 제10항에 있어서,
    상기 액셀러레이터는 디스에이블된 시스템 리소스를 포함하고,
    상기 액셀러레이터는,
    상기 사용자-레벨 제어 하에서 상기 제1 명령어 시퀀서가 사용하도록 구성되는 제1 부분, 및
    운영 체제-인에이블된 애플리케이션을 경유하여 사용하도록 구성되는 제2 부 분을 포함하는 장치.
  19. 삭제
  20. 머신에 의해 실행될 때 상기 머신이,
    제1 시퀀서에서, 헬퍼 유닛(helper unit)에 연결된 인터페이스를 경유하여 상기 헬퍼 유닛으로부터 신호를 수신하는 단계 - 상기 헬퍼 유닛은 상기 제1 시퀀서에 대해 이질적인 리소스임 -,
    상기 인터페이스를 경유하여 상기 제1 시퀀서로부터 상기 헬퍼 유닛으로 명령 정보를 제공하는 단계 - 상기 명령 정보는 상기 제1 시퀀서의 제1 명령어 세트 아키텍처(ISA)를 가지며 운영 체제(OS) 지원 없이 상기 인터페이스에 의해 변환됨 -, 및
    상기 헬퍼 유닛에서의 제1 연산과 병렬로 상기 제1 시퀀서에서 제2 연산을 수행하는 단계 - 상기 제1 연산은 상기 명령 정보에 응답한 것임 -
    를 포함하는 방법을 수행할 수 있게 하는 명령어를 포함하는 머신-판독가능 저장 매체.
  21. 제20항에 있어서,
    상기 헬퍼 유닛에서의 상기 제1 연산과 병렬로 상기 제1 시퀀서에서 상기 제2 연산을 수행하는 단계는 상기 제1 시퀀서 및 상기 헬퍼 유닛에서 다중 명령어 다중 데이터(multiple instruction multiple data)(MIMD) 연산을 수행하는 단계를 더 포함하는, 머신-판독가능 저장 매체.
  22. 제20항에 있어서,
    상기 방법은,
    상기 헬퍼 유닛에서의 상기 제1 연산과 병렬로 상기 제1 시퀀서에서 상기 제2 연산을 수행한 후, 상기 제1 연산이 완료되었다는 표시를 상기 헬퍼 유닛으로부터 수신하는 단계, 및
    상기 인터페이스를 경유하여 상기 제1 연산에 대응하는 데이터를 수신하기 위해 상기 제1 시퀀서 상에서 사용자-레벨 핸들러를 개시하는 단계를 더 포함하는, 머신-판독가능 저장 매체.
  23. 제20항에 있어서,
    상기 방법은 상기 헬퍼 유닛에서의 상기 제1 연산과 병렬로 상기 제1 시퀀서에서 상기 제2 연산을 수행한 후, 사용자-레벨 애플리케이션과 OS 드라이버 사이에서 상기 헬퍼 유닛을 공유하는 단계를 더 포함하는, 머신-판독가능 저장 매체.
  24. 제23항에 있어서,
    상기 헬퍼 유닛을 공유하는 단계는 상기 인터페이스를 경유하여 상기 헬퍼 유닛의 제1 부분을 상기 사용자-레벨 애플리케이션에 노출시키고 상기 헬퍼 유닛의 제2 부분을 상기 OS 드라이버에 노출시키는 단계를 더 포함하는, 머신-판독가능 저장 매체.
  25. 제24항에 있어서,
    상기 방법은 상기 사용자-레벨 애플리케이션과 상기 OS 드라이버 사이에서 상기 헬퍼 유닛을 공유한 후, 상기 헬퍼 유닛의 상기 제1 부분과 연관된 제1 아키텍처 상태를 상기 제1 시퀀서로부터 상기 인터페이스에 제공하는 단계를 더 포함하는, 머신-판독가능 저장 매체.
  26. 제1 명령어 세트 아키텍처(ISA)를 경유하여 명령어를 수행하는 제1 시퀀서,
    상기 제1 시퀀서에 연결된 제2 시퀀서, 및
    상기 제1 시퀀서 및 상기 제2 시퀀서에 연결된 동적 랜덤 액세스 메모리(DRAM)
    를 포함하고,
    상기 제2 시퀀서는 시퀀서간 통신 프로토콜을 경유하여 상기 제1 시퀀서와 통신하는 인터페이스를 포함하고, 상기 인터페이스에 연결된 계산 리소스를 더 포함하며,
    상기 계산 리소스는 상기 제1 시퀀서에 대해 비동질적이고, 사설 프로토콜을 경유하여 상기 인터페이스와 통신하는
    시스템.
  27. 제26항에 있어서,
    상기 제1 시퀀서 및 상기 제2 시퀀서는 프로세서의 이질적인 리소스를 포함하는 시스템.
  28. 삭제
  29. 삭제
  30. 제26항에 있어서,
    상기 제1 시퀀서는 상기 제2 시퀀서에 가상 명령을 제공하고,
    상기 인터페이스는 상기 가상 명령을 상기 계산 리소스와 연관된 제2 명령어 세트 아키텍처(ISA)의 하나 이상의 명령어에 매핑하는 시스템.
KR1020060136758A 2005-12-29 2006-12-28 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 KR100879825B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/321,779 2005-12-29
US11/321,779 US8914618B2 (en) 2005-12-29 2005-12-29 Instruction set architecture-based inter-sequencer communications with a heterogeneous resource

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020080098928A Division KR101247407B1 (ko) 2005-12-29 2008-10-09 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신

Publications (2)

Publication Number Publication Date
KR20070072396A KR20070072396A (ko) 2007-07-04
KR100879825B1 true KR100879825B1 (ko) 2009-01-21

Family

ID=37908009

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020060136758A KR100879825B1 (ko) 2005-12-29 2006-12-28 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신
KR1020080098928A KR101247407B1 (ko) 2005-12-29 2008-10-09 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020120083521A KR101299286B1 (ko) 2005-12-29 2012-07-30 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020130007136A KR101388880B1 (ko) 2005-12-29 2013-01-22 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020130125193A KR101455009B1 (ko) 2005-12-29 2013-10-21 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020080098928A KR101247407B1 (ko) 2005-12-29 2008-10-09 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020120083521A KR101299286B1 (ko) 2005-12-29 2012-07-30 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020130007136A KR101388880B1 (ko) 2005-12-29 2013-01-22 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
KR1020130125193A KR101455009B1 (ko) 2005-12-29 2013-10-21 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신

Country Status (5)

Country Link
US (3) US8914618B2 (ko)
EP (2) EP2275926A3 (ko)
JP (3) JP2007183943A (ko)
KR (5) KR100879825B1 (ko)
CN (2) CN102081556B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
JP5111797B2 (ja) * 2006-06-29 2013-01-09 株式会社東芝 情報処理装置及び情報処理方法
US7768518B2 (en) * 2006-09-27 2010-08-03 Intel Corporation Enabling multiple instruction stream/multiple data stream extensions on microprocessors
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US7827383B2 (en) * 2007-03-09 2010-11-02 Oracle America, Inc. Efficient on-chip accelerator interfaces to reduce software overhead
US7809895B2 (en) * 2007-03-09 2010-10-05 Oracle America, Inc. Low overhead access to shared on-chip hardware accelerator with memory-based interfaces
US7904696B2 (en) * 2007-09-14 2011-03-08 Intel Corporation Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US7996648B2 (en) * 2007-12-19 2011-08-09 Microsoft Corporation Coupled symbiotic operating systems
US8275975B2 (en) * 2008-01-25 2012-09-25 Mtekvision Co., Ltd. Sequencer controlled system and method for controlling timing of operations of functional units
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20090307711A1 (en) * 2008-06-05 2009-12-10 International Business Machines Corporation Integrating computation and communication on server attached accelerators
US8141102B2 (en) * 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US9058183B2 (en) * 2009-12-29 2015-06-16 Advanced Micro Devices, Inc. Hypervisor isolation of processor cores to enable computing accelerator cores
US9626624B2 (en) 2010-07-20 2017-04-18 Analog Devices, Inc. Programmable probability processing
CA2832444C (en) * 2011-04-07 2017-10-17 Pneuron Corp. Legacy application migration to real time, parallel performance cloud
US9563851B2 (en) * 2011-06-07 2017-02-07 Analog Devices, Inc. Programmable probability processing
US9720730B2 (en) * 2011-12-30 2017-08-01 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
EP3654178B1 (en) 2012-03-30 2023-07-12 Intel Corporation Mechanism for issuing requests to an accelerator from multiple threads
EP2831693B1 (en) 2012-03-30 2018-06-13 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
WO2013162208A1 (en) * 2012-04-24 2013-10-31 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
US9098726B2 (en) 2012-04-24 2015-08-04 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
US9729309B2 (en) * 2012-12-19 2017-08-08 Intel Corporation Securing data transmission between processor packages
US9043923B2 (en) * 2012-12-27 2015-05-26 Empire Technology Development Llc Virtual machine monitor (VMM) extension for time shared accelerator management and side-channel vulnerability prevention
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US9740513B2 (en) 2014-06-05 2017-08-22 Futurewei Technologies, Inc. System and method for real time virtualization
US10489178B2 (en) 2015-04-28 2019-11-26 Altera Corporation Network functions virtualization platforms with function chaining capabilities
US10169073B2 (en) 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
KR102482896B1 (ko) 2017-12-28 2022-12-30 삼성전자주식회사 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime
US11150817B2 (en) 2019-02-08 2021-10-19 International Business Machines Corporation Integrating kernel-bypass user-level file systems into legacy applications
CN110383232B (zh) * 2019-05-05 2021-03-23 长江存储科技有限责任公司 具有序列处理单元的存储器控制系统
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
CN111739393A (zh) * 2020-06-28 2020-10-02 山东省医药生物技术研究中心(山东省病毒研究所) 一种基于动作捕捉系统的穿戴式推拿教学辅助系统
US20230221993A1 (en) * 2022-01-13 2023-07-13 Vmware, Inc. Methods and systems that place and manage workloads across heterogeneous hosts within distributed computer systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980702137A (ko) * 1995-02-10 1998-07-15 카알 실버맨 프로세서의 명령어 집합간의 변환 방법 및 장치
KR20010043807A (ko) * 1998-05-26 2001-05-25 토토라노 제이. 빈센트 에뮬레이션 코프로세서

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763294A (en) * 1985-12-19 1988-08-09 Wang Laboratories, Inc. Method and apparatus for floating point operations
AU625293B2 (en) * 1988-12-09 1992-07-09 Tandem Computers Incorporated Synchronization of fault-tolerant computer system having multiple processors
JPH0432954A (ja) * 1990-05-22 1992-02-04 Mitsubishi Electric Corp コプロセッサ制御方式
JP3025893B2 (ja) 1990-05-29 2000-03-27 コニカ株式会社 画像形成装置
US5202988A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership System for communicating among processors having different speeds
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
JPH1115660A (ja) * 1997-06-20 1999-01-22 Sony Corp マイクロプロセッサ
JP3621315B2 (ja) * 1999-11-22 2005-02-16 Necエレクトロニクス株式会社 マイクロプロセッサシステム
US20020010848A1 (en) 2000-05-29 2002-01-24 Shoichi Kamano Data processing system
JP4913955B2 (ja) * 2000-05-29 2012-04-11 株式会社ガイア・システム・ソリューション データ処理装置
US6734862B1 (en) * 2000-06-14 2004-05-11 Intel Corporation Memory controller hub
US6799265B1 (en) * 2000-07-11 2004-09-28 Intel Corporation Dependency checking for reconfigurable logic
JP4651790B2 (ja) 2000-08-29 2011-03-16 株式会社ガイア・システム・ソリューション データ処理装置
US6842180B1 (en) * 2000-09-20 2005-01-11 Intel Corporation Opportunistic sharing of graphics resources to enhance CPU performance in an integrated microprocessor
JP2004519027A (ja) * 2001-01-30 2004-06-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 主プロセッサと命令経路コプロセッサとの同期化
US7225446B2 (en) * 2001-02-20 2007-05-29 Pts Corporation Context preservation
GB2372848B (en) * 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
GB2372348B (en) * 2001-02-20 2003-06-04 Siroyan Ltd Context preservation
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
JP2002278753A (ja) * 2001-03-21 2002-09-27 Rohm Co Ltd データ処理システム
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US6944746B2 (en) * 2002-04-01 2005-09-13 Broadcom Corporation RISC processor supporting one or more uninterruptible co-processors
TWI273385B (en) * 2002-04-12 2007-02-11 Shuttle Inc Method and device for preventing computer motherboard from being burnt
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
JP3852437B2 (ja) * 2003-11-19 2006-11-29 セイコーエプソン株式会社 同期・非同期インターフェース回路及び電子機器
US7810083B2 (en) 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US20060179273A1 (en) * 2005-02-09 2006-08-10 Advanced Micro Devices, Inc. Data processor adapted for efficient digital signal processing and method therefor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US9266123B2 (en) 2013-12-05 2016-02-23 Exxonmobil Research And Engineering Company Integrated cyclone assembly

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980702137A (ko) * 1995-02-10 1998-07-15 카알 실버맨 프로세서의 명령어 집합간의 변환 방법 및 장치
KR20010043807A (ko) * 1998-05-26 2001-05-25 토토라노 제이. 빈센트 에뮬레이션 코프로세서

Also Published As

Publication number Publication date
CN102081556A (zh) 2011-06-01
JP2014059920A (ja) 2014-04-03
EP2275926A2 (en) 2011-01-19
KR20080096636A (ko) 2008-10-31
KR20130122599A (ko) 2013-11-07
KR101455009B1 (ko) 2014-11-03
KR101388880B1 (ko) 2014-04-23
US8914618B2 (en) 2014-12-16
EP2275926A3 (en) 2012-12-12
EP1814026A3 (en) 2009-02-25
KR20130023302A (ko) 2013-03-07
US9588771B2 (en) 2017-03-07
US9459874B2 (en) 2016-10-04
KR20120098981A (ko) 2012-09-06
US20070157211A1 (en) 2007-07-05
JP2011146077A (ja) 2011-07-28
US20130205122A1 (en) 2013-08-08
JP2007183943A (ja) 2007-07-19
EP1814026A2 (en) 2007-08-01
US20150070368A1 (en) 2015-03-12
CN1991768B (zh) 2011-04-13
CN1991768A (zh) 2007-07-04
KR101247407B1 (ko) 2013-03-25
KR101299286B1 (ko) 2013-08-23
CN102081556B (zh) 2013-12-04
KR20070072396A (ko) 2007-07-04

Similar Documents

Publication Publication Date Title
KR100879825B1 (ko) 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신
US7487341B2 (en) Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US9875102B2 (en) Apparatus, system, and method for persistent user-level thread
US10120691B2 (en) Context switching mechanism for a processor having a general purpose core and a tightly coupled accelerator
EP0794492B1 (en) Distributed execution of mode mismatched commands in multiprocessor computer systems
US10241885B2 (en) System, apparatus and method for multi-kernel performance monitoring in a field programmable gate array
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
US20240281311A1 (en) Queue adjustments to avoid message underrun and usage spikes
JP2005056019A (ja) 情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
A107 Divisional application of patent
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180103

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190103

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 12