集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA图像加速器之D03:加速器基础(20170427课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2018-3-22 08:44:32 | 显示全部楼层
0931
        都是CPU的外围设备,这个时候,CPU会通过访问它的外围设备,完全相同的方法来通知加速器,你要做一件事情,或者是做长整,或者是做搬运,或者是做sobel。
        除了通知它做这件事情以外,还有哪些信息CPU必须及时地通知?
        数据在哪?
        原始数据的起始地址。
        当然这些数据,显存嘛,也是放在memory里面,放在存储器里面。
        那么,CPU必须告诉加速器,数据在哪?
        原始数据的基地址在哪?
 楼主| lcytms 发表于 2018-3-23 15:24:35 | 显示全部楼层
0932
        同时还要告诉加速器,目标的基地址在哪?
        目标的首地址在哪?
        这个信息要告诉。
        这些信息,主处理器又是如何来通知加速器的呢?
        同样刚才说了,这个时候的加速器,它的地位跟CPU的任何一个外围设备的地位完全相等。
        就是被CPU访问。
        这个时候CPU是老大,CPU是Master,是主机。
        而被接受控制的,是从机,完全相等。
        这个时候的加速器,它跟所有CPU的外围设备完全相等。
        它是一个从机,接受CPU的访问。
        接受CPU唯一地址的访问。
        那么有起始地址,源的起始地址和目标的起始地址。
 楼主| lcytms 发表于 2018-3-23 15:28:07 | 显示全部楼层
0933
        并且呢,会给出一些特定的计算信息,比方说,字宽,字的宽度是多少?
        16位的,还是32位的、48位的?
        还有其它的一些辅助的信息。
        CPU要通知加速器。
        一旦加速器获得了完整的信息以后,主处理器还必须给它发一个特定的命令。
        什么命令?
        就是开始吧,start。
        这个命令怎么发出去呢?
        这个命令一般处理的形式,是在加速器里面会有一个状态寄存器。
        状态寄存器有一个标志的起始位。
        这个起始位也是被主处理器访问的。
        主处理器可以写它。
        启动吧,start。
        向start的标志位写上一个帧的一个信号。
        于是加速器就获得了CPU的授权了。
 楼主| lcytms 发表于 2018-3-23 15:29:16 | 显示全部楼层
0934
        CPU的什么授权呢?
        就是让它来访问memory。
        这个memory我们以后会介绍,现在主要的是SDRAM。
        访问存储器里面的这些信息。
        这些信息,或者是显存,或者是浮点,或者是图像的边缘检测。
        主处理器转而会停下来。
        在我们现在的这个架构里面,在绿皮书的教材里面,CPU一旦委托加速器来执行对应的任务以后呢,加速器就空闲了,就真正地空闲了。
        稍后我们会解释。
        不会,CPU还有其它的事要干。
        就好像我们现在刚刚解释的,如果我们现在要玩一段比较强大的游戏,比如像魔兽之类的。
        可能这个时候,普通的显卡就不能支持,玩的时候就很卡。
        因为它是用CPU算出来的。
 楼主| lcytms 发表于 2018-3-24 14:34:48 | 显示全部楼层
0935
        用加速器,用一个好的显卡来做的时候呢,它是用命令的形式,CPU很轻松啊。
        要图像搬运的时候,它用不着自己做,它只要发出一个命令,告诉这个图像加速器,数据在哪?
        目标在哪?
        然后启动它。
        发出start。
        CPU就是发出一个命令即可,当然CPU就轻松了。
        接着CPU就可以干其它的事情。
        所以说这个时候图像就很流畅。
        就不至于很卡。
        CPU的开销就很轻松了。
        问题是加速器,一旦获得了授权之后,加速器将会全力以赴地以硬件的方式,来处理显存,memory里面的数据,主处理器CPU原本是控制memory的。
        对memory而言,原本它的Master,它的主人是CPU。
 楼主| lcytms 发表于 2018-3-24 14:35:38 | 显示全部楼层
0936
        现在这个memory要被加速器所控制,因为加速器要读里面的数据,写里面的数据。
        Memory只有一个它,它听哪个的呢?
        主处理器要命令它,是它的主人。
        当加速器未获得授权的时候,加速器也是一个仆人,这个时候是一主多仆。
        所有的设备都是仆人,都是slave,都是接受Master的指挥的。
        可是一旦加速器获得了授权以后,加速器当然就要对memory进行读写了。
        这个时候,memory可能就会有一仆二主了。
        一仆多主了。
        这个时候,对加速器系统,就有一种特定的应用了,就是这个时候如何来解决一仆二主、一仆多主的这种架构。
 楼主| lcytms 发表于 2018-3-24 14:36:19 | 显示全部楼层
0937
        这个时候,就有一个资源的裁决问题。
        一旦加速器获得授权,加速器就必须获得对资源的控制权,控制权就必须转交给加速器,早先的架构里面完全是由CPU定的。
        是由老大,由master,也就是唯一的CPU来敲定的,由CPU说了算,CPU说,我把资源给你,CPU就停下来,或者说CPU去访问其它的资源。
        把这一部分硬件资源交给加速器。
        加速器就全力以赴地运行。
        而现代的架构,会考虑到一些问题,如果有CPU来决定,CPU我们知道还多核了,究竟由哪个核来决定呢?
        是不是单独还要有一个主的处理器?
 楼主| lcytms 发表于 2018-3-25 11:02:40 | 显示全部楼层
0938
        都会带来一些处理上的困难。
        而现代的处理方法是,既不由加速器来定,也不由CPU来定,由一个第三方的裁决机构,称之为仲裁器的,由仲裁器根据仲裁策略来决定当前的资源给谁。
        在我们绿皮书这个教材里面,我们采用了一个简单的仲裁策略,就是唯一申请者获得仲裁。
        申请者有谁呢?
        申请资源的,有CPU,有加速器。
        唯一的申请者,只有一个申请者的时候,判决给它。
        有多个申请者的时候,停下来,谁也不给,维持原来的判决。
        用这样一种简单的仲裁策略。
        根据这个仲裁策略,加速器获得仲裁,得到资源,于是加速器就可以全力以赴地来执行搬运、长整或者是图像边缘检测。
 楼主| lcytms 发表于 2018-3-25 11:09:50 | 显示全部楼层
0939
        这个是由硬件逻辑来做。
        我们看到了,我们做到210帧,很快做完了。
        做完了怎么办?
        做完了,加速器如何来通知CPU,我完成了这件事呢?
        因为CPU如果做图像搬运,是动画,它把这个角色搬完了,CPU显然会让它搬下一个角色。
        做下一段动画。
        加速器搬完了以后,加速器会如何来通知CPU,我做完了这件事呢?
        两种方式,第一种方式,加速器它本身有一个状态寄存器,状态寄存器在我们这张PPT上,主处理器会通过特定的通道来访问加速器的状态寄存器。
        通过查询的方式,加速器来访问状态寄存器。
 楼主| lcytms 发表于 2018-3-25 11:10:38 | 显示全部楼层
0940
        它是否完成了指定的交付的任务,这是一种方式。
        当然大家知道,查询的方式比较慢,现代更多的用的是中断。
        中断的方式来得更快一点。
        当加速器完成了指定的任务的时候,加速器单独地给主处理器发一个中断,主处理器接到这个中断信号以后,就知道加速器已经完成了指定的任务。
        于是加速器和CPU之间再一次交换资源,资源的仲裁。
        这个时候CPU要重新接管资源。
        加速器要释放资源。
        或者仲裁要把资源判给CPU。
        当资源重新判给CPU以后,这个时候CPU才可以接着做下一件事。
        搬完了第一个角色,你让它搬第二个角色。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:30 , Processed in 0.060792 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表