关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 继承与创新:Innovasic Fido微控制器

继承与创新:Innovasic Fido微控制器

——
作者:Jim Turley时间:2007-04-25来源:电子产品世界收藏

上世纪最早出现的CISC (复杂指令集计算机) 计算机结构,现又悄然兴起——Xilinx, Tensilica, Sun Microsystems和Power联盟等组织带头复兴 CISC 计算机结构。毕竟CISC 指令至今仍存在优于RISC之处。ISA(工业标准结构)虽不断更替,但有些东西仍经久不变。如Freescale的老式68K结构至今仍在应用。68K系列至今仍一直保有32位处理器市场销售额最高的地位,直到几年前被ARM所取代。68K系列的长寿有很多原因:容易编程,支撑软件优良,从性能、封装、价格水平到外围设备种类广泛,适应各类客户的需要。以至于68K结构一度成为嵌入式处理器的代名词。Freescale 68K的产品系列的销售额每年都高达数百万美元。只要数以千计的忠诚于68K的开发人员尚未退休,它的市场份额暂时不会轻易失去。

Innovasic公司发现了CISC的潜在机遇,设计制造了一款与Freescale公司 68K系列相兼容的、新型32位Fido 1100微处理器芯片。Fido 1100并不只是一款克隆68K的产品,而是在68K结构的基础上,增加了创新的外设与硬件实时任务切换等新技术。

仿制高手

Fido 是Innovasic生产的第一款兼容于68K的芯片。其实Innovasic是克隆微处理器经验丰富的厂家。过去十年以来,Innovasic的工程师们曾为停产的多个8位和16位生产过完全兼容的替代产品。不仅军方是Innovasic的大量客户,在寻找市面上难以找到的产品时,嵌入式和业界的设计人员也会经常想起Innovasic。Innovasic的仿制经验使其充满自信地推出了自己的原始芯片Fido,这款芯片虽然沿用了68K的编程模式和指令集,但芯片关键的微结构内核、内部总线、以及外设等的设计都是自主的创新。例如,Fido使用的钟频提高到66MHz,以取胜于Freescale的 680x0和ColdFire。
  
真正的实时

Fido的设计让人感觉有些“自相矛盾”。如它所兼容的68K指令集是卡特时代的产品,但Fido的微结构内核却惊人地现代化。Fido芯片的外设类别看似极为平常的I/O,而其实现却绝非一般。粗览数据表时,Fido显得十分普通,但实际上却有创新的技术内涵。Fido通过硬件取代一贯沿用的常规软件任务切换,提高性能的同时也简化了新手的使用。片上有五组32位程序员可见的地址、数据和控制/状态寄存器组。可以在单一时钟周期内,从某一寄存器组切换到其他任一组。由这套硬件代替传统的软件任务切换功能,或代替传统实时操作系统的初等操作内核。嵌入式应用中,有了这套硬件,就足够应付五个任务以内的一切操作管理了。五个任务以下的操作管理也是一般应用都会用得着的。Innovasic 建议,任务多于五个时,仅需在五组中的一组上运行传统的软件任务管理程序或实时操作系统即可。

图1 Fido 1100方块图

Fido维护这五个任务,采用物理上双份的程序员可见寄存器组,而且可以指定某一份在某个周期上使能。五个寄存器组的用户及监控的特权级别与68K编程器的相同,当中断或异常发生时,便无需处理器再行干预切换事物了。Fido的片上中断控制器中含有中断屏蔽位、中断优先级位、和为硬件任务指定中断源域。从而,在该中断开放的情况下,就能够触发硬件任务的切换,或是由当前任务,如同任一68K处理器一样,来处理中断。

任务切换还有其他一些因素。程序员可以给五个寄存器组各分配一个优先级,使高优先级任务能中断当前任务。另外,当前任务也能把自己置于休眠态,将控制让予其他任务。从而,可以使用一个定时器即可简单地实现任务轮换,或优先级任务切换。各种任务排列组合后的切换算法都是可能的,Innovasic认为这是留给程序员的最好练习。
  
紧拽住软件价值链

Fido 将Freescale CPU32+的指令集的字节数加倍,其执行时间与Freescale指令相比,处处有一个时钟周期的差异。这一点并不奇怪,Freescale的 CPU32+,芯片不同,执行时间也不尽相同。作为Fido的客户,要充分以利用CPU32+软件开发工具在这方面已有的功能。就是说,绝大多数68K的开发工具Fido都可以利用。如Fido这样的新开发的处理器,尚未建立自己软件库之前,都可以从Freescale原有开发工具中获取帮助。

Fido在确定性输出方面,有三大特点:高速缓存具有确定性;I/O极具灵活性;和任务切换仅需单周期。

Fido所用的高速缓存并非是常用的那种高速缓存,实际是32KB的。程序员可以拆分和从新映射到处理器的几乎全部代码空间。这样的安排,比通常中间暂存的DRAM更加灵活。它已经不是普通意义下的缓存,倒是更像可写又可控的存储器。另外最重要地是,它克服了通常高速缓存存在的不确定性。不确定性是实时系统中最致命的缺陷。Fido 1100除去32KB的确定性缓存,还附加24KB SRAM的一般暂存存储器。

Fido的I/O,像许多片上集成的I/O控制器一样,支持以太网、UART、I2C、CAN、SPI、和其他一些常用接口。实际上,Fido具有四个通用的可编程I/O控制器(UIC),由它们模拟出上述的各种外设接口。每个UIC(见图1)可以表现为高速串行口、16位并行口等等,直到10~100Mb/s以太网的MAC。Fido芯片上的每个UIC,都可以通过改变固件,而实现不同的配置或各种各样的产品。

Fido的可编程I/O接口,是通用的但非唯一。 Fido的I/O设计与Ubicom的 IP3000系列芯片的很相似。 Cradle、 Cavium Networks、 Triscend (已被Xilinx收购)、 Morpho、 Stretch、和 Freescale等公司所生产的芯片,片内都具有可编程的I/O引擎,用以模拟各种标准的外围接口。然而,Fido的方案中,UIC引擎的编程不是由用户完成的。这一点与Freescale公司 PowerQUICC处理器中的通信引擎类似。Innovasic将UIC引擎的结构及其指令的版权,死死地捏在自己手中。目前,Innovasic免费向客户提供外围设备接口的管理固件,它还宣布不久的将来,会有软件外设问世,眼下的客户暂时要受点委屈。
  
调试问题

应该在编程时就该把调试和排错考虑在内。调研表明,嵌入式的编程人员花费在调试上的时间,在项目的策划、工程和编程的总时间里,约占40%以上。调试已经成为开发者最头疼的一项工作。综上所述,需要一个能提供现成的优秀调试工具的市场。很早以前,已有少数处理器生产商将调试电路直接集成在芯片之中。如Freescale 的后台调试模块(BDM,Background Debug Module)。BDM很受嵌入式编程人员的欢迎。Innovasic没有复制Freescale的 BDM,而是研制了自己的BDM替代品,起名为软件评价与集成调试环境,英文名的字头缩写是SPIDER (Software Profiling and Integrated Debug EnviRonment)。SPIDER包括硬件断点,跟踪缓冲器,上下文识别寄存器等功能部件。

这些硬件资源与开发用宿主机上的标准GNU/Eclipse操作系统、软件工具等通过芯片上的串口(通常是以太口)或是片上的JTAG口相连接。硬件断点与近代异常中断标准中的典型做法一样。它们应有上下文识别能力,应可设置成仅在指定上下文激活时才去触发。程序员在调试五个硬件上下文寄存器中的任一个时,其他四个上下文寄存器应该照旧运行。

Fido片上的24KB SRAM、外部RAM、或是连接于以太口或JTAG口上的其他外存,都可以用作跟踪缓冲器。因而可以说,Fido具有无限的事件记录能力,视外存的容量而定。如果程序员打算跟踪的事件量过大,JTAG或以太口的带宽可能会限制存储器容量的发挥,但是无论如何,它毕竟是其他芯片所没有的很有用的选项。只要不是对以太网接口本身进行调试,可以通过JTAG使用以太网,这样做能够相当大地改善带宽。要是工作于66MHz钟频,使用Fido的以太口会实现从容不迫的跟踪记录,而不致产生瓶颈。

Fido有一套包括:SDRAM控制器、双通道DMA控制器、片选信号系统、和各种门类的计数/定时器等穿插在一起的电路,用它可以组成各种硬件外围设备。内部数据通道位宽虽是32位,而芯片的外部数据总线则为16位,另有16位的SDRAM接口,其中有13位为地址线,接口运行于内核频率的66MHz。像各有自我侧重的CISC处理器一样,Fido能够完成向任意外部地址传输非整体总线宽度的数据。

能买得起吗?

Fido是哪一类的处理器,在哪些方面有竞争力呢?Fido 1100是具有大量数据输出门,16位封装,低价位(每千片单价10美金),与时俱进的32位微处理器。Fido 1100,比一般简单的多硬件的乘法器和筒形移位寄存器。它是16位难于满足性能要求时的潜在升级产品。Fido 1100虽说是新芯片,而实际上与Freescale的68K同宗。所以,68K的开发系统、68K的经验,和原有的支撑软件都可以照样使用。

Fido的部分魅力来自68K的血统,所以原有基于68K的各种芯片,自然而然地就成为相互竞争的对手。

表1中的ColdFire 5206与Fido价格一样,而运行速度较Fido慢了一倍,片上的RAM及外设也都较少。至于ColdFire v2,有Fido缺乏的硬件乘法累加器(MAC)和整数除法指令,可惜对许多用户也还是不足够。Freescale的其他基于CPU32的控制器,如68360、68328等,与Fido的性能相当,可惜的是,它们的外设都是硬线逻辑的。纯种的680x0 处理器,如030、040,它们的工作频率较低,都只有40MHz,比Fido的运行速度慢,而价格又高出很多。但是,它们比Fido多了浮点运算单元(FPU),却又缺乏外设。正确地说,它们的差异,原自于服务目标的不同。ColdFire有更多更好的性能,运行速度也很高。其中的5270系列与Fido有同样的速度,同样的外设、总线、存储控制器,和同样的价格。Freescale的芯片都使用的是惯用高速缓存,故而都存在令人烦心的时钟周期不确定的缺陷。

注意:Fido的可变成通用I/O控制器一次只能模拟一种I/O接口。例如,一个UIC编程为以太网的MAC时,就不能再同时编程为UART。所以有些场合,Fido的I/O能力比专用的I/O控制器受到更多的限制。表中的N/A位数据未能提供。

结语

总而言之,Innovasic的Fido 1100为新型的32位微控制器开创了一个新的起点。多少年来,68K芯片一直缺乏第二来源。在ARM、 MIPS 、和 Power Architecture的芯片都有多个厂家供货的时代,能够看到一向保守的68K也有了第二来源,令人十分欣慰。

在工业应用领域中,芯片执行时间的可预测性是头等重要的大事;软件的执行时的时间摆动会引起机械问题或复杂的调整问题。有少数的重要项目的开发者的全部的工作就在于计算周期数。在那里,高速缓存被禁用,就连DRAM也需经过仔细地处理,因为其刷新周期有时会意想不到地中断总线的正常活动。这样的市场,正是Innovasic展示自己经验,Fido显示克服周期摇摆的良好时机。

对于主流的开发者,Innovasic应该可以顶替Freescale的ColdFire系列产品。Fido使用软件来定义各种外设的特色,对于那些混合型终端产品的开发者具有最大的诱惑力。他们期望能够轻松地配置出混合的外围设备,伴随着自然而然地同时也就得到了期望得到的终端产品。花费同样10美元的代价,用下载软件的方法就可以获得各种所需的I/O的组合,再加上Fido独具的68K血统的优点,对于既求实用又具怀旧情调的开发者,Fido将是最佳的选择。(梁合庆编译)



评论


相关推荐

技术专区

关闭