CN111984548B - 神经网络计算装置 - Google Patents
神经网络计算装置 Download PDFInfo
- Publication number
- CN111984548B CN111984548B CN202010719900.7A CN202010719900A CN111984548B CN 111984548 B CN111984548 B CN 111984548B CN 202010719900 A CN202010719900 A CN 202010719900A CN 111984548 B CN111984548 B CN 111984548B
- Authority
- CN
- China
- Prior art keywords
- source image
- image pixel
- pixel point
- data
- address
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 26
- 238000003860 storage Methods 0.000 claims abstract description 180
- 238000004364 calculation method Methods 0.000 claims abstract description 89
- 238000004891 communication Methods 0.000 claims abstract description 7
- 230000009466 transformation Effects 0.000 claims description 51
- 238000000034 method Methods 0.000 abstract description 20
- 230000008569 process Effects 0.000 abstract description 19
- 238000010586 diagram Methods 0.000 description 19
- 238000013507 mapping Methods 0.000 description 16
- 238000005070 sampling Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000002349 favourable effect Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
Abstract
本申请实施例提供一种神经网络计算装置,包括系统控制模块、计算模块、总线控制接口模块和动态缓存模块,系统控制模块与计算模块通信连接,总线控制接口模块分别与计算模块、动态缓存模块通信连接,神经网络计算装置通过总线控制接口模块与外部存储模块通信连接;动态缓存模块存储从所述外部存储模块读取的源图像像素点数据;在计算过程中若需再次用到该源图像像素点数据,则只需从动态缓存模块中读取,由于从外部存储模块中读取数据的时间远远大于从内部动态缓存模块中读取数据的时间,因此本申请实施例可以从内部动态缓存模块中该读取源图像像素点数据,从而减少去外部存储读取数据,有利于提高计算效率,并减少数据带宽的需求。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种神经网络计算装置。
背景技术
普通的卷积神经网络(Convolutional Neural Network,CNN)能够显式的学习平移不变性,以及隐式的学习旋转不变性,但注意力模型(attention model)表明,与其让网络隐式的学习到某种能力,不如为网络设计一个显式的处理模块,专门处理以上的各种变换。因此,深度思考(DeepMind)就设计了空间变换网络(Spatial Transform Network,STN)来实现各种变换,STN实现各种变换的过程包括参数预测、坐标映射和像素采样。经过STN变换得到的目标图像像素点坐标是规律的,例如一个宽度为w,高度为h的目标图像,像素点可以从(0,0)一直到(w-1,h-1),而根据目标图像像素点坐标通过坐标映射计算出来的源图像像素点坐标点是随机的。由于现有技术将源图像像素点数据存储在外部,在像素采样时,空间变换网络计算装置需要频繁去外部的双倍速率同步动态随机存储器(DDR)或随机存取存储器(RAM)中读取源图像的像素点数据,因此现有技术存在两个缺点:其一是每次读回来的数据都很少,总线读取效率不高;其二是频繁去外部读取数据会降低空间变换网络计算装置内部的计算效率。
发明内容
本申请实施例公开了一种神经网络计算装置,以期通过设置动态缓存模块,用于缓存从外部存储中读取回来的数据,从而减少去外部存储读取数据,有利于提高计算效率,并减少数据带宽的需求。
本申请实施例公开了一种神经网络计算装置,所述神经网络计算装置包括系统控制模块、计算模块、总线控制接口模块和动态缓存模块,所述系统控制模块与所述计算模块通信连接,所述总线控制接口模块分别与所述计算模块、所述动态缓存模块通信连接,所述神经网络计算装置通过所述总线控制接口模块与外部存储模块通信连接;
所述动态缓存模块,用于存储从所述外部存储模块读取的源图像像素点数据;
所述系统控制模块,用于向所述计算模块发送计算启动信号,所述计算启动信号包括目标图像像素点坐标和变换参数;
所述计算模块,用于根据所述目标图像像素点坐标和所述变换参数计算得到第一源图像像素点数据的存储地址信息,以及向所述总线控制接口模块发送所述存储地址信息;
所述总线控制接口模块,用于根据所述存储地址信息从所述外部存储模块和/或所述动态缓存模块中读取所述第一源图像像素点数据,以及向所述计算模块发送所述第一源图像像素点数据;
所述计算模块,还用于根据所述第一源图像像素点数据计算得到目标图像像素点数据。
可以看出,通过实施本申请实施例,在神经网络计算装置中,系统控制模块向计算模块发送包括目标图像像素点坐标和变换参数的计算启动信号;计算模块根据该目标图像像素点坐标计算得到第一源图像像素点数据的存储地址信息,以及向所述总线控制接口模块发送该存储地址信息;总线控制接口模块根据该存储地址信息从动态缓存模块和/或外部存储模块中读取第一源图像像素点数据,以及向计算模块发送该第一源图像像素点数据;计算模块再根据该第一源图像像素点数据和变换参数计算得到目标图像像素点数据;由于动态缓存模块中缓存有从外部存储模块中读取回来的源图像像素点数据,因此在计算过程中若需要再次用到从外部存储模块中读取回来的该源图像像素点数据,则无需去外部存储模块中再次读取一次,而只需要从内部的动态缓存模块中读取,由于从外部存储模块中读取数据的时间远远大于从内部动态缓存模块中读取数据的时间,因此本申请实施例从内部动态缓存模块中读取源图像像素点数据,减少了去外部存储读取数据,有利于提高计算效率,并减少数据带宽的需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种空间变换网络的架构示意图;
图2是本申请实施例提供的一种空间变换的过程示意图;
图3是本申请实施例提供的另一种空间变换的过程示意图;
图4是本申请实施例提供的一种双线性插值的示意图;
图5是本申请实施例提供的一种神经网络计算装置的结构示意图;
图6是本申请实施例提供的一种图像分块存储的示意图;
图7是本申请实施例提供的一种数据读取的流程示意图;
图8是本申请实施例提供的一种地址计算单元的结构示意图;
图9是本申请实施例提供的一种数据存储地址的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了便于理解本申请,首先在此介绍本申请实施例涉及的相关技术知识。
请参阅图1,图1是本申请实施例提供的一种空间变换网络的架构示意图,所述空间变换网络的架构分成参数预测、坐标映射和像素采样三个部分。如图1所述,将源数据(U)输入到空间变换网络的参数预测部分,从而预测出空间变换参数;而后将空间变换参数传输到坐标映射部分,坐标映射部分根据给定的目标数据坐标以及该空间变换参数进行坐标映射,得到源数据坐标;再将该源数据坐标传输到像素采样部分,像素采样部分根据该源数据坐标从所述源数据(U)中采集数据,从而得到目标数据(V)。下面分别对空间变换网络的各部分进行介绍。
(1)参数预测
假设源图像l-1通过神经网络的处理之后,得到目标图像l。
请参阅图2,图2是本申请实施例提供的一种空间变换的过程示意图,将源图l-1中的a13 l-1坐标处的像素点经过空间变换后得到目标图像l的a23 l坐标处的像素点,以及将源图l-1中的a23 l-1坐标处的像素点经过空间变换后得到目标图像l的a33 l坐标处的像素点。
请参阅图3,图3是本申请实施例提供的另一种空间变换的过程示意图,将源图l-1中的a11 l-1坐标处的像素点经过空间变换后得到目标图像l的a13 l坐标处的像素点,将源图l-1中的a12 l-1坐标处的像素点经过空间变换后得到目标图像l的a23 l坐标处的像素点,以及将源图l-1中的a13 l-1坐标处的像素点经过空间变换后得到目标图像l的a33 l坐标处的像素点。
在空间变换过程中会产生一系列空间变换参数w,通过参数预测可以预测出该空间变换参数w,假设(x’,y’)为源图像l-1的坐标,(x,y)为目标图像l的坐标,变换过程计算公式以及相应的变换参数如下所示。
a、图像放大:
其中,参数2表示将源图l-1放大2倍,得到目标图l。
b、图像缩小:
其中,参数0.5表示将源图l-1缩小至原来的0.5,得到目标图l。
c、图像旋转:
d、图像剪切:
可以发现,所有这些变换,只需要6个参数控制即可,所以可以把源图像U作为输入,经过连续若干层(卷积层、全连接层FC Layer等)计算,回归出空间变换参数w,用于下一步坐标映射计算。
(2)坐标映射
对于给定的目标图像像素点坐标(x,y),通过空间变换网络参数预测部分预测出的6个参数a、b、c、d、e和f,经过公式(5)计算可以得到像素点坐标(x’,y’)。
(3)像素采样
事实上经过坐标映射后计算得到的像素点坐标(x’,y’)是小数,通过取整数可以在源图像中找到4个源图像像素点坐标(Sx,Sy),然后再通过双线性插值来得到最终的结果。
请参阅图4,图4是本申请实施例提供的一种双线性插值的示意图,假设计算后得到的像素点坐标(x’,y’)=(1.6,2.4),取整后的源图像像素点坐标(Sx,Sy)分别为(1,2)、(2,2)、(1,3)和(2,3),然后结合小数部分(0.6,0.4),通过双线性插值得到结果,双线性插值如公式(6)所示。
通常对于硬件设计来说,第一步的参数预测可以通过神经网络处理核或者数字信号处理(DSP)等来实现,后面的坐标映射和像素采样可以通过专有硬件实现。
本申请设计一种硬件,用于实现空间变换网络中坐标映射和像素采样等功能,其包括动态缓存模块,动态缓存模块可以缓存从外部存储器中读回来的数据,高效的解决频繁从存储器读数据的问题。下面结合具体实施方式对本申请提供的技术方案进行详细的介绍。
请参阅图5,图5是本申请实施例提供的一种神经网络计算装置的结构示意图。如图5所示,所述神经网络计算装置包括系统控制模块、计算模块、总线控制接口模块和动态缓存模块,所述系统控制模块与所述计算模块通信连接,所述总线控制接口模块分别与所述计算模块、所述动态缓存模块通信连接,所述神经网络计算装置通过所述总线控制接口模块与外部存储模块通信连接;
所述动态缓存模块,用于存储从所述外部存储模块读取的源图像像素点数据;
所述系统控制模块,用于向所述计算模块发送计算启动信号,所述计算启动信号包括目标图像像素点坐标和变换参数;
所述计算模块,用于根据所述目标图像像素点坐标和所述变换参数计算得到第一源图像像素点数据的存储地址信息,以及向所述总线控制接口模块发送所述存储地址信息;
所述总线控制接口模块,用于根据所述存储地址信息从所述外部存储模块和/或所述动态缓存模块中读取所述第一源图像像素点数据,以及向所述计算模块发送所述第一源图像像素点数据;
所述计算模块,还用于根据所述第一源图像像素点数据计算得到目标图像像素点数据。
其中,当该神经网络计算装置用于STN算法实现时,可以通过给定的目标图像像素点坐标进行坐标映射,计算得到源图像像素点坐标。例如给定目标图像像素点坐标(x,y),经过坐标映射得到像素点坐标(x’,y’)是小数,通过取整数可以在源图像中找到4个源图像像素点坐标(Sx,Sy)。
具体地,所述计算启动信号包括目标图像像素点坐标(x,y)以及空间变换参数w,其中,该空间变换参数w包括6个参数,系统控制模块将目标图像像素点坐标(x,y)和空间变换参数w通过计算启动信号发送给计算模块;计算模块根据(x,y)和空间变换参数w计算出像素点坐标(x’,y’),对(x’,y’)取整得到4个源图像像素点坐标(Sx,Sy),并根据4个源图像像素点坐标(Sx,Sy)计算出4个源图像像素点的存储地址信息,将该存储地址信息发送给总线控制接口模块;总线控制接口模块根据该存储地址信息从动态缓存模块和/或外部存储模块读取到4个源图像像素点数据,再将该4个源图像像素点数据发送给计算模块;计算模块根据该4个源图像像素点数据和空间变换参数w计算出目标图像像素点数据,再将目标图像像素点数据发送给总线控制接口模块,从而实现了空间变换网络的计算。
其中,上述4个源图像像素点数据可以是全部均从动态缓存模块中读取;也可以是全部从外部存储模块中读取;还可以是其中的2个源图像像素点数据在动态缓存模块中读取,另外的2个源图像像素点数据在外部存储模块中读取。
可以理解的是,在计算过程中,当首次从外部存储模块读回来数据时,会将从外部存储模块读回来的数据放入动态缓存模块中,当下次还需要读取时,如果数据已经在动态缓存模块里,那么就不需要去外部存储模块读取数据,直接从动态缓存模块中拿到需要的数据,不仅可以大大节省了数据读取时间,而且降低了带宽。
可以看出,通过实施本申请实施例,在神经网络计算装置中,系统控制模块向计算模块发送包括目标图像像素点坐标和变换参数的计算启动信号;计算模块根据该目标图像像素点坐标计算得到第一源图像像素点数据的存储地址信息,以及向所述总线控制接口模块发送该存储地址信息;总线控制接口模块根据该存储地址信息从动态缓存模块和/或外部存储模块中读取第一源图像像素点数据,以及向计算模块发送该第一源图像像素点数据;计算模块再根据该第一源图像像素点数据和变换参数计算得到目标图像像素点数据;由于动态缓存模块中缓存有从外部存储模块中读取回来的源图像像素点数据,因此在计算过程中若需要再次用到从外部存储模块中读取回来的该源图像像素点数据,则无需去外部存储模块中再次读取一次,而只需要从内部的动态缓存模块中读取,由于从外部存储模块中读取数据的时间远远大于从内部动态缓存模块中读取数据的时间,因此本申请实施例从内部动态缓存模块中读取源图像像素点数据,有利于提高计算效率,大大减少数据带宽的需求。
在一些可能的实施方式中,请继续参阅图5,所述动态缓存模块包括第一动态缓存地址寄存器和第二动态缓存地址寄存器,所述存储地址信息包括第一外部总线地址和第二外部总线地址,所述总线控制接口模块用于:将所述第一外部总线地址与所述第一动态缓存地址寄存器中的地址信息进行比较,以及将所述第二外部总线地址与所述第二动态缓存地址寄存器中的地址信息进行比较;若所述第一动态缓存地址寄存器中的地址信息包括所述第一外部总线地址且所述第二动态缓存地址寄存器中的地址信息包括所述第二外部总线地址,则根据所述第一外部总线地址从所述动态缓存模块中读取第二源图像像素点数据,以及根据所述第二外部总线地址从所述动态缓存模块中读取第三源图像像素点数据;否则,根据所述第一外部总线地址从所述外部存储模块中读取第二源图像像素点数据,以及根据所述第二外部总线地址从所述外部存储模块中读取第三源图像像素点数据。
其中,第二源图像像素点数据和第三源图像像素点数据组成第一源图像像素点数据。
其中,神经网络计算装置还包括内部存储模块,一张完整的源图像像素点数据一部分存储在内部存储模块,另一部分存储在外部存储模块,其中从外部存储模块中读取回来的源图像像素点数据可以缓存在动态缓存模块。
举例来说,请一并参阅图6,图6是本申请实施例提供的一种图像分块存储的示意图。如图6所示,每次启动神经网络计算任务时,需要将输入的源图像进行存储,在存储过程中可以设置一个参数read_height,将图像第一行到read_height行(也即像素点坐标的纵坐标从0至read_height-1)的像素点数据存储到内部存储模块中,将图像read_height+1行到最后一行(也即像素点坐标的纵坐标从read_height至height-1)的像素点数据存到外部存储模块(例如DDR或者其他存储空间)中。
请一并参阅图7,图7是本申请实施例提供的一种数据读取的流程示意图。如图7所示,经过计算模块计算后,得到4个源图像像素点坐标(Sx,Sy),针对每个源图像像素点坐标(Sx,Sy),将Sy与read_height-1进行比较,如果Sy<read_height-1,那么说明该源图像像素点坐标(Sx,Sy)在内部存储模块中,直接去内部存储模块读取;如果Sy≥read_height-1,那么说明该源图像像素点坐标(Sx,Sy)在外部存储模块,需要通过总线到外部存储模块中读取数据。因为从内部存储模块读取数据的时间是可预知的,可以通过流水线来控制;但是如果是从外部存储模块读取数据,由于总线是多个模块共享的,有竞争和堵塞的可能,所以返回数据的时间肯定会比内部存储模块返回数据的时间长,且返回数据的时间是不可预知的。为了保证数据的连续性,这时候需要设计外部读取数据等待信号(Rd_block),将计算坐标暂停下来,等待当前数据返回后再进行计算,此时计算模块会向发出外部读取数据等待信号以暂停坐标计算。将坐标计算暂停下来的同时,计算模块还会根据4个源图像像素点坐标(Sx,Sy)计算这4个源图像像素点的存储地址信息,由于源图像像素点坐标(Sx,Sy)在外部存储模块,所以计算得到其在外部存储模块的的存储地址信息。此外,因为4个源图像像素点分别分布在源图像中相连的2行,也即4个源图像像素点中的其中2个源图像像素点在同一行,另外2个源图像像素点在相连的另一行,而且同一行的源图像像素点数据时存储在同一个地方,因此去外部存储读取数据时,可以一次读取就读取到同一行的2个源图像像素点数据。对于其中一行的2个源图像像素点数据,存储地址信息中包括这2个源图像像素点数据的存储地址信息,分别为第一外部总线地址和第二外部总线地址,也即外部总线地址1和外部总线地址2,将外部总线地址1和动态缓存地址寄存器1的地址信息进行比较,将外部总线地址2和动态缓存地址寄存器2的地址信息进行比较;若动态缓存地址寄存器1的地址信息包括外部总线地址1且动态缓存地址寄存器2的地址信息包括外部总线地址2,则说明动态缓存模块中存储有需要读取的2个源图像像素点数据,从动态缓存模块中读取2个源图像像素点数据用于后面的计算;否则,说明动态缓存模块中没有存储需要读取的2个源图像像素点数据,需要根据外部总线地址1和外部总线地址2从所述外部存储模块中读取2个源图像像素点数据。同理,对于另外一行的2个源图像像素点数据,根据同样的方法去读取源图像像素点数据,从而得到4个源图像像素点数据。在读取到4个源图像像素点数据后,计算模块根据该4个源图像像素点数据和空间变换参数w计算出目标图像像素点数据,同时也继续下一个流水的坐标计算,也即计算下一个流水的源图像像素点坐标(Sx,Sy),以及判断下一个流水的源图像像素点坐标(Sx,Sy)是否存储在动态缓存模块。
其中,将外部总线地址1与动态缓存地址寄存器1的地址信息比较,将外部总线地址2与动态缓存地址寄存器2的地址信息比较。比较的目的是判断当前需要从外部存储模块读取的数据是否在动态缓存模块里。
可见,在本实施方式中,当需要去外部存储读取源图像像素点数据时,先根据外部总线地址判断该源图像像素点数据是否已经缓存在动态缓存模块中,如果已经缓存在动态缓存模块中,则直接去动态缓存模块中读取该源图像像素点数据,否则去外部存储模块读取该源图像像素点数据,由于从外部存储模块中读取数据的时间远远大于从内部动态缓存模块中读取数据的时间,因此本申请实施例从内部动态缓存模块中读取源图像像素点数据,有利于提高计算效率。通常去外部存储模块读取数据大概需要50~200时钟周期不等,而从动态缓存模块中读取数据只需要4个时钟周期,数据读取速度提升12~50倍,而且大大减少了数据带宽的需求。
在一些可能的实施方式中,所述动态缓存模块还包括第一动态缓存有效标志位寄存器、第二动态缓存有效标志位寄存器、第一外部读取标志位寄存器和第二外部读取标志位寄存器,所述总线控制接口模块还用于:若根据所述第一外部总线地址从所述动态缓存模块中读取第二源图像像素点数据且根据所述第二外部总线地址从所述动态缓存模块中读取第三源图像像素点数据,则将所述第一动态缓存有效标志位寄存器置有效且将所述第一外部读取标志位寄存器置无效,以及将所述第二动态缓存有效标志位寄存器置有效且将所述第二外部读取标志位寄存器置无效;否则,将所述第一动态缓存有效标志位寄存器置无效且将所述第一外部读取标志位寄存器置有效,以及将所述第二动态缓存有效标志位寄存器置无效且将所述第二外部读取标志位寄存器置有效。
其中,如果需要读取的源图像像素点数据不在动态缓存模块里,则将外部读取标志位寄存器置有效,并且将动态缓存有效标志位寄存器置为无效,触发总线读取逻辑从外部存储读取源图像像素点数据;当读回来源图像像素点数据后,将该源图像像素点数据保存至动态缓存数据寄存器,并且将总线地址赋给动态缓存地址,也即动态缓存地址=外部总线地址。如果需要读取的源图像像素点数据在动态缓存模块里,则将外部读取标志位寄存器置无效,并且将动态缓存有效标志位寄存器置为有效,直接从动态缓存模块中读取。从而可以根据动态缓存有效标志位寄存器的有效与否,来判断送往计算模块的源图像像素点数据来源于动态缓存模块,还是来源于外部存储模块。
举例来说,请继续参阅图7,动态缓存模块包括动态缓存有效标志位寄存器1、动态缓存有效标志位寄存器2、外部读取标志位寄存器1、外部读取标志位寄存器2,其中,动态缓存有效标志位寄存器1与外部总线地址1和动态缓存地址寄存器1的地址信息对应,动态缓存有效标志位寄存器2与外部总线地址2和动态缓存地址寄存器2的地址信息对应;若动态缓存地址寄存器1的地址信息包括外部总线地址1且动态缓存地址寄存器2的地址信息包括外部总线地址2,说明从动态缓存模块中读取需要的2个源图像像素点数据,将动态缓存有效标志位寄存器1置有效且将外部读取标志位寄存器1置无效,以及将动态缓存有效标志位寄存器2置有效且将外部读取标志位寄存器2置无效;若动态缓存地址寄存器1的地址信息不包括外部总线地址1且动态缓存地址寄存器2的地址信息不包括外部总线地址2,说明从外部存储模块中读取需要的2个源图像像素点数据,将动态缓存有效标志位寄存器1置无效且将外部读取标志位寄存器1置有效,以及将动态缓存有效标志位寄存器2置无效且将外部读取标志位寄存器2置有效。
需要说明的是,由于需要读取两行像素数据,这两行数据可以分别处理,即有可能有一行数据在动态缓存模块里,另一行数据需要从外部存储模块读取进来。
可见,在本实施方式中,动态缓存有效标志位寄存器和外部读取标志位寄存器的有效与否,可以判断出是去动态缓存模块读取源图像像素点数据,还是去外部存储模块读取源图像像素点数据,当动态缓存有效标志位寄存器置有效且外部读取标志位寄存器置无效时,从内部动态缓存模块中读取源图像像素点数据,有利于提高计算效率,大大减少数据带宽的需求。
在一些可能的实施方式中,所述动态缓存模块还包括第一动态缓存数据寄存器和第二动态缓存数据寄存器,所述总线控制接口模块还用于:若根据所述第一外部总线地址从所述外部存储模块中读取到第二源图像像素点数据且根据所述第二外部总线地址从所述外部存储模块中读取到第三源图像像素点数据,则将所述第二源图像像素点数据存储在所述第一动态缓存数据寄存器中且将所述第一外部总线地址存储在所述第一动态缓存地址寄存器中,以及将所述第三源图像像素点数据存储在所述第二动态缓存数据寄存器中且将所述第二外部总线地址存储在所述第二动态缓存地址寄存器中。
举例来说,请继续参阅图7,若动态缓存有效标志位寄存器1置无效且外部读取标志位寄存器1置有效,以及动态缓存有效标志位寄存器2置无效且外部读取标志位寄存器2置有效,则说明需要去外部存储模块读取源图像像素点数据,从而根据外部总线地址1和外部总线地址2按照总线读取逻辑从外部存储模块读取第二源图像像素点数据和第三源图像像素点数据,也即读取到总线读取数据1和总线读取数据2;然后将总线读取数据1存储在动态缓存数据寄存器1,以及将总线读取数据2存储在动态缓存数据寄存器2,并且将外部总线地址1存储在动态缓存地址寄存器1以及将外部总线地址2存储在动态缓存地址寄存器2;此外,还将总线读取数据1和总线读取数据2发送给计算模块,用于后续的计算。
可见,在本实施方式中,从外部存储模块读取回来源图像像素点数据之后,将该源图像像素点数据存储在动态缓存模块的动态缓存数据寄存器中,以及将用于读取该源图像像素点数据的外部总线地址存储在动态缓存模块的动态缓存地址寄存器中,在计算过程中若需要再次用到从外部存储模块中读取回来的该源图像像素点数据,则无需去外部存储模块中再次读取一次,而只需要从内部的动态缓存模块中读取,由于从外部存储模块中读取数据的时间远远大于从内部动态缓存模块中读取数据的时间,因此本申请实施例从内部动态缓存模块中读取源图像像素点数据,有利于提高计算效率,大大减少数据带宽的需求。
在一些可能的实施方式中,所述第一动态缓存地址寄存器或所述第二动态缓存地址寄存器的地址位宽与所述第一外部总线地址或所述第二外部总线地址的位宽相同,所述第一动态缓存数据寄存器和所述第二动态缓存数据寄存器的数据位宽是所述第二源图像像素点数据或所述第三源图像像素点数据的位宽的2倍。
由于动态缓存地址寄存器是用来存储外部总线地址的,因此其地址宽度需要至少与总线地址同宽,当然也可以大于总线地址宽度;在一个流水的计算中,去外部存储模块读取的源图像像素点数据最多是4个,而一次去外部存储模块读取的源图像像素点数据是2个,因此动态缓存数据寄存器的数据位宽需要至少为总线数据宽度的2倍。
具体地,动态缓存地址寄存器跟总线地址同宽,比如32bit;动态缓存数据寄存器是总线数据位宽的2倍,比如128bit总线,则动态缓存数据寄存器就是256bit。
可见,在本实施方式中,动态缓存地址寄存器的地址位宽与外部总线地址的位宽相同,动态缓存数据寄存器数据位宽是源图像像素点数据的位宽的2倍,从而可以满足地址位宽和数据位宽的要求,有利于计算顺利进行。
在一些可能的实施方式中,所述装置还包括内部存储模块;所述内部存储模块存储有第四源图像像素点数据;所述外部存储模块存储有第五源图像像素点数据;所述第四源图像像素点数据和所述第五源图像像素点数据组成一张源图像的像素点数据;所述第四源图像像素点数据为所述源图像中纵坐标不大于预设阈值的源图像像素点的像素点数据;所述第五源图像像素点数据为所述源图像中纵坐标大于所述预设阈值的源图像像素点的像素点数据。
如前所述,每次启动神经网络计算任务时,需要将输入的源图像进行存储,在存储过程中可以设置一个参数read_height,将源图像像素点坐标的纵坐标从0至read_height-1的像素点数据(也即第四源图像像素点数据)存储到内部存储模块中,将源图像像素点坐标的纵坐标从read_height至height-1的像素点数据(也即第五源图像像素点数据)存到外部存储模块(例如DDR或者其他存储空间)中。
从上面的算法描述来看,STN每次坐标映射完毕后,需要从源图像中取出4个像素点数据来做双线性插值,这四个像素点点是相邻的,因此可以根据这种特性,将这四个点分别存储在不同的存储空间,从而可以做到一个时钟周期读出所有的这四个点。由于内部存储空间是有限的,根据目标图像映射到源图像的坐标点不一定能够在内部存储空间找到,这时候就需要去外部存储中寻找像素值。
可见,在本实施方式中,将图像分块存储,一部分图像块存储在神经网络计算装置中的内部存储模块,另一部分图像块存储在外部存储模块,从而可以使计算过程不受图像尺寸的限制,即使是大尺寸的图像,也能实现高效存储,提高计算效率。
在一些可能的实施方式中,请继续参阅图5,所述计算模块包括:
坐标计算单元,用于根据所述目标图像像素点坐标和所述变换参数计算得到源图像像素点坐标;
地址计算单元,用于根据所述源图像像素点坐标计算得到所述存储地址信息,以及向所述总线控制接口模块发送所述存储地址信息;
像素计算单元,用于根据所述第一源图像像素点数据计算得到所述目标图像像素点数据。
具体地,坐标计算单元可以用于通过目标图像像素点坐标(x,y)和空间变换参数w进行坐标映射,得到像素点坐标(x’,y’),并对(x’,y’)取整得到4个源图像像素点坐标(Sx,Sy);地址计算单元根据4个源图像像素点坐标(Sx,Sy)计算出4个源图像像素点的存储地址信息;像素计算单元,用于根据通过像素采样得到额4个源图像像素点数据进行计算,得到目标图像像素点坐标(x,y)对应的目标图像像素点数据。
可见,在本实施方式中,坐标计算单元可以计算得到4个源图像像素点坐标,地址计算单元可以计算得到这4个源图像像素点坐标的存储地址,像素计算单元可以根据4个源图像像素点坐标对应的源图像像素点数据计算得到目标图像像素点数据,从而实现空间变换网络的计算。
在一些可能的实施方式中,请继续参阅图5,所述地址计算单元包括:
坐标判断子单元,用于判断所述源图像像素点坐标的纵坐标是否大于所述预设阈值,以及在所述源图像像素点坐标的纵坐标大于所述预设阈值的情况下向所述坐标计算单元发送外部读取数据等待信号,所述外部读取数据等待信号用于指示所述坐标计算单元暂停计算;
内部存储地址计算子单元,用于所述源图像像素点坐标的纵坐标不大于所述预设阈值的情况下,根据所述源图像像素点坐标计算得到第一存储地址信息,所述第一存储地址信息为所述第一源图像像素点数据在所述内部存储模块的存储地址信息;
外部总线地址计算子单元,用于所述源图像像素点坐标的纵坐标大于所述预设阈值的情况下,根据所述源图像像素点坐标计算得到第二存储地址信息,所述第二存储地址信息为所述第一源图像像素点数据在所述外部存储模块的存储地址信息。
为了计算简单,每次必须保证源图像的同一行的像素点数据均存储在一个地方,而不能把同一行的一部分像素点数据存储在内部缓存,另一部分像素点数据存储在外部存储空间。
举例来说,请一并参阅图8,图8是本申请实施例提供的一种地址计算单元的结构示意图,坐标计算单元计算得到(Sx,Sy),并发送给坐标判断子单元,坐标判断子单元判断该(Sx,Sy)中的Sy是否大于预设阈值。判断过程为:假设一张源图像的纵坐标在区间[0,height-1]之间,可以设定预设阈值为read_height-1,将Sy与read_height-1进行比较;如果Sy≤read_height-1,那么说明坐标点像素在内部缓存内,直接去内部缓存读;如果Sy>read_height-1,那么说明坐标点像素在外部存储,需要通过总线到外部来读取数据,向所述坐标计算单元发送外部读取数据等待信号。其中,如果Sy≤read_height-1,坐标判断子单元将(Sx,Sy)发送给内部存储地址计算子单元,内部存储地址计算子单元根据(Sx,Sy)计算出其在内部存储模块的第一存储地址信息,并判断出(Sx,Sy)是内部存储数据;如果Sy>read_height-1,坐标判断子单元将(Sx,Sy)发送给外部存储地址计算子单元,外部存储地址计算子单元根据(Sx,Sy)计算出其在外部存储模块的第二存储地址信息,并判断出(Sx,Sy)是外部存储数据。在内部存储模块或外部存储模块获取到源图像像素点数据后,数据选择逻辑模块,用于选择当前像素计算单元的像素点数据是来自于内部存储模块或者外部存储模块。
需要注意的是,神经网络装置运行的计算过程是流水线设计,因为从内部缓存读取数据的时间是可预知的,可以通过流水线来控制。但是如果是从外部存储读取数据,由于总线是多个模块共享的,有竞争和堵塞的可能,所以返回数据的时间肯定会比内部缓存返回数据的时间长,且返回数据的时间是不可预知的。为了保证数据的连续性,也即保证保证流水线的正常,这时候需要设计外部读取数据等待信号,把前面的坐标计算单元暂停下来等待,等待当前去外部存储模块读取的数据返回后,再送入新的目标图像像素点坐标给坐标计算单元,之后重启坐标计算单元的计算。具体地,当坐标判断子单元判断到Sy>read_height-1时,说明需要去外部存储模块读取数据时,数据返回时间不可预见,所以为了保证流水线的正常,需要把前面的坐标计算单元暂停下来等待,故向坐标计算单元发送外部读取数据等待信号。
可见,在本实施方式中,坐标判断子单元可以判断需要计算地址的源图像像素点坐标对应的源图像像素点数据存储在内部存储模块,还是存储在外部存储模块;若存储在内部存储模块,采用内部存储地址计算子单元计算地址;若存储在外部存储模块,采用外部存储地址计算子单元计算地址,按照数据存储位置的不同采用不同的子单元计算地址,有利于提高地址计算的效率。
在一些可能的实施方式中,所述源图像像素点坐标包括第一源图像像素点的坐标、第二源图像像素点的坐标、第三源图像像素点的坐标和第四源图像像素点的坐标,所述第一源图像像素点和所述第二源图像像素点的纵坐标相同,所述第三源图像像素点和所述第四源图像像素点的纵坐标相同,所述第一源图像像素点和所述第三源图像像素点的横坐标相同,所述第二源图像像素点和所述第四源图像像素点的横坐标相同,所述外部总线地址计算子单元用于:根据图像存储起始地址、所述源图像的宽度、所述第一源图像像素点的纵坐标和所述第一源图像像素点的横坐标确定所述第一源图像像素点的第一外部总线地址,以及将所述第一外部总线地址后的一个外部总线地址作为所述第二源图像像素点的第二外部总线地址;根据所述图像存储起始地址、所述源图像的宽度、所述第三源图像像素点的纵坐标和所述第三源图像像素点的横坐标确定所述第三源图像像素点的第三外部总线地址,以及将所述第三外部总线地址后的一个外部总线地址作为所述第四源图像像素点的第四外部总线地址。
举例来说,假设该神经网络计算装置用于STN算法实现,坐标映射得到像素点坐标(x’,y’)=(1.6,2.4),取整后的源图像像素点坐标(Sx,Sy)分别为源图像像素点1为(1,2)、源图像像素点2为(1,3)、源图像像素点3为(2,2)和源图像像素点4为(2,3),由于像素数据在外部存储模块中是连续存储的,因此(1,2)和2(1,3)相邻存储,(2,2)和(2,3)相邻存储,计算得到(1,2)的第一外部总线地址,第一外部总线地址的下一个存储地址就为(1,3)的第二外部总线地址;计算得到(2,2)的第三外部总线地址,第三外部总线地址的下一个存储地址为(2,3)的第四外部总线地址。
可见,在本实施方式中,由于源图像的像素点数据在外部存储模块是连续存储的,因此在计算同一行相邻的像素点数据的存储地址时,只需计算第一个像素点的存储地址,而将第一个像素点的存储地址之后的存储地址作为相邻的下一个像素点数据的存储地址,从而在读取数据时可以减少地址计算,提高数据读取效率。
在一些可能的实施方式中,所述第一外部总线地址=所述图像存储起始地址+所述第一源图像像素点的纵坐标×所述源图像的宽度+所述第一源图像像素点的横坐标;所述第三外部总线地址=所述图像存储起始地址+(所述第三源图像像素点的纵坐标+1)×所述源图像的宽度+所述第三源图像像素点的横坐标。
对于外部存储地址,需要读取4个像素点数据,而同一行的两个像素点数据的存储地址是连续的,这样神经网络计算装置可以发出两次读取请求,每次读取两个burst,其中,burst指总线的一次读取。
举例来说,请一并参阅图9,图9是本申请实施例提供的一种数据存储地址的结构示意图,假设总线宽度是128bit,那么一个burst就是128bit的数据,每次数据读取读两个burst,假设每个像素1个字节,则存储地址可通过以下公式计算:
(1)对于第一行像素点(第一源图像像素点和第二源图像像素点)的像素点数据:
第一外部总线地址=图像存储起始地址+第一源图像像素点的Sy×源图图像的宽度+第一源图像像素点的Sx;
(2)对于第二行像素点(第三源图像像素点和第四源图像像素点)的像素点数据:
第三外部总线地址=图像存储起始地址+(第三源图像像素点的Sy+1)×源图图像的宽度+第三源图像像素点的Sx;
如图9所示,如果同一行的第一个像素点(1,2)在外部存储地址段一的第0字节,那么第二个像素点(1,3)在外部存储地址段一的第1个字节;同理,如果同一行的第一个像素点(1,2)在外部存储地址段一的第15字节,那么第二个像素点(1,3)在外部存储地址段二的第0个字节。
可见,在本实施方式中,设计源图像像素点数据在外部存储模块中的专有地址,从而可以快速计算出外部存储地址,进而从外部存储模块中读取到源图像像素点数据,提高数据读取效率。
在一些可能的实施方式中,所述内部存储模块包括:第一存储单元,用于存储所述第一源图像像素点数据中偶数行偶数列像素点的源图像像素点数据;第二存储单元,用于存储所述第一源图像像素点数据中偶数行奇数列像素点的源图像像素点数据;第三存储单元,用于存储所述第一源图像像素点数据中奇数行偶数列像素点的源图像像素点数据;第四存储单元,用于存储所述第一源图像像素点数据中奇数行奇数列像素点的源图像像素点数据。
从上面的算法描述来看,STN每次坐标映射完毕后,需要从源图像中取出4个像素点数据来做双线性插值,这四个点是相邻的,因此可以根据这种特性,将这四个点分别存储在不同的存储空间,从而可以做到一个时钟周期读出所有的这4个像素点数据。
在一些可能的实施方式中,所述装置还包括:输出缓存模块,用于缓存所述目标图像像素点数据。
可以理解的是,由于计算过程是流水线设计,而总线是共用的,总线控制接口模块不一定可以及时将像素计算单元计算得到的目标图像像素点数据传输到外部,因此需要设置输出缓存模块,用于缓存所述目标图像像素点数据,从而保证计算过程有序进行。
在一些可能的实施方式中,所述系统控制模块还与所述总线控制接口模块通信连接,所述系统控制模块,还用于向所述总线控制接口模块发送读取数据开始信号。
可以理解的是,系统控制模块在向计算模块发送计算启动信号后,计算模块可以计算得到像素点数据的存储地址信息,并发送给总线控制接口模块;所述系统控制模块需要向总线控制接口模块发送读取数据开始信号,而后总线控制接口模块根据存储地址信息去内部存储模块或外部存储模块读取源图像像素点数据。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (9)
1.一种神经网络计算装置,其特征在于,所述神经网络计算装置包括系统控制模块、计算模块、总线控制接口模块和动态缓存模块,所述动态缓存模块包括第一动态缓存地址寄存器和第二动态缓存地址寄存器,所述系统控制模块与所述计算模块通信连接,所述总线控制接口模块分别与所述计算模块、所述动态缓存模块通信连接,所述神经网络计算装置通过所述总线控制接口模块与外部存储模块通信连接;
所述动态缓存模块,用于存储从所述外部存储模块读取的源图像像素点数据;
所述系统控制模块,用于向所述计算模块发送计算启动信号,所述计算启动信号包括目标图像像素点坐标和变换参数;
所述计算模块,用于根据所述目标图像像素点坐标和所述变换参数计算得到第一源图像像素点数据的存储地址信息,所述存储地址信息包括第一外部总线地址和第二外部总线地址,以及向所述总线控制接口模块发送所述存储地址信息;
所述总线控制接口模块,用于根据所述存储地址信息从所述外部存储模块和/或所述动态缓存模块中读取所述第一源图像像素点数据,包括:将所述第一外部总线地址与所述第一动态缓存地址寄存器中的地址信息进行比较,以及将所述第二外部总线地址与所述第二动态缓存地址寄存器中的地址信息进行比较;若所述第一动态缓存地址寄存器中的地址信息包括所述第一外部总线地址且所述第二动态缓存地址寄存器中的地址信息包括所述第二外部总线地址,则根据所述第一外部总线地址从所述动态缓存模块中读取第二源图像像素点数据,以及根据所述第二外部总线地址从所述动态缓存模块中读取第三源图像像素点数据;否则,根据所述第一外部总线地址从所述外部存储模块中读取第二源图像像素点数据,以及根据所述第二外部总线地址从所述外部存储模块中读取第三源图像像素点数据;以及向所述计算模块发送所述第一源图像像素点数据,所述第一源图像像素点数据包括第二源图像像素点数据和第三源图像像素点数据;
所述计算模块,还用于根据所述第一源图像像素点数据计算得到目标图像像素点数据。
2.根据权利要求1所述的装置,其特征在于,所述动态缓存模块还包括第一动态缓存有效标志位寄存器、第二动态缓存有效标志位寄存器、第一外部读取标志位寄存器和第二外部读取标志位寄存器,所述总线控制接口模块还用于:
若根据所述第一外部总线地址从所述动态缓存模块中读取第二源图像像素点数据且根据所述第二外部总线地址从所述动态缓存模块中读取第三源图像像素点数据,则将所述第一动态缓存有效标志位寄存器置有效且将所述第一外部读取标志位寄存器置无效,以及将所述第二动态缓存有效标志位寄存器置有效且将所述第二外部读取标志位寄存器置无效;
否则,将所述第一动态缓存有效标志位寄存器置无效且将所述第一外部读取标志位寄存器置有效,以及将所述第二动态缓存有效标志位寄存器置无效且将所述第二外部读取标志位寄存器置有效。
3.根据权利要求1所述的装置,其特征在于,所述动态缓存模块还包括第一动态缓存数据寄存器和第二动态缓存数据寄存器,所述总线控制接口模块还用于:
若根据所述第一外部总线地址从所述外部存储模块中读取到第二源图像像素点数据且根据所述第二外部总线地址从所述外部存储模块中读取到第三源图像像素点数据,则将所述第二源图像像素点数据存储在所述第一动态缓存数据寄存器中且将所述第一外部总线地址存储在所述第一动态缓存地址寄存器中,以及将所述第三源图像像素点数据存储在所述第二动态缓存数据寄存器中且将所述第二外部总线地址存储在所述第二动态缓存地址寄存器中。
4.根据权利要求3所述的装置,其特征在于,所述第一动态缓存地址寄存器或所述第二动态缓存地址寄存器的地址位宽与所述第一外部总线地址或所述第二外部总线地址的位宽相同,所述第一动态缓存数据寄存器和所述第二动态缓存数据寄存器的数据位宽是所述第二源图像像素点数据或所述第三源图像像素点数据的位宽的2倍。
5.根据权利要求1-4任一项所述的装置,其特征在于,所述装置还包括内部存储模块;
所述内部存储模块存储有第四源图像像素点数据;
所述外部存储模块存储有第五源图像像素点数据;
所述第四源图像像素点数据和所述第五源图像像素点数据组成一张源图像的像素点数据;
所述第四源图像像素点数据为所述源图像中纵坐标不大于预设阈值的源图像像素点的像素点数据;
所述第五源图像像素点数据为所述源图像中纵坐标大于所述预设阈值的源图像像素点的像素点数据。
6.根据权利要求5所述的装置,其特征在于,所述计算模块包括:
坐标计算单元,用于根据所述目标图像像素点坐标和所述变换参数计算得到源图像像素点坐标;
地址计算单元,用于根据所述源图像像素点坐标计算得到所述存储地址信息,以及向所述总线控制接口模块发送所述存储地址信息;
像素计算单元,用于根据所述第一源图像像素点数据计算得到所述目标图像像素点数据。
7.根据权利要求6所述的装置,其特征在于,所述地址计算单元包括:
坐标判断子单元,用于判断所述源图像像素点坐标的纵坐标是否大于所述预设阈值,以及在所述源图像像素点坐标的纵坐标大于所述预设阈值的情况下向所述坐标计算单元发送外部读取数据等待信号,所述外部读取数据等待信号用于指示所述坐标计算单元暂停计算;
内部存储地址计算子单元,用于所述源图像像素点坐标的纵坐标不大于所述预设阈值的情况下,根据所述源图像像素点坐标计算得到第一存储地址信息,所述第一存储地址信息为所述第一源图像像素点数据在所述内部存储模块的存储地址信息;
外部总线地址计算子单元,用于所述源图像像素点坐标的纵坐标大于所述预设阈值的情况下,根据所述源图像像素点坐标计算得到第二存储地址信息,所述第二存储地址信息为所述第一源图像像素点数据在所述外部存储模块的存储地址信息。
8.根据权利要求7所述的装置,其特征在于,所述源图像像素点坐标包括第一源图像像素点的坐标、第二源图像像素点的坐标、第三源图像像素点的坐标和第四源图像像素点的坐标,所述第一源图像像素点和所述第二源图像像素点的纵坐标相同,所述第三源图像像素点和所述第四源图像像素点的纵坐标相同,所述第一源图像像素点和所述第三源图像像素点的横坐标相同,所述第二源图像像素点和所述第四源图像像素点的横坐标相同,所述外部总线地址计算子单元用于:
根据图像存储起始地址、所述源图像的宽度、所述第一源图像像素点的纵坐标和所述第一源图像像素点的横坐标确定所述第一源图像像素点的第一外部总线地址,以及将所述第一外部总线地址后的一个外部总线地址作为所述第二源图像像素点的第二外部总线地址;
根据所述图像存储起始地址、所述源图像的宽度、所述第三源图像像素点的纵坐标和所述第三源图像像素点的横坐标确定所述第三源图像像素点的第三外部总线地址,以及将所述第三外部总线地址后的一个外部总线地址作为所述第四源图像像素点的第四外部总线地址。
9.根据权利要求8所述的装置,其特征在于,
所述第一外部总线地址=所述图像存储起始地址+所述第一源图像像素点的纵坐标×所述源图像的宽度+所述第一源图像像素点的横坐标;
所述第三外部总线地址=所述图像存储起始地址+(所述第三源图像像素点的纵坐标+1)×所述源图像的宽度+所述第三源图像像素点的横坐标。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010719900.7A CN111984548B (zh) | 2020-07-22 | 2020-07-22 | 神经网络计算装置 |
PCT/CN2021/088420 WO2022016925A1 (zh) | 2020-07-22 | 2021-04-20 | 神经网络计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010719900.7A CN111984548B (zh) | 2020-07-22 | 2020-07-22 | 神经网络计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984548A CN111984548A (zh) | 2020-11-24 |
CN111984548B true CN111984548B (zh) | 2024-04-02 |
Family
ID=73438850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010719900.7A Active CN111984548B (zh) | 2020-07-22 | 2020-07-22 | 神经网络计算装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111984548B (zh) |
WO (1) | WO2022016925A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984548B (zh) * | 2020-07-22 | 2024-04-02 | 深圳云天励飞技术股份有限公司 | 神经网络计算装置 |
CN112529795B (zh) * | 2020-12-04 | 2024-01-16 | 北京中科慧眼科技有限公司 | 基于fpga的双目相机畸变校正系统、方法和终端设备 |
CN112860596B (zh) * | 2021-02-07 | 2023-12-22 | 厦门壹普智慧科技有限公司 | 一种神经网络张量处理器的数据流高速缓存装置 |
CN116994457B (zh) * | 2023-09-26 | 2023-12-29 | 深圳海星智驾科技有限公司 | 车辆防碰撞的检测方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109658337A (zh) * | 2018-11-21 | 2019-04-19 | 中国航空工业集团公司洛阳电光设备研究所 | 一种图像实时电子消旋的fpga实现方法 |
CN109785265A (zh) * | 2019-01-16 | 2019-05-21 | 西安全志科技有限公司 | 畸变矫正图像处理方法及图像处理装置 |
CN110428358A (zh) * | 2019-08-07 | 2019-11-08 | 上海安路信息科技有限公司 | 特征图像数据读写方法及读写系统 |
CN110782421A (zh) * | 2019-09-19 | 2020-02-11 | 平安科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN111290986A (zh) * | 2020-03-03 | 2020-06-16 | 深圳鲲云信息科技有限公司 | 一种基于神经网络的总线互联系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102107709B1 (ko) * | 2015-06-05 | 2020-05-07 | 구글 엘엘씨 | 공간 트랜스포머 모듈들 |
CN106778745A (zh) * | 2016-12-23 | 2017-05-31 | 深圳先进技术研究院 | 一种车牌识别方法及装置、用户设备 |
US11526728B2 (en) * | 2018-04-09 | 2022-12-13 | Microsoft Technology Licensing, Llc | Deep learning model scheduling |
CN111178492B (zh) * | 2018-11-09 | 2020-12-11 | 安徽寒武纪信息科技有限公司 | 计算装置及相关产品、执行人工神经网络模型的计算方法 |
CN111984548B (zh) * | 2020-07-22 | 2024-04-02 | 深圳云天励飞技术股份有限公司 | 神经网络计算装置 |
-
2020
- 2020-07-22 CN CN202010719900.7A patent/CN111984548B/zh active Active
-
2021
- 2021-04-20 WO PCT/CN2021/088420 patent/WO2022016925A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109658337A (zh) * | 2018-11-21 | 2019-04-19 | 中国航空工业集团公司洛阳电光设备研究所 | 一种图像实时电子消旋的fpga实现方法 |
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109785265A (zh) * | 2019-01-16 | 2019-05-21 | 西安全志科技有限公司 | 畸变矫正图像处理方法及图像处理装置 |
CN110428358A (zh) * | 2019-08-07 | 2019-11-08 | 上海安路信息科技有限公司 | 特征图像数据读写方法及读写系统 |
CN110782421A (zh) * | 2019-09-19 | 2020-02-11 | 平安科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN111290986A (zh) * | 2020-03-03 | 2020-06-16 | 深圳鲲云信息科技有限公司 | 一种基于神经网络的总线互联系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111984548A (zh) | 2020-11-24 |
WO2022016925A1 (zh) | 2022-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984548B (zh) | 神经网络计算装置 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN111984189B (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
CN108228498B (zh) | 一种dma控制装置和图像处理器 | |
US8451901B2 (en) | High-speed motion estimation apparatus and method | |
CN110032538B (zh) | 一种数据读取系统和方法 | |
CN101324869B (zh) | 一种基于axi总线的多路复用器 | |
CN109785265B (zh) | 畸变矫正图像处理方法及图像处理装置 | |
WO2014184202A1 (en) | Method and device for processing input image data | |
US12111778B2 (en) | Image processing accelerator | |
JP2008234059A (ja) | データ転送装置および情報処理システム | |
JP6626105B2 (ja) | メモリアクセスユニット | |
JP5569312B2 (ja) | メモリアクセス判定回路、メモリアクセス判定方法、キャッシュ制御装置および電子機器 | |
US8700859B2 (en) | Transfer request block cache system and method | |
WO2020224184A1 (zh) | 视频数据存储方法、装置、终端设备及存储介质 | |
CN115601223A (zh) | 一种图像预处理装置、方法和芯片 | |
JP5191193B2 (ja) | 画像表示駆動装置 | |
US6480231B1 (en) | Efficiently de-interlacing a buffer of image data | |
CN107168660B (zh) | 图像处理缓存系统及方法 | |
US7159084B1 (en) | Memory controller | |
CN117011146B (zh) | 图像缩放方法及其装置、电子设备、存储介质 | |
JP5475859B2 (ja) | 画像表示駆動装置 | |
CN114219700B (zh) | 一种图像处理方法、系统、设备及介质 | |
JP2014013506A (ja) | 情報処理装置、制御方法、及びプログラム | |
JP2006099895A (ja) | メモリ処理装置 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Yuntian lifeI Technology Co.,Ltd. Address before: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |