|Publication number||US7827386 B2|
|Application number||US 10/611,377|
|Publication date||Nov 2, 2010|
|Filing date||Jun 30, 2003|
|Priority date||Jun 30, 2003|
|Also published as||CN1813250A, CN100452018C, EP1639496A2, US20040268088, WO2005006208A2, WO2005006208A3|
|Publication number||10611377, 611377, US 7827386 B2, US 7827386B2, US-B2-7827386, US7827386 B2, US7827386B2|
|Inventors||Louis A. Lippincott, Chin Hong Cheah|
|Original Assignee||Intel Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (11), Non-Patent Citations (6), Referenced by (2), Classifications (11), Legal Events (2)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The embodiments of the invention described below are related to a practical implementation of a data driven processor, i.e. one that gives good performance over a wider range of applications but at a relatively low cost.
The data driven architecture for a processor was developed to provide a better solution than the von Neumann architecture, to address the particular problem of processing a large amount of data using relatively few instructions. The von Neumann type processor is controlled by a clocked addressing scheme that can pull instructions and data from almost anywhere in memory. With little restriction on the type of instructions or the locations in memory that can be accessed, the von Neumann processor has the flexibility to run a wide range of different programs. In contrast, a data driven processor (“DDP”) is designed to be fed blocks of data that are typically consecutively stored in memory (or arrive as a stream) and are to be processed according to a program that has only a small number of instructions that operate on the data. These types of programs can be found in applications such as digital encoding and filtering of documents (used in reprographics copiers, for example) and of audio and video data. Examples of audio and video data applications include compression and decompression in portable, consumer information products such as digital cameras, mobile general purpose computers, and small media devices such as MP3 players. The DDP may be particularly suited for such battery-powered products due to its inherent power efficiency, as its power consumption quickly drops to essentially zero when there is no more input data for it to consume.
In most consumer products that have a DDP, a built-in host controller (“HC”) assists the DDP by orchestrating the feeding of instructions and incoming data to the individual processing elements of the DDP. For example, a primary, general purpose processor or embedded processor of a consumer product can be programmed to act as the HC. The HC instructs each of the processing elements of a DDP as to the task to be performed. The HC also controls the formation of data paths between the DDP and external memory, to receive the outgoing data, i.e., the results of consumption by the processing elements. The DDP can be equipped with a direct memory access (“DMA”) unit that delivers a stream of outgoing data, that originates from the individual processing elements of the DDP, to sequentially addressed memory locations that have been identified by the HC. A processing element of a typical DDP is not aware of the source of the incoming data; nor does it know where its result data is ultimately destined. That information is only known to the HC.
The embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” embodiment of the invention in this disclosure are not necessarily to the same embodiment, and they mean at least one.
According to an embodiment of the invention, one or more of the PUs 104 are provided with a control port from which the PU can send information to the memory access unit 108 about the location of data to be read from or written to in external memory 120. The data and control ports are not explicitly labeled in
A PU 104 is normally not aware of the particular location in external memory 120 from which data is read, or to which data is written. The PU 104 merely consumes data that comes in through its input port, based on instructions which have been programmed for it, and provides result data through its designated output port. The output port is part of the data path that has been created to deliver the result data to a particular location in external memory 120. A host controller (not shown) may be used to normally instruct or program a PU to read from and write data to one or more of its data ports which is logically connected, via a programmed data path, to the memory access unit 108. In the embodiment of
The memory access unit 108 of the processor may be a direct memory access (DMA) unit that can read and write the external memory 120 without intervention by a central processing unit (CPU) 124. The memory access unit 108 serves to translate higher level read and write commands, received from a control port of one or more of the PUs 104, the CPU 124, or an external host controller (not shown), into lower level memory access commands. The higher level read and write commands may be application specific, for example, specific to a video, document, or audio application. As an example, the PU 104 may generate a read request to the memory access unit 108 for accessing a given frame of image data, but that certain pixels are to be skipped. As another example, the read request may be for just a particular block of an entire image frame. Such high level requests may simply refer to pixel locations given by the Cartesian coordinates on a display, for example. In response, the memory access commands that are generated by the memory access unit 108 would refer to specific addresses in the external memory 120 at which the pixel values are stored. In some cases, memory interface circuitry 128 as shown in
The processor shown in
To further improve the performance of the processor with respect to external memory, an additional memory access unit 136 may be provided that, via a separate memory interface 138, will allow the PUs 104 to also use the storage available in an additional external memory 140. In such an embodiment, the data ports on a north side of PU1-PU3 are coupled to the first memory access unit 108, while the data ports on a south side of PU4-PU6 are coupled to the second memory access unit 136. To allow PU1-PU3 access to the external memory 140 (on the south side), the south side data ports of PU1-PU3 are coupled to the north side data ports of PU4-PU6.
The embodiment of the processor shown in
As mentioned above, the data ports can be configured to establish a logical connection between any two points in the processor. The configuration of the data port mesh in this embodiment is controlled by a host processor (not shown) that is connected by way of a computer peripheral bus (not shown), through host interface 139. A relatively low speed, global bus (not shown) connects the host interface 139 to all of the PUs 104, the memory access units 108, as well as other components of the processor. This global bus is used to configure or program the processor by loading instructions or microcode for the PUs 104, as well as reading status registers (not shown). In addition, each of the outlying PUs, namely PU1, PU5, PU4, and PU8, has a pair of data ports coupled to a respective expansion interface (EI) unit 141. The EI units 141 permit the data port communications mesh to be extended over multiple processors, and allows the connection of external peripheral devices as mentioned above such as video displays, hard disk drives and printers, to the processor.
The PUs 104 may be essentially identical units each having a number of sides, where each side has multiple, unidirectional, data ports of which at least one is an input port and at least one is an output port. In the embodiment of
Allowing the control registers 127 of the memory access unit 108 (see
In general, giving one or more PUs 104 control of what addressing information can be sent to external memory may yield greater programming freedom and flexibility for the processor as a whole. The provision of the control ports in one or more PUs allows more of the logical complexity of an algorithm to be contained in the PUs 104, and accordingly makes the CPU 124 (see
Still referring to
Turning now to
The content data to be consumed by the processor 304 may be stored in an external memory 316 (e.g. entire image frames) and can be accessed by the individual processing units of the processor 304 via the data port mesh connection described above. A host interface unit (not shown) in the processor 304 is to receive instructions from the host controller 310 that instruct the individual processing units with their tasks and create data paths from the processing units through a data channel to the external memory 316. The processor 304 is also enhanced with control ports in one or more of its processing units, used for writing data channel addressing information to a memory access unit of the processor 304. The system shown in
Referring now to
Turning now to
The eight possible grant signals in this instance refer to seven (out of a total of eight) output data ports of this PU, plus the input PE 428 of this PU 104 (see
The Initialize (Init) signal is passed through each data port that makes up a data path. Thus, if a data port is initialized at the source point of the data, the Init signal will propagate through the entire logical connection being the data path, and thereby initializes the whole data path. The Init signal is registered and passed through the data port as if it were data, to prevent propagation delays from accumulating through long logical connections in the processor. All of the data port interface signals may be handled in this manner, including the data and request signals, to prevent large combinatorial delays through the logical connections. Other implementations of the input data port 408 that allow a logical connection to be established between the package pins of an input data port and those of an output data port are also possible.
The output data port 436 shown in
The selected Request, Data, and Init information are placed in temporary storage in a FIFO 620. As in the case of the input data port 408 described in connection with
The combination of FIFO 510 and FIFO 620 can be illustrated as a 2-deep FIFO 720 as in
Turning now to
As the first PU operates upon the incoming data, it recognizes that this first set of instructions requires either reading from or writing to external memory. Accordingly, operation then continues with block 808 in which the first PU requests the memory access unit (via the control path) to fetch or expect data on a given memory channel. A logical data path between a second PU of the processor and the external memory (via the given memory channel) has been previously created to transfer additional data between the external memory and the second PU. According to an embodiment of the invention, the added control port structure described above is used for allowing the first PU to specify the location of the data to be transferred, through a previously programmed data path between the external memory and the second PU. This logical data path may be routed through a data port mesh arrangement that is independent of the individual programming elements within each processing unit.
As an example, the first PU may recognize an image processing motion vector in the first set of instructions. In that case, the additional data is to be written to the external memory, and includes a macro block that will be generated by the second PU based on the motion vector. Many other types of data driven applications, such as audio compression, may also benefit from this added capability.
The point-to-point connection between a transmitter port and a receiver port (external to a PU) may be built using a parallel bus having a command portion and a status portion. The command portion may have a 16-bit bus and is used to transmit configuration instructions destined to the DMA unit, for a particular data channel of the DMA unit. A status bus may be provided with three bits that are used to send the status of the data channel back to the command initiator. A request and grant signaling protocol may be used, in addition to the use of Initialize (Init) signals, similar to the data port links described above. The transmission of a complete command may thus take two clock cycles. Referring now to
The control word 1004 also includes REG_SEL bits, in this case four, for defining the configuration of the data channel. For example, the control port_data word 1008 that follows a REG_SEL value of 0000 may be used to signal the start of the memory transfer. Another command may refer to the (x,y) data location for the read or write (CH_ADDRX and CH_ADDRY). Various other types of commands have been defined in
Still referring to
Note that if the command initiator receives an idle timer expired condition, it can program an Init bit in a control port control register (not shown) to a predefined value, thereby clearing all commands that are in the control path as well as in the particular DMA channel associated with the control path. In addition, if an idle timer expired condition has been detected for a write data channel, the command initiator may program the Init bit in a data port control register to a predefined value, thereby clearing all the content data in the data port path as well as allowing the write data channel to be reconfigured by commands in the DMA unit's queue.
Referring now to
Turning now to
To summarize, various embodiments of a data driven processor that may be more effective for running a wider range of applications have been described. In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. For example, although the processors depicted in the figures have either six or eight constituent PUs, an architecture with as few as two PUs or more than eight PUs, connected to each other in a mesh arrangement, can also benefit from the addition of control ports to some or all of the PUs. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5388230||Aug 12, 1993||Feb 7, 1995||Hitachi, Ltd.||Parallel processor having multi-processing units either connected or bypassed in either series or parallel by the use of bus switching|
|US5410723 *||May 21, 1993||Apr 25, 1995||Deutsche Itt Industries Gmbh||Wavefront array processor for blocking the issuance of first handshake signal (req) by the presence of second handshake signal (ack) which indicates the readyness of the receiving cell|
|US5613146 *||Jun 7, 1995||Mar 18, 1997||Texas Instruments Incorporated||Reconfigurable SIMD/MIMD processor using switch matrix to allow access to a parameter memory by any of the plurality of processors|
|US5729711 *||May 31, 1994||Mar 17, 1998||Sharp Kabushiki Kaisha||Data driven information processing system using address translation table to keep coherent cache and main memories and permitting parallel readings and writings|
|US6073185 *||Aug 27, 1993||Jun 6, 2000||Teranex, Inc.||Parallel data processor|
|US6173388 *||Apr 9, 1998||Jan 9, 2001||Teranex Inc.||Directly accessing local memories of array processors for improved real-time corner turning processing|
|US6260082||Dec 23, 1999||Jul 10, 2001||Bops, Inc.||Methods and apparatus for providing data transfer control|
|US20020147768||Apr 4, 2001||Oct 10, 2002||Vavro David K.||Data driven digital signal processor|
|US20030144828 *||Mar 6, 2002||Jul 31, 2003||Lin Sharon Sheau-Pyng||Hub array system and method|
|US20040257372||Jun 19, 2003||Dec 23, 2004||Lippincott Louis A.||Communication ports in a data driven architecture|
|US20050018929||Jun 19, 2003||Jan 27, 2005||Lippincott Louis A.||Processor to processor communication in a data driven architecture|
|1||"MPEG-4 Toolkit Improves on Motion Vector Calculation", Paul Fernandez, et al., Linear Technology LTŪ 3430 60 Volts, Plus . . . , Planet Analog (pp. 1-8), Jan. 8, 2003.|
|2||"Sharp Develops the World's First Non-Von Neuman Data-Driven Parallel-Processing Media Processor", Sharp Corporation, Mar. 31, 1997 ( pp. 1-6).|
|3||Borkar, et al., "Supporting Systolic and Memory Communication in iWarp", Proceedings of the Annual International Symposium on Computer Architecture, Seattle, USA, May 28-31, 1990, Los Alamitos, IEEE Comp. Soc. Press, US, vol. Symp. 17, May 28, 1990, XP010019266, ISBN: 0-8186-2047-1 (pp. 70-81).|
|4||PCT International Search Report, dated Jun. 30, 2005 (International Application No. PCT/US2004/019613-International Filing Date Jun. 18, 2004) (12 pages).|
|5||PCT International Search Report, dated Jun. 30, 2005 (International Application No. PCT/US2004/019613—International Filing Date Jun. 18, 2004) (12 pages).|
|6||Taylor, et al., "Dynamic Hardware Plugins (DPH): Exploiting Reconfigurable Hardware for High-Perfomance Programmable Routers", Open Architectures and Network Programming Proceedings, 2001 IEEE Apr. 27-28, 2001, Piscataway, NJ, USA, XP010538879, ISBN: 0-7803-7064-3 (pp. 25-34).|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8078829 *||Dec 13, 2011||Itt Manufacturing Enterprises, Inc.||Scaleable array of micro-engines for waveform processing|
|US20090158007 *||Dec 12, 2007||Jun 18, 2009||Itt Manufacturing Enterprises, Inc.||Scaleable array of micro-engines for waveform processing|
|International Classification||G06F15/163, G06F15/78, G06F15/00, G06F15/76, G06F15/173, G06F15/17, G06F9/44, G06F15/80|
|Jan 9, 2004||AS||Assignment|
Owner name: INTEL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIPPINCOTT, LOUIS A.;CHEAH, CHIN HONG;REEL/FRAME:014865/0774;SIGNING DATES FROM 20031215 TO 20031216
Owner name: INTEL CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIPPINCOTT, LOUIS A.;CHEAH, CHIN HONG;SIGNING DATES FROM20031215 TO 20031216;REEL/FRAME:014865/0774
|Mar 20, 2014||FPAY||Fee payment|
Year of fee payment: 4