高性能32位内核与基于微控制器存储架构的集成

发布者:安静的夜晚最新更新时间:2015-04-22 来源: eechina关键字:32位  存储架构  内核  微控制器 手机看文章 扫描二维码
随时随地手机看文章
32 位 MCU 性能差异 

微控制器(MCU)领域如今仍由 8 位和 16 位器件控制,但随着更高性能的 32 位处理器开始在 MCU 市场创造巨大收益,在系统设计方面,芯片架构师面临着 PC 设计人员早在十年前便遇到的挑战。尽管新内核在速度和性能方面都在不断提高,一些关键支持技术却没有跟上发展的步伐,从而导致了严重的性能瓶颈。 

很多 MCU 完全依赖于两种类型的内部存储器件。适量的 SRAM 可提供数据存储所需的空间,而 NOR 闪存可提供指令及固定数据的空间。 

在新 32 位内核的尺寸和运行速度方面,嵌入式 SRAM 技术正在保持同步。成熟的 SRAM 技术在 100MHz 的运行范围更易于实现。对 MCU 所需的典型 RAM 容量来说,这个速度级别也更具成本效益。 

但是标准的 NOR 闪存却落在了基本 32 位内核时钟速度之后,几乎相差一个数量级。当前的嵌入式 NOR 闪存技术的存取时间基本为 50ns (20 MHz)。这在闪存器件和内核间转移数据的能力方面造成了真正的瓶颈,因为很多时钟周期可能浪费在等待闪存找回特定指令上。 

标准MCU 执行模型——XIP (eXecute In Place)更加剧了处理器内核速度和闪存存取时间之间的性能差距。 

大容量存储中的应用容错及 SRAM较高的成本是选择直接从闪存执行的两个主要原因。存储在闪存内的程序基本不会被系统内的随机错误破坏,如电源轨故障。利用闪存直接执行还无需为MCU器件提供足够的 SRAM,来将应用从一个 ROM 或闪存器件复制至目标 RAM 执行空间。 

消除差距 

理想的情况是,改进闪存技术,以匹配32位内核的性能。虽然当前的技术有一定的局限,仍有一些有效的方法,可帮助架构师解决性能瓶颈问题。 

简单的指令预取缓冲器和指令高速缓存系统在32位MCU设计中的采用,将大大提高MCU的性能。下面将介绍系统架构师如何利用这些技术将16位的MCU架构升级至32位内核CPU。 

在 MCU 设计中引入 32位内核 

图 1 介绍了将现有16位设计升级至基本32位内核的情况,显示了新32 位内核及其基本外设集合之间的基本联系。由于我们在讨论将新的32位处理器内核集成至新的 MCU 设计,我们假设可采用新32位内核采用以下规范。 



图1 为现有设计引入32位内核 

32 位内核——改良的哈佛架构 

与很多 MCU 一样,新的 32位 内核也采用改良的哈佛架构。因此,程序存储和数据存储空间是在两个独立的总线构架上执行。一个纯哈佛设计可防止数据在程序存储空间被读取,该内核改良的哈佛架构设计仍可实现这样的操作,同时,该32位内核设计还可实现程序指令在数据存储空间的执行。 

在标准总线周期内,程序和数据存储器接口允许插入等待状态,有助于响应速度缓慢的存储或存储映射器件。 

32位内核——工作频率 

新内核的最高工作时钟频率为120MHz,是被替代的16位内核速度的六倍。 

32位内核——指令存储器接口 

指令存储系统接口有一个32位宽的数据总线,以及一个总共地址空间为1MB的20位宽的地址总线。尽管 32位内核具备更大的地址空间,而这足够满足这个MCU的目标应用空间。标准的控制信号同样具备为缓慢的存储器件插入等待状态的能力。 

该设计的闪存器件与16位设计采用的技术一样,最高运行速度达20 MHz。 

32 位内核——数据存储器接口 

系统 SRAM 和存储器映射外设都通过系统控制器与处理器数据总线相连。系统控制器可提供额外的地址解码及其他控制功能,帮助处理器内核正确访问数据存储器或存储器映射外设,而无需处理特定的等待状态、不同的数据宽度或每个映射到数据存储空间的器件的其他特殊需求。 [page]

系统控制器和处理器内核之间的数据总线为 32 位宽,与系统控制器和SRAM 间的数据总线宽度相同。系统控制器和外设以及 GPIO 端口间的数据总线宽度可为 8 位、16 位或 32 位,视需求而定。 

目标设计采用的 SRAM 与 16 位设计采用的类型相同,在 120 MHz时可实现 0 等待状态操作。 

初步分析 

目前系统的性能由几个因素控制。处理器内核与闪存器件速度的差异可极大地影响性能,因为至少有五个等待状态必须添加到每个指令提取中。根据粗粒经验法则,至少每十个指令有一个读取或存储。每条指令加权平均周期(CPI)的典型顺序为: 

CPI = (9 inst * 6 闪存周期 + 1 inst *1 SRAM周期) / 10 指令 

CPI = 5.5 

内核的吞吐量由闪存接口的速度决定,因此以前所有的32位内核都是数据通道宽度的两倍。 

在这种情况下,SRAM接口无关紧要。虽然某些问题很有可能源于存储接口方面,如中断延迟和原子位处理,SRAM存储器的零等待状态操作可以忽略。关注的重点是通过采用目前可用的、具有成本效益的技术,来提高指令存储接口的性能。

提高CPU内核性能——闪存接口 

来自高性能计算环境的一个通用概念是高速缓存,在主要存储器件和处理器内核之间采用更小及更快的内存存储,可以实现突发数据或程序指令的更快访问。 

设计和实现高速缓存可能非常复杂——需要考虑高速缓存标记、N-Way级联和普通高速缓存控制等问题——仅关注程序指令存储器可让这项工作变得非常简单。这是因为对此特定的 32 位内核来说,对程序存储器的访问是一个严格的只读操作。在这种情况下,我们只需考虑一个方向的数据流可以减少缓冲器和高速缓存系统的复杂性。 

预取缓冲器 

增加闪存接口总体带宽的一个简单方法是扩展处理器和闪存器件间的通道宽度。假定闪存的速度一定,增加带宽的另外一个方法是扩展接口宽度,以实现一次提取更多指令,创造一个更为快速的闪存接口外观。 

这是预取缓冲器的一个基本前提。它利用了连接闪存的更宽接口的优势,可在同样的时钟周期数内读取更大的数据量,这通常只要花闪存读一个字的时间。 

因此,预取缓冲器还定义了新数据通道的最小尺寸,原因显而易见。 

图2.1显示了我们的120 MHz内核连接到20 MHz闪存阵列的情况。采用两个系统间的速度比作为起始值,我们可以确定预取缓冲器、闪存接口读取的宽度,假设我们需要在无需等待状态的情况下读取指令。 



图2.1 指令预取 

在这种情况下,预取/闪存数据通道将是: 

(120/20)X32位=192位宽 

预取缓冲器控制逻辑不断对存取缓冲器的读取数进行标记。最后一次存取后,它将使下一个周期从闪存重新加载整个缓冲器。 

预取缓冲器控制逻辑还可识别缓冲器每次进入的有效地址。它还将提供适当的解码,根据正确的顺序指令显示处理器数据总线,当一个执行分支需要完整的新的顺序指令时,将重新加载缓冲器。 

当然,在提取新的指令时,分支将造成一些额外的延迟。但是由于相比处理器内核,预取缓冲器实现六合一方法在数据通道宽度方面具有绝对的优势,为该分支问题的最终平衡的结果付出的代价是值得的。 

更多经验法则分析都显示,一个典型的嵌入式应用有20%发生分支的机会,每五个周期相当于一个分支。采用之前的方法,CPI值现在为: 

周期+1指令*6周期)/5指令 

CPI = 2.0 

我们已经看到利用基本实现方法,整个系统周期效率有了大幅提高。 [page]

图2.1还显示了一个更为现实解决方案方法,即将六个独立的闪存系统的32位总线加在一起,而不是重新设计一个新的、极宽的数据总线闪存系统。预取缓冲器控制逻辑将自动创建六个连续的程序地址,然后允许一个正常的读取周期同时访问所有六个组。在读取周期的末尾,预取缓冲器现在可保持六个新的指令,而非一个,模拟的零等待状态系统。 

指令高速缓存 

形式指令高速缓存赋予预取缓冲器更高水平的复杂性,因为高速缓存不需要包含整个高速缓存阵列的特定线性地址。形式高速缓存的尺寸也比简单预取缓冲器大,它可能在高速缓存内存储整个循环序列。 

图 2.2 显示了一个简单的有 8 块、单路的高速缓存设计,1 块有 16 个字节。虽然这么小的高速缓存很难实现,但它对指令执行很有用。在这种情况下,地址标记将是整个地址的高 12 位,而索引将是寻址高速缓存块内的特定条目的余下的两位。 



图2.2 指令侧高速缓存 

与指令预取缓冲器相比,指令高速缓存系统具有更复杂的地址比较系统,因为该高速缓存阵列不仅包括每个高速缓存块的连续寻址指令,而且可以将指令地址空间的任何区域包含在高速缓存块内。 

为了让高速缓存更有效地工作,在闪存器件和指令高速缓存之间应当实现尽量宽的数据通道,保证内核能够以最快的速度执行程序指令。指令高速缓存在与闪存器件的接口上实现了一个指令预取机制来解决这个问题。否则,闪存存取时间的问题就会影响内核执行速度。 

在正常执行过程中,所需的指令地址高位和高速缓存阵列的指令标记间开始一连串的比较。如果找到匹配的地址,高速缓存命中即被寄存,指令地址的低位将被用于高速缓存块内的索引,以找回所需的指令。如果没有发现匹配的地址,就是我们所说的高速缓存不命中。高速缓存不命中将导致高速缓存控制器从存储区的特定区域读入包含所需指令的缓存块。被替代的高速缓存块通常是阵列中最旧的高速缓存块。 

当使用高速缓存时,基本性能分析变得更加复杂,因为这时高速缓存不命中数在方程里引入了一个新的变量。分析典型应用代码可帮助芯片设计人员确定高速缓存大小和实际性能增益的最佳平衡。 

对于我们的设计,假定 CPI 将在以下范围内是比较合理的: 

<= CPI (cache) <= 2.0 

在高速缓存大得足够存储大多数应用主程序的情况下,性能增益可能非常显著,因为系统正在接近 0 等待状态执行环境。 

采用改良的哈佛架构(Modified Harvard Architecture)设计的指令高速缓存的一个重要优势是高速缓存无需执行回写操作。与数据高速缓存相比,这种实现要简单的多,数据缓存还要保证改动过的高速缓存数据正确地存储进主数据存储器。 

改进的设计 

我们现在可以把学到的知识应用于我们系统的第一个框图,并从预取/指令高速缓存缓冲器系统提供的增益中获益。详见以下的图 3。 



图3 改进的32位内核设计 

与之前的16位设计相比,新设计能够以三倍的速度(120 MHz / 2.0 CPI(预取)/ 20 MHz(16 位时钟)执行指令,通过适当选择最终指令高速缓存的大小,很容易就能实现非常接近单等待状态闪存系统运行的性能。 

虽然指令预取缓冲器是一种简单的实现,但它通过屏蔽闪存和 32 位内核执行速度之间的存取时间差异,显著地改善了系统吞吐量。预取缓冲器是一个非常简单的设计,只需要很少的额外逻辑。大部分额外逻辑与扩展闪存系统和预取缓冲存储器之间的通道有关。设计的简单有利于它完全透明地展示给软件程序员,他们只需允许或禁用该功能就可以了。 

形式指令高速缓存是一种更复杂的解决方案,需要至少与预取缓冲器相同数量的额外逻辑电路,以及管理指令高速缓存正常运行的额外逻辑电路。设计人员需要分析 MCU 运行的典型应用,以确定能够最好地平衡性能和成本的高速缓存大小。当然,指令高速缓存部署更为昂贵,但是在许多情况下,系统实现的性能可达到 0 等待状态系统,对性能产生显著的积极作用。软件程序员还必须了解与指令高速缓存有关的一些基本控制和维护问题,但是在大多数情况下,它们可以一劳永逸地运行,只是在系统初始化时才需要执行。 

只用新的 32 位器件直接替代现有的 8 位或 16 位内核是不够的。芯片设计人员还必须调整和改进整个 MCU 设计,以适应高性能、高速度 32 位内核的新要求。我们需要这样的调整来确保新的 32 位内核能够释放最高性能。采用预取缓冲器和指令高速缓存是改进微控制器设计的两个直接途径,微控制器与 32 位内核和现有存储器技术直接相关。
关键字:32位  存储架构  内核  微控制器 引用地址:高性能32位内核与基于微控制器存储架构的集成

上一篇:8位、32位MCU整体研发成本比较
下一篇:嵌入式多媒体应用的多处理器核软件设计框架

推荐阅读最新更新时间:2024-03-16 13:59

单片机实现的脉冲编码传感器
引 言 随着社会的发展,出租车成为人们生活中非常方便且较普遍的交通工具,但出租车计价器却相对较为落后。在过去,出租车采用机械式计价器,用齿轮比的方式来计算出租车所跑的里程数,并由里程数来换算车费。但是机械齿轮体积较大,计算不是很准确,而且容易磨损。后来又采用了传感器方式,利用传感器接收车的跑动信息,从而计算里程数和车费。但此方法通常使干扰信号也能产生计数脉冲,所以也不完善。笔者引用单片机技术,使用编码和解码信息传递方式来完成计价器计数脉冲的形成。单片机可以很精确的检测到传感器信号,这样计价就会非常准确。完成此装置所需器件简单,成本非常低,技术上也容易实现。 1 系统原理 系统框图如图1所示
[单片机]
MAXQ2000微控制器软件I2C驱动
引言 I2C (内置集成电路)是一种2线接口,实现集成电路之间的双向通信。本应用笔记介绍maxqi2c库,它是MAXQ2000微控制器(µC)的软件I2C驱动。 maxqi2c库采用扩展C语言编写,由MAXQ的IAR嵌入式平台编译。它由两个文件组成:maxqi2c.h和maxqi2c.c。当这些文件包含在MAXQ2000固件工程时,使用µC的任意GPIO引脚,便可实现100kHz或者400kHz灵活的I2C通信。 MAXQ系列的微控制器具有高速、灵活的GPIO模块以及独立的I/O供电,适用于位拆裂等应用。 本应用笔记讨论的实例工程文件可以从Maxim Integrated Products网站下载。 配置maxqi2c库
[单片机]
MAXQ2000<font color='red'>微控制器</font>软件I2C驱动
基于AVR单片机的12864液晶(ks0108)驱动程序及仿真
#include iom16v.h #include avrdef.h #define EN 0 #define RS 1 #define CS1 2 #define CS2 3 unsigned char yang ={ 0xEF,0xFB,0xEF,0xFC,0x2F,0xFF,0x00,0x00,0x6F,0xFF,0xEF,0xDC,0xFF,0xEF,0xBD,0x73, 0x1D,0xBC,0xAD,0xDF,0xB5,0xE7,0x39,0xB8,0xBD,0x7F,0xBF,0xBF,0x3F,0xC0,0xFF,0xFF }; unsigned char ying ={ 0
[单片机]
基于AVR<font color='red'>单片机</font>的12864液晶(ks0108)驱动程序及仿真
MSP430单片机+BS8112A-3程序源码
采用仿II2C通讯,该芯片II2C通讯略有区别,已调试通过,仅供参考 单片机源程序如下: //============================================================================== //本程序只供学习使用,未经作者许可,不得用于其它任何用途 // 文 件 名 : keyboard.c // 版 本 号 : // 作 者 : // 生成日期 : // 最近修改 : // 功能描述 : FPC触摸按键 IIC 接口例程(MSP430F149系列) // 驱动IC : BS8112A-3 // 说明: 硬件说明 //--------
[单片机]
利用MCU 设计离线锂电池充电器
高效、低成本及可靠的电池充电器设计可用各种方法来实现,但采用8 位闪速MCU 不仅能缩短设计时间、降低成本及提供安全可靠的产品,而且还能使设计人员以最少的工作量来进行现场升级。考虑到电池安全充电的成本、设计效率及重要性,基于MCU 的解决方案可为设计者们提供诸多优势。通过选择带适当外围与闪存的8 位MCU,工程师们能充分利用其优势来设计一种离线锂电池充电器。带2KB 闪存及适当外围以提供一种廉价解决方案的飞利浦 80C51 型MCU 就是这样一个例子。集成化闪存还能提供高效及方便地调试应用代码并进行现场软件升级(如果需要)的能力。由于设计界不仅熟悉而且广泛接受8 位MCU,故软硬件开发可快速进行。由众多厂商提供的各种功能强大且并不昂
[单片机]
关于51单片机IO引脚的驱动能力与上拉电阻
单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。 但是,程序控制不了单片机的输出电流。 单片机的输出电流,很大程度上是取决于引脚上的外接器件。 单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”; 单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。 这些电流一般是多少?最大限度是多少? 这就是常见的单片机输出驱动能力的问题。 早期的 51 系列单片机的带负载能力,是很小的,仅仅用“能带动多少个 TTL 输入端”来说明的。 P1、P2 和 P3口,每个引脚可以都带动
[单片机]
关于51<font color='red'>单片机</font>IO引脚的驱动能力与上拉电阻
C51单片机 写一个外部中断(入门单片机
代码部分 void main() { /*---------------EA,IT,EX必须写-------------*/ EA=1; //开启总中断 IT1=1; //中断触发模式 //=0为低电平触发,=1为下降沿触发 EX1=1; //外部中断允许位 while(1) { led1=0; } } void int1() interrupt 0 { led=~led1; } 解释: 1.外部中断(按键中断)最最重要的部分就是EA,IT,EX三条语句,这三条是必不可少的。 2.EA是中断总开关,类似家里电闸的总闸,总闸
[单片机]
C51<font color='red'>单片机</font> 写一个外部中断(入门<font color='red'>单片机</font>)
C51单片机的IO口介绍(下)
上一篇文章我们对C51的IO简单的介绍了一下,现在我们来简单了解C51的IO的结构 这里我们学习一下比较常见的单片机的IO模式,分别是准双向,开漏输出和推挽输出 (这里要提一嘴,我们用的STC88C52RC是没有推挽输出功能的,STC公司后续推出的一些机型才有推挽输出功能) 接下来我们来看看这几种模式 1.准双向 看看下面的原理图,机内信号通过一个非门取反后送入一个MOS管,MOS管负责控制这个IO的高低电平,配合内部上拉电阻完成高低电平的输出 为了方便我们分析,我们把这个MOS管看成一只NPN三极管。区别是三极管靠电流导通,MOS管靠电压导通 结合前面我们讲过的知识,对于一只NPN三极管,基极b电压比集电极c电压
[单片机]
C51<font color='red'>单片机</font>的IO口介绍(下)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved