算力单位TOPS,GPU处理能力(TFLOPS/TOPS),CPU能力MIPS ,片外内存与片内内存

文章目录

  • TOPS
  • GOPS
  • FLOP与GOPS之间的换算
  • GOPS与FLOPS
  • 常规神经网络算力
  • CPU 处理能力
  • 基于NXP S32V234的ADAS辅助驾驶硬件计算平台
  • ROM
  • 片外RAM 与片内RAM

TOPS

TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。

与此对应的还有GOPS(Giga Operations Per Second),MOPS(Million Operation Per Second)算力单位。1GOPS代表处理器每秒钟可进行十亿次(109)操作,1MOPS代表处理器每秒钟可进行一百万次(106)操作。TOPS同GOPS与MOPS可以换算,都代表每秒钟能处理的次数,单位不同而已。

在某些情况下,还使用 TOPS/W 来作为评价处理器运算能力的一个性能指标,TOPS/W 用于度量在1W功耗的情况下,处理器能进行多少万亿次操作。

GOPS

OPS与FLOPS类似,只不过OPS一个是操作次数,FLOPS一个是浮点操作次数。

FLOP与GOPS之间的换算

(FLOP与GOPS之间的换算需要查相关资料,后续查找资料给出)

不确定的看法是OPS是操作数量,FLOPS为浮点操作数量,两者可近似于相等,FLOPS比OPS稍大。

GOPS与FLOPS

1.1 FLOPS
FLOPS定义
是“每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能省略掉。

在这里所谓的“浮点运算”,实际上包括了所有涉及小数的运算。这类运算在某类应用软件中常常出现,而它们也比整数运算更花时间。现今大部分的处理器中,都有一个专门用来处理浮点运算的“浮点运算器”(FPU)。也因此FLOPS所量测的,实际上就是FPU的执行速度。而最常用来测量FLOPS的基准程式(benchmark)之一,就是Linpack。

FLOPS换算
一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算,

一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,

一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)

一个PFLOPS(petaFLOPS)等于每秒一千万亿(=10^15)次的浮点运算,

前标的十进制与二进制
此处存在疑问,从M到G再到T,到底是1024近似为1000,还是采用二进制的乘以1024,还是确实为十进制的1000

倾向于FLOP的前标与内存一样,是以二进制算,每进一级是1024为单位的。

但是10243是1073741824,可以近似为109。所以采用10^3来近似1024问题不大。

常规神经网络算力

https://blog.csdn.net/weixin_36474809/article/details/85675504
韩松毕业论文EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING P15

2.1 AlexNet
对于AlexNet处理224*224的图像,需要1.4GOPS

2.2 ResNet-152
对于224*224的图像,ResNet-152需要22.6GOPS

例如对于 1080p图像(像素点个数1920*1280) 的8路 帧率为30FPS的图像。

22.6GOPS30FPS8路*(1920*1280/224^2)=265Teraop/sec

这个数量级为30张高端显卡。

2.3 EIE算力
EIE在稀疏网络上可达102GOPS/s,相当于同等级非稀疏网络的1TGOPS/s

2.4 一些层的算力

CPU 处理能力

https://blog.csdn.net/u013073067/article/details/82859296

今天在看《ARM权威指南-Cortex-M0》时,遇到一个单位名词——DMIPS,查找过程中发现几个相关单位名词,在此做下记录。

MIPS(Million Instructions Per Second):字面理解为百万条指令/秒,即每秒执行百万级指令数。这是衡量CPU速度的一个指标。像是一个Intel 80386 电脑可以每秒处理3百万到5百万机器语言指令,既我们可以说80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指标。

DMIPS(Dhrystone Million Instructions executed Per Second):Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。Dhrystone是一种整数运算测试程序。

MFLOPS(Million Floating-point Operations per Second),主要用于测浮点计算能力。

ARM中的MIPS和MHz联系

以下摘自博客https://blog.csdn.net/bigmarco/article/details/6652659

现如今CPU的频率越来越高,又是流水线又是超标量计算又是双核多核的,单纯以时钟频率来衡量计算机的速度已经不再科学,用MIPS来衡量相对比较合理。以ARM7为内核的S3C44B0X的推荐最高工作频率为66MHz,按照ARM公司提供的技术资料,ARM7类CPU的运算速度可按如下公式计算:MIPS=0.9×MHz,由此可得出,S3C44B0X的最大运算速度大约为0.9×66MHz=59.4MIPS。6M的51单片机通常是12 或24个时钟周期才能完成1条指令,乘法和除法指令更需要48个时钟周期。这样,我初步估算6M的51单片机的运算速度应该在0.2~0.5MIPS之间。可见8位机与32位机的运算速度还是有巨大的差异的。

再以AVR为例,它的数据吞吐率可达1MIPS/MHz,即1MHz的震荡频率可达1MIPS。

综上,用MIPS衡量计算机速度很合理,对于不同的cpu,它的最高工作频率不同,数据吞吐率也不同,所以不可一概而论。

基于NXP S32V234的ADAS辅助驾驶硬件计算平台

https://blog.csdn.net/weixin_42229404/article/details/81190577

ROM

1】rom或者flash,叫程bai序存储du区,你写的程序是存在这里面zhi的,上电后从这里面执行。
程序存储区也分为片内和片外,一般来说,现在的51很多已经做到了64k,所以很少有外扩
片外flash或者片外的rom了,flash或者rom不管是片内还是片外的,只能用来定义常量,是用code来修饰,也就是说,用code来修饰的东西,在程序运行过程中,不能修改;
2】ram有------内部ram的低128位(00-7f),对应c语言就是data,比如我定义一个变量,
data

片外RAM 与片内RAM

STC89C52 共有 512 字节的 RAM,是用来保存数据的,比如我们定义的变量都是直接存在 RAM 里边的。但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。

51 单片机的 RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0xFFFF 共 64K 字节。这里有一点大家要明白,片内 RAM 和片外 RAM 的地址不是连起来的,片内是从 0x00 开始,片外也是从 0x0000 开始的。还有一点,片内和片外这两个名词来自于早期的 51 单片机,分别指在芯片内部和芯片外部,但现在几乎所有的 51 单片机芯片内部都是集成了片外 RAM 的,而真正的芯片外扩展则很少用到了,虽然它还叫片外 RAM,但实际上它现在也是在单片机芯片内部的,我们的 STC89C52 就是这样。以下是几个 Keil C51 语言中的关键字,代表了 RAM 不同区域的划分,大家先记一下。

在这里插入图片描述

51单片机的片内RAM和片外RAM的区别

data:片内 RAM 从 0x00~0x7F

idata:片内 RAM 从 0x00~0xFF

pdata:片外 RAM 从 0x00~0xFF

xdata:片外 RAM 从 0x0000~0xFFFF

大家可以看出来,data 是 idata 的一部分,pdata 是 xdata 的一部分。为什么还这样去区分呢?因为 RAM 分块的访问方式主要和汇编指令有关,因此这块内容大家了解一下即可,只需要记住如何访问速度更快就行了。

我们定义一个变量 a,可以这样:unsigned char data a=0,而我们前边定义变量时都没有加 data 这个关键字,是因为在 Keil 默认设置下,data 是可以省略的,即什么都不加的时候变量就是定义到 data 区域中的。data 区域 RAM 的访问在汇编语言中用的是直接寻址,执行速度是最快的。如果你定义成 idata,不仅仅可以访问 data 区域,还可以访问 0x80H~0xFF 的范围,但加了 idata 关键字后,访问的时候 51 单片机用的是通用寄存器间接寻址,速度较 data会慢一些,而且我们平时大多数情况下不太希望访问到 0x80H~0xFF,因为这块通常用于中断与函数调用的堆栈,所以在绝大多数情况下,我们使用内部 RAM 的时候,只用 data 就可以了。

对于外部 RAM 来说,使用 pdata 定义的变量存到了外部 RAM 的 0x00~0xFF 的地址范围内,这块地址的访问和 idata 类似,都是用通用寄存器间接寻址,而如果你定义成 xdata,可以访问的范围更广泛,从 0 到 64K 的地址都可以访问到,但是它需要使用 2 个字节寄存器DPTRH 和 DPTRL 来进行间接寻址,速度是最慢的。

我们的 STC89C52 共有 512 字节的 RAM,分为 256 字节的片内 RAM 和 256 字节的片外RAM。一般情况下,我们是使用 data 区域,data 不够用了,我们就用 xdata,如果希望程序执行效率尽量高一点,就使用 pdata 关键字来定义。其它型号有更大的 RAM 的 51 系列单片机,如果要使用更大的 RAM,就必须得用 xdata 来访问了。

你可能感兴趣的:(基础软硬件)