CN107656880B - Processor with memory controller including dynamically programmable functional units - Google Patents

Processor with memory controller including dynamically programmable functional units Download PDF

Info

Publication number
CN107656880B
CN107656880B CN201710873051.9A CN201710873051A CN107656880B CN 107656880 B CN107656880 B CN 107656880B CN 201710873051 A CN201710873051 A CN 201710873051A CN 107656880 B CN107656880 B CN 107656880B
Authority
CN
China
Prior art keywords
pfu
program
programmable
memory
processor
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.)
Active
Application number
CN201710873051.9A
Other languages
Chinese (zh)
Other versions
CN107656880A (en
Inventor
G·葛兰·亨利
罗德尼·E·虎克
泰瑞·派克斯
道格拉斯·R·瑞德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/337,169 external-priority patent/US10268586B2/en
Priority claimed from US15/337,140 external-priority patent/US10642617B2/en
Priority claimed from US15/590,883 external-priority patent/US11061853B2/en
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN107656880A publication Critical patent/CN107656880A/en
Application granted granted Critical
Publication of CN107656880B publication Critical patent/CN107656880B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

A processor having a memory controller including a dynamically programmable functional unit, the processor including a memory controller, wherein the memory controller is to interface an external memory with a Programmable Functional Unit (PFU). The PFU is programmed with a PFU program to modify operation of the memory controller, wherein the PFU includes programmable logic elements and programmable interconnects. For example, the PFU is programmed with a PFU program to add functionality during operation of the processor or otherwise modify existing functionality of the memory controller to enhance the functionality of the memory controller. Thus, once the processor is manufactured, the functions and/or operations of the memory controller are not fixed, but instead the memory controller may be modified after manufacture to improve the efficiency of the processor and/or enhance the performance of the processor, such as when executing corresponding processes.

Description

具有包括动态可编程的功能单元的存储器控制器的处理器Processor with memory controller including dynamically programmable functional units

技术领域technical field

本发明通常涉及处理器的可编程资源,并且更特别地涉及在存储器控制器级别具有动态可编程的功能单元的处理器。The present invention relates generally to programmable resources of processors, and more particularly to processors having dynamically programmable functional units at the memory controller level.

背景技术Background technique

处理器持续变得更强大,其中这些处理器在更高的效率等级具有更高的性能。如这里所使用的术语“处理器”是指包括微处理器、中央处理单元(CPU)、一个或多个处理核、微控制器等的任意类型的处理单元。如这里所使用的术语“处理器”还包括诸如集成在芯片或集成电路(IC)上的处理单元等的任意类型的处理器配置,其中这些芯片或集成电路包括片上系统(SOC)内所包含的芯片或集成电路等。半导体制造技术正持续改善,从而使速度提高、功耗降低并且使处理芯片上所集成的电路的尺寸减小。集成尺寸的减小允许在处理单元内并入附加功能。然而,一旦制造了传统的处理器,其内部功能和操作中的许多内部功能和操作基本上是固定的。Processors continue to become more powerful, with these processors having higher performance at higher efficiency levels. The term "processor" as used herein refers to any type of processing unit including a microprocessor, a central processing unit (CPU), one or more processing cores, a microcontroller, and the like. The term "processor" as used herein also includes any type of processor configuration such as a processing unit integrated on a chip or integrated circuit (IC), including those contained within a system-on-chip (SOC) chips or integrated circuits. Semiconductor manufacturing techniques are continuing to improve, resulting in increased speed, reduced power consumption, and reduced size of circuits integrated on processing chips. The reduction in integration size allows additional functionality to be incorporated within the processing unit. However, once a conventional processor is manufactured, many of its internal functions and operations are essentially fixed.

存储器控制器提供处理器和通常被配置为动态随机存取存储器(DRAM)的外部系统存储器之间的接口。尽管存储器控制器可以是单独设置的,但在许多现代的常规处理配置中,存储器控制器可以集成到与具有向外部系统存储器的输入/输出(I/O)接口的处理器相同的芯片或IC上。在传统配置中,一旦制造了处理器,存储器控制器的功能基本上是固定的。The memory controller provides the interface between the processor and external system memory, typically configured as dynamic random access memory (DRAM). Although the memory controller may be provided separately, in many modern conventional processing configurations the memory controller may be integrated into the same chip or IC as the processor with input/output (I/O) interface to external system memory superior. In a conventional configuration, once the processor is manufactured, the function of the memory controller is essentially fixed.

发明内容SUMMARY OF THE INVENTION

根据一个实施例的一种处理器,其包括存储器控制器,其中该存储器控制器用于使外部存储器和可编程功能单元(PFU)接合。利用PFU程序来对PFU进行编程以修改存储器控制器的操作,其中该PFU包括可编程逻辑元件和可编程互连器。例如,利用PFU程序对PFU进行编程,以在处理器的操作期间添加功能或以其它方式修改存储器控制器的现有功能,从而增强该存储器控制器的功能。这样,一旦制造了处理器,存储器控制器的功能和/或操作不是固定的,而是作为代替,可以在制造之后修改存储器控制器,以诸如在执行相应进程时提高处理器的效率和/或增强处理器的性能。A processor according to one embodiment includes a memory controller for interfacing an external memory and a programmable function unit (PFU). The PFU is programmed with a PFU program to modify the operation of the memory controller, where the PFU includes programmable logic elements and programmable interconnects. For example, the PFU is programmed with a PFU program to add functionality or otherwise modify the existing functionality of the memory controller during operation of the processor, thereby enhancing the functionality of the memory controller. As such, once the processor is manufactured, the function and/or operation of the memory controller is not fixed, but instead, the memory controller may be modified after manufacture to increase the efficiency of the processor and/or such as when executing corresponding processes Enhance the performance of the processor.

该处理器包括用于存储PFU程序的本地存储器。该本地存储器可以是用于存储从外部存储器检索到的PFU程序的随机存取存储器(RAM)。该处理器可以对写入命令作出响应,其中该写入命令用于命令处理器将PFU程序从外部存储器写入随机存取存储器。该处理器还可以包括PFU编程器,其中该PFU编程器用于使用PFU存储器中所存储的PFU程序来对PFU进行编程。该PFU存储器可以是或可以包括只读存储器(ROM),其中该只读存储器用于存储用于对PFU进行编程以根据预先确定的PFU定义进行工作的至少一个预先确定的PFU程序。例如,PFU程序可以是默认PFU程序,其中在处理器的启动时,PFU编程器使用该默认PFU来对PFU进行编程。作为代替或另外,处理器可以对程序命令作出响应,其中该程序命令用于使PFU编程器利用PFU存储器中所存储的多个PFU程序中的所指定的PFU程序来对PFU进行编程。可以包括配置映射,其中该配置映射用于将多个不同处理模式中的各处理模式与PFU存储器中所存储的多个PFU程序中的相应PFU程序进行映射。The processor includes local memory for storing PFU programs. The local memory may be random access memory (RAM) for storing PFU programs retrieved from external memory. The processor may respond to a write command that instructs the processor to write the PFU program from external memory to random access memory. The processor may also include a PFU programmer for programming the PFU using the PFU program stored in the PFU memory. The PFU memory may be or may include read only memory (ROM) for storing at least one predetermined PFU program for programming the PFU to operate according to a predetermined PFU definition. For example, the PFU program may be the default PFU program that is used by the PFU programmer to program the PFU at startup of the processor. Alternatively or additionally, the processor may respond to program commands for causing the PFU programmer to program the PFU with a specified PFU program of a plurality of PFU programs stored in the PFU memory. A configuration map may be included, wherein the configuration map is used to map each of the plurality of different processing modes with a corresponding PFU program of the plurality of PFU programs stored in the PFU memory.

可编程逻辑元件和可编程互连器可被细分为大致相同的多个可编程区段。可以包括PFU编程器,其中该PFU编程器用于分配多个可编程区段,并利用PFU程序来对所分配的多个可编程区段进行编程,以对PFU进行编程。Programmable logic elements and programmable interconnects may be subdivided into substantially the same multiple programmable segments. A PFU programmer may be included, wherein the PFU programmer is used to assign the plurality of programmable sections and use the PFU program to program the allocated plurality of programmable sections to program the PFU.

可编程逻辑元件可以包括可编程查找表。另外或作为替代,可编程逻辑元件可以包括加法器、复用器和寄存器。PFU可以包括可编程存储器,其中在该可编程存储器中,PFU程序可以是被扫描到PFU的可编程存储器中的位流。可以利用多个PFU程序来对PFU进行编程,并且可以包括PFU编程器,其中该PFU编程器用于在处理器的操作期间,一次启用这些PFU程序至少之一。Programmable logic elements may include programmable look-up tables. Additionally or alternatively, programmable logic elements may include adders, multiplexers, and registers. The PFU may include programmable memory, where in the programmable memory, the PFU program may be a stream of bits scanned into the programmable memory of the PFU. The PFU may be programmed with multiple PFU programs, and may include a PFU programmer for enabling at least one of the PFU programs at a time during operation of the processor.

作为更具体的非限制性示例,PFU程序可以对PFU进行编程,以进行用于对外部存储器中所存储的数据进行加密的加密功能。加密功能可以包括加密功能和反向加密功能,其中该反向加密功能采用与地址相组合的预定密钥,以开发进一步与数据值组合的填充值。As a more specific, non-limiting example, a PFU program may program the PFU to perform encryption functions for encrypting data stored in external memory. The encryption function may include an encryption function and a reverse encryption function, wherein the reverse encryption function employs a predetermined key combined with an address to develop a padding value that is further combined with the data value.

一种用于提供处理器的可编程存储器控制器的方法,所述可编程存储器控制器使所述处理器与外部存储器接合,所述方法包括以下步骤:将包括可编程逻辑元件和可编程互连器的可编程功能单元(PFU)并入所述存储器控制器;以及利用PFU程序来对所述PFU进行编程,以修改所述存储器控制器的操作。A method for providing a programmable memory controller of a processor, the programmable memory controller interfacing the processor with an external memory, the method comprising the steps of: incorporating a programmable logic element and a programmable interconnect A programmable function unit (PFU) of the connector is incorporated into the memory controller; and the PFU is programmed with a PFU program to modify the operation of the memory controller.

所述方法可以包括将所述PFU程序存储在所述处理器的本地存储器中。所述方法还可以包括利用所述处理器执行写入命令,其中所述写入命令用于命令所述处理器将所述PFU程序从所述外部存储器写入所述本地存储器的随机存取存储器。所述方法可以包括在所述PFU内设置PFU编程器和PFU引擎,其中,所述PFU编程器利用所述本地存储器中所存储的所述PFU程序来对所述PFU引擎进行编程。所述方法可以包括利用所述处理器执行程序命令,其中所述程序命令用于命令PFU编程器利用PFU存储器中所存储的PFU程序来对PFU引擎进行编程。所述方法可以包括在所述PFU中设置配置映射,其中所述配置映射用于将多个不同处理模式中的各处理模式与PFU存储器中所存储的多个PFU程序中的相应PFU程序进行映射。The method may include storing the PFU program in a local memory of the processor. The method may also include executing a write command with the processor, wherein the write command is used to instruct the processor to write the PFU program from the external memory to random access memory of the local memory . The method may include providing a PFU programmer and a PFU engine within the PFU, wherein the PFU programmer uses the PFU program stored in the local memory to program the PFU engine. The method may include executing, with the processor, program commands for instructing a PFU programmer to program a PFU engine with a PFU program stored in a PFU memory. The method may include setting a configuration map in the PFU, wherein the configuration map is used to map each processing mode in a plurality of different processing modes with a corresponding PFU program in a plurality of PFU programs stored in the PFU memory. .

所述方法可以包括:将所述可编程逻辑元件和所述可编程互连器细分为大致相同的多个可编程区段;分配多个所述可编程区段,以根据所述PFU程序来配置所述PFU;以及利用至少一个PFU程序来对所分配的多个所述可编程区段进行编程。所述方法可以包括:将所述PFU设置为可编程存储器;以及将所述至少一个PFU程序作为位流扫描到PFU引擎的可编程存储器中。所述方法可以包括:利用多个PFU程序来对所述PFU进行编程;以及在所述处理器的操作期间,一次启用所述多个PFU程序至少之一。The method may include: subdividing the programmable logic element and the programmable interconnect into substantially the same plurality of programmable sections; allocating a plurality of the programmable sections to be used according to the PFU program to configure the PFU; and to program the assigned plurality of the programmable sections with at least one PFU program. The method may include: setting the PFU as a programmable memory; and scanning the at least one PFU program as a bitstream into a programmable memory of a PFU engine. The method may include: programming the PFU with a plurality of PFU programs; and enabling at least one of the plurality of PFU programs at a time during operation of the processor.

附图说明Description of drawings

将针对以下的说明和附图来更好地理解本发明的益处、特征和优点,其中:The benefits, features and advantages of the present invention will be better understood with reference to the following description and accompanying drawings, wherein:

图1是根据本发明的一个实施例所实现的包括可编程功能单元(PFU)的处理器耦接至外部存储器和内存装置的简化框图;1 is a simplified block diagram of a processor including a programmable function unit (PFU) coupled to external memory and memory devices implemented in accordance with one embodiment of the present invention;

图2是根据本发明的一个实施例所实现的图1的PFU的更详细框图;Figure 2 is a more detailed block diagram of the PFU of Figure 1 implemented in accordance with one embodiment of the present invention;

图3是根据本发明的一个实施例的使用可编程逻辑所实现的、图2中的PFU编程器和控制器与PFU引擎接合的简化框图;3 is a simplified block diagram of the PFU programmer and controller of FIG. 2 engaged with the PFU engine, implemented using programmable logic, in accordance with one embodiment of the present invention;

图4是示出根据本发明的一个实施例的用于对图1的PFU进行初始编程的方法的框图;4 is a block diagram illustrating a method for initially programming the PFU of FIG. 1 according to one embodiment of the present invention;

图5是描述根据本发明的一个实施例的可用于对图1的PFU进行编程或以其它方式进行重新编程的可执行二进制应用的简化框图;5 is a simplified block diagram depicting an executable binary application that may be used to program or otherwise reprogram the PFU of FIG. 1 according to one embodiment of the present invention;

图6是根据本发明的一个实施例所实现的图3的可编程逻辑的更详细框图;6 is a more detailed block diagram of the programmable logic of FIG. 3 implemented in accordance with one embodiment of the present invention;

图7是根据本发明的一个实施例所实现的图6的可编程逻辑元件的示意框图;FIG. 7 is a schematic block diagram of the programmable logic element of FIG. 6 implemented according to an embodiment of the present invention;

图8是根据本发明的一个实施例所实现的图7的LUT的示意图;8 is a schematic diagram of the LUT of FIG. 7 implemented according to an embodiment of the present invention;

图9是根据本发明的一个实施例的用于对图2的PFU引擎进行编程的PFU程序的格式的简化框图;Figure 9 is a simplified block diagram of the format of the PFU program for programming the PFU engine of Figure 2 according to one embodiment of the invention;

图10是示出根据本发明的一个实施例的用于生成对图2的PFU引擎进行编程所用的图1的PFU程序的示例性方法的简化框图;10 is a simplified block diagram illustrating an exemplary method for generating the PFU program of FIG. 1 for programming the PFU engine of FIG. 2 according to one embodiment of the present invention;

图11是示出在向图1的系统存储器存储数据时可被编程到PFU中并且由MC进行的示例性加密处理的简化框图;以及11 is a simplified block diagram illustrating an exemplary encryption process that may be programmed into the PFU and performed by the MC when storing data to the system memory of FIG. 1; and

图12是示出在从图1的系统存储器加载数据时可被编程到PFU中并且由MC进行的反向加密处理的简化框图。12 is a simplified block diagram illustrating the reverse encryption process that may be programmed into the PFU and performed by the MC when data is loaded from the system memory of FIG. 1 .

具体实施方式Detailed ways

本发明人已意识到与存在于传统处理器中的预定存储器控制器相关联的可能限制。因此,本发明人研发了具有包含可编程功能单元(PFU)的存储器控制器的处理器,其中该可编程功能单元(PFU)是可配置的或以其它方式可编程的,以修改或以其它方式增强存储器控制器的操作。基本输入/输出系统(BIOS)或操作系统(OS)可以包括用于对PFU进行编程的配置信息。BIOS在上电、复位或重启等(这里称为POR)时、或者OS(在BIOS之后在启动期间被加载的情况下)可以将该配置信息复制到存储器中并且向PFU发送命令以访问该配置信息。另外或作为替代,特定软件程序、进程或应用的编程人员或开发人员可以将PFU程序并入用于对PFU进行编程的应用中,以修改或增强该特定应用所使用的存储器控制器的操作。作为示例,PFU可被配置为在相对于处理器所使用的外部系统存储器进行写入或读取时,进行编程后的加密功能。The inventors have recognized possible limitations associated with predetermined memory controllers present in conventional processors. Accordingly, the present inventors have developed a processor with a memory controller that includes a programmable functional unit (PFU), wherein the programmable functional unit (PFU) is configurable or otherwise programmable to modify or otherwise way to enhance the operation of the memory controller. A basic input/output system (BIOS) or operating system (OS) may include configuration information for programming the PFU. The BIOS may copy this configuration information into memory and send commands to the PFU to access the configuration on power-up, reset, or reboot, etc. (here called POR), or the OS (in the case where the BIOS is loaded during boot after the BIOS) information. Additionally or alternatively, the programmer or developer of a particular software program, process or application may incorporate the PFU program into the application used to program the PFU to modify or enhance the operation of the memory controller used by that particular application. As an example, the PFU may be configured to perform programmed encryption functions when written to or read from external system memory used by the processor.

图1是根据本发明的一个实施例所实现的包括可编程功能单元(PFU)114的处理器100耦接至外部存储器和内存装置的简化框图。处理器100的标准指令集架构(ISA)可以是x86架构,其中在x86架构中,可以正确地执行被设计为在x86处理器上执行的大多数应用程序。如果获得了预期的结果,则应用程序被正确执行。特别地,处理器100执行x86指令集的指令并且包括x86用户可见寄存器集。然而,本发明不限于x86架构,使得可以根据如本领域普通技术人员已知的任何可选ISA来实现处理器100。1 is a simplified block diagram of a processor 100 including a programmable function unit (PFU) 114 coupled to external memory and memory devices, implemented in accordance with one embodiment of the present invention. The standard instruction set architecture (ISA) of the processor 100 may be the x86 architecture, where most applications designed to execute on an x86 processor can be properly executed. If the expected results are obtained, the application is executed correctly. In particular, processor 100 executes instructions of the x86 instruction set and includes the x86 user-visible register set. However, the present invention is not limited to the x86 architecture, such that the processor 100 may be implemented according to any alternative ISA as known to those of ordinary skill in the art.

处理器100包括单独标记为S0、S1、S2和S3(S0~S3)的4个片区(slice),其中应当理解,片区的数量是任意的,并且包括仅一个(1)和多达任意正整数个。各个片区S0~S3包括四个核C0、C1、C2和C3(C0~C3)中的相应核、四个高速缓冲存储器或“末级高速缓存器”LLC0、LLC1、LLC2和LLC3(LLC0~LLC3)中的相应高速缓冲存储器、以及四个环形站R0、R1、R2和R3(R0~R3)中的相应环形站。各个核C0~C3包括耦接至环形站R0~R3中的相应环形站的一个或多个内部高速缓冲存储器(例如,未示出的一个或多个L1高速缓存器和L2高速缓存器等),其中该相应环形站进一步耦接至末级高速缓存器LLC0~LLC3中的相应高速缓存器。应当理解,处理器100可被配置为单核处理器、中央处理单元(CPU)或微处理器,而不是具有多个核的多个片区。Processor 100 includes 4 slices individually labeled S0, S1, S2, and S3 (S0-S3), where it should be understood that the number of slices is arbitrary and includes only one (1) and up to any positive value. integer number. Each slice S0-S3 includes a corresponding core in the four cores C0, C1, C2 and C3 (C0-C3), four cache memories or "last level caches" LLC0, LLC1, LLC2 and LLC3 (LLC0-LLC3 ), and the corresponding ring stations in the four ring stations R0, R1, R2, and R3 (R0 to R3). Each core C0-C3 includes one or more internal cache memories (eg, one or more L1 caches and L2 caches not shown, etc.) coupled to respective ones of the ring stations R0-R3 , wherein the corresponding ring station is further coupled to a corresponding one of the last level caches LLC0 ˜ LLC3 . It should be understood that the processor 100 may be configured as a single-core processor, a central processing unit (CPU), or a microprocessor, rather than multiple slices with multiple cores.

处理器100还包括具有相应环形站RSU的“uncore(非核)”102和具有相应环形站RSM的存储器控制器(MC)104。环形站R0~R3、RSU和RSM以环形配置耦接在一起,以使得能够在分区S0~S3、uncore102和存储器控制器104之间进行通信。如图所示,例如,RS0与RS1进行双向通信,RS1与RSM进行双向通信,RSM与RS2进行双向通信,RS2与RS3进行双向通信,RS3与RSU进行双向通信,RSU与RS0进行双向通信。考虑到环形和双向通信,环形配置中的环形站的特定排序是任意的,其中所示配置仅是许多可能的替代配置其中之一。The processor 100 also includes an "uncore" 102 with a corresponding ring station RSU and a memory controller (MC) 104 with a corresponding ring station RSM. Ring stations R0 - R3 , RSU and RSM are coupled together in a ring configuration to enable communication between partitions S0 - S3 , uncore 102 and memory controller 104 . As shown, for example, RS0 communicates bidirectionally with RS1, RS1 communicates bidirectionally with RSM, RSM communicates bidirectionally with RS2, RS2 communicates bidirectionally with RS3, RS3 communicates bidirectionally with RSU, and RSU communicates bidirectionally with RS0. The particular ordering of ring stations in a ring configuration is arbitrary in view of ring and bidirectional communication, with the configuration shown being only one of many possible alternative configurations.

uncore102包含或以其它方式接合处理器100的如下功能,其中这些功能不是位于分区S0~S3中的任意分区或相应核C0~C3中,而是应当紧密地连接至这些核以实现期望的性能水平。在所示配置中,例如,提供uncore102以接合通常包含基本输入/输出系统(BIOS)108的外部只读存储器(ROM)106。BIOS 108是在处理器100的POR时所执行的固件,其中处理器100用于在POR期间进行硬件初始化,以向操作系统(OS)120以及程序或应用提供运行时服务。uncore102还被设置为接合外部存储器110,其中该外部存储器110可以包括诸如一个或多个硬盘驱动器、光盘驱动器、闪速驱动器等的任意数量的数据存储装置,并且通常存储OS 120。uncore 102 contains or otherwise interfaces functions of processor 100 that are not located in any of the partitions S0-S3 or corresponding cores C0-C3, but should be tightly coupled to these cores to achieve the desired level of performance . In the configuration shown, for example, uncore 102 is provided to interface with an external read only memory (ROM) 106 , which typically includes a basic input/output system (BIOS) 108 . BIOS 108 is firmware executed at POR of processor 100 for hardware initialization during POR to provide runtime services to operating system (OS) 120 and programs or applications. The uncore 102 is also arranged to interface with external memory 110 , which may include any number of data storage devices such as one or more hard drives, optical drives, flash drives, etc., and typically stores the OS 120 .

MC 104使处理器100接合至外部系统存储器112。分区S0~S3共享系统存储器112的资源,并且还可以经由环形站RS0~RS3、RSU、RSM彼此共享信息。可以使用诸如一个或多个动态随机存取存储器(DRAM)芯片等的合适内存装置或芯片来实现系统存储器112。MC 104 interfaces processor 100 to external system memory 112 . The partitions S0-S3 share the resources of the system memory 112, and can also share information with each other via the ring stations RS0-RS3, RSU, RSM. System memory 112 may be implemented using suitable memory devices or chips, such as one or more dynamic random access memory (DRAM) chips.

MC 104还包括PFU 114,其中该PFU 114可被编程为修改或以其它方式增强MC 104的功能。可以以依赖于配置的详情的多个方式中的任一方式来对PFU 114进行编程。在一种情况下,BIOS 108在对存储器110和系统存储器112进行初始化之后,访问存储器110中所存储的PFU程序(PGM)116,并且将该PFU程序116复制到处理器100上的存储器或者复制到系统存储器112。例如,在复制之后,PFU程序116的副本被示出为系统存储器112中所存储的PFU程序118。在一个实施例中,PFU程序116可以是以加密和/或压缩格式所存储的,其中在将该PFU程序116存储于处理器100上的存储器中或者存储于系统存储器112中时,可以首先对该PFU程序116进行解密和/或解压缩。然而,如这里进一步所述,PFU程序116可以具有包括无需进行解密或压缩的一系列逻辑一(1)和零(0)的位流的形式。然后,BIOS 108向PFU 114发送命令或指令等,以利用复制后的PFU程序118来定位PFU 114自身并对PFU 114自身进行编程。一旦进行了编程,PFU 114能够在处理器100的操作期间修改或增强MC104的操作。The MC 104 also includes a PFU 114, where the PFU 114 can be programmed to modify or otherwise enhance the functionality of the MC 104. PFU 114 may be programmed in any of a number of ways depending on the details of the configuration. In one case, BIOS 108, after initializing memory 110 and system memory 112, accesses a PFU program (PGM) 116 stored in memory 110 and copies the PFU program 116 to memory on processor 100 or copies to system memory 112. For example, after copying, a copy of PFU program 116 is shown as PFU program 118 stored in system memory 112 . In one embodiment, the PFU program 116 may be stored in an encrypted and/or compressed format, wherein when the PFU program 116 is stored in memory on the processor 100 or in the system memory 112, the The PFU program 116 performs decryption and/or decompression. However, as described further herein, the PFU program 116 may be in the form of a bitstream that includes a series of logical ones (1) and zeros (0) without decryption or compression. The BIOS 108 then sends commands or instructions or the like to the PFU 114 to locate and program the PFU 114 itself with the copied PFU program 118 . Once programmed, the PFU 114 can modify or enhance the operation of the MC 104 during operation of the processor 100 .

在另一情况下,在执行BIOS 108之后,将OS 120加载到处理器100中并且安装在处理器100上,并且在OS安装期间,OS 120通过复制PFU程序116、然后指示PFU 114利用诸如PFU程序118等的PFU程序定位自身并对自身进行编程,来进行实质相同的过程。在又一情况下,程序或应用等进行相似的处理,其中在该处理中,应用包含PFU程序116,并且应用指示PFU 114使用诸如PFU程序118等的复制后的PGM信息来定位自身并对自身进行编程。在另一实施例中,PFU 114包含用于存储PFU程序118的本地存储器(例如,图2的本地存储器206)。在这种情况下,除PFU程序118存储在PFU 114的本地存储器206中、并且PFU 114从其本地存储器访问PFU程序118以进行编程外,BIOS108、OS 120或应用进行相似的编程处理。In another case, after the BIOS 108 is executed, the OS 120 is loaded into the processor 100 and installed on the processor 100, and during the OS installation, the OS 120 copies the PFU program 116 and then instructs the PFU 114 to utilize, for example, the PFU program 116. PFU programs such as program 118 locate and program themselves to perform substantially the same process. In yet another case, a program or application or the like performs a similar process, wherein in this process the application contains the PFU program 116 and the application instructs the PFU 114 to use the copied PGM information, such as the PFU program 118, etc. to locate itself and to program. In another embodiment, PFU 114 includes local memory (eg, local memory 206 of FIG. 2 ) for storing PFU programs 118 . In this case, the BIOS 108, OS 120, or application performs a similar programming process, except that the PFU program 118 is stored in the local memory 206 of the PFU 114, and the PFU 114 accesses the PFU program 118 from its local memory for programming.

图2是根据本发明的一个实施例所实现的PFU 114的更详细框图。设置PFU引擎202,其中利用PFU程序118对PFU引擎202进行编程,以修改和/或者增强MC 104的操作。在PFU 114中可以包括PFU编程器和控制器204,其中该PFU编程器和控制器204用于管理和/或控制PFU引擎202的操作,包括对PFU引擎202进行编程。PFU编程器和控制器204访问用于对PFU引擎202进行编程的所识别的一个或多个PFU程序,并且使得能够将该一个或多个PFU程序中的至少一个程序编程到PFU引擎202中。PFU编程器和控制器204被示出为单独单元,而且可以包含在PFU引擎202自身内。在一个实施例中,PFU 114不包括本地存储器206,其中在这种情况下,可以使用系统存储器112来存储PFU程序118。在不具有本地存储器206的情况下,BIOS 108、OS 120或应用发送识别系统存储器112中的PFU程序118的位置的编程命令,并且PFU编程器和控制器204从系统存储器112访问PFU程序118并对PFU引擎202进行编程。FIG. 2 is a more detailed block diagram of PFU 114 implemented in accordance with one embodiment of the present invention. The PFU engine 202 is provided, wherein the PFU engine 202 is programmed with the PFU program 118 to modify and/or enhance the operation of the MC 104 . A PFU programmer and controller 204 may be included in the PFU 114 for managing and/or controlling the operation of the PFU engine 202 , including programming the PFU engine 202 . The PFU programmer and controller 204 accesses the identified one or more PFU programs for programming the PFU engine 202 and enables programming of at least one of the one or more PFU programs into the PFU engine 202 . The PFU programmer and controller 204 are shown as separate units, and may be contained within the PFU engine 202 itself. In one embodiment, PFU 114 does not include local memory 206, in which case system memory 112 may be used to store PFU program 118. Without local memory 206, BIOS 108, OS 120, or an application sends a programming command identifying the location of PFU program 118 in system memory 112, and PFU programmer and controller 204 accesses PFU program 118 from system memory 112 and The PFU engine 202 is programmed.

在一个实施例中,PFU引擎202可以配置有利用多个PFU程序要进行编程的充足资源,其中PFU编程器和控制器204将每一个PFU程序编程到PFU引擎202中,并且仅仅激活或者启用与执行中的特定进程或处理器100的特定操作模式相关联的适当PFU程序。作为示例,PFU引擎202最初可以在POR时被编程并且针对处理器100的大多数操作被启用。进程(例如,程序或应用等)可以利用另一PFU程序对PFU引擎202进行编程,以供在该进程处于活动状态并且执行中的情况下使用。PFU编程器和控制器204通过一次激活被编程到PFU引擎202中的PFU程序中的仅一个PFU程序来管理PFU引擎202的操作。在不具有本地存储器的配置中,可以利用有限数量的PFU程序来对PFU引擎202进行编程。In one embodiment, the PFU engine 202 may be configured with sufficient resources to be programmed with multiple PFU programs, with the PFU programmer and controller 204 programming each PFU program into the PFU engine 202 and only activating or enabling and The appropriate PFU program associated with the particular process in execution or the particular mode of operation of the processor 100 . As an example, the PFU engine 202 may initially be programmed at POR and enabled for most operations of the processor 100 . A process (eg, program or application, etc.) may program the PFU engine 202 with another PFU program for use while the process is active and executing. The PFU programmer and controller 204 manages the operation of the PFU engine 202 by activating only one of the PFU programs programmed into the PFU engine 202 at a time. In configurations without local memory, the PFU engine 202 may be programmed with a limited number of PFU programs.

应当理解,PFU引擎202可以是可以在任何给定时间加载有限数量的PFU程序的有限资源。PFU引擎202可能不具有利用在处理器100的操作期间在任何给定时间可以激活的总数个PFU程序要进行编程的充足容量。在这种配置中,特别是在系统存储器112内的PFU程序中的一个或多个PFU程序的位置信息可能不再有效或可能不可用的情况下,可能难以对随时间的经过而针对不同的模式具有不同的PFU程序的PFU引擎202的编程进行切换。此外,PFU引擎202可以包括利用仅一个大型PFU程序或两个较小型PFU程序根据其实现而要编程的充足资源。It should be appreciated that the PFU engine 202 may be a limited resource that can load a limited number of PFU programs at any given time. The PFU engine 202 may not have sufficient capacity to be programmed with the total number of PFU programs that can be activated at any given time during operation of the processor 100 . In such a configuration, particularly where location information for one or more of the PFU programs within system memory 112 may no longer be valid or may not be available, it may be difficult to target different Modes are switched by programming of the PFU engine 202 with different PFU programs. Furthermore, the PFU engine 202 may include sufficient resources to be programmed with only one large PFU program or two smaller PFU programs depending on its implementation.

在另一实施例中,PFU 114包含本地存储器206,其中该本地存储器206用于存储对PFU引擎202进行编程所用的至少一个PFU程序。本地存储器206可以包括随机存取存储器(RAM)208,其中在这种情况下,PFU程序116可被复制到RAM 208并且由PFU编程器和控制器204访问,以对PFU引擎202进行编程。在一个实施例中,RAM 208可以具有足以存储被示出为PGMA、PGMB、PGMC等的多个PFU程序的大小。响应于程序命令,PFU编程器和控制器204访问PFU程序中的所识别的PFU程序,以对PFU引擎202进行编程。这样,如果PFU引擎202不具有足以保持可以随时激活的所有PFU程序的资源,则PFU编程器和控制器204响应于命令或响应于模式变化,可以即时从本地存储器206对PFU引擎202进行重新编程。In another embodiment, the PFU 114 includes a local memory 206 for storing at least one PFU program used to program the PFU engine 202 . Local memory 206 may include random access memory (RAM) 208 , where in this case PFU program 116 may be copied to RAM 208 and accessed by PFU programmer and controller 204 to program PFU engine 202 . In one embodiment, RAM 208 may be of sufficient size to store multiple PFU programs shown as PGMA, PGMB, PGMC, and the like. In response to program commands, the PFU programmer and controller 204 access the identified ones of the PFU programs to program the PFU engine 202 . In this way, if the PFU engine 202 does not have sufficient resources to hold all PFU programs that can be activated at any time, the PFU programmer and controller 204 can reprogram the PFU engine 202 from local memory 206 on the fly in response to a command or in response to a mode change .

本地存储器206还可以包括只读存储器(ROM)210,其中该ROM 210用于存储被示出为PGM1、PGM2、PGM3等的一个或多个标准或预先确定的PFU程序。在一个实施例中,将这些预先确定的PFU程序其中之一指定为默认PFU程序(例如,PGM1)。在处理器100的初始启动期间,代替从存储器110复制PFU程序116(或者除从存储器110复制PFU程序116外),BIOS 108或OS 120指示PFU编程器和控制器204利用默认PFU程序(在包括的情况下)来对PFU引擎202进行编程,然后激活PFU引擎202的默认PFU程序。作为替代或另外,BIOS108、OS 120或者任何应用或进程可以识别ROM 210内所存储的预先确定的PFU程序中的任意PFU程序以对PFU引擎202进行编程。Local memory 206 may also include read only memory (ROM) 210 for storing one or more standard or predetermined PFU programs, shown as PGM1, PGM2, PGM3, and so on. In one embodiment, one of these predetermined PFU programs is designated as the default PFU program (eg, PGM1). During initial startup of processor 100, instead of copying PFU program 116 from memory 110 (or in addition to copying PFU program 116 from memory 110), BIOS 108 or OS 120 instructs PFU programmer and controller 204 to utilize the default PFU program (including case) to program the PFU engine 202, and then activate the default PFU program of the PFU engine 202. Alternatively or additionally, BIOS 108 , OS 120 , or any application or process may recognize any of the predetermined PFU programs stored in ROM 210 to program PFU engine 202 .

为了方便多个PFU程序,可以设置PFU配置映射212,其中该PFU配置映射212将处理器100的特定操作模式与针对该模式所设置的相应PFU程序进行映射。该操作模式可以包括在特定进程采用相应PFU程序的情况下的进程标识信息。如图所示,例如,将多个模式标识为分别与相应的PFU程序PGMA、PGM1、PGM2、PGMB等相关联的M1、M2、M3、M4等。PFU编程器和控制器204在每次将PFU程序编程到PFU引擎202中时,更新PFU配置映射212。根据PFU配置映射212中所设置的映射,PFU编程器和控制器204在任何给定时间识别活动模式(或进程),并且激活被编程到PFU引擎202内的相应PFU程序,或者以其它方式对PFU引擎202进行编程。一旦加载和/或激活了正确的PFU程序,则相应地利用PFU引擎202来修改或增强MC 104的操作。To facilitate multiple PFU procedures, a PFU configuration map 212 may be provided, wherein the PFU configuration map 212 maps a particular mode of operation of the processor 100 with the corresponding PFU procedure set for that mode. The operating mode may include process identification information if the particular process employs the corresponding PFU program. As shown, for example, multiple modes are identified as M1, M2, M3, M4, etc., respectively associated with corresponding PFU programs PGMA, PGM1, PGM2, PGMB, etc., respectively. The PFU programmer and controller 204 updates the PFU configuration map 212 each time a PFU program is programmed into the PFU engine 202 . According to the mapping set in the PFU configuration map 212, the PFU programmer and controller 204 identifies an active mode (or process) at any given time and activates the corresponding PFU program programmed into the PFU engine 202, or otherwise The PFU engine 202 is programmed. Once the correct PFU program is loaded and/or activated, the PFU engine 202 is utilized to modify or enhance the operation of the MC 104 accordingly.

这样,PFU编程器和控制器204可以将各模式(或进程)与相应的PFU程序进行映射,除非被另一模式取代或者直到被另一模式取代为止。响应于各后续编程命令或模式变化,PFU编程器和控制器204从ROM 210或RAM 208利用所识别的预先确定的PFU程序来激活PFU引擎202或以其它方式对PFU引擎202进行编程,然后相应地更新PFU配置映射212。特别地,PFU编程器和控制器204咨询PFU配置映射212,并且判断与相应模式相关联的PFU程序是否已被加载到PFU引擎202内。如果与相应模式相关联的PFU程序已被加载到PFU引擎202内,则PFU编程器和控制器204停用当前的PFU程序(在存在的情况下),并且针对激活中的模式激活PFU引擎202内的下一PFU程序。如果PFU引擎202没有加载适合新模式的PFU程序,则PFU编程器和控制器204访问存储所识别的PFU程序的RAM 208或ROM 210,并且相应地对PFU引擎202进行编程。In this way, the PFU programmer and controller 204 can map each mode (or process) with a corresponding PFU program unless or until replaced by another mode. In response to each subsequent programming command or mode change, PFU programmer and controller 204 utilizes the identified predetermined PFU program from ROM 210 or RAM 208 to activate or otherwise program PFU engine 202, and then accordingly. to update the PFU configuration map 212. In particular, the PFU programmer and controller 204 consults the PFU configuration map 212 and determines whether the PFU program associated with the corresponding mode has been loaded into the PFU engine 202. If the PFU program associated with the corresponding mode has been loaded into the PFU engine 202, the PFU programmer and controller 204 deactivates the current PFU program (if present) and activates the PFU engine 202 for the active mode within the next PFU program. If the PFU engine 202 is not loaded with a PFU program suitable for the new mode, the PFU programmer and controller 204 accesses the RAM 208 or ROM 210 storing the identified PFU program and programs the PFU engine 202 accordingly.

在一个实施例中,PFU编程器和控制器204识别PFU引擎202在无需覆盖PFU引擎202内当前所加载的任何PFU程序的情况下、是否具有足以对下一PFU程序进行编程的可用空间。如果PFU引擎202具有该可用空间,则将下一PFU程序加载到该可用空间中。然而,如果PFU引擎202不具有足以加载下一PFU程序的可用空间,则PFU编程器和控制器204使用替换策略以覆盖当前驻留在PFU引擎202内的一个或多个PFU程序。该替换策略可以是最近最少使用(LRU)算法等,但还可以考虑到加载中的PFU程序所需的可编程空间的量。例如,如果较小的最近最少使用的PFU程序不会为要加载的下一PFU程序提供充足的空间,则尽管最近使用较大的PFU程序的频率更高,也可以选择并覆盖该较大的PFU程序。在一个实施例中,如果在PFU引擎202内正覆盖的任何PFU程序的副本没有存储在ROM 210或RAM 208内,并且如果RAM 208具有充足的可用存储空间,则在PFU引擎202中覆盖PFU程序之前,PFU编程器和控制器204可以将该PFU程序从PFU引擎202卸载或复制到RAM 208中。In one embodiment, the PFU programmer and controller 204 identifies whether the PFU engine 202 has enough free space to program the next PFU program without overwriting any PFU programs currently loaded within the PFU engine 202. If the PFU engine 202 has the free space, the next PFU program is loaded into the free space. However, if the PFU engine 202 does not have enough free space to load the next PFU program, the PFU programmer and controller 204 uses a replacement strategy to overwrite one or more PFU programs currently residing within the PFU engine 202. The replacement strategy may be a least recently used (LRU) algorithm or the like, but may also take into account the amount of programmable space required by the PFU program being loaded. For example, if a smaller least recently used PFU program does not provide enough space for the next PFU program to be loaded, the larger PFU program may be selected and overwritten despite being used more recently PFU program. In one embodiment, if a copy of any PFU program being overwritten within PFU engine 202 is not stored in ROM 210 or RAM 208, and if RAM 208 has sufficient storage space available, the PFU program is overwritten in PFU engine 202 Previously, the PFU programmer and controller 204 could unload or copy the PFU program from the PFU engine 202 into the RAM 208 .

尽管RAM 208可以存储数量相当可观的PFU程序,但在RAM 208不够大而无法存储在任何给定时间尝试下载的所有PFU程序的情况下,PFU编程器和控制器204可以采取适当动作。例如,如果进程尝试对未被发现的或不可用的PFU程序进行配置,则PFU编程器和控制器204可以仅仅针对该进程禁用PFU引擎202的操作。可选地,PFU编程器和控制器204可以加载或以其它方式激活诸如默认PFU程序PGM1等的标准PFU程序,只要任何其它PFU程序未被永久覆盖即可。Although RAM 208 can store a considerable number of PFU programs, in cases where RAM 208 is not large enough to store all of the PFU programs attempted to be downloaded at any given time, PFU programmer and controller 204 can take appropriate action. For example, if a process attempts to configure an undiscovered or unavailable PFU program, the PFU programmer and controller 204 may disable operation of the PFU engine 202 for that process only. Alternatively, the PFU programmer and controller 204 may load or otherwise activate standard PFU programs, such as the default PFU program PGM1, as long as any other PFU programs are not permanently overwritten.

图3是根据本发明的一个实施例的使用可编程逻辑301所实现的、PFU编程器和控制器204与PFU引擎202接合的简化框图。在所示实施例中,可编程逻辑301被细分为一组“P”个大致相同的可编程区段303,分别被示为可编程区段P1、P2、…、PP,其中“P”是正整数。PFU编程器和控制器204将一个或多个PFU程序编程到可编程逻辑301中。特别地,PFU编程器和控制器204分配可编程区段303中的足以对PFU程序进行编程的一个或多个可编程区段303,然后将该PFU程序加载到已分配区段303中以在PFU引擎202内实现相应的PFU功能。PFU编程器和控制器204保持用以识别并定位加载到PFU引擎202中的各PFU程序的指针等,并且基于操作模式或活动进程来激活或停用所加载的PFU程序。3 is a simplified block diagram of a PFU programmer and controller 204 interfacing with a PFU engine 202, implemented using programmable logic 301, in accordance with one embodiment of the present invention. In the illustrated embodiment, programmable logic 301 is subdivided into a set of "P" substantially identical programmable sections 303, shown as programmable sections P1, P2, . . . , PP, where "P" is a positive integer. PFU programmer and controller 204 programs one or more PFU programs into programmable logic 301 . In particular, the PFU programmer and controller 204 allocates one or more programmable sections 303 of the programmable sections 303 sufficient to program the PFU program, and then loads the PFU program into the allocated section 303 to Corresponding PFU functions are implemented in the PFU engine 202 . The PFU programmer and controller 204 maintains pointers, etc. to identify and locate the various PFU programs loaded into the PFU engine 202, and activate or deactivate the loaded PFU programs based on the operating mode or active process.

可编程逻辑301可以是相对较大的资源,诸如由现场可编程门阵列(FPGA)等实现,以针对多个应用进程中的各应用进程一次对多个PFU程序进行编程。然而,可编程逻辑301是有限的资源,因为其余的未分配区段303可能不足以对要编程的新的PFU程序进行编程。在这种情况下,PFU编程器和控制器204在RAM 208中已不存在副本、并且在RAM 208中存在可用的充足空间的情况下,将现有的PFU程序从可编程逻辑301复制到RAM 208中,然后可以利用新的PFU程序来对已分配区段303进行编程。在进程已完成了操作、使得该进程终止的情况下,或者在模式切换的情况下,在PFU引擎202和/或RAM 208内,针对该进程已被编程的任何PFU程序可被无效并且最终被覆盖。Programmable logic 301 may be a relatively large resource, such as implemented by a field programmable gate array (FPGA) or the like, to program multiple PFU programs at once for each of multiple application processes. However, programmable logic 301 is a limited resource as the remaining unallocated sections 303 may not be sufficient to program the new PFU program to be programmed. In this case, the PFU programmer and controller 204 has no copy in RAM 208, and if sufficient space is available in RAM 208, copy the existing PFU program from programmable logic 301 to RAM In 208, the allocated section 303 can then be programmed with the new PFU program. In the event that a process has completed operations, causing the process to terminate, or in the event of a mode switch, within the PFU engine 202 and/or RAM 208, any PFU programs that have been programmed for that process may be invalidated and eventually cover.

各可编程区段303可以包括足以执行简单的PFU程序的可编程逻辑。如图所示,例如,将第一PFU程序PGMA(相对简单)加载到第一可编程区段P1中以实现第一程序PFUA,并且将第二PFU程序PGMB(较复杂)加载到两个可编程区段P2和P3中以实现第二程序PFUB。另外,可以将甚至更多个复杂的PFU程序加载到多于两个的区段303中。根据PFU程序的相对大小和复杂度以及可编程区段303的总数,可以将任何数量的PFU程序编程到可编程逻辑301中。Each programmable section 303 may include programmable logic sufficient to perform a simple PFU program. As shown, for example, the first PFU program PGMA (relatively simple) is loaded into the first programmable section P1 to implement the first program PFUA, and the second PFU program PGMB (more complex) is loaded into the two programmable sections P1 Sections P2 and P3 are programmed to implement the second program PFUB. Additionally, even more complex PFU programs can be loaded into more than two sections 303 . Depending on the relative size and complexity of the PFU programs and the total number of programmable sections 303, any number of PFU programs may be programmed into programmable logic 301.

在一个实施例中,PFU编程器和控制器204进行动态分配,其中PFU编程器和控制器204识别可用于分配的下一区段303,并且在扫描新的PFU程序时,开始编程。如果PFU程序在第一分配区段303已被完全编程之后继续进行使得需要附加区段303来完成编程,则对附加区段进行即时动态分配,直到PFU程序被完全编程到PFU引擎202中为止。在一个替代实施例中,PFU编程器和控制器204首先评价新的PFU程序的大小,并且在编程之前相应地分配适当数量的可编程区段303。在另一替代实施例中,PFU程序可被配置为包括用于表示该PFU程序所需的区段303的数量(或者至少可编程元件的数量和类型)的资源声明(RSRC)903等(图9)。在这种情况下,PFU编程器和控制器204检索资源声明903,预先分配所指示的数量的区段303,然后使用PFU程序来对已分配区段进行编程。In one embodiment, the PFU programmer and controller 204 performs dynamic allocation, wherein the PFU programmer and controller 204 identifies the next section 303 available for allocation, and when a new PFU program is scanned, programming begins. If the PFU program proceeds after the first allocation section 303 has been fully programmed such that additional sections 303 are required to complete the programming, the additional sections are dynamically allocated on the fly until the PFU program is fully programmed into the PFU engine 202 . In an alternate embodiment, the PFU programmer and controller 204 first evaluates the size of the new PFU program and allocates the appropriate number of programmable segments 303 accordingly prior to programming. In another alternative embodiment, a PFU program may be configured to include a resource declaration (RSRC) 903 or the like (Fig. 9). In this case, the PFU programmer and controller 204 retrieves the resource declaration 903, pre-allocates the indicated number of sections 303, and then uses the PFU program to program the allocated sections.

一旦针对给定进程将PFU程序编程到可编程逻辑301中、并且相应地更新PFU配置映射212,PFU编程器和控制器204监测或以其它方式被提供模式信息,并且使得相应的PFU程序能够在该模式期间进行工作。Once a PFU program is programmed into the programmable logic 301 for a given process, and the PFU configuration map 212 is updated accordingly, the PFU programmer and controller 204 monitors or is otherwise provided with mode information and enables the corresponding PFU program in work during this mode.

图4是示出根据本发明的一个实施例的用于对PFU 114进行初始编程的方法的框图。在POR时,在块302中,BIOS 108进行用于进行硬件初始化以向OS 120以及程序或应用提供运行时服务的初始化处理和例程。初始化例如包括供处理器100使用的存储器110和系统存储器112的初始化。FIG. 4 is a block diagram illustrating a method for initially programming the PFU 114 according to one embodiment of the present invention. At POR, in block 302, BIOS 108 performs initialization processes and routines for performing hardware initialization to provide runtime services to OS 120 and programs or applications. Initialization includes, for example, initialization of memory 110 and system memory 112 for use by processor 100 .

下一组块304、306和308可以由BIOS 108或OS 120根据实现来进行。在下一块304中,判断在设置有PFU 114的ROM 210的情况下、PFU程序116是否位于ROM 210上。例如,该PFU程序可以作为PGM1(例如,默认PFU程序等)存储在ROM 210(在设置的情况下)上。如果PFU程序116不是位于ROM210上、或者没有设置ROM 210,则操作进入块306,其中在该块306中,在存储器110上访问PFU程序116,并且将该PFU程序116复制到本地存储器206的RAM 208(在设置的情况下)、或者复制到系统存储器112。The next set of blocks 304, 306 and 308 may be performed by BIOS 108 or OS 120 depending on the implementation. In the next block 304, it is determined whether the PFU program 116 is located on the ROM 210 in the case where the ROM 210 of the PFU 114 is provided. For example, the PFU program may be stored on ROM 210 (if provided) as PGM1 (eg, the default PFU program, etc.). If the PFU program 116 is not located on the ROM 210 , or the ROM 210 is not set, then operation proceeds to block 306 where the PFU program 116 is accessed on the memory 110 and copied to the RAM of the local memory 206 208 (if set up), or copied to system memory 112.

在块304或306之后,操作进入块308,其中在该块308中,将编程命令PGM<ADDR>发送至MC 104的PFU 114以对PFU引擎202进行编程。该PGM命令可以由PFU编程器和控制器204接收到,其中该PFU编程器和控制器204使用所包括的地址ADDR来定位PFU程序118。在将PFU程序118预先存储在处理器100内的ROM 210上的实施例中,ADDR标识ROM 210内的位置,例如PGM1(或ROM 210内的任何其它预先存储的PFU程序)的位置等。在没有预先存储PFU程序118、而且在处理器100上设置有本地存储器206的RAM 208的实施例中,可以将PFU程序116复制到RAM 208内的ADDR对所复制的PFU程序的位置进行标识的位置。例如,ADDR可以标识RAM 208上的作为PGMA等所存储的所复制的PFU程序118的位置。在没有设置本地存储器206的情况下,将PFU程序116复制作为系统存储器112中所存储的PFU程序118,并且ADDR标识系统存储器112中的PFU程序118的位置。Following block 304 or 306 , operation proceeds to block 308 where a program command PGM<ADDR> is sent to the PFU 114 of the MC 104 to program the PFU engine 202 . The PGM command may be received by the PFU programmer and controller 204, which locates the PFU program 118 using the included address ADDR. In embodiments where PFU program 118 is pre-stored on ROM 210 within processor 100, ADDR identifies a location within ROM 210, such as the location of PGM1 (or any other pre-stored PFU program within ROM 210), or the like. In embodiments where the PFU program 118 is not pre-stored and the RAM 208 of the local memory 206 is provided on the processor 100, the PFU program 116 may be copied to the ADDR within the RAM 208 to identify the location of the copied PFU program Location. For example, the ADDR may identify the location on RAM 208 of the replicated PFU program 118 stored as a PGMA or the like. In the case where no local memory 206 is provided, the PFU program 116 is copied as the PFU program 118 stored in the system memory 112 , and the ADDR identifies the location of the PFU program 118 in the system memory 112 .

然后,操作进入块310,其中在该块310中,PFU编程器和控制器204使用所设置的ADDR来访问PFU程序(例如,PFU程序118和/或PGM1和/或PGMA),并且相应地对PFU引擎202进行编程并启用PFU引擎202。然后,初始编程的方法完成。一旦这样对PFU引擎202进行了编程并且启用该已编程的PFU引擎202,该已编程的PFU引擎202根据PFU程序来修改和/或增强MC104的操作。Operation then proceeds to block 310 where the PFU programmer and controller 204 uses the set ADDR to access the PFU program (eg, PFU program 118 and/or PGM1 and/or PGMA) and correspondingly The PFU engine 202 is programmed and the PFU engine 202 is enabled. Then, the method of initial programming is completed. Once the PFU engine 202 is thus programmed and enabled, the programmed PFU engine 202 modifies and/or enhances the operation of the MC 104 according to the PFU program.

图5是描述根据本发明的一个实施例的、可用于对PFU 114进行编程或以其它方式进行重新编程的可执行二进制应用(APP)502的简化框图。二进制APP 502包括头部504和主体506。二进制APP 502是以通用形式示出的,并且可被实现为可以由处理器100的处理核C0~C3中的任一个或多个处理核成功执行的二进制可执行文件(.EXE)文件、字节码文件(.NET、Java等)或任何其它类型的可执行代码。在所示配置中,头部504包括至少一个PFU写入指令,其中提供各写入指令以指定或定位可用于对PFU 114进行编码的相应PFU程序。如图所示,例如,头部504包括用于标识头部504内所包含的相应PFU程序PGMA_PFU的包含操作数(或参数)PGMA的PFU写入指令WRITE_PFU。可选地,PFU程序PGMA_PFU可以设置在二进制APP 502的不同区段内。在任何情况下,操作数PGMA可以是用于定位二进制APP 502和/或系统存储器112内的PFU程序PGMA_PFU的地址或偏移量。尽管二进制APP 502包括用于标识相应PFU程序的仅一个PFU写入指令,但可执行二进制应用可以包括用于加载可以在任何给定时间加载到处理器100中的任何数量的PFU程序的任何数量的PFU写入指令。5 is a simplified block diagram depicting an executable binary application (APP) 502 that may be used to program or otherwise reprogram the PFU 114 in accordance with one embodiment of the present invention. The binary APP 502 includes a header 504 and a body 506 . The binary APP 502 is shown in a general-purpose form and may be implemented as a binary executable (.EXE) file, a word, a binary executable (.EXE) file that can be successfully executed by any one or more of the processing cores C0-C3 of the processor 100 Section code files (.NET, Java, etc.) or any other type of executable code. In the configuration shown, header 504 includes at least one PFU write instruction, wherein each write instruction is provided to specify or locate a corresponding PFU program that may be used to encode PFU 114 . As shown, for example, the header 504 includes a PFU write instruction WRITE_PFU containing an operand (or parameter) PGMA for identifying the corresponding PFU program PGMA_PFU contained within the header 504 . Alternatively, the PFU program PGMA_PFU may be provided in a different section of the binary APP 502 . In any case, operand PGMA may be an address or offset used to locate the PFU program PGMA_PFU within binary APP 502 and/or system memory 112 . Although binary APP 502 includes only one PFU write instruction for identifying a corresponding PFU program, the executable binary application may include any number of PFU programs for loading any number of PFU programs that may be loaded into processor 100 at any given time the PFU write command.

在操作期间,处理核(例如,C0)进行从存储器110向系统存储器112访问和/或加载二进制APP 502,并且执行WRITE_PFU指令。假定本地存储器206的RAM 208存在,则使用WRITE_PFU指令的操作数PGMA来定位二进制APP502内的PFU程序PGMA_PFU,并且将PFU程序PGMA_PFU写入RAM 208中。可选地,可以将PFU程序PGMA_PFU写入处理器100的PFU 114可访问的任何其它存储器中。头部121还包括具有位置(或地址)操作数LOC的PFU编程指令PGM_PFU,其中该PFU编程指令PGM_PFU被转发至PFU 114的PFU编程器和控制器204。LOC标识PFU程序PGMA_PFU的RAM 208内的从二进制APP 502所复制的位置。然后,PFU编程器和控制器204利用来自RAM 208的PFU程序PGMA_PFU来对PFU引擎202进行编程。During operation, a processing core (eg, C0) makes accesses and/or loads binary APP 502 from memory 110 to system memory 112, and executes a WRITE_PFU instruction. Assuming the RAM 208 of the local memory 206 exists, the PFU program PGMA_PFU within the binary APP 502 is located using the operand PGMA of the WRITE_PFU instruction, and the PFU program PGMA_PFU is written into the RAM 208 . Alternatively, the PFU program PGMA_PFU may be written into any other memory accessible by the PFU 114 of the processor 100 . The header 121 also includes a PFU programming instruction PGM_PFU with a location (or address) operand LOC, where the PFU programming instruction PGM_PFU is forwarded to the PFU programmer and controller 204 of the PFU 114 . The LOC identifies the location within the RAM 208 of the PFU program PGMA_PFU copied from the binary APP 502 . The PFU programmer and controller 204 then uses the PFU program PGMA_PFU from the RAM 208 to program the PFU engine 202 .

在处理器100内没有设置本地存储器206(或任何其它适当存储器)的配置中,WRITE_PFU指令可以简单地标识二进制APP 502内的PFU程序PGMA_PFU的位置,而无需实际将PFU程序PGMA_PFU复制到处理器100的任何本地存储器中。在这种情况下,利用PFU程序PGMA_PFU在系统存储器112内的地址来更新LOC。将PFU编程指令PGM_PFU转发至PFU 114的PFU编程器和控制器204,其中该PFU编程器和控制器204使用操作数LOC来定位系统存储器112中的PFU程序PGMA_PFU以对PFU引擎202进行编程。In configurations where local memory 206 (or any other suitable memory) is not provided within processor 100 , the WRITE_PFU instruction may simply identify the location of the PFU program PGMA_PFU within binary APP 502 without actually copying the PFU program PGMA_PFU to processor 100 in any local storage. In this case, the LOC is updated with the address within system memory 112 of the PFU program PGMA_PFU. The PFU programming instruction PGM_PFU is forwarded to the PFU programmer and controller 204 of the PFU 114 , which uses the operand LOC to locate the PFU program PGMA_PFU in the system memory 112 to program the PFU engine 202 .

在替代配置中,在二进制APP 502中可以使用单个指令或命令,其中该单个指令或命令在执行的情况下,被转发至PFU编程器和控制器204。PFU编程器和控制器204使用所包括的采用地址或偏移量等的形式的操作数来定位PFU程序PGMA_PFU,其中使用该PFU程序PGMA_PFU来对PFU引擎202进行直接编程。在任意的编程配置中,PFU编程器和控制器204启用新编程到PFU引擎202中的PFU程序PGMA_PFU。In an alternative configuration, a single instruction or command may be used in the binary APP 502, where the single instruction or command, if executed, is forwarded to the PFU programmer and controller 204. The PFU programmer and controller 204 uses the included operands in the form of addresses or offsets, etc. to locate the PFU program PGMA_PFU with which the PFU engine 202 is directly programmed. In any programming configuration, the PFU programmer and controller 204 enables the PFU program PGMA_PFU newly programmed into the PFU engine 202 .

系统存储器112(和/或其它外部存储器)可以包括被加载以供处理器100随时间经过而执行的多个应用程序。多个应用或进程可以被加载到处理核C1~C3中的任一个或多个处理核中,但在所示实施例中各处理核通常一次仅执行一个进程。各处理核一次执行多个进程的实施例也被考虑。可以将多个应用程序分配给其中一个处理核来执行。OS 120包括用于调度处理器100的应用程序的执行的调度器等,处理器100的应用程序的执行包括针对给定处理核一次一个地换入换出多个进程中的各进程以供执行。多个应用可以由给定处理核来执行,其中各应用可以包括用于对PFU 114进行编程的一个或多个PFU程序。可以使用PFU编程器和控制器204和本地存储器206以及PFU配置映射212来管理与处理器100的不同处理模式相对应的不同进程,以随时间的经过控制PFU引擎202的编程。System memory 112 (and/or other external memory) may include a number of applications loaded for execution by processor 100 over time. Multiple applications or processes may be loaded into any one or more of the processing cores C1-C3, but in the illustrated embodiment each processing core typically executes only one process at a time. Embodiments in which each processing core executes multiple processes at once are also contemplated. Multiple applications can be assigned to one of the processing cores for execution. OS 120 includes a scheduler or the like for scheduling execution of applications for processor 100 including swapping in and out each of a plurality of processes for execution one at a time for a given processing core . Multiple applications may be executed by a given processing core, where each application may include one or more PFU programs for programming PFU 114 . Different processes corresponding to different processing modes of processor 100 may be managed using PFU programmer and controller 204 and local memory 206 and PFU configuration map 212 to control programming of PFU engine 202 over time.

图6是根据本发明的一个实施例所实现的图3的可编程逻辑301的更详细框图。所示的可编程逻辑301包括可编程元件的阵列,该阵列包括被示出为配置在逻辑元件601的XY矩阵中的可编程逻辑元件(LE)601,这些可编程逻辑元件各自被示出为LExy,其中x和y分别表示阵列的行标和列标。各行还包括杂项逻辑块603的阵列中的至少一个,其中杂项逻辑块603各自包括用以补充逻辑元件601的矩阵的支持逻辑。各杂项逻辑块603可以例如包括一个或多个存储元件、一个或多个寄存器、一个或多个锁存器、一个或多个复用器、一个或多个加法器(用以相加或相减数字值)、一组布尔逻辑元件或门(例如,诸如或(OR)门、与(AND)门、反相器、异或(XOR)门等的逻辑门)等。各杂项逻辑块603可以包括可以被配置为移位寄存器或数据拌和器(swizzler)等以用于灵活的数据操作的一个或多个寄存器。逻辑元件601和杂项逻辑块603与路由网格耦接到一起,其中该路由网格包括可编程交叉开关或互连器605的矩阵。各可编程互连器605包括多个开关以选择性地将可编程装置连接在一起。路由网格包括足以将逻辑元件601和杂项逻辑块603中的多个器件连接在一起以进行简单处理操作和更复杂处理操作的连接性。FIG. 6 is a more detailed block diagram of the programmable logic 301 of FIG. 3 implemented in accordance with one embodiment of the present invention. The illustrated programmable logic 301 includes an array of programmable elements including programmable logic elements (LEs) 601 shown arranged in an XY matrix of logic elements 601, each of which is shown as LExy, where x and y represent the row and column indices of the array, respectively. Each row also includes at least one of an array of miscellaneous logic blocks 603 , where the miscellaneous logic blocks 603 each include support logic to complement the matrix of logic elements 601 . Each miscellaneous logic block 603 may, for example, include one or more storage elements, one or more registers, one or more latches, one or more multiplexers, one or more adders (to add or add subtracting a digital value), a set of Boolean logic elements, or gates (eg, logic gates such as an OR (OR) gate, an AND (AND) gate, an inverter, an exclusive OR (XOR) gate, etc.), and the like. Various miscellaneous logic blocks 603 may include one or more registers that may be configured as shift registers or data swizzlers, or the like, for flexible data manipulation. Logic elements 601 and miscellaneous logic blocks 603 are coupled together with a routing grid that includes a matrix of programmable crossbar switches or interconnectors 605 . Each programmable interconnect 605 includes a plurality of switches to selectively connect programmable devices together. The routing mesh includes sufficient connectivity to connect multiple devices in logic elements 601 and miscellaneous logic blocks 603 together for simple processing operations and more complex processing operations.

如本文进一步描述的,各可编程区段303包括一个或多个可编程元件(逻辑元件601、逻辑块603)以及用于选择性地将装置和元件连接在一起以实现PFU 114的用于修改MC104的操作的相应功能的相应路由网格(互连器605)。路由网格是包括多个开关等以在逻辑元件601和杂项逻辑块603之间进行输入和输出的重定向的切换矩阵。As further described herein, each programmable section 303 includes one or more programmable elements (logic element 601 , logic block 603 ) as well as modifications for selectively connecting devices and elements together to implement PFU 114 The corresponding routing mesh (interconnector 605 ) of the corresponding function of the operation of the MC 104 . A routing grid is a switching matrix that includes a number of switches, etc. to redirect input and output between logic elements 601 and miscellaneous logic blocks 603 .

可编程逻辑301包含可编程存储器607,其中使用该可编程存储器607来接收PFU程序(例如,PFU程序116、PFU程序118、PGMA、PGMB、PGMC、…、PGM1、PGM2、PGM3等中的一个或多个),以对逻辑元件601、相应杂项逻辑块603和可编程互连器605中的所选择器件进行编程,从而创建用于在被激活或以其它方式启用时修改MC 104的操作的相应PFU功能。可编程存储器607还可以包括存储位置或寄存器等以接收输入操作数或值并且存储PFU程序的输出结果。可编程存储器607分散在可编程逻辑301的可编程区段303之间,并且可以由进行特定PFU操作的所选已分配区段303中的各可编程区段303单独或共同地使用。可编程存储器607可以被配置为可编程逻辑301内或者甚至MC 104内的专用存储器空间,并且无法进行外部访问。存储器607可以以诸如静态随机存取存储器(SRAM)等的任意合适方式来实现。Programmable logic 301 includes programmable memory 607 that is used to receive a PFU program (eg, one of PFU program 116, PFU program 118, PGMA, PGMB, PGMC, . . . , PGM1, PGM2, PGM3, etc. or multiple) to program selected ones of logic elements 601, corresponding miscellaneous logic blocks 603, and programmable interconnects 605 to create corresponding logic for modifying the operation of MC 104 when activated or otherwise enabled PFU function. Programmable memory 607 may also include storage locations or registers or the like to receive input operands or values and store output results of the PFU program. Programmable memory 607 is dispersed among programmable sections 303 of programmable logic 301, and may be used individually or collectively by each of the programmable sections 303 in selected allocated sections 303 for particular PFU operations. Programmable memory 607 may be configured as a dedicated memory space within programmable logic 301 or even within MC 104 and cannot be accessed externally. Memory 607 may be implemented in any suitable manner, such as static random access memory (SRAM).

图7是根据本发明的一个实施例所实现的可编程逻辑元件601的示意框图。逻辑元件601包括查找表(LUT)701、三个2输入复用器(MUX)705、706和707、2输入加法器709以及时钟寄存器(或锁存器)711。可编程存储器607的一部分被示出为用于对逻辑元件601、任意所包括的杂项逻辑块603和一个或多个互连器605的一部分进行编程。如以上所说明的,可编程存储器607可以用于提供输入值、存储输出结果、以及/或者存储针对处理操作的多次迭代中的各次迭代所更新的中间值。FIG. 7 is a schematic block diagram of a programmable logic element 601 implemented in accordance with one embodiment of the present invention. The logic element 601 includes a look-up table (LUT) 701 , three 2-input multiplexers (MUXs) 705 , 706 and 707 , a 2-input adder 709 , and a clock register (or latch) 711 . A portion of programmable memory 607 is shown for programming a portion of logic element 601 , any included miscellaneous logic blocks 603 and one or more interconnects 605 . As explained above, programmable memory 607 may be used to provide input values, store output results, and/or store intermediate values updated for each of multiple iterations of a processing operation.

如图所示,使用被示出为PGM_PFU的PFU程序来对存储器607进行编程。LUT 701被示出为利用存储器607中的相应LUT值(LV)位进行编程的4X1LUT。MUX 705、706和707各自具有由存储器607所存储的相应存储器位(被分别示出为存储器位M1、M2和M3)所控制的选择输入。将LUT 701的被示出为LO的输出提供给MUX 705的一个输入和寄存器711的输入,其中将寄存器711的输出提供给MUX 705的另一输入。将MUX 705的输出提供给MUX 706的一个输入和加法器709的一个输入。将加法器709的输出提供给MUX 706的另一输入,其中将MUX706的输出提供给可编程互连器605的输入。存储器607包括可编程位V,其中将该可编程位V提供给MUX 707的一个输入,将MUX 707的另一输入耦接至可编程互连器605的输出,并且将MUX 707的输出提供给加法器709的另一输入。将加法器709的输出提供给MUX 706的另一输入。存储器607还可以用于对互连器605和任意杂项逻辑块603的相应部分进行编程。As shown, memory 607 is programmed using the PFU program shown as PGM_PFU. LUT 701 is shown as a 4×1 LUT programmed with corresponding LUT value (LV) bits in memory 607 . MUXs 705, 706, and 707 each have select inputs controlled by corresponding memory bits stored by memory 607 (shown as memory bits Ml, M2, and M3, respectively). The output of LUT 701 , shown as LO, is provided to one input of MUX 705 and to the input of register 711 , where the output of register 711 is provided to the other input of MUX 705 . The output of MUX 705 is provided to one input of MUX 706 and one input of adder 709. The output of adder 709 is provided to another input of MUX 706 , where the output of MUX 706 is provided to the input of programmable interconnector 605 . Memory 607 includes a programmable bit V, wherein the programmable bit V is provided to one input of MUX 707, the other input of MUX 707 is coupled to the output of programmable interconnect 605, and the output of MUX 707 is provided to Another input to adder 709. The output of adder 709 is provided to the other input of MUX 706 . Memory 607 may also be used to program corresponding portions of interconnect 605 and any miscellaneous logic blocks 603 .

所示的逻辑元件601仅是示例性的,并且替代版本可以根据特定配置被考虑。逻辑元件601可以被配置在位片粒度级以应对数据值的单个位。针对包括多个位的数据值,使用多个位片逻辑元件。例如,针对64位数据值,并行使用64个位片逻辑元件。The illustrated logic element 601 is exemplary only, and alternative versions may be considered depending on the particular configuration. Logic elements 601 may be configured at a bit slice granularity level to address a single bit of a data value. For data values that include multiple bits, multiple bit slice logic elements are used. For example, for 64-bit data values, 64 bit slice logic elements are used in parallel.

在操作中,利用LUT 701的LUT数据值(LV)、MUX 705~707的选择输入M1~M3和提供给MUX 707的输入的可编程数据值V来对存储器607进行编程。从指令的操作数,从存储器607,或者从另一编程块来提供四个输入值S0~S3,以选择16个值中被编程到LUT 701中的值,其中在LUT 701的输出处提供所选择的值作为LO。对MUX 705进行编程,以直接提供LUT701的LO输出或提供被寄存的版本。可以使用被寄存的版本以插入为了PFU操作的定时为目的的延迟。对MUX 706进行编程,以直接提供MUX 705的输出、或者将作为输出所要提供的或者要提供给另一编程块的加法器709的输出提供给互连器605。加法器709将所选择的值与MUX 705的输出相加,其中所选择的值是编程值V或者来自于互连器605的输出(从另一输入或者从另一编程块所提供)。In operation, memory 607 is programmed with the LUT data value (LV) of LUT 701 , the select inputs M1 - M3 of MUX 705 - 707 , and the programmable data value V provided to the input of MUX 707 . The four input values S0-S3 are provided from the operands of the instruction, from memory 607, or from another programming block to select the one of the 16 values to be programmed into the LUT 701, where all of the values are provided at the output of the LUT 701. The selected value is used as LO. Program the MUX 705 to provide the LO output of the LUT701 directly or to provide a registered version. The registered version can be used to insert delays for the purpose of timing of PFU operations. MUX 706 is programmed to provide the output of MUX 705 directly, or to provide interconnect 605 the output of adder 709 to be provided as an output or to be provided to another programming block. Adder 709 adds the selected value, which is the programming value V or the output from interconnector 605 (provided from another input or from another programming block), to the output of MUX 705 .

图8是根据本发明的一个实施例所实现的LUT 701的示意图。提供被组织为二进制MUX树的一组2输入MUX,以基于选择输入S3:S0(其中S0是最低有效位)而在16个输入值LV0~LV15之间进行选择。如先前所述,将LV0~LV15编程到存储器607中。将16个输入值LV0~LV15的各相邻对(LV0和LV1、LV2和LV3、…、等等)提供给八个2输入MUX 801的相应输入对,其中这些2输入MUX 801各自在其选择输入处接收S0。将MUX 801的8个输出的各相邻对提供给四个2输入MUX 803的相应输入对,其中这些2输入MUX 803各自在其选择输入处接收S1。将MUX 803的四个输出的各相邻对提供给两个2输入MUX805的相应输入对,其中这些2输入MUX 805各自在其选择输入处接收S2。将MUX 805的输出对提供给输出MUX 807的输入对,其中输出MUX 807在其选择输入处接收S3并且在其输出处提供LUT输出LO。应该理解,图8所示的配置仅是本领域普通技术人员能够理解的很多合适LUT实现其中之一。Figure 8 is a schematic diagram of a LUT 701 implemented in accordance with one embodiment of the present invention. A set of 2-input MUXs organized as a binary MUX tree is provided to select between 16 input values LV0-LV15 based on selection inputs S3:S0 (where S0 is the least significant bit). LV0-LV15 are programmed into memory 607 as previously described. Each adjacent pair of 16 input values LV0-LV15 (LV0 and LV1, LV2 and LV3, . S0 is received at the input. Each adjacent pair of the 8 outputs of MUX 801 is provided to a corresponding input pair of four 2-input MUXs 803, each of which receives S1 at its select input. Each adjacent pair of the four outputs of MUX 803 is provided to a corresponding input pair of two 2-input MUXs 805, each of which receives S2 at its select input. The output pair of MUX 805 is provided to the input pair of output MUX 807, which receives S3 at its select input and provides the LUT output LO at its output. It should be understood that the configuration shown in Figure 8 is only one of many suitable LUT implementations that can be understood by those of ordinary skill in the art.

图9是根据本发明的一个实施例的用于对PFU引擎202进行编程的PFU程序901的格式的简化框图,其中PFU程序901可以表现PFU程序116、118、PGMA、PGMB、PGMC、…、PGM1、PGM2、PGM3等中的任意的形式。在这种情况下,PFU程序901可以包括资源声明(RSRC)903,其中该RSRC 903用于表示为了实现PFU程序而在可编程逻辑301内所需的资源量。作为示例,资源声明903可以表示为了完成编程所需的可编程区段的数量P。PFU编程器和控制器204可以在对PFU引擎202的编程期间读取资源声明903以分配相应数量的可编程区段303。尽管诸如通过追踪各逻辑元件601、杂项逻辑块603、可编程互连器605和/或可编程存储器607的量等可以使用较大的粒度,但这可能要求PFU编程器和控制器204随时间的经过而追踪可编程逻辑301的各个体元件。9 is a simplified block diagram of the format of a PFU program 901 for programming the PFU engine 202, where the PFU program 901 may represent the PFU programs 116, 118, PGMA, PGMB, PGMC, . . . , PGM1, according to one embodiment of the present invention , PGM2, PGM3, etc. any form. In this case, the PFU program 901 may include a resource declaration (RSRC) 903, where the RSRC 903 is used to indicate the amount of resources required within the programmable logic 301 to implement the PFU program. As an example, resource declaration 903 may represent the number P of programmable sections required to complete programming. PFU programmer and controller 204 may read resource declaration 903 during programming of PFU engine 202 to allocate a corresponding number of programmable segments 303 . Although greater granularity may be used, such as by tracking the amount of individual logic elements 601, miscellaneous logic blocks 603, programmable interconnects 605, and/or programmable memory 607, this may require the PFU programmer and controller 204 to change over time The individual elements of the programmable logic 301 are traced over the course of the .

PFU程序901还可以包括被称为位流的一系列的逻辑一(1)和零(0)。在一个实施例中,例如,响应于处理核所接收到的编程指令,PFU编程器和控制器204将可编程区段303的已分配区段的可编程存储器(包括可编程存储器607和互连器605的相应可编程存储器)排成大的序列化移位寄存器,然后在位流中移位、直到在各个已分配区段中进行了完全加载为止,然后解除可编程存储器的排列并且提供用以定位并标识编程后的PFU的指针。可以使用包括并行编程的可替代编程方法和格式。此外,可以将资源声明设置在PFU编程器和控制器204要进行读取的诸如开始或结束等的任意合适的位置处,以确保合适的编程。The PFU program 901 may also include a series of logical ones (1) and zeros (0) known as a bitstream. In one embodiment, for example, in response to programming instructions received by the processing cores, the PFU programmer and controller 204 assigns programmable memory (including programmable memory 607 and interconnects to the allocated sections of programmable section 303 ). 605) into a large serialized shift register, which is then shifted in the bitstream until fully loaded in each allocated section, then the programmable memory is de-arranged and provided with the pointer to locate and identify the programmed PFU. Alternative programming methods and formats including parallel programming may be used. Furthermore, the resource declaration may be placed at any suitable location, such as start or end, to be read by the PFU programmer and controller 204 to ensure proper programming.

图10是示出根据本发明的一个实施例的、用于生成对PFU 114的PFU引擎202进行编程所用的PFU程序116的示例方法的简化框图。诸如编程器等的应用生成器以所选格式来编写用于描述或以其它方式定义用于修改或增强MC 104的存储器控制器操作的PFU功能描述1002。PFU功能描述1002在其它方面可被称为PFU定义。可以以诸如LegUp、(Catapulttechnology公司的)Catapult、Verilog、HDL(硬件描述语言)、寄存器控制逻辑(RCL)、寄存器传送逻辑(RTL)等的任意合适的硬件编程语言来编写该PFU功能描述1002。将PFU功能描述1002提供给相应的PFU编程工具1004,其中该PFU编程工具1004被配置为将PFU功能描述1002转换为适合对PFU引擎202进行编程以根据PFU功能描述1002进行工作的PFU程序116。作为示例,PFU编程工具1004可以将PFU功能描述1002转换成可用于对PFU引擎202的可编程逻辑301的可编程区段303中的一个或多个可编程区段进行编程的相应位流。10 is a simplified block diagram illustrating an example method for generating a PFU program 116 for programming the PFU engine 202 of the PFU 114, according to one embodiment of the present invention. An application generator, such as a programmer, writes the PFU functional description 1002 in a selected format to describe or otherwise define the memory controller operation for modifying or enhancing the MC 104 . PFU functional description 1002 may otherwise be referred to as a PFU definition. The PFU functional description 1002 may be written in any suitable hardware programming language such as LegUp, Catapult (from Catapulttechnology, Inc.), Verilog, HDL (Hardware Description Language), Register Control Logic (RCL), Register Transfer Logic (RTL), and the like. The PFU functional description 1002 is provided to a corresponding PFU programming tool 1004 , wherein the PFU programming tool 1004 is configured to convert the PFU functional description 1002 into a PFU program 116 suitable for programming the PFU engine 202 to operate according to the PFU functional description 1002 . As an example, the PFU programming tool 1004 can convert the PFU functional description 1002 into a corresponding bitstream that can be used to program one or more of the programmable sections 303 of the programmable logic 301 of the PFU engine 202 .

一旦生成了PFU程序116,可以将该PFU程序116存储在存储器110上的供BIOS 108或OS 120访问的适当位置处,以根据前面所述的任何方法来对PFU114进行编程。可选地,可以将PFU程序116并入诸如二进制APP 502等的应用中,以在被执行时由该应用进行编程。Once the PFU program 116 is generated, the PFU program 116 may be stored in a suitable location on the memory 110 for access by the BIOS 108 or the OS 120 to program the PFU 114 according to any of the methods previously described. Alternatively, the PFU program 116 may be incorporated into an application, such as the binary APP 502, to be programmed by the application when executed.

图11是示出在向系统存储器112存储数据时可被编程到PFU 114中并且由MC 104执行的示例性加密处理的简化框图。移动(MOV)指令1102表示处理器100的任意核为了将寄存器(REG)1103中所存储的数据值DATA(数据)存储至系统存储器112中的指定地址ADDR所执行的任意类型的存储指令。利用KEY(密钥)1104和加密算法1106来对PFU 114的PFU引擎202进行编程。KEY1104是可以预先确定的并且被存储在PFU程序116内的任意二进制或十六进制值。加密算法1106根据任何标准或定制加密算法,例如数据加密标准(DES)、RSA公钥系统、MD5算法、高级加密标准(AES)、各种散列算法等。FIG. 11 is a simplified block diagram illustrating an exemplary encryption process that may be programmed into PFU 114 and performed by MC 104 when storing data to system memory 112 . The move (MOV) instruction 1102 represents any type of store instruction executed by any core of the processor 100 to store the data value DATA (data) stored in the register (REG) 1103 to the specified address ADDR in the system memory 112 . The PFU engine 202 of the PFU 114 is programmed with a KEY 1104 and an encryption algorithm 1106 . KEY 1104 is any binary or hexadecimal value that can be predetermined and stored within PFU program 116 . The encryption algorithm 1106 is based on any standard or custom encryption algorithm, such as Data Encryption Standard (DES), RSA Public Key System, MD5 algorithm, Advanced Encryption Standard (AES), various hashing algorithms, and the like.

在操作中,如由PFU 114进行修改后的MC 104从MOV指令1102中提取地址ADDR并且将该地址ADDR应用于加密算法1106的一个输入。将KEY 1104应用于另一输入,并且加密算法1106在其输出处提供相应的PAD(填充)值1108。换句话说,加密算法1106实质将KEY 1104和ADDR转换成PAD值1108。将来自REG 1103的DATA值应用于诸如异或(XOR)运算1110等的布尔逻辑函数的一个输入,将PAD值1108应用于另一输入,并且XOR运算1110进行所指示的布尔运算(例如,XOR)并在其输出处提供相应的加密数据值XDATA1112。MC 104将加密XDATA值1112而不是原始的DATA值存储于系统存储器112的地址ADDR处。In operation, the MC 104 , as modified by the PFU 114 , extracts the address ADDR from the MOV instruction 1102 and applies the address ADDR to an input to the encryption algorithm 1106 . The KEY 1104 is applied to the other input, and the encryption algorithm 1106 provides the corresponding PAD (padding) value 1108 at its output. In other words, encryption algorithm 1106 essentially converts KEY 1104 and ADDR to PAD value 1108. The DATA value from the REG 1103 is applied to one input of a Boolean logic function such as an exclusive OR (XOR) operation 1110, the PAD value 1108 is applied to the other input, and the XOR operation 1110 performs the indicated Boolean operation (e.g., XOR ) and provides the corresponding encrypted data value XDATA1112 at its output. The MC 104 stores the encrypted XDATA value 1112 at address ADDR of the system memory 112 instead of the original DATA value.

图12是示出在从系统存储器112加载数据时可被编程到PFU 114中并且由MC 104执行的反向加密处理的简化框图。图12的反向加密处理与图11的加密处理互补,其中将这两个处理一起存储在PFU程序116中,以实现用于相对于系统存储器112来存储并加载信息的完整加密处理。另一MOV指令1202表示处理器100的任意核为了从系统存储器112的定址位置将数据值加载或读取到处理器100的诸如REG 1103等的指定寄存器中所执行的任意类型的加载指令。FIG. 12 is a simplified block diagram illustrating the reverse encryption process that may be programmed into PFU 114 and performed by MC 104 when data is loaded from system memory 112 . The reverse encryption process of FIG. 12 is complementary to the encryption process of FIG. 11 , where the two processes are stored together in the PFU program 116 to implement a complete encryption process for storing and loading information relative to the system memory 112 . Another MOV instruction 1202 represents any type of load instruction executed by any core of the processor 100 to load or read a data value from an addressed location of the system memory 112 into a designated register of the processor 100, such as REG 1103.

从加载指令1202提取地址ADDR并将该地址ADDR应用于反向加密算法1206(或解密算法)的一个输入,并且将KEY 1104应用于反向加密算法1206的另一输入,其中反向加密算法1206在其输出提供相应的PAD 1208。还将MOV指令1202应用于系统存储器112以检索加密XDATA值1112。将加密XDATA值1112和PAD 1208应用于XOR运算1110的各个输入,其中XOR运算1110输出相应的解密数据值DATA。MC 104将DATA值而不是所检索到的XDATA值1112存储到如利用MOV指令1202所指定的REG 1103中。Extract the address ADDR from the load instruction 1202 and apply the address ADDR to one input of the reverse encryption algorithm 1206 (or decryption algorithm), and apply the KEY 1104 to the other input of the reverse encryption algorithm 1206, where the reverse encryption algorithm 1206 A corresponding PAD 1208 is provided at its output. A MOV instruction 1202 is also applied to system memory 112 to retrieve encrypted XDATA values 1112. The encrypted XDATA values 1112 and PAD 1208 are applied to the respective inputs of the XOR operation 1110, which outputs the corresponding decrypted data value DATA. The MC 104 stores the DATA value instead of the retrieved XDATA value 1112 into the REG 1103 as specified with the MOV instruction 1202.

假定加密算法1106和反向加密算法1206是互补的,则在执行MOV指令1202时所检索到的解密DATA值与在执行MOV指令1202之前在REG 1103中最初存储的原始DATA值相同。这样,PFU 114修改MC 104的操作,以对系统存储器112中所存储的数据进行加密并且对从系统存储器112检索到的数据进行解密。注意,对于诸如AES等的对称密钥加密,加密算法1106和反向加密算法1206相同(即,是相同算法),使得仅需要一个加密/解密算法。Assuming that encryption algorithm 1106 and reverse encryption algorithm 1206 are complementary, the decrypted DATA value retrieved upon execution of MOV instruction 1202 is the same as the original DATA value originally stored in REG 1103 prior to execution of MOV instruction 1202. In this way, PFU 114 modifies the operation of MC 104 to encrypt data stored in system memory 112 and decrypt data retrieved from system memory 112 . Note that for symmetric key encryption such as AES, the encryption algorithm 1106 and the reverse encryption algorithm 1206 are the same (ie, are the same algorithm), so that only one encryption/decryption algorithm is required.

已经给出了前述描述以使本领域普通技术人员能够在特定应用的上下文及其要求中所提供的那样实现和使用本发明。虽然已经参考本发明的某些优选版本相当详细地描述了本发明,但是其它版本和变形是可能的并被预期。对优选实施例的各种修改对于本领域技术人员将是显而易见的,并且本文设定的一般原理可以应用于其它实施例。例如,本文所描述的电路可以以包括逻辑装置或电路等的任何合适的方式来实现。本领域技术人员应当理解,可以容易地使用所公开的概念和具体实施例作为设计或修改用于在不脱离本发明的精神和范围的情况下实现本发明的相同目的的其它结构的基础。因此,本发明并不意图被限制于本文所示出以及所描述的特定实施例,而是符合与本文公开的原理和新颖特征一致的最宽范围。The foregoing description has been presented to enable one of ordinary skill in the art to make and use the present invention as provided in the context of a particular application and its requirements. Although the present invention has been described in considerable detail with reference to certain preferred versions thereof, other versions and variations are possible and contemplated. Various modifications to the preferred embodiment will be readily apparent to those skilled in the art, and the generic principles set forth herein may be applied to other embodiments. For example, the circuits described herein may be implemented in any suitable manner including logic devices or circuits, or the like. Those skilled in the art should appreciate that the conception and specific embodiment disclosed may be readily utilized as a basis for designing or modifying other structures for carrying out the same purposes of the present invention without departing from the spirit and scope of the invention. Therefore, the present invention is not intended to be limited to the particular embodiments shown and described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

相关申请的交叉引用CROSS-REFERENCE TO RELATED APPLICATIONS

本申请是以下的美国专利申请的部分延续申请,在此通过引用包含其全部内容以用于所有的目的和用途。This application is a continuation-in-part of the following US patent application, the entire contents of which are hereby incorporated by reference for all purposes and uses.

Figure BDA0001417519240000231
Figure BDA0001417519240000231

本申请与以下的美国专利申请有关,在此通过引用包含其全部内容以用于所有的目的和用途。This application is related to the following US patent application, which is hereby incorporated by reference in its entirety for all purposes and uses.

Figure BDA0001417519240000232
Figure BDA0001417519240000232

Claims (16)

1. A processor, comprising:
a memory controller for interfacing an external memory;
a Programmable Functional Unit (PFU) programmed by a PFU program to modify operation of the memory controller, wherein the PFU comprises a plurality of programmable logic elements and a plurality of programmable interconnects; and
a programmable memory to receive the PFU program to program the selected programmable logic element;
wherein the programmable logic element comprises:
a lookup table programmed by respective lookup table value bits in the programmable memory and providing a plurality of input values by an operand of an instruction to select the respective lookup table value bits as output;
a register comprising an output and an input coupled to the output of the lookup table;
a first multiplexer including an output, a select input controlled by a corresponding memory bit stored in the programmable memory, a first input coupled to the output of the lookup table, and a second input coupled to the output of the register;
a second multiplexer including an output, a select input controlled by a corresponding memory bit stored in the programmable memory, a first input coupled to a programmable bit stored in the programmable memory, and a second input coupled to the programmable interconnect;
an adder including an output, a first input coupled to the output of the first multiplexer, and a second input coupled to the output of the second multiplexer; and
a third multiplexer including a select input controlled by a respective memory bit stored in the programmable memory, a first input coupled to an output of the first multiplexer, a second input coupled to an output of the adder, and an output coupled to the programmable interconnect.
2. The processor of claim 1, further comprising a PFU programmer to program the PFU using a PFU program stored in local memory.
3. The processor of claim 2, wherein the processor is responsive to a program command, wherein the program command is to cause the PFU programmer to program the PFU with a specified PFU program of a plurality of PFU programs stored in the local memory.
4. The processor of claim 1, further comprising a configuration map for mapping each of a plurality of different processing modes with a respective one of a plurality of PFU programs stored in local memory.
5. The processor of claim 1, wherein said plurality of programmable logic elements and said plurality of programmable interconnects are subdivided into a plurality of substantially identical programmable sections, wherein said processor further comprises a PFU programmer for allocating a plurality of said programmable sections and programming said allocated plurality of said programmable sections with said PFU program to program said PFU.
6. The processor of claim 1, wherein the PFU comprises the programmable memory and the PFU program comprises a bit stream scanned into the programmable memory of the PFU.
7. The processor of claim 1, wherein the PFU is programmed with a plurality of PFU programs, wherein the processor further comprises a PFU programmer to enable at least one of the plurality of PFU programs at a time during operation of the processor.
8. The processor of claim 1, wherein the PFU program programs the PFU to perform an encryption function for encrypting data stored in the external memory.
9. The processor of claim 8, wherein the cryptographic function includes an encryption process and a reverse encryption process that employs a predetermined key combined with an address to develop a pad value that is further combined with a data value.
10. A method for providing a programmable memory controller of a processor interfacing the processor with an external memory, the method comprising the steps of:
a PFU comprising a programmable functional unit, the PFU including a plurality of programmable logic elements and a plurality of programmable interconnects;
programming the PFU with a PFU program to modify operation of the programmable memory controller; and
setting a programmable memory to receive the PFU program to program the selected programmable logic element, comprising:
setting a lookup table, a register, a first multiplexer, a second multiplexer, an adder and a third multiplexer;
the lookup table is programmed by corresponding lookup table value bits in the programmable memory and a plurality of input values are provided by an operand of the instruction to select the corresponding lookup table value bits as output;
the register receives the output of the lookup table;
the first multiplexer receiving a select input controlled by a respective memory bit stored in the programmable memory and receiving an output of the lookup table as a first input and an output of the register as a second input;
the second multiplexer receiving a select input controlled by a respective memory bit stored in the programmable memory and receiving a programmable bit stored in the programmable memory as a first input and an output of the programmable interconnect as a second input;
the adder receives the output of the first multiplexer as a first input and the output of the second multiplexer as a second input; and
the third multiplexer receives a select input controlled by a respective memory bit stored in the programmable memory and receives the output of the first multiplexer as a first input, the output of the adder as a second input, and the output of the third multiplexer is provided to the programmable interconnect.
11. The method of claim 10, further comprising the steps of: providing a PFU programmer and a PFU engine within the PFU, wherein in the PFU programmer programs the PFU engine with the PFU program stored in local memory.
12. The method of claim 11, further comprising the steps of: executing a program command with the processor, wherein the program command is to instruct the PFU programmer to program the PFU engine with a PFU program stored in the local memory.
13. The method of claim 10, further comprising the steps of: setting a configuration map in the PFU, wherein the configuration map is used to map each processing mode of a plurality of different processing modes with a corresponding PFU program of a plurality of PFU programs stored in a local memory.
14. The method of claim 10, further comprising the steps of:
subdividing the plurality of programmable logic elements and the plurality of programmable interconnectors into a plurality of substantially identical programmable sections;
allocating a plurality of the programmable sections to configure the PFU according to the PFU program; and
programming the allocated plurality of the programmable segments with at least one PFU program.
15. The method of claim 11, further comprising the steps of:
setting the PFU to the programmable memory; and
programming the PFU includes: scanning at least one of the PFU programs as a bitstream into the programmable memory of the PFU engine.
16. The method of claim 10, further comprising the steps of: programming the PFU with a plurality of PFU programs; and enabling at least one of the plurality of PFU programs at a time during operation of the processor.
CN201710873051.9A 2016-10-28 2017-09-25 Processor with memory controller including dynamically programmable functional units Active CN107656880B (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US15/337,169 US10268586B2 (en) 2015-12-08 2016-10-28 Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests
US15/337,140 US10642617B2 (en) 2015-12-08 2016-10-28 Processor with an expandable instruction set architecture for dynamically configuring execution resources
US15/337,140 2016-10-28
US15/337,169 2016-10-28
US15/590,883 2017-05-09
US15/590,883 US11061853B2 (en) 2015-12-08 2017-05-09 Processor with memory controller including dynamically programmable functional unit

Publications (2)

Publication Number Publication Date
CN107656880A CN107656880A (en) 2018-02-02
CN107656880B true CN107656880B (en) 2020-12-15

Family

ID=61130952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710873051.9A Active CN107656880B (en) 2016-10-28 2017-09-25 Processor with memory controller including dynamically programmable functional units

Country Status (1)

Country Link
CN (1) CN107656880B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932125B (en) * 2018-07-19 2021-06-22 闫伟 Control method of programmable logic controller
US11531619B2 (en) * 2019-12-17 2022-12-20 Meta Platforms, Inc. High bandwidth memory system with crossbar switch for dynamically programmable distribution scheme

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176752A (en) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 Super-endurance solid-state drive with Endurance Translation Layer (ETL) and diversion of temp files for reduced Flash wear

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6118300A (en) * 1998-11-24 2000-09-12 Xilinx, Inc. Method for implementing large multiplexers with FPGA lookup tables
US7142557B2 (en) * 2001-12-03 2006-11-28 Xilinx, Inc. Programmable logic device for wireless local area network
US7533256B2 (en) * 2002-10-31 2009-05-12 Brocade Communications Systems, Inc. Method and apparatus for encryption of data on storage units using devices inside a storage area network fabric
US7196541B2 (en) * 2003-02-19 2007-03-27 Koninklijke Philips Electronics N.V. Electronic circuit with array of programmable logic cells
US7584345B2 (en) * 2003-10-30 2009-09-01 International Business Machines Corporation System for using FPGA technology with a microprocessor for reconfigurable, instruction level hardware acceleration
US20050257186A1 (en) * 2004-05-13 2005-11-17 Michael Zilbershlag Operation system for programmable hardware
US20070288909A1 (en) * 2006-06-07 2007-12-13 Hong Kong Applied Science and Technology Research Institute Company Limited Hardware JavaTM Bytecode Translator
US9195462B2 (en) * 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
CN101316177B (en) * 2007-05-29 2013-10-30 康佳集团股份有限公司 Computer and television function integrated IP video telephone
US9753695B2 (en) * 2012-09-04 2017-09-05 Analog Devices Global Datapath circuit for digital signal processors
CN103632726B (en) * 2013-01-31 2017-02-08 中国科学院电子学研究所 Data shift register circuit based on programmable basic logic unit
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US10496410B2 (en) * 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176752A (en) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 Super-endurance solid-state drive with Endurance Translation Layer (ETL) and diversion of temp files for reduced Flash wear

Also Published As

Publication number Publication date
CN107656880A (en) 2018-02-02

Similar Documents

Publication Publication Date Title
EP3179362B9 (en) Processor with an expandable instruction set architecture for dynamically configuring execution resources
US11016906B2 (en) GPU virtualisation
US11714924B2 (en) Unified addressable memory
CN108139977B (en) Processor with Programmable Prefetcher
CN106575275B (en) Mechanism for inter-processor interrupts in heterogeneous multiprocessor systems
CN107656880B (en) Processor with memory controller including dynamically programmable functional units
US11061853B2 (en) Processor with memory controller including dynamically programmable functional unit
EP3316130A1 (en) Conversion system for a processor with an expandable instruction set architecture for dynamically configuring execution resources
JP2008040585A (en) Microcomputer
Compton Reconfiguration management
JP2011141888A (en) Single chip microcomputer

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

CP01 Change in the name or title of a patent holder