throbber
1111111111111111 IIIIII IIIII 11111 1111111111 11111 111111111111111 IIIII IIIII 1111111111 11111111
`US 20030046530Al
`
`(19) United States
`(12) Patent Application Publication (10) Pub. No.: US 2003/0046530 Al
`Mar. 6, 2003
`Poznanovic
`(43) Pub. Date:
`
`(54)
`
`INTERFACE FOR INTEGRATING
`RECONFIGURABLE PROCESSORS INTO A
`GENERAL PURPOSE COMPUTING SYSTEM
`
`(76)
`
`Inventor: Daniel Poznanovic, Colorado Springs,
`CO (US)
`
`Correspondence Address:
`HOGAN & HARTSON LLP
`ONE TABOR CENTER, SUITE 1500
`1200 SEVENTEENTH ST
`DENVER, CO 80202 (US)
`
`(21)
`
`Appl. No.:
`
`10/011,835
`
`(22)
`
`Filed:
`
`Dec. 5, 2001
`
`Related U.S. Application Data
`
`(60)
`
`Provisional application No. 60/286,979, filed on Apr.
`30, 2001.
`
`Publication Classification
`
`Int. Cl.7 ................................ G06F 1/24; G06F 9/00
`(51)
`(52) U.S. Cl. .............................................................. 713/100
`
`(57)
`
`ABSTRACT
`
`The present invention describes a method and system for an
`interface for integrating reconfigurable processors into a
`general purpose computing system. In particular, the system
`resides in a computer system containing standard instruction
`processors, as well as reconfigurable processors. The inter(cid:173)
`face
`includes a command processor, a command list
`memory, various registers, a direct memory access engine, a
`translation look-aside buffer, a dedicated section of common
`memory, and a dedicated memory. The interface is con(cid:173)
`trolled via commands from a command list that is created
`during compilation of a user application, or various direct
`commands.
`
`40
`
`42
`
`43
`
`44
`
`45
`
`46
`47
`48
`
`1----------------------
`: j - - - - - - - -~ 5 2
`(
`
`Control Chip
`
`50
`
`Command Processor
`
`Comlist Memory
`
`DMA Controller
`
`Translation
`Look-Aside Buffer
`
`Data Registers
`Flag Registers
`User Data Registers
`
`User Logic 1
`
`_______________ 1 _________ '
`
`12
`
`On-Board Memory
`
`I
`I
`I
`:
`I
`
`I
`I
`~ 54
`
`User Array
`
`.r; 66 ---
`
`User Logic 2
`
`60 J~-6-2-, --t----rr----6-22___Jt-_ _ _J
`
`~---------------------------
`
`Intel Exhibit 1046 - 1
`
`

`

`Patent Application Publication
`
`Mar.6,2003 Sheet 1 of 6
`
`US 2003/0046530 Al
`
`100
`
`1QQ0A
`
`1000B y
`
`140
`'---._
`
`200
`~
`
`Mux
`
`1100
`
`Processor Boar
`
`280
`_/
`
`110
`
`Micro
`Processor
`
`Micro
`Processor
`
`Bndge
`
`l
`
`Reconfigurable
`Processor
`(MAP)
`
`~--P'----'r=ocessor Board
`
`Micro
`Processor
`
`Micro
`Processor
`
`Reconfigurable
`Processor
`MAP
`
`16
`~
`
`220
`~
`
`18
`
`~ n
`
`26
`
`C
`r
`0
`s
`s
`b
`a
`
`C
`0
`m
`m
`0
`n
`
`M
`e
`m
`0
`r
`y
`
`Figure 1
`
`Intel Exhibit 1046 - 2
`
`

`

`Patent Application Publication Mar. 6, 2003 Sheet 2 of 6
`
`US 2003/0046530 Al
`
`50
`401:----------------------
`1 , - - - - - - - - - - - - - 52
`
`12
`_______________ ( _________ ,
`
`42
`
`43
`44
`
`45
`
`46
`47
`48
`
`Control Chip
`
`Command Processor
`
`Comlist Memory
`
`DMA Controller
`
`Translation
`Look-Aside Buffer
`
`Data Registers
`Flag Registers
`User Data Registers
`
`On-Board Memory
`
`I
`I
`I
`I
`I
`I
`I
`I
`
`~ 54
`
`Jr 66
`~ ....
`
`~
`
`,------.f..--~--....L-~L_-L-~ I I
`User Array
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`User Logic 1
`
`User Logic 2
`
`60 j'----62-1--t----rr--6-2-2-1----
`
`______________ ..,,
`
`~---------------
`
`Figure 2
`
`Intel Exhibit 1046 - 3
`
`

`

`Patent Application Publication Mar. 6, 2003 Sheet 3 of 6
`
`US 2003/0046530 Al
`
`Begin MAP Halt
`
`200
`
`~ - - - - - - ' - - - - -~~
`
`Control Logic Stops Processing
`
`Control state saved in on-board memory
`
`220
`
`~ - - - - -~
`
`Status saved in Status and Control area
`
`Translation Look-aside Buffer stored in memory
`
`240
`~
`
`Direct Stop Command
`Received?
`
`250
`
`252
`
`No
`
`Interrupts enabled?
`
`No-
`
`Abandon Current
`Command/
`Continue
`
`I Execution of next
`
`command
`
`Yes
`
`242
`
`Yes
`
`Map
`Halts
`
`Send interrupt
`
`l
`
`MAP Halts
`
`260
`
`~
`I 270
`
`------<
`
`Figure 3
`
`Intel Exhibit 1046 - 4
`
`

`

`Patent Application Publication
`
`Mar. 6, 2003 Sheet 4 of 6
`
`US 2003/0046530 Al
`
`Begin Execution
`
`Make any required changes to parameters
`
`310
`
`320
`
`No
`
`ontinue executio
`from next
`command?
`
`330
`Continue ~
`
`execution from
`different command
`sequence?
`
`Yes
`
`312
`
`I
`I
`Yes
`
`I
`
`322
`
`Reload parameter
`data
`
`Execute Continue
`command
`
`314
`
`Execute Continue I
`from Saved
`command
`
`Load Parameters
`
`334
`
`336
`
`E,=te D,m:: (
`
`Start command
`
`'
`
`Figure 4
`
`Intel Exhibit 1046 - 5
`
`

`

`Patent Application Publication Mar. 6, 2003 Sheet 5 of 6
`
`US 2003/0046530 Al
`
`Common Memory
`
`/
`
`18
`
`~
`
`0MB
`
`70
`
`v
`
`2MB Command List Area
`
`MAP ID #1 - Comlist 0
`
`MAP ID #1 - Comlist 1
`
`MAP ID #2 - Comlist 0
`
`MAP ID #2 - Comlist 1
`...
`
`MAP ID #n - Com list 0
`
`MAP ID #n - Comlist 1
`
`MAP ID #1 - Status and Control Area (SCA)
`
`MAP ID #2 - Status and Control Area (SCA)
`
`...
`
`721A
`~
`72 1B
`
`r---,
`,.._,
`,......_,
`
`722A
`
`722B
`
`r---,
`
`,......_,
`
`80
`
`,.--,
`
`r---,
`
`,.._,
`
`4MB
`
`SCA Area
`
`MAP ID #n - Status and Control Area (SCA)
`
`~
`
`--
`
`Figure 5
`
`Intel Exhibit 1046 - 6
`
`

`

`Patent Application Publication Mar. 6, 2003 Sheet 6 of 6
`
`US 2003/0046530 Al
`
`400
`
`410
`
`11
`
`
`
`, 420
`
`Load Comlist into Comlist space of
`Common Memory
`
`Send Fetch Command
`
`I
`
`-~'-r
`-~'-r
`~---~'------l(430
`
`Fetch Comlist from Common Memory
`
`I
`
`Store Comlist in Comlist Memory
`
`I 440
`
`Yes
`
`Execute Comlist
`
`I ___ _
`
`Next Comlist available?
`
`460
`
`i
`No
`
`I
`
`Wait for Next
`command
`
`Figure 6
`
`Intel Exhibit 1046 - 7
`
`

`

`US 2003/0046530 Al
`
`Mar. 6, 2003
`
`1
`
`INTERFACE FOR INTEGRATING
`RECONFIGURABLE PROCESSORS INTO A
`GENERAL PURPOSE COMPUTING SYSTEM
`
`CROSS REFERENCE TO RELATED
`APPLICATIONS
`
`[0001] This application claims the benefit of U.S. Provi(cid:173)
`sional Patent Application No. 60/286,979 filed Apr. 30,
`2001, and entitled "Delivering Acceleration: The Potential
`for Increased HPC Application Performance Using Recon(cid:173)
`figurable Logic," which is hereby incorporated by reference
`in its entirety.
`
`BACKGROUND OF THE INVENTION
`
`[0002] 1. Field of the Invention
`
`[0003] The present invention relates to a method and
`system for interfacing computer processors. In particular,
`the present invention relates to a computer system interface
`that provides for the integration of reconfigurable processors
`with instruction processors and other reconfigurable proces(cid:173)
`sors.
`
`[0004] 2. Discussion of the Related Art
`
`[0005] Typical computing systems generally include tra(cid:173)
`ditional instruction processors for processing and control(cid:173)
`ling the instructions and data flow of a typical computer
`program. Computer instructions can also be implemented
`with hardware logic. Hardware logic-implemented functions
`can greatly accelerate the processing of application algo(cid:173)
`rithms over those same algorithms implemented in software.
`Sections of code such as compute-intensive algorithms,
`and/or repetitious instructions can benefit from hardware
`implementation. Although computer instructions imple(cid:173)
`mented in hardware logic run much faster than those imple(cid:173)
`mented in software, hardware logic is much more expensive
`to design, develop, and manufacture than an average com(cid:173)
`puter application.
`
`[0006] Recently reconfigurable processors have been
`added to computer systems, allowing for the processing of
`computer software, as well as providing for the hardware
`implementation of a computer program or code segments.
`Any piece of code deemed suitable for hardware perfor(cid:173)
`mance can be segregated from an application program and
`processed by one or more reconfigurable processors. The
`remaining code, the code not converted for hardware imple(cid:173)
`mentation, is simply processed by the standard instruction
`processors.
`
`[0007]
`In such hybrid computer systems the computer
`code is divided into sections, generally during compilation.
`Depending on optimization requirements these sections of
`code can then be processed by one or more instruction
`processors, and/or one or more reconfigurable processors.
`
`[0008] Performance enhancements resulting from recon(cid:173)
`figurable computing can provide orders of magnitude
`improvements in speed for a wide variety of computing
`code. However, the coordination between the instruction
`processors, reconfigurable processors, main memory, and
`various other components can degrade these performance
`improvements. Additionally, the increased number of com(cid:173)
`ponents necessary to coordinate such a hybrid computer
`system can add significantly to the overall cost.
`
`SUMMARY OF THE INVENTION
`
`[0009] Accordingly, the present invention is directed to an
`interface for integrating reconfigurable processors with stan(cid:173)
`dard instruction processors and/or other reconfigurable pro(cid:173)
`cessors into a computer system that substantially obviates
`one or more of the problems due to limitations and disad(cid:173)
`vantages of the related art.
`
`[0010] The present invention includes an interface control
`processor, storage for the interface instructions, data regis(cid:173)
`ters, flag registers, user registers, and a direct memory access
`("DMA") processor.
`
`[0011] The reconfigurable processor interface is an active
`interface. The interface takes direction from instruction
`processors, reconfigurable processors, as well as the user
`logic within a reconfigurable processor, yet is capable of
`control and decision making on its own. This active control
`is defined through a coordinated effort of the various inter(cid:173)
`face registers, specific areas of common memory, the dedi(cid:173)
`cated reconfigurable processor memory, and the user logic of
`the reconfigurable processor with an interface control pro(cid:173)
`gram.
`
`[0012] An object of the present invention is to provide a
`mechanism by which the instruction processors communi(cid:173)
`cate and coordinate with arbitrary user logic in reconfig(cid:173)
`urable processors.
`
`[0013] Another object of the present invention is to pro(cid:173)
`vide an active control that allows instruction processors and
`reconfigurable processors to function autonomously.
`
`[0014] Another object of the present invention is to pro(cid:173)
`vide a means for moving memory contents between com(cid:173)
`mon memory and the dedicated memory of a reconfigurable
`processor.
`
`[0015] A further object of the present invention is to
`provide a flexible interface that can be defined for arbitrary
`instruction processor instruction sequences and arbitrary
`reconfigurable user logic.
`
`[0016] Another object of the present invention is to ensure
`the protected operation of the interface by ensuring that the
`memory to be referred to is only within the boundaries of a
`user program.
`
`[0017] Another object of the present invention is to pro(cid:173)
`vide interaction with a user program without requiring
`operating system services.
`
`[0018] Yet a further object of the present invention is to
`provide a means for the reconfigurable processor to interact
`with input/output services.
`
`[0019] Another object of the present invention is to divide
`application programs among instruction processors and
`reconfigurable processors to achieve optimum performance.
`
`[0020] Another object of the present invention is to allow
`a single-system image to be constructed for a hybrid system
`of instruction processors and reconfigurable processors.
`
`[0021] Another object of the present invention is to allow
`a single-system image to be constructed for a system of
`purely reconfigurable processors.
`
`Intel Exhibit 1046 - 8
`
`

`

`US 2003/0046530 Al
`
`Mar. 6, 2003
`
`2
`
`[0022] A further object of the present invention is to allow
`the construction of a cluster of Symmetric Multi-Processor
`("SMP") hybrid nodes or strictly instruction nodes, or recon(cid:173)
`figurable processor nodes, or various combinations thereof.
`
`[0023] Still a further object of the present invention is to
`allow instruction processors and reconfigurable processors
`to be integrated into a single-system image SMP architecture
`system.
`
`[0024] A further object of the present invention is to allow
`reconfigurable processors to be integrated into a single(cid:173)
`system image SMP.
`
`[0025] Another object of the present invention is to allow
`the user logic of the reconfigurable processor to coordinate
`with the rest of a single-system image SMP system.
`
`[0026] Additional features and advantages of the inven(cid:173)
`tion will be set forth in the description that follows, and in
`part will be apparent from the description, or may be learned
`by practice of the invention. The objectives and other
`advantages of the invention will be realized and attained by
`the structure particularly pointed out in the written descrip(cid:173)
`tion and claims hereof as well as the appended drawings.
`
`[0027] To achieve these and other advantages and in
`accordance with the purpose of the present invention, as
`embodied and broadly described, the interface for integrat(cid:173)
`ing reconfigurable processors into a general purpose com(cid:173)
`puting system provides the ability to coordinate the execu(cid:173)
`tion of an application that combines processor code and
`synthesized logic.
`
`[0028]
`In another aspect, the present invention provides an
`interface for integrating reconfigurable processors into a
`general purpose computing system. The interface includes:
`(1) interface control processor for managing the interaction
`between the at least one reconfigurable processor and the
`computer system; (2) interface control processor instruc(cid:173)
`tions organized into command lists; (3) random access
`memory for storing the current command list; ( 4) registers
`for storing data and settings; (5) common memory; (6) direct
`memory access logic for coordinating the transfer of the
`reconfigurable processor instructions and data; (7) address
`translation buffer for storing translation data and translating
`virtual memory addresses to physical memory addresses;
`and (8) dedicated memory.
`
`[0029]
`In a further aspect, the present invention provides
`a method for processing interface control processor instruc(cid:173)
`tions compiled from a user application. This method
`includes the steps of: (1) storing command lists in a dedi(cid:173)
`cated area of common memory, (2) receiving a fetch com(cid:173)
`mand sent by the user application; (3) fetching a command
`list from the dedicated area; (4) loading the command list
`into a command list memory within the interface; (5)
`processing the command list through an interface control
`processor; ( 6) interacting with user logic to exchange data
`and control signals, and (7) determining if another command
`list is ready for processing, if so, processing the new
`command list; otherwise, waiting for another fetch com(cid:173)
`mand.
`
`[0030]
`It is to be understood that both the foregoing
`general description and the following detailed description
`are exemplary and explanatory and are intended to provide
`further explanation of the invention as claimed.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0031] The accompanying drawings, which are included
`to provide further understanding of the invention and are
`incorporated in and constitute a part of this specification,
`illustrate embodiments of the invention and together with
`the description serve to explain the principles of the inven(cid:173)
`tion. In the drawings:
`[0032] FIG. 1 is a simplified, high level, functional block
`diagram of a multiprocessor computer architecture, includ(cid:173)
`ing reconfigurable processors.
`[0033] FIG. 2 is a representational diagram of a recon(cid:173)
`figurable processor used according to a preferred embodi(cid:173)
`ment of the present invention.
`[0034] FIG. 3 is a flow diagram of the method of halting
`the instruction processing of a reconfigurable processor.
`[0035] FIG. 4 is a flow diagram of the method of restart(cid:173)
`ing the execution of a reconfigurable processor after it has
`been halted.
`[0036] FIG. 5 is a representational diagram of a common
`memory organization according to a preferred embodiment
`of the present invention.
`[0037] FIG. 6 is a flow diagram of the method of pro(cid:173)
`cessing interface control processor instructions.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENTS
`
`[0038] Reference will now be made in detail to the pre(cid:173)
`ferred embodiment of the present invention, examples of
`which are illustrated in the accompanying drawings.
`[0039] The present invention integrates a computer's
`instruction processors, common memory, and reconfigurable
`processors, referred to in the preferred embodiment as
`Multi-Adaptive Processors ("MAPs"). Through the coordi(cid:173)
`nated effort of the various hardware and software compo(cid:173)
`nents of the interface with common memory, instruction
`processor, and MAPs the present invention provides for the
`interaction of instruction processors and reconfigurable pro(cid:173)
`cessors providing enhanced performance to a computer
`system.
`[0040] Referring to FIG. 1, an overview of the computer
`system incorporating MAPs 12 is shown. In the preferred
`embodiment of the present invention the instruction proces(cid:173)
`sor boards 10 and MAPs 12 reside on the trunk 20 and 22
`to the crossbar 16. The MAPs are connected via a multi(cid:173)
`plexer 14. The crossbar 16 is then connected to common
`memory 18 through memory trunk 26. Further embodiments
`of the present invention allow for placing the instruction
`processor 10 and/or the MAPs 12 in any other location,
`including, but not limited to, the memory trunk 26, crossbar
`switch 16, common memory inter-connect, or 1/0 bus 28.
`The instruction processors 100 and MAPs 12 may also be on
`the same or separate circuit boards, or even integrated on the
`same computer chip.
`[0041] Referring to FIG. 2, the reconfigurable MAP 12 is
`described in more specific detail. A MAP 12 is a standalone
`processing unit executing independently of instruction pro(cid:173)
`cessors during normal operation, as well as while loading
`and storing data. Each MAP 12 incorporates various hard(cid:173)
`ware components of the preferred embodiment of the
`
`Intel Exhibit 1046 - 9
`
`

`

`US 2003/0046530 Al
`
`Mar. 6, 2003
`
`3
`
`present invention, including for purposes of illustration only,
`an interface control processor, referred to as a command
`processor 42, command list memory 43, a direct memory
`access ("DMA") controller 44, a translation look-aside
`buffer ("TLB") 45, data registers 46, user data registers 48,
`flag registers 47, and on-board memory 50.
`
`[0042] Each MAP 12 also includes user-configured logic
`known as the user array 60. The user array of the present
`example contains two large Field Programmable Gate
`Arrays ("FPGAs"), referred to as user logic ("U _ Logic")
`62 1-62 2 . During compilation the sections of code deter(cid:173)
`mined to be suitable for optimization through a hardware
`implementation, such as discrete algorithmic sections, are
`segregated out of the program code. The algorithmic sec(cid:173)
`tions of code from the application program are converted to
`provide hardware logic circuits within the user logic 621 -
`622.
`
`[0043] Through the use of an interface control program,
`including a command list, known as the ComList, the
`command processor 42 processes commands, makes control
`decisions, and manages the transfer of data. A ComList is
`also generated during compilation of the user application. A
`ComList is used for controlling a MAP 12 or MAPs 12 1-12N
`(FIG. 1) during normal operation. The ComList contains a
`list of controlling instructions for the MAP's command
`processor 42 and is initially stored in common memory 18
`(FIG. 1) until it is fetched by the MAP's controller 40 into
`the ComList memory 43.
`
`[0044] Common memory addresses specified by com(cid:173)
`mands or generated by user applications are virtual
`addresses. Addresses are translated, virtual to physical, by
`TLB 45 entries with the DMA controller 44.
`
`[0045] Three sets of registers, data registers 46, user data
`registers 48, and flag registers 47, are also used to help
`coordinate the processing of interface instructions. Data
`registers 46 consist of thirty-two, 64-bit registers known as
`DRO through DR31. These registers are generally used to
`hold addresses for both common memory 18 (FIG. 1) and
`on-board memory 50; however, they can hold any needed
`data. By using data registers 46, scalar data can be sent to or
`received from the user array 60. Simple arithmetic opera(cid:173)
`tions, as well as bitwise logic, are supported on these
`registers. The data register contents can be tested for zero/
`non-zero; therefore, tests together with branches provide
`support for loops. For reference purposes, the bits of DRO
`are always 0/clear and the lower order bit of DRl is always
`1/set. DRO contains integer O and DRl contains integer 1.
`Neither register can be overwritten.
`
`[0046] User data registers 48 are thirty-two registers of 64
`bits known as UDRO through UDR31. User data can be sent
`directly from the ComList to the user array 60 without going
`through the data registers 46. A group of user data registers
`48 can be loaded from the ComList. When the last user data
`register of the group is loaded the user array 60 is inter(cid:173)
`rupted. The user array 60 must understand the protocol by
`which user data registers 48 need to be read.
`
`[0047] Flag registers 47 are thirty-two single-bit registers
`FRO through FR31. Commands can test and wait on the state
`of flag registers 47 before execution. Commands can change
`the state of flag registers 47, forcing them set and clear. In
`addition, there are logical instructions that allow combining
`
`flag states (AND, OR, XOR). Other commands allow testing
`and branching on their contents. For control purposes FRO
`is always 0/clear and FRl is always 1/set. Neither of these
`registers can be overwritten.
`
`[0048] The purpose of the flag registers 47 is to support
`coordination between different operations. For example, the
`user logic can coordinate loading and executing a new
`ComList by setting a specified flag register. A command can
`test the flag register and then branch to the end of the
`ComList, indicating that the next ComList may be loaded.
`As a further example, the user logic can coordinate move(cid:173)
`ment of data in or out of on-board memory 50 using flag
`registers and data registers. A DMA instruction can be held
`waiting for a flag register to be set. The user logic can write
`addresses and length into data registers, and then set a
`specified flag register, allowing the DMA instruction to
`execute the movement of data. When the DMA completes,
`another flag register can be set to indicate to the user logic
`that data movement is complete.
`[0049] An additional register visible in the MAP is the
`ComList pointer 49. This register is saved as part of the
`MAP status and indicates the index of the next command
`dispatched in the active ComList. When a MAP is halted the
`pointer indicates the next command to be executed if execu(cid:173)
`tion is restarted.
`[0050] On-board memory 50 consists of six banks of dual
`port 512Kx64-bit static random access memory ("RAM")
`providing a total of 24 MB of available memory. Both the
`DMA controller 44 and the command processor 42 commu(cid:173)
`nicate with the on-board memory 50 via the six control-side
`ports 52. The user array 60 communicates with the on-board
`memory 50 through the six user-side ports 54.
`[0051] The user array 60 portion of a MAP 12 is config(cid:173)
`ured as a hardware implementation of the algorithmic
`requirements of the user application. The user array 60 reads
`from, and writes to, on-board memory 50 through six
`user-side ports 54 and can interact with the control logic and
`the DMA controller 44.
`[0052] DMA operations within the interface of a MAP 12
`run more or less independently of processing within a user's
`logic. Coordination between these control streams is through
`the use of the flag registers 47, data registers 46 and user data
`registers 48.
`
`[0053] The DMA controller 44 is initiated by a DMA
`ComList instruction. The user array 60 writes an address and
`length into the data registers 46 and sets a flag register 47.
`The ComList awaits the user array's signal, setting of the
`flag register, and then executes a DMA instruction that
`references the data registers 46 that have been setup by the
`user array. The DMA controller 44 can then signal its
`completion by setting or clearing a flag register 47 that the
`user array is monitoring.
`[0054] The FPGAs, user logic 621 and 622 , of the user
`array 60 are configured during a fetch configuration com(cid:173)
`mand from data in common memory and not from an
`on-board programmable read only memory ("PROM"). User
`logic 621 and 622 communicate between themselves using
`three dedicated 64-bit data buses 66 without using any
`memory bandwidth. MAP modules can also be connected
`together via a chaining data bus 64. Through the use of
`chaining ports 64 a particular MAP can send partial results
`
`Intel Exhibit 1046 - 10
`
`

`

`US 2003/0046530 Al
`
`Mar. 6, 2003
`
`4
`
`to another MAP, or similarly, can receive such partial results
`from another MAP. The user array 60 provides all logic for
`the chaining ports 64. In a preferred embodiment, the
`chaining ports 64 use Double Data Rate ("DDR") protocol
`that allows each data line to carry two bits of information.
`This provides for two chain input ports and two chain output
`ports. In an alternate embodiment without a DDR protocol
`only single input and output ports would be available on
`each MAP. Chaining data flow is basically unidirectional,
`while the three onboard inter-connecting data buses 66 are
`bi-directional.
`
`[0055] Full system interrupt and semaphore capability is
`available between MAPs l2 0-l2N (FIG. 1) and/or instruc(cid:173)
`tion processors 1000 -lO0N (FIG. 1). MAPs can send inter(cid:173)
`rupts to processors and can also receive a limited set of
`commands directly
`from
`the processors. Commands
`received directly from other processors, which are not
`fetched and executed from a MAP's ComList, are called
`direct commands. Interrupts are sent by a MAP 12 to a given
`processor in a twelve bit serial stream along with twelve
`source synchronous clock pulses.
`
`[0056] FR31 provides a specific system interrupt mecha(cid:173)
`nism. When FR31 is set, MAP status is stored in its status
`and control area and an interrupt is generated. This status
`operation is conditional on an interrupt enable flag taken
`from a control word in the status and control area. In all
`cases, if FR31 sets, MAP execution attempts to halt. For this
`reason, internally 10 detected errors set FR31.
`
`[0057] A Stop switch is provided to add flexibility with
`handling interrupts sent to a MAP. During normal operation
`a MAP will run with Stop enabled. This mode allows
`execution to halt when the MAP is interrupted. However, for
`diagnostic and debugging purposes, a MAP can run in a Stop
`disabled mode, providing the MAP with the ability to
`continue execution of a program, even when it has been
`interrupted.
`
`[0058] Stopping/halting MAP execution can result from
`several sources. In all cases this requires setting or attempt(cid:173)
`ing to set FR31. When there is an attempt to set FR31 either
`directly, or indirectly, and Stop is enabled, execution of the
`MAP is halted.
`
`[0059] Referring to FIG. 3, the MAP can be interrupted in
`the following situations: (1) a direct Stop command is
`received from a processor, (2) FR31 is set from the ComList,
`(2) FR31 is set from the user logic, or ( 4) the command
`processor detects an error, such as an address exception,
`page or memory fault, or some other internal fault. Upon any
`halt or exception, with Stop enabled, the following occurs:
`MAP control logic comes to the most graceful halt it can,
`waiting for execution logic to go quiet step 200. The control
`state is saved in on-board memory addresses 0-31 step 210.
`Status is stored into the MAP's status and control area of
`common memory step 220. The MAP's TLB registers are
`stored into the TLB area step 230. If a direct stop command
`was received step 240 the MAP is stopped step 242, other(cid:173)
`wise if interrupts are enabled step 250, an interrupt is sent
`step 260 and the MAP unit halts step 270. If Stop is disabled
`step 250, the sequence above is executed except that in the
`last step the command that caused the error is abandoned and
`execution continues step 252.
`
`[0060] Referring to FIG. 4, to continue after execution
`halts the following steps are made: any necessary changes to
`the MAP's parameters in the status and control area are
`made, including the TLB entries step 300. Determine if
`processing is to continue from the interrupted command step
`310, the next command step 320, or from another command
`sequence step 330. If continuing execution of the instruction
`that caused the halt, reload all saved parameters step 312 and
`then Continue from Saved step 314. If the halt was not
`caused by an error or TLB miss (so that no instruction is
`partially executed) and the status and control parameters do
`not require changing or updating, then the direct command
`Continue can be sent to the MAP step 322. If a new sequence
`is to be started (for example, a new user or the current user
`with different commands), the proper command sequence
`must be stored in ComList step 332, then direct commands
`are made to load parameters step 334 and Start execution
`step 336.
`[0061] Referring to FIG. 5, MAPs are actively controlled
`through the interface control program. The components of
`the interface control program include a pair of ComList
`pages 72 1A-72rn located in the ComList area 70 of common
`memory 18, a status and control page 82i, located in the
`status and control area 80 in common memory 18, which
`holds status and control information and TLB data. Addi(cid:173)
`tional components, which coordinate to provide interface
`control, include the data registers 46, user data registers 48,
`flag registers 47, on-board memory 50, TLB 45 and user
`array 60.
`[0062] The MAPs interface is controlled by commands in
`the ComList or direct commands issued by an instruction
`processor or another MAP. During compilation an applica(cid:173)
`tion generates code for the standard instruction processor,
`ComLists for the MAP's interface, and hardware logic for
`the MAP's user array. ComLists are generated by the user
`application in order to coordinate data movement and con(cid:173)
`trol between the application code running in the instruction
`processor, and application logic running in the MAP's user
`array. Commands in the ComList correspond directly to
`instructions in a reduced instruction set computer ("RISC")
`processor. These instructions are a small set of simple
`instructions for moving data, testing conditions, and branch(cid:173)
`ing. FPGA control processors can be reconfigured to func(cid:173)
`tion with various instruction sets, depending upon imple(cid:173)
`mentation needs.
`[0063] Each MAP 12 (FIG. 2) is provided with two 4-KB
`ComList pages 72A and 72B from the ComList area 70 in
`common memory 18 providing a maximum useable space
`for each ComList of 512 words. Each ComList page is
`identified through a unique MAP ID number. For each MAP
`12 (FIG. 2), the address of the ComList pages 72 1A, 72rn
`through 72NA, 72NB are specified in conjunction with the ID
`number of the associated MAP 12. Starting at relative
`address OK in each MAP's ComList page 72A+B is the first
`command list, ComList072A, for that MAP. The second
`command list, ComListl 72B, is located at address 4K of that
`MAP's ComList area 72A+B· Two ComList pages 72A and
`72B are used to allow each MAP to work from one ComList
`page while the application software is loading the other
`ComList page. By swapping ComList pages the latencies of
`the processor and DMA are significantly reduced.
`[0064] The first word in each ComList is the ComList
`Length Command that defines the total number of command
`words in the buffer. For example, if there were only one
`additional command in the ComList, the first word, the
`
`Intel Exhibit 1046 - 11
`
`

`

`US 2003/0046530 Al
`
`Mar. 6, 2003
`
`5
`
`Length Command, would have the value 2. This indicates
`that the ComList contains the length command word plus
`one additional command word.
`
`[0070] According to the preferred embodiment of the
`present invention the data fields in the first 8 bytes of a
`ComList command are structured in the following manner:
`
`63
`bit
`size
`field
`width 2
`
`code
`4
`
`a
`
`b
`
`c
`
`d
`
`e
`
`aa bb
`5
`5
`
`cc dd ee
`5
`5
`5
`
`ff
`5
`
`00
`gg hh
`12 10
`
`[0065]

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket