KR20160037827A - 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들 - Google Patents

시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들 Download PDF

Info

Publication number
KR20160037827A
KR20160037827A KR1020157022208A KR20157022208A KR20160037827A KR 20160037827 A KR20160037827 A KR 20160037827A KR 1020157022208 A KR1020157022208 A KR 1020157022208A KR 20157022208 A KR20157022208 A KR 20157022208A KR 20160037827 A KR20160037827 A KR 20160037827A
Authority
KR
South Korea
Prior art keywords
memory
processor
module
data
offload
Prior art date
Application number
KR1020157022208A
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 KR20160037827A publication Critical patent/KR20160037827A/ko

Links

Images

Classifications

    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/285Halt processor DMA
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/686Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

시스템 메모리 버스의 적어도 하나의 인-라인 메모리 슬롯에 프로세서 모듈을 물리적으로 연결시키도록 구성되는 인-라인 모듈 커넥터; 및 모듈 상에 탑재되는 적어도 하나의 집적 회로 디바이스(IC)를 갖는 적어도 하나의 프로세서 모듈을 포함하는 시스템이 개시된다. IC는, 중앙 프로세싱 유닛 및 캐시 메모리를 포함하는 적어도 하나의 오프로드 프로세서, 오프로드 프로세서에 커플링되는 적어도 하나의 콘텍스트 메모리, 및 오프로드 프로세서 및 콘텍스트 메모리에 커플링되고 시스템 메모리 버스를 통해 미리 결정된 기록 동작들을 검출하도록 구성되는 로직을 포함한다.

Description

시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들{OFFLOAD PROCESSOR MODULES FOR CONNECTION TO SYSTEM MEMORY}
본 발명은 일반적으로 프로세싱 모듈들에 관한 것이고, 더 상세하게는, 시스템의 호스트 프로세서와는 독립적으로 데이터를 프로세싱하기 위해 시스템 메모리 버스에 물리적으로 연결될 수 있는 오프로드 프로세싱 모듈들에 관한 것이다.
기업들은 종종 연관된 "상태", 콘텍스트 또는 세션-정의 애플리케이션들을 지원하는 전용 서버들 상에서 실행되는 입력/출력(IO) 집약적 네트워킹된 애플리케이션들에 의존한다. 서버들은, 서버 상에서 실행되는 특정 상태와 각각 연관되는 다수의 애플리케이션들을 실행할 수 있다. 통상적인 서버 애플리케이션들은 아파치(Apache) 웹 서버, MySQL 데이터베이스 애플리케이션, PHP 하이퍼텍스트 프리프로세싱, Kaltura 지원된 소프트웨어를 이용한 비디오 또는 오디오 프로세싱, 패킷 필터들, 애플리케이션 캐시, 관리 및 애플리케이션 스위치들, 회계, 분석 및 로깅을 포함한다.
불행하게도, 서버들은 애플리케이션들 사이의 스위칭과 연관된 계산 및 메모리 저장 비용들에 의해 제한될 수 있다. 다수의 애플리케이션들이 일정하게 이용가능하도록 요구되는 경우, 각각의 애플리케이션의 세션 상태를 저장하는 것과 연관된 오버헤드는, 애플리케이션들 사이의 일정한 스위칭으로 인해 불량한 성능을 초래할 수 있다. 다수의 프로세서 코어들 사이에 애플리케이션들을 분배하는 것은 애플리케이션 스위칭 문제를 경감시키는 것을 도울 수 있지만, 이를 제거하지는 않는다. 진보된 프로세서들은 종종 단지 8개 내지 16개의 코어들을 갖지만, 수백개의 애플리케이션 또는 세션 상태들이 요구될 수 있다.
기업들은 또한 다양한 방식들로 자신들의 대량의 데이터를 저장 및 프로세싱한다. 기업이 데이터를 저장하는 하나의 방식은, 관계형 데이터베이스들 및 대응하는 관계형 데이터베이스 관리 시스템들(RDBMS)을 이용하는 것이다. 통상적으로 구조화된 데이터로 지칭되는 이러한 데이터는 RDBMS에서 수집, 정규화, 포맷 및 저장될 수 있다. SQL(Structured Query Language)과 같은 표준화된 데이터 언어들에 기초한 툴들이, 구조화된 데이터에 액세스하고 이를 프로세싱하기 위해 이용될 수 있다. 그러나, 이러한 포맷된 구조화된 데이터는 기업의 저장된 데이터의 오직 작은 부분만을 표현하는 것으로 추정된다. 모든 조직들은, 상당한 정보 및 지식이 구조화되지 않은 데이터(즉, "빅 데이터") 저장소들에 상주함을 점차 인식하고 있다. 따라서, 기업 정보 자원들의 가치를 최대화하기 위해, 구조화된 및 구조화되지 않은 데이터 둘 모두에 대한 간단하고 효과적인 액세스가 필수적인 것으로 보인다.
그러나, 구조화된 및 구조화되지 않은 데이터를 핸들링하기 위해 현재 이용되고 있는 플랫폼들은 이들의 아키텍쳐에서 상당히 상이하다. 종래의 SQL 질의들에 대해서는 메모리 내 프로세싱 및 SAN(Storage Area Network)-형 아키텍쳐가 이용되는 한편, 구조화되지 않은 데이터에 대해서는 통상적으로 물품 또는 무공유 아키텍쳐들이 이용된다 (프로세서, 로컬 메모리 및 디스크 자원들로 이루어진 각각의 컴퓨팅 노드는 컴퓨팅 클러스터의 다른 노드들과 어떠한 것도 공유하지 않는다).
입력-출력(IO) 집약적 네트워킹된 애플리케이션들 뿐만 아니라 구조화된 및 구조화되지 않은 데이터 질의들을 지원하는 컴퓨팅 시스템 아키텍쳐, 하드웨어 및 연산 방법이 요구된다. 이러한 시스템은 높은 스루풋 데이터 프로세싱을 쉽게 핸들링할 필요가 있고, 다수의 프로세서들 사이에 태스크들을 분배하기 위한 높은 병렬성을 제공할 수 있고, 다수의 사용자들 또는 애플리케이션들을 지원하기 위해 효율적인 콘텍스트 스위칭을 추가로 제공할 수 있다.
도 1a는 실시예에 따른 시스템을 도시한다.
도 1b는 실시예에 따른 시스템 플로우를 도시한다.
도 2a 내지 2d는 다양한 실시예들에 따른 프로세서 모듈들을 도시한다.
도 2e는 종래의 듀얼-인-라인 메모리 모듈을 도시한다.
도 2f는 다른 실시예에 따른 시스템을 도시한다.
도 2g 내지 도 2l은 실시예에 따른 프로세서 모듈 동작들을 도시한다.
도 2m은 실시예에 따른 방법을 도시한다.
도 2n은 다른 실시예에 따른 방법을 도시한다.
도 3은 실시예들에 따른 프로세서들에 대한 프로토콜 스택들을 도시한다.
도 4는 실시예에 따른 시스템 로드들이 파티셔닝을 도시한다.
도 5는 다른 실시예에 따른 시스템 로드들이 파티셔닝을 도시한다.
도 6은 다른 실시예에 따른 방법을 도시한다.
본 발명의 다양한 실시예들은 이제 다수의 도면들을 참조하여 상세히 설명될 것이다. 실시예들은 시스템 메모리 버스에 연결된 오프로드 모듈들에 오프로드 프로세서들이 포함되는 프로세싱 모듈들, 시스템들 및 방법들을 도시한다. 그런 오프로드 프로세서들은 게다가 시스템 메모리 버스에 연결된 임의의 호스트 프로세서들이고, 임의의 호스트 프로세서들과는 독립적으로 시스템 메모리 버스를 통해 전달된 데이터 상에서 동작할 수 있다. 특정 실시예들에서, 오프로드 프로세서들은 빠른 저장 및 빠른 콘텍스트 스위칭을 위한 콘텍스트 데이터의 리트리벌을 가능하게 할 수 있는 낮은 레이턴시 메모리에 액세스를 갖는다. 매우 특정한 실시예들에서, 프로세싱 모듈들은 인-라인 메모리 모듈들(예를 들어, DIMM들)을 시스템 메모리 버스에 연결하기 위한 물리적 슬롯들을 거주시킬 수 있다.
일부 실시예들에서, 컴퓨팅 태스크들은 시스템 메모리 버스를 통해 수신된 기록 데이터 내에 임베딩된 데이터에 따라 오프로드 프로세서들에 의해 자공으로 실행될 수 있다. 특정한 실시예들에서, 이러한 기록 데이터는, 기록 데이터가 어떻게 프로세싱될지를 식별하는 "메타데이터" 부분을 포함할 수 있다.
도 2a는 일 실시예에 따른 프로세싱 모듈(200)의 블록도이다. 프로세싱 모듈(200)은, 물리적 인-라인 모듈 커넥터(202), 메모리 인터페이스(204), 아비터 로직(206), 오프로드 프로세서(들)(208), 로컬 메모리(210), 및 제어 로직(212)을 포함할 수 있다. 커넥터(202)는 시스템 메모리 버스에 대한 물리적 연결을 제공할 수 있다. 이는, 메모리 제어기 등을 통해 시스템 메모리 버스에 액세스할 수 있는 호스트 프로세서와는 대조적이다. 매우 특정한 실시예들에서, 커넥터(202)는 컴퓨팅 시스템의 듀얼-인-라인 메모리 모듈(DIMM) 슬롯과 호환가능할 수 있다. 이에 따라, 다수의 DIMM 슬롯들을 포함하는 시스템은 하나 또는 그 초과의 프로세싱 모듈들(200), 또는 프로세싱 모듈들과 DIMM 모듈들의 혼합(mix)으로 파퓰레이팅될 수 있다(populated).
메모리 인터페이스(204)는, 시스템 메모리 버스 상에서의 데이터 전송들을 검출할 수 있고, 그리고 적당한 경우들에서, 기록 데이터가 프로세싱 모듈(200) 내에 저장되는 것을 가능하게 하고 그리고/또는 판독 데이터가 프로세싱 모듈(200)로부터 판독되는 것을 가능하게 할 수 있다. 일부 실시예들에서, 메모리 인터페이스(204)는 슬레이브 인터페이스일 수 있고, 이에 따라 데이터 전송들은 프로세싱 모듈과는 별도로 마스터 디바이스에 의해 제어된다. 매우 특정한 실시예들에서, 메모리 인터페이스(204)는, 직접 메모리 액세스(DMA) 마스터에 의해 개시된 시스템 메모리를 통해 DMA 전송들을 수용하기 위한 직접 메모리 액세스(DMA) 슬레이브일 수 있다. 이러한 DMA 마스터는 호스트 프로세서와는 상이한 디바이스일 수 있다. 이러한 구성들에서, 프로세싱 모듈(200)은 프로세싱을 위한 데이터를 수신할 수 있고(예를 들어, DMA 기록), 호스트 프로세서 자원들을 소모하지 않고 프로세싱된 데이터를 전송할 수 있다(예를 들어, DMA 판독).
아비터 로직(206)은 프로세싱 모듈(200) 내에서 데이터의 충돌 액세스들 사이를 중재할 수 있다. 일부 실시예들에서, 아비터 로직(206)은 오프로드 프로세서(208)에 의한 액세스들과 프로세서 모듈(200) 외부로의 액세스들 사이를 중재할 수 있다. 프로세싱 모듈(200)이 동시에 동작되는 다수의 위치들을 포함할 수 있다는 점이 이해된다. 아비터 로직(206)에 의해 중재되는 액세스들이 프로세서 모듈(200)에 의해 점유되는 물리적 시스템 메모리 공간에 대한 액세스들 뿐만 아니라 자원들(예를 들어, 프로세서 자원들)로의 액세스들을 포함할 수 있다는 점이 이해된다. 이에 따라, 아비터 로직(206)에 대한 중재 규칙들은 애플리케이션에 따라 변할 수 있다. 일부 실시예들에서, 주어진 프로세서 모듈(200)에 대한 이러한 중재 규칙들은 고정된다. 이러한 경우들에서, 상이한 프로세싱 모듈들을 스위칭함으로써 상이한 애플리케이션들이 수용될 수 있다. 그러나, 대안적인 실시예들에서, 이러한 중재 규칙들은 변경가능(configurable)할 수 있다.
오프로드 프로세서(208)는 시스템 메모리 버스를 통해 전송되는 데이터에 대해 동작할 수 있는 하나 또는 그 초과의 프로세서들을 포함할 수 있다. 일부 실시예들에서, 오프로드 프로세서들은 프로세서 콘텍스트들이 절약되고 리트리브되는 것을 가능하게 하는 (그러나, 하나의 매우 특정한 예시로서) Apache와 같은, 애플리케이션을 실행할 수 있는 범용 운영 시스템을 실행할 수 있다. 오프로드 프로세서(208)에 의해 실행되는 컴퓨팅 태스크들은 하드웨어 스케줄러에 의해 처리될 수 있다. 오프로드 프로세서들(208)은 프로세서 모듈(200)에서 버퍼링된 데이터에 대해 동작할 수 있다. 이에 더해 또는 대안적으로, 오프로드 프로세서들(208)은 시스템 메모리 공간 내의 어딘가에 저장된 데이터에 액세스할 수 있다. 일부 실시예들에서, 오프로드 프로세서들(208)은 콘텍스트 정보를 저장하도록 구성된 캐시 메모리를 포함할 수 있다. 오프로드 프로세서(208)는 다수의 코어들 또는 하나의 코어를 포함할 수 있다.
프로세서 모듈(200)은 호스트 프로세서(미도시)를 갖는 시스템 내에 포함된다. 일부 실시예들에서, 오프로드 프로세서들(208)은 호스트 프로세서들과 비교하여 상이한 유형의 프로세서일 수 있다. 특정 실시예들에서, 오프로드 프로세서들(208)은 호스트 프로세서보다 적은 전력을 소모할 수 있고 그리고/또는 호스트 프로세서보다 적은 컴퓨팅 전력을 가질 수 있다. 매우 특정한 실시예들에서, 오프로드 프로세서들(208)은 "윔피(wimpy)" 코어 프로세서들일 수 있는 반면, 호스트 프로세서는 "브로니(brawny)" 코어 프로세서일 수 있다. 대안적인 실시예들에서, 오프로드 프로세서(208)는 임의의 호스트 프로세서에 동일한 컴퓨팅 전력을 가질 수 있다. 매우 특정한 실시예들에서, 호스트 프로세서는 x86 유형의 프로세서일 수 있는 반면, 오프로드 프로세서(208)는, 일부 예시들로서, ARM, ARC, Tensilica, MIPS, Strong/ARM, 또는 RISC 유형의 프로세서를 포함할 수 있다.
로컬 메모리(210)는 콘텍스트 정보의 저장을 인에이블하기 위해 오프로드 프로세서(208)에 접속될 수 있다. 이에 따라, 오프로드 프로세서(208)는, 현재 콘텍스트 정보를 저장할 수 있고, 그후 새로운 컴퓨팅 태스크로 스위칭한 후, 후속하여 이전 태스크를 재개하기 위해 콘텍스트 정보를 리트리브할 수 있다. 매우 특정한 실시예들에서, 로컬 메모리(210)는 시스템 내의 다른 메모리들와 관련된 로우 레이턴시 메모리일 수 있다. 일부 실시예들에서, 콘텍스트 정보의 저장은, 오프로드 프로세서(208) 캐시를 카피하는 것을 포함할 수 있다.
일부 실시예들에서, 로컬 메모리(210) 내의 동일한 공간이 동일한 유형의 다수의 오프로드 프로세서들(208)에 의해 액세스가능하다. 이러한 방식으로, 하나의 오프로드 프로세서에 의해 저장된 콘텍스트는 상이한 오프로드 프로세서에 의해 재개될 수 있다.
제어 로직(212)은 오프로드 프로세서(들)에 의해 실행된 프로세싱 태스크들을 제어할 수 있다. 일부 실시예들에서, 제어 로직(212)은, 데이터 평가자(214), 스케줄러(216) 및 스위치 제어기(218)를 포함하는 것으로서 개념화될 수 있는 하드웨어 스케줄러로 고려될 수 있다. 데이터 평가자(214)는, 시스템 메모리 버스를 통해 전송되는 기록 데이터로부터 "메타데이터"를 추출할 수 있다. 본원에 이용되는 것과 같은 "메타데이터"는, 기록 데이터의 블록의 전부 또는 일부에 대해 수행될 프로세싱을 나타내고 그리고/또는 데이터가 속하는 특정 태스크/프로세스(예를 들어, 분류 데이터)를 나타내는 기록 데이터의 블록의 하나 또는 그 초과의 미리결정된 위치들에 임베딩된 임의의 정보일 수 있다. 일부 실시예들에서, 메타데이터는 기록 데이터의 블록에 대한 더 상위 레벨의 조직을 나타내는 데이터일 수 있다. 그러나 하나의 매우 특정한 실시예로서, 메타데이터는 (더 상위 계층 패킷 구조 내에 캡슐화될 수 있거나 또는 캡슐화되지 않을 수 있는) 하나 또는 그 초과의 네트워크 패킷들의 헤더 정보일 수 있다.
스케줄러(216)는 오프로드 프로세서(들)(208)에 대한 컴퓨팅 태스크들을 순서화(order)할 수 있다. 일부 실시예들에서, 스케줄러(216)는 프로세싱에 대한 기록 데이터가 수신되는 것으로서 계속적으로 업데이트되는 스케줄을 생성할 수 있다. 매우 특정한 실시예들에서, 스케줄러(216)는 오프로드 프로세서(들)(208)의 콘텍스트들을 스위치하기 위한 능력에 기초하여 이러한 스케줄을 생성할 수 있다. 이 방식으로, 온-모듈 컴퓨팅 우선순위들이 온 더 플라이(on the fly)로 조정될 수 있다. 매우 특정한 실시예들에서, 스케줄러(216)는 컴퓨팅 태스크들에 따라, 물리 어드레스 공간의 일부분(예를 들어, 로컬 메모리(210) 내의 메모리 위치들)을 오프로드 프로세서(208)에 할당할 수 있다. 그 다음, 오프로드 프로세서(208)는 이러한 상이한 공간들 사이에서 스위치할 수 있고, 각각의 스위치에 앞서 콘텍스트 정보를 저장하며, 후속적으로, 메모리 공간으로 리턴할 때 콘텍스트 정보를 복원한다.
스위치 제어기(218)는 오프로드 프로세서(들)(208)의 컴퓨팅 동작들을 제어할 수 있다. 특정 실시예들에서, 스케줄러(216)에 따라, 스위치 제어기(218)는 콘텍스트들을 스위치하기 위해 오프로드 프로세서(들)(208)를 순서화할 수 있다. 콘텍스트 스위치 동작은 스위치 제어기(218)로부터의 단일 커맨드에 응답하여 실행되는 "원자" 동작일 수 있다는 것이 이해된다. 추가적으로 또는 대안적으로, 스위치 제어기(218)는 현재 콘텍스트 정보를 저장하고, 콘텍스트 정보를 리콜하는 등의 명령 세트를 발행할 수 있다.
일부 실시예들에서, 프로세서 모듈(200)은 버퍼 메모리(미도시)를 포함할 수 있다. 버퍼 메모리는 프로세서 모듈 내에(on board) 수신된 기록 데이터를 저장할 수 있다. 버퍼 메모리는 메모리 디바이스들의 전체적으로 상이한 세트 상에서 구현될 수 있거나, 로직 및/또는 오프로드 프로세서에 임베딩된 메모리일 수 있다. 후자의 경우, 아비터 로직(206)은 버퍼 메모리로의 액세스를 중재(arbitrate)할 수 있다. 일부 실시예들에서, 버퍼 메모리는 시스템 물리 메모리 공간의 일부분에 대응할 수 있다. 시스템 메모리 공간의 나머지 부분은 다른 유사 프로세서 모듈들 및/또는 동일한 시스템 메모리 버스에 연결된 메모리 모듈들에 대응할 수 있다. 일부 실시예들에서, 버퍼 메모리는 로컬 메모리(210)와 상이할 수 있다. 예를 들어, 버퍼 메모리는 로컬 메모리(210)보다 더 느린 액세스 시간을 가질 수 있다. 그러나, 다른 실시예들에서, 버퍼 메모리 및 로컬 메모리는 유사 메모리 디바이스들로 구현될 수 있다.
매우 특정한 실시예들에서, 프로세싱하기 위한 기록 데이터는 예상된 최대 플로우 레이트를 가질 수 있다. 프로세서 모듈(200)은 이러한 플로우 레이트에서 또는 이러한 플로우 레이트보다 더 빠르게 이러한 데이터에 대해 동작하도록 구성될 수 있다. 이 방식으로, 마스터 디바이스(미도시)는 "진행 중인" 데이터를 겹쳐쓸 위험 없이 프로세서 모듈에 데이터를 기록할 수 있다.
프로세서 모듈(200)의 다양한 컴퓨팅 엘리먼트들은 하나 또는 둘 이상의 집적 회로 디바이스들(IC들)로서 구현될 수 있다. 도 2a에 도시된 다양한 컴포넌트들이 동일하거나 상이한 IC들에서 형성될 수 있다는 것이 이해된다. 예를 들어, 제어 로직(212), 메모리 인터페이스(214) 및/또는 아비터 로직(206)은 하나 또는 둘 이상의 로직 IC들로 구현될 수 있는 반면, 오프로드 프로세서(들)(208) 및 로컬 메모리(210)는 개별 IC들이다. 로직 IC들은 고정된 로직(예를 들어, 주문형 IC들), 프로그래머블 로직(예를 들어, 필드 프로그래머블 게이트 어레이들, FPGA들) 또는 이들의 결합들일 수 있다.
유리하게, 상기 하드웨어 및 시스템들은 전통적 컴퓨팅 시스템들에 비해 향상된 컴퓨테이션 성능을 제공할 수 있다. x86 프로세서들에 기초한 것들을 포함하는 종래 시스템들은 종종 이러한 높은 볼륨 애플리케이션들을 핸들링하기 위해 장착되어 있지 않다. 심지어 유휴 상태일 때도, x86 프로세서들은 상당한 양의 전력을 이용하고, 높은 대역폭 패킷 분석 또는 다른 높은 볼륨 프로세싱 태스크들에 대한 거의 연속적 동작은 프로세서 에너지 비용들에 대한 지배적 가격 인자들 중 하나가 되게 한다.
또한, 종래의 시스템들은 콘텍스트 스위칭의 높은 비용을 갖는 문제들을 가질 수 있고, 여기서, 호스트 프로세서는 하나의 스레드로부터 또 다른 스레드로 스위치하는 것을 포함할 수 있는 명령들을 실행하도록 요구된다. 이러한 스위치는 스레드에 대한 콘텍스트를 저장 및 리콜하는 것을 요구할 수 있다. 이러한 콘텍스트 데이터가 호스트 캐시 메모리에 상주하면, 이러한 콘텍스트 스위치는 비교적 빨리 발생할 수 있다. 그러나, 이러한 콘텍스트 데이터가 캐시 메모리(즉, 캐시 미스) 내에 더이상 있지 않다면, 데이터는 시스템 메모리로부터 리콜되어야 하고, 이는 멀티-사이클 레이턴시를 발생시킬 수 있다. 콘텍스트 스위칭 동안의 연속적 캐시 미스들은 시스템 성능에 악영향을 미칠 수 있다.
도 2b는 많은 종래의 서버 시스템들과 연관된 콘텍스트 스위칭 또는 높은 볼륨 프로세싱과 연관된 문제들을 감소시킬 수 있는 하나의 매우 특정한 실시예에 따른 프로세서 모듈(200-1)을 도시한다. 프로세서 모듈(200-1)은 PCB(printed circuit board) 타입 기판(222)에 장착된 IC들(220-0/1)을 포함할 수 있다. PCB 타입 기판(222)은 인-라인 모듈 커넥터(202)를 포함할 수 있으며, 인-라인 모듈 커넥터(202)는 하나의 매우 특정한 실시예에서, DIMM 호환가능한 커넥터일 수 있다. IC(220-0)는 다수의 기능들을 통합하는 SoC(system-on-chip) 타입 디바이스일 수 있다. 나타낸 매우 특정한 실시예에서, IC(220-0)는 임베디드 프로세서(들), 로직 및 메모리를 포함할 수 있다. 이러한 임베디드 프로세서(들)는 본원에 설명된 바와 같은 오프로드 프로세서(들)(208) 또는 그 등가물들일 수 있다. 이러한 로직은 본원에 설명된 바와 같은 제어기 로직(212), 메모리 인터페이스(204) 및/또는 아비터 로직(206) 또는 그 등가물들 중 임의의 것일 수 있다. 이러한 메모리는 본원에 설명된 바와 같은 로컬 메모리(210), 오프로드 프로세서(들)(208)에 대한 캐시 메모리 또는 버퍼 메모리, 또는 그 등가물들 중 임의의 것일 수 있다. 로직 IC(220-1)는 IC(220-0)에 포함되지 않은 로직 기능들을 제공할 수 있다.
도 2c는 또 다른 매우 특정한 실시예에 따른 프로세서 모듈(200-2)을 도시한다. 프로세서 모듈(200-2)은 도 2b의 프로세서 모듈과 같이, PCB 타입 기판(222)에 탑재된 IC들(220-2, -3, -4, -5)을 포함할 수 있다. 그러나, 도 2b와는 달리, 프로세서 모듈 기능들은 단일 목적 타입 IC들에 분배된다. IC(220-2)는, 오프로드 프로세서(208)일 수 있는 프로세서 IC일 수 있다. IC(220-3)는 로컬 메모리(210), 버퍼 메모리 또는 이들의 결합들을 포함할 수 있는 메모리 IC일 수 있다. IC(220-4)는, 제어 로직(212)을 포함할 수 있고, 하나의 매우 특정한 실시예에서는, FPGA일 수 있는 로직 IC일 수 있다. IC(220-5)는 메모리 인터페이스(204) 및 아비터 로직(206)을 포함할 수 있고, 하나의 매우 특정한 실시예에서는, 또한 FPGA일 수 있는 또 다른 로직 IC일 수 있다.
도 2b/2c는 다양한 구현들 중 2개를 표현한다는 것이 이해된다. 프로세서 모듈의 다양한 기능들은 단일 SoC 타입 IC를 포함하는 임의의 적합한 수의 IC들 상에서 분배될 수 있다.
도 2d는 매우 특정한 실시예에 따른 프로세서 모듈(200-1 또는 200-2)의 대향 면을 도시한다. 프로세서 모듈(200-3)은 도 2b의 프로세서 모듈과 같이, PCB 타입 기판(222)에 탑재된 다수의 메모리 IC들(하나가 220-6으로서 도시됨)을 포함할 수 있다. 다양한 프로세싱 및 로직 컴포넌트들은 도시된 프로세서 모듈의 대향 면 상에 탑재될 수 있다는 것이 이해된다. 메모리 IC(220-6)는 시스템의 물리 메모리 공간의 일부분을 표현하도록 구성될 수 있다. 메모리 IC들(220-6)은 다음의 기능들: 종래의 방식으로 액세스되는 시스템 메모리를 제공하는 다른 프로세서 모듈 컴포넌트들과 독립적으로 동작하는 것, 다른 프로세서 모듈 컴포넌트들에 의해 프로세싱될 수 있는 기록 데이터를 저장하는 버퍼 메모리로서 서빙하는 것, 또는 프로세서 콘텍스트 정보를 저장하기 위한 로컬 메모리로서 역할을 하는 것 중 임의의 것 또는 그 모두를 수행할 수 있다.
도 2e는 본원에 설명된 바와 같은 프로세서 모듈들 또는 그 등가물들과 함께 메모리 버스를 파퓰레이팅(populate)할 수 있는 종래의 DIMM 모듈(즉, 그것은 단지 메모리 기능을 서빙함)을 도시한다.
도 2f는 일 실시예에 따른 시스템(230)을 도시한다. 시스템(230)은 다수의 인-라인 모듈 슬룻들(하나가 226로서 도시됨)을 통해 액세스가능한 시스템 메모리 버스(228)를 포함할 수 있다. 실시예들에 따라, 슬롯들(226) 중 임의의 슬롯 또는 그 모두는 본원에 설명된 바와 같은 프로세서 모듈(200) 또는 그 등가물에 의해 점유될 수 있다. 모든 슬롯들(226)이 프로세서 모듈(200)에 의해 점유되지 않는 경우, 이용가능한 슬롯들은 종래의 인-라인 메모리 모듈들(224)에 의해 점유될 수 있다. 매우 특정한 실시예에서, 슬롯들(226)은 DIMM 슬롯들일 수 있다.
일부 실시예들에서, 프로세서 모듈(200)은 하나의 슬롯을 점유할 수 있다. 그러나, 다른 실시예들에서, 프로세서 모듈은 다수의 슬롯들을 점유할 수 있다.
일부 실시예들에서, 시스템 메모리 버스(228)는 하나 또는 둘 이상의 호스트 프로세서들 및/또는 입력/출력 디바이스(미도시)와 추가로 인터페이싱될 수 있다.
다양한 실시예들에 따른 프로세서 모듈들이 설명되었고, 특정 실시예들에 따른 프로세서 모듈의 동작들이 이제 설명될 것이다.
도 2g 내지 도 2l은, 다양한 실시예들에 따른 프로세서 모듈 동작들을 도시한다. 도 2g 내지 도 2l은, 시스템 메모리 버스(228) 및 버퍼 메모리(232)와 함께 도 2a의 프로세서 모듈과 같은 프로세서 모듈을 도시한다. 일부 실시예들에서, 버퍼 메모리(232)는 프로세서 모듈(200)의 일부일 수 있음이 이해된다. 이러한 경우, 시스템 메모리 버스(228) 및 오프로드 프로세서들을 통한 액세스들 사이의 중재는 아비터 로직(206)에 의해 제어될 수 있다.
도 2g를 참조하면, 기록 데이터(234-0)가 시스템 메모리 버스(228)(원 "1") 상에서 수신될 수 있다. 일부 실시예들에서, 이러한 동작은 시스템 메모리의 특정 물리적 어드레스 공간 범위에 데이터를 기록하는 것을 포함할 수 있다. 매우 특정한 실시예에서, 이러한 동작은, 임의의 호스트 프로세서와는 독립적인 DMA 기록일 수 있다. 기록 데이터(234-0)는 프로세싱될 데이터(Data) 뿐만 아니라 메타데이터(MD)를 포함할 수 있다. 도시된 실시예에서, 기록 데이터(234-0)는 특정 프로세싱 동작(Session0)에 대응할 수 있다.
제어 로직(212)은 기록 데이터(234-0)의 메타데이터(MD)에 액세스하여, 수행될 프로세싱의 타입(원 "2") 및/또는 이러한 데이터의 분류를 결정할 수 있다. 일부 실시예들에서, 이러한 동작은 물리적 어드레스로부터의 직접적인 판독을 포함할 수 있다(즉, Md 위치는 미리 결정된 위치이다). 추가적으로 또는 대안적으로, 이러한 동작은 간접적인 판독일 수 있다(즉, MD는 포인트 등을 통해 액세스된다). 원 "2"로 도시된 동작은 제어 로직(212)에 의한 판독 또는 오프로드 프로세서(208)에 의한 판독 중 임의의 것에 의해 수행될 수 있다.
추출된 메타데이터로부터, 스케줄러(216)는 프로세싱 스케줄을 생성하거나 기존의 스케줄을 수정하여, 새로운 컴퓨팅 태스크(원 "3")를 수용할 수 있다.
도 2h를 참조하면, 스케줄러(216)에 응답하여, 스위치 제어기(218)는, 기록 데이터의 MD에 따라 데이터를 프로세싱하는 것을 시작하도록 하나 이상의 오프로드 프로세서들(208)에 지시할 수 있다(원들 "4", "5"). 데이터의 이러한 프로세싱은 하기의 것 및 이들의 균등물들, 즉, 오프로드 프로세서(208)가 프로세서 모듈(200)의 버퍼 메모리에 저장된 기록 데이터를, 아비터 로직(206)에 의해 중재되는 액세스들로 프로세싱할 수 있는 것, 오프로드 프로세서(208)가 이전에 수신된 데이터에 대해 동작할 수 있는 것, 오프로드 프로세서(208)가 프로세서 모듈(200)과는 다른 위치에 저장된 데이터를 수신하고 이에 대해 동작할 수 있는 것 중 임의의 것을 포함할 수 있다.
도 2i를 참조하면, 추가적인 기록 데이터(234-1)가 시스템 메모리 버스(228) 상에서 수신될 수 있다(원 "6"). 기록 데이터(234-1)는, 기록 데이터(234-0)에 대한 것과는 다른 프로세싱 동작(Session1)을 표시하는 메타데이터를 포함할 수 있다. 제어 로직(212)은, 새로운 기록 데이터(234-1)의 메타데이터(MD)에 액세스하여, 수행될 프로세싱의 타입을 결정할 수 있다(원 "7"). 추출된 메타데이터로부터, 스케줄러(216)는 현재의 스케줄을 수정하여, 새로운 컴퓨팅 태스크를 수용할 수 있다(원 "8"). 도시된 특정한 예에서, 수정된 스케줄은 오프로드 프로세서(208)를 리태스크(re-task)한다. 따라서, 스위치 제어기(218)는, 오프로드 프로세서(208)의 현재의 콘텍스트(ContextA)를 로컬 메모리(210)에 저장하도록 오프로드 프로세서(208)에 지시할 수 있다(원 "9").
도 2j를 참조하면, 스위치 제어기(218)에 응답하여, 오프로드 프로세서들(208)은 새로운 프로세싱 태스크를 시작할 수 있다 (원 "10"). 결과적으로, 오프로드 프로세서(들)(208)는 새로운 프로세싱 태스크에 대응하는 새로운 콘텍스트(ContextB)를 유지할 수 있다.
도 2k를 참조하면, 오프로드 프로세서(208)에 의한 프로세싱 태스크가 완료될 수 있다. 도시된 매우 특정한 실시예에서, 이러한 프로세싱은 기록 데이터(234-1)를 수정할 수 있고, 이러한 데이터는 시스템 메모리 버스(228)(원 "11")를 통해 판독될 수 있다. 프로세싱 태스크의 완료에 응답하여, 스케줄러(216)는 스케줄을 업데이트할 수 있다. 도시된 예에서, 업데이트된 스케줄에 응답하여, 스위치 제어기(218)는, 이전에 저장된 콘텍스트(ContextA)를 로컬 메모리(210)로부터 복원하도록 오프로드 프로세서(들)(208)에 지시할 수 있다(원 "12"). 상기 내용으로부터 이해되는 바와 같이, 복원된 콘텍스트(예를 들어, ContextA)는, 처음 장소에 콘텍스트를 저장한 오프로드 프로세서와는 다른 오프로드 프로세서에 의해 저장될 수 있다.
도 2l을 참조하면, 복원된 이전의 콘텍스트를 이용하여, 오프로드 프로세서(들)(208)는 이전 태스크(Session0)에 따른 프로세싱 데이터를 리턴할 수 있다(원 "13").
도 2m은 실시예에 따른 방법(240)을 도시한다. 방법(240)은, 모듈 인터페이스를 이용하여 세션 데이터의 시스템 메모리로의 기록을 검출(242)하는 것을 포함할 수 있다. 이러한 동작은, 수신된 기록 데이터가 메타데이터(즉, 특정 프로세스를 식별하는 데이터)를 갖는지를 결정하는 것을 포함할 수 있다. "세션 데이터"는 특정 프로세싱 태스크에 대응하는 데이터인 것으로 이해된다. 추가로, 세션 데이터를 수반하는(또는 그에 임베딩된) MD는 서로에 대해 우선순위들을 갖는 세션들을 식별할 수 있는 것으로 이해된다. 특정 실시예들에서, 모듈 인터페이스는 인-라인 모듈에 대한 슬레이브 인터페이스일 수 있다.
방법(240)은, 현재의 오프로드 프로세싱이 새로운 세션 또는 세션의 변경에 대해 충분한지를 결정(244)할 수 있다. 이러한 동작은 임의의 현재의 세션들에 대해 요구되는 프로세싱 시간을 고려한다.
현재의 프로세싱 자원들이 새로운 세션 요건들을 수용할 수 있으면(244로부터 Y), 하드웨어 스케줄(오프로드 프로세서(들)을 제어하기 위한 스케줄)이 개정될 수 있고, 새로운 세션이 오프로드 프로세서에 할당될 수 있다. 현재의 프로세싱 자원들이 새로운 세션 요건들을 수용할 수 없으면(244로부터 N), 리-태스킹(예를 들어, 콘텍스트 스위치)을 위해 하나 이상의 오프로드 프로세서들이 선택(250)될 수 있고, 하드웨어 스케줄은 그에 따라 수정될 수 있다(252). 선택된 오프로드 프로세서들은 자신들의 현재의 콘텍스트 데이터를 저장할 수 있고(254), 그 다음 새로운 세션으로 스위칭할 수 있다(256). 일부 실시예들에서, 하드웨어 스케줄의 개정(252)은 콘텍스트 스위치를 저장하는 것을 포함할 수 있다(예를 들어, 이러한 경우, 새로운 세션은 현재의 세션들보다 낮은 우선순위를 갖는다). 이러한 경우, 동작들(254 및 256)은 후속 시점까지 발생하지 않을 것이다.
도 2n은, 다른 실시예에 따른 방법(260)을 도시한다. 방법(260)은, 오프로드 프로세서에 대한 컴퓨팅 세션이 완료되는지(262) 또는 종료되었는지(264)를 결정하는 것을 포함할 수 있다. 이러한 경우들에서(262/264로부터 Y), 자유롭게 된 모듈 오프로드 프로세서(즉, 완료/종료된 세션을 갖는 오프로드 프로세서)가 저장된 콘텍스트를 갖는지(266)가 결정될 수 있다. 즉, 자유롭게 된 프로세서가 세션에 대해 이미 동작하고 있었는지가 결정될 수 있다.
자유로운 오프로드 프로세서가 다른 세션에 따라 동작하고 있었다면(266으로부터 Y), 오프로드 프로세서는 이전 콘텍스트를 복원할 수 있다(268). 자유로운 오프로드 프로세서가 어떠한 저장된 콘텍스트도 갖지 않으면, 이러한 오프로드 프로세서는 (가능하다면) 기존의 세션에 할당될 수 있다(270). 기존의 하드웨어 스케줄은 그에 따라 업데이트될 수 있다(272).
본 명세서의 실시예들에 따른 프로세서 모듈들은, 다양한 프로세싱 태스크들을 달성하기 위해 이용될 수 있다. 일부 실시예들에 따르면, 프로세서 모듈들은, 네트워크 패킷 데이터에 대해 동작하도록 시스템 메모리 버스에 부착될 수 있다. 이러한 실시예들이 이제 설명될 것이다.
도 1a는, 특정 실시예들에서, 기존의 메모리 모듈과 호환가능한 커넥터를 포함할 수 있는, 모듈 상에 위치된 하나 이상의 계산 유닛들(하나가 100으로 도시됨)에 패킷 데이터를 전송할 수 있는 시스템(101)을 도시한다. 일부 실시예들에서, 계산 유닛(100)은 본 명세서의 실시예들에서 설명된 바와 같은 프로세서 모듈들 또는 등가물을 포함할 수 있다. 계산 유닛(100)은, 메모리 버스(116)를 통해 전송된 패킷들을 인터셉트하거나 다른 방식으로 액세스할 수 있고, 이에 제한되는 것은 아니지만 종결 또는 메타데이터 프로세싱을 포함한, 이러한 패킷들에 대한 프로세싱을 수행할 수 있다. 시스템 메모리 버스(116)는 본 명세서에서 설명된 것들 같은 시스템 메모리 버스 또는 등가물(예를 들어, 228)일 수 있다.
일부 실시예들에 따르면, 특정 플로우에 대응하는 패킷들은 연산 유닛(100)에 의해 액세스가능한 저장 위치로 전송되거나 그에 포함될 수 있다. 이러한 전송은, 메모리 버스(116)에 연결된 호스트 프로세서 모듈(106c)의 자원들을 소모함이 없이 발생할 수 있다. 특정 실시예들에서, 이러한 전송은, 호스트 프로세서 모듈(106c)을 방해함이 없이 발생할 수 있다. 이러한 배열에서, 호스트 프로세서 모듈(106c)은 착신 플로우들을 핸들링할 필요가 없다. 착신 플로우들은, 특정 실시예들에서 범용 프로세서(108i)를 포함할 수 있는 계산 유닛(100)으로 지향될 수 있다. 이러한 범용 프로세서들(108i)은 착신 플로우들을 종료시키기 위한 코드를 실행할 수 있다.
하나의 매우 특정한 실시예에서, 범용 프로세서(108i)는, 단지 하나의 예로서, 아파치 비디오 세션들과 같이, 특정한 네트워크 플로우 세션 타입들을 종료시키기 위한 코드를 실행할 수 있다.
추가적으로 또는 대안적으로, 범용 프로세서(108i)는 패킷의 메타데이터를 프로세싱할 수 있다. 이러한 실시예들에서, 이러한 메타데이터는, 패킷에 대한 헤더 또는 패킷 내에 추가로 캡슐화된 헤더의 하나 이상의 필드들을 포함할 수 있다.
도 1a를 계속 참조하여, 실시예들에 따르면, 시스템(101)은 하기 기능들, 즉, 1) 호스트 프로세서 모듈(106c)을 방해함이 없이, 계산 유닛(100)에 의해 점유되거나 액세스가능한 목적지에 플로우의 패킷들을 전송하는 것; 2) 세션 플로우들을 종료시킬 수 있는 오프로드 프로세서(108i)에 패킷들을 전송하는 것(즉, 오프로드 프로세서는 세션 플로우들을 종료시키는 것을 담당함); 3) 패킷과 연관된 메타데이터를 프로세싱하고 스위칭 판단을 행할 수 있는 미드플레이에 패킷들을 전송하는 것; 4) 신규한 고속 패킷 종료 시스템을 제공하는 것 중 임의의 것을 수행할 수 있다.
종래의 패킷 프로세싱 시스템들은 패킷 종료를 위해 호스트 프로세서들을 활용할 수 있다. 그러나, 다수의 세션들을 핸들링할 때 수반되는 콘텍스트 스위칭으로 인해, 종래의 접근법들은 이러한 콘텍스트 스위칭에 대해 상당한 프로세싱 오버헤드를 요구하고, 메모리 액세스 및 네트워크 스택 지연을 초래할 수 있다.
종래의 접근법들과는 반대로, 본 명세서에 개시되는 실시예들은, 호스트 프로세서의 콘텍스트 스위치 오버헤드를 감소시킴으로써 고속 패킷 종료를 가능하게 할 수 있다. 실시예들은, 하기의 기능들, 즉, 1) 호스트 프로세서의 인식 또는 상당한 호스트 프로세서 수반 없이, 시스템 메모리 버스를 통해 하나 이상의 프로세서들에 계산 태스크들을 오프로딩하는 것; 2) 오프로드 프로세서들을 스위치들로 이용함으로써 랙(rack) 내의 또는 랙들 사이의 서버들을 상호접속시키는 것; 또는 3) 착신 패킷들을 상이한 오프로드 프로세서들로 재지향시키기 위해 I/O 가상화를 이용하는 것 중 임의의 것을 제공할 수 있다.
도 1a를 계속 참조하면, 시스템(101)은 외부 소스로부터 패킷 또는 다른 I/O 데이터를 수신할 수 있는 I/O 디바이스(102)를 포함할 수 있다. 일부 실시예들에서, I/O 디바이스(102)는, 네트워크 또는 다른 컴퓨터 또는 가상 머신으로부터 패킷 또는 다른 I/O 데이터를 수신하기 위해 물리적 디바이스에 의해 발생된 물리적 또는 가상 기능들을 포함할 수 있다. 도시된 매우 특정한 실시예에서, I/O 디바이스(102)는 입력 버퍼(102a)(예를 들어, DMA 링 버퍼) 및 I/O 가상화 기능(102b)을 갖는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다.
실시예들에 따르면, I/O 디바이스(102)는 패킷을 위해 필요한 메모리 동작의 상세들(즉, 판독/기록, 소스/목적지)을 포함하는 디스크립터를 기록할 수 있다. 이러한 디스크립터는 (예를 들어, 시스템(101)의 동작 시스템에 의해) 가상 메모리 위치에 할당될 수 있다. 그 다음으로, I/O 디바이스(102)는 입력 출력 메모리 관리 유닛(IOMMU)(104)과 통신하고, 입력 출력 메모리 관리 유닛(IOMMU)(104)은 IOMMU 기능(104b)을 이용하여 가상 어드레스들을 대응하는 물리적 어드레스들로 트랜슬레이팅할 수 있다. 도시된 특정 실시예에서, TLB(translation look-aside buffer)(104a)가 이러한 트랜슬레이션을 위해 이용될 수 있다. 그 다음으로, I/O 디바이스와 시스템 메모리 위치들 사이에서 데이터를 판독 또는 기록하는 가상 기능은, 시스템(101)의 메모리 제어기(106b)를 통해 다이렉트 메모리 전달(예를 들어, DMA)을 이용하여 실행될 수 있다. I/O 디바이스(102)는 호스트 버스(112)에 의해 IOMMU(104)에 연결될 수 있다. 하나의 매우 특정한 실시예에서, 호스트 버스(112)는 PCI(peripheral interconnect) 타입 버스일 수 있다. IOMMU(104)는 중앙 프로세싱 유닛 I/O(CPUIO)(106a)에서 호스트 프로세싱 섹션(106)에 연결될 수 있다. 도시된 실시예에서, 이러한 연결(114)은 HT(HyperTransport) 프로토콜을 지원할 수 있다.
도시된 실시예에서, 호스트 프로세싱 섹션(106)은 CPUIO(106a), 메모리 제어기(106b), 프로세싱 코어(106c) 및 대응하는 프로비저닝 에이전트(106d)를 포함할 수 있다.
특정 실시예들에서, 계산 유닛(100)은 표준 인-라인 모듈 연결을 통해 시스템 버스(116)와 인터페이싱할 수 있고, 이는 매우 특정한 실시예들에서, DIMM 타입 슬롯을 포함할 수 있다. 도시된 실시예에서, 메모리 버스(116)는 DDR3 타입 메모리 버스일 수 있다. 대안적인 실시예들은 임의의 적절한 시스템 메모리 버스를 포함할 수 있다. 패킷 데이터는 메모리 제어기(106b)에 의해 메모리 버스(116)를 통해 DMA 슬레이브 인터페이스(110a)에 전송될 수 있다. DMA 슬레이브 인터페이스(110a)는 메모리 버스(116)를 통해 DMA 기록으로부터 캡슐화된 판독/기록 명령들을 수신하도록 적응될 수 있다. 일부 실시예들에서, 인터페이스(예를 들어, 110a)는 프로세서의 일부를 형성할 수 있음을 주목한다(즉, 110a 및 108i가 동일한 프로세서의 부분들일 수 있다).
하드웨어 스케줄러((108b/c/d/e/h)는, 세션 메타데이터를 이용하여 플로우에 따라 착신 패킷들을 카테고리화함으로써, 착신 패킷들에 대한 트래픽 관리를 수행할 수 있다. 패킷들은 세션 우선순위에 기초하여 온보드 메모리(110b/108a/108m)에서 출력을 위해 큐잉될 수 있다. 특정 세션에 대한 패킷이 오프로드 프로세서(108i)에 의해 프로세싱될 준비가 되었다고 하드웨어 스케줄러가 결정할 때, 온보드 메모리는 그 세션으로의 콘텍스트 스위치를 위해 시그널링된다. 이러한 우선순위화 방법을 활용시, 종래의 접근방식들과 비교하여, 콘텍스트 스위칭 오버헤드가 감소될 수 있다. 즉, 하드웨어 스케줄러가 콘텍스트 스위칭 결정들을 핸들링하고 따라서 다운스트림 자원(예를 들어, 오프로드 프로세서(108i))의 성능을 최적화할 수 있다.
앞서 유의된 바와 같이, 매우 특정한 실시예들에서, 오프로드 프로세서(108i)는 "윔피 코어(wimpy core)" 타입 프로세서일 수 있다. 일부 실시예들에 따르면, 호스트 프로세서(106c)는 "브라우니 코어(brawny core)" 타입 프로세서(예를 들어, "헤비 터치(heavy touch)" 계산 동작들을 핸들링할 수 있는 x86 또는 임의의 다른 프로세서)일 수 있다. 실시예들에 따르면, I/O 디바이스(102)가 착신 패킷들에 응답하여 호스트 프로세서 인터럽트들을 트리거하도록 구성될 수 있지만, 이러한 인터럽트들은 디스에이블될 수 있고, 이에 의해 호스트 프로세서(106c)에 대한 프로세싱 오버헤드를 감소시킨다. 일부 매우 특정한 실시예들에서, 오프로드 프로세서(108i)는 ARM, ARC, 텐실리카, MIPS, 스트롱/ARM 또는 "라이트 터치(light touch)" 동작들을 핸들링할 수 있는 임의의 다른 프로세서를 포함할 수 있다. 바람직하게, 오프로드 프로세서는, 콘텍스트 스위칭 오버헤드를 감소시키기 위해 하드웨어 스케줄러와 함께 동작하도록 최적화될 수 있는 복수의 세션들을 실행하기 위한 범용성 오퍼레이팅 시스템을 실행시킬 수 있다.
도 1a를 계속 참조하면, 동작에서, 시스템(101)은 네트워크 인터페이스를 통해 외부 네트워크로부터 패킷들을 수신할 수 있다. 패킷들은, I/O 디바이스(102)에 의해 이용되는 분류 로직 및 개략도들(schematics)에 기초하여 호스트 프로세서(106c) 또는 오프로드 프로세서(108i)를 목적지로 한다. 특정 실시예들에서, I/O 디바이스(102)는 가상화된 NIC로서 동작할 수 있고, 특정 논리적 네트워크에 대한 또는 특정 가상 MAC(VMAC) 어드레스에 대한 패킷들은 개별 큐들로 지향되고 목적지 논리적 엔티티로 전송될 수 있다. 이러한 어레인지먼트는 패킷들을 상이한 엔티티들에 전달할 수 있다. 일부 실시예들에서, 각각의 이러한 엔티티는, 자신이 연결된 가상 네트워크 인터페이스들과 통신하기 위해 이용되는 가상 디바이스 모델, 가상 드라이버를 가질 수 있다.
실시예들에 따르면, 트래픽을 특정 메모리 어드레스들로 재지향시키기 위해 다수의 디바이스들이 이용될 수 있다. 그러므로, 네트워크 디바이스들 각각은, 패킷들을 논리적 엔티티의 메모리 위치에 전달하는 것처럼 동작한다. 그러나, 실제로는, 이러한 패킷들은, 이들이 하나 또는 둘 이상의 오프로드 프로세서들(예를 들어, 108i)에 의해 핸들링될 수 있는 메모리 어드레스들로 전달된다. 특정 실시예들에서, 이러한 전달들은 물리적 메모리 어드레스들에 대한 것이고, 따라서, 논리적 엔티티들은 프로세싱으로부터 제거될 수 있고, 호스트 프로세서는 이러한 패킷 핸들링으로부터 자유로울 수 있다.
따라서, 실시예들은 특정 네트워크 데이터가 공급될 수 있는 메모리 "블랙 박스(black box)"를 제공하는 것으로서 개념화될 수 있다. 이러한 메모리 블랙 박스는 데이터를 핸들링(예를 들어, 데이터를 프로세싱)하고 이러한 데이터가 요청될 때 다시(back) 응답할 수 있다.
도 1a를 계속 참조하면, 일부 실시예들에 따라, I/O 디바이스(102)는 네트워크로부터 또는 컴퓨팅 디바이스로부터 데이터 패킷들을 수신할 수 있다. 데이터 패킷들은, 예를 들어, 전송 프로토콜 넘버, 소스 및 목적지 포트 넘버들, 소스 및 목적지 IP 어드레스들을 포함한 특정한 특징들을 가질 수 있다. 데이터 패킷들은, 데이터 패킷들의 분류 및 관리를 돕는, 프로세싱되는 메타데이터(108d)를 더 가질 수 있다.
I/O 디바이스(102)는 이에 제한되는 것은 아니지만, PCI(peripheral component interconnect) 또는 PCIe(PCI express) 버스 9(예를 들어, 112)를 통해 호스트 마더보드와 연결되는 PCI 및/또는 PCIe 디바이스들을 포함할 수 있다. I/O 디바이스들의 예들은 네트워크 인터페이스 제어기(NIC), 호스트 버스 어댑터, 융합된 네트워크 어댑터, ATM 네트워크 인터페이스 등을 포함한다.
다수의 논리적 엔티티들이 동일한 I/O 디바이스(102)에 액세스하도록 허용하는 추상적 개념의 방식을 제공하기 위해, I/O 디바이스는 다수의 가상 디바이스들을 제공하도록 가상화될 수 있고, 다수의 가상 디바이스들 각각은 물리적 I/O 디바이스의 기능들 중 일부를 수행할 수 있다. 실시예에 따른 IO 가상화 프로그램(예를 들어, 102b)은 트래픽을 상이한 메모리 위치들로 (그리고 따라서, 메모리 버스 상의 모듈들에 부착된 상이한 오프로드 프로세서들로) 재지향시킬 수 있다. 이를 달성하기 위해, I/O 디바이스(102)(예를 들어, 네트워크 카드)는: 다수의 가상 기능(VF) 인터페이스들 및 입력/출력 가상화(IOV) 아키텍처들(예를 들어, 싱글-루트 IOV)을 지원하는 제어 기능(CF)을 포함하는 여러 기능 부분들로 파티셔닝될 수 있다. 각각의 가상 기능 인터페이스에는 전용의 사용을 위한 실행시간 동안 자원들이 제공될 수 있다. CF 및 VF의 예들은 단일 루트 I/O 가상화 또는 멀티-루트 I/O 가상화 아키텍처와 같은 방식들 하에서 물리적 기능 및 가상 기능들을 포함할 수 있다. CF는 가상 자원들을 셋업 및 관리하는 물리적 자원들로서 동작한다. CF는 또한, 제대로 된(full-fledged) IO 디바이스로서 동작할 수 있다. VF는, 다수의 논리적 엔티티들/다수의 메모리 구역들과의 통신을 위해 가상 디바이스의 추상적 개념을 제공하는 것을 담당한다.
호스트 프로세서(106c) 상에서 구동하는 동작 시스템/하이퍼바이저/가상 머신들 중 임의의 가상 머신들/사용자 코드는, 디바이스 모델, VF 드라이버, 및 CF를 위한 드라이버를 이용하여 로딩될 수도 있다. 디바이스 모델은, 생성된 다수의 VF들 각각을 호스트 프로세서(106c)가 인지하기 위한 물리적 디바이스의 에뮬레이션을 생성하기 위해 사용될 수도 있다. 디바이스 모델은, VF 드라이버(가상 IO 디바이스와 상호작용하는 드라이버)에 특정한 타입의 물리적 디바이스와 상호작용한다는 인상을 주기 위해 수차례 복제될 수도 있다.
예를 들어, 특정한 디바이스 모듈이 Intel® Ethernet Converged Network Adapter(CNA) X540-T2와 같은 네트워크 어댑터를 에뮬레이팅하는데 사용됨으로써 I/O 디바이스(102)가 자신이 그러한 어댑터와 상호작용한다고 믿을 수도 있다. 그러한 경우에서, 가상 기능들 각각은, 상기 CNA의 기능들을 지원할 능력을 가질 수도 있는데, 즉, 물리적 기능들 각각이 그러한 기능을 지원할 수 있어야 한다. 디바이스 모델 및 VF 드라이버는 특권 또는 비-특권 모드 중 어느 하나에서 구동될 수 있다. 일부 실시예들에서, 디바이스 모델 및 VF 드라이버에 대응하는 코드를 누가 호스팅/구동하는지에 관한 어떠한 제한도 존재하지 않는다. 그러나, 코드는, VF 드라이버 및 디바이스 모델의 다수의 카피들을 생성할 능력을 가짐으로써 상기 I/O 인터페이스의 다수의 카피들이 생성될 수 있게 한다.
애플리케이션 또는 프로비저닝 에이전트(106d)는, 커널에서 구동하는 애플리케이션/사용자 레벨 코드의 일부로서, 실행시간 동안 각각의 VF에 대해 가상의 I/O 어드레스 공간을 생성하고, 그 공간에 물리적 어드레스 공간의 일부를 할당할 수도 있다. 예를 들어, VF 드라이버를 핸들링하는 애플리케이션이 VF 드라이버가 메모리 어드레스들 0xaaaa 내지 0xffff로부터 또는 그 메모리 어드레스들에 패킷들을 판독 또는 기입하도록 명령하면, 디바이스 드라이버는, 큐 엔트리들이 채워짐에 따라 동적으로 변하는 헤드 및 테일 포인터들을 갖는 디스크립터 큐 내에 I/O 디스크립터들을 기입할 수도 있다. 데이터 구조는, 링 구조(102a) 또는 해쉬 테이블을 포함하지만 이에 제한되지 않는 다른 타입들을 또한 가질 수도 있다.
VF는, 드라이버에 의해 포인팅된 어드레스 위치로부터 데이터를 판독하거나 그 어드레스에 데이터를 기입할 수 있다. 또한, 드라이버에 할당된 어드레스 공간으로의 데이터 전달의 완료 시, 상기 네트워크 패킷들을 핸들링하기 위해 호스트 프로세서에 일반적으로 트리거링되는 인터럽트들이 디스에이블링될 수 있다. 특정한 I/O 공간을 디바이스에 할당하는 것은, 상기 IO 공간을 점유된 특정한 물리적 메모리 공간에 할당하는 것을 포함할 수 있다.
다른 실시예에서, 디스크립터가 인커밍 패킷들을 핸들링하기 위한 특정 데이터 구조와 연관되는 경우, 디스크립터는 기입 동작만을 포함할 수도 있다. 또한, 인커밍 데이터 구조의 엔트리들 각각에 대한 디스크립터는, 모든 데이터 기입을 특정한 메모리 위치로 재지향시키기 위해 일정할 수도 있다. 대안적인 실시예에서, 연속적인 엔트리들에 대한 디스크립터는, 인커밍 패킷들을 연속적인 메모리 위치들로 지향시키기 위해 메모리 내의 연속적인 엔트리들을 포인팅할 수도 있다.
대안적으로, 상기 운영 시스템은, VF 드라이버들을 지원하는 애플리케이션에 대한 정의된 물리적 어드레스 공간을 생성하고, 애플리케이션 또는 프로비저닝 에이전트(106d)에 가상 메모리 어드레스 공간을 할당할 수도 있으며, 그에 의해, 상기 가상 어드레스와 물리적 어드레스 공간 사이에 각각의 가상 기능에 대한 맵핑을 생성한다. 가상 메모리 어드레스 공간과 물리적 메모리 공간 사이의 상기 맵핑은, IOMMU 테이블들(예를 들어, TLB(104a))에 저장될 수도 있다. 메모리 판독들 또는 기입들을 수행하는 애플리케이션은, 상기 가상 기능에 가상 어드레스들을 공급할 수도 있으며, 호스트 프로세서 OS는 물리적 메모리 위치의 특정 부분을 그러한 애플리케이션에 할당할 수도 있다.
대안적으로, VF는, 예를 들어, 직접 메모리 액세스(DMA) 판독 또는 기입 동작의 일부일 수도 있는 판독 및 기입과 같은 요청들을 생성하도록 구성될 수도 있다. 가상의 어드레스들은, IOMMU(104)에 의해 그들의 대응하는 물리적 어드레스들로 변환되며, 물리적 어드레스들은 액세스를 위해 메모리 제어기에 제공될 수도 있다. 즉, IOMMU(104)는, I/O 디바이스들에 의해 소싱된 메모리 요청들을 변형하여, 요청된 가상 어드레스를 물리적 어드레스로 변경할 수도 있으며, 메모리 요청은 메모리 액세스를 위해 메모리 제어기로 포워딩될 수도 있다. 메모리 요청은, HyperTransport(114)와 같은 프로토콜을 지원하는 버스(114)를 통해 포워딩될 수도 있다. 그러한 경우들에서, VF는, 가상 메모리 어드레스를 IOMMU(104)에 공급함으로써 직접 메모리 액세스를 수행할 수도 있다.
대안적으로, 상기 애플리케이션은, VF가 허용하는 경우, 물리적 어드레스를 VF 디스크립터들로 직접 코딩할 수도 있다. VF가 호스트 프로세서(106c)에 의해 사용되는 형태의 물리적 어드레스들을 지원할 수 없으면, VF 디바이스에 의해 지원되는 하드웨어 사이즈를 갖는 어퍼처가 디스크립터로 코딩되어 VF가 디바이스의 타겟 하드웨어 어드레스를 통지받을 수도 있다. 어퍼처에 전달되는 데이터는, 변환 테이블에 의해 시스템 메모리 내의 정의된 물리적 어드레스 공간으로 맵핑될 수도 있다. DMA 동작들은, DMA 동작들을 수행하기 위해 I/O 디바이스들을 직접 또는 간접적으로 프로그래밍하는 프로세서들에 의해 실행되는 소프트웨어에 의해 개시될 수도 있다.
계속 도 1a를 참조하면, 특정한 실시예들에서, 계산 유닛(100)의 부분들은 하나 이상의 FPGA들로 구현될 수도 있다. 도 1a의 시스템에서, 계산 유닛(100)은, 그 내에 DMA 슬레이브 디바이스 모듈(110a) 및 아비터(110f)가 형성될 수 있는 FPGA(110)를 포함할 수 있다. DMA 슬레이브 모듈(110a)은, DMA 판독/기입 요청들에 응답할 수 있는 메모리 버스(116)에 부착하기에 적절한 임의의 디바이스일 수 있다. 대안적인 실시예들에서, DMA 슬레이브 모듈(110a)은, 메모리 버스(116)를 통한 블록 데이터 전달들이 가능한 다른 인터페이스일 수 있다. DMA 슬레이브 모듈(110a)은, ('메모리'로부터 또는 주변기기로부터 판독을 수행하는 경우) DMA 제어기로부터 데이터를 수신하거나, 또는 (DMA 슬레이브 모듈(110a)을 통해 기입 명령을 수행하는 경우) DMA 제어기에 데이터를 전달하는 것이 가능할 수 있다. DMA 슬레이브 모듈(110a)은, (예를 들어, 패킷 또는 데이터 버스트와 같은 DDR 데이터 송신의 형태로) 메모리 버스를 통해 캡슐화된 DMA 판독 및 기입 명령들을, 또는 대응하는 메모리 버스를 통해 전송될 수 있는 임의의 다른 포맷을 수신하도록 적응될 수도 있다.
DMA 슬레이브 모듈(110a)은, 메모리 R/W 패킷으로부터의 DMA 판독/기입 명령을 재구성할 수 있다. DMA 슬레이브 모듈(110a)은, 데이터 판독들/데이터 기입들의 형태의 이들 명령에 대해 DMA 마스터에 응답하도록 적응될 수도 있으며, DMA마스터는, PCIe 버스의 경우 주변기기 디바이스 내에 하우징될 수 있거나, 또는 ISA버스의 경우 시스템 DMA 제어기일 수 있다.
DMA 디바이스(110a)에 의해 수신되는 I/O 데이터는, 그 후, 중재를 위해 큐잉될 수 있다. 중재는, 상이한 플로우들의 패킷들을 스케줄링하는 프로세스를 포함함으로써, 파라미터들의 넘버에 기초하여 이용가능한 대역폭에 대한 액세스를 제공받을 수 있다. 일반적으로, 아비터(110f)는 하나 이상의 요청자들에 대해 자원 액세스를 제공한다. 다수의 요청자들이 액세스를 요청하면, 아비터(110f)는 어느 요청자가 액세서가 되는지를 결정하고, 그 후, 액세서로부터의 데이터를 자원 인터페이스에 전달할 수 있으며, 다운스트림 자원이 데이터 상에서 실행을 시작할 수 있다. 데이터가 자원에 완전히 전달되고, 자원이 실행을 완료한 이후, 아비터(110f)는 상이한 요청자에게 제어를 전달할 수 있으며, 이러한 사이클이 모든 이용가능한 요청자들에 대해 반복된다. 도 1a의 실시예에서, 아비터(110f)는 계산 유닛(100)의 다른 부분들(예를 들어, 108)에 데이터의 인커밍을 통지할 수 있다.
대안적으로, 계산 유닛(100)은, 2010년 10월 12일자로 Dalal에 발행된 미국 특허 7,813,283에 나타낸 중재 방식을 이용할 수 있으며, 상기 특허의 내용들은 본 명세서에 인용에 의해 포함된다. 당업계에 알려져 있는 다른 적절한 중재 방식들이 본 명세서의 실시예들에서 구현될 수 있다. 대안적으로, 본 발명의 중재 방식은 OpenFlow 스위치 및 OpenFlow 제어기를 사용하여 구현될 수도 있다.
도 1a의 매우 특정한 실시예에서, 계산 유닛(100)은, 통지/프리페치 회로들(110c)을 더 포함할 수 있으며, 통지/프리페치 회로들(110c)은, DMA 슬레이브 모듈(110a)에 응답하여 버퍼 메모리(110b) 내에 저장되고 그리고 아비터(110f)에 의해 중재된 바와 같은 데이터를 프리페칭할 수 있다. 추가적으로, 아비터(110f)는, 메모리 맵핑된 I/O 진입 경로(110e) 및 출구 경로(110g)를 통하여 계산 유닛(100)의 다른 부분들에 액세스할 수 있다.
도 1a를 참조하면, 하드웨어 스케줄러는 인커밍 패킷들의 트래픽 관리를 구현하기 위한 스케줄링 회로(108b/n)를 포함할 수 있다. 특정 트래픽 클래스에 관련되거나, 특정 애플리케이션에 속하거나, 또는 특정 소켓으로 흐르는, 특정 소스로부터의 패킷들은, 세션 플로우의 부분으로 지칭되고, 세션 메타데이터를 사용하여 분류된다. 그러한 분류는 분류기(108e)에 의해 수행될 수 있다.
일부 실시예들에서, 세션 메타데이터(108d)는, 패킷들이 우선순위화 및 스케줄링되게 하고 그래서 인입 패킷들이 그들의 세션 메타데이터에 기초하여 리오더링될 수 있게 하는 기준으로서의 역할을 할 수 있다. 패킷들의 이러한 리오더링은 하나 또는 그 초과의 버퍼들에서 발생할 수 있고, 이러한 플로우들의 트래픽 형상을 변경할 수 있다. 이러한 우선순위화를 위해 선택된 스케줄링 규율, 또는 트래픽 관리(TM)는, 지연(버퍼링), 트래픽의 버스팅(버퍼링 및 버스팅), 트래픽의 스무딩(버퍼링, 및 플로우들을 레이트 제한하는 것), 트래픽을 드롭핑하는 것(버퍼를 고갈시키는 것을 방지하기 위하여 폐기할 데이터를 선택하는 것), 지연 지터(플로우의 셀들을 상이한 양들만큼 시간적으로 시프팅하는 것)를 통해 그리고 접속을 허용하지 않음으로써(예컨대, 부가적인 플로우들의 서비스 (SLA들)에 대해서는 기존의 SLA들을 동시에 보증할 수 없음), 플로우들 및 마이크로플로우들의 트래픽 형상에 영향을 끼칠 수 있다.
실시예들에 따라, 계산 유닛(100)은 스위치 패브릭의 일부로서의 역할을 할 수 있고 깊이-제한된 출력 큐들을 트래픽 관리에 제공할 수 있으며, 이 깊이-제한된 출력 큐들로의 액세스는 스케줄링 회로(108b/n)에 의해 조정된다. 인입 플로우들에 대한 트래픽 관리를 제공하기 위한 스케줄링 규율을 사용하여 이러한 출력 큐들이 관리된다. 이러한 큐들 각각에 큐잉된 세션 플로우들은 출력 포트를 통해 다운스트림 네트워크 엘리먼트에 전송될 수 있다.
통상적인 트래픽 관리 회로는, 자신이 다운스트림 엘리먼트들에 대해 이미 갖고 있는 SLA 합의들을 충족시키기 위해서를 제외하고는, 상기 다운스트림 엘리먼트들에 의한 데이터의 핸들링 및 관리를 고려하지 않음이 주목된다.
그에 반해서, 실시예들에 따라, 스케줄러 회로(108b/n)는 출력 큐들 각각에 우선순위를 할당할 수 있고, 이러한 큐들에서 세션 플로우들의 지속을 유지시키기 위해 인입 패킷들의 리오더링을 수행할 수 있다. 스케줄러 회로(108b/n)는 오프로드 프로세서(108i) 상에서 실행되는 범용성 운영체제(OS)(108j)로의 이러한 지속적 세션들 각각의 스케줄링을 제어하는데 사용될 수 있다. 위에서 정의된 바와 같이, 특정 세션 플로우의 패킷들은 특정 큐에 속할 수 있다. 스케줄러 회로(108b/n)는 이러한 큐들의 우선순위화를 제어할 수 있고, 따라서 이러한 큐들은 다운스트림에 위치된 범용성(GP) 프로세싱 자원(예컨대, 오프로드 프로세서(108i))에 의한 핸들링을 위해 조정된다. 다운스트림 프로세서(108i) 상에서 실행되는 OS(108j)는 프로세서 주기들 및 메모리와 같은 실행 자원들을, 자신이 현재 핸들링하고 있는 특정 큐에 할당할 수 있다. OS(108j)는 그 특정 큐에 대해 스레드 또는 스레드들의 그룹을 추가로 할당할 수 있고, 따라서 그 특정 큐는 범용성 프로세싱 엘리먼트(108i)에 의해 별개의 엔티티로서 별도로 핸들링된다. 다수의 세션들이 GP 프로세싱 자원 상에서 실행될 수 있다는 사실(각각이 스케줄러 회로에 의해 설정된 큐에 있는 특정 세션 플로우로부터의 데이터를 핸들링함)은 스케줄러 및 다운스트림 자원(예컨대, 108i)을 단단히 통합시킨다. 이는 트래픽 관리 및 스케줄링 회로 및 범용성 프로세싱 자원(108j)에 걸쳐 세션 정보의 지속을 초래할 수 있다.
세션들 각각에 대한 전용 컴퓨팅 자원들(예컨대, 108i), 메모리 공간 및 세션 콘텍스트 정보는 범용 프로세서(108i)에서 세션 플로우들 각각을 핸들링, 프로세싱 및/또는 종료하는 방식을 제공할 수 있다. 스케줄러 회로(108b/n)는 다운스트림을 스케줄링하기 위해 세션 플로우들을 큐잉하기 위해서 실행 자원의 이러한 기능을 활용할 수 있다. 스케줄러 회로(108b/n)는 실행 자원(들)(예컨대, 108i)의 상태, 실행 자원 상에서 실행되는 현재 세션; 실행 자원에 할당된 메모리 공간, 프로세서 캐시에서의 세션 콘텍스트의 위치에 관해 통보받을 수 있다.
실시예들에 따라, 스케줄러 회로(108b/n)는 실행 자원들을 하나의 상태로부터 다른 상태로 변경시키기 위한 스위칭 회로들을 더 포함할 수 있다. 스케줄러 회로(108b/n)는, 다운스트림 실행 자원으로 스위칭되도록 준비되어 있는 큐들 사이를 조정하기 위해 이러한 능력을 사용할 수 있다. 추가로, 다운스트림 실행 자원은, 자원들 사이의 콘텍스트 스위치와 연관된 오버헤드 및 페널티를 감소시키도록 최적화될 수 있다. 이는, 스케줄러 회로(108b/n)에 의해, 큐들 사이의 심리스 스위칭, 및 결과적으로 상이한 세션들로서 실행 자원에 의한 그들의 실행을 수행하기 위해 추가로 활용될 수 있다.
실시예들에 따른 스케줄러 회로(108b/n)는 다운스트림 프로세싱 자원 상에서 상이한 세션들을 스케줄링할 수 있는데, 콘텍스트 스위치들 동안의 오버헤드를 감소시키기 위해 두 개가 조정되어 동작된다. 서비스들의 레이턴시 및 엔지니어링 계산 이용가능성을 감소시킬 때 중요한 인자는, 네트워크 큐잉과 동기화된 하드웨어 콘텍스트 스위칭일 수 있다. 실시예들에서, 큐가 트래픽 관리자에 의해 선택될 때, 파이프라인은 대응하는 자원(예컨대, 108i)의 캐시(예컨대, L2 캐시)의 스와핑 인(swapping in)을 조정하고, 리어셈블링된 I/O 데이터를 실행 프로세스의 메모리 공간으로 전달한다. 특정 경우들에서, 어떠한 패킷들도 큐에서 계류중이지 않지만, 이전 패킷들에 서비스하기 위해 계산이 여전히 계류중이다. 일단 이러한 프로세스가 스와핑된 데이터의 바깥에 메모리 레퍼런스를 만들면, 스케줄러 회로(108b/n)는 스레드를 스케줄링하는 것을 계속하기 위해 I/O 디바이스(102)로부터 큐잉된 데이터를 인에이블링할 수 있다.
일부 실시예들에서, 데이터를 갖지 않는 프로세스에 공평한 큐잉을 제공하기 위해, 최대 콘텍스트 크기가 프로세싱되는 데이터로서 가정될 수 있다. 이러한 방식으로, 큐가 계산 자원과 네트워크 대역폭 자원 중 더 큰 것으로서 프로비저닝될 수 있다. 그러나 하나의 매우 특정한 예로서, 계산 자원이 800㎒에서 실행되는 ARM A9 프로세서일 수 있는 반면에, 네트워크 대역폭은 3Gbps의 대역폭일 수 있다. 한쪽으로 치우친 성질의 이러한 비율이 주어지면, 실시예들은, 많은 병렬 세션들(따라서, 세션 특정 데이터에 대한 하드웨어의 프리페칭이 호스트 프로세서 로드의 많은 부분을 오프로딩함)을 갖고 데이터의 최소 범용성 프로세싱을 갖는 계산을 활용할 수 있다.
따라서, 일부 실시예들에서, 스케줄러 회로(108b/n)는, 라인 레이트 속도들의 발신 큐들 사이를 조정하는 것으로서가 아니라 매우 고속의 종단 세션들 사이를 조정하는 것으로서 개념화될 수 있다. 범용성 OS를 비롯한 단계들의 파이프라인에 걸친 세션들의 밀착도(stickiness)는, 스케줄러 회로가 이러한 파이프라인의 이러한 단계들 중 임의의 단계 또는 단계들 전부를 최적화하는 것일 수 있다.
대안적으로, 스케줄링 방식은 2010년 7월 20일자로 Dalal에 발행된 미국 특허 번호 7,760,715에 나타난 바와 같이 사용될 수 있고, 이 특허는 본원에 인용에 의해 통합된다. 이 방식은, 과잉 선택된 플로우에 특정한 다른 자원의 다운스트림 혼잡을 방지하기 위해 또는 특정 플로우들에 대해 서비스 계약들을 강제하기 위해 플로우들을 레이트 제한하는 것이 바람직할 때 유용할 수 있다. 실시예들은 다운스트림 자원들, 예컨대 심리스하게 강제될 수 있는 범용성 OS의 서비스 계약들을 허용하는 조정 방식을 포함할 수 있다.
여전히 도 1a를 참조하면, 본원의 실시예들 또는 균등물들에 따른 하드웨어 스케줄러는, 세션 메타데이터에 기초하여 인입 패킷 데이터의 세션 플로우들로의 분류를 제공할 수 있다. 하드웨어 스케줄러는, 플로우들이 오프로드 프로세서들 상에서 별개의 프로세싱 엔티티들로서 조정 및 큐잉되기 이전에, 이러한 플로우들의 트래픽 관리를 추가로 제공할 수 있다.
일부 실시예들에서, 오프로드 프로세서들(예컨대, 108i)은 상이한 애플리케이션 또는 전송 세션들의 패킷들을 핸들링할 수 있는 범용성 프로세싱 유닛들일 수 있다. 이러한 오프로드 프로세서들은 범용성 명령들을 실행할 수 있는 저전력 프로세서들일 수 있다. 오프로드 프로세서들은 ARM, ARC, Tensilica, MIPS, StrongARM 또는 본원에 설명되는 기능들을 서빙하는 임의의 다른 프로세서를 비롯한 임의의 적절한 프로세서일 수 있지만, 이들로 제한되지는 않는다. 이러한 오프로드 프로세서들은 그들 상에서 실행되는 범용성 OS를 갖고, 범용성 OS는 상이한 스레드들 또는 스레드들의 그룹 사이의 콘텍스트 스위칭과 연관된 페널티를 감소시키도록 최적화된다.
그에 반해서, 호스트 프로세서들 상에서의 콘텍스트 스위치들은, 레지스터 저장 영역, 캐시의 프로세스 콘텍스트, 및 TLB 엔트리들이 그들이 무효화되거나 또는 덮어쓰기되는 경우 복구될 것을 요구하는 계산 집약적 프로세스들일 수 있다. 호스트 프로세싱 시스템들에서의 명령 캐시 미스(miss)들은 파이프라인 스톨들을 유도할 수 있고, 데이터 캐시 미스들은 동작 스톨을 유도하며, 이러한 캐시 미스들은 프로세서 효율을 감소시키고 프로세서 오버헤드를 증가시킨다.
그에 반해서, 스케줄러 회로(108b/n)와 연관되어 오프로드 프로세서들(108i) 상에서 실행되는 OS(108j)는, 그것 상에서 실행되는 상이한 프로세싱 엔티티들 사이에서 발생하는 콘텍스트 스위치 오버헤드를 감소시키기 위해 함께 동작할 수 있다. 실시예들은 오프로드 프로세서(108i) 상에서 스케줄러 회로와 OS 사이의 협력 메커니즘을 포함할 수 있고, OS는 캐시에서 물리적으로 연속적이 되도록(세션 히프 및 스택에 대한 물리적으로 컬러링된 할당기) 세션 콘텍스트를 셋업하고; 그 다음, 세션 초기화 시 세션 컬러, 크기, 및 시작 물리적 어드레스를 스케줄러 회로에 통신한다. 실제 콘텍스트 스위치 동안, 스케줄러 회로는, 이러한 파라미터들을 사용함으로써 캐시에서 세션 콘텍스트를 식별할 수 있고, 외부 저 레이턴시 메모리로의 이러한 컨텐츠의 벌크 전송을 개시할 수 있다. 부가하여, 스케줄러 회로는 구 세션의 콘텍스트가 로컬 메모리(108g)에 저장되었던 경우 구 세션의 프리페치를 관리할 수 있다. 특정 실시예들에서, 로컬 메모리(108g)는 저 레이턴시 메모리, 예컨대 감소된 레이턴시 동적 랜덤 액세스 메모리(RLDRAM)일 수 있지만, 이는 그러나 하나의 매우 특정한 실시예로서이다. 따라서, 실시예들에서, 세션 콘텍스트는 캐시에서 별도로 식별될 수 있다.
일부 실시예들에서, 콘텍스트 크기는 빠른 스위칭 속도를 보장하도록 제한될 수 있다. 부가적으로 또는 대안적으로, 실시예들은 로컬 메모리(108g)에 세션 콘텍스트를 전달하기 위한 벌크 전달 메커니즘을 포함할 수 있다. 그 내부에 저장된 캐시컨텐츠들은 이어서, 다시 이전의 세션으로의 콘텍스트 스위칭 동안 리트리브되고 프리패치될 수 있다. 상이한 콘텍스트 세션 데이터는 빠른 리트리브를 위해 로컬 메모리(108g) 내에서 식별되고 및/또는 태깅될 수 있다. 위에서 언급된 바와 같이, 하나의 오프로드 프로세서에 의해 저장되는 콘텍스트는 상이한 오프로드 프로세서에 의해 리콜될 수 있다.
도 1a의 매우 특정한 실시예에서, 다수의 오프로드 프로세싱 코어들이 계산 FPGA(108)에 통합될 수 있다. 다수의 계산용 FPGA들은 다른 FPGA(110)의 중재기 회로들에 의해 중재될 수 있다. 계산용 FPGA들(예를 들어, 108) 및 아비터 FPGA들(예를 들어, 110)의 결합은 "XIMM" 모듈들 또는 "Xockets DIMM 모듈들"(예를 들어, 계산 유닛(100))으로서 지칭된다. 특정한 애플리케이션들에서, 이들 XIMM 모듈들은 오프로드 프로세서들 상의 다수의 세션들의 실행을 중개하는 통합된 트래픽 및 스레드 관리 회로들을 제공할 수 있다.
도 1a는 또한 오프로드 프로세서 터널 연결(608k) 뿐만 아니라 메모리 인터페이스(108m) 및 포트(108l)(이는 가속기 코히어런시 포트(ACP)일 수 있음)를 도시한다. 메모리 인터페이스(108m)는 버퍼 메모리(108a)에 액세스할 수 있다.
도 1b는 실시예에 따른 시스템 플로우를 도시한다. 패킷 또는 다른 I/O 데이터가 I/O 디바이스(120)에서 수신될 수 있다. I/O 디바이스는 물리 디바이스, 가상 디바이스 또는 이들의 조합일 수 있다. 호스트 프로세서(124)에 대해 의도된 I/O 데이터로부터 생성되는 방해들이 디스에이블되어, 호스트 프로세서(124)의 자원들 없이 이러한 I/O 데이터가 프로세싱될 수 있다.
IOMMU(121)는 수신된 데이터를 시스템 어드레스 공간의 물리 어드레스들에 맵핑할 수 있다. DMA 마스터(125)는 이러한 데이터를, 메모리 제어기(122)의 동작에 의해 이러한 메모리 어드레스들에 송신할 수 있다. 메모리 제어기(122)는 DMA 슬레이브를 이용하여 메모리 버시를 통해 DRAM 전송들을 실행할 수 있다. 전송된 I/O 데이터를 수신할 때, 하드웨어 스케줄러(123)는 이러한 데이터의 프로세싱을 오프로드 프로세서(126)를 이용하여 스케줄링할 수 있다. 일부 실시예들에서, I/O 데이터 내의 메타데이터에 의해 프로세싱의 타입이 표시될 수 있다. 추가로, 일부 실시예들에서, 이러한 데이터는 온보드 메모리(129)에 저장될 수 있다. 하드웨어 스케줄러(123)로부터의 명령들에 따라, 하나 이상의 오프로드 프로세서들(126)은 I/O 데이터에 응답하여 컴퓨팅 기능들을 실행할 수 있다. 일부 실시예들에서, 이러한 컴퓨팅 기능들은 I/O 데이터에 대해 동작할 수 있고, 이러한 데이터는 DMA 슬레이브(127)에 의해 프로세싱되는 판독 요청을 통해 메모리 버스 상에서 후속적으로 판독될 수 있다.
증가된 스루풋을 제공하기 위한 다수의 스레드 콘텍스트들로의 태스크들의 병렬화는 당업계에 주지되어 있다. MIPS와 같은 프로세서 아키텍쳐들은 사이클 당 명령들의 수를 개선하기 위해 깊은 명령 파이프라인들을 포함할 수 있다. 추가로, 멀티-스레디드 프로그래밍 환경을 실행하는 능력은 기존의 프로세서 자우너들의 향상된 이용을 도출한다. 하드웨어 상에서의 병렬 실행을 추가로 증가시키기 위해, 프로세서 아키텍쳐는 다수의 프로세서 코어들을 포함할 수 있다. 동종 코어 아키텍쳐들로 지칭되는, 동일한 타입의 코어들을 포함하는 멀티-코어 아키텍쳐들은 다수의 코어들에 걸쳐 스레드들 또는 프로세스들을 병렬화함으로써 더 높은 명령 스루풋을 제공한다. 그러나, 이러한 종종 코어 아키텍쳐들에서, 메모리와 같은 공유된 자원들은 소수의 프로세서들에 걸쳐 분할 할당된다.
메모리 및 I/O 액세스들은 대량의 프로세서 오버헤드를 초래할 수 있다. 추가로, 종래의 범용 프로세싱 유닛들의 콘텍스트 스위치들은 계산 집약적일 수 있다. 따라서, 프로세서 스루풋을 증가시키기 위해, 복수의 네트워킹된 애플리케이션들을 핸들링하는 네트워킹된 컴퓨팅 자원에서 콘텍스트 스위치 오버헤드를 감소시키는 것이 바람직하다. 종래의 서버 로드들은, 복잡한 전송, 높은 메모리 대역폭, 극단적인 양의 데이터 대역폭(랜덤으로 액세스되고, 병렬화되고, 매우 이용가능함)을 요구하지만 종종 라이트 터치 프로세싱, 즉, HTML, 비디오, 패킷-레벨 서비스들, 보안 및 분석을 요구할 수 있다. 추가로, 유휴 프로세서들은 여전히 자신들의 피크 전력 소모의 50% 초과를 소모한다.
반대로, 본 명세서의 실시예들에 따르면, 복잡한 전송, 데이터 대역폭 집약적인 빈번한 랜덤 액세스 발신 "라이트" 터치 프로세싱 로드들은, 오프로드 프로세서 코어들 상에 형성된 소켓 앱스트랙션 뒤에서 핸들링될 수 있다. 동시에, "헤비" 터치 컴퓨팅 집약적 로드들은 호스트 프로세서 코어(예를 들어, x86 프로세서 코어들) 상에서 소켓 앱스트랙션에 의해 핸들링될 수 있다. 이러한 소프트웨어 소켓들은 이러한 로드들을 ARM 및 x86 프로세서 코어들 사이에 자연스럽게 파티셔닝하는 것을 허용할 수 있다. 새로운 애플리케이션 레벨 소켓들을 이용함으로써, 실시예들에 따르면, 서버 로드들은 오프로드 프로세싱 코어들 및 호스트 프로세싱 코어들에 걸쳐 분산될 수 있다.
도 3은, 실시예들에 따른 시스템에 포함될 수 있는 프로토콜 스택들을 도시한다. 호스트 프로세서(예를 들어, 106c)는 brawny 코어 프로토콜 스택(317)을 포함할 수 있다. 이러한 프로토콜 스택(317)은, 운영 시스템(OS)(319) 상에 존재하는 하나 이상의 애플리케이션들(Application)(318)을 포함할 수 있다. 종래의 호스트 프로세싱 스택들과는 달리, OS는 Xockets Socket(330) 및 Xockets 터널링 드라이버(320)를 포함할 수 있고, 이들은, 본 명세서에서 설명되는 XIMM들 또는 이들의 균등물들에 액세스할 수 있다. 특정한 실시예들에서, 소켓(330)은 호스트 프로세서와 오프로드 프로세서 모듈(예를 들어, 100) 사이의 통신을 용이하게 할 수 있고, 드라이버(320)는 오프로드 프로세서 모듈(예를 들어, 100)로의 패킷 데이터의 송신(예를 들어, 이더넷-오버-DDR 터널링)을 가능하게 할 수 있다. brawny 코어 프로토콜 스택(317)은, 본 명세서에서 설명되는 바와 같이 세션들을 감독하고 그리고/또는 가상 스위치들(310)을 가능하게 하기 위해 하이퍼바이저(312) 또는 이들의 균등물들을 더 포함할 수 있다.
오프로드 프로세서는 wimpy 코어 프로토콜 스택(300)을 포함할 수 있다. 도시된 실시예에서, 이러한 프로토콜 스택(300)은, 애플리케이션(303)을 실행할 수 있는 단일 세션 OS(302)를 포함할 수 있다. 추가적인 소프트웨어 기능들(304)은, 콘텍스트 스위칭, 데이터의 프리페치 및 메모리 맵핑된 스케줄링을 제어할 수 있다. 상이한 세션들에 속하는 패킷들이 입장함에 따라, 오프로드 프로세서들은 이들을 서비스하기 위해 신속하게 콘텍스트들을 스위칭하고, 메모리의 상이한 부분들로부터 판독할 수 있다. 큐잉 및 리어셈블리 기능들(320)은 데이터의 암호해제된 착신 프래그먼트들을 취하고, 이들을 원래의 형태로 어셈블하고, 모듈(예를 들어, 100) 상에 탑재된 다수의 오프로드 프로세서들 중 하나 상에서의 프로세싱을 위해 이들을 큐잉할 수 있다. 중재 프로세서가 착신 패킷들에 대한 가상 세션들 사이에서 스위칭하는 경우, 물리 메모리의 안전한 공유 및 이용을 용이하게 하기 위해, 입력-출력 메모리 관리 소프트웨어(예를 들어, 308의 IOMMU)가 제공될 수 있다. 직접적인 메모리 액세스(예를 들어, 308의 R/DMA)는 모듈(예를 들어, 100)의 내부 메모리에 대한 직접 판독/기록을 허용할 수 있다. 오프로드 프로세서는 또한, 본 명세서에서 설명되는 스위칭을 제공하기 위해 가상 스위칭 소프트웨어(312)를 활용할 수 있다. 헤더 서비스들(310)은 수신된 패킷들의 헤더 데이터를 프로세싱할 수 있다.
오프로드 프로세서들의 예시적인 실시예들은, 800 MHz의 클럭 속도 및 3 Ghz의 데이터 핸들링 용량을 갖는 ARM A9 Cortex 프로세서들을 포함할 수 있지만, 이에 제한되는 것은 아니다. 트래픽 관리 회로에 대한 큐 깊이는, 프로세싱 전력 및 네트워크 대역폭 중 더 작은 것으로 구성될 수 있다. 이러한 비의 치우침 성질이 주어지면, 완전한 네트워크 대역폭을 핸들링하기 위해, 세션들은 라이트 프로세싱 성질일 수 있다. 추가로, 세션들은 최소 콘텍스트 스위치 오버헤드로 스위칭되어, 오프로드 프로세서가 높은 대역폭 네트워크 트래픽을 프로세싱하도록 허용할 수 있다. 추가로, 오프로드 프로세서들은, 작은 오버헤드로 또는 오버헤드 없이 세션들을 종료시키는 능력으로 인해, 종래의 접근법들보다 큰 세션 핸들링 용량을 제공할 수 있다. 실시예들에 따른 오프로드 프로세서들은, 단지 하나의 매우 특정한 실시예로서 아파치 비디오 라우팅의 완전한 오프로드를 핸들링하도록 우호적으로 배치된다.
대안적으로 다른 실시예에서, 다수의 "wimpy" 코어들을 각각 포함하는 많은 XIMM들을 구비하는 경우, 시스템들은 랙의 최상부 근처에 배치될 수 있는데, 여기서 시스템들은, 핫 컨텐츠 또는 핫 코드를 랙하기 위한 프로세싱 자원 및 데이터에 대한 캐시, 랙들과 TOR 스위치들 사이의 상호접속을 위한 수단, TOR 스위치들 및 제 2 레벨 스위치들 사이의 중간 티어, 랙-레벨 패킷 필터링, 로깅 및 분석 또는 다양한 타입들의 랙-레벨 제어 평면 에이전트들로서 이용될 수 있다. 간단한 수동 광학 멀티플렉싱/디멀티플렉싱은 x86 시스템들 상의 별개의 높은 대역폭 포트들을 필요에 따라 많은 더 낮은 대역폭 포트들로 분리시킬 수 있다.
실시예들은 아파치, HTML 및 애플리케이션 캐시 및 랙 레벨 중간 평면 기능들을 핸들링하도록 우호적으로 배치될 수 있다. 다른 실시예들에서, XIMM들 및 호스트 x86 프로세서들의 네트워크는 라우팅 오버레이들을 제공하기 위해 이용될 수 있다.
도 4는, 개략적 플로우이고, 여기서 네트워크 패킷들(450)은, brawny 코어 디바이스일 수 있는 호스트 CPU(420)의 개입이 전혀 없이, wimpy 코어 디바이스들일 수 있는, 메모리 디바이스(410)에 의해 탑재된 오프로드 프로세서들(430)에 전달된다. 오프로드 프로세서들(430)은 풀-플레지드(full-fledged) 프로세서 호스팅 서버 애플리케이션들로서 동작할 수 있다. 일 실시예에서, 패킷들(450)은 I/O 디바이스(440)(예를 들어, NIC)를 통해 수신될 수 있다. 호스트 프로세서(420)는 다른 동작들(660)을 실행하도록 자유롭게 될 수 있는 한편, 오프로드 프로세서들(430)은 네트워크 패킷들(450)을 서비스한다.
도 5는 대안적 실시예이고, 여기서 서버 로드들이 파티셔닝되어, 패킷 데이터 프로세싱, 라우팅 오버레이들, 필터링, 패킷 로깅 및 다른 관리 기능들은 메모리 디바이스들(510)에 탑재된 오프로드 프로세서들(530)에 오프로드되는 한편, 호스트 프로세서(520)는 서버 세션들을 구현한다. 오프로드 프로세서들(530)은 wimpy 코어 디바이스들일 수 있는 한편, 호스트 프로세서(520)는 brawny 코어 디바이스일 수 있다. 도 4의 경우에서와 같이, 패킷들은 I/O 디바이스(540)를 통해 흐를 수 있고, 오프로드 프로세서들(530)은 메모리 디바이스(510)에 탑재될 수 있다.
다른 실시예에서, 복수의 상기 오프로드 프로세서들을 각각 포함하는 오프로드 프로세서 모듈(즉, XIMM들)의 네트워크는, 가까이 위치된 DIMM들 또는 고체 상태 저장 디바이스들(SSD들)을 포함하는 로컬 메모리 엘리먼트들와 상기 오프로드 프로세서들을 연관시킴으로써 비디오 오버레이들을 제공하기 위해 이용될 수 있다. XIMM 모듈들의 네트워크는, 데이터 컨텐츠가 서비스되기 전에, 데이터 컨텐츠를 프리페치하기 위하 메모리 판독 또는 기록들을 수행하기 위해 이용될 수 있다. 이러한 경우, 실시간 전송 프로토콜(RTP)은, 패킷들이 트래픽 관리에 진입하기 전에 프로세싱될 수 있고, 이들의 대응하는 비디오 데이터는 스트리밍에 매칭하도록 프리페치될 수 있다. 프리페치들은 (R)DMA들로서 다른(원격) 로컬 DIMM들/SSD들에 물리적으로 발행될 수 있다. 기업 애플리케이션들의 경우, 비디오들의 수가 제한되고, 로컬 Xockets DIMM들에서 유지될 수 있다. 공개 클라우드/컨텐츠 전달 네트워크(CDN) 애플리케이션들의 경우, 이것은, 랙이 비디오 자료에 대한 공유 메모리 공간을 제공하도록 허용한다. 프리페치는 임의의 머신 상의 임의의 메모리 DIMM으로부터 셋업될 수 있다.
프리페치는 피어-투-피어 분배 프로토콜들(예를 들어, P4P)에 대해 밸런싱될 수 있어서, 데이터의 블록들은 모든 관련 서버들로부터 효율적으로 소싱될 수 있다. 대역폭 메트릭은, 10Mbps(1Mbps) 스트림들을 이용하는 경우 얼마나 많은 스트림들이 유지될 수 있는지를 표시한다. 스트림 대역폭이 내려감에 따라, 스트림들의 수는 증가하고, 동일한 세션 제한은 서버의 RTP 프로세싱에서 명백해진다. 이러한 실시예들에 따른 아키텍쳐는 1U(1 랙 단위) 폼 팩터에서 유지될 10,000개 초과의 고해상도 스트림들을 허용할 수 있다.
도 6에 도시된 대안적 실시예에서, x86 코어들 및 오프로드 프로세서 코어들의 네트워크에 걸쳐 파티셔닝되는 파이프라인된 계산 태스크들을 핸들링하기 위한 복합 퍼블리쉬 및 가입자 모델이 구현될 수 있다. 파이프라인의 각각의 태스크는, 그에 대해 가장 우호적으로 배치된 타입의 코어들에 의해 핸들링될 수 있다. 예를 들어, 오프로드 프로세서 모듈(예를 들어, Xockets DIMM들)이 몇십배 크기만큼 맵-감소 알고리즘들의 가속을 수행하기 위해 이용될 수 있다. Xockets DIMM들에 의해 정의되는 미드-플레인은 랙 내의 그리고 랙 외부의 감소 단계들과 맵 단계들을 연결시키는 큰 PCI-e 3.0 대역폭을 구동 및 수신할 수 있다. 셔플 단계가 종종 병목을 일으키기 때문에, 감소기들의 수는 최소로 유지되어, COU들은 필터 키들을 가질 필요없이 압도되지 않는다. 실시예들에 따른 트래픽-관리에 있어서, 감소기들의 수는 맵퍼들의 수와 경쟁할 수 있다.
도 6은, 602에서 시작할 수 있고 파일 시스템(예를 들어, Hadoop Distributed File System)으로부터 입력 데이터를 페치(604)할 수 있는 시스템을 도시한다. 이러한 데이터는 Wimpy 코어 디바이스들(예를 들어, 본 명세서에서 설명된 오프로드 프로세서들 또는 이들의 균등물)에 페치될 수 있다. 이러한 입력 데이터는 wimpy 코어 디바이스들에 의해 스플릿들로 파티셔닝될 수 있다(606). 이러한 스플릿들에 대한 입력 쌍들(키 및 값을 포함할 수 있음)이 획득될 수 있다(608). brawny 코어 디바이스들(예를 들어, 호스트 프로세서(들))(610)에 의해 모든 입력 쌍들에 대해 맵 기능이 수행될 수 있다. 모든 맵핑 동작 결과들이 감소될 수 있고, brawny 코어 디바이스들(612)에 의해 키 값들에 기초하여 정렬될 수 있다. 결과들은 파일 시스템(614)에 재기록될 수 있다. 이러한 동작은 wimpy 코어 디바이스들을 통해 달성될 수 있다. 그 다음, 방법이 종료된다(616).
대안적으로, 실시예들은, 메모리 맵핑된 파일 패러다임을 이용하여 랙 레벨 디스크들을 구현하기 위해 Xocket DIMM들을 이용할 수 있다. 이러한 실시예들은, 랙 상의 Xocket DIMM들에 대한 컨텐츠들 모두를 모든 x86 프로세서 소켓에 효과적으로 통합할 수 있다.
본 발명의 예시적인 실시예들의 앞의 설명에서, 다양한 신규한 양상들 중 하나 또는 그보다 많은 것의 이해를 돕기 위해 본 개시물을 간소화하기 위해서 본 발명의 다양한 특징들은 때때로 본 개시물의 하나의 실시예, 도면, 또는 설명에서 함께 그룹화될 수 있다는 것을 인식해야 한다. 그러나, 본 개시물의 이러한 방법은, 청구된 발명이 각각의 청구범위에서 명시적으로 인용되는 것보다 더 많은 특징들을 요구한다는 의도를 반영하는 것으로서 해석되지 않아야 한다. 오히려, 다음 청구범위가 반영하는 바와 같이, 본 발명의 양상들은 하나의 상술된 실시예의 모든 특징들보다 더 적게 존재한다. 이와 같이, 다음의 상세한 설명 다음에 오는 청구범위는 이로써 명시적으로 본 상세한 설명에 포함되며, 각각의 청구항은 그 자체로 본 발명의 별개의 실시예가 된다.
또한, 본 발명의 실시예들은 구체적으로 개시되지 않은 엘리먼트 및/또는 단계의 부재 시에 실시될 수 있다는 것을 이해한다. 즉, 본 발명의 신규한 특징들은 엘리먼트을 삭제할 수 있다.
그에 따라, 본원에 제시된 특정 실시예들의 다양한 양상들이 상세하게 설명되었지만, 본 발명은 본 발명의 정신 및 범위로부터 벗어나지 않고 다양한 변경들, 치환들, 대안들이 가능할 수 있다.

Claims (25)

  1. 시스템으로서,
    적어도 하나의 프로세서 모듈을 포함하고,
    상기 적어도 하나의 프로세서 모듈은,
    상기 모듈을, 시스템 메모리 버스의 적어도 하나의 인-라인 메모리 슬롯에 물리적으로 연결시키도록 구성되는 인-라인 모듈 커넥터;
    적어도 하나의 메모리;
    상기 모듈 상에 탑재되고, 상기 시스템 메모리 버스를 통해 수신된 데이터에 대해 동작들을 실행하고, 콘텍스트 데이터를 상기 메모리에 출력하고, 상기 메모리로부터의 콘텍스트 데이터를 판독하도록 구성되는 적어도 하나의 오프로드 프로세서; 및
    상기 모듈 내에서 충돌하는 데이터 액세스 요건들 사이를 중재하는 아비터, 및 컴퓨팅 태스크들을 명령하는 스케줄러를 포함하는 하드웨어 스케줄링 로직을 포함하고,
    상기 아비터 및 상기 스케줄러 둘 모두는, 상기 모듈에 탑재되고, 상기 적어도 하나의 오프로드 프로세서의 동작들을 제어하도록 구성되는, 시스템.
  2. 제 1 항에 있어서,
    상기 인-라인 모듈 커넥터는 듀얼-인-라인 메모리 모듈(DIMM) 커넥터와 호환가능한, 시스템.
  3. 제 1 항에 있어서,
    상기 메모리 버스는 더블-데이터-레이트(DDR) 메모리 버스를 포함하는, 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 버스에 커플링되는 적어도 하나의 호스트 프로세서를 더 포함하고,
    상기 적어도 하나의 프로세서 모듈은, 버스 제어기에 응답하여, 상기 메모리 버스를 통해 기록 데이터를 수신하고 판독 데이터를 제공하도록 구성되는 슬레이브 인터페이스를 더 포함하는, 시스템.
  5. 제 4 항에 있어서,
    상기 슬레이브 인터페이스를 더 포함하는 것은 직접 메모리 액세스(DMA) 슬레이브를 포함하는, 시스템.
  6. 제 4 항에 있어서,
    상기 메모리 버스와는 다른 호스트 버스를 통해 상기 적어도 하나의 호스트 프로세서에 커플링되고, 상기 버스 제어기로서 동작하도록 구성되는 입력/출력 디바이스를 더 포함하는, 시스템.
  7. 제 6 항에 있어서,
    상기 입력/출력 디바이스는, 상기 메모리 버스를 통해 네트워크 패킷 데이터를 전송하도록 구성되고, 상기 네트워크 패킷 데이터는 페이로드 및 헤더 부분을 포함하는, 시스템.
  8. 제 1 항에 있어서,
    로직 판독 및 기록 목적지들을 물리 판독 및 기록 목적지들로 변환하도록 구성되는 입력/출력 메모리 관리 유닛을 더 포함하고, 상기 물리 판독 및 기록 목적지들은 상기 적어도 하나의 프로세서 모듈의 위치들을 포함하는, 시스템.
  9. 제 1 항에 있어서,
    상기 시스템 메모리 버스의 하나의 슬롯에 상기 메모리 모듈을 물리적으로 연결시키도록 구성되는 인-모듈 커넥터, 및 상기 시스템 메모리 버스를 통해 액세스가능한 물리 메모리 어드레스들을 제공하도록 구성되는 복수의 메모리 집적 회로 디바이스들을 포함하는 적어도 하나의 메모리 모듈을 더 포함하는, 시스템.
  10. 시스템으로서,
    적어도 하나의 프로세서 모듈 ―상기 적어도 하나의 프로세서 모듈은, 상기 프로세서 모듈을, 시스템 메모리 버스의 적어도 하나의 인-라인 메모리 슬롯에 물리적으로 연결시키도록 구성되는 인-라인 모듈 커넥터를 포함함―; 및
    상기 모듈 상에 탑재되는 적어도 하나의 집적 회로 디바이스(IC)를 포함하고,
    상기 적어도 하나의 집적 회로 디바이스(IC)는,
    중앙 프로세싱 유닛 및 캐시 메모리를 포함하는 적어도 하나의 오프로드 프로세서,
    상기 오프로드 프로세서에 커플링되는 적어도 하나의 콘텍스트 메모리, 및
    상기 오프로드 프로세서 및 콘텍스트 메모리에 커플링되고, 상기 시스템 메모리 버스를 통한 미리 결정된 기록 동작들을 검출하도록 구성되는 로직을 포함하는, 시스템.
  11. 제 10 항에 있어서,
    상기 인-모듈 커넥터는 듀얼-인-라인 메모리 모듈(DIMM) 커넥터를 포함하는, 시스템.
  12. 제 10 항에 있어서,
    상기 적어도 하나의 IC는, 상기 로직으로 임베딩된 상기 오프로드 프로세서를 포함하는 제 1 IC를 포함하는, 시스템.
  13. 제 10 항에 있어서,
    상기 적어도 하나의 IC는, 적어도 상기 로직을 제공하도록 구성되는 적어도 하나의 프로그래밍가능한 로직 IC를 포함하는, 시스템.
  14. 제 10 항에 있어서,
    상기 적어도 하나의 IC는, 상기 콘텍스트 메모리로서 기능하도록 구성되는 적어도 하나의 메모리 IC를 포함하는, 시스템.
  15. 제 14 항에 있어서,
    상기 적어도 하나의 IC는, 상기 시스템 메모리 버스를 통해 수신된 기록 데이터를 저장하도록 구성되는 버퍼 메모리를 더 포함하고, 상기 버퍼 메모리는 상기 콘텍스트 메모리보다 더 느린 액세스 시간을 갖는, 시스템.
  16. 시스템으로서,
    시스템 메모리 버스에 커플링되는 적어도 하나의 호스트 프로세서;
    상기 시스템 메모리 버스와는 다른 호스트 버스를 통해 상기 적어도 하나의 호스트 프로세서에 커플링되는 입력/출력 디바이스;
    상기 메모리 버스에 커플링되는 적어도 하나의 메모리 모듈; 및
    상기 메모리 버스에 커플링되고, 호스트 프로세서에 직접 커플링되지는 않는 적어도 하나의 프로세서 모듈을 포함하고,
    상기 프로세서 모듈은, 상기 시스템 메모리 버스를 통해 수신된 데이터를 프로세싱하도록 구성되는 적어도 하나의 오프로드 프로세서, 및 상기 오프로드 프로세서의 프로세싱 콘텍스트 데이터를 저장하도록 구성되는 콘텍스트 메모리를 포함하는, 시스템.
  17. 제 16 항에 있어서,
    상기 적어도 하나의 호스트 프로세서는, 상기 오프로드 프로세서와는 상이한, 시스템.
  18. 제 16 항에 있어서,
    상기 오프로드 프로세서는, 상이한 프로세싱 콘텍스트들 사이에서 신속한 스위칭을 가능하게 하는 범용 운영 시스템을 포함하는, 시스템.
  19. 제 16 항에 있어서,
    상기 적어도 하나의 프로세서 모듈은, 상기 시스템 메모리 버스를 통해 수신된 기록 데이터를 저장하기 위한 버퍼 메모리를 더 포함하는, 시스템.
  20. 제 16 항에 있어서,
    상기 적어도 하나의 메모리 모듈은 인-라인 모듈 커넥터에 의해 상기 메모리 버스에 물리적으로 연결되고, 적어도 하나의 프로세서 모듈은, 적어도 하나의 인-라인 메모리 모듈 커넥터에 의해 상기 메모리 버스에 물리적으로 연결되는, 시스템.
  21. 시스템으로서,
    데이터 캐시를 포함하는 적어도 하나의 오프로드 프로세서 ―상기 오프로드 프로세서는, 메모리 버스를 통해 기록 데이터를 수신하고 판독 데이터를 제공하도록 구성되는 슬레이브 인터페이스를 포함함―;
    상기 슬레이브 인터페이스에 연결되는 버스 제어기 및 콘텍스트 메모리를 포함하는 오프로드 프로세서 모듈; 및
    상기 오프로드 프로세서 및 콘텍스트 메모리에 커플링되고, 상기 메모리 버스를 통해 미리 결정된 기록 동작들을 검출하도록 구성되는 로직을 포함하고,
    상기 오프로드 프로세서는, 상기 메모리 버스를 통해 수신된 데이터데 대해 동작들을 실행하고, 상기 콘텍스트 메모리에 콘텍스트 데이터를 출력하고, 상기 콘텍스트 메모리로부터의 콘텍스트 데이터를 판독하도록 구성되는, 시스템.
  22. 제 21 항에 있어서,
    상기 오프로드 프로세서 및 상기 오프로드 프로세서 모듈은 물리적으로 존재하고, 보드 상에서 전기 연결되는, 시스템.
  23. 제 21 항에 있어서,
    상기 오프로드 프로세서 모듈에 다수의 오프로드 프로세서들이 연결되는, 시스템.
  24. 제 21 항에 있어서,
    상기 메모리 버스는 DDR3 프로토콜들을 이용하여 동작하는, 시스템.
  25. 제 21 항에 있어서,
    상기 슬레이브 인터페이스를 더 포함하는 것은 직접 메모리 액세스(DMA) 슬레이브를 포함하는, 시스템.
KR1020157022208A 2013-01-17 2013-06-08 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들 KR20160037827A (ko)

Applications Claiming Priority (19)

Application Number Priority Date Filing Date Title
US201361753892P 2013-01-17 2013-01-17
US201361753907P 2013-01-17 2013-01-17
US201361753899P 2013-01-17 2013-01-17
US201361753906P 2013-01-17 2013-01-17
US201361753901P 2013-01-17 2013-01-17
US201361753910P 2013-01-17 2013-01-17
US201361753904P 2013-01-17 2013-01-17
US201361753895P 2013-01-17 2013-01-17
US201361753903P 2013-01-17 2013-01-17
US61/753,910 2013-01-17
US61/753,899 2013-01-17
US61/753,895 2013-01-17
US61/753,892 2013-01-17
US61/753,901 2013-01-17
US61/753,903 2013-01-17
US61/753,906 2013-01-17
US61/753,907 2013-01-17
US61/753,904 2013-01-17
PCT/US2013/044856 WO2014113055A1 (en) 2013-01-17 2013-06-08 Offload processor modules for connection to system memory

Publications (1)

Publication Number Publication Date
KR20160037827A true KR20160037827A (ko) 2016-04-06

Family

ID=51165034

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020157022208A KR20160037827A (ko) 2013-01-17 2013-06-08 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
KR1020157022209A KR20160040439A (ko) 2013-01-17 2013-06-22 오프로드 프로세서들을 사용한 스케줄링 및 트래픽 관리
KR1020157022210A KR20160037828A (ko) 2013-01-17 2013-06-26 오프로드 프로세서들을 사용한 콘텍스트 스위치

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020157022209A KR20160040439A (ko) 2013-01-17 2013-06-22 오프로드 프로세서들을 사용한 스케줄링 및 트래픽 관리
KR1020157022210A KR20160037828A (ko) 2013-01-17 2013-06-26 오프로드 프로세서들을 사용한 콘텍스트 스위치

Country Status (6)

Country Link
US (25) US20140201416A1 (ko)
EP (3) EP2946296A4 (ko)
JP (2) JP2016503933A (ko)
KR (3) KR20160037827A (ko)
CN (2) CN105765910A (ko)
WO (6) WO2014113055A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190103379A (ko) * 2017-01-26 2019-09-04 위스콘신 얼럼나이 리서어치 화운데이션 재구성 가능한 특정 용도 컴퓨터 가속기

Families Citing this family (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2559584A1 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1872249B1 (en) 2005-04-07 2016-12-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
US20130318280A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
WO2013177316A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Efficient packet handling, redirection, and inspection using offload processors
US10311014B2 (en) * 2012-12-28 2019-06-04 Iii Holdings 2, Llc System, method and computer readable medium for offloaded computation of distributed application protocols within a cluster of data processing nodes
US20140201416A1 (en) 2013-01-17 2014-07-17 Xockets IP, LLC Offload processor modules for connection to system memory, and corresponding methods and systems
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US9317444B2 (en) 2013-03-15 2016-04-19 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US9288163B2 (en) * 2013-03-15 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Low-latency packet receive method for networking devices
US10084718B1 (en) * 2013-03-15 2018-09-25 Google Llc Bi-Connected hierarchical data center network based on multi-ported network interface controllers (NICs)
US9462088B2 (en) * 2013-04-02 2016-10-04 Cisco Technology, Inc. Offload operations for overlay networks
US9606842B2 (en) * 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US9331868B2 (en) * 2013-10-15 2016-05-03 At&T Intellectual Property I, L.P. Method of bus virtualization in computing machine intercommunications
US9785558B2 (en) * 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
US9454394B2 (en) * 2013-11-22 2016-09-27 Red Hat Israel, Ltd. Hypervisor dynamically assigned input/output resources for virtual devices
US10254987B2 (en) * 2013-12-12 2019-04-09 Samsung Electronics Co., Ltd. Disaggregated memory appliance having a management processor that accepts request from a plurality of hosts for management, configuration and provisioning of memory
KR101572689B1 (ko) * 2014-01-06 2015-11-27 (주)구름네트웍스 네트워크 인터페이스 가상화 장치 및 방법
US9705798B1 (en) * 2014-01-07 2017-07-11 Google Inc. Systems and methods for routing data through data centers using an indirect generalized hypercube network
JP2015143945A (ja) * 2014-01-31 2015-08-06 富士通株式会社 ストレージ制御装置、ストレージ装置および制御プログラム
CN103905337B (zh) * 2014-03-31 2018-01-23 华为技术有限公司 一种网络资源的处理装置、方法和系统
US9467389B2 (en) 2014-04-28 2016-10-11 International Business Machines Corporation Handling large frames in a virtualized fibre channel over ethernet (FCoE) data forwarder
US9491031B2 (en) * 2014-05-06 2016-11-08 At&T Intellectual Property I, L.P. Devices, methods, and computer readable storage devices for collecting information and sharing information associated with session flows between communication devices and servers
US9742881B2 (en) * 2014-06-30 2017-08-22 Nicira, Inc. Network virtualization using just-in-time distributed capability for classification encoding
US10127783B2 (en) 2014-07-07 2018-11-13 Google Llc Method and device for processing motion events
US9213903B1 (en) 2014-07-07 2015-12-15 Google Inc. Method and system for cluster-based video monitoring and event categorization
US10140827B2 (en) 2014-07-07 2018-11-27 Google Llc Method and system for processing motion event notifications
US9501915B1 (en) 2014-07-07 2016-11-22 Google Inc. Systems and methods for analyzing a video stream
US9449229B1 (en) 2014-07-07 2016-09-20 Google Inc. Systems and methods for categorizing motion event candidates
WO2016013024A1 (en) * 2014-07-25 2016-01-28 StorNetware Systems Pvt. Ltd. Unified converged network, storage and computer system
US9892079B2 (en) * 2014-07-25 2018-02-13 Rajiv Ganth Unified converged network, storage and compute system
US10261817B2 (en) * 2014-07-29 2019-04-16 Nxp Usa, Inc. System on a chip and method for a controller supported virtual machine monitor
US9922000B2 (en) * 2014-08-25 2018-03-20 Marvell World Trade Ltd. Packet buffer with dynamic bypass
US10313683B2 (en) * 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
US9009805B1 (en) * 2014-09-30 2015-04-14 Google Inc. Method and system for provisioning an electronic device
USD782495S1 (en) 2014-10-07 2017-03-28 Google Inc. Display screen or portion thereof with graphical user interface
US9378363B1 (en) 2014-10-08 2016-06-28 Amazon Technologies, Inc. Noise injected virtual timer
US9754103B1 (en) 2014-10-08 2017-09-05 Amazon Technologies, Inc. Micro-architecturally delayed timer
US9864636B1 (en) * 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US20160188529A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Guaranteed quality of service in system-on-a-chip uncore fabric
US20160197834A1 (en) * 2015-01-02 2016-07-07 Siegfried Luft Architecture and method for traffic engineering between diverse cloud providers
US9952979B1 (en) * 2015-01-14 2018-04-24 Cavium, Inc. Methods and systems for direct memory access operations
US10310998B2 (en) 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
CN106326140B (zh) * 2015-06-30 2020-06-02 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
US9491765B1 (en) * 2015-09-21 2016-11-08 Dell Products L.P. Beam forming communication system
US20170142234A1 (en) * 2015-11-13 2017-05-18 Microsoft Technology Licensing, Llc Scalable addressing mechanism for virtual machines
US10853303B2 (en) 2015-11-18 2020-12-01 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10817456B2 (en) 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10031801B2 (en) 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
US10048977B2 (en) 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10445271B2 (en) * 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
US9985890B2 (en) 2016-03-14 2018-05-29 International Business Machines Corporation Identifying a local congestion control algorithm of a virtual machine
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
WO2017170311A1 (ja) * 2016-03-31 2017-10-05 日本電気株式会社 ネットワークシステムの制御方法および制御装置ならびにサーバ
US10045252B2 (en) * 2016-06-02 2018-08-07 International Business Machines Corporation Virtual switch-based congestion control for multiple TCP flows
KR102548599B1 (ko) 2016-06-17 2023-06-29 삼성전자주식회사 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈
US11671382B2 (en) 2016-06-17 2023-06-06 Intel Corporation Technologies for coordinating access to data packets in a memory
US10091904B2 (en) * 2016-07-22 2018-10-02 Intel Corporation Storage sled for data center
US10148576B2 (en) * 2016-07-28 2018-12-04 Fortinet, Inc. Network processing unit (NPU) integrated layer 2 network device for layer 3 offloading
WO2018049235A1 (en) * 2016-09-08 2018-03-15 Macnica Americas, Inc. Fpga offload module and processes for seamless frame-level switching of media streams in real-time
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10554554B2 (en) * 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10715424B2 (en) 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
CN106656711B (zh) * 2016-12-26 2019-06-18 中核控制系统工程有限公司 一种令牌总线时隙预定义方法
US10949427B2 (en) 2017-01-31 2021-03-16 Microsoft Technology Licensing, Llc Stream data processing on multiple application timelines
JP6859755B2 (ja) 2017-03-02 2021-04-14 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
CN110731070A (zh) 2017-03-29 2020-01-24 芬基波尔有限责任公司 通过多个交替数据路径进行分组喷射的无阻塞的任意到任意数据中心网络
US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US20180330288A1 (en) * 2017-05-15 2018-11-15 Alteryx, Inc. Method of data aggregation for cache optimization and efficient processing
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
US20180341494A1 (en) * 2017-05-26 2018-11-29 Intel Corporation Accelerating network security monitoring
US10990291B2 (en) * 2017-06-12 2021-04-27 Dell Products, L.P. Software assist memory module hardware architecture
US10838902B2 (en) * 2017-06-23 2020-11-17 Facebook, Inc. Apparatus, system, and method for performing hardware acceleration via expansion cards
CN109213268A (zh) * 2017-07-04 2019-01-15 佛山市顺德区顺达电脑厂有限公司 服务器机柜系统及其讯号传输频率调整方法
WO2019014265A1 (en) * 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR CALCULATION NODES AND STORAGE NODES
CN117348976A (zh) 2017-07-10 2024-01-05 微软技术许可有限责任公司 用于流处理的数据处理单元
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107741867B (zh) * 2017-09-30 2020-03-10 Oppo广东移动通信有限公司 应用程序管理方法、装置、存储介质及电子设备
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10496437B2 (en) * 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US20190171601A1 (en) 2017-12-03 2019-06-06 Intel Corporation Mechanisms for fpga chaining and unified fpga views to composed system hosts
US10812315B2 (en) * 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
KR20200013461A (ko) 2018-07-30 2020-02-07 삼성전자주식회사 메모리 장치의 내부 프로세싱 동작 방법
US10795612B2 (en) * 2018-07-31 2020-10-06 EMC IP Holding Company LLC Offload processing using storage device slots
US10862805B1 (en) 2018-07-31 2020-12-08 Juniper Networks, Inc. Intelligent offloading of services for a network device
US10649927B2 (en) * 2018-08-20 2020-05-12 Intel Corporation Dual in-line memory module (DIMM) programmable accelerator card
TWI813744B (zh) * 2018-08-23 2023-09-01 美商阿爾克斯股份有限公司 具有主機確定學習及本地化路由與橋接整合的主機路由覆蓋機制系統
US10979542B2 (en) * 2018-08-28 2021-04-13 Vmware, Inc. Flow cache support for crypto operations and offload
US10705762B2 (en) * 2018-08-30 2020-07-07 Micron Technology, Inc. Forward caching application programming interface systems and methods
CN109358953B (zh) * 2018-09-20 2020-09-08 中南大学 一种微云中的多任务应用卸载方法
US10942824B2 (en) 2018-10-08 2021-03-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10606775B1 (en) * 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
CN109714217A (zh) * 2019-02-28 2019-05-03 苏州浪潮智能科技有限公司 一种机柜以及机柜间通信方法
US10929310B2 (en) * 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
JP2020184690A (ja) * 2019-05-08 2020-11-12 富士通株式会社 パケット分類プログラム、パケット分類方法、および、情報処理装置
US11374879B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Network configuration of top-of-rack switches across multiple racks in a data center
US11374880B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Automated deployment of internet connectivity to rack switches in a data center
CN110181928B (zh) * 2019-07-09 2021-09-21 苏州微影激光技术有限公司 一种丝网印刷版的制版装置及制版方法
US11275111B2 (en) 2019-09-20 2022-03-15 Micron Technology, Inc. Plurality of edge through-silicon vias and related systems, methods, and devices
WO2021084309A1 (en) * 2019-10-30 2021-05-06 Telefonaktiebolaget Lm Ericsson (Publ) In-band protocol-based in-network computation offload framework
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11934330B2 (en) 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
JP2022048644A (ja) * 2020-09-15 2022-03-28 富士通株式会社 半導体装置及び転送方法
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US20220103488A1 (en) * 2020-09-28 2022-03-31 Vmware, Inc. Packet processing with hardware offload units
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11824931B2 (en) * 2020-09-28 2023-11-21 Vmware, Inc. Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver
US11418597B2 (en) * 2020-10-08 2022-08-16 Toyota Motor Engineering & Manufacturing North America, Inc. System and method for value-anticipating task offloading
US11301410B1 (en) * 2020-12-13 2022-04-12 Advanced Mciro Devices, Inc. Tags for request packets on a network communication link
US11451493B2 (en) * 2021-01-06 2022-09-20 Mellanox Technologies, Ltd. Connection management in a network adapter
US11822675B2 (en) * 2021-06-24 2023-11-21 International Business Machines Corporation Securing customer data and internal register data during hardware checkstops in a multi-tenant environment
US20230066513A1 (en) * 2021-08-30 2023-03-02 EMC IP Holding Company LLC Asynchronous Reservation of Storage Volumes with Persistent Storage of Reservation Data
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US20230221874A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Method of efficiently receiving files over a network with a receive file command
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US20220327061A1 (en) * 2022-06-23 2022-10-13 Daniel Christian Biederman Packet processing device to determine memory to store data in a server architecture and computing system including same

Family Cites Families (246)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214464A (ja) * 1986-03-17 1987-09-21 Hitachi Ltd データ処理システム
JP2514954B2 (ja) * 1987-03-13 1996-07-10 三菱電機株式会社 Icカ−ド
EP0422310A1 (en) * 1989-10-10 1991-04-17 International Business Machines Corporation Distributed mechanism for the fast scheduling of shared objects
US5237662A (en) 1991-06-27 1993-08-17 Digital Equipment Corporation System and method with a procedure oriented input/output mechanism
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5577213A (en) 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
US5913028A (en) * 1995-10-06 1999-06-15 Xpoint Technologies, Inc. Client/server data traffic delivery system and method
US6179489B1 (en) * 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5923887A (en) * 1996-05-20 1999-07-13 Advanced Micro Devices, Inc. Interrupt request that defines resource usage
US6085307A (en) 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US5930256A (en) * 1997-03-28 1999-07-27 Xerox Corporation Self-arbitrating crossbar switch
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US5870350A (en) 1997-05-21 1999-02-09 International Business Machines Corporation High performance, high bandwidth memory bus architecture utilizing SDRAMs
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
US6092146A (en) 1997-07-31 2000-07-18 Ibm Dynamically configurable memory adapter using electronic presence detects
US7565461B2 (en) * 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US20060117274A1 (en) 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6370622B1 (en) * 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6446163B1 (en) * 1999-01-04 2002-09-03 International Business Machines Corporation Memory card with signal processing element
US20020107990A1 (en) * 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7120155B2 (en) 2000-10-03 2006-10-10 Broadcom Corporation Switch having virtual shared memory
US6665495B1 (en) * 2000-10-27 2003-12-16 Yotta Networks, Inc. Non-blocking, scalable optical router architecture and method for routing optical traffic
US20020107971A1 (en) * 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US7274706B1 (en) * 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
JP2002324363A (ja) * 2001-04-25 2002-11-08 Ricoh Co Ltd 情報記録再生装置
TWI240864B (en) 2001-06-13 2005-10-01 Hitachi Ltd Memory device
JP2005505853A (ja) * 2001-10-12 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ユーザデータを読出し又は書込みするための装置及び方法
US20030078749A1 (en) * 2001-10-18 2003-04-24 Hans Eberle Memory module with integrated radio transmitter
US6889294B1 (en) * 2001-10-29 2005-05-03 Lsi Logic Corporation Virtual shared volume via proxy data transfer
WO2003067453A1 (en) * 2002-02-08 2003-08-14 Bermai, Inc. Medium access control in a wireless network
US6751113B2 (en) 2002-03-07 2004-06-15 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7472205B2 (en) 2002-04-24 2008-12-30 Nec Corporation Communication control apparatus which has descriptor cache controller that builds list of descriptors
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US7730077B2 (en) 2002-09-18 2010-06-01 Netezza Corporation Intelligent storage device controller
US7454749B2 (en) 2002-11-12 2008-11-18 Engineered Intelligence Corporation Scalable parallel processing on shared memory computers
US20040133720A1 (en) * 2002-12-31 2004-07-08 Steven Slupsky Embeddable single board computer
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7089412B2 (en) 2003-01-17 2006-08-08 Wintec Industries, Inc. Adaptive memory module
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7155379B2 (en) 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7337314B2 (en) 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US6794896B1 (en) * 2003-04-21 2004-09-21 Xilinx, Inc. Method and apparatus for multithreading
US7380163B2 (en) * 2003-04-23 2008-05-27 Dot Hill Systems Corporation Apparatus and method for deterministically performing active-active failover of redundant servers in response to a heartbeat link failure
US6982892B2 (en) 2003-05-08 2006-01-03 Micron Technology, Inc. Apparatus and methods for a physical layout of simultaneously sub-accessible memory modules
US8560627B2 (en) * 2003-05-23 2013-10-15 Alcatel Lucent Virtual switch for use in fibre channel applications
US20050038946A1 (en) 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
US20050114700A1 (en) * 2003-08-13 2005-05-26 Sensory Networks, Inc. Integrated circuit apparatus and method for high throughput signature based network applications
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050078708A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Formatting packet headers in a communications adapter
US7787471B2 (en) * 2003-11-10 2010-08-31 Broadcom Corporation Field processor for a network device
US7657706B2 (en) 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7558890B1 (en) * 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
US7213126B1 (en) * 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US20050018495A1 (en) 2004-01-29 2005-01-27 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7286436B2 (en) 2004-03-05 2007-10-23 Netlist, Inc. High-density memory module utilizing low-density memory components
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7668165B2 (en) 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
US7254036B2 (en) 2004-04-09 2007-08-07 Netlist, Inc. High density memory module using stacked printed circuit boards
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
US7480611B2 (en) 2004-05-13 2009-01-20 International Business Machines Corporation Method and apparatus to increase the usable memory capacity of a logic simulation hardware emulator/accelerator
US7831745B1 (en) * 2004-05-25 2010-11-09 Chelsio Communications, Inc. Scalable direct memory access using validation of host and scatter gather engine (SGE) generation indications
US7436845B1 (en) * 2004-06-08 2008-10-14 Sun Microsystems, Inc. Input and output buffering
US20060004965A1 (en) 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7305574B2 (en) 2004-10-29 2007-12-04 International Business Machines Corporation System, method and storage medium for bus calibration in a memory subsystem
KR100666169B1 (ko) 2004-12-17 2007-01-09 삼성전자주식회사 플래쉬 메모리 데이터 저장장치
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US8281031B2 (en) * 2005-01-28 2012-10-02 Standard Microsystems Corporation High speed ethernet MAC and PHY apparatus with a filter based ethernet packet router with priority queuing and single or multiple transport stream interfaces
US8072887B1 (en) * 2005-02-07 2011-12-06 Extreme Networks, Inc. Methods, systems, and computer program products for controlling enqueuing of packets in an aggregated queue including a plurality of virtual queues using backpressure messages from downstream queues
US20060215649A1 (en) * 2005-03-08 2006-09-28 Chris Morrall Network address converting apparatus using SSW tree
CN101872333A (zh) 2005-04-21 2010-10-27 提琴存储器公司 一种互连系统
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
WO2007006146A1 (en) 2005-07-12 2007-01-18 Advancedio Systems Inc. System and method of offloading protocol functions
US20070016906A1 (en) * 2005-07-18 2007-01-18 Mistletoe Technologies, Inc. Efficient hardware allocation of processes to processors
US7543131B2 (en) * 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7500083B2 (en) * 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US7442050B1 (en) 2005-08-29 2008-10-28 Netlist, Inc. Circuit card with flexible connection for memory module with heat spreader
US7650557B2 (en) 2005-09-19 2010-01-19 Network Appliance, Inc. Memory scrubbing of expanded memory
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US8862783B2 (en) * 2005-10-25 2014-10-14 Broadbus Technologies, Inc. Methods and system to offload data processing tasks
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7773630B2 (en) * 2005-11-12 2010-08-10 Liquid Computing Corportation High performance memory based communications interface
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US7904688B1 (en) 2005-12-21 2011-03-08 Trend Micro Inc Memory management unit for field programmable gate array boards
US20070150671A1 (en) * 2005-12-23 2007-06-28 Boston Circuits, Inc. Supporting macro memory instructions
EP1977635A2 (en) 2006-01-13 2008-10-08 Sun Microsystems, Inc. Modular blade server
US7619893B1 (en) 2006-02-17 2009-11-17 Netlist, Inc. Heat spreader for electronic modules
US20070226745A1 (en) 2006-02-28 2007-09-27 International Business Machines Corporation Method and system for processing a service request
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP2007299279A (ja) * 2006-05-01 2007-11-15 Toshiba Corp 演算装置、プロセッサシステム、及び映像処理装置
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US8948166B2 (en) 2006-06-14 2015-02-03 Hewlett-Packard Development Company, Lp. System of implementing switch devices in a server system
WO2007147170A2 (en) 2006-06-16 2007-12-21 Bittorrent, Inc. Classification and verification of static file transfer protocols
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8599716B2 (en) * 2006-06-30 2013-12-03 Cisco Technolgy, Inc. Method and system to configure quality of service in a network
US7291032B1 (en) * 2006-07-05 2007-11-06 International Business Machines Corporation Connector for adjacent devices
KR100823734B1 (ko) * 2006-07-07 2008-04-21 한국전자통신연구원 iSCSI를 위한 데이터 가속 장치 및 이를 이용한iSCSI 저장 시스템
US7624118B2 (en) 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7760715B1 (en) 2006-08-04 2010-07-20 Parin B. Dalal Circuit and method for rate-limiting a scheduler
US8116320B2 (en) * 2006-08-07 2012-02-14 Adc Telecommunications, Inc. Mapping external port using virtual local area network
US8943245B2 (en) 2006-09-28 2015-01-27 Virident Systems, Inc. Non-volatile type memory modules for main memory
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US8806116B2 (en) * 2008-02-12 2014-08-12 Virident Systems, Inc. Memory modules for two-dimensional main memory
US20080082750A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
WO2008051940A2 (en) 2006-10-23 2008-05-02 Virident Systems, Inc. Methods and apparatus of dual inline memory modules for flash memory
US7818489B2 (en) 2006-11-04 2010-10-19 Virident Systems Inc. Integrating data from symmetric and asymmetric memory
US8447957B1 (en) * 2006-11-14 2013-05-21 Xilinx, Inc. Coprocessor interface architecture and methods of operating the same
US8149834B1 (en) * 2007-01-25 2012-04-03 World Wide Packets, Inc. Forwarding a packet to a port from which the packet is received and transmitting modified, duplicated packets on a single port
US20080222351A1 (en) * 2007-03-07 2008-09-11 Aprius Inc. High-speed optical connection between central processing unit and remotely located random access memory
US20080229049A1 (en) 2007-03-16 2008-09-18 Ashwini Kumar Nanda Processor card for blade server and process.
US8924680B2 (en) 2007-04-12 2014-12-30 Rambus Inc. Memory controllers, systems, and methods supporting multiple request modes
US8935406B1 (en) * 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US20080271030A1 (en) * 2007-04-30 2008-10-30 Dan Herington Kernel-Based Workload Management
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8347005B2 (en) 2007-07-31 2013-01-01 Hewlett-Packard Development Company, L.P. Memory controller with multi-protocol interface
US7743196B2 (en) * 2007-08-15 2010-06-22 Agere Systems Inc. Interface with multiple packet preemption based on start indicators of different types
US7840748B2 (en) 2007-08-31 2010-11-23 International Business Machines Corporation Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
JP5059524B2 (ja) * 2007-09-05 2012-10-24 ルネサスエレクトロニクス株式会社 メモリ制御回路、半導体集積回路、不揮発性メモリのベリファイ方法
US8503465B2 (en) * 2007-09-17 2013-08-06 Qualcomm Incorporated Priority scheduling and admission control in a communication network
US7949683B2 (en) 2007-11-27 2011-05-24 Cavium Networks, Inc. Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US20090158276A1 (en) * 2007-12-12 2009-06-18 Eric Lawrence Barsness Dynamic distribution of nodes on a multi-node computer system
US8862706B2 (en) * 2007-12-14 2014-10-14 Nant Holdings Ip, Llc Hybrid transport—application network fabric apparatus
US8990799B1 (en) * 2008-01-30 2015-03-24 Emc Corporation Direct memory access through virtual switch in device driver
US20090249330A1 (en) * 2008-03-31 2009-10-01 Abercrombie David K Method and apparatus for hypervisor security code
JP5186982B2 (ja) 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US20110235260A1 (en) 2008-04-09 2011-09-29 Apacer Technology Inc. Dram module with solid state disk
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
US8417870B2 (en) 2009-07-16 2013-04-09 Netlist, Inc. System and method of increasing addressable memory space on a memory board
US8154901B1 (en) 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
CN102037689B (zh) 2008-05-22 2014-04-09 诺基亚西门子通信公司 用于通信系统设备、系统及方法的自适应调度器
TWI469055B (zh) * 2008-06-27 2015-01-11 Realtek Semiconductor Corp 網路工作卸載裝置與方法
US8190699B2 (en) 2008-07-28 2012-05-29 Crossfield Technology LLC System and method of multi-path data communications
US20100031235A1 (en) 2008-08-01 2010-02-04 Modular Mining Systems, Inc. Resource Double Lookup Framework
US20100032820A1 (en) * 2008-08-06 2010-02-11 Michael Bruennert Stacked Memory Module
US7886103B2 (en) * 2008-09-08 2011-02-08 Cisco Technology, Inc. Input-output module, processing platform and method for extending a memory interface for input-output operations
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
GB2466289A (en) * 2008-12-18 2010-06-23 Veda Technology Ltd Executing a service application on a cluster by registering a class and storing subscription information of generated objects at an interconnect
US7870309B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
US8352710B2 (en) * 2009-01-19 2013-01-08 International Business Machines Corporation Off-loading of processing from a processor blade to storage blades
US20100183033A1 (en) 2009-01-20 2010-07-22 Nokia Corporation Method and apparatus for encapsulation of scalable media
US8498349B2 (en) 2009-03-11 2013-07-30 Texas Instruments Incorporated Demodulation and decoding for frequency modulation (FM) receivers with radio data system (RDS) or radio broadcast data system (RBDS)
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8869150B2 (en) * 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture
US8264903B1 (en) 2009-05-05 2012-09-11 Netlist, Inc. Systems and methods for refreshing a memory module
US8489837B1 (en) 2009-06-12 2013-07-16 Netlist, Inc. Systems and methods for handshaking with a memory module
US8892783B2 (en) * 2009-06-22 2014-11-18 Citrix Systems, Inc. Systems and methods for initialization and link management of NICS in a multi-core environment
US8205057B2 (en) * 2009-06-30 2012-06-19 Texas Instruments Incorporated Method and system for integrated pipeline write hazard handling using memory attributes
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US9535849B2 (en) 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8085801B2 (en) * 2009-08-08 2011-12-27 Hewlett-Packard Development Company, L.P. Resource arbitration
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8479216B2 (en) * 2009-08-18 2013-07-02 International Business Machines Corporation Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node
US8848513B2 (en) 2009-09-02 2014-09-30 Qualcomm Incorporated Seamless overlay connectivity using multi-homed overlay neighborhoods
US8972627B2 (en) * 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US9876735B2 (en) * 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US20110083175A1 (en) * 2009-10-06 2011-04-07 Sonus Networks, Inc. Methods and Apparatuses for Policing and Prioritizing of Data Services
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
JP5630443B2 (ja) * 2009-12-08 2014-11-26 日本電気株式会社 帯域制御装置、帯域制御方法、及び無線ネットワークシステム
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US9390035B2 (en) 2009-12-21 2016-07-12 Sanmina-Sci Corporation Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures
US8743877B2 (en) * 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8473695B2 (en) * 2011-03-31 2013-06-25 Mosys, Inc. Memory system including variable write command scheduling
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US20110208900A1 (en) * 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
EP2363812B1 (en) 2010-03-04 2018-02-28 Karlsruher Institut für Technologie Reconfigurable processor architecture
CN102906696A (zh) 2010-03-26 2013-01-30 维尔图尔梅特里克斯公司 计算机系统的细粒性能资源管理
CN101794271B (zh) 2010-03-31 2012-05-23 华为技术有限公司 多核内存一致性的实现方法和装置
JP5336423B2 (ja) * 2010-05-14 2013-11-06 パナソニック株式会社 計算機システム
US8824492B2 (en) 2010-05-28 2014-09-02 Drc Computer Corporation Accelerator system for remote data storage
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US10803066B2 (en) 2010-06-29 2020-10-13 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators
US9118591B2 (en) 2010-07-30 2015-08-25 Broadcom Corporation Distributed switch domain of heterogeneous components
JP5636109B2 (ja) * 2010-08-23 2014-12-03 エンパイア テクノロジー ディベロップメント エルエルシー コンテキスト切り替え
TW201214082A (en) * 2010-09-17 2012-04-01 Hon Hai Prec Ind Co Ltd Mother board
CN103229155B (zh) 2010-09-24 2016-11-09 德克萨斯存储系统股份有限公司 高速内存系统
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8483046B2 (en) 2010-09-29 2013-07-09 International Business Machines Corporation Virtual switch interconnect for hybrid enterprise servers
US8405668B2 (en) * 2010-11-19 2013-03-26 Apple Inc. Streaming translation in display pipe
US8996644B2 (en) * 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US20120239874A1 (en) 2011-03-02 2012-09-20 Netlist, Inc. Method and system for resolving interoperability of multiple types of dual in-line memory modules
US8885334B1 (en) * 2011-03-10 2014-11-11 Xilinx, Inc. Computing system with network attached processors
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8825900B1 (en) * 2011-04-05 2014-09-02 Nicira, Inc. Method and apparatus for stateless transport layer tunneling
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US20140032795A1 (en) 2011-04-13 2014-01-30 Hewlett-Packard Development Company, L.P. Input/output processing
US8442056B2 (en) 2011-06-28 2013-05-14 Marvell International Ltd. Scheduling packets in a packet-processing pipeline
US8547825B2 (en) * 2011-07-07 2013-10-01 International Business Machines Corporation Switch fabric management
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
RU2014106859A (ru) 2011-07-25 2015-08-27 Серверджи, Инк. Способ и система для построения маломощной компьютерной системы
JP6074776B2 (ja) * 2011-08-10 2017-02-08 マーベル ワールド トレード リミテッド イーサネット(登録商標)ネットワーク用のセキュリティ検出を備えたインテリジェントphy
US8767463B2 (en) 2011-08-11 2014-07-01 Smart Modular Technologies, Inc. Non-volatile dynamic random access memory system with non-delay-lock-loop mechanism and method of operation thereof
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US9223618B2 (en) * 2011-09-20 2015-12-29 Intel Corporation Multi-threaded queuing system for pattern matching
US9094333B1 (en) * 2011-10-26 2015-07-28 Qlogic, Corporation Systems and methods for sending and receiving information via a network device
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9424188B2 (en) 2011-11-23 2016-08-23 Smart Modular Technologies, Inc. Non-volatile memory packaging system with caching and method of operation thereof
WO2013079988A1 (en) * 2011-11-28 2013-06-06 Freescale Semiconductor, Inc. Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
EP2798804A4 (en) * 2011-12-26 2015-09-23 Intel Corp COMMUNICATION BETWEEN COPROCESSORS WITH DIRECT CONNECTION SYNCHRONIZATION
WO2013101123A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Recovering from errors using implicit redundancy
US9542437B2 (en) 2012-01-06 2017-01-10 Sap Se Layout-driven data selection and reporting
US8918634B2 (en) 2012-02-21 2014-12-23 International Business Machines Corporation Network node with network-attached stateless security offload device employing out-of-band processing
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
WO2013128494A1 (en) 2012-03-02 2013-09-06 Hitachi, Ltd. Storage system and data transfer control method
US20130254457A1 (en) * 2012-03-21 2013-09-26 Lsi Corporation Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory
US9513845B2 (en) 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US10019371B2 (en) 2012-04-27 2018-07-10 Hewlett Packard Enterprise Development Lp Data caching using local and remote memory
WO2013177316A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Efficient packet handling, redirection, and inspection using offload processors
US20130318280A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
WO2013180691A1 (en) * 2012-05-29 2013-12-05 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US20130347103A1 (en) * 2012-06-21 2013-12-26 Mark Veteikis Packet capture for error tracking
US20140089609A1 (en) * 2012-09-26 2014-03-27 Advanced Micro Devices, Inc. Interposer having embedded memory controller circuitry
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9268716B2 (en) * 2012-10-19 2016-02-23 Yahoo! Inc. Writing data from hadoop to off grid storage
US20140157287A1 (en) * 2012-11-30 2014-06-05 Advanced Micro Devices, Inc Optimized Context Switching for Long-Running Processes
JP6188093B2 (ja) * 2012-12-26 2017-08-30 リアルテック シンガポール プライベート リミテッド 通信トラフィック処理アーキテクチャおよび方法
US10031820B2 (en) 2013-01-17 2018-07-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Mirroring high performance and high availablity applications across server computers
US20140201416A1 (en) 2013-01-17 2014-07-17 Xockets IP, LLC Offload processor modules for connection to system memory, and corresponding methods and systems
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190103379A (ko) * 2017-01-26 2019-09-04 위스콘신 얼럼나이 리서어치 화운데이션 재구성 가능한 특정 용도 컴퓨터 가속기

Also Published As

Publication number Publication date
US20140201409A1 (en) 2014-07-17
US20140198803A1 (en) 2014-07-17
US9250954B2 (en) 2016-02-02
EP2946296A4 (en) 2016-11-16
EP2946528A4 (en) 2016-08-24
WO2014113062A3 (en) 2015-06-25
EP2946298A4 (en) 2016-11-16
US20140201402A1 (en) 2014-07-17
US20140201310A1 (en) 2014-07-17
US9436640B1 (en) 2016-09-06
EP2946298A1 (en) 2015-11-25
US9460031B1 (en) 2016-10-04
US20140201461A1 (en) 2014-07-17
JP2016503933A (ja) 2016-02-08
WO2014113063A1 (en) 2014-07-24
JP2016503934A (ja) 2016-02-08
US9348638B2 (en) 2016-05-24
US20140201309A1 (en) 2014-07-17
WO2014113061A2 (en) 2014-07-24
WO2014113055A1 (en) 2014-07-24
US20170237703A1 (en) 2017-08-17
WO2014113062A2 (en) 2014-07-24
WO2014113056A1 (en) 2014-07-24
US9436638B1 (en) 2016-09-06
US20140201453A1 (en) 2014-07-17
US20140198653A1 (en) 2014-07-17
WO2014113059A1 (en) 2014-07-24
CN105874441A (zh) 2016-08-17
EP2946528A2 (en) 2015-11-25
WO2014113061A3 (en) 2015-06-18
US20140201408A1 (en) 2014-07-17
CN105765910A (zh) 2016-07-13
US10649924B2 (en) 2020-05-12
US20140201304A1 (en) 2014-07-17
US9288101B1 (en) 2016-03-15
KR20160040439A (ko) 2016-04-14
US20140201404A1 (en) 2014-07-17
US20140198652A1 (en) 2014-07-17
US20140201761A1 (en) 2014-07-17
US9436639B1 (en) 2016-09-06
US20140201303A1 (en) 2014-07-17
US20140201417A1 (en) 2014-07-17
US20140201416A1 (en) 2014-07-17
US20140201305A1 (en) 2014-07-17
KR20160037828A (ko) 2016-04-06
US20140198799A1 (en) 2014-07-17
EP2946296A1 (en) 2015-11-25
US20140201390A1 (en) 2014-07-17

Similar Documents

Publication Publication Date Title
US9348638B2 (en) Offload processor modules for connection to system memory, and corresponding methods and systems
US10212092B2 (en) Architectures and methods for processing data in parallel using offload processing modules insertable into servers
US9378161B1 (en) Full bandwidth packet handling with server systems including offload processors
US11580041B2 (en) Enabling use of non-volatile media—express (NVME) over a network
WO2016196766A2 (en) Enabling use of non-volatile media - express (nvme) over a network
US11921658B2 (en) Enabling use of non-volatile media-express (NVMe) over a network

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid