US6438737B1 - Reconfigurable logic for a computer - Google Patents

Reconfigurable logic for a computer Download PDF

Info

Publication number
US6438737B1
US6438737B1 US09/505,059 US50505900A US6438737B1 US 6438737 B1 US6438737 B1 US 6438737B1 US 50505900 A US50505900 A US 50505900A US 6438737 B1 US6438737 B1 US 6438737B1
Authority
US
United States
Prior art keywords
logic
interface
memory
program
designs
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.)
Expired - Fee Related
Application number
US09/505,059
Inventor
John Morelli
H. Richard Kendall
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US09/505,059 priority Critical patent/US6438737B1/en
Assigned to MAJESTIC-12 TECHNOLOGY, INC. reassignment MAJESTIC-12 TECHNOLOGY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KENDALL, H. RICHARD, MORELLI, JOHN
Assigned to NURON, INC. reassignment NURON, INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: MAJESTIC-12 TECHNOLOGY, INC.
Priority to PCT/US2001/004733 priority patent/WO2001061525A2/en
Priority to AT01909227T priority patent/ATE313829T1/en
Priority to JP2001560843A priority patent/JP4510353B2/en
Priority to EP05002675A priority patent/EP1536346A3/en
Priority to DE60116060T priority patent/DE60116060T2/en
Priority to AU2001237005A priority patent/AU2001237005A1/en
Priority to EP01909227A priority patent/EP1257928B1/en
Publication of US6438737B1 publication Critical patent/US6438737B1/en
Application granted granted Critical
Priority to HK03101109.3A priority patent/HK1048871B/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION MERGER (SEE DOCUMENT FOR DETAILS). Assignors: NURON, INC.
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Definitions

  • the present application relates to computing systems, and more particularly, but not exclusively, is directed to reconfigurable logic for accelerating performance of a computer. Additionally or alternatively, it is envisioned that the present invention may be directed to other applications and technologies.
  • PLDs Programmable Logic Devices
  • I/O input/output
  • these modules support only one software application.
  • these I/O modules tend to communicate too slowly with the system processor to be of practical benefit for many implementations that would otherwise be desirable.
  • U.S. Pat. Nos. 5,978,862 to Kou, et al.; 5,857,109 to Taylor; 5,692,159 to Shand; 5,535,342 to Taylor; and 5,036,473 to Butts et al. for more background information on these arrangements.
  • One form of the present invention is a unique computing system.
  • Other forms include unique systems and methods for reconfiguring programmable logic.
  • Further forms include unique techniques for interfacing with a reconfigurable logic circuit.
  • a unique apparatus with reconfigurable logic is provided.
  • FIG. 1 is a diagrammatic view of a computing system with reconfigurable logic.
  • FIG. 2 is a diagrammatic view depicting further details of a portion of the system of FIG. 1 .
  • FIG. 3 is a flow chart of a process for utilizing the reconfigurable logic of the system shown in FIG. 1 .
  • FIG. 4 is a flow chart showing further details of a “Create” routine for the process of FIG. 3 .
  • FIG. 5 is a flow chart showing further details of an “Open” routine for the process shown in FIG. 3 .
  • FIG. 6 is a memory allocation diagram for the interface memory shown in FIGS. 1 and 2.
  • FIG. 7 is a flow chart showing further details of a “Write” routine for the process shown in FIG. 3 .
  • FIG. 8 is a flow chart showing further details of a “Read” routine for the process shown in FIG. 3 .
  • FIG. 9 is a flow chart showing further details of a “Close” routine for the process shown in FIG. 3 .
  • FIG. 10 is a flow chart showing further details of a “Release” routine for the process shown in FIG. 3 .
  • FIG. 11 is a diagrammatic view of another computing system with reconfigurable logic.
  • FIG. 12 is a diagrammatic view of another arrangement of reconfigurable logic.
  • FIG. 1 is a diagrammatic view of computing system 20 of one embodiment of the present invention.
  • System 20 includes computer 22 .
  • Computer 22 includes processor bus 24 arranged to operatively couple together a cluster 25 of Central Processing Units (CPUs) 26 a, 26 b, 26 c, 26 d, four ( 4 ) of which are depicted (collectively designated processors 26 ).
  • cluster 25 includes up to four ( 4 ) PENTIUM II microprocessors supplied by Intel Corporation, and processor bus 24 is of a type suitable to interconnect a PENTIUM II microprocessor cluster.
  • processors or CPUs of the present invention may include one or more components and that processor bus 24 may include one or more components to manage its operation.
  • Computer 22 also includes memory controller 27 coupled to processor bus 24 .
  • Memory controller 27 operatively couples main memory 28 to processor bus 24 via memory bus 29 .
  • Memory controller 27 manages access to main memory 28 over processor bus 24 , and may be in the form of one or more dedicated components or part of one or more other components of system 20 .
  • Main memory 28 may be comprised of one or more components of the volatile or nonvolatile type and may vary in size. For a typical PENTIUM II arrangement of cluster 25 , main memory 28 is typically of the Dynamically Random Access Memory (RAM) type; however, other arrangements of main memory 28 may be utilized with or without a PENTIUM II arrangement for cluster 25 .
  • RAM Dynamically Random Access Memory
  • Computer 22 also includes Input/Output (I/O) subsystem 32 .
  • Subsystem 32 includes I/O bridge 30 operatively coupled to processor bus 24 .
  • I/O bridge 30 is also operatively coupled to I/O bus 34 .
  • I/O bridge 30 serves as a communication link between processor bus 24 and I/O bus 34 , providing buffering, reformatting, arbitration, and/or other operations to facilitate desired communications between the buses.
  • I/O bus 34 operatively connects one or more I/O devices to processor bus 24 via I/O bridge 30 .
  • Two I/O modules 36 a, 36 b are depicted in FIG. 1 (collectively designated modules 36 ). It should be appreciated that more or fewer I/O modules 36 may be coupled to I/O bus 34 .
  • I/O bridge 30 and memory controller 27 are provided in a combined form as a single component or dedicated set of components to manage I/O and main memory transactions with processor bus 24 .
  • Computer 22 can alternatively or additionally include one or more other I/O bridges coupled to I/O bus 34 and/or processor bus 24 to correspondingly provide further I/O buses of the same or different types. In other embodiments, distinct I/O bridges and/or I/O buses are absent.
  • I/O bus 34 is of a standard Peripheral Component Interconnect (PCI) local bus type.
  • PCI Peripheral Component Interconnect
  • the bandwidth of I/O bus 34 is less than the bandwidth of processor bus 24 ; where bandwidth is the product of the data width of the given bus and the bus speed (usually in terms of frequency).
  • latency time for a data transfer between different agents on processor bus 24 is typically less than the latency time for a data transfer between one of the devices on processor bus 24 and one of the devices on I/O bus 34 for this embodiment.
  • latency time means a measure of time from a request by a first device to receive data from a second device to the start of receipt of that data by the first device from the second device in response to the request (usually in terms of bus cycles). Accordingly, the “total transfer time” for a data block is a function of latency time, and the product of the bandwidth and data block size, which is typically less for transfers between devices on processor bus 24 than transfers between a device on processor bus 24 and a device on I/O bus 34 .
  • This embodiment can also include one or more additional I/O bridges to other I/O buses coupled to processor bus 24 .
  • an I/O bridge can be provided to couple an I/O bus of the PCI type to other varieties, such as the Industry Standard Architecture (ISA) and/or the Extended Industry Standard Architecture (EISA) type.
  • ISA Industry Standard Architecture
  • EISA Extended Industry Standard Architecture
  • an additional EISA-type I/O bridge is coupled to a PCI form of I/O bus 34 to provide an EISA extension of I/O bus 34
  • APIC Advanced Programmable Interrupt Controller
  • I/O subsystem 32 either with or without a PENTIUM II processor cluster as would occur to those skilled in the art.
  • I/O module 36 b is further designated as a nonvolatile mass memory interface. This interface is for a permanently installed and/or a portable computer-readable device 37 , as schematically depicted in FIG. 1 .
  • Device 37 can be of the electromagnetic, optical, semiconductor, and/or other variety as would occur to those skilled in the art.
  • device 37 can be an optically encoded Compact Disk (CD) or Digital Video Disk (DVD) of the read only or read/write type; an electromagnetic hard drive disk, portable floppy drive disk, tape, or bubble memory cartridge; and/or a nonvolatile semiconductor cartridge or card of the Programmable Read Only Memory (PROM), Erasable Programmable Read Only Memory (EPROM), Electrically Erasable Read Only Memory (EEROM), flash, and/or Static Random Access Memory (SRAM) type with portable back up power, just to name a few.
  • I/O module 36 a and device 37 collectively designate a PCI/ISA/IDE accelerator component and Integrated Drive Electronics (IDE) hard drive unit.
  • IDE Integrated Drive Electronics
  • Computer 22 is coupled to reconfigurable logic circuit 40 by processor bus 24 .
  • Reconfigurable logic circuit 40 includes programmable logic 50 .
  • programmable logic refers broadly to any form of hardware logic that may be programmed more than once, including, but not limited to, one or more Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), and/or Dynamically Programmable Gate Arrays (DPGAs), to name only a few.
  • Programmable logic 50 is coupled to interface memory 60 by memory bus 64 and design loading logic 70 by bus 74 .
  • Design loading logic 70 is coupled to logic design memory 80 by bus 84 .
  • Interface memory 60 and logic design memory 80 are collectively designated local memory 90 .
  • reconfigurable logic circuit 40 is provided as a unit with a connector to removably interface to processor bus 24 of computer 22 .
  • the one or more components comprising reconfigurable logic circuit 40 may be mounted to a common printed wiring board with a plugable card edge connector.
  • such components may be mounted on more than one printed wiring board or card, or otherwise be distributed throughout system 20 .
  • reconfigurable logic circuit 40 may be provided as a permanently installed subsystem on a mother board shared with various components of computer 22 . Accordingly, reconfigurable logic circuit 40 alternatively may be considered an integral part of computer 22 .
  • Programmable logic 50 is provided with computer interface logic portion 54 , memory interface logic portion 56 , and user-defined programmable logic portion 58 .
  • programmable logic 50 is comprised of one or more FPGA devices of the volatile type, such as those manufactured by Xilinx or Altera; however, one or more other device types or a combination of different device types may comprise programmable logic 50 .
  • computer interface logic portion 54 and/or memory interface logic portion 56 can be programmed as part of an initialization operation when power or a reset signal is applied to reconfigurable logic circuit 40 as more fully described hereinafter in connection with FIG. 3 .
  • Computer interface logic portion 54 of programmable logic 50 is operatively coupled to processor bus 24 to provide a direct, two-way communication pathway with one or more of processors 26 of computer 22 .
  • Computer interface logic portion 54 is also operatively coupled to design loading logic 70 by bus 74 . Because of the bus 84 connection of design loading logic 70 to logic design memory 80 , information can be communicated between computer 22 and logic design memory 80 via computer interface logic portion 54 and design loading logic 70 .
  • Logic design memory 80 is arranged to store a number of core logic designs 86 in memory 80 , a few of which are individually designated in FIG. 2 as Core 0 , Core 1 , Core 2 , . . . , and Core n; where “n” is the total number of core logic designs stored.
  • Designs 86 can be initially provided to logic design memory 80 from computer 22 . Designs 86 each provide a different configuration of user-defined logic portion 58 . Design loading logic 70 is responsive to appropriate signals or commands to load a selected one of the stored logic designs 86 into programmable logic 50 via bus 84 and 74 . One or more designs 86 in memory 80 can be scheduled for application to programmable logic 50 .
  • Memory interface logic portion 56 of programmable logic 50 provides a communication pathway from interface memory 60 to computer 22 and user-defined logic portion 58 .
  • Interface memory 60 is dynamically allocated to include one or more control structures 66 , scratch memory space 67 , and one or more interface buffers 68 .
  • control structures 66 and one or more corresponding interface buffers 68 are allocated to store information pertinent to interfacing between the given design 86 and computer 22 .
  • Scratch memory space 67 is available for access by user-defined logic 58 .
  • Process 210 starts from a reset or power-on condition 212 of system 20 . From condition 212 , computer 22 maps reconfigurable logic circuit 40 into a designated memory space “RL” in operation 214 . In operation 216 , loading logic 70 is configured to load Core 0 into programmable logic 50 from memory 80 . Once loaded, Core 0 setsup reconfigurable logic circuit 40 to interface with computer 22 via processor bus 24 by defining computer interface logic portion 54 and memory interface logic portion 56 of programmable logic 50 .
  • Core 0 is a special initialization design that need not specify a user-defined logic portion 58 of programmable logic 50 . It should be appreciated that for process 210 , it is desirable that at least a portion of design loading logic 70 and core logic design memory 80 be of a nonvolatile type to provide for loading of computer interface logic portion 54 and memory interface logic portion 56 upon power-up.
  • loading logic 70 is provided by a nonvolatile Complex Programmable Logic Device (CPLD), a hard-wired state machine of multiple devices, or the like; and memory 80 includes one or more nonvolatile flash-type devices.
  • CPLD Complex Programmable Logic Device
  • each core logic design 86 may be arranged to configure computer interface logic portion 54 and/or memory interface logic portion 56 along with user-defined logic portion 58 .
  • interface logic portions 54 and/or 56 are configured upon power-up or reset condition 212 , subsequent reconfigurations of programmable logic 50 with different core logic designs 86 only alter user-defined logic portion 58 .
  • interface logic portions 54 , 56 are nonvolatile, so that initial loading is not required upon power-up.
  • processors 26 of computer 22 can write interface information to reconfigurable logic circuit 40 , such as input data to be processed by programmable logic 50 or commands to reconfigurable logic circuit 40 ; and read interface information, such as processing results from programmable logic 50 or status of reconfigurable logic circuit 40 .
  • Computer 22 executes a number of application programs 112 and logic interface program 122 (see FIG. 2 ).
  • Logic interface program 122 provides an upper-level interface programming layer responsive to requests by application programs 112 to utilize reconfigurable logic circuit 40 .
  • Logic interface program 122 communicates with reconfigurable logic circuit 40 through a second, lower-level programming layer in the form of device driver routine 124 .
  • Device driver routine 124 is customized to the particulars of the design for reconfigurable logic circuit 40 to convert communications from logic interface program 122 into a format recognized by reconfigurable logic circuit 40 . Accordingly, for this embodiment a number of different device driver routines 124 can be alternatively utilized to interface with correspondingly different reconfigurable logic designs. These different device driver routines 124 each communicate with logic interface program 122 through a common protocol, but generally have different communication protocols peculiar to the associated reconfigurable logic design. In other embodiments, different interface program arrangements may be utilized that include the same, more, or fewer programming layers.
  • logic interface program 122 is integrally combined with device driver routine 124 to provide a single layer of logic interface programming.
  • logic interface program 122 can include multiple device drivers in the form of selectable subroutines, and/or include three or more programming layers.
  • application programs 112 are designated as APP 1 , APP 2 , . . . , and APP m; where “m” is the total number of application programs 112 undergoing concurrent execution by computer 22 .
  • Concurrent execution of two or more programs refers to starting and managing execution of the two or more programs by the computer at the same time, even though the computer may only perform instructions for one of the programs at a time. Concurrent execution includes, but is not limited to multitasking of two or more programs through context switching, time slicing, or another mode, and/or multiprocessing of two or more programs by simultaneously executing each program on a different CPU.
  • an application program 112 provides input data for processing by the programmable logic 50 with the requested core logic design 86 , and programmable logic 50 processes the input data to generate corresponding output data. Management of this input and output data for each requesting application program 112 are among the tasks performed by logic interface program 122 , computer interface logic portion 54 , and/or memory interface logic portion 56 .
  • reconfigurable logic circuit 40 is utilized to accelerate a computationally intense algorithm. Such algorithms are commonly included in encryption/decryption, image processing, voice recognition or synthesis, video conferencing, and the like. By making a variety of core logic designs 86 and/or logic design instances available to application programs 112 , acceleration of these and other commonly executed processes is made possible.
  • computer 22 operates with a WINDOWS-based operating system from MICROSOFT, and logic interface program 122 is arranged to provide a WINDOWS-compatible interface protocol for application programs 112 .
  • logic interface program 122 provides a standard Application Program Interface (API) to communicate with application programs 112 executed under the WINDOWS operating system. Nonetheless, in other embodiments, different operating systems and/or operation system relationships to logic interface program 122 can be utilized.
  • API Application Program Interface
  • operation 230 includes the performance of tasks by logic program interface 122 in operations block 232 and reconfigurable logic circuit 40 in operations block 234 .
  • logic interface program 122 generates various read/write accesses to memory space RL of reconfigurable logic circuit 40 .
  • Reconfigurable logic circuit 40 interprets and responds to these memory accesses in operations block 234 via computer logic interface portion 54 .
  • logic interface program 122 As part of operation 230 , logic interface program 122 , computer interface logic portion 54 , or a combination of these is configured to periodically switch between core logic designs 86 of logic. design memory 80 that have been scheduled to service requests from application programs 112 .
  • context switching is performed by changing the configuration of programmable logic 50 from one requested core logic design 86 to next, based on the passage of a uniform time interval between each change.
  • the timing of context switching may vary depending on the core logic design and/or inputs from logic interface program 122 . For example, these inputs may relate to the need for additional time to process a given core logic design that handles larger amounts of data relative to another of the core logic designs.
  • logic interface program 122 is arranged to recognize when requests by application programs 112 can be addressed more efficiently by processing with no or limited context switching. Nonetheless, alternative embodiments may include context switching regardless of priority or other inputs. Yet other embodiments provide for multiple context switching modes and an option of no context switching as part of logic interface program 122 . Indeed, in a further embodiment, logic interface program 122 is arranged to handle simultaneous processing of different core logic designs by multiple programmable logic devices 50 included in reconfigurable logic circuit 40 (not shown). Logic interface program 122 includes a scheduler routine to schedule and manage configuration of programmable logic 50 with different logic designs 86 .
  • logic interface program 122 instantiates a different logical or virtual program interface for each application program request because the input and/or output data for a given request typically differs. Accordingly, whether for the same or different core logic designs, each of these instantiations or “instances” is separately established and maintained by logic interface program 122 .
  • Logic interface program 122 is further arranged to determine if a given instantiation or “instance” of a logic design requires activation/loading of a new logic design or if it is already scheduled. In correspondence with this capability, instances and/or virtual program interfaces established for active instances may be modeled as “clients” and logic interface program 122 /reconfigurable logic circuit 40 may be modeled as a “server” for these clients.
  • an encryption core logic design is requested by a number of the application programs 112 that is embodied in user-defined logic portion 58 of programmable logic 50 .
  • This design partially or completely encrypts data provided to the reconfigurable logic circuit 40 and returns encrypted results to computer 22 via processor bus 24 .
  • logic interface program 122 tracks a separate designator for each instance; however, once the corresponding user-defined logic portion 58 is configured with the encryption logic, it need not change.
  • logic interface program 122 can be arranged to provide the option of processing each of these instances consecutively to reduce overhead that might otherwise occur due to swapping different core logic designs in and out of programmable logic 50 . Nonetheless, in other embodiments, it may be more advantageous to provide context switching without adjustment for multiple instances of the same design, or to otherwise adjust allocation as would occur to those skilled in the art.
  • FIG. 2 depicts an overflow memory space 128 with a few representative overflow segments designated by reference numerals 128 a , 128 b , 128 c , 128 d.
  • Segments 128 a , 128 c represent overflow segments for core logic design programs that are further described in connection with routine 310 of FIG. 4 .
  • Segments 128 b , 128 d represent interface information overflows 2 and 5 that correspond to logic design instances 2 and 5 scheduled for execution by programmable logic 50 .
  • overflow segments 128 b and 128 d may be used until programmable logic 50 is again allocated to process that particular context. Nonetheless, in other embodiments, such overflow space may not be necessary or may not be allocated, instead limiting operations to available space in local memory 90 of reconfigurable logic circuit 40 .
  • reconfigurable logic circuit 40 may result in a number of coexisting virtual program interfaces.
  • Each of these virtual program interfaces communicates with reconfigurable logic circuit 40 through a set of standard routines or functions of logic interface program that treat each logic design instance in a manner comparable to a logical file. These routines are listed as part of operations block 232 in FIG. 3 .
  • Logic interface program 122 manages the virtual program interfaces in a file-like manner.
  • Logic interface program 122 communicates these standard commands/functions through device driver routine 124 .
  • Device driver routine 124 generates each read or write access to which reconfigurable logic circuit 40 responds.
  • Computer interface logic portion 54 of programmable logic 50 monitors processor bus 24 for an appropriate read or write access to memory space RL by device driver routine 124 . If a valid access is detected, reconfigurable logic circuit 40 responds in accordance with the command, request, or data communicated by computer 22 .
  • Routine 310 starts with designation stage 312 . From stage 312 , routine 310 continues with conditional 314 that determines whether memory space is available in logic design memory 80 . In one embodiment, this test is performed by logic interface program 122 , which maintains a record of the amount of memory space available in logic design memory 80 since the reset or power-on condition 212 . In alternative embodiments, this test may be partially or completely performed by computer interface logic portion 54 and/or design loading logic 70 .
  • routine 310 continues with stage 322 to push the new logic core design into logic design memory 80 in stage 322 .
  • the execution of stage 322 includes transferring the new core logic design under the control of logic interface program 122 from main memory 128 and/or an I/O device such as computer readable device 37 to logic design memory 80 via computer interface logic portion 54 , bus 74 , loading logic 70 , and bus 84 .
  • Routine 310 continues with stage 324 .
  • logic interface program 122 assigns a unique identification (ID) for the new core logic design stored in logic design memory 80 that may be used in other routines of logic interface program 122 .
  • Routine 310 then halts, returning to operation 230 of process 210 of FIG. 3 .
  • process 210 continues with conditional 236 .
  • Conditional 236 tests if a power-down or reset has occurred. If a power-down or reset condition has not occurred, then loop 220 is engaged to return to operation 230 to process the next task of logic interface program 122 in operations block 232 and reconfigurable logic circuit 40 in operations block 234 . If a power-down or reset condition has occurred, process 210 halts.
  • routine 310 continues with conditional 316 .
  • Conditional 316 test whether overflow memory space 128 is available in main memory 28 . As depicted in FIG. 2, overflow memory space 128 includes overflow segments 128 a and 128 b for Core X and Core Y logic designs, respectively. If overflow space is not available, routine 310 continues with stage 318 which indicates a failure of the Create function and returns a corresponding indication. From stage 318 , routine 310 halts and control returns to operation 230 of process 210 .
  • routine 310 continues at stage 320 .
  • logic interface program 122 directs the transfer of the least recently used core logic design to main memory 28 .
  • Core X or Core Y may be such a design.
  • the determination of which logic design was least recently used includes a reference by logic interface program 122 to interface memory 60 through memory interface logic portion 56 of programmable logic 50 , as will be explained in greater detail hereinafter in connection with the flow chart of routine 410 shown in FIG. 5 and the memory diagram of FIG. 6 .
  • routine 310 resumes with stages 322 and 324 as described previously. Routine 310 then halts and control returns to operation 230 of process 210 as shown in FIG. 3 .
  • Routine 310 may be repeated a number of times to provide for an appropriate loading of a number of desired core logic designs 86 in memory 80 .
  • a virtual program interface to that design is established by activating (instantiating) an instance of the logic design with the Open(ID, PL) routine 410 further described in connection with the flow chart of FIG. 5 and the memory diagram of FIG. 6 .
  • Routine 410 begins with stage 412 ; where ‘ID’ is the ID of a core logic design previously created with Create(Core Design) routine 310 , and ‘PL’ is a selected priority level.
  • routine 410 continues with stage 413 that establishes a logical/virtual program interface for an instance of core logic design ID with logic interface program 122 . Stage 413 also assigns a unique instance identifier IID for that instance. After opening a program interface in stage 413 , routine 410 continues with conditional 414 to test whether programmable logic 50 is available to execute the core logic design ID corresponding to the newly opened instance IID. If it is available, the core logic design specified by ID is loaded into programmable logic 50 in stage 416 . If it is not available, the scheduler routine of logic interface program 122 is executed to schedule an active instance of the core logic design specified by ID according to its assigned priority level PL in stage 418 . Once either stage 416 or 418 is completed, routine 410 halts and control returns to operation 230 of process 210 .
  • core logic design ID stored in memory 80 is activated either to be immediately loaded into programmable logic 50 via loading logic 70 or scheduled for such loading.
  • This loading process includes sending appropriate direction from logic interface program 122 via device driver routine 124 to design loading logic 70 through computer interface logic portion 54 .
  • Design loading logic 70 then transfers the appropriate core logic design 86 designated by ID via bus 84 and 74 either immediately for stage 416 or in accordance with the schedule established in stage 418 .
  • the Open(ID) routine may be repeated a number of times to establish a number of coexisting program interfaces for different logic design instances.
  • the Create(Core Design) and Open(ID) operations may be combined into a single routine or function with or without other operations.
  • a new core logic design is loaded into reconfigurable logic circuit 40 , and a logic design instance instantiated in response to the routine. Subsequent attempts to load the same program instantiate a new instance, but do not reload the design.
  • logic interface program 122 also directs the establishment of a corresponding control structure 66 and interface buffer(s) 68 via computer interface logic portion 54 and memory interface logic portion 56 of programmable logic 50 . Going from top to bottom, memory 60 is diagrammed from its lowest address to its highest address. For each instance IID that has been opened in accordance with routine 410 , a control structure for the corresponding core logic design is added from low towards high memory; where the ellipsis between structures 66 represent like structures that are not shown to preserve clarity. From the highest address towards lower addresses of memory 60 , interface control buffers 68 are allocated in sets for each instance IID of a core memory design.
  • interface buffers 68 represent like buffers that are not specifically illustrated to preserve clarity.
  • scratch memory space 67 is illustrated that dynamically changes in size depending on the number of allocated control structures 66 and interface buffers 68 .
  • FIG. 6 illustrates in greater detail a representative control structure entry set 69 a for one of the control structures 66 .
  • Entry 66 a specifies a unique identifier to designate Core 1 as the corresponding logic design for the particular instance.
  • Entry 66 b includes data specifying the time of last use of the instance IID. The information in entry 66 b can be referenced to determine which logic design is the least recently used in stage 320 of routine 310 .
  • FIG. 6 also illustrates in greater detail a representative interface buffer set 69 b.
  • Interface buffer set 69 b includes the interface buffers 68 allocated to the logic design instance IID of the Core 1 logic design with the control structure entry set 69 a.
  • Entry 66 c of control structure entry set 69 a is a pointer that specifies the starting address in interface memory 60 of input buffer 68 a of set 69 b.
  • Entry 66 d of set 69 a specifies the size of the input buffer 68 c.
  • input buffer 68 a is allocated through entries 66 c, 66 d of the corresponding control structure 66 .
  • Data is stored in input buffer 68 a by computer 22 for processing by the requested instance IID of the Core 1 logic design via the Write(IID) function to be further described hereinafter.
  • Entry 66 e of control structure entry set 69 a is a pointer to the starting address of output buffer 68 b of interface buffer set 69 b.
  • Entry 66 f specifies the size of output buffer 68 b. Accordingly, output buffer 68 b is allocated through entries 66 e, 66 f of the corresponding control structure 66 .
  • Data is read from output buffer 68 b by computer 22 with the Read(IID) function to be further described hereinafter. This output data includes the results obtained by processing the data in input buffer 68 a with the Core 1 logic design for instance IID.
  • Entry 66 g of control structure entry set 69 a specifies the starting address of a state buffer 68 c of interface buffer set 69 b.
  • Entry 66 h of control structure 66 a specifies the size of state buffer 68 c.
  • the state buffer may be used for the storage of intermediate results during context switching, to provide overflow for input buffer 68 a and/or output buffer 68 b, or as would otherwise occur to those skilled in the art.
  • control structures 66 and interface buffers 68 of memory 60 are configured like sets 69 a, 69 b, respectively, for each instance IID.
  • the number and type of entries for control structures 66 may vary.
  • the number and type of interface control buffers 68 may be different in number and type, and indeed may vary from one to the next for different core logic designs or logic design instances.
  • a common buffer is used by an instance IID for storing both input and output data.
  • the allocation and storage of values in control structures 66 for each different instance IID may be performed and managed by logic interface program 22 via device driver routine 124 , computer interface logic portion 54 , memory interface logic portion 56 , or a combination of these. Accordingly, the allocation of scratch space 67 follows from the size, location, and number of buffers defined by each of control structures 66 .
  • a Write(IID) function of operations block 232 is further described in connection with routine 510 a detailed in the flow chart of FIG. 7 .
  • Write(IID) routine 510 a is performed to provide input data from a requesting application program 112 for processing by reconfigurable logic circuit 40 via logic interface program 122 and device driver routine 124 .
  • the Write(IID) function is only performed after the corresponding instance IID has been instantiated.
  • routine 510 a continues with conditional 514 a.
  • routine 510 a tests whether the particular core logic design IID has priority for execution by the hardware of reconfigurable logic circuit 40 .
  • Such priority may be dynamic or static and may be based on one or more factors.
  • factors can include, the relative priority level PL of the various active instances IID, the amount of time since a given instance IID has been given hardware priority, the degree of utilization of reconfigurable logic circuit 40 , and/or the availability of a software routine alternative to name a just a few.
  • priority is determined based on a status flag that is updated from time-to-time based one or more of these factors.
  • routine 510 a continues with conditional 516 a, which tests whether the corresponding core logic design ID is loaded in programmable logic 50 . If the core logic design specified by ID is not loaded, stage 518 a is engaged which waits until the appropriate core logic design specified by ID is switched into the programmable logic 50 in accordance with the scheduler routine of logic interface program 122 . Typically this wait is for the next context switch. Stage 519 a is next encountered in which data to be processed for the Write(IID) operation is pushed into the corresponding input buffer of interface buffers 68 . If the test of conditional 516 a is affirmative, that is the desired core logic design ID is already loaded in programmable logic 50 , then routine 510 a proceeds directly to stage 519 a from the affirmative branch of conditional 516 a.
  • Routine 510 a then resumes with a protocol test in conditional 520 a.
  • Conditional 520 a determines whether the particular core logic design is to be applied immediately as a part of routine 510 a —an “eager protocol.” If the protocol for the given instance IID is of the eager type, as tested by conditional 520 a, then routine 510 a continues with stage 522 a to apply the corresponding core logic design. Routine 510 a then returns to process 210 to await the next operation. Likewise, if the test of conditional 520 a is negative—that is the protocol is not of the eager type, then the routine 510 a returns directly to process 210 from the negative branch of conditional 520 a.
  • routine 510 a continues with stage 530 a.
  • stage 530 a the input data that would have been processed by reconfigurable logic circuit 40 if instance IID did have priority, is instead provided to a software routine that emulates the corresponding core logic design ID. This input data may be stored in a corresponding software input buffer for the emulation routine.
  • conditional 532 a is encountered which performs the same protocol test as conditional 520 a. If the protocol is of the eager type as tested by conditional 532 a, then the software emulation routine is applied in stage 534 a. The Write(IID) routine 510 then returns. Likewise, if the protocol type is not of the eager type, then routine 510 returns directly from the negative branch of conditional 532 a.
  • a Read(IID) function of operations block 232 is further described in connection with routine 510 b detailed in the flow chart of FIG. 8 .
  • Read(IID) routine 510 b is performed to obtain output data relating to the processing of data previously input through the performance of one or more Write(IID) functions in accordance with routine 510 a.
  • a Read(IID) function is only performed after the corresponding instance IID has been instantiated.
  • routine 510 b continues with conditional 514 b .
  • Conditional 514 b performs the same test as conditional 514 a of routine 510 a , regarding whether the particular core logic design IID has priority for execution by the hardware of reconfigurable logic circuit 40 .
  • routine 510 b continues with conditional 516 b , which tests whether the corresponding core logic design ID is loaded in programmable logic 50 . If the core logic design specified by ID is not loaded, operation 518 b is engaged which waits until the appropriate core logic design specified by ID is switched into the programmable logic 50 in accordance with the scheduler routine of logic interface program 122 . Typically this wait is for the next context switch. Routine 510 b then resumes with conditional 520 b . If the test of conditional 516 a is affirmative, that is the desired core logic design ID is already loaded in programmable logic 50 , then routine 510 a proceeds directly to conditional 520 b from the affirmative branch of conditional 516 b.
  • Conditional 520 b provides the same protocol test as conditionals 520 a , 532 a of routine 510 a to determine-if the instance IID is of the eager type. If the given instance ID is not of the eager type, then stage 522 b is encountered which applies the corresponding core logic design. Routine 510 b continues at stage 540 b . If instance IID is of the eager type as tested by conditional 520 b , then routine 510 b proceeds directly from the affirmative branch of conditional 520 b to stage 540 b . In stage 540 b , the processed output data is pulled from the corresponding output buffer of interface buffers 68 by interface program 122 via device driver routine 124 to be returned to the corresponding application program 112 .
  • routine 510 b continues with conditional 532 b , which performs the same protocol test as conditional 520 b . If the test of conditional 532 b is negative, that is a noneager instance IID, then routine 510 b continues with stage 534 b to apply the emulation software. Routine proceeds from stage 534 b to stage 542 b to provide the output data to the requesting application program 112 produced by the software routine emulating the core logic design.
  • routine 510 b proceeds directly from the affirmative branch of routine 532 b to stage 542 b . Routine 510 b returns to process 210 after performance of stage 542 b.
  • an instance IID of the eager type favors processing in stage 522 a or 534 a of the associated data input in stage 519 a or 530 a, respectively, as part of the performance of the Write(IID) routine 510 a . Accordingly, because the data has already been processed, it need only be retrieved in the corresponding stages 540 b , 542 b of the Read(IID) routine 510 b . In contrast, for a noneager type of instance IID, Write(IID) routine 510 a inputs the data in the respective stage 519 a or 530 a without application. Instead, the Read(IID) routine 510 b processes the input data in stage 522 b or 534 b , respectively.
  • the Close(IID) routine 610 is detailed in the flow chart of FIG. 9 . It is performed to selectively close an open instance IID of logic design ID as established with the Open(ID) routine. From the identifier 612 , routine 610 continues with stage 613 . In stage 613 , the core logic design instance IID is closed. Routine 610 resumes with conditional 614 . In conditional 614 , logic interface program 122 tests whether IID was the only instance of the corresponding core logic design ID. If it was the only instance, routine 610 continues with stage 615 . In stage 615 , a flag is set to indicate configurable logic 40 is free to accept another design.
  • This flag can be read for conditional 314 and/or 316 of routine 310 to determine if a new logic design can be loaded. Routine 610 then proceeds from stage 625 or a negative result for conditional 614 to conditional 616 to determine whether there is a request pending to utilize programmable logic 50 . Such requests are maintained as part of the scheduler routine for logic interface program 122 . If there is not a pending request, stage 618 is engaged to set a flag indicating availability of programmable logic 50 . This flag can be read when executing conditional 414 of routine 410 to determine if a logic design can be executed. If there is a request pending, stage 620 is engaged.
  • stage 620 logic interface program 122 executes its scheduler routine to load another core logic design into programmable logic 50 or serve another instance IID. From the execution of either stage 618 or 620 as determined by conditional 616 , routine 610 halts and returns to operation 230 of process 210 as depicted in FIG. 3 .
  • Routine 710 of operations 232 is further detailed by the flow chart depicted in FIG. 10 .
  • Routine 710 is performed to release resources set aside for core logic design ID established with the Create(Core Design) routine 310 , and requires that all instances IID for core logic design ID be closed first with the Close(IID) routine 610 .
  • routine 710 proceeds to stage 714 to free the core logic design identifier ID for use by a different core logic design.
  • Routine 710 then proceeds to stage 716 to purge the released core logic design from storage in logic design memory 80 and any overflow space contained in main memory 28 . This purge may be accomplished by marking the associated memory space to be overwritten by subsequent designs and/or to take action to erase logic design information.
  • routine 710 halts, returning control to operation 230 of process 210 .
  • the Close(IID) and Release(ID) operations may be combined into a single routine or function with or without other operations.
  • all instances IID of the core logic design ID are closed and the core logic design memory space released in response to execution of this combined routine.
  • FIG. 11 illustrates processing system 200 of another embodiment of the present invention; where like reference numerals refer to like features of previously described embodiments.
  • System 200 includes computer 22 as described in connection with FIG. 1 .
  • System 200 also includes reconfigurable logic circuit 240 operatively coupled to memory bus 29 for main memory 28 .
  • Reconfigurable logic circuit 240 can otherwise be configured the same as reconfigurable logic circuit 40 and correspondingly mapped as a memory space RL to communicate with one or more of processors 26 .
  • FIG. 12 illustrates reconfigurable logic circuit 140 of another embodiment of the present invention; where like reference numerals represent like features of previously described embodiments.
  • Reconfigurable logic circuit 140 is interchangeable with reconfigurable logic circuit 40 of system 20 and/or reconfigurable logic circuit 240 of system 200 .
  • Reconfigurable logic circuit 140 includes programmable logic 150 interfaced with computer 22 ; where such interface may be, for example, by coupling to processor bus 24 as in the case of system 20 or memory bus 29 as in the case of system 200 .
  • Programmable logic 150 includes computer interface logic 154 , memory interface logic 156 , and user-defined logic portion 58 .
  • Computer interface logic 154 is coupled to computer 22 by processor bus 24 and loading logic 170 by bus 174 in a manner analogous to that described for computer interface logic portion 54 , bus 74 , and design loading logic 70 of reconfigurable logic circuit 40 .
  • Memory interface 156 is coupled to interface memory 160 by memory buses 164 a, 164 b.
  • Interface memory 160 is comprised of two devices, memory device 160 a and memory device 160 b .
  • Each of memory devices 160 a and 160 b include one or more corresponding control structures 166 a , 166 b , scratch space 167 a , 167 b , and interface buffers 168 a , 168 b , respectively.
  • memory device 160 a stores control structure 166 a and interface buffers 168 a for a Core 1 logic design
  • memory device 160 b stores control structure 166 b and interface buffers 168 b for a Core 2 logic design.
  • Memory interface 156 is partitioned so that user-defined logic portion 158 can access one of the devices 160 a , 160 b on one of buses 164 a , 164 b (a local access mode), while computer 22 can access the other of the devices 160 a , 160 b on the other bus 164 a , 164 b (a remote access mode).
  • user-defined logic portion 58 can locally access scratch space 167 a , and/or interface buffers 168 a ; and computer 22 can remotely access device 160 b simultaneously.
  • user-defined logic portion 58 can locally access scratch space 167 b and/or interface buffers 168 b ; and computer 22 can remotely access device 160 a simultaneously.
  • This parallel access capability permits logic interface program 122 to send/receive interface information with respect to a first one of devices 160 a , 160 b while the executing user-defined logic portion 58 of programmable logic 50 utilizes the interface information and/or scratch space 167 a , 167 b of a second one of the devices 160 a , 160 b . Accordingly, greater efficiencies can be realized in comparison to a technique where access to the interface memory 60 by only computer 22 or user-defined logic portion 58 is permitted at a given time. Typically, remote access by computer 22 is given priority when both computer 22 and user-defined logic portion 58 are seeking access to one of devices 160 a , 160 b.
  • each memory device 160 a , 160 b may store multiple control structures and corresponding interface buffers for multiple instances.
  • context switching may be arranged to alternate between local and remote access modes for each device 160 a , 160 b .
  • interface information for the Core 1 and Core 3 logic designs could be stored in memory device 160 a and the interface information for the Core 2 and Core 4 logic designs could be stored in memory device 160 b to provide the local/remote access alternation.
  • more than two memory devices each having a separate access bus may be operated with local and remote access modes in correspondence with the particular core logic design being executed.
  • Computer interface logic 154 is also coupled to loading logic 170 via bus 174 .
  • Loading logic 170 is coupled to logic design memory 180 via bus 184 .
  • Logic design memory 180 includes one or more volatile memory devices 180 a and one or more nonvolatile memory devices 180 b.
  • the one or more nonvolatile memory devices 180 b include at least one flash memory device for initial storage of core logic designs.
  • the one or more volatile memory devices 180 a can include Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), a combination of these, and/or such other type of memory as would occur to those skilled in the art.
  • volatile devices 180 a can serve as another means to store core logic designs; thereby reducing the likelihood of reaching such a limit.
  • volatile devices 180 a are arranged to provide storage for core logic designs that are expected to change more frequently relative to core logic designs stored in nonvolatile devices 180 b.
  • logic interface program 122 and/or device driver routine 124 can be arranged to provide an option regarding the form of core logic design storage desired.
  • SRAM and DRAM type devices 180 a can often provide greater storage density than flash memory type devices 180 b, facilitating more core logic design storage.
  • memory 60 , 160 and/or memory 80 , 180 may be partially or completely provided by main memory 28 of computer 22 .
  • main memory 28 may not be utilized at all for overflow of reconfigurable logic circuit 40 , 140 , 240 .
  • reconfigurable logic circuit 40 , 140 , 240 may include programmable logic arranged to be simultaneously configured with two or more core logic designs and with one or more logic interface programs executed by computer 22 to control and interface with instances of such designs.
  • computer interface logic 54 , 154 and memory interface logic 56 , 156 are not likely to change frequently, it can completely or partially be stored in one or more flash memory devices and/or other nonvolatile type of memory devices that are separate from devices for storing core logic designs. In one alternative embodiment, some or all of computer interface logic 54 , 154 and/or memory interface logic 56 , 156 can be downloaded from computer 22 upon power-up. In another alternative embodiment, computer interface logic 54 , 154 and/or memory interface logic 56 , 156 is partially or completely provided in an Application Specific Integrated Circuit (ASIC), or other hardwired logic form, instead of being configured in programmable logic 50 .
  • ASIC Application Specific Integrated Circuit
  • one or more reconfigurable logic circuits according to the present invention can be connected to processor bus 40 as described in connection with FIG. 1 and one or more other reconfigurable logic circuits according to the present invention can be connected to memory bus 29 as described in connection with FIG. 11 .
  • one or more reconfigurable logic circuits according to the present invention can be configured as an I/O module either with or without other reconfigurable logic circuits that are connected to processor bus 24 and/or memory bus 29 .
  • a reconfigurable logic circuit of the present invention can be configured as an active bus agent—even emulating a processor in one or more respects—as opposed to a passive memory-mapped agent.
  • a system in another embodiment, includes a digital processor bus operable to interconnect a process cluster, a reconfigurable logic device, a main memory, and one or more processors coupled together by the processor bus. At least one of the processors is operable to access the reconfigurable logic device.
  • An input/output bridge is coupled to the processor bus and is also coupled to an input/output bus, that has a slower transmission clock speed than the processor bus.
  • an apparatus comprises a reconfigurable logic circuit configured with a computer interface.
  • This circuit includes programmable logic, a first memory to dynamically store a number of logic designs each selected to configure the programmable logic, and a second memory to dynamically store interface control information for each of the logic designs.
  • This information relates to one or more buffers allocated in the second memory for each of the logic designs. These buffers are provided to transmit data through the computer interface.
  • a reconfigurable logic circuit includes programmable logic, design loading logic connected to the programmable logic, and one or more memory devices. These memory devices include a first memory space operable to store a number of logic designs for the programmable logic. The first memory space is accessible by the loading logic to selectively load one or more of the logic designs into the programmable logic. The memory devices also include a second memory space operable to store a number of interface control structures each corresponding to a different instance of one of the logic designs. The second memory space is accessible by the programmable logic.
  • Another embodiment includes operating a computer coupled to a reconfigurable logic circuit that has programmable logic, a first memory device, and a second memory device. This embodiment also includes storing first interface information in the first memory device for a first logic design and second interface information in the second memory for a second logic. design. Furthermore, it includes performing an operation with the programmable logic during configuration by the first logic design and accessing the first memory device with the programmable logic and the second memory device with the computer during performance.
  • a system includes a reconfigurable logic circuit and a computer.
  • the reconfigurable logic circuit comprises programmable logic and a local memory that is operable to store interface information relating to a number of logic designs for the programmable logic.
  • the computer is operatively coupled to the reconfigurable logic circuit and includes one or more processors and a main memory.
  • the computer is operable to execute one or more application programs and a logic interface program.
  • the one or more application programs are operable to generate a number of requests to utilize the reconfigurable logic circuit.
  • the logic interface program is responsive to these requests to control application of the logic designs to the programmable logic.
  • the logic interface program is operable to selectively allocate a memory space in the main memory for overflow of the local memory.
  • a method comprises: executing at least one application program and a logic interface program on a computer coupled to a reconfigurable logic circuit that includes programmable logic and a local memory; storing several logic designs in the local memory with the logic interface program that are each operable to configure the programmable logic; operating two or more coexisting program interfaces between one or more of the application programs and the reconfigurable logic circuit with the interface program, where the program interfaces each correspond to a selected one of the logic designs; writing input data to the reconfigurable logic circuit for a selected one of the program interfaces; configuring the programmable logic with the selected one of the logic designs; processing the input data with the programmable logic after this configuration; reading output data from the reconfigurable logic circuit for the. selected program interface after this processing; closing the selected program interface after reading with the interface program, where other of the program interfaces remain open; and replacing a first one of the logic designs with a different logic design.
  • Another method of the present invention includes operating a computer coupled to programmable logic; concurrently executing two or more application programs with the computer that each generate at least one of a plurality of requests to utilize the programmable logic during execution; processing the requests with an interface program executed by the computer; and controlling the programmable logic with the interface program to reconfigure it a number of times during execution of the application programs in accordance with the requests.
  • An additional embodiment of the present invention includes a computer-readable device storing a number of instructions for execution by a computer coupled to a reconfigurable logic circuit that has programmable logic and a local memory to store a number of logic designs each operable to configure the programmable logic.
  • the instructions are arranged to provide logic interface programs responsive to requests to utilize the reconfigurable logic circuit from a number of application programs being executed by the computer.
  • the logic interface program includes a first routine executable a number of times to open a corresponding number of coexisting program interfaces between the application programs and the reconfigurable logic circuit.
  • the program interfaces each provide for configuration of the programmable logic with a corresponding one of the logic designs stored with the first routine.
  • a second routine to provide input data to the reconfigurable logic circuit for a selected one of the program interfaces opened by the first routine for processing by the programmable logic.
  • a third routine is also included to request output data from the reconfigurable logic circuit.
  • the logic interface program also has a fourth routine to selectively close a specified one of the program interfaces established with the first routine.

Abstract

A system is disclosed including a reconfigurable logic circuit having programmable logic, a first memory, and a second memory. The first memory stores a number of logic designs each operable to configure the programmable logic. Also included is a computer coupled to the reconfigurable logic circuit that concurrently executes one or more application programs and an interface program. The application programs generate a number of requests to utilize the reconfigurable logic circuit and the interface program responds to the requests by opening a number of coexisting program interfaces. These interfaces each correspond to an instance of one of the logic designs stored in the first memory. The reconfigurable logic circuit is responsive to the interface program to provide a number of interface buffers in the second memory that each belong to a corresponding one of the interfaces and are each operable to store data passing between the computer and the reconfigurable logic circuit.

Description

BACKGROUND OF THE INVENTION
The present application relates to computing systems, and more particularly, but not exclusively, is directed to reconfigurable logic for accelerating performance of a computer. Additionally or alternatively, it is envisioned that the present invention may be directed to other applications and technologies.
Programmable Logic Devices (PLDs) have been developed to facilitate testing and modification of a digital logic design before committing it to mass production. Because these devices fill a unique gap between software data processing and dedicated hardware data processing, some have attempted to augment existing computer systems by installing an input/output (I/O) module with a software accessible programmable logic device. Typically, these modules support only one software application. Moreover, these I/O modules tend to communicate too slowly with the system processor to be of practical benefit for many implementations that would otherwise be desirable. Reference is made to U.S. Pat. Nos. 5,978,862 to Kou, et al.; 5,857,109 to Taylor; 5,692,159 to Shand; 5,535,342 to Taylor; and 5,036,473 to Butts et al. for more background information on these arrangements.
On another front, Field Programmable Gate Array (FPGA) integrated circuit development has begun to focus on single-chip, multiple context arrangements. U.S. Pat. Nos. 6,011,740 to Trimberger; 5,978,260 to Trimberger et al.; 5,956,518 to DeHon et al.; 5,915,123 to Mirsky et al.; 5,838,954 to Trimberger; 5,838,165 to Chatter; 5,646,545 to Trimberger et al.; and 5,600,263 to Trimberger et al. provide further information regarding these types of chips. Despite these efforts, challenges remain concerning how to implement these more complicated designs. These challenges are especially acute in relation to interfacing these complex devices with standard computing systems and management of the devices with such systems.
Thus, there is a need for further contributions in this area of technology.
SUMMARY OF THE INVENTION
One form of the present invention is a unique computing system. Other forms include unique systems and methods for reconfiguring programmable logic. Further forms include unique techniques for interfacing with a reconfigurable logic circuit. In still a further form, a unique apparatus with reconfigurable logic is provided. Yet other forms, embodiments, objects, advantages, benefits, features, and aspects of the present invention will become apparent from the detailed description and drawings contained herein.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagrammatic view of a computing system with reconfigurable logic.
FIG. 2 is a diagrammatic view depicting further details of a portion of the system of FIG. 1.
FIG. 3 is a flow chart of a process for utilizing the reconfigurable logic of the system shown in FIG. 1.
FIG. 4 is a flow chart showing further details of a “Create” routine for the process of FIG. 3.
FIG. 5 is a flow chart showing further details of an “Open” routine for the process shown in FIG. 3.
FIG. 6 is a memory allocation diagram for the interface memory shown in FIGS. 1 and 2.
FIG. 7 is a flow chart showing further details of a “Write” routine for the process shown in FIG. 3.
FIG. 8 is a flow chart showing further details of a “Read” routine for the process shown in FIG. 3.
FIG. 9 is a flow chart showing further details of a “Close” routine for the process shown in FIG. 3.
FIG. 10 is a flow chart showing further details of a “Release” routine for the process shown in FIG. 3.
FIG. 11 is a diagrammatic view of another computing system with reconfigurable logic.
FIG. 12 is a diagrammatic view of another arrangement of reconfigurable logic.
DETAILED DESCRIPTION OF THE SELECTED EMBODIMENTS
For the purposes of promoting an understanding of the principles of the invention, reference will now be made to the embodiment illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended. Any alterations and further modifications in the described device, and any further applications of the principles of the invention as described herein are contemplated as would normally occur to one skilled in the art to which the invention relates.
FIG. 1 is a diagrammatic view of computing system 20 of one embodiment of the present invention. System 20 includes computer 22. Computer 22 includes processor bus 24 arranged to operatively couple together a cluster 25 of Central Processing Units (CPUs) 26 a, 26 b, 26 c, 26 d, four (4) of which are depicted (collectively designated processors 26). For one embodiment, cluster 25 includes up to four (4) PENTIUM II microprocessors supplied by Intel Corporation, and processor bus 24 is of a type suitable to interconnect a PENTIUM II microprocessor cluster. Reference is made to: Tom Shanley, Pentium Pro and Pentium II System Architecture, (2d ed., Addison-Wesley Books, 1998) as a source of more information for this type of processor cluster and bus arrangement, and is hereby incorporated by reference. In another embodiment, one or more PENTIUM III microprocessors from Intel Corporation are utilized with a correspondingly arranged processor bus 24. In still other embodiments, more processors or as few as one processor may be utilized. Also, one or more processors of other types and from other manufacturers can be used. In one alternative, computer 22 has only a single processor and processor bus 24 is of a noncluster type. Furthermore, it should be understood that processors or CPUs of the present invention may include one or more components and that processor bus 24 may include one or more components to manage its operation.
Computer 22 also includes memory controller 27 coupled to processor bus 24. Memory controller 27 operatively couples main memory 28 to processor bus 24 via memory bus 29. Memory controller 27 manages access to main memory 28 over processor bus 24, and may be in the form of one or more dedicated components or part of one or more other components of system 20. Main memory 28 may be comprised of one or more components of the volatile or nonvolatile type and may vary in size. For a typical PENTIUM II arrangement of cluster 25, main memory 28 is typically of the Dynamically Random Access Memory (RAM) type; however, other arrangements of main memory 28 may be utilized with or without a PENTIUM II arrangement for cluster 25.
Computer 22 also includes Input/Output (I/O) subsystem 32. Subsystem 32 includes I/O bridge 30 operatively coupled to processor bus 24. I/O bridge 30 is also operatively coupled to I/O bus 34. I/O bridge 30 serves as a communication link between processor bus 24 and I/O bus 34, providing buffering, reformatting, arbitration, and/or other operations to facilitate desired communications between the buses. I/O bus 34 operatively connects one or more I/O devices to processor bus 24 via I/O bridge 30. Two I/ O modules 36 a, 36 b are depicted in FIG. 1 (collectively designated modules 36). It should be appreciated that more or fewer I/O modules 36 may be coupled to I/O bus 34. In one implementation, I/O bridge 30 and memory controller 27 are provided in a combined form as a single component or dedicated set of components to manage I/O and main memory transactions with processor bus 24. Computer 22 can alternatively or additionally include one or more other I/O bridges coupled to I/O bus 34 and/or processor bus 24 to correspondingly provide further I/O buses of the same or different types. In other embodiments, distinct I/O bridges and/or I/O buses are absent.
For one embodiment with a PENTIUM II arrangement of cluster 25, I/O bus 34 is of a standard Peripheral Component Interconnect (PCI) local bus type. In this embodiment, the bandwidth of I/O bus 34 is less than the bandwidth of processor bus 24; where bandwidth is the product of the data width of the given bus and the bus speed (usually in terms of frequency). Also, latency time for a data transfer between different agents on processor bus 24 is typically less than the latency time for a data transfer between one of the devices on processor bus 24 and one of the devices on I/O bus 34 for this embodiment. As used herein, “latency time” means a measure of time from a request by a first device to receive data from a second device to the start of receipt of that data by the first device from the second device in response to the request (usually in terms of bus cycles). Accordingly, the “total transfer time” for a data block is a function of latency time, and the product of the bandwidth and data block size, which is typically less for transfers between devices on processor bus 24 than transfers between a device on processor bus 24 and a device on I/O bus 34.
This embodiment can also include one or more additional I/O bridges to other I/O buses coupled to processor bus 24. Alternatively or additionally, an I/O bridge can be provided to couple an I/O bus of the PCI type to other varieties, such as the Industry Standard Architecture (ISA) and/or the Extended Industry Standard Architecture (EISA) type. In one particular instance of a PENTIUM II-based embodiment, an additional EISA-type I/O bridge is coupled to a PCI form of I/O bus 34 to provide an EISA extension of I/O bus 34, and an Advanced Programmable Interrupt Controller (APIC) bus is connected to processors 26 and an I/O APIC module that is connected to the additional EISA bridge. Furthermore, in other embodiments, different I/O bridges and/or I/O bus types may be utilized for I/O subsystem 32 either with or without a PENTIUM II processor cluster as would occur to those skilled in the art.
I/O module 36 b is further designated as a nonvolatile mass memory interface. This interface is for a permanently installed and/or a portable computer-readable device 37, as schematically depicted in FIG. 1. Device 37 can be of the electromagnetic, optical, semiconductor, and/or other variety as would occur to those skilled in the art. For example, device 37 can be an optically encoded Compact Disk (CD) or Digital Video Disk (DVD) of the read only or read/write type; an electromagnetic hard drive disk, portable floppy drive disk, tape, or bubble memory cartridge; and/or a nonvolatile semiconductor cartridge or card of the Programmable Read Only Memory (PROM), Erasable Programmable Read Only Memory (EPROM), Electrically Erasable Read Only Memory (EEROM), flash, and/or Static Random Access Memory (SRAM) type with portable back up power, just to name a few. In one embodiment, I/O module 36 a and device 37 collectively designate a PCI/ISA/IDE accelerator component and Integrated Drive Electronics (IDE) hard drive unit.
Computer 22 is coupled to reconfigurable logic circuit 40 by processor bus 24. Reconfigurable logic circuit 40 includes programmable logic 50. As used herein, “programmable logic” refers broadly to any form of hardware logic that may be programmed more than once, including, but not limited to, one or more Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), and/or Dynamically Programmable Gate Arrays (DPGAs), to name only a few. Programmable logic 50 is coupled to interface memory 60 by memory bus 64 and design loading logic 70 by bus 74. Design loading logic 70 is coupled to logic design memory 80 by bus 84. Interface memory 60 and logic design memory 80 are collectively designated local memory 90. In one embodiment, reconfigurable logic circuit 40 is provided as a unit with a connector to removably interface to processor bus 24 of computer 22. For this embodiment, the one or more components comprising reconfigurable logic circuit 40 may be mounted to a common printed wiring board with a plugable card edge connector. For multiple component embodiments of reconfigurable logic circuit 40, such components may be mounted on more than one printed wiring board or card, or otherwise be distributed throughout system 20. Indeed, reconfigurable logic circuit 40 may be provided as a permanently installed subsystem on a mother board shared with various components of computer 22. Accordingly, reconfigurable logic circuit 40 alternatively may be considered an integral part of computer 22.
Referring additionally to FIG. 2, further details of reconfigurable logic circuit 40 are described. Programmable logic 50 is provided with computer interface logic portion 54, memory interface logic portion 56, and user-defined programmable logic portion 58. Preferably, programmable logic 50 is comprised of one or more FPGA devices of the volatile type, such as those manufactured by Xilinx or Altera; however, one or more other device types or a combination of different device types may comprise programmable logic 50. For volatile configurations of programmable logic 50, computer interface logic portion 54 and/or memory interface logic portion 56 can be programmed as part of an initialization operation when power or a reset signal is applied to reconfigurable logic circuit 40 as more fully described hereinafter in connection with FIG. 3.
Computer interface logic portion 54 of programmable logic 50 is operatively coupled to processor bus 24 to provide a direct, two-way communication pathway with one or more of processors 26 of computer 22. Computer interface logic portion 54 is also operatively coupled to design loading logic 70 by bus 74. Because of the bus 84 connection of design loading logic 70 to logic design memory 80, information can be communicated between computer 22 and logic design memory 80 via computer interface logic portion 54 and design loading logic 70. Logic design memory 80 is arranged to store a number of core logic designs 86 in memory 80, a few of which are individually designated in FIG. 2 as Core 0, Core 1, Core 2, . . . , and Core n; where “n” is the total number of core logic designs stored. Designs 86 can be initially provided to logic design memory 80 from computer 22. Designs 86 each provide a different configuration of user-defined logic portion 58. Design loading logic 70 is responsive to appropriate signals or commands to load a selected one of the stored logic designs 86 into programmable logic 50 via bus 84 and 74. One or more designs 86 in memory 80 can be scheduled for application to programmable logic 50.
Memory interface logic portion 56 of programmable logic 50 provides a communication pathway from interface memory 60 to computer 22 and user-defined logic portion 58. Interface memory 60 is dynamically allocated to include one or more control structures 66, scratch memory space 67, and one or more interface buffers 68. For each scheduled or active design 86, one of control structures 66 and one or more corresponding interface buffers 68 are allocated to store information pertinent to interfacing between the given design 86 and computer 22. Scratch memory space 67 is available for access by user-defined logic 58.
Referring additionally to FIG. 3, one technique for managing and scheduling the configuration of programmable logic 50 with logic designs 86 is described in connection with process 210 illustrated by the flow chart of FIG. 3. Process 210 starts from a reset or power-on condition 212 of system 20. From condition 212, computer 22 maps reconfigurable logic circuit 40 into a designated memory space “RL” in operation 214. In operation 216, loading logic 70 is configured to load Core 0 into programmable logic 50 from memory 80. Once loaded, Core 0 setsup reconfigurable logic circuit 40 to interface with computer 22 via processor bus 24 by defining computer interface logic portion 54 and memory interface logic portion 56 of programmable logic 50. Typically, Core 0 is a special initialization design that need not specify a user-defined logic portion 58 of programmable logic 50. It should be appreciated that for process 210, it is desirable that at least a portion of design loading logic 70 and core logic design memory 80 be of a nonvolatile type to provide for loading of computer interface logic portion 54 and memory interface logic portion 56 upon power-up. In one embodiment, loading logic 70 is provided by a nonvolatile Complex Programmable Logic Device (CPLD), a hard-wired state machine of multiple devices, or the like; and memory 80 includes one or more nonvolatile flash-type devices. It should be understood that each core logic design 86 may be arranged to configure computer interface logic portion 54 and/or memory interface logic portion 56 along with user-defined logic portion 58. Alternatively, once interface logic portions 54 and/or 56 are configured upon power-up or reset condition 212, subsequent reconfigurations of programmable logic 50 with different core logic designs 86 only alter user-defined logic portion 58. In still other embodiments, interface logic portions 54, 56 are nonvolatile, so that initial loading is not required upon power-up.
After computer interface logic portion 54 and memory interface logic portion 56 are established in operation 216, communication between computer 22 and reconfigurable logic 50 may take place over processor bus 24. For example, by accessing memory addresses in memory space RL, one or more processors 26 of computer 22 can write interface information to reconfigurable logic circuit 40, such as input data to be processed by programmable logic 50 or commands to reconfigurable logic circuit 40; and read interface information, such as processing results from programmable logic 50 or status of reconfigurable logic circuit 40. Computer 22 executes a number of application programs 112 and logic interface program 122 (see FIG. 2). Logic interface program 122 provides an upper-level interface programming layer responsive to requests by application programs 112 to utilize reconfigurable logic circuit 40. Logic interface program 122 communicates with reconfigurable logic circuit 40 through a second, lower-level programming layer in the form of device driver routine 124. Device driver routine 124 is customized to the particulars of the design for reconfigurable logic circuit 40 to convert communications from logic interface program 122 into a format recognized by reconfigurable logic circuit 40. Accordingly, for this embodiment a number of different device driver routines 124 can be alternatively utilized to interface with correspondingly different reconfigurable logic designs. These different device driver routines 124 each communicate with logic interface program 122 through a common protocol, but generally have different communication protocols peculiar to the associated reconfigurable logic design. In other embodiments, different interface program arrangements may be utilized that include the same, more, or fewer programming layers. Indeed, in one alternative embodiment, logic interface program 122 is integrally combined with device driver routine 124 to provide a single layer of logic interface programming. In other alternatives, logic interface program 122 can include multiple device drivers in the form of selectable subroutines, and/or include three or more programming layers.
In FIG. 2, application programs 112 are designated as APP 1, APP 2, . . . , and APP m; where “m” is the total number of application programs 112 undergoing concurrent execution by computer 22. As used herein, “concurrent execution” of two or more programs refers to starting and managing execution of the two or more programs by the computer at the same time, even though the computer may only perform instructions for one of the programs at a time. Concurrent execution includes, but is not limited to multitasking of two or more programs through context switching, time slicing, or another mode, and/or multiprocessing of two or more programs by simultaneously executing each program on a different CPU.
Typically, an application program 112 provides input data for processing by the programmable logic 50 with the requested core logic design 86, and programmable logic 50 processes the input data to generate corresponding output data. Management of this input and output data for each requesting application program 112 are among the tasks performed by logic interface program 122, computer interface logic portion 54, and/or memory interface logic portion 56.
For many applications, reconfigurable logic circuit 40 is utilized to accelerate a computationally intense algorithm. Such algorithms are commonly included in encryption/decryption, image processing, voice recognition or synthesis, video conferencing, and the like. By making a variety of core logic designs 86 and/or logic design instances available to application programs 112, acceleration of these and other commonly executed processes is made possible. In one embodiment, computer 22 operates with a WINDOWS-based operating system from MICROSOFT, and logic interface program 122 is arranged to provide a WINDOWS-compatible interface protocol for application programs 112. For this embodiment, logic interface program 122 provides a standard Application Program Interface (API) to communicate with application programs 112 executed under the WINDOWS operating system. Nonetheless, in other embodiments, different operating systems and/or operation system relationships to logic interface program 122 can be utilized.
After operation 216, process 210 continues with processing/monitoring loop 220. In loop 220, operation 230 includes the performance of tasks by logic program interface 122 in operations block 232 and reconfigurable logic circuit 40 in operations block 234. In operations block 232, logic interface program 122 generates various read/write accesses to memory space RL of reconfigurable logic circuit 40. Reconfigurable logic circuit 40 interprets and responds to these memory accesses in operations block 234 via computer logic interface portion 54.
As part of operation 230, logic interface program 122, computer interface logic portion 54, or a combination of these is configured to periodically switch between core logic designs 86 of logic. design memory 80 that have been scheduled to service requests from application programs 112. In one embodiment, context switching is performed by changing the configuration of programmable logic 50 from one requested core logic design 86 to next, based on the passage of a uniform time interval between each change. In another embodiment, the timing of context switching may vary depending on the core logic design and/or inputs from logic interface program 122. For example, these inputs may relate to the need for additional time to process a given core logic design that handles larger amounts of data relative to another of the core logic designs. In still another embodiment, logic interface program 122 is arranged to recognize when requests by application programs 112 can be addressed more efficiently by processing with no or limited context switching. Nonetheless, alternative embodiments may include context switching regardless of priority or other inputs. Yet other embodiments provide for multiple context switching modes and an option of no context switching as part of logic interface program 122. Indeed, in a further embodiment, logic interface program 122 is arranged to handle simultaneous processing of different core logic designs by multiple programmable logic devices 50 included in reconfigurable logic circuit 40 (not shown). Logic interface program 122 includes a scheduler routine to schedule and manage configuration of programmable logic 50 with different logic designs 86.
Even if different application program requests are for the same core logic design, logic interface program 122 instantiates a different logical or virtual program interface for each application program request because the input and/or output data for a given request typically differs. Accordingly, whether for the same or different core logic designs, each of these instantiations or “instances” is separately established and maintained by logic interface program 122. Logic interface program 122 is further arranged to determine if a given instantiation or “instance” of a logic design requires activation/loading of a new logic design or if it is already scheduled. In correspondence with this capability, instances and/or virtual program interfaces established for active instances may be modeled as “clients” and logic interface program 122/reconfigurable logic circuit 40 may be modeled as a “server” for these clients.
In one example directed to multiple instances of a common core logic design, an encryption core logic design is requested by a number of the application programs 112 that is embodied in user-defined logic portion 58 of programmable logic 50. This design partially or completely encrypts data provided to the reconfigurable logic circuit 40 and returns encrypted results to computer 22 via processor bus 24. It should be appreciated that such a core logic design might be requested a number of times by different application programs or the same application program multiple times with different input data for each request. Accordingly, logic interface program 122 tracks a separate designator for each instance; however, once the corresponding user-defined logic portion 58 is configured with the encryption logic, it need not change. Furthermore, when multiple instances of a common design are indicated along with scheduling of other designs, logic interface program 122 can be arranged to provide the option of processing each of these instances consecutively to reduce overhead that might otherwise occur due to swapping different core logic designs in and out of programmable logic 50. Nonetheless, in other embodiments, it may be more advantageous to provide context switching without adjustment for multiple instances of the same design, or to otherwise adjust allocation as would occur to those skilled in the art.
Logic interface program 122/reconfigurable logic circuit 40 provides for the allocation of overflow memory space in main memory 28 as needed to address fluctuating demands on local memory 90. FIG. 2 depicts an overflow memory space 128 with a few representative overflow segments designated by reference numerals 128 a, 128 b, 128 c, 128 d. Segments 128 a, 128 crepresent overflow segments for core logic design programs that are further described in connection with routine 310 of FIG. 4. Segments 128 b, 128 d represent interface information overflows 2 and 5 that correspond to logic design instances 2 and 5 scheduled for execution by programmable logic 50. During context switching between core logic designs or logic design instances, the size of memory 60 may not be sufficient to store desired input, output, and/or state information of a context while it is deactivated. Accordingly, overflow segments 128 b and 128 d may be used until programmable logic 50 is again allocated to process that particular context. Nonetheless, in other embodiments, such overflow space may not be necessary or may not be allocated, instead limiting operations to available space in local memory 90 of reconfigurable logic circuit 40.
It should be understood that application programs 112 requests to utilize reconfigurable logic circuit 40 may result in a number of coexisting virtual program interfaces. Each of these virtual program interfaces communicates with reconfigurable logic circuit 40 through a set of standard routines or functions of logic interface program that treat each logic design instance in a manner comparable to a logical file. These routines are listed as part of operations block 232 in FIG. 3. Logic interface program 122 manages the virtual program interfaces in a file-like manner. Logic interface program 122 communicates these standard commands/functions through device driver routine 124. Device driver routine 124 generates each read or write access to which reconfigurable logic circuit 40 responds. Computer interface logic portion 54 of programmable logic 50 monitors processor bus 24 for an appropriate read or write access to memory space RL by device driver routine 124. If a valid access is detected, reconfigurable logic circuit 40 responds in accordance with the command, request, or data communicated by computer 22.
Operations 232, 234 are further described in terms of the tasks performed for various routines of logic interface program 122 as follows. A new core logic design is loaded into reconfigurable logic circuit 40 from computer 22 with the Create(Core Design) routine 310 as further described in connection with the flow chart of FIG. 4. Routine 310 starts with designation stage 312. From stage 312, routine 310 continues with conditional 314 that determines whether memory space is available in logic design memory 80. In one embodiment, this test is performed by logic interface program 122, which maintains a record of the amount of memory space available in logic design memory 80 since the reset or power-on condition 212. In alternative embodiments, this test may be partially or completely performed by computer interface logic portion 54 and/or design loading logic 70. If memory space is available in logic design memory 80, routine 310 continues with stage 322 to push the new logic core design into logic design memory 80 in stage 322. The execution of stage 322 includes transferring the new core logic design under the control of logic interface program 122 from main memory 128 and/or an I/O device such as computer readable device 37 to logic design memory 80 via computer interface logic portion 54, bus 74, loading logic 70, and bus 84.
Routine 310 continues with stage 324. In stage 324, logic interface program 122 assigns a unique identification (ID) for the new core logic design stored in logic design memory 80 that may be used in other routines of logic interface program 122. Routine 310 then halts, returning to operation 230 of process 210 of FIG. 3. From operation 230, process 210 continues with conditional 236. Conditional 236 tests if a power-down or reset has occurred. If a power-down or reset condition has not occurred, then loop 220 is engaged to return to operation 230 to process the next task of logic interface program 122 in operations block 232 and reconfigurable logic circuit 40 in operations block 234. If a power-down or reset condition has occurred, process 210 halts.
Returning to conditional 314 of FIG. 4, if space is not available in logic memory 80, routine 310 continues with conditional 316. Conditional 316 test whether overflow memory space 128 is available in main memory 28. As depicted in FIG. 2, overflow memory space 128 includes overflow segments 128 a and 128 b for Core X and Core Y logic designs, respectively. If overflow space is not available, routine 310 continues with stage 318 which indicates a failure of the Create function and returns a corresponding indication. From stage 318, routine 310 halts and control returns to operation 230 of process 210.
If it is determined that overflow memory space is available in main memory 28, as tested by conditional 316, routine 310 continues at stage 320. In stage 320, logic interface program 122 directs the transfer of the least recently used core logic design to main memory 28. For the FIG. 2 depiction, Core X or Core Y may be such a design. The determination of which logic design was least recently used includes a reference by logic interface program 122 to interface memory 60 through memory interface logic portion 56 of programmable logic 50, as will be explained in greater detail hereinafter in connection with the flow chart of routine 410 shown in FIG. 5 and the memory diagram of FIG. 6. After stage 320, routine 310 resumes with stages 322 and 324 as described previously. Routine 310 then halts and control returns to operation 230 of process 210 as shown in FIG. 3.
Routine 310 may be repeated a number of times to provide for an appropriate loading of a number of desired core logic designs 86 in memory 80. Once a desired logic design 86 is stored in memory 80, a virtual program interface to that design is established by activating (instantiating) an instance of the logic design with the Open(ID, PL) routine 410 further described in connection with the flow chart of FIG. 5 and the memory diagram of FIG. 6. Routine 410 begins with stage 412; where ‘ID’ is the ID of a core logic design previously created with Create(Core Design) routine 310, and ‘PL’ is a selected priority level. From stage 412, routine 410 continues with stage 413 that establishes a logical/virtual program interface for an instance of core logic design ID with logic interface program 122. Stage 413 also assigns a unique instance identifier IID for that instance. After opening a program interface in stage 413, routine 410 continues with conditional 414 to test whether programmable logic 50 is available to execute the core logic design ID corresponding to the newly opened instance IID. If it is available, the core logic design specified by ID is loaded into programmable logic 50 in stage 416. If it is not available, the scheduler routine of logic interface program 122 is executed to schedule an active instance of the core logic design specified by ID according to its assigned priority level PL in stage 418. Once either stage 416 or 418 is completed, routine 410 halts and control returns to operation 230 of process 210.
Regardless of which stage 416 or 418 is executed by routine 410, core logic design ID stored in memory 80 is activated either to be immediately loaded into programmable logic 50 via loading logic 70 or scheduled for such loading. This loading process includes sending appropriate direction from logic interface program 122 via device driver routine 124 to design loading logic 70 through computer interface logic portion 54. Design loading logic 70 then transfers the appropriate core logic design 86 designated by ID via bus 84 and 74 either immediately for stage 416 or in accordance with the schedule established in stage 418. As in the case of the Create(Core Design) routine, the Open(ID) routine may be repeated a number of times to establish a number of coexisting program interfaces for different logic design instances. It should be appreciated that in other embodiments, the Create(Core Design) and Open(ID) operations may be combined into a single routine or function with or without other operations. In one form of this combined approach, a new core logic design is loaded into reconfigurable logic circuit 40, and a logic design instance instantiated in response to the routine. Subsequent attempts to load the same program instantiate a new instance, but do not reload the design.
Referring additionally to FIG. 6, with each establishment of an instance IID of one of core logic designs 86, logic interface program 122 also directs the establishment of a corresponding control structure 66 and interface buffer(s) 68 via computer interface logic portion 54 and memory interface logic portion 56 of programmable logic 50. Going from top to bottom, memory 60 is diagrammed from its lowest address to its highest address. For each instance IID that has been opened in accordance with routine 410, a control structure for the corresponding core logic design is added from low towards high memory; where the ellipsis between structures 66 represent like structures that are not shown to preserve clarity. From the highest address towards lower addresses of memory 60, interface control buffers 68 are allocated in sets for each instance IID of a core memory design. Again, an ellipses is shown between interface buffers 68 to represent like buffers that are not specifically illustrated to preserve clarity. Between control structures 66 and interface buffers 68, scratch memory space 67 is illustrated that dynamically changes in size depending on the number of allocated control structures 66 and interface buffers 68.
FIG. 6 illustrates in greater detail a representative control structure entry set 69 a for one of the control structures 66. The entries of set 69 a are arranged to store interface information for a designated Core 1 logic design (ID=Core 1). Entry 66 a specifies a unique identifier to designate Core 1 as the corresponding logic design for the particular instance. Entry 66 b includes data specifying the time of last use of the instance IID. The information in entry 66 b can be referenced to determine which logic design is the least recently used in stage 320 of routine 310.
FIG. 6 also illustrates in greater detail a representative interface buffer set 69 b. Interface buffer set 69 b includes the interface buffers 68 allocated to the logic design instance IID of the Core 1 logic design with the control structure entry set 69 a. Entry 66 c of control structure entry set 69 a is a pointer that specifies the starting address in interface memory 60 of input buffer 68 a of set 69 b. Entry 66 d of set 69 a specifies the size of the input buffer 68 c. Accordingly, input buffer 68 a is allocated through entries 66 c, 66 d of the corresponding control structure 66. Data is stored in input buffer 68 a by computer 22 for processing by the requested instance IID of the Core 1 logic design via the Write(IID) function to be further described hereinafter.
Entry 66 e of control structure entry set 69 a is a pointer to the starting address of output buffer 68 b of interface buffer set 69 b. Entry 66 f specifies the size of output buffer 68 b. Accordingly, output buffer 68 b is allocated through entries 66 e, 66 f of the corresponding control structure 66. Data is read from output buffer 68 b by computer 22 with the Read(IID) function to be further described hereinafter. This output data includes the results obtained by processing the data in input buffer 68 a with the Core 1 logic design for instance IID.
Entry 66 g of control structure entry set 69 a specifies the starting address of a state buffer 68 c of interface buffer set 69 b. Entry 66 h of control structure 66 a specifies the size of state buffer 68 c. The state buffer may be used for the storage of intermediate results during context switching, to provide overflow for input buffer 68 a and/or output buffer 68 b, or as would otherwise occur to those skilled in the art.
Other control structures 66 and interface buffers 68 of memory 60 are configured like sets 69 a, 69 b, respectively, for each instance IID. In other embodiments, the number and type of entries for control structures 66 may vary. Likewise, the number and type of interface control buffers 68 may be different in number and type, and indeed may vary from one to the next for different core logic designs or logic design instances. In one variation, a common buffer is used by an instance IID for storing both input and output data. The allocation and storage of values in control structures 66 for each different instance IID may be performed and managed by logic interface program 22 via device driver routine 124, computer interface logic portion 54, memory interface logic portion 56, or a combination of these. Accordingly, the allocation of scratch space 67 follows from the size, location, and number of buffers defined by each of control structures 66.
Referring again to operation 230 of process 210 shown in FIG. 3, a Write(IID) function of operations block 232 is further described in connection with routine 510 a detailed in the flow chart of FIG. 7. Write(IID) routine 510 a is performed to provide input data from a requesting application program 112 for processing by reconfigurable logic circuit 40 via logic interface program 122 and device driver routine 124. The Write(IID) function is only performed after the corresponding instance IID has been instantiated. From the designation in stage 512 a, routine 510 a continues with conditional 514 a. In conditional 514 a, routine 510 a tests whether the particular core logic design IID has priority for execution by the hardware of reconfigurable logic circuit 40. Such priority may be dynamic or static and may be based on one or more factors. Such factors can include, the relative priority level PL of the various active instances IID, the amount of time since a given instance IID has been given hardware priority, the degree of utilization of reconfigurable logic circuit 40, and/or the availability of a software routine alternative to name a just a few. In one form, priority is determined based on a status flag that is updated from time-to-time based one or more of these factors.
If the core logic design instance ID does have priority as tested by conditional 514 a, routine 510 a continues with conditional 516 a, which tests whether the corresponding core logic design ID is loaded in programmable logic 50. If the core logic design specified by ID is not loaded, stage 518 a is engaged which waits until the appropriate core logic design specified by ID is switched into the programmable logic 50 in accordance with the scheduler routine of logic interface program 122. Typically this wait is for the next context switch. Stage 519 a is next encountered in which data to be processed for the Write(IID) operation is pushed into the corresponding input buffer of interface buffers 68. If the test of conditional 516 a is affirmative, that is the desired core logic design ID is already loaded in programmable logic 50, then routine 510 a proceeds directly to stage 519 a from the affirmative branch of conditional 516 a.
Routine 510 a then resumes with a protocol test in conditional 520 a. Conditional 520 a determines whether the particular core logic design is to be applied immediately as a part of routine 510 a—an “eager protocol.” If the protocol for the given instance IID is of the eager type, as tested by conditional 520 a, then routine 510 a continues with stage 522 a to apply the corresponding core logic design. Routine 510 a then returns to process 210 to await the next operation. Likewise, if the test of conditional 520 a is negative—that is the protocol is not of the eager type, then the routine 510 a returns directly to process 210 from the negative branch of conditional 520 a.
Returning to conditional 514 a, if the instance IID does not have priority for hardware execution, then routine 510 a continues with stage 530 a. In stage 530 a, the input data that would have been processed by reconfigurable logic circuit 40 if instance IID did have priority, is instead provided to a software routine that emulates the corresponding core logic design ID. This input data may be stored in a corresponding software input buffer for the emulation routine. Next, conditional 532 a is encountered which performs the same protocol test as conditional 520 a. If the protocol is of the eager type as tested by conditional 532 a, then the software emulation routine is applied in stage 534 a. The Write(IID) routine 510 then returns. Likewise, if the protocol type is not of the eager type, then routine 510 returns directly from the negative branch of conditional 532 a.
A Read(IID) function of operations block 232 is further described in connection with routine 510 b detailed in the flow chart of FIG. 8. Read(IID) routine 510 b is performed to obtain output data relating to the processing of data previously input through the performance of one or more Write(IID) functions in accordance with routine 510 a. Likewise, a Read(IID) function is only performed after the corresponding instance IID has been instantiated. From the designation in stage 512 b, routine 510 b continues with conditional 514 b. Conditional 514 b performs the same test as conditional 514 a of routine 510 a, regarding whether the particular core logic design IID has priority for execution by the hardware of reconfigurable logic circuit 40. If the core logic design instance IID does have priority as tested by conditional 514 b, routine 510 b continues with conditional 516 b, which tests whether the corresponding core logic design ID is loaded in programmable logic 50. If the core logic design specified by ID is not loaded, operation 518b is engaged which waits until the appropriate core logic design specified by ID is switched into the programmable logic 50 in accordance with the scheduler routine of logic interface program 122. Typically this wait is for the next context switch. Routine 510 b then resumes with conditional 520 b . If the test of conditional 516 a is affirmative, that is the desired core logic design ID is already loaded in programmable logic 50, then routine 510 a proceeds directly to conditional 520 b from the affirmative branch of conditional 516 b.
Conditional 520 b provides the same protocol test as conditionals 520 a, 532 a of routine 510 a to determine-if the instance IID is of the eager type. If the given instance ID is not of the eager type, then stage 522 b is encountered which applies the corresponding core logic design. Routine 510 b continues at stage 540 b. If instance IID is of the eager type as tested by conditional 520 b, then routine 510 b proceeds directly from the affirmative branch of conditional 520 b to stage 540 b. In stage 540 b, the processed output data is pulled from the corresponding output buffer of interface buffers 68 by interface program 122 via device driver routine 124 to be returned to the corresponding application program 112.
Returning to conditional 514 b, if the instance ID does not have priority for hardware execution, then routine 510 b continues with conditional 532 b, which performs the same protocol test as conditional 520 b. If the test of conditional 532 b is negative, that is a noneager instance IID, then routine 510 b continues with stage 534 b to apply the emulation software. Routine proceeds from stage 534 b to stage 542 b to provide the output data to the requesting application program 112 produced by the software routine emulating the core logic design. If the test of conditional 532 b is affirmative, that is the instance IID is eager, then routine 510 b proceeds directly from the affirmative branch of routine 532 b to stage 542 b. Routine 510 b returns to process 210 after performance of stage 542 b.
Referring to both FIGS. 7 and 8, it should be understood that an instance IID of the eager type favors processing in stage 522 a or 534 a of the associated data input in stage 519 a or 530 a, respectively, as part of the performance of the Write(IID) routine 510 a. Accordingly, because the data has already been processed, it need only be retrieved in the corresponding stages 540 b, 542 b of the Read(IID) routine 510 b. In contrast, for a noneager type of instance IID, Write(IID) routine 510 a inputs the data in the respective stage 519 a or 530 a without application. Instead, the Read(IID) routine 510 b processes the input data in stage 522 b or 534 b, respectively.
The Close(IID) routine 610 is detailed in the flow chart of FIG. 9. It is performed to selectively close an open instance IID of logic design ID as established with the Open(ID) routine. From the identifier 612, routine 610 continues with stage 613. In stage 613, the core logic design instance IID is closed. Routine 610 resumes with conditional 614. In conditional 614, logic interface program 122 tests whether IID was the only instance of the corresponding core logic design ID. If it was the only instance, routine 610 continues with stage 615. In stage 615, a flag is set to indicate configurable logic 40 is free to accept another design. This flag can be read for conditional 314 and/or 316 of routine 310 to determine if a new logic design can be loaded. Routine 610 then proceeds from stage 625 or a negative result for conditional 614 to conditional 616 to determine whether there is a request pending to utilize programmable logic 50. Such requests are maintained as part of the scheduler routine for logic interface program 122. If there is not a pending request, stage 618 is engaged to set a flag indicating availability of programmable logic 50. This flag can be read when executing conditional 414 of routine 410 to determine if a logic design can be executed. If there is a request pending, stage 620 is engaged. In stage 620 logic interface program 122 executes its scheduler routine to load another core logic design into programmable logic 50 or serve another instance IID. From the execution of either stage 618 or 620 as determined by conditional 616, routine 610 halts and returns to operation 230 of process 210 as depicted in FIG. 3.
The Release(ID) routine 710 of operations 232 is further detailed by the flow chart depicted in FIG. 10. Routine 710 is performed to release resources set aside for core logic design ID established with the Create(Core Design) routine 310, and requires that all instances IID for core logic design ID be closed first with the Close(IID) routine 610. From the identifier 712, routine 710 proceeds to stage 714 to free the core logic design identifier ID for use by a different core logic design. Routine 710 then proceeds to stage 716 to purge the released core logic design from storage in logic design memory 80 and any overflow space contained in main memory 28. This purge may be accomplished by marking the associated memory space to be overwritten by subsequent designs and/or to take action to erase logic design information. After stage 716, routine 710 halts, returning control to operation 230 of process 210. It should be appreciated that in other embodiments, the Close(IID) and Release(ID) operations may be combined into a single routine or function with or without other operations. In one form, all instances IID of the core logic design ID are closed and the core logic design memory space released in response to execution of this combined routine.
FIG. 11 illustrates processing system 200 of another embodiment of the present invention; where like reference numerals refer to like features of previously described embodiments. System 200 includes computer 22 as described in connection with FIG. 1. System 200 also includes reconfigurable logic circuit 240 operatively coupled to memory bus 29 for main memory 28. Reconfigurable logic circuit 240 can otherwise be configured the same as reconfigurable logic circuit 40 and correspondingly mapped as a memory space RL to communicate with one or more of processors 26.
FIG. 12 illustrates reconfigurable logic circuit 140 of another embodiment of the present invention; where like reference numerals represent like features of previously described embodiments. Reconfigurable logic circuit 140 is interchangeable with reconfigurable logic circuit 40 of system 20 and/or reconfigurable logic circuit 240 of system 200. Reconfigurable logic circuit 140 includes programmable logic 150 interfaced with computer 22; where such interface may be, for example, by coupling to processor bus 24 as in the case of system 20 or memory bus 29 as in the case of system 200. Programmable logic 150 includes computer interface logic 154, memory interface logic 156, and user-defined logic portion 58. Computer interface logic 154 is coupled to computer 22 by processor bus 24 and loading logic 170 by bus 174 in a manner analogous to that described for computer interface logic portion 54, bus 74, and design loading logic 70 of reconfigurable logic circuit 40.
Memory interface 156 is coupled to interface memory 160 by memory buses 164 a, 164 b. Interface memory 160 is comprised of two devices, memory device 160 a and memory device 160 b. Each of memory devices 160 a and 160 b include one or more corresponding control structures 166 a, 166 b, scratch space 167 a, 167 b, and interface buffers 168 a, 168 b, respectively. For the depicted example, memory device 160 a stores control structure 166 a and interface buffers 168 a for a Core 1 logic design and memory device 160 b stores control structure 166 b and interface buffers 168 b for a Core 2 logic design. Memory interface 156 is partitioned so that user-defined logic portion 158 can access one of the devices 160 a, 160 b on one of buses 164 a, 164 b (a local access mode), while computer 22 can access the other of the devices 160 a, 160 b on the other bus 164 a, 164 b (a remote access mode). For instance, during operation of programmable logic 50 while configured with the Core 1 design, user-defined logic portion 58 can locally access scratch space 167 a, and/or interface buffers 168 a; and computer 22 can remotely access device 160 b simultaneously. Likewise during operation of programmable logic 150 with configured with the Core 2 logic design, user-defined logic portion 58 can locally access scratch space 167 b and/or interface buffers 168 b; and computer 22 can remotely access device 160 a simultaneously.
This parallel access capability permits logic interface program 122 to send/receive interface information with respect to a first one of devices 160 a, 160 b while the executing user-defined logic portion 58 of programmable logic 50 utilizes the interface information and/or scratch space 167 a, 167 b of a second one of the devices 160 a, 160 b. Accordingly, greater efficiencies can be realized in comparison to a technique where access to the interface memory 60 by only computer 22 or user-defined logic portion 58 is permitted at a given time. Typically, remote access by computer 22 is given priority when both computer 22 and user-defined logic portion 58 are seeking access to one of devices 160 a, 160 b.
It should be understood, that multiple control structures and corresponding interface buffers for multiple instances may be stored in each memory device 160 a, 160 b. For such arrangements, context switching may be arranged to alternate between local and remote access modes for each device 160 a, 160 b. By way of nonlimiting example, for context switching between four different logic designs with the sequence Core 1 logic design, Core 2 logic design, Core 3 logic design, and Core 4 logic design; interface information for the Core 1 and Core 3 logic designs could be stored in memory device 160 a and the interface information for the Core 2 and Core 4 logic designs could be stored in memory device 160 b to provide the local/remote access alternation. Alternatively or additionally, more than two memory devices each having a separate access bus may be operated with local and remote access modes in correspondence with the particular core logic design being executed.
Computer interface logic 154 is also coupled to loading logic 170 via bus 174. Loading logic 170 is coupled to logic design memory 180 via bus 184. Logic design memory 180 includes one or more volatile memory devices 180 a and one or more nonvolatile memory devices 180 b. In one embodiment, the one or more nonvolatile memory devices 180 b include at least one flash memory device for initial storage of core logic designs. The one or more volatile memory devices 180 a can include Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), a combination of these, and/or such other type of memory as would occur to those skilled in the art. Because a limit typically exists regarding the number of times a flash memory of devices 180 b may be rewritten, the one or more volatile devices 180 a can serve as another means to store core logic designs; thereby reducing the likelihood of reaching such a limit. In one embodiment, volatile devices 180 a are arranged to provide storage for core logic designs that are expected to change more frequently relative to core logic designs stored in nonvolatile devices 180 b. Accordingly, logic interface program 122 and/or device driver routine 124 can be arranged to provide an option regarding the form of core logic design storage desired. Furthermore, it should be appreciated that SRAM and DRAM type devices 180 a can often provide greater storage density than flash memory type devices 180 b, facilitating more core logic design storage.
Referring generally to FIGS. 1-12, in other embodiments, memory 60, 160 and/or memory 80, 180 may be partially or completely provided by main memory 28 of computer 22. In still other embodiments, main memory 28 may not be utilized at all for overflow of reconfigurable logic circuit 40, 140, 240. Alternatively or additionally, reconfigurable logic circuit 40, 140, 240 may include programmable logic arranged to be simultaneously configured with two or more core logic designs and with one or more logic interface programs executed by computer 22 to control and interface with instances of such designs.
Because computer interface logic 54, 154 and memory interface logic 56, 156 are not likely to change frequently, it can completely or partially be stored in one or more flash memory devices and/or other nonvolatile type of memory devices that are separate from devices for storing core logic designs. In one alternative embodiment, some or all of computer interface logic 54, 154 and/or memory interface logic 56, 156 can be downloaded from computer 22 upon power-up. In another alternative embodiment, computer interface logic 54, 154 and/or memory interface logic 56, 156 is partially or completely provided in an Application Specific Integrated Circuit (ASIC), or other hardwired logic form, instead of being configured in programmable logic 50.
It should be understood that in an alternative embodiment, one or more reconfigurable logic circuits according to the present invention can be connected to processor bus 40 as described in connection with FIG. 1 and one or more other reconfigurable logic circuits according to the present invention can be connected to memory bus 29 as described in connection with FIG. 11. In yet other embodiments, one or more reconfigurable logic circuits according to the present invention can be configured as an I/O module either with or without other reconfigurable logic circuits that are connected to processor bus 24 and/or memory bus 29. Furthermore, a reconfigurable logic circuit of the present invention can be configured as an active bus agent—even emulating a processor in one or more respects—as opposed to a passive memory-mapped agent.
Many other embodiments of the present invention are envisioned. For example, in another embodiment, a system includes a digital processor bus operable to interconnect a process cluster, a reconfigurable logic device, a main memory, and one or more processors coupled together by the processor bus. At least one of the processors is operable to access the reconfigurable logic device. An input/output bridge is coupled to the processor bus and is also coupled to an input/output bus, that has a slower transmission clock speed than the processor bus.
In yet a further embodiment, an apparatus comprises a reconfigurable logic circuit configured with a computer interface. This circuit includes programmable logic, a first memory to dynamically store a number of logic designs each selected to configure the programmable logic, and a second memory to dynamically store interface control information for each of the logic designs. This information relates to one or more buffers allocated in the second memory for each of the logic designs. These buffers are provided to transmit data through the computer interface.
In still a further embodiment, a reconfigurable logic circuit includes programmable logic, design loading logic connected to the programmable logic, and one or more memory devices. These memory devices include a first memory space operable to store a number of logic designs for the programmable logic. The first memory space is accessible by the loading logic to selectively load one or more of the logic designs into the programmable logic. The memory devices also include a second memory space operable to store a number of interface control structures each corresponding to a different instance of one of the logic designs. The second memory space is accessible by the programmable logic.
Another embodiment includes operating a computer coupled to a reconfigurable logic circuit that has programmable logic, a first memory device, and a second memory device. This embodiment also includes storing first interface information in the first memory device for a first logic design and second interface information in the second memory for a second logic. design. Furthermore, it includes performing an operation with the programmable logic during configuration by the first logic design and accessing the first memory device with the programmable logic and the second memory device with the computer during performance.
For still another embodiment, a system includes a reconfigurable logic circuit and a computer. The reconfigurable logic circuit comprises programmable logic and a local memory that is operable to store interface information relating to a number of logic designs for the programmable logic. The computer is operatively coupled to the reconfigurable logic circuit and includes one or more processors and a main memory. The computer is operable to execute one or more application programs and a logic interface program. The one or more application programs are operable to generate a number of requests to utilize the reconfigurable logic circuit. The logic interface program is responsive to these requests to control application of the logic designs to the programmable logic. The logic interface program is operable to selectively allocate a memory space in the main memory for overflow of the local memory.
In yet another embodiment, a method comprises: executing at least one application program and a logic interface program on a computer coupled to a reconfigurable logic circuit that includes programmable logic and a local memory; storing several logic designs in the local memory with the logic interface program that are each operable to configure the programmable logic; operating two or more coexisting program interfaces between one or more of the application programs and the reconfigurable logic circuit with the interface program, where the program interfaces each correspond to a selected one of the logic designs; writing input data to the reconfigurable logic circuit for a selected one of the program interfaces; configuring the programmable logic with the selected one of the logic designs; processing the input data with the programmable logic after this configuration; reading output data from the reconfigurable logic circuit for the. selected program interface after this processing; closing the selected program interface after reading with the interface program, where other of the program interfaces remain open; and replacing a first one of the logic designs with a different logic design.
Another method of the present invention includes operating a computer coupled to programmable logic; concurrently executing two or more application programs with the computer that each generate at least one of a plurality of requests to utilize the programmable logic during execution; processing the requests with an interface program executed by the computer; and controlling the programmable logic with the interface program to reconfigure it a number of times during execution of the application programs in accordance with the requests.
An additional embodiment of the present invention includes a computer-readable device storing a number of instructions for execution by a computer coupled to a reconfigurable logic circuit that has programmable logic and a local memory to store a number of logic designs each operable to configure the programmable logic. The instructions are arranged to provide logic interface programs responsive to requests to utilize the reconfigurable logic circuit from a number of application programs being executed by the computer. The logic interface program includes a first routine executable a number of times to open a corresponding number of coexisting program interfaces between the application programs and the reconfigurable logic circuit. The program interfaces each provide for configuration of the programmable logic with a corresponding one of the logic designs stored with the first routine. Also included in this program is a second routine to provide input data to the reconfigurable logic circuit for a selected one of the program interfaces opened by the first routine for processing by the programmable logic. A third routine is also included to request output data from the reconfigurable logic circuit. The logic interface program also has a fourth routine to selectively close a specified one of the program interfaces established with the first routine.
All publications and patent applications cited in this specification are herein incorporated by reference as if each individual publication or patent application were specifically and individually indicated to be incorporated by reference. While the invention has been illustrated and described in detail in the drawings and foregoing description, the same is to be considered as illustrative and not restrictive in character, it being understood that only the preferred embodiment has been shown and described and that all equivalents, changes, and modifications that come within the spirit of the inventions as defined by the following claims are desired to be protected.

Claims (65)

What is claimed is:
1. A system comprising:
a reconfigurable logic circuit including programmable logic, a first memory and a second memory, said first memory being arranged to store a number of logic designs each operable to configure said programmable logic;
a computer coupled to said reconfigurable logic circuit, said computer being operable to concurrently execute one or more application programs and an interface program, the one or more application programs generating a number of requests to utilize said reconfigurable logic circuit, the interface program being responsive to the requests to open a number of coexisting program interfaces between the one or more application programs and said reconfigurable logic circuit, the program interfaces each corresponding to one of the logic designs stored in said first memory;
wherein the reconfigurable logic circuit, in response to the interface program, provides a number of interface buffers in the second memory, each interface buffer corresponding to one of the program interfaces; and
wherein each provided interface buffer is operable to store data passing between the computer and the reconfigurable logic circuit.
2. The system of claim 1, wherein said reconfigurable logic circuit includes design loading logic coupled between said programmable logic and said first memory to control loading of said programmable logic with any of the logic designs in accordance with the interface program.
3. The system of claim 1, wherein said reconfigurable logic circuit is a field programmable gate array configured to include a first portion with logic to interface with said computer, a second portion with logic to interface with said second memory, and a third portion to be variably configured in accordance with one of the logic designs.
4. The system of claim 1, wherein the second memory includes a first memory device with a first one of the interface buffers for a first one of the logic designs and a second memory device with a second one of the interface buffers for a second one of the logic designs, and said reconfigurable logic circuit provides for simultaneous access to said first memory device by said programmable logic and said second memory device by said computer during operation of said programmable logic in accordance with the first one of the logic designs.
5. The system of claim 1, wherein the interface buffers include an input buffer, an output buffer, and a state buffer for each of the interfaces.
6. The system of claim 1, wherein said computer includes one or more processors, a main memory, and an input/output bridge coupled together by a processor bus, said input/output bridge is coupled to an input/output bus having a bandwidth that is less than a bandwidth of said processor bus, and said programmable logic is connected to said processor bus and mapped to one or more memory locations accessible by the one or more processors.
7. The system of claim 6, wherein said interface program is operable to allocate an overflow memory space in said main memory to store interface information when said second memory is full.
8. A system, comprising:
a digital processor bus operable to interconnect a processor cluster;
a reconfigurable logic device;
a main memory;
one or more processors coupled to said reconfigurable logic device and said main memory by said processor bus, at least one of said one or more processors being operable to access said reconfigurable logic device;
an input/output bridge coupled to said processor bus;
an input/output bus coupled to said input/output bridge to isolate said input/output bus from said processor bus;
an input/output module coupled to said input/output bus; and
wherein at least one of said one or more processors transfers data to said reconfigurable logic device with a first latency time and to said input/output module with a second latency time, said second latency time being greater than said first latency time.
9. The system of claim 8, wherein said reconfigurable logic device includes programmable logic, a first memory to store a plurality of logic designs operable to configure said programmable logic, and a second memory operable to provide at least one interface buffer for each of the logic designs.
10. The system of claim 9, wherein:
said programmable logic includes a volatile field programmable gate array;
said reconfigurable logic device includes nonvolatile loading logic coupled between said programmable logic and said first memory to load said programmable logic with a selected one the logic designs; and
said programmable logic is programmed to include a first portion with logic to interface with said computer, a second portion with logic to interface with said second memory, and a third portion to be variably configured in accordance with the selected one of the logic designs.
11. The system of claim 8, wherein said at least one of the one or more processors is operable to access said reconfigurable logic device by mapping said reconfigurable logic device to one or more memory locations.
12. The system of claim 8, wherein said input/output bus is of a PCI type and said processor bus operates with a first bandwidth and said input/output bus operates with a second bandwidth less than said first bandwidth.
13. An apparatus, comprising: a reconfigurable logic circuit configured to communicate through a computer interface, said reconfigurable logic circuit including
programmable logic;
a first memory device operatively coupled to said programmable logic to store first interface information for a first logic design;
a second memory device operatively coupled to said programmable logic to store second interface information for a second logic design; and
memory interface logic operable to simultaneously provide local access to said first interface information in said first memory by said programmable logic and remote access to said second interface information in said second memory through said memory interface logic during configuration of said programmable logic with the first logic design, and change access modes to simultaneously provide local access to said second interface information in said second memory with said programmable logic and remote access to said first interface information in said first memory through said memory interface logic in response to configuring said programmable logic with said second logic design.
14. The apparatus of claim 13, wherein said memory interface logic is operable to provide priority to a remote access when in conflict with a local access by said programmable logic.
15. The apparatus of claim 13, wherein said memory interface logic is at least partially defined by said programmable logic and said first memory device is coupled to said memory interface logic by a first memory bus and said second memory device is coupled to said memory interface logic by a second memory bus.
16. The apparatus of claim 13, wherein said first memory device is arranged with a scratch space for selective access by said programmable logic and said first interface information includes a number of interface control structures, said interface control structures each including a pointer to an input buffer and an output buffer.
17. The apparatus of claim 13, further comprising a computer with one or more processors and a main memory coupled together by a processor cluster bus, said processor cluster bus being coupled to said reconfigurable logic circuit to provide the computer interface.
18. The apparatus of claim 13, wherein said reconfigurable logic circuit includes a nonvolatile memory to store a plurality of different logic designs and nonvolatile design loading logic, said loading logic being connected between said programmable logic and said nonvolatile memory to control loading of a designated one of the different logic designs.
19. An apparatus, comprising: a reconfigurable logic circuit configured with a computer interface, said reconfigurable logic circuit including
programmable logic;
a first memory to dynamically store a number of logic designs each selected to configure said programmable logic;
a second memory to dynamically store interface control information for each of the logic designs, the interface control information relating to one or more buffers allocated in said second memory for each of the logic designs to transmit data through said computer interface.
20. The apparatus of claim 19, wherein said second memory is further operable to store a scratch space accessible by said programmable logic.
21. The apparatus of claim 20, wherein the scratch space is dynamically allocated in said second memory in an address space between the interface control information for each of the logic designs and the one or more buffers for each of the logic designs.
22. The apparatus of claim 19, wherein the one or more buffers include an input buffer and an output buffer for each of the logic designs.
23. The apparatus of claim 22, wherein the interface control information for each of the logic designs includes a first pointer to the input buffer and second pointer to the output buffer, and data relating to size of each of the input buffer and the output buffer.
24. The apparatus of claim 19, wherein the interface control information includes data relating to time of last use of a respective one of the logic designs.
25. The apparatus of claim 24, wherein the interface control information includes a logic design identifier for the respective one of the logic designs.
26. The apparatus of claim 19, further comprising a computer with one or more processors and a main memory coupled together by a processor cluster bus, said processor cluster bus being coupled to said computer interface of said reconfigurable logic circuit.
27. The apparatus of claim 19, wherein said first memory is nonvolatile and said programmable logic includes a volatile field programmable gate array, and said reconfigurable logic circuit includes nonvolatile loading logic coupled between said programmable logic and said nonvolatile memory to control loading of a designated one of the logic designs.
28. An apparatus, comprising: a reconfigurable logic circuit including programmable logic, design loading logic connected to said programmable logic, and one or more memory devices including;
a first memory space operable to store a number of logic designs for said programmable logic, said first memory space being accessible by said loading logic to selectively load one or more of said logic designs into said programmable logic; and
a second memory space operable to store a number of interface control structures each corresponding to a different instance of one of the logic designs, said second memory space being accessible by said programmable logic.
29. The apparatus of claim 28, wherein said one or more memory devices includes at least one nonvolatile memory device defining said first memory space.
30. The apparatus of claim 28, wherein said loading logic is coupled to said programmable logic and operable to load one or more of said logic designs from said first memory space into said programmable logic to configure said programmable logic with first interface logic and second interface logic.
31. The apparatus of claim 30, further comprising a computer with a processor bus coupled to said first interface logic and wherein said first interface logic and said loading logic cooperate to store one or more of the logic designs in said first memory space, and said second interface logic is operable to access said second memory space.
32. The apparatus of claim 28, wherein the interface control structures each include a data buffer.
33. The apparatus of claim 28, wherein the interface control structures each include an identifier for the one of the logic designs, a pointer to a buffer space, and data representative of time of last use of the one of the logic designs.
34. A method, comprising:
operating a computer coupled to a reconfigurable logic circuit, the reconfigurable logic circuit including programmable logic, a first memory device, and a second memory device;
storing first interface information in the first memory device for a first logic design and second interface information in the second memory for a second logic design;
providing simultaneous access to the first interface information by the programmable logic and the second interface information by the computer during operation of the programmable logic in accordance with the first logic design; and
providing simultaneous access to the second interface information by the programmable logic and the first interface information by the computer during operation of the programmable logic in accordance with the second logic design.
35. The method of claim 34, further comprising accessing the first memory device with the computer while the programmable logic is configured with the first logic design.
36. The method of claim 34, further comprising changing a mode of access to the first memory device and the second memory device in response to reconfiguration of the programmable logic.
37. The method of claim 34, wherein the first interface information includes a first input buffer and a first output buffer and the second interface information includes a second input buffer and a second output buffer.
38. The method of claim 34, further comprising:
executing one or more application programs and an interface program on the computer; and
establishing two coexisting program interfaces between the computer and the reconfigurable logic circuit with the interface program, a first one of the program interfaces being for the first logic design and a second one of the program interfaces being for the second logic design.
39. The method of claim 34, wherein the first interface information includes a control structure, a scratch space, a first interface buffer, and a second interface buffer and further comprising:
storing an identifier for the first logic design, a first pointer to the first interface buffer, a second pointer to the second interface buffer, data representing time of last use for the first logic design, and data relating to size of the first interface buffer and the second interface buffer in the control structure.
40. A system, comprising:
a reconfigurable logic circuit including programmable logic and a local memory, said local memory being operable to store interface information relating to a number of logic designs for said programmable logic;
a computer coupled to said reconfigurable logic circuit, said computer including one or more processors and a main memory coupled to said one or more processors, said computer being operable to execute one or more application programs and a interface program, the one or more application programs being operable to generate a number of requests to utilize said reconfigurable logic circuit, the interface program being responsive to the requests to control application of the logic designs to said programmable logic, the interface program being operable to selectively allocate a memory space in said main memory for overflow of said local memory.
41. The system of claim 40, wherein said local memory includes one or more memory devices operable to store the interface information and one or more other memory devices operable to store the logic designs, the one or more other memory devices being nonvolatile.
42. The system of claim 41, wherein the interface program is operable to determine a least recently used one of the logic designs stored in said one or more other memory devices based on the interface information and selectively store said least recently used one of the logic designs in said memory space of said main memory to load a different logic design in said one or more other memory devices of said local memory.
43. The system of claim 41, wherein the reconfigurable logic circuit includes loading logic coupled between said one or more other memory devices and said programmable logic.
44. The system of claim 40, wherein the interface program is operable to establish a number of coexisting program interfaces in response to the requests, the program interfaces each corresponding to a different one of the logic designs.
45. The system of claim 40, wherein said computer includes a processor bus to couple said main memory and said one or more processors together, an input/output bridge coupled to said processor bus, and an input/output bus coupled to said input/output bridge.
46. The system of claim 40, wherein the interface information includes a number of interface buffers allocated in said local memory, and said interface program is operable to store data intended for one of said buffers in said memory space when the size of the one of the buffers is insufficient to receive the data.
47. A method, comprising:
executing at least one application program and an interface program on a computer coupled to a reconfigurable logic circuit including programmable logic and a local memory;
storing several logic designs in the local memory with the interface program, the logic designs each being operable to configure the programmable logic;
opening two or more coexisting program interfaces between the at least one application program and the reconfigurable logic circuit with the interface program after said storing, the program interfaces each corresponding to a selected one of the logic designs;
writing input data to the reconfigurable logic circuit for a selected one of the program interfaces;
configuring the programmable logic with the selected one of the logic designs;
processing the input data with the programmable logic after said configuring;
reading output data from the reconfigurable logic circuit for the selected one of the program interfaces after said processing;
closing the selected one of the program interfaces after said reading with the interface program, other of the program interfaces remaining open; and
replacing a first one of the logic designs with a different logic design.
48. The method of claim 47, wherein the computer includes a main memory and further comprising:
allocating a memory space in the main memory with the interface program;
determining a least recently used one of the logic designs stored in the local memory with the interface program; and
storing the least recently used one of the logic designs in the memory space to provide space in the local memory to load another logic design.
49. The method of claim 47, further comprising:
providing a request to the interface program to process data with a designated one of the logic designs; and
determining status of the request with the interface program; and
performing a software routine to emulate the designated one of the logic designs in response to a first status of the request; and
configuring the programmable logic with the designated one of the logic designs in response to a second status of the request.
50. The method of claim 47, wherein the selected one of the logic designs is the same for each of the program interfaces.
51. The method of claim 47, wherein the selected one of the logic designs is different for each of the program interfaces.
52. The method of claim 47, wherein the interface program includes a first routine to open a specified program interface, a second routine to write data to the reconfigurable logic circuit for the specified program interface, a third routine to read information from the reconfigurable logic circuit for the specified program interface, and a fourth routine to close the specified program interface.
53. The method of claim 52, wherein the interface program includes a fifth routine to provide a designated logic design to the reconfigurable logic circuit and a sixth routine to remove the designated logic design.
54. A method, comprising:
operating a computer coupled to programmable logic;
concurrently executing two or more application programs with the computer, the application programs each generating at least one of a plurality of requests to utilize the programmable logic device during said executing;
processing the requests of each of the application programs with an interface program executed by the computer; and
controlling the programmable logic with the interface program to reconfigure the programmable logic device a number of times during said executing in accordance with the requests.
55. The method of claim 54, establishing a number of coexisting program interfaces with the interface program in response to the requests, the program interfaces each corresponding to a designated one of a number of logic designs for the programmable logic.
56. The method of claim 55, wherein the computer is coupled to a reconfigurable logic circuit including the programmable logic and a local memory, and further comprising storing the logic designs in the local memory with the interface program.
57. The method of claim 54, wherein the interface program includes a first routine to open a specified program interface, a second routine to write data for the specified program interface, a third routine to read data for the specified program interface, and a fourth routine to close the specified program interface.
58. The method of claim 54, wherein the computer includes a main memory and the programmable logic is coupled to a local memory, and further comprising:
storing a number of logic designs in the local memory;
allocating a memory space in the main memory with the interface program;
determining a least recently used one of the logic designs stored in the local memory with the interface program; and
storing the least recently used one of the logic designs in the memory space to provide space in the local memory to load another logic design.
59. The method of claim 54, further comprising:
determining status of one of the requests associated with a designated logic design; and
performing a software routine to emulate the designated logic design in response to a first status of the one of the requests; and
configuring the programmable logic with the designated logic design in response to a second status of the one of the requests.
60. The method of claim 54, wherein the programmable logic includes a field programmable gate array, the programmable logic is included in a reconfigurable logic circuit, and the reconfigurable logic circuit further includes a first memory operable to store interface information and a second memory operable to store a number of logic designs for the programmable logic.
61. A computer-readable device storing a number of instructions for execution by a computer coup led to a reconfigurable logic circuit, the reconfigurable logic circuit including programmable logic and a local memory to store a number of logic designs each operable to configure the programmable logic, the instructions being arranged to provide a interface program responsive to requests to utilize the reconfigurable logic circuit from a number of application programs executed by the computer, the interface program comprising:
a first routine executable a number of times to open a corresponding number of coexisting program interfaces between the application programs and the reconfigurable logic circuit, said program interfaces each providing for configuration of the programmable logic with a corresponding one of a number of instances of one or more of several logic designs;
a second routine to provide input data to the reconfigurable logic circuit for a selected one of said program interfaces opened by said first routine for processing by the programmable logic when configured with said corresponding one of said instances;
a third routine to request output data from the reconfigurable logic circuit for said selected one of said program interfaces, said output data being generated by the programmable logic when configured by said corresponding one of said instances; and
a fourth routine to selectively close a specified one of said program interfaces established with said first routine, said fourth routine leaving other of said program interfaces open.
62. The device of claim 61, wherein the interface program further comprises a fifth routine to remove a designated one of said program interfaces established with said first routine.
63. The device of claim 62, wherein the interface program includes a sixth routine executed one or more times to store the logic designs.
64. The device of claim 61, wherein the interface program is operable to determine status of a request from one of the application programs to implement a designated one of the logic designs, to initiate execution of a software routine to emulate the designated one of the logic designs in response to a first status indication, and to initiate configuration of the programmable logic with the designated one of the logic designs in response to a second status indication.
65. The device of claim 61, wherein the computer includes a main memory and the interface program is operable to allocate and manage a memory space in the main memory for overflow from the local memory.
US09/505,059 2000-02-15 2000-02-15 Reconfigurable logic for a computer Expired - Fee Related US6438737B1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
US09/505,059 US6438737B1 (en) 2000-02-15 2000-02-15 Reconfigurable logic for a computer
EP01909227A EP1257928B1 (en) 2000-02-15 2001-02-14 Reconfigurable logic for a computer
DE60116060T DE60116060T2 (en) 2000-02-15 2001-02-14 RECONFIGURABLE LOGIC FOR A CALCULATOR
AT01909227T ATE313829T1 (en) 2000-02-15 2001-02-14 RECONFIGURABLE LOGIC FOR A COMPUTER
JP2001560843A JP4510353B2 (en) 2000-02-15 2001-02-14 Reconfigurable logic for computers
EP05002675A EP1536346A3 (en) 2000-02-15 2001-02-14 Reconfigurable logic for a computer
PCT/US2001/004733 WO2001061525A2 (en) 2000-02-15 2001-02-14 Reconfigurable logic for a computer
AU2001237005A AU2001237005A1 (en) 2000-02-15 2001-02-14 Reconfigurable logic for a computer
HK03101109.3A HK1048871B (en) 2000-02-15 2003-02-17 Reconfigurable logic for a computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/505,059 US6438737B1 (en) 2000-02-15 2000-02-15 Reconfigurable logic for a computer

Publications (1)

Publication Number Publication Date
US6438737B1 true US6438737B1 (en) 2002-08-20

Family

ID=24008825

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/505,059 Expired - Fee Related US6438737B1 (en) 2000-02-15 2000-02-15 Reconfigurable logic for a computer

Country Status (8)

Country Link
US (1) US6438737B1 (en)
EP (2) EP1257928B1 (en)
JP (1) JP4510353B2 (en)
AT (1) ATE313829T1 (en)
AU (1) AU2001237005A1 (en)
DE (1) DE60116060T2 (en)
HK (1) HK1048871B (en)
WO (1) WO2001061525A2 (en)

Cited By (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020143518A1 (en) * 2001-03-28 2002-10-03 Abrahamson Carl K. Dynamically adaptable digital architecture system
US20020174266A1 (en) * 2001-05-18 2002-11-21 Krishna Palem Parameterized application programming interface for reconfigurable computing systems
US20030033450A1 (en) * 2000-07-20 2003-02-13 John Appleby-Alis System, method, and article of manufacture for remote updating of hardware
US20030046530A1 (en) * 2001-04-30 2003-03-06 Daniel Poznanovic Interface for integrating reconfigurable processors into a general purpose computing system
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US20030079213A1 (en) * 2000-11-29 2003-04-24 Gilbert Cabillic Data processing apparatus, system and method
US6578186B1 (en) * 2000-12-22 2003-06-10 Juniper Networks Reset control for systems using programmable logic
US20030195921A1 (en) * 2002-03-19 2003-10-16 Becker Brian Eric System and method for configurable software provisioning
US20030204830A1 (en) * 2000-10-31 2003-10-30 Arm Limited Integrated circuit configuration
US20030229877A1 (en) * 2002-06-11 2003-12-11 Bersch Danny Austin System and method for configuring analog elements in a configurable hardware device
US20040015613A1 (en) * 2001-07-12 2004-01-22 Kenji Ikeda Integrated circuit device
US20040017724A1 (en) * 2002-07-24 2004-01-29 Hitachi, Ltd. Semiconductor processing device
US6717436B2 (en) * 1999-09-29 2004-04-06 Infineon Technologies Ag Reconfigurable gate array
US20040177225A1 (en) * 2002-11-22 2004-09-09 Quicksilver Technology, Inc. External memory controller node
WO2004079564A2 (en) * 2003-03-05 2004-09-16 Bridgeco Ag Processor with different types of control units for commonly used resources
US20040215846A1 (en) * 2001-05-16 2004-10-28 International Business Machines Corporation Method and system for efficient access to remote I/O functions in embedded control environments
US20050073819A1 (en) * 2002-05-17 2005-04-07 Mccubbrey David L. Stackable motherboard and related sensor systems
US20050233724A1 (en) * 2002-08-30 2005-10-20 Koninklijke Philips Electronics N.V. Version-programmable circuit module
US20050273542A1 (en) * 2004-06-08 2005-12-08 Poseidon Design Systems, Inc. Configurable communication template for designing and implementing an accelerator
US20050272197A1 (en) * 2002-09-13 2005-12-08 Hiroshi Tanaka Semiconductor device
US20060004997A1 (en) * 2001-05-04 2006-01-05 Robert Keith Mykland Method and apparatus for computing
US20060079970A1 (en) * 2004-09-03 2006-04-13 Derek Ward Programmable logic controller and related electronic devices
US20060155968A1 (en) * 2003-06-25 2006-07-13 Nec Corporation Electronic computer, semiconductor integrated circuit, control method, program generation method, and program
US20060195684A1 (en) * 2005-02-25 2006-08-31 Canon Kabushiki Kaisha Reconfigurable data processing device and method
US20070073944A1 (en) * 2005-09-23 2007-03-29 Joseph Gormley Systems and methods for implementing a vehicle control and interconnection system
US20070073908A1 (en) * 2005-09-23 2007-03-29 Joseph Gormley Control and interconnection system
US20070091848A1 (en) * 2005-10-03 2007-04-26 Snehal Karia Reducing data loss during handoffs in wireless communication
US20070245178A1 (en) * 2006-03-22 2007-10-18 Fujitsu Limited Parallel processing apparatus dynamically switching over circuit configuration
US20070247188A1 (en) * 2004-06-15 2007-10-25 Nec Corporation Programmable Semiconductor Device
US20080036864A1 (en) * 2006-08-09 2008-02-14 Mccubbrey David System and method for capturing and transmitting image data streams
US20080120260A1 (en) * 2006-11-16 2008-05-22 Yancey Jerry W Reconfigurable neural network systems and methods utilizing FPGAs having packet routers
US20080143378A1 (en) * 2003-06-10 2008-06-19 Altera Corporation Apparatus and methods for communicating with programmable logic devices
US20080148227A1 (en) * 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
US20080151049A1 (en) * 2006-12-14 2008-06-26 Mccubbrey David L Gaming surveillance system and method of extracting metadata from multiple synchronized cameras
US20080162856A1 (en) * 2006-12-29 2008-07-03 Motorola, Inc. Method for dynamic memory allocation on reconfigurable logic
US20080211915A1 (en) * 2007-02-21 2008-09-04 Mccubbrey David L Scalable system for wide area surveillance
US20080317241A1 (en) * 2006-06-14 2008-12-25 Derek Wang Code-based echo cancellation
US20090016333A1 (en) * 2006-06-14 2009-01-15 Derek Wang Content-based adaptive jitter handling
US20090024839A1 (en) * 2007-07-21 2009-01-22 Arssov Paul Plamen Variable instruction set microprocessor
US20090083530A1 (en) * 2005-04-05 2009-03-26 Osamu Nishijima Computer System, Data Structure Representing Configuration Information, Mapping System, and Mapping Method
US20090086023A1 (en) * 2007-07-18 2009-04-02 Mccubbrey David L Sensor system including a configuration of the sensor as a virtual sensor device
US20090106761A1 (en) * 2007-10-19 2009-04-23 Sundeep Chandhoke Programmable Controller with Multiple Processors Using a Scanning Architecture
US20090158015A1 (en) * 2007-12-17 2009-06-18 Hillman Garth D Uses of Known Good Code for Implementing Processor Architectural Modifications
WO2009078913A1 (en) * 2007-12-17 2009-06-25 Advanced Micro Devices, Inc. Known good code for on-chip device management
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US7668229B2 (en) 2001-12-12 2010-02-23 Qst Holdings, Llc Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US20100095094A1 (en) * 2001-06-20 2010-04-15 Martin Vorbach Method for processing data
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7809050B2 (en) 2001-05-08 2010-10-05 Qst Holdings, Llc Method and system for reconfigurable channel coding
US20100257335A1 (en) * 2009-04-03 2010-10-07 Fujitsu Microelectronics Limited Reconfigurable circuit with suspension control circuit
US7865847B2 (en) 2002-05-13 2011-01-04 Qst Holdings, Inc. Method and system for creating and programming an adaptive computing engine
US7873811B1 (en) 2003-03-10 2011-01-18 The United States Of America As Represented By The United States Department Of Energy Polymorphous computing fabric
US7904603B2 (en) 2002-10-28 2011-03-08 Qst Holdings, Llc Adaptable datapath for a digital processing system
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US20110115909A1 (en) * 2009-11-13 2011-05-19 Sternberg Stanley R Method for tracking an object through an environment across multiple cameras
USRE42743E1 (en) 2001-11-28 2011-09-27 Qst Holdings, Llc System for authorizing functionality in adaptable hardware devices
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US8225073B2 (en) 2001-11-30 2012-07-17 Qst Holdings Llc Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US8250339B2 (en) 2001-11-30 2012-08-21 Qst Holdings Llc Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US8356161B2 (en) 2001-03-22 2013-01-15 Qst Holdings Llc Adaptive processor for performing an operation with simple and complex units each comprising configurably interconnected heterogeneous elements
US8533431B2 (en) 2001-03-22 2013-09-10 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US8694328B1 (en) 2006-12-14 2014-04-08 Joseph Gormley Vehicle customization and personalization activities
US8869123B2 (en) 2011-06-24 2014-10-21 Robert Keith Mykland System and method for applying a sequence of operations code to program configurable logic circuitry
US9002998B2 (en) 2002-01-04 2015-04-07 Altera Corporation Apparatus and method for adaptive multimedia reception and transmission in communication environments
US20150205629A1 (en) * 2013-06-25 2015-07-23 Empire Technology Development, Llc Reconfiguration with virtual machine switching
US9158544B2 (en) 2011-06-24 2015-10-13 Robert Keith Mykland System and method for performing a branch object conversion to program configurable logic circuitry
US9304770B2 (en) 2011-11-21 2016-04-05 Robert Keith Mykland Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US20160283636A1 (en) * 2012-02-08 2016-09-29 Altera Corporation Method and Apparatus for Implementing Periphery Devices on a Programmable Circuit Using Partial Reconfiguration
US9633160B2 (en) 2012-06-11 2017-04-25 Robert Keith Mykland Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor
US9880952B2 (en) 2015-01-15 2018-01-30 Toshiba Memory Corporation Bus access controller, hardware engine, controller, and memory system
US10089277B2 (en) 2011-06-24 2018-10-02 Robert Keith Mykland Configurable circuit array
CN110088741A (en) * 2016-09-30 2019-08-02 亚马逊技术有限公司 Control accesses previously stored logic in reconfigurable logical device
US11055103B2 (en) 2010-01-21 2021-07-06 Cornami, Inc. Method and apparatus for a multi-core system for implementing stream-based computations having inputs from multiple streams
US11704459B2 (en) 2016-09-29 2023-07-18 Amazon Technologies, Inc. Logic repository service
US11863406B2 (en) 2016-11-17 2024-01-02 Amazon Technologies, Inc. Networked programmable logic service provider
US11956220B2 (en) 2021-11-03 2024-04-09 Amazon Technologies, Inc. Logic repository service using encrypted configuration data

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005022380A1 (en) * 2003-08-29 2005-03-10 Ipflex Inc. Data processing device
JP2005122514A (en) * 2003-10-17 2005-05-12 Rikogaku Shinkokai Device constructed of program common control software and hardware
FR2895106A1 (en) 2005-12-20 2007-06-22 Thomson Licensing Sas METHOD FOR DOWNLOADING A CONFIGURATION FILE IN A PROGRAMMABLE CIRCUIT, AND APPARATUS COMPRISING SAID COMPONENT.
JP2007207136A (en) * 2006-02-06 2007-08-16 Nec Corp Data processor, data processing method, and data processing program
US20100042751A1 (en) * 2007-11-09 2010-02-18 Kouichi Ishino Data transfer control device, data transfer device, data transfer control method, and semiconductor integrated circuit using reconfigured circuit
JP4740982B2 (en) * 2008-06-18 2011-08-03 東芝テック株式会社 Programmable logic circuit
JP2010044578A (en) * 2008-08-12 2010-02-25 Toshiba Corp Multicore processor
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
CN103577266B (en) 2012-07-31 2017-06-23 国际商业机器公司 For the method and system being allocated to field programmable gate array resource
KR102066940B1 (en) * 2013-11-13 2020-01-16 한화테크윈 주식회사 System of Integrated-Circuit devices

Citations (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5036473A (en) 1988-10-05 1991-07-30 Mentor Graphics Corporation Method of using electronically reconfigurable logic circuits
US5230057A (en) 1988-09-19 1993-07-20 Fujitsu Limited Simd system having logic units arranged in stages of tree structure and operation of stages controlled through respective control registers
US5243238A (en) 1989-03-17 1993-09-07 Algotronix Limited Configurable cellular array
US5336950A (en) 1991-08-29 1994-08-09 National Semiconductor Corporation Configuration features in a configurable logic array
US5535342A (en) 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
US5537654A (en) 1993-05-20 1996-07-16 At&T Corp. System for PCMCIA peripheral to execute instructions from shared memory where the system reset signal causes switching between modes of operation by alerting the starting address
US5600263A (en) 1995-08-18 1997-02-04 Xilinx, Inc. Configuration modes for a time multiplexed programmable logic device
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5628028A (en) 1995-03-02 1997-05-06 Data Translation, Inc. Reprogrammable PCMCIA card and method and apparatus employing same
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5673198A (en) 1996-03-29 1997-09-30 Xilinx, Inc. Concurrent electronic circuit design and implementation
US5689195A (en) * 1995-05-17 1997-11-18 Altera Corporation Programmable logic array integrated circuit devices
US5692159A (en) 1995-05-19 1997-11-25 Digital Equipment Corporation Configurable digital signal interface using field programmable gate array to reformat data
US5737766A (en) 1996-02-14 1998-04-07 Hewlett Packard Company Programmable gate array configuration memory which allows sharing with user memory
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5744980A (en) * 1996-02-16 1998-04-28 Actel Corporation Flexible, high-performance static RAM architecture for field-programmable gate arrays
US5760607A (en) 1995-07-10 1998-06-02 Xilinx, Inc. System comprising field programmable gate array and intelligent memory
US5794164A (en) 1995-11-29 1998-08-11 Microsoft Corporation Vehicle computer system
US5796977A (en) 1994-03-01 1998-08-18 Intel Corporation Highly pipelined bus architecture
US5801547A (en) * 1996-03-01 1998-09-01 Xilinx, Inc. Embedded memory for field programmable gate array
US5808942A (en) * 1995-06-09 1998-09-15 Advanced Micro Devices, Inc. Field programmable gate array (FPGA) having an improved configuration memory and look up table
US5828229A (en) * 1991-09-03 1998-10-27 Altera Corporation Programmable logic array integrated circuits
US5828858A (en) 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US5831448A (en) 1992-11-05 1998-11-03 Xilinx, Inc. Function unit for fine-gained FPGA
US5838954A (en) 1995-08-18 1998-11-17 Xilinx, Inc. Computer-implemented method of optimizing a time multiplexed programmable logic device
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5857109A (en) 1992-11-05 1999-01-05 Giga Operations Corporation Programmable logic device for real time video processing
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US5933023A (en) * 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US5946219A (en) 1996-10-30 1999-08-31 Atmel Corporation Method and system for configuring an array of logic devices
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5970439A (en) 1997-03-13 1999-10-19 International Business Machines Corporation Performance monitoring in a data processing system
US5978260A (en) 1995-08-18 1999-11-02 Xilinx, Inc. Method of time multiplexing a programmable logic device
US5978862A (en) 1997-08-08 1999-11-02 Toshiba America Information Systems, Inc. PCMCIA card dynamically configured in first mode to program FPGA controlling application specific circuit and in second mode to operate as an I/O device
US6011740A (en) 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US6026459A (en) 1998-02-03 2000-02-15 Src Computers, Inc. System and method for dynamic priority conflict resolution in a multi-processor computer system having shared memory resources
US6026230A (en) * 1997-05-02 2000-02-15 Axis Systems, Inc. Memory simulation system and method
US6028445A (en) * 1997-12-30 2000-02-22 Xilinx, Inc. Decoder structure and method for FPGA configuration
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US6064676A (en) * 1998-01-14 2000-05-16 Skystream Corporation Remultipelxer cache architecture and memory organization for storing video program bearing transport packets and descriptors
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
US6127843A (en) * 1997-12-22 2000-10-03 Vantis Corporation Dual port SRAM memory for run time use in FPGA integrated circuits
US6134516A (en) * 1997-05-02 2000-10-17 Axis Systems, Inc. Simulation server system and method
US6150839A (en) * 1997-12-12 2000-11-21 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
US6172521B1 (en) * 1997-04-11 2001-01-09 Nec Corporation Programmable logic IC having memories for previously storing a plurality of configuration data and a method of reconfigurating same
US6172520B1 (en) * 1997-12-30 2001-01-09 Xilinx, Inc. FPGA system with user-programmable configuration ports and method for reconfiguring the FPGA
US6175247B1 (en) * 1998-04-14 2001-01-16 Lockheed Martin Corporation Context switchable field programmable gate array with public-private addressable sharing of intermediate data
US6216191B1 (en) * 1997-10-15 2001-04-10 Lucent Technologies Inc. Field programmable gate array having a dedicated processor interface
US6219785B1 (en) * 1997-04-04 2001-04-17 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6230307B1 (en) * 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US6237054B1 (en) * 1998-09-14 2001-05-22 Advanced Micro Devices, Inc. Network interface unit including a microcontroller having multiple configurable logic blocks, with a test/program bus for performing a plurality of selected functions
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
US6259271B1 (en) * 1996-07-18 2001-07-10 Altera Corporation Configuration memory integrated circuit
US20010010057A1 (en) * 1997-06-24 2001-07-26 Matsushita Electronics Corporation Semiconductor integrated circuit, computer system, data processor and data processing method
US6281703B1 (en) * 1999-01-28 2001-08-28 Nec Corporation Programmable device with an array of programmable cells and interconnection network
US6292021B1 (en) * 1996-05-20 2001-09-18 Atmel Corporation FPGA structure having main, column and sector reset lines
US6298319B1 (en) * 1996-10-28 2001-10-02 Altera Corporation Incremental compilation of electronic design for work group
US6308311B1 (en) * 1999-05-14 2001-10-23 Xilinx, Inc. Method for reconfiguring a field programmable gate array from a host
US6311149B1 (en) * 1997-08-18 2001-10-30 National Instruments Corporation Reconfigurable test system
US6312381B1 (en) * 1999-09-14 2001-11-06 Acuson Corporation Medical diagnostic ultrasound system and method
US6324672B1 (en) * 1996-03-29 2001-11-27 Xilinx, Inc. Method for configuring circuits over a data communications link
US20010047465A1 (en) * 2000-03-01 2001-11-29 Ming-Kang Liu Mixed hardware/software architecture and method for processing xDSL communications
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
US6339341B1 (en) * 1999-02-09 2002-01-15 Nec Corporation Programmable logic LSI
US6340897B1 (en) * 1995-03-22 2002-01-22 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US6356109B1 (en) * 1999-02-10 2002-03-12 Nec Corporation Programmable device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
DE59301609D1 (en) * 1992-08-28 1996-03-21 Siemens Ag METHOD FOR OPERATING A COMPUTER SYSTEM WITH AT LEAST ONE MICROPROCESSOR AND AT LEAST ONE COPROCESSOR
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5745785A (en) * 1995-05-09 1998-04-28 Sofmap Future Design, Inc. System for alternatively transferring data from external memory to memory device and from memory device to internal memory depending upon processing unit's operational
JPH1115866A (en) * 1997-06-25 1999-01-22 Fuji Xerox Co Ltd Circuit device, information input/output device, information processor, and circuit device reconstitution system
JPH11260928A (en) * 1998-03-13 1999-09-24 Nec Kansai Ltd Semiconductor logic circuit device

Patent Citations (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230057A (en) 1988-09-19 1993-07-20 Fujitsu Limited Simd system having logic units arranged in stages of tree structure and operation of stages controlled through respective control registers
US5036473A (en) 1988-10-05 1991-07-30 Mentor Graphics Corporation Method of using electronically reconfigurable logic circuits
US5243238A (en) 1989-03-17 1993-09-07 Algotronix Limited Configurable cellular array
US5336950A (en) 1991-08-29 1994-08-09 National Semiconductor Corporation Configuration features in a configurable logic array
US5828229A (en) * 1991-09-03 1998-10-27 Altera Corporation Programmable logic array integrated circuits
US5535342A (en) 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
US5857109A (en) 1992-11-05 1999-01-05 Giga Operations Corporation Programmable logic device for real time video processing
US5831448A (en) 1992-11-05 1998-11-03 Xilinx, Inc. Function unit for fine-gained FPGA
US5537654A (en) 1993-05-20 1996-07-16 At&T Corp. System for PCMCIA peripheral to execute instructions from shared memory where the system reset signal causes switching between modes of operation by alerting the starting address
US5796977A (en) 1994-03-01 1998-08-18 Intel Corporation Highly pipelined bus architecture
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5628028A (en) 1995-03-02 1997-05-06 Data Translation, Inc. Reprogrammable PCMCIA card and method and apparatus employing same
US6340897B1 (en) * 1995-03-22 2002-01-22 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5689195A (en) * 1995-05-17 1997-11-18 Altera Corporation Programmable logic array integrated circuit devices
US5692159A (en) 1995-05-19 1997-11-25 Digital Equipment Corporation Configurable digital signal interface using field programmable gate array to reformat data
US5808942A (en) * 1995-06-09 1998-09-15 Advanced Micro Devices, Inc. Field programmable gate array (FPGA) having an improved configuration memory and look up table
US5760607A (en) 1995-07-10 1998-06-02 Xilinx, Inc. System comprising field programmable gate array and intelligent memory
US5978260A (en) 1995-08-18 1999-11-02 Xilinx, Inc. Method of time multiplexing a programmable logic device
US5838954A (en) 1995-08-18 1998-11-17 Xilinx, Inc. Computer-implemented method of optimizing a time multiplexed programmable logic device
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5600263A (en) 1995-08-18 1997-02-04 Xilinx, Inc. Configuration modes for a time multiplexed programmable logic device
US5794164A (en) 1995-11-29 1998-08-11 Microsoft Corporation Vehicle computer system
US5737766A (en) 1996-02-14 1998-04-07 Hewlett Packard Company Programmable gate array configuration memory which allows sharing with user memory
US5744980A (en) * 1996-02-16 1998-04-28 Actel Corporation Flexible, high-performance static RAM architecture for field-programmable gate arrays
US5801547A (en) * 1996-03-01 1998-09-01 Xilinx, Inc. Embedded memory for field programmable gate array
US5673198A (en) 1996-03-29 1997-09-30 Xilinx, Inc. Concurrent electronic circuit design and implementation
US6324672B1 (en) * 1996-03-29 2001-11-27 Xilinx, Inc. Method for configuring circuits over a data communications link
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6266760B1 (en) * 1996-04-11 2001-07-24 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6292021B1 (en) * 1996-05-20 2001-09-18 Atmel Corporation FPGA structure having main, column and sector reset lines
US6259271B1 (en) * 1996-07-18 2001-07-10 Altera Corporation Configuration memory integrated circuit
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5933023A (en) * 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US5828858A (en) 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US6321369B1 (en) * 1996-10-28 2001-11-20 Altera Corporation Interface for compiling project variations in electronic design environments
US6298319B1 (en) * 1996-10-28 2001-10-02 Altera Corporation Incremental compilation of electronic design for work group
US5946219A (en) 1996-10-30 1999-08-31 Atmel Corporation Method and system for configuring an array of logic devices
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US5970439A (en) 1997-03-13 1999-10-19 International Business Machines Corporation Performance monitoring in a data processing system
US6219785B1 (en) * 1997-04-04 2001-04-17 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6172521B1 (en) * 1997-04-11 2001-01-09 Nec Corporation Programmable logic IC having memories for previously storing a plurality of configuration data and a method of reconfigurating same
US6134516A (en) * 1997-05-02 2000-10-17 Axis Systems, Inc. Simulation server system and method
US6026230A (en) * 1997-05-02 2000-02-15 Axis Systems, Inc. Memory simulation system and method
US20010010057A1 (en) * 1997-06-24 2001-07-26 Matsushita Electronics Corporation Semiconductor integrated circuit, computer system, data processor and data processing method
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5978862A (en) 1997-08-08 1999-11-02 Toshiba America Information Systems, Inc. PCMCIA card dynamically configured in first mode to program FPGA controlling application specific circuit and in second mode to operate as an I/O device
US6311149B1 (en) * 1997-08-18 2001-10-30 National Instruments Corporation Reconfigurable test system
US6216191B1 (en) * 1997-10-15 2001-04-10 Lucent Technologies Inc. Field programmable gate array having a dedicated processor interface
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6150839A (en) * 1997-12-12 2000-11-21 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
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
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
US6127843A (en) * 1997-12-22 2000-10-03 Vantis Corporation Dual port SRAM memory for run time use in FPGA integrated circuits
US6172520B1 (en) * 1997-12-30 2001-01-09 Xilinx, Inc. FPGA system with user-programmable configuration ports and method for reconfiguring the FPGA
US6028445A (en) * 1997-12-30 2000-02-22 Xilinx, Inc. Decoder structure and method for FPGA configuration
US6064676A (en) * 1998-01-14 2000-05-16 Skystream Corporation Remultipelxer cache architecture and memory organization for storing video program bearing transport packets and descriptors
US6230307B1 (en) * 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
US6026459A (en) 1998-02-03 2000-02-15 Src Computers, Inc. System and method for dynamic priority conflict resolution in a multi-processor computer system having shared memory resources
US6011740A (en) 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US6175247B1 (en) * 1998-04-14 2001-01-16 Lockheed Martin Corporation Context switchable field programmable gate array with public-private addressable sharing of intermediate data
US6237054B1 (en) * 1998-09-14 2001-05-22 Advanced Micro Devices, Inc. Network interface unit including a microcontroller having multiple configurable logic blocks, with a test/program bus for performing a plurality of selected functions
US6281703B1 (en) * 1999-01-28 2001-08-28 Nec Corporation Programmable device with an array of programmable cells and interconnection network
US6339341B1 (en) * 1999-02-09 2002-01-15 Nec Corporation Programmable logic LSI
US6356109B1 (en) * 1999-02-10 2002-03-12 Nec Corporation Programmable device
US6308311B1 (en) * 1999-05-14 2001-10-23 Xilinx, Inc. Method for reconfiguring a field programmable gate array from a host
US6312381B1 (en) * 1999-09-14 2001-11-06 Acuson Corporation Medical diagnostic ultrasound system and method
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
US20010047465A1 (en) * 2000-03-01 2001-11-29 Ming-Kang Liu Mixed hardware/software architecture and method for processing xDSL communications

Non-Patent Citations (41)

* Cited by examiner, † Cited by third party
Title
A 3.8ms Latency Correlation Tracker for Active Mirror Control Based on a Reconfigurable Interface to a Standard Workstation and Active Mirror Control System Implementation, Shand, Weis, Scharmer, SPIE vol. 2607 (1995).
A Family of Reconfigurable Computing Engines, Wildfire(TM), Jan., 1999.
A Family of Reconfigurable Computing Engines, Wildfire™, Jan., 1999.
Accelerating Adobe Photoshop with Reconfigurable Logic, Singh, Slous, Xilinx, Inc., San Jose, CA (Dated at least as early as Feb. 1, 2000).
Accelerating DTP with Reconfigurable Computing Engines, Macvicar and Singh, Dept. Computing Science, The University of Glasgow, UK (dated at least as early as Feb. 1, 2000).
Algotronix consulting, World Wide Web URL: www.algotronix.com., (1998).
An FPGA-based Hardware Accelerator for Image Processing, Ross, Vellacott, Turner, pp. 299-306, 1994 Abingdon EE&CS Books.
Applications of Reconfigurable Logic, Fawcett, pp. 57-69, 1994 Abingdon EE&CS Books.
ASIC Design Flexibility with ERAa, Electronic Product Design, Oct. 1989.
BlueICE SDI Video, Integrated Computing Engines, Inc. (dated at least as early as Feb. 1, 2000).
Duncan A. Buell, Jeffrey M. Arnold & Walter J. Klienfelder; Splash 2 FPGAs in a Custom Computing Machine, Chapter 1, Custom Computing Machines: An Introduction; Los Alamitos, California; 1996.
Dynamic Reconfiguration of FPGAs, Department of Electronic and Electrical Engineering, Universy of Strathclyde, Glasgow; Lysaght, Dunlop, pp. 82-94, 1994 Abingdon EE&CS Books.
Figuring Out Reconfigurable Logic, EDN, Aug. 5, 1999.
H.A. Chow, H. Alnuweiri, S. Casselman. "FPGA-Based Transformable Computers for Fast Digital Signal Processing," Steve Casselman, Napa, CA., (1995).
Hyun-Kyu Yun, Harvey F. Silverman; A Distributed Memory MIMD Multi-Computer with Reconfigurable Custom Computing Capabilties; Providence, Rhode Island; 1997.
I. Skliarova et al., Exploiting FPGA-based Architectures and Design Tools for Problems of Reconfigurable Computations, Integrated Circuits and Systems Design. Proceedings. pp. 347-352. Sep. 2000.* *
Implementing PhotoShop(TM) Filters in Virtex(TM), Ludwig, Slous, Singh, Compaq Systems Research Center, Palo Alto, CA (Dated at least as early as Feb. 1, 2000).
Implementing PhotoShop™ Filters in Virtex™, Ludwig, Slous, Singh, Compaq Systems Research Center, Palo Alto, CA (Dated at least as early as Feb. 1, 2000).
John Schewel, "A Hardware/Software Co-Design System using Configurable Computing Technology," Virtual Computer Corporation, Reseda, CA. (1998).
M. Lehky et al., Reducing FPGA Design Modification Time, Proceeding of VHDL Users' Forum, pp. 143-149, Oct. 1997.* *
M.I.T. Transit Project, Transit Note #100, DPGA-Coupled Microprocessors: Commodity ICs for the Early 21st Century, Andre DeHon, Jan., 1994.
M.I.T. Transit Project, Transit Note #95, Unifying FPGAs and SIMD Arrays, Bolotski, DeHon, Knight, Jr., Sep. 1993.
Maya Gokhale, Bill Holmes and Kenlobt; "Processing in Memory:The Terasys Massively Parallel PIM Array"; Computer Innovative Technology for Computer Professionals; Maryland, Apr. 1995.* *
Mike Thornburg and Steven Casselman, "Transformable Computers," Virtual Computer Corporation, Reseda, CA. (1994).
PCI Pamette V1, Compaq Digital Products and Services (dated at least as early as Feb. 1, 2000).
R.W Hartenstein et al.; "A General Approach in System Design Integrating Reconfigurable Accelerators"; International Conference on Innovative Systems in Silicon; Austin TX; 1996 Proceedings.* *
RRAN: The Run-Time Configuration Artificial Neural Network, Eldredge, Hutchings, IEEE, pp. 77-80, 1994 Custom Integrated Circuits Conference.
Steve Casselman, "Reconfigurable Logic Based Fibre Channel Network Card," Virtual Computer Corporation, Reseda, CA. (1996).
Steven Casselman, "Virtual Computing and The Virtual Computer," Virtual Computer Corporation, Reseda, CA. (1993).
Steven Casselman, Michael Thornburg, John Schewel, "Hardware Object Programming on the EVC1: a Reconfigurable Computer," Reseda, CA. (1995).
The Design and Implementation of a Context Switching FPGA, Sanders-A Lockheed Martin Company, Scalera, Vazquez, pp. 78-84, IEEE 1998.
The Design and Implementation of a Context Switching FPGA, Sanders—A Lockheed Martin Company, Scalera, Vazquez, pp. 78-84, IEEE 1998.
The Software Is the Computer, World Wide Web URL: www.vcc.com., (Date Unknown).
Tom Shandley et al., Pentium Pro and Pentium II System Architecture, Second Edition, pp. 11-20, Feb., 1998.* *
V. Sklyarov et al., Design of Virtual Digital Controllers Based on Dynamically Reconfigurable FPGAs, Proceedings of 24th Euromicro Conference, pp. 200-203, Aug. 1998.* *
Wildstar(TM), Virtex(TM)-COTS High Speed DSP Board Performs 11.8 GFLOPS/Board VME64X, Compact PCI and PCI Buses, Annapolis Micro Systems, Inc. (dated at least as early as Jan. 2000).
Wildstar™, Virtex™—COTS High Speed DSP Board Performs 11.8 GFLOPS/Board VME64X, Compact PCI and PCI Buses, Annapolis Micro Systems, Inc. (dated at least as early as Jan. 2000).
Xilinx Online-Photoshop Internet Reconfigurable Logic (IRL) Reference Design, Website (dated as least as early as Feb. 1, 2000).
Xilinx Online—Photoshop Internet Reconfigurable Logic (IRL) Reference Design, Website (dated as least as early as Feb. 1, 2000).
Xilinx Online-Virtex Series FPGAs, Website (dated as least as early as Feb. 1, 2000).
Xilinx Online—Virtex Series FPGAs, Website (dated as least as early as Feb. 1, 2000).

Cited By (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6717436B2 (en) * 1999-09-29 2004-04-06 Infineon Technologies Ag Reconfigurable gate array
US20030033450A1 (en) * 2000-07-20 2003-02-13 John Appleby-Alis System, method, and article of manufacture for remote updating of hardware
US20030204830A1 (en) * 2000-10-31 2003-10-30 Arm Limited Integrated circuit configuration
US6918103B2 (en) * 2000-10-31 2005-07-12 Arm Limited Integrated circuit configuration
US7941790B2 (en) * 2000-11-29 2011-05-10 Texas Instruments Incorporated Data processing apparatus, system and method
US20030079213A1 (en) * 2000-11-29 2003-04-24 Gilbert Cabillic Data processing apparatus, system and method
US6578186B1 (en) * 2000-12-22 2003-06-10 Juniper Networks Reset control for systems using programmable logic
US9015352B2 (en) 2001-03-22 2015-04-21 Altera Corporation Adaptable datapath for a digital processing system
US9665397B2 (en) 2001-03-22 2017-05-30 Cornami, Inc. Hardware task manager
US8533431B2 (en) 2001-03-22 2013-09-10 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US9037834B2 (en) 2001-03-22 2015-05-19 Altera Corporation Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US9396161B2 (en) 2001-03-22 2016-07-19 Altera Corporation Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US8356161B2 (en) 2001-03-22 2013-01-15 Qst Holdings Llc Adaptive processor for performing an operation with simple and complex units each comprising configurably interconnected heterogeneous elements
US9164952B2 (en) 2001-03-22 2015-10-20 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US8589660B2 (en) 2001-03-22 2013-11-19 Altera Corporation Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US8543794B2 (en) 2001-03-22 2013-09-24 Altera Corporation Adaptive integrated circuitry with heterogenous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US8543795B2 (en) 2001-03-22 2013-09-24 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20020143518A1 (en) * 2001-03-28 2002-10-03 Abrahamson Carl K. Dynamically adaptable digital architecture system
US20050223213A1 (en) * 2001-04-30 2005-10-06 Daniel Poznanovic Interface for integrating reconfigurable processors into a general purpose computing system
US20030046530A1 (en) * 2001-04-30 2003-03-06 Daniel Poznanovic Interface for integrating reconfigurable processors into a general purpose computing system
US7167976B2 (en) 2001-04-30 2007-01-23 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US7840777B2 (en) 2001-05-04 2010-11-23 Ascenium Corporation Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
US20060004997A1 (en) * 2001-05-04 2006-01-05 Robert Keith Mykland Method and apparatus for computing
US7809050B2 (en) 2001-05-08 2010-10-05 Qst Holdings, Llc Method and system for reconfigurable channel coding
US8249135B2 (en) 2001-05-08 2012-08-21 Qst Holdings Llc Method and system for reconfigurable channel coding
US8767804B2 (en) 2001-05-08 2014-07-01 Qst Holdings Llc Method and system for reconfigurable channel coding
US7822109B2 (en) 2001-05-08 2010-10-26 Qst Holdings, Llc. Method and system for reconfigurable channel coding
US20040215846A1 (en) * 2001-05-16 2004-10-28 International Business Machines Corporation Method and system for efficient access to remote I/O functions in embedded control environments
US7076575B2 (en) * 2001-05-16 2006-07-11 International Business Machines Corporation Method and system for efficient access to remote I/O functions in embedded control environments
US20020174266A1 (en) * 2001-05-18 2002-11-21 Krishna Palem Parameterized application programming interface for reconfigurable computing systems
US20100095094A1 (en) * 2001-06-20 2010-04-15 Martin Vorbach Method for processing data
US6868017B2 (en) * 2001-07-12 2005-03-15 Ip Flex Inc. Integrated circuit device
US20040015613A1 (en) * 2001-07-12 2004-01-22 Kenji Ikeda Integrated circuit device
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
USRE42743E1 (en) 2001-11-28 2011-09-27 Qst Holdings, Llc System for authorizing functionality in adaptable hardware devices
US9594723B2 (en) 2001-11-30 2017-03-14 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having fixed, application specific computational elements
US8225073B2 (en) 2001-11-30 2012-07-17 Qst Holdings Llc Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US9330058B2 (en) 2001-11-30 2016-05-03 Altera Corporation Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8880849B2 (en) 2001-11-30 2014-11-04 Altera Corporation Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8250339B2 (en) 2001-11-30 2012-08-21 Qst Holdings Llc Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8442096B2 (en) 2001-12-12 2013-05-14 Qst Holdings Llc Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7668229B2 (en) 2001-12-12 2010-02-23 Qst Holdings, Llc Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US9002998B2 (en) 2002-01-04 2015-04-07 Altera Corporation Apparatus and method for adaptive multimedia reception and transmission in communication environments
US7171659B2 (en) * 2002-03-19 2007-01-30 Sun Microsystems, Inc. System and method for configurable software provisioning
US20030195921A1 (en) * 2002-03-19 2003-10-16 Becker Brian Eric System and method for configurable software provisioning
US7865847B2 (en) 2002-05-13 2011-01-04 Qst Holdings, Inc. Method and system for creating and programming an adaptive computing engine
US8230374B2 (en) 2002-05-17 2012-07-24 Pixel Velocity, Inc. Method of partitioning an algorithm between hardware and software
US7451410B2 (en) * 2002-05-17 2008-11-11 Pixel Velocity Inc. Stackable motherboard and related sensor systems
US20080148227A1 (en) * 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
US20050073819A1 (en) * 2002-05-17 2005-04-07 Mccubbrey David L. Stackable motherboard and related sensor systems
US7024654B2 (en) * 2002-06-11 2006-04-04 Anadigm, Inc. System and method for configuring analog elements in a configurable hardware device
US20030229877A1 (en) * 2002-06-11 2003-12-11 Bersch Danny Austin System and method for configuring analog elements in a configurable hardware device
US8782196B2 (en) 2002-06-25 2014-07-15 Sviral, Inc. Hardware task manager
US10185502B2 (en) 2002-06-25 2019-01-22 Cornami, Inc. Control node for multi-core system
US8200799B2 (en) 2002-06-25 2012-06-12 Qst Holdings Llc Hardware task manager
US10817184B2 (en) 2002-06-25 2020-10-27 Cornami, Inc. Control node for multi-core system
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7020764B2 (en) * 2002-07-24 2006-03-28 Renesas Technology Corp. Semiconductor processing device
US20040017724A1 (en) * 2002-07-24 2004-01-29 Hitachi, Ltd. Semiconductor processing device
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7454188B2 (en) * 2002-08-30 2008-11-18 Nxp B.V. Version-programmable circuit module
US20050233724A1 (en) * 2002-08-30 2005-10-20 Koninklijke Philips Electronics N.V. Version-programmable circuit module
US20050272197A1 (en) * 2002-09-13 2005-12-08 Hiroshi Tanaka Semiconductor device
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7904603B2 (en) 2002-10-28 2011-03-08 Qst Holdings, Llc Adaptable datapath for a digital processing system
US8706916B2 (en) 2002-10-28 2014-04-22 Altera Corporation Adaptable datapath for a digital processing system
US8380884B2 (en) 2002-10-28 2013-02-19 Altera Corporation Adaptable datapath for a digital processing system
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7979646B2 (en) 2002-11-22 2011-07-12 Qst Holdings, Inc. External memory controller node
US20080244197A1 (en) * 2002-11-22 2008-10-02 Qst Holdings, Llc External memory controller node
US7941614B2 (en) 2002-11-22 2011-05-10 QST, Holdings, Inc External memory controller node
US7984247B2 (en) 2002-11-22 2011-07-19 Qst Holdings Llc External memory controller node
US7937539B2 (en) 2002-11-22 2011-05-03 Qst Holdings, Llc External memory controller node
US7451280B2 (en) * 2002-11-22 2008-11-11 Qst Holdings, Llc External memory controller node
US7937538B2 (en) 2002-11-22 2011-05-03 Qst Holdings, Llc External memory controller node
US7225301B2 (en) * 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US20070226433A1 (en) * 2002-11-22 2007-09-27 Quicksilver Technology, Inc. External memory controller node
US20040177225A1 (en) * 2002-11-22 2004-09-09 Quicksilver Technology, Inc. External memory controller node
US8266388B2 (en) 2002-11-22 2012-09-11 Qst Holdings Llc External memory controller
US7743220B2 (en) 2002-11-22 2010-06-22 Qst Holdings, Llc External memory controller node
US8769214B2 (en) 2002-11-22 2014-07-01 Qst Holdings Llc External memory controller node
WO2004079564A3 (en) * 2003-03-05 2005-09-09 Bridgeco Ag Processor with different types of control units for commonly used resources
WO2004079564A2 (en) * 2003-03-05 2004-09-16 Bridgeco Ag Processor with different types of control units for commonly used resources
US20060265571A1 (en) * 2003-03-05 2006-11-23 Thomas Bosch Processor with different types of control units for jointly used resources
US7873811B1 (en) 2003-03-10 2011-01-18 The United States Of America As Represented By The United States Department Of Energy Polymorphous computing fabric
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US8719458B2 (en) 2003-06-10 2014-05-06 Altera Corporation Apparatus and methods for communicating with programmable devices
US9274980B2 (en) 2003-06-10 2016-03-01 Altera Corporation Apparatus and methods for communicating with programmable devices
US8190787B2 (en) 2003-06-10 2012-05-29 Altera Corporation Apparatus and methods for communicating with programmable devices
US20100082891A1 (en) * 2003-06-10 2010-04-01 Altera Corporation Apparatus and methods for communicating with programmable devices
US20080143378A1 (en) * 2003-06-10 2008-06-19 Altera Corporation Apparatus and methods for communicating with programmable logic devices
US7650438B2 (en) * 2003-06-10 2010-01-19 Altera Corporation Apparatus and methods for communicating with programmable logic devices
US7574533B2 (en) * 2003-06-10 2009-08-11 Altera Corporation Apparatus and methods for communicating with programmable logic devices
US8554959B2 (en) 2003-06-10 2013-10-08 Altera Corporation Apparatus and methods for communicating with programmable devices
US7603542B2 (en) * 2003-06-25 2009-10-13 Nec Corporation Reconfigurable electric computer, semiconductor integrated circuit and control method, program generation method, and program for creating a logic circuit from an application program
US20060155968A1 (en) * 2003-06-25 2006-07-13 Nec Corporation Electronic computer, semiconductor integrated circuit, control method, program generation method, and program
US7200703B2 (en) * 2004-06-08 2007-04-03 Valmiki Ramanujan K Configurable components for embedded system design
US20050273542A1 (en) * 2004-06-08 2005-12-08 Poseidon Design Systems, Inc. Configurable communication template for designing and implementing an accelerator
US7446562B2 (en) 2004-06-15 2008-11-04 Nec Corporation Programmable semiconductor device
US20070247188A1 (en) * 2004-06-15 2007-10-25 Nec Corporation Programmable Semiconductor Device
US7612582B2 (en) * 2004-09-03 2009-11-03 Derek Ward Programmable logic controller and related electronic devices
US20080058962A1 (en) * 2004-09-03 2008-03-06 Derek Ward Programmable logic controller and related electronic devices
US20060079970A1 (en) * 2004-09-03 2006-04-13 Derek Ward Programmable logic controller and related electronic devices
US7613899B2 (en) * 2005-02-25 2009-11-03 Canon Kabushiki Kaisha Reconfigurable data processing device and method
US20060195684A1 (en) * 2005-02-25 2006-08-31 Canon Kabushiki Kaisha Reconfigurable data processing device and method
US20090083530A1 (en) * 2005-04-05 2009-03-26 Osamu Nishijima Computer System, Data Structure Representing Configuration Information, Mapping System, and Mapping Method
US20100010706A1 (en) * 2005-09-23 2010-01-14 Joseph Gormley Vehicle control and interconnection system
US8046501B2 (en) 2005-09-23 2011-10-25 Joseph Gormley Vehicle control and interconnection system
US7590768B2 (en) 2005-09-23 2009-09-15 Joseph Gormley Control and interconnection system
US20070073944A1 (en) * 2005-09-23 2007-03-29 Joseph Gormley Systems and methods for implementing a vehicle control and interconnection system
US7596636B2 (en) 2005-09-23 2009-09-29 Joseph Gormley Systems and methods for implementing a vehicle control and interconnection system
US20070073908A1 (en) * 2005-09-23 2007-03-29 Joseph Gormley Control and interconnection system
US20080119165A1 (en) * 2005-10-03 2008-05-22 Ajay Mittal Call routing via recipient authentication
US7688820B2 (en) * 2005-10-03 2010-03-30 Divitas Networks, Inc. Classification for media stream packets in a media gateway
US20070091848A1 (en) * 2005-10-03 2007-04-26 Snehal Karia Reducing data loss during handoffs in wireless communication
US20070094374A1 (en) * 2005-10-03 2007-04-26 Snehal Karia Enterprise-managed wireless communication
US20070121580A1 (en) * 2005-10-03 2007-05-31 Paolo Forte Classification for media stream packets in a media gateway
US20070264989A1 (en) * 2005-10-03 2007-11-15 Rajesh Palakkal Rendezvous calling systems and methods therefor
US7512873B2 (en) * 2006-03-22 2009-03-31 Fujitsu Microelectronics Limited Parallel processing apparatus dynamically switching over circuit configuration
US20070245178A1 (en) * 2006-03-22 2007-10-18 Fujitsu Limited Parallel processing apparatus dynamically switching over circuit configuration
US20090016333A1 (en) * 2006-06-14 2009-01-15 Derek Wang Content-based adaptive jitter handling
US20080317241A1 (en) * 2006-06-14 2008-12-25 Derek Wang Code-based echo cancellation
US20080036864A1 (en) * 2006-08-09 2008-02-14 Mccubbrey David System and method for capturing and transmitting image data streams
US20080120260A1 (en) * 2006-11-16 2008-05-22 Yancey Jerry W Reconfigurable neural network systems and methods utilizing FPGAs having packet routers
US7555469B2 (en) 2006-11-16 2009-06-30 L-3 Communications Integrated Systems L.P. Reconfigurable neural network systems and methods utilizing FPGAs having packet routers
US20080151049A1 (en) * 2006-12-14 2008-06-26 Mccubbrey David L Gaming surveillance system and method of extracting metadata from multiple synchronized cameras
US9747626B2 (en) 2006-12-14 2017-08-29 Joseph Gormley Vehicle customization and personalization activities
US8694328B1 (en) 2006-12-14 2014-04-08 Joseph Gormley Vehicle customization and personalization activities
US9734528B2 (en) 2006-12-14 2017-08-15 Joseph Gormley Vehicle customization and personalization activities
US9824383B2 (en) 2006-12-14 2017-11-21 Joseph Gormley Vehicle customization and personalization activities
US11232504B2 (en) 2006-12-14 2022-01-25 Joseph Gormley Vehicle customization and personalization activities
US10445804B2 (en) 2006-12-14 2019-10-15 Joseph Gormley Vehicle customization and personalization activities
US20080162856A1 (en) * 2006-12-29 2008-07-03 Motorola, Inc. Method for dynamic memory allocation on reconfigurable logic
US20080211915A1 (en) * 2007-02-21 2008-09-04 Mccubbrey David L Scalable system for wide area surveillance
US8587661B2 (en) 2007-02-21 2013-11-19 Pixel Velocity, Inc. Scalable system for wide area surveillance
US20090086023A1 (en) * 2007-07-18 2009-04-02 Mccubbrey David L Sensor system including a configuration of the sensor as a virtual sensor device
US20090024839A1 (en) * 2007-07-21 2009-01-22 Arssov Paul Plamen Variable instruction set microprocessor
US20090106761A1 (en) * 2007-10-19 2009-04-23 Sundeep Chandhoke Programmable Controller with Multiple Processors Using a Scanning Architecture
US9336051B2 (en) * 2007-10-19 2016-05-10 National Instruments Corporation Programmable controller with multiple processors using a scanning architecture
US20100174890A1 (en) * 2007-12-17 2010-07-08 Hillman Garth D Known Good Code for On-Chip Device Management
KR101538749B1 (en) * 2007-12-17 2015-07-22 어드밴스드 마이크로 디바이시즈, 인코포레이티드 Known good code for on-chip device management
US9058163B2 (en) * 2007-12-17 2015-06-16 Advanced Micro Devices, Inc. Known good code for on-chip device management
US20090158015A1 (en) * 2007-12-17 2009-06-18 Hillman Garth D Uses of Known Good Code for Implementing Processor Architectural Modifications
US7831813B2 (en) 2007-12-17 2010-11-09 Globalfoundries Inc. Uses of known good code for implementing processor architectural modifications
WO2009078913A1 (en) * 2007-12-17 2009-06-25 Advanced Micro Devices, Inc. Known good code for on-chip device management
US20140129810A1 (en) * 2007-12-17 2014-05-08 Advanced Micro Devices, Inc. Known Good Code for On-Chip Device Management
US8612729B2 (en) 2007-12-17 2013-12-17 Advanced Micro Devices, Inc. Known good code for on-chip device management
US20100257335A1 (en) * 2009-04-03 2010-10-07 Fujitsu Microelectronics Limited Reconfigurable circuit with suspension control circuit
US9251117B2 (en) * 2009-04-03 2016-02-02 Cypress Semiconductor Corporation Reconfigurable circuit with suspension control circuit
US20110115909A1 (en) * 2009-11-13 2011-05-19 Sternberg Stanley R Method for tracking an object through an environment across multiple cameras
US11055103B2 (en) 2010-01-21 2021-07-06 Cornami, Inc. Method and apparatus for a multi-core system for implementing stream-based computations having inputs from multiple streams
US8869123B2 (en) 2011-06-24 2014-10-21 Robert Keith Mykland System and method for applying a sequence of operations code to program configurable logic circuitry
US9158544B2 (en) 2011-06-24 2015-10-13 Robert Keith Mykland System and method for performing a branch object conversion to program configurable logic circuitry
US10089277B2 (en) 2011-06-24 2018-10-02 Robert Keith Mykland Configurable circuit array
US9304770B2 (en) 2011-11-21 2016-04-05 Robert Keith Mykland Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US20160283636A1 (en) * 2012-02-08 2016-09-29 Altera Corporation Method and Apparatus for Implementing Periphery Devices on a Programmable Circuit Using Partial Reconfiguration
US9852255B2 (en) * 2012-02-08 2017-12-26 Altera Corporation Method and apparatus for implementing periphery devices on a programmable circuit using partial reconfiguration
US9633160B2 (en) 2012-06-11 2017-04-25 Robert Keith Mykland Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor
US9619265B2 (en) * 2013-06-25 2017-04-11 Empire Technology Development Llc Reconfiguration with virtual machine switching
US20150205629A1 (en) * 2013-06-25 2015-07-23 Empire Technology Development, Llc Reconfiguration with virtual machine switching
US9880952B2 (en) 2015-01-15 2018-01-30 Toshiba Memory Corporation Bus access controller, hardware engine, controller, and memory system
US11704459B2 (en) 2016-09-29 2023-07-18 Amazon Technologies, Inc. Logic repository service
CN110088741A (en) * 2016-09-30 2019-08-02 亚马逊技术有限公司 Control accesses previously stored logic in reconfigurable logical device
US11275503B2 (en) 2016-09-30 2022-03-15 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11863406B2 (en) 2016-11-17 2024-01-02 Amazon Technologies, Inc. Networked programmable logic service provider
US11956220B2 (en) 2021-11-03 2024-04-09 Amazon Technologies, Inc. Logic repository service using encrypted configuration data

Also Published As

Publication number Publication date
EP1536346A3 (en) 2009-04-29
JP4510353B2 (en) 2010-07-21
WO2001061525A2 (en) 2001-08-23
WO2001061525A3 (en) 2002-02-28
HK1048871A1 (en) 2003-04-17
DE60116060T2 (en) 2006-07-13
EP1257928B1 (en) 2005-12-21
HK1048871B (en) 2006-04-28
DE60116060D1 (en) 2006-01-26
ATE313829T1 (en) 2006-01-15
JP2003524969A (en) 2003-08-19
AU2001237005A1 (en) 2001-08-27
EP1536346A2 (en) 2005-06-01
EP1257928A2 (en) 2002-11-20

Similar Documents

Publication Publication Date Title
US6438737B1 (en) Reconfigurable logic for a computer
US9710310B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
CN100578456C (en) Information processing device and procedure control method
JP6974588B2 (en) Virtual FPGA management and optimization system
US10540200B2 (en) High performance context switching for virtualized FPGA accelerators
US5978862A (en) PCMCIA card dynamically configured in first mode to program FPGA controlling application specific circuit and in second mode to operate as an I/O device
JP5509107B2 (en) Reconfigurable programmable logic device computer system
US20090327610A1 (en) Method and System for Conducting Intensive Multitask and Multiflow Calculation in Real-Time
JP2003524969A5 (en)
US11360925B2 (en) Method and apparatus for host adaptation to a change of persona of a configurable integrated circuit die
US8990456B2 (en) Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response
CN112955880B (en) Apparatus and method for processing address decoding in a system on chip
KR20070050002A (en) Information processing device, memory area management method, and computer program
CN114827048A (en) Dynamic configurable high-performance queue scheduling method, system, processor and protocol
KR20080013993A (en) Use of a data engine within a data processing apparatus
Zou et al. DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing
Danne Memory management to support multitasking on fpga based systems
Jozwik et al. Rainbow: an OS extension for hardware multitasking on dynamically partially reconfigurable FPGAs
Liu et al. A reconfigurable design framework for FPGA adaptive computing
CN116069451B (en) Virtualization method, device, equipment, medium, accelerator and system
RU2780169C1 (en) Computing module for multitasking computing systems
JP3845021B2 (en) Semiconductor circuit control device and semiconductor circuit control program

Legal Events

Date Code Title Description
AS Assignment

Owner name: MAJESTIC-12 TECHNOLOGY, INC., INDIANA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MORELLI, JOHN;KENDALL, H. RICHARD;REEL/FRAME:010721/0857

Effective date: 20000224

AS Assignment

Owner name: NURON, INC., INDIANA

Free format text: MERGER;ASSIGNOR:MAJESTIC-12 TECHNOLOGY, INC.;REEL/FRAME:011466/0840

Effective date: 20001128

CC Certificate of correction
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FEPP Fee payment procedure

Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REFU Refund

Free format text: REFUND - SURCHARGE, PETITION TO ACCEPT PYMT AFTER EXP, UNINTENTIONAL (ORIGINAL EVENT CODE: R2551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
AS Assignment

Owner name: INTEL CORPORATION,CALIFORNIA

Free format text: MERGER;ASSIGNOR:NURON, INC.;REEL/FRAME:024539/0738

Effective date: 20010226

LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20100820