CN115082282A - 用于处理图像的图像处理器和方法 - Google Patents
用于处理图像的图像处理器和方法 Download PDFInfo
- Publication number
- CN115082282A CN115082282A CN202210482957.9A CN202210482957A CN115082282A CN 115082282 A CN115082282 A CN 115082282A CN 202210482957 A CN202210482957 A CN 202210482957A CN 115082282 A CN115082282 A CN 115082282A
- Authority
- CN
- China
- Prior art keywords
- unit
- memory
- contention
- data units
- requested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000012545 processing Methods 0.000 title abstract description 154
- 230000004044 response Effects 0.000 claims description 23
- 238000011156 evaluation Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 abstract description 68
- 230000008569 process Effects 0.000 abstract description 39
- 239000000872 buffer Substances 0.000 description 191
- ZAQJHHRNXZUBTE-NQXXGFSBSA-N D-ribulose Chemical compound OC[C@@H](O)[C@@H](O)C(=O)CO ZAQJHHRNXZUBTE-NQXXGFSBSA-N 0.000 description 21
- 230000004048 modification Effects 0.000 description 13
- 238000012986 modification Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000014759 maintenance of location Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 101100236200 Arabidopsis thaliana LSU1 gene Proteins 0.000 description 4
- 101100236201 Arabidopsis thaliana LSU2 gene Proteins 0.000 description 4
- 101100236202 Arabidopsis thaliana LSU3 gene Proteins 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000010977 unit operation Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 101100490488 Mus musculus Add3 gene Proteins 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 101100236203 Arabidopsis thaliana LSU4 gene Proteins 0.000 description 1
- 101100268665 Caenorhabditis elegans acc-1 gene Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011094 buffer selection Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及用于处理图像的图像处理器和方法。披露了一种计算扭曲结果的方法,该方法可以包括:针对一组目标像素中的每个目标像素执行扭曲计算过程,该扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收与目标像素相关联的第一权重和第二权重;通过阵列中的第二组处理单元接收与目标像素相关联的相邻源像素的值;通过第二组基于响应于相邻源像素的值和一对权重计算扭曲结果;并且将扭曲结果提供给存储器模块。
Description
本申请是申请日为2016年6月9日,申请号为201680045334.8,发明名称为“用于处理图像的图像处理器和方法”的申请的分案申请。
相关申请的交叉引用
本申请要求以下专利的优先权:于2015年6月10日提交的美国临时专利序列号62/173,389;于2015年6月10日提交的美国临时专利序列号62/173,392;于2016年2月2日提交的美国临时专利序列号62/290,383;于2016年2月2日提交的美国临时专利序列号62/290,389;于2016年2月2日提交的美国临时专利序列号62/290,392;于2016年2月2日提交的美国临时专利序列号62/290,395;于2016年2月2日提交的美国临时专利序列号62/290,400;于2016年2月9日提交的美国临时专利序列号62/293,145;于2016年2月9日提交的美国临时专利序列号62/293,147;以及于2016年2月11日提交的美国临时专利62/293,908,这些专利申请全部内容通过引用并入本文。
背景
在过去几年中,基于摄像头的驾驶员辅助系统(DAS)已经进入市场,并且大力发展自动驾驶汽车。DAS包括车道偏离报警(LDW)、自动远光灯控制(AHC)、行人识别和前向碰撞报警(FCW)。这些驾驶员辅助系统可以使用从安装在车辆中的相机捕获的多个图像帧中检测到的多个块(patches)的实时图像处理。
越来越需要提供用于支持DAS和/或自动驾驶汽车的高吞吐量小面积图像处理器(high throughput low footprint image processor)。
概述
提供了如权利要求和说明书中所示的系统、方法。
可以提供任何权利要求中的任何主题的任何组合。
可以提供在任何附图中和/或在说明书中公开的任何方法和/或方法步骤的任何组合。
可以提供在任何附图中和/或在说明书中公开的任何单元、设备和/或组件的任何组合。这种单元的非限制性示例包括收集单元、图像处理器等。
可以提供根据本申请的方法和/或方法步骤的任何组合、任何图像处理器和/或图像处理器组件的任何组合、任何图像处理器与任何收集单元和/或任何处理模块的任何组合。
根据本发明的实施例,可以提供一种计算扭曲结果(warp result)的方法,该方法可以包括针对一组目标像素中的每个目标像素执行扭曲计算过程(warp calculationprocess),该扭曲计算过程可以包括通过处理单元阵列中的第一组处理单元接收与目标像素相关联的第一权重和第二权重;通过该阵列的第二组处理单元接收与该目标像素相关联的相邻源像素的值;通过该第二组基于响应于该相邻源像素的值和一对权重来计算扭曲结果;并将该扭曲结果提供给存储器模块。
扭曲结果的计算可以包括在第二组中的处理单元之间转播(relay)一些相邻源像素的值。
扭曲结果的计算可以包括在第二组的处理单元之间转播通过第二组计算出的中间结果和一些相邻源像素的值。
扭曲结果的计算可以包括:通过第二组的第一处理单元计算第一对相邻源像素之间的第一差值和第二对相邻源像素之间的第二差值;将该第一差值提供给该第二组的第二处理单元;并且将第二差值提供给第二组的第三处理单元。
该扭曲结果的计算还可以包括:响应于第一权重通过第二组的第四处理单元计算第一修改权重;将来自第四处理单元的第一修改权重提供给第二组的第二处理单元;通过第二组的第二处理单元基于第一差值、第一相邻源像素和第一修改权重计算第一中间结果。
该扭曲结果的计算还可以包括:从第二组的第三处理单元向第二组的第六处理单元提供第二差值;从第二组的第五处理单元向第二组的第六处理单元提供第二相邻源像素;以及通过第二组的第六处理单元基于第二差值、第二相邻源像素和第一修改权重计算第二中间结果。
扭曲结果的计算还可以包括:从第二组的第六处理单元向第二组的第七处理单元提供第二中间结果;从第二组的第二处理单元向第二组的第七处理单元提供第一中间结果;并且通过第二组的第七处理单元基于第一中间结果和第二中间结果来计算第三中间结果。
扭曲结果的计算还可以包括:从第二组的第七处理单元向第二组的第八处理单元提供第三中间结果;从第二组的第六处理单元向第二组的第九处理单元提供第二中间结果;从第二组的第九处理单元向第二组的第八处理单元提供第二中间结果;从第二组的第三处理单元向第二组的第八处理单元提供第二修改权重;以及通过第二组的第八处理单元基于第二中间结果和第三中间结果以及第二修改权重来计算扭曲结果。
该方法可以包括通过阵列并行地执行与目标像素的子组相关联的多个扭曲计算过程。
该方法可以包括:从收集单元并行地提取与像素的子组中的每个目标像素相关联的相邻源像素;其中,收集单元可以包括组相联缓存(set associate cache)并且可以被布置为访问可以包括多个可独立访问的存储体的存储器模块。
该方法可以包括:针对像素的子组中的每个目标像素接收第一扭曲参数和第二扭曲参数;其中,第一扭曲参数和第二扭曲参数可以包括第一权重和第二权重以及指示与目标像素相关联的相邻源像素的位置的位置信息。
该方法可以包括向收集单元提供像素的子组中的每个目标像素的位置信息。
该方法可以包括通过收集单元将位置信息转换为相邻源像素的地址。
该方法可以包括通过阵列的第三组处理单元以及针对像素的子组的每个目标像素计算第一扭曲参数和第二扭曲参数;其中,第一扭曲参数和第二扭曲参数可以包括第一权重和第二权重以及指示与目标像素相关联的相邻源像素的位置的位置信息。
该方法从第三组到第一组感测第一权重和第二权重。
该方法可以包括向收集单元提供像素的子组的每个目标像素的位置信息。
该方法可以包括通过收集单元将位置信息转换为相邻源像素的地址。
根据本发明的一个实施例,可以提供一种用于计算扭曲结果的方法,该方法可以包括通过处理单元阵列中的第一组处理单元并针对像素的子组的每个目标像素,同时接收第一权重和第二权重;向收集单元同时提供针对像素的子组中的每个目标像素的指示与所述目标像素相关联的相邻源像素的位置的位置信息;通过该阵列并从所述收集单元同时接收与像素的子组中的每个目标像素相关联的相邻源像素;其中该阵列的不同组接收与像素的子组中的不同目标像素相关联的相邻源像素;并且通过该阵列的不同组来同时计算与不同目标像素相关的扭曲结果。
该方法可以包括:针对像素的子组中的每个目标像素接收或计算第一扭曲参数和第二扭曲参数;其中,该第一扭曲参数和第二扭曲参数可以包括第一权重和第二权重以及指示与目标像素相关联的相邻源像素的位置的位置信息。
根据本发明的一个实施例,可以提供一种用于计算扭曲结果的方法,该方法可以包括:针对目标像素组中的每个目标像素子组重复以下步骤:通过处理单元阵列接收与目标像素的子组中的每个目标像素相关联的相邻源像素;以及通过该阵列计算针对来自目标像素的子组的目标像素的扭曲结果;其中,计算可以包括计算中间结果并且在阵列中的处理单元之间转播中间结果中的至少一些。
阵列的每个处理单元可以直接耦合到阵列中的一组处理单元并且可以间接耦合到阵列中的另一组处理单元。术语“处理单元”和“数据处理器”可以以可互换的方式使用。
根据本发明的实施例,可以提供可以被配置成计算扭曲结果的图像处理器,该图像处理器可以被配置为针对目标像素的组中的每个目标像素执行扭曲计算过程,该扭曲计算过程可以包括通过该图像处理器的处理单元阵列的第一组处理单元接收与目标像素相关联的第一权重和第二权重;通过阵列中的第二组处理单元接收与目标像素相关联的相邻源像素的值;通过第二组基于响应于相邻源像素的值和一对权重来计算扭曲结果;并且将该扭曲结果提供给存储器模块。
根据本发明的实施例,可以提供一种图像处理器,该图像处理器可以被配置为计算扭曲结果,该图像处理器可以包括处理单元阵列,该处理单元阵列可以被配置为通过阵列中的第一组处理单元并针对像素的子组中的每个目标像素同时接收第一权重和第二权重;同时向该图像处理器的收集单元提供针对像素的子组中的每个目标像素的指示与该目标像素相关联的相邻源像素的位置的位置信息;通过该阵列并从该收集单元同时接收与像素的子组中的每个目标像素相关联的相邻源像素;其中,该阵列中的不同组接收与像素的子组中的不同目标像素相关联的相邻源像素;并且通过该阵列中的不同组来同时计算与不同目标像素相关的扭曲结果。
根据本发明的实施例,可以提供一种图像处理器,该图像处理器可以被配置为计算扭曲结果,该图像处理器可以被配置为针对目标像素的组中的每个目标像素子组重复以下步骤:通过该图像处理器的处理单元阵列接收与该目标像素的子组中的每个目标像素相关联的相邻源像素;并且通过该阵列计算针对来自目标像素的子组中的目标像素的扭曲结果;其中,计算可以包括计算中间结果并且在阵列中的处理单元之间转播中间结果中的至少一些。
根据本发明的实施例,可以提供一种用于计算视差的方法,该方法可以包括通过数据处理器阵列的第一组数据处理器来计算一组绝对差和(SAD);其中,该一组SAD可以与源像素和目标像素的子组相关联;其中,每个SAD可基于先前计算的SAD并且基于当前计算的另一个源像素与属于目标像素的子组的目标像素之间的绝对差来计算;以及通过该阵列的第二组数据处理器响应于该一组SAD的值确定目标像素的子组中的最佳匹配目标像素。
该一组SAD中的给定的SAD反映给定的矩形源像素阵列与给定的矩形目标像素阵列之间的绝对差;其中,该先前计算的SAD可以包括(a)第一先前计算的SAD,其反映在(i)与给定的矩形源像素阵列相差第一源像素列和第二源像素列的矩形源像素阵列与(ii)与给定的矩形目标像素阵列相差第一目标像素列和第二目标像素列的矩形目标像素阵列之间的绝对差;以及(b)第二先前计算的SAD,其反映了第一源列与第一源列之间的绝对差。
对于给定的SAD-另一个源像素可以是第二源像素列的最低源像素,并且属于目标像素的子组的目标像素可以是第二目标像素列的最低目标像素。
该方法可以包括:通过从第一先前计算的SAD中减去(a)第二先前计算的SAD和(b)在(i)可以位于第二目标像素列的顶部的目标像素与(ii)可以定位于第二源像素列的顶部的源像素之间的绝对差来计算中间结果;并且将在第二目标像素列的最低目标像素与第二源像素列的最低源像素之间的绝对差添加到中间结果,来计算给定的SAD。
该方法可以包括:针对给定的SAD,在数据处理器阵列中存储第一先前计算的SAD、第二先前计算的SAD、可以定位于第二目标像素列的顶部的目标像素以及可以定位于第二源像素列的顶部的源像素。
给定的SAD的计算可以在提取第二目标像素列的最低目标像素和第二源像素列的最低源像素之前进行。
目标像素的子组可以包括可以顺序地存储在存储器模块中的目标像素;其中,一组SAD的计算可以在从存储器模块提取目标像素的子组之前进行。
从存储器模块对目标像素的子组的提取可以通过可以包括内容可寻址存储器缓存的收集单元来执行。
目标像素的子组属于可以包括多子组目标像素的一组目标像素;其中,该方法可以包括针对每个目标像素子组重复以下步骤:通过第一组处理单元计算每个目标像素子组的一组SAD;并且通过该阵列的第二组数据处理器响应于目标像素的每一个子组的一组SAD的值找出该一组目标像素中的最佳匹配目标像素。
该方法可以包括:通过数据处理器阵列中的第一组数据处理器计算可以与多个源像素和多个目标像素子组相关联的多组SAD;其中,该多组SAD中的每个SAD可以基于先前计算的SAD和当前计算的绝对差而被计算出;以及通过该阵列的第二组数据处理器以及针对源像素响应于可以与源像素相关联的SAD的值找出最佳匹配目标像素。
多组SAD可以包括SAD的子组,SAD的每个子组可以与多个源像素和多个目标像素子组中的目标像素的多个子组相关联。
多个源像素可以属于矩形像素阵列的列并且可以彼此相邻。
多组SAD的计算可以包括并行计算SAD的不同子组中的SAD。
该方法可以包括以顺序方式计算属于SAD的相同子组中的SAD。
多个源像素可以是一对源像素。
多个源像素可以是四个源像素。
SAD的不同子组可以通过数据处理器阵列中的不同的第一子组数据处理器来进行计算。
该方法可以包括以顺序方式计算属于SAD的相同子组中的SAD;并且顺序地将与SAD的相同子组中的不同SAD相关的目标像素提取到数据处理器阵列。
根据本发明的实施例,可以提供一种图像处理器,其可以包括数据处理器阵列并且可以被配置为通过数据处理器阵列的第一组数据处理器计算一组绝对差和(SAD)来计算视差;其中,该组SAD可以与源像素和目标像素的子组相关联;其中,每个SAD可基于先前计算的SAD并基于当前计算的在另一个源像素与属于目标像素的子组中的目标像素之间的绝对差来进行计算;以及通过该阵列的第二组数据处理器响应于该一组SAD的值确定目标像素的子组中的最佳匹配目标像素。
根据本发明的实施例,可以提供一种收集单元,其可以包括可以被布置为接收用于检索多个被请求的数据单元的多个请求的输入接口;可以包括多个条目的缓存存储器可以被配置为存储多个标签和多个缓存的数据单元;其中,每个标签可以与缓存的数据单元相关联并且可以指示存储器模块中的与缓存存储器不同的并且存储缓存的数据单元的一组存储器单元;可以被布置成在多个标签与多个被请求的存储器组地址之间同时进行比较以提供比较结果的比较器阵列;其中每个被请求的存储器组地址可以指示存储器模块中的存储多个被请求的数据单元中的被请求的数据单元的一组存储器单元;争用评估单元;控制器,其可以被布置成:(a)基于该比较结果将多个被请求的数据单元分类为可以存储在缓存存储器中的缓存的数据单元和未被缓存的数据单元;以及(b)向争用评估单元发送关于缓存的和未被缓存的数据单元的信息;其中,该争用评估单元可以被布置成检查至少一个争用的发生;以及可以被布置为以无争用的方式向存储器模块请求任何未缓存的数据单元的输出接口。
比较器阵列可以被布置成在单个收集单元时钟周期期间在多个标签与多个被请求的存储器组地址之间同时进行比较;并且其中,该争用评估单元可以被布置成在单个收集单元时钟周期期间检查该至少一个争用的发生。
争用评估单元可以被布置成响应于缓存存储器的新标签而重新检查至少一个争用的发生。
收集单元可以被布置成以流水线方式操作;其中,流水线的每个阶段的持续时间可以是一个收集单元时钟周期。
存储体的一行中的每组存储器单元出自多个可独立存取的存储体;其中,该争用评估单元可以被布置成当两个未被缓存的数据单元属于相同的存储体中的不同行时确定发生潜在的争用。
缓存存储器可以是全相联存储器缓存(fully associative memory cache)。
收集单元可以包括地址转换器,其可以被布置成将包含在多个请求中的位置信息转换为多个被请求的存储器组地址。
多个被请求的数据单元可以属于数据单元的阵列;其中,位置信息包括在数据单元的阵列内的多个被请求的数据单元的坐标。
争用评估单元可以包括多组节点;其中,每组节点可以被布置为评估在多个被请求的存储器组地址与多个标签中的标签之间的争用。
根据本发明的实施例,可以提供一种用于对检索多个被请求的数据单元的多个请求进行响应的方法,该方法可以包括:通过收集单元的输入接口接收用于检索多个被请求的数据单元的多个请求;通过可包括多个条目的缓存存储器存储多个标签和多个缓存的数据单元;其中,每个标签可以与缓存的数据单元相关联并且可以指示存储器模块中的与缓存存储器不同的并且存储缓存的数据单元的一组存储器单元;通过比较器阵列在多个标签与多个请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址可以指示存储器模块中的存储多个被请求的数据单元中的被请求的数据单元的一组存储器单元;通过控制器基于比较结果将多个被请求的数据单元分类为可以存储在缓存存储器中的缓存的数据单元和未被缓存的数据单元;并且向争用评估单元发送关于缓存的和未被缓存的数据单元的信息;通过争用评估单元检查至少一个争用的发生;以及通过输出接口以无争用的方式向存储器模块请求任何未被缓存的数据单元。
根据本发明的实施例,可以提供一种处理模块,其可以包括数据处理器阵列;其中,数据处理器阵列中的多个数据处理器中的每个数据处理器单元可以直接耦合到数据处理器阵列中的一些数据处理器,可以间接耦合到数据处理器阵列中的一些其他数据处理器,并且可以包括用于在数据处理器的转播端口之间转播数据的转播信道。
多个数据处理器中的每个数据处理器的转播信道可以表现基本上为零的等待时间。
多个数据处理器中的每个数据处理器可以包括核心;其中,核心可以包括算术逻辑单元和存储器资源;其中,多个数据处理器的核心可以通过可配置网络彼此耦合。
多个数据处理器中的每个数据处理器可以包括可配置网络的多个数据流组件。
多个数据处理器中的每个数据处理器可以包括可以直接耦合到第一组邻居(neighbor)的第一非转播输入端口。
第一组邻居可以由数据处理器形成,该数据处理器可以位于距离数据处理器少于四个数据处理器的距离内。
数据处理器的第一非转播输入端口可以直接耦合到第一组邻居的数据处理器的转播端口。
数据处理器还可以包括第二非转播输入端口,其可以直接耦合到第一组邻居的数据处理器的非转播端口。
数据处理器的第一非转播输入端口可以直接耦合到第一组邻居的数据处理器的非转播端口。
第一组邻居可以由八个数据处理器组成。
多个数据处理器中的每个数据处理器的第一转播端口可以直接耦合到第二组邻居。
对于多个数据处理器中的每个数据处理器,第二组邻居不同于第一组邻居。
对于多个数据处理器中的每个数据处理器,第二组邻居可以包括相比于属于第一组邻居的任何数据处理器更远离数据处理器的数据处理单元。
除了多个数据处理器之外,处理器阵列还可以包括至少一个其他数据处理器。
数据处理器阵列中的数据处理器可以按行和列进行布置。
每行中的一些数据处理器可以以循环的方式彼此耦合。
每行中的数据处理器可以由共享的微控制器来控制。
多个数据处理器中的每个数据处理器可以包括配置指令寄存器;其中,指令寄存器可以被布置为在配置过程期间接收配置指令并且将配置指令存储在配置指令寄存器中;其中,给定行的数据处理器可以通过给定的共享微控制器来控制;其中,给定行中的每个数据处理器可以被布置为接收用于从给定的共享微控制器中选择所选择的配置指令的选择信息,并且在特定条件下配置数据处理器以根据所选择的配置指令进行操作。
当数据处理器可以被布置为响应于选择信息时,该特定条件可以被满足;其中,当数据处理器可以被布置成忽略选择信息时,该特定条件可以不被满足。
多个数据处理器中的每个数据处理器可以包括控制器、算术逻辑单元、寄存器文件和配置指令寄存器;其中,指令寄存器可以被布置成在配置过程期间接收配置指令并且将配置指令存储在配置指令寄存器中;其中,控制器可以被布置成接收用于选择所选择的配置指令的选择信息并且配置数据处理器以根据所选择的配置指令来操作。
多个数据处理器中的每个数据处理器可以包括多达三个配置指令寄存器。
根据本发明的实施例,可以提供一种用于操作可以包括数据处理器阵列的处理模块的方法;其中,该操作可以包括通过阵列中的数据处理器来处理数据;其中,数据处理器阵列中的多个数据处理器中的每个数据处理器单元可以直接耦合到数据处理器阵列中的一些数据处理器,可以间接耦合到数据处理器阵列中的一些其他数据处理器,以及使用一个或更多个数据处理器的一个或更多个转播信道在处理数据处理器的转播端口之间转播数据。
根据本发明的实施例,可以提供一种图像处理器,其可以包括数据处理器阵列、第一微控制器、缓冲单元和第二微控制器;其中,阵列中的数据处理器可以被布置成在数据处理器配置过程期间接收数据处理器配置指令;其中,缓冲单元可以被布置成在缓冲单元配置过程期间接收缓冲单元配置指令;其中,第一微控制器可以被布置成通过向数据处理器提供数据处理器选择信息来控制数据处理器的操作;其中,数据处理器可以被布置成响应于数据处理器选择信息来选择所选择的数据处理器配置指令并且根据所选择的数据处理器配置指令来执行一个或更多个数据处理操作;其中,第二微控制器可以被布置为通过向缓冲单元提供缓冲单元选择信息来控制缓冲单元的操作;其中,缓冲单元可以被布置为响应于缓冲单元选择信息的至少一部分来选择所选择的缓冲单元配置指令并且根据所选择的缓冲单元配置指令来执行一个或更多个缓冲单元操作;并且其中,数据处理器选择信息的大小可以是数据处理器配置指令的大小的一部分。
阵列中的数据处理器可以按照数据处理器组来进行布置,其中,不同的数据处理器组可以由不同的第一微处理器控制。
数据处理器组可以是一行数据处理器。
相同组的数据处理器中的数据处理器并行地接收相同的数据处理器选择信息。
缓冲单元可以包括多个存储器资源组;其中,不同的存储器资源组可以被耦合到不同的数据处理器组。
图像处理器可以包括第二微控制器;其中,不同的第二微控制器可以被布置来控制不同的存储器资源组。
不同的存储器资源组可以是不同的移位寄存器组。
不同的移位寄存器组可以被耦合到可以被布置成从存储器模块接收数据的多个缓冲器组。
多个缓冲器组可以不受第二微控制器控制。
缓冲单元选择信息选择在多个存储器资源组与多个数据处理器组之间的连接性。
每个数据处理器可以包括算术逻辑单元和数据流组件;其中,数据处理器配置指令定义算术逻辑单元的操作码并且定义经由数据流组件到算术逻辑单元的数据流。
图像处理器还可以包括可以包括多个存储体的存储器模块;其中,缓冲单元可以被布置成从存储器模块提取数据并且将数据发送到数据处理器阵列。
第一微控制器共享程序存储器。
每个第一微控制器可以包括存储第一指令地址、多个头指令和多个循环指令的控制寄存器。
图像处理器可以包括可以耦合到缓冲单元的存储器模块;其中,存储器模块可以包括存储缓冲器、加载存储单元和多个存储体;其中,存储缓冲器可以由第三微控制器控制。
存储缓冲器可以被布置成在存储缓冲器配置过程期间接收存储缓冲器配置指令;其中,第三微控制器可以被布置成通过向存储缓冲器提供存储缓冲器选择信息来控制存储缓冲器的操作。
图像处理器可以包括可以由第三微处理器控制的存储缓冲器。
第三微控制器、第一微控制器和第二微控制器可以具有相同的结构。
根据本发明的实施例,可以提供一种图像处理器,其可以包括多个可配置电路和多个微控制器;其中,多个可配置电路可以包括存储器电路和多个数据处理器;其中,每个可配置电路可以被布置为存储高达有限量的配置指令;其中,多个微控制器可以被布置为通过向多个可配置电路重复提供选择信息来控制多个可配置电路,该选择信息用于通过每个可配置电路从有限量的配置指令中选择所选择的配置指令。
多个可配置电路可以包括可以包括多个存储体的存储器模块;以及用于在存储器模块与数据处理器之间交换数据的缓冲单元。
选择信息的大小不超过两个比特。
根据本发明的实施例,可以提供一种用于配置可以包括多个可配置电路和多个微控制器的图像处理器的方法;其中,该多个可配置电路可以包括存储器电路和多个数据处理器;其中,该方法可以包括在每个可配置电路中存储高达有限量的配置指令;通过多个微控制器向多个可配置电路重复提供选择信息来控制多个可配置电路,该选择信息用于通过每个可配置电路从该有限量的配置指令中选择所选择的配置指令。
根据本发明的实施例,可以提供一种用于操作图像处理器的方法,该方法可以包括:提供图像处理器,该图像处理器可以包括数据处理器阵列;可以包括多个存储体的存储器模块;缓冲单元;收集单元;和多个微控制器;通过多个微处理器、存储器模块和缓冲单元的一部分控制数据处理器阵列;通过缓冲单元从存储器模块中检索数据;通过缓冲单元将数据发送到数据处理器阵列;通过收集单元接收用于从存储器模块检索多个被请求的数据单元的多个请求;通过收集单元将多个被请求的数据单元发送到数据处理器阵列。
根据本发明的实施例,可以提供一种用于配置图像处理器的方法,该图像处理器可以包括数据处理器阵列、第一微控制器、缓冲单元和第二微控制器的阵列;其中,该方法可以包括在数据处理器配置过程期间向阵列中的数据处理器提供数据处理器配置指令;在缓冲单元配置过程期间向缓冲单元提供缓冲单元配置指令;通过第一微控制器向数据处理器提供数据处理器选择信息来控制数据处理器的操作;通过数据处理器响应于数据处理器选择信息选择所选择的数据处理器配置指令,并且根据所选择的数据处理器配置指令执行一个或更多个数据处理操作;通过第二微控制器向缓冲单元提供缓冲单元选择信息来控制缓冲单元的操作;通过缓冲单元响应于缓冲单元选择信息的至少一部分选择所选择的缓冲单元配置指令,并且根据所选择的缓冲单元配置指令执行一个或更多个缓冲单元操作;其中,数据处理器选择信息的大小可以是数据处理器配置指令的大小的一部分。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于计算扭曲结果的指令,所述指令一旦被处理单元阵列执行则导致以下步骤的执行:针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过所述处理单元阵列中的第一组处理单元接收包括与所述目标像素相关联的第一权重和第二权重的一对权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重来计算扭曲结果;以及将所述扭曲结果提供给存储器模块。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于计算扭曲结果的指令,所述指令一旦被处理单元阵列执行则导致以下步骤的执行:通过所述处理单元阵列中的第一组处理单元并针对像素子组中的每个目标像素同时接收第一权重和第二权重;向收集单元同时提供针对所述像素子组中的每个目标像素的指示与所述目标像素相关联的相邻源像素的位置的位置信息;通过所述阵列并从所述收集单元同时接收与所述像素子组中的每个目标像素相关联的相邻源像素;其中,所述阵列中的不同组接收与所述像素子组中的不同目标像素相关联的相邻源像素;以及通过所述阵列的不同组同时计算与所述不同目标像素相关的扭曲结果。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于计算扭曲结果的指令,所述指令一旦被处理单元阵列执行则导致以下步骤的执行:针对一组目标像素中的每个目标像素子组重复以下步骤:通过所述处理单元阵列接收与所述目标像素子组中的每个目标像素相关联的相邻源像素;以及通过所述阵列计算针对来自所述目标像素子组中的目标像素的扭曲结果;其中,所述计算包括计算中间结果并且在所述阵列中的处理单元之间转播所述中间结果中的至少一些。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储用于计算视差的指令,所述指令一旦被数据处理器阵列执行则导致以下步骤的执行:通过所述数据处理器阵列中的第一组数据处理器计算一组绝对差和(SAD);其中,所述一组SAD与源像素和目标像素子组相关联;其中,每个SAD是基于先前计算的SAD并基于当前计算的在另一个源像素与属于所述目标像素子组的目标像素之间的绝对差计算的;以及通过所述阵列中的第二组数据处理器响应于所述一组SAD的值确定所述目标像素子组中的最佳匹配目标像素。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,其存储用于对检索多个被请求的数据单元的多个请求进行响应的指令,该指令一旦被收集单元执行则导致执行以下步骤:通过收集单元的输入接口接收用于检索多个被请求的数据单元的多个请求;通过包括多个条目的缓存存储器存储多个标签和多个缓存的数据单元;其中,每个标签与缓存的数据单元相关联,并且指示存储器模块中的与缓存存储器不同的并存储缓存的数据单元的一组存储器单元;通过比较器阵列在多个标签与多个被请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址指示存储器模块中的存储多个被请求的数据单元中的被请求的数据单元的一组存储器单元;通过控制器基于比较结果将多个被请求的数据单元分类为存储在缓存存储器中的缓存的数据单元和未被缓存的数据单元;并且向争用评估单元发送关于缓存的和未被缓存的数据单元的信息;通过争用评估单元检查至少一个争用的发生;以及通过输出接口以无争用的方式向存储器模块请求任何未被缓存的数据单元。
根据本发明的实施例,可以提供一种存储用于操作处理模块的指令的非暂时性计算机可读介质,该指令一旦被处理模块执行则导致执行以下步骤:通过处理模块中的数据处理器阵列中的数据处理器来处理数据;其中,数据处理器阵列中的多个数据处理器中的每个数据处理器单元直接耦合到数据处理器阵列中的一些数据处理器,间接耦合到数据处理器阵列中的一些其他数据处理器,并且使用一个或更多个数据处理器的一个或更多个转播信道在数据处理器的转播端口之间转播数据。
根据本发明的实施例,可以提供一种非暂时性计算机可读介质,其存储用于配置包括多个可配置电路和多个微控制器的图像处理器的指令;其中,多个可配置电路包括存储器电路和多个数据处理器,其中,该指令一旦被该图像处理器执行则导致执行以下步骤:在每个可配置电路中存储高达有限量的配置指令;通过该多个微控制器向多个可配置电路重复提供选择信息来控制多个可配置电路,该选择信息用于通过每个可配置电路从有限量的配置指令中选择所选择的配置指令。
一种存储用于操作图像处理器的指令的非暂时性计算机可读介质,该图像处理器包括数据处理器阵列;包括多个存储体的存储器模块;缓冲单元;收集单元;和多个微控制器;其中,通过该图像处理器执行则导致执行以下步骤:通过该缓冲单元将数据发送到数据处理器阵列;通过收集单元接收用于从存储器模块检索多个被请求的数据单元的多个请求;通过收集单元将多个被请求的数据单元发送到数据处理器阵列。
一种存储用于配置图像处理器的指令的非暂时性计算机可读介质,该图像处理器包括数据处理器阵列、第一微控制器、缓冲单元和第二微控制器;其中,该多个可配置电路包括存储器电路和多个数据处理器,其中,该指令一旦被该图像处理器执行则导致执行以下步骤:在数据处理器配置过程期间向该阵列中的数据处理器提供数据处理器配置指令;在缓冲单元配置过程期间向缓冲单元提供缓冲单元配置指令;通过第一微控制器向数据处理器提供数据处理器选择信息来控制数据处理器的操作;通过数据处理器响应于数据处理器选择信息选择所选择的数据处理器配置指令,并且根据所选择的数据处理器配置指令执行一个或更多个数据处理操作;通过该第二微控制器向缓冲单元提供缓冲单元选择信息来控制缓冲单元的操作;通过缓冲单元响应于缓冲单元选择信息的至少一部分来选择所选择的缓冲单元配置指令,并且根据所选择的缓冲单元配置指令执行一个或更多个缓冲单元操作;其中,数据处理器选择信息的大小是数据处理器配置指令的大小的一部分。
根据本发明的实施例,可以提供一种方法,包括:
针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元的阵列中的第一组处理单元接收包括与所述目标像素相关联的第一权重和第二权重的一对权重;通过所述阵列的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重计算扭曲结果;以及将所述扭曲结果提供给存储器模块;
通过所述数据处理器的阵列中的第一组数据处理器计算一组绝对差分和(SAD);其中,所述一组SAD与源像素和目标像素子组相关联;其中,每个SAD是基于先前计算的SAD并基于当前计算的在另一个源像素与属于所述目标像素子组的目标像素之间的绝对差计算的;以及通过所述阵列中的第二组数据处理器响应于所述一组SAD的值确定所述目标像素子组中的最佳匹配目标像素。
根据本发明的实施例,可以提供一种方法,包括:(a)针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收包括与所述目标像素相关联的第一权重和第二权重的一对权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重计算扭曲结果;并且将所述扭曲结果提供给存储器模块;以及(b)通过收集单元的输入接口接收用于检索多个被请求的数据单元的多个请求;通过包括多个条目的缓存存储器存储多个标签和多个缓存的数据单元;其中,每个标签与缓存的数据单元相关联并且指示存储器模块中的与所述缓存存储器不同的并存储该缓存的数据单元的一组存储器单元;通过比较器阵列在所述多个标签与多个被请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址指示所述存储器模块中的存储所述多个被请求的数据单元中的被请求的数据单元的一组存储器单元;通过控制器基于所述比较结果将所述多个被请求的数据单元分类为存储在所述缓存存储器中的缓存的数据单元和未被缓存的数据单元;以及向争用评估单元发送关于缓存的数据单元和未被缓存的数据单元的信息;通过所述争用评估单元检查至少一个争用的发生;以及通过输出接口以无竞争的方式向所述存储器模块请求任何未被缓存的数据单元。
根据本发明的实施例,可以提供一种方法,包括:(a)针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收包括与所述目标像素相关联的第一权重和第二权重的一对权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重来计算扭曲结果;并且将所述扭曲结果提供给存储器模块;和(b)操作包括数据处理器阵列的处理模块;其中,所述操作包括通过所述阵列中的数据处理器处理数据;其中,所述数据处理器阵列中的多个数据处理器中的每个数据处理器单元直接耦合到所述数据处理器阵列中的一些数据处理器,间接耦合到所述数据处理器阵列中的一些其他数据处理器,并且使用一个或更多个数据处理器中的一个或更多个转播信道在所述数据处理器的转播端口之间转播数据。
根据本发明的实施例,可以提供一种方法,其包括:(a)针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收一对权重,所述一对权重包括与所述目标像素相关联的第一权重和第二权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重来计算扭曲结果;并且将所述扭曲结果提供给存储器模块;和(b)配置包括多个可配置电路和多个微控制器的图像处理器;其中,所述多个可配置电路包括存储器电路和多个数据处理器;其中,配置所述图像处理器包括在每个可配置电路中存储高达有限量的配置指令;通过向所述多个可配置电路重复提供选择信息来通过所述多个微控制器控制所述多个可配置电路,所述选择信息用于通过每个可配置电路从所述有限量的配置指令中选择所选择的配置指令。
根据本发明的实施例,可以提供一种方法,包括:(a)针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收一对权重,所述一对权重包括与所述目标像素相关联的第一权重和第二权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重来计算扭曲结果;并且将所述扭曲结果提供给存储器模块;和(b)操作图像处理器,其中,操作所述图像处理器包括提供图像处理器,所述图像处理器包括数据处理器阵列;包括多个存储体的存储器模块;缓冲单元;收集单元;和多个微控制器;通过所述多个微控制器、所述存储器模块的一部分和所述缓冲单元控制所述数据处理器阵列;通过所述缓冲单元从所述存储器模块中检索数据;通过所述缓冲单元将所述数据发送到所述数据处理器阵列;通过所述收集单元接收从所述存储器模块检索多个被请求的数据单元的多个请求;通过所述收集单元将所述多个被请求的数据单元发送到所述数据处理器阵列。
根据本发明的实施例,可以提供一种方法,其包括:(a)针对一组目标像素中的每个目标像素执行扭曲计算过程,所述扭曲计算过程包括:通过处理单元阵列中的第一组处理单元接收一对权重,所述一对权重包括与所述目标像素相关联的第一权重和第二权重;通过所述阵列中的第二组处理单元接收与所述目标像素相关联的相邻源像素的值;通过所述第二组基于响应于所述相邻源像素的值和所述一对权重来计算扭曲结果;并且将所述扭曲结果提供给存储器模块;和(b)配置包括数据处理器的阵列、第一微控制器、缓冲单元和第二微控制器的图像处理器;其中,配置所述图像处理器包括:在数据处理器配置过程期间向所述阵列中的数据处理器提供数据处理器配置指令;在缓冲单元配置过程期间向所述缓冲单元提供缓冲单元配置指令;通过向数据处理器提供数据处理器选择信息来通过所述第一微控制器控制所述数据处理器的操作;通过所述数据处理器响应于所述数据处理器选择信息选择所选择的数据处理器配置指令,并且根据所选择的数据处理器配置指令执行一个或更多个数据处理操作;通过向所述缓冲单元提供缓冲单元选择信息来通过所述第二微控制器控制所述缓冲单元的操作;通过所述缓冲单元响应于所述缓冲单元选择信息的至少一部分选择所选择的缓冲单元配置指令,并且根据所选择的缓冲单元配置指令执行一个或更多个缓冲单元操作;其中,数据处理器选择信息的大小是数据处理器配置指令的大小的一部分。
附图简述
视为本发明的主题在说明书的结束部分中被特别指出并被清楚地要求保护。然而,当与附图一起阅读时,通过参考以下详细描述,可最好地理解本发明的关于操作的方法和组织以及其目的、特征和优点,其中:
图1示出根据本发明的实施例的方法;
图2示出根据本发明的实施例的图像处理器;
图3示出根据本发明的实施例的图像处理器;
图4示出根据本发明的实施例的图像处理器的一部分;
图5示出根据本发明的实施例的时钟树;
图6示出根据本发明的实施例的存储器模块;
图7示出了根据本发明的实施例的在存储器模块的LSU与存储器模块的存储体之间的映射;
图8示出根据本发明的实施例的存储缓冲器;
图9和图10示出根据本发明的实施例的指令Row,Sel;
图11示出根据本发明的实施例的缓冲单元;
图12示出根据本发明的实施例的收集单元;
图13是示出包括地址转换、缓存命中/未命中、争用和信息输出的过程的时序图;
图14示出根据本发明的实施例的争用评估单元;
图15和图16示出了根据本发明实施例的数据处理单元;
图17示出根据本发明的实施例的扭曲计算方法;
图18和图19示出了根据本发明的实施例的执行扭曲计算的数据处理器阵列;
图20示出根据本发明的实施例的从各种数据处理器输出的扭曲参数;
图21示出根据本发明的实施例的执行扭曲计算的数据处理器组;
图22示出根据本发明的实施例的扭曲计算方法;
图23示出根据本发明的实施例的处理单元的组;
图24示出了第一子组源像素、第一子组目标像素、第二子组源像素和第二子组目标像素;
图25示出具有中心像素SB的源像素的子组SG(B);
图26示出了具有中心像素TB的目标像素(未示出)的对应子组TG(B);
图27示出根据本发明的实施例的方法;
图28示出了根据本发明实施例的通过DPA处理的八个源像素和三十二个目标像素;
图29示出根据本发明的实施例的源像素的阵列;
图30示出根据本发明的实施例的目标像素的阵列;
图31示出了根据本发明的实施例的多组数据处理器DPU;
图32示出了根据本发明的实施例的八组数据处理器DPU-每个组包括四个DPU;和
图33示出根据本发明的实施例的扭曲计算方法。
附图的详细描述
在以下详细描述中,阐述了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。在其他情况下,没有详细描述公知的方法、过程和部件,以免模糊本发明。
视为本发明的主题在说明书的结束部分中被特别指出并被清楚地要求保护。然而,当与附图一起阅读时,通过参考以下详细描述,可最好地理解本发明的关于操作的方法和组织以及其目的、特征和优点。
应当理解,为了说明的简单和清楚,图中所示的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可以相对于其他元件被放大。此外,在认为适当的情况下,参考数字可在图中重复以指示对应或类似的元件。
因为本发明的所示实施例在很大程度上可以使用本领域技术人员已知的电子部件和电路来实现,所以细节将不会在比如上所述的必须考虑的那些在更大程度上进行解释,以便理解和领悟本发明的基本概念,并且以便不混淆或分散本发明的教导。
说明书中对方法的任何引用应当经必要修改而应用于能够执行该方法的系统,并且应当经必要修改而应用于非暂时性计算机可读介质,该非暂时性计算机可读介质存储一旦由计算机执行就导致执行方法的指令。例如,本申请提供的任何方法步骤可以由系统执行。在这个意义上,系统可以是图像处理器、收集单元或图像处理器的任何组件。可以提供一种存储指令的非暂时性计算机可读介质,一旦该指令被计算机执行就导致执行本申请提供的每一个方法。
说明书中对系统和任何其他组件的任何引用应当经必要修改而应用于可以由存储器设备执行的方法,并且应当经必要修改而应用于存储可以由存储器设备执行的指令的非暂时性计算机可读介质。例如,可以提供本申请所描述的图像处理器执行的方法和/或方法步骤。
说明书中对非暂时性计算机可读介质的任何引用应当经必要修改而应用于能够执行存储在非暂时性计算机可读介质中的指令的系统,并且应当经适当修改而应用于可以由计算机执行的方法,该计算机读取存储在非暂时性计算机可读介质中的指令。
可以提供任何附图、说明书的任何部分和/或任何权利要求中列出的任何模块或单元的任何组合。特别是可以提供任何要求保护的特征的任何组合。
像素可以是由相机获得的图像元素,可以是经处理的图像元素。
术语“行(row)”和“行(line)”以可互换的方式使用。
术语汽车被用作车辆的非限制性示例。
为了简化说明,一些附图和一些以下文字包括数字示例(例如总线宽度、存储器行数,寄存器数量、寄存器长度、数据单元大小、指令大小、每单元或模块的组件数量、微处理器的数量、阵列中每行和/或每列的数据处理器的数量)。每个数字示例仅仅是一个非限制性示例。
图1示出根据本发明的实施例的方法90。
系统90可以是DAS,自动驾驶汽车控制模块的一部分等。
系统90可以安装在汽车10中。系统90的至少一些部件在车辆内。
系统90可以包括第一相机81、第一处理器83、存储单元85、人机接口86和图像处理器100。这些组件可以经由总线或网络82或通过任何其他布置而彼此耦合。
系统90可以包括附加的相机和/或附加的处理器和/或附加的图像处理器。
第一处理器83可以确定图像处理器100应当执行哪个任务并且指示图像处理器100相应地操作。
要注意的是,图像处理器100可以是第一处理器83的一部分,并且它可以是任何其他系统的一部分。
人机接口86可以包括显示器、扬声器、一个或更多个发光二极管、麦克风或任何其他类型的人机接口。人机接口可以与汽车驾驶员的移动设备进行通信,与汽车的多媒体系统等进行通信。
图2示出根据本发明的实施例的图像处理器100。
主端口101和从端口103提供在系统90的图像处理器100与任何其它组件之间的接口。
图像处理器100包括:
1)用于访问诸如存储单元85的外部存储器资源的直接存储器访问(DMA)。
2)控制器,诸如但不限于标量单元104。
3)标量单元(SU)程序存储器106。
4)标量单元(SU)数据存储器108。
5)存储器模块(MM)200。
6)MM控制单元290。
7)收集单元(GU)300。
8)缓冲单元(BU)400。
9)BU控制单元490。
10)数据处理阵列(DPA)500。
11)DPA控制单元590。
12)配置总线130。
13)多路复用器和缓冲器110、112、114、116、118、120。
14)总线132、133、134、135、136和137。
15)PMA状态和配置缓冲器109。
图像处理器100还包括多个微控制器。为了简化说明,这些微控制器在图4中示出。
DMA102耦合到多路复用器112、114和120。标量单元104耦合到缓冲器118和多路复用器112。缓冲器118被耦合到多路复用器116。缓冲器110耦合到多路复用器112、116和114。多路复用器112耦合到SU程序存储器106。多路复用器114耦合到SU数据存储器108。
存储器单元200经由(单向)总线132耦合到收集单元300,经由(单向)总线134耦合到缓冲单元400并且经由(单向)总线133耦合到DPA500。
收集单元300经由(单向)总线135耦合到缓冲单元400并经由(单向)总线137耦合到DPA500。缓冲单元400经由(单向)总线136耦合到DPA 500。
图像处理器的单元可以通过其他总线、通过额外的少数总线、通过互连和/或网络、通过其他宽度和方向性的总线等相互耦合。
要注意的是,图2的收集单元300、缓冲单元400、DPA 500、存储器模块200、标量单元104、SU程序存储器106、SU数据存储器108和任何其他多路复用器和/或缓冲器可以以其他方式、通过附加的和/或其他的公共总线、网络、网格等彼此耦合。
标量单元104可以控制图像处理器100的其他部件执行任务。标量单元104可以接收(例如来自图1的第一处理器83的)执行哪些任务的指令并且可以从SU程序存储器106提取相关指令。
标量单元104可以确定SB控制单元290、BU控制单元490和DPA控制单元590内的微控制器将执行哪些程序。
由SB控制单元290的微控制器执行的程序控制存储器模块200的存储缓冲器(未示出)。由BU控制单元490的微控制器执行的程序控制缓冲单元400。由DPA控制单元590的微控制器执行的程序控制DPA 500的数据处理单元。
任何所述微控制器可以通过提供用于选择已经存储在受控模块或单元中的配置指令的短的选择信息(例如2-3比特、少于一个字节或比所选择的配置指令的比特数小的任何数目的比特)来控制任何模块或单元。这允许减少流量并执行快速的配置更改(因为配置更改可能需要在已存储在相关单元或模块中的不同配置寄存器之间进行选择)。
应该注意的是,控制单元的数量和它们在图像处理器的组件之间的分配可能不同于图2中所示的那些。
存储器模块200是图像处理器100的最高级的存储器资源。缓冲单元400和收集单元300是图像处理器100的较低级的存储器资源,并且可以被配置为从存储器模块200提取数据并将数据提供给DPA 500。DPA 500可以将数据直接发送到存储器模块200。
DPA 500包括多个数据处理器并被布置成执行计算任务,例如但不限于图像处理算法。图像处理算法的非限制性示例包括扭曲算法(warp algorithm)、视差等。
收集单元300包括缓存存储器。收集单元300被配置为从DPA 500接收请求,以从缓存存储器或从存储器单元中提取多个数据单元(诸如像素)并提取被请求的像素。收集单元300可以以流水线的方式操作并且具有非常低的延迟(例如,一个(或少于五个或十个)时钟周期)的有限数量(例如三个)的流水线级。如下所示,收集单元也可以在附加模式下提取数据单元,同时使用存储器模块的地址生成器来提取信息。
缓冲单元400被配置为充当存储器模块200与DPA 500之间的数据的缓冲器。缓冲单元400可以被布置为并行地向DPA 500的多个数据处理器提供数据。
配置总线130耦合到DMA 102、存储器模块200、收集单元300、缓冲单元400和DPA500。
DPA 500展示了可以支持并行和流水线实现的架构。它展示出灵活的连接性,能够将几乎每一个数据处理单元(DPU)连接到每一个DPU。
图像处理器100的单元由紧凑型微处理器控制,该微处理器可以执行零延迟循环并且可以实现嵌套循环。
图3示出了根据本发明的实施例的图像处理器100。
图3提供了各种总线的宽度以及存储器模块200、收集单元300、缓冲单元400和DPA500的内容的非限制性示例。
DPU 500可以包括6行6列的数据处理单元(DPU)510(0,0)-510(5,15)。
配置总线130是32字节宽。
总线132是8×64字节宽。
总线134是6×128字节宽。
总线135是2×128字节宽。
总线137是2×16×16字节宽。
总线133是6×2×16×16字节宽。
总线136是2×16×16字节宽。
存储器模块200被示出为包括地址生成器、6个加载存储单元、16个多端口存储器接口以及16个8个字节线的可独立访问的存储体。
收集单元300包括缓存存储器,其包括18个寄存器,每个寄存器8字节。
缓冲单元400包括6行4列16字节寄存器以及6行16列2:1多路复用器。
图4示出根据本发明的实施例的图像处理器100的一部分。
存储器模块200的两个存储缓冲器可以由SB控制单元290控制。SB控制单元290可以包括SB程序存储器292和SB微控制器291和292。SB程序存储器293存储要由SB微控制器291和292执行的指令。SB微控制器291和292可以通过(存储在配置寄存器298中的)信息(通过配置总线130和/或通过标量单元104)进行馈送,该信息指示要执行(存储在SB程序存储器293中的指令之中的)哪些指令。
可以通过BU控制单元490控制缓冲单元400的不同的寄存器行。BU控制单元490可以包括BU程序存储器497、配置寄存器498和BU微控制器491-496。
BU程序存储器297存储要由BU微控制器491-496执行的指令。BU微控制器491-496可以通过指示执行(存储在BU程序存储器497中的指令中的)哪些指令的信息(存储在配置寄存器498中)进行馈送(通过配置总线130和/或通过标量单元104)。
DPA 500的不同行的DPU可以由DPA控制单元590控制。DPA控制单元590可以包括DPA程序存储器597、配置寄存器598和DPA微控制器591-596。
DPA程序存储器297存储要由DPA微控制器591-596执行的指令。DPA微控制器591-596可以通过指示执行(存储在DPA程序存储器597中的指令中的)哪些指令的信息(通过配置总线130和/或通过标量单元104)进行馈送。
要注意的是,微控制器可以以其他方式分组。例如,可以有一个微处理器组、两个、三个或三个以上的微处理器组。
图5示出根据本发明的实施例的时钟树。
输入时钟信号2131被馈送到标量单元104。标量单元将clk_mem 2132发送到存储器模块的存储体610-625,并且将clk 2133发送到存储器模块200的缓冲单元400、收集单元300和加载存储单元(LSU)630-635。clk2133被转换为发送到DPA 500的dpa_clk 2134。
存储器模块
图6示出根据本发明的实施例的存储器模块200。图7示出根据本发明的实施例的存储器模块的LSU与存储器模块的存储体之间的映射。
存储器模块200包括16个可独立访问的存储体M0-M15 610-625、6个加载存储单元LSU0-LSU5 630-625、大小地址生成器AG0-AG5 640-645以及两个存储缓冲器650和660。
存储体M0-M15 610-625是八字节宽(每行有64比特),并包含1K行以提供96KB的总存储容量。每个存储体可以包括(或可以被耦合到)多端口存储器接口,用于在发送到存储体的请求之间进行仲裁。
在图6中,有四个客户端耦合到每个存储体(四个箭头),且多端口存储器接口必须在出现在这四个输入端上的访问请求之间进行仲裁。
多端口存储器接口可以应用任何仲裁方案。例如,它可以应用基于优先级的仲裁。
每个LSU可以从地址生成器中选择6个地址中的一个,并且连接到4个存储体,并且每次访问可以访问(来自2个存储体的)16个字节,使得6个LSU一次可以访问16个存储体中的12个。
图7示出了不同值的控制信号SysMemMap之间的映射与LSU 630-635与存储体M0-M15 610-625之间的映射。
图6示出了存储器模块200通过八个八字节宽总线(总线132的部分)将数据单元输出到收集单元,并且经由六个十六字节宽总线(总线134的一部分)将数据单元输出到缓冲单元。
AGO-AG5 640-645中的每个地址生成器可以通过使用以下变量和寄存器来实现四维(4D)迭代器:
Baddr定义了存储体中的基地址。
'W'方向-变量wDepth定义W方向上一个步长的字节距离。变量wCount定义W计数器的最大值-达到此值时,zCounter递增,并清除wCounter。
'Z'方向-zArea定义Z方向一个步长的字节距离,变量zCount定义Z计数器最大值。达到此值时,X计数器递增,并清除Z计数器。
'X'方向-变量xStep定义步长(可以是1、2、4、8或16字节)。变量xCount定义下一个'Y'之前的X计数器最大值
'Y'方向-变量stride定义了连续“行”的起点之间的字节距离。变量yCount定义Y计数器的最大值。
当所有计数器达到其最大值时,会产生停止条件。
生成的地址是:Addr=BAddr+wCount*wDepth+xcounter*xstep+ycounter*Stride+zcounter*Area。
变量存储在可以通过配置总线130配置的寄存器中。
下面是地址生成器配置映射的示例:
存储也可以以不同于2、4、8和16字节的大小进行写入。
每个LSU可以往来于所连接的4个存储体中的2个存储体(16个字节)执行加载/存储操作。
被访问的存储体可以依赖于所选择的映射(例如参见图7)和地址。
待存储的数据被准备于在下面描述的存储缓冲器650和660中的一个中。
每个LSU可以选择从6个地址生成器AG0-AG5中的一个生成的地址。
加载操作
从存储体读取的数据被存储在加载存储单元的缓冲器(未示出)中,然后(经由总线134)被传送到缓冲单元400。该缓冲器有助于避免由于存储体上的争用而造成的停顿。
存储操作
要存储在存储体中的数据被准备于存储缓冲器650和660中的一个中。有2个存储缓冲器(存储缓冲器0 650和存储缓冲器l 660)。每个存储缓冲器可以请求在一个和四个16字节的字之间写入LSU之一。
每个LSU因此可以获得多达8个同时的请求,并以预定顺序一个接一个地授予:1)存储缓冲器0-字0,2)存储缓冲器0-字1,...4)存储缓冲器1-字0,...,8)存储缓冲器1-字3。
当存储缓冲器被配置为以条件存储模式操作时,存储缓冲器可以忽略(不发送到存储体)或处理(发送到存储体)数据。
当存储缓冲器被配置成以分散模式操作时,可以将由其接收的数据单元的一部分视为与剩余的数据单元的存储相关联的地址。
LSU运行优先级。存储操作优先于加载操作,使得存储将不会由于与加载争用而产生停顿。因为加载操作使用缓冲器,因此通常争用会被抑制(swallowed)而不产生停顿状况。
存储缓冲器
存储缓冲器650和660由存储缓冲器微控制器291和292控制。
在配置过程中,存储缓冲器650和660中的每一个接收(并存储)三个配置指令(sb_instr[1]-sb_instr[3])。不同存储缓冲器的配置指令(也称为存储缓冲器配置指令)可以彼此不同或者可以相同。
在配置过程中,每个存储缓冲器微控制器接收由每个存储缓冲器微控制器执行的指令的地址。首个和最后一个PC指示要从存储缓冲器程序存储器293读取的首个和最后的指令。在以下配置示例中,还定义了每个存储缓冲器微控制器的程序存储器的位置:
存储缓冲器配置
存储缓冲器微控制器配置映射:
存储缓冲器的微控制器指令可以是执行指令或do循环指令。他们有以下格式:
执行指令:
[8:0]RLC:重复指令计数器:1...495:立即-496...511:
间接计数器寄存器
[10:9]sel:存储缓冲器指令选择。触发器在非零时存储
[13:11]行:DPA行选择
[14]保留
[15]类型0
Do循环:
[8:0]RLC:重复循环计数器:0...495:立即-496...511:
间接计数器寄存器
[13:9]长度:循环长度:1...16
[14]模式:0:计数循环,1:计数周期
[15]类型1
图8示出根据本发明的实施例的存储缓冲器660。
存储缓冲器660具有四个多路复用器661-664、四个缓冲器字0-字3671-674和四个多路分解器681-684。
缓冲器字0 671耦合在多路复用器661和多路分解器681之间。缓冲器字1 672耦合在多路复用器662和多路分解器682之间。缓冲器字2 673耦合在多路复用器663和多路分解器683之间。缓冲器字3 674耦合在多路复用器664和多路分解器684之间。
多路复用器661-664中的每一个具有用于接收总线133的不同线路的四个输入端并且由控制信号Row,Sel来控制。
多路分解器681-684中的每一个具有六个输出端,用于向LSU0-LSU5中的任一个提供数据,并由控制信号En,LSU控制。
存储缓冲器配置指令控制存储缓冲器的操作,且甚至生成命令Row,Sel和En,LSU。
配置指令格式示例提供如下:
存储缓冲器指令编码
[2:0] lsu0 通过LSU#lsu0写入字0
[3] En0 写入字0
[4]有条件的
[5]分散
[8:6] lsu 1 通过LSU#lsu 1写入字1
[9] Enl 写入字1
[10]有条件的
[11]分散
[14:12] lsu2 通过LSU#lsu2写入字2
[15] En2 写入字2
[16]有条件的
[17]分散
[20:18]lsu 3 通过LSU#lsu3 写入字3
[21] En3 写入字3
[22]有条件的
[23]分散
[28:24]sel 数据选择
称为“数据选择”的五个位实际上是指令Row,Sel,并在图9和图10中被示出。0到28之间的值映射到DPA 500的DPU的不同端口。在图9中,D#和E#分别表示DPU[row,#]的输出D和E,其中'row'是当前所选指令的行选择,且D'#是DPU[row+1,#]的输出D。
缓冲单元
图11示出根据本发明的实施例的缓冲单元400。
缓冲单元400包括统一标记为402的读取缓冲器(RB)、寄存器文件(RF)404、缓冲单元内部网络408、多路复用器控制电路471-476、输出多路复用器406、BU配置寄存器401(1)-401(5)(每个存储两个配置指令)、历史配置缓冲器405和BU读取缓冲器配置寄存器403。
BU微控制器可以为每一行选择读取(401(1)-401(5)中的每个BU配置寄存器中存储的两个配置指令中的)哪个配置指令。
有六行多路复用器,且它们包括多路复用器491(0)-491(15)和491'(0)-491'(15)、多路复用器492(0)-492(15)和492'(0)-492'(15)、多路复用器493(0)-493(15)和493'(0)-493'(15)、多路复用器494(0)-494(15)和494'(0)-494'(15)和多路复用器495(0)-495(15)和495'(0)-495'(15)。
为了简化说明,图11仅示出了多路复用器控制电路471和476。
缓冲单元内部网络408将读取缓冲器402耦合到寄存器文件404。
第一行的四个读取缓冲器415、416、417和417(经由缓冲单元内部网络408)耦合到第一行的四个寄存器R3 413、R2 412、R1 411和R0 410。
第二行的四个读取缓冲器425、426、427和427(经由缓冲单元内部网络408)耦合到第二行的四个寄存器R3 423、R2 422、R1 421和R0 420。
第三行的四个读取缓冲器435、436、437和437(经由缓冲单元内部网络408)耦合到第三行的四个寄存器R3 433、R2 432、R1 431和R0 430。
第四行的四个读取缓冲器445、446、447和447(经由缓冲单元内部网络408)耦合到第四行的四个寄存器R3 443、R2 442、R1 441和R0 440。
寄存器文件的不同行和多路复用器的相应行由491-495中不同的BU微控制器控制。
还通过DPU微控制器控制不同行的多路复用器。特别地,591-596的每个DPU微控制器控制相应的DPU行,并且将控制指令(MuxCtl)发送到相应的多路复用器行(经由多路复用器控制电路471-476)。每个多路复用器控制电路存储最后(例如十六个)MuxCtl指令(指令历史),并且历史配置缓冲器405存储用于确定将哪个MuxCtl指令发送到多路复用器行的选择信息。
多路复用器控制电路471控制第一行的多路复用器并包括用于存储从DPU微控制器491发送的MuxCtl指令的FIFO 481(1),并且包括控制多路复用器481(2)以选择从FIFO481(1)中取出哪个存储的MuxCtl指令并发送到包括多路复用器491(0)-491(15)和491'(0)-491'(15)的第一行的多路复用器。
多路复用器控制电路476控制第六行多路复用器并包括用于存储从DPU微控制器496发送的MuxCtl指令的FIFO 486(1)并包括控制多路复用器486(2)以选择从FIFO 482(1)中取出哪个存储的MuxCtl指令并发送到包括多路复用器495(0)-495(15)和495'(0)-495'(15)的第六行的多路复用器。
寄存器文件可以由BU微控制器控制。由寄存器文件执行的操作可以包括(a)从最高到最低有效位的移位,其中移位的跳跃是2字节(或任何其他值)的幂,(b)从读取缓冲器加载一个或两个寄存器。文件寄存器中的内容可以被操纵。例如,内容可以被交织和/或隔行扫描。以下提供的指令集中提供了一些示例。
缓冲配置映射包括配置缓冲器的地址,用于存储用于缓冲单元的配置指令并存储由缓冲单元微控制器(BUuC0-BuuC5)提取哪些命令的指示。后者被称为的BU指令对的第一个和最后一个PC(每个三十二位MuxConfig指令包括两个单独的缓冲单元配置指令):
缓冲单元配置映射
由BU微控制器执行的指令包括用于循环控制或指令重复的位[0:8],并且包括包含控制指令执行的值的[9:13]位。对于寄存器文件命令和do循环命令都是如此。
指令编码:
RFL代表寄存器文件行并且RBL代表读取缓冲器行。
RRR[r/r1:r0]代表编号“r”(16个字节)/从寄存器r1到t0的寄存器(RFL或RBL)。RRR[r][b/b1:b0]表示编号“r”字节b/从字节b1到b0的寄存器(RFL或RBL)。
RF指令:(每个周期,BU微控制器可以将位9-14发送到BU)
[8:0]RIC:重复指令计数器:1...495:立即-496...511:间接计数器寄存器
[11:9]移位:0:NOP,1:1B,2:2B,3:4B,4:8B,5:1R,6:2R,7:1L,8-15:Res
[14:12]加载:
0:NOP
1:单精度型A:RFL[3]<=RBL[0]
2:单精度型B:RFL[2]<=RBL[0]
3:双精度型:RFL[2]<=RBL[0],RFL[3]<=RBL[1]
4:交错字节型:RFL[2:3]<={RBL[1][15],RBL[0][15],…,RBL[0][0]}
5:交错短整型:RFL[2:3]<={RBL[1][15:14],RBL[0][15:14],…,RBL[1][3:2],RBL[0][3:2],RBL[1][1:0],RBL[0][1:0]}
6:交错字节型&0:RFL[2:3]<={0,RBL[0][15],…,0,RBL[0][0]}
7:交错短整型&0:RFL[2:3]<={0,RBL[0][15:14],…,0,RBL[0][1:0]}
[15]类型:0
Do循环:
[8:0]RLC:重复循环计数器:0...495:立即-496...511:间接计数器寄存器
[13:9]长度:循环长度:1...16
[14]模式:0:计数循环,1:计数周期
[15]类型1
读取缓冲区加载。
从LSU的RB加载操作是由配置控制的和由其状态和相关LSU的状态自触发的。BU读取缓冲器配置寄存器(也被称为RBSrcCnf)403指定从哪个LSU加载的每个RB线路。
存储在BU读取缓冲器配置寄存器403中的配置指令具有以下格式:
[3:0]读取缓冲器0LSU源:
[7:4]读取缓冲器1LSU源
[11:8]读取缓冲器2LSU源
[15:12]读取缓冲器3LSU源
[19:16]读取缓冲器4LSU源
[23:20]读取缓冲器5LSU源
“读取缓冲器”是指读取缓冲器的行。每个读缓冲器行的四个位可以具有以下含义:0-7:无负载,8:LSU0、9:LSU1、10:LSU2、11:LSU3、12:LSU4、13:LSU5、14:GU0、15:GU1(GUI交换8字节加载为d8..d15,d0..d7代替d0..dl5或在短整型模式下的GU最后8个短整型输出)。
多路复用器配置
多路复用器的配置如下所示(这个示例涉及第一行,并且我的指令MuxCtl表示为MuxCt10):
MuxCtl0[Row][4:0]:BRfpSelB://[0-7]:BSelB0,8-19:{RSelB0,BSelB0},31:fpB0,
MuxCtl0[Row][7:5]:BSelAb//Reg[4][BSelAb*2+31]
MuxCtl0[Row][8]:fpA0//MuxA(col<<2)的浮点模式
MuxCtl0[Row][11:9]:BSelBb//Reg[5][BSelAb*2+31]
MuxCtl0[Row][15:12]:保留
MuxCtl通过以下方式操作Muxes(选择寄存器文件的寄存器和DPU的端口):
PxlA[Row,Col]=!fpA?Reg[Row][Col*2]:REG[Row][Col*4]
PxlFpB[Row,Col]=Reg[Row][Col*4+2]
PxlB[Row,Col]=BSelB==0x1f?
PxlFpB[Row,Col]:
BSelB<8?
REG[Row][BSelB+Col*2]:
Reg[((BSelB-8)/2+Row)%6][(BSelB&1)+Col*2]
PxlAb[Row,0]=Reg[4][BSelAb*2+32]
PxlBb[Row,0]=Reg[5][BSelBb*2+32]
可以通过读取存储每行的多路复用器的选择信息的四位的历史配置缓冲器405的内容来完成(由FIFO 471-476)对历史的选择。
收集单元
图12示出根据本发明的实施例的收集单元300。
收集单元300包括输入缓冲器301、地址转换器302、缓存存储器303、地址标签比较器304、争用评估单元306、控制器307、存储器接口308、迭代器310和配置寄存器311。
收集单元300被配置为通过包括16个8字节的寄存器的全关联缓存存储器(CAM)303从八个存储体MB0..MB7或MB8..MB15收集高达16个字节或短整型(short)像素,这取决于配置寄存器311的位gu_Ctrl[15]。像素地址或坐标是根据配置寄存器311的模式gu_Ctrl[3:0]从阵列产生或接收的。
收集单元300可以使用指示存储体内的存储体编号和行的地址(二联体(duplets))来访问存储器模块200的存储体。
收集单元可以接收或生成代替地址的表示图像中被请求的像素的位置的X和Y坐标。收集单元包括用于将X,Y坐标转换为地址的地址转换器302。
迭代器310可以以两种模式之一操作-(a)仅内部迭代器和(b)使用存储器模块的地址生成器。
当在模式(a)中操作时,迭代器310可以使用以下控制参数(其存储在配置寄存器311中)生成十六个地址:
1)AddBase-16个基地址。
2)AddStep-迭代器地址步长。
3)xCount:stride之前的最大步数计数器。stride从前一步或基础坐标进行。
4)AddStride:stride(或y步长)。
在模式(b)下操作时,迭代器将AddBase提供给地址生成器,且地址生成器使用该地址执行迭代。
例如,在视差计算期间,迭代器模式可能是有用的,其中收集单元可以从源图像和目标图像(特别是彼此接近的像素)检索数据单元。
另一种操作模式包括接收被请求的数据的地址(地址可以是地址转换器302要转换的X,Y坐标或诸如二联体的存储器地址),检查被请求的数据单元是否存储在缓存存储器中,且如果不是,则从存储器模块200提取数据单元。
另一种操作模式包括接收被请求的数据单元的地址并将地址转变成更多被请求的地址,然后从缓存存储器303或从存储器单元中提取更多被请求的地址的内容。例如,在扭曲计算期间,这种操作模式可能是有用的,其中收集单元可以接收像素的地址并获得像素和几个其他相邻的数据单元。
缓存存储器303存储为二联体的标签,并且这些标签用于确定被请求的数据单元是否在缓存存储器303内。这些二联体也用于检测争用-当在同一个周期内,多个被请求的数据单元驻留在同一个存储体的不同行中。
图13是示出包括地址转换、缓存命中/未命中、争用和信息输出的过程的时序图。
坐标(X,Y)在周期0中被接受或生成,在周期1中被转换为二联体。存储体访问是在同一周期内进行计算,以用于在周期2中执行访问。如果几个坐标在不同地址处寻址同一个存储体(如本示例中的情况如此),则存在争用,相应的像素提取被延迟到下一个周期,并且在周期1中被断言停止。导致争用的坐标在周期1中退出,并在周期2中访问存储体。坐标和像素之间的延迟是5个周期+停止周期的数量。在极端情况下,访问16个像素会导致15个停止周期。对于扭曲操作,由于所访问的像素彼此接近,16个像素以平均1.0-1.4个周期进行提取,这取决于扭曲的类型。
配置映射
返回参考图12:输入缓冲器301耦合到地址转换器302。地址标签比较器304接收来自缓存存储器303和来自地址转换器302(如果需要地址转换)或来自输入缓冲器301的输入。地址标签比较器304向控制器307以及争用评估单元306和存储器接口308发送指示比较的输出信号(诸如缓存未命中、缓存命中以及如果命中,命中发生何处)。迭代器310耦合到输入缓冲器301和存储器接口308。
输入接口(诸如输入缓冲器301)被布置为接收用于检索多个被请求的数据单元的多个请求。
缓存存储器303包括存储多个标签(每个标签可以是二联体)和多个缓存的数据单元的条目(诸如十六个条目或行)。
每个标签与缓存的数据单元相关联,并且表示存储器模块(诸如存储体)中的与缓存存储器不同并且存储缓存的数据单元的一组存储器单元(诸如行)。
地址标签比较器304包括比较器阵列,该比较器阵列被布置成在多个标签和多个被请求的存储器组地址之间同时进行比较以提供比较结果。
地址标签比较器包括K×J个节点-覆盖每对标签和被请求的存储体地址。第(k,j)个节点304(k,j)将第k个请求的地址与第j个标签进行比较。
如果例如某个被请求的存储体/行地址不匹配任何标签,则地址标签比较器304将发送未命中信号。
控制器307可以被布置为(a)基于比较结果将多个被请求数据单元分类为存储在缓存存储器303中和未被缓存的数据单元(未存储在高速缓存存储器303中);并且(b)当至少存在未被缓存的数据单元时,向争用评估单元306发送关于它的信息。
争用评估单元306被布置成检查至少一个争用的发生。
存储器接口308被布置为以无争用的方式向存储器模块请求任何未被缓存的数据单元。
当一个或更多个未被缓存的数据单元被收集单元检索时,它们被存储在缓存存储器中。在检测到争用的给定周期之后的周期中,地址标签比较器304可以从输入缓冲器或从地址转换器接收来自给定周期的相同请求的数据单元。现在存储在缓存存储器303中的先前未被缓存的数据单元将更改地址标签比较器304所做的比较结果,并且将从存储器模块仅检索在前面的迭代中未被请求的未被缓存的存储器数据单元。
争用评估单元可以包括多组节点。图14中提供了示例。
节点组的数量是收集单元可以同时访问的存储体的最大数目(例如八个)。
每组节点被布置成评估与单个存储体相关的争用。例如,在图14中有八组节点-用于在十六个被请求的地址和八个存储体的行之间进行比较。
第一组节点(305(0,0)-306(0,15))的节点彼此串联连接。第一组节点的最左端节点306(0,0)接收输入信号(被使用,存储体0,行)以及信号(有效0,地址0)。
地址0是(数据单元的)16个被请求的地址中的第一个地址,并且有效0指示第一个被请求的地址是否有效-第一个请求的地址是指缓存的数据单元(无效)或者是指未被缓存的数据单元(有效)。
输入信号(被使用,存储体0,行)表示存储体0是否被使用以及该组节点的第一个节点所请求的行。馈送到最左端节点306(0,0)的输入信号(被使用,存储体0,行)指示存储体0未被使用。
例如,如果最左端节点306(0,0)(或任何其他节点)确定应该使用先前未使用的存储体(当前未与任何未被缓存的数据单元相关联)(用于检索与节点关联的有效数据单元地址节点),则节点更改信号(被使用,存储体0,行)以指示存储体被使用-并且还将“行”更新为由节点请求的行。
如果第一组节点(在节点306(0,1)-306(0,15)中的)的任何节点接收到指示存储体0的有效地址,则该节点在所请求的地址的行与通过(被使用,存储体0,行)所指示的行之间进行比较。如果行值不匹配,则节点输出争用信号。
同一个过程由任何一组节点同时执行。
如果有J个标签,则有J个串联连接的节点组,并且每个组可能包含K个节点。
因此,该组的每个节点被布置为(a)接收指示该组的任何先前节点是否请求访问通过二联体(有效,地址)标识的存储体的访问请求指示(例如信号(被使用,存储体,行)和(b)更新访问请求指示,以指示该组是否正在请求访问其相应的存储体。
数据处理阵列(DPA)500。
DPA 500包括96个DPU,被布置成六行(行),而每行包括十六个DPU。
DPU的每一行可以由单独的DPA微控制器控制。
图15和图16示出根据本发明的实施例的DPU 510。
DPU 510包括:
1)算术逻辑单元(ALU)540
2)包括十六个寄存器550(0)-550(15)的寄存器文件550。
3)两个输出多路复用器MuxD 534、MuxE 535。
4)多个输入多路复用器MuxIn0 570、MuxIn1 571、MuxIn2 572、MuxIn3 573、MuxA561、MuxB 562、MuxCl 563、MuxCh 564、MuxF 526和MuxG 527。
5)内部多路复用器MuxH 529和MuxG'528。
6)触发器565和566。
7)寄存器RegA 531、RegB 532、RegCl 533和RegCh 534。
上面提到的多路复用器是数据流组件的非限制性示例。
每个输入多路复用器耦合到DPU 510的输入端口,并且可以耦合到其他DPU,耦合到收集单元300,耦合到存储器模块200,耦合到缓冲单元400或耦合到DPU的输出端口。
输入多路复用器MuxA 561、MuxB 562、MuxCl 563、MuxCh 564和MuxH 529还包括耦合到总线581的输入端。总线581还耦合到MuxIn0 570、MuxIn1 571、MuxIn2 572、MuxIn3573的输出端。
寄存器RegA 531、RegB 532、RegCl 533和RegCh 534连接在输入多路复用器MuxA561、MuxB 562、MuxCl 563、MuxCh 564(分别为每个多路复用器一个寄存器)和ALU 540之间,并向ALU馈送数据。
使用其中一组多路复用器可接收另一组的输出的两组多路复用器增加提供馈送给ALU 540的数据的源的数量。
ALU 540的输出端耦合到寄存器文件550的输入端。第一寄存器文件Reg0 550(0)还作为输入端连接到ALU 540。
寄存器文件550的输出端耦合到输出多路复用器MuxD 534和MuxE 535。输出多路复用器MuxD 534、MuxE 535的输出端分别耦合到输出端口D(521)和E(522),并且(经由MuxG'528)耦合到输出端口G 523和触发器566。
寄存器RegH 539连接在MuxH 529和MuxG 527之间。MuxF 526直接连接到端口F522和触发器565,从而提供低延时转播信道。MuxG 527耦合到MuxG'528。
MuxIn0、MuxIn1、MuxIn2、MuxIn3可以实现到其他DPU的短路由:(a)MuxIn0、MuxIn1从8个DPU的D输出端获得输入,(b)MuxIn2、MuxIn3从相同的8个DPU的E输出端获得输入。
其他五个输入多路复用器MuxA、MuxB、MuxCl、MuxCh和MuxG可以实现以下路由:
MuxA可以从缓冲单元获得其输入,并从MuxIn0..MuxIn3获得输入。
MuxB、MuxCl和MuxCh中的每一个可以从缓冲单元MuxIn0..MuxIn3并从寄存器文件的内部寄存器(例如寄存器文件的R14或R15)获得其输入。
大部分ALU操作产生一个短整型(Out0)结果。某些操作会生成一个字结果或两个短整型结果({Out1,Out0})。输出被存储在寄存器文件550中的恒定位置:R(0)<=Out0,并且R(1)<=Out1(用于产生2个短整数的操作)。
同一行中的DPU 510和其他DPU由共享行PDA微控制器控制,该共享行PDA微控制器生成用于在存储在DPU中的配置指令(参见配置寄存器511)之间进行选择的选择信息流。
配置寄存器(也称为dpu_Ctrl)511可以存储以下内容:
四个配置寄存器511(1)-511(3)被称为dpu_Inst[0]-dpu_Inst[1]。
如上所述,DPA 500的每个DPU直接耦合到PMA的一些DPU,并直接耦合(经由一个或更多个中间DPU耦合)到数据处理器阵列的一些其他数据处理器。每个DPU具有一个转播信道(端口F和G之间),用于在DPU的转播端口(端口F和端口G)之间转播数据。这样简化连接并减少连接,同时提供足够的连接性和灵活性,以便以高效的方式执行图像处理任务。
多个数据处理器中的每个数据处理器的转播信道(尤其是端口F和端口G的输出G之间的路径)基本上呈现零等待时间。这允许使用PDU作为零等待时间转播信道,从而间接地在DPU之间进行耦合,并且还允许通过使用不同DPU之间的转播信道来将数据广播到多个DPU。
再参考图16,每个DPU包括一个核心。核心包括ALU 540和诸如寄存器文件550的存储器资源。多个DPU的核心通过可配置网络相互耦合。可配置网络包括数据流组件,例如多路复用器MuxA-MuxCh、MuxD-MuxE、MuxIn0-MuxIn3、MuxF-MuxH和MuxG'。这些数据流组件可以被包含在DPU内(如图16所示),但是可以至少部分地位于DPU之外。
DPU可以包括直接耦合到第一组邻居的非转播输入端口。例如-非转播输入端口可以包括输入端口A、B、Cl、Ch、In0、In1、In2和In3。它们与第一组邻居的连接性在下面的例子中列出。第一组邻居可以包括例如八个邻居。
第一组邻居由位于距DPU小于四个DPU的距离(循环距离)内的DPU形成。距离和方向是循环的。例如,MuxIn0耦合到DPU的D端口,它们是:(a)在同一行中但向左一列(D(0,-1)),(b)在同一行中但向右一列(D(0,+1)),(c)在同一列但在上一行(D(-1,0)),(d)上面的一行且向左一列(D(-1,-1)),(e)上面的一行且向右一列(D(-1,+l)),(f)上面两行且同一列(D(-2,0)),(g)上面两行且向左一列(D(-2,-1)),(h)上面两行但向右一列(D(-2,+1))。
数据处理器的第一非转播输入端口可以直接耦合到第一组邻居的数据处理器的转播端口。例如,参见端口A,其直接耦合到同一DPU的F端口,并且耦合到同一行但是向左一列(F/Fd(0,-1))的DPU的F端口。
第一转播端口(例如端口G和F)可以直接耦合到第二组邻居。例如,输入多路复用器F(耦合到端口F)可以耦合到DPU的G端口的G输出端和延迟G输出端(Gd),其是(a)下一行并且在同一列(G/Gd(+1,0)),(b)下两行并在同一列G/Gd(+2,0),(c)下三行且在同一列(G/Gd(+3,0)),(d)同一行但向左一列(G/Gd(0,+1)),(e)相同的行但向左两列G/Gd(0,+2),(f)同一行但向左四列(G/Gd(0,+4)),和(g)同一行但向左八列(G/Gd(0,+8))。
在以下配置示例中,提供了PMA和DPU微控制器配置寄存器598(包括寄存器p_FLIP0-p_FLIPS5-每个DPU微控制器一个)的不同配置缓冲器的位置:
配置寄存器511(0)-511(3)可以存储多达四个配置指令。配置指令可以是64位长并且可以通过一个或两个读取操作来读取。
配置指令控制多路复用器选择(A、B、C、D、E、F和G),并且寄存器文件550移位:
1)按步骤1移位:对于[0,15]中的n:对于(i=15;i>0;i--)Ri<=R(i-1)。
2)按步骤2移位:对于[0,2,4...14]中的n:对于(i=7;i>0;i--){R(2i+1),R(2i)}<={R(2i-1),R(2i-2)}
这些字段可以在不同的时刻应用:
1)输入多路复用器A、B、C、F和输出多路复用器G控制不被延迟。
2)ALU控制延迟一个时钟周期。
3)输出多路复用器D和E控制延迟两个时钟周期。
下表描述了DPU配置指令的不同字段:
4:0 输入A选择
9:5 输入B选择
14:10 输入Cl选择
19:15 输入Ch选择
23:20 输出D选择
27:24 输出E选择
31:28 输入/输出F选择
36:32 输出G选择
41:37 RegOpCode:
40:37 移位目的地(视为寄存器文件):
移位操作中最后一次更改寄存器的位置
41移位步骤:
0:移位1(短整型结果)
1:移位2(用于整数型结果)
42将ALU输出交错写入R0和R1
44:43 wrConst:0:NOP;1:Regl5<=ALU低;2:Regl5:
ALU高;3:{Regl4,Regl5}<=ALU
56:45 ALU控制:(AluCtl_t)
[5:0]:DPU ALU操作码(DpuAluOpCode_t)
[7:6]:后置修饰符(Post Modifier):对FP操作进行四舍五入,对其他进行后置移位
四舍五入模式:0:Round,l:Int,2:Floor,3:Ceil
后移位:左移0、1、2或3位
[8]:向量(vectorial):0:规则(regular)–1:向量
[9]:mode_a:0:无符号–1:有符号
[10]:mode_b:0:无符号–1:有符号
[11]:acc:累加器模式:选择Cacc并跳过寄存器C
57: wrReg1:从ALU写出Reg1高电平。
63:58 保留
MuxIn0-MuxIn3中的每一个都连接到多个总线上-如下所示:
MuxIn0:
οMuxIn0[0]<=D(0,-1)
οMuxIn0[1]<=D(0,+1)
οMuxIn0[2]<=D(-1,0)
οMuxIn0[3]<=D(-1,-1)
οMuxIn0[4]<=D(-1,+1)
οMuxIn0[5]<=D(-2,0)
οMuxIn0[6]<=D(-2,-1)
οMuxIn0[7]<=D(-2,+1)
MuxIn1:
οMuxIn1[0]<=D(0,-1)
οMuxIn1[1]<=D(0,+1)
οMuxIn1[2]<=D(-1,0)
οMuxIn1[3]<=D(-1,-1)
οMuxIn1[4]<=D(-1,+1)
οMuxIn1[5]<=D(-2,0)
οMuxIn1[6]<=D(-2,-1)
οMuxIn1[7]<=D(-2,+1)
MuxIn2:
οMuxIn2[0]<=E(0,-1)
οMuxIn2[1]<=E(0,+1)
οMuxIn2[2]<=E(-1,0)
οMuxIn2[3]<=E(-1,-1)
οMuxIn2[4]<=E(-1,+1)
οMuxIn2[5]<=E(-2,0)
οMuxIn2[6]<=E(-2,-1)
οMuxIn2[7]<=E(-2,+1)
MuxIn3:
οMuxIn3[0]<=E(0,-1)
οMuxIn3[1]<=E(0,+1)
οMuxIn3[2]<=E(-1,0)
οMuxIn3[3]<=E(-1,-1)
οMuxIn3[4]<=E(-1,+1)
οMuxIn3[5]<=E(-2,0)
οMuxIn3[6]<=E(-2,-1)
οMuxIn3[7]<=E(-2,+1)
输入多路复用器MuxA、MuxB、MuxC、MuxF、输出多路复用器MuxD、MuxE、输出F、延时输出Fd、输出G和延时输出Gd提供本段列出的连接性。符号X(N,M)表示DPU的输出X(row+N%6,col+M%16)。每行的DPU以循环方式彼此连接,并且每列的DPU以循环方式彼此连接。应该注意的是,下面列出的各种多路复用器具有多个(例如十六个)输入端,以及下面列表提供了与这些输入中的每一个的连接。例如A[0]-A[15]是MuxA的十六个输入。在下文中,6%表示模6操作,以及16%表示模16操作。R14和51R是寄存器文件的最后两个寄存器。
输入A多路复用器:
οA[0]<=0
οA[1]<=nu_PxlA
οA[2]<=D(0,0)
οA[3]<=E(0,0)
οA[4]<=MuxIn0
οA[5]<=MuxIn1
οA[6]<=MuxIn2
οA[7]<=MuxIn3
οA[8]<=PxlAb
οA[9]<=PxlBb
οA[10]<=0
οA[11]<=F(0,0)
οA[12]<=F/Fd(0,-1)
οA[13]<=R15
οA[14]<=R14
οA[15]<=PxlBi
·输入B多路复用器:
οB[0]<=0
οB[1]<=nu_PxlB
οB[2]<=D(0,0)
οB[3]<=E(0,0)
οB[4]<=MuxIn0
οB[5]<=MuxIn1
οB[6]<=MuxIn2
οB[7]<=MuxIn3
οB[8]<=PxlAb
οB[9]<=PxlBb
οB[10]<=0
οB[11]<=F(0,0)
οB[12]<=F/Fd(0,-1)
οB[13]<=R15
οB[14]<=R14
οB[15]<=PxlBi
·输入Cl多路复用器:
οCl[0]<=0
οCl[1]<=nu_PxlA
οCl[2]<=D(0,0)
οCl[3]<=E(0,0)
οCl[4]<=MuxIn0
οCl[5]<=MuxIn1
οCl[6]<=MuxIn2
οCl[7]<=MuxIn3
οCl[8]<=PxlAb
οCl[9]<=PxlBb
οCl[10]<=0
οCl[11]<=F(0,0)
οCl[12]<=F/Fd(0,-1)
οCl[13]<=R15
οCl[14]<=R14
οCl[15]<=PxlBi
·输入Ch多路复用器:
οCh[0]<=0
οCh[1]<=nu_PxlB
οCh[2]<=D(0,0)
οCh[3]<=E(0,0)
οCh[4]<=MuxIn0
οCh[5]<=MuxIn1
οCh[6]<=MuxIn2
οCh[7]<=MuxIn3
οCh[8]<=PxlAb
οCh[9]<=PxlBb
οCh[10]<=0
οCh[11]<=F(0,0)
οCh[12]<=F/Fd(0,-1)
οCh[13]<=R15
οCh[14]<=R14
οCh[15]<=PxlBi
·输出D多路复用器:{Regs[0..15]}
·输出E多路复用器:{Regs[0..15]}
·输入F多路复用器:
οF[0]:使用在dpu_CSR中定义的F多路复用器
οF[l]<=G/Gd(+1,0)
οF[2]<=G/Gd(+2,0)
οF[3]<=G/Gd(+3,0)
οF[4]<=G/Gd(0,+1)
οF[5]<=G/Gd(0,+2)
οF[6]<=G/Gd(0,+4)
οF[7]<=G/Gd(0,+8)
·输出F:F多路复用器输出
·输出Fd:F锁存@clk
·输出G多路复用器:
οG[0]<=使用dpu_CSR中定义的G多路复用器
οG[l]<=D
οG[2]<=E
οG[3]<=F
οG[4]<=D(+1,0)
οG[5]<=E(+1,0)
οG[6]<=NU_A
οG[7]<=NU_B
οG[8]<=MuxG,MuxG<=MuxInD0
οG[9]<=MuxG,MuxG<=MuxInD1
οG[10]<=MuxG,MuxG<=MuxInE0
οG[11]<=MuxG,MuxG<=MuxInE1
οG[12]<=PxlAb
οG[13]<=PxlBb
οG[14]<=PxlAbi
οG[15]<=PxlBbi
·输出Gd:G锁存@clk
输入(A,B,Cl,Ch,G)寄存器配置规范(配置位被存储在DPU的配置寄存器中,且用于控制DPU的各个组件)。
以下示例列出了DPU配置指令中所包含的各个位的值。符号X(N,M)表示DPU的输出X(row+N%6,col+M%16)。
·输入A多路复用器:
οA[0]<=0
οA[1]<=nu_PxlA
οA[2]<=D(0,0)
οA[3]<=E(0,0)
οA[4]<=MuxIn0
οA[5]<=MuxIn1
οA[6]<=MuxIn2
οA[7]<=MuxIn3
οA[8]<=nu_PxlAb
οA[9]<=nu_PxlBb
οA[10]<=nu_PxlAbi
οA[11]<=F(0,0)
οA[12]<=F/Fd(0,-1)
οA[13]<=R15
οA[14]<=R14
οA[15]<=nu_PxlBbi
οA[16]<=D(0,-1)
οA[17]<=D(0,+1)
οA[18]<=D(-1,0)
οA[19]<=D(-1,-1)
οA[20]<=D(-1,+1)
οA[21]<=D(-2,0)
οA[22]<=D(-2,-1)
οA[23]<=D(-2,+1)
οA[24]<=E(0,-1)
οA[25]<=E(0,+1)
οA[26]<=E(-1,0)
οA[27]<=E(-1,-1)
οA[28]<=E(-1,+1)
οA[29]<=E(-2,0)
οA[30]<=E(-2,-1)
οA[31]<=E(-2,+1)
·输入B多路复用器:
οB[0]<=0
οB[1]<=nu_PxlB
οB[2]<=D(0,0)
οB[3]<=E(0,0)
οB[4]<=MuxIn0
οB[5]<=MuxIn1
οB[6]<=MuxIn2
οB[7]<=MuxIn3
οB[8]<=nu_PxlAb
οB[9]<=nu_PxlBb
οB[10]<=nu_PxlAbi
οB[11]<=F(0,0)
οB[12]<=F/Fd(0,-1)
οB[13]<=R15
οB[14]<=R14
οB[15]<=nu_PxlBbi
οB[16]<=D(0,-1)
οB[17]<=D(0,+1)
οB[18]<=D(-1,0)
οB[19]<=D(-1,-1)
οB[21]<=D(-2,0)
οB[22]<=D(-2,-1)
οB[23]<=D(-2,+1)
οB[24]<=E(0,-1)
οB[25]<=E(0,+1)
οB[26]<=E(-1,0)
οB[27]<=E(-1,-1)
οB[28]<=E(-1,+1)
οB[29]<=E(-2,0)
οB[30]<=E(-2,-1)
οB[31]<=E(-2,+1)
·输入Cl多路复用器:
οCl[0]<=0
οCl[1]<=nu_PxlA
οCl[2]<=D(0,0)
οCl[3]<=E(0,0)
οCl[4]<=MuxIn0
οCl[5]<=MuxIn1
οCl[6]<=MuxIn2
οCl[7]<=MuxIn3
οCl[8]<=nu_PxlAb
οCl[9]<=nu_PxlBb
οCl[10]<=nu_PxlAbi
οCl[11]<=F(0,0)
οCl[12]<=F/Fd(0,-1)
οCl[13]<=R15
οCl[14]<=R14
οCl[15]<=nu_PxlBbi
οCl[16]<=D(0,-1)
οCl[17]<=D(0,+1)
οCl[18]<=D(-1,0)
οCl[19]<=D(-1,-1)
οCl[21]<=D(-2,0)
οCl[22]<=D(-2,-1)
οCl[23]<=D(-2,+1)
οCl[24]<=E(0,-1)
οCl[25]<=E(0,+1)
οCl[26]<=E(-1,0)
οCl[27]<=E(-1,-1)
οCl[28]<=E(-1,+1)
οCl[29]<=E(-2,0)
οCl[30]<=E(-2,-1)
οCl[31]<=E(-2,+1)
·输入Ch多路复用器:
οCh[0]<=0
οCh[1]<=nu_PxlB
οCh[2]<=D(0,0)
οCh[3]<=E(0,0)
οCh[4]<=MuxIn0
οCh[5]<=MuxIn1
οCh[6]<=MuxIn2
οCh[7]<=MuxIn3
οCh[8]<=nu_PxlAb
οCh[9]<=nu_PxlBb
οCh[10]<=nu_PxlAbi
οCh[11]<=F(0,0)
οCh[12]<=F/Fd(0,-1)
οCh[13]<=R15
οCh[14]<=R14
οCh[15]<=nu_PxlBbi
οCh[16]<=D(0,-1)
οCh[17]<=D(0,+1)
οCh[18]<=D(-1,0)
οCh[19]<=D(-1,-1)
οCh[21]<=D(-2,0)
οCh[22]<=D(-2,-1)
οCh[23]<=D(-2,+1)
οCh[24]<=E(0,-1)
οCh[25]<=E(0,+1)
οCh[26]<=E(-1,0)
οCh[27]<=E(-1,-1)
οCh[28]<=E(-1,+1)
οCh[29]<=E(-2,0)
οCh[30]<=E(-2,-1)
οCh[31]<=E(-2,+1)
·输出G多路复用器:
οG[0]<=使用dpu_CSR中定义的G多路复用器
οG[1]<=D
οG[2]<=E
οG[3]<=F
οG[4]<=D(+1,0)
οG[5]<=E(+1,0)
οG[6]<=NU_A
οG[7]<=NU_B
οG[8]<=MuxG,MuxG<=MuxInD0
οG[9]<=MuxG,MuxG<=MuxInD1
οG[10]<=MuxG,MuxG<=MuxInE0
οG[11]<=MuxG,MuxG<=MuxInE1
οG[12]<=PxlAb
οG[13]<=PxlBb
οG[14]<=PxlAbi
οG[15]<=PxlBb
οG[16]<=D(0,-1)
οG[17]<=D(0,+1)
οG[18]<=D(-1,0)
οG[19]<=D(-1,-1)
οG[21]<=D(-2,0)
οG[22]<=D(-2,-1)
οG[23]<=D(-2,+1)
οG[24]<=E(0,-1)
οG[25]<=E(0,+1)
οG[26]<=E(-1,0)
οG[27]<=E(-1,-1)
οG[28]<=E(-1,+1)
οG[29]<=E(-2,0)
οG[30]<=E(-2,-1)
οG[31]<=E(-2,+1)
输入(A,B,Cl,Ch,G)具有到(MuxIn0,...,MuxIn3)多路复用和两个附加输入。为了保存配置位,至(A,B,Cl,Ch,G)的D(N,M)和E(N,M)配置位的(MuxIn0,...,MuxIn3)的动态资源分配可以被使用。可以如下进行分配:如果输入(A,B,Cl,Ch,G)配置中的1个或2个具有D(N,M)形式,则第一个输入分配MuxIn0,且第二个(如果存在)分配MuxIn1。为了方便起见,输入由inputD1和inputD2表示,并且配置分别由D1(N,M)和D2(N,M)表示。MuxIn0和MuxIn1多路复用器的控制可分别根据D1(N,M)和D2(N,M)。另外,inputDl和inputD2多路复用控制MuxIn0、MuxIn1。如果输入(A,B,Cl,Ch,G)配置中的1个或2个具有E(N,M)形式,则对MuxIn2和MuxIn3应用相同的动态分配。
例如:
假设有以下配置:
·A=nu_PxlA
·B=D(0,-1)
·Cl=E(0,-1)
·Ch=D(-1,0)
·G=MUXIn0
然后,多路复用器的控制将如下:
·MuxIn0=D(0,-1)
·MuxIn1=D(-1,0)
·MuxIn2=E(0,-1)
·muxA=nu_PxlB
·muxB=MuxIn0
·muxCl=MuxIn2
·muxCh=MuxIn1
·muxG=MuxIn0
ALU操作码
整数运算
0.nop
1.addc:{Out1,Out0}<=A+B+C
addc(v):Out0<=A1+B1+Cl;Out1=Ah+Bh+Ch
2.adds:Out0<=(A+B)>>C;Out1<=(A+B)[C-1:0]
3.addl:{Out1,Out0}<={B,A}+C
addl(v):Out0<=A+Cl;Out1<=B+Ch
4.addrv:{Out1,Out0}<=A1+B1+Ah+Bh+C
5.add4:{Out1,Out0}<=A+B+Cl+Ch
6.subb:{Out1,Out0}<=A-B+C
subb(v):Out0<=Al-Bl+C1;Out1=Ah-Bh+Ch
7.subc:{Out1,Out0}<=A +B-C
subc(v):Out0<=A1+B1–C1;Out1=Ah+Bh-Ch
8.subl:{Out1,Out0}<={B,A}-C
subl(v):Out0<=A–C1;Out1<=B-Ch
9.subrv:{Out1,Out0}<=A1+B1+Ah+Bh-C
10.mac:{Out1,Out0}<=A*B+C
mac(v):Out0<=A1*B1+C1;Out1=Ah*Bh+Ch
11.macs:{Out1,Out0}<=A*B-C
macs(v):Out0<=A1*B1–C1;Out1=Ah*Bh-Ch
12.macrv:{Out1,Out0}<=(Al*B1)+(Ah*Bh)+C
13.shift:{Out1,Out0}<=(A<<B)>>C
shift(v):Out0<=(A1<<B1)>>C1;Out1=(Ah<<Bh)>>Ch
14.shiftrl:{Out0,Out1}<={B,A}>>C
shiftrl(v):Out0<=A>>C1;Out1<=B>>Ch
15.shiftll:{Out0,Out1}<={B,A}<<C
shiftll(v):Out0<=A<<C1;Out1<=B<<Ch
16.absd:{Out1,Out0}<=|A-B|+C
absd(v):Out0<=|A1-B1|+C1;Out1=|Ah-Bh|+Ch
17.absdrv:{Out1,Out0}<=|A1–B1|+|Ah-Bh|+C
18.absddrv:{Out1,Out0}<=|A1–B1|-|Ah-Bh|+C
19.min:{Out1,Out0}<=min({B(val),A(Idx)},C({val,Idx}))-->输出:Idxmin
20.equalone:{Out1,Out0}<=min({B(val),A(Idx)},C({val,Idx}))-->输出:第一操作数
21.equaltwo:{Out1,Out0}<=min({B(val),A(Idx)},C({val,Idx}))-->输出:第二操作数
22.lessc:{Out1,Out0}<=(A<B)+C
lessc(v):Out0<=(Al<Bl)+Cl;Out1=(Ah<Bh)+Ch
23.lesseqc:{Out1,OUt0}<=(A<=B)+C
lesseq(v):Out0<=(A1<=B1)+C1;Out1=(Ah<=Bh)+Ch
24.equalc:{Out1,Out0}<=(A==B)+C
equalc(v):Out0<=(A1==B1)+C1;Out1=(Ah==Bh)+Ch
25.nequalc:{Out1,Out0}<=(A!=B)+C
nequalc(v):Out0<=(A1!=B1)+C1;Out1=(Ah!=Bh)+Ch
26.lesscrv:{Out1,Out0}<=(A1<B1)+(Ah<Bh)+C
27.lesseqcrv:{Out1,OUt1}<=(A1<=B1)+(Ah<=Bh)+C
28.equalcrv:{Out1,Out0}<=(A1==B1)+(Ah==Bh)+C
29.nequalcrv:{Out1,Out0}<=(A1!=B1)+(Ah!=Bh)+C
浮点运算
转换中的C指数偏置参数可以看作是一个7位有符号整数(C的其他25位可以忽略,且符号位扩展)
30.short2fp:{Out1,Out0}<=A*2**C
31.word2fp:{Out1,Out0}<={B,A}*2**C
32lessf {Out1,Out0}<={B,A}<C
33lesseqf {Out1,Out0}<={B,A}<=C
34.fp2word:{Out1,Out0}<={B,A}*2**C
35.mulf:{Out1,Out0}<={B,A}*C
36.addf:{Out1,Out0}<={B,A}+C
37.subf:{Out1,Out0}<={B,A}-C
38.int_div:{Out1,Out0}<=1/A
加法运算
39.or {Out0,Out1}<={B,A}|Cn
40.xor {Out0,Out1}<={B,A}^AC
41.and {Out0,Out1}<={B,A}&C
42.equal32 {Out1,Out0}<={B,A}==C
43.nequal32 {Out1,Out0}<={B,A}!=C
44.less32 {Out1,Out0}<={B,A}<C
45.lesseq32 {Out1,Out0}<={B,A}<=C
46.abs32 {Out1,Out0}<=|{B,A}-C|
47.max32 {Out1,Out0}<=max({B,A},C)-->输出:32max
48.minf {Out1,Out0}<=min({B,A},C)-->输出:fp min
49.maxf {Out1,Out0}<=max({B,A},C)-->输出:fp max
50.mac4 {Out1,Out0}<=(A1*B1)+(Ah*Bh)+(C0*C2)+(C1*C3)+acc
mac4(v)Out0<=(Al*B1)+(Ah*Bh)+acc0;Out1=(C0*C2)+(C1*C3)+acc1
51.shift_sat{Out1,Out0}<=Sat({B,A},C):rnd=byteMode:0shortMode=1|notRELU:2
52.add_sat {Out1,Out0}<=Sat({A+B},C)
add_sat(v) {Out1,Out0}<=Sat({Al+Bl},C)
DPU微控制器指令编码
执行指令:
[8:0]rc:重复计数器:
[0..495]:立即值
[496..511]:计数器[rc-496]
[10:9]sel:DPU指令选择
[11]收集:激活收集单元(只有微控制器0)
[14:12]保留
[15]类型0
Do循环:
[8:0]RLC:重复循环计数器:
[0..495]:立即值
[496..511]:计数器[rc-496]
[13:9]长度:循环长度:[1..32]。
[14]模式:0:计数循环,1:计数周期
[15]类型1
DPU可以一次配置一个(每个DPU具有唯一的单播地址)或者可以以广播模式配置-存在可以反映共享行和/或列的DPU的行和/或列的地址且这允许广播配置信息。
数据处理阵列:线性映射(编程单个DPU配置寄存器)
数据处理阵列:广播映射(同时编程多个DPU的配置寄存器)
应该注意的是,任何图像处理算法都可以由图像处理器以迭代方式执行。有关一些像素的结果由DPA 500处理。有些结果可能被存储在DPA中一段时间,然后被发送到存储器模块。通常基于PMA的存储器资源的大小以及由DPA在某个任务期间处理的源像素或目标像素的数量设置一定的时间段。一旦再次需要这些结果,它们可能会从存储器模块中被提取。例如,当DPA 500执行关于源图像的某些源像素的计算时,可以将这些结果存储一段时间(例如,当执行与相邻源像素有关的计算时),然后将其发送到存储器。当进一步需要结果时,可以从存储器模块提取它们。
扭曲计算
由于各种原因,扭曲计算可能被应用。例如,补偿图像采集的不平衡。
扭曲计算可以由DPA 500执行。
根据本发明的实施例,针对一组目标像素中的每个目标像素(目标图像的像素)应用扭曲计算。目标像素组可以包括整个目标图像或目标图像的一部分。通常,目标图像被虚拟分割成多个窗口,且每个窗口是一组目标像素。
扭曲计算可以接收或者可以计算相应的一组源像素。相应组的源像素中的源像素在扭曲计算期间被处理。通常将相应组的源像素的选择馈送到PMA,并且可以取决于例如期望的扭曲函数。
通过对与目标像素相关联的相邻源像素应用权重(Wx,Wy)来计算目标像素的扭曲值。至少一个相邻源像素的权重和坐标(x,y)以扭曲参数(X',Y')进行定义。
图17示出根据本发明的实施例的方法1700。
方法1700可以从步骤1710开始,从一组目标像素中选择目标像素。所选择的目标像素将被称为“目标像素”。
步骤1710之后可以是步骤1720,针对一组目标像素中的每个目标像素执行扭曲计算过程,其包括:
1)计算(1721)或接收关于所选择的目标像素的扭曲参数。扭曲参数可以包括在扭曲计算期间应该被处理的给定源像素的第一权重和第二权重(Wx,Wy)和坐标(x,y)。第一权重和第二权重由处理单元阵列(DPA)中的第一组处理单元(DPU)接收。
2)向诸如收集单元的存储器单元请求(1722)相邻源像素(其包括给定的源像素)。收集单元可以在各种操作模式下接收4个坐标并将它们转换为16个源像素-四个相邻源像素组。
3)通过第二组处理单元接收(1723)与目标像素相关联的相邻源像素。
4)通过第二组处理单元计算(1724)响应于相邻源像素的值和一对权重的扭曲结果;向存储器模块提供扭曲结果。
步骤1721、1722、1723和1724可以以流水线方式执行。
参考图18,第一组处理单元被表示为505并且可以包括DPA 500的上部第一行中的最左边的四个DPU。第二组处理单元被表示为501并且可以包括DPA 500的最右边的两列。
在步骤1720之后是步骤1730,检查扭曲是否是针对该组的所有目标像素计算的。如果没有,则结束扭曲计算。
步骤1726可以包括在第二组中的处理单元之间转播一些相邻源像素的值。
图18和图19示出DPU(0,4)的输出信号(组504的X')被发送到DPU(0,15),然后被转播到DPU(1,15)。应该注意,在图18和图19中,PMA并行计算四个像素的扭曲函数:
1)DPU(0,3)、DPU(1,3)和组501中的DPU涉及计算第一像素的扭曲。
2)DPU(0,2)、DPU(1,2)和组502的DPU涉及计算第二像素的扭曲。
3)DPU(0,1)、DPU(1,1)和组503的DPU涉及计算第三像素的扭曲。
4)DPU(0,0)、DPU(1,0)和组504的DPU涉及计算第三像素的扭曲。
步骤1726可以包括转播由第二组计算的中间结果和第二组的处理单元之间的一些相邻源像素的值。
图20示出了从组505和506的DPU(510(0,0)-510(0,3)和510(1,0)-510(1,3))发送扭曲参数(组501-504的X'和组501-504的Y'))至组501、502、503和504。
图21和图22示出根据本发明实施例的由组501的DPU 510(0,15)-510(3,15)和DPU510(0,14)-510(5,14)执行的扭曲计算。
图21的扭曲计算包括以下步骤(其中一些相互并行地执行)。步骤1751-1762也在图22中示出。
由第二组的第一处理单元(DPU 510(5,14))计算(1751)在第一对相邻源像素之间的第一差值(P0-P2)和在第二对相邻的源像素之间的第二差值(P1-P3)。
将第一差值提供(1752)到第二组的第二处理单元(DPU 510(1,14)),并将第二差值提供给第二组的第三处理单元。
由第二组的第四处理单元(DPU 510(1,15))响应于第一权重计算(1753)第一修改权重Wy'。
将第一修改权重从第四处理单元提供(1754)给第二组的第二处理单元(DPU 510(1,14))。
由第二组的第二处理单元基于第一差值(P0-P2)、第一相邻源像素(P0)和第一修改权重(Wy')计算(1755)第一中间结果(Var0)。Var0=(P0-P0)*Wy'-P0。
从第二组的第三处理单元向第二组的第六处理单元(DPU 510(0,15))提供(1756)第二差值(P1-P3)。
从第二组的第五处理单元(DPU 510(0,14))向第二组的第六处理单元(DPU 510(2,14))提供(1757)第二相邻源像素(P1)。
通过第二组的第六处理单元基于第二差值、第二相邻源像素和第一修改权重计算(1758)第二中间结果Var1。Var1=(P1-P3)*Wy'-P1。
将来自第二组的第六处理单元的第二中间结果Var1提供(1759)到第二组的第七处理单元(DPU 510(2,15)),并且将第一中间结果Var0从第二组的第二处理单元提供到第二组的第七处理单元。
通过第二组的第七处理单元计算(1760)相对于第一中间结果和第二中间结果的第三中间结果Var2。Var2=Var0-Var1。
将第三中间结果从第二组的第七处理单元的提供(1761)到第二组的第八处理单元(DPU 510(3,15))。将第二中间结果从第二组的第六处理单元提供给第二组的第九处理单元(DPU 510(3,14))。
将第二中间结果从第二组的第九处理单元提供(1762)给第二组的第八处理单元。将第二修改权重(Wx')从第二组的第三处理单元提供给第二组的第八处理单元。
通过第二组的第八处理单元基于第二中间结果和第三中间结果以及第二修改权重来计算(1763)扭曲结果。Warp_result=Var2*Wx'+Var1。
如图20所示,DPU 510(5,14)可以从收集单元接收像素P0、P1、P2和P3。当DPA 500一次处理四个像素时,组501、502、503和504从收集单元(并行)接收16个像素。
应该注意的是,DPA 500还接收(例如,来自收集单元的)与每个像素相关的扭曲参数X',Y'。
根据本发明的一个实施例,每个像素的扭曲参数可以通过DPA的DPU计算-例如,当扭曲参数可以通过诸如多项式的数学公式表示时。
图23示出了计算X'和Y'的一组DPU 507,并且这些计算出的X'和Y'可以被馈送到组505和506。
应该注意,图18至图22仅示出了非限制性分组方案。扭曲计算可以由其他形状和尺寸的DPU组执行。
视差
视差计算旨在为源像素找到最佳匹配目标像素。可以针对源图像中的所有源像素以及针对目标图像的所有目标像素来执行搜索-但是这不一定是这样,并且视差可以仅应用于源图像的一些源像素上和/或目标图像的一些目标像素上。
视差计算不仅仅比较单个源像素与单个目标像素之间的差值,还将源像素的子组与目标像素的子组进行比较。比较可以包括计算诸如在源像素和对应目标像素之间的绝对差和(SAD)之类的函数。
源像素可以位于源像素子组的中心,并且目标像素可以位于目标像素的子组的中心。源像素和/或目标像素的其他位置可以被使用。
源像素的子组和目标像素的子组可以是矩形形状(或可以具有任何其它形状),并且可以包括N行和N列,而N可以是可以超过三的奇正整数。
大部分的视差计算可能受益于以前的计算机视差计算。这些示出在图24和25中被提供。
图24示出了5×5源像素S(1,1)-S(5,5)的第一子组1001、5×5目标像素T(1,1)-T(5,5)的第一子组1002、5×5源像素S(1,2)-S(5,6)的第二子组1003和5×5目标像素T(1,2)-T(5,6)的第二子组1004。
源像素S(3,3)和S(3,4)位于源像素的第一子组1001和第二子组1003的中心。目标像素T(3,3)和T(3,4)位于目标像素的第一子组1002和第二子组1004的中心。
与S(3,3)和T(3,3)相关的SAD等于:
SAD(S(3,3),T(3,3))=SUM(|S(i,j)-T(i,j)|)-针对在1和5之间的索引i和j。
与S(3,4)和T(3,4)相关的SAD等于:
SAD(S(3,4),T(3,4))=SUM(|S(i,j)-T(i,j)|)-针对2和6之间的索引i和针对在1和5之间的索引j。
假设SAD是从左到右计算的。在这个假设下-SAD(S(3,4),T(3,4))的计算可能受益于SAD(S(3,3),T(3,3))的计算。
特别地:SAD(S(3,4),T(3,4))=SAD(S(3,3),T(3,3))-SAD(源像素和目标像素的第一子组的最右列)+SAD(源像素和目标像素的第二子组的最左列)。
由于源图像和目标图像是二维的,并假设源像素从左到右(每片)和从上到下扫描-那么SAD的计算就更有效率。
图25示出了具有中心像素SB的源像素的子组SG(B)。图26示出了具有中心像素TB的目标像素(未示出)的对应子组TG(B)。
针对在SB的行的上面的行的源像素以及针对位于SB左侧且在同一行上的像素计算SUD。
像素SA是子组SG(A)的中心并且是像素SB的左边邻居。目标像素TA是像素SB的左边邻居,并且是子组TG(A)的中心。
像素SC是子组SG(C)的中心并且是像素SB的上方邻居。目标像素TC是像素SB的上方邻居并且是子组TG(C)的中心。
SG(A)的最左边的列表示为1110。SG(C)的最右边的列表示为1114。SG(B)的当前最右边的列表示为1115。SG(B)的最右边的最低像素(也被称为新源像素NSP)被表示为1116。在SG(B)的当前最右列顶部的旧像素(属于SG(C))(也称为旧源像素NSP)被表示为1112。
TG(A)的最左边的列表示为1110'。TG(C)的最右边的列表示为1114'。TG(B)的当前最右边的列表示为1115'。TG(B)的最右边的最低像素(也称为新目标像素NTP)被表示为1116'。在TG(B)的当前最右列顶部的旧像素(属于TG(C))(也称为旧目标像素NTP)被表示为1112'。
计算(SB,TB)的SAD可以等于:
SAD(SA,TA)。
-SAD(SG(A)最左边的列,SG(B)最左边的列)。
+SAD(SG(C)的最右边的列,TG(C)的最右边的列)。
+SG(B)和TG(B)的最右边的最低的源像素和目标像素的绝对差。
-SG(C)和TG(C)最右边的列的最上面的源像素和目标像素的绝对差。
图27示出根据本发明的实施例的方法2600。
方法2600可以开始于步骤2610,选择源像素并选择目标像素的子组。目标像素的子组可以是目标图像的一部分的整个目标图像。
步骤2610之后可以是步骤2620,通过数据处理器阵列的第一组数据处理器计算一组绝对差和(SAD)。
该组SAD与包括在步骤2610中选择的目标像素的目标像素的子组和源像素相关联。根据(相同)源像素和目标像素的子组中的不同目标像素计算该组的不同SAD。
计算相同源像素的该组SAD减少了被提取到DPA的数据量。
目标像素的子组可以包括被顺序地存储在存储器模块中的目标像素。在计算该组SAD之前,从存储器模块中提取目标像素的子组。从存储器模块提取目标像素的子组是通过包括内容可寻址存储器缓存的收集单元执行的。
每个SAD是基于先前计算的SAD以及基于当前计算的其他源像素与属于目标像素的子组的其他目标像素之间的绝对差来计算的。图25提供了这样的计算的示例。
在步骤2620之后可以是步骤2630,通过该阵列中的第二组数据处理器响应于该组SAD的值找到目标像素的子组中的最佳匹配目标像素。
步骤2620和2630可以包括在数据处理器阵列中存储计算结果-整个矩形像素阵列的SAD,列的SAD等等。应该注意的是,每个DPU的寄存器文件的深度可以足够长,以存储先前矩形阵列的最右边的列的SAD。例如-如果SG(A)中有15列,那么DPU的寄存器文件550应至少为15。
在存储先前的SAD之后,则对于给定的SAD,存储第一先前计算的SAD、第二先前计算的SAD、位于第二目标像素列顶部的目标像素和位于第二源像素列顶部的源像素。
参考步骤2620-第一先前计算的SAD可以反映以下两项之间的绝对差:(i)与给定的矩形源像素阵列相差第一源像素列和第二源像素列的矩形源像素阵列,以及(ii)与给定的矩形目标像素阵列相差第一目标像素列和第二目标像素列的矩形目标像素阵列。例如-SAD(SA,TA)。
第二先前计算的SAD可以反映在第一源列与第一源列之间的绝对差。例如-SAD(SG(A)的最左边一列,SG(B)的最左边一列)。
步骤2620可以包括:
1)通过从第一先前计算的SAD(例如SAD(SA,TA))中减去(a)先前计算的第二SAD(例如-SAD(SG(A)的最左列,SG(B)的最左列),以及(b)以下两项之间的绝对差:(i)位于第二目标像素列的顶部上的目标像素,和(ii)位于第二源像素列的顶部上的源像素(例如-OSP1112与OTP 1112'之间的绝对差)。
2)向中间结果添加第二目标像素列的最低目标像素与第二源像素列的最低源像素之间的绝对差(例如-NSP 1116与NTP 1116'之间的绝对差)。
应当注意的是,找到最佳匹配目标像素可涉及迭代过程,并且可以执行步骤2610、2620和2630的多次重复-针对不同像素的子组并且通过比较这些多次迭代的结果-目标像素的组中的最佳匹配目标像素可以被找到。
还要注意的是,处理单元阵列可以并行执行多个视差计算(针对不同的源像素和/或针对不同的目标像素)。
图28示出了根据本发明实施例的由DPA处理的八个源像素和三十二个目标像素。图29示出根据本发明的实施例的源像素阵列。图30示出根据本发明的实施例的目标像素阵列。
计算出与以下像素相关的SAD:源像素(SP0,SP1,SP2和SP3)和(SP'0,SP'1,SP'2和SP'3)、4×8目标像素(包括TP0,TP1,TP2和TP3的最左列)以及另外的4×8目标像素(包括TP'0,TP'1,TP'2和TP'3的最左列)。
源像素SP0,SP1,SP2和SP3属于同一列,它们的SAD以流水线方式计算:
1)针对SP0和某个目标像素计算SAD。
2)在计算SP1和某个目标像素的SAD时使用先前的计算。
3)在计算SP2和某个目标像素的SAD时使用先前的计算。
4)在计算SP3和某个目标像素的SAD时使用先前的计算。
在计算源像素SP0、SP1、SP2和SP3的SAD的同时、PMA还计算SP'0、SP'1、SP'2和SP'3的SAD。SP'0、SP'1、SP'2和SP'3属于同一列、且它们的SAD以流水线方式计算:
1)针对SP'0和某个目标像素计算SAD。
2)在计算SP'1和某个目标像素的SAD时使用先前的计算。
3)在计算SP'2和某个目标像素的SAD时使用先前的计算。
4)在计算SP'3和某个目标像素的SAD时使用先前的计算。
DPA 500可以并行地计算每个源像素和多个其他目标像素的SAD。
例如,假定4×8目标像素的第一行包括TP0和七个移位目标像素(TP0、Ts1P0、Ts2P0、Ts2P0、Ts3P0、Ts4P0、Ts5P0、Ts6P0、Ts7P0),则SP0的SAD的计算可以包括针对SP0和TP0、Ts1P0、Ts2P0、Ts2P0、Ts3P0、Ts4P0、Ts5P0、Ts6P0、Ts7P0中的每一个计算SAD。
计算任何SAD时,都需要计算新像素的绝对差。图29示出了四个新的源像素NSO、NS1、NS2和NS3(用于计算与SP0、SP1、SP2和SP3以及仅一个目标像素列相关的SAD)。
图30示出了32个新的目标像素:
1)用于计算SP0与八个不同的目标像素-NT0、Ns1T0、Ns2T0、Ns3T0、Ns4T0、Ns5T0、Ns6T0、Ss7T0的SAD的新目标像素。
2)用于计算SP1和八个不同的目标像素-NT1、Ns1T1、Ns2T1、Ns3T1、Ns4T1、Ns5T1、Ns6T1、Ss7T1的SAD的新的目标像素。
3)用于计算SP2与八个不同的目标像素-NT2、Ns1T2、Ns2T2、Ns3T2、Ns4T2、Ns5T2、Ns6T2、Ss7T2的SAD的新目标像素。
4)用于计算SP3与八个不同的目标像素-NT3、Ns1T3、Ns2T3、Ns3T3、Ns4T3、Ns5T3、Ns6T3、Ss7T3的SAD的新目标像素。
图31示出了八个DPU的组1131、1132、1133、1134、1135、1136、1137和1138-每个组包括4个DPU。
每个组1131、1132、1133和1134计算像素SP0、SP1、SP2和SP3的SAD-但针对不同的目标像素(TP0、TP2、TP3和TP4)。
每个组1135、1136、1137和1138计算像素SP'0、SP'1、SP'2和SP'3的SAD–但针对不同的目标像素(TP0、TP2、TP3和TP4)
像素组1140对由组1131-1138计算出的SAD执行最小化操作。
相应地,方法2600可以包括由数据处理器阵列的第一组数据处理器计算与多个源像素和目标像素的多个子组相关联的多组SAD;其中,多组SAD中的每个SAD是基于先前计算的SAD和当前计算的绝对差计算的;以及通过该阵列中的第二组数据处理器并针对源像素,响应于与源像素相关联的SAD的值找到最佳匹配目标像素。
多组SAD可以包括SAD的子组,SAD的每个子组与多个源像素和目标像素的多个子组中的目标像素的多个子组相关联。例如,组1131-1138计算不同的SAD子组。
多个源像素可以属于矩形像素阵列的列并且彼此相邻。
计算多组SAD可以包括并行计算不同SAD子组的SAD。
计算可以包括以顺序方式计算属于相同SAD子组的SAD。
以下文字说明了根据本发明的实施例的一些PMA状态和配置缓冲器。
这些状态和配置缓冲器109包括PMA控制状态寄存器,PMA暂停启用控制寄存器和PMA暂停事件状态寄存器。
控制寄存器可以允许例如标量单元确定图像处理器的预定操作时间段。另外地或替代地,标量单元可以暂停图像处理器(而不更改PMA的状态)并且编程程序处理器,将控制信号发送到程序处理器并且从相同的点恢复图像处理器的操作(除了由标量单元引入的更改)。
PMA控制状态寄存器(p_PmaCsr)
[2:0] lsuAddSel[0] 地址选择LSU0
[5:3] lsuAddSel[l] 地址选择LSU1
[8:6] lsuAddSel[2] 地址选择LSU2
[11:9] lsuAddSel[3] 地址选择LSU3
[14:12]lsuAddSel[4] 地址选择LSU4
[17:15]lsuAddSel[5] 地址选择LSU5
[23:18]保留
[26:24]agStopSel AGU生成的停止条件选择
[27]XorParity在启用时写入同时反转奇偶校验(parity)
[29:28]sysMemMap 系统存储器映射
[30] proEn 程序启用
[31] suspCntEn 挂起计数器启用
PMA暂停启用控制寄存器(HaltOnEvent)
[15:0]mbParityEn 存储体[15:0]奇偶校验错误暂停启用
[16]spmparityEn SU程序存储器奇偶校验错误暂停启用
[17]sdmparityEn SU数据存储器奇偶校验错误暂停启用
[18]dmaIntEn DMA中断暂停启用
[19]suRdErrEn 标量单元读取错误暂停启用
[20]suDivZeroEn 标量单元除以零暂停启用
[21]SuEnEn 标量单元中断暂停启用
[22]suHaltEn 标量单元暂停启用
[31:23]保留
PMA暂停事件状态寄存器(HoeStatus)
[15:0]mbParityErr 存储体[15:0]奇偶校验错误
[16]spmparityErr SU程序存储器奇偶校验错误
[17]sdmparityErr SU数据存储器奇偶校验错误
[18]dmaInt DMA中断
[19]suRdErr 标量单元读取错误
[20]suDivZero 标量单元除以零
[21]suInt 标量单元中断
[22]SuHalt 标量单元暂停
[31:23]保留
挂起-恢复-事件计数器&递增。
此功能启用挂起操作,更改某些配置而不清空计算流水线,并恢复操作。它通过以下寄存器实现:(a)挂起计数器启用控制位(p_PmaCsr中的suspCntEn),(b)挂起计数器(p_SuspCnt)和(c)挂起重置控制(p_RstCtl)。
当启用(suspCntEn=1)时,挂起计数器倒计时。当达到零时,PMA挂起操作(保持停止状态),直到suspCntEn重置,或者p_SuspCnt用新值(!=0)写入。在停止期间,标量单元可以重新配置PMA(指令,常量...)。当重置suspCntEn或写入p_StallCnt时,PMA将用新配置恢复其操作。p_RstCtl定义在恢复时哪些功能被重置。
可以重置的特征是:
1)DPU微控制器。
2)DPA程序存储器。
3)BU程序存储器。
4)SB程序存储器。
5)地址生成器。
6)BU读取缓冲器。
7)GU迭代器(1位)
在挂起时重置控制
事件计数器p_EventCnt
一个简单的计数器,用DPU时钟计数(在p_stall期间不计数)。计数器是通过配置预设的。只要计数器为空,就会向标量单元发出一个事件信号。这个计数器通过配置总线是可读的。
挂起和事件增量寄存器p_SuspEventInc
低的一半(15..0)用于递增挂起计数器,在其正常递减期间和同时递增。高的一半(31..16)也同时递增事件计数器。
图33示出根据本发明的实施例的方法3300。
方法3300可以从步骤3310开始,从源像素的组中选择源像素。所选择的源像素将被称为“源像素”。
在步骤3310之后可以是步骤3320,针对源像素的组中的每个源像素执行扭曲计算过程,包括:
1)计算(3321)或接收关于所选择的源像素的扭曲参数。扭曲参数可以包括在扭曲计算期间应当处理的给定的目标像素的第一权重和第二权重(Wx,Wy)和坐标(x,y)。第一权重和第二权重由处理单元阵列(DPA)中的第一组处理单元(DPU)接收。
2)向诸如收集单元的存储器单元请求(3322)相邻目标像素(其包括给定的目标像素)。收集单元可以在各种操作模式下接收4个坐标并将它们转换为16个目标像素-四组相邻目标像素。
3)由第二组处理单元接收(3323)与源像素相关联的相邻目标像素。
4)由第二组处理单元响应于相邻目标像素的值和一对权重计算(3324)扭曲结果;向存储器模块提供扭曲结果。
步骤3321、3322、3323和3324可以以流水线方式执行。
步骤3320之后是步骤3330,检查扭曲是否是针对该组的所有源像素计算的。如果不是-结束扭曲计算。
步骤3326可以包括在第二组的处理单元之间转播一些相邻目标像素的值。
对术语“包括”(comprise)、“包括(comprises)”、“包括(comprising)”、“包含(including)”、“可包含(may include)”以及“包含(includes)”中的任何一个的任何引用可以应用于术语“由......构成”(consists)、“由......构成(consisting)”、“以及基本上由......构成(and consisting essentially of)”。例如-任何描述步骤的方法都可以包括比图中所示的步骤更多的步骤,只是图中所示的步骤或者基本上仅在图中示出的步骤。这同样适用于设备、处理器或系统的组件以及存储在任何非暂时性计算机可读存储介质中的指令。
本发明也可以在用于在计算机系统上运行的计算机程序中实施,该计算机程序至少包括用于在可编程装置(诸如计算机系统)上运行时执行根据本发明的方法的步骤、或者使得可编程装置能够执行根据本发明的设备或系统的功能的代码部分。计算机程序可以致使存储系统将硬盘驱动器分配给硬盘驱动器组。
计算机程序是诸如特定应用程序和/或操作系统的指令列表。计算机程序可以例如包括以下各项中的一个或多个:子例程、函数、过程、对象方法、对象实现、可执行应用程序、小应用程序、小服务程序、源代码、目标代码、共享库/动态加载库和/或被设计用于在计算机系统上执行的其它指令序列。
计算机程序可以内部地存储于非暂时性计算机可读介质上。所有或一些计算机程序可以设置在永久地、可移除地或远程地耦合到信息处理系统的计算机可读介质上。计算机可读介质可以包括例如但不限于任何数量的以下各项:磁存储介质,包括硬盘和磁带存储介质;光存储介质,诸如光盘介质(例如,CD-ROM、CD-R等)和数字视频盘存储介质;非易失性存储器存储介质,包括基于半导体的存储器单元,诸如闪存存储器、EEPROM、EPROM、ROM;铁磁数字存储器;MRAM;易失性存储介质,包括寄存器、缓冲器或缓存、主存储器、RAM等。
计算机进程通常包括执行(运行)程序或程序的一部分、当前程序值和状态信息以及由操作系统用以管理进程的执行的资源。操作系统(OS)是管理计算机资源共享、并为程序员提供用于访问这些资源的接口的软件。操作系统处理系统数据和用户输入,并通过分配和管理作为对系统的用户和程序的服务的任务和内部系统资源进行响应。
计算机系统可以例如包括至少一个处理单元、相关联的存储器和多个输入/输出(I/O)设备。当执行计算机程序时,计算机系统根据计算机程序处理信息,并且经由I/O设备产生所得到的输出信息。
在前述说明书中,已经参考本发明的实施例的具体示例描述了本发明。然而,显然,在不脱离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以在其中进行各种修改和改变。
此外,说明书和权利要求中的术语“前”、“后”、“顶部”、“底部”等,如果有的话,用于描述目的,而不一定用于描述永久相对位置。应当理解,这样使用的术语在适当的情况下是可互换的,使得本文所描述的本发明的实施例例如能够在除了本文所示出或另外描述的那些方向之外的其它方向上操作。
本文讨论的连接可以是适合于例如经由中间设备往来于相关节点、单元或设备传送信号的任何类型的连接。因此,除非暗示或另外陈述,否则连接可以例如是直接连接或间接连接。可以参照单个连接、多个连接、单向连接或双向连接来图示或描述连接。然而,不同的实施例可以改变连接的实现。例如,可以使用单独的单向连接而不是双向连接,反之亦然。而且,多个连接可以用串行或以时分复用方式传送多个信号的单个连接代替。同样,携带多个信号的单个连接可以被分离成携带这些信号的子组的各种不同的连接。因此,传送信号有很多选择。
虽然在实施例中已经描述了具体的导电类型或电势的极性,但是应该理解,导电类型和电势的极性可以颠倒。
本文描述的每个信号可以被设计为正逻辑或负逻辑。在负逻辑信号的情况下,在逻辑真状态对应于逻辑电平零的情况下,信号是低电平有效的。在正逻辑信号的情况下,在逻辑真状态对应于逻辑电平的情况下,信号为高电平有效。注意,本文描述的任何信号可以被设计为负逻辑信号或正逻辑信号。因此,在替代实施例中,被描述为正逻辑信号的那些信号可以被实现为负逻辑信号,而被描述为负逻辑信号的那些信号可以被实现为正逻辑信号。
此外,当涉及将信号、状态位或类似装置呈现为其逻辑真或逻辑假的状态时,本文使用术语“断言”或“置位”和“否定”(或“无效”或“清除”)分别用于其逻辑真或逻辑假状态。如果逻辑真状态是逻辑电平1,则逻辑假状态是逻辑电平0。如果逻辑真状态是逻辑电平0,则逻辑假状态是逻辑电平1。
本领域技术人员将认识到,逻辑块之间的边界仅仅是说明性的,并且可替代实施例可以合并逻辑块或电路元件,或者对各种逻辑块或电路元件施加功能的替代分解。因此,应当理解,本文所描述的体系结构仅仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系结构。
实现相同功能的部件的任何布置被有效地“关联”,使得实现期望的功能。因此,本文组合以实现特定功能的任何两个部件可以被看作彼此“相关联”,使得实现期望的功能,而与体系结构或中间部件无关。同样地,如此关联的任何两个组件也可以被视为彼此“可操作地连接”或“可操作地耦合”以实现期望的功能。
此外,本领域技术人员将认识到上述操作之间的边界仅是说明性的。多个操作可以组合成单个操作,单个操作可以分布在附加操作中,并且操作可以在时间上至少部分地重叠地执行。此外,可替代实施例可以包括特定操作的多个实例,并且在各种其它实施例中可以改变操作的顺序。
还例如,在一个实施例中,所示示例可以被实施为位于单个集成电路上或在同一设备内的电路。可替代地,该示例可实施为以合适方式彼此互连的任何数目的单独集成电路或单独设备。
还例如,示例或其部分可以实施为物理电路的软件或代码表示,或者可以实现为可转换成物理电路的逻辑表示的软件或代码表示,诸如以任何适当类型的硬件描述语言实施。
此外,本发明不限于在非可编程硬件中实施的物理设备或单元,而是还可以应用在能够通过根据适当的程序代码进行操作来执行期望的设备功能的可编程设备或单元中,例如大型机、小型计算机、服务器、工作站、个人计算机、记事本、个人数字助理、电子游戏、汽车和其他嵌入式系统、蜂窝电话和各种其他无线设备,在本申请中通常称为“计算机系统”。
然而,其它修改、变化和替代也是可能的。因此,说明书和附图被认为是说明性的而不是限制性的。
在权利要求中,置于括号之间的任何附图标记不应被解释为限制权利要求。词“包括”不排除权利要求中列出的那些之外的其他元素或步骤的存在。此外,如本文所使用的术语“一(a)”或“一个(an)”被定义为一个或多于一个。此外,在权利要求中使用诸如“至少一个”和“一个或更多个”之类的引导性短语不应被解释为暗示通过不定冠词“一(a)”或“一个(an)”引入另一个权利要求要素将包含该引导的权利要求要素的任何特定权利要求限制于仅包含一个该要素的发明,即使当相同的权利要求包括引导性短语“一个或更多个”或“至少一个”和不定冠词诸如“一(a)”或“一个(an)”时。这同样适用于定冠词的使用。除非另有说明,否则诸如“第一”和“第二”的术语用于任意地区分此类术语所描述的元素。因此,这些术语不一定旨在指示这些元素的时间或其他优先级。某些措施在相互不同的权利要求中引用的不争事实并不指示这些措施的组合不能有利地被使用。
虽然本文已经示出和描述了本发明的某些特征,但是本领域普通技术人员将想到许多修改、替换、改变和等同物。因此,应当理解,所附权利要求旨在覆盖落入本发明的真实精神内的所有这样的修改和改变。
Claims (27)
1.一种收集单元,其包括:
输入接口,所述输入接口被布置为接收用于检索多个被请求的数据单元的多个请求;
缓存存储器,包括多个条目的所述缓存存储器被配置为存储多个标签和多个缓存的数据单元;其中,每个标签与缓存的数据单元相关联并且指示存储器模块中的与所述缓存存储器不同的并且存储该缓存的数据单元的一组存储器单元;
比较器阵列,所述比较器阵列被布置成在所述多个标签与多个被请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址指示所述存储器模块中的存储所述多个被请求的数据单元中的被请求的数据单元的一组存储器单元;争用评估单元;控制器,所述控制器被布置成:(a)基于所述比较结果,将所述多个被请求的数据单元分类为存储在所述缓存存储器中的缓存的数据单元和未被缓存的数据单元;以及(b)向所述争用评估单元发送关于缓存的数据单元和未被缓存的数据单元的信息;其中,所述争用评估单元被布置成检查至少一个争用的发生;以及输出接口,所述输出接口被布置成以无争用的方式向所述存储器模块请求任何未被缓存的数据单元。
2.根据权利要求1所述的收集单元,其中,所述比较器阵列被布置成在单个收集单元时钟周期期间在所述多个标签与所述多个被请求的存储器组地址之间同时进行比较;并且其中,所述争用评估单元被布置成在单个收集单元时钟周期期间检查所述至少一个争用的发生。
3.根据权利要求1所述的收集单元,其中,所述争用评估单元被布置成响应于所述缓存存储器的新标签而重新检查至少一个争用的发生。
4.根据权利要求1所述的收集单元,其中,所述收集单元被布置成以流水线方式操作;其中,所述流水线的每个阶段的持续时间是一个收集单元时钟周期。
5.根据权利要求1所述的收集单元,其中,针对多个能够独立存取的存储体中的存储体的一行中的每组存储器单元,所述争用评估单元被布置成当两个未被缓存的数据单元属于相同的存储体中的不同行时确定发生潜在的争用。
6.根据权利要求1所述的收集单元,其中,所述缓存存储器是全相联存储器缓存。
7.根据权利要求1所述的收集单元,包括地址转换器,所述地址转换器被布置成将被包含在所述多个请求中的位置信息转换为所述多个被请求的存储器组地址。
8.根据权利要求7所述的收集单元,其中,所述多个被请求的数据单元属于数据单元阵列;其中,所述位置信息包括所述多个被请求的数据单元在所述数据单元阵列内的坐标。
9.根据权利要求1所述的收集单元,其中,所述争用评估单元包括多组节点;其中,每组节点被布置成评估在所述多个被请求的存储器组地址与所述多个标签中的标签之间的争用。
10.一种用于对检索多个被请求的数据单元的多个请求进行响应的方法,所述方法包括:
通过收集单元的输入接口接收用于检索所述多个被请求的数据单元的所述多个请求;
通过包括多个条目的缓存存储器存储多个标签和多个缓存的数据单元;其中,每个标签与缓存的数据单元相关联并且指示存储器模块中的与所述缓存存储器不同的并且存储该缓存的数据单元的一组存储器单元;
通过比较器阵列在所述多个标签与多个请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址指示所述存储器模块中的存储所述多个被请求的数据单元中的被请求的数据单元的一组存储器单元;
通过控制器基于所述比较结果将所述多个被请求的数据单元分类为存储在所述缓存存储器中的缓存的数据单元和未被缓存的数据单元;
向争用评估单元发送关于缓存的数据单元和未被缓存的数据单元的信息;
通过所述争用评估单元检查至少一个争用的发生;以及
通过输出接口以无争用的方式向所述存储器模块请求任何未被缓存的数据单元。
11.根据权利要求10所述的方法,包括通过所述比较器阵列在单个收集单元时钟周期期间在所述多个标签与所述多个被请求的存储器组地址之间同时进行比较;以及
通过所述争用评估单元在单个收集单元时钟周期期间检查所述至少一个争用的发生。
12.根据权利要求10所述的方法,包括通过所述争用评估单元响应于所述缓存存储器的新标签而重新检查至少一个争用的发生。
13.根据权利要求10所述的方法,包括以流水线方式进行操作;其中,所述流水线的每个阶段的持续时间是一个收集单元时钟周期。
14.根据权利要求10所述的方法,其中,针对多个能够独立存取的存储体中的存储体的一行中的每组存储器单元,由所述争用评估单元在两个未被缓存的数据单元属于相同的存储体中的不同行时确定发生潜在的争用。
15.根据权利要求10所述的方法,其中,所述缓存存储器是全相联存储器缓存。
16.根据权利要求10所述的方法,包括通过地址转换器将被包含在所述多个请求中的位置信息转换为所述多个被请求的存储器组地址。
17.根据权利要求16所述的方法,其中,所述多个被请求的数据单元属于数据单元阵列;其中,所述位置信息包括所述多个被请求的数据单元在所述数据单元阵列内的坐标。
18.根据权利要求10所述的方法,其中,所述争用评估单元包括多组节点;其中,所述方法包括通过每组节点评估在所述多个被请求的存储器组地址与所述多个标签中的标签之间的争用。
19.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储在由收集单元执行时被配置成使所述收集单元执行一种方法的指令,所述方法包括:
通过所述收集单元的输入接口接收用于检索所述多个被请求的数据单元的所述多个请求;
通过包括多个条目的缓存存储器存储多个标签和多个缓存的数据单元;其中,每个标签与缓存的数据单元相关联并且指示存储器模块中的与所述缓存存储器不同的并且存储该缓存的数据单元的一组存储器单元;
通过比较器阵列在所述多个标签与多个被请求的存储器组地址之间同时进行比较以提供比较结果;其中,每个被请求的存储器组地址指示所述存储器模块中的存储所述多个被请求的数据单元中的被请求的数据单元的一组存储器单元;
通过控制器基于所述比较结果将所述多个被请求的数据单元分类为存储在所述缓存存储器中的缓存的数据单元和未被缓存的数据单元;以及
向争用评估单元发送关于缓存的数据单元和未被缓存的数据单元的信息;通过所述争用评估单元检查至少一个争用的发生;以及通过输出接口以无争用的方式向所述存储器模块请求任何未被缓存的数据单元。
20.根据权利要求19所述的非暂时性计算机可读介质,其存储用于以下操作的指令:通过所述比较器阵列在单个收集单元时钟周期期间在所述多个标签与多个被请求的存储器组地址之间同时进行比较;以及
通过所述争用评估单元在单个收集单元时钟周期期间检查所述至少一个争用的发生。
21.根据权利要求19所述的非暂时性计算机可读介质,其存储用于执行以下操作的指令:通过所述争用评估单元响应于所述缓存存储器的新标签而重新检查至少一个争用的发生。
22.根据权利要求19所述的非暂时性计算机可读介质,其存储用于以流水线方式进行操作的指令;其中,所述流水线的每个阶段的持续时间是一个收集单元时钟周期。
23.根据权利要求19所述的非暂时性计算机可读介质,其中,针对多个能够独立存取的存储体中的存储体的一行中的每组存储器单元,由所述争用评估单元在两个未被缓存的数据单元属于相同的存储体中的不同行时确定发生潜在的争用。
24.根据权利要求19所述的非暂时性计算机可读介质,其中,所述缓存存储器是全相联存储器缓存。
25.根据权利要求19所述的非暂时性计算机可读介质,其存储用于执行以下操作的指令:通过地址转换器将被包含在所述多个请求中的位置信息转换为所述多个被请求的存储器组地址。
26.根据权利要求25所述的非暂时性计算机可读介质,其中,所述多个被请求的数据单元属于数据单元阵列;其中,所述位置信息包括所述多个被请求的数据单元在所述数据单元阵列内的坐标。
27.根据权利要求19所述的非暂时性计算机可读介质,其中,所述争用评估单元包括多组节点;其中,所述非暂时性计算机可读介质存储用于执行以下操作的指令:通过每组节点评估在所述多个被请求的存储器组地址与所述多个标签中的标签之间的争用。
Applications Claiming Priority (22)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562173389P | 2015-06-10 | 2015-06-10 | |
US201562173392P | 2015-06-10 | 2015-06-10 | |
US62/173,392 | 2015-06-10 | ||
US62/173,389 | 2015-06-10 | ||
US201662290392P | 2016-02-02 | 2016-02-02 | |
US201662290383P | 2016-02-02 | 2016-02-02 | |
US201662290400P | 2016-02-02 | 2016-02-02 | |
US201662290395P | 2016-02-02 | 2016-02-02 | |
US201662290389P | 2016-02-02 | 2016-02-02 | |
US62/290,400 | 2016-02-02 | ||
US62/290,392 | 2016-02-02 | ||
US62/290,395 | 2016-02-02 | ||
US62/290,383 | 2016-02-02 | ||
US62/290,389 | 2016-02-02 | ||
US201662293145P | 2016-02-09 | 2016-02-09 | |
US201662293147P | 2016-02-09 | 2016-02-09 | |
US62/293,145 | 2016-02-09 | ||
US62/293,147 | 2016-02-09 | ||
US201662293908P | 2016-02-11 | 2016-02-11 | |
US62/293,908 | 2016-02-11 | ||
CN201680045334.8A CN108140232B (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
PCT/IL2016/050611 WO2016199151A2 (en) | 2015-06-10 | 2016-06-09 | Image processor and methods for processing an image |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680045334.8A Division CN108140232B (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115082282A true CN115082282A (zh) | 2022-09-20 |
Family
ID=56322256
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680045334.8A Active CN108140232B (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482925.9A Pending CN115100016A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482957.9A Pending CN115082282A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482947.5A Pending CN115100018A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482943.7A Pending CN115100017A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482955.XA Pending CN115100019A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN201680046182.3A Active CN107980118B (zh) | 2015-06-10 | 2016-06-10 | 使用多线程处理的多核处理器设备 |
CN202111143789.2A Pending CN113934459A (zh) | 2015-06-10 | 2016-06-10 | 使用多线程处理的多核处理器设备 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680045334.8A Active CN108140232B (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482925.9A Pending CN115100016A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210482947.5A Pending CN115100018A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482943.7A Pending CN115100017A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN202210482955.XA Pending CN115100019A (zh) | 2015-06-10 | 2016-06-09 | 用于处理图像的图像处理器和方法 |
CN201680046182.3A Active CN107980118B (zh) | 2015-06-10 | 2016-06-10 | 使用多线程处理的多核处理器设备 |
CN202111143789.2A Pending CN113934459A (zh) | 2015-06-10 | 2016-06-10 | 使用多线程处理的多核处理器设备 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11294815B2 (zh) |
EP (3) | EP3308349A2 (zh) |
CN (8) | CN108140232B (zh) |
WO (2) | WO2016199151A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12130744B2 (en) | 2022-02-15 | 2024-10-29 | Mobileye Vision Technologies Ltd. | Fine-grained multithreaded cores executing fused operations in multiple clock cycles |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108140232B (zh) | 2015-06-10 | 2022-05-24 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
US11178072B2 (en) | 2015-06-10 | 2021-11-16 | Mobileye Vision Technologies Ltd. | Image processor and methods for processing an image |
US10169128B1 (en) * | 2016-06-06 | 2019-01-01 | Crossbar, Inc. | Reduced write status error polling for non-volatile resistive memory device |
US10390003B1 (en) | 2016-08-29 | 2019-08-20 | Perceptln Shenzhen Limited | Visual-inertial positional awareness for autonomous and non-autonomous device |
US10162362B2 (en) | 2016-08-29 | 2018-12-25 | PerceptIn, Inc. | Fault tolerance to provide robust tracking for autonomous positional awareness |
US11314262B2 (en) | 2016-08-29 | 2022-04-26 | Trifo, Inc. | Autonomous platform guidance systems with task planning and obstacle avoidance |
US10395117B1 (en) | 2016-08-29 | 2019-08-27 | Trifo, Inc. | Visual-inertial positional awareness for autonomous and non-autonomous tracking |
US11233718B2 (en) * | 2016-09-30 | 2022-01-25 | Ciena Corporation | Packet processing framework |
US10372456B2 (en) * | 2017-05-24 | 2019-08-06 | Microsoft Technology Licensing, Llc | Tensor processor instruction set architecture |
US10505860B1 (en) * | 2017-05-30 | 2019-12-10 | Xilinx, Inc. | System and method for round robin scheduling |
US10496104B1 (en) * | 2017-07-05 | 2019-12-03 | Perceptin Shenzhen Limited | Positional awareness with quadocular sensor in autonomous platforms |
US10192113B1 (en) * | 2017-07-05 | 2019-01-29 | PerceptIn, Inc. | Quadocular sensor design in autonomous platforms |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US10949353B1 (en) * | 2017-10-16 | 2021-03-16 | Amazon Technologies, Inc. | Data iterator with automatic caching |
CN107908417B (zh) * | 2017-10-24 | 2021-06-29 | 北京臻迪科技股份有限公司 | 固件升级方法及电子设备 |
CN109840151B (zh) * | 2017-11-29 | 2021-08-27 | 大唐移动通信设备有限公司 | 一种用于多核处理器的负载均衡方法和装置 |
US10872291B2 (en) * | 2017-12-22 | 2020-12-22 | Alibaba Group Holding Limited | On-chip communication system for neural network processors |
US12073215B2 (en) | 2018-02-13 | 2024-08-27 | Shanghai Cambricon Information Technology Co., Ltd | Computing device with a conversion unit to convert data values between various sizes of fixed-point and floating-point data |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
EP3651079B1 (en) | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
CN116991225A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
US11132233B2 (en) * | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
WO2019217261A1 (en) * | 2018-05-07 | 2019-11-14 | Zermatt Technologies Llc | Dynamic foveated pipeline |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
CN109032818B (zh) * | 2018-07-27 | 2021-11-16 | 北京计算机技术及应用研究所 | 一种同构系统核间同步与通信的方法 |
CN113168385B (zh) * | 2018-08-03 | 2024-10-11 | 御眼视觉技术有限公司 | 访问动态存储器模块 |
CN110825665B (zh) * | 2018-08-10 | 2021-11-05 | 昆仑芯(北京)科技有限公司 | 数据获取单元和应用于控制器的数据获取方法 |
EP3640810A4 (en) | 2018-08-28 | 2021-05-05 | Cambricon Technologies Corporation Limited | DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
CN110865950B (zh) * | 2018-08-28 | 2021-01-12 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
US10747845B2 (en) * | 2018-08-31 | 2020-08-18 | Arm Limited | System, method and apparatus for computationally efficient data manipulation |
WO2020062392A1 (zh) | 2018-09-28 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
US10769071B2 (en) * | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
GB2580316B (en) * | 2018-12-27 | 2021-02-24 | Graphcore Ltd | Instruction cache in a multi-threaded processor |
CN109741237B (zh) * | 2018-12-28 | 2020-10-23 | 中国科学院半导体研究所 | 大规模图像数据处理系统及方法 |
CN111383637A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
US11774983B1 (en) | 2019-01-02 | 2023-10-03 | Trifo, Inc. | Autonomous platform guidance systems with unknown environment mapping |
CN111832739B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
WO2020220246A1 (en) | 2019-04-30 | 2020-11-05 | Yangtze Memory Technologies Co., Ltd. | Electronic apparatus and method of managing read levels of flash memory |
EP3739396A1 (de) * | 2019-05-15 | 2020-11-18 | Siemens Aktiengesellschaft | System zur bewegungsführung eines manipulators aufweisend einen ersten und einen zweiten prozessor |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
CN112085191B (zh) | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
CN110428359B (zh) * | 2019-08-09 | 2022-12-06 | 南京地平线机器人技术有限公司 | 用于处理感兴趣区域数据的装置和方法 |
WO2021035187A1 (en) * | 2019-08-22 | 2021-02-25 | Google Llc | Compilation for synchronous processor |
JP7146952B2 (ja) | 2019-08-23 | 2022-10-04 | 安徽寒武紀信息科技有限公司 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
CN112416053B (zh) * | 2019-08-23 | 2023-11-17 | 北京希姆计算科技有限公司 | 多核架构的同步信号产生电路、芯片和同步方法及装置 |
WO2021036905A1 (zh) | 2019-08-27 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
EP4050483A4 (en) * | 2019-10-24 | 2022-12-14 | Stream Computing Inc | DATA PROCESSING METHOD, EQUIPMENT, ELECTRONIC DEVICE AND COMPUTER-READABLE STORAGE MEDIA |
CN112749120B (zh) * | 2019-10-29 | 2024-09-20 | 辉达公司 | 将数据有效地传输至处理器的技术 |
CN111105341B (zh) * | 2019-12-16 | 2022-04-19 | 上海大学 | 一种低功耗高运算性能求解计算流体动力学的框架方法 |
US20200133649A1 (en) * | 2019-12-23 | 2020-04-30 | Intel Corporation | Processor controlled programmable logic device modification |
CN111309394A (zh) * | 2020-02-05 | 2020-06-19 | 联想(北京)有限公司 | 一种配置下发的方法、装置、系统及存储介质 |
JP7006858B1 (ja) * | 2020-03-18 | 2022-01-24 | 日本電気株式会社 | 情報処理装置及び情報処理方法 |
CN111782580B (zh) | 2020-06-30 | 2024-03-01 | 北京百度网讯科技有限公司 | 复杂计算装置、方法、人工智能芯片和电子设备 |
JP2022027240A (ja) * | 2020-07-31 | 2022-02-10 | ソニーセミコンダクタソリューションズ株式会社 | 情報処理装置および情報処理方法 |
US12045188B2 (en) * | 2020-08-05 | 2024-07-23 | Intel Corporation | Multi-port media access channel (MAC) with flexible data-path width |
CN111949912B (zh) * | 2020-08-12 | 2021-05-18 | 北京一起教育信息咨询有限责任公司 | 一种基于标签的消息推送方法、装置和系统 |
CN112083227B (zh) * | 2020-08-27 | 2021-05-14 | 电子科技大学 | 一种基于fpa的i/q失衡相位误差补偿方法 |
CN112230901B (zh) * | 2020-10-29 | 2023-06-20 | 厦门市易联众易惠科技有限公司 | 一种基于异步io模型的网络编程框架系统及方法 |
CN112650574A (zh) * | 2020-12-31 | 2021-04-13 | 广州技象科技有限公司 | 基于优先级的任务调度方法、装置、系统和存储介质 |
DE102021102925A1 (de) | 2021-02-09 | 2022-08-11 | Valeo Schalter Und Sensoren Gmbh | Verarbeitung von Sensordaten mit paralleler neuronaler Verarbeitung |
US20220283812A1 (en) * | 2021-03-08 | 2022-09-08 | Unisys Corporation | System and method for shared register content information |
CN114546495B (zh) * | 2021-09-03 | 2022-12-20 | 北京睿芯众核科技有限公司 | 适用于risc-v架构处理器的地址属性检查的方法及系统 |
KR20230075914A (ko) * | 2021-11-23 | 2023-05-31 | 삼성전자주식회사 | 프로세싱 장치 및 이의 동작 방법과 전자 장치 |
US11922026B2 (en) | 2022-02-16 | 2024-03-05 | T-Mobile Usa, Inc. | Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network |
EP4343684A1 (en) * | 2022-06-24 | 2024-03-27 | Calterah Semiconductor Technology (Shanghai) Co., Ltd | Data processing method and apparatus, and radar sensor |
WO2024054233A1 (en) * | 2022-09-09 | 2024-03-14 | Nokia Solutions And Networks Oy | Configurable wavefront parallel processor |
CN115796251A (zh) * | 2022-11-25 | 2023-03-14 | 星宸科技股份有限公司 | 计算装置及其卷积数据的共享机制 |
CN117294412B (zh) * | 2023-11-24 | 2024-02-13 | 合肥六角形半导体有限公司 | 基于单比特位移的多通道串转并自动对齐电路及方法 |
CN117640471B (zh) * | 2024-01-26 | 2024-04-09 | 中国人民解放军国防科技大学 | 面向多核处理器的核间通信带宽测量方法、系统及设备 |
CN117892673B (zh) * | 2024-03-18 | 2024-05-31 | 上海韬润半导体有限公司 | 一种基于寄存器的时序收敛结构、方法及数模混合芯片 |
CN118689813A (zh) * | 2024-08-29 | 2024-09-24 | 山东云海国创云计算装备产业创新中心有限公司 | 响应dma请求的方法及程序产品、存储介质、电子设备 |
Family Cites Families (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6041398A (en) * | 1992-06-26 | 2000-03-21 | International Business Machines Corporation | Massively parallel multiple-folded clustered processor mesh array |
US5323489A (en) | 1991-11-14 | 1994-06-21 | Bird Peter L | Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references |
JPH07141327A (ja) | 1993-04-13 | 1995-06-02 | Nec Corp | ベクトル処理装置 |
US6021222A (en) * | 1994-08-16 | 2000-02-01 | Ricoh Co., Ltd. | System and method for the detection of a circle image for pattern recognition |
US5602769A (en) | 1995-07-05 | 1997-02-11 | Sun Microsystems, Inc. | Method and apparatus for partially supporting subnormal operands in floating point multiplication |
US6061477A (en) * | 1996-04-18 | 2000-05-09 | Sarnoff Corporation | Quality image warper |
US6061782A (en) | 1997-11-29 | 2000-05-09 | Ip First Llc | Mechanism for floating point to integer conversion with RGB bias multiply |
KR100307883B1 (ko) * | 1998-04-13 | 2001-10-19 | 박호군 | 정합화소수를이용한유사도측정방법및이를구현하기위한장치 |
US20030014612A1 (en) | 1999-05-11 | 2003-01-16 | William N. Joy | Multi-threaded processor by multiple-bit flip-flop global substitution |
KR20000058657A (ko) * | 2000-06-22 | 2000-10-05 | 오승호 | 최적화된 메모리 구조 및 정합 화소 수를 적용한디스패러티 측정 아키텍쳐 |
US20020012459A1 (en) * | 2000-06-22 | 2002-01-31 | Chips Brain Co. Ltd. | Method and apparatus for detecting stereo disparity in sequential parallel processing mode |
US6675376B2 (en) | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
CN1213615C (zh) * | 2001-02-06 | 2005-08-03 | 皇家菲利浦电子有限公司 | 用于内插象素的丢失色彩值的方法和设备 |
US6970898B2 (en) | 2001-05-25 | 2005-11-29 | Sun Microsystems, Inc. | System and method for forcing floating point status information to selected values |
US6934422B2 (en) * | 2001-12-18 | 2005-08-23 | Honeywell International Inc. | Methods, data, and systems to warp an image |
US20040034759A1 (en) * | 2002-08-16 | 2004-02-19 | Lexra, Inc. | Multi-threaded pipeline with context issue rules |
US6904511B2 (en) * | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
US7283647B2 (en) * | 2003-07-16 | 2007-10-16 | Mcnitt Michael J | Method and system for physical motion analysis and training of a golf club swing motion using image analysis techniques |
JP2005284749A (ja) | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
US7379623B2 (en) * | 2004-04-30 | 2008-05-27 | Microsoft Corporation | Method to quickly warp a 2-D image using only integer math |
US7388973B2 (en) * | 2004-06-01 | 2008-06-17 | General Electric Company | Systems and methods for segmenting an organ in a plurality of images |
US7191292B2 (en) * | 2004-06-04 | 2007-03-13 | Sun Microsystems, Inc. | Logging of level-two cache transactions into banks of the level-two cache for system rollback |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US7463772B1 (en) * | 2004-09-13 | 2008-12-09 | Google Inc. | De-warping of scanned images |
US7262816B2 (en) * | 2004-10-22 | 2007-08-28 | Fakespace Labs, Inc. | Rear projection imaging system with image warping distortion correction system and associated method |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7676646B2 (en) * | 2005-03-02 | 2010-03-09 | Cisco Technology, Inc. | Packet processor with wide register set architecture |
US7627770B2 (en) * | 2005-04-14 | 2009-12-01 | Mips Technologies, Inc. | Apparatus and method for automatic low power mode invocation in a multi-threaded processor |
US20070150697A1 (en) | 2005-05-10 | 2007-06-28 | Telairity Semiconductor, Inc. | Vector processor with multi-pipe vector block matching |
US7627735B2 (en) | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US8290044B2 (en) * | 2006-05-10 | 2012-10-16 | Qualcomm Incorporation | Instruction for producing two independent sums of absolute differences |
US20080046684A1 (en) * | 2006-08-17 | 2008-02-21 | International Business Machines Corporation | Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same |
KR20080068167A (ko) * | 2007-01-18 | 2008-07-23 | 김준성 | 윈도우 행렬 분리 연산을 통한 에스에이디 정합 알고리즘기반 스테레오 비젼 시스템 설계 방법 |
JP2008186104A (ja) * | 2007-01-29 | 2008-08-14 | Fujitsu Ltd | 製造物属性情報予測装置、製造物属性情報予測方法および製造物属性情報予測プログラム |
GB0710377D0 (en) * | 2007-05-31 | 2007-07-11 | Univ Reading The | Processors |
US20090083490A1 (en) | 2007-09-26 | 2009-03-26 | International Business Machines Coproration | System to Improve Data Store Throughput for a Shared-Cache of a Multiprocessor Structure and Associated Methods |
US9047197B2 (en) * | 2007-10-23 | 2015-06-02 | Oracle America, Inc. | Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches |
JP5286796B2 (ja) | 2008-01-17 | 2013-09-11 | 日本電気株式会社 | メモリ制御装置 |
US8300058B2 (en) | 2008-03-10 | 2012-10-30 | Navon Mois P | ELUT: enhanced look-up table signal processing |
US8090931B2 (en) | 2008-09-18 | 2012-01-03 | Via Technologies, Inc. | Microprocessor with fused store address/store data microinstruction |
US8135941B2 (en) | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
US20100125717A1 (en) | 2008-11-17 | 2010-05-20 | Mois Navon | Synchronization Controller For Multiple Multi-Threaded Processors |
GB0900667D0 (en) * | 2009-01-16 | 2009-02-25 | Univ Reading The | Processors |
CN101504618B (zh) | 2009-02-26 | 2011-04-27 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
JP5568884B2 (ja) | 2009-04-02 | 2014-08-13 | セイコーエプソン株式会社 | 映像処理装置、映像処理方法 |
JP5491071B2 (ja) | 2009-05-20 | 2014-05-14 | エヌイーシーコンピュータテクノ株式会社 | 命令融合演算装置および命令融合演算方法 |
CN101777007B (zh) | 2010-01-28 | 2013-04-10 | 中国科学技术大学苏州研究院 | 片上多核处理器的并行功能仿真系统及其方法 |
US20120218393A1 (en) * | 2010-03-09 | 2012-08-30 | Berfort Management Inc. | Generating 3D multi-view interweaved image(s) from stereoscopic pairs |
US8650554B2 (en) * | 2010-04-27 | 2014-02-11 | International Business Machines Corporation | Single thread performance in an in-order multi-threaded processor |
CN101859241B (zh) | 2010-05-22 | 2011-11-23 | 中国人民解放军国防科学技术大学 | 基于全展开的全流水128位精度浮点累加器 |
US8892853B2 (en) | 2010-06-10 | 2014-11-18 | Mobileye Technologies Limited | Hardware to support looping code in an image processing system |
US20120059866A1 (en) | 2010-09-03 | 2012-03-08 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating-point division |
WO2012138952A1 (en) | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Conditional store instructions in an out-of-order execution microprocessor |
KR101868017B1 (ko) * | 2011-05-09 | 2018-06-18 | 한국전자통신연구원 | 스테레오 매칭 방법 및 그 장치 |
KR101281003B1 (ko) * | 2011-06-28 | 2013-07-08 | 서울대학교산학협력단 | 다시점 영상을 이용한 영상 시스템 및 영상 처리 방법 |
TWI489859B (zh) * | 2011-11-01 | 2015-06-21 | Inst Information Industry | 影像形變方法及其電腦程式產品 |
CN108647044B (zh) | 2011-12-28 | 2022-09-13 | 英特尔公司 | 浮点缩放处理器、方法、系统和指令 |
US20140025930A1 (en) * | 2012-02-20 | 2014-01-23 | Samsung Electronics Co., Ltd. | Multi-core processor sharing li cache and method of operating same |
GB2503438A (en) | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
US9117290B2 (en) * | 2012-07-20 | 2015-08-25 | Samsung Electronics Co., Ltd. | Apparatus and method for filling hole area of image |
US9218289B2 (en) | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
US20140047221A1 (en) | 2012-08-07 | 2014-02-13 | Qualcomm Incorporated | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
US20140115278A1 (en) | 2012-10-23 | 2014-04-24 | Analog Devices, Inc. | Memory architecture |
JP6020091B2 (ja) | 2012-11-27 | 2016-11-02 | 富士通株式会社 | 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置 |
CN103854252A (zh) * | 2012-12-04 | 2014-06-11 | 中山大学深圳研究院 | 一种图像变形的实现方法及其实现装置 |
CN104871206A (zh) * | 2012-12-19 | 2015-08-26 | 马维尔国际贸易有限公司 | 用于数字图像的自适应缩放的系统和方法 |
US9804839B2 (en) | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US9372692B2 (en) | 2012-12-29 | 2016-06-21 | Intel Corporation | Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality |
US9164834B2 (en) | 2013-05-06 | 2015-10-20 | Samsung Electronics Co., Ltd. | Semiconductor memory devices, memory systems including the same and method of writing data in the same |
US9542238B2 (en) | 2013-05-23 | 2017-01-10 | Nxp Usa, Inc. | Systems and methods for direct memory access coherency among multiple processing cores |
US9148176B2 (en) | 2013-06-24 | 2015-09-29 | Micron Technology, Inc. | Circuits, apparatuses, and methods for correcting data errors |
US9076238B2 (en) * | 2013-08-21 | 2015-07-07 | Seiko Epson Corporation | Intelligent weighted blending for ultrasound image stitching |
CN103632365B (zh) * | 2013-11-13 | 2016-08-17 | 华北电力大学(保定) | 一种立体图像视差估计方法 |
CN103810739B (zh) * | 2014-02-20 | 2017-01-04 | 南京师范大学 | 一种图像文字变形动画的生成方法 |
GB2524063B (en) * | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
GB2529209B (en) * | 2014-08-13 | 2021-05-26 | Accelercomm Ltd | Detection circuit, receiver, communications device and method of detecting |
US9715392B2 (en) * | 2014-08-29 | 2017-07-25 | Qualcomm Incorporated | Multiple clustered very long instruction word processing core |
CN107430506B (zh) | 2015-02-05 | 2020-11-06 | 巴塞罗纳超级计算机中心-国家超级计算机中心 | 发现向量内的重复值的多个实例的方法和装置及到排序的应用 |
CN108140232B (zh) | 2015-06-10 | 2022-05-24 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
-
2016
- 2016-06-09 CN CN201680045334.8A patent/CN108140232B/zh active Active
- 2016-06-09 CN CN202210482925.9A patent/CN115100016A/zh active Pending
- 2016-06-09 US US15/178,399 patent/US11294815B2/en active Active
- 2016-06-09 CN CN202210482957.9A patent/CN115082282A/zh active Pending
- 2016-06-09 CN CN202210482947.5A patent/CN115100018A/zh active Pending
- 2016-06-09 EP EP16738566.5A patent/EP3308349A2/en active Pending
- 2016-06-09 WO PCT/IL2016/050611 patent/WO2016199151A2/en active Application Filing
- 2016-06-09 CN CN202210482943.7A patent/CN115100017A/zh active Pending
- 2016-06-09 US US15/177,366 patent/US10157138B2/en active Active
- 2016-06-09 CN CN202210482955.XA patent/CN115100019A/zh active Pending
- 2016-06-10 EP EP24193174.0A patent/EP4432070A2/en active Pending
- 2016-06-10 WO PCT/IL2016/050614 patent/WO2016199154A1/en active Application Filing
- 2016-06-10 CN CN201680046182.3A patent/CN107980118B/zh active Active
- 2016-06-10 EP EP16734467.0A patent/EP3308260B1/en active Active
- 2016-06-10 CN CN202111143789.2A patent/CN113934459A/zh active Pending
-
2018
- 2018-09-24 US US16/140,150 patent/US20190065385A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12130744B2 (en) | 2022-02-15 | 2024-10-29 | Mobileye Vision Technologies Ltd. | Fine-grained multithreaded cores executing fused operations in multiple clock cycles |
Also Published As
Publication number | Publication date |
---|---|
CN107980118B (zh) | 2021-09-21 |
CN108140232B (zh) | 2022-05-24 |
WO2016199151A2 (en) | 2016-12-15 |
WO2016199151A9 (en) | 2017-02-09 |
EP3308260B1 (en) | 2024-08-07 |
US11294815B2 (en) | 2022-04-05 |
US10157138B2 (en) | 2018-12-18 |
CN108140232A (zh) | 2018-06-08 |
CN107980118A (zh) | 2018-05-01 |
US20190065385A1 (en) | 2019-02-28 |
CN115100016A (zh) | 2022-09-23 |
CN115100018A (zh) | 2022-09-23 |
EP3308349A2 (en) | 2018-04-18 |
CN113934459A (zh) | 2022-01-14 |
US20160364835A1 (en) | 2016-12-15 |
US20220276964A1 (en) | 2022-09-01 |
WO2016199154A1 (en) | 2016-12-15 |
EP3308260A1 (en) | 2018-04-18 |
EP4432070A2 (en) | 2024-09-18 |
CN115100017A (zh) | 2022-09-23 |
US20170103022A1 (en) | 2017-04-13 |
CN115100019A (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140232B (zh) | 用于处理图像的图像处理器和方法 | |
US12045614B2 (en) | Streaming engine with cache-like stream data storage and lifetime tracking | |
US11994949B2 (en) | Streaming engine with error detection, correction and restart | |
US10747636B2 (en) | Streaming engine with deferred exception reporting | |
CN114600078A (zh) | 用于矢量排序的方法和装置 | |
US7987322B2 (en) | Snoop request management in a data processing system | |
US11068164B2 (en) | Streaming engine with fetch ahead hysteresis | |
WO2022001550A1 (zh) | 一种地址生成的方法、相关装置以及存储介质 | |
US11709778B2 (en) | Streaming engine with early and late address and loop count registers to track architectural state | |
US20220070116A1 (en) | Image processor and methods for processing an image | |
WO2019116106A2 (en) | Image processor and methods for processing an image | |
US9298634B2 (en) | Client spatial locality through the use of virtual request trackers | |
US10303484B2 (en) | Method for implementing a line speed interconnect structure | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CN118827593A (zh) | 具有用于共享i/o端口的虚拟通道的可配置流交换机 | |
Tudruj et al. | A globally-interconnected modular CMP system with communication on the fly |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |