WO2003050759A1 - Appareil de traitement d'images et procede associe - Google Patents

Appareil de traitement d'images et procede associe Download PDF

Info

Publication number
WO2003050759A1
WO2003050759A1 PCT/JP2002/012965 JP0212965W WO03050759A1 WO 2003050759 A1 WO2003050759 A1 WO 2003050759A1 JP 0212965 W JP0212965 W JP 0212965W WO 03050759 A1 WO03050759 A1 WO 03050759A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
global
local
data
cache
Prior art date
Application number
PCT/JP2002/012965
Other languages
English (en)
French (fr)
Inventor
Yuji Yamaguchi
Original Assignee
Sony Corporation
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 Sony Corporation filed Critical Sony Corporation
Priority to EP02788789A priority Critical patent/EP1460581B1/en
Priority to DE60222175T priority patent/DE60222175T2/de
Priority to US10/467,542 priority patent/US7333115B2/en
Priority to KR1020037010543A priority patent/KR100857657B1/ko
Publication of WO2003050759A1 publication Critical patent/WO2003050759A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

Definitions

  • the present invention relates to an image processing apparatus in which a plurality of arithmetic processing apparatuses share processing data and perform parallel processing, and a method therefor.
  • the first is a parallel processing method based on region division
  • the second is a parallel processing method at a primitive level
  • the third is a parallel processing method at a pixel level.
  • the above classification is based on the granularity of parallel processing.
  • the granularity of area division parallel processing is the highest, and the granularity of pixel-level parallel processing is the finest.
  • the outline of each method is described below.
  • Parallel processing based on area division the screen is divided into a plurality of rectangular areas, and the processing is performed in parallel while allocating the areas in charge of each processing unit.
  • FIG. 1 conceptually shows the parallel processing at the primitive level.
  • PM0 to PMn-1 denote different primitives
  • PU0 to PUn-1 are processing units
  • MM0 to MMn- 1 indicates each of the memory modules.
  • FIG. 2 is a diagram conceptually showing primitive-level parallel processing based on a pixel-level parallel processing technique.
  • a pixel stamp (PixE1Stamp) PS consisting of pixels arranged in a 2 x 8 matrix is used. Pixels are generated for each rectangular area called.
  • a total of eight pixel stamps from the pixel stamp PS 0 to the pixel stamp PS 7 are generated. Up to 16 pixels included in these pixel stamps PS0 to PS7 are processed simultaneously.
  • This method is more efficient in parallel processing because it is finer than other methods.
  • each processing unit is effective.
  • this method has another problem that the wiring cost is high.
  • memory interleaving is performed using a plurality of memory modules in order to increase the memory bandwidth.
  • pixel-level parallel processing is adopted from the viewpoint of the granularity of parallel processing.
  • FIG. 3 is a diagram conceptually showing the configuration of the above-described image processing apparatus that adopts pixel-level parallel processing, processes a plurality of primitives at the same time, and distributes processing so that a processing unit and a memory module can be directly connected.
  • the image processing apparatus 1 comprises a stream data controller (Street Data Controller) 2 and n modules 3 connected in parallel to the SDC 2.
  • Each of the modules 3_0 to 3_n-1 having 0 to 3-n-1 includes a processing unit PU (0 to n-1) and a memory module MM (0 to n-1), respectively.
  • each of the memory modules MM0 to MMn-1 is driven one by one.
  • the SDC2 manages the exchange of data with the CPU and the external memory, and generates a parameter required for the rasterization in the processing units PU0 to PUn-1. These parameters are supplied to all processing units PU0 to PUn-1.
  • Each of the processing units PU0 to PUn-1 has a corresponding memory interleave determined in advance, and generates only the pixel in charge of each.
  • FIG. 4 is a diagram for explaining pixel generation in the image processing device of FIG.
  • the memory is interleaved in units of 4 ⁇ 4 rectangular areas.
  • Each rectangular area is called Lstamp (Lagerstamp).
  • the number of modules consisting of the processing unit PU and the memory module MM shown in Fig. 3 is assumed to be 4 ⁇ (3-0 to 3-3).
  • the module numbers correspond to the numbers assigned to the rectangular areas in FIG. Therefore, in the case of the triangle shown in Fig. 4, module 3-0 is in charge of two L sta mps, and modules 3-1 to 3-3 are each in charge of three L sta mps.
  • L st amp is further divided into four 2 ⁇ 2 rectangular areas (small stamp: S ma 1 1 st amp: S sta mp), and a small stamp S including an effective pixel is obtained.
  • texture read memory access is different from drawing memory access, so it is necessary to read from memory belonging to other modules.
  • FIGS. 5A and 5B conceptually show how a rectangular area on the screen is projected into the texture space.
  • the texture data is stored equally in the interleaved memory, like the data in the frame buffer and the Z buffer.
  • the 4 ⁇ 4 rectangular area is stored in the memory in the module corresponding to the assigned number.
  • the screen space S creen S p This shows that four adjacent 4X4 rectangular areas on ac e) are projected onto the texture space shown in Figure 5B.
  • the area described as “Region for Module 1 e 3-0” is a 4 ⁇ 4 area on the screen space assigned to module 3-0. 4 shows texture data mapped to a rectangular area.
  • Fig. 5A and Fig. 5B several other modules access the texture data stored in one module. Moreover, the access timings will differ from one another.
  • FIG. 6 is a diagram showing an example in which a crossbar required for memory access of a texture read system is realized in the most direct form in a system in which a plurality of processing units perform parallel processing.
  • a global access bus (global access buses) indicated by GAB corresponds to a crossbar for texture access.
  • the number of bits of data read from one memory module is M bits and the number of modules to be processed in parallel is n, the number of data lines required for texture access is MX n.
  • the crossbar in such a form is as follows to realize scalability. It has the disadvantages of processing unit interface, wiring costs, and wiring delays.
  • the processing units PU-0 to PUn-1 in each of the modules 3-0 to 3_n-1 are read from the n memory modules MM0 to MMn-1. You need an interface to receive the data and select the required data.
  • This interface depends on the number of integrated modules and must be redesigned each time the degree of parallelism changes.
  • each processing unit processes 4 pixels per cycle, and can access 4 textures simultaneously.
  • the wiring width W B of the global access bus GAB in the case of a system integrating n modules can be obtained as follows.
  • W P wiring pitch, N L is the number of layers used in wiring.
  • N L 2
  • the chip size is 1 O mm square
  • 20% of the chip size is used only for the horizontal wiring of the global access bus GAB.
  • these values assume the minimum required wiring in an ideal state, and in practice, the execution performance is not unless it is at least twice that.
  • interconnect delays become dominant. For example, for 1 GHz operation, the length that can be wired is said to be about 1 mm to 2 mm.
  • the end to end of the bus may exceed 10 mm.
  • pipeline registers are required for wiring, and read latency is increased.
  • An object of the present invention is to reduce duplicate access when multiple processing devices share processing data and perform parallel processing, eliminate the need for a crossbar with a large number of wirings, simplify design, reduce wiring costs and wiring delays.
  • An object of the present invention is to provide an image processing device and a method thereof that can be reduced.
  • a first aspect of the present invention is an image processing apparatus in which a plurality of modules perform processing in parallel by sharing processing data, including a global module and a plurality of local modules.
  • the global module has a global cache in which the plurality of oral modules are connected in parallel, and a processing cache required for the oral module is stored.
  • data corresponding to the request in the global cache is output to the mouth module that issued the request, and the plurality of mouth modules store data related to images.
  • a memory module that stores at least the processing data described above, and a charge determined in advance by a corresponding memory interface based on the operation parameters and the processing data stored in the local cache. If there is no processing data required for the processing in the local cache, a local cache fill request requesting the required data is output and sent in response to the request. Update the above local cache with the updated data.
  • a second aspect of the present invention is an image processing apparatus in which a plurality of modules share processing data and perform parallel processing, comprising: a plurality of clusters including a global module and a plurality of oral modules; The global module of each cluster has a global cache in which the plurality of local modules are connected in parallel and processing data required by the local module is stored.
  • the data corresponding to the request in the global cache is output to the local module that issued the request, and the plurality of local modules include a memory module in which data related to an image is stored; An oral cache for storing at least the processing data; A processing unit for performing processing in charge determined in advance by a corresponding memory interleaver based on processing parameters stored in the memory parameter and the processing data stored in the above-mentioned quiche. If the processed data is not in the local cache, a local cache fill request requesting the required data is output, and the local cache is updated with the data sent in response to the request.
  • the global modules of the cluster exchange data with each other.
  • the plurality of classes are arranged in a matrix, and the global modules of each cluster are connected in a ring.
  • the global module when the global module receives a local cache fill request from a local module, the global module checks an entry of the global cache, and if there is an entry, the request is made. Reads the read block data and sends the read data to the local module that sent the request.
  • the global module when the global module receives a global cache fill request, it outputs the requested block data to the global module, and the global module transmits
  • a local cache fill request is received from the module, the entry in the global cache is checked. If there is no entry, a global request is issued to the target local module holding the requested block data.
  • a cache fill request is sent, then the global cache is updated with the block data sent from the target local module, the block data is read, and the read data is sent to the local cache fill request. send It was sent to the local module.
  • the global module when the global module receives a global cache fill request, it outputs the requested block data to the global module.
  • a local cache fill request is received, the global cache entry is checked. If there is an entry, the requested block data is read and the read data is requested; If there is no entry, a global cache fill request is sent to the target low-power module holding the requested block data, and then sent from the local module in the evening. Blocks The global cache is updated at the same time, the block data is read out, and the read data is sent to the mouth module that sent the mouth cache fill request.
  • a controller for generating the calculation parameters, and the global module supplies the calculation parameters generated by the controller to the plurality of local modules.
  • the global module has a plurality of channel blocks provided for each roll module, and the plurality of channel blocks are associated with a corresponding oral module. Sends and receives local cache fill requests and data.
  • the plurality of local modules are arranged near the periphery of the global module with the global module as a center.
  • the plurality of local modules are arranged near the periphery of the global module and near the corresponding channel block with the global module as a center.
  • the global module has a plurality of channel blocks provided for each of the mouthpiece modules, and the plurality of channel blocks have a corresponding local module. It sends and receives local cache fill requests, global cache fill requests, and data.
  • the parallel processing is a pixel-level parallel processing.
  • the parallel processing is processing related to texture.
  • a third aspect of the present invention is an image processing method in which a plurality of modules share processing data and perform parallel processing, wherein a plurality of portal modules are connected in parallel to one global module,
  • the cache hierarchy has two layers: a global cache shared by multiple local modules, and a local cache that each local module has locally.
  • the local cache fill request is received from the oral module after processing data required by the local module is stored in the cache, the data corresponding to the request in the global cache is transmitted to the local module that issued the request.
  • the plurality of local modules output at least the processing data in the local cache, and the memory module corresponding to the calculation parameter and the processing data stored in the local cache in advance correspond to the processing parameters stored in the local cache.
  • the global module when the global module receives a local cache fill request from a local module, the global module checks the entry of the global cache, and if there is an entry, the requested block is deleted. The data is read, and the read data is sent to the oral module that sent the request.
  • the local module when the local module receives a global cache file request, the local module outputs the requested block data to the global module, and the global module transmits the block data from the local module to the local cache.
  • a fill request is received, one entry in the global cache is checked. If there is no entry, a global cache fill request is sent to the target local module that holds the requested block data, and then the target is received. Updates the global cache with the block data sent from the local module, reads the block data, and sends the read data to the local cache that sent the local cache fill request. It sends against Joule.
  • the local module is a global cache.
  • the global module receives a local cache fill request from a local module, it checks the global cache entry when the global module receives a local cache fill request from the local module. If there is an entry, the requested block data is read, and the read data is sent to the local module that sent the request. If there is no entry, the requested block data is sent.
  • a global cache fill request is sent to the first-time oral module that holds the data, and then the global cache is updated with the block data sent from the evening-get oral module, and the relevant block is updated. Read the data and read the data The data is sent to the local character Yu Le, which sent the local cache fill request.
  • a parameter for calculation is generated in a controller, and the generated parameter is transmitted to a local module via, for example, a global module. Broadcast.
  • each local module for example, the following processing is performed in the processing unit.
  • the processing unit when it receives the broadcasted parameter, it determines whether or not the triangle belongs to its own area, for example, an area interpolated in units of a rectangular area of 4 ⁇ 4 pixels. Is determined. As a result, if they belong, various data (Z, texture coordinates, color, etc.) are rasterized.
  • a mipmap (MipMap) level is calculated by L ⁇ D (LeveloFDetai1) calculation, and (u, v) address calculation for texture access is performed.
  • the processing unit of each local module performs First, the local cache entry is checked.
  • each processing unit sends a request for a local cache fill to the global module.
  • the requested block data is in the global cache, it is read from the corresponding global cache address and sent back to the local module that sent the request through the channel. On the other hand, if the requested block data is not in the group cache, a request for the global cache fill is sent to the local module holding the block.
  • the corresponding block data is read from the memory and sent to the global module through the global interface.
  • the global module fills the desired block cache with the desired global cache, and sends the data from the desired channel to the local module that sent the request.
  • the local cache is updated in the corresponding oral module, and the block data is read out by the processing unit.
  • Filtering processing such as 4-neighbor interpolation is performed using the decimal part obtained when calculating the address.
  • Pixel data that passes various tests in pixel-level processing is written to a memory module, for example, a frame buffer, a Z buffer, and a buffer in a built-in DRAM memory.
  • FIG. 1 is a diagram conceptually showing the parallel processing at the primitive level.
  • FIG. 2 is a diagram conceptually showing primitive-level parallel processing based on a pixel-level parallel processing technique.
  • FIG. 3 is a diagram conceptually showing a configuration of an image processing apparatus that adopts pixel-level parallel processing, simultaneously processes a plurality of primitives, and performs processing distribution that can directly connect a processing unit and a memory module.
  • FIG. 4 is a diagram for explaining pixel generation in the image processing device of FIG.
  • FIG. 5A and FIG. 5B are diagrams conceptually showing how a rectangular area on the screen is projected into the texture space.
  • Fig. 6 is a diagram showing an example in which a cross par required for texture read memory access is realized in the most direct form in a system in which a plurality of processing units perform parallel processing.
  • FIG. 7 is a block diagram showing an embodiment of an image processing apparatus according to the present invention.
  • FIG. 8 is a flowchart for explaining main processing of a stream data controller (SDC) according to the present embodiment. It is one.
  • SDC stream data controller
  • FIG. 9 is a flowchart for explaining the function of the global module according to the present embodiment.
  • FIG. 10 is a circuit diagram showing a specific configuration example of the global module of FIG.
  • FIG. 11 is a diagram for describing main processing of the processing unit in the local module according to the present embodiment.
  • FIG. 12 is a flowchart for explaining the operation of the local module during texture reading according to the present embodiment.
  • FIG. 13 is a block diagram illustrating a configuration example of the oral cache in the oral module according to the present embodiment.
  • FIG. 14 is a block diagram illustrating a configuration example of a lead-only cache of the mouth cache according to the present embodiment.
  • FIG. 15 is a block diagram showing a configuration example of the memory controller of the oral cache according to the present embodiment.
  • FIG. 168 to FIG. 16E are diagrams for explaining the addressing relating to the interleaving of the banks according to the present embodiment.
  • FIG. 178 to FIG. 17D are diagrams for explaining addressing related to interleaving of banks according to the present embodiment.
  • FIG. 18 is a block diagram showing another embodiment of the image processing apparatus according to the present invention. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 1 is a block diagram showing an embodiment of an image processing apparatus according to the present invention.
  • an image processing apparatus 10 according to the present embodiment has a stream data controller (SDC) 11, It has a global module 12 and local modules 13_0 to 13-3.
  • SDC stream data controller
  • the SDC 11 and the global module 12 exchange data, and a plurality of the global modules 12 are provided.
  • four oral modules 13 are provided.
  • _ 0 ⁇ 1 3—3 are connected in parallel, multiple ports
  • the processing data is shared by the single modules 13-0 to 13-3 and processed in parallel.
  • memory access to other oral modules is required, but instead of taking the form of a global access bus, it passes through one global module 12 that functions as a router. Perform access.
  • the global module 12 has a global cache
  • each of the oral modules 13-0 to 13-3 has an oral cache.
  • the image processing apparatus 10 has two levels of cache, for example, a global cache shared by four local modules 13_0 to 13-3 and a local cache locally owned by each local module.
  • a global cache shared by four local modules 13_0 to 13-3 and a local cache locally owned by each local module.
  • the SDC 11 is responsible for sending and receiving data to and from the CPU and external memory, and sending and receiving data to and from the global module 12. Performs processing such as generation of parameters required for rasterization in the processing unit.
  • Fig. 8 shows the processing procedure of SDC11.
  • Typical operations include arithmetic operations for coordinate transformation, such as deformation of an object and projection onto a screen, arithmetic operations for lighting (Lighing), and arithmetic operations for clipping (C1ipping).
  • the processing performed here corresponds to the execution of a so-called Vert ex Shader.
  • DDA DigitalDifferentialtAnalyzeyr
  • the DDA parameters such as the inclination of various data (Z, texture coordinates, color, etc.) required for the rasterization are calculated.
  • the calculated DDA parameters are broadcast to all the local modules 13-0 to 13-3 via the global module 12 (ST4).
  • the broadcasted parameters are passed to the local modules 13-0 to 13-3 via the global module 12 using a channel different from the cache fill described later. However, it does not affect the contents of the global cache.
  • the global module 12 has a router function and a global cache 121 shared by all local modules.
  • the global module 12 broadcasts the DDA parameters from the SDC 11 to all the parallel modules 13_0 to 13-3 connected in parallel. Also, when receiving a request for a local cache fill (CF) LCF from a certain oral module, the global module 12 checks the entry of the global cache file as shown in FIG. (ST11) If there is an entry (ST12), the requested block data is read (ST13), the read data is sent to the roll module that sent the request (ST14), and the entry is read.
  • CF local cache fill
  • a global cache fill request (G1oba1 Cache FilU GCF request) is sent to the target oral module holding the block data (ST15), and thereafter, Global with the sent block data
  • the cache is updated (ST16, ST17), the block data is read (ST13), and the read data is sent to the local module that sent the request for the oral cache fill LDF (ST14).
  • FIG. 10 is a circuit diagram showing a specific configuration example of the global module of FIG. 7.
  • the global module 12 mainly includes a channel block CBLK0 for transmitting and receiving data to and from the local module 13-0. , A channel block CBLK1 that mainly exchanges data with the local module 13-1, a channel block CBLK2 that mainly exchanges data with the oral module 13-2, and data mainly with the local module 13_3 And CBLK3, a channel block that exchanges data.
  • global caches 121-0 to 121-3 having a predetermined capacity are arranged in each of the channel blocks CBLK0 to CBLK3.
  • the channel block CBLK0 has a global cache 121-0, a local cache fill channel 1201-0, a global cache fill channel 1202-0, a selector 1203--0, and a tag circuit (Tag) 1204-1.
  • Arbiter 1205-0, and a Queue Register 1206-0 to 1210-0 for example, consisting of FI FO (Fistt-In First-Out).
  • the channel block CBLK1 has an oral cache fill channel 1201-1, a global cache fill channel 1202-1, a selector 1203-1, and a tag circuit (Tag). 1204-1, Arbiter 1205-1 and Queue registers 1206-1-1 to 1210-1.
  • Channel block CBLK 2 is in addition to the Global Local cache fill channel 1201-2, global cache fill channel 1202-2, selector 1203-2, tag circuit (Tag) 120 4-2, arbiter 1205-2, and queue It has registers 1206-2 to 1210-2.
  • the channel block CBLK 3 is a global cache 121-3, a local cache fill channel 1201-3, a global cache fill channel 1202-3, a selector 1203-3, and a tag circuit (Tag) 120 4-3. , Arbiter 1205-3, and Queue registers 1206_3 to 1210-3.
  • the channel lock channel 1 201-0 in the channel block CBLK 0 has a request queue register 12011-0 and a data queue register 12012-0. .
  • Request queue register 12011-0 inputs the request for local cache fill LCF transferred from local module 13-0, queue register 1206-10 and channel block CBLK 1 queue register 12 06-1, channel block Output to queue register 1206-2 of CBLK2 and queue register 1206-3 of channel block CBLK3.
  • the dequeue queue register 12012-0 receives the block data read from the global cache 121-0, 121-1, 121-2, or 121-3, and selected by the selector 1203-10. Output to module 13-0.
  • the global cache fill channel 1202-0 in the channel block CBLK 0 has a request queue register 12021-0 and a data queue register 12022-0.
  • the request queue register 12021-0 receives the global cache fill GCF request from the tag circuit 1204-10 and receives the request block data. Output to the local module 13-0 of the target that holds the overnight.
  • the overnight queue register 12 ⁇ ⁇ 22-0 receives the block data transferred from the local module 13-0 of the target that has received the Gr ⁇ no 1 cache fill request and supplies it to the global cache 121-0.
  • the selector 1203-0 in the channel block CBLK0 selects the block data read out from the global cache 121-0, 121-1, 121-2, or 121-3 according to a control system instruction (not shown), and selects the local key. Supplied to dash register channel 12012-0 for dash filter channel 1201-0. ⁇
  • the tag circuit 1204-0 in the channel block CBLK0 has a memory for storing the address tag of the block data stored in the global cache 121_0, and is stored in the queue registers 1206-0 to 1209-0.
  • the block block address required by the request selected by the arbiter 12 05-0 from the oral cache fill requests made by the oral cache modules 13-0 through 13-3 via the channel blocks CBLK0-CBLK3. Is compared with the address tag stored in the tag circuit 1204-0, and if there is a match, the data of the global cache 121-0 corresponding to the address block is read out, and each channel block CBLK0 is read.
  • CBLK3 selector 1203-0 to 1203-3 is compared with the address tag stored in the tag circuit 1204-0, and if there is a match, the data of the global cache 121-0 corresponding to the address block is read out, and each channel block CBLK0 is read.
  • the data read from the global cache 121-10 of the channel block CBLKO should be selected in the selector of the channel block that exchanges data with the mouth module that sent the local cache fill request. Is instructed by a control system (not shown).
  • the tag circuit 1204-0 stores the block data requested from one of the oral modules 13-0 to 12-3 in the global cache 121-0 as a result of the comparison with the address tag. If it turns out that there is no A flag indicating which address of the bulk cache 121-0 has the data set is set, the address is set in the queue register 1210-0, and a global cache fill request is transmitted to the global cache channel. 1202-0 is supplied to the request queue register 12021-0. In the global cache 121-10, when the requested data from the oral module 13-0 is sent to the global cash channel 1202-0, the key register 12022-0, the queue register 1210-0 is set.
  • the contents of the global cache 121-10 are updated with the relevant data, and the data requested by the local cache fill request is sent to the selectors 1203—0 to 1203-13 of each channel block CBLK0 to CBLK3.
  • the channel block to be supplied The arbiter 1205-0 of CBLK0 is each channel block held in the queue register 1206-0 to 1209_0. : 6 then 1 ⁇ 0 ⁇ . 8 Arbitration work is performed in response to the oral cache fill request by each local module 13_0 to 13-3 via LK3, and the request is selected according to the number of blocks that can be read simultaneously from the global cache 121-0. Output to the evening circuit 1204-0.
  • the queue block 1206-0 of the channel block CBLK0 is the oral cache fill request by the local module 13-0 via the channel 12 01-0, which is stored in the memory module of the oral module 13-0. Holds the request determined to be.
  • the queue register 1207-1 is the one of the oral cache fill requests by the local module 13-1 via the channel 12 01-1 of the channel block CBLK1, which is stored in the memory module of the oral module 13-0. Holds the request determined to be.
  • CUREGIS 1208—0 is channel block 12 of channel block CBLK2 Of the local cache fill requests made by the local module 13-2 via 01-12, the requests determined to be stored in the memory module of the oral module 13-0 are retained.
  • the queue register 1209_0 is a local cache fill request by the oral module 13-3 via the channel 12 01-3 of the channel block CBLK3, which is stored in the memory module of the oral module 13-0. Holds the request determined to be.
  • 201-1 has a request queue register 12011-1 and a data queue register 12012-1.
  • the request queue register 12011—1 inputs the request for the local cache fill LCF transferred from the local module 13-1, and stores the queue register 1207-1 and the queue register 12 07-0 of the channel block CBLK 0 and the channel block CBLK2. Output to queue register 1207-2 and queue register 1207-3 of channel block CBLK3.
  • the data queue register 12012-1 receives the block data read from the global cache 121-0, 121-1, 121-2, or 121-3 and selected by the selector 1203-11, and receives data from the local module 13-1. Output to —1.
  • the global cache fill channel 1202-1 in the channel block CBLK1 has a request queue register 12021-1 and a data queue register 12022-1.
  • the request queue register 12021-1 receives the request for the global cache fill GCF by the tag circuit 1204-1 and outputs it to the target local module 13_1 which holds the requested block data.
  • the data queue register 12022-1 is a global cache fibre-like After receiving the block de sent from the local module 13 _ 1 in the evening where the est was received, supply it to the Gro-Parkquish 121-1.
  • the selector 1203-1 in the channel block CBLK1 selects the block data read out from the global cache 121-0, 121-1, 121-2, or 121-3 according to an instruction from a control system (not shown). Supplied to the local queue fill channel register 1201-1 of the local cache fill channel 1201-1.
  • the tag circuit 1204-1 in the channel block CBLK1 has a memory for storing the address tag of the block data stored in the global cache 121-1, and the queue register 1206; -1209-Blocks held in 1-Blocks requested by the request selected by the arbiter 120 5-1 from local cache fill requests by the local modules 13-0-13-3 via the channel blocks CBLK-CBLK3
  • the address of the data is compared with the address tag stored in the tag circuit 1204-1, and if there is a match, the data of the global cache 121-1 corresponding to the address tag is read out, and each channel block 80-1 is read.
  • ⁇ Ji] 31 ⁇ 1 ⁇ 3 is supplied to 1203—0 -1203_3. .
  • the data read from the global cache 121-1 of the channel block CBLK1 is selected by the selector of the channel block that exchanges data with the local module that has sent the local cache fill request. In this way, it is instructed by a control system not shown.
  • the tag circuit 1204-1 does not store the block data requested by any of the local modules 13-0 to 12-3 in the glow cache 121-1.
  • a flag is set to indicate which address of the global cache 121-1 has data, the address is set in the queue register 1210-1, and the global address is set.
  • the global cache fill request is supplied to the request queue register 12021-1 of the global cache channel 1202-1.
  • the global cache 121-1 when the requested data is sent from the local module 13-0 to the global cash channel 1202-1 for the cash register 12022-1, it is set to the queue register 1210-1.
  • the contents of the global cache 121-1 are updated at the same time, and the channel blocks 80 to 81 1 ⁇ 3 are selected 1203-0 to: 1203 13 CBLK1 arbiter 1205-1 supplies the data requested by the local cache fill request to the CBLK1 via the channel blocks CBLK0 to CBLK3 held in the queue registers 1206-1 to 1209-1.
  • Arbitration work is performed after receiving a local cache file request from each mouth module 13-0 to 13-3, and read out simultaneously from the global cache 121-1 The request is selected according to the number of possible block data and output to the evening circuit 1204-1.
  • the queue register 1206_1 of the channel block CBLK1 is used to store the memory module of the local module 13-1 among the local cache fill requests by the local module 13-0 via the channel 1201-10 of the channel block CBLK0. Keep requests that are determined to be stored.
  • the queue register 1207 _ 1 is composed of the oral cache fill request by the local module 13-1 via the channel 12 01-1 of the channel block CBLK 1 and stored in the local module 13-1 memory module. Holds the determined request.
  • the queue register 1208_1 is stored in the memory module of the local module 13-1 among the local cache fill requests by the local module 13-2 via the channel block 121-2 of the channel block CBLK2. Holds the request that is determined to be
  • the queue register 1209-1 was determined to be stored in the local module 13-1 memory module among the local cache fill requests by the local module 13-3 via channel 12 01-3 of channel block CBLK3 Hold the request.
  • the local cache fill channel 1201-2 in the channel block CBLK2 has a request queue register 12011-2 and a data queue register 12012-2.
  • the request queue register 12011-2 receives the request for the local cache fill LCF transferred from the local module 13-2, and the queue register 1208-2 and the channel block CBLK0 queue register 12 08-0, the channel block Output to queue register 1208_1 of CBLK1 and queue register 1208-3 of channel block CBLK3.
  • the data queue register 12012—2 receives the block data read from the global cache 121-0, 121—1, 121-2, or 121_3 and selected by the selector 1203-12, and receives data from the local module 13—. Output to 2.
  • the global cache fill channel 1202-2 in the channel block CBLK2 has a request queue register 12021-2 and a data queue register 12022-2.
  • the request queue register 12021_2 receives the request for the global cache fill GCF by the tag circuit 1204-2 and outputs the request to the local module 13-2 for holding the requested block data.
  • the selector 1203-2 in the channel block CBLK 2 selects the block data read from the global cache 121-0, 121-1, 121-2, or 121-3 according to the instruction of a control system (not shown), and selects the local data. Supplied to the cache queue channel 12012-2 of the cache fill channel 1201-12.
  • the tag circuit 1204-2 in the channel block CBLK2 has a memory for storing the address tag of the block data stored in the global cache 121_2, and is held in the queue registers 1206-1 to 12092-2.
  • the address of the block data required by the request selected by the arbiter 1205-2 from the local cache fill requests by the respective mouth modules 13-0 to 13-3 via the channel blocks CBLK to CBLK3 and the tag circuit.
  • the address tags stored in 1204-2 are compared, and if there is a match, the global cache 121_2 corresponding to the address tag is read out and the selector of each channel block CBLK0 to CBLK3 is read out. 1203-0 to 1203-3.
  • the data read from the global cache 121-2 of the channel block CBLK2 is selected by the selector of the channel block that exchanges data with the local module that sent the local cache fill request. Is instructed by a control system (not shown).
  • the tag circuit 1204-2 does not store the block data requested by any of the local modules 13-0 to 12-3 in the global cache 121-2. If it is found, a flag indicating which address of the global cache 121-2 has data is set, the address is set in the queue register 1210-2, and a global cache fill request is sent globally. It is supplied to the request queue register 12021-2 of the cache channel 1202-2. Global Key In the cache 121-2, when the requested data is sent from the local module 13-0 to the global cash channel 12022-2, the global cache channel 1202-2 receives the queue register 1210-2. The contents of the global cache 121-2 are updated with the data based on the address set in the channel block 080.
  • the arbiter 1205-2 of the channel block CBLK 2 supplies the data requested by the local cache fill request to the selector 1203—0 to 1203—3 of 8 ⁇ 1 ⁇ 3.
  • Each channel block 080 that is held. 8 Local cache file request arbitration is performed by each local module 13-0 to 13-3 via LK3, and a request is selected according to the number of block data that can be read simultaneously from the global cache 121-2. , Evening circuit 1 Output to 2044-2.
  • the queue register 1206-2 of the channel block CBLK2 stores the memory of the local module 13-2 among the oral cache fill requests by the oral module 13-0 via the channel 1201-0 of the channel block CBLK0. Holds the request determined to be stored in the module.
  • the queue register 1207-1 is stored in the memory module of the oral module 13-2 of the oral cache fill request by the oral module 13-1 via the channel block 1201-1 of the channel block CBLK 1. Holds the request that is determined to be
  • the queue register 1208-2 contains the oral cache fill request by the oral module 13-2 via channel 12 01-2 of the channel block CBLK2, which is stored in the memory module of the local module 13-2. Holds the request determined to be.
  • the queue register 1209-2 determines that the local cache 13-3's oral cache fill request via channel 12 01-3 of the channel block CBLK3 is stored in the memory module of the local module 13-2. Holds the requested request.
  • Channel 1 201_3 for local cache fill in channel block CBLK 3 has a queue register for requests 12011-3 and a queue for data 12012-3.
  • the request queue register 12011-3 receives the request for the local cache fill LCF transferred from the local controller ⁇ / module 13-3, and the queue register 1209-3 and the channel block CBLK0 queue register 12 09-0, the channel block Output to CBLK1 queue register 1209-1 and channel block CBLK 2 queue register 1209-2.
  • the data queue register 12012—3 receives the block data read from the global cache 121—0, 121—1, 121—2, or 121—3 and selected by the selector 1203—13, and Output to module 13-3.
  • the global cache fill channel 1202-3 in the channel block CBLK3 has a request queue register 12021-3 and a data queue register 12022-3.
  • the request queue register 12021-3 receives the global cache fill GCF request from the tag circuit 1204-3, and outputs it to the evening module 13-3, which holds the requested block data overnight. I do.
  • the data queue register 12022-3 receives the block data transmitted from the local module 13-3 of the evening that received the global cache fill request and supplies it to the global cache 121-3.
  • the selector 1203-3 in the channel block CBLK 3 is The block data read from the cache 121—0, 121—1, 121—2, or 121—3 is selected according to an instruction from a control system (not shown), and the local cache fill channel 1203 data queue register 12012 12012 — Supplied to 3.
  • the tag circuit 1204_3 in the channel block CBLK 3 has a memory for storing the address tag of the block data stored in the global / cache 121-3 and is stored in the queue registers 1206-3 to 1209-3.
  • the address and the address tag stored in the tag circuit 1204-3 are compared. If there is a match, the data of the global cache 121-2 corresponding to the address tag is read out, and each channel block CBLK0 to CBLK3 is read. Are supplied to the selectors 1203-0 to 1203-3.
  • the data read from the global cache 121-3 of the channel block CBLK 3 is sent to the selector of the channel block that exchanges data with the local module that has sent the local cache fill request. It is instructed by a control system (not shown) to make a selection.
  • the block data requested by any of the local modules 13-0 to 12-3 is not stored in the global cache 121-3 as a result of comparison with the address tag. If it is found, a flag indicating which address of the global cache 121-3 has data is set, the address is set in the queue register 1210-3, and the global cache fill request is global cached. To the request queue 1202-3 for request channel 1202-3. For global cache 121-3, global cache channel 1202-3 When the requested data is sent from the oral module 13-0 to the e-Register 1202-3, the contents of the global cache 121-3 are stored in the corresponding data based on the address set in the Currencies module 1210-3.
  • the channel block 1206_3 of the channel block CBLK3 is used for the local module 13-3 of the oral cache fill requests by the oral module 13-0 via the channel 1201_0 of the channel block CBLK0.
  • the request determined to be stored in the memory module is held.
  • the queue register 1203-3 determines that the local cache fill request by the local module 13-1 through the channel block 1201-1 of the channel block CBLK 1 is stored in the memory module of the local module 13-3. Holds the requested request.
  • the queue register 1208_3 indicates that the local cache 13-2 of the local module 13-2 via the channel 12 01-2 of the channel block CBLK 2 stores the oral cache fill request stored in the memory module of the local module 13-3. Holds the determined request.
  • the queue register 1209_3 is used for channel 12 of channel block CBLK 3. Of the local cache fill requests made by the oral module 13-3 via 01-13, the requests determined to be stored in the memory module of the local module 13-3 are retained.
  • FIG. 10 is an example, and various modes are possible, such as providing one cache and accessing from each channel block, instead of the configuration in which the global cache 121 is arranged for each channel block.
  • the oral module 13-0 controls the interface with the processing unit 131-0, for example, the memory module 132-0 composed of DRAM, the module-specific local cache 133-0, and the channel block CBLK0 of the global module 12. It has 134-0 global interface (Global Access Interface: GAI F).
  • the local module 13-1 is an interface with the processing unit 131-1, for example, a memory module 132-1 composed of DRARM, a module-specific local cache 133-1, and a channel block CB LK1 of the global module 12. It has a global interface (GA IF) 134-1 that controls
  • the local module 13-2 has an interface with the processing unit 131-2, for example, a memory module 132-2 comprising a DRAM, a module-specific oral cache 133-2, and a channel block CBLK 2 of the global module 12. It has a global interface (GA IF) 134-2.
  • a memory module 132-2 comprising a DRAM, a module-specific oral cache 133-2, and a channel block CBLK 2 of the global module 12. It has a global interface (GA IF) 134-2.
  • the local module 13-3 is connected to a processing unit 131-3, for example, a memory module 132-3 composed of DRAM, a module specific local cache 133-3, and a channel block CBLK3 of the global module 12. It has a global interface (GA IF) 134-3 that controls the interface.
  • the memory module 132-0-132-3 is interleaved in units of a predetermined size, for example, a rectangular area of 4 ⁇ 4, and the memory module 132-0 and the processing unit 131-- 0, the memory module 132-1 and the processing unit 131-1, the memory module 132-2 and the processing unit 131-2, and the memory module 132_3 and the processing unit 13 1-13 correspond to one-to-one. Memory access to other local modules does not occur in the drawing system
  • each of the local modules 13_0 to 13-3 needs memory access to other local modules for the texture read system.
  • the local module 13_0 to 13-3 accesses through the global module 12.
  • the processing units 131-0 to 131-13 of the local modules 1.3-0 to 13-3 perform the following processing, respectively.
  • Fig. 11 shows the processing procedure of processing units 131-0 to 131-3.
  • the processing unit 131 Upon receiving the broadcasted parameter data (ST21), the processing unit 131 determines whether or not the triangle is an area in charge of itself (ST22). Perform rasterization (ST 23).
  • the generation unit is 2 x 2 pixels per cycle per local module.
  • the processing units 131—0 to 131—3 are stored in the global interface 134—0 to 134—13.
  • a request for an oral cash fill is sent to the global module 12 through (ST34).
  • the global module 12 returns the requested block to the local module that sent the request, but if not, as described above (described in relation to FIG. 9), the local module that holds the block Send a request for global quill fill to After that, the block data is filled into the global cache, and the data is sent to the local module that sent the request.
  • the corresponding local module updates the local cache (ST35, ST36), and the processing unit reads out the block data (ST33). .
  • the processing units 133-0 to 133-3 use the read texture data and the decimal part obtained at the time of calculating the (u, v) address to perform 4-neighbor interpolation or the like. Perform filtering processing.
  • a pixel-by-pixel operation is performed using the texture data after filtering and various data after rasterization.
  • the processing performed here corresponds to so-called PixelShad e r, such as pixel-level lighting (Per—Pixel1Lightng).
  • PixelShad e r such as pixel-level lighting (Per—Pixel1Lightng).
  • the following processing is included.
  • alpha test that is, alpha test, scissoring, Z-buffer test, stencil test, alpha blending, logical operation, and dithering.
  • the pixel data that passed various tests in the pixel level processing is written to the memory modules 132-0 to 132-3, for example, the frame buffer and the Z buffer on the built-in DRAM memory (ST28: Memory).
  • the local caches 133-0 to 133_3 of each local module 13-0 to 13-3 are used for processing and processing of drawing data and texture data required for processing of the processing units 131-0 to 131-3. It exchanges data with the units 131-0 to 131-3, and exchanges data with the memory modules 132-0 to 132-3 (writing and reading).
  • FIG. 13 is a block diagram showing a configuration example of the local caches 133-0 to 133-3 of the local modules 13-0 to 13-3.
  • the local cache 133 includes a read-only cache 1331, a read / write cache 1332, a leader buffer (Reor de r Buffer) 1333, and a memory controller 1334.
  • the read only cache 1331 is used for storing texture data
  • the read / write cache 1332 is used for storing drawing data.
  • FIG. 14 is a diagram showing a configuration example of the read-only cache 1331 used for the texture system.
  • each of the caches 3110 to 31 ⁇ 3 requires four data per pixel in order to perform filtering processing such as 4-neighbor interpolation, so each of the four memory banks BK0 ⁇ : BK 3 is provided.
  • the Rioda buffer 1333 is a so-called queuing buffer, and when there is no data required for the local cache, the order of the data sent by the global module 12 when the request for the oral cache fill is issued is different. In this case, the order of data is adjusted so that this order is observed and returned to the processing units 131-0 to 131-3 in the order requested.
  • FIG. 15 is a block diagram showing a configuration example of a texture system of the memory controller 1334.
  • the memory controller 1334 arbitrates the cache controllers 13340 to 13343 corresponding to the four caches CSH0 to CSH3 and the local cache fill request output from each of the cache controllers 13340 to 13343, and arbitrates the global interface 134 ⁇ —The arbiter 13344 that outputs to ⁇ 0 to 3 ⁇ and the memory interface that controls data transfer in response to the global cache fill request input via the global interface 134 ⁇ 1 0 to 3 ⁇ Including 13345.
  • the cache controllers 13340 to 13343 perform the necessary 4-neighbor interpolation for the data corresponding to the four pixels PX0 to PX3.
  • Check the address conflict after receiving the two-dimensional address C ⁇ uv 00 ⁇ (: Ouv03, C ⁇ uvl 0 ⁇ COuv 13, COu v 20 ⁇ COu v 23, COu v 30 ⁇ (: ⁇ uv 33)
  • a tag circuit TAG10 for checking the address distributed by the conflict checker CC10 and determining whether or not the data indicated by the address exists in the read-only cache 1331.
  • the queue register QR10 for checking the address distributed by the conflict checker CC10 and determining whether or not the data indicated by the address exists in the read-only cache 1331.
  • the tag circuit TAG10 has four tag memories BK10 to BK13 corresponding to addressing related to bank interleaving, which will be described later, and is stored in a read-only cache 1331.
  • the address distributed by the conflict checker CC10 that holds the address tag of the block block is compared with the above address tag, and a flag indicating whether or not the address matches is set in the queue register QR10, and the address is matched. If not, the address is sent to the arbiter 13344.
  • the arbiter 13344 performs an arbitration operation in response to the addresses transmitted from the cache controllers 13340 to 13343, selects an address according to the number of requests that can be transmitted simultaneously via the global interface (GAIF) 134, and Output to global interface (GA IF) 134 as one cache fill request.
  • GAIF global interface
  • GA IF Output to global interface
  • the global cache 12 When the global cache 12 receives a request from the global cache 12 in response to a local cache fill request sent via the global interface (GAIF) 134, it is set in the Rio buffer 1333.
  • GIF global interface
  • the cache controllers 13340 to 13343 check the flag at the top of the queue register QRL0, and if the flag indicating that they match is set based on the address at the head of the queue register QRL0.
  • the data in the do-only cache 1331 is read and given to the processing unit 131.
  • the match flag is not set, the corresponding
  • the read only cache 1331 is updated with the block data based on the address of the queue register QRL0, and is output to the processing unit 131.
  • FIGS. 16A to 16E and FIGS. 17A to 17D (Sentan Dog: Stanford University). rsity "Prefet ch in ng ina Texture Cache Arch itecture").
  • the two-dimensional image data is, for example, a 4 ⁇ 4 matrix, and the vertical direction in the figure is Vsuper and the horizontal direction is Usuper.
  • one block is defined as a matrix of superblocks having a cache size of 8 ⁇ 8, and Vblock in the vertical direction in the figure and Ubock in the horizontal direction.
  • the blocks in the vicinity of 4 are assigned numbers 0 to 3 to this super block.
  • one of the super locks is a matrix of 4 ⁇ 4 blocks, and the vertical direction in the figure is Voffset and the horizontal direction is Uoffset.
  • the blocks near 4 are numbered 0 to 3 to this block.
  • Vsuper, Vblock, and Voffset in the V direction as shown in FIG. 17A and Usuper, Ublock, and Uof fset in the U direction are combined, and as shown in FIG. Then, sort them so that they are Vsuper field, Usuper field, Vblock field, Ublock field, Voffset field, and Uoffset field.
  • the area corresponding to the 0 field to the Ublock field as shown in FIG. 17C is combined with the base address field to form a tag as shown in FIG. 17D.
  • An address consisting of a field, a block index field, and a block offset field is generated.
  • DRAM One of the characteristics of DRAM is that the performance decreases during random access, but continuous access to data belonging to the same row (ROW) is fast. In the global cache, it is preferable to perform the continuous access in terms of performance in terms of reading data from the DRAM.
  • the size of the global cache cache book can be set to a block size of one row of the DRAM macro (8292 bit).
  • the block size of the local cache As the block size of the local cache, a value close to the size of the rectangular area of the memory interleave is appropriate.
  • the block size is 4 ⁇ 4 pixels, that is, 512 bits.
  • the global module 12 and the local modules 13_0 to 13-3 are arranged around the global module 12 as shown in FIG. It is desirable to place _3 near its periphery.
  • a local module 13-0 that exchanges data with the channel block CBLK0 is arranged near the channel block CBLK0 of the global module 12, and near the channel block CBLK1 of the global module 12.
  • a local module 13-1 that exchanges data with the channel block CBLK1 is arranged, and a local module 13-2 that exchanges data with the channel block CBLK2 is arranged near the channel block CBLK2 of the global module 12, and a global module 12 is arranged.
  • An oral module 13-3 for exchanging data with the channel block C BLK3 is placed near the channel block CBLK 3 of this example.
  • the distance between each corresponding channel block and the local module can be kept uniform, the wiring areas can be arranged neatly, and the average wiring length can be shortened. Therefore, wiring delay and wiring cost can be reduced, and the processing speed can be improved.
  • each of 3D coordinate, normal vector, and texture coordinate When the vertex data is input, an operation is performed on the vertex data.
  • DDA parameters such as the inclination of various data (Z, texture coordinates, color, etc.) required for rasterization (Rastelizaton) are calculated.
  • the calculated DDA parameters are broadcast to all the local modules 13-0 to 13-3 via the global module 12.
  • the broadcasted parameters are passed to the local modules 13-0 to 13-3 via the global module 12 using a channel different from the cache fill described later. However, this does not affect the contents of global cash.
  • the triangle upon receiving the broadcasted parameter, the triangle belongs to the area in which it is responsible, for example, an area interleaved in units of a rectangular area of 4 ⁇ 4 pixels. Is determined. As a result, if so, various data (Z, texture coordinates, colors, etc.) are rasterized.
  • the MipMap (MipMap) level is calculated by L ⁇ D (LeveLofDetai1) calculation, and the (u, v) address calculation for texture access is performed.
  • the entries of the local cache 133-0 to L33-3 are first checked at the time of texture reading.
  • the processing units 131-0 to 131-3 pass through the global interface 134-0 to 134-3.
  • a local cache fill request is sent to the global module 12.
  • the evening circuit 1204 of each channel block C 5 1 ⁇ 0 to ⁇ 8 1 13— 0 ⁇ :
  • the request is read out from any of the corresponding global caches 121-0 to 121-3, and the request is transmitted through channel 1201-0 to 1201-3. Returned to the sending local module.
  • the requested block data is not in one of the global caches 121—0 to 121-3, it is determined by the tag circuits 1204—0—1204—3 of each channel block CBLK0—CBLK3 A global cache fill request is sent from any of the desired channels 1202-0 to 1202-3 to the local module holding the block.
  • the corresponding block data is read from the memory and sent to the global module 12 through the global interface.
  • the block data is filled in a desired gronor cache, and data is transmitted from the desired channel to the local module which has transmitted the request.
  • the corresponding local module updates the local cache and reads the block data by the processing unit.
  • the read texture Data and (u, v) address are subjected to filtering such as 4-neighbor interpolation using the decimal part obtained at the time of calculation.
  • a pixel-by-pixel operation is performed using the texture data after filtering and various data after rasterization.
  • the pixel data that passed the various tests in the pixel-level processing are written to the memory modules 13 2-0 to 13 2-3, for example, the frame buffer and the Z buffer on the built-in DRAM memory.
  • the SDC 11 and the global module 12 exchange data, and a plurality of (one in the present embodiment) one global module 12.
  • Local modules 1 3—0 to 1 3—3 are connected in parallel, and multiple oral modules 1 3 _ 0 to 1 3—3 share processing data, process in parallel, and global modules 1 2 has a global cache, and each mouth module 13 3-0 to 13 3-3 has a mouth cache respectively.
  • As a cache hierarchy four local modules 1 3-0 to 1
  • the three layers of global cache shared by 3 ⁇ 3 and the local cache of each local module have locality, and when multiple processing devices share processing data and perform parallel processing, duplication occurs. Reduce access This eliminates the need for a crossbar with many wires. As a result, there is an advantage that an image processing apparatus that can be easily designed and that can reduce wiring cost and wiring delay can be realized.
  • the global module 12 and the mouth modules 13-0 to 13-3 are arranged as shown in FIG.
  • the distance between each corresponding channel block and the local module can be kept uniform, and the wiring area Can be arranged neatly, and the average wire length can be shortened. Therefore, there is an advantage that the wiring delay and the wiring cost can be reduced, and the processing speed can be improved.
  • the case where the texture data is stored in the built-in DRAM is described as an example. However, as another case, only the color data and z data are placed in the built-in DRAM, and the texture data is stored. Can be stored in external memory. In this case, when a miss occurs in the global cache, a cache fill request is issued to the external DRAM.
  • the configuration shown in FIG. 7 ie, the image processing in which a plurality of (four in the present embodiment) local modules 13_0 to 13-3 are connected in parallel to one global module 12
  • the configuration in FIG. 7 is regarded as one cluster CLST.
  • four classes CLST0 to CLST4 are arranged in a matrix. It is also possible to arrange such that data is transferred between the global modules 12_0 to 12-3 of each class (1 ⁇ 3c0 to (3c4).
  • the global module 12-0 of the cluster CLST0 is connected to the global module 12-1 of the cluster CLST1, and the global module 12-1 of the cluster CLST 1 and the global module 12-3 of the class CLST3 are connected.
  • the global modules 12-0-12-3 of the plurality of classes CLST0 to CLST4 are connected in a ring shape.
  • the image processing apparatus and method of the present invention can reduce redundant access when a plurality of processing apparatuses share processing data and perform parallel processing, eliminating the need for a crossbar having a large number of wirings.
  • the present invention can be applied to, for example, an image processing system in which a plurality of arithmetic devices share processing data and perform parallel processing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

明 糸田 書 画像処理装置およびその方法 技術分野
本発明は、 複数の演算処理装置が処理データを共有して並列処理を行う画像処 理装置およびその方法に関するものである。 背景技術
近年、 3次元コンビュ一タグラフィックス (3D Compu t e r Gr a p i c s) をハードウェアで高速に実行するグラフィックス LS Iの普及は著 しく、 特にゲーム機やパーソナルコンピュータ (PC) では、 このグラフィック ス LS Iを標準で搭載しているものが多い。
また、 グラフィックス LS Iにおける技術的進歩は早く、 「D i r e c t X」 で採用された 「Ve r t e x Shade r」 や 「P i xe l Shade rj に代表される機能面での拡張が続けられているとともに、 CPUを上回るペース で性能が向上している。
グラフィックス L S Iの性能を向上させるには、 L S Iの動作周波数を上げる だけではなく、 並列処理の手法を利用することが有効である。 並列処理の手法を 大別すると以下のようになる。
第 1は領域分割による並列処理法であり、 第 2はプリミティブレベルでの並列 処理法であり、 第 3はピクセルレベルでの並列処理法である。
上記分類は並列処理の粒度に基づいており、 領域分割並列処理の粒度が最もあ らく、 ピクセル'レベル並列処理の粒度が最も細かい。 それぞれの手法の概要を 以下に述べる。
領一域分割による—並列処理 画面を複数の矩形領域に分割し、 複数の処理ュニットそれぞれが担当する領域 を割り当てながら並列処理する手法である。
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ (たとえば三角形) を与えて並列動 作させる手法である。
プリミティブレベルでの並列ィ匕処理について概念的に示したものを図 1に示す 図 1において、 PM0〜PMn— 1がそれぞれ異なるプリミティブを示し、 P U0〜PUn— 1が処理ュニット、 MM0〜MMn— 1がメモリモジュールをそ れぞれ示している。
各処理ユニット PU0〜PUn_ 1に比較的均等な大きさのプリミティブ PM 0〜PMn— 1が与えられているときには、 各処理ユニット PU0〜PUn— 1 に対する負荷のバランスがとれ、 効率的並列処理が行える。
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図 2は、 ピクセルレベルでの並列処理の手法に基づくプリミティブ ·レベルで の並列化処理について概念的に示す図である。
図 2のように、 ピクセルレベルでの並列処理の手法では三角形をラスタライズ する際に、 2 X 8のマトリクス状に配列されたピクセルからなるピクセルスタン プ (P i X e 1 S t amp) P Sと呼ばれる矩形領域単位にピクセルが生成さ れる。
図 2の例では、 ピクセルスタンプ PS 0からからピクセルスタンプ PS 7まで の合計 8個のピクセルスタンプが生成されている。 これらピクセルスタンプ PS 0〜PS 7に含まれる最大 16個のピクセルが同時に処理される。
この手法は、 他の手法に比べ粒度が細かい分、 並列処理の効率が良い。
しかしながら、 上述した領域分割による並列処理の場合、 各処理ユニットを効 率良く並列動作させるためには、 各領域に描画されるべきオブジェクトをあらか じめ分類する必要があり、 シーンデータ解析の負荷が重い。
また、 1フレーム分のシーンデータが全て揃った上で描画を開始するのではな く、 オブジェクトデータが与えられると即描画を開始するいわゆるイミ一デイエ 一トモ一ドでの描画を行う際には並列性を引き出すことができない。
また、 プリミティブレベルでの並列処理の場合、 実際には、 オブジェクトを構 成するプリミティブ P M 0〜P Mn— 1の大きさにはバラツキがあることから、 処理ュニット P U 0〜P U n— 1ごとに一つのプリミティブを処理する時間に差 が生じる。 この差が大きくなつた際には、 処理ユニットが描画する領域も大きく 異なり、 データのローカリティが失われるので、 メモリモジュールを構成するた とえば D R AMのページミスが頻発し性能が低下する。
また、 この手法の場合には、 配線コストが高いという問題点もある。 一般に、 グラフィックス処理を行うハ一ドウエアでは、 メモリのバンド幅を広げるために 、 複数メモリモジュールを用いてメモリインタ一リーブを行う。
その際、 図 1に示すように、 各処理ユニット P U 0〜P U n— 1と各内蔵メモ リモジュール MM 0〜MMn— 1を全て結ぶ必要がある。
また、 ピクセルレベルでの並列処理の場合、 グラフィックスで処理されるプリ ミティブの大きさは小さくなる傾向にあることから、 ピクセルスタンプのサイズ を大きくしても無効なピクセルが増えるだけで実行効率が上がらない。
したがって、 この手法によって並列処理できるピクセルの数には限界がある。 そこで、 上述した各並列処理手法の特性に基づき、 以下のような並列処理手法 をとることが考えられる。
すなわち、 並列処理の粒度という観点からはピクセルレベルの並列処理を採用 する。
ただし、 ピクセルレベルの並列処理では並列度に限界があるので、 複数のプリ ミティブを同時処理する。 また、 処理ユニットとメモリモジュールを直結できる処理分配とし、 配線コス トを低減する。
図 3は、 ピクセルレベルの並列処理を採用し、 複数のプリミティブを同時処理 し、 処理ユニットとメモリモジュールを直結できる処理分配とする上記の画像処 理装置の構成を概念的に示す図である。
画像処理装置 1は、 図 3に示すように、 ストリームデ一タコントロ一ラ (S t r e ami ng Da t a Con t r o l l e r i SDC) 2、 および S DC 2に対して並列に接続された n個のモジュール 3— 0〜 3— n— 1を有している 各モジュール 3_0〜3_n— 1は、 それぞれ処理ユニット PU (0〜n— 1 ) およびメモリモジュール MM (0〜n— 1) を含む。
図 3において、 各メモリモジュール MM 0〜MMn— 1はィン夕一リ一ブされ ているとする。
また、 SDC2は、 CPUや外部メモリとのデータの授受を司るとともに、 処 理ュニット PU0〜PUn— 1におけるラスタライゼーシヨンに必要なパラメ一 夕を生成する。 これらのパラメ.一夕は、 全処理ユニット PU0〜PUn— 1に対 して供給される。
各処理ユニット PU0〜PUn— 1は、 あらかじめ対応するメモリインターリ —ブが決められており、 それぞれ担当するピクセルのみを生成する。
図 4は、 図 3の画像処理装置におけるピクセル生成について説明するための図 である。
図 4の例では、 メモリが 4 X 4の矩形領域単位にィンターリ一ブされている。 それぞれの矩形領域を L s t amp (La r ge s t amp) と呼ぶこととす る。 ここでは、 図 3で示した処理ユニット PUとメモリモジュール MMで構成さ れるモジュールの数は 4偭 (3— 0〜3— 3) を想定している。 また、 モジユー ルの番号と図 4における矩形領域に付与した番号とが対応している。 したがって、 図 4に示した三角形の場合、 モジュール 3— 0は 2個の L s t a mp、 モジュール 3— 1から 3— 3はそれぞれ 3個の L s t ampを担当してい る。
図 4からもわかるように、 L s t amp内には多くの無効ピクセルが含まれて いる。 そこで、 図 3の画像処理装置 1において、 L s t ampをさらに 2 X 2の 矩形領域 4個に分割し (スモールスタンプ: S m a 1 1 s t amp: S s t a mp ) 、 有効ピクセルを含むスモールスタンプ S s t ampのみ後段で処理する ことにより演算リソースを有効利用することも可能である。
上述した図 3の並列化手法により、 グラフィックス処理の描画系に関しては、 処理ユニットとメモリモジュールを直結できる処理分配が可能で、 配線コストを 低減できる。
しかしながら、 テクスチャリード系のメモリアクセスは、 描画系のメモリァク セスとは異なるため、 他のモジュールに属するメモリからの読み出しが必要とな る。
したがって、 テクスチャリード系のメモリアクセスに関しては何らかのクロス バーのような配線を必要とするが、 それを実現する際には以下の重複アクセス、 およびスケ一ラビリティの各課題を解決しなければならない。
重複アクセス
一般に、 スクリーン上の矩形領域をテクスチャ空間に投影すると形状と大きさ が異なる領域を占める。
図 5 A, 図 5 Bは、 スクリーン上の矩形領域をテクスチャ空間に投影する様子 を概念的に示す図である。
ここで、 テクスチャデ一タは、 フレームバッファや Zバッファのデータと同様 に、 インターリーブされたメモリに均等に格納されているとする。
すなわち、 4 X 4の矩形領域は、 付与された番号に対応するモジュール内のメ モリに格納される。 図では、 図 5 Aに示すスクリーン空間 (S c r e e n S p ac e) 上で隣接する 4X4の矩形領域 4つが、 図 5 Bに示すテクスチャ空間 ( Tex t u r e Spac e) 上に投影されている様子を示している。 たとえば 、 図 5 Bにおいて "モジュール 3— 0の領域 (Reg i on f o r Mo du 1 e 3-0) " と記載された領域は、 モジュール 3— 0が担当するスクリーン空 間上で 4 X 4の矩形領域に対してマツピングされるテクスチャデータを示す。 この場合、 図 5A, 図 5 Bに示すように、 あるモジュール内に格納されている テクスチャデ一夕に対して、 他の複数のモジュールがアクセスを行う。 しかもァ クセスするタイミングは、 それぞれ異なってくる。
したがって、 モジュール間の転送単位が 4 X 4テクセル単位であるとすると、 図 5 Bのテクスチャ空間において網掛けで示されたデータは、 4回転送されるこ とになる。
このように、 同一のデータを複数回転送することは、 電気的、 物理的条件で制 約されるメモリバンド幅を浪費し、 性能低下を招く。
スケーラビリティ
図 6は、 複数の処理ユニットで並列処理を行うシステムにおいて、 テクスチャ リード系のメモリアクセスに必要となるクロスバーを最も直接的な形で実現した 例を示す図である。
図 6において、 GABで示すグロ一バルアクセスバス (G l ob a l Ac c e s s Bu s) がテクスチャアクセス用のクロスバーに相当する。
1つのメモリモジュールから読み出されるデータのビット数を Mビット、 並列 処理するモジュールの数を n個とすると、 テクスチャアクセスに必要なデータ酉己 線本数は、 MX n本である。
図 6に示したシステムを LS I化する際には、 前記本数 (MXn本) のデータ 線が全モジュールに亘つて横方向に配線されるのみならず、 各処理ュニットに引 き込むための縦方向の配線も必要となる。
このような形態でのクロスバ一は、 スケーラビリティを実現する上で以下の、 処理ユニットのインターフエ一ス、 配線コスト、 および配線遅延という不利益を もたらす。
処理ュニットインターフェース
図 6において破線の楕円で示すように、 各モジュール 3— 0〜3_n— 1にお ける処理ユニット PU— 0〜PUn— 1は、 n個のメモリモジュール MM0〜M Mn— 1から読み出されたデータを受取り、 必要なデータを選択するためのイン ターフェ一スを必要とする。
このイン夕一フエ一スは、 集積されるモジュールの個数に依存するため、 並列 度を変えるたびに再設計しなければならない。
配線コスト
前述した重複アクセスやフィル夕リング処理に起因するバンド幅増大を考慮せ ず、 読み出されたテクスチャ ·データが 1 00%有効利用される理想的状態にお いて、 最低限必要とされるグロ一バルアクセスバス GABの配線本数を算出して みる。
今、 各処理ユニットでは、 1サイクル当たり 4ピクセルの処理を行い、 4つの テクスチャを同時アクセス可能とする。
このとき、 1ピクセルあたり平均して 1テクセルしか必要としない状態でも、 1モジュール当たり 4X4X 32 = 5 1 2ビットのバンド幅を必要とする。 した がって、 n個のモジュールを集積したシステムの場合のグローバルアクセスバス GABの配線幅 WB は以下のように求まる。
WB = (5 1 2 XNXWp ) /NL
ここで、 WP は配線ピッチ、 NL は配線に使うレイヤ数である。 たとえば、 想 定する 0. 0 7 Xプロセスでの参考値として、 WP =0. , NL =2を適用 すると、 モジュール数を変えたときの配線幅は以下のようになる。
4モシユール : 0. 9mm、
8モンユール : 1. 8mm、 1 6モジユーレ: 3. 6 mm
チップサイズが 1 O mm角だとすると、 8モジュールの場合で、 チップサイズ の 2 0 %をグローバルアクセスバス GABの横配線のみで使用してしまう。 しかも、 これらの値は理想状態における最低限必要な配線を仮定したものであ り、 実際にはその倍以上はないと実行性能がでない。 プロセスが微細化し、 動作周波数も上がってくると、 配線による遅延が支配的 となる。 たとえば、 1 GH z動作の場合、 配線できる長さは l mmから 2 mm程 度と言われる。
したがって、 図 6に示したようなグロ一ノルアクセスバス GABの場合、 バス の端から端までが 1 0 mmを越えることもある。 その結果、 配線にパイプライン レジスタを必要とし、 読み出しレイテンシ一が増大する。
しかも、 処理ュニットとメモリモジュールの組み合わせによって配線長が異な るため、 組み合わせごとのタイミングの最適化を行わなければならず、 設計しに くいという問題もある。 発明の開示
本発明の目的は、 複数の処理装置が処理データを共有して並列処理する際に、 重複アクセスを低減でき、 配線本数の多いクロスバーが不要で、 設計が容易で、 配線コスト、 配線遅延を低減できる画像処理装置およびその方法を提供すること にある。
上記目的を達成するため、 本発明の第 1の観点は、 複数のモジュールが処理デ —夕を共有して並列処理を行う画像処理装置であって、 グローバルモジュールと 、 複数のローカルモジュールとを含み、 上記グローバルモジュールは、 上記複数 の口一カルモジュールが並列に接続され、 上記口一カルモジュールで必要な処理 デー夕が記憶されるグローバルキャッシュを有し、 ローカルモジュールからロ一 カルキヤッシュフィルリクェストを受けると、 上記グロ一バルキヤッシュにある 要求に応じたデータを当該リクェストを出した口一カルモジュールに出力し、 上 記複数の口一カルモジュールは、 画像に関するデータが記憶されるメモリモジュ ールと、 少なくとも上記処理データを記憶するローカルキャッシュと、 演算用パ ラメ一夕および上記ローカルキャッシュに記憶されている処理データに基づいて あらかじめ対応するメモリィン夕一リーブで決められた担当する処理を行う処理 ユニットとを有し、 処理に必要な処理データが上記ローカルキャッシュに無い場 合には、 必要なデータを要求するローカルキヤッシュフィルリクエストを出力し 、 当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新 する。
本発明の第 2の観点は、 複数のモジュールが処理データを共有して並列処理を 行う画像処理装置であって、 グローバルモジュールと、 複数の口一カルモジユー ルとを含む複数のクラスタを有し、 上記各クラスタの上記グロ一バルモジュール. は、 上記複数のローカルモジュールが並列に接続され、 上記ローカルモジュール で必要な処理データが記憶されるグロ一バルキヤッシュを有し、 ローカルモジュ ールから口一カルキャッシュフィルリクエストを受けると、 上記グローバルキヤ ッシュにある要求に応じたデー夕を当該リクエストを出したローカルモジュール に出力し、 上記複数のローカルモジュールは、 画像に関するデータが記憶される メモリモジュールと、 少なくとも上記処理データを記憶する口一カルキャッシュ と、 演算用パラメ一夕および上記口一力ルキヤッシュに記憶されている処理デー タに基づいてあらかじめ対応するメモリインターリ一ブで決められた担当する処 理を行う処理ユニットとを有し、 処理に必要な処理データが上記ローカルキヤッ シュに無い場合には、 必要なデータを要求する口一カルキヤッシュフィルリクェ ストを出力し、 当該リクエストに応じて送られてきたデータで上記ローカルキヤ ッシュを更新し、 各クラスタのグロ一バルモジュールが互いにデー夕の授受を行 ラ。 また、 本発明の第 2の観点では、 上記複数のクラス夕は、 マトリクス状に配置 され、 各クラスタのグローバルモジュールはリング状に接続されている。
本発明の第 1または第 2の観点では、 上記グロ一バルモジュールは、 ローカル モジュールからローカルキヤッシュフィルリクエストを受けると、 グロ一バルキ ャッシュのエントリ一をチェックし、 エントリーがあった場合には、 要求された ブロックデータを読み出し、 読み出したデータをリクエストを送出したローカル モジュールに送出する。
本発明の第 1または第 2の観点では、 上記口一カルモジュールは、 グローバル キャッシュフィルリクエストを受けると、 要求されたブロックデータを上記グロ 一パルモジュールに出力し、 上記グロ一バルモジュールは、 ローカルモジュール から口一カルキャッシュフィルリクエス卜を受けると、 グロ—バルキャッシュの エントリーをチェックし、 エントリ一がなかった場合には、 要求されたブロック データを保持するターゲットの口一カルモジュールに対してグローバルキヤッシ ュフィルリクエストを送り、 その後タ一ゲットのローカルモジュールから送られ てきたブロックデ一夕でグローバルキヤッシュを更新するとともに、 当該ブロッ クデ一夕を読み出し、 読み出したデータをローカルキャッシュフィルリクエスト を送ってきたローカルモジュールに対して送出する。
本発明の第 1または第 2の観点では、 上記口一カルモジュールは、 グローバル キャッシュフィルリクエストを受けると、 要求されたブロックデータを上記グロ —バルモジュールに出力し、 上記グローバルモジュールは、 ローカルモジュール からロ一カルキャッシュフィルリクエストを受けると、 グローバルキャッシュの エントリーをチェックし、 エントリーがあった場合には、 要求されたブロックデ —夕を読み出し、 読み出したデータをリク;:ストを送出したローカルモジュール に送出し、 エントリーがなかった場合には、 要求されたブロックデータを保持す るターゲットのロー力ルモジュ—ルに対してグロ一バルキャッシュフィルリクェ ストを送り、 その後夕ーゲットのローカルモジュールから送られてきたブロック デ一夕でグローバルキヤッシュを更新するとともに、 当該プロックデ一夕を読み 出し、 読み出したデータを口一カルキャッシュフィルリクエストを送ってきた口 —カルモジュールに対して送出する。
好適には、 上記演算用パラメ一夕を生成するコントローラを有し、 上記グロ一 バルモジュールは、 上記コントローラで生成された演算用パラメ一タを上記複数 のローカルモジュールに供給する。
本発明の第 1または第 2の観点では、 上記グローバルモジュールは、 各ロー力 ルモジュール対応に設けられた複数のチャネルプロックを有し、 上記複数のチヤ ネルブロックは、 対応する口一カルモジュールとローカルキヤッシュフィルリク エストおよびデータの授受を行う。
好適には、 上記複数のローカルモジュールは、 上記グロ一バルモジュールを中 心として、 当該グローバルモジュールの周辺近傍に配置されている。
また、 好適には、 上記複数のローカルモジュールは、 上記グローバルモジユー ルを中心として、 当該グロ一バルモジュールの周辺近傍で、 かつ、 対応するチヤ ネルブロックの近傍にそれぞれ配置されている。
本発明の第 1または第 2の観点では、 上記グロ一バルモジュールは、 各口一力 ルモジュール対応に設けられた複数のチャネルプロックを有し、 上記複数のチヤ ネルブロックは、 対応するローカルモジュールとローカルキャッシュフィルリク ェスト、 グローバルキャッシュフィルリクエストおよぴデータの授受を行う。 好適には、 上記並列処理は、 ピクセルレベルでの並列処理である。
また、 上記並列処理はテクスチャに関する処理である。
本発明の第 3の観点は、 複数のモジュールが処理データを共有して並列処理を 行う画像処理方法であつて、 一つのグローバルモジュールに対して複数の口一力 ルモジュールを並列に接続し、 キャッシュの階層として、 複数のローカルモジュ —ルが共有するグローバルキヤッシュと、 各ローカルモジュールがローカルに持 つローカルキャッシュの 2階層とし、 グローバルモジュールにおいて、 グローハ、 ルキヤッシュにローカルモジュールで必要な処理データを記憶して、 口一カルモ ジュールからローカルキヤッシュフィルリクエストを受けると、 上記グロ一バル キャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュ 一レに出力し、 上記複数のローカルモジュールにおいて、 上記ローカルキヤッシ ュに少なくとも上記処理データを記憶して、 演算用パラメ一夕およびローカルキ ャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリイン 夕一リーブで決められた担当する処理を行い、 処理に必要な処理データが上記口 一カルキヤッシュに無い場合には、 必要なデータを要求するローカルキヤッシュ フィルリクエス卜を出力し、 当該リクエストに応じて送られてきたデータで上記 ローカルキャッシュを更新する。
本発明の第 3の観点では、 上記グローバルモジュールがローカルモジュールか らローカルキヤッシュフィルリクェストを受けると、 グローバルキヤッシュのェ ン卜リ一をチェックし、 エントリ一があった場合には、 要求されたブロックデー 夕を読み出し、 読み出したデータをリクエストを送出した口一カルモジュールに 送出する。
本発明の第 3の観点では、 上記ローカルモジュールがグロ一ノルキヤッシュフ ィルリクエストを受けると、 要求されたブロックデータを上記グローバルモジュ ールに出力し、 上記グローバルモジュールが、 ローカルモジュールからローカル キャッシュフィルリクエストを受けると、 グローバルキャッシュのエントリ一を チェックし、 エントリーがなかった場合には、 要求されたブロックデータを保持 するターゲットのローカルモジュールに対してグローバルキャッシュフィルリク エス卜を送り、 その後夕ーゲットのローカルモジュールから送られてきたブロッ クデータでグロ一バルキャッシュを更新するとともに、 当該ブロックデータを読 み出し、 読み出したデータを口一カルキャッシュフィルリクエストを送ってきた ローカルモジュールに対して送出する。
本発明の第 3の観点では、 上記ローカルモジュールがグローバルキヤッシュフ ィルリクエストを受けると、 要求されたブロックデ一夕を上記グロ一バルモジュ ールに出力し、 上記グローバルモジュールがローカルモジュールからローカルキ ャッシュフィルリクエストを受けると、 グローバルキヤッシュのェントリ—をチ エックし、 エントリ一があった場合には、 要求されたブロックデータを読み出し 、 読み出したデータをリクエストを送出した口一カルモジュールに送出し、 ェン トリーがなかった場合には、 要求されたブロックデータを保持する夕一ゲットの 口一カルモジュールに対してグローバルキャッシュフィルリクエストを送り、 そ の後夕ーゲットの口一カルモジュールから送られてきたブロックデータでグロ一 バルキャッシュを更新するとともに、 当該ブロックデータを読み出し、 読み出し たデータをローカルキャッシュフィルリクエストを送ってきたローカルモジユー ルに対して送出する。
本発明によれば、 たとえばテクスチャ系の処理に場合には、 コント口一ラにお いて演算用パラメ一夕が生成され、 生成されたパラメ一タはたとえばグロ一バル モジュールを介してローカルモジュールにブロードキャストされる。
各ローカルモジュールでは、 処理ユニットにおいて、 たとえば以下の処理が行 われる。
すなわち、 処理ユニットにおいては、 ブロードキャストされたパラメ一タを受 け取ると、 その三角形が自分が担当する領域、 たとえば 4 X 4ピルセルの矩形領 域単位でィンターリ一プされた領域に属しているか否かが判断される。 その結果 、 属している場合には、 各種データ (Z、 テクスチャ座標、 カラ一など) がラス タラィズされる。
次に、 L〇D (L e v e l o f D e t a i 1 ) 計算によるミツプマップ ( M i p M a p ) レベルの算出や、 テクスチャアクセスのための (u , v) ァドレ ス計算が行われる。
そして、 次に、 テクスチャの読み出しが行われる。
この場合、 各ローカルモジュールの処理ユニットでは、 テクスチャリードの際 に、 まず、 ローカルキャッシュのエントリーがチェックされる。
その結果、 エントリ一があった場合には、 必要なテクスチャデータが読み出さ れる。
必要とするテクスチャデータが口一カルキャッシュ内に無い場合には、 各処理 ュニットでは、 グローバルモジュールに対してローカルキャッシュフィルのリク エス卜が送出される。
グ口一バルモジュールにおいては、 要求されたブロックデー夕がグ口一バルキ ャッシュにあると、 対応するグロ一バルキヤッシュのアドレスから読み出されて チャネルを通してリクエストを送出したローカルモジュールに送り返される。 一方、 要求されたブロックデ一夕がグ口ーノ ルキャッシュにないと当該ブロッ クを保持するローカルモジュールに対してグローバルキヤッシュフィルのリクェ ストが送られる。
グローバルキャッシュフィルのリクエストを受けた口一カルモジュールにおい ては、 メモリから該当するブロックデータが読み出され、 グロ一バルインターフ エースを通してグローバルモジュールに送出される。
その後、 グロ一バルモジュールでは、 プロックデ一夕が所望のグロ一バルキヤ ッシュにフィルされるとともに、 リクエストを送ってきたローカルモジュールに 対して所望のチヤネルからデー夕が送出される。
グローバルモジュールから要求したブロックデータが送られてくると、 該当す る口一カルモジュールでは、 ローカルキャッシュが更新され、 処理ユニットによ りブロックデ一夕が読み出される。
次に、 ローカルモジュールでは、 読み出されたテクスチャデータと、 ( U , V
) ァドレスを算出時に得た小数部を使って 4近傍補間などのフィルタリング処理 が行われる。
次に、 フィルタリング後のテクスチャデータと、 ラスタライズ後の各種データ を用いて、 ピクセル単位の演算が行われる。 そして、 ピクセルレベルの処理における各種テストをパスしたピクセルデータ は、 メモリモジュール、 たとえば内蔵 D RAMメモリ上のフレームバッファおよ び Zパ、ッファに書き込まれる。 図面の簡単な説明
図 1は、 プリミティブレベルでの並列化処理について概念的に示す図である。 図 2は、 ピクセルレベルでの並列処理の手法に基づくプリミティブ ·レベルで の並列化処理について概念的に示す図である。
図 3は、 ピクセルレベルの並列処理を採用し、 複数のプリミティブを同時処理 し、 処理ユニットとメモリ ·モジュールを直結できる処理分配とする画像処理装 置の構成を概念的に示す図である。
図 4は、 図 3の画像処理装置におけるピクセル生成について説明するための図 である。
図 5 Aおよび図 5 Bは、 スクリーン上の矩形領域をテクスチャ空間に投影する 様子を概念的に示す図である。
図 6は、 複数の処理ユニットで並列処理を行うシステムにおいて、 テクスチャ リード系のメモリアクセスに必要となるクロスパーを最も直接的な形で実現した 例を示す図である。
図 7は、 本発明の係る画像処理装置の一実施形態を示すプロック構成図である 図 8は、 本実施形態に係るストリームデ一夕コントローラ (S D C) の主な処 理を説明するためのフローチヤ一トである。
図 9は、 本実施形態に係るグロ一バルモジュールの機能を説明するためのフロ 一チヤ一卜である。
図 1 0は、 図 7のグローバルモジュールの具体的な構成例を示す回路図である 図 1 1は、 本実施形態に係るローカルモジュールにおける処理ユニットの主な 処理を説明するための図である。
図 1 2は、 本実施形態に係るテクスチャリード時のローカルモジュールの動作 を説明するためのフローチャートである。
図 1 3は、 本実施形態に係る口一カルモジュールにおける口一カルキャッシュ の構成例を示すブロック図である。
図 1 4は、 本実施形態に係る口一カルキヤッシュのリ一ドオンリ一キヤッシュ の構成例を示すブロック図である。
図 1 5は、 本実施形態に係る口一カルキャッシュのメモリコントローラの構成 例を示すプロック図である。
図 1 6八〜図1 6 Eは、 本実施形態に係るバンクのインターリ一ブに関するァ ドレッシングについて説明するための図である。
図 1 7八〜図1 7 Dは、 本実施形態に係るバンクのインタ一リーブに関するァ ドレッシングについて説明するための図である。
図 1 8は、 本発明の係る画像処理装置の他の実施形態を示すブロック構成図で ある。 発明を実施するための最良の形態
図 Ίは、 本発明に係る画像処理装置の一実施形態を示すプロック構成図である 本実施形態に係る画像処理装置 1 0は、 図 7に示すように、 ストリームデータ コントローラ ( S D C) 1 1、 グロ一バルモジュール 1 2、 およびローカルモジ ユール 1 3 _ 0〜1 3— 3を有している。
本画像処理装置 1 0では、 S D C 1 1とグローバルモジュール 1 2とがデー の授受を行い、 一つのグローバルモジュール 1 2に対して複数個、 本実施形態で は 4個の口一カルモジュール 1 3 _ 0〜1 3— 3が並列に接続されて、 複数の口 一カルモジュール 13— 0〜 13— 3で処理データを共有し並列に処理する。 そして、 テクスチャリード系に関しては、 他の口一カルモジュールに対するメ モリアクセスを必要とするが、 グローバルアクセスバスの形態をとる代わりに、 ルータとしての機能を有する一つのグロ一バルモジュール 12を介したアクセス を行う。
また、 後で詳述するように、 グローバルモジュール 12はグローバルキヤッシ ュを有し、 各口一カルモジュール 13— 0〜13— 3は口一カルキャッシュをそ れぞれ有する。
すなわち、 本画像処理装置 10は、 キャッシュの階層として、 たとえば 4つの ローカルモジュール 13_0〜13— 3が共有するグロ一バルキャッシュと、 各 ローカルモジュールがローカルに持つローカルキャッシュの 2階層を有する。 以下に各構成要素の構成および機能について、 図面に関連付けて順を追って説 明する。
S D C 11は、 C PUや外部メモリとのデータの授受、 並びにグローバルモジ ュ ル 12とのデータの授受を司るとともに、 頂点デ一夕に対する演算、 各口一 カルモジュール 13— 0〜13— 3の処理ュニットにおけるラスタライゼ一ショ ンに必要なパラメ一タの生成等の処理を行う。
SDC 11における具体的な処理内容は以下の通りである。 また、 SDC 11 の処理手順を図 8に示す。
SDC 11は、 まず、 データが入力されると (ST1) 、 Pe r_Ve r t e Xオペレーションを行う (ST2)
この処理においては、 3次元座標、 法線ベクトル、 テクスチャ座標の各頂点デ 一夕が入力されると、 頂点データに対する演算が行われる。 代表的な演算として は、 物体の変形ゃスクリーンへの投影などを行う座標変換の演算処理、 ライティ ング (L i gh t i ng) の演算処理、 クリッピング (C 1 i p p i n g) の演 算処理がある。 ここで行われる処理は、 いわゆる V e r t ex Shade rの実行に相当す る。
次に、 DDA (D i g i t a l D i f f e r en t i a l Ana l yz e r) パラメータを計算する (ST3) 。
この処理では、 ラス夕ライゼーシヨン (Ra s t e r i z a t i on) に必要 な各種データ (Z、 テクスチャ座標、 カラーなど) の傾き等の DDAパラメ一夕 を算出する。
次に、 算出した DD Aパラメ一夕をグロ一バルモジュール 12を介して全ロー カルモジュール 13— 0〜13— 3にブロードキャストする (ST4) 。
この処理において、 ブロードキャストされたパラメータは、 後述するキヤッシ ュフィルとは別のチャネルを用いて、 グローバルモジュール 12を介して各ロー カルモジュール 13— 0〜 13— 3に渡される。 ただし、 グローバルキヤッシュ の内容には影響を与えない。
グローバルモジュール 12は、 ルータ機能および全ローカルモジュールで共用 するグロ一バルキャッシュ 121を有する。
グローバルモジュール 12は、 SDC 11による DDAパラメータを並列に接 続された全口一カルモジュール 13_0〜13— 3にブロードキャストする。 また、 グロ一バルモジュール 12は、 ある口一カルモジュールからローカルキ ャッシュフィル (Loc a l Cache F i l l) LCFのリクエストを受 けると、 図 9に示すように、 グロ一パリレキャッシュのエントリ一をチェックし ( ST11) 、 エントリーがあった場合には (ST12) 、 要求されたブロックデ —夕を読み出し (ST13) 、 読み出したデータをリクエストを送出したロー力 ルモジュールに送出し (ST14) 、 エントリ一がなかった場合には (ST 12 ) 、 当該ブロックデータを保持するターゲッ卜の口一カルモジュールに対してグ ローバルキャッシュフィル (G 1 o b a 1 Cache F i l U GCFのリ クェストを送り (ST15) 、 その後送られてきたブロックデータでグローバル キャッシュを更新するとともに (ST16, ST 17) 、 ブロックデータを読み 出し (ST13) 、 読み出したデータを口一カルキャッシュフィル LDFのリク エストを送ってきたローカルモジュールに対して送出する (ST14) 。
図 10は、 図 7のグロ一バルモジュールの具体的な構成例を示す回路図である 本グロ一バルモジュール 12は、 主としてローカルモジュール 13— 0とのデ —夕の授受を行うチャネルブロック CBLK0と、 主としてローカルモジュール 13-1とのデータの授受を行うチャネルブロック CBLK1と、 主として口一 カルモジュール 13— 2とのデ一夕の授受を行うチャネルブロック CBLK 2と 、 主としてローカルモジュール 13 _3とのデータの授受を行うチャネルブロッ ク CBLK3とを有する。
そして、 本実施形態においては、 各チャネルブロック CBLK0〜CBLK3 にそれぞれ所定容量のグロ一バルキヤッシュ 121— 0〜 121— 3が配置され ている。
チャネルブロック CBLK0は、 グロ一バルキャッシュ 121—0に加えて、 ローカルキャッシュフィル用チャネル 1201— 0、 グロ一バルキャッシュフィ ル用チャネル 1202— 0、 セレクタ 1203— 0、 タグ回路 (Tag) 120 4一 0、 アービタ (Arb i t o r) 1205— 0、 およびたとえば F I FO ( F i s t t - I n F i r s t— Ou t) からなるキュー (Queue) レジス 夕 1206— 0〜 1210— 0を有している。
同様に、 チャネルブロック CBLK1は、 グロ一バルキャッシュ 121—1に 加えて、 口一カルキャッシュフィル用チャネル 1201— 1、 グローバルキヤッ シュフィル用チャネル 1202— 1、 セレクタ 1203— 1、 タグ回路 (Tag ) 1204- 1, アービタ (Ar b i t o r) 1205— 1、 およびキュー (Q u e u e) レジスタ 1206— 1〜1210— 1を有している。
チャネルブロック C B L K 2は、 グロ一バルキヤッシュ 121— 2に加えて、 ローカルキャッシュフィル用チャネル 1201—2、 グロ一バルキャッシュフィ ル用チャネル 1202— 2、 セレクタ 1203— 2、 タグ回路 (Tag) 120 4-2, アービタ (Arb i t o r) 1205— 2、 およびキュー (Queue ) レジスタ 1206— 2〜1210— 2を有している。
チャネルプロック C B L K 3は、 グロ一バルキヤッシュ 121— 3に加えて、 ローカルキャッシュフィル用チャネル 1201—3、 グローバルキャッシュフィ ル用チャネル 1202— 3、 セレクタ 1203— 3、 タグ回路 (Tag) 120 4— 3、 アービタ (Arb i t o r) 1205— 3、 およびキュー (Queue ) レジスタ 1206_3〜1210— 3を有している。
チャネルプロック C B L K 0における口一カルキヤッシュフィル用チャネル 1 201—0は、 リクエスト用キューレジスタ 12011— 0およびデータ用キュ —レジスタ 12012— 0を有している。 .
リクエスト用キューレジスタ 12011—0は、 ローカルモジュール 13-0 から転送されたローカルキャッシュフィル LCFのリクエストを入力し、 キュー レジスタ 1206一 0およびチャネルプロック CBLK 1のキュ一レジス夕 12 06-1, チャネルブロック CBLK2のキューレジス夕 1206— 2、 および チャネルブロック CBLK 3のキューレジスタ 1206— 3に出力する。
デ一夕用キューレジスタ 12012— 0は、 グロ一バルキャッシュ 121-0 、 121— 1、 121— 2、 または 121—3から読み出されセレクタ 1203 一 0で選択されたブロックデータを受けて、 ローカルモジュール 13— 0に出力 する。
チャネルブロック C B L K 0におけるグロ一バルキャッシュフィル用チヤネル 1202— 0は、 リクエスト用キューレジスタ 12021— 0およびデ一夕用キ ユーレジスタ 12022— 0を有している。
リクエス卜用キューレジスタ 12021— 0は、 タグ回路 1204一 0による グロ一バルキャッシュフィル G C Fのリクエストを受けて、 要求するブロックデ 一夕を保持するターゲットのローカルモジュール 13— 0に出力する。
デ一夕用キューレジス夕 12◦ 22— 0は、 グローノ 1レキャッシュフィルリク エストを受けたターゲットのローカルモジュール 13— 0から転送されたブロッ クデータを受けて、 グローバルキヤッシュ 121— 0に供給する。
チャネルブロック CBLK0におけるセレクタ 1203— 0は、 グロ一バルキ ャッシュ 121— 0、 121— 1、 121— 2、 または 121— 3から読み出さ れブロックデータを図示しない制御系の指示に応じて選択し、 ローカルキヤッシ ュフィル用チャネル 1201—0のデ一夕用キューレジス夕 12012— 0に供 給する。 ―
チャネルブロック CBLK0におけるタグ回路 1204— 0は、 グロ一バルキ ャッシュ 121 _ 0に記憶されているブロックデ一夕のァドレスタグを記憶する メモリを有し、 キューレジスタ 1206— 0〜 1209— 0に保持されている各 チャネルブロック CBLK0〜CBLK3を介した各口一カルモジュール 13— 0〜13— 3による口一カルキャッシュフィルリクエストの中からアービタ 12 05— 0により選択されたリクエストが要求するプロックデ一夕のァドレスと前 記タグ回路 1204— 0内に記憶されたアドレスタグを比較し、 一致するものが あれば当該ァドレス夕グに対応するグロ一バルキャッシュ 121— 0のデータが 読み出され、 各チャネルブロック CBLK0〜CBLK3のセレクタ 1203— 0〜1203— 3に供給される。
このとき、 ローカルキャッシュフィルリクエストを送って来た口一カルモジュ —ルとデー夕の授受を行うチャネルブロックのセレクタにおいてチャネルブロッ ク CBLKOのグローバルキャッシュ 121一 0から読み出されたデータを選択 するように、 図示しない制御系により指示される。
一方、 タグ回路 1204—0は、 アドレスタグとの比較の結果、 グロ一バルキ ャッシュ 121— 0に、 口一カルモジュール 13— 0〜 12— 3のいずれかから 要求されたブロックデータが記憶されていないことが判明した場合には、 グロ一 バルキヤシュ 121— 0のどのアドレスにデ一夕が有るかを示すフラグをセット し、 そのアドレスをキューレジスタ 1210— 0にセットするとともに、 グロ一 ノ ルキャッシュフィルリクエストをグロ一ゾ^レキャッシュ用チャネル 1202— 0のリクエスト用キューレジスタ 12021—0に供給する。 グロ一バルキャッ シュ 121一 0においては、 グローバルキャッシュ用チャネル 1202— 0用キ ユーレジス夕 12022— 0に口一カルモジュール 13— 0から要求したデータ が送られてくると、 キューレジス夕 1210— 0にセットされたアドレスに基づ いて当該データでグローバルキャッシュ 121一 0の内容を更新するとともに、 各チャネルブロック CBLK0〜CBLK3のセレクタ 1203— 0〜 1203 一 3にローカレキャッシュフィルリクエストで要求されていたデータを供給する チャネルブロック CBLK0のアービタ 1205— 0は、 キュ一レジスタ 12 06— 0〜1209_0に保持されてぃる各チャネルブロック。:6し1^0〜。8 LK 3を介した各ローカルモジュール 13_0〜13— 3による口一カルキャッ シュフィルリクエストを受けて調停作業を行い、 グローバルキヤッシュ 121— 0から同時読み出し可能なプロックデ一夕の数に応じてリクエストを選択し、 夕 グ回路 1204— 0に出力する。
チャネルブロック CBLK0のキューレジス夕 1206— 0は、 チャネル 12 01-0を介したローカルモジュール 13-0による口一カルキヤッシュフィル リクエストのうち、 口一カルモジュール 13—0のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジスタ 1207— 0は、 チャネルブロック CBLK1のチャネル 12 01-1を介したローカルモジュール 13— 1による口一カルキャッシュフィル リクエストのうち、 口一カルモジュール 13—0のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジス夕 1208— 0は、 チャネルブロック CBLK2のチャネル 12 01一 2を介したローカルモジュール 13— 2によるローカルキャッシュフィル リクエストのうち、 口一カルモジュール 13— 0のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キュ一レジスタ 1209_ 0は、 チャネルブロック CBLK3のチャネル 12 01—3を介した口一カルモジュール 13— 3によるローカルキャッシュフィル リクエストのうち、 口一カルモジュール 13— 0のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
チャネルブロック C B LK 1におけるローカルキヤッシュフィル用チャネル 1
201— 1は、 リクエス卜用キューレジスタ 12011— 1およびデータ用キュ —レジスタ 12012— 1を有している。
リクエスト用キューレジスタ 12011— 1は、 ローカルモジュール 13-1 から転送されたローカルキャッシュフィル LCFのリクエストを入力し、 キュー レジスタ 1207-1およびチャネルブロック C B L K 0のキューレジスタ 12 07— 0、 チャネルブロック CBLK2のキュ一レジスタ 1207— 2、 および チャネルブロック CBLK3のキューレジスタ 1207— 3に出力する。
データ用キューレジスタ 12012— 1は、 グロ一バルキャッシュ 121-0 、 121— 1、 121— 2、 または 121— 3から読み出されセレクタ 1203 一 1で選択されたブロックデータを受けて、 ローカルモジュール 13—1に出力 する。
チャネルブロック C B LK 1におけるグロ一バルキヤッシュフィル用チャネル 1202— 1は、 リクエス卜用キューレジスタ 12021— 1およびデ一夕用キ ュ一レジスタ 12022— 1を有している。
リクエスト用キューレジスタ 12021— 1は、 タグ回路 1204—1による グローバルキヤッシュフィル G C Fのリクエストを受けて、 要求するブロックデ 一夕を保持するターゲットのローカルモジュール 13_ 1に出力する。
データ用キューレジスタ 12022— 1は、 グロ一バルキャッシュフィフレリク エストを受けた夕一ゲットのローカルモジュール 13 _ 1から転送されたブロッ クデ一夕を受けて、 グロ一パルキヤッシュ 121— 1に供給する。
チャネルブロック CBLK1におけるセレクタ 1203— 1は、 グロ一バルキ ャッシュ 121— 0、 121— 1、 121— 2、 または 121—3から読み出さ れブロックデ一夕を図示しない制御系の指示に応じて選択し、 ローカルキヤッシ ュフィル用チャネル 1201—1のデ一夕用キューレジスタ 12012— 1に供 給する。
チャネルブロック CBLK1におけるタグ回路 1204— 1は、 グロ一バリレキ ャッシュ 121— 1に記憶されているプロックデータのァドレスタグを記憶する メモリを有し、 キューレジス夕 1206— ;!〜 1209— 1に保持されている各 チャネルプロック CBLK〜CBLK3を介した各ローカルモジュール 13-0 〜13— 3によるローカルキャッシュフィルリクエストの中からアービタ 120 5-1により選択されたリクエストが要求するブロックデータのアドレスと前記 タグ回路 1204- 1内に記憶されたァドレスタグを比較し、 一致するものがあ れば当該ァドレスタグに対応するグローバルキヤッシュ 121— 1のデータが読 み出され、 各チャネルブロック 8 0〜じ]31^1^3のセレク夕1203— 0 -1203_ 3に供給される。 .
このとき、 ローカルキャッシュフィルリクエストを送って来たローカルモジュ —ルとデ一夕の授受を行うチャネルブロックのセレクタにおいてチャネルブロッ ク CBLK1のグローバルキャッシュ 121— 1から読み出されたデ一夕を選択 するように、 図示しない制御系により指示される。
一方、 タグ回路 1204— 1は、 ァドレスタグとの比較の結果、 グローハレキ ャッシュ 121— 1に、 ローカルモジュール 13— 0〜 12— 3のいずれかから 要求されたプロックデ一夕が記憶されていないことが判明した場合には、 グロ一 バルキヤシュ 121- 1のどのァドレスにデータが有るかを示すフラグをセット し、 そのアドレスをキューレジス夕 1210— 1にセットするとともに、 グロ一 バルキャッシュフィルリクエストをグロ一バルキャッシュ用チャネル 1202— 1のリクエスト用キューレジスタ 12021— 1に供給する。 グロ一バルキャッ シュ 121—1においては、 グローバルキャッシュ用チャネル 1202— 1用キ ュ一レジス夕 12022-1にローカルモジュール 13— 0から要求したデータ が送られてくると、 キューレジス夕 1210—1にセットされたアドレスに基づ いて当該デ一夕でグロ一ノ レキャッシュ 121— 1の内容を更新するとともに、 各チャネルブロックじ8 0〜じ8 1^3のセレク夕 1203— 0〜: 1203 一 3にローカルキャッシュフィルリクエス卜で要求されていたデータを供給する チャネルブロック CBLK1のアービタ 1205— 1は、 キューレジスタ 12 06— 1〜 1209— 1に保持されている各チャネルブロック CBLK0〜CB LK3を介した各口一カルモジュール 13— 0〜13— 3によるローカルキヤッ シュフィルリクェストを受けて調停作業を行い、 グローバルキヤッシュ 121— 1から同時読み出し可能なプロックデータの数に応じてリクエストを選択し、 夕 グ回路 1204— 1に出力する。
チャネルブロック CBLK1のキューレジスタ 1206 _ 1は、 チャネルブロ ック CBLK0のチャネル 1201一 0を介した口一カルモジュール 13— 0に よるローカルキャッシュフィルリクエス卜のうち、 ローカルモジュール 13-1 のメモリモジュールに記憶されているものと判靳されたリクエストを保持する。 キューレジス夕 1207 _ 1は、 チャネルブロック C B L K 1のチャネル 12 01-1を介したローカルモジュール 13—1による口一カルキャッシュフィル リクエストのうち、 ローカルモジュール 13― 1のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジスタ 1208_ 1は、 チャネルブロック CBLK2のチャネル 12 01-2を介したローカルモジュール 13— 2によるローカルキャッシュフィル リクエストのうち、 ローカルモジュール 13— 1のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジス夕 1209— 1は、 チャネルブロック CBLK3のチャネル 12 01—3を介したローカルモジュール 13— 3によるローカルキャッシュフィル リクエストのうち、 ローカルモジュール 13— 1のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
チャネルブロック C B L K 2におけるローカルキヤッシュフィル用チャネル 1 201— 2は、 リクエスト用キュ一レジスタ 12011—2およびデ一夕用キュ 一レジスタ 12012-2を有している。
リクエスト用キューレジスタ 12011—2は、 ローカルモジュール 13-2 から転送された口一カルキャッシュフィル LCFのリクエストを入力し、 キュ一 レジスタ 1208— 2およびチャネルブロック CBLK0のキューレジスタ 12 08-0, チャネルブロック CBLK1のキュ一レジスタ 1208_ 1、 および チャネルブロック CBLK 3のキューレジスタ 1208— 3に出力する。
データ用キューレジスタ 12012— 2は、 グロ一バルキャッシュ 121-0 、 121— 1、 121-2, または 121 _3から読み出されセレクタ 1203 一 2で選択されたブロックデータを受けて、 ローカルモジュール 13— 2に出力 する。
チャネルブロック C B L K 2におけるグローバルキヤッシュフィル用チャネル 1202— 2は、 リクエス卜用キュ一レジス夕 12021— 2およびデ一タ用キ ュ一レジス夕 12022-2を有している。
リクエス卜用キューレジス夕 12021_2は、 タグ回路 1204— 2による グロ一バルキャッシュフィル G C Fのリクエストを受けて、 要求するブロックデ 一夕を保持する夕一ゲットのローカルモジュール 13— 2に出力する。
デ一夕用キューレジス夕 12022— 2は、 グロ一バルキヤッシュフィルリク エストを受けたターゲッ 1、のローカルモジュール 13— 2から転送されたブロッ クデータを受けて、 グロ一バルキヤッシュ 121— 2に供給する。 チャネルブロック CBLK 2におけるセレクタ 1203— 2は、 グロ一バルキ ャッシュ 121— 0、 121— 1、 121— 2、 または 121— 3から読み出さ れブロックデータを図示しない制御系の指示に応じて選択し、 ローカルキヤッシ ュフィル用チャネル 1201一 2のデ一夕用キューレジスタ 12012— 2に供 給する。
チャネルブロック CBLK2におけるタグ回路 1204— 2は、 グロ一バルキ ャッシュ 121 _ 2に記憶されているプロックデ一夕のァドレスタグを記憶する メモリを有し、 キューレジスタ 1206— 2〜1209— 2に保持されている各 チャネルプロック CBLK〜CBLK3を介した各口一カルモジュール 13— 0 〜13— 3によるローカルキャッシュフィルリクエストの中からアービタ 120 5— 2により選択されたリクエストが要求するブロックデータのァドレスと前記 タグ回路 1204— 2内に記憶されたァドレスタグを比較し、 一致するものがあ れば当該ァドレスタグに対応するグロ一ノルキヤッシュ 121 _ 2のデ一夕が読 み出され、 各チャネルブロック CBLK0〜CBLK3のセレクタ 1203— 0 〜 1203— 3に供給される。
このとさ、 ローカルキャッシュフィルリクエス卜を送って来た口一カルモジュ —ルとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロッ ク CBLK2のグロ一パルキャッシュ 121— 2から読み出されたデータを選択 するように、 図示しない制御系により指示される。
一方、 タグ回路 1204— 2は、 アドレスタグとの比較の結果、 グロ一バルキ ャッシュ 121—2に、 ローカルモジュール 13— 0〜12— 3のいずれかから 要求されたプロックデータが記憶されていないことが判明した場合には、 グロ一 バルキヤシュ 121— 2のどのァドレスにデータが有るかを示すフラグをセット し、 そのアドレスをキュ一レジスタ 1210— 2にセットするとともに、 グロ一 バルキヤッシュフィルリクエストをグローバルキヤッシュ用チャネル 1202- 2のリクエスト用キューレジスタ 12021— 2に供給する。 グローバルキヤッ シュ 121— 2においては、 グロ一バルキャッシュ用チャネル 1202— 2用キ ュ一レジス夕 12022— 2にローカルモジュール 13— 0から要求したデ一夕 が送られてくると、 キュ一レジスタ 1210— 2にセッ卜されたアドレスに基づ いて当該データでグロ一バルキャッシュ 121—2の内容を更新するとともに、 各チャネルブロック08 0〜。8し1^3のセレクタ 1203— 0〜 1203 —3にローカルキャッシュフィルリクエストで要求されていたデータを供給する チャネルブロック CBLK 2のアービタ 1205— 2は、 キューレジスタ 12 06— 2〜 1209— 2に保持されてぃる各チャネルブロック08 0〜。8 LK 3を介した各ローカルモジュール 13— 0〜13— 3によるローカルキヤッ シュフィルリクエスト調停作業を行い、 グローバルキャッシュ 121—2から同 時読み出し可能なプロックデータの数に応.じてリクエストを選択し、 夕グ回路 1 204— 2に出力する。
チャネルブロック CBLK 2のキューレジスタ 1206— 2は、 チャネルブロ ック CBLK0のチャネル 1201—0を介した口一カルモジュール 13— 0に よる口一カルキャッシュフィルリクエストのうち、 ローカルモジュール 13-2 のメモリモジュールに記憶されているものと判断されたリクエストを保持する。 キューレジスタ 1207— 2は、 チャネルブロック CBLK 1のチャネル 12 01-1を介した口一カルモジュール 13—1による口一カルキャッシュフィル リクエストのうち、 口一カルモジュール 13— 2のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジスタ 1208— 2は、 チャネルブロック CBLK2のチャネル 12 01—2を介した口一カルモジュール 13-2による口一カルキヤッシュフィル リクエストのうち、 ローカルモジュール 13— 2のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。 キューレジスタ 1209— 2は、 チャネルブロック CBLK3のチャネル 12 01-3を介したローカルモジュール 13— 3による口一カルキャッシュフィル リクエストのうち、 ローカルモジュール 13— 2のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
チャネルブロック CBLK 3におけるローカルキャッシュフィル用チャネル 1 201_3は、 リクエスト用キューレジスタ 12011—3およびデータ用キュ —レジス夕 12012— 3を有している。
リクエスト用キューレジスタ 12011— 3は、 ローカ^/モジュール 13— 3 から転送されたローカルキャッシュフィル LCFのリクエストを入力し、 キュ一 レジスタ 1209— 3およびチャネルブロック CBLK0のキューレジスタ 12 09— 0、 チャネルブロック CBLK1のキューレジス夕 1209— 1、 および チャネルブロック CBLK 2のキューレジス夕 1209— 2に出力する。
データ用キューレジスタ 12012— 3は、 グロ一バルキヤッシュ 121— 0 、 121— 1、 121— 2、 または 121— 3から読み出されセレクタ 1203 一 3で選択されたブロックデータを受けて、 口一カルモジュール 13— 3に出力 する。
チャネルブロック C B LK 3におけるグローバルキヤッシュフィル用チャネル 1202— 3は、 リクエスト用キューレジス夕 12021— 3およびデータ用キ ユーレジス夕 12022— 3を有している。
リクエスト用キューレジスタ 12021—3は、 タグ回路 1204— 3による グロ一バルキャッシュフィル G C Fのリクエストを受けて、 要求するブロックデ 一夕を保持する夕一ゲッ卜の口一カルモジュール 13-3に出力する。
データ用キューレジス夕 12022— 3は、 グロ一バルキヤッシュフィルリク エストを受けた夕ーゲッ卜のローカルモジュール 13— 3から転送されたブロッ クデータを受けて、 グローバルキヤッシュ 121— 3に供給する。
チャネルブロック CBLK 3におけるセレクタ 1203— 3は、 グロ一バルキ ャッシュ 121— 0、 121— 1、 121— 2、 または 121— 3から読み出さ れブロックデータを図示しない制御系の指示に応じて選択し、 ローカルキヤッシ ュフィル用チャネル 1201一 3のデータ用キューレジスタ 12012— 3に供 給する。
チャネルブロック CBLK 3におけるタグ回路 1204_ 3は、 グロ一バ^/キ ャッシュ 121— 3に記憶されているプロックデータのァドレスタグを記憶する メモリを有し、 キュ一レジスタ 1206— 3〜 1209— 3に保持されている各 チャネルプロック CBLK〜CBLK3を介した各口一カルモジュール 13— 0 〜13— 3による口一カルキャッシュフィルリクエストの中からアービタ 120 5— 3により選択されたリクエストが要求するプロックデータのァドレスと前記 タグ回路 1204— 3内に記憶されたアドレスタグを比較し、 一致するものがあ れば当該ァドレスタグに対応するグローバルキヤッシュ 121—2のデータが読 み出され、 各チャネルブロック CBLK0〜CBLK3のセレクタ 1203— 0 〜1203— 3に供給される。
このとさ、 ローカルキャッシュフィルリクエストを送って来たローカルモジュ 一ルとデ一夕の授受を行うチャネルブロックのセレクタにおいてチャネルブロッ ク CBLK 3のグロ一バルキャッシュ 121— 3から読み出されたデータを選択 するように、 図示しない制御系により指示される。
一方、 夕グ回路 1204— 3は、 アドレスタグとの比較の結果、 グローバルキ ャッシュ 121— 3に、 ローカルモジュール 13— 0〜12— 3のいずれかから 要求されたプロックデータが記憶されていないことが判明した場合には、 グロ一 バルキヤシュ 121— 3のどのァドレスにデータが有るかを示すフラグをセット し、 そのアドレスをキューレジスタ 1210— 3にセットするとともに、 グロ一 バルキャッシュフィルリクエストをグローバルキャッシュ用チャネル 1202— 3のリクエスト用キューレジス夕 12021— 3に供糸合する。 グローバルキヤッ シュ 121— 3においては、 グローバルキャッシュ用チャネル 1202— 3用キ ユーレジス夕 12022— 3に口一カルモジュール 13— 0から要求したデータ が送られてくると、 キュ一レジス夕 1210— 3にセットされたアドレスに基づ いて当該データでグローバルキャッシュ 121—3の内容を更新するとともに、 各チャネルブロック 8 1 0〜〇81^1:3のセレク夕1203— 0〜 1203 一 3にローカルキヤッシュフィルリクエストで要求されていたデータを供給する チャネルブロック CBLK 3のアービタ 1205— 3は、 キューレジス夕 12 06— 3〜 1209— 3に保持されている各チャネルブロック CBLK0〜CB LK 3を介した各口一カルモジュール 13_0〜13— 3によるローカルキヤッ シュフィルリクエスト調停作業を行い、 グローバルキャッシュ 121— 3から同 時読み出し可能なプロックデータの数に応じてリクエストを選択し、 夕グ回路 1 204— 3に出力する。
チャネルブロック CBLK 3のキュ一レジス夕 1206 _ 3は、 チャネルブロ ック CBLK0のチャネル 1201 _0を介した口一カルモジュール 13—0に よる口一カルキャッシュフィルリクエストのうち、 ローカルモジュール 13— 3 のメモリモジュールに記憶されているものと判断されたリクェストを保持する。 キューレジスタ 1207— 3は、 チャネルブロック CBLK 1のチャネル 12 01-1を介したローカルモジュール 13—1によるローカルキャッシュフィル リクエストのうち、 ローカルモジュール 13—3のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キューレジスタ 1208 _ 3は、 チャネルブロック C B L K 2のチャネル 12 01—2を介したローカルモジュール 13—2による口一カルキャッシュフィル リクエストのうち、 ローカルモジュール 13—3のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
キュ一レジスタ 1209 _ 3は、 チャネルブロック C B L K 3のチャネル 12 01一 3を介した口一カルモジュール 13— 3によるローカルキャッシュフィル リクエストのうち、 ローカルモジュール 13— 3のメモリモジュールに記憶され ているものと判断されたリクエストを保持する。
なお、 図 10の構成は一例であり、 グローバルキャッシュ 121を各チャネル プロック毎にそれぞれ配置した構成の代わりに、 一つのキヤッシュを設けて各チ ャネルプロックからアクセスする等、 種々の態様が可能である。
口一カルモジュール 13— 0は、 処理ユニット 131— 0、 たとえば DRAR Mからなるメモリモジュール 132— 0、 モジュール固有のローカルキャッシュ 133— 0、 およびグロ一バルモジュール 12のチャネルブロック CBLK0と のインターフェースを司るグローバルインターフェース (G l oba l Ac c e s s I n t e r f a c e : GAI F) ) 134-0を有している。
同様に、 ローカルモジュール 13— 1は、 処理ュニット 131— 1、 たとえば DRARMからなるメモリモジュール 132— 1、 モジュール固有のローカルキ ャッシュ 133— 1、 およびグローバルモジュール 12のチヤネリレブロック CB LK 1とのィンターフェ一スを司るグローバルインタ一フェース (GA I F) 1 34-1を有している。
ローカルモジュール 13— 2は、 処理ユニット 131— 2、 たとえば DRAR Mからなるメモリモジュール 132-2, モジュール固有の口一カルキャッシュ 133-2, およびグローバルモジュール 12のチャネルブロック CBLK 2と のインタ一フェースを司るグロ一バルインターフェース (GA I F) 134-2 を有している。
ローカルモジュール 13— 3は、 処理ユニット 131— 3、 たとえば DRAR Mからなるメモリモジュール 132— 3、 モジュ一ル固有の口一カルキャッシュ 133— 3、 およびグロ一ノ レモジュール 12のチャネルブロック CBLK3と のインタ一フェースを司るグロ一バルインタ一フェース (GA I F) 134-3 を有している。 各ローカルモジュール 13— 0〜 13— 3は、 メモリモジュール 132-0- 132— 3が所定の大きさ、 たとえば 4X4の矩形領域単位にインターリーブさ れており、 メモリモジュール 132— 0と処理ユニット 131— 0、 メモリモジ ユール 132—1と処理ユニット 131— 1、 メモリモジュール 132— 2と処 理ュニット 131— 2、 およびメモリモジュール 132_ 3と処理ュニット 13 1一 3は、 担当領域は 1対 1に対応しており、 描画系については他のローカルモ ジュールに対するメモリアクセスが発生しない
一方、 各ローカルモジュール 13 _0〜13— 3は、 テクスチャリード系に関 しては、 他のローカルモジュールに対するメモリアクセスを必要とするが、 この 場合、 グローバルモジュール 12を介したアクセスを行う。
各ローカルモジュール 1.3— 0〜13— 3の処理ュニット 131—0〜 131 一 3はそれぞれ以下の処理を行う。 また、 処理ュニット 131— 0〜 131— 3 の処理手順を図 11に示す。
処理ュニット 131は、 プロ一ドキャストされたパラメータデータが入力され ると (ST21) 、 三角形が自分が担当する領域であるか否かを判断し (ST2 2) 、 担当領域である場合には、 ラスタライゼーシヨン (Ra s t e r i z a t i on) を行う (ST 23) 。
すなわち、 ブロードキャストされたパラメ一タを受け取ると、 その三角形が自 分が担当する領域、 たとえば 4 X 4ピクセルの矩形領域単位でィン夕一リ一ブさ れた領域に属しているか否かを判断し、 属している場合には、 各種データ (Z、 テクスチャ座標、 カラ一など) をラスタライズする。 この場合、 生成単位は、 1 ローカルモジュール当たり 1サイクルで 2 X 2ピクセルである。
次に、 テクスチャ座標のパースペクティブコレクション (Pe r s p e c t i V e Co r r e c t i on) を行う (S T 24) 。 また、 この処理ステージに は LOD Leve l o f D e t a i 1 ) 計算によるミツプマップ (M i ρ Map) レベルの算出や、 テクスチャアクセスのための (u, V) アドレス計算 12965 も含まれる。
次に、 テクスチャの読み出しを行う (ST25) 。
この場合、 各口一カルモジュール 13— 0〜13— 3の処理ュニット 131— 0〜131— 3は、 図 12に示すように、 テクスチャリードの際に、 まずは、 口 一カルキャッシュ 133— 0〜133— 3のエントリ一をチェックし (ST31 ) 、 エントリ一があった場合には (ST32) 、 必要なテクスチャデータを読み 出す (ST33) 。
必要とするテクスチャ ·データが口一カルキャッシュ 133— 0〜 133— 3 内に無い場合には、 各処理ュニット 131— 0〜 131— 3は、 グロ一バルイン ターフェ一ス 134— 0〜134一 3を通して、 グローバルモジュール 12に対 して口一カルキャッシュフィルのリクエストを送る (ST34) 。
そして、 グローバルモジュール 12は、 要求されたブロックをリクエストを送 出した口一カルモジュールに返すが、 なかった場合には上述したように (図 9に 関連付けて説明) 、 当該ブロックを保持するローカルモジュールに対してグロ一 バルキヤッシュフィルのリクエストを送る。 その後ブロックデータをグローバル キャッシュにフィルするとともに、 リクエス卜を送ってきたローカルモジュール に対してデータを送出する。
グロ一バルモジュール 12から要求したブロックデータが送られてくると、 該 当するローカルモジュールは、 口一カルキャッシュを更新し (ST35, ST3 6) 、 処理ユニットはブロックデ一夕を読み出す (ST33) 。
なお、 ここでは、 最大 4テクスチャの同時処理を想定しており、 読み出すテク スチヤデータの数は、 1ピクセルにっき 16テクセルである。
次に、 テクスチャフィル夕リング (Tex t u r e F i l t e r i ng) を 行う (ST26) 。
この場合、 処理ュニット 133— 0〜 133— 3は、 読み出されたテクスチャ データと、 (u, v) アドレスを算出時に得た小数部を使って 4近傍補間などの フィルタリング処理を行う。
次に、 ピクセルレベルの処理 (Pe r— P i xe l Ope r a t i on) を 行う (ST27) 。
この処理においては、 フィルタリング後のテクスチャデータと、 ラスタライズ 後の各種データを用いて、 ピクセル単位の演算が行われる。 ここで行われる処理 は、 ピクセルレベルでのライティング (P e r—P i X e 1 L i gh t i ng ) などいわゆる P i xe 1 Sh ad e rに相当する。 また、 それ以外にも以下 の処理が含まれる。
すなわち、 アルファテスト、 シザリング、 Zバッファテスト、 ステンシルテス ト、 アルファブレンデイング、 ロジカルオペレーション、 ディザリングの各処理 である。
そして、 ピクセルレベルの処理における各種テストをパスしたピクセルデータ を、 メモリモジュール 132— 0〜132— 3、 たとえば内蔵 DRAMメモリ上 のフレームバッファおよび Zバッファに書き込まれる (ST28 : Memo ry
Wr i t e) 。
各ローカルモジュール 13— 0〜13— 3のローカルキャッシュ 133— 0〜 133 _ 3は、 処理ュニット 131— 0〜 131— 3の処理に必要な描画デ一夕 やテクスチャデ一夕を格 し、 処理ュニット 131— 0〜 131— 3とのデータ の授受、 並びにメモリモジュール 132— 0〜132— 3とのデータの授受 (書 き込み、 読み出し) を行う。
図 13は、 各ローカルモジュール 13— 0〜13— 3の口一カルキャッシュ 1 33— 0〜133— 3の構成例を示すブロック図である。
ローカルキャッシュ 133は、 図 13に示すように、 リードオンリーキヤッシ ュ 1331、 リード .ライトキャッシュ 1332、 リォ一ダバッファ (R e o r de r Bu f f e r) 1333、 およびメモリコントローラ 1334を含む。 リードオンリーキャッシュ 1331はテクスチャ系データの記憶に用いられ、 リード ·ライトキャッシュ 1332は描画系データの記憶に用いられる。
また、 図 14は、 テクスチャ系に用いられるリードオンリ一キャッシュ 133 1の構成例を示す図である。
図 14に示すように、 このリードオンリーキャッシュ 1331は、 1つのロー カルモジュールで 4つのテクスチャを処理することから、 これに対応して 4個の キャッシュ CSH0〜CSH3が設けられている。
また、 各キャッシュじ3110〜じ31^3には、 4近傍補間などのフィル夕リン グ処理を行うために、 ピクセル毎に 4つのデータを必要とすることから、 それぞ れ 4つのメモリバンク BK0〜: BK 3が設けられる。
リオ一ダバッファ 1333は、 いわゆる待ち合わせバッファであり、 ローカル キャッシュの必要なデータがない場合、 口一カルキャッシュフィルのリクエスト を出したときに、 グロ一バルモジュール 12が送られてくるデータの順番が異な る場合があるので、 この順番を遵守し、 処理ュニット 131— 0〜131— 3に 要求順に戻すようにデータの順番を調整する。
また、 図 15は、 メモリコントローラ 1334のテクスチャ系の構成例を示す ブロック図である。
このメモリコントローラ 1334は、 図 15に示すように、 4つのキャッシュ CSH0〜CSH3に対応するキャッシュコントローラ 13340〜 13343 と、 各キャッシュコントローラ 13340〜13343から出力されるローカル キャッシュフィルリクエストを調停しグローバルインターフェース 134 {—0 〜3} に出力するアービタ 13344と、 グローバルインタ一フェース 134 { 一 0〜3} を介して入力したグロ一バルキャッシュフィルリクエストを受けて、 データ転送の制御を行うメモリインタ一フエ一ス 13345を含む。
また、 キャッシュコントローラ 13340〜13343は、 4つのピクセル P X 0〜P X 3それぞれに対応するデータに対して 4近傍補間を行う際に必要な各 デ一夕の 2次元アドレス C〇u v 00〜(: Ouv03、 C〇uvl 0〜COuv 13、 COu v 20〜COu v 23、 COu v 30〜(:〇u v 33を受けてアド レスの競合をチェックし分配するコンフリクトチェッカ CC 10と、 コンフリク トチェッカ CC 10で分配されたアドレスをチェックしリードオンリーキヤッシ ュ 1331にアドレスで示されたデ一夕が存在するか否かを判断するタグ回路 T AG 10と、 キューレジスタ QR 10を有している。
タグ回路 TAG 10内は後述するバンクのインターリーブに関するアドレツシ ングに対応する 4つのタグメモリ BK10〜BK13を有し、 リードオンリーキ ャッシュ 1331に記憶されている。
ブロックデ一夕のアドレスタグを保持するコンフリク卜チェッカ CC 10で分 配されたアドレスと上記アドレスタグを比較し、 一致したか否かのフラグと前記 アドレスをキューレジスタ QR10にセットするとともに、 一致しなかった場合 には前記アドレスをアービタ 13344に送出する。
アービタ 13344は、 キャッシュコントローラ 13340〜 13343から 送出されるアドレスを受けて調停作業を行い、 グロ一パルインタ一フェース (G A I F) 134を介して同時に送出できるリクエストの数に応じてアドレスを選 択し、 口一カルキャッシュフィルリクエストとしてグローバルィンターフェース (GA I F) 134に出力する。
グローバルインタ一フェース (GAI F) 134を介して送出されたローカル キャッシュフィルリクエストに対応してグロ一バルキヤッシュ 12からデ一夕が 送られてくると、 リオ一ダバッファ 1333にセットされる。
キャッシュコントローラ 13340〜13343は、 キューレジスタ QRL 0 の先頭にあるフラグをチェックし、 一致したことを示すフラグがセットされてい た場合には、 キューレジス夕 QRL 0の先頭にあるアドレスに基づいて、 リ一ド オンリーキャッシュ 1331のデータを読み出し、 処理ュニット 131に与える 。 一方、 一致したことを示すフラグがセットされていなかった場合には、 対応す るデータがリオーダバッファ 1333にセットされた時点でリオーダバッファ 1 333から読み出し、 キューレジスタ QRL 0のアドレスに基づいて当該ブロッ クデータでリードオンリ一キャッシュ 1331を更新するとともに、 処理ュニッ ト 131に出力する。
次に、 本実施形態に係るバンクのインターリーブに関するァドレッシングにつ いて、 図 16 A〜図 16 Eおよび図 17 A〜図 17 Dに関連付けて説明する (文 南犬: S t an f o rdUn i ve r s i t y 「P r e f e t ch i ng i n a Tex t u r e Ca s he Ar ch i t e c t u r e」 照) 。
この場合、 図 16Aに示すように、 2次元画像データを、 たとえば 4X4のマ トリクスとして図中縦方向を Vsuper 、 横方向を Usuper とする。
そして、 一つのブロックを図 16 Bに示すように、 8X 8のキャッシュサイズ のスーパーブロックのマトリクスとして、 図中縦方向 Vblockを、 横方向を Ubl ock とする。
このス一パーブロックに、 図 16Cに示すように、 4近傍のブロックに 0〜3 の番号を付与する。
また、 ス一パープロックの一つを図 16 Dに示すように、 4X4のブロックの マトリクスとして、 図中縦方向を Voffset、 横方向を Uoffsetとする。
このブロックに、 図 16 Eに示すように、 4近傍のブロックに 0〜3の番号を 付与する。
そして、 図 17 Aに示すような、 V方向に関する Vsuper 、 Vblock、 および Voffsetと、 U方向に関する係る Usuper 、 Ublock、 および Uof fsetとを合体 して、 図 17Bに示すように、 各 0フィールドの後続して、 Vsuper フィールド 、 Usuper フィールド、 Vblockフィールド、 Ublockフィールド、 Voffsetフ ィールド、 Uoffsetフィールドとなるようにソートする。
さらに、 図 17Cに示すような、 0フィ一ルド〜 Ublockフィールドに対応す る領域をベースアドレスフィールドとを合体して、 図 17Dに示すように、 タグ フィールド、 ブロックインデックスフィールド、 ブロックオフセットフィールド からなるアドレスが生成される。
次に、 メモリモジュールとしての D RAMと、 ローカルキャッシュと、 グロ一 バルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、 当然のことながら D R AM >グロ一バルキャッシュ >口 一カルキャッシュであるが、 その割合については、 アプリケーションに依存する キヤッシュブ口ックサイズとしては、 キヤッシュフィル時に下位階層のメモリ から読み出すデータサイズに相当する。
D RAMの特性として、 ランダムアクセス時には性能が低下するが、 同一行 ( R OW) に属するデータの連続アクセスは速いという点をあげることができる。 グローバルキャッシュは、 D RAMからデータを読み出す関係上、 前記連続ァ クセスを行う方が性能上好ましい。
したがつて、 キヤッシュブ口ックのサイズを大きく設定する。
たとえば、 グローバルキヤッシュのキヤッシュブ口ックのサイズは D RAMマ クロの 1行分 ( 8 2 9 2 b i t ) をブロックサイズにすることができる。
一方、 ローカルキャッシュの場合には、 ブロックサイズを大きくすると、 キヤ ッシュに入れても、 使われないデータの割合が増えるのと、 下位階層がグローバ ルキャッシュで D R AMでなく連続ァクセスに必要性がないことから、 ブロック サイズは小さく設定する。
ローカルキヤッシュのブロックサイズとしては、 メモリインターリ—ブの矩形 領域のサイズに近い値が適当で、 本実施形態の場合、 4 X 4ピクセル分、 すなわ ち 5 1 2ビッ卜とする。
次に、 テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデ一夕を必要とするので、 テク スチヤ読み出しバンド幅がポトルネックになる場合が多いが、 これを軽減するた めテクスチャを圧縮する方法がよく採用される。
圧縮方法には、 いろいろあるが、 4X4ピクセルのように小さな矩形領域単位 で圧縮 Z伸長できる方法の場合には、 グローバルキヤッシュには圧縮されたまま のデ一夕を置き、 口一カルキャッシュには、 伸長後のデ一夕を置くことが好まし い。
また、 グローバルモジュール 12と各ローカルモジュール 13— 0〜 13— 3 との配置関係としては、 図 7に示すように、 グロ一バルモジュール 12を中心と して各口一カルモジュール 13 _ 0〜 13 _ 3をその周辺近傍に配置することが 望ましい。
具体的には、 グロ一バルモジュール 12のチヤネリレブ口ック C B L K 0の近傍 にチャネルブロック CBLK0とデータの授受を行うローカルモジュール 13- 0を配置し、 グロ一バルモジュール 12のチャネルブロック CBLK1の近傍に チャネルブロック CBLK1とデータの授受を行うローカルモジュール 13-1 を配置し、 グローバルモジュール 12のチャネルブロック CBLK 2の近傍にチ ャネルブロック CBLK2とデータの授受を行うローカルモジュール 13— 2を 配置し、 グローバルモジュール 12のチャネルブロック CBLK 3の近傍にチヤ ネルブロック C BLK3とデータの授受を行う口一カルモジュール 13— 3を配 置する。
これにより、 各対応するチャネルプロックとローカルモジュールまでの距離を 均一に保つことができ、 配線領域を整然と並べることができ、 平均配線長を短く できる。 したがって、 配線遅延や配線コストを低減でき、 処理速度の向上を図る ことが可能となる。
次に、 上記構成による動作を説明する。
ここでは、 テクスチャ系の処理について説明する。
まず、 SDC 11において、 3次元座標、 法線ベクトル、 テクスチャ座標の各 頂点データが入力されると、 頂点データに対する演算が行われる。
次に、 ラスタライゼ一ション (Ra s t e r i z a t i on) に必要な各種デ 一夕 (Z、 テクスチャ座標、 カラーなど) の傾き等の DDAパラメータが算出さ れる。
そして、 SDC 11においては、 算出した DDAパラメ一夕をグロ一バルモジ ユール 12を介して全ローカルモジュール 13—0〜13—3にブロードキャス 卜される。
この処理において、 ブロードキャストされたパラメータは、 後述するキヤッシ ュフィルとは別のチャネルを用いて、 グローバルモジュール 12を介して各ロー カルモジュール 13— 0〜13— 3に渡される。 ただし、 グロ一バルキャッシュ の内容には影響を与えない。
各口一カルモジュール 13— 0〜 13— 3では、 処理ュニット 131— 0〜1 31-3において、 以下の処理が行われる。
すなわち、 処理ユニット 131 (— 0〜3) においては、 ブロードキャストさ れたパラメ一夕を受け取ると、 その三角形が自分が担当する領域、 たとえば 4 X 4ピクセルの矩形領域単位でィンターリーブされた領域に属しているか否かが判 断される。 その結果、 属している場合には、 各種データ (Z、 テクスチャ座標、 カラーなど) がラスタライズされる。
次に、 L〇D (Leve l o f D e t a i 1 ) 計算によるミツプマップ ( Mi pMap) レベルの算出や、 テクスチャアクセスのための (u, v) ァドレ ス計算が行われる。
そして、 次に、 テクスチャの読み出しが行われる。
この場合、 各ローカルモジュール 13— 0〜13— 3の処理ュニット 131— 0〜131_3では、 テクスチャリードの際に、 まず、 ローカルキャッシュ 13 3— 0〜: L 33— 3のエントリーがチェックされる。
その結果、 エントリ一があった場合には、 必要なテクスチャデータが読み出さ れる。
必要とするテクスチャデータが口一カルキャッシュ 133— 0〜 133— 3内 に無い場合には、 各処理ュニット 131— 0〜 131— 3では、 グローバルィン ターフェ一ス 134— 0〜134— 3を通して、 グロ一バルモジュール 12に対 してローカルキャッシュフィルのリクエストが送出される。
グローバルモジュール 12においては、 要求されたブロックデータがグロ一バ ルキャッシュ 121— 0〜 121— 3のいずれかにあると各チャネルブロック C 5 1^0〜〇8 1^3の夕グ回路1204—0〜: L 204— 3のうちのいずれか で判断されると、 対応するグローバルキャッシュ 121— 0〜121—3のいず れかから読み出されてチャネル 1201— 0〜 1201— 3を通してリクエスト を送出したローカルモジュールに送り返される。
一方、 要求されたブロックデ一夕がグロ一バルキヤッシュ 121— 0〜 121 一 3のいずれかにもないと各チャネルブロック CBLK0〜CBLK3のタグ回 路 1204— 0〜 1204— 3で判断されると、 所望のチャネル 1202— 0〜 1202— 3のいずれかから当該ブロックを保持するローカルモジュールに対し てグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けた口一カルモジュールにおい ては、 メモリから該当するプロックデータが読み出され、 グローバルインターフ エースを通してグロ一バルモジュール 12に送出される。
その後、 グロ一バルモジュール 12では、 ブロックデ一夕が所望のグローノル キャッシュにフィルされるとともに、 リクエストを送ってきたローカルモジュ一 ルに対して所望のチャネルからデータが送出される。
グローバルモジュール 12から要求したブロックデータが送られてくると、 該 当するローカルモジュールでは、 口一カルキャッシュが更新され、 処理ユニット によりプロックデータが読み出される。
次に、 口一カルモジュール 13— 0〜 13— 3では、 読み出されたテクスチャ データと、 (u, v) アドレスは算出時に得た小数部を使って 4近傍補間などの フィルタリング処理が行われる。
次に、 フィルタリング後のテクスチャデータと、 ラスタライズ後の各種データ を用いて、 ピクセル単位の演算が行われる。
そして、 ピクセルレベルの処理における各種テストをパスしたピクセルデ一夕 を、 メモリモジュール 1 3 2— 0〜1 3 2— 3、 たとえば内蔵 D RAMメモリ上 のフレームバッファおよび Zバッファに書き込まれる。
以上説明したように、 本実施形態によれば、 S D C 1 1とグロ一バルモジユー ル 1 2とがデータの授受を行い、 一つのグローバルモジュール 1 2に対して複数 個 (本実施形態では 4個) のローカルモジュール 1 3— 0〜1 3— 3が並列に接 続されて、 複数の口一カルモジュール 1 3 _ 0〜1 3— 3で処理データを共有し 並列に処理し、 グロ一バルモジュール 1 2はグロ一バルキャッシュを有し、 各口 一カルモジュール 1 3— 0〜1 3— 3は口一カルキャッシュをそれぞれ有し、 キ ャッシュの階層として、 4つのローカルモジュール 1 3— 0〜1 3— 3が共有す るグローバルキヤッシュと、 各ローカルモジュールがローカルに持つローカルキ ャッシュの 2階層を有すること力、ら、 複数の処理装置が処理データを共有して並 列処理する際に、 重複アクセスを低減でき、 配線本数の多いクロスバーが不要と なる。 その結果、 設計が容易で、 配線コスト、 配線遅延を低減できる画像処理装 置を実現できる利点がある。
また、 本実施形態によれば、 グロ一バルモジュール 1 2と各口一カルモジュ一 ル 1 3— 0〜1 3— 3との配置関係としては、 図 7に示すように、 グロ一バルモ ジュール 1 2を中心として各ローカルモジュール 1 3— 0〜 1 3— 3をその周辺 近傍に配置すること力、ら、 各対応するチャネルプロックとローカルモジュールま での距離を均一に保つことができ、 配線領域を整然と並べることができ、 平均配 線長を短くできる。 したがって、 配線遅延や配線コストを低減でき、 処理速度の 向上を図ることができる利点がある。 なお、 本実施形態においては、 テクスチャデータが内蔵 DRAM上にあるケー スを例に述べているが、 他のケースとして、 内蔵 DRAMには、 カラ一データお よび zデータのみが置かれ、 テクスチャデータは外部メモリに置かれることも可 能である。 この場合には、 グローバルキャッシュでミスが発生すると、 外部 DR AMに対してキャッシュフィル要求が出されることになる。
また、 上述の説明では、 図 7の構成、 すなわち、 一つのグロ一バルモジュール 12に対して複数個 (本実施形態では 4個) のローカルモジュール 13_0〜1 3-3が並列に接続した画像処理装置 10を例に並列処理を行う場合に特化した 形態となっているが、 図 7の構成を一つのクラスタ CLSTとして、 たとえば図 18に示すように、 4つのクラス夕 CLST0〜CLST4をマトリクス状に配 置して、 各クラス夕( 1^3丁0〜( 3丁4のグローバルモジュ一ル12_0〜 12-3間でデータの授受を行うように構成することも可能である。
図 18の例では、 クラスタ CLST0のグローバルモジュール 12— 0とクラ スタ CLST1のグローバルモジュール 12-1とを接続し、 クラスタ CLST 1のグローバルモジュール 12— 1とクラス夕 CLST3のグローバルモジュ一 ル 12— 3とを接続し、 クラスタ CLST 3のグローバルモジュール 12— 3と クラスタ CLST2のグローバルモジュール 12— 2とを接続し、 クラスタ CL ST2のグローバルモジュール 12-2とクラスタ C LST0のグローバルモジ ユール 12— 0とを接続している。
すなわち、 複数のクラス夕 CLST0~CLST4のグロ一バルモジュール 1 2-0-12— 3をリング状に接続している。
なお、 図 18の構成の場合には、 一つの SDCからパラメ一夕が CLST0〜 CL ST 4のグロ一バルモジュール 12— 0〜12— 3にブロドキャストされる ように構成することが可能である。
このような構成を採用することにより、 より精度の高い画像処理を実現でき、 また、 各クラスタ間の配線も単純に双方向として一系統で接続するので、 各クラ スタ間の負荷を均一に保つことができ、 配線領域を整然と並べることができ、 平 均配線長を短くできる。 したがって、 配線遅延や配線コストを低減でき、 処理速 度の向上を図ることが可能となる。 産業上の利用可能性
以上説明したように、 本発明の画像処理装置および方法は、 複数の処理装置が 処理データを共有して並列処理する際に、 重複アクセスを低減でき、 配線本数の 多いクロスバーが不要となり、 その結果、 設計が容易で、 配線コスト、 配線遅延 を低減できることから、 たとえば、 複数の演算装置が処理データを共有して並列 処理を行う画像処理システム等に適用可能である。

Claims

言青求の範囲
1 . 複数のモジュールが処理データを共有して並列処理を行う画像処理装置で あって、
グロ一バルモジュールと、 複数のローカルモジュールとを含み、 上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、 上記口一カルモジ ユールで必要な処理データが記憶されるグローバルキヤッシュを有し、 ローカル モジュールからローカルキヤッシュフィルリクエストを受けると、 上記グローバ ルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジ ユールに出力し、
上記複数の口一カルモジュールは、
画像に関するデ一夕が記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキヤッシュと、 演算用パラメータおよび上記ローカルキャッシュに記憶されている処 理データに基づいてあらかじめ対応するメモリインタ一リ一ブで決められた担当 する処理を行う処理ユニットとを有し、
処理に必要な処理デ一夕が上記ローカルキャッシュに無い場合には、 必要なデータを要求する口一カルキャッシュフィルリクエストを出力し、 当該リ クエス卜に応じて送られてきたデータで上記ローカルキャッシュを更新する ことを特徴とする画像処理装置。
2 . 上記グローバルモジュールは、 口一カルモジュールからローカルキヤッシ ュフィルリクエストを受けると、 グローバルキャッシュのエントリ一をチェック し、 エントリーがあった場合には、 要求されたブロックデータを読み出し、 読み 出したデータをリクエストを送出したローカルモジュールに送出する
ことを特徴とする請求項 1記載の画像処理装置。
3 . 上記口一カルモジュールは、 グローバルキャッシュフィルリクエストを受 けると、 要求されたブロックデータを上記グローバルモジュールに出力し、 上記グローバルモジュールは、 ローカルモジュールから口一カルキャッシ ュフィルリクエストを受けると、 グローバルキャッシュのエントリーをチェック し、 エントリ一がなかった場合には、 要求されたブロックデータを保持する夕一 ゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを 送り、 その後夕ーゲットのローカルモジュールから送られてきたブロックデータ でグロ一バルキャッシュを更新するとともに、 当該ブロックデータを読み出し、 読み出したデータを口一カルキャッシュフィルリクエストを送ってきたローカル モジュールに対して送出する
ことを特徴とする請求項 1記載の画像処理装置。
4. 上記ローカルモジュールは、 グローバルキャッシュフィルリクエストを受 けると、 要求されたブロックデ一夕を上記グロ一バルモジュールに出力し、 上記グローバルモジュールは、 口一カルモジュールから口一カルキャッシ ュフィルリクエストを受けると、 グロ一バルキャッシュのエントリ一をチェック し、 エントリーがあった場合には、 要求されたブロックデ一夕を読み出し、 読み 出したデータをリクエストを送出したローカルモジュールに送出し、 エントリー がなかった場合には、 要求されたブロックデータを保持するターゲットの口一力 ルモジュールに対してグローバルキャッシュフィルリクエストを送り、 その後夕 ーゲッ卜の口一カルモジュールから送られてきたブロックデータでグロ一バルキ ャッシュを更新するとともに、 当該ブロックデ一夕を読み出し、 読み出したデー 夕をローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対 して送出する
ことを特徴とする請求項 1記載の画像処理装置。
5 . 上記演算用パラメ一夕を生成するコントローラを有し、
上記グローバルモジュールは、 上記コントローラで生成された演算用パラ メータを上記複数の口一カルモジュールに供給する
ことを特徴とする請求項 1記載の画像処理装置。
6 . 上記グローバルモジュールは、 各ローカルモジュール対応に設けられた複 数のチャネルブロックを有し、
上記複数のチャネルプロックは、 対応するローカルモジュールと口一カル キャッシュフィルリクエストおよびデー夕の授受を行う
ことを特徴とする請求項 1記載の画像処理装置。
7 . 上記複数の口一カルモジュールは、 上記グロ一バルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍に配置されている
ことを特徴とする請求項 6記載の画像処理装置。
8 . 上記複数の口一カルモジュールは、 上記グロ一バルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍で、 かつ、 対応するチャネルブロック の近傍にそれぞれ配置されている
ことを特徴とする請求項 6記載の画像処理装置。
9 . 上記グロ一バルモジュールは、 各ローカルモジュール対応に設けられた複 数のチャネルブロックを有し、
上記複数のチャネルブロックは、 対応する口一カルモジュールとローカル キャッシュフィルリクエスト、 グローバルキャッシュフィルリクエストおよびデ —夕の授受を行う
ことを特徴とする請求項 4記載の画像処理装置。
1 0 . 上記複数のローカルモジュールは、 上記グロ一バルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍に配置されている
ことを特徴とする請求項 9記載の画像処理装置。
1 1 . 上記複数のローカルモジュールは、 上記グロ一バルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍で、 かつ、 対応するチャネルブロック の近傍にそれぞれ配置されている ことを特徴とする請求項 9記載の画像処理装置。
1 2 . 上記並列処理は、 ピクセルレベルでの並列処理である
ことを特徴とする請求項 1記載の画像処理装置。
1 3 . 上記並列処理はテクスチャに関する処理である
ことを特徴とする請求項 1記載の画像処理装置。
1 4. 複数のモジュールが処理データを共有して並列処理を行う画像処理装置で あって、
グローバルモジュールと、 複数の口一カルモジュールとを含む複数のクラ ス夕を有し、
上記各クラスタの上記グローバルモジュールは、
上記複数の口一カルモジュールが並列に接続され、 上記口一カルモジ ユールで必要な処理データが記憶されるグローバルキヤッシュを有し、 口一カル モジュールからローカルキャッシュフィルリクエストを受けると、 上記グ口一バ ルキャッシュにある要求に応じたデ一夕を当該リクエストを出した口一カルモジ ユールに出力し、
上記複数のローカルモジュールは、
画像に関するデータが記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキヤッシュと、 演算用パラメ一夕および上記口一カルキャッシュに記憶されている処 理データに基づいてあらかじめ対応するメモリィン夕一リ一ブで決められた担当 する処理を行う処理ュニットとを有し、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、 必要なデータを要求するローカルキャッシュフィルリクエストを出力し、 当該リ クェストに応じて送られてきたデータで上記ローカルキャッシュを更新し、 各クラスタのグロ一バルモジュ一ルが互いにデ一夕の授受を行う
ことを特徴とする画像処理装置。
1 5 . 上記複数のクラスタは、 マトリクス状に配置され、 各クラスタのグロ一バ ルモジュールはリング状に接続されている
ことを特徴とする請求項 1 4記載の画像処理装置。
1 6 . 上記グローバレモジュールは、 口一カルモジュールからローカルキヤッシ ュフィルリクエストを受けると、 グローバルキャッシュのエントリーをチェック し、 エントリ一があった場合には、 要求されたブロックデータを読み出し、 読み 出したデータをリクエストを送出した口一カルモジュールに送出する
ことを特徴とする請求項 1 4記載の画像処理装置。
1 7 . 上記口一カルモジュールは、 グローバルキャッシュフィルリクエストを受 けると、 要求されたプロックデ一夕を上記グローバルモジュールに出力し、 上記グ口一バルモジュールは、 口一力ルモジュールから口一カルキャッシ ュフィルリクエス卜を受けると、 グローバルキャッシュのエントリ一をチェック し、 エントリ一がなかった場合には、 要求されたブロックデータを保持するター ゲットの口一カルモジュールに対してグロ一バルキヤッシュフィルリクエストを 送り、 その後夕一ゲットのローカルモジュールから送られてきたブロックデータ でグローバルキヤッシュを更新するとともに、 当該ブロックデ一夕を読み出し、 読み出したデータを口一カルキャッシュフィルリクエストを送ってきたローカル モジュールに対して送出する
ことを特徴とする請求項 1 4記載の画像処理装置。
1 8 . 上記ローカルモジュールは、 グロ一バルキャッシュフィルリクエストを受 けると、 要求されたブロックデータを上記グローバルモジュールに出力し、 上記グローバルモジュールは、 ローカルモジュールからローカルキヤッシ ュフィルリクエストを受けると、 グローバルキヤッシュのェントリ一をチェック し、 エントリ一があった場合には、 要求されたブロックデータを読み出し、 読み 出したデータをリクェストを送出した口一カルモジュールに送出し、 エントリ一 がなかった場合には、 要求されたブロックデ一夕を保持するターゲットのロー力 ルモジュールに対してグロ一バルキヤッシュフィルリクエストを送り、 その後夕 —ゲッ卜の口一カルモジュールから送られてきたブロックデータでグロ一バルキ ャッシュを更新するとともに、 当該ブロックデータを読み出し、 読み出したデー 夕をローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対 して送出する
ことを特徴とする請求項 1 4記載の画像処理装置。
1 9 . 上記演算用パラメ一夕を生成するコントローラを有し、
上記グローバルモジュールは、 上記コントローラで生成された演算用パラ メータを上記複数の口一カルモジュールに供給する
ことを特徴とする請求項 1記載の画像処理装置。
2 0 . 上記グローバルモジュールは、 各口一カルモジュール対応に設けられた複 数のチャネルプロックを有し、
上記複数のチヤネルブロックは、 対応するローカルモジュールとローカル キャッシュフィルリクエストおよびデー夕の授受を行う
ことを特徴とする請求項 1 4記載の画像処理装置。
2 1 . 上記複数のローカルモジュールは、 上記グロ一バルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍に配置されている
ことを特徴とする請求項 2 0記載の画像処理装置。
2 2 . 上記複数のローカルモジュールは、 上記グローバルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍で、 かつ、 対応するチャネルブロック の近傍にそれぞれ配置されている
ことを特徴とする請求項 2 0記載の画像処理装置。
2 3. 上記グローバルモジュールは、 各ローカルモジュール対応に設けられた複 数のチャネルプロックを有し、
上記複数のチャネルブロックは、 対応するローカルモジュールとローカル キャッシュフィルリクエスト、 グロ一バルキャッシュフィルリクエストおよびデ 一夕の授受を行う
ことを特徴とする請求項 1 8記載の画像処理装置。
2 4. 上記複数の口一カルモジュールは、 上記グローバルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍に配置されている
ことを特徴とする請求項 2 2記載の画像処理装置。
2 5 . 上記複数の口一カルモジュールは、 上記グローバルモジュールを中心とし て、 当該グローバルモジュールの周辺近傍で、 かつ、 対応するチャネルブロック の近傍にそれぞれ配置されている
ことを特徴とする請求項 2 2記載の画像処理装置。
2 6 . 上記並列処理は、 ピクセルレベルでの並列処理である
ことを特徴とする請求項 1 4記載の画像処理装置。
2 7 . 上記並列処理はテクスチャに関する処理である
ことを特徴とする請求項 1 4記載の画像処理装置。
2 8 . 複数のモジュールが処理データを共有して並列処理を行う画像処理方法で あって、
一つのグローバルモジュールに対して複数の口一カルモジュールを並列に 接続し、
キヤッシュの階層として、 複数の口一カルモジュールが共有するグローバ ルキャッシュと、 各口一カルモジュールがローカルに持つ口一カルキャッシュの 2階層とし、
グロ一バルモジュールにおいて、
グ口一バルキャッシュに口一カルモジュ一^ Iレで必要な処理デー夕を記 憶して、 口一カルモジュールから口一カルキヤッシュフィルリクェストを受ける と、 上記グロ一バルキャッシュにある要求に応じたデータを当該リクエストを出 した口一カルモジュールに出力し、
上記複数のローカルモジュールにおいて、 上記ローカルキャッシュに少なくとも上記処理データを記憶して、 演 算用パラメ一夕およびローカルキャッシュに記憶されている処理データに基づい てあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、 処理に必要な処理データが上記口一カルキヤッシュに無い場合には、 必要なデータを要求するローカルキャッシュフィルリクエストを出力し、 当該リ クェストに応じて送られてきたデータで上記ローカルキャッシュを更新する ことを特徴とする画像処理方法。
2 9 . 上記グローバルモジュールが口一カルモジュールから口一カルキャッシュ フィルリクエストを受けると、 グローバルキャッシュのエントリーをチェックし 、 エントリ一があった場合には、 要求されたブロックデ一夕を読み出し、 読み出 したデータをリクエス卜を送出したローカルモジュールに送出する
ことを特徴とする請求項 2 8記載の画像処理方法。
3 0 . 上記口一カルモジュールがグロ一バルキャッシュフィルリクエストを受け ると、 要求されたブロックデータを上記グロ一バルモジュールに出力し、
上記グロ一バルモジュールが、 ローカルモジュールからローカルキヤッシ ュフィルリクエストを受けると、 グ口一バルキャッシュのエントリ一をチェック し、 エントリーがなかった場合には、 要求されたブロックデータを保持する夕一 ゲットの口一カルモジュールに対してグロ一ノルキャッシュフィルリクエストを 送り、 その後ターゲットの口一カルモジュールから送られてきたブロックデータ でグローバルキヤッシュを更新するとともに、 当該プロックデータを読み出し、 読み出したデータを口一カルキャッシュフィルリクエストを送ってきたローカル モジュールに対して送出する
ことを特徴とする請求項 2 8記載の画像処理方法。
3 1 . 上記ローカルモジュールがグローバルキャッシュフィルリクエストを受け ると、 要求されたプロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールがローカルモジュールからローカルキヤッシュ フィルリクエストを受けると、 グローバルキャッシュのエントリーをチェックし 、 エントリ一があった場合には、 要求されたブロックデータを読み出し、 読み出 したデータをリクエストを送出した口一カルモジュールに送出し、 エントリ一が なかった場合には、 要求されたブロックデータを保持する夕一ゲットの口一カル モジュールに対してグロ一パルキヤッシュフィルリクエストを送り、 その後夕一 ゲッ卜の口一カルモジュールから送られてきたブロックデータでグローバルキヤ ッシュを更新するとともに、 当該ブロックデータを読み出し、 読み出したデータ をローカルキャッシュフィルリクエストを送ってきた口一カルモジュールに対し て送出する
ことを特徴とする請求項2 8記載の画像処理方法。
PCT/JP2002/012965 2001-12-12 2002-12-11 Appareil de traitement d'images et procede associe WO2003050759A1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP02788789A EP1460581B1 (en) 2001-12-12 2002-12-11 Image processing apparatus and method thereof
DE60222175T DE60222175T2 (de) 2001-12-12 2002-12-11 Bildverarbeitungsvorrichtung und dazugehöriges verfahren
US10/467,542 US7333115B2 (en) 2001-12-12 2002-12-11 Image processing apparatus and method thereof
KR1020037010543A KR100857657B1 (ko) 2001-12-12 2002-12-11 화상 처리 장치 및 그 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001-379350 2001-12-12
JP2001379350A JP3840966B2 (ja) 2001-12-12 2001-12-12 画像処理装置およびその方法

Publications (1)

Publication Number Publication Date
WO2003050759A1 true WO2003050759A1 (fr) 2003-06-19

Family

ID=19186758

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/012965 WO2003050759A1 (fr) 2001-12-12 2002-12-11 Appareil de traitement d'images et procede associe

Country Status (7)

Country Link
US (1) US7333115B2 (ja)
EP (1) EP1460581B1 (ja)
JP (1) JP3840966B2 (ja)
KR (1) KR100857657B1 (ja)
CN (1) CN1297939C (ja)
DE (1) DE60222175T2 (ja)
WO (1) WO2003050759A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100868396B1 (ko) * 2004-08-26 2008-11-11 인텔 코오퍼레이션 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법
US7750914B2 (en) 2004-08-26 2010-07-06 Intel Corporation Subdividing geometry images in graphics hardware

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937244B2 (en) * 2003-09-23 2005-08-30 Zhou (Mike) Hong Apparatus and method for reducing the memory traffic of a graphics rendering system
JP4030519B2 (ja) * 2004-04-15 2008-01-09 株式会社東芝 画像処理装置および画像処理システム
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8416251B2 (en) 2004-11-15 2013-04-09 Nvidia Corporation Stream processing in a video processor
CA2585157A1 (en) * 2004-11-15 2006-05-26 Nvidia Corporation Video processing
JP2006202211A (ja) * 2005-01-24 2006-08-03 Fujitsu Ltd 画像描画装置および画像描画方法
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8243069B1 (en) 2006-11-03 2012-08-14 Nvidia Corporation Late Z testing for multiple render targets
US8265169B2 (en) 2006-12-29 2012-09-11 Intel Corporation Video block memory read request translation and tagging
CN100533485C (zh) * 2007-01-17 2009-08-26 威盛电子股份有限公司 影像描绘方法
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
KR101427409B1 (ko) * 2008-05-30 2014-08-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 분산형 레벨 1 캐시 시스템 및 중앙집중형 레벨 2 캐시를 구비한 복합형 쉐이더
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US8314949B2 (en) * 2008-12-23 2012-11-20 Infoprint Solutions Company Llc Distributed global object cache
US7924860B1 (en) * 2008-12-23 2011-04-12 Juniper Networks, Inc. Maintaining data unit order in a network switching device
JP5404433B2 (ja) * 2010-01-08 2014-01-29 株式会社東芝 マルチコアシステム
CN103080981B (zh) * 2010-08-27 2016-03-02 矽锂铬艺术有限公司 选择纹理映射水平的方法及利用该方法的材质贴图系统
AU2010241218B2 (en) * 2010-11-03 2013-10-31 Canon Kabushiki Kaisha Method, apparatus and system for associating an intermediate fill with a plurality of objects
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
CN102542525B (zh) * 2010-12-13 2014-02-12 联想(北京)有限公司 一种信息处理设备以及信息处理方法
US20130007369A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Transparent Cache for Mobile Users
CN103034465B (zh) * 2011-09-29 2016-04-27 腾讯科技(深圳)有限公司 图像浏览方法及浏览系统
US10181176B2 (en) * 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5882357A (ja) * 1981-11-11 1983-05-17 Hitachi Ltd プロセツサ間通信方式
JPH0348979A (ja) * 1989-07-17 1991-03-01 Nec Corp 並列画像処理装置
JP2001273191A (ja) * 2000-03-24 2001-10-05 Seiko Epson Corp コンピュータシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0140674B1 (ko) * 1993-04-12 1998-06-15 모리시다 요이치 영상신호처리장치 및 처리방법
US5832534A (en) 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
CN1081368C (zh) * 1997-06-27 2002-03-20 清华大学 实现邻域图象数据并行存取的方法及邻域图象帧存储体
US6662173B1 (en) * 1998-12-31 2003-12-09 Intel Corporation Access control of a resource shared between components
US6904499B2 (en) * 2001-03-30 2005-06-07 Intel Corporation Controlling cache memory in external chipset using processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5882357A (ja) * 1981-11-11 1983-05-17 Hitachi Ltd プロセツサ間通信方式
JPH0348979A (ja) * 1989-07-17 1991-03-01 Nec Corp 並列画像処理装置
JP2001273191A (ja) * 2000-03-24 2001-10-05 Seiko Epson Corp コンピュータシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1460581A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100868396B1 (ko) * 2004-08-26 2008-11-11 인텔 코오퍼레이션 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법
US7750914B2 (en) 2004-08-26 2010-07-06 Intel Corporation Subdividing geometry images in graphics hardware
US8217942B2 (en) 2004-08-26 2012-07-10 Intel Corporation Subdividing geometry images in graphics hardware
US8462159B2 (en) 2004-08-26 2013-06-11 Intel Corporation Subdividing geometry images in graphics hardware

Also Published As

Publication number Publication date
EP1460581B1 (en) 2007-08-29
KR20040080920A (ko) 2004-09-20
CN1297939C (zh) 2007-01-31
EP1460581A4 (en) 2006-07-12
KR100857657B1 (ko) 2008-09-08
JP2003178294A (ja) 2003-06-27
EP1460581A1 (en) 2004-09-22
CN1491401A (zh) 2004-04-21
JP3840966B2 (ja) 2006-11-01
US20040111489A1 (en) 2004-06-10
DE60222175D1 (de) 2007-10-11
US7333115B2 (en) 2008-02-19
DE60222175T2 (de) 2008-05-21

Similar Documents

Publication Publication Date Title
WO2003050759A1 (fr) Appareil de traitement d'images et procede associe
US6426753B1 (en) Cache memory for high latency and out-of-order return of texture data
US11604649B2 (en) Techniques for efficiently transferring data to a processor
US9916643B1 (en) Multi-sample antialiasing optimization via edge tracking
US10515011B2 (en) Compression status bit cache and backing store
US6591347B2 (en) Dynamic replacement technique in a shared cache
US9214007B2 (en) Graphics processor having unified cache system
US7505036B1 (en) Order-independent 3D graphics binning architecture
US10262459B1 (en) Multiple simultaneous bin sizes
US5999196A (en) System and method for data multiplexing within geometry processing units of a three-dimensional graphics accelerator
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
EP0817117B1 (en) Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities and method for processing geometry data in said graphics accelerator
US6940512B2 (en) Image processing apparatus and method of same
US8533435B2 (en) Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict
EP1498824A2 (en) System and method for parallel execution of data generation tasks
US6762763B1 (en) Computer system having a distributed texture memory architecture
US20100110084A1 (en) Parallel pipeline graphics system
US20050219253A1 (en) Render-cache controller for multithreading, multi-core graphics processor
US9569348B1 (en) Method for automatic page table compression
US10810784B1 (en) Techniques for preloading textures in rendering graphics
JP2007525768A (ja) テクスチャ要求のためのレジスタベースのキューイング
US7385608B1 (en) State tracking methodology
US7170512B2 (en) Index processor
US11907717B2 (en) Techniques for efficiently transferring data to a processor
KR20060116916A (ko) 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SI SK TR

WWE Wipo information: entry into national phase

Ref document number: 2002788789

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 10467542

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 1020037010543

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 028048873

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWP Wipo information: published in national office

Ref document number: 1020037010543

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2002788789

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 2002788789

Country of ref document: EP