CN105874441A - 利用卸载处理器的上下文切换 - Google Patents
利用卸载处理器的上下文切换 Download PDFInfo
- Publication number
- CN105874441A CN105874441A CN201380074213.2A CN201380074213A CN105874441A CN 105874441 A CN105874441 A CN 105874441A CN 201380074213 A CN201380074213 A CN 201380074213A CN 105874441 A CN105874441 A CN 105874441A
- Authority
- CN
- China
- Prior art keywords
- processor
- session
- borne processor
- cache
- unloading
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000012546 transfer Methods 0.000 claims abstract description 25
- 238000000034 method Methods 0.000 claims description 175
- 230000008569 process Effects 0.000 claims description 135
- 238000003860 storage Methods 0.000 claims description 70
- 238000012545 processing Methods 0.000 claims description 37
- 239000000872 buffer Substances 0.000 claims description 29
- 230000003111 delayed effect Effects 0.000 claims 1
- 238000000151 deposition Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 30
- 238000004040 coloring Methods 0.000 description 14
- 238000009826 distribution Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 239000000758 substrate Substances 0.000 description 6
- 239000000203 mixture Substances 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005520 cutting process Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000032258 transport Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 238000003892 spreading Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 206010027476 Metastases Diseases 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011157 data evaluation Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000009401 metastasis Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/285—Halt processor DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2592—Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/686—Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/40—Constructional details, e.g. power supply, mechanical construction or backplane
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Bus Control (AREA)
Abstract
公开了上下文切换高速缓存系统,其可包括:多个卸载处理器,它们被连接到存储器总线,每一个卸载处理器具有带有相关联的高速缓存状态的高速缓存;上下文存储器,其被耦合到卸载处理器;以及调度电路,其配置为用于在卸载处理器中的至少一个卸载处理器与上下文存储器之间引导高速缓存状态的转移。
Description
技术领域
所述实施例涉及计算机系统的确定性的上下文切换,该计算机系统包括具有卸载处理器的连接存储器总线的模块。
背景技术
上下文切换(有时称为进程切换或任务切换)是将处理器从对一个进程或线程的执行切换到对另一进程或线程的执行。在上下文切换期间,将进程的状态(上下文)存储在存储器中,使得稍后可从该相同点恢复执行。这使得多个进程能够共享单个处理器并支持多任务操作系统。通常,进程是可并行地运行并可与其父进程共享地址空间(即,存储器位置的范围)和其他资源的程序的执行或运行实例。上下文一般包括在指定时刻的处理器的寄存器和程序计数器的内容。操作系统可挂起第一进程的执行并将该进程的上下文存储在存储器中,而随后从存储器检索第二进程的上下文并在该处理器的寄存器中还原它。在终止或挂起第二进程之后,可重新加载第一进程的上下文,从而恢复第一进程的执行。
然而,上下文切换是计算密集型的。上下文切换可能需要可观的处理器时间,对于每秒数千次上下文切换中的每一次,其可能是纳秒级的。由于现代处理器能处理数百或数千个单独的进程,因此,专用于上下文切换的时间可代表系统在处理器时间方面的实质成本。改进的上下文切换方法和系统可大大地改善总系统性能,并降低对服务器或其他数据处理系统的硬件和功率要求。
发明内容
本公开描述了适用于系统中处理器的上下文切换的系统、硬件和方法的诸实施例。诸实施例可包括多个卸载处理器,每一个卸载处理器都连接到存储器总线,并且相应的卸载处理器各自具有带有相关联的高速缓存状态的相关联的高速缓存。可通过存储器总线将低等待时间存储器连接到多个卸载处理器;并且调度电路可用于引导将高速缓存状态从相应卸载处理器中的至少一个卸载处理器存储到低等待时间存储器中,以及用于稍后在存储器总线上引导将该高速缓存状态转移到相应卸载处理器中的至少一个卸载处理器。在某些实施例(包括与使用ARM架构处理器相关联的那些实施例)中,多个卸载处理器可具有用于以提高的速度来访问高速缓存状态的加速器一致性端口。在其他实施例中,常用模块可支持卸载处理器、低等待时间存储器和调度电路,并且通过经存储器插槽(socket)调解的连接来提供对外部网络分组的访问,经存储器插槽调解的连接包括但不限于双列直插存储器模块(DIMM)插槽。
在一些实施例中,相关联的高速缓存状态包括以下中的至少一项:被保存在寄存器保存区中的处理器寄存器的状态、正在被执行的流水线中的指令、栈指针和程序计数器、等待由会话执行的预取指令和数据、以及被写入到高速缓存中的数据。该系统还可包括在多个卸载处理器中的至少一个卸载处理器上运行的操作系统(OS)。OS与调度电路可协作以建立在高速缓存中物理上连续的会话上下文。在会话初始化后,可将会话颜色、尺寸和起始物理地址传递到调度器电路,并且存储器分配器用来确定每一个会话的起始地址、高速缓存中可允许的会话的数量以及对于给定颜色的可发现会话的位置的数量。
根据实施例,可将由多个卸载处理器中的一个卸载处理器存储的高速缓存状态转移到另一卸载处理器。在特定应用中,这可允许调度电路通过以下操作对在存储器总线上接收到的第一队列中的网络分组的处理排定优先级:停止与多个卸载处理器中的一个卸载处理器相关联的第一会话;存储相关联的高速缓存状态;以及发起对被保持在第二队列中的网络分组的处理。
实施例还可包括用于多个卸载处理器的上下文切换的方法,每一个卸载处理器具有带有相关联的高速缓存状态的相关联的高速缓存,并且使用低等待时间存储器,该低等待时间存储器通过存储器总线被连接到多个卸载处理器。该方法包括:使用调度电路,经由从相应的卸载处理器中的至少一个卸载处理器进入低等待时间存储器中的批量读取来引导高速缓存状态的存储,并且任何虚拟和物理存储器位置被对齐。随后,在该存储器总线上,引导将该高速缓存状态转移到相应的卸载处理器中的至少一个卸载处理器以进行处理,该转移受调度电路的控制。至于先前所述的结构实施例,常用模块可支持卸载处理器、低等待时间存储器和调度电路,并且通过DIMM或其他存储器插槽连接来提供对外部网络分组的访问。
附图说明
图1-0示出根据实施例的具有上下文切换的系统。
图1-1是示出在不具有着色(coloring)的物理索引的高速缓存中的页面冲突的图。
图1-2示出虚拟索引的高速缓存。
图1-3示出根据实施例的虚拟/物理对齐的高速缓存。
图2-0到2-3示出根据各实施例的处理器模块。
图2-4示出常规的双列直插(dual-in-line)存储器模块。
图2-5描述根据另一实施例的系统。
图3示出根据一个实施例的具有存储器总线连接的卸载处理器模块的系统,该模块具有上下文切换能力。
图4是示出根据一个特定实施例的上下文切换操作的流程图。
具体实施方式
现在将参照多个附图详细描述各实施例。实施例示出用于在被连接到系统存储器总线的卸载处理器中切换上下文的模块、系统和方法。此类卸载处理器可增加到被连接到系统存储器总线的任何主机处理器,并且可独立于任何主机处理器对在系统存储器总线上被转移的数据进行操作。在特定实施例中,卸载处理器可具有对低等待时间存储器的访问权,该低等待时间存储器可允许对上下文数据的迅速的存储和检索以进行迅速的上下文切换。在非常特定的实施例中,处理模块可填充用于将直插式(in-line)存储器模块(例如,双列直插存储器模块(DIMM))连接到系统存储器总线的物理插槽。
图1-0示出根据一个实施例的系统100。系统100可包括一个或多个卸载处理器118、调度器116和上下文存储器120。卸载处理器118可包括协同高速缓存存储器一起操作的一个或多个处理器核。在上下文切换操作中,可将卸载处理器118的第一处理任务的上下文存储在上下文存储器120中,并且卸载处理器118随后可进行新处理任务。随后,可将所存储的上下文从上下文存储器120还原到卸载处理器118,并且卸载处理器118可恢复该第一处理任务。在特定实施例中,上下文数据的存储与还原可包括在卸载处理器118的高速缓存与上下文存储器120之间的数据转移。
调度器116可基于接收到的处理请求来协调卸载处理器118的上下文切换。相应地,调度器116可被通知或可访问卸载处理器118的状态以及该卸载处理器118的上下文数据的位置。上下文数据位置可包括处理器高速缓存中的位置以及上下文存储器120中的位置。调度器116也可跟踪卸载处理器118的状态,或可用卸载处理器118的状态来更新调度器116。
从上文中可理解,上下文存储器120可存储卸载处理器118的上下文数据供后续的检索。上下文存储器120可与卸载处理器的高速缓存存储器分开。在一些实施例中,上下文存储器120相比系统中的其他存储器可以是低等待时间存储器,以便允许迅速的上下文存储和检索。在一些实施例中,上下文存储器120可存储除上下文数据之外的数据。
在所示的特定实施例中,卸载处理器118、调度器116和上下文存储器120可以是被连接到存储器总线124的模块122的部分。可在存储器总线124上接收数据和处理任务,用于由卸载处理器118执行。在一些实施例中,在卸载处理器118与上下文存储器120之间的上下文数据的转移可发生在存储器总线124上。然而,在其他实施例中,此类转移可发生在模块122上的不同的数据路径上。
仍然参考图1-0,在所示的非常特定的实施例中,方法可进一步包括第二交换机114、存储器控制器112、主机处理器110、输入/输出(I/O)结构(fabric)118和第一交换机106。可将第二交换机114包括在模块122上。图1-0的特定系统100针对网络分组处理调度和通信量管理,但是可以理解,其他实施例可包括针对其他类型的处理任务的本文中所述的上下文切换操作或等效操作。
在图1-0的特定实施例中,第一交换机106可接收和/或传送来自数据源102的数据分组104。数据源102可以是分组数据的任何合适的源,包括因特网、网络云、交互或内部数据中心网、群集计算机、机柜系统、多个或单个的服务器或个人计算机等。数据可以是基于分组或交换机的,但是在特定实施例中,为了易于处理,一般将非分组数据转换或封装为分组。数据分组通常具有某些特性,包括传输协议号、源和目的地端口号,或源和目的地(网际协议)IP地址。数据分组可进一步具有有助于分组分类和管理的相关联的元数据。
交换机106可以是虚拟交换机(I/O设备)。交换机106可包括但不限于与外围组件互连(PCI)兼容的设备和/或PCI快速(PCIe)设备,它们经由PCI或PCIe总线107与主机主板连接。交换机106可包括网络接口控制器(NIC)、主机总线适配器、聚合网络适配器或交换或异步传输模式(ATM)网络接口。在一些实施例中,交换机106可采用IO虚拟化方案,诸如,用于使单网络I/O设备表现为多个设备的单根I/O虚拟化(SR-IOV)接口。SR-IOV通过提供物理控制和虚拟功能两者来许可对各种PCIe硬件功能之间的资源的单独访问。在某些实施例中,交换机106可支持开放流或类似的软件定义的联网以脱离控制平面进行抽象。第一虚拟交换机的控制平面执行诸如路由确定、目标节点标识等的功能。
交换机106能够检查网络分组,并使用其控制平面来创建用于网络分组的合适的输出端口。基于对网络分组或与这些网络分组相关联的数据流的路由计算,交换机106的转发平面可将分组转移到输出接口。可将交换机的输出接口与IO总线连接,并且在某些实施例中,交换机106可具有直接地(或经由I/O结构108间接地)将网络分组转移到存储器总线互联109的能力以供存储器读取或写入操作(直接存储器访问操作)。从功能上而言,对于某些应用,可基于控制平面功能分派网络分组用于传输到特定的存储器位置。
也可将被连接到IO结构108和存储器总线互连109的交换机106连接到主机处理器110。主机处理器110可包括能提供计算服务的一个或多个主机处理器,其包括供应代理111。供应代理111可以是在主机处理器110上运行的操作系统或用户代码的部分。供应代理111通常初始化由系统100提供的虚拟功能驱动器并与之交互。虚拟功能驱动器可负责提供其中需要直接存储器寻址(DMA)的存储器空间的虚拟地址。可将映射至物理地址的虚拟地址分配给每一个设备驱动器。可使用设备模型来创建对主机处理器110的物理设备的仿真以识别可被创建的多个虚拟功能(VF)中的每一个。可将设备模型复制多次以给予VF驱动器(与虚拟IO设备交互的驱动器)它们正在与物理设备交互的印象。例如,可使用某个设备模型来仿真VF驱动器可采取动作以连接的网络适配器。设备模型和VF驱动器能以特权模式或非特权模式运行。关于哪个设备主管/运行对应于设备模型和VF驱动器的代码可能没有限制。然而,代码可具有创建设备模型和VF驱动器的多个副本的能力以使所述I/O接口的多个副本能够被创建。在某些实施例中,操作系统还能够创建用于由VF驱动器支持的应用的所定义的物理地址空间。此外,主机操作系统可将虚拟存储器地址空间分配给应用或供应代理。供应代理111可与主机操作系统进行调解以创建虚拟地址与可用的物理地址空间的子集之间的映射。供应代理111可负责创建每一个VF驱动器并将所定义的虚拟地址空间分配给它。
也可使用存储器总线109将第二虚拟交换机114连接到存储器控制器112。第二虚拟交换机114往返于卸载处理器118接收并交换来源于存储器总线109的通信量。通信量可包括但不限于经过由卸载处理器118支持的处理的、去往由供应代理111创建并分派的虚拟设备的数据流。第二虚拟交换机的转发平面将分组从存储器总线109传输到卸载处理器118,或从卸载处理器118往回传输到存储器总线109上。对于某些应用,所描述的系统架构允许网络分组到卸载处理器118的相对直接的传递,并对主机处理器110具有最小的中断或没有中断。在基于所定义的仲裁和调度方案进行的向不同的硬件调度器的分配之前,第二虚拟交换机114能够接收分组并对它们分类。硬件调度器116接收可被分派到流会话的分组,这些流会话经调度以便在一个或多个分开的会话中进行处理。
调度器116可控制供由卸载处理器118执行的处理任务,包括对上下文的切换。在一些实施例中,可由调度器116使用在存储器总线124上接收到的数据内所包括的元数据(或从此类数据中导出的元数据)来调度/切换卸载处理器118的任务。然而,也构想了经由存储器总线接收到的命令或标记来对调度器进行的基于命令的控制。
在图1-0的特定实施例中,可采用调度器116来实现对传入分组的通信量管理。可将来自某个源的、关于某个通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且可使用会话元数据对其分类。会话元数据通常充当准则,通过该准则,可排定分组的优先级并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据重排序的会话分组发送到使用仲裁电路(未示出)而被向外仲裁到输出端口的特定的经通信量管理的队列。仲裁电路可直接将这些分组流馈送到下游分组处理/终止资源。某些实施例提供线程和队列管理的整合以便增强下游资源通过上述线程处理终止网络数据的吞吐量。
仍然参考图1-0,到达调度器116的数据也可以是等待在卸载处理器118处被终止的分组数据,或者它可以是等待被处理、修改或向外交换的分组数据。调度器116可负责基于对分组数据的检查来将传入分组隔离为对应的应用会话。调度器116可具有用于分组检查以及标识相关的分组特性的电路。在一些实施例中,调度器116可将网络栈的部分从由网络栈处理引起的开销卸载到空闲的卸载处理器118。在特定实施例中,调度器116可实施以下任何操作:TCP/传输卸载、加密/解密卸载、隔离并重新组装,从而允许卸载处理器直接对网络分组的有效载荷进行操作。
调度器116可进一步具有将属于会话的分组转换为特定的通信量管理队列的能力。调度器116可控制将多个此类会话中的每一个调度到通用OS中。跨多级(包括通用OS)的流水线保持会话(stickness of session)可由优化在这些级中的每一级处实施的操作的调度器116支持。下文中更详细地描述此类操作的特定实施例。
虽然调度器116具有任何适当的形式,但是在2010年7月20日向Dalal颁证的美国专利No.7,760,715(下文中称之为‘715专利)中示出了可全部或部分地被用作调度器的调度电路,通过引用将该美国专利结合在本文中。该‘751专利公开了考虑下游执行资源的调度电路。通过输出端口,将这些队列中的每一个队列中的会话流发送到下游网络元件。
调度器可采用仲裁电路来调解多个通信量管理输出队列对可用的输出端口的访问。可通过分组缓冲器将输出端口中的每一个连接到卸载处理器核中的一个。分组缓冲器可进一步包括头部(header)池和分组体(body)池。头部池可仅包含将由卸载处理器118处理的分组的头部。有时,如果待处理的分组的尺寸足够小,则该头部池可包含整个分组。可依赖于在卸载处理器118处实施的操作的性质来将分组转移到头部池或分组体池。对于分组处理、覆盖、分析、过滤和其他此类应用,仅将分组头部转移到卸载处理器118可能是合适的。在这种情况下,依赖于对分组头部的处理,可将分组体与分组头部缝接在一起并在出口接口上转移,或丢弃。对于需要终止分组的应用,可转移整个分组体。卸载处理器可由此接收这些分组并对它们执行适当的应用会话。
调度器116可调度卸载处理器118上的不同的会话,从而采取动作来协调此类会话,以便在上下文切换期间减少开销。调度器116可以不仅以线路速度在传出队列或会话流之间仲裁,而且还以非常高的速度在被终止的会话之间仲裁。调度器116可管理对卸载处理器118上的会话进行的排队,并且可负责在OS上调用新应用会话。调度器116可基于通信量来向OS指示针对新会话的分组是可用的。
也可向调度器116通知卸载处理器118的执行资源的状态、被运行在执行资源上的当前会话和分配给它的存储器空间、以及卸载处理器高速缓存中会话上下文的位置。调度器116可因此使用执行资源的状态来实施通信量管理和仲裁决策。
在所示实施例中,调度器116可提供操作系统上的线程管理与传入分组的通信量管理的整合。它可包括跨一系列组件(包括通信量管理队列和卸载处理器118上的处理实体)的持续通信量流。在卸载处理器118上运行的OS可将诸如处理器循环和存储器之类的执行资源分配给它当前正在处理的特定队列。该OS可进一步为那个特定队列分配线程或一组线程,使得可由通用处理元件明确地将该特定队列作为单独的实体来处理。使多个会话在通用(GP)处理资源(例如,卸载处理器资源)上运行,并且使来自特定会话流的每一个处理数据驻留在调度器116上的队列中会紧密地整合调度器116和GP处理资源。这可带来跨通信量管理和调度器116和GP处理资源的会话信息之内的持续的元素。
在一些实施例中,卸载处理器118的OS可从前一个OS修改而来以减少与在资源之间的上下文切换相关联的损失和开销。这可进一步由硬件调度器来开发以实施在队列之间的无缝切换,并因此由执行资源将它们作为不同的会话来执行。
根据特定实施例,调度器116可实现对传入分组的通信量管理。将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且使用会话元数据来对它们分类。会话元数据可充当准则,通过该准则来排定分组的优先级,并由此基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据而被重排序的会话分组发送到使用仲裁电路而被向外仲裁到输出端口的特定的经通信量管理的队列。仲裁电路可直接将这些分组流馈送到下游分组处理和/或终止资源(例如,卸载处理器)。某些实施例提供线程和队列管理的整合以便增强下游资源通过上述线程处理终止网络数据的吞吐量。
除了实施对传入网络分组(和流)的通信量管理、仲裁和调度之外,调度器116还负责启用OS卸载处理器118上的被终止会话之间的最小开销的上下文切换。在卸载处理器118的诸会话上的多个会话之间进行切换能使得以非常高的速度终止多个会话成为可能。在所示实施例中,通过上下文模块120的操作,迅速的上下文切换可能发生。在特定实施例中,上下文存储器120可在系统100中提供高效、低等待时间的上下文服务。
在所示的特定实施例中,可通过第二交换机114的操作将分组转移到调度器116。调度器116可对在卸载服务器118上在会话与新会话之间切换以及发起将上下文保存在上下文存储器120中两者负责。会话的上下文可包括但不限于:被保存在寄存器保存区中的处理器寄存器的状态、正在被执行的流水线中的指令、栈指针和程序计数器、正等待由会话执行的预取出的指令和数据、新近被写入到高速缓存中的数据以及可标识在卸载处理器118上执行的会话的任何其他相关信息。在特定实施例中,可使用会话id、高数缓存中的会话索引以及起始物理地址来标识会话上下文。
如将参照图1-3更详细地描述的那样,可使用转换方案,使得虚拟存储器中连续的会话页面在卸载处理器118的高速缓存中在物理上是连续的。高速缓存中的会话的该连续性质可允许会话上下文的批量读取进入上下文存储器中存储的‘上下文快照’,当操作系统(OS)将处理器资源往回切换到会话时,可从该‘上下文快照’处检索会话上下文。从上下文存储器120(其可以是低等待时间存储器,并因此比系统的主存储器快数个数量级)中无缝地取出会话上下文的能力可用于有效地扩展卸载处理器118的L2高速缓存的尺寸。
在一些实施例中,系统100的OS可在其输入输出存储器管理单元(IOMMU)(未示出)中实现优化以允许转换后备缓冲器(TLB)(或等效的查找结构)明显地标识每个会话的内容。此类安排可允许在会话切换出(switch out)并转移到在TLB外部的页表高速缓存期间来明显地标识地址转换。页表高速缓存的使用可允许对TLB尺寸的扩展。同样,考虑到虚拟存储器中的连续位置在物理存储器中以及物理索引的高速缓存中处于连续的位置处的事实,显著地减少了标识会话所需的地址转换的数量。
在图1-0的特定实施例中,系统100可非常适于提供会话和分组终止服务。在一些实施例中,可由调度器116执行对网络栈处理的控制。因此,调度器116可充当通信量管理队列、仲裁电路和网络栈卸载设备。调度器116可代表卸载处理器118来负责处理整个会话和流管理。在此类安排中,可用涉及直接进入缓冲器的会话的分组来馈送卸载处理器118,卸载处理器118可从该缓冲器提取分组数据供使用。可优化对网络栈的处理以避免切换到内核模式来处理网络生成的中断(并且执行中断服务例程)。按此方法,可将系统100优化为无缝地并且伴随尽可能少的开销来实施会话的上下文切换。
仍然参考图1-0,如将理解的那样,可在所述的系统100中使用诸如PCI、光纤信道之类的多种类型的常规输入/输出总线。总线架构也可基于相关的JEDEC标准,基于DIMM数据传输协议,基于超传输或任何其他高速度、低等待时间互连系统。卸载处理器118可包括:DDR DRAM、RLDRAM、嵌入式DRAM、诸如混合存储器立方(HMC)之类的下一代栈式存储器、闪存、或其他合适的存储器、分离逻辑或总线管理芯片、诸如现场可编程门阵列(FPGA)之类的可编程单元、自定义设计的专用集成电路(ASIC)以及基于ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ARM或RISC架构的处理器之类的高能效通用处理器。主机处理器110可以是通用处理器,包括基于英特尔或AMD x86架构、英特尔安腾架构、MIPS架构、SPARC架构等的处理器。
如还将理解的那样,可在运行于多个处理核上的多个线程上实现执行像图1-0的系统所执行处理那样的处理的常规系统。进入多个线程上下文的任务的此类并行化可提供增加的吞吐量。诸如MIPS之类的处理器架构可包括用于改善每个循环的指令数量的深指令流水线。此外,运行多线程编程环境的能力导致对现有处理器资源的增强的使用。为了进一步增加硬件上的并行执行,处理器架构可包括多个处理器核。包括相同类型核的多核架构(被称为同构核架构)通过使线程或进程跨多个核并行来提供更高的指令吞吐量。然而,在此类同构核架构中,诸如存储器之类的共享资源在少量的处理器上分摊。在另一些实施例中,多个卸载处理器或主机处理器可驻留在被连接到单独的机架(rack)单元或刀片(blade)的模块上,该单独的机架单元或刀片转而驻留在机架或单独的服务器上。可进一步将这些编组为群集或数据中心,这些群集或数据中心在空间上可位于相同的建筑物中、位于相同的城市中或甚至位于不同的国家中。可将任何编组等级彼此连接和/或连接到公共的或私有的云互联网。
按此类常规方式,存储器和I/O访问可能导致大量的处理器开销。此外,如本文中所指出的那样,常规的通用处理单元中的上下文切换可能是计算密集型的。因此,在处理多个联网应用的联网计算资源中减少上下文切换开销以增加处理器吞吐量是所期望的。常规服务器负载可能需要复杂的传输、高存储器带宽、极端量的数据带宽(经随机访问的、并行化的和高度可用的),但经常伴随轻触(light touch)处理:HTML、视频、分组(packet)级服务、安全和分析。此外,闲置的处理器仍然消耗它们峰值功耗的大于50%。
相比之下,在诸如图1-0中所示的实施例之类的实施例或等效方案中,可在创建在多个卸载处理器118的核上的插槽抽象的背后来处理复杂传输的、数据带宽密集型、面向频繁的随机访问的“轻触”处理负载。同时,可由主机处理器110的核(例如,x86处理器核)上的插槽抽象来处理“重触”(“heavey touch”)的计算密集型负载。此类软件插槽可允许对在轻触(例如,ARM)与重触(例如,x86)处理器核之间的这些负载进行的自然分区。通过对新的应用层级插槽的使用,根据诸实施例,可以跨卸载处理器118和主机处理器110来分解服务器负载。
为了更好地理解本文所公开的诸实施例的操作,参照图1-1和图1-2描述常规的高速缓存方案。实现虚拟存储器的现代操作系统负责为进程分配虚拟和物理存储器两者,从而导致当进程执行并访问虚拟寻址的存储器时发生的虚拟向物理转换。在对用于进程的存储器进行的管理中,在虚拟地址范围与将由虚拟地址映射的对应的物理地址的分配之间通常没有协调。这样的缺乏协调可能在进程正在执行时影响处理器高速缓存开销和有效性两者。
在常规系统中,处理器为正在执行的每一个进程分配在虚拟存储器中连续的存储器页面。处理器也在物理存储器分配页面,这些页面不一定是连续的。在两种寻址方案之间建立转换方案以确保虚拟存储器的抽象由物理存储器页面正确地支持。处理器可采用接近该处理器驻留的高速缓存块来满足即刻的数据处理需求。可在层次结构(hierarchy)中安排常规高速缓存。第一级(L1)高速缓存最接近处理器,随后是L2、L3等。L2充当L1的后备,以此类推。对于由进程的物理地址的部分进行索引的高速缓存,对于超出存储器管理单元(MMU)页面的尺寸的地址范围,缺乏虚拟和物理地址的分配之间的相互关系导致处理器高速缓存中的偶然性与低效率效应。这在上下文切换操作期间增加了高速缓存开销并引入了延迟。
在物理寻址的高速缓存中,针对虚拟存储器中下一页面的高速缓存条目可能无法对应于高速缓存中的下一个连续的页面——进而使可实现的总体性能降级。例如,在图1-1中,虚拟存储器130中连续的页面(进程1的页面1和2)在高速缓存中冲突,因为物理存储器132中它们的物理地址索引到(处理器的)物理索引的高速缓存134的相同位置。也就是说,处理器高速缓存(即,134)是物理索引的,并且物理存储器132中的页面的地址索引到处理器高速缓存中的相同页面。此外,当考虑多个进程访问共享高速缓存的效应时,当OS将物理存储器分配给进程时,通常缺乏对总体高速缓存性能的考虑。这种考虑的缺乏导致不同的进程跨上下文切换的高速缓存颠簸(thrashing)(例如,图1-1中的进程1和进程2),这可能不必要地置换(displace)彼此的行,这可能导致在恢复进程后未定数量的高速缓存未命中/填充,或导致跨上下文切换的增加数量的行写回。
如参照图1-2所描述的那样,在其他常规安排中,处理器高速缓存可替代地通过进程的虚拟地址进行索引。通过使用处理器的虚拟地址的位的区段来访问虚拟索引的高速缓存。如图1-2中所看到的那样,在虚拟存储器130中连续的页面在虚拟索引的高速缓存136中将是连续的。只要处理器高速缓存是虚拟索引的,就不需要对将物理存储器132的分配与虚拟地址的分配进行协调加以关注。当程序扫过虚拟地址范围时,它们将享有在处理器高速缓存中的空间局部性的益处。此类组相联(set-associative)高速缓存具有对应于索引的若干条目。映射到给定的高速缓存索引上的给定页面可以在该特定组中的任何地方。考虑到存在可用于高速缓存条目的若干位置,凭借组关联高速缓存,导致跨上下文切换的高速缓存颠簸的问题(即,如图1-1中所示)在某种程度上被缓和,因为处理器可承担在尽可能长的跨度上将使用过的条目保持在高速缓存中。为此,高速缓存采用最近最少使用(least recently used)的算法。这导致缓和了与由操作系统遵循的虚拟寻址方案相关联的问题中的一些问题,但是对高速缓存的尺寸施加了约束。结果,可能需要较大的多路相联(multi-way associative)高速缓存来确保不使新近使用过的条目失效/被清除掉。用于多路组相联高速缓存的比较器电路要适于并行比较可能是复杂的,这增加了与高速缓存相关联的电路级复杂性。
已由一些常规操作系统使用被称为“页面着色”(“page coloring”)的高速缓存控制方案来应对因虚拟寻址方案而导致的高速缓存未命中的问题。如果处理器高速缓存是物理索引的,则将约束操作系统以寻找将不索引到相同颜色的高速缓存中的位置的物理存储器位置。在此类高速缓存控制方案下,对于每一个虚拟地址,操作系统将不得不评估基于索引所允许的物理存储器中的那些页面,那些页面在物理索引的高速缓存中散列到该索引。当导出的索引可能是相同的颜色时,不允许若干物理地址。因此,对于物理索引的高速缓存,将对虚拟存储器中的每一个页面着色以标识其对应的高速缓存位置,并确定是否将下一页面分配到物理存储器,并由此到相同颜色的高速缓存位置。将对每一个页面重复该过程,这可能是繁琐的操作。虽然它改善了高速缓存效率,但是页面着色增加了存储器管理和转换单元上的开销,因为将不得不标识每一个页面的颜色来防止新近使用过的页面被覆写。操作系统的复杂度相应地增加,因为它需要在高速缓存中维持前一个虚拟存储器页面的颜色的指示符。
虚拟索引的高速缓存的问题在于,尽管存在高速缓存访问等待时间较高的事实,但是存在别名使用(aliasing)的普遍问题。在别名使用的情况下,映射到物理存储器中的相同页面的(具有不同索引)的多个虚拟地址(由于这些不同的索引)位于高速缓存中的不同位置处。页面着色允许虚拟页面和物理页面具有相同的颜色,并因此在高速缓存中占据相同的组。页面着色使别名(alias)共享相同的超集(superset)位以及到高速缓存中的相同行的索引。这去除了别名使用的问题。页面着色也对存储器分配施加了约束。当在页面错误时分配新的物理页面时,存储器管理算法必须从空闲列表中选择具有与虚拟颜色相同颜色的页面。由于系统有系统地分配虚拟空间,因此不同程序的页面趋于具有相同的颜色,并且一些物理颜色由此比其他物理颜色更频繁。因此,页面着色可影响页面错误率。此外,一些物理颜色占主导可能在利用物理地址来访问的第二级高速缓存中的程序之间创造映射冲突。因此,处理器面临关于上述常规页面着色方案的非常大的问题。虚拟页面中的每一个页面可能正在占据物理存储器中的不同页面,使得它们占据不同的高速缓存颜色,但是处理器将需要存储每个以及每一个页面的地址转换。考虑到进程可能是足够大的,并且每一个进程将包括若干虚拟页面,因此页面着色算法可能变得非常复杂。这还将在TLB端处使其复杂,因为它将需要为处理器的虚拟存储器的每一个页面标识等效的物理地址。由于上下文切换趋于使TLB条目失效,因此处理器将需要实施页面移动(walk)并填充TLB条目,并且这将进一步将非确定性和等待时间添加到例程上下文切换。
按此方法,在通常可用的常规操作系统中,当恢复进程/线程时,上下文切换导致高速缓存中的冲突以及TLB未命中。当进程/线程恢复时,随着线程的工作集被往回重新加载到高速缓存中(即,随着线程在用户空间中恢复并执行指令,这些指令连同应用数据一起通常将不得不被加载到高速缓存中),存在未定数量的指令和数据高速缓存未命中。在切换入(switch-in)(即,进程/线程的恢复)时,凭借新线程的页表的基址被写入到为此目的所预留的寄存器中,可完全或部分地使TLB映射无效。当线程执行时,TLB未命中将(通过硬件或软件)导致页表移动,其导致TLB填充。这些TLB未命中之中的每一个具有其自身的硬件成本,包括因异常而导致的流水线停止(例如,当执行页表移动时由存储器访问造成的开销,以及如果页表不在高速缓存中时相关联的高速缓存未命中/存储器负载)。这些成本依赖于进程的相继运行之间在处理器中发生了什么,并且因此不是固定成本。此外,这些额外的等待时间增加了上下文切换的成本并减损了进程的有效执行。如将领会的那样,此类的上述高速缓存控制方法相对于处理时间、存储器要求或其他操作系统控制的资源是非确定的,从而减小了操作系统的总体效率。
图1-3示出根据实施例的高速缓存控制系统。在该高速缓存控制系统中,会话内容在物理索引的高速缓存134’中可以是连续的。所述实施例可使用转换方案,使得虚拟存储器130中连续的会话页面在物理索引的高速缓存134中是物理上连续的。相比于上述非确定的高速缓存控制方案,至少上下文切换操作的持续时间可以是确定的。在所述实施例中,由新进程的上下文替换前一进程的上下文涉及从诸如由图1-0的上下文存储器120提供的存储器之类的外部低等待时间存储器转移新进程上下文。在上下文切换的过程中,可避免对系统的主存储器的访问(在那里,此类访问可能是延迟密集型的)。从上下文存储器120(其可以是低等待时间存储器)预取出进程上下文。如果需要另一次上下文切换,则可再次将进程上下文保存到上下文存储器120。按此方法,实现了确定的上下文切换,因为可依据需要被实施的循环和操作的数量来定义上下文切换操作。此外,使用低等待时间存储器来存储上下文数据可提供迅速的上下文切换。
图2-0到2-5描述了可包括本文中所描述的上下文切换的模块的硬件实施例的诸方面。在特定实施例中,此类处理模块可包括DIMM可装载模块。
图2-0是根据一个实施例的处理模块200的框图。处理模块200可包括物理连接器202、存储器接口204、仲裁器逻辑206、卸载处理器208、本地存储器210和控制逻辑212。连接器202可提供到系统存储器总线的物理连接。这与可经由存储器控制器等访问系统存储器总线的主机处理器形成对比。在非常特定的实施例中,连接器202可兼容计算系统的双列直插存储器模块(DIMM)插槽。相应地,可用一个或多个处理模块200或处理模块与DIMM模块的混合来填充包括多个DIMM插槽的系统。
存储器接口204可检测系统存储器总线上的数据转移,并且在适当的情况下,可允许将写入数据存储在处理模块200中和/或从处理模块200读取出读取数据。此类数据转移可包括对具有特定网络标识符的分组数据的接收。在一些实施例中,存储器接口204可以是从属接口(slave interface),因此,数据转移受与处理模块200分开的主设备(master device)控制。在非常特定的实施例中,存储器接口204可以是用于调整由DMA主设备(master)发起的系统存储器总线上的DMA转移的直接存储器访问(DMA)从属设备(slave)。在一些实施例中,DMA主设备可以是与主机处理器不同的设备。在此类配置中,处理模块200可接收用于处理的数据(例如,DMA写入),并且在不消耗主机处理器资源的情况下向外转移经处理的数据(例如,DMA读取)。
仲裁器逻辑206可在处理模块200之内的冲突的数据访问之间进行仲裁。在一些实施例中,仲裁器逻辑206可在由卸载处理器208进行的访问与在处理器模块200外部的访问之间进行仲裁。应理解,处理模块200可包括同时对其进行操作的多个位置。应理解,由仲裁器逻辑206仲裁的访问可包括对由处理器模块200占据的物理系统存储器空间的访问以及对其他资源(例如,卸载处理器或主机处理器的高速缓存存储器)的访问。相应地,用于仲裁器逻辑206的仲裁规则可根据应用而变化。在一些实施例中,对于给定的处理器模块200,可固定此类仲裁规则。在此类情况下,可通过切出不同的处理模块来适应不同的应用。然而,在替代实施例中,此类仲裁规则可以是可配置的。
卸载处理器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的计算任务排序。在一些实施例中,调度器216可生成在接收到供处理的写入数据时持续地被更新的调度。在非常特定的实施例中,调度器216可基于切换卸载处理器208的上下文的能力来生成此类调度。按此方法,可在运行时(on thefly)调整模块上计算优先级。在非常特定的实施例中,调度器216可根据计算任务来将物理地址空间的部分(例如,本地存储器210中的存储器位置)分派给卸载处理器208。卸载处理器208随后可在此类不同的空间之间切换,在每一次切换之前保存上下文信息,并在之后当返回到存储器空间时还原上下文信息。
切换控制器218可控制卸载处理器208的计算操作。在特定实施例中,根据调度器216,切换控制器218可对卸载处理器208排序以切换上下文。应理解,上下文切换操作可以是响应于来自切换控制器218的单个命令而执行的“原子”操作。附加地或替代地,切换控制器218可发布存储当前的上下文信息、重新调用上下文信息等的指令集。
在一些实施例中,处理器模块200可包括缓冲器存储器(未示出)。缓冲器存储器可将接收到的写入数据存储在处理器模块的板上。可在完全不同的存储器设备的集合上实现缓冲器存储器,或缓冲器存储器可以是以逻辑和/或卸载处理器嵌入的存储器。在后一种情况下,仲裁器逻辑206可仲裁对缓冲器存储器的访问。在一些实施例中,缓冲器存储器可对应于系统物理存储器空间的部分。系统存储器空间的其余部分可对应于被连接到相同的系统存储器总线的其他相似的处理器模块和/或存储器模块。在一些实施例中,缓冲器存储器可与本地存储器210不同。例如,缓冲器存储器可具有相比本地存储器210更慢的访问时间。然而,在其他实施例中,可用同样的存储器设备来实现缓冲器存储器和本地存储器。
在非常特定的实施例中,供处理的写入数据可具有所预期的最大流速率。可将处理器模块200配置为以此类流速率或以比此类流速率快的速率对此类数据进行操作。按此方法,主设备(未示出)可在没有覆写“处理中”数据的危险的情况下将数据写入到处理器模块。
可将处理器模块200的各种计算元件实现为一个或多个集成电路设备(IC)。应理解,可在相同或不同的IC中形成图2-0中所示的各种组件。例如,可将控制逻辑212、存储器接口214和/或仲裁器逻辑206实现在一个或多个逻辑IC上,而卸载处理器208和本地存储器210是分开的IC。逻辑IC可以是固定逻辑(例如,专用IC)、可编程逻辑(例如,现场可编程门阵列,FPGA)或它们的组合。
有利的是,相比传统的计算系统,上述硬件和系统可提供改善的计算性能。常规系统(包括基于x86处理器的那些系统)通常装备不足以处理此类高容量应用。即便在闲置时,x86处理器也使用显著量的功率,并且针对高带宽分组分析或其他高容量处理任务的近于连续的操作使得处理器能量成本是占主导的价格因素中的一个因素。
此外,常规系统可能具有上下文切换的高成本问题,在上下文切换中,需要主机处理器执行可包括从一个线程切换到另一线程的指令。此类切换可能需要存储并再次调用线程的上下文。如果此类上下文数据是驻留在主机高速缓存存储器中的,则此类上下文切换可相对快速地发生。然而,如果此类上下文数据不再位于高速缓存存储器中(即,高速缓存未命中),则必须从系统存储器中重新调用该数据,这可能导致多个循环的等待时间。在上下文切换期间连续的高速缓存未命中可能不利地影响系统性能。
图2-1示出根据一个非常特定的实施例的处理器模块200-1,其能够减少与关联于许多常规服务器系统的高容量处理或上下文切换相关联的问题。处理器模块200-1可包括被装载到印刷电路板(PCB)型基板222的IC220-0/1。PCB型基板222可包括直插式模块连接器202,在一个非常特定的实施例中,直插式模块连接器202可以是兼容DIMM的连接器。IC 220-1可以是集成多个功能的片上系统(SoC)型设备。在所示的非常特定的实施例中,IC 220-0可包括嵌入式处理器、逻辑和存储器。此类嵌入式处理器可以是本文中所述的卸载处理器208或其等效物。此类逻辑可以是本文中所述的控制器逻辑212、存储器接口204和/或仲裁器逻辑206中的任何一个或它们的等效物。此类存储器可以是本文中所述的本地存储器210、卸载处理器208的高速缓存处理器或缓冲器存储器中的任何一个或它们的等效物。逻辑IC 220-1可提供不被包括在IC 220-0中的逻辑功能。
图2-2示出根据另一非常特定的实施例的处理器模块200-2。处理器模块200-2可包括被装载到类似图2-1的基板那样的PCB型基板222的IC220-2、-3、-4、-5。然而,与图2-1不同,处理器模块功能被分布在单一目的型IC之间。IC 220-2可以是处理器IC,该处理器IC可以是卸载处理器208。IC 220-3可以是存储器IC,该存储器IC可包括本地存储器210、缓冲器存储器或它们的组合。IC 220-4可以是逻辑IC,该逻辑IC可包括控制逻辑212,并且在一个非常特定的实施例中可以是FPGA。IC 220-5可以是另一逻辑IC,该另一逻辑IC可包括存储器接口204和仲裁器逻辑206,并且在一个非常特定的实施例中也可以是FPGA。
应理解,图2-1/2仅表示各种实现中的两个。可在任何合适数量的IC(包括单SoC型IC)上分布处理器模块的各种功能。
图2-3示出根据非常特定的实施例的处理器模块200-1或200-2的背面。处理器模块200-3可包括多个存储器IC,一个被示出为220-6,其被装载到类似图2-1的基板那样的PCB型基板222。应理解,可将各种处理和逻辑组件装载在所示面的反面。可将存储器IC 220-6配置为表示系统的物理存储器空间的部分。存储器IC 220-6可执行以下功能中的任何一个或全部:独立于其他处理器模块组件而进行操作,从而提供以常规方式访问的系统存储器;充当缓冲器存储器,从而存储可利用其他处理器模块组件来处理的写入数据;或充当用于存储处理器上下文信息的本地存储器。
图2-4示出常规的DIMM模块(即,它仅提供存储器功能),该模块可连同本文中所述的处理器模块或它们的等效物来填充存储器总线。
图2-5示出根据一个实施例的系统230。系统230可包括经由多个可直插式模块插槽(一个被示出为226)访问的系统存储器总线228。根据实施例,可由本文中所述的处理器模块200或等效物来占据插槽226中的任何一个或全部。在处理模块200未占据所有的插槽226的情况下,可由常规的直插式存储器模块224占据可用的插槽。在非常特定的实施例中,插槽226可以是DIMM插槽。
在一些实施例中,处理器模块200可占据一个插槽。然而,在其他实施例中,处理器模块可占据多个插槽。
在一些实施例中,可进一步将系统存储器总线228与一个或多个主机处理器和/或输入/输出设备(未示出)对接。
已描述了根据各实施例的处理器模块,现在将描述根据特定实施例的能够经由存储器总线与服务器或类似系统对接的卸载处理器模块的操作。
图3示出根据实施例的可在卸载处理器中执行上下文切换的系统301。在所示示例中,系统301可将分组数据传输到位于模块上的一个或多个计算单元(一个被示出为300),在特定实施例中,这一个或多个计算单元可包括兼容现有存储器模块的连接器。在一些实施例中,计算单元300可包括本文中的实施例中所描述的处理器模块或等效物。计算单元300可能能够拦截或以其他方式访问在存储器总线316上发送的分组,并且实施对此类分组的处理,包括但不限于终止或元数据处理。系统存储器总线316可以是像本文中所描述的那些或等效物(例如,228)的系统存储器总线。
仍然参考图3,系统301可包括I/O设备302,该I/O设备302可从外部源接收分组或其他I/O数据。在一些实施例中,I/O设备302可包括由物理设备生成的、用于从网络或另一计算机或虚拟机接收分组或其他I/O数据的物理或虚拟功能。在所示非常特定的实施例中,I/O设备302可包括具有输入缓冲器302a(例如,DMA环缓冲器)和I/O虚拟化功能302b的网络接口卡(NIC)。
根据诸实施例,I/O设备302可写入描述符,该描述符包括分组的必要的存储器操作的细节(即,读取/写入、源/目的地)。可(例如,由系统301的操作系统)将虚拟存储器位置分派给此类描述符。然后,I/O设备302与输入输出存储器管理单元(IOMMU)304通信,该IOMMU 304可利用IOMMU功能304b来将虚拟地址转换为对应的物理地址。在所示的特定实施例中,可将转换后备缓冲器(TLB)304a用于此类转换。然后,可经由系统301的存储器控制器306b利用直接存储器传输(例如,DMA)来执行I/O设备与系统存储器位置之间的虚拟功能读取或写入数据。可由主机总线312将I/O设备302连接到IOMMU 304。在一个非常特定的实施例中,主机总线312可以是外围互连(PCI)型总线。可在中央处理单元I/O(CPUIO)306a处将IOMMU 304连接到主机处理部306。在所示实施例中,此类连接314可支持超传输(HT)协议。
在所示实施例中,主机处理部306可包括CPUIO 306a、存储器控制器306b、处理核306c和对应的供应代理306d。
在特定实施例中,计算单元300可经由标准直插式模块连接与系统总线316对接,在非常特定的实施例中,该连接可包括DIMM型插槽。在所示实施例中,存储器总线316可以是DDR3型存储器总线。替代实施例可包括任何合适的系统存储器总线。可由存储器控制器306b经由存储器总线316将分组数据发送到DMA从属接口310a。可使DMA从属接口310a适于通过存储器总线316接收来自DMA写入的经封装的读取/写入指令。
硬件调度器(308b/c/d/e/h)可通过根据使用会话元数据的流来对传入分组分类以执行对这些传入分组的通信量管理。可对分组排队列,以便基于会话优先级在板载(onboard)存储器(310b/308a/308m)中输出。当硬件调度器确定针对特定会话的分组准备好由卸载处理器308i来处理时,用信号通知板载存储器以便进行到该会话的上下文切换。利用该优先级排定方法,相比常规方式可减小上下文切换开销。也就是说,硬件调度器可处理上下文切换决策并由此优化下游资源(例如,卸载处理器308i)的性能。
如上所述,在非常特定的实施例中,卸载处理器308i可以是“孱弱核”型处理器。根据一些实施例,主机处理器306c可以是“强健核”型处理器(例如,x86或能够处理“重触”计算操作的任何其他处理器)。虽然将I/O设备302配置为响应于传入分组来触发主机处理器中断,但根据诸实施例,可禁用此类中断,进而减少主机处理器306c的处理开销。在一些非常特定的实施例中,卸载处理器308i可包括ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ARM或能够处理“轻触”操作的任何其他处理器。优选地,卸载处理器可运行用于执行多个会话的通用操作系统,可优化这些会话以便与硬件调度器联合来减少上下文切换开销。
仍然参考图3,在操作中,系统301可在网络接口上接收来自外部网络的分组。基于由I/O设备302采用的分类逻辑和原理,分组去往主机处理器306c或卸载处理器308i。在特定实施例中,I/O设备302可作为虚拟化NIC进行操作,可将针对特定逻辑网络或去往某个虚拟MAC(VMAC)地址的分组定向到单独的队列中,并将它们发送到目的地逻辑实体中。此类安排可将分组转移到不同的实体。在一些实施例中,每一个此类实体可具有虚拟驱动器、该实体用来与所连接的虚拟网络通信的虚拟设备模型。
根据诸实施例,可使用多个设备将通信量重定向到特定的存储器地址。因此,网络设备中的每一个就像它正在将分组转移到逻辑实体的存储器位置那样进行操作。然而,实际上,此类分组被转移到可由一个或多个卸载处理器(例如,308i)在其中处理它们的存储器地址。在特定实施例中,此类转移去往物理存储器地址,从而可从处理中去除逻辑实体,并且主机处理器可免于此类分组处理。
相应地,可将诸实施例概念化为存储器“黑箱”,可将特定的网络数据馈送给该存储器“黑箱”。此类存储器黑箱可处理数据(例如,处理它),并在此类数据被请求时往回进行响应。
仍然参考图3,根据一些实施例,I/O设备302可从网络或从计算设备接收数据分组。数据分组可具有某些特性,包括例如,传输协议号、源和目的地端口号,源和目的地IP地址。数据分组可进一步具有经处理并有助于它们的分类和管理的元数据(308d)。
I/O设备302可包括但不限于外围组件互连(PCI)和/或PCI快速(PCIe)设备,该PCI和/或PCIe设备经由PCI或PCIe总线(例如,312)与主机主板连接。I/O设备的示例包括网络接口控制器(NIC)、主机总线适配器、聚合网络适配器、ATM网络接口等。
为了提供允许多个逻辑实体访问相同的I/O设备302的抽象方案,可使I/O设备虚拟化以提供多个虚拟设备,其中的每一个虚拟设备可执行物理I/O设备的功能中的一些功能。根据实施例的I/O虚拟化程序(例如,302b)可将通信量重定向到不同的存储器位置(并由此重定向到附连到存储器总线上的模块的不同的卸载处理器)。为了实现这一点,可将I/O设备302(例如,网络卡)划分为若干功能部分;包括支持输入/输出虚拟化(IOV)架构(例如,单根IOV)的控制功能(CF)和多个虚拟功能(VF)接口。可在专用使用的运行时期间将资源提供给每一个虚拟功能接口。CF和VF的示例可包括诸如单根I/O虚拟化或多根I/O虚拟化架构之类的方案下的物理功能和虚拟功能。CF充当建立并管理虚拟资源的物理资源。CF也能够充当完全成熟的IO设备。VF负责提供对虚拟设备的抽象,以便与多个逻辑实体/多个存储器区域进行通信。
能以设备模型、VF驱动器和CF的驱动器来加载运行在主机处理器306c上的操作系统/管理程序(hypervisor)/虚拟机/用户代码中的任何一个。可使用设备模型来创建对主机处理器306c的物理设备的仿真以识别所创建的多个VF中的每一个。可将设备模型重复多次以给予VF驱动器(与虚拟IO设备交互的驱动器)它正在与特定类型的物理设备交互的印象。
例如,可使用某个设备模块来仿真诸如英特尔以太网聚合网络适配器(CNA)X540-T2之类的网络适配器,使得I/O设备302相信它正在与此类适配器交互。在此类情况下,虚拟功能中的每一个可具有支持上述CAN中的功能的能力,即,物理功能中的每一个应当能够支持此类功能。设备模型和VF驱动器能以特权模式或非特权模式运行。在一些实施例中,关于何者主管/运行对应于设备模型和VF驱动器的代码可能没有限制。然而,代码具有创建设备模型和VF驱动器的多个副本的能力,使得能够创建所述I/O接口的多个副本。
作为在内核中运行的应用/用户级代码的部分的应用或供应代理306d可在运行时期间创建针对每一个VF的虚拟I/O地址空间,并将物理地址空间的部分分配给它。例如,如果处理VF驱动器的应用指示它从存储器地址0xaaaa到0xffff读取分组或向存储器地址0xaaaa到0xffff写入分组,则设备驱动器可将I/O描述符写入到具有头指针和尾指针的描述符队列中,随着队列条目被填充,该头指针和尾指针被动态地改变。数据结构也可以是其他类型的,包括但不限于环结构302a或散列表。
VF可从该驱动器指向的地址位置读取数据或将数据写入该地址位置。此外,在完成了到被分配给驱动器的地址空间的数据转移后,可禁用中断,通常向主机处理器触发该中断以处理所述网络分组。将特定的I/O空间分配给设备可包括:将所述IO空间分配给特定的被占据的物理存储器空间。
在另一实施例中,如果描述符与用于处理传入分组的特定数据结构相关联,则该描述符可仅包括写入操作。此外,传入数据结构中的条目中的每一个条目的描述符可以是恒定的,使得将所有的数据写入重定向到特定的存储器位置。在替代实施例中,连续条目的描述符可指向存储器中的连续条目,以便将传入分组定向到连续的存储器位置。
或者,所述操作系统可为支持VF驱动器的应用创建经定义的物理地址空间,并且将虚拟存储器地址空间分配给应用或供应代理306d,从而创建针对所述虚拟地址与物理地址空间之间的每一个虚拟功能的映射。可将虚拟存储器地址空间与物理存储器空间之间的所述映射存储在IOMMU表(例如,TLB 304a)中。执行存储器读取或写入的应用可将虚拟地址提供给所述虚拟功能,并且主机处理器OS可将物理存储器位置的特定部分分配给此类应用。
或者,可将VF配置成生成诸如读取和写入之类的请求,其可以是例如直接存储器访问(DMA)读取或写入操作的部分。由IOMMU 304将虚拟地址转换为它们对应的物理地址,并且可将这些物理地址提供给存储器控制器以供访问。也就是说,IOMMU 304可修改由I/O设备发起的存储器请求以将该请求中的虚拟地址改变为物理地址,并且可将该存储器请求转发到存储器控制器供存储器访问。可在支持诸如超传输314之类的协议的总线314上转发该存储器请求。VF可在此类情况下通过将虚拟存储器地址提供给IOMMU 304来实施直接存储器访问。
或者,如果VF允许,则所述应用可直接将物理地址编码为VF描述符。如果VF不能够支持主机处理器306c所使用形式的物理地址,则可将具有由VF设备支持的硬件尺寸的孔径(aperture)编码为描述符,使得向该VF通知该设备的目标硬件地址。可由转换表将被转移到孔径的数据映射到系统存储器中经定义的物理地址空间。可由处理器执行的软件发起DMA操作,从而直接或间接地对I/O设备编程以执行DMA操作。
仍然参考图3,在特定实施例中,可利用一个或多个FPGA来实现计算单元300的诸部分。在图3的系统中,计算单元300可包括FPGA 310,可在该FPGA 310中形成DMA从属设备模块310a和仲裁器310f。DMA从属模块310a可以是适于附连到存储器总线316的任何设备,该存储器总线316可响应于DMA读取/写入请求。在替代实施例中,DMA从属模块310a可以是能够在存储器总线316上进行块数据转移的另一接口。DMA从属模块310a能够(当DMA控制器从‘存储器’或从外围设备执行读取时)从该DMA控制器接收数据或(当DMA控制器对DMA从模块310a执行写入指令时)将数据转移到该DMA控制器。可使DMA从属模块310a接收在存储器总线上经封装的(例如,按DDR数据传输形式的,诸如分组或数据突发)DMA读取和写入指令、或可在对应的存储器总线上发送的任何其他格式的DMA读取和写入指令。
DMA从属模块310a可重构来自存储器R/W分组的DMA读取/写入指令。可使DMA从属模块310a适于对向DMA主设备的数据读取/数据写入形式的这些指令做出响应,在PCIe总线的情况下,该DMA主设备可被设置在外围设备中,或者在ISA总线的情况下,该DMA主设备可以是系统DMA控制器。
然后可将由DMA设备310a接收到的I/O数据排成队列以供仲裁。仲裁可包括调度不同流的分组的过程,使得可基于多个参数来向它们提供对可用带宽的访问。一般而言,仲裁器310f将资源访问提供给一个或多个请求器。如果多个请求者请求访问,则仲裁器310f可确定哪个请求器成为访问器,并随后将数据从该访问器传递到资源接口,并且下游资源可开始对数据的执行。在已完全将数据转移到资源且该资源已完成执行之后,仲裁器310f可将控制转移到不同的请求器,并且对所有可用的请求器重复该循环。在图3的实施例中,仲裁器310f可向计算单元300的其他部分(例如,308)通知传入数据。
或者,计算单元300可利用2010年10月12日向Dalal颁证的美国专利7,813,283中所示的仲裁方案,该美国专利的内容通过引用被结合在本文中。在本文中的诸实施例中,可实现本领域中已知的其他合适的仲裁方案。或者,可使用开放流交换机和开放流控制器来实现本发明的仲裁方案。
在图3的非常特定的实施例中,计算单元300可进一步包括通知/预取电路310c,该电路310c可响应于DMA从属模块310a且经仲裁器310f仲裁来预取出存储在缓冲器存储器310b中的数据。此外,仲裁器310f可经由存储器映射的I/O入口路径310e和出口路径310g来访问计算单元300的其他部分。
参考图3,硬件调度器可包括用于实现对传入分组的通信量管理的调度电路308b/n。可将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且可使用会话元数据来对它们分类。可由分类器308e执行此类分类。
在一些实施例中,会话元数据308d可充当准则,通过该准则,可排定分组的优先级并调度分组,并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。为该优先级排定而选择的调度规则(或通信量管理(TM))可通过以下方式来影响流和微流的通信量形状:延迟(缓冲);通信量的突发(缓冲和突发);通信量的平滑(缓冲和速率限制的流);丢弃通信量(选择将丢弃的数据以避免耗尽缓冲器);延迟抖动(临时地将流的单元移位不同的量);以及通过不准许连接(例如,不能够同时保证现有的服务水平协议(SLA)和附加流的SLA)。
根据诸实施例,计算单元300可充当交换机结构的部分,并且可将深度受限的输出队列提供给通信量管理,由调度电路308b/n调度对这些输出队列的访问。使用调度规则来管理此类输出队列以提供对传入流的通信量管理。可通过输出端口将这些队列中的每一个队列中经队列排定的会话流发送到下游网络元件。
应注意,常规的通信量管理除了符合其与下游元件之间已经具有的SLA协议之外,不考虑由所述下游元件对数据的处理和管理。
相比之下,根据诸实施例,调度器电路308b/n可将优先级分配给输出队列中的每一个队列,并且实施对传入分组的重排序,以便在这些队列中维持会话流的持续性。可使用调度器电路308b/n来控制将这些持续会话中的每一个会话调度到在卸载处理器308i上被执行的通用操作系统(OS)308j中。如上文所定义的那样,特定会话流的分组可属于特定队列。调度器电路308b/n可控制对这些队列的优先级排定,使得可仲裁它们以便由位于下游的通用(GP)处理资源(例如,卸载处理器308i)处理。在下游处理器308i上运行的OS 308j可将诸如处理器循环和存储器之类的执行资源分配给它当前正在处理的特定队列。该OS 308j可进一步为那个特定队列分配线程或一组线程,使得可由通用处理元件308i明确地将该特定队列作为单独的实体来处理。可能有在GP处理资源上运行的多个会话且每一个会话处理来自驻留在由调度器电路建立的队列中的特定会话流的数据的事实紧密地整合调度器与下游资源(例如,308i)。这可导致跨通信量管理和调度电路和通用处理资源308i的会话信息的持续性。
专用计算资源(例如,308i)、存储器空间和会话中的每一个的会话上下文信息可提供在通用处理器308i处处置、处理和/或终止会话流中的每一个的方法。调度电路308b/n可利用执行资源的该功能来将会话流排成队列以便调度下游。可向调度器电路308b/n通知执行资源(例如,308i)的状态、在执行资源上被运行的当前会话、被分配给它的存储器空间、处理器高速缓存中会话上下文的位置。
根据实施例,调度器电路308b/n可进一步包括用于将执行资源从一个状态改变到另一状态的切换电路。调度器电路308b/n可使用此类能力在准备好被切换到下游执行资源中的队列之间进行仲裁。此外,可优化下游执行资源以减少与资源之间的上下文切换相关联的损失和开销。可进一步由调度器电路308b/n来利用此以实施在队列之间的无缝切换,并因此由执行资源将这些会话作为不同的会话来执行。
根据诸实施例,调度器电路308b/n可在下游处理资源上调度不同的会话,其中,协调地操作两者来减少上下文切换期间的开销。减少服务和工程计算可用性的等待时间时的重要因素可以是与网络队列排定同步的硬件上下文切换。在诸实施例中,当由通信量管理器选择队列时,流水线协调对应的资源(例如,308i)的高速缓存(例如,L2高速缓存)的换入(swapin),并且将经重新组装的I/O数据转移到执行进程的存储器空间中。在某些情况下,队列中没有分组是待定(pending)的,但是计算仍然待定以维护先前的分组。一旦该进程在经交换的数据外部进行存储器引用,调度器电路(308b/n)可使来自I/O设备302的经队列排定的数据能够继续调度线程。
在一些实施例中,为了向不具有数据的进程提供公平的队列排定,可将最大上下文尺寸假定为经处理的数据。按此方式,可将队列供应为计算资源与网络带宽资源中的较大者。仅作为一个非常特定的示例,计算资源可以是以800MHz运行的ARM A9处理器,而网络带宽可以是3Gbps的带宽。考虑到该比率的不平衡性质,诸实施例可利用具有许多并行会话(使得硬件对会话专用数据的预取出卸载主机处理器负载的大部分)且具有对数据的最少通用处理的计算。
相应地,在一些实施例中,可将调度器电路308b/n概念化为不是以线路速率速度在传出队列之间仲裁,而是以非常高的速度在被终止的会话之间仲裁。跨多级流水线(包括通用OS)保持会话可以是优化此类流水线的此类级中的任何级或所有级的调度器电路。
或者,可使用2010年7月20日向Dalal颁证的美国专利No.7,760,715中所示的调度方案,该美国专利通过引用被结合在本文中。当期望对流进行速率限制以防止专用于过度选择的流的另一资源的下游拥塞或为特定流实施服务合约时,该方案可能是有用的。实施例可包括允许下游资源(诸如,可无缝地实施的通用OS)的服务合约的仲裁方案。
仍然参考图3,根据本文中的诸实施例的硬件调度器或等效物可提供基于会话元数据来将传入分组数据分类为诸会话流。在对这些流仲裁并将在卸载处理器上将它们排定为不同处理实体的队列之前,它可进一步提供对这些流的通信量管理。
在一些实施例中,卸载处理器(例如,308i)可以是通用处理单元,该通用处理单元能够处理不同应用的分组或传输会话。此类卸载处理器可以是能够执行通用指令的低功率处理器。卸载处理器可以是任何合适的处理器,包括但不限于,ARM、ARC、泰思立达(Tensilica)、MIPS、StrongARM或提供本文中所述功能的任何其他处理器。此类卸载处理器具有在其上运行的通用OS,其中,优化该通用OS以减少与在不同的线程或线程组之间的上下文切换相关联的损失。
相比之下,主机处理器上的上下文切换可能是计算密集型进程,其需要寄存器保存区、高速缓存中的进程上下文以及如果使它们失效或覆写它们时将被恢复的TLB条目。主机处理系统中的指令高速缓存未命中可能导致流水线停止,而数据高速缓存未命中导致操作停止,并且此类高速缓存未命中降低处理器效率并增加处理器开销。
同样相比之下,在卸载处理器308i上运行的OS 308j与调度器电路308b/n结合可一起操作来减少在运行于其上的不同的处理实体之间导致的上下文切换开销。诸实施例可包括调度器电路与卸载处理器308i上的OS之间的协作机制,其中,OS建立将在高速缓存中是物理上连续的(针对会话堆和栈的物理着色的分配器)会话上下文;随后在会话初始化之后,将会话颜色、尺寸和起始物理地址传递到调度器电路。在实际的上下文切换期间,调度器电路可通过使用这些参数来标识会话上下文,并且可发起将这些内容传递到外部低等待时间存储器(例如,308g)的批量转移。此外,如果旧会话的上下文被保存在本地存储器308g中,则调度器电路可管理该旧会话的预取出。在特定实施例中,仅作为一个非常特定的实施例,本地存储器308g可以是低等待时间存储器,诸如,减少等待时间的动态随机存取存储器(RLDRAM)。因此,在诸实施例中,可明确地在高速缓存中标识会话上下文。
在一些实施例中,可限制上下文尺寸以确保快速的切换速度。附加地或替代地,诸实施例可包括用于将会话上下文向外转移到本地存储器308g的批量转移机制。随后,在往回到前一会话的上下文切换期间,可检索并预取出存储在本地存储器308g中的高速缓存内容。可在本地存储器308g中标记和/或标识不同的上下文会话数据,以便进行快速检索。如上所述,可由不同的卸载处理器重新调用由一个卸载处理器存储的上下文。
在图3的非常特定的实施例中,可将多个卸载处理核整合到计算FPGA308中。可由另一FPGA 310中的仲裁器电路来仲裁多个计算FPGA。计算FPGA(例如,308)与仲裁器FPGA(例如,310)的组合被称为“XIMM”模块或“Xocket DIMM模块”(例如,计算单元300)。在特定应用中,这些XIMM模块可提供代理在卸载处理器上的多个会话的执行的集成的通信量和线程管理电路。
图3还示出卸载处理器隧道(tunnel)连接308k,以及存储器接口308m和访问单元308l(其可以是加速器一致性端口(ACP))。存储器接口308m可访问缓冲器存储器308a。根据诸实施例,系统301可包括使用访问(或“监听”(“snooping”)单元)308l来访问卸载处理器308i的高速缓存内容。在特定实施例中,被访问的高速缓存可以是L2高速缓存。访问单元308l可提供端口或其他访问能力,其可将数据从外部的非高速缓存存储器308g加载到卸载处理器高速缓存,并将卸载处理器308i的高速缓存内容转移到非高速缓存存储器308g。作为计算元件300的部分,可能有形成存储器308g的若干存储器设备(例如,RAM)。由此,可使用存储器308g来存储会话的高速缓存内容。存储器308g可包括一个或多个低等待时间存储器,并且可被概念化为补充和/或扩充可用的L2高速缓存,并延伸会话的一致性域。附加存储器308g和访问单元308l可减小对于被切换入会话的高速缓存未命中的不利影响,因为可将会话的上下文取出或预取出到卸载处理器高速缓存中,使得当线程恢复时,该线程的先前工作集之中的大多数已经存在于高速缓存中。
根据一个特定实施例,在会话切换出时,可经由隧道308k将卸载处理器308i的高速缓存内容转移到存储器308g。然而,在一些实施例中,可将线程的寄存器集合保存到存储器中,作为切换出的部分,由此,这些寄存器的内容可驻留在高速缓存中。因此,作为切换入的部分,当预取出会话的内容并将其转移到卸载处理器308i的高速缓存中时,在恢复线程后,可由内核加载寄存器内容,并且这些加载应当来自高速缓存而不是来自存储器308g。由此,凭借对会话的高速缓存内容的仔细管理,可大大地减少因寄存器集合保存和还原以及切换入时的高速缓存未命中而导致的上下文切换的成本,从而消除上下文切换开销的两个源并减少被切换入的会话恢复有用的处理的等待时间。
根据一些实施例,访问(或监听)单元(例如,308l)可具有高速缓存中相关会话上下文所驻留的所有行的索引。如果跨物理索引的高速缓存中的诸个位置分散会话,则访问全部这些会话内容可能变得非常繁琐,因为将需要多次地址转换来访问相同会话的多个页面。相应地,诸实施例可包括页面着色方案,其中在物理索引的高速缓存中的连续位置中建立会话内容。针对会话数据的存储器分配器可从物理上连续的页面进行分配,使得对会话的物理地址范围具有控制。在一些实施例中,通过对齐虚拟存储器页面和物理存储器页面以索引到高速缓存中相同的位置(例如,图1-3)来做到这一点。在替代实施例中,虚拟和物理存储器页面不一定必须索引物理索引的高速缓存中的相同位置,但是会话的不同页面在物理存储器中可能是连续的,使得对高速缓存中的起始索引和条目尺寸的知晓足以访问所有会话数据。此外,组尺寸(set size)等于会话尺寸,使得一旦知晓高速缓存中会话条目的索引,就可使用该索引、该尺寸以及组颜色来完全地将会话内容从高速缓存向外转移到外部存储器(例如,308g)。
根据诸实施例,在卸载处理器的高速缓存中,可将相同的颜色分派给会话的所有页面。在特定实施例中,会话的所有页面可开始于所定义颜色的页面边界处。基于高速缓存中会话的尺寸,可将被分配给某颜色的页面的数量固定。卸载处理器(例如,308i)可用于执行特定类型的会话,并且可提前通知每一个会话的尺寸。基于此,卸载处理器可在会话边界处开始新条目。它可类似地在物理存储器中分配索引到高速缓存中的会话边界的页面。可保存开始于会话边界处的整个高速缓存上下文。在当前所述的实施例中,会话中的多个页面在物理索引的高速缓存中可以是连续的。会话的多个页面可具有相同的颜色(即,它们是相同组的部分)并且在位置上连续。通过使用从会话的基索引的偏移,会话的诸页面是可访问的。可将高速缓存安排或分解为作为会话而非页面的不同的组。为了从一个会话移动至另一会话,存储器分配方案使用相对于用于访问这些会话的索引的最低位的偏移。例如,物理索引的高速缓存可以是具有512kb尺寸的L2高速缓存。高速缓存可以是8路相联的,在L2高速缓存中,对于每一个可能的组有八条通路。因此,对于L2中任何一个颜色具有八行,或者对于L2中的每一个颜色有八个单独的实例。由于会话上下文8Kb的尺寸,在512Kb的L2高速缓存中将有八个不同的会话区,或伴随这些所选的尺寸有八个会话颜色。
根据诸实施例,物理存储器分配器可基于时间上在先的会话的高速缓存条目/主存储器条目来标识对应于会话的颜色。在特定实施例中,物理存储器分配器可基于用于将高速缓存条目分派给前一个会话的地址的3位来标识前一个会话的会话。物理存储器分配器可将新会话分派到主存储器位置(可通过与最近使用过的条目进行的一些比较来确定其颜色),并且将基于最近最少使用策略来使对应于不同颜色的会话的高速缓存条目被驱逐。在另一实施例中,卸载处理器可包括多个核。在此类实施例中,可高速缓存条目锁定在外部,以便由每一个处理器核使用。例如,如果卸载处理器具有两个核,则可在处理器之间划分高速缓存(即,L2高速缓存)中高速缓存行的给定组,从而使颜色的数量减半。当创建新会话时,可将会话的颜色、会话的索引和会话尺寸传递到外部调度器。该信息可用于传入会话流的队列管理。
诸实施例也可通过将这些行锁到高速缓存中来准许将共享文本和任何共享数据与会话数据隔离开。同样,可使用物理存储器分配器和物理着色技术。如果将单独的共享数据置于高速缓存中,则只要由访问单元(例如,ACP)进行的转移不复制此类行,则将该共享数据锁到高速缓存中就是可能的。当为会话数据分配存储器时,在映射驻留在高速缓存中的会话数据时,存储器分配器可知晓物理颜色。
已描述了适用于高速缓存和上下文切换管理操作的各实施例,现在将描述阐释特定方面的示例。
图4示出根据实施例的系统的减少开销的上下文切换的方法400。在初始化时,可作出是否需要会话着色的确定(402)。可由OS作出此类确定。如果不需要会话着色(从402为否),则页面着色可能存在或可能不存在,这依赖于OS的默认选择(424)。
如果需要会话着色(从402为是),则OS可初始化存储器分配器(404)。存储器分配器可采用可将每一个会话条目分配到“会话”边界的高速缓存优化技术。存储器分配器可确定每个会话的起始地址、高速缓存中可允许的会话数量以及可发现给定颜色的会话的位置的数量。此类操作可包括确定可用组的数量,该可用组的数量基于高速缓存尺寸、颜色数量以及会话尺寸(步骤406)。
当针对会话的分组到达时,可作出该分组是针对当前会话还是针对不同的会话的确定(408)。可由OS执行此类动作。如果分组针对不同的会话(从408为是),则可作出该分组是否来自较早的会话的确定(410)。如果该分组不是来自较早的会话(即,它是新会话),则可作出是否存在用于该新会话的足够的存储器的确定(418)。如果存在足够空间(从418为是),则可进行到新会话的切换(422)。此类动作可包括:将新会话分配在会话边界处,并将当前正在执行的进程的上下文保存到上下文存储器(其可以是外部的低等待时间存储器)。
如果没有高速缓存存储器可用于新会话(从418为否)和/或该分组针对较早的会话(从410为是),则可进行检查来确定旧/新会话的分组是否是相同颜色的(412)。如果它是不同颜色的(从412为否),则可进行到该会话的切换(步骤414)。此类动作可包括:检索(对于较早的会话)或创建(对于新会话)任务的高速缓存条目。此外,如果需要,此类动作可包括根据LRU方案进行的对高速缓存条目的清除。
如果旧/新会话的分组是相同颜色的(从412为是),则可作出关于是否可能超出颜色压力的确定(416)。如果可能超出颜色压力,或某个其他颜色的会话不可用(从416为“是;或者……”),则可进行到新会话的切换(420)。此类动作可包括:创建高速缓存条目并记住新会话颜色。如果不会超出颜色压力,但是某个其他颜色的会话是可用的(从416为“否,但是……”),则方法可继续进行到414。
应当领会,在对本发明的诸示例性实施例的上述描述中,为了使本公开流畅从而辅助对各个发明性方面中的一个或多个的理解,有时将本发明的各特征一起组合在单个实施例、附图或它们的描述中。然而,不应当将这种公开方法解释为反映要求保护的本发明需要比每项权利要求中明确记载的更多特征的意图。相反,如所附权利要求反映的那样,发明性方面在于少于上述所公开的单个实施例的所有特征。因此,将遵循具体实施方式的诸权利要求明确地结合进该具体实施方式中,每一项权利要求独立地作为本发明的单独实施例而存在。
也应当理解,可在不存在未专门公开的元件和/或步骤的情况下实践本发明的诸实施例。也就是说,本发明的发明性特征可以是某元件的消除。
相应地,虽然已详细地描述了本文中陈述的特定实施例的各方面,但是,本发明可受制于各种改变、替换和变更而不背离本发明的精神和范围。
Claims (31)
1.一种上下文切换高速缓存系统,包括:
多个卸载处理器,连接到存储器总线,每一个卸载处理器具有带有相关联的高速缓存状态的高速缓存,
上下文存储器,耦合到所述卸载处理器,以及
调度电路,配置成用于在所述卸载处理器中的至少一个卸载处理器与所述上下文存储器之间引导高速缓存状态的转移。
2.如权利要求1所述的系统,其特征在于,所述多个卸载处理器具有用于访问所述多个卸载处理器的高速缓存状态的加速器一致性端口。
3.如权利要求1所述的系统,其特征在于,所述相关联的高速缓存状态包括从以下各项的组中选出的至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写入到卸载处理器的高速缓存中的数据。
4.如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系统(OS);并且所述调度电路配置为用于与所述OS协作,以便将处理会话的上下文设置为在卸载处理器的高速缓存中是物理上连续的。
5.如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系统(OS);并且所述调度电路配置为用于与所述OS协作,以便将处理会话的上下文设置为在卸载处理器的高速缓存中是物理上连续的,并且在卸载处理器的高速缓存中设置处理会话的颜色、尺寸和起始物理地址。
6.如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系统(OS);并且所述调度电路配置为用于与所述OS协作,以便将处理会话的上下文设置为在卸载处理器的高速缓存中是物理上连续的,并且在卸载处理器的高速缓存中设置处理会话的颜色、尺寸和起始物理地址、以及高速缓存中所允许的会话的数量、以及在高速缓存中能发现给定颜色的会话的位置的数量。
7.如权利要求1所述的系统,其特征在于,所述调度电路配置为用于引导一个卸载处理器的高速缓存状态到另一卸载处理器的高速缓存的转移。
8.如权利要求1所述的系统,其特征在于,所述调度电路配置为用于通过以下操作来对第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个卸载处理器相关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第二队列中的网络分组的处理。
9.如权利要求1所述的系统,其特征在于:
所述相关联的高速缓存状态包括从以下各项的组中选出的至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写入到卸载处理器的高速缓存中的数据;
至少一个卸载处理器配置为用于运行操作系统(OS);以及
所述调度电路配置为用于与所述OS协作以将会话上下文设置为在卸载处理器的高速缓存中是物理上连续的。
10.如权利要求1所述的系统,其特征在于,所述调度电路配置为通过所述存储器总线,在所述卸载处理器中的至少一个卸载处理器与所述上下文存储器之间引导高速缓存状态的转移。
11.如权利要求1所述的系统,其特征在于,所述上下文存储器包括至少一个低等待时间存储器设备。
12.一种用于多个卸载处理器的上下文切换的方法,所述多个卸载处理器经耦合以便在存储器总线上接收数据以进行处理,所述方法包括以下步骤:
通过调度电路的操作,经由从多个卸载处理器中的至少一个卸载处理器进入上下文存储器的批量读取来引导高速缓存上下文的存储,并且所述高速缓存状态的任何虚拟和物理存储器位置被对齐,以及
随后,通过所述调度电路的操作,引导将所述高速缓存状态转移到所述卸载处理器中的至少一个卸载处理器以进行处理。
13.如权利要求12所述的方法,其特征在于,所述批量读取通过加速器一致性端口。
14.如权利要求12所述的方法,其特征在于,所述相关联的高速缓存状态包括以下中的至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写入到卸载处理器的高速缓存中的数据。
15.如权利要求12所述的方法,其特征在于,还包括:所述高速缓存状态包括会话上下文;并且通过运行在卸载处理器上的操作系统(OS)与所述调度电路的协作将所述会话上下文设置为在卸载处理器的高速缓存中是物理上连续的。
16.如权利要求12所述的方法,其特征在于,还包括:在对处理会话的初始化之后,将会话颜色、会话尺寸以及所述处理会话的起始物理高速缓存地址传递到所述调度电路。
17.如权利要求12所述的方法,其特征在于,还包括:确定多个处理会话中的每一个处理会话的起始地址、卸载处理器的高速缓存中所允许的会话的数量以及能发现给定会话颜色的会话的位置的数量。
18.如权利要求12所述的方法,其特征在于,还包括:将所述卸载处理器中的一个卸载处理器的高速缓存状态转移到所述卸载处理器中的另一卸载处理器的高速缓存。
19.如权利要求12所述的方法,其特征在于,还包括通过以下操作来对通过所述存储器总线接收到的第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个卸载处理器相关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第二队列中的网络分组的处理。
20.如权利要求12所述的方法,其特征在于,还包括:将由卸载处理器执行的处理的会话上下文设置为在卸载处理器的高速缓存中是物理上连续的。
21.如权利要求12所述的方法,其特征在于,从所述高速缓存进入所述上下文存储器的所述批量读取包括:通过所述存储器总线进入低等待时间存储器设备的批量读取。
22.一种用于多个卸载处理器的上下文切换的方法,包括以下步骤:
通过存储器总线连接的插槽来接收用于处理的网络分组,
将所述网络分组组织为用于处理的多个会话,
通过由调度电路的操作而将所述卸载处理器中的至少一个卸载处理器的高速缓存状态读取到上下文存储器中来挂起至少一个会话的处理,并且虚拟存储器位置和物理高速缓存位置被对齐,以及
随后,通过所述调度电路的操作,引导将所述高速缓存状态转移到所述卸载处理器中的至少一个卸载处理器以进行处理。
23.如权利要求22所述的方法,其特征在于,所述批量读取通过加速器一致性端口。
24.如权利要求22所述的方法,其特征在于,所述相关联的高速缓存状态包括以下中的至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写入到卸载处理器的高速缓存中的数据。
25.如权利要求22所述的方法,其特征在于,还包括:
所述高速缓存状态包括会话上下文;并且
通过运行在卸载处理器上的操作系统(OS)与所述调度电路的协作,将所述会话上下文设置为在卸载处理器的高速缓存中是物理上连续的。
26.如权利要求22所述的方法,其特征在于,还包括:在对处理会话的初始化之后,将会话颜色、会话尺寸以及所述处理会话的起始物理高速缓存地址传递到所述调度电路。
27.如权利要求22所述的方法,其特征在于,还包括:
确定多个处理会话中的每一个处理会话的起始地址、卸载处理器的高速缓存中所允许的会话的数量以及能发现给定会话颜色的会话的位置的数量。
28.如权利要求22所述的方法,其特征在于,还包括:将所述卸载处理器中的一个卸载处理器的高速缓存状态转移到所述卸载处理器中的另一卸载处理器的高速缓存。
29.如权利要求22所述的方法,其特征在于,还包括通过以下操作来对通过所述存储器总线接收到的第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个卸载处理器相关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第二队列中的网络分组的处理。
30.如权利要求22所述的方法,其特征在于,挂起至少一个会话的处理包括:以抢占式模式操作以便控制会话执行。
31.如权利要求22所述的方法,其特征在于,接收网络分组包括:在所述存储器总线上,通过兼容双列直插存储器模块(DIMM)的插槽来接收网络分组。
Applications Claiming Priority (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361753895P | 2013-01-17 | 2013-01-17 | |
US201361753906P | 2013-01-17 | 2013-01-17 | |
US201361753910P | 2013-01-17 | 2013-01-17 | |
US201361753901P | 2013-01-17 | 2013-01-17 | |
US201361753899P | 2013-01-17 | 2013-01-17 | |
US201361753892P | 2013-01-17 | 2013-01-17 | |
US201361753904P | 2013-01-17 | 2013-01-17 | |
US201361753907P | 2013-01-17 | 2013-01-17 | |
US201361753903P | 2013-01-17 | 2013-01-17 | |
US61/753,892 | 2013-01-17 | ||
US61/753,910 | 2013-01-17 | ||
US61/753,906 | 2013-01-17 | ||
US61/753,903 | 2013-01-17 | ||
US61/753,901 | 2013-01-17 | ||
US61/753,895 | 2013-01-17 | ||
US61/753,904 | 2013-01-17 | ||
US61/753,907 | 2013-01-17 | ||
US61/753,899 | 2013-01-17 | ||
PCT/US2013/048013 WO2014113063A1 (en) | 2013-01-17 | 2013-06-26 | Context switching with offload processors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105874441A true CN105874441A (zh) | 2016-08-17 |
Family
ID=51165034
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380074204.3A Pending CN105765910A (zh) | 2013-01-17 | 2013-06-22 | 利用卸载处理器的调度和通信量管理 |
CN201380074213.2A Pending CN105874441A (zh) | 2013-01-17 | 2013-06-26 | 利用卸载处理器的上下文切换 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380074204.3A Pending CN105765910A (zh) | 2013-01-17 | 2013-06-22 | 利用卸载处理器的调度和通信量管理 |
Country Status (6)
Country | Link |
---|---|
US (25) | US20140201416A1 (zh) |
EP (3) | EP2946296A4 (zh) |
JP (2) | JP2016503933A (zh) |
KR (3) | KR20160037827A (zh) |
CN (2) | CN105765910A (zh) |
WO (6) | WO2014113055A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983440A (zh) * | 2016-11-28 | 2019-07-05 | Arm有限公司 | 数据处理 |
CN110914812A (zh) * | 2017-05-15 | 2020-03-24 | 奥特瑞克斯股份有限公司 | 用于高速缓存优化和高效处理的数据聚合方法 |
CN112673595A (zh) * | 2018-08-28 | 2021-04-16 | 威睿公司 | 用于密码操作和卸载的流高速缓存支持 |
Families Citing this family (132)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005089239A2 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method of providing a self-optimizing reservation in space of compute resources |
US8271980B2 (en) | 2004-11-08 | 2012-09-18 | Adaptive Computing Enterprises, 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 |
ES2614751T3 (es) | 2005-04-07 | 2017-06-01 | Iii Holdings 12, Llc | Acceso bajo demanda a recursos informáticos |
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 | 鸿富锦精密工业(深圳)有限公司 | 主板及应用于该主板的数据处理方法 |
US20140165196A1 (en) | 2012-05-22 | 2014-06-12 | Xockets IP, LLC | Efficient packet handling, redirection, and inspection using offload processors |
US20130318276A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
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 |
US9460024B2 (en) * | 2013-03-15 | 2016-10-04 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US10084718B1 (en) | 2013-03-15 | 2018-09-25 | Google Llc | Bi-Connected hierarchical data center network based on multi-ported network interface controllers (NICs) |
US9288163B2 (en) * | 2013-03-15 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low-latency packet receive method for networking devices |
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 |
CN105612499B (zh) * | 2013-10-29 | 2018-11-13 | 华中科技大学 | 混合高速缓存管理 |
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 |
US9449229B1 (en) | 2014-07-07 | 2016-09-20 | Google Inc. | Systems and methods for categorizing motion event candidates |
US9501915B1 (en) | 2014-07-07 | 2016-11-22 | Google Inc. | Systems and methods for analyzing a video stream |
US9544636B2 (en) * | 2014-07-07 | 2017-01-10 | Google Inc. | Method and system for editing event categories |
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 |
WO2016030757A1 (en) * | 2014-08-25 | 2016-03-03 | 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 |
USD782495S1 (en) | 2014-10-07 | 2017-03-28 | Google Inc. | Display screen or portion thereof with graphical user interface |
US9754103B1 (en) | 2014-10-08 | 2017-09-05 | Amazon Technologies, Inc. | Micro-architecturally delayed timer |
US9378363B1 (en) | 2014-10-08 | 2016-06-28 | Amazon Technologies, Inc. | Noise injected virtual timer |
US9491112B1 (en) | 2014-12-10 | 2016-11-08 | Amazon Technologies, Inc. | Allocating processor resources based on a task identifier |
US9864636B1 (en) * | 2014-12-10 | 2018-01-09 | Amazon Technologies, Inc. | Allocating processor resources based on a service-level agreement |
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 |
CN111708717A (zh) * | 2015-06-30 | 2020-09-25 | 华为技术有限公司 | 数据拷贝方法、直接内存访问控制器及计算机系统 |
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 |
US10817456B2 (en) | 2015-11-18 | 2020-10-27 | Oracle International Corporation | Separation of control and data plane functions in SoC virtualized I/O device |
US10853303B2 (en) | 2015-11-18 | 2020-12-01 | 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 |
US20200301747A1 (en) * | 2016-03-31 | 2020-09-24 | Nec Corporation | Control method, control apparatus and server in network system |
US10045252B2 (en) * | 2016-06-02 | 2018-08-07 | International Business Machines Corporation | Virtual switch-based congestion control for multiple TCP flows |
US11671382B2 (en) | 2016-06-17 | 2023-06-06 | Intel Corporation | Technologies for coordinating access to data packets in a memory |
KR102548599B1 (ko) | 2016-06-17 | 2023-06-29 | 삼성전자주식회사 | 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈 |
US10390114B2 (en) * | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a 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 |
US10277636B2 (en) | 2016-09-08 | 2019-04-30 | Macnica Americas, Inc. | FPGA offload module and processes for seamless frame-level switching of media streams in real-time |
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 |
US10715424B2 (en) | 2016-12-06 | 2020-07-14 | Microsoft Technology Licensing, Llc | Network traffic management with queues affinitized to one or more cores |
US10554554B2 (en) * | 2016-12-06 | 2020-02-04 | Microsoft Technology Licensing, Llc | Hybrid network processing load distribution in computing systems |
CN106656711B (zh) * | 2016-12-26 | 2019-06-18 | 中核控制系统工程有限公司 | 一种令牌总线时隙预定义方法 |
US11853244B2 (en) * | 2017-01-26 | 2023-12-26 | Wisconsin Alumni Research Foundation | Reconfigurable computer accelerator providing stream processor and dataflow processor |
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 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
WO2018183542A1 (en) | 2017-03-29 | 2018-10-04 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
US10257033B2 (en) * | 2017-04-12 | 2019-04-09 | Cisco Technology, Inc. | Virtualized network functions and service chaining in serverless computing infrastructure |
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 | 佛山市顺德区顺达电脑厂有限公司 | 服务器机柜系统及其讯号传输频率调整方法 |
US10725825B2 (en) | 2017-07-10 | 2020-07-28 | Fungible, Inc. | Data processing unit for stream processing |
US10659254B2 (en) * | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
CN109426556B (zh) * | 2017-08-31 | 2021-06-04 | 大唐移动通信设备有限公司 | 一种进程调度方法和装置 |
CN107741867B (zh) * | 2017-09-30 | 2020-03-10 | Oppo广东移动通信有限公司 | 应用程序管理方法、装置、存储介质及电子设备 |
US10496437B2 (en) * | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
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 |
KR102665410B1 (ko) | 2018-07-30 | 2024-05-13 | 삼성전자주식회사 | 메모리 장치의 내부 프로세싱 동작 방법 |
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 |
TWI813743B (zh) | 2018-08-23 | 2023-09-01 | 美商阿爾克斯股份有限公司 | 在網路路由環境中的獨立資料儲存空間 |
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 | 富士通株式会社 | パケット分類プログラム、パケット分類方法、および、情報処理装置 |
US11374880B2 (en) * | 2019-06-17 | 2022-06-28 | Cyxtera Data Centers, Inc. | Automated deployment of internet connectivity to rack switches in a data center |
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 |
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 | 富士通株式会社 | 半導体装置及び転送方法 |
US20220103488A1 (en) * | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Packet processing with hardware offload units |
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 |
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 |
US11606310B2 (en) | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
US11875172B2 (en) | 2020-09-28 | 2024-01-16 | VMware LLC | Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC |
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 |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050226238A1 (en) * | 2004-03-31 | 2005-10-13 | Yatin Hoskote | Hardware-based multi-threading for packet processing |
US20060004965A1 (en) * | 2004-06-30 | 2006-01-05 | Tu Steven J | Direct processor cache access within a system having a coherent multi-processor protocol |
CN101794271A (zh) * | 2010-03-31 | 2010-08-04 | 华为技术有限公司 | 多核内存一致性的实现方法和装置 |
Family Cites Families (243)
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 |
WO2003034227A2 (en) * | 2001-10-12 | 2003-04-24 | Koninklijke Philips Electronics N.V. | Apparatus and method for reading or writing user data |
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 |
AU2003270757A1 (en) | 2002-09-18 | 2004-04-08 | Netezza Corporation | Asymmetric streaming record data processor method and apparatus |
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 |
US7320083B2 (en) * | 2003-04-23 | 2008-01-15 | Dot Hill Systems Corporation | Apparatus and method for storage controller to deterministically kill one of redundant servers integrated within the storage controller chassis |
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 |
US7532537B2 (en) | 2004-03-05 | 2009-05-12 | Netlist, Inc. | Memory module with a circuit providing load isolation and memory domain translation |
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 |
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 |
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 |
KR101375763B1 (ko) | 2005-04-21 | 2014-03-19 | 바이올린 메모리 인코포레이티드 | 상호접속 시스템 |
JP4322232B2 (ja) * | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US8244971B2 (en) | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US8438328B2 (en) | 2008-02-21 | 2013-05-07 | Google Inc. | Emulation of abstracted DIMMs using abstracted DRAMs |
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 |
WO2007084422A2 (en) | 2006-01-13 | 2007-07-26 | 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 |
US7957280B2 (en) | 2006-06-16 | 2011-06-07 | 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 |
US8806116B2 (en) * | 2008-02-12 | 2014-08-12 | Virident Systems, Inc. | Memory modules for two-dimensional main memory |
US8074022B2 (en) | 2006-09-28 | 2011-12-06 | Virident Systems, Inc. | Programmable heterogeneous memory controllers for main memory with different memory modules |
US20080082750A1 (en) | 2006-09-28 | 2008-04-03 | Okin Kenneth A | Methods of communicating to, memory modules in a memory channel |
US8189328B2 (en) | 2006-10-23 | 2012-05-29 | 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. |
EP4198751A1 (en) | 2007-04-12 | 2023-06-21 | Rambus Inc. | Memory system with point-to point request interconnect |
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 |
US8001434B1 (en) | 2008-04-14 | 2011-08-16 | Netlist, Inc. | Memory board with self-testing capability |
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 |
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 |
WO2011070940A1 (ja) * | 2009-12-08 | 2011-06-16 | 日本電気株式会社 | 帯域制御装置、帯域制御方法、及び無線ネットワークシステム |
US9389895B2 (en) | 2009-12-17 | 2016-07-12 | Microsoft Technology Licensing, Llc | Virtual storage target offload techniques |
WO2011087820A2 (en) | 2009-12-21 | 2011-07-21 | 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 |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
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 |
WO2011120019A2 (en) | 2010-03-26 | 2011-09-29 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
JP5336423B2 (ja) * | 2010-05-14 | 2013-11-06 | パナソニック株式会社 | 計算機システム |
CN103238305A (zh) | 2010-05-28 | 2013-08-07 | 安全第一公司 | 用于安全数据储存的加速器系统 |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8468151B2 (en) | 2010-06-29 | 2013-06-18 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators |
US9118591B2 (en) | 2010-07-30 | 2015-08-25 | Broadcom Corporation | Distributed switch domain of heterogeneous components |
KR101480856B1 (ko) * | 2010-08-23 | 2015-01-09 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 컨텍스트 스위칭 |
TW201214082A (en) * | 2010-09-17 | 2012-04-01 | Hon Hai Prec Ind Co Ltd | Mother board |
WO2012040649A2 (en) | 2010-09-24 | 2012-03-29 | Texas Memory Systems, Inc. | High-speed memory system |
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 |
MX2014001056A (es) | 2011-07-25 | 2014-09-16 | Servergy Inc | Método y sistema para construir un sistema informatico de baja potencia. |
EP2742649B1 (en) * | 2011-08-10 | 2015-06-03 | Marvell World Trade Ltd. | Intelligent phy with security detection for ethernet networks |
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 |
WO2013097071A1 (en) * | 2011-12-26 | 2013-07-04 | Intel Corporation | Direct link synchronization communication between co-processors |
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 |
US20130318276A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US20140165196A1 (en) | 2012-05-22 | 2014-06-12 | Xockets IP, LLC | Efficient packet handling, redirection, and inspection using offload processors |
GB2517097B (en) * | 2012-05-29 | 2020-05-27 | Intel Corp | 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 |
WO2014105650A1 (en) * | 2012-12-26 | 2014-07-03 | Cortina Systems, Inc. | Communication traffic processing architectures and methods |
US10031820B2 (en) | 2013-01-17 | 2018-07-24 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Mirroring high performance and high availablity applications across server computers |
US9378161B1 (en) | 2013-01-17 | 2016-06-28 | Xockets, Inc. | Full bandwidth packet handling with server systems including offload processors |
US20140201416A1 (en) | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
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 |
-
2013
- 2013-06-08 US US13/913,407 patent/US20140201416A1/en not_active Abandoned
- 2013-06-08 EP EP13871993.5A patent/EP2946296A4/en not_active Withdrawn
- 2013-06-08 WO PCT/US2013/044856 patent/WO2014113055A1/en active Application Filing
- 2013-06-08 US US13/913,411 patent/US9250954B2/en active Active - Reinstated
- 2013-06-08 US US13/913,410 patent/US9348638B2/en not_active Expired - Fee Related
- 2013-06-08 WO PCT/US2013/044857 patent/WO2014113056A1/en active Application Filing
- 2013-06-08 US US13/913,409 patent/US20140201409A1/en not_active Abandoned
- 2013-06-08 KR KR1020157022208A patent/KR20160037827A/ko not_active Application Discontinuation
- 2013-06-08 US US13/913,405 patent/US20140201408A1/en not_active Abandoned
- 2013-06-18 WO PCT/US2013/046417 patent/WO2014113059A1/en active Application Filing
- 2013-06-18 US US13/921,059 patent/US20140201309A1/en not_active Abandoned
- 2013-06-18 US US13/921,071 patent/US20140201310A1/en not_active Abandoned
- 2013-06-18 US US13/921,047 patent/US20140201390A1/en not_active Abandoned
- 2013-06-22 US US13/924,558 patent/US20140198653A1/en not_active Abandoned
- 2013-06-22 JP JP2015553711A patent/JP2016503933A/ja active Pending
- 2013-06-22 CN CN201380074204.3A patent/CN105765910A/zh active Pending
- 2013-06-22 US US13/924,560 patent/US20140198799A1/en not_active Abandoned
- 2013-06-22 WO PCT/US2013/047205 patent/WO2014113061A2/en active Application Filing
- 2013-06-22 EP EP13871818.4A patent/EP2946528A4/en not_active Withdrawn
- 2013-06-22 US US13/924,557 patent/US20140198652A1/en not_active Abandoned
- 2013-06-22 KR KR1020157022209A patent/KR20160040439A/ko not_active Application Discontinuation
- 2013-06-22 US US13/924,559 patent/US20140198803A1/en not_active Abandoned
- 2013-06-24 US US13/924,619 patent/US20140201304A1/en not_active Abandoned
- 2013-06-24 WO PCT/US2013/047217 patent/WO2014113062A2/en active Application Filing
- 2013-06-24 US US13/924,618 patent/US20140201303A1/en not_active Abandoned
- 2013-06-24 US US13/924,621 patent/US20140201305A1/en not_active Abandoned
- 2013-06-26 US US13/928,336 patent/US20140201461A1/en not_active Abandoned
- 2013-06-26 US US13/928,337 patent/US20140201402A1/en not_active Abandoned
- 2013-06-26 JP JP2015553712A patent/JP2016503934A/ja active Pending
- 2013-06-26 US US13/928,335 patent/US20140201453A1/en not_active Abandoned
- 2013-06-26 CN CN201380074213.2A patent/CN105874441A/zh active Pending
- 2013-06-26 WO PCT/US2013/048013 patent/WO2014113063A1/en active Application Filing
- 2013-06-26 US US13/928,339 patent/US20140201761A1/en not_active Abandoned
- 2013-06-26 EP EP13872212.9A patent/EP2946298A4/en not_active Withdrawn
- 2013-06-26 KR KR1020157022210A patent/KR20160037828A/ko not_active Application Discontinuation
- 2013-06-29 US US13/931,910 patent/US9436640B1/en active Active - Reinstated
- 2013-06-29 US US13/931,914 patent/US9288101B1/en not_active Expired - Fee Related
- 2013-06-29 US US13/931,913 patent/US9460031B1/en active Active - Reinstated
- 2013-06-29 US US13/931,907 patent/US9436639B1/en active Active - Reinstated
- 2013-06-29 US US13/931,905 patent/US9436638B1/en active Active - Reinstated
-
2016
- 2016-12-30 US US15/396,323 patent/US10649924B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050226238A1 (en) * | 2004-03-31 | 2005-10-13 | Yatin Hoskote | Hardware-based multi-threading for packet processing |
US20060004965A1 (en) * | 2004-06-30 | 2006-01-05 | Tu Steven J | Direct processor cache access within a system having a coherent multi-processor protocol |
CN101794271A (zh) * | 2010-03-31 | 2010-08-04 | 华为技术有限公司 | 多核内存一致性的实现方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983440A (zh) * | 2016-11-28 | 2019-07-05 | Arm有限公司 | 数据处理 |
CN109983440B (zh) * | 2016-11-28 | 2023-07-25 | Arm有限公司 | 数据处理 |
CN110914812A (zh) * | 2017-05-15 | 2020-03-24 | 奥特瑞克斯股份有限公司 | 用于高速缓存优化和高效处理的数据聚合方法 |
CN112673595A (zh) * | 2018-08-28 | 2021-04-16 | 威睿公司 | 用于密码操作和卸载的流高速缓存支持 |
CN112673595B (zh) * | 2018-08-28 | 2022-09-13 | 威睿公司 | 用于使用具有包括动态报头的数据包的流高速缓存的方法和系统 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105874441A (zh) | 利用卸载处理器的上下文切换 | |
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 | |
US20200192715A1 (en) | Workload scheduler for memory allocation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160817 |