集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

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

[复制链接]
 楼主| lcytms 发表于 2018-3-19 21:50:29 | 显示全部楼层
0921
        当然我们要问清楚,这个选件,协处理器8087是做什么用的?
        我不买它可不可以?
        当时苹果发布会上的销售人员是这么解释的,这个协处理器是一个长整运算、浮点运算的一个加速器。
        就是这么提出来的,加速器,accelerator。
        他们的现场工程师这么解释,如果你是用于科学计算,建议你最好买一个。
        但是如果你选择不买,不要协处理器,苹果二拿回去,8086的那颗CPU照样能做,只不过做得慢一点。
        为什么会做得慢一点呢?
 楼主| lcytms 发表于 2018-3-20 13:45:22 | 显示全部楼层
0922
        解释就是这样。
        它是用指令做的,而协处理器是用硬件做的。
        当时我们的概念还不像现在这么清楚。
        指令做跟硬件做有什么区别?
        很简单,他就拿了一段游戏出来,没有协处理器的一台电脑,没有加8087的协处理器的电脑,是用指令做的。
        这个时候,完成同样一个游戏,如果游戏其中的一个角色,从一个坐标点运动到另外一个坐标点,电脑里面是怎么处理呢?
        是在显存上做一段搬运,是不是?
 楼主| lcytms 发表于 2018-3-20 13:46:22 | 显示全部楼层
0923
        一个角色,是人物也好,是一个球也好,是道具也好。
        从一个坐标运动到另外一个坐标。
        电脑会是怎么实现的呢?
        电脑当然要把这个坐标搬运到这个位置。
        怎么搬运呢?
        如果没有加速器的时候,CPU会把显存对应的区域一个字节一个字节地读到CPU里面来。
        因为8086是8位的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-3-20 13:47:33 | 显示全部楼层
0924
        然后,读进来,再写回去。
        而这个期间呢,CPU还要运行程序。
        它是根据程序来,一条读指令,一条写指令。
        而且还有取指周期。
        所以,CPU还要访问MEM。
        我们说指令存储器,它要读指令,本身要占用周期。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-3-21 13:50:33 | 显示全部楼层
0925
        然后读到CPU里面来,要有周期。
        一个指令周期要占用若干个机器周期,机器周期对应的是硬件电路的一拍。
        它用那么多拍来组成这些动作,当然慢了。
        所以说这个时候,用CPU来做这个事情,CPU一条指令一条指令地来做。
        但是如果是硬件,是怎么做的?
        这个里面就说到了一件事,加速器里面说到了一个DMA。
        至芯教材里面也有。
        Direct memory Access,直接存储器访问。
        什么个意思呢?
        如果用经过DMA的控制,加速器控制DMA以后,不再经过CPU了。
        而是直接读到DMA。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-3-21 13:51:41 | 显示全部楼层
0926
        DMA再写回到目标里面去。
        DMA是什么?
        不是指令,它是一个硬件逻辑,当然快了。
        所以说,当时苹果的销售工程师跟我们说,如果你不买8087,用硬件算,算什么呢?
        算浮点,算长整,它是算出来的。
        但是呢,如果你买了这个加速器,8087的加速器,它就不是用指令算的。
        它是用硬件逻辑算的。
        硬件逻辑,每一拍都会执行一个动作,全流水的情况之下,当然要快了。
        这个道理很简单。
        这个道理我们放到今天,可以更好地理解。
 楼主| lcytms 发表于 2018-3-21 13:52:33 | 显示全部楼层
0927
        因为今天在座的各位都关注游戏,现在的游戏程序做得很好,但是呢,它有一件要求,它要求有很好的显卡支持,是不是?
        如果没有一个很好的显卡支持呢,有些游戏程序是完不成的,要么玩起来很卡,要么根本不能玩。
        为什么会这样呢?
        加速器。
        这个时候,游戏程序它所对应的显卡,要求这个显卡起的就是加速作用。
        Accelerator。
        现在我们就来说一说,加速器该怎么动作?
        比方说,用DMA做数据搬运,CPU做数据搬运我们已经很清楚了。
        就是读写即可。
        读一个写一个,还有做一个指针。
        DMA是怎么做的?
 楼主| lcytms 发表于 2018-3-22 08:41:37 | 显示全部楼层
0928
        DMA它要获得数据的起始地址和结束地址。
        知道数据在哪,写到什么地方。
        然后呢,直接做,一拍做一个。
        这个期间就要涉及到加速器该怎么做。
        如果是一个图像加速器,就是我们做sobel,或者是一个协处理器8087,做长整,做浮点。
        那么,会怎么做呢?
        当然其中有各种各样的运算了,长整,浮点,sobel,中值滤波,钝化,但是有一件事是它的基本的规律。
        就是加速器,每个加速器都要这么做的。
        什么规律呢?
        我们来看看。
        首先主处理器是CPU,CPU要获得资源,CPU要正常运行,CPU需要长整运算,需要图像加速的处理的时候呢,是由CPU来管理的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2018-3-22 08:43:11 | 显示全部楼层
0929
        这个时候CPU是老大,CPU说了算。
        我什么时候做长整,我说了算。
        我什么时候做图像的边缘检测,也是由CPU说了算。
        CPU里面有一段程序嘛。
        当CPU要执行类似这样的数据搬运、钝化的时候,CPU在有加速器存在的情况之下,它用不着自己去做,用不着自己一条指令一条指令地去做。
        它可以怎么做呢?
        它可以通知图像加速器,这个时候,图像加速器做一个数据搬运。
        数据搬运的图像加速器。它会通知这个图像加速器,你来做这件事。
        这时候,主处理器不会自己做,不会自己用指令做。
        那么,它怎样通知它呢?
        当然通知它,给它一个命令。
        会向图像加速器发出一个命令。
 楼主| lcytms 发表于 2018-3-22 08:43:52 | 显示全部楼层
0930
        大家可以看得到,在主处理器、加速器之间会有一个总线通道,纵向的,主处理器呢,会通过这个总线通道,来通知加速器,而这个总线通道对于CPU而言,是唯一的。
        对于CPU的架构,无论是冯诺依曼的体系,还是哈佛体系,我们看得到,都是挂在标准总线上,地址、数据、控制总线上。
        哈佛体系上,是把数据分成两类,指令和数据。冯诺依曼是一类。
        总之是地址总线、数据总线和命令总线。
        CPU对于这些设备,无论是加速器也好,还是挂在上面的端口也好,还是定时器也好,还是异步串行收发器也好,都是通过唯一的地址,来进行访问。
        它们的地位都是相等的。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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