Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1723986
  • 博文数量: 98
  • 博客积分: 667
  • 博客等级: 上士
  • 技术积分: 1631
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-27 15:59
个人简介

一沙一世界 一树一菩提

文章分类

全部博文(98)

文章存档

2021年(8)

2020年(16)

2019年(8)

2017年(1)

2016年(11)

2015年(17)

2014年(9)

2013年(4)

2012年(19)

2011年(1)

2009年(4)

分类: 嵌入式

2020-01-06 14:22:23

这段时间研究arm的指令集,突然发现竟然连arm的基本体系结构也不了解,尤其是一些和硬件优化相关的基础知识,例如,多少级流水线,cache line大小,指令和数据是否分开存储等等。cache line大小关系到数据结构大小和数据项怎么安排,流水线级数关系到指令级并行优化,指令和数据是否分开关系到总线使用带宽一类的问题。总之就是啥都不知道啊。

平时都在m系列上编程比较多,但是也没有系统总结过。其实大部分arm是指令空间和数据空间是分开的,指令是直接从flash读取的,数据存放在ram区域。也就是说大部分arm都是哈佛结构,而我们日常使用的台式机或笔记本大部分都是冯诺依曼结构。这两种结构最根本的区别在于程序空间和数据空间是否是一体的,冯诺依曼结构数据空间和程序空间是分开的,而哈佛结构数据空间和程序空间是分开的。

由于平时使用较多的是a系列和m系列,故之没有考虑r系列,只总结am这俩个系列如下:

1 arm M系列的几款mcu主要特点:

可以得知流水线级数,是否支持超标量,是否支持simd运算。

 

2 arm A系列的几款cpu主要特点,都是哈佛结构,近几年的arm基本都支持simd,一二级指令和数据cache,多发射,多执行,乱序,寄存器别名等可以优化考虑的特点:

下面是另外一张图,有些有用的信息:
关于cortex-A系列的流水线,I-cache,D-cache容量大小,是否支持乱序,几发射端口,几执行端口,是否支持neon加速器,各条指令的延时和吞吐量,都不太容易收集啊,大家自己直接看cpu对应手册吧。

阅读(383007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~