Résumé de la conception du signal matériel et de l'architecture NVDLA 2


Préface

Cette série de contenus s'efforce de clarifier la conception matérielle et l'analyse de l'architecture de nvdla. Veuillez signaler toute analyse incorrecte.
Un article sur les signaux et les registres a déjà été analysé. Les signaux matériels NVDLA et la conception de l'architecture ont été compilés

Bienvenue pour continuer à prêter attention à mon interprétation du code du mode noyau. Les liens sont les suivants :
Série d'articles 1 :Compilation du code du pilote en mode noyau NVDLA< /span>Disposition du code du pilote en mode noyau NVDLA 4 Article de la série 5 : < /span>Noyau NVDLA mode pilote code tri six Article de la série 6 :Code du pilote du mode noyau NVDLA trié par cinq Article de la série 4 : Disposition du code du pilote en mode noyau NVDLA 3 Série d'articles 3 : Disposition du code du pilote en mode noyau NVDLA 2
Série d'articles 2 :



Parmi eux, la série d'articles 3 contient un grand nombre d'introductions à l'architecture relationnelle.


Nous avons supprimé le diagramme d'architecture dans l'article 3 de la série :Arrangement trois du code du pilote en mode noyau NVDLA :
Insérer la description de l'image ici
note : La valeur d'activation, la fonctionnalité, la valeur de la fonctionnalité, l'entrée et ACT dans cet article pointent tous vers le même contenu sans distinction.

1. Ponter le DMA

Pour exploiter 片上SRAM, NVDLA doit se déplacer entre les données 外部DRAM et SRAM , etBridge DMA(BDMA) répond pleinement à cette exigence. En fait, il existe deux chemins indépendants : 1. Copier les données de 外部DRAM vers 内部SRAM ; 2. Copier les données de 内部SRAM vers < /span> vers a> est de 4. et la largeur maximale . La largeur des données des deux interfaces est connecté. Ces deux interfaces et l'autre , l'un connecté Il y a deux . , ou de vers Vous pouvez également déplacer des données de 外部DRAM. Notez que les deux sens ne peuvent pas fonctionner en même temps. BDMA外部DRAM外部DRAM内部SRAM内部SRAMBDMADMA接口外部DRAM内部SRAM都支持读写请求512 bitburst长度

À proposBDMA comment lire cube (comprendre cube comme valeurs d'activation de plusieurs canaux, longueur et largeur Ou poids), le site officiel le décrit comme ceci :

In order to move all data in a cube, BDMA support line repeat which can fetch 
multiple lines with address jumps between lines, reflect a surface. And also, BDMA 
will support one more layer of repeat, that fetch of multiple lines can be repeated,
which reflect multiple surfaces, reflect a cube.

a deux modes :
1. BDMA prend en charge line repeat, ce qu'on appelle line repeatIl permet de supprimer plusieurs lignes en même temps, ce qui peut être reflété parsurface, et il y a des sauts d'adresse entre les lignes. La situation spécifique d'un décalage d'adresse dépend de BDMA l'introduction ou du code source associé ;
2. BDMASupporté< a i=9>, permettant de récupérer plusieurs lignes à plusieurs reprises, peut être reflété. Ici , et sont des valeurs d'activation et des matrices de poids très typiques. , , éléments. La conception architecturale de est la suivante : L'architecture de ici est la suivante suit : a> et < L'interface entre /span> auront besoin des deux < /span> a>. , et les autres dans l'image ci-dessus auront besoin de et . ou , prendra en charge sous-modules n'auront que des exigences de lecture, donc , mais certains le fera . pour se connecter à et converti en requêtes de est utilisé pour one more layer of repearcube
linesurfacecube1D2D3D
BDMA
Insérer la description de l'image ici
MCIF
Insérer la description de l'image ici
MCIF仲裁内部子模块AXI协议外部DRAMMCIF同时支持读和写通道NVDLA子模块MCIF两者兼有CDMA0CDMA1只读5类子模块读和写

L'architecture de SRAMIF ici est la suivante :
Insérer la description de l'image ici
SRAMIF le module est utilisé pour connecter 内部子模块 à 片上SRAM. Similaire à MCIF, mais 总线延迟 devrait être inférieur. SRAMIF auront les deux 支持读和写通道, mais certains NVDLA sous-modules n'auront que 读要求, donc L'interface entre a> ou nécessitera uniquement le canal de lecture, tandis que les autres sous-modules de catégorie 5 nécessiteront à la fois la lecture et l'écriture. . , prendra en charge DMA Engine et SRAMIF两者兼有CMDA0~1

À propos de Pipeline de convolution

Voici le résumé du site officielConvolution Pipeline :

The Convolution Pipeline has five stages, which are: Convolution DMA, Convolution 
Buffer, Convolution Sequence Controller, Convolution MAC and Convolution 
Accumulator. They are also called CDMA, CBUF, CSC, CMAC and CACC respectively. Each 
stage has its own CSB slave port to receive configuration data from the controlling 
CPU. A single synchronization mechanism is used by all stages.

Convolution Pipeline(卷积流水线) se compose de cinq niveaux, à savoir Convolution DMA(CDMA), Convolution Buffer(CBUF), Convolution Sequence Controller(CSC), Convolution MAC(CMAC) etConvolution Accumulator(CACC). Les abréviations des concepts ci-dessus apparaîtront fréquemment dans leconv.ccode du pilote en mode noyau. Le schéma d'architecture de conception du pipeline est le suivant :
Insérer la description de l'image ici
Reportez-vous à l'introductionici :

CDMA(Convolution DMA):DMA部件,用于从外部存储器中读取待卷积数据(包括图片、特征值、权重)
CBUF(Convolution Buffer):数据缓存
CSC(Convolution Sequence Controller):将待卷积的数据进行整形,以便更高效地利用CMAC
CMAC(Convolution MAC):卷积乘加阵列,由大量的乘加部件组成,数量可以配置(8~4096
CACC(Convolution Accumulation):卷积累加器,利用CMAC进行卷积运算时,会产生很多中间结果,这些中间结果在累加器中持续累加,得到完整的卷积结果后再送出,以此可以减少对外部存储部件的需求。

NVDLAIl existe trois modes de calcul de convolution :

1、Direct convolution for feature data, or DC mode

2、Convolution of image input, or image input mode

3、Winograd convolution, or Winograd mode

Pour plus de détails, veuillez consulter :Arrangement trois du code du pilote en mode noyau NVDLA
卷积流水线Y compris pourint16 oustockage. et , fournissant de MAC. De plus, il existe peut également être configurée en tant que tableau pour les pièces et le stockage. La ressource et fp161024个MAC32 逐元素累加器阵列MAC2048个INT8格式CBUF512KBSRAM输入权重激活

2.1 Convolution directe

Premier examen de la convolution, y compris la convolution dilatée, le remplissage et d'autres éléments. Prenez la photo sur le site officiel, comme suit :
Insérer la description de l'image ici
Insérer la description de l'image ici
Cela peut être difficile à comprendre S' et R', il est recommandé de lire Ici Concernant le diagramme schématique de la convolution dilatée, il est facile de comprendre pourquoi la largeur ou la hauteur après la convolution dilatée est compressée.
Insérer la description de l'image ici
Entrez ensuite Direct Convolution, The key idea of direct convolution is to split the multiplication operations from each convolution kernel into groups such that each group contains 64 multiplications., donc le cœur de 直接卷积 est de convertir la multiplication l'opération se décompose en groups, chaque groups contient 64 multiplications.
La description détaillée est :

1、Distribute all MACs hardware into 16 sub units. One sub unit is called MAC Cell, and has hardware for 64 int16/fp16 MACs, or for 128 int8 MACs.
# 将所有的MACs硬件部分分解为16个子单元,每个子单元是MAC Cell且含有64个INT16/FP16的MACs或者128个INT8的MACs。

2、The assembly of MAC Cells is called MAC Cell Array.
# MAC Cells的聚合被称为MAC Cell Array

3、Divide all input data cubes into 1x1x64 element small cubes for int16, fp16 and int8.
# 将所有的input data cube分解为若干个1x1x64的element small cubes,数据格式是INT16/FP16/INT8

4、Divide all weight data cubes into 1x1x64 element small cubes for int16, fp16 and int8.
# 将所有的weight data cube分解为若干个1x1x64的element small cubes,数据格式是INT16/FP16/INT8

5、Multiply one small input data cube by one small weight data cube, and add products together. These multiplications and additions are performed within one MAC cell.
# 将input data cude和weight data cube相乘,并且和进行相加。上述乘法和加法操作都是在一个MAC Cell中实现的。

6、Combine these compute operations into 4 operation levels, which are atomic operation, stripe operation, block operation and channel operation.
# 将上述计算操作融合到4个操作层次中,包括atomic operation、stripe operation、block operation和channel operation。

Trions quelques concepts :

1、MAC Cell:所有的MACs硬件部分分解得到的子单元,总共有16个。每个MAC Cell含有64个INT16/FP16
的MACs或者128个INT8的MACs。在一个MAC Cell中实现input data cude和weight data cube相乘,并
且和进行相加。我们不妨译为`MAC单元`

2、MAC Cell Array:MAC Cell的聚合体。我们不妨以为`MAC单元阵列`

31x1x64 element small cubes:来源是input data cubes和weight data cubes。

Ensuite, il se concentrera sur quatre niveaux de fonctionnement.

2.1.1 Fonctionnement atomique

Le site officiel de explique Atomic Operation comme suit : Atomic Operation est l'étape de base de Direct Convolution. Dans un Atomic Operation, chaque MAC单元 met en cache un d'un seul weight kernel. Par conséquent, cache ou pièces . L'un des est partagé par tous . Effectuez les calculs mentionnés dans la règle 5 ci-dessus. La sortie de chaque est appelée . Cette opération prend 1 cycle, donc chaque cycle produit . est envoyé à pour un calcul ultérieur. Notez que le regroupement des noyaux de convolution est divisé en fonction du nombre de canaux par. Ainsi, le site officiel donne l'image suivante : L'image de montre qu'il y a 16 noyaux de convolution placés à 16 On , l'entrée est partagée par ces 16 . Étant donné que le format de données utilisé est , le nombre d'octets occupés est , puis la multiplication et l'accumulation sont terminées dans chaque , 16 et enfin 16 ont été transmis. 1x1x64 weight data cube16MAC单元16int16/fp16 weight kernel32int8 weight kernelfeature data1x1x64 cubeMAC单元MAC单元MAC单元部分和16个部分和部分和CACC(Convolution Accumulation)卷积累加器64
Insérer la description de l'image ici
K0、K1到K14、K151x1x64MAC CellInput data cubeMAC CellINT1664*16/8=128ByteMAC CellMAC Cell部分和

2.1.2 Opération de bande

Stripe Operation est en fait un groupe de plusieurs convolutionsAtomic Operation. Lors d'une opération Stripe Operation, les dans MAC Cell Array restent inchangés. Glissez. Il y a une limite à la longueur de . La limite inférieure est due à la nécessité d'obtenir le poids requis pour le prochain . En raison de la limite de taille du tampon dans , la limite supérieure de la longueur de est . Dans certains cas extrêmes, la longueur prise en charge peut être inférieure à la limite inférieure. Le site officiel propose le schéma suivant : Il est facile de comprendre qu'après avoir rempli 16 , saisissez un par un Les diapositives de < /span> puisse résumer temporairement la priorité de calcul : sous forme de lignes, de manière à ce que 权重数据输入数据Input Data CubeStripe Operation16Stripe Operation内部带宽CACC(Convolution Accumulation)卷积累加器Stripe Operation32

Insérer la description de l'image ici
MAC CellMAC Cell ArrayInput data cube2.1.2

1、权重:优先选择单个Kernel的Channel,为了实现并行,使用多个Kernel。
multi-Channel-in-Kernel with multi-Kernel and HW mapped fixed

2、激活值或者特征图数据:优先Channel,随后计算结束后,按照image内左右-上下滑动选择。
multi-Channel-in-Image with one-Image and HW mapped flushed

2.1.3 Fonctionnement des blocs

Pendant l'opérationBlock Operation, chaqueFilter du poids utiliseRxSx64 des éléments, ainsi que la taille appropriée < /span> a>. , ce qui est différent de celle mentionnée précédemment La boîte bleue montrant la convolution dans l'image restaure en fait un ensemble de noyaux de convolution multicanaux. Les boîtes montrant les valeurs d'activation dans l'image forment chacune une petite boîte de valeur d'activation qui peut être convolué. Par conséquent, les valeurs dans plusieurs petites cases de valeurs d'activation après convolution peuvent être accumulées. Selon le site officiel, la valeur accumulée obtenue de cette manière est appelée Alors, quel bloc faut-il accumuler ? . Pour l’instant, la traversée est terminée. Pour la direction verticale, le principe est similaire et ne sera pas répété. , l'objet convolué dans la valeur d'entrée ou d'activation est  ; Pour l'élément dans le poids L'élément avec le numéro de série dans le poids, l'objet à convoluer dans la valeur d'entrée ou d'activation est  ; Pour l'élément avec le numéro de série dans le poids, l'objet à convoluer dans la saisie ou l'activation la valeur est D'après cette figure, on comprend bien : pour l'élément avec le numéro de série Input data cube.
Insérer la description de l'image ici
10~3、6~9、12~15、18~2121~4、7~10、13~16、19~2232~5、8~11、14~17、20~23

Insérer la description de l'image ici
Accumulative SumPartial Sum

2.1.4 Fonctionnement des canaux

Channel Operation est une opération plus avancée, comme le montre la figure :
Insérer la description de l'image ici
Ensuite, l'opération d'accumulation terminée doit être dans la même colonne, comme suit :
Insérer la description de l'image ici

2.1.5 Résumé des opérations à 4 couches

Le fonctionnement à quatre niveaux peut être résumé comme suit :
Insérer la description de l'image ici

2.1.6 Séquence de sortie

Les séquences mentionnées dans chaque opération sont principalement utilisées pour 输入特征数据 et 权重数据. L'ordre de 输出数据 est C'(K') -> W -> H -> C(K). Cet ordre est en fait celui que j'ai dessiné ci-dessus. 2.1.5Figure. Ici, C' ou K' fait référence à la taille du groupe du noyau, qui est de 16 pour int16/fp16 et de 32 pour int8.
Insérer la description de l'image ici

2.2 Convolution de Winograd

Winograd ConvolutionUtilisé pour réduire Direct Convolution les méthodes im2col et GEMM couramment utilisées乘法 fois, le NVDLA site officiel ne prend en charge que 3x3 la taille du noyau de convolutionWinograd Convolution. Le site officiel donne la description de l'algorithme de Winograd Convolution :
Insérer la description de l'image ici
Mais c'est trop abstrait ici. Un blogueur a écrit cet article L'explication ci-dessous a>, qui correspond à une description sur le site officiel : requises par la convolution glissante d'origine. On obtient donc la valeur , au lieu des de , vous pouvez donc éviter un tas de multiplications et toujours utiliser l'addition et la soustraction pour l'exprimer. Ensuite, le nombre total de multiplications correspond en fait aux opérations et
Insérer la description de l'image ici
L'essentiel réside dans le fait qu'il existe de nombreux est très bonne. Parce que si vous multipliez directement plusieurs matrices, vous constaterez que le nombre de multiplications est bien supérieur à la multiplication originale de deux matrices. Alors quel est le problème ? En fait, la réponse est très intuitive : j'ai posté une photo sous l'article : 01逐点乘法16次乘法4*9=36次乘法36/16=2.25

Only 16 multiplications are required to calculate 4 results for a 3x3 kernel, while 
in direct convolution mode 36 multiplications are required. Winograd is therefore 
2.25 times the performance of Direct Convolution.

J'aimerais publier certaines des fonctionnalités deWinograd Convolution :

1、卷积的stride等于2时加速收益不高
2、深度可分离卷积用Winograd不划算
3、Winograd卷积由于一些系数是是除不尽的, 所以有一定的精度损失
4、tile块越大, 加速效果越好

Le site officiel indique qu'avantNVDLA Engine d'être exécuté, la partie logicielle doit implémenter la conversion de la matrice de poids. De plus, contrairement à Direct Convolution, Winograd Convolution divise le noyau de convolution et la valeur d'activation en 4x4x4 cube. Parlons ensuite de la manière dontNVDLA est implémenté ? Postons d'abord une photo originale :
Insérer la description de l'image ici
À titre de comparaison, supprimons la formule :
Insérer la description de l'image ici

计算步骤:
1、软件先计算权重的转换:C'dC;

2、硬件完成激活值的转换:GgG',我们将这一步和上一步在MAC Cell Array中进行逐点相乘;——这一步被
称为PRA。

3、硬件完成后2得到了4x4x4的tensor,其中维度表示是(W, H, C)。Phase 1完成的步骤是C方向的累
加,从而得到4x4的matrix。

4、硬件完成3得到了4x4的matrix,我们记为R。随后需要回到MAC Cell Array中进行矩阵乘,完成A'*R
得到2x4的matrix,我们记为S。

5、硬件完成4得到了2x4的S matrix,随后需要回到MAC Cell Array中进行矩阵乘,完成S*A得到2x2的最
终结果。

Direct Convolution类similaire、Winograd ConvolutionÉgalement légèrement différentOperation、Comme ci-dessous :
Insérer la description de l'image ici

2.3 De-Convolution

Je couvre rarement cette partie de la déconvolution, je ne m'étendrai donc pas là-dessus. Ceux qui sont intéressés peuvent lireles informations détaillées sur le site officiel.

2.4 Convolution avec mode de saisie d'image

NVDLA prend uniquement en charge sous Direct Convolution. Vous pouvez choisir de stocker une partie ou la totalité de en fonction de la capacité de stockage. . Une mention spéciale doit être faite au mappage des données dans le tampon de convolution. Tous les éléments du remplissage gauche et droit et des lignes de pixels d'entrée résident de manière compacte dans . Voir l'image ci-dessous, si la taille du canal est de 4, l'ordre de mappage des éléments est R(Y)->G(U)->B(V)->A(X). Si la taille du canal est 3, l'ordre est R(Y)->G(U)->B(V). Bien entendu, les modes et sont également mentionnés, ce qu'on appelle le mode . La différence entre les deux est : a>Image Input Modeimage surfaceCBUF entry
Insérer la description de l'image ici
Direct Convolution for Feature DataDC
Insérer la description de l'image ici

Post-extension 2,5 canaux

Comme mentionné précédemmentNVDLA il y en a 16MAC Cell, et chacunMAC Cell en a 64MAC. La raison pour laquelle Channel Post-Extension est proposée est 在卷积通道中,一个Atomic Operation需要64个通道方向上的元素(不包括Winograd模式)。如果Input Data Cube的通道大小小于64,则MAC在每个周期中不是100%被利用, donc afin d'améliorer MAC l'utilisation, une solution d'ajustement du nombre de canaux matériels est utilisé. Quel est le plan de mise en œuvre spécifique ? Pour donner un exemple très simple et facile à comprendre, si le canal actuel du noyau de convolution n'a que 32个, copiez le même canal du noyau de convolution 32个 et placez-le dans a>. peut être pris comme adjacents. Le coefficient concernant 64 MAC, alors la matrice de valeur d'activation entrante peut utiliser deux StripePost-Extension2或者4
Insérer la description de l'image ici

2.6 Multi-lots

NVDLALa raison pour laquelle est introduitMulti-Batch Mode est que le poids de la couche FC n'est utilisé qu'une seule fois pour chaque nœud de sortie, mais le nœud de sortie suivant est remplacé . Le poids de 16个周期 est requis, donc si une seule image est actuellement traitée, le résultat est que le taux d'utilisation apparaît au FC couche. Pour les problèmes élevés, le calcul théorique est. Mais si plusieurs images sont traitées en même temps, alors lorsqu'il y a suffisamment d'images, s'il y a 16 images à traiter, même si le poids le plus lent est transmis, le masquage du poids transmis peut être complété et le lot précédent peut être réutilisé en même temps< a i=7>Les données de poids de la couche. MAC Cell Array1/16=6.25%FC
Insérer la description de l'image ici
Insérer la description de l'image ici

2.7 Dilatation

NVDLA prend en charge la convolution dilatée des noyaux de convolution R et S, NVDLA ne prend en charge que la convolution dilatée a> Direct Convolution, Winograd Convolution et Image Input Mode ne sont pas pris en charge. Bien que la convolution dilatée permette au noyau de convolution d'étendre le champ récepteur, cette expansion du champ récepteur ne provient que de l'image mono-image actuelle, ce qui n'est pas aussi bon que l'effet global du mécanisme d'attention dans les directions spatiale et canal. De plus, la convolution dilatée, comme une convolution déformable similaire, nécessite un stockage supplémentaire en termes de coût et de capacité de stockage, ce qui n'est pas respectueux du matériel. Par conséquent, les solutions actuelles de détection de cibles traditionnelles n’impliquent presque pas de convolution dilatée.
Insérer la description de l'image ici

2.8 Considération de puissance

NVDLAPrend en charge le déclenchement d'horloge au niveau du pipeline de convolution.

Convolution pipeline supports clock gating for each major pipeline stage. If the 
pipeline stage is idle and no valid HW-layer is available, the data path of pipeline 
stage will be clock gated.

À propos de DMA de convolution

3.1 Globalement

Revenez à l'ancienne image classique et regardez où se trouve CDMA.
Insérer la description de l'image ici
CDMA est utilisé pour lire les données à convolution (y compris les images, les valeurs de caractéristiques et les poids) à partir de la mémoire externe. Il obtient les données pour l'opération de convolution à partir de SRAM/DRAM et l'exécute conformément à < /span> a>ici peuvent être trouvées et Les descriptions de . . Les formats d'entrée pris en charge sont : Convolution EngineLa séquence de calcul requise est stockée dansCBUFPixel data、Feature data、Uncompressed/compressed weight、WMB和WGS
WMBWGS

Sparse algorithm uses one-bit tag to indicate a weight element 
is zero or not. Bit tags of one kernel group compose a weight 
mask bit group, or WMB. WMBs reside in a dedicate memory 
surface. Since 0 values are marked by bit tags (assign 0 to 
corresponding bit), they can be removed from original weight 
memory surface. A third memory surface recodes remaining byte 
number of each kernel group (WGS).

Explication L'explication est que si la parcimonie du poids est utilisée, l'algorithme clairsemé utilisera une marque de 1 bit pour indiquer si l'élément de poids est nul. Il est alors évident que deux choses doivent être stockées. La première concerne toutes les balises, c'est-à-dire tag. Le stockage dédié qui stocke tag est appelé < /span>< a i=3> ; la deuxième partie est la valeur spécifique, qui est donnée à un stockage tiers, et ce stockage est appelé . D'accord, revenons à la conversation . Deux canaux de lecture sont connectés de l'interface à . Il s'agit de et . Pour obtenir le format d'entrée répertorié ci-dessus, le canal sera configuré pour ce format. Le tableau suivant enregistre le format des données d'entrée du mappage des canaux de lecture. Bien sûr, ne prend en charge que les requêtes de lecture, et le stockage qui prend en charge l'accès est Aligner. Jetez un œil au schéma d'architecture : se compose de 3 sous-modules, utilisés pour obtenir des données de pixels ou des données de caractéristiques : , et < /span>. . . Les procédures de ces sous-modules sont similaires, mais diffèrent dans la façon dont ils trient les donnéesWMBWGS
CDMACDMAAXI权重读通道数据读通道
Insérer la description de l'image ici
CDMACDMA64byte
Insérer la description de l'image ici
CDMACDMA_DCCDMA_WGCDMA_IMGCBUF RAM在任何时候,只有一个子模块被激活来获取像素/特征数据

3.2 Principe de CDMA_DC/CDMA_WG/CDMA_IMG

PrenonsCDMA_DC comme exemple, le processus est le suivant :

1、检查Convolution Buffer(CBUF)的状态是否有足够的可用空间

2、生成读事务

3、在Shared Buffer中缓存特征数据

4、将feature cube按照正确顺序进行重排

5、生成CBUF写入地址

6、将特征数据写入CBUF

7、更新CDMA_STATUS子模块中的状态

Regardez ensuite le nom des deux modules CMDA_WG et CDMA_IMG. Il est facile de constater que ces deux DMA sont utilisés respectivement. Il existe deux modes de convolution : Winograd Convolution et Direct Convolution for Image Input Mode. Les différences entre CDMA_WG, CDMA_IMG, CDMA_DC et CDMA_WT sont les suivantes :

1、CDMA_WG与CDMA_DC具有非常相似的结构和功能。然而,CBUF中得到的特征数据组织方式是不同
的。因此CDMA_WG有一个特殊的获取序列。

2、CDMA_IMG从外部存储器获取像素数据。它根据数据格式生成地址,对像素元素重排,并将它们写入
CBUF。

3、仅CDMA_DC支持multi-batch处理模式。最大batch大小可达32

4、CDMA_WT与其他DMA相比,可以同时支持三个读取流。如果输入权重格式未压缩,则仅获取权重数据。如
果输入的权重格式是压缩的,则权重、WMB和WGS都会被获取。关于输入先后的竞争问题:如果输入权重数据
被压缩,则启用两个仲裁器来确定读取流的顺序。 首先,加权循环仲裁器批准来自权重流或WMB流的请求。
然后获胜者通过静态优先级仲裁与 WGS 请求流竞争。 WGS 始终具有优先权。最终获胜请求发送到权重通
道进行数据获取。

5、那么怎么知道当前数据生命周期结束?CDMA维护CBUF中权重缓冲区和输入数据缓冲区的状态。CDMA和CSC中有两份状态副本。通过两个模块交换信息,从而决定何时获取新的特征/像素/权重数据。

3.3 Considération de puissance

DMA utilise 时钟门控, il peut donc être utilisé en état de repos, mais le sous-module sous DMA n'horloge pas le gate n'est pas autorisé. regfile

四、Tampon de convolution

Sans plus tarder, regardons d’abord l’emplacement ?
Insérer la description de l'image ici

4.1 Globalement

CBUFcontient de512KB au total. met en cache depuis et par . Il y a et . Contient 16 unités de stockage de 32 Ko. Chaque unité de mémoire se compose de 2 SRAM à double port. L'architecture est présentée ci-dessous : Si les poids sont compressés, est affecté à , tandis que les 2 autres tampons peuvent être utilisés ; Si le poids n'est pas compressé, ne sera attribué à aucune unité de stockage. Dans ce cas, et peuvent utiliser pleinement les 16 unités de stockage. Si le nombre total d'unités de stockage requises est inférieur à, les unités de stockage restantes ne sont pas utilisées. SRAMSRAMCDMA输入像素数据、输入特征数据、权重数据和WMB数据CSC模块读取CBUF2个写端口3个读端口CBUF512-bit wide、256 entrybank15WMB缓冲区bank0~bank14WMB缓冲区数据缓冲区权重缓冲区16

Alors comment mettre à jour ? En fait, il adopte une stratégie de couverture en anneau. Chaque tampon agit comme un tampon circulaire. Les nouvelles données d'entrée/poids/WMB ont des adresses d'entrée incrémentielles. Si l'adresse atteint la valeur maximale, elle revient à zéro et recommence à augmenter.
Insérer la description de l'image ici

4.2 Considération de puissance

Le tampon de convolution applique un déclenchement d'horloge aux registres du chemin de données en dehors de la SRAM. Lorsque le chemin de données du tampon de convolution est inactif et qu'aucune couche matérielle n'est disponible pour les registres programmables, son horloge est contrôlée par le SLCG.

五、Contrôleur de séquence de convolution

Regardons d'abord l'emplacement :
Insérer la description de l'image ici

5.1 Globalement

CSC est responsable du chargement des données d'entités d'entrée, des données de pixels et des données de poids depuis CBUF et de leur envoi à CMAC. CSCComprend 3 sous-modules : CSC_SG, CSC_WL et CSC_DL.
La structure spécifique est la suivante :
Insérer la description de l'image ici

1、CSC_SG:convolution sequence generator,卷积序列生成器。该模块生成序列来控制卷积运算。

2、CSC_WL:convolution weight loader,卷积权重加载器。它从CSC_CG接收数据包,从CBUF加载权重
并进行必要的解压缩并将其发送到CMAC。它维护权重缓冲区状态并与CDMA_WT通信以保持状态最新。

3、CSC_DL:convolution data loader,卷积数据加载器。该模块包含执行特征/像素加载序列的逻辑,
从CSC_SG接收数据包、从CBUF加载特征/像素数据并发送到CMAC。它还维护数据缓冲区状态并与CDMA通信以
保持状态最新。对于Winograd模式,它还执行PRA(预加法)对输入的特征数据进行变换。

5.2 Principe de fonctionnement de CSC_CG

Alors, comment fonctionne CSC_CG ?

1、轮询CBUF中是否有足够的数据和权重

2、生成一对序列包,包括权重加载包和数据加载包。每个包代表一个Stripe Operation。

3、将两个包分别推入两个FIFO。

4、权重计数器、特征/像素计数器均向下计数。

5、当计数器达到零时,检查来自CACC的信号是否有空闲,如果空闲则进入6

6、如果一切条件准备就绪,则将权重和特征发送给CSC_WL和CSC_DL。

5.3 Considération de puissance

CSCLe déclenchement d'horloge est utilisé pour les registres dans le chemin de données.

六、Convolution MAC

Regardons d'abord l'emplacement architectural du moduleCMAC !
Insérer la description de l'image ici

6.1 Globalement

CMACLe module reçoit les données d'entrée et les poids de CSC, effectue la multiplication et l'addition et envoie les résultats vers CACC. Lorsque vous travaillez en mode Winograd, CMACeffectue POA(后加法) sur la sortie, reconvertissant le résultat au format d'activation standard. CMACIl existe 16 des sous-modules identiques, appelés MAC单元. ChacunMAC单元 contient64 des multiplicateurs pourint16/fp16. Il contient également additionneurs pour. Chaque multiplicateur et additionneur peut être divisé en deux unités de calcul. La profondeur du pipeline est de. 16位72Winograd POAint16/fp16int8 7个周期

CMACa conçu un bypass pour transmettre le statut des indicateurs d'opération 开始 et 结束. Avis! Il faut 4 cycles pour mettre en œuvre cette opération. Pour l'optimisation de la conception physique, CMAC est divisé en deux parties : CMAC_A et CMAC_B. Chaque partie possède une CSBinterface et regfile distinctes.
Insérer la description de l'image ici

6.2 Considération de puissance

CMACPrend en charge le déclenchement d'horloge d'une seule unitéCMAC.

七、Accumulateur de convolution

Il s'agit de la dernière étape du pipeline de convolution. Jetez un œil à son emplacement :
Insérer la description de l'image ici

7.1 Globalement

CACC est l'étape du pipeline de convolution après CMAC, qui accumule les sommes partielles de CMAC et les envoie à SDPLe le résultat est arrondi avant. De plus, l'existence de CACC peut atténuer la pression de débit maximale du pipeline de convolution. La largeur en bits de CACC et SDP est de 32. CACCY comprisAssembly SRAM Group, Delivery SRAM Group, tableau d'additionneuradder array, tableau de troncature< a i =11>, et vérificateur . Le flux de travail de est présenté ci-dessous : truncating arrayvalid-credit controllerchecker
Insérer la description de l'image ici
CACC

1、从Assembly SRAM Group中预取累加值。

2、当部分和到达时,将它们与累加和一起发送到加法器数组。如果部分和来自第一个Stripe Operation,则累加和应为0

3、从加法器阵列的输出端收集新的累加和,并存入Assembly SRAM Group。

4、重复以上步骤1~步骤3,直到完成一个Channel Operation。

5、如果完成Channel Operation,加法器的输出将被舍入。

6、收集上一步的结果并将其存储到Delivery SRAM Group中。

7、从Delivery SRAM Group加载结果并将其发送到SDP。

L'introduction aux deux stockages est la suivante :
Insérer la description de l'image ici
La précision de la somme partielle et l'allocation de l'additionneur sont les suivantes :
Insérer la description de l'image ici

7.2 Considération de puissance

Comme les modules de niveau pipeline précédents, une horloge fermée est également définie.

8. MCIF

MCIFLa structure de est la suivante :
Insérer la description de l'image ici
MCIF est utilisé pour 仲裁 requêtes de 内部子模块 et converti en < a i=4> auquel se connecter. le fera , mais certains sous-modules n'auront que des exigences de lecture, donc et < L'interface entre /span> auront besoin des deux < /span> a>. , et les autres dans l'image ci-dessus auront besoin de et . ou , prendra en charge AXI协议外部DRAMMCIF同时支持读和写通道NVDLA子模块MCIF两者兼有CDMA0CDMA1只读5类子模块读和写

9. SRAMIF

L'architecture de SRAMIF ici est la suivante :
Insérer la description de l'image ici
SRAMIF le module est utilisé pour connecter 内部子模块 à 片上SRAM. Similaire à MCIF, mais 总线延迟 devrait être inférieur. SRAMIF auront les deux 支持读和写通道, mais certains NVDLA sous-modules n'auront que 读要求, donc L'interface entre a> ou nécessitera uniquement le canal de lecture, tandis que les autres sous-modules de catégorie 5 nécessiteront à la fois la lecture et l'écriture. . , prendra en charge DMA Engine et SRAMIF两者兼有CMDA0~1


Résumer

Cet article se concentre sur une explication approfondie de chaque étape de pipeline du module de convolution.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41029027/article/details/134357010
conseillé
Classement