搜索
bottom↓
楼主: machao

从嵌入式硬件工程师角度去看MIPS

[复制链接]

出0入0汤圆

发表于 2009-12-14 00:06:52 | 显示全部楼层
【12楼】 machao
积分:5201
派别:
等级:------
来自:
10楼明显不是硬件出身的,根本不了解我讲的东西。我这里讲的I/O不是外部设备,是处理器的引脚。  
-----------------------------------------------------------------------------------------------
O,my god!
IO可是标准的外设,而且还是挂在APB总线上的慢速外设!

(原文件名:aaa.JPG)


我试过用三星的44b0和2500发IO脉冲,最快只能发到4,5mhz的样子,就是一条指令置1一条置0,就是卡在APB速度上。nxp的214x有fast io功能,它的io是挂在local bus上的,可以达到15mhz。可以参见214x的手册。

楼主的基本意思还是对的,只不过这个例子举的不太好。DMIPS本来是一个纯软件的概念,就是尽量抛开一切外部因素来考察一个cpu内核的性能。也就是learner123 说得算fft时,DMIPS才有意义。

顺便问下楼主,产生1mhz或以上的脉冲,除了用中断还有什么好的方法?我试过在44b0上用for循环的方式仿真串口,但发现第一个bit比后面的长好多,后来发现是cache在作怪,刚跑这段程序时要加载cache,而后面的bit再跑时是在cache里跑,所以快的多。

出0入0汤圆

发表于 2009-12-14 13:07:49 | 显示全部楼层
to machao :
我没有和你比用stm32产生1mhz方波的技巧,用TC确实是一个很巧妙的方法。我只是说用这个例子来衡量DMIPS实在有些不妥。DMIPS是个纯软件的概念,硬要它去操作硬件,然后说它不行。就好比让一个学通信的人去设计一个机械装置,然后再说他笨一样。

出0入0汤圆

发表于 2009-12-14 16:25:07 | 显示全部楼层
to machao:
恐怕你越解释越不明白。我在30楼有解释。
STM32的I/O最高可以工作在50M,现在只是1M的输出,就“阻塞”了内核速度?
实际外设“阻塞”内核的速度不是这样理解的。实际内核总是全速运行的,并不会由于外设慢而自动减速。由于外设速度不高,所以程序员使用延时等待,或中断方式,让内核去配合外设工作。这种让内核放“慢”工作,是人为的。其实内核本身速度并没有放慢,只是在做延时等待这样无用浪费的事情,当然使用中断就可以去处理另外一个外设的工作,这个也是一种并行处理的概念(但这个不是说内核可以同时执行2条或多条指令的并行处理)。

----------------------------------------------------------------------------------

外设会不会阻塞内核速度一试便知,用下面的示意程序试下就知道了:

start:
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  置1
  置0
  b   start

用示波器看下IO的频率,肯定比想象的慢的多。这就是我在44b0上的测试程序,66mhz的arm7只能发4,5mhz,算下来6个clk才一条指令。

出0入0汤圆

发表于 2009-12-14 16:48:50 | 显示全部楼层
CM3核一条指令到底多少周期,好像并没有明确的答案。

----------------------------

象arm这种cpu已经和51,avr有很多不同了,单纯考虑一条指令多少周期没什么实际意义。影响这个参数的因素太多,例如指令的执行位置,是在ram里还是在flash里(有flash加速的例外,可以做到0等待),还有操作对象的位置,例如楼上那段代码不是操作io,而是ram里的某bit,速度就会快很多,因为操作ram不用通过ahb总线到慢速的apb总线。如果再加上cache是否命中,那将更加复杂。
cortex-m3的trm第18章列出了每个指令的clk,大家可以去参考。

出0入0汤圆

发表于 2009-12-14 17:48:01 | 显示全部楼层
【44楼】 machao
在32位系统中,内核时钟与I/O时钟不同,I/O的时钟慢,I/O口是按I/O时钟触发同步工作的,假如I/O的时钟工作频率为1M,它是每隔1us输出一次的,可是CPU在这1us中已经设置了好几次了,I/O只不过是在1us时输出最后的一次设置值。

----------------------------------------------------------------------------------------------

我举的例子是个极限情况,是apb总线把内核托到最慢的情况,在中间加nop当然不会使频率降到一半,因为:1,nop执行的很快,它不用等待硬件ready    2,内核执行完对apb的操作会不管apb是否已经完成而继续执行下一条指令,但内核下次再操作apb时会查询上次操作的完成,如果未完成则等待。而不是象你所说的只输出最后一次设置值。这个可以验证,如果只输出最后值,那么我的那个例子某些置0或置1指令会“丢失”,示波器上看就不是50%的很标准的方波。

出0入0汤圆

发表于 2009-12-14 18:06:20 | 显示全部楼层
to  learner123:
水平高不敢当,玩arm也有6,7年了,而且开发的就是arm仿真器,也算做过具体东西的了。那个例子就是用44b0模仿jtag时序时的测试代码,发现比想象的慢的多,才发现是apb总线在作鬼。最后改用FPGA才把速度搞上去。

出0入0汤圆

发表于 2009-12-15 21:47:05 | 显示全部楼层
废话不说,上试验结果

1,硬件试验环境
   a,泰克TDS1012示波器
   b,自制TRACE-ICP  arm仿真器
   c,STM32开发板:STM32F103RBT6,外部晶体8Mhz

试验桌面 (原文件名:IMG_2258.JPG)

2,硬件连接
   开发板采用USB供电。PB10接示波器通道1,提供触发同步信号用。PB11接示波器通道2,为测试IO频率。

3,软件环境
   a,编译软件
IDE-Version:
μVision V4.00a
Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2009

License Information:
xia asd
jkl
LIC=9WSKX-HRB5I-TMV9P-8IAUR-GRHJ4-IU161

Tool Version Numbers:
Toolchain:        RealView MDK-ARM  Version: 4.01
Toolchain Path:    BIN40\
C Compiler:         Armcc.Exe       V4.0.0.524
Assembler:          Armasm.Exe       V4.0.0.524
Linker/Locator:     ArmLink.Exe       V4.0.0.524
Librarian:             ArmAr.Exe       V4.0.0.524
Hex Converter:      FromElf.Exe       V4.0.0.524
CPU DLL:               SARMCM3.DLL       V4.01
Dialog DLL:         DARMSTM.DLL       V1.44
Target DLL:             BIN\UL2CM3.DLL       V1.54
Dialog DLL:         TARMSTM.DLL       V1.43

  b,工程管理采用VC6。0,通过makefile调用keil编译器
  c,仿真软件采用TRACE32 08年10月份版本

试验工程文件ourdev_515100.rar(文件大小:208K) (原文件名:software.rar)

出0入0汤圆

发表于 2009-12-15 21:55:23 | 显示全部楼层
试验1,产生最快的方波
  配置STM32内核频率为72Mhz(外部晶体8Mhz,倍频9),APB2总线为1分频,即72Mhz

RCC参数 (原文件名:1.JPG)

部分试验代码:
                EXPORT iotest
iotest
                ldr     r0, = 0x40010C0C
                ldr     r1, = 0x00000800
                ldr     r2, = 0
                ldr     r3, = 0x00000400
always_loop
                str     r3, [r0]
                str     r2, [r0]

                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]
                str     r1, [r0]
                str     r2, [r0]

                b       always_loop

试验结果:PB11上产生约17。86Mhz方波,内核频率为72Mhz,说明此时内核每2CLK执行一次翻转IO指令


示波器测量结果 (原文件名:IMG_2265.JPG)

出0入0汤圆

发表于 2009-12-15 21:59:40 | 显示全部楼层
试验2,中间加入一个nop
RCC配置同上
试验部分代码:

                EXPORT iotest
iotest
                ldr     r0, = 0x40010C0C
                ldr     r1, = 0x00000800
                ldr     r2, = 0
                ldr     r3, = 0x00000400
always_loop
                str     r3, [r0]
                str     r2, [r0]

                str     r1, [r0]
                nop
                str     r2, [r0]
                nop
                str     r1, [r0]
                nop
                str     r2, [r0]
                nop
                str     r1, [r0]
                nop
                str     r2, [r0]
                nop
                str     r1, [r0]
                nop
                str     r2, [r0]
                nop
                str     r1, [r0]
                nop
                str     r2, [r0]
                nop
                str     r1, [r0]
                nop
                str     r2, [r0]
                nop

                b       always_loop

试验结果:PB11上仍产生约17。86Mhz方波,内核频率为72Mhz,说明此时内核仍为每2CLK执行一次翻转IO指令

(原文件名:IMG_2266.JPG)

出0入0汤圆

发表于 2009-12-15 22:03:02 | 显示全部楼层
试验3,加入两个nop
RCC配置同上
试验部分代码类似上个试验

试验结果:PB11上产生约11。90Mhz方波,内核频率为72Mhz,说明此时内核平均每3CLK执行一次翻转IO指令


(原文件名:IMG_2267.JPG)

出0入0汤圆

发表于 2009-12-15 22:12:43 | 显示全部楼层
试验4,加入三个nop
RCC配置同上  
试验部分代码类似上个试验

试验结果:PB11上产生约9。259Mhz方波,内核频率为72Mhz,说明此时内核平均每4CLK执行一次翻转IO指令


(原文件名:IMG_2270.JPG)

出0入0汤圆

发表于 2009-12-15 22:18:11 | 显示全部楼层
试验5,代码采用试验1的,RCC配置APB2为2分频
RCC配置

(原文件名:2.JPG)

试验部分代码同试验1

试验结果:PB11上产生约8。929Mhz方波,内核频率为72Mhz,说明此时内核平均约每4CLK执行一次翻转IO指令

(原文件名:IMG_2271.JPG)

出0入0汤圆

发表于 2009-12-15 22:29:01 | 显示全部楼层
试验6,修改IO输出配置为2Mhz
RCC配置同试验1
试验部分代码同试验1
IO输出配置修改为2Mhz

试验结果:屏幕上半部分为50Mhz时的波形,下半部分为2Mhz时的波形,发现改为2Mhz后输出频率没有发生变化,但上升沿和下降沿明显变欢,过冲减小


(原文件名:IMG_2272.JPG)

出0入0汤圆

发表于 2009-12-15 23:45:44 | 显示全部楼层
试验总结:
    1,APB相对内核是慢速的,操作需要2个APB CLK。内核操作APB时如果遇上APB上次操作未完成,则内核需等待。试验1和试验5可以验证这一点,程序中没有别的多余指令,但受APB影响,执行速度降了下来。
    2,内核对APB执行写操作,不用等待本次操作完成,即可执行下一条指令。试验2,3,4可验证这点,相对试验1,似乎IO翻转命令后的一条nop没有托慢IO的输出频率。
    3,至少str和nop指令内核可以做到一条指令一个周期。试验2,3,4可验证这点,试验2中1条str加1条nop需2个CLK,式样3中1条str加2条nop需3个CLK,试验4中1条str加3条nop需4个CLK。
    4,对于STM32,IO输出频率配置的作用是改变输出特性,尽量放缓上升和下降沿,减少对外影响,而与输出频率无关,对内核程序执行速度没有影响。

不同意马老师的观点有:
   1,DMIPS本来是评价一款内核的纯软件计算性能的指标,与编译器有关,与外设和程序员无关。而用来评价处理器的硬件特性不太合适。ARM给出的1.25DMIPS/MHz是很实在的,而且经过验证的。好像realview可以达到这个指标,GCC则差一些。举的那个1Mhz方波的例子也不太合适。
   2,【12楼】“10楼明显不是硬件出身的,根本不了解我讲的东西。我这里讲的I/O不是外部设备,是处理器的引脚。 ”
      -----这个不用多说,GPIO模块可是挂在APB(Advanced Peripheral Bus)总线上的。
   3,【30楼】“1。我知道,从STM32内部看,I/O属于“外部”的挂的设备,没有内核工作速度快,但STM32的I/O工作的频率可以为50M、10M和2M!在中断中用一条指令将I/O取反,输出1M方波,I/O工作频率也就2M,因此配置I/O工作在10M或50M就可以了。不会“阻塞”影响内核速度的。我同意你们的看法,把I/O归属于外部设备,会阻塞内核速度,那么更说明了从硬件角度,证明这个时候DMIPS的参考作用不大。 ”
      -----STM32的50M,10M,2M和内核无关,并且IO会阻塞内核,只要内核操作的足够快,在试验结果1中。
   4,【44楼】“在32位系统中,内核时钟与I/O时钟不同,I/O的时钟慢,I/O口是按I/O时钟触发同步工作的,假如I/O的时钟工作频率为1M,它是每隔1us输出一次的,可是CPU在这1us中已经设置了好几次了,I/O只不过是在1us时输出最后的一次设置值。 ”
       -----IO不会象D触发器那样任凭输入怎么变,只在clk有效时输出最后结果,试验总结1说明内核会等待IO操作完成的,保证每次写入都生效。并且示波器上也没有观察到有写丢失现象,是非常标准的方波。

   5,【63楼】“我同样不理解另外一个玩arm也有6,7年了,而且开发的就是arm仿真器高手所说的情况(因为自己没玩过),“66mhz的arm7只能发4,5mhz”?

内核66M,I/O只能工作在10M?(请哪位熟悉的朋友能提供一个手册值吧:I/O最高工作频率为多少)。我想I/O应该不会低于20M,这个ARM7不会这么“笨”吧。 ”
       -----44b0确实如此的“笨”,它的APB总线效率比STM32的低多了,我用类似试验1的代码就只能出4,5Mhz,不信大家可以找个板子来试验下。44b0毕竟是2000年左右的产品了,对它别要求太高。

出0入0汤圆

发表于 2009-12-15 23:55:00 | 显示全部楼层
to 【69楼】 eduhf_123 经历
我再次声明,那段代码是为测试44b0极限所写的,如果只是产生一个简单1mhz的方波,这肯定不是一个好方法。但当时我是要模拟JTAG时序,还需要输出TMS,TDI,读取TDO,不是一个简单的方波,所以只能用软件操作IO。

另外对于你在89楼所说的,我希望你能认真看完我做的试验和我后面写的试验总结。如果你仍保持原看法的话,那只有让大家来评论了,我将不与你说话。谢谢!!!

出0入0汤圆

发表于 2009-12-15 23:56:43 | 显示全部楼层
to 【90楼】 zhousd 银河一号
你所说的“在产生分支转移的时候,打断了流水线操作,应该会产生出这种效果。”
那种效果?能具体点么

出0入0汤圆

发表于 2009-12-16 11:39:27 | 显示全部楼层
to【95楼】 zhousd 银河一号
我想DMA的随机抖动是在和内核抢总线吧,总线仲裁不可能让DMA一直占着总线。IIS没用过,别的不太好说。

to 【97楼】 learner123
我的邮箱xiaoyang2000@sina.com。jtag本身很简单,就是围绕那个状态机来做文章。TCK提供同步信号,TMS控制状态机的迁移,TDI和TDO传送数据。用什么实现要看你的具体需求,要速度还是要成本。
至于马老师的那些话语,上帝是我先请的。当时只不过是看到“我这里讲的I/O不是外部设备,是处理器的引脚”发表一下感慨,并没有其他意思。因为我从没见过内核中集成IOpin的cpu,IO最多算个ON chip外设,外设并不是cpu外面的意思。如果引起了马老师的不快,我在这里先说声对不起了。
其他人的言论我一般不予理睬,尤其是那些还没弄清事情的来龙去脉就瞎评论的人。我的能力水平是我的,他说一两句话,我的能力水平也不会改变。薪水是老板给的,又不是他给的,他怎么看我的水平无所谓。有些人上论坛是切磋技艺的,有些人上论坛是来发泄的。

--------------------------------------------------------
下面接着做试验,看看其他两款cpu的软件操作IO能力。可以为以后大家选型参考。
代码还是那段代码,只不过改用GCC编译
    .global iotest
iotest:
    ldr     a1, =0x01D20020
    ldr     a2, =0x08
    ldr     a3, =0
always_loop:
    str     a2, [a1]
    nop
    nop
    str     a3, [a1]
    nop
    nop
    str     a2, [a1]
    nop
    nop
    str     a3, [a1]
    nop
    nop
    str     a2, [a1]
    nop
    nop
    str     a3, [a1]
    nop
    nop
    str     a2, [a1]
    nop
    nop
    str     a3, [a1]
    nop
    nop
    str     a2, [a1]
    nop
    nop
    str     a3, [a1]
    nop
    nop
    b       always_loop

1,三星S3c44b0x,50Mhz内核频率,8Kb Cache打开,程序在sdram中运行(其实是在cache里)。手册中未说明APB分频系数,也不可调整。APB为早期版本,写操作需写完才可执行后面的指令。

(原文件名:20091216(000).JPG)
没有nop指令,IO频率为6。25Mhz,可见APB操作与主频(50Mhz)之间为4倍的关系。



(原文件名:20091216(001).JPG)
一条nop指令,IO频率为4。950Mhz。



(原文件名:20091216(002).JPG)
两条nop指令,IO频率为4。167Mhz。综合上个试验可以看出内核操作完APB后没有立即执行下面的nop,而是等待APB。算出nop执行时间为0。02us,为一个CLK。

2,NXP的LPC1754,72Mhz内核频率,程序在FLASH中,FLASH加速打开。GPIO挂在AHB上,与APB无关。

(原文件名:ccc.jpg)
注意他的GPIO是挂在AHB上的,并且叫“High Speed GPIO”



(原文件名:20091216(003).JPG)
没有nop指令,IO频率为35。71Mhz,每次操作需1个CLK,不用等待。


(原文件名:20091216(004).JPG)
1条nop指令,IO频率为18。18Mhz,每条指令也是1个CLK。


总结:44b0的IO最弱,毕竟是老前辈了。APB操作需4个CLK,并且写操作要等写完才能继续运行。
      STM32中等,借着ARM改进了APB的春风,APB操作只需2个APB CLK,并不需写等待。
      LPC1754最强,IO直接挂在AHB上,1个CLK一次操作。

出0入0汤圆

发表于 2009-12-17 12:45:42 | 显示全部楼层
to zhousd 银河一号:
我问了下做过IIS的人,他说应该不至于速度跟不上,就像【103楼】 gzhuli 咕唧霖 说的那样,有FIFO在前面顶着。但我想他没具体测过。

出0入0汤圆

发表于 2010-1-8 17:48:14 | 显示全部楼层
回复【112楼】taoist
-----------------------------------------------------------------------

是用一段叫DHRYSTONE的专门程序测的,附件是移植到stm32的。

ourdev_524049.rar(文件大小:215K) (原文件名:dhrycm3.rar)

出0入0汤圆

发表于 2010-1-11 11:10:15 | 显示全部楼层
to 【115楼】 hanlin 韩林
请问你是怎么看阻塞不阻塞?
你的理解不是指令被阻塞了是什么?内核状态机的迁移被阻塞了?mos管的导通关断被阻塞了?电流的路径被阻塞了?这样才“硬件”?

仲裁不一定就要延时,我的试验中没有启动DMA,也没有交叉访问,所以总线不会有冲突,自然也就没有仲裁延时,保证了内核到APB最通畅。如果按你所说的是仲裁导致了延时,那为什么LPC1754的IO翻转可以做到1个CLK?所以还是APB导致了延时,如果试验中用str访问的不是APB,而是RAM,那将也是1个CLK的。

还有你在119楼中提到的“如果内核达到100M的速度,而GPIO输出只能50M,那么内核动作2次以上GPIO才能响应最后那次的动作.”请看我的试验结论。如果你有什么异议,可以设计个试验来反驳。

我承认我不是搞硬件的,至少在公司我只是个写驱动的,很少自己画板子。但我的硬件能力去应付本次讨论中这种级别的硬件还是没有问题的。
BTW你可以去google下我的名字3dg12是什么,那个时代的东西你可能都没见过。

出0入0汤圆

发表于 2010-1-11 17:48:57 | 显示全部楼层
哈哈,看来learner123 也是老玩家了,一下子看到了那么多熟悉的名字。除了前面两个电子管没用过,后面四个都是当年做收音机,功放经常用到的东西,现在家里还有好多呢。可惜现在这些东西应该都停产了,一般商店也买不到了。这些东西虽然落后,但还是咱国家自己生产的,不象现在基本没有纯正的“MADE IN CHINA”了。
自从92年入门到03年《无线电》,《电子世界》,《电子制作》我可是一期不落的(可惜的是中间丢了几本),两次搬家都没舍得扔掉。虽然很鸡肋,但想到当年每月买到它们后恨不得在路上看完再回家,就还是让它们继续在箱子里睡觉吧:)
《无线电》后来还买过几期,但《电子世界》和《电子制作》后来在邮局都没有了,不知道现在是否还在出版。

出0入0汤圆

发表于 2010-1-14 13:25:08 | 显示全部楼层
回复【128楼】eduhf_123 经历
-----------------------------------------------------------------------

先不说硬件不硬件的,我觉得你的思维方式有问题,或者你只是个在校学生,不懂得具体问题具体分析。用什么方案要考虑的因素太多,时间、成本、体积、性能、功耗、客户需求、器件的市场供应情况,会不会马上停产,在中国是否好拿货、产品的市场定位等等等等,你评什么武断的认为我的产品一定要用FPGA?虽然我现在用的确实是FPGA。

我告诉他我名字的含义是想让初出茅庐的人谦虚点,什么问题不要想当然,最好做个试验在说话。

出0入0汤圆

发表于 2010-1-14 19:24:46 | 显示全部楼层
回复【130楼】vr2whf
-----------------------------------------------------------------------

你是做手机的?这事儿得私聊。。。。

出0入0汤圆

发表于 2010-1-15 17:24:30 | 显示全部楼层
回复【133楼】hanlin 韩林
-----------------------------------------------------------------------

啥也不说了,你去用72Mhz的STM32写个50Mhz的IO来再说。不用50Mhz,20Mhz就行。

出0入0汤圆

发表于 2010-2-16 16:41:45 | 显示全部楼层
回复【138楼】vr2whf
-----------------------------------------------------------------------

我加你了,怎么拒绝我啊。

出0入0汤圆

发表于 2010-2-16 17:08:29 | 显示全部楼层
回复【141楼】fickle
-----------------------------------------------------------------------

薪水和能力是鸡和蛋的问题。员工想老板就给那么点薪水,我评什么要那么努力,有那么高的水平。老板想的是你要先有这水平,我才给你这么高的薪水。所以作为打工者聪明的做法应该是先努力干活,提高水平再向老板要求薪水。老板只要认为你有剩余价值,值得他去诈取,他自然会给你高薪的。那些自嘲“年薪过万”的估计不是在开玩笑就是刚毕业的学生,甚至还没毕业。我身边工作5,6年的技术工作者,月薪过万的有的是,就算没过万也是接近万元的。总之还是那句话,作技术是比上不足,比下有余。
等你穷的月薪过万的时候等着你的是老婆,孩子,车子,房子,确实是月薪过万的在穷着。

出0入0汤圆

发表于 2010-10-2 01:43:04 | 显示全部楼层
回复【164楼】machao
-----------------------------------------------------------------------

既然马老师来了我也说两句
我在前面的帖子里已经说明了LZ的帖子意思是对的。只是那个例子不太合适,用一个纯软的指标去衡量一个硬件做的事,有些不太妥当。但是后面.....,这个不多说了。DMIPS/MHz是有明确规定的,跑一段特定的C语言,和一个特定的CPU做对比,得出的得分记做“DMIPS/MHz”。当然这个指标也有虚的成分在里面。既然是C语言,就要有编译器。同样的CPU,不同的编译器,不同的优化选项,得出不同的DMIPS/MHz。甚至编译器可以对DMIPS的这段代码进行编译优化,得出更高的DMIPS/MHz。单就M3内核来讲,1.25DMIPS/MHz在RVDS编译器下是可以得到的。但RVDS是否针对DMIPS代码进行了优化就不知道了,有兴趣有条件的同学可以去查一下。

另外MIPS/MHZ这个指标更是难以给出,因为ARM已经与51有很大的不同(本人只了解这两种cpu,avr、430等只是看过两眼,不便多说)。arm每条指令的执行周期不是固定不变的,与自身因素有关(上下文互锁、操作数不同等),也与外界因素有关(总线等待周期、操作地址不同等)。撇开乘除法这样复杂的指令不讲,单就简单的中断中常用的储存器读写指令的执行周期也是不固定的。如果ARM只是把最好情况下的平均结果告诉大家,肯定又有人站出来说不实在:为什么我的代码跑的比给出的指标慢?而且MIPS/MHZ也没什么实际意义。拖累这个指标的乘除法等指令一般大家也不去关心它的执行CLK,大家关心的中断初始阶段常用指令基本都是1CLK1条指令,具体执行情况要到arm给的trm里根据上下文查。这些还是没有cache,分支预测,乱序执行等情况下的,如果加上这些情况将更复杂。所以MIPS/MHZ还不如DMIPS/MHZ这个纯软指标更有指导性。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 03:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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